好きなアルゴリズム

question:1195950564

Rekisaでも使ってるLongest Common SequenceとかShortest Edit Sequenceとか呼ばれてる配列比較アルゴリズムが一番好きだな、と思ったら既に一番最初に回答されてた。

やっぱり、あのアルゴリズムを知ると感動するよね。

ベイズ理論

アルゴリズムとはちょっと違うけど、今のRekisaの文字コード判別に使ってるベイズ統計も感動した。

テキストファイルを学習させると、手書きで書いた文字判別コード以上の精度が出るプログラムができてしまうってのが面白い。

Rekisaの文字コード判別にベイズ統計を使ってなかった頃に、

  • ユーザ:文字コードが判別がうまく動かないよ。
  • 私:直したよ〜
  • ユーザ:別のファイルが判別失敗するようになった!(`へ´*)プンプン!
  • 私:文字コード判別は「あっちを立てるとこっちが立たず・・」みたいな処理なんだよ。
  • 私:というかそれ。判別不能データじゃん!

みたいなやり取りがあったんだけど、ベイズ統計を使ってれば、ユーザ毎に文字コード判別処理も学習可能だったなぁ・・・、と後から思ったり。

とはいえ、今のRekisaも追加学習には対応せず、学習済みデータを搭載してるだけだけど。

CLR Add-In

Visual Studio 2008もリリースされたので、CLR Add-Inについて調べてみた。

http://msdn.microsoft.com/msdnmag/issues/07/02/CLRInsideOut/default.aspx?loc=jp:Title=CLR 徹底解剖: .NET アプリケーションの拡張性 -- MSDN Magazine, February 2007

http://msdn.microsoft.com/msdnmag/issues/07/03/CLRInsideOut/default.aspx?loc=jp:Title=CLR 徹底解剖: .NET アプリケーションの拡張性、第 2 部 -- MSDN Magazine, March 2007

http://blogs.msdn.com/clraddins/:Title=CLR Add-In Team Blog

  • Add-Inの解放が可能。
  • 寿命管理も自動的に行ってくれる。
  • Add-Inのインターフェイスを変更した、複数のバージョンのAdd-Inを混在して使用可能。
  • WPFを使用したAdd-Inも使用可能。

と機能的には非常に素晴らしい。

ただし、アドインとホストアプリケーションを繋ぐためのコードを書く必要があり、イベントを使用したアドインや複雑なオブジェクトを扱うアドインに対応させるとなると、結構面倒そう。

また、相互参照によるメモリリークにも気をつける必要がありそうだ。

新刊チェック

Amazon Web Serviceを使って新刊チェックソフトでも作ろうかと思ったが、少し調べてみると、

DISCOVER Your Favorite
ブックススケジューラ

のような素晴らしいソフトがあることに気づく。

とりあえず、独自色が出るようなアイディアを思いつくまで保留とする。

シェルのハンドルリーク

ふと気がつくとO2Handlerの使用ハンドル数が3000近くなっている。

ハンドルリークしてるのか?と思って調べてみると、コントロールパネルを開く毎にハンドルが10ほど増えていく。が、プログラムにおかしな点は見つからない。

試しにエクスプローラでもコントロールパネルを開いてみると、開くたびにハンドルが10ほど増えていく。これはシェルの方でハンドルリークしてるっぽい。

O2Hanlderからのシェルアクセスを別プロセスに分離すればリークの影響を受けずに済むが・・・そこまでするべきだろうか。