まどかの 日記

[2003/07/14〜2003/07/20の日記]
[2003/07/21〜2003/07/27の日記]
[2003/07/28〜2003/08/03の日記]
[2003/08/04〜2003/08/10の日記]
[2003/08/11〜2003/08/17の日記]
[2003/08/18〜2003/08/24の日記]
[2003/08/25〜2003/08/31の日記]
[2003/09/01〜2003/09/07の日記]
[2003/09/08〜2003/09/14の日記]
[2003/09/15〜2003/09/21の日記]
[2003/09/22〜2003/09/28の日記]
[2003/09/29〜2003/10/05の日記]
[2003/10/06〜2003/10/12の日記]
[2003/10/13〜2003/10/19の日記]
[2003/10/20〜2003/10/26の日記]
↑過去3ヶ月くらいの日記はこちら↑

まどかは「P/ECE Hand Book」を応援しています


0751
2003/11/02()
 カラオケとBOOKOFFめぐり
 はい、今日はまたお昼頃まで寝て、昼食は我が家で言う通称「だら焼き」を食べて、嫁さんの提案でカラオケに行き、その後は3件くらいBOOKOFFをめぐって帰ってきました。

 今日の戦利品は魁!!男塾2冊と、さいとうたかをのコミックを各種と、ちょっと遊ぶゲームがなくなってきたので、前々から欲しかったメタルギアソリッド2を買ってきました。
 
 メタルギアシリーズはMSXの頃からすべてのシリーズを遊んできているので、結構思い入れがあるシリーズです(^^

 夕飯はBOOKOFF近くの100円回転寿司の元気寿司で取りました。サーモン祭りで、生サーモンが美味しかったです。

 家に帰ってからは、買ってきた漫画を読んだり、メタルギアをして遊びました。

 明日は連休の最後なので、家でのんびりしようかな。
 それではおやすみなさーい。

0750
2003/11/01()
 ファミコンの4in1買いました(^^;
 えー、今日はお昼まで寝て、昼食は近くのカフェ(最近行きつけ(^^)でランチを食べ、薬局で化粧品や米を買っていったん家に戻り、荷物を置いて今度は大須にくり出しました。

 今日の目的はファミコン探しと本屋さんですが、ちょっとその前にこの前宿を予約した旅行のための新幹線の切符を駅に買いにいって、それから100均などを経由して大須に向かいました。

 大須ではある店の610円の金券を持ってちょっと高めのものを買おうと、なんか外国製の「フレンドコピュータ」と裏に書かれた怪しい4つのゲームが入っているカセットを選び、レジに持っていったのですが、金券はこの前買った時のレシートが一緒に無ければ無効となっていて、そうならないようにわざわざ金券にレシートがホッチキスで留められた状態で貰ったのですが、嫁さんがレシートを誤って捨ててしまったようで、金券は無効になってしまいましたが、その4in1がどうしても欲しかったので、そのままの値段で買いました。っていっても、1800円ですが(^^;

 で、次は本屋に行って、ポケコンの本今時のアセンブラの本を探しに行ったのですが、どちらも置いていなかったので買うのは断念し、日経ソフトウェアを買って帰りました。
 ちょっとどうでもいい話ですが、うちの近くのコンピュータ書籍を専門に扱っている本屋では私が予約して購入した「CPUの創りかた」がなんかコーナーが出来て山の様に置かれていました(^^; 売れてるみたいですしね。

 家に帰ってからはさっそく買ってきたファミコンをして遊びました。
 中には、「脱獄」っていうダブルドラゴンみたいな横スクロールのアクションと、「KAGE」とかいう忍者龍剣伝みたいなやつと、「ゲバラ」っていうちょっとレアなSNKのゲームと、ストIIのファミコン移植版(笑)。
 この手のNin1にしてはなかなか面白いものばかりだったので結構満足です(^^

 特にゲバラは面白い上にレアなゲームなので、買ってよかった気がします。ちなみにストIIは十二人快打という名前でしたが、結局選べるのは5人とその色違いの計10人で、COMが波動拳とかを打ってくるので出せるはずなのですが、入力タイミングがシビアなのか、いくらやってもでないので波動拳連発のCOMには勝てませんでした(--;

 と、ファミコンの後は夕飯を食べて、今日買ってきた本を読んでたら急に眠くなったので、今日はこれでおしまい。
 明日は、何して遊ぼうかな。
 それではおやすみなさーい。

0749
2003/10/31()
 一応OKな感じです(^^
 はい、今日も引き続きNo.15の開発をし、夕方頃までに提出できる状態まで完成したので、社長にチェックしていただいたら、ちょっと待ってよ!そんなの聞いてないよー!!ってな不具合がいくつか見つかりちょっと焦りましたが、なんとか修正してお客様に送りました(^^

 で、今日は昨日・おとついと結構がんばったので、早めに家に帰りました。

 今日はがんばった自分への御褒美と、近くの焼肉屋が平日半額セールをやっているということで、夕飯は焼肉を食べに行きました(^^

 満腹になって家に帰ってからは疲れが溜まっているせいか、いつもより早めに就寝しました。
 今週はなんか1週間が早く感じたなぁ(- -;

 明日は嫁さんと大須にくりだす予定です。
 それではおやすみなさーい。

0748
2003/10/30()
 今日もがんばりました(^^;
 えー、今日は朝からお客様がみえたので、開発中のNo.15をデモって、チェック用に持ってきて頂いた液晶モニタ(今回のシステムでは液晶モニタの表示ドライバに制御信号を送る必要があるので、それ用に)を使って制御具合(タイミングとか)を見ていただいて、今週いっぱい液晶モニタを貸していただくことにしました。
 やっぱり、モノが無いことには、デバッグなんかできないしね。

 と、液晶制御の部分はまぁ、これで置いておいて、明日の提出期限に間に合わすため、今日もちょっと遅くまで残業して、残りの大きなヤマ場を午前2時までかかってこなしていきましたとさ(^^;

 明日は残りの細かい部分を一気に仕上げて、社長に確認して頂いてからメールでお客様にプログラムを送る予定です。

 それではおやすみなさーい。

0747
2003/10/29()
 いきなりピンチに(j−j
 はい、今日は朝から昨日見つけた宿を予約して会社に行き、明日お客様がみえる予定なので、それに合わせてNo.15の方を進めていたのですが、明日みえる2人のお客様のうちの1人が急遽今日みえることになったので、慌ててデモの準備をしてました。

 で、ちょっと夕飯の時間をずらしてデモを行い、まぁまぁの評価だったのですが、このシステムの提出期限って言うか、まぁ第1回目(2回目かな?)の提出期限が今週の金曜だということを今頃知らされ(ガビーン。ま、ちゃんと聞いていなかった私も悪いのですが(汗)、いきなりピンチになってきました(j−j

 そんなことなので、今日は当然かなり残業しないと間に合わないわけで、今日は一人寂しく午前4時までやりましたとさ(j−j

 でも、そのおかげで明日までに何とかしたかった部分はほぼ終わったので良かったです(^^;

 明日は別のお客様にデモって、明後日期限に向けてがんばります。
 それではおやすみなさーい。

0746
2003/10/28()
 宿がみつからなーい
 えー、今日は主にNo.15と頼んでいるマニュアル制作のチェックを主にやってまして、まぁ仕事の方は順調のような感じなので、ちょっと置いておいて、今日は夕飯に帰ってからと、また仕事に行ってちゃんと帰って来てからとで、結婚1周年記念としてちょっと旅行に行こうかということで、ネットで宿探しをしていました。

 一応第一目標は京都で、嫁さんが舞妓さんなりたいとか言ってたので、その辺りを探していたのですが、やはり連休にあたる日程のところはどこも宿が無く、仕方が無いので、第2候補の宮島(広島)を探していたのですが、やっぱりどこも空いていません。

 とりあえず、いったん京都・広島というメジャーどころ(?)は諦めて、近場の富士サファリパークということにして、夕飯時は会社に戻り、会社から帰って来てからまた富士サファリパークを詳しく調べたら、結構交通の便が悪い(車で行けばいいのですが、我が家に車はないので(j−j)ということで、またターゲットを広島に絞って、別の検索サイトで宿を探すと、他の検索サイトでは満室だったホテルが、近畿日本ツーリストの検索だと空きがあり、ようやく予約だーというところで、予約受付終了時間の午前3時を回ってしまったので、やむなく今日は終了。

 明日は朝一で予約する予定です。
 それでは、おやすみなさーい。

0745
2003/10/27()
 マニアック(?)なバグ
 えー、今日は主にNo.15の続きと、マニュアルのダメ出しと、今日から名付けますが、コードネームNo.40の仕事で、お客様のサポートをやってました。

 で、No.40のお客様のサポートっていうのが、プログラムのサポートなんですが、No.40の仕事では、あるシステムを開発するのに、メインのプログラムはお客様の方で作成し、うちの会社は使用するデバイスのハードとドライバと、そのデバイスからデータを取得して画面に描画するライブラリDLLの制作を担当しています。

 が、お客様のメインプログラム開発担当の方が、あまりプログラム経験の無い方(大丈夫なのだろうか(--;)なので、ちょくちょく私がメールでサポートしているわけですが、今日はお客様がちょっとマニアックなバグ(?)で悩んでいらっしゃったので紹介します。

 えー、お客様は1つのBMPを複数のcppファイルの関数やクラス内で描画するために、BMPの各種情報を構造体にして、グローバル変数として定義していました。

 で、ここまではいいのですが、そのグローバル変数をなんとヘッダーファイルに定義していたのです。
 おそらく、BMPを描画する複数のcppファイルからヘッダーファイルをインクルードするから、このグローバル変数もヘッダーファイルに置いておけば、どこからでもBMPの情報が参照できて便利だろう、と言う風に考えてヘッダーファイルに書いたんだと思います。

 しかも、普通にグローバル変数をヘッダーファイルに定義するとコンパイラに怒られるので、staticを付けてコンパイラのエラーを回避していました。

 さて、これでコンパイルエラーもなくなり、このグローバル変数をちゃんと初期化して利用しているcppファイルの方では正常にBMPが描画できるのですが、片方のcppファイルで初期化しているから、こちらでもちゃんと使えるだろうと、初期化せずに利用しているcppファイルの方では正常に描画が出来ないという不具合が発生しました。

 お客様は、色々コードを変えて試してみても上手くいかないので、なぜか自分の作ったクラスからは描画することができないという理由(まったくもってこの理由は間違いですが)で私に助けを求めてきました。

 さてさて、数々の修羅場を経験してきた読者様はもうお気付きかと思いますが、これはヘッダーファイルにstaticな変数としてBMPの情報構造体を定義してしまっているのが原因で、このような書き方をした場合、インクルードしたそれぞれのcppファイル内でその構造体の実体がファイルローカルなグローバル変数として生成されてしまうため、それらの構造体は全く別々のものとして扱われてしまいます。

 というわけで、片方のcppファイルで初期化しても、もう片方のcppファイルでもちゃんと初期化しない限り、構造体の中身は0なわけで、BMPを表示するにもサイズ情報が0なため、BitBltでは何も転送されずに終わってしまっていたのでした。

 この手のバグ(今回の場合は言語仕様によるものなので、厳密にはバグではなく、いわゆる人災?)は、描画されないとわかった時点で、描画する部分にブレークポイントを設定して止めてみて、変数の中身を確認すれば比較的簡単におかしいところが見つかるものですが、今回のお客様の場合、プログラムの経験が少ないせいか、そういうデバッグ方法も知らなかったのでしょう。

 また、デバッグで変数の中身がカラになっているのが判ったとしても、こういう言語仕様もちゃんと理解していないことには、本当の原因の個所が見つけられないわけで、今回のバグはちょっとマニアック(?)な部類に入るんでしょうね。

 かくいう私がなぜこういうバグにすぐ対処できるようになったのかはもう全然きっかけも覚えていませんが、恐らく過去の経験の中でかなりの回数でこの手のバグに悩まされていたからでしょうね。
 もう、こんな意味不明の不具合は数え切れないほどあったわけで、その度に色んな本を調べて解決方法を模索していたので、それはそれは辛くて長い日々でした<嘘です(^^;

 辛くて長いというのは言いすぎですが、やはりそれなりに悩んだのは事実でして、初めからしっかりC言語の基礎や言語仕様を勉強していれば、そんなに悩むこともなかったのでしょうけれど、やはり基礎や仕様を学ぶということは地味な作業であんまり面白くないわけですから、なかなかしっかり勉強するのは難しいんでしょうね。

 私としては基礎が大事ということを忘れずに、時間が空いた時に参考書を読み返して勉強する機会をちゃんと作るようにしていれば、いつもは応用ばかりを楽しく学んで勉強を進めていっても良いと思います。

 で、今日は何が言いたかったかと言うと、お客様に、もうちょっと勉強してくださいね、と。
 しかし、お客様も本来プログラマな人じゃなかったような感じだし、色々忙しいし、大変なんだろうね。

 というわけで、長々と書いてしまいましたが、今日はこれでおしまい。

 明日はNo.15の続きと、またNo.40のサポートをする予感です。
 それでは、おやすみなさーい。