« Mylingual Slides @ YAPC::Asia 2007 | メイン | Re: PoCo::Client::HTTP が勝手に文字コードを変えてしまう件 »
2007年04月16日
Gungho をインライン化してみた
ちょっとクローラーが必要になったのですが、POE の勉強は面倒なので Gungho を使って作ることにしました。開発が始まったばかりっぽいけど、使いやすそうだし期待大ということで。で、コードを読んでいて思ったのは、provider (URL をフィードするモジュール) と handler (ダウンロードしたコンテンツを処理するモジュール) は再利用されない (=各アプリケーション専用の処理になる) 場合も多いんじゃないかということ。だったらいちいちパッケージ定義して設定値渡しとか面倒だよねというか、ぶっちゃけ自分がクロージャで書きたいと思ったので、ラッパーを書いてみました。こんな感じで使えます。
# 標準入力から URL を読み込んでクロール use Gungho::Inline; use IO::Select; Gungho::Inline->new({ provider => sub { my ($c, $p) = @_; while (IO::Select->new(STDIN)->can_read(0)) { return if STDIN->eof; my $url = STDIN->getline; chomp $url; $p->add_request($c->prepare_request(Gungho::Request->new(GET => $url))); } 1; }, handler => sub { my ($req, $res) = @_; print $res->code, ' ', $req->uri, "\n"; }, })->run();
このモジュール (Gungho::Inline) は、こちらからダウンロードできるようにしておきます。こういう要望もありますということでよろしくお願いします。マイナーな需要だったら無視してください m(__)m
投稿者 kazuho : 2007年04月16日 10:35
トラックバック
このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1202
コメント
おお、ありがとうございます。まだ細部までは見てないですが、奥さんのコードを使って方向でよいでしょうか?
よろしければコミット権も差し上げますので、あとでgoogleアカウント教えてくださいー。
投稿者 lestrrat : 2007年04月16日 14:38
こちらこそ、Gungho 便利に使わせていただいています。
コードを (というより、このような機能を) 取り込んでいただければ助かります。Gungho/Inline.pm を別のクラスとして残すのか Gungho.pm に取り込むのかという問題や、実装にバグがないかという点はありますが。
現時点で他の改良ネタは思いつかないので、コミット権はいただいてもいただかなくてもかまいません。
投稿者 kazuho : 2007年04月16日 17:02