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

    KAB-studio.h


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

    送信日： 2001/05/28(Mon) No.109
    配信数： 3790（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                enban.net に２月表紙壁紙掲載中！                */
http://enban.net/

・２月表紙壁紙が enban.net に掲載！(？)　いや、それだけなんだけどさ。
ダウンロードは CG Gallery にて。
[CG Gallery]
http://www.kab-studio.com/CG/Gallery/


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

・更新なし
　更新はないけど制作中ではあるのですよ。たぶん。


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

2001/05/20 (Sun)
　部屋の片付けしたり食材買ったりＰＣを軽くしたり Forte がうまく動か
なかったり。あとはいつも通りテレビ色々。人中は死ねます(泣)。

2001/05/21 (Mon)
　今週はなぜか眠い週。眠い中 Swing をのんびりと。あとテストも。うち
の会社についての告発……手ぬるい(爆)。そして Forte の問題解決法。こ
れで落ちなくなったけど……。

2001/05/22 (Tue)
　のんびり JDBC 。専用クラスをブラッシュアップしたり。午後は健康診
断。無茶苦茶あっさり(汗)。血液検査しないと〜。あとホットハーブ描いた
りクレジットカード届いたり。

2001/05/23 (Wed)
　JSWDK をインストールしてサーブレット三昧！　 CGI の代わりを Java 
で書けるってのはいいね。そんなに難しくないし。難しいのはシステム構築
の方？　謎の一発ギャグ。

2001/05/24 (Thu)
　Java 3D をインストールして初 3DCG プログラミング。結構簡単だけど、
Shade で使わない用語多いから混乱。帰りに天下一品こってりラーメン！
久々に食べたら……美味しい〜。そしてシスプリとサーブレットの謎。

2001/05/25 (Fri)
　 CG 初掲載！(？)　なぜにわてが選ばれたのかはいまだに謎。研修は 
Java 3D と JDBC 。 Java 3D のアンビエントとディフュージョンがなんか
不思議。お給料日なんで家計調査。今月は出費多かったなぁ。

2001/05/26 (Sat)
　今日は実家へ。スーツと炊飯ジャーを買ってもらいました。ごはんも色々
買ってもらえたし、助かったです。帰ってからは整理整頓。こういうの嫌い
でないんだなーやっぱ。


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

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

