Monthly Archives: March 2010

ブルースクリーンの呪い;Laval Virtual 紀行 2010 (0)

今年も Laval Virtual 紀行の季節となりました。例によって、期間中は起床-展示(準備)-夕食-意識途絶の毎日を送るため、リアルタイムでの更新は不可能です。日を改めて更新します。 さかのぼって3月28日、メモリリークもふさいで完璧!と悦に入りながら長期負荷テストを仕掛けて帰ろうとしたところ、ブルースクリーンで落ちる。20分~30分に1回くらいの頻度で落ちるが、再現性がまったくなく、原因追求に時間を消費する。このまま展示に臨めば「すみません、今再起動中です」を連発することになるのは明らかで、展示としてこれは絶対に認められない。ましてや今回は招待展示なので、その場で切腹モノである。 落ちるタイミングをじっくり観察すると、ウェブカメラのアクセスランプが点滅する瞬間に停止する。なるほど。このシステムは、2台のウェブカメラから差分画像を構成し、指示位置の検出後に文字キャプチャを行うが、速度を稼ぐために、差分画像は QVGA の小さな画像を使用し、文字キャプチャの寸前に最大解像度にその場で切り替えるという技法を用いている。が、何回かに1回、その解像度切り替え命令でブルースクリーンとなっていた。これはどうしようもない。 苦肉の策として、1台のカメラを最高解像度に固定し、差分画像をとるときには縮小して使うことにした。フレームレートが一気に落ちるため、高解像度カメラの画像は、必要になったとき(基準は内緒)だけ取りに行くことにして、速度低下を緩和した。CVideoCapture クラスをきれいに設計しておいて救われた。 3月30日、開発をファイナライズして、動作環境のバックアップを取る。今回は、いくつかのツール(mecab, nhocr, sed)が個別インストールになっているのと、そろそろ Vaio のハードディスクが気持ち悪くなっているのとで、DVD に加えて、ハードディスク丸ごとバックアップも作った。予定通り、3月31日に荷造りを終了して、出発準備完了。

Posted in Laval Virtual | Tagged | Leave a comment

日曜日に市場へ出かけ~

最後の装飾用の品々を買ってきた。(デスクマット、配線モールなど) メモリリークは、4時間ほどかかったが昨日の夜に完全にふさいだ。(みっともない) あとはデスクワーク中心かと思ったら、USB モニタ用のサブシステムに使っていた Delphi6 Personal が起動しない。サブシステムの開発言語の検討時に C++ Builder Pro を試しに入れたのが悪かったらしく、再起動で相互の Personal 版と Pro 版のライセンス情報が混乱したらしい。Delphi6 も Pro 版を入れて事なきを得る。 なにをいまさら Delphi と言うなかれ、私の構造化言語とのつきあいは Turbo Pascal 3.0 with 8087 support から始まっているのだ。Borland の「ナンセンスでないライセンス」は、当時感動したなあ。Pascal で グラフ理論を勉強し、MS-DOS のデバイスドライバを書き、OpenGL を叩いてきた。real が integer に代入できるような言語は、実は嫌いだ。(←言語に好き嫌いを言うのはプロのプログラマでないことの証明) Quiche も食べるし。(←Real Programmer でないことの証明。分からない人の方が多くなっているネタだが Wikipedia にわざわざ一項目できている) … Continue reading

Posted in Laval Virtual, ソフトウェア, 趣味 | Leave a comment

世にも恐ろしい……

今日もひたすらコーディング。さていよいよ今年の開発もファイナライズしようかというこの時期、負荷テストで世にも恐ろしいメモリリークが発覚した。そういえば、途中からそんなことを気にしている場合ではなくなっていたからなあ。何がどう恐ろしいか分からないという人は、新学期のコンピュータサイエンスを履修するように。だいたい30分走ると、止まる。 さっそく水漏れ修理会社に電話だ! いや、OS を 64bit にしてメモリをあと10倍積めば5時間くらいは持つから、それでなんとか。それとも、神社にコンピュータを持っていてお祓いしてもらうか? とか言っている暇があったら、とっととコードを追えと。まあ、冷静にやれば何とかなるでしょう。気分転換終了。

Posted in Laval Virtual, ソフトウェア | Leave a comment

自分で掘った落とし穴

いよいよラストスパート。ただし、まだ冷静なので、やっつけモードには入っていない。 GnuWin32 の sed を –in-place モードで起動すると、中間ファイル(temporary file)が sed.exe の場所に作成され削除されない(←おい!)。同じように引っかかる人へ。sed が中間ファイルをまきちらしていくのは、あなたの CreateProcess や ShellExec の呼び出しが間違っているわけではない。安心してよろしい。昨日の夕方から、半日無駄な時間を過ごした。 仕方ないので、プログラム中から CreateProcess で呼び出すたびに sed?????? のパターンのファイルを毎回削除することにする(ハードディスクの耐久試験か?)。 まかり間違って、たまたま重要なファイルがこのパターンに一致すると自動的に削除される。自分で掘った落とし穴の場所を忘れないよう、記録する。 void RemoveSedTemp() { HANDLE hFind; WIN32_FIND_DATA FindFileData; hFind = FindFirstFile(“sed??????”, &FindFileData); if( hFind == INVALID_HANDLE_VALUE ) return; DeleteFile( FindFileData.cFileName ); … Continue reading

Posted in Laval Virtual, ソフトウェア | Leave a comment

JishoDesk 追い込み

2010 Laval Virtual 審査通過。しかも Invited!! だがしかし、追い込みにかかって難題続出。目下最大の懸案は、モニタ。USB モニタに詳細情報を表示しようと思っていた(セカンドモニタ端子にはすでにプロジェクタがつながっている)が、ウェブカメラ2台+USB モニタをつないだ瞬間、どれか一つが無反応になる。電源供給ハブを挟んでもダメ。こんなところでつまづくとは思ってないぞ。 (なに、つまずくが本則だと? で、それは日本語学習者にどう説明すればいいのか?) 仕方ないので、もう一台コンピュータを持ち込んで、詳細表示データをネットワークで送ることにする。図らずも久しぶりの複数台使用展示になってしまい、トラブルの確率は(確率が低いので)台数に正比例、と。 # イワシが「鮪・与」と認識されるのは、何か納得した。

Posted in Laval Virtual, ソフトウェア | Tagged | Leave a comment