////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2001 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    送信日： 2001/08/06(Mon) No.119
    配信数： 3760 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*              ２００１年８月０１日（水）の更新                  */
http://www.kab-studio.com/

・Java メルマガ購読登録受付開始！！
　Java で納得オブジェクト指向プログラミング購読登録の受付を開始しま
した！！
　なにげにタイトルが変わってますが（汗）、中身はといえばすでに半分以
上書き上がっていてなにげにいい感じに仕上がりそうな雰囲気です。配信は
９月から、それまでに購読登録しちゃいましょう。
　おおっとこれは有料なのでご注意ください。でも隔週配信で月４００円、
安いでしょ？
[ Java で納得オブジェクト指向プログラミング ]
http://www.kab-studio.com/Programing/JavaOOP/


////////////////////////////////////////////////////////////////////
/*                ２００１年８月６日（月）の更新                  */
http://www.kab-studio.com/

・８月表紙壁紙登場！
　毎月恒例、新しい表紙です。予想に反して水着じゃないです（爆）。でも
ちょっとせくしぃ？　ダウンロードは CG Gallery にて。
[ CG Gallery ]
http://www.kab-studio.com/CG/Gallery/


////////////////////////////////////////////////////////////////////
/*                        チョー普通な日記                        */
http://www.kab-studio.com/nikki2/

2001/07/29 (Sun)
　８月表紙完成！　一日で仕上げちゃったから大変だったです。んで CD-R 
にバックアップ。テレビはだらっと。なんか眠かったからか適当？　夜に買
い物。お刺身安いし。

2001/07/30 (Mon)
　お仕事は雑用＆自主プログラミング。仕様変更に対応して設計するのは大
変ね。ホットハーブはタブレット直描きにしようかな。夜に買い物。懐かし
のアリスＳＯＳ。

2001/07/31 (Tue)
　お仕事は作ったののテストと突然のお仕事がみっつ。「実現可能性」の調
査って言われても、できないことはないような……。あと書類送ったり。

2001/08/01 (Wed)
　まぐまぐプレミアムスタートにより「 Java で納得オブジェクト指向プロ
グラミング」の購読登録受付開始！　っつーか、うちがやれたのってかなり
幸運？　お仕事はソルパックの月例会議とか。<BR>

2001/08/02 (Thu)
　お仕事でちょっと詰まる(汗)。しかも残業(泣)。たるとは見れないし銀だ
こは乾いてるし。デ・ジ・キャラットなつやすみすぺしゃる前半は……謎
だ(爆)。そしてホットハーブ、面白いけど怖いらしい。

2001/08/03 (Fri)
　お仕事はプレゼン！　午後はプログラミング。終わったらカラオケ。前は
苦手だったけど、吹っ切れば結構いける？　あとバーチャ４しました。独特
の雰囲気、いいなぁ。

2001/08/04 (Sat)
　DIY で家具作ったり買い物したりしてなにげにのんびり？　謎のテレビ撮
影。そして夏実〜。わてはこういう娘に弱いらしい……。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.com/Novel/Fuga/

■　第一章　予言と運命　−１２−

