「どつぼ」の記録・その1


DebugVersionを送って失敗

1998/05/16

今私はある会社の製品CD-ROMに添付するおまけソフトみたいなものを書いています。おまけといってもその会社は規模がでかいので、私のようなアホが書いたプログラムでも信じられないくらいのお金になります。信じられないくらいのお金といっても、私からすれば、という意味ですけど。(^_^;

このような場合、相手先での機能テスト、仕様の再チェック、仕事の進み具合の確認などの意味で、開発途中のバージョンを何回か相手に送付します。このソフトの場合、以前に書いたプログラムにちょっとした改良を加えたものなので、コーディング量はそれ程なく、ほとんどDebug & Test期間です。今回の場合、2週間ほどで、修正モジュールを5回ほど、bugが見つかるたびに送り、3回ほどプログラム全体(全部で2Mbyte程)を送りました。で、先日、相手先の予定に間に合うくらいで、完成品を送ることが出来ました。プログラマーがほっと一息つく日です。

ところが翌日、「中間ファイルが削除されない」という新種のbugの報告が相手先から来ました。あちらの話では、あるマシンでやると再現性100%だそうです。この中間ファイルには色々訳があって、絶対に削除すべきファイルでした。せっかく完成品を送ったのに、bugが見つかったら対処して、テストして、相手の予定に間に合うように送らなければいけません。こんな日はプログラマーにとって最悪の一日の始まりです。(T_T)

ところが、こちらで先日送った奴で試してみても再現しません。再現できればある程度どこが間違っているか見当がつくのですが、どうしても再現しません。bugの見当がつかない、納期はすぐそこ、正にプログラマーにとって悪夢の時間です。

ソースを眺めてみても、ちゃんと中間ファイルを削除するコードが実行されるようになっています。ひょっとしたらそのテストマシンのFile Systemが壊れているとか、もうOSか、開発に採用した言語の問題でしかないような気がしてきました。どうみても、ソースコードを読む限りは、debug flagが設定ファイルにない限り、中間ファイルを削除しています。

え、debug flagが設定されていない限り?ひょっとして・・・と思い、相手先に連絡を取って、設定ファイルを確認してもらいます。予感は当たりました。実は相手先のマシンの設定ファイルにはこのプログラムのdebug flagが設定されていました。debug flagを取り払うとちゃんと中間ファイルが削除されているとのこと。ああ、よかったぁ。こんな時は本当に九死に一生を得るという感じです。でも何故、プログラマー以外には存在すら知られていないような、debug flagなんかが相手先のマシンにあったのでしょうか?

ストーリーはこんな感じです。まず、多分1回目にプログラムを全部送ったときに設定ファイルにdebug flagを立てたものを入れてしまった。で、このマシンではその後の修正は修正モジュール(*.exeとか*.dllとか)だけの入れ替えでやっていた。だからそのマシンの設定ファイルではずっとdebug flagが立ったままで、それで中間ファイルが残るようになってしまった、という訳です。つまり最初にdebug flagを立てた設定ファイルを入れてしまった私がオオボケだった訳です。(^_^;

幸いにも、完成品として送ったものにはそのdebug flagを立てた設定ファイルは入っていなかったので、結局一騒動あっただけで、完成品は納入されました。やれやれ。


Outlookのデータが消えた!

1998/05/15

このページのねたになることが続いています。ねたが増えて喜んでいいのか、失敗ばかりで悲しんだらいいのか…。当分書くことに困らないのは確かです。(^_^;

最近、会社のメインマシンのWindows95の調子が変です。といっても別にウィルスが原因じゃなくて、仕事で書いているプログラムでレジストリをいじっていて、Debugの途中でとんでもない値を書き込んだり、消したりしてしまうというのが原因です。また、某有名メーカー製ワープロをインストールすると、アンインストールしてもレジストリにゴミが残ってしまうというのも気に入りません。

こんな時、一番単純な解決方法は「Windows95を再インストールする」です。ただ単に再インストールするだけだと、レジストリにゴミが残ったままなので、思い切ってWinDir以下のファイルをばっさり消してしまいます。この方法だと設定は消えてしまいますが、別に文章とかソースが消えるわけじゃないですから、いくらでもやり直しが効きます。設定なんかやりなおせばいいんです。どうせそんなに沢山設定するような項目はありませんから。(^_^;

というわけでWindowsディレクトリ以下のファイルをばっさり消して、FDからブートします。この時にこのFD bootでCD-ROMを読めるように設定しておくというのも重要なことです。さもないとWindows95のCD-ROMを読めなくなって、どつぼにはまります。(さてはやったことがあるな<vyama)(^_^;

で、FD bootして、Windowsディレクトリ以下のファイルをばっさり消して、Windows95のsetupを起動します。昔は結構かかったsetupもマシンの性能向上で、あまり時間もかかりません。で、そこにWindowsディレクトリとかSystemディレクトリにDLLを置くような、Visual何とか、Office97、Netscape Navigator、Internet Explorer、IMEなどをインストールします。これもネットワーク経由だったり、他のドライブにsetup fileがあるから快適に進みます。他のフリーソフトなどは別ディレクトリに入れてありますし、unlha32.dllなどのファイルはまた別ディレクトリに入れてあります(で、そこにパスを通しておく)から、大丈夫です。

で、インストールが一通り終わった後、ちょっとした用事で取引先の住所が必要になりました。実は私の直接担当している取引先なんて少ないので、テキストにずらずら書くだけでもいいですが(他の連絡事項などはそれで管理している)、ソフトの使い勝手をみるつもりで、電話番号などをOutlookに登録しています。Outlookが出る前はSchedule95を使っていて、Schedule95からOutlookにスケジュールをコンバートしたら結果がぐちゃぐちゃになって、入力しなおす羽目になったのですが、それはさておき、Outlookを起動して住所を検索しようとしたら、「あれ?データが全部消えている?」

Outlookのある場所がE:\Program Files\Microsoft Office\Officeだから多分データファイルもそこら辺にあるだろうと思ってましたが、タイムスタンプで見る限りOutlookのデータファイルらしいものが見つけられません。幸い、別のテキストファイルに住所が書いてあったので、それを使いました。Outlookには面倒くさくて大した情報は入れていなかったのがラッキーでした。(^_^;

一段落して、Outlookのデータファイルはどこにあるのか?本当に消えてしまったのか、探しはじめました。まず、Outlookの予定表に適当なデータを書き込んでOutlookを終了後、Officeのインストールしてあるディレクトリをタイムスタンプで検索します。おかしい、どのファイルもタイムスタンプが変わっていない。(?_?)じゃあ、My Documentは?と思って探してみたけど、ここも変わっていない。(?_?)フムム、じゃあOfficeのインストールされているドライブ・・・これも駄目。ここまで来るとひょっとしてOutlookのデータファイルはレジストリに登録されているのかぁ?などとバカなことまで想像してしまいます。しょうがないから、繋がっているハードディスク全てについて、タイムスタンプを調べてみました。そしたら、ビンゴ!やったあ。データファイルが見つかりました!

その名も、outlook.pst。ところでこのファイル、どこにあったと思いますか。なんとOutlookのデータファイルはウィンドウズディレクトリにあるんです。たかだか、住所録とスケジュール帳とメールが一体になった程度なのに、データをこんなところに置いておくなよなぁ。普通、各アプリケーションに固有のディレクトリか、OfficeだったらMy Documentに置くよなぁ。一体何故WinDirに置く必要があるんだぁ。(T_T)iniファイルならともかく普通はそんな風に作るかぁ。

ところで、一台のマシンで別々のスケジュール管理をするときには、Outlookってどうやるんでしょう?Schedule95だと最初にスケジュールファイルを聞いてくるので、それで切り替えられたはず。ところがOutlookだとそれっぽい項目が見当たらないんです。誰か知りませんか?

Outlookについて書いているHomePageをもう1つ見つけました。LinkPageで取り上げているS郷さんのページの日記のコーナー5/14分「Office97が届いた」というのがそれです。多分、ここらあたりに行けばその時の日記が読めるでしょう。

このページによると、Schedule95を使っていた時にはお互いのスケジュールを見せあうことが出来たけど、Outlookに移行したらできなくなっちゃったらしいです。おかしいな、と思って私も調べてみたんですが、Outlookからでもお互いのスケジュールを見せあうことは出来るようです。ただし、Microsoft Exchange Serverが必要ですが。確かにMSとしてはExchange Serverが売れて欲しいわけだし、入れれば入れたでもっといろいろ便利なことができるかもしれないけど、Schedule95の時にはExchange Serverなんかなくても大丈夫だったんだから、Outlookにしたらかえって不便になったわけです。でもExchange Serverなんてほいほい買えるような値段じゃなかったような気がしたけど、気のせいかなぁ。さもなければみんなでWinDirを公開しあって、必要な時にoutlook.pstをインポートする?これは冗談みたいな世界ですね。(^_^;

またOutlookメールの出すInternet MailでのMessage-Idも不思議です。私が試した範囲では、

<数字並び.数字並び@メールを出したマシンのTCP/IPホスト名>
<数字並び.数字並び@Windows95のログイン名.コンピュータ名>
になるみたいです。だとすると
<数字並び.数字並び@default>
みたいなMessage-Idが発生するけど、大丈夫なんでしょうか?この件を指摘した人は今まで私は見たことがないけど、NGみたいな公共の場じゃないからいいのかなぁ。NGであれだけMessage-Idで騒いだ人は、e-mailで困ってもそれは本人が困るだけだから大したことではないと思っているのかなぁ。

そういえばMS-Word97にはMS-Word95形式でセーブする機能が付いているんですが、これもとんでもない実装だという話があります。私はがんばれ!ゲイツ君の「NTサーバーの不思議(その7)」で知ったわけですが、元ねたはこっちです。要するに確かにMS-Word95でも読めるような形式でセーブして、.docという拡張子が付いたファイルが出来るんですが、実は中身がRTF形式なんです。(これは私もやってみて確認しました。)これじゃあ、少なくともこの部分に関しては、手を抜いていると思われてもしょうがないですよね。でもそうするとRTF形式でセーブするのと、MS-Word95形式でセーブするのって、拡張子が違うだけ?(^_^;詳しくは先程のページを見てください。ただし、「がんばれ!ゲイツ君」のほうはかなりMicrosoftを辛辣に批評しているので、Microsoftファンの人は読むと気分が悪くなるかもしれません。私は楽しく読んでいますけど。(^_^;

実はOffice97の最大の売りは「冴子先生」?(^_^;

会社ではバージョンアップしましたが、個人ではOffice95→97のバージョンアップはしないつもりです。実際、私の場合、自宅ではテキスト(プログラムのソースファイルとか、パソコン通信の発言ファイルとか、HTMLとか)は作るけど、きれいな案内状だとか、書類だとかなんて滅多に書かないからMS-Word95は使わない。効率的に分析・蓄積するデータがないから、ExcelもAccessも使わない。個人スケジュールはがらがら、遊び友達もそんなにいない(^_^;からScheduleもいらない。PowerPointなんて誰に向かってプレゼンするんだ(^_^;。つまり私の場合、普通は使い道がないのです。

使い道がないのに何故買ったのかって?実は以前、社内論文を書くためにMS-Word6.0を買ったのですが、アップグレード対象になるから比較的安く買えるし、Windows95対応の機能もあるし、あればあったでまた使うこともあるかと思ったのです。で、結局そのままほとんど使わなかった訳です。(^_^;また今度社内論文を書く機会があったら、その時にでも使おうと思います。さて、Officeの次のバージョン(98? 99?)が出るのと私に論文を書く機会が訪れるのとどちらが早いのでしょうね。(^_^;


緊急事態!一体誰が読んでいるんだ?

1998/05/12

今日はとうとう記念すべき初公開の日です。ちゃんと表示されるかなぁと思って出社してからすぐに会社からアクセス。ふむ、午前中には公開されていなかった。まあ、登録の手続きを間違えたか(結構ありがち)、サーバーがつぶれてしまうか(ありがちだけど、JANISなら大丈夫でしょう。ヨイショ)という状況でもない限り大丈夫だと思っていました。

で、6時頃にもう一度見に行きました。おお、ちゃんと公開されている!げ、いきなりトップページのタイトルが間違っている。(^_^;おお、ちゃんとリンクも張れている、家で散々やったけど公開されているのを見ると感慨もまたひとしお、と柄にもなく浮かれていました。

ふと気がついて、アクセスカウンタを見てみたら、あれ?公開されたばかりなのにアクセスカウンターが297になっている!一体誰がアクセスしているんだ?サーチエンジンにはどこにも登録していないし、主立った所を探してみたけどロボットにも登録されていない。親しい友人・先輩にさえもWWWページを立ち上げたとは言っていない。唯一リンクが張られているのはJANISのユーザーしか見ないと思われる、JANISネットのユーザーページだけ。一体300人って、どこからやってきたんだ?(?_?)

こんなページよりももっとまともなページで、アクセス数が100行っていないところもあるぞ。これはきっと何か理由があるに違いない、そうでなければ何かの陰謀に違いない(読み筋はトンデモ本)、との結論に達しました。

以下、妄想モードです。(^_^;

陰謀説を考えてみましょう。まず、犯人探しです。このページの存在を知っているのは、私の他には(たまたま見たという少数を除けば)webmasterだけです。webmasterだったらカウンターをいじることも簡単ですから状況証拠もばっちりですから、犯人はwebmasterに断定します。では、この陰謀の目的は?カウンターを上げてやれば、頻繁に更新するとでも思っているのかな。そんな訳ないか。(^_^;と言う訳で全く見当が付きません。でも大丈夫です。陰謀なんかやる奴は私には推し量れないような精神構造の持ち主だから、その人の目的が分からないのは当たり前です。しかし、よりによって私に陰謀を仕掛けてくるとは無謀な奴。B-)

仕掛けられた陰謀にはそれなりに反撃するのが私のポリシーなんですが、アクセスカウンタを上げられた仕返しっていったい何をすればいいのでしょう?ありがちなのが「アクセスありがとうございます」とかいうメールを出すって、これが仕返しかぁ?(^_^;

陰謀がないといして、別の理由を考えると、アクセスのほとんどがJANISネットのユーザーページからのリンクできたはずですから(だって他にはどこにもリンクされていませんから)アクセス数が上がるとすれば「タイトルが面白そうだった」ということになります。だけど、どう考えてみても"vyama's DOTUBO page"が面白そうなタイトルだとは思えないんですよね。(?_?)JANISネットのユーザーページにはもっと気の効いたタイトルが沢山あります。と、するとこのページを覗きに来た人は"DOTUBO"というキーワードに反応したに違いありません。

私の語感だと"DOTUBO"からは「失敗」が連想されるんですが、ひょっとすると他の人達っていわゆる「肥溜め」を連想するのでしょうか?だとすると、このページを見に来た人達は実はスカトロ趣味のページと勘違いしたそっち方面の人ではないかという恐るべき結論に達しました。(^_^;

この結論に沿ってさらに議論を進めてみます。この前、JANISネットのWWWページ登録用のサーバーを覗いてみたら、/homeの下に1000程のディレクトリがありました。このディレクトリ1つ1つがユーザー一人に対応し、今日はJANISユーザー以外はこのページをアクセスしない(だって公開したばかりだもの)、1回しかアクセスしない(こんなページ、一日何回も読まないでしょ)と仮定すると、驚くべし、JANISネットユーザーの30%はそっち方面の方々だったということになります。私は今までそっち方面の方々とのお付き合いは無いし、そんな趣味もありませんが、いやぁ私の知らない間に結構メジャーな趣味になっていたんですね。(シミジミ)それともJANISネットが異常なの?(^_^;

そっち方面でないとすれば、「肥溜め」に非常に関心が高い人が多いということでしょうか。それにしても私の住んでいる世界から見れば、肥溜めに関心のある人の割合が高すぎます。(^_^;JANISネットはホームページからのリンクを手繰っていけば分かると思いますが、農協(今はJAと呼ぶんですよね)と深い関りがあるらしいので、ひょっとしたら新しい有機肥料か何かの情報があるかもしれないと思って、沢山の人がアクセスしたのかも知れません。それだったらまだ理解可能な世界だ。(^_^;

あと、考えられるとすれば、本文でとっても間抜けなことを書いていたせいで世間の物笑いの種になり、「こんなバカな奴がいる」と口コミで広まったかもしれません。そうだったらいいなぁ。そっち方面とか、あっち方面とかの趣味の人がたくさんアクセスしに来るんじゃ、恐すぎる。(^_^;まあ、もともと失敗談を書いたのも、意図的に楽しませるのは無理でも、少しでもおかしな話で笑ってもらうというのが目的ですから、それだったら本望です。あ、ものすごい顰蹙のねたが入っているという可能性もあります。誤解があったら、言ってください。<(_ _)>

ないとは思うけど、アクセスカウンターが間違っているのかなぁ。だったらぬか喜びだなぁ。(^_^;

ひょっとしたらこれとかこっちがJANISネット社内で問題になったのかなぁ。だとすればJANISネットのスタッフには申し訳ないです。はっきりいって契約してみて結構いいサービスなので感謝しています。今頃言っても遅いってか?(^_^;

なお、誓って言いますが、スカトロ趣味のページでは多分ないし、本人に多分その趣味はありません。多分肥溜めとも無関係ですし、有機肥料の情報は多分今後とも一切載らないでしょう。でも書いているうちに自信がなくなってきたとは白状しておきます。(^_^;

ゴメンナサイ。無茶苦茶書いています。1ヶ月で30Hit(そのうち自分の分が25hit(^_^;)あればいいほうだと思っていたので(というかそれくらいの人しかアクセスしないと思って書いていた)いきなり300Hitというのはうれしいやら、戸惑っているやらで、浮かれているんです。(^_^;このページのねたになっていただいた、webmaster、初日にアクセスしていただいた方、失礼の段は平にご容赦ください。<(_ _)>このページにアクセスしてくださった方、本当にありがとうございますお楽しみいただけたら、お気軽に私までメールを頂ければ幸いです。<(_ _)>

ところで、本当に一体全体、なんでこんなにアクセスがあったんでしょう。理由をご存じの方、メールをお願いします。嘘、でたらめでも面白いなら、このページのねたにします。(^_^;アクセスしたのはこんな人、というメールでも結構です。(どんな人がアクセスしているんだろうか。ワクワク)よろしくお願いします。なお、メールの宛て先はvyama_at_janis_dot_or_dot_jpです。

追記
15:00位から公開して、18:00位には300hitしたのに、18:00〜24:00からのアクセス数の増加は10ちょっと。普通これくらいだよなぁ。一体昼間に何が起こったんでしょうか?アクセス数が増えるのはうれしいけれど、いくら何でも増えすぎ。気味が悪いくらいです。(^_^;まあ、初日だからかなぁ、と思うことにします。(^_^;


Office97のマクロ

今、私の書いているプログラムのデータの管理にMS Excelを使っています。Excelにデータを打ち込んで、マクロで他のDLLなどから読み出しやすいような形式のファイルを作ってあげるわけです。で、もともとそのマクロはExcel95で書かれています。といってもあまり大したことはやっていないので、Excel5でも動きます。

ところがですね、このマクロがExcel97で動かないんです。実行させると、パラメータエラーだとか言って途中で止まってしまいます。もっとシビアな条件下でも、今まで何の問題もなく動いていたので、何故動かないのかさっぱり分かりませんでした。

エラーが出ているのは、こんな感じのコードです。

Dim a As String, b As String
a = "FooHoge"
b = a + string(8 - LenB(a))
何をやっているかというと"FooHoge"というタイトルに空白を後ろに付けて全部で8byteにするというコードです。で、これが動かないんです。(T_T)色々調べてみると、どうやらLenB(a$)が7じゃなくて14を返しているようなのです。どうやら、これはUnicodeで数えたバイト数を返すように仕様が変更になったみたいです。

ただし、はっきり言ってこれはすごく迷惑な仕様変更です。stringが全部unicodeで書いてあるので、WindowsAPIなどをcallするときにDBCS(まあこの文脈ではSJISだと思ってください)で数えた文字数をパラメータとして渡さなければいけない関数もあるんですが、今まではLenB()で数えていたんですが、LenB()がunicodeで数えた文字数を返すようになって、この方法は使えなくなっちゃいました。大体unicodeで数えたバイト数って単純に文字数の2倍に決まっているからLenB()の存在意味ってほとんど無くなってしまったと思うのは私だけでしょうか?


RS232C接続が遅い

今まで私が自宅で使っていた環境はDX2 66MhzをPentium ODP 83Mhzに載せ変え、メモリが24Mbyte、ものすごく遅いSCSIカード、ただしなぜかSCSI HDは合計3Gbyteというマシンです。OSはWindows95。さすがにこの程度のマシンだと、軽いアプリケーションを実行するくらいなら大丈夫ですが、ちょっと重い処理をすると待たされることになります。で、新しいマシンを組み立てました。まあ、組み立てに関する話題は別の項(ってまだ書いていないんですけど(^_^;)を見てもらうとして、まあいろいろ問題はあるけれど一応動いたので、ソフトウェアをインストールしはじめました。

で、やっぱり2台マシンがあるなら、やっぱり「家庭内LAN」をやってみたいじゃないですか。ところがこっちは貧乏ですから、いくら安くなったとはいえ、ネットワークカードを2枚買ってきて、ハブを買ってきて、ケーブルを買ってきてとなったら結構かかってしまいます。(といっても多分2万円もかからないでしょうが)で、安易に構成できるネットワークということでクロスケーブルを買ってきてつなぐことにしました。

で、ケーブル接続を2つのマシンにインストールしてつなげました。古い方のマシン(色々なフリーソフトや、買ってきたソフトのバックアップなどが入っているMOがつながっている)をホストにして、新しいマシンをゲストにして接続します。

で、それぞれのコンピュータでケーブル接続を起動します。で、接続は驚くほどあっさり行きました。まあ、古い方にどんな名前をつけたのか忘れてしまったくらいでしょうか。(^_^;)

接続してみて、ディレクトリを読んでみてもちゃんと読めます。じゃあ、ファイルも読めるだろうということで、MOをF:に割り当ててから、f:\binの下のファイルを全部c:\binの下にコピーするコマンドをDOS Promptで実行しました。ところがこれがとてつもなく遅い。(^_^;どれくらい遅いかというとですね、4Mbyteのプログラムをケーブル接続を通したドライブを通してインストールしたら、一時間近くかかったんです。こんなのローカルのハードディスクからインストールしたら一分もかからないから、この一時間というのはほとんどコピーに要した時間な訳です。で、その転送時間を計算してみると、4*1000*100byte/60*60sec = 1111.1byte/secです。あれ、意外と早いですね。(^_^;)でもはっきりいってこれを通してちょっと大きめのプログラムを転送しようとしたらめちゃめちゃ時間がかかります。

使ってみた感想では、これでtelnet程度の接続をやるなら良いけれど最近はやりの大き目のプログラムを転送するとなったらあまり実用的じゃありませんね。やっぱり素直にネットワークカードを買ってくる事にしようっと。


社内回線が遅い

私の会社には社内LANが張ってあります。社内LANがあるとないとでは大違いでして、私達の仕事では数メガ単位でのファイルの転送を結構日常的にやるのですが、FDでやっていたら、いちいちFDに納まるように分割してコピーしなければいけなくて大変です。また、プログラムのインストールなども、みんなでCD-ROMを使い回していたら誰の手元にあるのか管理するのが大変です。

LANがあれば、ファイル転送なんかは(まともなLANなら)HD→HDのコピーなんかと感覚的には一緒ですし、CD-ROMはサーバーに置いて、それをみんなで共用すると管理も楽です。多人数でプログラムを開発する時にもソースを共有できるメリットは大きいです。実際使いなれてくると、LANがないとほとんど仕事にならなくなります。いや、それをイイワケにしてLANサーバーが落ちている時は遊んでいるんですが。(^_^;まあ0.3回/month位には事故で落ちるけど、便利なものです。

で、うちの会社ではこのLANを通してInternetにアクセスできます。まあ、色々資料を調べたり、他社の人とメールをやり取りしたりして仕事に役立てる訳です。私みたいにほとんど有用に使っていない(遊んでいるだけ)人もいますけど。(^_^;

ところがこの社内からのアクセスなんですが、これがえらく遅いんです。(^_^;どれくらい遅いかというと、大体外部からダウンロードしようとすると、70byte/sec位しか出ないんです。で、下手をすればtime outしてしまう。この前、4byte/secの数字を見た時には、本当に笑いましたね。(^_^;大体ぱっと見ると、早くて300byte/sec位かな。70byte/secということは560bit/secですから、私が初めて買ったパソコンFM-7 のテープの転送速度も出ていないんです。4byte/secなんて300bpsのモデムでもこれだけ低い数字は出ないだろうという数字ですね。(^_^;で、それででっかいファイルとかをダウンロードすると、かかる時間が半端じゃありません。

MSのInternet Explorer 4.0 (以下、IE4と略) はもう一般の方でもダウンロードできると思いますが、まだ一般公開されていなかった頃の話です。この時はダウンロードするプログラムが配布されていてそのプログラムを立ち上げるとMSのサーバーからIE4の本体をダウンロードする形になっていました。一体本体、付属品(?)を含めて何Mbyteあるか知りませんが、インストールを開始して、本体をダウンロードして、残り時間の表示が「インストール終了まであと15時間かかります。」(^_^;ちょうど、午後の5時くらいから始めたんですが、もうその表示を見てその日は完全にやる気をなくして、インストールプログラムを続行させながら、さっさと家に帰りました。で、次の日は休日だったんですが、会社に出てくる羽目になりました。(;_;)

社内ではインターネット関連の製品もいくつか作っているのですが、こんな調子では全然デバッグが進まないので、このような製品の関係者は外部のISPと契約してPPP接続するか、専用線を確保しているみたいです。

しかし何故こんなに遅いのでしょうね。実はこの回線はこの会社の親会社の某E社と回線と共用なのですが、その親会社のホームページも遅いと評判なのです。で、その下流に位置する私の会社のページも外部から見るとひどく遅いらしいです。もともと細い回線だったのを会社のページの反応をよくするために、社内からのアクセス数を制限しているんで、社内から使うと更に遅くなってしまいます。(;_;)

いい加減もうちょっと早くならないかなぁ。(ため息)


トラックボールが動かない?

私のマシンが置いてあるのはちっちゃい机の上です。キーボードは別の机ですが、これもちっちゃい机の上です。ですからマウスよりはトラックボールの方が何かと便利かな、と思った訳です。で、トラックボールを買いました。

でも、あんまり使いやすくないですね。少なくとも私の買った奴は。(^_^;

私の買ったタイプは親指でボールを操作するタイプなんですが、私にとってはこれはあまり使いやすくなくって、結局人差し指でボールを操作する方が性にあっているなぁという感じです。細かい操作だとどうしても親指だとずれてしまうんですよね。でも、これは単に私が不器用だからかな。また、ふと考えると、マウスも最初はちょっととまどったと記憶があるけど、今だと平気で使っているから、そんなもんかも知れませんね、といいつつ今度トラックボールを買いなおして、このページのねたにしようという積りなのでありました。(^_^;


しぼり取られる悲しさや

Visual C++ 5.00のバージョンアップ(以下Ver.up)の知らせがMicrosoftから来ました。おお、今年の年始にVisual C++4.0を4.2にVer.upをしてから、ろくすっぽ使っていないのにもうVer.upかぁ?ってもう前回のVer.upから4ヶ月以上経っているからそろそろですね。(^_^;これに関して、ソフトハウスとVer.upのおいしい関係というのは、思い付いたけど後日書きます。(ネタを枯らさないためですってそんなこと考えていちゃいけないんだってば。)

でも、しかしVisual C++のVer.upが\25200で、Visual J++のVer.upが\3990。悲しいかな、私はJ++はともかくC++のVer.upの料金はちょっと払う気になりません。(^_^;まあ、今回のVer.upの目玉として紹介されているのを見る限り、まあ今回は見送るかぁという気がしています。Visual Source SageだってGNU RCS入れているから、まあ何とかなるだろうし、どうせ目玉のActiveXはインターネットでページを書く限り、使わないだろうし、いざとなったらVC4.2でも書けるから。(^_^;さらにマイクロソフトには悪いけど普通はJava、しかもJDK1.1ベースで書くよなぁ

JDKということでいえば、Microsoftは、今度の言語製品リニューアルでJ++はJDK1.1との整合性ではなくて、「100%Javaコンパチブル(※JDK1.02と高い互換性)」と言っていますね。私みたいにリサーチが不十分なプログラマーにはよく分からないんですが、JDK1.0を決めた時にそいつをMicrosoftが独自拡張しちゃって、それがその後、JDK1.1で仕様の一部がバッティングしちゃってにっちもさっちも行かなくなっているとか聞いたことがあります。(いい加減度99%)ここで解消するのか、と思ったけど違いましたね。まあ、今更仕様を変えるというのも大変だというのも分かるけど、Visual Basicなんかはいくらでも仕様変更しているんだし、仕様変更して、納期が遅れてもJDK1.1コンパチブルにして欲しかったと思います。だいたいJDKコンパチブルじゃないと、他のプラットフォームで動かした時にまずいんじゃないのかぁ、そうするとJavaで書く「美しさ」みたいなのが失われてしまって結構悲しい & 大丈夫なのか? Microsoft、と心配。


EXEが組めないVB5 CCE

最近私はVisual Basicでプログラムを組むことが多くなっています。でも個人ではVisual Basicを持っていないので、個人的に必要なコードはVisual C/C++で書いたりしています。まあ、テキストベースのデーターを処理する場合にはperlで組みます。(^_^;でもVisual Basicの方が気をつかわなくて済むというのはあるので、Visual Basicは買おうかな、と思っていました。まあ、両方使った感想から言えば普通の人はVisual Basicを使っていれば幸せになれるんじゃないかな、と思います。難しい所はOCXが隠してくれることを期待できますしね。でも貧乏だから、Visual Basicまでは買えずじまいだった訳です。

おお、そうしたらマイクロソフトの連中、すごいじゃないか!Visual Basic5.0 Control Creation Edition をただで配るなんて!連中のActiveXにかける情熱が伝わってくるみたいです。「このバージョンを使ってがんがんActiveXコントロールをかいてくれよ、俺達も応援しているぜ!」みたいな熱いメッセージが伝わってくるみたいじゃないですか。AcriveXはセキュリティーは相当危ないけど、イントラネットでしか使わないんだぜ、と思えば逆に何でも出来るというのはある意味でありがたい意味もあります。もっとも、今のMSの路線ではセキュリティホールにぽっかり穴が開いたままだろうけどね。(^_^;

だけど実際に、superASCIIの奴をインストールしてみたら、EXEが作れないでやんの。(T_T)これ、結局ActiveXも作れるんじゃなくて、ActiveXしか作れないバージョンなんですね。これ、「がんがんActiveXを書いてくれよ」というのは正しいけど、実際には(やる気になれば出来るかもしれないけど)「実行形式を作るなら金を払ってね」ということだったんですね。さもなければコンテナは何で書くのだぁ?(^_^;あ、IE3.0か。(^_^;でもコンテナがIE3.0だけ?ああ、手持ちのVC4.2++を使いなさいというありがたいマイクロソフトのお教えなのですね。(^_^;

まあ、世の中、そうゆうものかもしれませんけど、それだったらそうゆうようにただし書きをつけて欲しいです。(T_T)あ、タイトルがControl Create Editionだから、コントロールしか作れないのか。普通はコントロールも作れるVer.だと思うぜってのは私だけ?しかし、コントロールしか作れない言語処理系というのも珍しいな。(^_^;


JavaScriptが動かない?

これ、失敗っていうのかな、動くは動くんだけどうまく動いてくれない、ってそれを動かないといっているんだってば。(^_^;

このページですが、Lastupdateを手で入力するのは面倒くさいので(プログラマーはみんな面倒くさがりなのです(^_^;)SSIを使って

Last Updated <!-- #echo var="LAST_MODIFIED" -->
みたいに書いていました。ところがこれを一般公開するにあたって、JANISネットに問い合わせたところ、SSIは利用できないから、かわりにJavaScriptを使ってくれという返事。Javaはreferenceを見ながら、ちょっとだけいじったことがあるけど、JavaScriptって何が出来るの?という感じだったので、早速本屋さんに"Let's go!"でJavaScriptハンドブックという本を買ってきました。結構分厚い本ですが、サンプルとか一杯入っているし、私の場合、下手に入門書とか買うと、結局後で網羅的に書いた本を買いなおす羽目に陥るので、最初から分厚い本を買うようにしています。(^_^;

で、最初のブラウザ競争がどうのこうのとか、環境を整えようとかいう項目は当然すっ飛ばして、最初にJavaScriptコードのあるページを開いてみると、おお、ちゃんと最終更新日を表示させるプログラムがあるじゃないか。v(^_^で、早速やってみました。スクリプトの本体は次のようなものです。

<script language="JavaScript">
<!--
document.write("Last updated on " + document.lastModified + ".")
//-->
</script>
あれ?行末にセミコロンはいらないの?とか、documentオブジェクトってVisual BasicのAppオブジェクトみたいなものかな?とか、printじゃなくてwriteなの?とか色々尽きせぬ疑問はあったのですが、とりあえずこのページの先頭付近にこのスクリプトを張り付けて、TCP/IP接続されている他のマシンからNetscape Navigatorで見てみました。すると…
Last updated on 01/01/70 09:00:00.
01/01/70って、27年前じゃ私は小学校にも行っていないぞ。ひょっとしてこれを書いた奴の感覚は1960年代の感覚だって言う洒落なのかぁ?まあJavaScriptを解釈できるのはNetscapeだけじゃない、と気を取り直して、Internet Explorerでチャレンジしたら
Last updated on 月 1 01 09:00:00 1601.
おいおい、関ヶ原の戦いの翌年に作られたページって一体なんなんだ?ふ〜む、コンピュータが世に出るずっと前から存在するhtmlファイルというのもいいかもしれない。(^_^;当たり前ですけど、全然おかしいですね。
という訳で今度はそのファイルを置いてあるローカルマシンからNetscape Navigatorを使ってファイルとしてオープンしてみると
Last updated on 04/24/97 16:28:06.
やれやれ、こっちは大丈夫みたいです。で、Internet Explorerを使ってファイルとして開いてみてもちゃんと表示されるみたいです。

でも一体何故こんな事が起きるのでしょうか?httpdのせいなのかなぁ。こうなるとJavaScriptがタイムスタンプをローカルにどうやって送るかなどという基本的な仕組みを知らないので、どう対処していいのか分かりません。でも、JANISネットのサーバーに上げた時はきっと大丈夫なのでしょう。(^_^;マシンを買い増したら、ちゃんとしたhttpdを自宅で立ち上げてみて、試してみようっと。

ちなみにUNIXのカレンダー表示コマンドでの表示によれば、本当かどうかはともかく、1601年1月1日は木曜日だそうです。や〜いInternet Explorerのウソツキ〜。(^_^;でも何故1601年なのでしょうか?この時期にグレゴリオ暦に変わったんでしたっけ?ちなみに、Netscape Navigatorの1970年1月1日9:00というのは多分、ANSI-Cのtime()がグリニッジ標準時(正確にはCUT)1970年1月1日00:00から経過した秒を返しているのに準じたんでしょう。これはこれで見識ですね。分かると思うけど日本時間でいえば、基準時刻の時には日本は9:00になっています。


JANISネットの申込書を取りに行く

私が入ろうとしているJANISネット、まあこのページが公開される頃には入ろうとしているんじゃなくて入っているはずですが、ここに入会申し込みをして、送られてきた書類に書きこんだら、間違える間違える。法人申し込みの欄に個人名を書いちゃったりして、もうむちゃくちゃな申込書で、修正印だらけになってしまいました。これではあんまりなので、もう一回申込書をもらって書き直そうと決心しました。

で、JANISネットの入会申し込みですが、これはJANISネットのページを見ると、JANISネットの事務局に郵送してくれと頼むか、近くのJA(といっても長野県内でしょうけど)に行けばもらえると書いてあります。書き間違えたのでもう一回送ってくれというよりは近くのJAでもらった方が早かろうという訳で、今度は近くの農協に申込書をもらいに行きました。

私は別に農家でも何でもないので(おじいさんは農協の役員をやったことがあるらしいのですが、とっくの昔に死んでいる)近くの農協に入るのは初めてです。まあ、普段見慣れないような人間(でもこの地方で20年近く生きているはずなんだけど(^_^;)が入ってきた、しかもGパンに黒いジャンバー、ヘルメットを小脇に抱えた怪しげな人物です。これ、ヘルメットをかぶったままだったら一発で「農協強盗」とかいって逮捕される格好です。(^_^;被害妄想だけど、「いらっしゃいませ」の一言が「監視カメラで追っかけているから怪しいことはするなよ」みたいに聞えます。(ウソ)

まあ、申込書をもらってかえれば、後は変な奴と思われようが目的は達成できるので…、と思って周りを見渡してもそれらしき申込書が見つからない。(^_^;普通、この手の申込書とか案内とかはトレイか何かに入っていて、(トイレにあるのはティッシュペーパー、すいません、関係ありませんね。)持ち出し自由になっているだろうなという私の予想はものの見事に裏切られました。(^_^;

じゃあという訳で職員に質問します。どこの金融機関でもそうだと思いますが、窓口にはきれいどころの若い女の人を置いています。いや、反論はあると思いますが、そうゆう事にしておきましょう。(^_^;でも、ぱっと見で悪いけど、お金を扱う業務は慣れているかもしれないけど、ネットワークの業務に慣れている職場の雰囲気とはとても思えませんでしたね。(^_^;まあそんなことはどうでもいいや。とりあえず、窓口の女の人に聞いてみます。(以下記憶に沿って書いているから正確じゃないかもしれません。)

vyama 「あの〜JANISネットの入会申込書をもらいたいんですけど…」
窓口嬢「???」
vyama 「あれ?JANISネットってここでは扱っていないんですか?」
窓口嬢「???」
vyama 「え〜と、JANISネットという農協でやっているネットワークサービスがあって、JA窓口で説明を受けられると聞いているのだけれど…」

そしたらですね、後ろの上司とおぼしき男性にこそこそという感じで話しかけたらその男性が「少々お待ちください」といって、電話口に行きました。なにやら話しています。私はこの時点で「JAに来たのは失敗」と思いましたね。(^_^;すぐにもらえると思ったから近くのJAに行ったのに、下手をすると郵送と同じくらいの時間がかかるかもしれない。それだったらもう一度メールで「もう一回申し込み用紙を送ってくれ」と頼むだけで済みますからわざわざ、JAなんかに寄ることはないわけです。大体私の会社に近くにはJAの金融窓口が近くにあるんだし、そこにもなかったら初めて取り寄せてもらったらいいのだし。(^_^;

しばらくしてから、「今、申込書がないから、取り寄せになります。明日の午前中には申し込み用紙が届くはずですので…」という説明を受けます。別にこっちはそんなに急いでいる訳でもないので「じゃあ明日来ます。」と言って会社に向かいました。でも、「お近くのJA窓口まで」と謳っている割には、あんまり力を入れていないのか、それとも職員への業務連絡が不徹底なのか。(^_^;

でもなぁ、WWW pageに「JA窓口で…」て書いてある以上、申し込み用紙くらいは用意しておいて欲しいです。また農家の方が「インターネットやりたい」とかいっても、現状ではまさか農協がそんなサービスをやっているなんて知る術がありません。大体職員からして知らないし、パンフレットも何も置いていないみたいだから。(^_^;まして窓口になっている以上、自分の組織が提供しているサービスについてはちゃんと客あしらいが出来ないと「本当にこのネットワークサービスは大丈夫なのかぁ?」と疑問をもたれてしまいます。もっとも、私の見た所、一般農協職員全員がネットワークに習熟しているとも思えないし、農協のサービスって色々あるから特定のサービスに窓口が十分に対応できないのもしょうがないかもね。

後日談ですが、直前の下線部の部分は実は「運営の中心は電算なのはみえみえだし、末端の職員に十分に情報が伝わらないのもしょうがないかもね。」となっていました。これはJANISネットから一部誤解がある旨、説明されたので「ごめんなさい」ということで修正しています。その説明では「電算という会社」とは別組織だし、管理運営も「電算という会社」とは関係がないということです。人的交流とかもないのかなぁ。だとしたらもったいないというか、まあ商売敵だから当たり前というか。(^_^;まあとにかく、JANISの説明を聞く限りあまり関係は薄いようです。これはわたしのちょんぼでした。でも普通そう思うよなぁ。(^_^;イイワケ、イイワケ

でも私、フレックスタイム制度を採用している会社でつくづくよかったぁ。普通の会社員だったら、農協の窓口が空いている間って会社にいるから取りに行けないよ。(^_^;

これは、JAとは直接関係がないけれど、JANISネットに入る前に色々サービスについて疑問があったので、JANISネットにメールで問い合わせた所、ちゃんとした回答がかなり迅速に返ってきました。当たり前といえば当たり前だけど、逆に当たり前のことがちゃんと出来ていないところも多いと思います。そうゆう意味ではJANISネットの周辺のJA窓口はともかく(^_^;、中心になっているスタッフには好感を持ちました。まあ、JANISネットについての感想は別に書きます。実はこれを書いている時点では入会していないから、感想なんか書けないんだ。(^_^;)

とりあえず、JANISネットのスタッフの皆さんに言いたいことは、うるさい奴が入ってきました(^_^;けど、あまりいじめないで下さい。(いきなり弱気(^_^;)


2つ以上の環境の統合

PC-UNIXが分からんでも書いたのですが、興味半分遊び半分で会社の私のサブマシンにWindows95でも動くhttpdをインストールしました。httpd(http deamon)というのはなにかとご存じのない方に説明すると、いや私もちっともご存じないんですけど(^_^;、こいつがバックグラウンドで起動していると、周りのマシンからそのマシンがhttpサーバーに見えるというものです。

実はこのホームページは、たとえ全体の99%だろうが全部じゃなければ一部だという意味で(^_^;、ある部分は会社でこっそり書いているんですが、このサブマシンは周りから"http://202.18.xxx.xxx/"と見えます。私のホームページは"http://202.18.xxx.xxx/vyama"にある訳です。で、ページヘッダーに<BASE HREF="http://202.18..../vyama/">なんて書いておくと、ページジャンプをする時にいちいち"http://202.../vyama/foo/hogehoge.html"ではなくて"foo/hogehoge.html"と書けて楽が出来る訳です。

ところが会社で書いたページを自宅で編集しようとなると、自宅なんかでは当然IPアドレスなんか振っていないからこのBASE HREF指定がかえって悪さをして、うまくジャンプができなくなってしまうんですね。だいたい、ジャンプ先にhttp://...なんて書きはじめたらその時点で他のところでジャンプできなくなってしまいます。

どうするのか一瞬迷いましたが全部のファイルをホームディレクトリにおいて、BASE HREF指定をしなければいいのに気がつきました。そうか、考えたら簡単でしたね。(^_^;ただ、ディレクトリとか切った時にはどうなるのだろう、と思ってこれも実験してみました。なんだ、ちゃんと出来るじゃないか。(^_^;よく確かめもしないで色々やるからどつぼにはまるんですね。でもどつぼにはまるねたが無くなったらこのページに書くねたが無くなってしまう。困った事です。(困らねえょ(^_^;)


CGI登録一件5000円?

これはある意味でこのページが載っているJANISネットへの非難がましい話になるかもしれません。が、とりあえず感じたことを書きます。

このプロバイダーはcgiが使用可能なのですが、cgiを登録するのに5000円 かかります。案内にはアクセスカウンタとか基本的なサービスは用意されているらしいので、安心しますが、皆さん、cgi登録料金が5000円というのは安いと思いますか?

JANISに問い合わせた所、「これはcgiが安全なものかをcheckする手数料も含む」との返事が返ってきました。自分で作ったcgiをdebugしてくれて5000円なら安いです。それでは1万行くらいのperl cgiスクリプトをdebugしてもらいましょう。 ちゃんとdebugできるのでしょうか?私が仕事で請け負ったら10万円くらい取ります。(^_^;

でもcgiスクリプトは、「ちゃんと考えないとあっと言う間にdead lockになってしまったりあさっての方向に行ってしまう」という危険性もはらんでいます。それを考えたら、cgiには一定の歯止めを掛けたいというのは分かるのよね。でも、アクセス数/CPU timeでこの比率が異常に大きい奴を自動的に優先度を下げるとか出来ないのかな。

ただ、今まで登録されたcgiスクリプトを公開して会員に自由に使わせるといったサービスをやればいいのになぁ、と思ったらある程度はやってくれるみたいです。

でも、cgiのdebugに協力してもらうという名目で金を吸い取る以上、こっちもたっぷり骨までしゃぶりつくつもりで利用させていただきます。(^_^;なんちゃって。


お仲間発見! VBで二重起動してしまう

おれのPC日記に私と同じはまりかたをしていた人がいました。Visual Basicで作ったApplicationは何もしないと二重起動できてしまうのですが、どうにもこの二重起動が禁止できません。(T_T)一通りマニュアルには目を通したつもりだったのですが、それっぽい記述がありません。

しょうないから、Mutex Objectを作ってやってこれを見て二重起動をチェックする事にしました。が、何故かMutex Objectの作成に失敗してしまいます。う〜む、declare functionの定義もパラメータも問題ないんだけどな。 で、しょうがないから外部のDLLにMutex Objectを作成するだけの関数を作成しました。で、Mutex Objectのオーナーはスレッドなんだけど、今ソースを読んでみるとMutexを管理するためだけのthreadを生成している。 う〜む、自分で書いたんだけど何故こんな風に書いたのかよく分からん。(^_^;

で、実はこんな事をする必要は全然ありません。PC デベロッパーネットワークのVisual BasicのFAQか何かを参照してもらうと分かりますがApp.PrevInstance プロパティーを調べればよいというのが正解です。

私はAppオブジェクトというものをよく理解していませんでした。Appキーワード一発で自分自身のプロパティーを参照できるのね。知らなかった。(T_T)てっきりApp Objectに何かをsetしなくてはいけないと勘違いした私は大馬鹿でした。(^_^;

ちなみにVisual Basicから必死こいて、Mutex Objectを作ったりしていたんだけど、Visual Basicだけではうまくいかなくて、外部DLLにして解決しました。これは何故でしょうか?やっていることは同じなのに。未だに原因不明です。そういえば時々、うまくいかないAPIコールがあるけどこれも何かの勘違いかな?(こんな時はDLLに下請けさせると大体うまく行く)

先程の「お仲間」。やっぱりはまるところってのは誰でも一緒なんだね、と一安心します(するんじゃないって<オレ)。

ところで、App.PrevInstanceで得られるInstanceをActivateするにはどうしたらいいんでしょう?やっぱりWindow Titleが何か指定してAppActivateするしかないのでしょうか。今回はこれで大丈夫なんだけどWindow Titleが不定だったらどうすればいいのでしょうね。(^_^;知っている人はこちらまでメールを下さい。<(_ _)>


PC-UNIXが分からん

なんか中村正三郎さんのホームページとか藤原博文さんのページとかをみているとフリーのPC-UNIXが結構安定しているらしいと聞きました。で、Windows95が不安定なことは身に染みて分かっているし、なんといってもフリーのPC-UNIXはただでソースがついてきているし、インストールもそんなに面倒じゃないと言うことで試してみる気になっていました。

インストールするマシンはこんなスペックです。
今時 FMV 466D
今時 Pentium Overdrive プロセッサ83Mhz
今時 24Mbyte memory
今時 内臓IDE 340Mbyte
今時 Buslogic SCSIボード 外付け SCSI-HDD 1Gbyte(ID1) と 2Gbyte(ID0)
340Mbyte MO(ID2)
今時 倍速SCSI CD-ROM(ID3)
今時 14400bpsのモデム
Sound BlasterAWE32

HDDは1Gは持っていました。ただLinuxをインストールするのに1Gbyteは欲しいけど、もう700MbyteくらいWindows95で使っていたので、思い切って2GbyteのHDDを買って、その2Gbyte HDDをWindows95に当て、今まで使っていた1GbyteのHDDをPC-UNIXに当てて使うつもりでした。で、Windows95は今までの資産もあるので、
IDE(boot HD) + 2Gbyte HDDをWindows95に
使い古しの 1Gbyte HDDをPC-UNIXに
という割り当てにしました。Windows95は確かboot HDDにしかインストールできないはずですし、安全性も考えて、これ以外の構成でしかインストールできないとなるとあきらめるつもりでいました。まあ、次のマシンを買ったら今のマシンをつぶしてみるかという気持ちです。(^_^;(一体いつになるのだ?)

で、まずLinux入門でインストール。これはちょっとインストールするパッケージの選択を間違えたりとか、インストールするHDDを間違えてWindows95のHDDまで吹き飛ばしちゃったりとか(^_^;(ああ、340Mbyteとはいえ大容量のバックアップMOがあって良かったぁ)、色々あったんですが、3回くらいやり直したら、結構快適に動くようになりました。Windows95より結構さくさく動いている感じです。

ところがですねぇ、悪い先輩がいましてねぇ(^_^;。FreeBSDじゃなきゃ駄目だ、というわけですよ。私はFM-7の頃からマイナーパソコン路線を歩んできましたから、UNIXはほんの初歩程度しかよく分かりません。FreeBSD(NetBSD)の方がインストールも楽だというのでインストールしました。

ところがですね、Linuxはうまくインストールできたんですが、「FreeBSDはWindows95のインストールよりも楽」という言葉を信じてインストールしたFreeBSDが全然うまくいきません。(^_^;何回インストールしても成功しません。少なくともこの環境ではFreeBSDはインストールはうまく出来るとメッセージは出るのですが、肝心のbootが駄目です。bootの選択画面が表示されて、どちらかを選択する画面が出てこなくて、Windows95のブート画面に行っちゃいます。

で、思い切ってboot driveのパーティション構成もちょっといじってみました。そうしたらなんとかbootを始めるところまでは行きました。けど、「Booting」とかのメッセージを出したところで、いきなりreboot。(T_T)多分bootには20Mくらいのカーネル部分を設定しなければいけないのでしょう。Windows95ではboot driveには沢山DLLが入る可能性があるので、1MbyteでもPC-UNIXに侵食されるのだったらインストールをあきらめる方針でいたので、もうFreeBSDをインストールするのはあきらめました。

ところが会社で、とりあえずHTTPdをたちあげる方がいい仕事があったので、それにかこつけて、会社のマシンにFreeBSDをインストールしました。インストールはうまくいきました。カーネルも動いています。ところがですね、ネットワークカードの3c503Cを認識しないのですわ。一体どうやったらいいものか、途方に暮れます。

で、最後にdebian versionをインストールしたんだけど、パッケージのインストールが成功しないとhand bookのdocumentが読み出せない。(^_^;Sound Blaster経由で接続しているCD-ROMのドライバが何か分からないから、インストールがうまくできなくて、hand bookのdocumentを読みたいのに、documentを読むためにはCD-ROMの設定をちゃんとしてやらなければいけない。これでは卵とニワトリの関係です。というわけで、会社でFreeBSDをインストールするのはあきらめました。(T_Tもうちょっと自宅で研究して見ようかと思います。でもこの部分は絶対評価されない部分なんだよなぁ。(T_Tつまりただ働きみたいなもの。とにかく、色々やってみたけど結局駄目で、別のマシンにWindows32 baseで動くHTTPD deamonを動かす事でお茶を濁す事にしました。(T_Tでも、こっちのhttp deamonは快調。これだったら最初からこのhttpdを動かしていれば良かったけど、cgiはshで書かれているかもしれないと言うのが私の足を引っ張りました。(^_^;あとでSlackwaveがネットワークカードを認識しないのを確認したら、仕事ではFreeBSDはtouchしないでおこうと思います。くやしいけど。


FM Menuがインストールできない

お仕事で開発しているWindows95の某プログラムのある機能が、FM Menuなどの常駐メニューソフトを動かしていると機能しないという障害レポートがあがりました。その機能とは、「PPP接続のためのモジュールがインストールされていないなら、インストールして、コンピュータをリセットした後、自動的にあるプログラムが起動するようにする。」というものです。

リセットした後にプログラムを自動実行するのにはいくつかやり方があるのですが、私は一番単純な「スタートアップグループに登録しておく」というやり方を選びました。(他にはレジストリをいじる方法があります。)

で、このアルゴリズムで動かないということは、いろいろ別の方法を考えなくてはいけません。で、テストをしてみる事にしました。(^_^;

まずFMメニューをテストマシンにインストールしなくてはテストできません。(当たり前)で、後でどうしてかいいますが、開発スタッフでFM/Vを使っている人はあまりいないので困っていたら、比較的新しいFM/Vをサポートの連中が持っていました。さすがサポート、検査チームですら持っていない、しかしユーザーの多いマシンは揃えていました。で、そこからCD-ROMを借りてきてインストールしようとしたら、FM-Menuのsetupプログラムはなくて、Backup CDにしか入っていない。じゃあ、backup cdはどうやってHDDに内容を書き戻すかというと富士通の独自コマンドでコピーします。で、このコマンド(正確には.batに入ったコマンドの一部)が途中でbiosがどうのこうのとエラーを出して続行不可能になってしまい、オーソドックス(でもこれも一応FM/Vだぞ。VL-busだけど)なAT互換機ではFM-Menuをインストールできませんでした。(T_T)

で、ファイルの中を覗いたら、特殊形式で格納してあって(ほとんどplainみたいだが、どう再生したらいいか調べなくてはいけないのが面倒)つまりBIOSが認識できないと再生できないことになっていました。

これにはまいりました。だってそんなことをするソフト屋さんがいるとは思いませんでした。だって考えても見てください。今までFM-Menuを使いこなしていた人(そんな人っているのかというのはさておき)は富士通製以外のマシンにアップグレードした時には、このバックアップツールがBIOSを認識しない限り、FM-Menuを捨てなくてはいけないんです。ドライバソフトならともかくWindowsアプリケーション、しかも高々メニューソフトで機種依存というのには頭が下がります。(^_^;BIOSが見つからなかったら単にドライバのインストールをskipしてアプリケーションのインストールをすればいいものをそれをやらないというのも「謎の仕様」です。(^_^;でもひょっとしたら、PCI busじゃないと認識しないというのであればこれはこっちがゴメンナサイです。誰か追試験をしてくれませんか?(^_^;

あと、バンドルソフトはどうなるのでしょうか?詳しく調べていませんが、この調子だとFM/Vを買ってそのバンドルソフトの正式ユーザーでも、別のマシンにインストールできないことになりますよね。だって全部backup cdに入っていて、たまたま新調したマシンのBIOSをバックアップソフトが認識しなかったら、インストールできないんですから。(それとも正式版のソフトは全然ついていないのかな?)例えばMicrosoftのユーザだったら、「どれか一台」で使っている限りは合法だから、なにも買い替える前のFM/Vで使う必要はないんです。でも、この仕様だと別のマシンにインストールして使えませんよね。

ところで、富士通には悪いけどFM/Vシリーズでいい噂を聞かないんですよね。だからうちの会社では開発スタッフではFM/Vを持っている人間が一人もいない。(^_^;いや、私も会社と自宅で使っているけど、私のマシンはDX2 66Mhzですからね。(^_^;これくらいだと品質なんてのはたいした違いは無いです。どんなにいい品質でもこのスペックじゃぁね。(^_^;でも昔の富士通のマシンは結構面白かったんです。私自身も一番最初に買ったコンピュータはFM-7でしたから思い入れもあります。でも、「もうFM/Vには手を出さない」というユーザも結構いるみたいですね。悲しいことです。

ちなみに私の会社では「鬼門のAT互換機」と呼ばれる機種が3つあって、その機種で動くなら自作機でさえも全く問題無く動くといわれています。その3機種の1つがFM/Vです。(^_^;後の2つはヒントだけ。I**のA*****と、M*******のW****です。

社内を探したら、何とかsetup.exeでインストールできるFM-Menuを入手できました。でもこれはバージョンが古いのか,全然問題があらわれずこれはこれで困ってしまいます。(T_T)でもこんなメニューソフトをありがたがって使っている奴がいるのかぁ?とも思うけど、最初に出てくるソフトをありがたがって使っている人は多いんでしょうね。もっともこの意見については私自身のメニューソフト嫌いのバイアスがかかっていることは認めます。(^_^;


RASAPI32.DLLがない!

今、お仕事でダイヤルアップ接続のためのツールを書いています。で、PPP接続をするための環境にTCP/IPをインストールしたり、ダイヤルアップアイコンを作ったりアカウントが正しいものか調べるために実際に接続してみたりします。あれかな、と思った人、多分外れです。(^_^;ふざけたペンギンの絵のあるパッケージソフトですが、置いてあるお店は少ないでしょう。(^_^;今度パソコンショップに行ったら探して見てください。

で、Win32の場合にはこのようなデータ通信はRASAPI(Remote Access Service API)というサービスを使います。で、そのサービスを提供するのがRASAPI32.DLLというファイルです。ところがこのDLLはシステムの状況によってインストールされたりされていなかったりします。ですから、RASAPI.DLLの中のfunctionを呼ぶ場合には

foo(...)
とかやってしまってはRASAPI.DLLがない場合、エラーが起きて起動しませんから
lpfnfoo = GetProcAddress(hModule, "foo");
lpfnfoo(...);
としなくてはいけません。

で、私は前者の方法でやってしまいました。しかもコンピュータのプレインストールモデルに入れる奴で。(-_-;)そのプレインストールされたマシンをお店で見るたびに心が痛みます。そのプレインストールマシンを買った人に一言。ごめんなさい。 <(_ _;)>


Default StyleがvbMinimizeFocusで失敗

RASAPI32.DLLがない!でも書きましたが、私はダイヤルアップ接続のためのツールをお仕事で書いたりしています。で、そのプログラムは大きく分けて2つの.EXEファイルと下請けのDLLから出来ています。片方の.EXE(仮にAとする)では主にユーザーインターフェイス部分を担当して、もう一方(仮にBとする)はダイヤルアップの設定などをやらせています。で、AからBを別プロセスとして呼び出しています。で、AはVisual Basic 4.0(Visual Basic4)で書いてあります。実はこれ、最初はVisual Basic4で書いたのは仕様検討のために、ユーザーインターフェースだけちょこっと動くでっち上げのプログラムをVisual Basic4で書いて、あとでC/C++で書き直すつもりだったのが、それが(いつものように)時間がなくて結局そのでっち上げのプログラムをプロトタイプとしてほんちゃんを制作したので、内部構造が結構ぐちゃぐちゃになっています。(^_^;あ、話がそれましたね。

で、AからBを呼び出すのにVisual Basic4ではShell関数というのを使います。使い方は簡単で

Shell("b.exe")
で、b.exeを実行できるわけです。で、実行して見たら、動くは動くんですけど、なんかおかしい。具体的にはb.exeで表示するはずのメッセージボックスが表示されていない。フムム、どうしてだろう。MessageBox自体はAPIを直接呼び出しているし、パラメータも特におかしなところは何もない。単体で起動するとちゃんとメッセージが表示される。(?_?)よく見て見るとタスクバーにフォーカスの当たっているプロセスがあって、そいつをクリックしてやるとメッセージが出てきます。そんな動きをするようにプログラムを書いていないし、大体どうやったらこんな動きをするプログラムが書けるんだ。(^_^;b.exeのソースを必死で眺めましたが全然原因が分かりません。(T_T)

Visual Basicでプログラムを書いた事のある人は気がつきましたね。(^_^;実はShell関数のフォーマットは

Shell("b.exe", windowstyle)
ただしwindowstyleが省略可能で、この時にはb.exeに渡されるwindow styleはvbMinimizedFocus、つまりフォーカスを持ち、最小化されたウィンドウになります。b.exeのwindow styleが最小化されたウィンドウだったので、あんな風に動いてしまうわけです。いやあ、絶対b.exeの方に問題があるんだとばかり思っていましたけど、原因はa.exeの方だったんですねぇ。(^_^;

まあ普通はc/c++で書くからこんなトラブルに巻き込まれるのは世の中で私だけでしょう。(^_^;


次の「どつぼ」の記録

「どつぼ」の記録 目次

作者(vyama_at_janis_dot_or_dot_jp)への感想・意見など。
spamよけのため、_at_や_dot_は適宜@や.に入れ替えてください。

目次ページ