
/*
    KAB-studio.h
        　ＫＡＢ−ｓｔｕｄｉｏで先週更新した内容
        が格納されたヘッダーファイルです（笑）。

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

    送信日： 2000/04/10(Mon) No.052
    配信数： 3610（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/

/*                      忙しいんで予定変更                        */

　ごめんなさい、忙しいんでこれからの予定を変更します。
　わたくし鏑矢正伝は大学の卒業年度生になってしまったので、就職活動や
ら卒業研究やら授業やらでえらい忙しくなってしまいました（泣）。なので
更新量を一定期間減らそうと思います。
　まずプログラミング辞書の単語追加を、５月中旬まで休止します。また、
特に今週は送られてきた単語が多いんで、これまでの分は１週ごとに少しず
つ追加していくことにします。お急ぎの方は鏑矢の憂鬱へお願いします。
　また、KAB-studio.hで連載している金菜さんの憂鬱の「アプリのツボ」
が #054 で終了しますが、そこでいったん金菜さんの憂鬱を休止することに
します。ただこれは先の話なんで回避できるかも。
　あと、予定していたＣｏｄｉａｎへのコンテンツ追加やけしかぶの
バージョンアップとかもとりあえず先送りします。楽しみにしていた方、ご
めんなさい。
　以上が主な変更内容です。基本的大打撃は辞書のみなんで、それほど影響
ないと思います。愛想つかさなかったらこれからもよろしくぴょん。
　
　そいや「鏑矢正伝をうちの会社に欲しい！」ってとこあります？　もし
あったらメール送ってくださいです。たぶんいないだろうけど（爆）。

[プログラミング辞書]
http://www.kab-studio.com/Programing/Dictionary/

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

・更新なし。
　上で書いたように、色々忙しいんでちょっと様子見です。ごめんです。


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

2000/04/02 (Sun)
　のんびりしたりイラスト描いたりゼミの宿題したりとゆー感じ。

2000/04/03 (Mon)
　「うかい竹亭」とゆー所へ食べに行く。なかなかすごいとこ。

2000/04/04 (Tue)
　大学・卒業年度始まる！　しかし成績は不本意だわ１日１コマだわ授業は
いきなり休講だわ風邪か花粉症かわかんないけど体調悪いわで散々。むぅ。

2000/04/05 (Wed)
　ビデオデッキが修理からもどってきた！　そして陽だまりの樹がなかなか
いい感じ。うむ、アニメでストレス発散だな（爆）。

2000/04/06 (Thu)
　授業＆ゼミ＆就職ガイダンスで再び疲れる（泣）。だからプログラミング
辞書の単語追加をしばらくの間お休みにしますです、はい。

2000/04/07 (Fri)
　お休みなので家でゆっくり。今日はイラスト中心。ソフトパステルを使っ
たアナログな色塗りをしたりとか。あと橋本対小川。

2000/04/08 (Sat)
　サクラ大戦ＴＶはちょっと不安。あとＥＲとかアニコンとかそーゆー話ば
っか。風邪みたいだし（泣）。


/*                         鏑矢の憂鬱                             */
http://www.kab-studio.com/Programing/KabuU/

2000/04/02 (Sun)
お便り
BCB5 、 CodeGuard と STL の相性が悪い
コンテナのポインタ操作に警告を出す
ポインタ回りはアロケーターと別だから難しい
「標準」 C++ ライブラリなんだからもっとサポートされても
お便り
VCL : Visual Component Library
非常に良くできたライブラリ
MFCは最悪のクラスライブラリ
VCそのものが良くできているだけに残念
MFC のいいところは「ソースコードの読みやすさ」だけ
コードを読むための教科書
他のライブラリは１行に詰め込んだりして読みにくすぎる
MFC は「読む技術」付けるためだけ
VCL がかなりいいならあとでぷらとわに使うかも

2000/04/03 (Mon)
お便り
Windows2000 への移行で「 3D オブジェクト」の色が変わった
ビットマップを透過させたい
設定はレジストリで変えられる
ボタンにビットマップ貼り付けるときに透過させる方法はたぶんないと思う
アイコンに変換してから貼り付けるか、オーナードローを使うか
クラスライブラリやコンポーネントを探す方がいいかも

2000/04/04 (Tue)
お休み

2000/04/05 (Wed)
STL & iostream 入門の #01 を発行
けしかぶのバージョンアップ版のリリースはちょっと面倒
信号処理論の授業と絡めて Codian に新しいコンテンツを追加するかも

