鏑矢の憂鬱2000年5月前半
透明1ドットイメージ
 
2000/05/01 (Mon)
・今日は1限の情報理論。うー、センセが加速モードに入りつつあるんでついてくのきつー(汗)。授業も順序だてないでちょっとぐちゃぐちゃになりつつあるし。がんばってかないと辛いかも。
 
・今日やったのは「ハフマン法」っての。 lha なんかにも使われている圧縮法らしくて、いろんなページに解説載ってますね。わて的にはいまいちまだよく分かんない(汗)。こーゆーものこそ、実際に自分でプログラム組んで試してみるべきなんだろうね。ゴールデンウィーク中にやってみるかなー。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/02 (Tue)
・今日の授業は情報処理論。今日はネットワークグラフ、いくつかの「点」があってその間がいくつか「線」で結ばれてる、そーゆーデータ構造の話。プログラムの方では「配列への配列」を使ったのと「データ配列と仕切配列」を使ったのが書いてあったけど、これって2次配列でフツーに処理した方がいいような気が(汗)。あーでも STL コンテナだと2次配列って表現すんの難しいからなー。
 
・んで今日も宿題が出ました。先週やったオペレーティングリサーチの最適化問題の話。「増分法」ってのを使ってるんだけど、いまいち何やってるか分かんない(汗)。基本的に数式で書かれてて、プログラムの部分はかなりテキトーに書いてあるんでねー。わてとしては、数式よりもコードの方が数倍理解しやすい(爆)んで、プログラムしっかり書いて欲しいんだけどなー。
 
・ってゆーか、基本的にアルゴリズムって苦手。これって就職してから結構ハンデになるかもしんないとか思う。今のうちにしっかり勉強しておくべきかもしんないなー。とりあえずゴールデンウィーク中の課題にしておこう。でもぷらとわの書き貯めにゼミの課題もせなあかんから結構大変〜。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/03 (Wed)
・今日はお休みです。あうー、プログラミングしてない〜。
透明1ドットイメージ
 
2000/05/04 (Thu)
・今日はぷらとわ書いてました。んでも今日1日で1話がやっと(汗)。ホントはもっと書かないといけないんだけどねー。んでも今日書いてちょっと楽しかったんでこれから勢いつくでしょう。
 
・今日書いたのはバイトオーダーの話。これまで char の内部について解説してきて、今回は short について見て、バイトオーダーってものがあって並び順が逆なんだよってことを解説しました。 VC にはメモリウィンドウがあるからリアルタイムで見られるってのがすごく説明しやすいです。
 
・このあとポインタについて見ていくつもり。これもメモリウィンドウと関連づけていこうと思ってます。たとえば int の変数作った後、そのアドレスを char のポインタに入れて、ポインタの移動をしたり [ ] を使ったりして int の中を見ていく、って形にすれば、ポインタってのがアドレスの変数ってことを明確に理解できると思うんですよね。そんな方向性でぷらとわを書き進めていきたいと思うです。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/05 (Fri)
・今日もぷらとわ書き。っつーても、ホントはこんなふうに書き貯めるんじゃなくて、毎週土曜とかに確実に書いてくくらいがホントはいいんだよね。辞書お休みしてるんだし、そーゆーふーにリズム持ってくかな。
 
・今日書いたのは、昨日言ってたポインタは後回しにして、定数について先に紹介。 #define のと const 、そして enum 。ここまで整数について見てきたとこだったんで、ついでにってことで。 const はまだしも、 enum をビットフラグにばりばり使ってるって人はどのくらいいるのかなー。
 
・わて的には最新のものだけを教えたい、でも古いのも使えないとまずい、っていうのがなかなか大変なとこ。 #define なんて却下! って言いたいところだけど、 API とかで現役として使われてるわけだからそうもいかないのがね。ま、 VC が使えるってことは、幅広い知識が求められるわけで、ぷらとわもそういう方向性で行くしかないかなとかとは思ってます。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/06 (Sat)
・今日もぷらとわ書き。今回で60話まで書けたから、6月7日まではとりあえずOK。第1志望が白黒ついたらまた書き貯めることにしましょー。
 
・今日書いたのは前々から言ってるポインタの部分。ちょっと方針転換して、キャストせずにポインタ演算をしてみました。つまりメモリ上の全然関係ない領域を見てみるって方法(汗)。メモリウィンドウがある VC だからこそできるこの荒技。いやーホント教えやすいです。視覚的に理解できるもんねぇ。
 
・メモリウィンドウもそうだし、ブレークポイントやステップインもそう。このデバッガ回りの強力さがぷらとわを支えています。だからわては VC は教えやすいと思うんだよね。他の開発環境だと「使いやすくするために覆い隠す」部分があるんだろうけど、 VC はそれがない。ない分使いづらいけど、教える側としては「理由」をしっかりと見せつけられるんで教えやすいことこの上ないかな。
 
