某日記

(後期)

平成17年9月21日(水曜日)

昨日

MAJOR 23 - 26 話を見る。 「肩を壊しても、 きっとどっかの忍者or山伏が万能薬を持ってやってくるに違いない」 とか考えてしまう私は水島漫画の薫陶を受けている。

共用体

たとえばこんなコードは意図通りに動くんだろうか:


要するに、 const 外しのために union を使いたいわけ(本当はもうちょっと複雑)。 

これは ISO C の規格上は Unspecified behaviour ("The value of a union member other than the last one stored into") とされてるプログラムに当たるので、 たとえばコンパイラがこれを変に最適化して

void
foo(const void *cptr)
{
	bar(NULL);
}
というプログラム相当にしてしまっても文句は言えないわけだけれども、 ここで問題にしてるのはそういう規格上の話ではなくて、 上の例のような共用体の使い方をした時に、 実際にこの手の最適化を行う可能性のあるコンパイラがどれくらいあるのかなぁ、 というのが私の疑問。

もちろん、 (共用体のメモリ配置に一定の仮定が成り立つとして) p の定義に volatile をくっつければきっと正しく動くはずではある。 でも、cptr への変更と ptr への影響が同期しているのは分かってるのだから、 わざわざ volatile (非同期な変更の可能性)を指定しなきゃならんのは、 ちょっとオーバーキルよねぇ。

まあでも、コンパイラのバグにひっかかりやすそうなコードではあるかな、 という気もしなくもない。

なお、私が本当にやりたいことは、単純な const 外しではなくて オブジェクトの mutable/immutable の制御なんですわ。 具体的には、メモリリージョンを管理する構造体を作りたいのだけれども、 単純に


としてしまうと面白くない。何が面白くないって、 非 const ポインタを const ポインタ引数にそのまま渡せるのと同様に、 関数の引数として immutable_region を渡せる場面では mutable_region もそのまま渡せてしかるべきだと思うのだけれど、 このままだとあまりうまくいかない。 

そこで、次のようにする:

struct mutable_region_body
{
	void *ptr;
	size_t len;
};
struct immutable_region_body
{
	const void *ptr;
	size_t len;
};
union mutable_region {
	struct immutable_region_body ibody;
	struct mutable_region_body mbody;
};
union immutable_region {
	struct immutable_region_body ibody;
};
そして、immutable_region をとる関数 foo() を関数ではなくマクロで 次のように実装する:
extern void foo_impl(struct immutable_region_body);
#define foo(rgn)  foo_impl((rgn).ibody)
こうすると、マクロ foo には immutable_region も mutable_region も渡せる。一方、mutable_region しか取れない関数 bar() も同様に
extern void bar_impl(struct mutable_region_body);
#define bar(rgn)  bar_impl((rgn).mbody)
と書ける。bar() には immutable_region は渡せない。 まあこっちは mutable_region を関数の引数で 直接扱っても良さそうなものだけども。 なお、引数を値渡しにしてるのは、 foo() や bar() の引数に関数の戻り値(=左辺値)を直接渡せるようにしたいから。 実際には、foo_impl() や bar_impl() はインライン関数のことが多いので、 値渡しであることにあまり問題はない。

実は、わざわざ body を代入しなくても、次のようにする手もある:

extern void foo_impl(const void *, size_t);
#define foo(rgn)  foo_impl((rgn).ptr, (rgn).len)
ところが、これでは rgn が二回評価されてしまうので、 関数の戻り値を直接渡そうとすると困った動作をする。

まあそういう理由で union を使いたいのだけれども、 ちゃんと動くもんなのかなぁ。 ちょっと実験してみると、 gcc は ibody の ptr と mbody の ptr が「似た型」であると判定して、 aliasing を考慮した最適化までちゃんとやってくれる模様。 たとえば、次のようなコード:


を -O2 でコンパイルすると 
test:
	pushl	%ebp
	movl	%esp, %ebp
	movl	$1244, %eax
	leave
	ret
なんてコードを吐いてくれる(gcc-3.3.3)。 ちゃんとやってくれてるうちはいいけれど、バグが恐いなぁ。 まあ、バグが恐いからといってこの最適化をオフにすると、 それはそれでうれしくない気もするが (「foo_impl() や bar_impl() はインライン関数のことが多い」 と書いたことに注意; aliasing を考慮した最適化が有効だと、 コードによっては劇的に命令数が削減される可能性が高い)。

