■2005-11-07
* [雑感] shibyya.pm テクニカルトーク#6
先日shibyya.pm テクニカルトーク#6へ行ってまいりました。
澤勇太氏はプログラミング言語の天下一武道会にPerlで出場、奮闘されたお話。161組中Perlは9組。Perlは惨敗だそうで。そして最強はHaskell。
宮川達彦氏はSix Apartにおける開発のあり方や雰囲気等について。なんか楽しそう。Six Apartといえば、去年無謀にもSix Apart(日本)にお見積もりをお願いして結局Blosxom、Sledgeを使って開発したのが懐かしい……
加藤@おーさか氏と加藤亮氏はCatalystの紹介(と実演)。前にちょっと触っただけだったのですが、自分自身が今月から来月にかけてCatalystを使うはめになりそうなので、これは大変良い機会でした。
伊藤直也氏prototype.jsの魅力とHTML::Prototype。今回初めてHTML::Prototypeがどういうものか知り、勉強になりました。
竹迫良範氏のPugs入門。Pugsは以前日記にも書きましたがHaskellで実装されたPerl6。そのときHaskellが面白そうだと思ったのですが、入門サイトを見てあえなく挫折。でもやっぱり少しずつ勉強していこうかなあ。
というわけで、Haskellは凄いということがやたらと印象に残りました。帰りは加藤亮氏、加藤@おーさか氏とお食事。色々な形でお世話になっているので会えて良かったです。
hori-uchi.comにて会場の映像(刺身☆ブーメラン経由)。おー、いきなりまん前に自分が写ってますよ。
■2005-11-14
* [今月のAcme] Web2.0に挑戦すること
自分のサイトがWeb2.0かどうかチェックしてくれるAcme::Web20::Validatorなるものが。早速私のサイトをチェックしてみました。
http://www.donzoko.net/ .------------------------------------------+--------. | Rule | Result | |=-----------------------------------------+-------=| | Served by lighttpd? | No | | Attempts to be XHTML Strict? | No | | Has auto-discoverable Trackback URI? | No | | Using Cascading Style Sheet? | Yes! | | Refers to del.icio.us? | No | | Appears to be built using Catalyst? | No | | Appears to be built using Ruby on Rails? | No | | Has prototype.js? | No | | Actually mentions Web 2.0? | No | | Burning the feed by FeedBurner? | No | | Syndicate with RSS or Atom feeds? | Yes! | '------------------------------------------+--------'
なんだか残念な結果です(何が残念なのかよくわかりませんが)。 何とかお手軽に自分のサイトのWeb2.0度を上げることはできないでしょうか? 縮退炉に勝てるのは縮退炉だけであるように、Acmeに勝てるのはAcmeだけ。そこでAcme::CGI::Web2'Oをこさえてみました。使い方は簡単。CGIモジュールの代わりに利用するだけです。
use strict; use Acme::CGI::Web2'O; my $cgi = new Acme::CGI::Web2.0; print $cgi->header; print $cgi->web2.0;
一見すると文法間違いのように見えますが、気のせいです。結果はごらんの通り。
http://www.donzoko.net/cgi-bin/web/2.0.cgi .------------------------------------------+--------. | Rule | Result | |=-----------------------------------------+-------=| | Served by lighttpd? | No | | Attempts to be XHTML Strict? | Yes! | | Has auto-discoverable Trackback URI? | Yes! | | Using Cascading Style Sheet? | Yes! | | Refers to del.icio.us? | Yes! | | Appears to be built using Catalyst? | Yes! | | Appears to be built using Ruby on Rails? | Yes! | | Has prototype.js? | Yes! | | Actually mentions Web 2.0? | Yes! | | Burning the feed by FeedBurner? | Yes! | | Syndicate with RSS or Atom feeds? | Yes! | '------------------------------------------+--------'
見習ってModule::Pluggableを使い、Acme::Web20::ValidatorのRuleに対抗するようになっています。
■2005-11-16
* [Perl][メモ] CGI::Carpのステータス
CGI::CarpのfatalsToBrowserがステータスに500を返さないというお話。なるほど…… あくまでもCGI::CarpのfatalsToBrowserに拘る場合の強引な解決方法を思案。
use CGI::Carp qw(fatalsToBrowser set_message); BEGIN { no warnings 'redefine'; my $org_fatalsToBrowser = \&CGI::Carp::fatalsToBrowser; *CGI::Carp::fatalsToBrowser = sub { require CGI; local $ENV{MOD_PERL} = 1; print CGI->new->header(-status => 500); &$org_fatalsToBrowser(@_); }; sub handle_errors { my ($msg) = @_; print <<END; <h1>Software error:</h1> <pre>$msg</pre> END } set_message(\&handle_errors); }
通常、運用時にfatalsToBrowserを素で使うことはないでしょうから冗談ということで。
■2005-11-22
* [Perl] JSON-1.01
JSONバージョンアップ。メインは、PerlのハッシュリファレンスをJSONに変換する際のキーソート機能と、blessされたオブジェクトも変換できるようになったことです。ただし処理が重いのでオプションです。
* [Perl][メモ] Data::Serializerとか日本語名のモジュールとか
Class::DBIの四次元ポケットClass::DBI::Plugin::PseudoColumnsにData::Dumper以外も使えたらなあ、という意見をちらほらみかけたのですが、Data::Serializerを使ったら結構よい感じなのではないかしら。
ふと思い立って
use utf8; BEGIN { # utf8のファイル名をシステムの # コードに変換する処理を突っこむ push @INC, \&conv_filename; } use あいうえお (); my $obj = あいうえお->new;
とかやれるのではないかと思ったら確かにできたのですが、色々難あり(自動でimport呼べない、use baseしたモジュールでisaが呼び出されない等々)だなあ……