　自転車を駆りながらも、舞は考える――ニュースにならなかったわけ、母
が来るわけ、これからどうなるのか、そして――。
　ふと、昨日公園で出逢った、あの青年を思いだした。
　炎を操る青年を。
　まだ、お礼言っていなかったな……私が水を操るように、あの人は炎を
操った。単に式を使える人なのか、それとも、私と同じ「泉」の洗礼を受け
た人なのか……。
　能力有る者。ママチャリのバケットの中でディパックが揺れる。その度、
ディパックの中の水筒が音を立てた。その脇には札束のようにまとめられた
護符が入っているはず。これだけあれば、式を思う存分使うことができる。
　力、使いたくなかったな……。
「舞！」
「うわっ！」
　いきなりの恭子の声に、自転車が揺らいだ。
「ちょっちょっと、気を付けてよ！」
「何言ってんの、恭子がいきなり驚かすから」
　体勢を立て直してから、速度を緩める。
「新聞、載ってなかったね」
「なんかヤバイ感じしない？」
「それより今は今がヤバイよ！」
　そう言われてから恭子は学校に間に合わなくなることに気づく。
「あと５分もないよ！」
「恭子、乗って！」
「うん！」
　恭子が舞の肩に手を掛け、ステップを踏んだ瞬間。
『二人乗りはいけないんだよ』
「！！」
　ハンドルがぐらつき、再び自転車はコントロールを失った。恭子はタイミ
ング良くステップから離れてうまく着地して、叫んだ。
「ちょっと舞！　何や……ってっ……」
　恭子の目の前で、自転車は完全にバランスを崩して、舞を放り出した。
　宙を舞うその間、その永遠のように長い時間の中で、舞は。
　子供の、少年の声だった。
　そう確信していた、閉ざされた永遠の時間の中で。
「舞！！」
　再び動き出した時間、舞は地面を転がり、そして、止まった。
「……舞？」
　信じたくない、そう思いながら近づいてくる恭子の目の前で、舞は目をぱ
ちくりさせて、すっくと立ち上り、笑った。
「あはは、なんか大ぼけかましちゃったみたい」
「舞……」
　その笑顔に、心配させる友達に、涙さえ流れそうだった瞬間、目の前の少
女の眉間にしわが寄った。舞が振り向き睨み付けたその先に、少年がいた。
不適な笑みを浮かべる少年が、いた。
「自分達が決めたルールは、ちゃんと守らなきゃ」
　それだけ言うと、霞のように消えた。
「誰なの、あの子……今の、あの子が？」
　舞を目の前にして、恭子はそういうことが起きても不思議ではないと感じ
ていた。
「何かが、起きる」
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『結局、載ったの？　載らなかったの？　！(？)ってどーゆー意味？』
「ほら、ラジオ番組の最初の回でよくあるでしょ」
『あー、いきなりハガキが来てるってあれね』
「そういうのとして CG が掲載されたらしいよ」
『ってことは、その enban.net のスタッフ？』
「日記で Java 研修してるじゃない……」
『じゃーなんで？　なんで選ばれたの？　なんで載っけてもらえたの？』
「それはたぶん……」
『それはたぶん？』
「……火美ちゃんの魅力じゃない？」
『あーっ、それあたしがボケに取っといたのに！！』
「そ〜ゆ〜反応するかな〜」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 6.09
単項演算子

「さて今回から、バグの出やすい部分や見つけ方とかを具体的に紹介してい
きます」
『バグの出やすいとこってあるんだ』
「あるよー。まずは演算子関係」
『演算子って、 + とか - とかだよね』
「そうそう。そういう四則演算から、 << とかのビット演算系、 && とかの
論理演算系、 == や < の比較演算系、って感じに演算子はいっぱいありま
す」
『 MSDN で見てみても、かなりの数あるね』
「そこで、演算子関係のバグを紹介する前に、全部の演算子についてまとめ
ておきます」
『おお！　って、もしかしてあたし、全然演算子のこと教えてもらってな
い？』
「必要になってから教えてたからね……。ま、今からでも遅くないでしょ」
『ホントかなー』
「さて、まず重要なのは、演算子は基本型に使うものってこと」
『基本型？』
「 int とか char とか、あとポインタとかの、最初から存在する型のこと
を〈基本型〉とか〈プリミティブ型〉とかいいます」
『つまりクラスじゃない型ってこと？』
「そういうこと！　基本的に、クラスには演算子を使えません」

void CDebugDlg::OnButton1() 
{
    CWnd cWnd;
    cWnd = 100;
}

『あ、コンパイルエラーになった』
「ただ、クラスの中には演算子を使えるようにしてあるものもあります」

void CDebugDlg::OnButton1() 
{
    CString cStr;
    cStr = "あいうえお";
}