VC++ も /O2 だと

0000000000000000 <_test>:
   0:   b8 dc 04 00 00          mov    $0x4dc,%eax
   5:   c3                      ret    
だって(cl.exe は 13.00.9466)。

平成17年9月25日(日曜日)

金曜日

ドトールでマターリ。

ストックホルムの方に行った。

土曜日

雨が強かったので家にいた。

長いことキャラックに乗っていたが、 だいぶヘタってきたのでピンネースに乗り換えた。 やっぱり速いよ横帆船。が、バルト海の奥のほうの私掠船には全く歯が立たない。 よくもまああんな恐いところにハンザコグとかで行ったよ昔の俺。

で、紡績船私掠命令受けてロンドンに戻ってきた。 アムステルダム沖でドンパチやっていたが、 弾が足りなくなったので仕切り直しして撃破。

今日

起きたら台風が千葉沖に抜けてたのでドトールでマターリ。

firefox-1.0.7 をコンパイル。やっぱり MOZ_PHOENIX=1 を忘れる俺。 今回から pthread を有効にしてみたが、レスポンスが良くなったような気がする。

平成17年9月26日(月曜日)

昨日

ハツカレ(6) / 桃森 ミヨシ」を読んで寝た。

今日

地下鉄某楽園駅の某出口から改札を入って、 南北線ホームの一つ上の階まで降りたエスカレータの脇のところにポツンと 広告スペースがあって、そこにはこの間までモリゾーとキッコロが居たのに、 今日見たらいつのまにか居なくなっていて、代わりに公共広告機構の、 例によってどんな意義があるんだかさっぱりわからない広告にさし変わっていた。

そのスペースは、 モリゾーとキッコロになる前は長い間某弊社が広告を出していたのだが、 この地に来て 6 年くらいの間に何度も組織変更があったにもかかわらず、 お金がなくて広告の内容を改定することがほとんどできないありさまであった。 それでも数年前に部門を分社化したときに一念発起して改定したものの、 どんどん業績が悪化して一年ほどで貧乏のどん底になり、 経理上の都合という理由でみっともないことに再合併したのだが、 そんな状況では広告のほうにまで手が回らず、 広告の上では最後まで分社化したままになっていたりした。

しばらくそんな状態だったその広告も今年の四月になって取り下げたので、 その後に行われた社名変更の時は、 その広告における内容の齟齬の発生を気にしなくてもよくなったのだけれども、 某弊社の後釜としてそのスペースに入ったのが件のモリゾーとキッコロの広告なのであった。 あれから季節は流れて、某弊社はますます縮小し、 引っ越しの準備などをしながら、ふと、 モリゾーとキッコロもライセンスが切れた……もとい、 森に帰ってしまったんだなぁなどと思うと、 なかなか感慨深いものがあるのであった。

モナー問題

モナーを著作物として認めるか - よくまとまっている。

モナーはこれからも守られない」に関しては、 題名からして「モナーを(商用利用から)守らねば」 と考える立場からの考察になってしまっていて微妙に 中立ではないように見えるのだけれども(中立にするには、 あらゆる不正利用(掲示板における無断利用も含む)から守らねばなるまい --- というか、 まあ中立である必要はなくて「守る」の意味を頭で明示すべきやね)、 それはともかく 「これをケーススタディとして同じことをもっと巧妙にやる企業が現れてもおかしくありません」 ということに関連して言えば、以前にも書いたのだけれど、 とりあえず対象の AA を著作物であると認めてしまった上で、 著作権法第 67 条が規定する「著作権者不明等の場合における著作権の利用」 にしたがって裁定を受けて補償金を供託すれば正当に利用できる、 ということは注意しといたほうがよさげ。 逆に言うと、現行法を厳密に適用するならば、 掲示板で使うにもこの手続きを踏まないといかんのだろうね。

あと、リンク先でもちょっとだけ話が出ているけれど、 この件に関しては、 著作権だけではなくて商標権も絡んでくるのでいろいろと難しい。

夕方

某あにあにさまが北陸行くとか言っているので、俺も旅行に行きたくなった。

