02/25
Test::WWW::Mechanize のテストがこける
perl |
入れようとしたのは Test::WWW::Mechanize 1.30。Test::LongString が 0.15 だと t/content_lacks.t がこける。0.14 にするとテストが通ってインストールできる。perl のバージョンは 5.12.2 と 5.12.3 で再現した。
$ cpanm http://search.cpan.org/CPAN/authors/id/R/RG/RGARCIA/Test-LongString-0.14.tar.gz $ cpanm Test::WWW::Mechanize
08/19
OAuth::Lite::Consumer で access_token 取得時に token とか以外のパラメータを取得
perl |
access_token を取ってくるだけなら get_access_token を使えば良い。
my $access_token = $consumer->get_access_token( token => $request_token, verifier => $verifier, );
$access_token は OAuth::Lite::Token オブジェクトになっていて oauth_token, oauth_token_secret, oauth_callback_confirmed 以外のパラメータは捨てられてしまう。
Twitter の OAuth とかだと access_token 取得時に screen_name とかもパラメータに含まれるのでそっちも取りたい(cf. Authenticating Requests with OAuth | dev.twitter.com)。そんな場合は obtain_access_token を使う。
my $res = $consumer->obtain_access_token( token => $request_token, params => +{ oauth_verifier => $verifier, }, ); my $access_token = $res->token; # OAuth::Lite::Token my $screen_name = $res->param('screen_name');
$res は OAuth::Lite::Response オブジェクトになっていて、token で OAuth::Lite::Token が、param で他のパラメータが取れる。
06/21
HTTP::Engine::Middleware::Static で DirectoryIndex
perl |
/ で終わるような URL にアクセスした時に index.html を表示して欲しい。そんな場合は以下のようするといいみたいです。ポイントは二つで、まず directory_index に表示したいファイル名を指定し、regexp を /$ にマッチするようにする。下の例だとグルーピングの最後を |) としているので ^/$ に(のみ)マッチして index.html が表示されるはず。
my $mw = HTTP::Engine::Middleware->new; $mw->install( 'HTTP::Engine::Middleware::Static' => { regexp => qr{^/(robots\.txt|(?:css|js|img)/.+|.+\.html|)$}, docroot => '/path/to/static/', directory_index => 'index.html', } );
06/15
16x16 の履歴を GIFアニメ にする Perl スクリプト
perl |
16x16 の履歴画像を GIFアニメにすると面白そうだなぁと思ったので書いてみました。試しにセコンさんのエントリにあるこの画像
を変換すると
こんな GIFアニメになります。やってることは簡単で、左上から順に 16x16 の画像を切り出して最後に GIFアニメとして書き出しているだけです。gif_delay とか gif_loop のオプションは perldoc Imager::Files の GIF の項に書いてあります。
追記
いちいち画像保存して変換するのめどいよねということで、履歴画像を表示した時の data:image/png;base64, で始まるデータスキームをフォームにコピペると GIFアニメを出力する CGI も書いてみました。



エラーメッセージが変わったことが原因のようです。
行番号とカラムの表示が追加されたようですが、
それに追従出来ていないようですね。