Perl

プレースホルダ

# ダメ my $sth = $dbh->prepare('SELECT * FROM image_tag WHERE tag IN(?, ?) GROUP BY image HAVING count(image) == ?'); $sth->execute(10, 42, 2); # イイ! my $sth = $dbh->prepare('SELECT * FROM image_tag WHERE tag IN(?, ?) GROUP BY image HAV…

複数タグでの絞り込み

1984みたいな数字だけのタグが最後に来たときにページ番号とどうやって区別しようかと思ってたけど、$c->request->pathを見たら使えそう。実装はまだできてないけど、とりあえず目処はたったかな。下のエントリだと、 http://evangeline.example.com/tag/foo…

メモ

http://evangeline.example.com/tag/foo/bar/http://evangeline.example.com/tag/foo/bar/2http://evangeline.example.com/tag/foo/1984/http://evangeline.example.com/tag/foo/1984/2

関連タグってどうやるんだろう

というのは、はてブだとタグをクリックしたときにrelatedとしていっしょに使われているタグの一覧を出してくれるじゃないですか。あれを実装したい。で、とりあえずこんなコードを書いてみた。 my $schema = Evangeline::Schema::DBIC->connect(...); my $rs…

Win32::GUIのコンパイル

VC6だとWin32::GUIがコンパイルできなくて、MinGWだとサブモジュールがいくつかスキップされるので*1、どうにかして全部コンパイルしたいなぁ、というのでメモ。 rem 展開して移動するよ。 tar zxf Win32-GUI-1.06.tar.gz cd Win32-GUI-1.06 rem MinGW用のMa…

タグ一覧

タグ一覧を実装してみた。実際にかかった時間は5分か10分くらい。フレームワークすごい。

今日のメモ

昨日のはやっぱり私が変なコード書いてたせいでした>< きちんと書き直したのでこれでok。おなじくページャもこれで動作するようになった。複数タグでの絞り込みはまだ実装してないけど、実装できる目処はたったかな。

めも

手元で記録してるテキストとダッシュボードでの表示人数に誤差が出てたので、ちょろっと取得してきてつき合わせてみる。 use strict; use warnings; use HTML::TreeBuilder::XPath; use Perl6::Say; my $tree = HTML::TreeBuilder::XPath->new; $tree->parse…

今日のメモ

とりあえずこれで簡単なタグ検索が動くようにはなったかな。まだまともにデータ入れてないので、ページャは実装できてるか自信がない。書くだけのことは書いたけど。あと複数タグで絞込みはまだできてない。これも必要だよね。とりあえず100件くらいはデータ…

メモ

内部も外部とのI/Oも全部UTF-8にしてるので、C::P::Charsets::Japaneseをやめて、C::P::Unicodeを使うように変更。あと、ログはプロンプトに流れるのを追ってるだけだったけど、どうしても不便なので、C::P::Log::Dispatchでファイルにも書き出すように。他…

ページャ

ページャはController内でData::Pageを使って自前で実装していたのだけど、DBIx::Class::ResultSet::Data::Pagesetを使って手を抜くように変更。自分でコード書いてもたいした手間にはならないのだけど、やっぱり面倒だし。勝手にやってくれたほうが気楽よね…

メモ