・まー「できるようになるまでの時間」は比較にならんほど多いけどね(汗)。単にアプリが作れさえすればいいってことなら、やっぱ他の開発環境なんだろうね。会社側もそうだろうし。ってことはやっぱ VC って魅力ないかも(汗)。 VC の魅力ってゆーと「やっぱ VC じゃなきゃ!」みたいな意味不明のだし(爆)。やっぱ趣味のもんなのかもしんない。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/07 (Sun)
・今日は情報処理論のレポート用プログラムを組んでました。っつーても、課題には「プログラム組め」とは書かれてないんで組まなくても良かったんだけど(汗)。でも組んじゃった方が楽っぽかったんでぱぱっと。
 
・アルゴリズムは、目的関数の各項が「下に突」だから、傾きの代わり方が一番小さい項の「数量」を1増やす、っていうのをし続けて「数量」の総和が制約条件の値になったら終了、ってゆーもの。実は自分でもよく分かってない(汗)。まー結果が答と同じだったから大丈夫でしょう。で、こんときにこんな関数書きました。
 
// p_piAry[] と p_piAry[] + 1 を目的関数に掛けてその差が
// 最小となる要素のインデックスナンバーを返します。
int GetMinDistanceNo( const int *p_piAry )
{
	double dTempAry1[g_iDataSize];
	ObjectiveFunction( p_piAry, dTempAry1 );

	int iPlusOneAry[g_iDataSize];
	std::transform
		( p_piAry, p_piAry + g_iDataSize
		, iPlusOneAry
		, std::bind1st( std::plus< int >(), 1 ) );

	double dTempAry2[g_iDataSize];
	ObjectiveFunction( iPlusOneAry, dTempAry2 );

	double dDistance[g_iDataSize];
	std::transform
		( dTempAry2, dTempAry2 + g_iDataSize
		, dTempAry1
		, dDistance
		, std::minus< double >() );

	const double *const pdDistanceMin
		= std::min_element
			( dDistance
			, dDistance + g_iDataSize );
	return pdDistanceMin - dDistance;
}
	
 
・うふふー、 STL アルゴリズムばりばりのコード(爆)。これを全部 for とかで書いてたらどんなに大変か……。わて的にはこーゆーコードの方が自然(つまり、まず for で書いて置き換える、とかはしないとゆーこと)なんで、 C++ ってのは C や Java とは全然違う言語、ってゆーイメージがあるかな。こんなコード、就職したら書けないだろうなー(泣)。
 
・あと「配列内の総和」を求める STL アルゴリズムを探したらないっぽい。なんでやろーと思ったんだけど、基本的に STL アルゴリズムって「イテレーター受け取って値返す」ってのはないんですね。返すのはイテレーターか bool か pair か個数。イテレーターから値の型を得る方法の問題と、初期化の問題があるみたいです。関数オブジェクト作って for_each() に噛ませるのがフツーかな?
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/08 (Mon)
・今日の授業は情報理論。今日は「確率の勉強をしなさい」とゆー話(汗)。この前買った本があるから大丈夫でしょう。たぶん。今日はそれだけ(汗)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/09 (Tue)
・えっと、今日の授業は情報処理論。今日は宿題が出なかった(喜)でなくってー、今日はグラフの作り方とか。あーよく聞いてなかった(汗)。疲れてたし。むー。
 
・今日のお便り!
 
透明1ドットイメージ
透明1ドットイメージ
 メモリ管理についてお聞きしたいのです。
 例えば、プロセスが実行されていて、そこに、スレッドが、生成されたとして、その時、OSは、どのようにメモリを割り振るのでしょうか?詳しく書かれた書籍などご存知でしたら教えてください
 お願い致します。
 ウインドウズの場合についてです
透明1ドットイメージ
透明1ドットイメージ
 
・どうもですー。えーと、基本的に「スレッドに対するメモリ割り当て」は行われません。メモリ割り当てはプロセス単位です。プロセスひとつに対して4ギガ(つまり32ビットサイズポインタで表現できる範囲)のメモリ領域が割り当てられます。で、それをプロセス内のすべてのスレッドが使用します。
 
・ドキュメントについては、一応手元にある「 Win32 システムサービスプログラミング(プレンティスホール)」って本に少しだけ書いてあるけど、そんな詳しく載ってない(汗)。 MSDN 内の Platform SDK 、「 Processes and Threads 」とか「 Memory Management 」とかかなぁ。ってゆーかここにさっき言ったことが書いてあるかどうかも(汗)。ご確認あれ〜。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/10 (Wed)
・今日は信号処理論。今日の授業では FFT の解説をしてました。半分寝てたけど(汗)。 DFT を FFT にする部分が相変わらずいまいち分かんないです。フーリエの冒険で読むと分かるんだけど、直感的になってないから頭に残ってない(汗)。やっぱプログラム組んでみないとあかんか?
 
