nDiki : DiKicker
DiKicker
WikiEngine 「WiKicker」をベースにした日記システム。 Perl で記述されている。
自動リンク機能により、キーワードで記事を串刺し表示可能。 各キーワードにも記事をつけられるのでパーソナルナレッジベースとしても活用できる。
スポンサード リンク
Related term
2006年11月21日 (火)
■ [ DiKicker ] 語リストを Term DB に保持

自動リンクなどで語リストが必要な時に、今までは Term DB (Berkeley DB で実装)をスキャンしてリストアップしていた。 これだと語数が増えていくにつれ線形に遅くなるので、一度リストアップしたら Term DB の別レコードに Storable で freeze してキャッシュするようにしてみた。 ちょっと速くなることを期待。
あわせてロックまわりも改善。 DiKicker では Article DB と Term DB をセットでオープンすることとし、Article DB の方で排他制御をしている。 ただし、Term DB の方には排他ロックでオープンされているか、共有ロックでオープンされているのかの情報を伝えていなかったため、実は共有ロックの時にも書き込みをしてしまう部分が残っていた。
Term DB オープン時にどちらで開いているかを通知するようにし、キャッシュ情報などの書き込み時にはこれらを参照して間違えた書き込みをしないようにした。
- さらにサーバ負荷状態悪化。対応に追われる。 (2006-03-04)
- [ Perl ] Search::InvertedIndex (2004-02-09)
- DiKicker に grep 検索機能を追加 (2007-02-02)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
- DiKicker の DB に余分な情報まで保存していた (2006-11-07)
2006年12月3日 (日)
■ WiKicker 0.41 リリース - cookie まわりの処理を変更

11月1日以来、約1カ月ぶりのリリース。
ドメイン名なしの URL でセッションがはれない問題を修正。
DiKicker の方は、「n 年日記機能」、「diary-article:」の追加など。
- mixi 用として DiKicker に RSS生成機能を追加 (2004-11-21)
- [ WiKicker ] 日記機能開発開始 (2003-12-27)
- mixiに登録 (2004-11-19)
- DiKicker (2003-12-28)
- 私的10大ニュース2004 [ web ] (2004-12-31)
2006年12月8日 (金)
■ DiKicker に TermDB が肥大化するバグ

DiKicker の TermDB まわりの処理の見直しをしていて、データベースがどんどん肥大化するという痛いバグを先日発見。
記事の更新を検出すると TermDB にも更新が入るのだが、この検出で「更新」ではなく「新規」と間違えることがあるようで、TermDB に同じ記事を再度新規登録してしまっているようだ。 で TermDB 側ではノーチェックだったので、どんどん追加されてしまういう状態になっていたと。
あちゃ。
とりあえず TermDB 側で登録処理時、既にあれば更新処理へ飛ばすようにして回避。
- [ DiKicker ] 旬表示を実装 (2004-02-23)
- nDiki のレスポンスが悪くなってきたので DiKicker 修正 (2006-08-29)
- [ DiKicker ] 関連記事表示機能を追加 (2005-02-26)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- さらにサーバ負荷状態悪化。対応に追われる。 (2006-03-04)
2007年1月11日 (木)
■ 週次レポートは社内 Blog には邪魔

去年の11月から会社で、電子化した週次レポートをベースに週次定例ミーティングを行うようになった。 それにあわせて、書いた週次レポートを DiKicker で立てている 社内 Blog に毎週載せておいたのだが、これが思ったよりよろしくない。
DiKicker でキーワード串刺し表示を行うと、これらの週次レポートが記事リストに毎度のように沢山表示されてしまうのである。 自分が担当している各プロジェクトの1週間の成果・進捗報告なので当然各プロジェクトのキーワードを使って文が書かれているわけで、キーワードで一覧表示すると大概ひっかかってしまうというワケ。
週次レポートはその他のプロジェクトの情報も浅く広く書かれているから、串刺しで見るには邪魔なのである。肝心のキーワードに関する情報も、週次レポートという要約記事の前に別途詳細の記事があることも多いし。
ということでとりあえず週次レポート専用に社内 Blog を作って、それらの記事はひとまとめにしておくことにした。 社内 Blog にしておいて役立つかどうかちょっと様子見。
- iCalendar 形式経由でスケジュールを社内 Blog に表示 (2007-01-08)
- 社内 Blog 開設 (2006-05-16)
- 紙ベースのファイリング (2005-11-08)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
2007年1月27日 (土)
■ DiKicker にはてなブックマーク数表示機能を追加

