■2004-03-03
* [CGI] FSWiki用Similarity Searchプラグイン
私は勤め先で社内連絡用にFreeStyle Wikiを使っているのですが、YukiwkiやHiki用にSimilarity Search用のプラグイン(yukiwiki用、Hiki用)が公開されたのをみて、自分でもつくってみたくなりました。
というわけで、万が一使ってみたい方がいましたら、ここ(fswiki_plugin/similarity.tar.gz)からどうぞ。 FSWiki 3.5.2 with mod_perlで動作確認してあります。
動作確認用にwiki設置してみました(すいません、今のところユーザーしか書き込めません)。
■2004-03-07
* [CGI] FSWikiで はてなキーワードリンク
とりあえず動くようになりました。ソースはこちら。
最初に素のwikiフォーマットテキスト(のコピー)を3万以上あるキーワードでマッチングします。マッチしたら配列に格納し、ついでにテキストからそのキーワードを取り除きます。こうして少なくともwikiフォーマットのテキストに対してキーワードがマッチする単語の一覧ができますので、これを今度は一続きの正規表現にします。そしてWikiパーサを継承したパーサでテキスト要素の部分に対し先ほど取得した正規表現で置換にかけます。
なんとか動いていますが、もっと早くしないとダメかな? うーん、はてなスタイルの高速化について考えるをメモメモ……
■2004-03-10
* [CGI] Similarity Searchプラグインの修正
FSWiki用Similarity Searchプラグインを修正。Footerに入れて使いたいという要望がありましたので、{{similarity myself}}と書くだけでそのページのurlが自動で設定されるようにしました。こういう使い方をすれば良いということに気付きませんでした。
■2004-03-14
* [Perl] はてなキーワードリンク高速化
2004-03-04の日記で書いたプラグインの件ですが、はてなスタイルの高速化について考えるの記述に基づいて実装して試してみました。まずはhashdump.plを使って全単語をハッシュ化します。Storableモジュールで保存して1.5Mになりました。Perl標準モジュールのData::Dumperでもインデント無しで保存すると1.4M強になります(インデントありだと10Mになります)。
今度はfind_keyword.plでデータをリストアしてから単語をマッチさせます。実験用に青空文庫の『我輩は猫である』一から九までをマッチングさせリストを返しました。「オリジナル」とあるのは約3万の単語を逐一マッチングさせている試作プラグインのものです。ついでにData::Dumper版も載せました。
オリジナル 16 (秒) Data::Dumper 7.4 Storable 3.2
う〜ん、こんなもんでしょうか。ハッシュデータの読み込みに関していいますと、さすがにStorableはCで実装されているだけあってリストアが早いです。Data::Dumperはきついですね。これをプラグインに組み込んで私が使っているレンタルサーバで試したところコアダンプしました。ログインして使う場合は動作するので、CGIのリソース制限にひっかかるようです。さらに、1.5kほどのデータに対してマッチングしてみたところ
オリジナル 0.8 Storable 0.8
となったため、よほど大きいデータでなければ現状のままでいいや、と思ってしまいました。のでこの件はとりあえず、お終い。
■2004-03-20
* [雑感] 一周年ということで
さて先週書きました通り、本日は日比谷にデモりに行きました。昨年4月に遊びにいったときは霙で まあ大変。だったのですが、今日は天気予報は雨です。やれやれです。外にでますと、大粒の雨です。「お〜、すごい大きいな。大きすぎて粒が真っ白にみえるよ。」
また霙かーー!
と、ここまで書いて、疲れたので続きは明日また別ページで。そうそう、今回集まった人数ですが、結局最後までわからなかったので帰りの電車の中で誰かが携帯で時事と共同通信のニュースを確認しました。時事通信→500人以上が参加。 共同通信→3万人。 幅ありすぎ。ソースについてはちゃんと確認していませんので、興味のある方は(そんな人はいないと思いますが)自分で調べてくださいませ。
というわけで、レポートをアップしました。
■2004-03-21
* [雑感] 同人小説を書いてみること
さて、以前日誌でも書きましたが、「私と漫画」というページがあるため、検索エンジン経由で来てしまう方が結構います。とくに私が気になるのは、「吐夢×世良 小説」でくるパターンで、これで結構コンスタントにあるのです。そして、それを知るにつけ、全然関係ないサイトで申し訳ないなあ、などと思うのです。
ところが、昨日デモの帰りで、お酒を飲んでいささか頭がぐるぐるまわっていた私は、思ったのです。私が「吐夢×世良」な小説を書けば、検索エンジンでたどり着いた人をがっかりさせないですむかもしれない、と。かくして寝ながら頭に浮かんできたことを、今日起きてからテクストに起こしてみました。それが「吐夢、世良、そして小説?」です。「みかん絵日記」を知らなくても支障はありませんが、知っていようがいまいが、面白いものではありません。
まあ、あれです。やまもなければ、おちもなく、意味もない代物でして、にもかかわらずやおいですらないと。生まれて初めて書いた同人小説で一発ネタですので、そこんとこ、お察しください。
■2004-03-28
* [Perl] COREとCORE::GLOBALの違い
FSWikiのプラグインをつくる過程で、組み込み関数の上書きについてちょっと勉強。PerlのCOREパッケージとCORE::GLOBALパッケージの違い。"Programming Perl, 3rd ed"でも触れられているのですが、この記事にもう少し詳しく違いが出ています。要は、CORE::
は常に組み込み関数を参照するけれども、その関数は実際にはこのシンボルテーブルに存在しているわけではないので、CORE::を使ってリファレンスは取得できない。他方、CORE::GLOBAL::
は本当のパッケージで、これを使って全名前空間にわたって組み込み関数を置換できるということ。
CORE::GLOBAL::exit = sub { print "this is exit!\n"; CORE::exit; # こっちは本当の組み込み関数を指す };
こうすると、どこでexitを使っても、このオーバーライドされたexitが呼び出されます(mod_perlでお馴染み)。 で、上の記事に出てくる引用は、まだ刊行されていない"Advanced Perl Programming, 2nd edition"だとか。
_ み [うきうきはひっそりと流行っているみたいですねえ。 ただやはり強力なマスターが必要なのはどこも同じようです。]
_ まかまか [ガシガシ書いてくれる人がいないと寂れちゃうんですよね。みさんは、wiki使うことってあるんですか?]
_ み [職場でほんの少しだけさわった事があるくらいですねー。 同僚が覚え書き用で使ってたりします。]
_ P太 [Similarity SearchプラグインDLさせていただいてテストしています。 Footerに差し込んで使いたい..]
_ まかまか [P太さん>早速対応してみました。v.0.03です。同じsimilarity.tar.gzがそれです。うまく動作するか..]
_ P太 [早速Menuに組み込んでみました。いい感じです。 ありがとうございました。(^^)]