SFと映画と小説とRuby信者(最近はhaskellびいき)です。
流れるはてなブックマーク(http://sshi.s57.xrea.com/ajax/hatena.html)。
はてなブックマークを眺めるAjaxを作ってみた。はてなブックマークに登録されたURL情報が流れていくのを眺められます。一応、カテゴリーとキーワードで絞りこむことが可能。最初はちょっともたつくけど、あとは非同期にデータを取得しているので、そこそこスムーズに流れるはず。
Firefox,IE,operaで動作確認済み。XMLHttpRequestが使えなければ、IFRAMEを使うようにしてあるので、operaでも動作します。でもたまにopera固まります。ごめんなさい。Firefox推奨。
うーん、今、もう一度試してみたら、絞り込みはFirefoxじゃないと上手く動作しないようだ。DOMの扱い方、間違えてるかな。というわけで、やっぱりFirefox推奨。
仕組みはCGIとJavascriptのハイブリッドで、CGI側に蓄えたはてなブックマーク情報をJSONにした上で、XMLHttpRequestを使ってブラウザと通信してます。xrea上のデータをばかすか太らせる勇気もないので、CGI側のデータ更新はしてないです。とりあえず昨日、今日の2000件ほどのみ。でもまだ、ちゃんとJSONを作れていないようで、たまにJSON読みこみエラーになっちゃいます。愛敬愛敬。
ブラウザ上での表示も、工夫すればもっと変わったこと(本当にスムーズにスクロールさせるとか)ができるはずだけど、とりあえずここまで。誰か手を加えてみませんか?
クライアント側で使っている、xmlhttprequest.jsはAjaxでの通信を受けもつモジュール。ブラウザによってXMLHttpRequestかIFRAMEを切りかえて通信に使います。http://ma.la/mirrorman/wiki.cgi/IFRAMEHttpRequest で公開されているものを加工して作りました。あ、でもIFRAMEでのPOSTのところはややこしそうだったので、けずっちゃいました。IFRAME使う場合は、GETしかできません。加工にあたっては、http://www.interq.or.jp/student/exeal/dss/ejs/を参考にオブジェクト指向的にしてみました。貴重な情報を公開されているお二人に感謝。
JSONなのですが、Rubyにはjsonモジュールがあります。
http://sourceforge.net/projects/json
obj.to_json でJSONへ変換できます。
またorbjsonを利用することでjsonrpcで非常に簡単にjsonでサーバとxmlhttprequestで通信することが可能です。
http://orbjson.rubyforge.org/
既に知っていたらスイマセン。
jsonでrpcですか。XML-RPCだと呼出し時の文字コードの扱いがいまいち、という噂を聞いたのですがjsonだとユニコード決め打ちだからそのへんは安心なんですかね。
今度使ってみますー。
あーでも、XMLHttpRequestだとクロスドメインのアクセスがやりにくそうなので、CGIのゲートウェイはどうしても必要になっちゃいますかねえ。
テキストエンコーディングをUTF-8にしてみると、流れる記事部分がちゃんと読めるかもしれません。最初の説明文は化けちゃうと思いますが。
今度手をいれるときにはWebページもUTF8で書くようにします。
safariでxmlhttprequestのマルチバイト文字が化けるのはkhtmlエンジンの仕様っぽいです。
http://yatsu.info/archives/001452.html
などの方法で強引に回避することは一応できます…。