2005-03-18

Winkを使ったlocation.hash復元のデモ

firefoxのlocation.hashには1MB以上保存できるというのは、個人的にバカ受けだったのですが、今ひとつ反応が薄いような気がするので、実際にどんな具合で動くのかFlashを使ったデモを作ってみました。

http://la.ma.la/misc/demo/firefox_bookmark.htm

----
winkというフリーソフトを使っています。
http://www.debugmode.com/wink/

久しぶりに使おうと思って調べてみたら、バージョンが上がっていて日本語の言語セットも標準で含まれている。ソフトウェアの説明書なんかを作るのに、かなりいい感じに使えると思います。

----
tiddlywikiのようなwikiエンジンで、書き込んだデータを丸ごとブックマークとして保存できるようにしたら面白いかもしれない。

IEの場合2KB、Operaの場合64KBまでしか保存できないという制限がある。URLエンコードすると少なくなるが、エンコード方法を工夫したり、圧縮したりすれば、かなりの量を保存できるだろう。
firefoxに限定するなら、小説まるごと保存するなんてのもできる。

まあ際限なくというのはさすがにどうかと思うので、将来的に使えなくなる可能性もあるが、1000byteぐらいはどのブラウザでも保存できると思ってよさそうだ。

firefoxのlocation.hashには1MB以上保存できる

色々実験していたら、Firefoxのlocation.hashには1MB以上保存できることがわかりました。
一体どこまでいけるのか、見当もつきません。
アドレスバーの描画がおかしくなったりしましたが、ちゃんとブックマークもできるみたいです。

サンプルを置いておきます。
http://la.ma.la/misc/js/hash.html

http://la.ma.la/misc/js/hash.html#%E3%81%82%E3%81%B0%E3%81%B0%E3%81%B0%E3%81%B0%E3%81%B0%0D%0A%0D%0A

テキストを入れてリンク作成ボタンを押すとlocation.hash付きのリンクを書き出します。
作成されたリンクは、読み込み時に入力したテキストを書き出してくれます。

タグは無効化されるようになっているので、悪戯はできないと思います。
ブラウザに負荷がかからないように、少しずつ画面に書き出していくようになってます。
長すぎるURLを開いてブラウザがクラッシュしても、俺のせいじゃないです。ブラウザの実装が悪いと思います。

適当に調べてみた情報ここらへんに。
http://ma.la/mirrorman/wiki.cgi/location.hash

----
3/18追記

デモ作ってみた
http://la.ma.la/misc/demo/firefox_bookmark.htm

2005-03-14

WikiばなVOL4で発表してきました

人生で初めてプレゼンというのをやりました。
レポートはblogに書こうかwikiに書こうか迷ったが、
長いのと、後で直すかもしれないのでとりあえずwikiに。

http://ma.la/mirrorman/wiki.cgi/WikiBanaVOL4

----
他の人のレポートはこのへんに
http://wikibana.socoda.net/wiki.cgi?WikiBana%2fVOL%2e4%2f%a5%ec%a5%dd%a1%bc%a5%c8%a5%ea%a5%f3%a5%af%bd%b8

2005-03-04

[Ajax] 2chスレッド最速検索復活しました

しばらく放ったらかしにしていましたが、コード整形と、少し視覚化周りで手を加えてみました。
http://x.ma.la/

スクリーンショットはこんな具合。
http://la.ma.la/misc/2chfind_2nd.png

検索状態を復元できるようにしてみました。
スクリーンショットのセッション復元


IE6とfirefoxとopera8で動作確認をしてます。例によってCPUが遅いと厳しいかもしれません。
検索は完全ローカルで行われるので、いったんロードが完了すればいくら検索してもサーバーに負担はかかりません。
オフラインにしても検索できます。
どんな単語で検索されているのかは、サーバーもプロバイダもわかりません。

板移転時の、自動追尾処理なんかが面倒くさくて、実装できてません。
なので、いきなり動かなくなったりするかもしれません。

----
使い方
-板を検索後、板名をクリックすると検索対象に加えます。
-板が一つに絞り込まれた場合は勝手にロードします。
-板名の入力欄はスペースで区切って「板検索文字 スレッド検索文字」とすることができます。
-ひらがなで検索ができます。ただし正確にふりがなが振られているとは限らないのでヒットしない場合があります。
-ハイライト箇所はいい加減です。ふりがなにマッチした場合、どこにマッチしたのか正確にわからないので。

----
仕組みは、サーバー側でsubject.txtを取得、kakasiでふりがな付加した状態のファイルを作成。
XMLHTTPを使って非同期読み込み、JavaScriptでオブジェクトに変換、といった具合です。
同時に複数の板をロードするようにした場合、複数のコネクションを張って、リクエストが完了した順に読み込まれます。
フレームを使うよりも圧倒的に簡単に実装できるので、非常に便利です。
今までのはフレーム使ってやっていたので、全然Ajaxじゃないです。xがないです。
オブジェクト指向な書き方が最近になってようやくわかってきたので、ソースも一応、参考ぐらいにはなるかもしれません。

