mp3infp の掲示板を見たところ、第三者による改造版が公開されていた。試しに Vista x64 にインストールしてみたが、正しく動いていない。バグ報告しておくか。
CParserFilter のライセンスが明確になった。可音氏から、CParserFilter の作者の Judd 氏に問い合わせた結果を教えていただいた。BSD ライセンスだったとのことなので、今まで通り、TvqDec で使用できることになった。近いうちに、CParserFilter のライセンスを明記したものをリリースしたいと考えている。
数日前に発売になった NetWalker の実物を見てきた。非常に気になるマシンだったのだが、実際に触ったところ、キーボードがかなり打ちにくかった。また、オプティカルポイントもどうも反応が悪く使いづらかった。タッチパネルの反応は悪くなかったが、今回は見送りかな?
オリジナルの mpg123dsf の作者である可音氏からメールが来た。CParserFilter のライセンスについて、どう解釈しているかとの質問であった。GPL ではないフリーソフトウェアであると解釈して、TvqDec で使用しているが、グレーな解釈である。
mpg123dsf の改造版を作成したことを可音氏に伝えたいと思っていたのだが、連絡先が分からずもどかしい思いをしていた。今回連絡が取れてよかった。
数日前に、mpg123dsf のコンパイル方法を教えてほしいというメールが来た。しかも隣の国からわざわざ日本語で。隣の国からは今まで spam しか来たことが無く、見事に spam フィルタに引っかかってしまった。何とかメールを救出して返信しておいた。
自分の場合は、VC++ 7.1 を使ってコンパイルしているが、最新の Windows 7 SDK でもコンパイルできる。WSDK のサンプルに含まれている、baseclasses を vcbuild コマンドを使ってビルドしてから、baseclasses のディレクトリをインクルードディレクトリとライブラリディレクトリに加えて、mpg123dsf をビルドすればよい。なお、baseclasses は、CRT DLL にリンクする設定 (/MD) になっているが、mpg123dsf は CRT をスタティックリンクする設定 (/MT) になっているため、どちらかに統一しておく必要がある。
Vista で TClock Light 改造版を使うと、ネットワーク転送量が正しい値が出ないのを修正することにした。古いコンパイラでもコンパイルできるようにするため、構造体の定義を新しい Windows SDK からコピーするのが面倒だ。
「Geekなぺーじ : ネットワークインターフェースの情報を取得する」を参考にテストプログラムを書いていたら、Win2k で正しく動かなかった。原因を調べたところ MIB_IFROW の dwIndex の値が間違っていた。GetIfTable() で取得できたアダプタは 2個だったため、前述のサンプルプログラムは dwIndex として 1 と 2 を指定して GetIfEntry() を呼び出していたが、実際の dwIndex の値を確認したところ、16777219 と 1 だった。しかし、そもそもネットワークインターフェイスの情報を 1回取得するだけならば、GetIfTable() だけを呼べばよく、GetIfEntry() を呼ぶ必要はない。情報を更新したいときに GetIfEntry() を呼べばよい。
dwIndex の値は恒久的なものではないらしいが、dwIndex が有効かどうかはどうやって判断したらよいのだろうか? GetIfEntry() がエラーを返すかどうか、あるいは、GetNumberOfInterfaces() でインターフェイスの数に変更がないかも確認すべきか?
Vista で TClock Light 改造版を使うと、ネットワーク転送量が正しい値が出ないのを修正することにした。古いコンパイラでもコンパイルできるようにするため、構造体の定義を新しい Windows SDK からコピーするのが面倒だ。
「Geekなぺーじ : ネットワークインターフェースの情報を取得する」を参考にテストプログラムを書いていたら、Win2k で正しく動かなかった。原因を調べたところ MIB_IFROW の dwIndex の値が間違っていた。GetIfTable() で取得できたアダプタは 2個だったため、前述のサンプルプログラムは dwIndex として 1 と 2 を指定して GetIfEntry() を呼び出していたが、実際の dwIndex の値を確認したところ、16777219 と 1 だった。しかし、そもそもネットワークインターフェイスの情報を 1回取得するだけならば、GetIfTable() だけを呼べばよく、GetIfEntry() を呼ぶ必要はない。情報を更新したいときに GetIfEntry() を呼べばよい。
dwIndex の値は恒久的なものではないらしいが、dwIndex が有効かどうかはどうやって判断したらよいのだろうか? GetIfEntry() がエラーを返すかどうか、あるいは、GetNumberOfInterfaces() でインターフェイスの数に変更がないかも確認すべきか?
Vista で TClock Light 改造版を使うと、ネットワーク転送量が正しい値が出ないという話があり、少し調査してみた。
現在の TClock Light 改造版では、GetIfEntry() を使って転送量を取得している。Vista では、フィルタインターフェイスがいくつか追加されており、その転送量も含めて計算していたために、見かけの転送量が増えていたようだ。通常のインターフェイスとフィルタインターフェイスを判別する方法が必要だが、GetIfEntry() ではできないようだ。
Vista では、GetIfEntry2() という API が新設されているが、これを使えば判別することができそうだ。MIB_IF_ROW2.InterfaceAndOperStatusFlags.FilterInterface を見ることで判別ができた。
これを TClock Light に組み込むべきか迷っている。VC6 などの古いコンパイラでもコンパイルするようにするにはちょっと面倒だ。
先月の spam メールの集計結果。着信拒否にならなかった spam が少なくとも 2118通。そのうち、@nifty の迷惑メールフォルダーでも Spam Mail Killer でも spam として認識できなかったものが 3通(0.1%)。