2.29.2008

バグ取り&改造。

検索さんこと、正式名称「C#からインデックスサービスを利用して、普通より高速にファイルを検索するプログラム」。
インデックスサービスについて調べているうちに、余りに短い文字列だと、検索ではじかれてしまう問題点を 発見。
そんなわけで、その修正と、タスクトレイにアイコンを表示して、そこから終了操作ができるものにしてみましたよ。

ダウンロードはこちらから

インクリメンタルサーチは、インデックスサービスの検索スピードから考えても無理そうなので、実装はなし。Vistaの検索サービス程度のスピードで動いてくれれば問題ないかなぁと思っています。

そうそう、前回書いたクエリの実行速度が遅いってやつだけど、これもインデックスサービスのパフォーマンスを調整すると早くなりました。
インデックスを作成するパフォーマンスとクエリのパフォーマンスが別々に調整できるとは・・・。
でも、インデックスがきちんと作成されていないと、使い物にならないプログラムでもあるんだよな(笑)

TODOとか、今後の開発方針なんかは特に決めていないので、これでラストリリースになるかもしれないし、そうでもないかもしれない。
あるいは、他のことに興味が移れば、そちらの開発をはじめてしまうかもしれない。

そんな検索さん。ご利用は自己責任で。

2.28.2008

coLinux: MD5 sumのチェック方法。

何度か失敗したので、ここにメモとして残しておく。

1.coLinux本体をダウンロード

2.ダウンロードサイトにあるmd5sum値(ハッシュ値)をコピーし、テキストファイルに貼り付ける

3.[ハッシュ値]_*[ダウンロードしたファイル名](_は半角スペース)
となるように、ハッシュ値のファイルを修正。

4.ハッシュ値を、適当な名前でダウンロードしたcoLinux本体と同じディレクトリに保存

5.コマンドラインでcoLinux本体のあるディレクトリに移動し
md5sum -c [ハッシュ値を保存したファイルの名前]
をうち、FAILEDしなければ(OKならば)、ファイルは破損していない。

coLinux。またまたアップデート。

20日、24日、26日。
細かいバグフィックスだけど、結構続けてdevelがリリースされてる。
今回のリリースでの修正点は、cofsに関するところがほとんど。
私は普段cofsを使ってWindowsとLinuxの連携を図っているから、案外重要なリリースだ。

それから、vimのFsync failedに関する問題点も修正されているから、devel版でvim使う人は更新しておいたほうが無難かも。


2.27.2008

coLinuxをアップデート。

24日にやったと思ったら、その日にエクスプロイドコードに対処した新版が出ていたとはw
笑うしかないww

というわけで、先日に倣ってアップデート。

そういえば、私はまだ詳しく調べていないけれど、covideoやcoaudioの状態はどんなものなんだろう?
とってもおもしろそうで、今から興味津々なのだが。

2.24.2008

coLinuxをアップデート。

snapshotに2月20日版が出ていたのでアップデート。
いつもどおり、上書きだと怖いので一旦削除してから。

まずはサービスとして稼動しているcoLinuxにログインして、shutdownコマンドを使って止める。
次にコマンドプロンプトで colinux-daemon.exe --remove-service をする。
ここのところ一ヶ月ペースでリリースされていて、私もそのたびにアップデートしてるから、もう慣れたものだ(笑)

で、面倒だからそのままUninstall.exeをコマンドラインから走らせる。
削除できたら、今度は落としてきたdevel版を実行する。
今回使うのは devel-coLinux-20080220.exe
一応、md5をチェックしておく。おすすめはwMD5sumというツール。GUIなので使いやすい。
余談だが、コマンドラインが好きな人は、こっちのツール群を導入しておくと幸せになれると思う。

ハッシュがチェックできたらインストール。アップデートだから、ルートファイルシステムのダウンロードのチェックをはずす。
私は利便性の関係上、C:\ドライブ直下にcoLinuxというディレクトリを作ってそこに入れている。
あとはざざっとインストールを行ってFinish。Show Readmeは一応しておく。
でも、前回の.confファイルでの一件よろしく、重要な変更点は書かれていないんだよなぁ;

というわけで、今回も一応.confファイルを覗いてみる。
今回は私の設定に係わる大きな変更点はなさそう。
なんか、知らないうちにcoLinux起動時に好きなソフトを同時起動できるようになってる。
日々進化してるんだなぁ。

一通り確認したら、今度はネットワークの設定。
私はノートPCから無線でつないでいるのだが、slirpじゃなく、昔ながらのネットワーク共有によってcoLinuxのゲートウェイであるTAPにネットワークを共有してあげるスタイルでネットワーク接続をしている。
だから、毎回この設定が居る。でも、そんなに手間のかかることじゃないし、苦じゃない。

というわけで、新しく増えたローカル接続の名前をTAPにして、無線の共有設定をリセット。
すると、TAPサイドのIPが変わるから、いつもの図にあわせてこちらも再設定。