JavaScriptを使った検索は、ある程度のCPUを使っていれば一瞬で終わります。
ボトルネックになるのは描画処理のほうなので、変更がない場合は画面に書き出さない、
横断検索の場合は表示件数を減らす、などして高速化しています。

むかし、こんなのを作ってたのですが、
http://x.ma.la/demo/mekuri.html

文字コードの変換に必要なADODB.Streamオブジェクトが
WindowsUpdateで無効化されてしまい、使えなくなってしまいました。

色々と改善の余地はあるのですが、他にやりたいことが色々あり、
手を加える暇がないというか、時間をとられたくないので、あまりできません。
最近は興味のある人も多そうなのでサーバー側CGIと、クライアント側のJavaScript、全部まとめてオープンソースにしようかと思ってます。

2ちゃんねるヘッドラインのRSSが凄い件

なんかごちゃごちゃなので、最初にまとめておくと、

-2chヘッドラインのRSSは全文配信でかなり使える
-RSSリーダーはthunderbird+検索フォルダ使うと便利
-サイズが大きいので直接受信しないでcoralを使おう

ということで。
----
2chのニュース系の板のスレッド一覧を束ねて新着順に表示してくれる
2ちゃんねるヘッドラインというものがあるのですが、これが1週間ぐらい前から、RSSの提供を開始しています。

ここにまとまってます。
http://www.pblog.net/mt/archives/002377.php

勝手にRSSを生成するのは以前からあったが、2chのドメインから公式に提供されているのは多分初めて。
いまのところ、フォーマットはRSS2.0で文字コードはShiftJIS。

素晴らしいのは、国内のあらゆるジャンルのニュースを網羅していて、
さらにタイトルだけではなく記事本文が全て含まれている点。
ニュースのRSS配信としては間違いなく国内最大。

とりあえずbloglinesで購読してみましたが記事が長すぎ多すぎで読みきれず役に立ちません。
bloglinesは自分の興味のある分野のRSSを100も200もチェックする場合には最強ですが、
過去記事を保存していないので、こういった用途には向いてません。

----
配信されてくるのが自分が興味があるのかないのかわからない「ごちゃまぜのニュース」なので、
とりあえず蓄積しておいて後で検索してなんぼです。
2ちゃんねるヘッドラインのRSSを読むのに適したリーダーの条件は、
「検索結果をフォルダと見なして表示することが出来ること」です。
スタンドアロンのRSSリーダーをあれこれ試してみましたが
意外とこの機能を備えているものが無く、使えそうなのはoperaとthunderbirdだけでした。
rss2mailでGmailに送って、どこからでも読める、なんてのも良いかもしれません。

OperaのRSSリーダーはラベルを使って検索結果をフォルダ表示したり、
さらには学習による自動ラベル付けなんかもできますが7.5は不安定、8.0はまだbetaなのでデータの移行がちゃんとできるか心配です。
thunderbirdは細かい使い勝手が洗練されていなかったり、登録が面倒だったりしますが、
これからの改善が期待できるので、とりあえずthunderbirdにデータを蓄積することにしました。
ニュースだけでなく、地震情報のRSSなんかもあるので、蓄積しておけば後でなんかの役に立つかもしれません。

thunderbirdの検索フォルダ機能は「表示」のプルダウンメニューから検索フォルダを保存、で登録できます。
この機能があること自体知らなかったので、スクリーンショットを載せておきます。
http://la.ma.la/misc/thunderbird_search.png

なんか色々いじってたら同じ記事を何回も受信してしまったので、
Duplicate Message Removerという拡張を入れてみました。重複記事を削除してくれます。
http://split-s.blogspot.com/2005/02/duplicate-message-remover-01.html

----
全文配信なので、結構サイズが大きく、大体200KBほどあります。
2ch全体の転送量からすれば微々たるものかもしれませんが、
こんなのを大勢が定期的に受信したら転送量がえらいことになると思うので、
RSS用のキャッシュプロキシとかないかなーと探してみましたが、見つからなかったのでとりあえず、coralを使うことにしました。
一定時間キャッシュが入るので、完全リアルタイムには更新されませんが今のところ取りこぼしなく受信できています。
http://headline.2ch.net.nyud.net:8090/bbynews/news.rss

----
追記

2ちゃんねるヘッドラインのRSSを2時間分ぐらい取りこぼした。
どうもcoralは振り分けられるサーバーによってキャッシュ状況が全然違うみたいだ。ダブって受信してしまうのも、多分そのせい。
RSSのキャッシュに特化したオープンなプロキシって無いものか。

----
追記 2005-03-04
RSScacheというのが、なにやら良さげです。
http://www.rsscache.com/

http://my.rsscache.com/headline.2ch.net/bbynews/news.rss