2010年4月アーカイブ

2010年4月25日
| コメント(0) | トラックバック(0) Feedをウェブから取ってきてタイトルのリストを表示してみた

何かで使えそうな気がして、Feed(RSSとかAtomとか)をウェブから取ってきてどうにかする、というのをNanoAでやってみた。

レンタルサーバというのを考慮して、Feedの解析はXML::FeedPPを使った。
あと、ウェブから取ってくるところは、とりあえずLWP::Simpleのmirror関数を使った。
NanoAは、テンプレートにもコードがガリガリかけるので、モジュール側に変にタグを書くよりは、変数ごと渡してしまったほうがスッキリ書ける。
今回は、解析したFeedオブジェクトをそのままテンプレートに渡して、テンプレート側で展開しているのだけど、こういうのもありだなぁ。


それにしても、Feedの解析は何を使うのが一番いいのかなぁ。
RSSAtomに特化して調べたことはあったけど。

流行っているのかもしれないけれど、parseする時に、引数の型で動作が変わるモジュールが多い。
JPA代表理事が作ったData::Feedでもそういうのが採用されている。

Data::Feed can parse files, URIs, raw strings, and file handles. All you need to do is to pass an appropriate parameters.

こういうのは扱いやすいですよね。

今回は、FeedのcharsetがUTF-8前提なので、他のcharsetでも対応出来るように、もう少し柔軟に書いても良いかなと思います。
まあ、いずれ。

どうにかなるものです。

NanoAのデータベースハンドルを使えればよかったのだが、生憎とそんな機能はついていなかった。

NanoAのconfigを使えば、NanoA本体に影響を及ぼさずにデータベースハンドルを入れ替えることが可能でした。

アプリケーション(今の場合はLightBBS)用のdbメソッドを作ることによって、NanoA::Config::dbを上書きしています。


こっちはなんとかできたのですが、Crypt::SaltedHashを利用するのはちょっと難しそうです。
Authen::Usersでnewした後に、プロパティを入れ替えればいけそうな気がしたのですが、認証の仕組みが違うので単純には行きませんでした。

Authen::Usersはデータベースから取ってきたsha変換済みのパスワードと、入力したパスワードをsha変換したモノとを比較しています。
そこまでがセットになっているのです。
しかし、Crypt::SaltedHashは、普通に変換するとsaltを自動的に入れてしまうので、単純に比較しても合わないのです。(元々それが特徴なわけですが)
比較するときは、変換済みのパスワードと入力したパスワードをCrypt::SaltedHashのvalidateメソッドに渡してやる必要があります。
すると、内部でsaltを解析して照合ができるようになります。

まあ、仕組みはわかりましたが。
さて、どうしたもんでしょう。

画像の切替で、ちょっと毛色の違うプラグインを見つけたので、試してみた。

設置の仕方が悪かったのか、手元の環境ではDoorのエフェクトがイマイチだが、それ以外は申し分ないです。
Fadeinは綺麗だし、Flipin(out)のように画像がカードのように送られるのは面白い。

Google検索

Last.fm

このアーカイブについて

このページには、2010年4月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年2月です。

次のアーカイブは2010年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.
Powered by Movable Type