山田偽研

(2011.07.03) CCB Ver.0.52b

CCB Ver.0.52b を公開しました.

今回は次の二点を改造の目玉に据えました.

  • ソケットの完全非同期化
  • 検索機能の強化

今までは「なんちゃって非同期ソケット」で多重接続を実現していたため,時々ユーザーインタラプト操作が異常に重く感じたり,「検査」のタイムアウトや応答時間が不正確になることもありました.今回,ソケットを抜本的に書きなおして「完全非同期化」することで,割り込み性能や時間の正確さが劇的に向上しました.

また,ソケット非同期化に便乗して,「採集」と「ターゲット長の測定」コマンドも多重接続で行うことにしました.特に,「*すべての採集先」から採集をするとき,前バージョンに比べかなりのスピードアップが見込まれます.

次に,従来の検索は「特定のカラムを対象とした」ものでしたが,実用的には「カラムごとに検索式を与え,それらを組み合わせて検索する」方が重宝します.そこで,iCBM3SQDNなどで培った技術を導入して,例えば「国籍にchinaという文字を含み,かつ応答が1秒以下」の条件で検索を行うならば,

国籍//china and 応答<1

という具合に入力できるようにしました.これは便利です.

(2011.07.03) CCB Ver.0.52b2

CCB Ver.0.52b2 を公開しました.

先ほど公開したVer.0.52bに見つかったタイムアウト関連の致命的なバグを修正しました.

(2011.07.05) CCB Ver.0.53b

CCB Ver.0.53b を公開しました.

Ver.0.52bで新しく導入した「非同期ソケット」がまだまだ不安定なのでチューニングを施してみました.たぶん,今回で決定打というわけにはいかず,あと何回かは微調整が必要になるかもしれません.気長にお付き合いください.

(2011.07.19) iCBM3 Ver.0.147b

iCBM3 Ver.0.147b を公開しました.

今回の主な改造ポイントは以下のとおりです.

  • 通信ソケットの完全非同期化
  • 「リンク抽出」コマンドのアルゴリズム最適化
  • 「速報ニュース」クラスのリファクタリング

先日,CCBに導入した非同期化ソケットを本作にも適用しました.さらに,今まで「更新チェック」「リンク抽出」「Feed自動検出」「Podcastダウンロード」などで統一性なくバラバラのスレッドプールで動作していたソケットをすべて同じベースクラスから動作するように改造しました.

「リンク抽出」は今まですべてのHTMLタグを列挙してリンクの解析を行っていましたが,明らかにそれは不経済なやり方です.新しいアルゴリズムでは必要最小限のタグだけをピックアップするように正規表現を書き換えました.

「速報ニュース」は長らく機能を書き足してきた結果,ソースコードがぐちゃぐちゃなスパゲティ状態になってしまいました.そこで,機能的には今まで通りの動作をするのですが,カプセル化した記述に変更することで見通しの良いコードに改良しています.この結果,今まで澱のように溜まっていた細かいバグが解消されると良いのですが..

他にも新コマンド追加や細かいバグ取りなども行っています.

(2011.07.23) iCBM3 Ver.0.148b

iCBM3 Ver.0.148b を公開しました.

Ver.0.145b以来,Mozilla Firefox 4以降の「places.sqlite」の読み書きができなくなっていましたが,ようやく原因究明ができました.新しい「places.sqlite」にアクセスするにはSQLite v3.7以上が必要なのですが,本作で採用しているSQLiteライブラリー「System.Data.SQLite」はv3.6.23.1準拠のため読み書きができなくなったのです.

そこで,調べてみたところ開発フェーズのライブラリーならばv3.7以上に準拠しているものがあるので,それとリプレースすることにしました.ただし,開発フェーズのライブラリーのため,思いもよらぬバグが潜んでいるかもしれません.その点はご留意ください.

参照
Problem opening a firefox places sqlite with PowerShell and System.Data.SQLite - Stack Overflow

この他に細かいバグフィックスや文言定義の変更なども行っています.