・ちなみに宿題がでましたが去年と同じでした(汗)。でもちゃんと勉強して理解して書きたいですね。実験もそうだったし。結局、答がなきゃ勉強はできないんやとゆーことですか?
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/11 (Thu)
・今日はお休み〜。
透明1ドットイメージ
 
2000/05/12 (Fri)
・今日はお便りだけー。では今日のお便り!
 
透明1ドットイメージ
透明1ドットイメージ
 こんにちは!
 質問は二点ほどあるんですが、まず、ひとつ目は、LAN等のネットワークの検知をしたいのです。最終的には、LANでインターネットに接続できているいかというのを検知したいのですが、どうすればいいかということがひとつと、自分のAppから他のAppを終了させる方法が知りたいということです。SendMessageでWM_QUITを指定するようなことは、分かるのですが、任意のAppのウィンドウハンドルを取得する方法が良く分かりません。
 
 という質問なのですが、よろしくお願いします。
透明1ドットイメージ
透明1ドットイメージ
 
・どうもですー。えっと、 LAN の方は分からないです(汗)。ネットワークは詳しくない上に LAN 敷いてないから試せないし。終了させる方ですが、「任意のアプリ」について、ウィンドウクラスが分かっていたら GetClassLong() を片っ端からかけてウィンドウクラス名を取得して見つかったらそのウィンドウに WM_QUIT を送りましょう。
 
・アプリの実行ファイル名が分かってる場合には、 Knowledge Base J041632 の方法で「実行ファイル名とプロセス ID 」の関連を調べたあと GetWindowThreadProcessId() を片っ端からかけて各ウィンドウのプロセス ID を調べて「目的の実行ファイルのプロセス ID と同じウィンドウ」に WM_QUIT を送りましょう。……めんどいね(汗)。
 
・あーたぶん分かってると思うけど補足。「片っ端から」ってのは EnumWindows() とかでトップレベルウィンドウを列挙して、その列挙したウィンドウハンドルに対して「片っ端から」調べたりするってことね。あ、そういえば、 WM_QUIT を送る前に WM_CLOSE 送った方がいいんじゃなかったっけ。あーこれ不確か(汗)。調べてねん。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/13 (Sat)
・今日もお便りだけですー。では今日のお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 こんにちは、べりあるんです。「終了」とトップにあったので、まさかかぶゆ〜が終了しちゃうの!?とかなりドッキリしました。勘違い野郎でゴメン。あ〜、でも終了しなくて安心。
透明1ドットイメージ
透明1ドットイメージ
 
・う”っ、わてもあれ書いたとき「なんか最終回みたいだなぁ」とか思ったら案の定(汗)。心配かけてごめんです。あの欄ってそんなに長いこと書けないし、昨日のはどれについて書けばいいのか難しかったし。これは日記も同じねん。あそこのは結構いつも迷ってます。でも読まれてるって分かってちょっとうれしい(爆)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/14 (Sun)
・今日はぷらとわを1話書きました。1週1話書けば追いつかないわけなんで、このペースをなんとか維持したいですなー。
 
・今日書いたのは const ポインタについて。今回なんかは、まず const ありきなんじゃなくて、ポインタをリードオンリーにしたいから const の仕組みがある、みたいなことを書きました。 C++ ってそーゆーの多いんだよね。たとえば virtual 。これを仮想関数化するためのものとか考える人はいないでしょう。もちろんオーバーライドするため。そのために virtual を付けて仮想関数化する。
 
・ C++ のキーワードの多くは、ある目的のために機能が設けられているものが多いんで、その目的をまず明確にすることが教えるポイントかなとか。っつーてもそーゆーのばかりでもないけどね。 protected とかのアクセス指定子や、テンプレート関係とかは、使い方を工夫すると本来の目的以外の使い方もできたりするから。まーこれはちょっとマニアックか(汗)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/05/15 (Mon)
・今日の授業は情報理論。いよいよ加速し始めたんでちょっと辛いかも(汗)。当分は確率統計の数学関係中心っぽいですなー。
 
・帰ってからは情報処理論のレポートを作ってました。周波数と周期、時間視点と周波数視点の切り替えとかでなんか頭がこんがらがります(汗)。ホントはこーゆーのって、積極的にプログラム組んでいくべきなんだけど、わては数値演算慣れてないからちょっと時間掛かっちゃうんですねー(汗)。だからこそやんなきゃいけないんだけど。
 
・でわまたっ!
 
 
(C)KAB-studio 2000 ALL RIGHTS RESERVED.