del.icio.us/url/f140e1ad9d58fa4f5b2ee0b55b9002db
Catalyst::Authentication と NEXT.pm. NEXTでのMixinだとplugin内にメソッド定義しにくいため
Auth::Credential::*
,A::Store::*
な名前空間がある。
これはちょっと違うので補足。
それら二つの名前空間は単にいろいろな認証系に対応するためのもので、NEXTのために名前空間をわけているわけではないです。
実装的にも Credential::*
も Store::*
も Authentication プラグインを利用してはいますが、それら自体は普通の Catalyst プラグインで、
use Catalyst qw(
Authentication
Authentication::Credential::Password
Authentication::Store::DBIC
);
などのようにロードします。
なのでそれぞれが、
NEXTでのMixinだとplugin内にメソッド定義しにくい
ということはいえます。
Catalyst の認証系
これはちょっとなぁ。コメントしようと思ったけど途中まで書いて長くなったのでここに書いておく。
まず、Authentication::Credential::*
と Authentication::Store::*
はどちらも Authentication
プラグインを利用する認証プラグインのための名前空間。
なので、上記プラグインは Credential とつけるのはいくない。
Authentication プラグインは Catalyst プラグインだけど、それ自体が認証プラグイン用のフレームワークみたいになっていて、ユーザー(プログラマ)はさまざまなバックエンドプラグインを共通のインタフェースで使用することができるようになっている。
んで、上記プラグイン、名前をかえればいいんじゃね。とかおもったけどよくみたらこれ、$c->login
とかよんでる。
んでloginはプラグイン内になくて、トップレベルのアクションに login : Local
とか書いてる。これ、MyApp.pm にlogin定義してないと動かないんじゃね。
Authentication プラグインのコードが読みにくいということも問題かなぁ。NEXT を使うMixinのプラグイン機構はそのプラグイン内にメソッドを定義しまくれない(すべて$c
の関数になってしまうから)ため、複雑な処理をしようとすると別名前空間を使う必要があるので実装がむずかしい。
それプラス、作者が nothingmuch。この人のコードは基本読みにくいw
でも、Authentication プラグインをつかったはてな認証プラグインはすでにあるので、今からつくるなら Authentication プラグインを使わないもののほうがいいのかな。
del.icio.us tagroll
del.icio.us でタグクラウドだけ表示するページどこだっけ、とかさがしてたら del.icio.us/help/tagrolls とか見つけた。
マグカップ
でコーヒーうっかりのんじゃって、タンブラーに戻れない件。
全然うまいよなぁ。。
でも何個キーボード壊したかわからないし。悩む。