「ひでぇことをするもんだ」
　雅樹は、そう人事のようにつぶやいた。今まで白一色だった清められた空
間が、一瞬で血に染まった。よく見れば、壁にも天井にも、その血痕は強く
残っていた。
　その中で、全く汚れていない少年の白いスーツが不自然な存在感を見せつ
けていた、その不敵な笑みと共に。
「……仲間でも、用済みになればポイって捨てちゃうわけね」
　その声音は震えていた。うつむく舞からしたたり落ちる涙が、床の水たま
りに波紋を作り出している。雅樹は、それを黙って見ていた、何かを気に掛
けるようにして。
「そんなの、そんなの――」
　水が瞬時に吹き上がり――
「許さない！！」
　――莫大な量の水が刃となり振り上がる。
「舞！！」
「！！」
　雅樹の叫び声に、舞は、自分でも驚いたことに、その刃を止めていた。
「やめるんだ……」
「なんで……」
「それが賢明だよ、君達の力じゃ僕にはかなわない」
　キッと睨み返す舞。
「負けるとは思わないけどな」
　そう言ったのは雅樹だった。
「ふうん？」
「俺と穂香だけでもお前に勝てる、そう確信している。舞がいるならなおさ
らだ」
　雅樹はちらと舞を見る。
「んだけどなー、おまえとやって無傷で済むとは思ってないし、傷ついて苦
しむところなんか見たかないしな」
　そうだ、ここは避けるしかない……。
「今日はこの辺でお開きにしないか？」
「いいよ、僕は急ぐのが嫌いなんだ」
　少年はくるりと背を向けた。一瞬、舞の攻撃意欲が首をもたげたが、雅樹
の視線を感じて、抑えた。
　少年は、にやりと笑った。
「そうそう、二つだけ言っておくよ」
　上半身だけ後ろを向いて、言う。
「ひとつ、僕には名前はない。必要ないんだ」
「俺達には必要なんだ。『へっぽこぴー』とか付けちゃうぞ？」
「どうぞ御勝手に」
　と言う表情は怒っていると舞は感じた。
「もうひとつ。その獣と僕とは仲間どころか敵なんだ」
「本当か？」
「嘘でも信じるしかないでしょ？　君達にとっては、敵が増えただけだろう
けどね」
「それは、あなたにとっても敵が二つってことでしょ？」
「でも、君達には情報がない。僕にはある。その違いは大きいんじゃないか
な？」
　ぐっと握りしめた舞の握り拳から血がにじみ出るんじゃないかと、雅樹は
心配した。
「情報は少しずつ集めていけばいい。お前には今日はもう用はない。行け」
「……ふん、じゃあ、また今度ね」
　そう言い、少年は部屋を出ていった。
「……そうか」
「？」
　舞は少し落ち着きを取り戻して、雅樹が何を聞いているのか訊いた。
「穂香は神様だけど、ま、背後霊みたいなもんだから、どこでも行けるんだ
が……あの少年は風のように消えて、どこかに行っちまったんだと」
「見失ったってことね、情けない」
　その時の雅樹の表情は、忘れられない、そう舞が思ったほどだった。それ
は、怒りを表に出さないようにと強く努力した表情だった。
「そ、そういえばみんなどうしたのかな」
　舞は怖くなって話を逸らした。雅樹は背を向けて、言う。
「……みんな校庭にいるさ、舞の家族もな」

                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『とうとう有料化への道へ踏み込んだのね』
「ね、 #pragma twice っていくらくらいだと思う？」
『 KAB-studio.h 全体で月２００円？』
「やすー」
『それより、ホームページの辞書とかの方が高くできるんじゃない？』
「メールマガジンと違って、ホームページは課金が難しいからね」
『課金すると、 google とか効かなくなっちゃうもんね』
「だよねー、それってダメージ大きいからちょっとね」
『でもいつかは？』
「数年後には？」
『その前にクオリティね。ヘボ小説じゃ……』
「だね」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

　Version 6.19
デバッグウィンドウがいっぱい

「さて、いきなりですがデバッグ編は今回で最終回です」
『いきなり！』
「でもはしょった部分はほとんどないから」
『そりゃそんだけ伸びればねぇ……』
「これまではプログラム上でのバグの捕まえ方について解説してきました」
『プリプロセッサとか、それ関係のコンパイルエラーのとか、あとバグを見
つけるための、コンパイルエラーにする方法とか ASSERT() とか』
「そういえば演算子とかもやったね。だからこんなに膨らんだのかも」
『で、今回まででそういうのは全部教わったってことね』
「後回しにしたとこ以外はね」
『それ、教わったって言わない』
「まぁそうだけど……予備知識を教えたらそれから教えるから。さて今回は
デバッグウィンドウについて」
『デバッグウィンドウ？』
「そう。まずはこれ」

void CDebugDlg::OnButton1() 
{
    int i = 100;
    TRACE( "%d\n", i );    // ここにブレークポイント。
}

『ブレークポイントをセットして、実行して、止まったよ？』
「まず、デバッグウィンドウは〈ブレークポイントで止めた時に使うもの〉
ってことを憶えておいて」
『実行して、一時停止してるとこってことね』
「そう、それ重要。デバッグウィンドウは〈今実行してる状態〉を表示する
ものだから、実行中じゃないと意味ないわけ」
『実行してる状態って、たとえばメモリとか？』
「そう！　 Ver 4.02 ( No.052 ) のポインタの解説で使った【メモリ】
ウィンドウもデバッグウィンドウのひとつ」
『デバッグウィンドウだと、メモリぢかに見られるんだよね。アドレス指定
して。確かにこれは実行中じゃないとね』
「メモリウィンドウの見方は、その回に教えたからいいよね」
『たとえば &i を TRACE() したりしてアドレス見て、それを打ち込めば、
１６進表示でメモリ見られる、だよね』
「そうそう。ただ、メモリを直に見るだけだと分かりにくいとこがあるか
ら、それをもう少し解りやすくするのが【ウォッチ】。【表示】−
【デバッグ ウィンドウ】−【ウォッチ】を開いて」
『ってゆーか、ここにあるのがそのデバッグウィンドウを開くのなんで
しょ？　メモリもあるし』
「そうそう。今回はここにあるのを見ていくから。で、ウォッチは特定の変
数の値を調べます。ソースコードの」

    int i = 100;