2000/04/06 (Thu)
大学の就職ガイダンス
「大学推薦枠」について
成績のいい人はソニーやＮＴＴに優先的に入れる仕組み
今はプログラミング関係に入ろうかなと思っている
SE になる気はない
パッケージウェア作ってるとこに入りたい
Web デザイナーもいいかな

2000/04/07 (Fri)
お休み

2000/04/08 (Sat)
お休み


/*                       今週の追加単語                           */
http://www.kab-studio.com/Programing/Dictionary/

・追加単語：
DllMain() 中間ファイル オブジェクトファイル ディレクティブ 
プレフィックス サフィックス 文字コードの変換

・今週のごめんなさい
ボタン shellexecute 関数へのポインタ atl カタカナ変換 コード変換 

　お伝えしたとおり、新規単語追加は５月中旬までお休みします。また、す
でに送られてきている単語は、毎週少しずつ追加することにします。しばら
くの間お待ちください。
　ってゆーか、まさかこんなにヒット数が増加して、こんなに単語が送られ
てくるとはなぁ……。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『あいおーすとりーむって、なんか必殺技の名前みたい』
「げへへへ、我々ぷらぷら星人に勝てると思っているのか」
『私は勝てるって信じてるもん！　くらえ、アイオー、ストリームっ！！』
「ぎゃー！！　……って、こんなの広告になるのかなぁ」
http://www.kab-studio.com/Programing/STLiostream/
_______________________________________________________________[KCM]


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

　Version 4.02
メモリを見よう！

「さて、今回から【変数】ってものを徹底的に見ていきます」
『変数って、 int i とかして、数字入れたりするのでしょ？　あとクラス
とか』
「そう。でもそれは〈見た目〉。本当の姿は違うのです」
『うー、なんか難しそ』
「難しいかどうか、見ていきますか。えっと、まず次の関数」


void Address()
{
    char ch = 1;
    TRACE( "%d, %X\n", ch, &ch );
}


『こんまえ教えてもらったみたいに、名前空間で囲んだりすればいいんだよ
ね』
「そう、そのあとハンドラから呼べばいいわけ」
『んじゃビルドして実行』

1, 64F530

『む、後ろのは〈１６進数〉ってヤツだよね』
「そうそう。じゃ、ひとつずつ見ていこうか」
『 まず char ってなに？』
「型のひとつで、 int の小さい版。 int 型の変数には大きな数字が入れら
れるけど、 char 型の変数には大きな数字が入らない」
『数字入れるのには変わりないってことね。数字って、どんくらい？』
「 -128 から 127 の間の数字しか、 char 型変数には入らないから」
『うわ、少なっ！　これじゃ計算機には使えないね』
「ちなみに char 型に限らず、この〈値の範囲〉は OS によって変わってく
るから注意してね。これからの話は、今のウィンドウズで Visual C++ 使っ
た場合ってことで」
『うん、ウィンドウズでしかアプリ作る気ないしー』
「話を戻すと、 char 型変数 ch を作って 1 を入れます」
『数字入るんだからこれでいいんだね』
「次に TRACE() で ch の中身とアドレスを見ます」
『あ、 1 って ch に入れたのだね。……でもその次のアドレスってなに？ 
& ってなに？』
「これが今回のミソ。えっと、 TRACE() の次の行の } の行にブレークポイ
ントセットして」
『はーい。手のひらマークっと。んで実行、マークのとこで止まったよ』
「アウトプットにどう出てる？」
『さっきと同じ、 1, 64F530 だよ』
「この  64F530 の数字は、常に同じとは限らないから、確認しておいてね。
さて、次に【メモリウィンドウ】を表示します」
『メモリウィンドウ？』
「そう。メニューの【表示】−【デバッグ ウィンドウ】−【メモリ】を選
んで」
『ぽちっと』
　新たなウィンドウが表示される。一番上に【アドレス】とエディットコン
トロール、その下に ? の嵐。
『なんかまたわけ分かんないのが』
「これは〈メモリ〉の中を表示するウィンドウです」
『そのまんま。……って、これが、パソコンの中に入ってるあのメモリの中
なの？』
「実際にはちょっと違うんだけど、ま、そう考えていいかな。メモリには、
パソコンの色々な情報を書き込んで、必要なときに読み取ることができます」
『うんうん』
「ってことは、変数も、このメモリ上にあるってこと」
『変数ってことは、 ch とかが？』
「そういうこと。では探してみましょう！」
『はーい！！　……って、どーやって探すの。なんかすごーく広いみたいな
んだけど、このメモリって』
「そこで &ch の値が役立ちます！」
『 &ch の値って、さっきの 64F530 のこと？』
「そう。変数の頭に & を付けると〈変数のアドレス〉が取得できます」
『アドレスって住所だよね。あ、メモリの住所！』
「そういうこと。変数はメモリに置かれてるでしょ。その位置が〈アドレス〉
で、アドレスを見るためのが & ってこと」
『はー、ってことは 64F530 って場所に ch があるんだ』
「そこで、メモリウィンドウの上のエディットボックスに 0x00000000 って
あるでしょ。それを 0x0064F530 ってしてリターン」
『そうやって直接アドレスを指定できるんだ。……貼り付けできない〜』
「 Ctrl + v でできるよ」
『あ、ホントだ。んでリターン』
　メモリウィンドウの下の欄の一番左上が 0064F530 になる。そのすぐ右隣
が 01 となっている。
「この 01 って書かれてるところが、 ch に割り当てられた領域」
『こ、これが……ってことは、 ch を 2 にしたら 02 に、 3 にしたら 03 
に』
「なるよ。この関数試してみて」


