2008年11月30日日曜日

FileStreamのPositionがなぜかずれる

私は開発には .NET Framework 3.5 SP1 を Visual C# 2008 SP1 で使っていますが、その環境のせいか、何のせいか、FileStreamPositionを指定しても、反映されない場合がたまにあります。これが一度出るとはまってしまう。。。そして何が原因か分からないまま、事象は解決する。。。

デバッガでPositionを変更した直後に止めてみて値を見ると、代入している値は確かに目的の値なのに、代入直後にStreamPosition0x0000001cになる。つまり以下のコードだけでアウト

  // set source stream position
  source.Position = 0x5000;

 // read packet ↓ここでデバッガを使ってPositionを見ると0x0000001cになっている
 FramePacket lastPacket = new FramePacket(source);

ちなみにseekを使っても同じ。なぜか入れた値のままにならない。デバッガで値を無理やり書き換えてもすぐに0x0000001cに戻る。なんだこりゃ。。。

メガバイトを超えるファイルを扱う場合、これがうまく動かない場合は致命傷です。試行錯誤を繰り返すと治るのですが、原因がよくわからないのは何とも気持ちが悪い。なんでしょうね。

生まれて初めて小説を買いました

別に特別興味があったわけでもありませんが、CMで見て、ニュースで見て、気になってついつい衝動買いしてしまいました。「ソウ―SAW (角川ホラー文庫) (表紙だけでも結構インパクトあるので気の弱い人は見ないようにしてください)」を。初めてでホラーです。映画のノベライズです。

SAWはシリーズ5まである怖い怖い映画で、最近SAW 5のCMが流れています。ストーリーはJigsaw Killer(ジグソウキラー)と呼ばれる殺人鬼が生きることを粗末にしている人間に命をかけたゲームを強いるというものです。映画はかなりグロいそうです。私は気が弱くDVDを買う勇気はいため、小説にしました。

1と2を買い、半日ぐらいで一気に読みました。読んでみて、一般にSAW1の評価がとても高い理由がよくわかりました。よくありがちな、おどろおどろしいだけ、怖いだけ、の話ではなく、人間の生きることへの執念を実にうまく表現しています。ジグソウの仕掛けるゲームも、ルールがシンプルにして深い。とてもよくできた話でした

興味がある人は読んでみてください。

2008年11月24日月曜日

井戸知事の「関東大震災はチャンス」発言の問題点

日本の報道は失言が好きなようで、近畿ブロック知事会議での井戸兵庫県知事の「関東大震災はチャンス」という発言に食いついているようですね。

この件も発言の趣旨を見れば大した問題ではないということは明白なのですが、報道関係者がいる前での発言ということで少しは気をつけても良かったかもしれないですね。でも何て言えば問題にならなかったのでしょうね。

元の発言

まず、東京一極集中をどうやって打破するかという旗を揚げないといけない。物理的には、関東大震災なんかが起これば相当ダメージを受ける。これはチャンスですね。チャンスを生かす、そのための準備をしておかないといけない。機能的には、金融なんです。金融とマスコミが東京一極集中になっている。東京に行った企業をもう一度、関西に戻せというカムバック作戦を展開していく必要がある。(中略)そういう意味では、防災首都機能を関西が引き受けられるように、あるいは第2首都機能を関西が引き受けられるような準備をしておかないといけない。

本件では発言後すぐに記者会見を行っていますが、そこでの井戸知事の発言が微妙でした。「なぜ問題なのかわからない」

実際に問題であるかどうかは別にして、報道がなぜ騒いでいるか、分からないわけないでしょうに。子供じゃないんだからまともなかわし方をしてください。

田母神問題は論点がずれすぎている

もうだいぶ過去の話になってしまいましたが、、、田母神さんの話に触れたいと思います。(なお、田母神前空幕長というのは面倒なので、田母神さんと呼ばせてください。)

ニュースで散々取り上げられ、退職に追いやられ、国会に参考人招致までされた田母神さんですが、この話はどこか論点がずれていると思います。大切なのは、個人としての言論の自由が認められているかという点です。

田母神さんがなんと言おうが、論文を出そうが、それが公人としてではなく、私人としてであれば、なんと言おうが問題ではなかったのです。アパグループの懸賞論文なんて完全な私人として行う行為です。それを問題として取り上げる以上、日本は今後、公人としてだけではなく、私人としての発言まで監視、規制されるべきという方針を打ち立てたことになります。麻生総理大臣もこの件を問題として取り上げていますので、やはり、発言の自由は規制されるべきという今までの慣例に一石を投じる議論であることは明白ですね。

国会参考人招致では田母神さんが過去の歴史をどう思っているかを細かく聞いていましたが、何の意味もありません。あそこで発言を撤回したら何かいいことがあるのでしょうか。極右であることがわかったら何かいいことがあるのでしょうか。時間の無駄です。ちゃんと仕事してください。文民統制がどうのとか、そこの土俵に上げる以前の問題です。

結局その論点はニュースで取り上げられませんでしたが、しかるべき所でちゃんと議論されているんですかね。大事なことですよ。

2008年11月23日日曜日

キャプチャファイルのキャプチャ終了時間を推測

Wireshark等のパケットキャプチャで収集したキャプチャファイルはただ単に取得したパケットを数珠つなぎにして保存しているため、収集を終了した時間がいつか、というのはファイルを最後まで走査してみないとわからないようです(収集開始時間は1パケット目の到着時間がそれにあたるので容易に判定できますが)。そのため、収集終了時間を知るためだけにファイル全体を走査するという面倒なことをしなければなりません。これはちょっと嫌です。というかだいぶ嫌です。ファイルサイズが500Mあったら。。。とか考えたくないですね。

要はファイル内の最後のパケットを見つけられればいい、ということで、WireWhaleではファイルの末尾から以下のバイト列を見つけることで最終パケットを推測しています。

  AA -- -- -- 00 -- -- 00 00 BB BB 00 00

  --   : 任意のバイト
  AA: 1パケット目のEpoc時間の上位1バイト
  BB BB: ファイルの末尾からのバイト数

上記はパケットのFRAMEヘッダ部の文字列です。Aは1パケット目のEpoc時間の上位1バイトで、これが1パケット目と同じということは、1パケット目を収集してから16,777,216秒(約4,660時間)経過していない、というのと同意になります。じゃあ4660時間以上のキャプチャファイルの場合はどうするんだということになりますが、そこは保証外ですよ。無茶言わないでください。

他にも細かいロジックを色々入れればもっと精度の高い推測ができるかもしれませんが、当面はこれでいきます。