LesserWiki + ruby-pytst

Posted by yatsu Sun, 15 Oct 2006 00:27:25 GMT

LesserWikiの自動リンクは今まで正規表現で置換していましたが、ruby-pytstを使うようにしました。 ruby-pytstがインストールされている場合だけ、自動的に使用されます。

1500件のTiddlerがある状態で1つのTiddlerのレンダリングに3秒以上かかっていたのが、1.5秒以下になりました。 いちおう速度は2倍になりましたが、まだまだ遅いです。 自動リンク以外の置換も改善する必要がありそうです。 lesserwiki.orgに置いてあるものはキャッシュが効いているので、この遅さは体感できません :)

ActiveRecordから配列を受け取ってTSTを構築すると遅いので、MySQLアダプタのところから手を入れて、直接TSTを構築するようにしてしまいました。 なのでruby-pytstを使う場合は、MySQLを使わなければなりません(えー)。 これは後でなんとかします。

ちゃんと調べてみると、Railsコンポーネントを使っている部分が非常に遅いことに気づきました。 これからトップページ閲覧時&Tiddler保存時のサイドバーの描画を高速化します。

やれるだけのことをやったら、memcachedにも対応させたいです。

あと、報告いただいているバグも直します、たぶん……。

Posted in ,  | no comments | no trackbacks

LesserWiki 0.4.1 リリース

Posted by yatsu Mon, 22 May 2006 02:41:38 GMT

LesserWiki 0.4.1をリリースしました。

今回はバグ修正のみです。

ダウンロード:
SourceForge.jp: Project File List

リリースノート:
LesserWiki 0.4.0 Release Notes

変更点

  • WEBrickが「Bad Request」エラーを返す問題の修正
  • vendorディレクトリからfreezeされたRailsとDBアダプタを除外
  • その他の小さなバグの修正

Posted in  | no comments | no trackbacks

LesserWiki 0.4.0 リリース

Posted by yatsu Sun, 14 May 2006 16:47:27 GMT

たいへん長らくお待たせしました。

LesserWiki 0.4.0をリリースしました。
ダウンロードはこちらから可能です。

変更点は先日書いたとおりです。

これから一月くらいはとても忙しくなりそうなので、次のバージョンアップとASPの立ち上げには、少なくとも1ヶ月以上はかかる見通しです。

Posted in  | no comments | no trackbacks

lesserwiki 0.4 (未リリース)

Posted by yatsu Tue, 09 May 2006 02:19:25 GMT

lesserwiki.orgで動作しているlesserwiki-0.4は0.3から大幅に書き直している。

変更点

  • Rails 1.1で動作 (1.1未満では動作しない)
  • 画面のスタイルを最新のTiddlyWikiに合わせた
  • けばけばしい色をおとなしく変更
  • Tiddler更新時にMainMenuと右側のサイドバーも更新
  • サイドバーの更新順、カラー別表示にページングを実装
  • Tiddlerに「他を閉じる」を実装
  • 編集開始時にすべてのテキストが選択されるように変更
  • 編集中にTiddlerをダブルクリックで閲覧モードに戻る
  • ログイン機能を実装
  • 書き込み権限を実装
    • すべての操作にログインが必要
    • 書き込み/削除にログインが必要
    • ログインの必要なし
  • タイムゾーンの変更を可能に
  • エラーメッセージを画面右上にポップアップ
  • エラーメッセージのローカライズ(英語, 日本語)

内部的な変更

使えなくなってしまった機能(ぇ?

  • howmリマインダ
    • プラグイン機能を実装してから復活予定
  • EZwebモード
    • Mobileモードとして実装予定
  • Viewモード (閲覧のみ)
    • 実装予定
  • タグのオートコンプリート
    • 実装予定

(おそらく、書き忘れあり・・・)

ついでに、lesserwiki-0.3からDBのバージョンアップは可能。 Tiddler保存時のパフォーマンス改善にも取り組んでいるが、まだ完成していない。

最新ソースはSourceForge.jpからdev.lesserwiki.orgに移し、Subversionで管理することにした。 ただし、vendorディレクトリの中身を公開していないので、チェックアウトしても使えない・・・・・・(今すぐ使いたい方はメールください)。

Posted in  | no comments | no trackbacks

lesserwiki.orgリニューアル

Posted by yatsu Sun, 07 May 2006 17:52:24 GMT

lesserwiki.orgをリニューアルし、消えていたja.lesserwiki.orgを復活させた。 日本語サイトの方は以前のコンテンツをなくしてしまったので、内容がまだ書けていない。


すでに忘れ去られたソフトになりつつありますが:) なんとか復活させようと思っています。 とりあえず、lesserwiki.orgで動作しているバージョン0.4を1,2週間のうちにリリースする予定です。 ASP化にも取り組んでいますが、最近珍しく忙しいので、もう少し時間がかかってしまいそうです。

Posted in  | 2 comments | no trackbacks

LesserWiki with Rails 0.14.1

Posted by yatsu Fri, 21 Oct 2005 16:19:16 GMT

Railsを0.14.1に上げたら、LesserWikiが起動しなくなった。

う〜む……。リリースしたばかりなのに……。

追記

動くようになった。 結構苦労した。

Posted in  | no comments | no trackbacks

LesserWiki 0.3.0 リリース

Posted by yatsu Fri, 21 Oct 2005 03:32:28 GMT

