差分表示

  • 最後の更新で追加された行はこのように表示します。
  • 最後の更新で削除された行はこのように表示します。

*migemoの高速化
-切り替えるの面倒だよね。自動化したい。
-入力が500msくらい途切れたら自動でmigemo検索を実行
---インクリメンタルじゃないけど…実用的にはこれでいいかも
-インデックス時に日本語を含むかどうかのフラグを立てておき、立ってるものだけmigemoを使う
-1文字手前の検索結果から絞り込んで検索する
-URLのタイトル名にだけ使う

*全体の高速化
-RegexOptions.Compiledを試してみる
-先頭・末尾に追記したときは、1回前の検索結果から絞り込む
-末尾の文字を消した場合は、1回前の検索結果をレストア
-途中に追記した場合は、結果が増えることがあるので再検索
-もっと汎用的に、文字列 -> 検索結果のハッシュを持てばいいのか
--ウィンドウを閉じたらClearが無難かな
-DEBUG時は、全体から検索した場合と結果が一致するかassertしよう

*設計見直し
そろそろリファクタの時期。いろいろネタ出し。

-ソートはstatic, dynamicに分ける
--static: インデックス作成時のソート
---低速でよい。ユーザー入力はヒントに使えない。
--dynamic: 検索結果に対するソート
---高速でないといけない。ユーザー入力をヒントに使える。
---staticソートの結果を無駄にしないアルゴリズムがよい。

-staticソートアルゴリズム
--アルファベット順
--最終アクセス時刻

-dynamicソートアルゴリズム
--ファイル名に完全一致したものは上に持ってくる
--migemoモード時、日本語でヒットしたものは上に持ってくる

-ビジュアライザ
--Path, URIから、画面に表示する文字列を求めるもの
--画面表示されるアイテムに対してだけ呼ばれる。低速でいい。

*コンフィグ
-ダイアログの内容を丸ごとシリアライズする方法ないかな

*その他
-アイテム追加のスレッド化
--PriorityQueueを使うと終わったころにはソート済み