ここまでしたら起動テスト。
colinux-daemon.exe @configfilename.conf
で起動。
起動したら、rootでログイン→# uname -a してアップデートされた居ることを確認したら、
# ifconfig -a でインターフェイスのチェック。
今回は前回と違って、うまく動いてた。良かった。

んで、適当にpingを飛ばしてネットワークコネクションが確立されていることを確認したらshutdownする。
あとはコマンドプロンプトに戻って colinux-daemon.exe @configfilename.conf --install-service
でサービスとしてインストールする。

サービスのスタートアップの種類を自動にして、開始すれば完了。
このメモ書きながらで30分ほどの作業だった。

変更点はここに書くと大変な量になるから、素直にChangelogをどうぞ。

2.23.2008

インデックスサービスを使って、高速にファイルを検索する

そんなソフトを作ろうっていうのは、ここのところずっと言っているとおり。

C#でこの手のプログラムを作る手順としては、




・プロバイダをMSIDXS,データソースを検索したいカタログとした、string型のコネクションリクエストを用意

・そのコネクションを引数にして、OleDbConnection型のオブジェクトを作成

・作成したOleDbConnection型のオブジェクトをOpen

・検索クエリ(SQL)文字列を作成

・Selectの対象となるテーブルはScope()。検索するレコードは、ファイルオブジェクトの持つプロパティ。アスタリスク(*)は使えない

・where句の検索条件として、検索したい文字列を引数に与えたFREETEXT関数を用いる

・作成したクエリ文字列とOpenしたOleDbConnection型のオブジェクトを引数にして、OleDataAdapter型のオブジェクトを作成

・DataSetオブジェクトを作成

・OleDataAdapter型のオブジェクトのFillメソッドに、DataSet型オブジェクトと"SearchResults"という文字列を渡す

・DataSetオブジェクトに検索結果が入るので、データグリッドなどで表示する




というステップを踏めばいけるみたい。(サンプルソースを見ながら考えただけだから、もっと短い手順でOKとか、実はこういう手順を踏むべきだとかいうのがあるかもしれない)

で、今回は前回までに出来たものをちょこっと改良した奴を公開。



ダウンロードはこちらから



ざっとReadMe的なものを書いておくと、

・利用には.NETFramework2.0+が必要。

・バグだらけでも泣かない

・開発環境はVC#2008+WinXP(pro)

といったところ。

当然ですが、インデックスサービスが止まっていると動きませんよ。



さて、このインデックスサービスによる検索、前回はすごく速い!と思ったけど、いろいろいじっているうちにそうでもないような気がしてきた(笑)

もしかして、インデックスのパフォーマンスに関係があるのかなぁ・・・?

ここで終わりにするか、もう少し研究してみるかは、今後のやる気次第。

常駐→すぐに検索ぐらいまでにはするかな。

2.20.2008

C#を使ってインデックスサービスを活用してみる。

以前から書いてるインデックスサービスを使ったファイル検索について。

C#を使うとすぐに接続→検索できるっていうのは以前に書いたとおり。

で、下図がその画面。




















Macぽい画面なのは、私が単にそういうテーマにしているだけで、きちんとC#で書いているし、.NETFramework3.xで動いている。(開発環境はVC#2008)



検索する文字列にもよるけれど、おおむね2秒前後で検索結果が返ってくる。

スタートメニューから呼び出すファイル検索とは偉い違いだ。

それでいて、ある程度満足いく検索結果が出てきているので、もう少し応用したらいろいろ使えそう。

個人的には、MacのSpotlightやGoogle Desktop Searchみたく、インクリメンタルなサーチができると良いなと思っているけど、中ではSQL文を投げているわけだから、そんなに良い性能を得られるとは考えていない。

というわけで、検索文字列を入力→検索ボタンで検索→検索結果が一覧表示っていう、locateコマンドのGUI版みたいなつくりになりそうだ。



ただ、使っているOledbconnectionとかそのあたりのオブジェクトは別にGUIに依存しているわけではないので、CUI版にも応用できれば、Windows版locateコマンドが作れてうれしいかななんて思っていたりもする。でも、このへんにチャレンジするのはもう少しいじってみてから。



それから、インデックスサービスがCPUの能力を喰うためにインデックスサービスを止めているから、この手のソフトを利用できないって人は、インデックスサービスのタスクから、パフォーマンスの調整をして、少しインデックスの作成に関するパフォーマンスを落としてみればいいと思う。

まぁ、パフォーマンスを落とせば、この手のソフトの動きも悪くなるわけだけれども、検索結果として導出されるものは、さほど気にならない程度の変化だと思う。

逆に、CPUのパワーを喰わなくなるので、この手のソフトとの共存を考えている人にはいいかもしれない。



それにしても、C++でやっていたのが実にバカらしい。

(なんて思いつつも、少し悔しかったりするんだよね。HelperAPIに関してはPlatformSDKにサンプルが付いているようだから、気力が持てばそっちの解析もやってみたいな。)