『ちょっとややこしいかも』
「 MFC のクラスなら、 MSDN で CString のメンバ関数を見てみると、
operator = とかあるでしょ。これが〈 = 演算子は使えるよ〉って意味」
『でもまだ難しい……』
「ま、今回はクラスの話じゃないからこれは置いといて。では早速、演算子
について見ていきましょう。 MSDN の【 C++ 演算子】ってページを開いて」
『あ、さっき見つけたページだ。いっぱいあるよねー』
「まー数はあるけど、実際はそんなに多いって感じないと思うよ。まず、使
い方別に見ていくね。 MSDN の【単項演算子】−【 C++ 単項演算子】を選
んで」
『ほい。 ! とか & とか出てきた』
「全部並べると、 ! & ~ * + - ++ -- 」
『最初の ! は if の中で使うのだね。反対にするヤツ』
「そう、 ! はゼロを 0 以外に、 0 以外をゼロにします」
『 & は……あれ？　これって、アドレス出すの？　それともビットで両方
とも 1 だったら 1 になるっての？』
「これは、アドレスの方の。ここに出てる演算子って〈単項演算子〉って
なってるでしょ。単項演算子っていうのは……〈オペランド〉って憶えて
る？」
『もちろん。 2 + 3 なら、 2 が左オペランドで、 3 が右オペランドで
しょ』
「こういう、左右にオペランドがくっつくのを【二項演算子】っていいま
す。オペランドの事を〈項〉って言うからね。ってことは？」
『単項演算子は、オペランドがいっこってこと？』
「そういうこと！　だから、 & 変数が１個だけ付いてたら単項演算子、２
個付いてたら二項演算子として機能するわけ」
『二項か単項かって、どう見分けるの？　あ！　二項は変数にくっつけない
で、単項はくっつけるんだ！』
「ぶっぶー。単項演算子は変数と離してても機能します」

void CDebugDlg::OnButton1() 
{
    int i = 0;
    TRACE( "%X\n", &                   i );
}

『これでアドレスがちゃんと出るんだ……』
「それに、二項演算子で変数とくっつけないのは僕のスタイル。くっつけて
る人は結構いるよ？」
『そういえば……』
「単項演算子か二項演算子かっていうのは、演算子掛けたあとは値になる、
ってことを憶えとけば大丈夫だと思うよ」
『値になる、って、たとえばさっきの ! だと 0 とか 0 以外になるとかっ
て意味？』
「そうそう、 & ならアドレスになるし、 ++ なら１増えた値だし。これは
二項演算子にも言えることでしょ」
『そういえば、 a + b はその足したのに置き換わる、って前にやったね』
「 Ver 2.4 ( No.015 ) だね。かなり昔……」
『この〈置き換わる〉って、 typedef とかに似てるね』
「それは結構重要なこと」
『おお』
「でも難しいから、詳しくはもう少し先になってから」
『あら』
「話を元に戻すと、さっきの火美ちゃんの例に似た形で言えば」

    a & b

「は、もし & を単項演算子にしちゃうと」
『 & b が値に置き換わっちゃう』
「変数や値が、演算子ナシに並ぶのはダメだからこれはあり得ない、だから
コンパイルするときに & は二項演算子だ、って扱われるわけ」
『でもさ、これは？』

    a & &b

「単項演算子は右側の変数にしかくっつかないからね。真ん中の & は a に
付かないでしょ」
『単項演算子は右側の変数にしか付かない、ね』
「あ、後置の ++ と -- は別だからね」
『次の行に行く前に増えたり減ったりってヤツね。そういえばあれは変数の
右側に付けるよね』
「ま、あれは特別。単項演算子は右にくっつく、って憶えとけばＯＫ」
『ようするに、矛盾がなければそう見られるってことでしょ？』
「まぁね。単項演算子で分かんないのある？」
『 ~ は教えてもらってないかな。 MSDN 見ると〈１の補数〉って書いてあ
るけど、何それ。歩数１？　１歩前へ？』
「補数っていうのは、普通の１０進数の数で言うと、足して９とか９９とか
にする数字。７を９にするには？」
『２足せば９』
「ってことは７の補数は２てこと。こういう〈補う数〉を〈補数〉って言う
わけ。簡単に言えばね」
『その補数を作るのが ~ ってことなんだ……あれ？』

    TRACE( "%d\n", ~7 );    // -8

『ウソツキ！！　なにが足して９になる数よ！！』
「違う違う！　~ は１０進数じゃなくて、２進数での補数を作る演算子な
の！」
『２進数？』
「そう。 0x77777777 を例にしてみようか。１０進数の９、つまり〈次の桁
に移る直前の数〉は、１６進数だと？」
『１５。ってことは、７引くと８だね』
「ってことで」

    TRACE( "%X\n", ~0x77777777 );
    // 88888888

