plackの勉強始めました。
plack/PSGIというのが発表されてずいぶん経つけのだけども。
use strict; use warnings; use Plack::Request; use Plack::Response; my $app = sub { my $env = shift; my $req = Plack::Request->new( $env ); my $res = Plack::Response->new(); $res->status(200); $res->content_type('text/html'); $res->body('hello world'); };
Plack::Responseのとこはシンプルに配列リファレンスにしてもよかったんだけど、インターフェースのはっきりしているオブジェクトにしておくとわかりやすいし、関数の引数に渡したときにも、渡された側からも使いやすいかなと思ってオブジェクトを使うようにしている。
あと、やっぱりMiddleware使いたい場合はbuilder使えばいいというのも覚えた。
use strict; use warnings; use Plack::Request; use Plack::Response; use Plack::Builder; use Plack::Session; use Plack::Session::Store::DBI; use DBI; my @connect_args = ( 'dbi:Pg:dbname=sample', 'hogehoge', 'fugafuga', { AutoCommit => 0, RaiseError => 1, pg_enable_utf8 => 1, } ); my $app = sub { my $env = shift; my $req = Plack::Request->new( $env ); my $res = Plack::Response->new(); my $sess = Plack::Session->new( $env ); my $body = .....; $res->status(200); $res->content_type('text/html'); $res->body( $body ); }; builder { enable 'Session', store => Plack::Session::Store::DBI->new( get_dbh => sub { DBI->connect( @connect_args ) } ); enable 'MethodOverride'; enable 'CSRFBlock'; $app; };
こんなかんじ。
Sessionに使うDBIをScope::Container::DBIに任せてみたりもしたのだけど、Starmanで動作させたとき、Scope::Containerの38行目(DESTROYのとこ)で明示的にdisconnectしなかったという旨のメッセージが表示された。DBIとDBD::Pgを最新にしても同様のメッセージが出た。Postgresqlは8.4.9。AutoInactiveDestroy効いてなかったらもっと深刻なエラーで落ちるから関係ないし。よくわからん。来週再確認しよう。
明日は西宮えびすに行ってきます。
ほんとうは9,10,11に行くといいんだけど、マグロの奉納は明日されるということなので。
西宮の酒蔵も少しみてきます。楽しみです。
食べログのやらせの件
食べログのランキング不正操作ってSEO業者のやりそうなこと。ていうかSEOそのものなんじゃないのかな?
はてなブックマーク - 「食べログ」にやらせ投稿 カカクコムが法的措置も 39業者特定 飲食店ランキング上げる狙い:日本経済新聞
SEO業者も駆逐されてほしいな。
あけおめことよろ
ミッションインポッシブル ゴーストプロトコルを見てきた。
必要最低限なご都合主義と、やりすぎなくらいギリギリなアクションwww
それでも良かった。おもしろかった。
デジタル音響なだけのシンプルな映画館で、夜だから客はまばら。
ゆったり楽しめたかなー。
ラゴスティーナの圧力鍋
伊勢丹で見かけたのだけど、蓋の構造がユニークで面白い。
今度買っちゃうかも。