DBICでランダムに10件取り出す。 my $rs = $schema->resultset('tbl')->search( undef, { order_by => 'RANDOM()', rows => 10, } ); CatalystのControllerで使うときはこう。MyApp::Model::DBIC::tblってクラスを仮定してる。 my $rs = $c->model('DBIC::tb…

また書き直してれぅ

こないだNet::Tumblrを書き直したので、それに合わせてスクリプト側も手を入れてみたり。Net::FTPに依存しなくなったのが幸せ。

Net::Tumblr

出かけるのであとで書く。出かけてる間に考えてみたら、dataまわりがちょっと気になるので、もう少し書き直してみます。目標は今年中。たぶんでけた。依存増えたけど気にしない。あとこのエントリ書いてからauthenticate、check-vimeo、check-audioを実装し…

tumblrポスト用スクリプトに手を入れる

HTTP::Response::Encodingがcharsetを引っ張ってこれないページ*1があったので、そこだけちょっと手を入れてみたり。 my $pagetitle = HTML::TreeBuilder::XPath->new->parse(decode $res->charset, $res->content)->eof->findvalue('//title'); $res->chars…

#!/usr/bin/perl use strict; use warnings; use File::Find::Iterator; use File::Spec; my $itr = File::Find::Iterator->create( dir => ['.'], filter => sub { /[\da-f]{64}\.(?i:jpe?g|png|gif)$/; }, ); while (my $f = $itr->next) { warn File::Spe…

余剰

計算結果がおかしいと思ったら、余剰で変なことになってた。簡単な例として、「5.0を1.5で割った余り」っていうのを示すと、JavaScriptの場合 js> 5.0 % 1.5 0.5なんだけど、Perlだと > perl -le "print 5.0 % 1.5" 0なのですね。このせいで変な結果になって…

Text::CSV::Simple

via http://d.hatena.ne.jp/makiton/20071207/1197027594 こうやれば出来ます。 use Text::CSV::Simple; use Encode qw/from_to/; my $parser = Text::CSV::Simple->new({binary => 1}); $parser->add_trigger(before_parse => sub { from_to($_[1], 'utf8',…

メモ

use strict; use warnings; use File::Find::Iterator; use IO::File; my $itr = File::Find::Iterator->create( dir => ['C:/Perl/site/lib/ppm-conf'], filter => sub { -f and /\.pkg$/ }, ); while (my $f = $itr->next) { my $fh = IO::File->new($f, '…

ppmリポジトリ

tcool http://ppm.tcool.org/archives/Foo.ppd http://ppm.tcool.org/archives/Foo.tar.gz trouchelle http://trouchelle.com/ppm/Bar.ppd http://trouchelle.com/ppm/MSWin32-x86-multi-thread-5.8/Bar-0.1.zip

めどいことはPCにやらせる

書きかけ。まだまだ書き足さないといけない。 #!/usr/bin/perl use strict; use warnings; use version; our $VERSION = qv('0.0.1'); use Digest; use File::Basename qw/fileparse/; use File::Iterator; use File::Spec; use Image::Size qw/imgsize/; us…

CGI書いてみた

とりあえず一通りの機能は実装済みー。あとはもう少し練っていこう。

ひさびさにCGIを書いてみる

Perl 5.8.xで動くもの。 コアモジュールは使ってもいい。 コアでないものはPure Perlなら使ってもいい。 なるべく今っぽい書き方をしよう。 もちろんuse strict; use warnings; 意外と忘れててうきゅーってなってたり。

friendsに入れてないfollowerをリストアップしたい

けど、10件ぐらいならともかく、約50件を自分でいちいち確認するのも面倒なのでちょろっとPerlで書いてやってもらおうのこと。 use strict; use warnings; use HTML::TreeBuilder::XPath; my $tree = HTML::TreeBuilder::XPath->new; $tree->parse_file(*DAT…

tcoolリポジトリ

寝る前に何か忘れてると思ったら、あれですよ。id:charsbarさんのppmリポジトリ。Test::Objectのアーカイブの中身がPPIになってる件。idコールしておけば気づいてもらえるかな。

Net::Tumblr

tumblrのAPIでごにょごにょしようモジュール。インスパイア元→Net::Tumblr - fubaはてな。あっちの実装のがシンプルです。私のは見た目から汚い。 長いので続きを読む記法。

ぐぬぬ

だいぶ苦労したわりに、実際に書けたのは210行ほど。疲れたから今日はもうここまで。片方はもう少し書いたらここに貼れるかな。

ついったーおともだちのおともだち その2

やっつけだけど、自分と自分のお友達は表示しないようにしてみたdiff。 15c15 < my @following; --- > my %my_following; 17,18c17 < my $scr_name = encode 'ascii', $m_xp->find('./screen_name', $node); < push @following, $scr_name; --- > $my_follow…

ついったーおともだちのおともだち

via. 2007-08-11 - きしだのはてな Rubyわかりません>< かわりにPerlです>< Javaは読めないしコンパイルできる環境もないので、きちんとした移植じゃないけど。もう少し手を入れれば登場回数順にソートもできるけど、めどいのでパス。 #!/usr/bin/perl u…

こんな感じのモジュールないかなぁ

my $itr = Foo::Bar::Baz->new(directory => '.', regexp => qr/^hoge/); while ($elem = $itr->next) { # ほげほげする } こんな感じで、ディレクトリから正規表現にマッチするファイル名だけを返すイテレータオブジェクトを返すようなの。サブディレクトリ…