日々のつぶやき(00/02/02〜)

2000/02/29(Tue)

S''さんが出社。で、例のメモリリークに関して「メモリなんか沢山あるんだからわざわざ解放する必要があるんですか?」と質問される。なんかがっかりくる。今回の場合は多分にS''さんがDLLを作っていて、たまたまそのDLLを利用するアプリケーションの都合で、呼び出した直後にFreeLibrary()してくれたから、結果としてメモリリークが起きなかったんだけど、Mac版はスタティックリンクしているんだから、そんな仕様外のことを前提としてライブラリを作られたらたまったものじゃない。その意味で「free()するな派」の主張ってその意味では「教育的に迷惑な主張」だと感じちゃうんだよなぁ。その主張の妥当性が分かっているだけに、そう感じる自分が憎いわぁ…なんてね。

2000/02/25(Fri)

あれだけ検査をしたつもりだったが、PDFの出力モジュールがハングアップする障害が判明。モジュールを作ったS''さんは今日はお休みだったので、代わりに傷害の原因をざっと調べてみようと思った。が、確かにハングアップするんだけど、デバックモードで実行してみるとエラーが出ない。この手のリリースモードでしか再現しない障害というのは潰しにくいバグの1つである。今年入ったばかりのS''さんの手には余るだろうと判断して、原因を追求してみる。

で、原因を追求していったら出るわ出るわのメモリリーク。メモリを割りつけているのに、全然解放していない。実際にはDLLを呼ぶたびにFreeLibrary()していて、FreeLibrary()で割りつけられたメモリが解放されているので(本当か?)、ちょうど今今、fj.comp.lang.cで旬になっているmalloc()/free()論争と絡むかな?と思ったのだが、呼ばれる度にFreeLibrary()するというのはこのDLLの仕様には含まれていない(たまたまそうなっているだけ)ので、ちゃんと領域解放するようにメールを書いた。これ見ると、「free()するな派」の主張って声高に言って「変な誤解を広める」ような気がして止めてほしいよなぁと思ったりする。

で、肝心のハングアップする原因だが、調べてみると単純なバッファオーバランが原因だった。100バイトしか用意していないメモリ領域に101バイト以上書いちゃうという例のパターン。デバッグモードだと、他の局所変数もスタックに確保されるから、ちょっとくらいはみ出してもその局所変数が壊れるだけなんだけど、リリースモードで最適化すると、その局所変数が全部レジスタに割り当てられちゃって、変数がスタックに割り当てられないから、関数のリターン情報とかのクリティカルな情報をぶち壊すというストーリ。

でも、これをきちんと説明するとなると、C/C++がアセンブラレベルで何をやっているのかまで説明しなくちゃいけないんで、アセンブラを知らない人相手だと、とても説明しきれないんだよね。(;_;)

2000/02/23(Wed)

エディタ部分の文字列の検索モジュールに取り掛かる。若干足りない部分もあったがほとんどの部分は今まで作ってきた汎用ライブラリを使えば結構簡単にできそうだ。時間がかかりそうなのはSJIS<->内部特殊コードの相互変換部分だけかな。内部特殊コードにはいろいろ情報がつまっているんで、その辺をどうするかが問題なのだが、UNDO処理を実装する時にその辺のデータ構造は先を考えて、かなり融通のきく(逆に言えば無駄が多い)データ構造にしておいたので、かなりあっさり行きそう。もっとも検索ダイアログの処理なんかはWindowsプログラミングと比べると信じられないほど面倒臭かったりするんだが。(苦笑)

2000/02/24(Tue)

やっぱりMacよりWindowsのほうが面白かったりするので、知らず知らずのうちにWindows2000の設定にはまっていたりする。不満を述べると、コマンドプロンプトの使い勝手が悪い。例えば今までのWindows98環境でエディタを起動したい時には、hide.batとかいうバッチファイルを作って秀丸を起動していた。Windows95/98だと別プロセスが起動してすぐにコマンドプロンプトに制御が戻るのだが、Windows2000だと、秀丸が終了するまで制御が戻らない。何か抜け道はないかといろいろ試行錯誤してみると、DOSKEYのエイリアスとして登録すればちゃんとコマンドプロンプトに制御が戻ることが分かった。ところがそのDOSKEYのエイリアスをcmd.exe窓を起動した時に設定する方法が分からない。autoexec.ntに設定しても無駄だったし。う〜ん、どうすればいいんだろう?

2000/02/22(Tue)