void Counting()
{
    char ch = 0;
    for( int iF1 = 0; iF1 < 20; iF1++ )
    {
        TRACE( "%d, %X, %X\n", ch, ch, &ch );
        ++ch; // ここにブレークポイント。
    }
}


『 for って〈繰り返し〉だよね』
「そう。 ch を 0 からひとつずつ増やすっていうプログラム。えっと、さ
っきと同じように TRACE() の次の行に」
『ブレークポイントね。んでビルドして実行！』

0, 0, 64F530

「アドレスはさっきと同じだから、メモリも同じとこ見ればいいかな」
『ねー、なんで今度は ch の中身ふたつも表示してるの？』
「最初のは１０進、次のは１６進表示」
『あー、 %d が１０進で %X が１６進だったもんね、確か』
「って、さっきアドレス表示したときに %X 使ったでしょ」
『そういえば……で、今の 0x0064F530 は 00 。そっか、 ch が０だもんね』
「で【実行】ボタンを押せば」
『押すとどうなるんだっけ』
「ブレークポイントか外れて普通に進むけど、 for ループの中だからまた」
『ブレークポイントに引っかかるんだ。で……』

1, 1, 64F530

『 ch が１増えた。アドレスは変わんないんだね』
「一度作った変数は移動しないからね。で」
『あ、 0x0064F530 は 01 になってる！』
「この部分赤くなってるでしょ。赤くなってるのは〈値が変わった〉って意
味」
『じゃーどんどん進めてくと…… ch もひとつずつ増えて、 03 、 04 って
増えてくんだー』
「あ、 ch が 9 になったら止めて」
『うん止めた』
「そしたらひとつ進めて」
『ほい』

10, A, 64F530

『あ、 A だって。これが１６進数なんだっけ』
「そう。１６進数は０〜１６までをヒトケタで表示します。だから１０以上
はアルファベットのＡ〜Ｆね」
『ほほう。あ、メモリの方も 0A ってなってる』
「つまりメモリウィンドウは１６進数で表示するってこと」
『それ確認するために、 ch １０進と１６進両方表示したの？』
「そゆこと。そのままＦまで進めて」
『１６進でＦだと１０進で１５なんだね』
「この辺は憶えるしかないかな」
『 F-15 イーグルみたいな？』
「なにそれ」
『……で、Ｆまで進めたら？』
「メモリの方 0F になってるでしょ」
『なってる』
「ひとつ進めると」
『 10 になった』
「つまり一桁上がったってことだね」
『あ、左っかわが１０の位なんだ』
「１６進数だから１６の位かなぁ。だからもうひとつ増やして」
『 11 。１０進数だと１７』
「１６の位が１だから１６、１の位が１だから１、足して１７」
『や、ややこしい……』
「ちなみにウィンドウズのアクセサリに入ってる【電卓】でも１６進数の計
算ができるから、複雑なのはこれ使った方がいいかな」
『んでそのまま進めると……あ、終わっちゃった』
「 for で２０回しかループしてないからね。さて」
『さて？』
「メモリの 0x0064F530 のまわり、１６進数２桁一組でいっぱい並んでるで
しょ」
『うん、並んでる』
「まず、メモリはこの２桁一組をひとつのセットとして考えてください」
『ひとつのセットねぇ』
「 0x0064F530 が、さっき 01 とかから増えてた１マス。その右隣は
0x0064F531 、１行上の右端……〈フ〉っていうのは違うよ、１６進数で表
示されているところは 0x0064F52F ね」
『あれ、ってことはこの升目って、縦横で並んでるんじゃなくて、１列だけ
ずーっと並んでるってこと？』
「そゆこと。〈アドレス〉に 0x0064F52F って入れてリターンすれば、ひと
つずれるから分かると思うよ」
『ほーっ、アドレスはこの１マスのナンバーなのね』
「メモリ上には 0x00000000 から 0xFFFFFFFF までのマス目があるってこと
だね」
『そう考えるとすごいね……』
「で、変数を作るときには、プログラムが自動的に〈このマスからこのマス
まで、変数 iF1 の領域ね！〉っていうふうにメモリの１部分を確保します」
『それって自動的にしてくれてるの？』
「こういうのを自分でやると大変だからね。確保するマス目の数だけど、 
char は１マス、 int は４マスね」
『それって char には大きい数が入らない、ってのと関係ある？』
「そういうことだね。これは次回。最後に！」
『最後に？』
「このメモリのアドレスは〈今実行しているアプリだけのもの〉だから」
『どゆこと？』
「 つまり、あるアプリの 0x0064F530 と、他のアプリの 0x0064F530 には
別の値が入ってるってこと。アプリごとに独立してるってことね？」
『え！？　だって、メモリって……』
「そう、ハードウェアとしてのメモリは全部で統一されてるけど、アプリは
この〈仮想アドレス〉にしか触れられません」
『なんで？』
「だって、あるアプリの変数を、他のアプリから書き換えたりしたらまずい
でしょ」
『あ、そういうことはできないようになってるんだ』
「そ。だから、 0x00000000 から 0xFFFFFFFF のマス目が、アプリひとつひ
とつに与えられるってことだね」
『やっぱすごい……』

