CPAN最速検索

作りました。
http://cpan.ma.la/

Firefox用パネル。ブックマークしてプロパティ→サイドバーに読み込む。
http://cpan.ma.la/panel.html

全モジュールのリストを改行で区切ったテキストファイルを受信してクライアントサイドで検索させています。クライアントサイドで検索させているのでサーバー負荷は全くかかりません。

仕組み

省メモリ、高速に動作するように工夫してあります。
- 配列に変換せずに一つの巨大な文字列から検索 → 切り出し。
- クロージャで次の検索結果を取得する関数を保持しておいて、描画が必要になった時点で検索を実行。
-- その代わりにトータルのヒット件数がわかりません。

今の所の機能

- 上下で選択、エンターでperldoc表示、マウスクリックでもperldoc表示。
- 正規表現がおかしくなければ、そのまま使えます。
-- 例えば \d\d\dで数字が入っているモジュールが検索されます。
- 最初の文字を大文字にすると先頭一致になります。
- 全部タイプしなくてもOK。
-- 例えば C::dbiでClass::DBIを引けます。
-- C::d::p → Class::DBI::Plugin

コードの行数は大したことないですが、ちっこいノートPCで作ったので大変だった。モジュールのリストをcronで自動更新させたいんだけど、レンタルサーバーなのでちょっと工夫しないとダメかも。

例によって放置してしまうかもしれないので、引き継ぎたい方や改造したい方がいればどうぞご自由に。

更新履歴

2006-04-02
- :: の代わりにハイフンとスペースも区切りとして使えるようにした。
- Firefox用パネルを作った。

2006-04-03
- MultiViewsでgzip圧縮が無効の場合でも使えるようにした。プロキシ経由で動かないケースが直るはず(転送量増えるけど)。

2006-04-07
- cron仕込んであります。一日二回更新。今のとこ上手く動いてる様子。


WriteBacks

[Memo][Perl] CPAN最速検索とか

http://la.ma.la/blog/diary_200604021538.htm あー、すごいな。いつか俺もここまで出来るようになってみたい。 どうでもいいけど、最速CPAN検索だったら略してサイパンだなと思ってみた。 (というかサイパンって言ってみたいがために、記事書いた) DBIの基本的な使い方はわかった気がするけど、もっと基本的な部分が全然わかってないので、Perlの本とか欲しいな。

Posted by Wosio::HatenaDiary at 2006/04/07 (Fri) 07:58:06

[技術]Plaggerをインストールしてみてわかったこと

やっとこPlaggerを使えるところまでたどり着けた。livedoor Readerの更新FeedがGmailにどさっと届いたよ。おもしろい。 さて、Plaggerにたどり着くまでには、いくつものモジュールインストールとそのテストの失敗、たくさんの妥協、汗、涙、睡眠不足などの困難が伴ったわけ

Posted by はこべにっき# at 2006/06/02 (Fri) 00:22:05

FirefoxのサイドバーからCPANモジュール検索

ネタは以下のところから。
最速インターフェース研究会/CPAN最速検索
http://la.ma.la/blog/diary_200604021538.htm
以下のページをFirefoxで表示してAdd Firefox sidebarをクリック。ブックマーク管理→右クリック、プロパティ→このブックマークをサイドバーに読み込む...

Posted by 開発日誌 at 2006/12/25 (Mon) 12:35:32

[perl][js] CPAN 最速検索の劣化コピー作ってみた

mala さんの CPAN 最速検索を便利に使わせてもらってるんですが,操作上ちょっと不満なところがいくつかありまして。 カーソルキーのオートリピートがきかない ホイールがきかない 候補の同時表示数が固定 Firefox だからかもしれないですけど。 んで改造しようと思ったんで

Posted by daily dayflower at 2008/12/19 (Fri) 17:36:53
TrackBack ping me at
http://la.ma.la/blog/diary_200604021538.trackback
Post a comment

writeback message: Ready to post a comment.







spam yoke. nanimo ireruna.