Macのリハビリ。まずはコンパイラのリビジョンをアップする。このMacintoshでの開発環境であるCodeWarrior、バージョンアップどころかリビジョンアップさえ大変なことで有名。リビジョンアップしたら、ライブラリをユーザがビルドしなくちゃいけない。このライブラリのビルドに手間取る。まあ、リビジョンアップ程度だからこの程度の大変さで終わっている訳で、バージョンアップなんてことになったら、ヘッダファイルとかライブラリもがらりと変わっていることが少なくないので、そうなったらソースファイルを変更しないといけない。これが結構大変なんだよね。

2000/02/18(Fri)

W2Kのアプリケーションの設定が大体終って何とか手に馴染んだかつての環境に戻せた。終ってみると、日ごろいろいろ設定していたんだなぁと感じる。W2kにしたおかげでdeletateもサービスとして立ち上がるようになった、今までwar-FTPDを使っていてMacintoshのInternet Explorerからのファイル転送がうまくいかなかったなどの問題が解決して、移行してまあ成功だったのかなと思う。心配していたディスプレイドライバもNTのドライバを強引にインストールしたら何とかなった。(^_^;

2000/02/16(Wed)

機能なんとかインストールに成功したW2K。サブマシンにインストールしてあったソフトウェアをインストール/設定していく。驚いたのだが、大したことをやらせていないと思っていたサブマシンでもこうやって改めてインストール作業をしてみると結構いろんなアプリケーションをインストールしなくちゃいけないし、その設定もしなくちゃいけない。

2000/02/15(Tue)

ソフトハウスに務めていると最新の製品が一般店頭よりちょっとだけ早く手に入れることができる場合がある。MS製のOSだと、今回のようなメジャーバージョンアップの場合はまず発売日よりは早く届く。Appleの場合はβはとにかく最終的な製品が届くのが一般店頭に並ぶより遅い。高いお金を払って、最終制定版に関しては一般流通よりも扱いが低いというのはなんかおかしいよなと思うけど、まあAppleはベンダに冷たい企業だという印象があるのでさもありなんと思う。いや、そんな事はどうでもよかった。(^_^;

Win2000が発売日よりも早く会社に届いたので、早速サブマシンにインストールしてみる。当然必要なファイルをバックアップをとっておいてからの新規インストールだ。基本スペックはPentium200Mhz、HDD 4 + 6 Gbyte、Memory 144Mbyteというちょっと古めの構成。Pro.をインストールしようと思っていたけれどPro.は先約があって借りられず。どうせ社内にFTPで公開しているフォルダがあることだしと思って、Server版をインストールしてみる。

インストールは散々だった。安いディプリゲート業者を使ったのか途中でCD-ROMからあれが読めない、これが読めないということでさんざんエラーメッセージが出てくる。サーバー版だからIISも勉強がてら組み込んでおこうと思ったら、その関連のファイルがCD-ROMの中に入っていないとかいって、これもエラーの連発。30回くらいそのエラーが出てきた所で頭にきてリセットして再インストールしても、またこのエラーが出てくる。おかしいと思ってCD-ROMを調べてみたら、「xxxというファイルがありません」と出てくる理由がそもそもCD-ROMにそんなファイルがないということが判明。で、とりあえずIISをインストールしない設定で再インストール。でも、IISをインストールしていないNTサーバって一体なんの意味があるんだ?(^_^;なおインストールし終わった後、IISを追加インストールしたら、そのようなエラーは起きなかった。謎である。

インストール作業自体も途中で止まってしまったことが2度、そこから修復セットアップして何とかOSが立ち上がる所までは行ったのだが、今度はトレイアイコンをコントロールするプログラムが自動起動しないので悩むとか、変な所で試行錯誤を繰り返す。NTってちゃんといじったことがないから「Windows95/98ではこのパターンでOK」の経験がことごとく失敗したような感じで結構疲れる。それでも何とかWin2Kが起動できて、サービスも機能している程度にはなったのでよかった。

2000/02/14(Mon)

何とか制定。もっとも今回からは工場が東京にないので「ぎりぎりまで粘って始発の電車に乗って、工場に直接持っていく」という技が使えないので、4時前までにはマスターを作らなきゃいけないし、実際作れたのでいつもと比べるとのんびりした制定日になった。

2000/02/08(Tue)

夜に雪が降ったらしい。通勤に使っている道路は日当りが悪いので雪が凍っている。そんな訳で、いつものスクータを使うのはあきらめて電車で出社。

制定の最終判断をする上司のNさんが今日もインフルエンザでダウン。で、制定の見極めが出来る立場の人がいないので、2/10の制定の予定が2/14に延びることになった。今回の制定の直後に3連休があって、2/14工場納品という予定だったから、実質的な制定日は2/13だろうなと思っていたので、1日遅れたにせよ、あまり挫折感はなかった。まあ、これ位の遅れは土壇場ではありうるものだ。

心配なのが、今年新人のS''さんの書いたモジュール。現段階では「特殊な場合に変なことが起きる」という問題しか残っていないはず(というか、そうじゃないとまずい)なのに、あのモジュールだけは「想定内の場合だけど、変なことが起きる」というのが残されている。度胸がいいのか、単に経験がなくて「すぐ分かるようなバグを抱えたプログラムが世に出てしまう」恐さを知らないだけなのかは分からないが、なんだか見ていてはらはらする。あんまり心臓によくない。早いところ、何とかしてほしいぞ。(^_^;

2000/02/04(Fri)

東京のホテルの夜の感想「寒かった」。このホテル、ちゃんと暖房が効いているんだろうか?一応エアコンを入れておいたんだけど、音がやたらうるさいくせに、あんまり暖かくならない。もっとも寒い地方の人は暑くなるくらいじゃないと満足しないというのもあるのかもしれない。

この日も媒体回り。朝、「この方向に向かっていけば駅が見つかるはず」とずんずん歩きだしたのはいいんだが、駅が見つからなくて結局一区間歩くことになってしまった。(^_^;その途中で通りすがりの老夫婦に道を聞かれた。そんなもん、こんな田舎者に道を聞くほうが悪い。まあ、向こうも初めての土地という田舎者っぽかったが。(^_^;事情を話して、歩いている途中で見つけた交番の位置を教えてあげたが、ちゃんと目的地につけたんかな。(^_^;

知らない人の前でよく知りもしないことを知ったかぶりして話すというのはやっぱり緊張するもので、プレゼンテーション前に脈拍を計ってみたら、1分間に100以上。普通は60回弱のはずなので、緊張しているのがよく分かる。(^_^;;;Iさんに言わせると「記者の前で緊張するなんてお前ウブだなぁ」と笑われる。ええ、どうせ私はウブですよ〜だ。(^_^;

媒体回りが終って最終の特急で松本着。ほっと一息。

2000/02/03(Thu)

媒体回りの初日。まず会社によってデモ用のノートパソコンを梱包してから電車にのる。しかし、このノートパソコン、異常に重い。一体何キロあるんだろうか?運んでいて肩が抜けそうになった。

東京支社に着いてほっと一息。しばらくしてから、雑誌社に赴く。東京の地理は全然分かんないので、ひたすら同行している人にくっついていくだけ。人見知りする正確なので、知らない人の前でうまくプレゼンテーションするなんてことが出来る訳もなく、喋る前、途中、後と全部頭が真っ白状態で殆ど何を喋ったのか憶えていないという…。(^_^;時折、S3さんがフォローしてくれたので助かった。

2社回った所で、今日は終わり。一緒に回ってくれたS4さんと営業のIさん、それにOEM関係でお世話になったMさんと一緒に食事をする…はずだったんだが、新宿駅ではぐれてしまって一騒動。一旦東京営業所に戻って、Iさんの形態電話番号を調べて、やっとのことで3人が食事している所に行き着く。しかし新宿駅って何であんなに複雑な構造になっているんだぁ!

2000/02/02(Wed)

ソフトウェアの新製品やバージョンアップの場合、その評価記事なんかが雑誌にのるといい宣伝になる。という訳で、その頃合いを見計らってコンピュータ雑誌社をデモをして回る。これを「媒体回り」と呼ぶ。本来はプロダクトリーダー的な役割をしている人がこれをやるんだけれど、プロダクトリーダーのNさんも、アプリケーションのコーディングの中心的役割をしているKさんもWIndows版の制定が間近に迫っているので、とてもそんな余裕はない。という訳で、私に媒体回りの白羽の矢が立った。デモして回るといってもMac版の作業で手一杯だった私はWindows版のバージョンアップに関してはろくすっぽ知らない。一夜漬けみたいな感じで新バージョンの目玉とかを頭にたたき込む。これで、知ったかぶりをして編集者の前で「こんなによくなったんだよ」とか言うんだから、いい加減といえばいい加減な話ではある。(^_^;

もっとも一緒に媒体巡りをするS3さんも紹介する製品については、ついこの間受け持ちになったばかりなので、新製品について知らないもの同士のペアという妙な取り合わせの媒体回りになった。とはいえ、S3さんは媒体周りは場数を踏んでいるので、フォローしてもらえるだろう。

という訳で、媒体回りの資料を作ったり、S''さんの作ったモジュールの出来を検証したりして一日が終る。


2000/03 のぶつぶつ

2000/01 のぶつぶつ

日々のつぶやき 目次

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

目次ページ