LesserWiki 0.3.0をリリースしました。

SourceForge.jp: LesserWiki 0.3.0 リリース

主な変更点

  • 管理ページの追加
  • 設定をconfig/site.rbでなくデータベースに保存するように変更
  • Tiddlerを作成したとき、更新したときにキャッシュを作成
  • タグ入力フィールドでオートコンプリートをサポート
  • Tiddler保存時のHTTPリクエスト処理中にフォームを無効化
  • その他いくつかのバグ修正

Posted in  | no comments | no trackbacks

WikiでAtomAPI

Posted by yatsu Thu, 06 Oct 2005 15:58:11 GMT

InfoTalk PodcastOpen Source “The Wiki Way” - SocialText Goes Open Source and Raises Money with Ross MayfieldSocialtextRoss Mayfield氏がWikiについて語っているが、開始から10分くらいのところからAtomAPI(AtomPP)の話題になっている。

その中で出てきたKwikiを調べてみると、KwikiPluginListKwiki::Atomが存在し、これがAtomAPIをサポートしていることがわかった。 Kwiki本体もこのプラグインも、CPANで簡単にインストールできる。 これからもう少し詳しく調べてみようと思う。

AtomAPIサポートについては以前から考えていて、将来的にはLesserWikiでもサポートしたいと考えている。

Posted in  | no comments | no trackbacks

PimliPoche

Posted by yatsu Tue, 20 Sep 2005 15:58:00 GMT

PimliPocheというWikiを見つけた。 TiddlyWikiをベースに、個人用メモ/情報整理ツールとしての機能を強化している。 これはかなり面白そうだ。

Active Lists

ここにはTagCloudが表示されている。 タグは先頭に *, **, >, ~ が付いているものがあり、これらが内部的に特別な意味をもっているのだろう。

Do First

TODOリストのようなもの。GTDを意識している? LesserWikiでは{{todo}}によるhowm TODO表示がこれに相当する。

*Routines

一週間分のカレンダーが表示されている。 LesserWikiでは{{schedule}}によるhowmスケジュール表示がこれに相当する。

左上のカレンダー

日付をクリックすると、その日付をタイトルにしたTiddlerを開くようだ。 マークなどを使ってスケジュールを表示できれば便利かもしれない。

DIRECT ACCESS (右メニュー)

タグからTiddlerをダイレクトアクセスできるようになっている。UIは入力フィールドを使用している。

以上、参考にできそうな機能がたくさんあった。
よくわからないところもあるのだが、LesserWikiも初めて使った人はそう感じるかもしれない。 ユーザビリティはよく考えておく必要がある。

Posted in  | no comments | no trackbacks

AC法

Posted by yatsu Thu, 08 Sep 2005 22:44:00 GMT

2007-06-04 追記 ruby-pytstはこちら → yatsu.info : ruby-pytstをRubyForgeに登録

きまぐれ日記: はてなキーワードを高速に付与

はてなキーワード付与の速度問題は、LesserWikiの速度問題と同じっぽい :)

で、僕が考えたのもAho-Corasick法(AC法)だったが、自分でアルゴリズムを書くのが面倒だったので、pytstというPython用TSTライブラリをRubyに移植してみた(とりあえずruby-tstと名付けた)。 名前のとおり、Trie構造はTST(Ternary Search Trie)を使用している。

pytstはC++で実装されていて、SWIGでPython対応しているが、ruby-tstはCで書き直した。

/usr/share/dict/wordsの23万語をキーワードにして、Google Newsの記事中の単語を一括置換してみたところ、かなり速いパフォーマンスを発揮した。

TST構造はRubyのハッシュのようにも使用できる。

t = TST.new
t[:test] = "TEST"
p t[:test]

検索する場合は

require 'tst'

t = TST.new

t["abc"] = "abc"
t["abcdef"] = "abcdef"
t["abcdefgh"] = "abcdefgh"
t["01"] = "01"
t["02"] = "02"

%w[abc 01 abc01 abc---01 abcdef---abc--01--abcdef--abc].each do |str|
  t.scan(str) {|s, d, v| print "('#{s}' #{d} '#{v}') "}
  puts
end

これを実行すると、こうなる。

('abc' 3 'abc') 
('01' 2 '01') 
('abc' 3 'abc') ('01' 2 '01') 
('abc' 3 'abc') ('---' -3 '') ('01' 2 '01') 
('abcdef' 6 'abcdef') ('---' -3 '') ('abc' 3 'abc') ('--' -2 '') ('01' 2 '01')
  ('--' -2 '') ('abcdef' 6 'abcdef') ('--' -2 '') ('abc' 3 'abc')

ブロックを受け取って一括置換してくれるreplaceメソッドもあるが、面倒なので(そればっかりだな)省略。

Marshalにも対応したが、Rubyの型を使ってmarshal_dump, marshal_load対応したためか、遅い。

その他の問題点は、ときどき落ちること(w
メモリ破壊していると思われ……。

2週間ほどほったらかしにしているので、そろそろ修正して公開したいところ。

AC法については北研二、津田和彦、獅々堀正幹『情報検索アルゴリズム』、TSTについてはセジウィック『アルゴリズムC・新版』(旧版には載っていないので注意)がわかりやすい。

Posted in , ,  | no comments | no trackbacks

Older posts: 1 2 3 4