2003年9月のエントリ

26日の収録のメール。よく読んでなかったが,今読んでみると掲載の報告とある。返事しなくていいのね。じゃあいいや。

久々にはっぱさんとチャット。タイピングのクセを学習させて仮想CPUを作るにはどうすればいいかを聞いてみるとHMMとの答えが。勉強しなければならないのか。いや,きっとはっぱさんが作ってくれるだろう。

しばらく前に松4氏にウェザタイ 1.8 をやってみてもらったところ,リプレイが見られないとの話を聞いた。松4氏のことなので特に気にしてなかったが,今日ロビーで同じような話を聞いたので,ちゃんと調査を行うことにする。


今週 1 週間,ウェザタイの入力方式・仮想CPUプラグインを考えていたが,COM でやるには問題が。COM でプラグインを実現する場合,プラグインの DLL を個々にレジストリ登録,解除する必要がある。また,特定のインターフェースをサポートするオブジェクトを検索する手段は(全オブジェクトにQueryInterfaceする以外に)ないのでプラグインの GUID(CLSID)一覧をどこかに登録しなければならない。もちろんプラグインごとにインストーラを用意すればいいのだが,それば非現実的なので他の方法を考える。1 つ目の問題はプラグイン登録ツールか何かをこちらで用意すれば解決できそうだが,2 つ目の問題は何か工夫が必要。GetGUIDs メソッドを用意させるか別途テキストかなんかで用意するか。どうするのが一番いいのかな。それとも私が COM を知らないだけなのか。教えてはっぱさん。

ベタ DLL で作ればいいというのは…。つらい。


前回ウェザタイの紹介でロビーの画像を貼り付けていた雑誌(2003/06/07日記参照)からまた収録のメールが来ていた。当然のごとくver1.7。まあ断る理由もないので適当に返事を出しておこう。

# 後でちゃんと読んだら同じ雑誌ではなかった。出版社は同じだけど。

ハリーポッター5をようやく読み終わる。1 日 30 分ペースとはいえ 3 ヶ月もかかるとは。感想としてはとにかく長いと。さて,次はダレンシャン10が楽しみ。

最近わけあって Microsoft Office を調べているのだが,PowerPoint で Ctrl+Alt+Shift+(PageUp|PageDown|Home|End|カーソルキー)を押すと記号が出ることが分かった。何に使うんだろう。余計打ちづらいし。

ウェザタイの入力方式と仮想 CPU をプラグインにしたいのだが,何で作ろうか迷っている。今 COM 勉強中なので COM にしたいけど,おおげさすぎだろうか。

松4氏が書いたC++コード。ちょっと変えてあるけど。

class A
{
public:
    void f();
};

void A::f()
{
    std::cout << "hello." << std::endl;
}

int main()
{
    A a = NULL;
    a->f();

 return 0;
}

一見 NULL Pointer Exception が発生しそうだが,VC でも GCC でも BCC でも通る。アセンブリレベルで見ると絶対アドレスで関数を呼んでいる。なので仮想関数だったりするとアウト。コンパイラ依存ぽいけど。

アイコンが上がったのでWeather Typing 1.8をアップしておいた。


VisualStudio.NET2003 になって,F4 キーで次のコンパイルエラーの場所にとぶのはどれなのか分からなかったのだが,F8 だというのが分かった。ビルドが F7 から CTRL+SHIFT+B になってたり,こういうのはあまり変えないで欲しいですね。VB がそうなのかなあ。

WeatherTyping,DLLを分離してロビーの方に試してもらったところ,重い現象はなくなったとのこと。というわけで正式に1.8として公開できそう。ぱじ氏からアイコンを提供してもらったら完成。

さて,1.8 で何が変わるのかというとあまり変わらないわけで。とりあえず

  • ワードクライアントが入ったバージョンを広めたい
  • DLL をいくつも配布するのは大変なので .NET2003 で統一したい
  • WeatherTyping ツールを一緒に配布したい
  • 1.7 から半年も経ってるし,そろそろバージョンアップしとこう

ということで一旦まとめようかという話。


そろそろ 2.0 問題が近づいてきた。すなわち,リビジョン番号は分かりにくいので致命的バグ以外では極力使わない作者としては,2.0 まであと 1.9 しかない。2.0 といえばメジャーバージョンアップだ。つまり,がらっと変えないと納得してもらえない。てことで 2.0 では結構変えるつもり。

2003/09/07のインストーラの話。よく見たらVS.NET2003が作成できるプロジェクトの中にインストーラプロジェクトがあった。これ使えばいいのか。でビルドしてみたら 2.5MB。うーむ。インストーラなし版も必要だからかなりプロバイダ領域を消費してしまう。やはり DLL だけパッケージを置いておくのが一番か。

ついでにいろいろ見ていると,C# 開発環境上で WindowsCE 用開発ができるようになっている。って VS2002 からあったのか知らないけど。さっそく試してみたがいい感じだ。iアプリは今更作る気しないので C# で PPC 開発をやろうかな。

WeatherTyping1.8 用にインストーラを調べた。昔 Microsoftさんが送ってきた VisualStudio Installer を使おうと思ってダウンロードしようとするが,VisualStudio6 のプロダクト ID を入れろと言われる。そんなのとっくにアンインストールしてるって。で,引き出しを調べると前送られた CD があったので入れようとしてみるが,ID を入れろと言われて断念。というわけで WindowsInstaller SDK をダウンロードしてみたが,何がなんだか。ネット上に(日本語の)情報もほとんどないし。一から調べないとだめか。

まっちーさんに触発されて COM の勉強を始める。『InsideCOM』を借りてきて読んでいるのだが,やっぱり Inside シリーズは詳しくていい感じ。といっても他は『InsideVisualC++ version5』しか読んでないけど。『InsideVisualC++ version5』の新しい版は出ない(出せない)のが残念。


本を読みながらロビーを覗く。どうも WeatherTyping1.7.2(相当)は対戦・動作が重いとの報告を受ける。.NET2002 から .NET2003 に変えたせいとは思えないので,やっぱりスタティックリンクが原因だろう。そうすると次バージョンは DLL 配布しかないか。DLL を付けたインストーラでの配布+DLL なしの圧縮ファイルという形式が一番か。

robots.txt について調べてみる。これは,Web サーバに robots.txt ファイルを置いておくと,そこに記述したページは(その仕様に従う)検索エンジンの検索結果に載らないようになるというもの。だが,サーバのトップページに置かなければならない & 検索エンジンのロボットが読めなくてはならないので,そのファイルをブラウザから見ると秘密のページ一覧が取得できる。これだと robots.txt を読めば秘密のページ一覧が得られるわけで,そんなページだけを集めた裏検索エンジンとか作れるよなあ,とか思った。まあ,いろいろ対策はあるらしい。


Solaris 上の Apache を使っていて,どうも MS Excel ファイルのダウンロードがおかしいと思ったら text/plain を返していた。mime.types を調べてみると,MS Word と MS PowerPoint はちゃんと application/msword とかになってるのに,MS Excel だけ記述がなかった。何故? ちなみに新しい Solaris では Execl も定義されていた。

松4氏が「Ctrl+Alt+下矢印を押してみれ」というので押したら画面が逆さまになってびっくり。日記に書いておこうと思ったが,調べてみると Intel 82845G でしか使用できないらしい。残念。まあ書くんだけど。