/*
    Preview Next Story!
*/
『なんてゆーか、パズルっぽいよね』
「実際パズルだね。イメージさえ掴めれば難しくないでしょ？」
『パズル解くのは十分難しいって』
「そりゃそうか」
『というわけで次回』
＜ Version 4.03 トランジスタスイッチ ＞
「につづく！！」
『でも思ってたほどは難しくないかも』
「すごく難しかったら、火美ちゃんにもできる！　なんて言わないよ」
『ほほーう、水希ちゃんにも理解できるんだから難しくないはずよね』
「ほほーう」


/*                       金菜さんの憂鬱                           */
http://www.kab-studio.com/Programing/KanaU/

アプリのツボ
#15 通信　その２

　単純に「インターネットを使った通信用アプリケーション」って言っても
色々あるよね。今回はそういうのについて。

　http ftp telnet なんかの有名どころは、前回紹介した RFC にルールが
載っています。基本的には「テキストデータのコマンド」をやりとりして通
信を行います。そのコマンドとパラメーターの一覧とかが載ってるわけね。
　一般に通信アプリは「クライアント」と「サーバー」に分かれます。一般
的には、クライアントはフツーのパソコンで実行して、ホームページを送っ
てもらうよう頼んだりする側のアプリ。サーバーはプロバイダとかのコン
ピューターでずっと走らされていて、クライアント側からの「ホームページ
送って」とかのリクエストに応えてホームページデータを送ったりするアプ
リ。ま、実際にはどのコンピューターでもクライアントもサーバーも実行で
きるから、この例はあまり正しくないけど、一般的にはこっちの方が分かり
やすいでしょ。
　基本的皆さんが作るとなると、クライアント側ね。そっちの方が簡単だし、
需要もあるからね。そうしたら、 RFC 読んで、それにそった設計をすれば
いいってことね。サーバー側を作るのは大変。常駐させるわけだから、資源
管理とかしっかりしないと、時間が経ったら落ちちゃうからね。

　http とかの有名どころ以外のプロトコルを使ったアプリケーションも、
もちろん作ることができます。この場合には自分専用のプロトコルで通信す
ることになるかな。特殊な処理とかが必要ならこのほうがいいかも。ただ、
他のプロトコルとかち合ったりしないよう注意しないとね。


/*            ２０００年４月１７日（月）の更新予定                */
http://www.kab-studio.com/Info/News/

・更新予定なし。
　たぶん何もできないと思いますです。とりあえず数週間経ってみないとリ
ズムとか掴めないんで……。


/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・プログラミングに関する質問は[鏑矢の憂鬱]にお送りください。
http://www.kab-studio.com/Programing/KabuU/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://bigbeat.tegami.com/~mgsearch/frame.cgi?id=0000012198
http://www.kab-studio.com/Freeware/

/*
    KAB-studio.h
    Weekly Mail Magazine.
    Written by Kaburaya Seiden.

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


/*                      See you next week!!                      */