北陸にも行きたいし、出雲号にも乗っておきたいし。 問題は、有休がそれほど残ってないことだ。

あと、とーとつに免許が欲しくなってきた俺。 分水界フェチとしては、公共交通にはそろそろ限界を感じておる。

平成17年9月28日(水曜日)

昨日

そろそろ会計スキルなしってのもアレなので、 ロンドンでビール 200 樽買ってアムステルダムに来た。 あとは誰かに転職クエを紹介してもらうだけ。

今日

久々に金髪(今も金髪なのかどうかは知らぬ)のアホっぷりを linux-users で目撃して、懐かしいというか甘酸っぱいというかそういう微妙な気分に。 「『昔』とは違うからね」とか 「ものすごーーーーく ... 違わないんでしょうね」 あたりの物言いの頭の悪さは何とかならんものでしょうか。

本題に関しては、金髪他一名の言いがかりにしか見えないからなあ。 悪意があると仮定して読まない限り、ああいう風には解釈できないもん。 「敵を作る思考」の典型例だと思う。

まあ linux-users の良心である奥村センセに期待しよう。

平成17年9月29日(木曜日)

昨日

山が崩れたら出てきた 「キャンディ・フラワー / 山田 デイジー」 を読んで寝た。 私の嗜好の枠で比較するとやっぱり水無月センセのほうが好きなんですが、 どうもそれってば紙面から発せられてる変なオーラにやられてるようなきらいがあるので、 少女漫画的に見てみんなにお薦めするのはこっちかなぁ。

にしても、やっぱり 2005 年上半期の収穫はなかよしラブリー作家の 一連の短編集だな。これからもラブリーは買い支えて行かねばなるまい。

今日

電車に乗ったら、長いすに女性ばかりが 6 人座っていっぱいになっていた。

東京の場合、4 ドアの車両の扉間の長いすは 7 人がけが標準だけれども、 そういえばだいぶ前に大阪に行った時、片町線、 というかすでに片町駅は跡形もなくなった直後なので学研都市線と通称で 言ったほうがいいのかもしれないけれど、その青いラインの電車に乗ったら、 席の区切りが 6 人になっていたので興味深かった記憶がある。 どうもあっちはそういうものらしい。

まあ体格とかいろいろあるので、一律に 7 人座りなさいとは思わないけれど、 細い女性ばかりだと余裕で 8 人座れることもあるので、 目の前の女性ばかり 6 人というのは見るからに余裕がありすぎる。 この女性たちは、見えないところが太いのかもしれないが、 そう口に出すのはやめた。

しかしどうも、大阪の話は記憶違いのような気もしてきたけどどうなのだろう。

qmail のソースを見てみたが、おせじにもきれいとはいえないソースであった。 コンセプトは評価できても実装は駄目だなぁ。

夜中

Giga LANDISK に興味を持たれたようです。

SERIAL-KIT が品切れで萎えたようです。

自作しようにも結線調べるのがめんどうくさいし、 どうせ MAX232 か ADM3202 か MAX3232 あたりでポンプしてやらんといかんような気がするしでめんどい。

平成17年9月30日(金曜日)

昨日

瀬戸の花嫁(8) / 木村 太彦」を読んで寝た。 政さん問題。巻数を重ねても安定しておもろい。

花束

今日は 辞める人 の送別会。

一次会は 8 人でラクーアにあるアメリカンスタイルのシーフードレストラン。 やたらエビと揚げ物が多くて腹がいっぱいになった。

二次会は 5 人でビール屋。途中から ss さん登場。

しかし、いろいろ差し支えがあると思うので詳しくは書かないが、 働いてないことにかけては誰にも負けてない自信がある私としては、 ちょっとうらやましい辞め方ではある。 もっとも、今回辞める当人が私と同じ考え方かどうかは知らない。

だいたい、自分から辞めるというのがおっくうな話である。 おっくうということについて、送別会の花束を見ていて思い出したのだが、 会社を辞める際の障碍は何かと問わるるに、 送別会で渡されるあの花束という奴の精神的負荷が計り知れない。 それでなくても大の男が花束を持って歩くというのが 私の硬派のポリシーにそぐわないのみならず、実際的な観点から言っても困る。 だいたい送別会というのは金曜日などの電車が混む日に行われるのが常で、 また一次会で済むというようなことは珍しく、 二次会三次会と重ねているうちに終電というようなことになって、 混む日の中でも一番混む列車に乗らなければならないようなことになる。 そうすると、せっかくもらった花束を潰さないように持たなければならないし、 また匂いなどについてなるべく周囲への迷惑をかけないよう気をもむことになる。

