DFのテスト中、うっかりとソースを削除する。
うかつだ。
とりあえずバックアップから戻すものの、10日前のものだったりしてショック。
今まではタイマーを使って1秒ごとにディレクトリの更新状態を監視していたのだが、今回の変更でこれが必要なくなった。
トム・クランシーのネットフォースという文庫を読了。評価、駄作。
普通、作家と言うものは書く対象についてある程度調査をするものだと思う。そうでなければ現実感が失われてしまうからだ。
調査をしないのはある種のファンタジーのような、現実との接点が無いものに限られると思う。この場合でも世界観や価値観、文化、風習などについて細かく設定しておかないと現実感が薄れてしまう。
特にネットフォースのような(近未来とはいえ)現実世界を舞台にしたようなものだと現実の世界をベースにした設定が必要不可欠で、これが現実離れしていると表現や物語に説得力が無くなってしまう。どんな強大な納得力をもってしてもアリが象を踏みつぶしていたりすると馬鹿げてみえる。
すでに1GHzのCPUが実用化されようと言う時期で最新鋭 900MHzのパソコン
なんて書かれているものだから読んで行く意欲をばりばり削いでくれる。
書かれた時期が10年位前だとしたら許したかもしれないが、書かれたのは1998年だそうでこれはちょっち調査能力が駆けているというか、調査する気がなかったのではないかとしか思えない。
ネットの表現もありきたりで、しかもネットが出てくる必然性が感じられない。ネットに絡んだ物語と言うのも希薄で、これなら最初からネットについては触れないようにして単純なテロリスト対警察と言う構造の物語にした方がまだマシだと思った。
ここで使われるネットのイメージと言うのはVirtual GirlとかJMに出てくる物よりももっと現実世界に近いイメージを作り出せるVirtualReality。そんなものが1GHz程度のCPUを搭載したマシンで実現できるとでも言うのだろうか。だとしたらよほど想像力が無いか、現実を無視しているか、何も知らないかのどれかだとしか思えない。
しかもネット上の犯罪と言うのがネットにおけるVirtualReality空間でのライフルでの狙撃とか、そういう表現をされている。
そんなもの、ネット上でやる理由が思いつかない。
登場人物の設定も希薄で、なぜそう考えるのか、なぜそういう行動をとるのか、というのが伝わってこない。これも物語の説得力を失わせるポイント。しかも希薄な設定が物語に絡んでこないので、無意味になっている。作者の独り善がりとしか思えない。
個人的には二度とトム・クランシーの作品は読まないような気がする。
というような作家の作品なんて誰が読みたいなどと思うというのか。
もう少し、ディジタルの秘法のような物語をイメージしていたのだが、単なるテロリスト物だとは私の想像力も足りないらしい。
例のWindowsプログラミングのやり方みたいなものは、書きかけというか、ネタをまとめている最中と言う感じで、まだコンパイルすらしていない状態なのでよろしく。
トム・クランシーのネットフォースという文庫を読み始める。駄作の匂いがぷんぷんする。割と広告とかが派手な作家だったので期待していたのだが。
腕時計のバンドが切れたので交換しにいく。
歩いている途中で喫茶店からコーヒーの香りがしてめちゃくちゃ飲みたくなる。
ブギーポップ・カウントダウンを読んだばかりだと言うのにすでにブギーポップ・ウィキッドが出ていた。とりあえず買う。
火星人刑事の3巻も発見。買う。
へきへきのCDアルバムが3枚も出ていた。
4月26日、林原めぐみ嬢のアルバムもでるのでチェック。
っていうか3枚も同時に出さないでくれぇ。せめて30日くらいずらして発売して欲しいぞとか思う。
3枚となると手持ちの金額では危険な領域である。っていうかこのペースで消費すると月末に切れる定期代とか食事代が無くなるのではないかとか不安に襲われる。
とりあえず思案する。定期が無くても出勤できないだけだ。が、ここでCDを買わないとなると私の存在意義に関るような気がして来るのがマズイ。
しかし出勤しないと給料がピンチというわけで私の存在自体が危ぶまれる。むぅ。
とりあえずアルバムも買う。
帰り際、コーヒーを飲むためにミスドに。店内でWindowsプログラミングのやり方みたいなものを書いてみる。途中でバッテリーが無くなったので終了。続きはいつ?
Windowsが起動しなくなる。ぴーんち。
Windows保護エラーとか出ている。
レジストリを再構成して無事復活。
DeconをインストールするとDFでC:\CON\CONにアクセスした時にハングアップするという話なので調べてみる。
カレントディレクトリを変更する時に、そのディレクトリが存在しているかどうかを確認しているわけだが、Deconをインストールする前はC:\CON\CONについては「存在しない」という意味のエラーコードが返ってきていた。
しかしDeconをインストールすると「アクセス権が無い」という意味のエラーコードになっていた。このためにアクセス権の認証を行おうとして何処かに行ってしまっていた。
なかなかうまくいかないものである。
MSD-JAPAN様から特訓に対してCD-ROM収録依頼を頂く。
DF、気がついたらルートのパスの処理がDBCSに対応していない。おかげで\\サーバ\ソースとか\\サーバ\バグ一覧表とかにアクセスしようとして残念な思いをする。
カレントディレクトリの変更前にはFindFirstFile()してディレクトリの存在を確認しようとしているのだが、ルートだと見つけられない。変更先のディレクトリが無い時には階層を一上がるようにしてあるので、この時に一つ上を探す時に2バイト文字をセパレータと誤解して破滅する。
とりあえず検索方法を変更し、ルートでも見つけられるようにして、階層を一つ挙げるところをDBCSに対応させる。
地下鉄の中でメモリリーク検出ライブラリを作ってDFをテスト。ついでに終了時に解放されるからといってほったらかしにしていたヘルプファイルのパス、入力したパスのヒストリも解放するようにする。これでリーク無し。
さくっとデータライブラリに登録。FGALTLAの方には削除依頼のメールも書く。
DF、いろいろいじっているうちに一部のソースが古いものと置き換わっていた。がーん。調べてみるとアップロードした時にはすでに古いものに置き換わっている。これだとメモリリークするハズだ。試してみるとガンガンリークする。がーん。
勤務先のPCがK6-2の500MHzにぐれぇどあっぷしたのでDFの耐久テストをしてみる。コケた。
FIVAだと何ともなかったので油断してしまったが、SendMessage()って別スレッドに送った時にはちゃんとブロッキングしてくれるんじゃないの? というか、この時って既にウインドウは破棄されているハズなんですが。
とりあえずなんとかDFをデータライブラリにアップロードする。
DFでダブルウインドウモードに移行する時の処理を手抜きすることで高速化しようとする。
手を抜きすぎて運が悪いとメモリを確保する前にアクセスしてしまうというマルチスレッドならではのバグを作りこむ。
FWINALとFGALTLAにDFをアップロードするための文章を作成する。
「地球防衛企業ダイガード」と「無限のリヴァイアス」が面白い。今後の展開に興味があります。馬鹿にしているわけではありません、極論すれば。
シェアウェアとかのレジストコードが記載されたメールをいただく。
普通ならそのまま捨てるのだが、その中の一覧に「メモリ最適化ツール」というのがあって吹き出してしまった。
これってあのメモリ最適化ツールなんだろうか。
ドラッグ&ドロップの件。DROPSTRUCTというのをshjobj.hに見つけたので、ITEMIDLISTではなくてこちらを取得するようにしてみる。
こちらだと内部構造は簡単なのでさくっと渡すためのデータも構築できそう。
さて、これをどうやってドロップ先に伝えればいいのだろう。
マウスを使わないでドロップできないかとか企んでいるので、ユーザマウス操作を強要するDoDragDrop()以外の手段が欲しいところ。
ドロップされた時に渡ってくるのはITEMIDLISTではないかと思いつく。
というわけでSHGetPathFromIDList()を使って変換してみる。なんとなく良さそうな感じ。
ところで、逆の変換はどうしたらいいのだろう。最終的にはドロップされるだけじゃなくて、ドロップする方もサポートしたいわけで、そうなるとITEMIDLISTを取得する必要があるのではないかと。
DFでマウスが使えるようになったのでドラッグ&ドロップを実装してみようと思って、試しにコーディングしてみる。
DFはC++ではなくてCで書いてあるので、OLE2のアレもC++を使わずにCで、つまり構造体で書いて、コンストラクタとか仮想関数テーブルとかもコンパイラに任せないで書く。
要はIDropTarget型の構造体を作り、メンバ関数に相当するものを作り、関数ポインタがソレを指すように初期化するだけだ。単純なだけで面倒な作業である。こんなことは機械がやるべき…ってそのためのC++だったりするわけだが。
で、OleInitialize()でOLEを初期化してRegisterDragDrop()を呼び出すだけ。
無事にドロップに対応できるようになった。
しかし、ドロップされたデータが一体なんなのか解らない。
とりあえず、DFでマウスを使えるようにしてみた。いや、今までの
何処でもドラッグしてウインドウを動かせる
という「マウスが使える」というのではなくて、クリックするとカーソルを移動できるとか。
要は今まではメモリがもったいないのでそれぞれのカラム幅を記憶していなかったという。Explorer(というか、ListViewコントロール)と違ってDFだとカラム幅が不定なので単純にクリック位置からカーソル位置を割り出せないので、カラム幅を記憶していないとどのファイルをクリックしたのかさっぱりわからない。
そういえばDFを@niftyのライブラリで公開しようとか思った矢先に機能を追加してしまってなかなか機能が固まらない。
このペースではいつまでたっても終わらない気がしてきた。
先日購入したPILOTのneox ENO、好み的には柔らかすぎる。というか、定着が甘いので紙が汚れる。2Bを購入したのは間違いだったかもしれない。他には特に不満が無い。
こんこん問題とかいうのがWindowsにあることが発覚。デバイス名の下のディレクトリにアクセスしようとするとコケ落ちるというもの。プロンプトでcd con\con とかやると一撃で死ぬ。プロンプトならまだ仮想マシンが別だから、その仮想マシンだけが死ぬだけで助かるかもしれないが、GUI上だとあっさり死ぬ。
という話。面白そうなのでDFでC:\con\conに移動しようとしてみた。
こんなのが出てきて残念な思いをする。
IEとかWinFDでやってみると一撃で死んでリブートするハメになった。