『お、ホントだ』
「でしょう」
『……んな勝ち誇った顔はいいから、これが何の役に立つの？』
「そこが重要。とりあえず、今言った〈補う数〉とかっていうのは忘れてい
いから」
『えええ？？』
「１６進数の 7 をビットで表すと？」
『 0111 だよ』
「じゃあ 8 は？」
『 1000 ……って、水希ちゃんバカにしてる？』
「同じく、 5 について」

    TRACE( "%X\n", ~0x55555555 );
    // AAAAAAAA

『 5 は 0101 、 A は 1010 だよ』
「さて問題。ビットで表すと、普通の数と補数の関係は？」
『えーっと……あ！』
「そう、ビットが反転してるでしょ」
『なに？　つまりようするに ~ はビット反転するための演算子ってこ
と？』
「そういうこと。補数とか難しいこといってるけど、基本的にはこれだけの
こと」
『じゃー初めからそういえばいいじゃん。うー』
「まーそうなんだけどね」
『で、これって何に使うの？』
「一番よく使うのは、ビットフラグを取り除くときかな。 Ver 5.24 
( No.089 ) でやったウィンドウスタイルの話を思い出して」
『ウィンドウの形とかが、ビットフラグで入ってるんだよね。 
CWnd::GetStyle() とか使って調べられて』
「セットされてるスタイルから、あるひとつのスタイルだけ取り除く場合、
まずウィンドウスタイルを取得して、取り除くスタイルのビットを取り除い
て、再びセットしなおします」
『それに ~ を使うの？』
「そゆこと。たとえば 0101 から 0001 ビットを取り除きたい場合」

    int iModified
        = 0x00000005 & ~0x00000001;

    TRACE( "%X\n", iModified );
    // 4

『なんかややこしい……と、ひとつずつ見てけ？』
「そゆこと」
『 0x00000001 が 0001 、これを反転するから 1110 。で、 0101 と & す
るわけだから…… & って各ビットで、両方とも 1 のときだけ 1 だよね』
「そ。Ver 4.05 ( No.055 ) を読み返してみて」
『だから、 0101 & 1110 で……ホントだ、 0100 で 0001 が取り除けた』
「 ~ で反転すれば、 0001 が 1110 になったみたく、立ってたビットだけ
が 0 に、他は 1 でしょ」
『当たり前じゃない』
「それに & すれば、立ってたビットは絶対に 0 になるから」
『そっか、それで絶対に消せるんだ』
「他のビットは、 1 のとこはそのまま 1 、 0 もそのまま 0 」
『ほー、良くできてるね〜。これが ~ の使い道ってわけだ』
「ってゆーか、実際にはこっちから見ていった方が分かりやすいかな」
『どゆこと？』
「つまり、まず〈ビットフラグを取り除く〉って目的から入って、それには
~ を使う、ってこと」
『それが〈必要になったら教える〉ってことね』
「プログラミングに使うものって、色々使えそうで、実はほんの少しのこと
にしか使われてないことって多いからね」
『あと単項演算子で知らないのは…… + と - は？』
「まんま、プラスとマイナス。正の数と負の数を作るためのもの」
『じゃ、単項演算子は全部分かったかな』
「では次回は二項演算子について見ていきましょう！」

/*
    Preview Next Story!
*/
『ねー、単項演算子の + って何に使うの？』
「特に使い道ないんじゃないかな、たぶん」
『たぶん？』
「う”、演算子って実はこういう使い方ができる、とかあるからねぇ」
『水希ちゃんでも知らないことってあるのねー』
「というわけで次回」
＜ Version 6.10 二項演算子 ＞
『につづく！』
「でも、やっぱり使い道はないんじゃないかな」
『ホント？』
「う”……」


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

・６月表紙壁紙掲載
　毎月恒例、新しい表紙壁紙です。まだ原画とかできてないけど、時期的に
梅雨な火美ちゃんの予定。


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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
*/
////////////////////////////////////////////////////////////////////