「の i を、このウォッチにドラッグ＆ドロップして」
『ほい。あ、 i が入って 0x00000064 って出た』
「右クリックして【１６進表示】をオフにしてみて」
『 100 になった。あ、今 i に 100 が入ってるから！』
「そゆこと。こうやって i の中身を見られるんです。さらに、その 100 を
クリックして 101 にしてリターンして、【中カッコを飛び越える】ボタン
で１行進めてみて」
『……そんなことしていいの？』
「大丈夫だから」
『うーん……うわ、なんか出た！』

コンパイル中...
DebugDlg.cpp
コードの変更を適用しています...

  エディット・コンティニュー - エラー 0 ,警告 0

『な、何これ？』
「デバッグ中に、今 100 を 101 に変えたとこをコンパイルし直したんだ
よ」
『そんなことできんの？』
「ってゆーかできてるし。もちろん、まだデバッグ中。アウトプットの表示
が今ので【ビルド】になってるから、【デバッグ】に戻して」
『うん……あ、 101 って出てる！！』
「つまり i の中身をその場で 100 から 101 に変えたわけ」
『すご……こんなことできるんだ』
「ま、とんでもない変更はできないけどね。でも実際にはこのウォッチは使
わないかな」
『なんで？』
「他に便利なのがあるから。同じく【変数】ウィンドウを開いて」
『さっきと同じメニューのだよね。あ、前に見たことあるかも』
「変数ウィンドウには、その場で使える変数全部載ってるから、ウォッチ
ウィンドウみたいにドラッグ＆ドロップしなくていいんだよね」
『それは楽かも。【自動】【ローカル】【this】ってあるけどこれは？』
「【自動】はその場で見たそうなのを適当に見繕って。特に、この【自動】
には関数の戻り値が表示されたりするから便利かも」
『ホントだ、【 AfxTrace 戻り値】ってある。でも AfxTrace() って？』
「 TRACE() が呼んでる関数のこと。そこからさらに OutputDebugString() 
が呼ばれてるから」
『それ知らないとわんないじゃん……』
「そうかも……。【ローカル】はローカル変数ね」
『今は i だけだから i だけ……と思ったら this なんてのも』
「その this と【this】のとは中身同じだから。【this】って憶えてる？」
『何だっけ……』
「 Ver 5.25 ( No.090 ) でちょっとだけやったけど難しいからね……。
えっと、 CDebugDlg::OnButton1() メンバ関数はもちろん CDebugDlg の変
数のメンバ関数として呼ばれてるでしょ」
『思い出した！　その変数のポインタなんだよね、 this って』
「その通り！　具体的に言うと、 CDebugApp::InitInstance() で」

    CDebugDlg dlg;

「で作ってる変数のアドレスが、この CDebugDlg::OnButton1() での this
ポインタ」
『で、それの変数が見えるって……あ、メンバ変数が見えるんだ！』
「そゆこと。 Ver 6.16 ( No.116 ) で作った m_i もあるでしょ」
『へー。こうやって分けて見られるんだ』
「それでもメンバ変数とかは多過ぎて見にくいこともあるから、そういう時
はさっきのウォッチ使った方がいいかも」
『この変数ウィンドウでも、変数の中身変えたりできる？』
「もちろんできるよ。では次、【コールスタック】」
『ほい』

