憂鬱な午後のひととき
知らなんだ. VC++のデバッガのwatchで@err,hrとするとWin32APIのエラーが日本語で表示されるんや.
フィルタ内部でrcファイルをうまく読み込めないのでメニューが開けないっぽい.
よく分からないのでCreateWindowでしこしこ作る. きっ汚い... ああもう2時だ.
・昨日は天気がよかったな. 夕焼けもきれいだった.
・数日前から胃の辺りがどうも痛い. もしかしてストレス?
・↓結局ごちゃごちゃマクロで考えるより関数にしたほうが素直だったりして.
せんむのつっこみ:
>#define GetBfromA(ptr) ((ptr) == (A*)0, (B*)(ptr))
>のほうがシンプルだと思う.
そうですね. あの後私もカンマ演算子の利用は思いつきました.
GetBfromA(pa)->bもできしよいですね.
>#define GetBfromA(ptr) ((A)*(ptr), (B*)(ptr))
>これなら間違った場合エラーになってくれるんじゃないかな?
なるほどうまい. ただこちらはbccだといけるのにVC++/.NETだとエラーになっちゃった.
A a; a = (A)a; というコードが通らない.
C(C++不可)で
struct {
int a;
} A;
struct {
int a;
int b;
} B;
という構造体が2つあって, 本当はBなんだけどAしか外には見せたくない.
このときに
#define GetBfromA(ptr) ((B *)ptr)
というマクロを使って A* から B* を取得してたのだけどそういうのが増えてくると間違えそう.
#define GetBfromA(ptr) ((B *)(ptr + sizeof(ptr == (A*)0) - sizeof(1)))
ってすると ptr の型が A* でないとき警告が出るのでよいかなと思った.
確実にエラーになってくれるやり方ってないかな.
.NETには __if_exists(
symbol) とか __if_not_exists(
symbol) とかいった怪しい(?)構文が拡張されてるんだ.
ふうん, どういう風に使うんだろう.
...眠くてしょぼい頭で考えてもたいして思いつかなかった. こんなのかなあ:
struct R {
R(double x = 0) : x_(x) {}
double x_;
};
struct C {
C(double x = 0, double y = 0) : x_(x), y_(y) {}
double x_, y_;
};
template<typename T>
class N : public T {
public:
__if_exists(T::y_) {
N<T>(double x = 0, double y = 0) : T(x, y) {}
}
__if_not_exists(T::y_) {
N<T>(double x = 0) : T(x) {}
}
N<T>& operator*=(double a) {
x_ *= a;
__if_exists(T::y_) {
y_ *= a;
}
return *this;
}
...
};
...
N<R> a = 2;
N<C> b(3, 5);
a *= 3;
b *= 10;
...
・いつもより早く家を出たのでゆっくり歩いてたら, 電車が目の前で出発してしまい, (その駅からの本数は少ないので)隣の駅までダッシュするはめに.
早起きは30分の損.
・復活したHC, 水晶を交換して外部クロックを70MHzからもともとの60MHzに落とす. 長持ちして欲しいなと.
う~ん, フィルタの中でうまくダイアログを開けない. 眠いのでもう寝る.
・もらったHBのふたを開ける.
マザーボードの裏でやたらと線がひっぱりまわされているのだけどこれはなんだろう.
ビデオカードにもオーバークロックの跡が.
HCのボードの入れ替え作業をしていたらコンデンサーがぽろりと落ちてきた.
動かなくなったのはこいつのせいか.
何年ぶりかで半田ごてを握る. ほこりも掃除機で吸い取ってさっぱりした. 今のところ快調.
・ついでにAthlonマシンのメンテも.
でもこちらはHDDが完全に壊れみたいなので諦めてDVD/CD-R/ビデオカードをP4マシンに移動する.
・というわけでコーディングは全然やってません. すいません.
車で京都の某氏んちに行ってHBだけでなく, 知る人ぞ知る幻のP90カードを頂く. 感激.
・少し先輩の盛大なる送別会. 50人も集まったのはやはり人望か. うらやましいな.
・帰りの電車の中でフィルタプログラミング.
レジストリにエントリを追加したのに何故呼ばれないんだ~と思っていたら,
メリット値をMERIT_DO_NOT_USEにしていたせいだった.
ようやくmedia player再生時に自前の暗号解除フィルタを挟める.
・「あり得ない、は、ある、に勝てる?」
『スキップ』(北村薫)から. 引用の仕方を間違ってる気がするけどそれを実感した一日だった.
・
VIA Eden N-Processor
秘密鍵暗号専用命令搭載x86互換CPUなんてあるんや. 凄いな.
・こないだ入れたAcrobat Reader 6は重いので削除する. 代わりに昔のHDDからReader 4を取り出しインストール.
・ICC7.1の1年間バージョンアップ更新料2万4千円. これぐらいなら許容範囲だけどMSDNの約10万円は更新する気にならない.
・『コッペリア』(加納朋子)
今までの作風と雰囲気が違う表紙だなあと思ったら中身もお友達になりたくない人がぞろぞろ.
叙述トリックの答えは途中である程度予想できた. 終盤の展開が凝り過ぎてまどろっこしい.
・くぅ~, まさかそんなに株価があがるとは思わなかった. 売るのが早かった. 80万ほど違ってる...
・家でフィルタプログラミング. 当初の目標ラインよりさげてとりあえず出来る範囲で. 今週中にはなんとか.
・家にたまってたMSDNの整理. こんなけだっけなあと思ってたら,
洋服ダンスの上にどどんと乗っているのを発見. あちゃ.
・知人にTOWNSもらいにいく予定だったのだけど雨で延期. 残念.
・directShowフィルタ作ってて, フィルタ周りのレジストリを壊すという大ポカ.
multimedia playerでMPEGを見ることが出来ない.
WMPとかdirectX SDKを再インストールしたけど駄目.
grapheditで見るとフィルタ項目が一切なくなっていたので手動で.axや.dllを登録しまくったら復活した.
不安だけどシステム再インストールは嫌なのでこのままでいく.
・キーバインドを左小指を酷使する形にしているので長時間タイプすると痛くなる.
レイアウトを見直したほうがいいかも.
『桂米朝コレクション八 美味礼讃』(桂米朝)
「テレスコ」や「ためし酒」ってとぼけていて好きだなあ.
落語を本で読んで面白いのかと疑問に思ってたけど意外と声の調子やしぐさが頭に浮かんで楽しい.
・ACアダプタが壊れた旧VAIOノート, 起動しないTOWNSに続きAthlonマシンも撃沈.
電源を入れるとカラコロカラコロ音がする. そもそもBIOS画面が出ないよう.
・いざという時のために(?)トレーニングルームで階段昇りの練習. 20分で150階相当. かなりきつい.
↓コンパイラの挙動がなんやようわからん. 途中に printf をはさむと最適化が阻害されて正しく動くようになるし.
結局別の方法で回避することに.
short から long long への変換時における
コンパイラのバグに悩む.
int から long long は大丈夫なので short a; int b = a; long long c = b; としたけど
最適化(?)されて状況変わらず. さてどう対応しようか.
# short から int への変換でバグってた別のコンパイラに比べたらましだけど.
『手紙』を読み終わる. 「殺人犯の弟」というレッテルがいつまでもつきまとう主人公. 読後感はずっしりくる.
ラスト, 声を出せなかった弟は自分の意思を貫き通せるのだろうか.
・帰りの電車で『手紙』(東野圭吾)を読んでいたら, 最寄り駅を乗り過ごしてしまった.
戻り電車は30分後まで無かったので歩いて帰る. 荷物が重い.
・新しい
VAIOノート
更に重くなったのはともかく, 無線LAN内蔵じゃないのにPCカードスロットが一つしかないのは痛すぎる.
9月
御意見は光成滋生<herumi@nifty.com>までお願いします