うわあ、月末だよ。
テキストビューア、ウィンドウのサイズを変えると、広がった部分が透明になってしまっているバグを修正。
掲示板で指摘された、カーソルキーでスクロールさせると背景色がウィンドウの背景色、、テキストが黒で表示されてしまうバグを修正。
ウィンドウを最大化しても、システムメニューの項目の「元のサイズに戻す」が有効にならないという現象の原因が解らなくてハマる。なんか変な処理してたっけ。
WM_SYSCOMMANDをシステムに渡していないのか、と思ったらこのメッセージはハンドルしていないので問題ない。ポップアップウィンドウにしたのがマズかったのか? …関係ないらしい。うーん、うーん。
フレッシュネスバーガーまでスープを飲みにいく。
トマトスープ、結構うまい。このニンニクのコゲた香りが…ってコゲちゃマズいんじゃ? うまいからいいけど。
もう一つはピーナッツのスープ。うーん。好みが別れるところかもしれません。
ハロウィンだからか、チョコレートとかクッキーがおまけについてきた。
今さらですがgooの辞典、イカス。発音まで再現してくれるなんてステキ過ぎますぅ♪
スクロールが遅いテキストビューア、BitBlt()でスクロールさせて、描画しなおすのは一行だけにしてみる。おお、速い速い。ウィンドウが小さければ。
という訳で、これで一応アップロードしておこうかと思ったら、「ウィンドウの上に何かが重なっている時」にスクロールするとソレもスクロールするというか残骸が付いてきてしまう。という訳でもう少し頑張る。今のところ実行ファイルは82KB(83.968バイト)。まだ足りない処理とかがあるので85KB程度になるかも。
ウィンドウの前後関係を画像ビューアウィンドウと統合しようとして、画像ビューアのソースを読んでいたら、理解できない部分がある。どう見ても、ウィンドウの前後関係のリストを作っているところなのだが、なんでリストを作らないといけないのだ? この時の私は一体何を考えていたのでしょうか。コメントにもナニをするのか、処理結果としてはどうなる、ということまでは書いてあるものの、なんでこの処理が必要かというところまでは書いていない。なんでこの処理がいるんだっけ。
メールの整理をする。ダメ人間から届いているメールがおもしろすぎてかなりダメだ。紹介できないのが悔しいくらい。
あ、思い出した。複数のファイルを選択して表示した時、表示途中で親となる予定のウィンドウが破棄されてしまった時の対策だ。
というわけで、こんなことしなくてもいいように修正。リストの先頭要素さえ判ればリストをたどっていけるのだから問題ない。
では実験。あれー、うまく動かない。閉じる時に自分の次のウィンドウをアクティブにしていって、自分が最後のウィンドウだったら、メインウィンドウをアクティブにするという動作のハズがメインウィンドウをアクティブにできない。
画像ビューアはうまく動く。うーん。
デバッガで動かす。あ、GetParent()がNULL返してきやがる。うーん。画像ビューアのウィンドウだとちゃんとメインウィンドウのハンドルを返してくる。何が違う? ってウィンドウスタイルが違うわけだけど、コレが原因?
というわけでWS_OVERLAPPEDWINDOWからWS_POPUPに変更。
あ、動いた動いた。ってコレだとサイズ変更とかできないんだってば。WS_THICKFRAMEとか付ければいいのかな。
はっ、WS_POPUPってWS_CHILDとは同時に指定できないとは書いてあるけど、WS_OVERLAPPEDについては何も記述されていない。
ポップアップウィンドウでありながらオーバラップウィンドウでもあるウィンドウってありなのか?
「ありかもよ。(アスパラ魔神の声で)」
ってことでトライ。おお、GetParent()がハンドル返してきた。
コレでおおむねOk、てことか。今までずっとポップアップウィンドウとオーバラップウィンドウって排他指定なんだと思いこんでいた。
CreateWindow()の説明では
とあるが、ポップアップウィンドウでなければ親ウィンドウの指定はシカトされる、とは意外な盲点。てっきり指定しないとダメなのかと思ったぞ。
割とサンプルに見かける、GetDesktopWindow()を親ウィンドウに指定するというやつは思いっきり無駄なことになるのか。知らなかった。
なぜか無性にちーぷなハンバーガーを食べたくなったのでマクドナルドにいってチーズバーガーを食べようと画策する。が、諸々の都合によりドムドムのチーズバーガーに変更。
レシートの日本語が変というかありがとうごさ”います
ってのはちょっち。
ドーナツ食う。いつの間にやら10点たまったのでスケジュールン2001をゲットする。
ツクモにH"のカードがつきささったFIVA102があったのでリリアンのHPを表示させて逃げてきた。
64Kbpsのハズなのに、結構遅い。上流のネットワークが遅いのかもしれない。接続までの経路は調べなかったのでよくわからない。
バガボンドの8巻と椎名へきる様のシングルを買う。
ドトールに寄ってコーヒー飲みながらバガボンドを読む。
そういえばバカボンシステム、笑いました。日本語が変というかアレですが、面倒だしシャレだから文句は言いません。
もっともシャレだからこそとことんヤルというやり方もステキですが、そのあたりは個人の自由です。
狸小路のラルズでおもちゃの在庫処分市っぽいアレがあり、リリアンが1,500円くらいで売られていた。ナチュラルボディでないやつ。安いので思わず買いそうになる。
世代交代というか、AGISの新メンバーが発売されたので、もしかしたらこれは
リリアン時代の終焉
なのではないかと不安になる。
長崎屋に寄ってみるとリリアンの姿はかなり少ない。プリティブライドが残っているだけ。うちにリリアンは
二人しかいない
ので、買い占めてしまおうかとか一瞬考えてしまう。
ラルズでは手乗りアラレちゃんも売られていたけど、この眼鏡はリリアンには大きすぎるだろうか。眼鏡のためにアラレちゃんを買うというのもどうかとは思うが。
いまだにレイアースのおもちゃもあったので人形は残っていないか探してみる。やはり残っていないようだ。っていうか、アレって5年以上前の商品なのでは。
27日の日記の記述に対してメールと掲示板に反応がありました。
何というか、ここまで愛される読者というか支持者を得られるというのはK仲川さんもライター冥利に尽きるのではないでしょうか。
私だったらうれしいかというと、そういう物でもないけど。
そういえば、「ごじだつじあり。めんごめんご。」と訂正が入っていますが、他の脱字は訂正されないのでしょうか。あと、もう少し漢字を使っていただけると読みやすいです。あ、漢字を使うと自分で墓穴ほると警戒してわざとかかなかった
のかも。どういう墓穴か判りませんが。
読解力には自信があるわけではないけど、どう考えても「強引な解決策」というのは解決策以外のものには解釈できない。強引なだけで。
テキストビューアを付けたDF、気がついたらサイズが80KBを超えてしまった。スクロール部分を強引な解決策で解決したのがマズかったか。外すか?
とりあえず書いた5KB程度のコードなら3KB程度まで小さくできるけど、とりあえず書いた10KBのコードはそれほど小さくできないからなあ。
あきらかな間違いや読者をミスリードさせそうな記述が数ケ所、斜め読みしただけで簡単に見つかった
とか自分の思い込みですませず、きちんと文献でウラをとる
とか、自分の推測であるところは、はっきり推測と断る書き方をする
とかってこれらは基本
なんじゃないですか?
私、あなたに質問したらあきれるような回答
をいただいてしまいましたが。
なにしろCマガで強引な解決策
と書いておきながら、実は解決になっちゃいないどころか「ちっとも解決になっていない」ということを伝えられる
というのだからあきれ果てるしかない。強引だろうとなんだろうと解決策というのならそれは解決策であって、解決になっていない解決策というのはどう考えてもあきらかな間違いや読者をミスリードさせそうな記述
です。
DFのテキストビューア。一応、スクロール機能を付ける。効率がいい方法が思いつかなかったのでとりあえず無理やりコーディングして動くようにしておく。上に戻るのが遅い〜。
いや、遅いのは描画というか、文字列の幅を計算する部分なんで、そこを省略してしまえばいいんだけど。プロボーショナルフォントを使った時のことを考えると、描画してみないと文字の幅が判らないモノで。64Kくらいのテーブル作れば速くなるかも。
DFのテキストビューア、ウィンドウ幅に合わせて折り返して表示するようにする。
スクロールさせるのが面倒。
上に戻る処理ってなんか定石みたいのは無いのだろうか。行頭から探していくしか思いつかない。PageUpとかだと面倒で仕方がない。
何が面倒って、CRLFからCRLFまでの論理的一行の文字列が、ウィンドウに表示した時には何行分になるのかというのが解らないから。
長崎屋にジェニーのスクールパック(?)みたいなのがあった。制服とかiBook風ノートパソコンとかのセット。ジェニー付属。あ、逆か。
Razor風キックスケートが付属している辺りがスゴイ。ノートパソコンは無理やり学校の授業に使いそうな気もするけど、キックスケートは何に使うのだ? っていうか体操服は付属してないみたい。がっくし。
最近、日記の更新チェックをWWWDに任せていたら過ぎ行く今は星の瞬きと裏夜食日記の部屋(今月はひつまぶし日記)の更新を見逃していた。
ところでバカボンシステムはどんどん文字列を結合して、「賛成の反対に賛成しますか?」というようにしたほうが良いと思う。
DFにテキストビューアを付けてみる。以前実装した時には5KBくらいサイズが大きくなった上にバグが取れなくて結局外してしまったけど、今日作りなおしたら1KBくらいで済んだ。
まだTabコードの処理とか何もしてないけど。そのせいかバイナリファイルを表示させるとGDIが例外出して死ぬかもしれない。
文字コードの変換というか、7bitJISとかも表示できるようにしたいけど、そうなると読み込みバッファの他にもう一つ変換結果を保持するバッファが必要になりそう。バッファを二つ持つのはもったいない気がしてイヤ。読み込んだら逐次変換していくようにすれば変換結果を保持するバッファは要らなくなるけど、文字コードの切りかえ時にもう一度読み直さないとダメか。ソレもイヤだ。
だりー。
今割り当たっている作業(仕事とはとても言えない)、書かれているプログラムが書いた通りに動いているかをテストする。そんなもの、書いた通りに動いているに決まっている。
ったく、何考えてるんだか。せめて、外部仕様書というか、どういう条件の時にどういう動作をする、という仕様書というか、どういう動作をするのが正しいのか、というくらいの資料くらいよこしなさい。どうせなら正しく動作していることも確認したほうがいいでしょう。
歯医者いく。麻酔が効いてるせいか眠い。
バースデイ読了。
昨日買ってきたボークスのエクセレントベースモデルを開封。
リリアンの頭を付けてみる。なんかジャストフィットしまくってて動かす余裕がないんですけど。首をかしげたりする仕草ができない。うーん。
ヒジの関節、エクセレントミニとは違って、軸が無いのね。今使っているニニーと変わりないじゃん。
ヒザは軸が回転するのでぺたんと座ることができる。でも、回転するのはひざのすぐ上なのね。股関節じゃないのかー。旧エクセレントがそうだったのは知ってたけど、新型で改良してたらいいなあとちょっと期待していた物で。
腰と腹の結合部、動きそうで動かないのですが、これってこういう物? 別パーツになっているので動く物と思っていましたが。これだったら同じパーツで成型されているモデルのほうが見栄えがいいのでそちらにしておけばよかった。てっきりひねれるとか、なんか動作するのだと。
つやが無いのは撮影時フラッシュ使った時にも反射しなくていいかもしれない。フラッシュ使わずに撮影するのでいいけど。
全体的に仕上げがいまいち。完成品を望んではいけないのかもしれない。でも、パーツの接着面に隙間があったり接着剤がはみ出ていたり、バリが残っているというのはどうかなあ。パテで埋めて塗装しなおせって? ソレだったらキットで販売してくれた方が助かるというか。
このくらいの品質管理って無理かなあ。何というか、ガンプラ組み立てるよりもヘタクソというか、樹脂ケチってんじゃないの?
この辺、画像も付けて紹介したほうがいいですか?
ちょっとイマイチな感じがぬぐえないので、エクセレントボディはお蔵入り。まあ、タカラのナチュラルボディが二つあるからこだわらない。27cmに合わせてイスを買ってきたんだけどなあ。このイス、ニニーだとちょっと大きい。うーん、うーん。
眼鏡の加工は延期。気分が乗らない。
某所でAERAの記事が話題になっていたので読む。最近のオタクはモノを造らなくなった、消費するばかりだ、というのは2年くらい前から口に出して言っていたし、8月にタコ焼魚さんにも同じようなことを言っていたのだが、とうとうマスメディアでも(といってもAERA)言われるようになったか。よほどこの分野の人材部即は深刻なようだ。いや、この分野で人材が豊富な状態というのもそれはそれでイヤな感じが。
なんというか、すそ野が広がってしまったために、生産者と消費者が分離してしまったようだ。以前は生産者=消費者という感じであからさまに「自分のために作る」という感じで作っていた。当然、自分のために作っているのだから手は抜けない。自分が納得できる高みにまで作り込んでいくわけだ。
これが生産者≠消費者になってしまったため、作る方も納得できなくても売れればいいやという程度で妥協するようになってしまったのではないだろうか。もしくは、作りたくないのに作ってしまうというか。
もう少し、作る理由というものを考え直したほうがいいのではないかという気がする。そもそも売るために作る、というのであればよっぽどマクドナルドでバイトした方が手っ取り早いと思うし仕事しろ仕事、というか。
某所の管理人はやはりオタクがキライという感じがする。というか、オタクを見下すことによって自分の優位性を確認しようとしているというか。
自分で作ったモノをまじまじと見て不気味に思わんのかなぁ?
断言します。思いません。
後から上達した時になって初めて判断できるようになります。判っていれば直せるのですが、解らないので直せないのです。
久しぶりにHPを引っ張り出してトリガーを引いてみる。重い…。前は両手でトリガーを引けば撃てたけど、もうダメだ。これ、何kgあるんだ?
EASY御大(病めるザク磨き)に勧められるまま、メタルプライマーと定着剤、塗料を購入しにいく。
途中で気が向いたのでおもちゃ屋のハローマックに立ち寄る。
はづきちゃん発見! せっかくだから保護。1200円(税抜き)。いやー長崎屋では品切れだったんだよねー。
ついでに向かいにあるおもちゃ屋にも寄る。
はづきちゃん発見! 1088円(税抜き)! しまった…。
さくらのフリーポーズコレクションの制服版が欲しかったんだけど、どちらの店にもなし。がっくし。
で寄り道はいいとして、ポストホビーにいく。
うーん、いい感じのものは無いなあ。つやありの塗料ばかりだし。まあ、つやなんて仕上げ剤で消せるからいいのかもしれないけど、こういう着色は素人なのであまり手間がかかることはしたくない。
セントラルホビーにいく。こっちのほうが物は豊富なので。
入ったら店員に「あら久しぶり」とか言われてビビる。誰かと勘違いしてませんか? 私、先週も来てますし。っていうか、あなた、誰?
とりあえずお勧め通り、メタルプライマーとスーパークリア(定着剤)を購入。
塗料はスプレーでいい色が見つからなかったのでアクリル塗料にする。不安なので薄め液も購入。どうも不透明絵の具って相性が悪くて…。
せっかくだから、ボークスの素体、NewExcelentBodyを購入。もちろんB type。
あと100円ショップダイソーで、リリアン用のいすと、撮影時の背景用としてコルクボードを購入。
バースディの文庫を購入。発売されたのはかなり前だったけど、ループを読んでから買おうと決めていたので。
勢いに流されて、タイトルを変更する。HPと言えば当然、FNHP(ブローニングハイパワー)である。
持っているのはタナカのHPなんだけど、同時期に出たGLOCKと競合してしまっていまいち話題にならなかった悲運のモデル。私が持っているHPfはMkIII初期型。軍用は持ってない。軍用のタンジェントサイトとかって抜く時には邪魔だし。そもそもサイトなんか見なくても20m程度なら当たるくらいの性能があるのでまったく問題ない。
射撃性能とか、取り回しの良さなんかはシングルアクションのHPの方が格段にいいと思うのだけど、やっぱり古いモデルだからかあまり注目されなかったらしい。
今度、タナカからはHPの新型(多分、MkIII最終型)が出るのでそちらに期待。
何しろ、カスタマイズできるほどのパーツが発売されなかったからなあ。今でもバレルとかチェンバーは交換したいぞ。
トリガープルとか撃ちやすさだけならMGCのCz75の方が格段にいいんだけど、あれは下に撃てないというインドア戦では致命的な欠陥があるので使えない。下に向けてるとトリガーを引いてもシアーが空回ってハンマーが落ちないのだ。ダブルアクションのトリガーなのでハンマーをコックしてシングルアクションで撃つ時にはすごく滑らかに撃てていいんだけど。メーカーがMGCだけにオプションパーツも多かったし。難点はさっき書いた下に撃てない、ということとストライカーが軟弱で壊れやすいというところ。Cz75は5丁買ったけど全部ストライカー部分が壊れた。射撃大会では無敵に近いけど、コンバットシュートではいつ壊れるか不安でたまらない。
仕方がないので、大会ではCz75を使うのはあきらめてSIG226を使うようにしてたんだけど、SIGはどうしても私の手には大きすぎて。初弾はダブルアクション、というのもいただけない。二発目からのトリガートリップが変わってしまうのでいまいちタイミングがつかめなくなる。安定して撃つには動作が安定していないと。GLOCKみたいな最初から最後までダブルアクションか、ガバメントとかHPのようにシングルアクションか。
といってもGLOCKのトリガーってシアーが外れるタイミングがピンとこないので(MGCのは特に)シングルアクション系に走ってしまった。
タナカのHPを撃ってて思うけど、この精度でCz75を製品化してくれないモノか。Cz75BでもCz85でもいいんだけど。
でもウェスタンアームズには期待してません。
なにげにO.S.RのRandomを押してここを見てたらOSごとフリーズ。
DELLのOptiPlex GXaでDFがコケる件。問い合わせてみようと思ってメールを書く。
御社製PC OptiPlex GXaについて
フリーソフトウェア開発を行っている物です。
御社製PC OptiPlex GXa(PentiumII搭載、OS: Windows 95 OSR2)において、自作のプログラムを動作させたところ、プログラムがハングアップしてしまうという現象が発生しました。
御社製PC OptiPlex GX1(PentiumIII搭載、 OS:Windows 98)ではハングアップせずに動作しました。
また、EPSON製PC VR5166(Windows 95a)でも動作することを確認しました。OSR2固有の問題かと思いまして、東芝製 Libretto SS 1000とLibretto 60にて動作させたところ、こちらでも動作しました。
このような、機種固有の問題と思われる現象が発生している場合、どちらの窓口に問い合わせるのがよろしいのでしょうか。
テスト環境一覧
メーカー 機種 OS 動作結果 DELL OptiPlex GXa Windows 95 OSR2 動作せず DELL OptiPlex GX1 Windows 98 ○ EPSON VD516SR Windows 95 ○ NEC MATE NX MA60T Windows 98 ○ NEC MATE NX MA60T Windows NT4.0sp6 ○ NEC MATE NX MA60T Windows NT4.0sp3 ○ NEC MATE NX MA20 Windows NT4.0sp4 ○ 東芝 Libretto SS Windows 95 OSR2 ○ 東芝 Libretto 60 Windows 95 OSR2 ○ カシオ CASSIOPEIA FIVA 101 Windows 98 ○ 自作 自作 Windows 95 ○ 自作 自作 Windows 95 OSR2 ○
ハングアップするプログラムはマルチスレッドで動作するプログラムでCでコーディングしています。
メインスレッドでは、
HANDLE hEv; HANDLE hThread; hEv=CreateEvent(); hThread=CreateThread(SubThread);/* スレッド生成 */ WaitForSingleObject(hEv);/* 待機 */ CloseHandle(hEv);
このように、イベントを生成しておいてから、スレッドを起動し、排他制御の都合上、イベントシグナルが上がるまで待機状態にしています。
生成されるスレッドのほうでは
DWORD SubThread(VOID *p){ CreateWindow();/* API呼出、ウィンドウ生成 */ SetEvent(hEv);/* メインスレッド再開 */ }
という感じで、ウィンドウを生成してからイベントシグナルを上げることでメインスレッドの待機状態を解除します。
しかし、御社製 OptiPlexGXaで動かした時のみ、CreateWindow()APIの呼び出しから復帰せず、ハングアップしてしまいます。
CreateWindow()APIの引数に WS_VISIBLE (生成時、自動的に表示する)を指定した時にハングアップすることが判っています。
引数に WS_VISIBLE を指定しなければOptiPlex GXaでも動作することを確認しま した。
御社製PCに搭載されているWindowsは、御社独自のカスタマイズバージョンなのでしょうか。それともディスプレイドライバなどのドライバの問題なのでしょうか。
さあ、書いたぜっというわけでDELLのページを見てみると、問い合わせ先のメールアドレスが見つからないのでがっかりする。
雪降る。
撮影時には見えなかったのだが、謎の発光物体まで撮影できてしまった。
すべり台から滑り落ちた雪。
昨日DFがトラブったDELL OptiPlex GXaのOSバージョンを調べる。ビルド番号は1212。kernel32.dllのバージョンは1212なのにuser32.dllは950。コレでいいんだっけ?
Windows 98ではWM_SYNCPAINTが送られてこない。送られてくることもあるけど。実行ファイルを普通に実行するとWM_SYNCPAINTは送られてこないのだけど、Visual C++の統合環境から実行すると送られてくる。
送られてくるメッセージのログを比較したところ、WM_SYNCPAINT以外は特に変化が無い。さらに、サブウィンドウを開いた時には送られてこない。DELLのPCとは全然挙動が違う。
DELLの方では、メインウィンドウを生成した時にはWM_SYNCPAINTはこないが、サブウィンドウを生成した時には届く。
ログを比較してみると、IME関連のメッセージが届くタイミングが違う。でもこれは関係ない。もう一つ、WM_QUERYNEWPALLETEが届いている。ディスプレイモードは16bppなのに、なんでパレット関連のメッセージが届くのか。
もう一度ログをとったら、前回ハングアップしたタイミングの後に0x311が届いている。WM_PALETTECHANGED。なんでパレットが? ディスプレイドライバがおかしいのか?
ついでにWinodws 95a(OSR1)でも調査。WM_SYNCPAINTがきた。あれ?
こちらはWindows 98と同じように、メインウィンドウ生成時にはくるけど、サブウィンドウ生成時にはこないというパターン。なんでDELLのOSR2だけ挙動が違うのだろう。ATI 3DRAGE PROのドライバのせい?
とりあえず直接連絡がつくDFユーザに頼んで、二画面モードが動いていることを確認してもらい、機種名とOS名を教えてもらう。
Windows 95 OSR2が動作しているDellのPCでDFの二画面モードを使おうとするとハングアップする、というバクを発見。調査する。
どうもウィンドウ生成時に送られてくるWM_SYNCPAINTというメッセージが問題らしい。
ナニをするメッセージなのか調べてみると、ウィンドウが表示されたり隠れたり移動した時にシステムが生成してトップレベルウィンドウに対して送信するらしい。アプリケーションは、それをそのままシステムに引き渡さなければならないとのこと。すると、システムは再描画のための一連のメッセージを生成してウィンドウの再描画を促すようだ。
で、このメッセージはWindows 98から定義されたとある。しかし、Windows 98では別に問題になっていないのだ。Windows 95OSR2だけがハングアップする。
OSR2って、中身はWindows 97だというような話は出ていたけど(Windows 97は発売延期になって98に名前が変わってしまった)、どっちかというとWindows 98がOSR2のバグフィクス版なんじゃないだろうかという気がしてきた。
で、動作ログを取りながら動かしてみるとメッセージをシステムに引き渡すところまでは動いている。その後ドコかで停止するらしい。
二画面モードに切り替わる時、メインウィンドウはサブウィンドウを生成する処理が完了するまで停止しているのだけど、サブウィンドウを生成する段階でWM_SYNCPAINTが発生、コレをメインウィンドウが処理するまで待機状態に入るのだろう。しかしメインウィンドウはサブウィンドウの処理が終わるまで待機状態になっているのでデッドロックする、というシナリオではないだろうか。
Windows 98では、WM_SYNCPAINTを生成しても待機状態にならないようにしてあるのだと思う。
ウィンドウを表示するタイミングをずらすことで解決する。
帰宅後、Libretto SSのOSR2で検証。再現しない。なんでやー。
ってよく考えて見たら、今までずっとこのLibretto SSでDFを使っていたのだから、そんなバグがあったら気付いているハズである。あのDellのPCに入っているOSR2って何か変なのか?
眠い〜。
昨日撮った写真の処理をしていなかったので、今日やった。
思わず「チンカを許すな」と読んでしまって意味が解らなくて3秒ロス。
気を取り直して歩いていくと、
こんなものが。一体どうやって落としたのか謎である。
その後、Windows 2000をインストール。死ぬ。
コピー中、CD-ROMドライブが読み取りエラーを出して死ぬ。このドライブも寿命か。前から時々止まってたもんなあ。そのためのPDドライブだったりもするんだけど。
なんとかリトライを繰り返してファイルのコピー完了。リブート。fastfat.sysが例外エラーを出して死ぬ。
二進も三進も行かない。
これはPCを新しく買えということだろうか。
財政的には無理だけど。魔法のカードを使えば「物が先、金は後」という状態に持ち込めるのでいけることはイケる。しかし、こんなことで行っていいのだろうか。
時期的には年末商戦まで待ったほうがいいかもしれない。
クロック数は400MHz程度あればいいので、FSBは100MHz以上(133MHzでもいいけどあまりこだわらない。でも66MHzはイヤ)という感じで5万円くらいのPCありませんか。Windows 98インストールモデル希望。Windows 2000はアップグレードなので。
外出。途中、セントラルホビーへの行き方が解らない家族御一行様がいらっしゃったので案内する。せっかくだから塗料とか工具を見物。
メールで教えていただいたコート剤とかメタルプライマーを発見。スプレーのほうが楽かなあ。値段は倍違うけど。
いろいろ考えていて、フレームは当然つや消しコートで仕上げる。で、レンズ。こっちは当然つやありコートで仕上げる訳だけど、つやありコートを噴くと、フレームにもかかってしまうのでは? マスクしないとダメか。ってあの大きさの眼鏡をマスクするのは一仕事っていうかちょっとやそっと出はできないぞきっと。
待ちに待った体操服ゲット。緑はイヤだったので買わなかったのだ。残りは紺と赤の二種類なんだけどさあどっちにするか、現物を目の前にしてかなり悩む。
ということで、どうやら人気商品の紺色を確保しておく。
また気が向いたら赤いのも買うかも。リリアンも二人いることだし。
せっかくだからスクール水着もゲット。横に白ラインが2本入っている。
先週買った衣装もまだ着せていないのだけど。
へきへきのアルバム見つからない〜。っていうか発売予定表からも見つからないぞ。
このままではタイトルを変更するきっかけが見つからないではないか。
今までのタイトル遍歴。
ドトールでショコラムースとコーヒー。
Free BSDマガジンを買ってしまおうか迷っている。RELEASE 4ならもしかしたら…という期待が捨て切れない。っていうかそもそもインストールの仕方が判っていないのだから、インストール解説書を買うのが先だとは判っているのだが、インストール解説書なんてインストールが終わってしまえば不要になるのでいまいち踏み切れないのだ。
だらだらする。おかげで予定は全然消化できず。
デスクトップにとりあえずWindows 95を突っ込む。
その後FreeBSDと格闘してみたら、起動しなくなる。Windows 98の起動ディスクからシステム転送かけてみたところ、バージョンが違うということでWindows 95は起動せず。Windows 95の起動ディスクが必要らしい。
さて、どうやって作ろう。
インデックスがごちゃついているのは何とかならないのだろうか。
一目で何があるか把握できるようにしたい物だけど、文字を小さくするのはイヤだし、段組みを実現するためだけにTABLE使うのもイヤだし。
っていうか、ひと目で把握できる程度にまで物を減らせばいいのだけどなかなか捨てられない辺りが貧乏性かもしれない。
ごちゃついているのは、見出しの他にもコメントを書いているからだと思うけど、コメントを書かないと何がなんだか解らないのではないかというか、そもそも見出しが内容を表していないのが敗因か?
確かに「フジヤマッチョ。」というのでは何がなんだか解らなさ過ぎる。
DFの登録コマンドに、反対側のウィンドウで表示しているパスに展開するマクロを追加仕様としてハマる。
8.3形式のDOSファイル名と検索モード状態のアレが絡み合って異様にややこしい。毎回DSファイル名を調べてしまう、という手もあるけどCPUタイムとメモリがもったいないので必要になるまで遅延させたい感じ。
急に仕事が忙しくなる。っていうか作業量が増えた。どうしてくれよう。
眼鏡の着色についてメールでご指導いただく。
何しろ金属の表面処理なんていうのはモデルガンのブルーフィニッシュとか、マットブラック処理とか、あの手の磨き上げまくるヤツしか知らないので。
ちなみにブルーフィニッシュかけようと思ったHPがあるのですが、磨く時に失敗してエッジが取れてしまったのでそのままお蔵入りしているのがあったりして。お蔵入りにしていたらドコかいかれたらしくてトリガープルが20kgあるんじゃないかというくらいに重くなってて撃てない。
ちなみに、ふつーのダブルアクションで5kgくらい。軽くて2kg。シングルアクションだと2kgくらいしか無いのが普通。HPはシングルアクションなんだが…。
で、眼鏡。セロハンテープでレンズを作るというのは思いついていたものの、接着面の処理をどうするかで悩んだので挫折。
先程のメールで透明コート剤をかければOk、という話をうかがってしまい俄然やる気が出てくる。
以前、日記からタカラにリンクを張る時、ネットワークにつながっていなかったので適当にこっちに張っておいたら全然違ってて大笑いしたことがある。ちなみに本物はこっち。
で、タカラのページ、ちょっち前には工事中だったのだけど、リリアンを購入してから言ってみたらカウンターが00001だったりしてビビった。
三日後くらいにってみたら既に30万くらいになってて、さすがは企業のページである。宣伝の仕方が違うんだろうな。
次元の話で盛り上がる。一人で。
いや、次元大介ではなくて。
元々は「小説は1次元」というのが引っかかりまくって、なおかつ「マンガは1次元か2次元か」というネタ振りがなされていたのがきっかけ。
マンガが一次元だったりすると、元の人は次元というものをどう捉えているのか理解に苦しんでしまう。特にマンガとアニメとで判断が違う辺り。
とりあえず、「それでは小説の挿絵は1.414次元なのか」とか書いてしまう。
本職のオタク文化研究家に対してこのままどこまで引っ張れるかと思っていたら、どうも愛想を尽かされてしまったのでこちらで独自に展開することにする。
オタク文化研究家氏の解釈では「架空=2D、現実=3D」で゛「一応モニター上のも二次元」ということになる。
しかし、しかしだ。
モニタ上に映る画像と網膜上に映る画像とで、何か差があるのか。むしろ、同じように扱うべきではないのか。
そもそも、架空か現実かというのが、次元数になにか関係するのか。
モニタ上に映る画像が、網膜上に映る画像と何か違うとしたら、それはモニタの枠が意識されるかどうかではないか。つまり、枠によって現実との境目を認識できているのではないか。
最近流行のヘッドマウントディスプレイを用いるとこの問題は解決してしまう。いや、問題ではないけど。
VirtualBoyでアレしている場合、認識できる風景はVirtualBoyで映し出されているソレであり、他のものは見えない。生まれた時からああいう物でナニしていたなら、VirtualBoyによって映し出されるアレが現実であると認識されるのではないだろうか。
つまり、この場合、VirtualBoyはモニタでありながらもソコには現実と認識されてしまうものを作り出せてしまう。我々にとっては架空の空間でありながらも、VirtualBoyerにとっては、それは現実になりえてしまうのである。
あっさりと二次元だと断定されてしまったVirtuaFighterやDOAだが、あれはどう見ても三次元である。あのシステム内で構成されている世界ではちゃんとx軸y軸z軸あるからだ。見た目でどうこういうのではなくて、システムとして軸がいくつあるか、架空か現実かではなくて、座標系がどうなっているのかが二次元と三次元の分かれ目である。
スト2は? あれは二次元。キャラクターの座標軸はxとyの二つしかない。背景がいくつも重なってて奥行きがあるようにみえるが、あれは複数の二次元空間が重なっているだけ。
ピットファイターも二次元。確かにキャラクターは実写取り込なので、アイドル写真集と同じ扱いかもしれないが、システム的には二次元。
見た目では次元数を判断できない。
何しろ人間の網膜は面でしかないのだから、見えている内容はどうあがいても二次元にしか過ぎないのだ。網膜に映るのは、三次元空間を微分して二次元にした画像である。ソレを立体的に解釈しているのは脳の仕事である。つまり、脳がどう解釈するかによって二次元か三次元かが決定される。
理屈じゃない、体で、魂で感じろっ!
風邪引いた。
で、FreeBSDリベンジ。
今度はrootイメージが展開できないとか言われてハマる。
昨日はここでフロッピー入れてくれ、と言われたのだが…。
とりあえず外出。
ビクトリアで野菜食べまくり大会。
以前行った時にはコーヒーマシンが壊れかけていたのが、今回は快調に動作する。なんか味もよくなっている。修理したのか?
喫煙席にいるオバちゃんがおもしろい。煙草を吸って、煙を吐いたあと、その煙を自分で仰いで向かいに座っているオバちゃんに送り込んでいる。
自分の煙は良くても他人の煙はキライ、という喫煙者がいるという話は訊いたことがあったが、自分の煙もキライ、というのは初めてみた。
そんなに煙がイヤなら吸うなよ。
で、FreeBSDリベンジ。
とりあえず訳がわからないままboot.flpを落として起動する。
CD-ROMドライブ認識せず。んがー。
bootの代わりにatapi.flpにしてみる。ダメ。んがー。
ep0として3ComのISA NICを認識しているのでこのままftpインストール…とか考えたけど電話代が恐いのでやめ。
DOSパーティションからインストールするしかないか。でもCD-ROMの中にあるうち、なにが必要なんだろう。dists/binだけコピーしてとりあえずトライ。
あ、拡張パーティションだとダメなのね。fdiskしてリトライ。
なんとかインストール完了。
でも最低限過ぎて何もできない。loginしてhaltできるだけ。NICの設定ができればRT50i経由でドコにでもつながるハズなんだけど、何をどうしたらいいのやら。
敗北決定。とりあえずなんかインストール本でも買ってこなきゃだめだろう。
ダイエーが優勝したのでダイエーに行く。
冬に備えてカーテンを増設するのだ。1万円ほどかかったが、それでも昨日買うよりははるかに安い。
デスクトップにインストールするためのWindows 2000を買う予定だったけど、カーテン買っちゃったりスーツ買っちゃったので来月に延期。
カーテンがめちゃくちゃ重いので疲れる。たまらず途中で喫茶店に入りアイスコーヒーとサンドイッチを頼んでしまう。
あまつさえその後にエスプレッソ。
アイスコーヒーはモカっぽかったが、なんとなくキリマンジャロが飲みたくなる。で、キリマンジャロを出してる喫茶店って近くにあったっけ。どーも思い出せない。
一度帰宅して荷物を置く。疲れたので外出する気力無し。
とりあえず死んでいるデスクトップ(Pentium 100MHz)のC:ドライブ(850MB)取り外す。で、D:ドライブとして使っていた1.6GBのディスクをC:ドライブとして接続。
で、今のところ使い道も無いのでFreeBSDでも突っ込もうとか思い立ったものの、CD-RoMはあるものの中が読めない。というか、起動できないのでCD-ROM自体読めない。
まずはDOSをインストールしてATAPIのナニでも突っ込むか…ってMS-DOSのセットアップディスク#1が見つからない。#2から#6までは揃っているのだが。がーん。
Windows 98の2枚組みのディスクだとCD-ROMドライブを認識したような記憶があるので試しに突っ込んでみる。
おー、見えた見えた。
で、FreeBSDのCD-ROMを突っ込んでマニュアルを…
中身がJISコードだから読めない。んがー。
夜中にちょっち調べることにしよう。
という訳で外出。
DDRで回る。ついでにdoubleでぷるうぇいと思ったらうかつにもVERSUSにしてしまいハマる。っていうかハマった。
長崎屋に言ったら、ジェニーとかリカちゃんなんかのナニがいろいろ入荷されていた。せっかくだから着替えを3点購入。
カップベンダでアイスコーヒーを買ってベンチに座って飲む。と、横でがさがさ音がしたので何かと思って見てみたらおっちゃんが納豆食ってる。
それだけでも驚いたのだが、横に4つほどパックが重なって置いてある。重なっているってことは空なんだろう。これも食ったのか?
驚いているうちに納豆を食べ終わったらしい。続いてリンゴを取り出した。
ナイフも取り出した。
そのまま皮むいて食ってるし。
いやあ、止めはしないが、店内で刃物を出すのはどうかと。
帰宅途中、本屋による。ループの文庫が出ていたので購入。
LiteStepを入れてみる。
Explorerに戻した。
いや、キーボードからだと使いにくいのよ。popupっていうんですか? あのスタートメニューもどき。なんか意図しないタイミングでサブメニューに入ってしまって困る。
あとSysTrayのアレ。VirusScanの常駐アプリのプロパティが開きまくってしまう。
別のモジュールに差し変えればいいのかもしれないけど探すのが面倒。なんか一覧というか、もう少し解りやすい構成にして欲しい。
あと、日本語で紹介しているページ。イキナリモジュール名とかで説明されても解らない。どれが何のモジュールなのか判ってないから。イキナリ「ロドリゲスの設定は〜」とか「ゴンザレスは〜だから」とか言われても困る。
そのあまりのインパクトの巨大さに思わずタイトルにしてしまった富士急ハイランドのCM「フジヤマッチョ。」
さすがにちょっちアレだなーと思ってきたのでそろそろタイトルを変えたいのだけど、何しろ「フジヤマッチョ。」を超えるインパクトを与える物なんてなかなか無いので変えるに変えられない。
なにしろ1年間オンエアするとのこと。ってことは春夏秋冬、365日続けてマッチョですか。
と新たなインパクトを受けてしまったために、ますますそのインパクトは強まってしまい、タイトルの座は不動のものとなってしまう。
知らなきゃ良かった。
で、思い立ったところで「フジヤマッチョ。」を検索してみる。
うわー、なんでこんなにヒットしますか。しかもビョーキ系とかおクスリ系の掲示板ばっかり。
なんか別の意味で変えたくなってきた。
誰かもっとインパクトを与えてくれぇ。
今月中にへきへきがアルバムを出すので買ったらそっちに変えようか。
DFの連続改名機能にバグ発見。んがー。
拡張子の無いファイルに対して *.TMP とかいう感じでリネームコマンドを発行するとファイル名の最後の一文字が消えてしまう。
12345だと1234.TMPという感じ。
とりあえず動くようにはしておく。最適化しなおし〜。
他人が書いたアセンブラのコードを読んでいるのだけど、かなり不可解。
cmp a, b
jnz label01;一致しない
jmp label02
label01;
;一致しない時の処理
jmp label03
label02;
;一致した時の処理
label03:
至る所こんな感じで書いてあったりするのですが、その比較の後のジャンプって何かメリットがあるのですか?
cmp a, b
jnz label01;一致しない
;一致した時の処理
;いろいろな処理
jmp label02
label01;
;一致しない時の処理
label02:
でいいじゃありませんか。
こんな書き方してると分岐予測か効かないんじゃないかと思ったけど、このMPUは4ラインのパイプラインで分岐予測は無いらしい。ほっ。
っていうか、分岐予測をしないでジャンプ命令の次の命令もどんどんパイプラインに入れてしまうという作りになっている。
分岐予測しないから分岐予測のミスによるペナルティは無いというだけで、ジャンプするとパイプラインは空になるのでやはり速度は落ちる。
結構、ストールしている時間が長いんじゃないか? このプログラム。ちなみにMPUがストールしてようがナニしてようがバッテリーは消費するのでよろしく。
もう一つ。それぞれの下位8ビットと上位8ビットを取り出して結合する処理。
定石としてはこんな感じ。
a &= 0xFF00;
b &= 0x00FF;
a |= b;
aの下位8ビットをクリアしてしまう、次にbの上位8ビットをクリア、そして結合。
それがこんな処理になっていた。
a |= 0x00FF;
b |= 0xFF00;
a &= b;
かなり理解に苦しんだ。クロック数の問題かと思ったけど、andもorも消費クロックは変わらない。
久しぶりに魔法を見た感じだ。なんか、(自称)念力でスプーンを曲げたところを目撃した感じ。その横で誰かさんがスプーンをひねっている。ひねって曲げる方が速い。
とうとうメモリが足りなくなったらしい。なんか、こっちのタスクが動く時にはあっちのタスクは止まっているからあっちのタスクのメモリを借りようとか、いろいろ小賢しいことをしている。
という訳で、グローバルに確保していた char buf[BUFSIZE]; という感じの変数を、char *buf; に変更してタスクの初期化時に buf=あっちのメモリアドレス;という感じであっちのメモリを借用する。
どこかのバカが、このbufの先頭アドレスを要求するところで &buf なんて書いたりするもんだからふっ飛びまくり。
たとえば
memcpy(&buf, tmp, sizof(tmp));
みたいな。
なんで char *を要求するところで char **を渡すわけ?
あまつさえ
memset((void*)&buf, 0, BUFSIZE);
なんてわざわざキャストしてまで突っ込んでいた時には笑った。というか笑うしかなかった。
コンパイラがエラーを出した、じゃあキャスト、ではなくてなんでエラーになるのか5秒くらい考えてくれ。
それよりもあっちこっちのタスクごとに自作されている謎のmemcpy()とかstrcpy()とかstrlen()とかその他諸々の関数、アレをまとめろ。この会社にはライブラリ担当者はいないのか。
キーカスタマイザの挙動がおかしいと掲示板で報告をいただいたので動作を見直してみる。
するとどうだ、既に割り当ててあるキーを再度割り当てると、リストに表示されている別のキーの部分が書き変わるではないか。
コレは一体どうしたことだと思ったら、リストボックスに対してソートするオプションがついていた。どうやら外すのを忘れたらしい。
このため、カスタマイザ内部で保持しているキーテーブルの並びとリストボックスに表示している並びとが食い違ってしまい、たとえば同じキーが複数表示されたりという感じで表示がおかしくなってしまう。
ただ、報告をいただいたのは割り当てたショートカットキーが消えてしまうという物。このバグは、同じキーを再割り当てした時には表示がおかしくなるものの、割り当てたキーが消えてしまうということはない。だから、コレが原因というわけではない。
では一体原因は何か。
削除だ。キー割り当てを削除した時、表示上で削除される物と保持しているキーテーブルから削除されるものでは別のものが削除されているのだろう。
これだと、実際に削除したつもりのものが生き残っていて消した記憶の無い別のものが消えてしまう。
他にもおかしな点があるのかもしれないが、まずはこの部分を修正。
って単にリストボックスのソートオプションを外しただけ。
ドトールでコーヒー。
注文する前に禁煙席が空いていることを確認するのを忘れる。禁煙席が埋まっていて残念な思いをする。
先日、ドトールでコーヒーを飲んでいたら禁煙席で煙草に火をつけたバカがいた。しかも、火をつけた後に灰皿を探している始末。
それって、ズボンを下げた後になってからトイレを探しているようなものではないか。っていうか、既に煙はたれ流しているのだから、たれ流しながらトイレを探しているような物か。
唐突にフレッシュネスバーガーのベジタブルスープが欲しくなったので寄る。
中に入ったらなんかやたらでかいノートパソコンを使って何かしている人がいた。対抗心からFIVAを取り出してみたりする。
でスープを飲み、サラダを食べながらDFを使っていたら…。
拡張子別登録コマンドが動いてねーでやんの。はっはっは。
店内で直しましたよ、ええ。
DFのカスタマイザの改版作業。ウィンドウ表示位置の記憶、復元のON/OFFを追加。
この時、Visual C++がファイルを上書きしてくれやがりまして、作業に手戻りが発生したりする。
これってOSが出してたのね。なんでディスクにアクセスできないくらいでIMEがメッセージを出すのかものすごく不思議だった。
「2:8の法則」というのがある。時には誇張されて「1:9の法則」と呼ばれたりもする。実際には「3:7の法則」くらいではないかと思うことがよくある。
要は2割のユーザが8割のリソースを消費する、というかそんな感じ。言い方を変えると2割の友達と過ごす時間が友達と過ごす時間の8割を占めるとか、2割の社員が売り上げの8割をたたき出すとか、そんな感じ。
つまり、重要な部分は一部分に固まっていたりする訳だ。実際プログラムなんかを解析すると、プログラム全体の2割の部分が実行時間の8割を占めていたりすることはよくある。
この2割の部分を見つけ出して、ここの価値を上げることができれば全体的に価値を上げるよりも効果が高い。
元のプログラムが各要素10点ずつの合計100点だったとする。
10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 |
重要な20% | どうでもいい80% | ||||||||
倍率4倍 | 倍率 1/4倍 | ||||||||
80点 | 20点 |
重要な20点が全体の80%を占めるので、この部分は4倍して評価する。80点。
どうでもいい80点は全体の20%を占めるので、この部分は4分の1の評価で20点。
さて、このプログラムをバージョンアップする。バージョンアップのよって10点増やすことができる。
ドコに10点割り振るか。大きく分けて2通り。
重要な20% | どうでもいい80% | ||||||||
11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 |
倍率4倍 | 倍率 1/4倍 | ||||||||
88点 | 22点 |
合計110点
重要な20% | どうでもいい80% | ||||||||
10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 20 |
倍率4倍 | 倍率 1/4倍 | ||||||||
80点 | 22.5点 |
合計102.5点
重要な20% | どうでもいい80% | ||||||||
20 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 |
倍率4倍 | 倍率 1/4倍 | ||||||||
120点 | 20点 |
合計140点
同じように10点を加算しても、その効果は140点と102.5点と36%も変わってくる。
今回、DFで改造した登録コマンドや登録ディレクトリについての処理は非常によく使う部分であり、「よく使う80%」の中に入っている物と思うのだがいかがな物か。
ダイエーに行ってみる。屋外に焼き海苔なんか売ってたりして。よく乾きそうでいい感じ。
同じ感じでマヨネーズも陳列されていたが、生物に直射日光バリバリ当てて問題ないのだろうか。
今まで入ったことがないコーヒー店でコーヒーを一杯。
さらにフレッシュネスバーガーでまったりする。
DFの処理を若干改善。IntelのPDF版最適化マニュアルって見にくくてたまらん。
DFの登録ディレクトリ、登録コマンド(設定ファイルにディレクトリやコマンドを登録しておくことで、選択するだけで実行したりできる機能)に対してショートカットキーを割り当てられるようにした。
今のところ、登録リストの上位10個に対してキーを割り当てられるようにしてあるものの、コレでいいのかどうか悩んでいたりする。
10個というのが妥当か、というのもあるのだけれど、それよりも「上位から10個」というのが気になっている。ほら、リストの上にあるヤツっていうのは選択しやすいのです。選択しやすいのだからわざわざキーを割り当てる必要が無いのではないか。むしろ選択しにくいリストの下のほうに登録されているものにキーを割り当てられるようにしたほうがいいのではないか。
とはいうものの、今のところは実装が楽だからという理由でリストの上位を割り当てるようにしてあったリする。
この楽だからというのは私にとって何物にも勝る理由なので逆らえない。