各記事毎に、「はてなブックマーク数表示」と「はてなブックマークエントリーページへのボタン」を追加する機能を追加。
DiKicker の構造上 HTML フラグメントへ変換する visitor を拡張する形で実装したけれど、やはりこの辺りはテンプレートベースでユーザがいじれるようにしたい。
WiKicker 開発時に速度の面で外した Template Toolkit 採用をまた検討してみるか。
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- [ DiKicker ] くっつき BBSをくっつけてみた。 (2004-05-04)
- [ DiKicker ] 関連記事表示機能を追加 (2005-02-26)
- WiKicker 0.29 リリース - ビルドまわりの改良など (2006-02-13)
2007年2月2日 (金)
■ DiKicker に grep 検索機能を追加

DiKicker には自動リンクベースの記事串刺し表示機能があって、同じキーワードを含む記事をまとめて読むことができる。 結構便利なのだが、この機能ではキーワードの設定は Blog の書き手に委ねられている。
社内で DiKicker を一部使ってもらっているのだけれども、それら他人の Blog を読んでいると「あのキーワードで串刺し表示したいな」と思うことがしばしばあることに気がついた。 やはり任意の文字列で串刺し表示する機能が欲しい。
書き手にとっても「自動リンクキーワードにするような文字列ではないけれども、串刺しで読みたい/探したい/見せたい」と思うことが少なからずある。
ということで、検索ベースの串刺し表示機能を実装してみた。
@ grep ベース
実現には全文検索を行う必要があるが「設置・運用の手間」「ディスク容量」という点から、事前にインデックスを生成するような方法は今回は避けようと思う (www.naney.org 上で自分が使う上での制約からくる理由が一番大きかったりする)。
ということで今回は grep 型で実装することにした。 もともと WiKicker の方の検索機能も現在のところ grep 型である。 WiKicker では自前で WikiPage をスキャンしているが、DiKicker では grep コマンドに任せることにした。 こういうのは専用の grep を使った方が速いはず。呼び出しは
grep -Flre $escaped_string dir...
というオプション指定。Web ページとしてのページングなどは、自動リンクによる串刺し表示機能のものを流用。
で試したところ www.naney.org サーバでは、load averages が 1 以下の時でだいたい50秒前後。対象ファイル数は 2800弱。予想より時間がかかる。
ただし1回実行した後、ファイルがファイルシステム/OSのメモリ上にのっている状態では 0.1秒程度で完了する。
検索結果ページの permalink が検索エンジンにそれなりに捕捉されて、定期的にアクセスがあるようになれば、ファイルがメモリにのっている割合が増えるであろうから平均して実用に耐えられる速度が出るかもしれない。
今後は様子をみながら検索結果のキャッシュ等を処理を整備していく予定。
- WiKicker 0.420 リリース - 変更いろいろ (2007-05-30)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- howm で nDiki の記事も検索対象にする (2006-04-02)
- [ WiKicker ] Memcachedのメモリ使用量 (2004-02-15)
- [ WiKicker ] 「最近のアクセスログ」処理思案 (2004-01-17)
2007年3月1日 (木)
■ WiKicker / DiKicker の AutomaticLink 長を可変にした

「が」や「は」など頻出する文字の WikiPage を作ってしまった場合、それらに対して自動リンクが働いてしまうと大変なことになるので、WiKicker では2文字以上のみ対象とするようにしていた。
しかし nDiki を書いていて、1文字のキーワードも自動リンクしたいという風に思えてきていた。 誰でも書ける Wiki の場合には危険で制約が必要だけれど、全てのキーワードが著者のコントロール化にある DiKicker では1文字のキーワードに対して自動リンクが働いても問題ないだろう。
ということで自動リンクが働く最低文字列長をプロパティで設定できるようにした。 2004年ぐらいからほとんど手をつけていなかった、AutomaticLink 処理モジュールを久しぶりにメンテナンス。 もともと2文字以上を前提でコーディングしてあったので、trie 部分などが1文字できちんと動くか確認した上で、文字列長チェックを可変に修正。 WiKicker、DiKicker 両方で設定で変えられるようにした。
またあわせて、英単語の部分文字列に対して自動リンクしないようにする処理も改善。 今までは `downloaded' に対して `loaded' はマッチしないようにしていたものの、'download' はマッチしてしまっていた。 このあたりを改善。
- [ WiKicker ] 複数のキーワード集合による、AutomaticLink (2004-02-07)
- [ WiKicker ] 自動InterWiki (2004-02-09)
- WiKicker に Flickr 関連機能追加 (2005-02-11)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- DiKicker に grep 検索機能を追加 (2007-02-02)
2007年3月7日 (水)
■ 自動リンク機能改善による悪影響