もちろん、あの花束という奴は贈る側の好意であることには変わらないから、 貰う側がそんなことを言ってはバチが当たるのかもしれないし、 好意は好意としてうれしいのだが、 しかしその好意の器たる花束という実体が邪魔だというのもやはり事実ではある。

一つのアイディアとして、 会社を辞める半年くらい前にあらかじめそう言って花束の前借りをしておき、 自分の手でドライフラワーに仕上げて送別会当日にはそれを 受け取るという手を考えた。ドライフラワーならば大分カサが減るし、 匂いとかもあまりしない。でも、 だいたい半年も前に辞めることがわかっているような場合というのは稀であって、 辞めるにも潮時というものがあり、 辞めるのだと思ったら気合を入れてなるべく早く辞めるのが吉である。

また、たとえそういう策を弄することができたとしても、 今度は持って帰った後の問題がある。 私の部屋には花をいけておくようなスペースは一日たりとも 確保しておくことができない。 いくらドライフラワーのカサが減っているといっても、 ドライフラワーはずっと長い間保存が効く分かえって邪魔であるとも言える。 通例の生花にしても生けておくことができないのは変わらないので、 いっそ私のときは食用菊の花束にでもしてもらおうかということも考えてみた。 それならば、食べてしまえば後には何も残らなくていっそせいせいすると思う。

でも、いくら食用といっても菊は菊でつまり仏花だから、 なんだかお悔やみを聯想させる。考え方によっては、 「うちの会社は惜しい人を亡くしました」と悔やまれているようで、 それはそれで新しい趣向のような気もするけれど、 しかし常識的に考えればあまりいい趣味とは言えない。 贈るほうもいい気分ではないだろうし、 そう言っておいて何だが、貰うほうもあまり気持ちよくはない。

それに、食用菊は時期を選ぶのでいつでもあるというわけではないし、 あれを花束にしてもらうのは罰ゲームか何かのような態がある。 だいたい食用菊は花屋では売っていないので、 買うとすれば八百屋でということになると思うけれど、 はたして八百屋でそんなことをしてくれるとも思えない。

ところで、二次会のお店には偶然にも謎の風習があって、 帰りに薔薇を一輪くれる。帰り際にそれを受け取って、 これは自分が辞めるときの予行練習になるかなと邪魔くさそうに眺めていたところ、 不幸にというか幸いにというか、ss さんのところで引き取ってくれた。 酒の肴の話題として、 クワックのグラスを一輪差しにしたいというようなことを miki さんが言っていたのでちょうど良いところだと思う。

クワックというのはベルギーのビールで、 なかなか濃い味で香りもよい。 ベルギービールは専用グラスを用意しているブランドが多いのだけれども、 クワック専用のそれはフラスコみたいな形をしていて特に面白い。 自立できないから木のスタンドも一緒についてくるのだけれども、 一見実験器具のようで楽しい。 しかし、 ss さんとしては洗うのが面倒ということなので、 本当に一輪差しにするのかどうかは知らない。

話を花束に戻すと、 ふと、前の会社を辞めたときはどうしたのだろうかと気になった。 よくよく考えてみると送別会をしてもらった記憶がない。 もっともこれは、私がいた部署が来週広島に引っ越す というような時期に辞めたから致し方ないことであって、 しかもまだ入社して半年くらいしか経っていない。 そういう意味で不義理を働いたようなものだから、 せめてもの償いというわけでもないけれど、 本当なら東京に残る私のほうが送別会を主催するべきだったのかもしれない。

いずれにしても、辞めようと思っていない前から 送別会の花束の心配をしてもしょうがない気もするし、 花束を気にしているというよりも単に自分が辞めない 言い訳のようなところもある。 しかしながら、 現在の会社における致命的なモチベーションの欠如を考えると、 そう遠くないうちに杞憂ではなくなるかもしれないから、 せいぜい、 花束を生けることができるくらいに巨大なクワックのグラスを 用意できたらいいなと考えている。