Hatena::ブログ(Diary)

sshi.Continual このページをアンテナに追加 RSSフィード

プロフィール

sshi

SFと映画と小説とRuby信者(最近はhaskellびいき)です。

 | 

2005-03-17 Thu

[] Ajax 第二弾 流れるはてなブックマーク  Ajax 第二弾 流れるはてなブックマークを含むブックマーク

流れるはてなブックマーク(http://sshi.s57.xrea.com/ajax/hatena.html)。

はてなブックマークを眺めるAjaxを作ってみた。はてなブックマークに登録されたURL情報が流れていくのを眺められます。一応、カテゴリーキーワードで絞りこむことが可能。最初はちょっともたつくけど、あとは非同期にデータを取得しているので、そこそこスムーズに流れるはず。

Firefox,IE,operaで動作確認済み。XMLHttpRequestが使えなければ、IFRAMEを使うようにしてあるので、operaでも動作します。でもたまにopera固まります。ごめんなさい。Firefox推奨。

うーん、今、もう一度試してみたら、絞り込みはFirefoxじゃないと上手く動作しないようだ。DOMの扱い方、間違えてるかな。というわけで、やっぱりFirefox推奨。

仕組みはCGIJavascriptのハイブリッドで、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/を参考にオブジェクト指向的にしてみました。貴重な情報を公開されているお二人に感謝

面倒だったので、CGI側のソース(例によってRuby)は未公開。欲しい人いたらコメントください。

jounojouno 2005/03/17 07:35 feedとかキーワードリストとか、いろいろJSONで配布してくれると便利ですよね。

secondlifesecondlife 2005/03/17 16:31 流れるはてなブックマーク面白いですね。
JSONなのですが、Rubyにはjsonモジュールがあります。
http://sourceforge.net/projects/json
obj.to_json でJSONへ変換できます。
またorbjsonを利用することでjsonrpcで非常に簡単にjsonでサーバとxmlhttprequestで通信することが可能です。
http://orbjson.rubyforge.org/
既に知っていたらスイマセン。

sshisshi 2005/03/17 22:50 情報ありがとうございます!さっぱり知りませんでした。感謝感謝。
jsonでrpcですか。XML-RPCだと呼出し時の文字コードの扱いがいまいち、という噂を聞いたのですがjsonだとユニコード決め打ちだからそのへんは安心なんですかね。
今度使ってみますー。

sshisshi 2005/03/17 23:02 たしかに、JSONでいろいろ配布してもらえるのが増えると便利ですね。まさにJavascriptが扱うためにあるようなフォーマットなのでクライアント側さえ書けばよくなる。
あーでも、XMLHttpRequestだとクロスドメインのアクセスがやりにくそうなので、CGIのゲートウェイはどうしても必要になっちゃいますかねえ。

lovelylovely 2005/03/18 11:04 流れるはてなブックマーク楽しいです。ありがとうございます。が、Safari 1.2.4 で表示すると流れる記事部分の日本語が文字化けします。最初の説明文は読めます。テキストエンコーディングで「デフォルト」と「日本語(EUC)」の両方を試しましたが同じでした。念のためご報告です。

sshisshi 2005/03/18 22:38 lovelyさん、ありがとうございます。なにぶんMacもってないもんですから…(いいわけ)。なんにせよ データはUTFでやりとりしてるのに、Webページ自体はEUCで書いてるのが化け化けの原因ですね。
テキストエンコーディングをUTF-8にしてみると、流れる記事部分がちゃんと読めるかもしれません。最初の説明文は化けちゃうと思いますが。
今度手をいれるときにはWebページもUTF8で書くようにします。

secondlifesecondlife 2005/03/19 01:07 現在のRubyのJSONライブラリは致命的かつ単純なバグがあるので注意が必要だったりします…。(本家フォーラムにpatchは投げていますがまだ反映されてません)
safariでxmlhttprequestのマルチバイト文字が化けるのはkhtmlエンジンの仕様っぽいです。
http://yatsu.info/archives/001452.html
などの方法で強引に回避することは一応できます…。

sshisshi 2005/03/19 18:20 バグ入りに仕様ですか…。道は厳しいんですね。

 | 

あわせて読みたい
sshi.Continual 923586 なかのひと RSS feed meter for http://d.hatena.ne.jp/sshi/