CDebugDlg::OnButton1() line 181
_AfxDispatchCmdMsg(CCmdTarget * 0x0064fce8 // 略。
CCmdTarget::OnCmdMsg(unsigned int 0x000003e8 // 略。
CDialog::OnCmdMsg(unsigned int 0x000003e8 // 略。
// 以下略。

『かなりよく分からない……あ、でも CDebugDlg::OnButton1() は分かる
よ。それに line 181 って、今止まってる行だし』
「このコールスタックは、今呼ばれてる関数が、どういう関数をたどってき
たかを表示してくれるもの」
『ってことはつまり、 CDialog::OnCmdMsg() が CCmdTarget::OnCmdMsg() 
を呼んで、それが _AfxDispatchCmdMsg() を呼んで、さらにそれが
CDebugDlg::OnButton1() を呼んで今に至る、ってこと？』
「そういうこと！　ダブルクリックすると、その関数のとこに飛ぶから」
『はー、 CDebugDlg::OnButton1() だけでこれだけ複雑に呼ばれてるの
ねー』
「このコールスタックウィンドウは、たとえば ASSERT() した時ってその
ASSERT() 呼んでる部分に飛ぶでしょ」
『そこでこれを見れば、どういうふうにそこに来たか判るんだ！』
「まーそれくらいしか使い道ないけどね。ちなみにコールは〈呼ぶ〉、ス
タックは〈積む〉って意味だから」
『関数が積み上げられてく、ってわけね』
「さて、次は【レジスタ】」
『ほい。……ぜんっぜんわかんないんですけど』
「だね。レジスタっていうのは CPU の中に置いてある、ちっちゃなメモリ
領域。メモリって言うのはまずいかな？」
『つまり普通のメモリとは違うってこと？』
「そういうことになるかな。 CPU が計算する時ってメモリを使うわけじゃ
なくて、メモリからレジスタに移してからするんです。これはそのレジスタ
の中身が見られるの」
『むつかしいね……』
「これは僕も分かんないけどね。これは普通のプログラムでは重要じゃない
かな。あとちょっと Ver 6.08 ( No.108 ) を見て」
『んーっと……あ、似たようなの書いてあるとこがある。 EAX とか。こ
れって、落ちた時のダイアログに出るのだね』
「そう。ま、ここではそのダイアログに出てたのが、このレジスタの中身
だってことくらいで。最後は混合モード」
『これ、この前見たね』
「あ、さっきの Ver 6.08 ( No.108 ) だ。そのときちょっと言ったけど、
混合モードはコンパイルする前のプログラムとした後のプログラムを照らし
合わせて表示するもの」
『でも相変わらず分かんないけど……』
「これも上級者向け、滅多に使わないかな。ちなみにここに書かれてるのは
【アセンブラ】って言語のプログラム」
『あせんぶら？　また違う言語なの？』
「んー、なんて言うかな、コンパイルした後のプログラムはこのアセンブラ
って言語でも書ける、ってとこかな」
『なんか回りくどい言い方』
「そうだね……まー難しいからそれはもーっとあとで」
『はいはい』
「で、ここで重要なことは、こういうふうにコンパイル前と後が結び付けら
れるのは、デバッグビルドだから」
『なんかまたデバッグビルドの設定でそういうのが変わってくる？』
「【プロジェクトの設定】のいくつかの設定を変えないと、この結び付ける
情報が加えられないわけ」
『継ながらないと？』
「ブレークポイントとか使えない！」
『げ、そうなの？』
「だから今回のデバッグウィンドウは全部使えないし、ステップインとかも
できないわけ。ま、逆に言うと、リリースビルドでもこの設定をデバッグビ
ルドのに変えればそういうデバッグできるんだけどね」
『質問！　具体的にそれどうすればいいの？』
「いっぱいあるかな……【プロジェクトの設定】の、【C/C++】−【一般】
の【最適化】を【デフォルト】に、同じく【デバッグ情報】を【エディット
コンティニュー用のプログラムデータベース】にして、あと【リンク】−
【デバッグ】の【デバッグ情報】をオンにすればＯＫ」
『ふっ複雑！』
「確かにね」
『もひとつ質問！　……結局それって、リリースビルドの設定を、デバッグ
ビルドの設定に同じにしてるんだよね』
「うん」
『……だったらリリースビルドとかデバッグビルドとか関係ないじゃん』
「だね」
『だねって……』
「そう、実はデバッグビルドとリリースビルドって、プロジェクト作った時
にデフォルトの２設定ってだけで、基本的な違いはないわけ。メニューの
【ビルド】−【構成】でこの設定を増やしたり減らしたりできるし」
『つまり最初からあるデバッグビルドとかリリースビルドとかって気にしな
くていいわけね』
「そゆこと。も少し色々分かってきたら細かく設定することになると思うか
ら、そうなると」
『デバッグビルドとリリースビルドの中間とか？』
「ま、そういうの作る時は、バグが見つからなくて四苦八苦してるときだろ
うけど……」
『げー』

/*
    Preview Next Story!
*/
『デバッグ編終了！　って、次もまだ Version 6 のままだよ？』
「次回はちょっと番外編」
『……そんなんやってる暇あるの？』
「もういいじゃんこの際。それに、それなりに有用かもしれないし」
『有用ねー』
「というわけで次回」
＜ Version 6.20 水希流コーディング＆デバッグ術 ＞
『につづく、ってなにそれーっ！！』
「たぶん有用」


////////////////////////////////////////////////////////////////////
/*              ２００１年８月１３日（月）の更新予定              */
http://www.kab-studio.com/

・KAB-studio.h 縮刷版更新
　KAB-studio.h が１２０号になるので縮刷版を更新します。まとめ読みや
検索に便利ですよ？
[ ダウンロードルーム ]
http://www.kab-studio.com/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.com/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.com/Info/MailMagazine/

    (C)KAB-studio 1999 - 2001 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////