www.naney.org がどうもまた最近重い。
load average が 30 前後まで上がっている。 しばらくするとだんだん落ちついてくるのだが、3 以下になったところでまた 30 前後までまた一気に上がるというのを繰り返している。 load average で振る舞いを変えるのは WiKicker / DiKicker の特徴なので、これはうちが原因かも。
調べてみると SpeedyCGI のフロントエンドのプロセスが順番待ちで大量に起動している。
どうやら先日追加した自動リンクの機能改善にかかわるコード修正による、若干の処理速度の低下がまずいようだ。
速度が上がるようにちょっと修正してみたけれどまだ駄目なようなので、しかたなく単語の連接チェック部分を一時コメントアウトして対応。
今後、自動リンクまわりの更なる高速化がする必要がありそう。
- DiKicker に grep 検索機能を追加 (2007-02-02)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- DiKicker の出力する HTML コードを小さく (2006-10-05)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
2007年3月8日 (木)
■ MSNBot が激しすぎるので deny

ここ数日の www.naney.org サーバ高負荷について様子を見ていたところ、DiKicker の処理がリクエストに追いつかなくなる時には MSNBot が激しくアクセスしてきているようである。
MSNBot のページには robots.txt の Crawl-delay を見ると書いてあるので、以前
User-agent: msnbot Crawl-delay: 20
としておいたのだがどうもこれは効いていないらしい。
ちょっとこの連続リクエストはしんどいし、msn からのアクセスは現状全体の 2.5% 程度なのでしばらく弾くことにする。
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- [ DiKicker ] ロック獲得リトライをさらに減らす (2007-03-14)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- サーバの負荷が高くなったら DiKicker が 503 を返して沈静化を... (2007-04-05)
- DiKicker に grep 検索機能を追加 (2007-02-02)
2007年3月9日 (金)
■ DiKicker の ArticleDB に変更時刻保存レコードを追加

DiKicker 処理速度短縮のための修正。
キーワード記事ファイルの更新チェックのために今のコードでは、 ArticleDB 内の各キーワード記事オブジェクトを deserialize してそこに保存されている時刻情報と比較する必要がある。 この deserialization を避けるために、時刻情報は直接単独レコードとして DB に保存しておくように改良。
- [ DiKicker ] ページの中の最初の記事に1回だけ文字列を挿入する機能 (2006-11-15)
- mixiに登録 (2004-11-19)
- [ DiKicker ] 関連記事表示機能を追加 (2005-02-26)
- 有給休暇 - フリーソフトウェア開発のための休暇2日目 (2006-03-03)
- 過去の今ごろ (2004-03-14)
スポンサード リンク
■よく検索されるキーワード
torrent(109) x31(45) thinkpad(31) 動画(29) 提案書(26) mp980(24) 手帳(24) windows(23) linux(23) 画像(21) 使い方(21) リフィル(21) debian(20) usb(20) tc-1(19) perl(19) 筆まめ(18) 壁紙(17) ほぼ日手帳(16) 冷蔵庫(14) ドラマ(13) wiki(13) 書き方(12) ダイソー(12) システム手帳(12) 宮根誠司(12) ノート(11) so905ics(11) 無印(11) バッグインバッグ(11) 映画(11) 設定(10) 修理(10) 宮根(9) ssh(9) a6(9) ほぼ日(9) 黒田征太郎(9) バッグ(9) gmail(8) 感想(8) 娘(8) f-01a(8) メモリ(8) gtd(8) ブログ(8) nikon(8) allinanchor:*.torrent(8) ボールペン(7) 方眼(7) ポイント(7) 4c(7) ヨドバシカメラ(7) ケース(7) twitter(7) apache(7) ht-01a(7) ヨドバシ(7) ubuntu(7) truecrypt(7) n-02a(7) 作り方(7) minolta(7) af(6) インストール(6) ガントチャート(6) mp3(6) zippo(6) hdd(6) emacs(6) レビュー(6) カバー(6) vq1005(6) 日本語(6) ハクキンカイロ(6) 無印良品(6) グレゴリー(6) 交換(6) nikkor(6) pixus(6)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.099409s / load averages: 0.22, 0.22, 0.25
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク