わいえむねっと

Contents
Categories
Calendar
2026/08
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.156 sec
Chashed: -
2007/09/12 Wed
overflow:autoのオートタグ処理がなんかおかしい気がすると思いながら寝て。
起きて。
電車に乗って。
ぼけとして。
ああ、あそこかーと。 デミタス飲んで。
デミタス飲んで。
デミタス飲んで。
デミタスを盛大に噴き出して。
周りのリアクションが薄いとなんだか少し悲しくなってくるなと思ったりなんだり。
2007/09/11 Tue
雨は振るだろうけどあえて傘は持たず。
でも豚角煮まんは食べて。
そんな朝です。 昨日のそれの追記とか。

dependファイルが

$ cat foo.d
foo.o: foo.cc foo.h bar/bar.h
bar.o: bar/bar.cc bar/bar.h

とかの場合に、dependファイルを加工するのではなく、

OBJS        =   $(SRCS:%.cc=%.o)


OBJS        =   $(notdir $(SRCS:%.cc=%.o))

とかしてbar/bar.ccからbar.oをつくろうとしても暗黙ルールには

%.o: %.cc
    $(COMPILE.cc) $(OUTPUT_OPTION) $<

とかしかなく、bar.o: bar/bar.ccに合致するものがないため、コンパイルされないままリンクまで進んでリンカエラー。
Perlコマンドラインスイッチ挙動。

$ echo|perl -0pe 'print ord $/'
0
$ echo|perl -08pe 'print ord $/'
Unrecognized switch: -8peprint ord $/  (-h will show valid options).
$ echo|perl -0377pe 'print ord $/'
255
$ echo|perl -p0377e 'print ord $/'
255
$ echo|perl -0400pe 'print ord $/'
0
$ echo|perl -0401pe 'print ord $/'
0
$ echo|perl -0ep 'print ord $/'
$ echo|perl -e0p 'print ord $/'
Bareword found where operator expected at -e line 1, near "0p"
        (Missing operator before p?)
syntax error at -e line 1, next token ???
Execution of -e aborted due to compilation errors.
$ echo|perl -ep0 'print ord $/'
$ echo|perl -pe0 'print ord $/'
Can't open print ord $/: そのようなファイルやディレクトリはありません.
デミタスとデミタスとデミタスは相変わらずで。
2007/09/10 Mon
道路に出た瞬間に土砂降られる。 なぜなぜQ&Q!(懐かしすぎる)

Q:カレント以外に置いてあるファイルをカレント内の同名ファイルより優先的にインクルードするには?
Q:そもそも、なんでそんな配置なの?

コンパイル前後でリネームするとか。
gccなら-I-、Visual C++なら/Xで検索パスをどうにかするとか。
ただし、/Xは-I-と違って全てのパスが消えるので、$(VCInstallDir)\includeとかの追加が必要になって鬱陶しい。

http://www.linux.​or.jp/JM/html/GNU_gcc/man1/gcc.1.html​
これに加えて `-I-' オプションは、カレントディレクトリ (現在の入力ファイルが存在するディレクトリ) が `#include "file"' に対する最初の検索対象となることを抑制します。`-I-' によるこの効果を上書きする方法はありません。`-I.' を指定することによって、コンパイラが起動されたディレクトリが検索されることを指定することは可能です。これはプリプロセッサが行なうデフォルトの動作とは異なりますが、たいていはこれで十分です。

http://msdn2.micr​osoft.com/ja-jp/library/93t31bx4(VS.80).aspx
環境変数 PATH と INCLUDE で指定されたディレクトリ内でインクルード ファイルが検索されなくなります。
Q:-MMで依存関係を出力しているのに依存ファイルを更新してもMakefileと別ディレクトリにあるソースが再コンパイルされないのですが?
Q:だから、なんでそんな配置なの?

-MMとか使わず自前で依存関係を記述するとか。
そもそも、

$ cat Makefile
TARGET      =   foo
SRCS        =   foo.cc \
                bar/bar.cc
OBJS        =   $(SRCS:%.cc=%.o)
DEPEND      =   $(TARGET).d
CXXFLAGS    =   -Ibar
 
all: $(TARGET)
 
$(TARGET): $(OBJS)
 
$(DEPEND): $(SRCS)
    $(CXX) $(CXXFLAGS) -MM $^ >$@
 
include $(DEPEND)

とかなっていた時、dependファイルには

$ cat foo.d
foo.o: foo.cc foo.h bar/bar.h
bar.o: bar/bar.cc bar/bar.h

のようにbar/bar.oではなくbar.oの依存関係として出力されており、bar/bar.oには結局暗黙ルールが使われてしまう。
ので、

$(DEPEND): $(SRCS)
    $(CXX) $(CXXFLAGS) -MM $^|perl -e '\
    do{\
        do{\
            /([^\/]+)$$/ and $$IN =~ s/$$1/$$_/\
        } foreach split(/\s/, qq{$(OBJS)});\
        print $$IN\
    } while($$IN = <>)' >$@

とかして-MMの出力結果を加工してみる。

$(DEPEND): $(SRCS)
    $(CXX) $(CXXFLAGS) -MM $^|perl -e '\
    do{\
        sub{\
            do{\
                /([^\/]+)$$/ and $$_[0] =~ s/$$1/$$_/\
            } foreach split(/\s/, qq{$(OBJS)})\
        }->($$_);\
        print\
    } while(<>)' >$@

無名サブルーチンで一時変数を除去。

$(DEPEND): $(SRCS)
    $(CXX) $(CXXFLAGS) -MM $^|perl -pe '\
    sub{\
        do{\
            /([^\/]+)$$/ and $$_[0] =~ s/$$1/$$_/\
        } foreach split(/\s/, qq{$(OBJS)})\
    }->($$_)' >$@

-pでwhileとprintを省略。

$(DEPEND): $(SRCS)
    $(CXX) $(CXXFLAGS) -MM $^|perl -0pe 'sub{do{/([^\/]+)$$/ and $$_[0]=~s/$$1/$$_/}foreach split(/\s/,qq{$(OBJS)})}->($$_)' >$@

ワンライナー。
ついでに繰り返しが無駄なので-0。
デミタス。
舌打ち。
デミタス。
舌打ち。
デミタス。
舌打ち。 玉音を聴いた。
2007/09/09 Sun
嫁からの帰れコールで離脱したPOSさん以外は店を追い出されるまで飲み続けて0時半。
確か18時から飲んでいた気がするのですが。
なんか焼酎のボトルがごろごろしてるのですが。 しゅんぞーさんは鎌ヶ谷、Jさんと自分は実家が八千代なので、タクシーにて船橋→鎌ヶ谷→八千代。
Jさんに「ちゃんと実家帰れよー」と言われて「おー」と返しつつ別れる。
実家と逆方向に歩きながら。
2.7km地点のデイリーを1:51通過。
5.9km地点から9.7km地点までの直線に24時間営業のコンビニが8.1km地点のミニストップしかなくなってて少し悲しくなる。
11.3km地点のセブンイレブンを3:58通過。
11.7km地点の階段で力尽きる。 気が付いたら5時。
起床というか起段というか。よく階段で熟睡できるな?
そういえば、大学時代もよく機械棟の外階段で寝ていたような気が。
蚊に喰われた指を余計痒くならない程度に掻きながら、トラックを走っているおっさんをぼけと眺めて。 あとは5:37発の御茶ノ水行きで東船橋を出発して中央線に乗り換えて京王線に乗り換えて珍しく乗り過ごしもなく東府中に到着してと。
そんな日曜の朝。 昼海苔弁。 夜海苔弁。
2007/09/08 Sat
15時半。
部屋を発って。
横断歩道を渡りながら「腹減ったなー」と呟いて。
今日はまだ何も食べていなかったことに気が付いて。
そんな土曜。 そんなこんなで船橋で。
編集長が当日になって月末に延期と言ってきたので

むしろ二回飲んでもよいです。

と返してみたら実際に二回飲むことになったE某編集部集会です。
というか、高知在住のJさんがたまたま婚前旅行で関東に来ていて会うことができたので、無闇に酒を所望してみるものだなと思いました。
他のメンツはPOSさんにしゅんぞーさんと。
2007/09/07 Fri
午前レビュー。
デミタス。 昼休みホワイトボード殴り書き。
デミタス。 午後レビュー。
デミタス。 XいれてないのにX11-6009が閉じられてた。
絶望した!
2007/09/06 Thu
台風一過、豚角煮まん。 電源ユニットを分解して。
埃を取り払って。
ひとしきり眺めて。
電源ケーブルを装着して。
コンセントに挿入して。

バチィ

ここかー。(確認の仕方が間違っています)
PC-9821に無改造で載せられる電源ユニットは入手困難だというのにまったくもう。
2007/09/05 Wed
まどろむ意識の中。

ぅぃぃぃぃぃぃぃぃぃぃ

という聞き慣れたファンの回転音が、

ぼひゅん

という聞き慣れない音を最期に消失。
唐突に訪れる静寂。
そして異臭。

「は!?」

飛び起きる。
時間を確認。5時半。
PC-9821Rv20をラックからひっぱりだしてケースを開いてみると、


変わり果てた姿のPL-Pro/IIとPL-370/Tが。
ああああ!
ふて二度寝。 そんな朝にも豚角煮まん。 台風が接近しているからか天気が不安定ですね。 帰宅して。
とりあえずコンテナから予備のPL-Pro/IIとCeleronをひっぱりだしてきて、焦げたソケットの隣のソケットに装着。
Dualマザーであることを有効に利用です。有効というか。色々間違っている気がしなくもないがそれはそれ。
そして電源ユニットにケーブルを挿入。

バチィ

火花を噴出。
ああああ!(本日二度目) 先に電源ユニットが壊れて過電流が流れたとかでPL-Pro/IIとPL-370/Tは燃えたのか?
だとしたら他の部品も死んでいる可能性があるじゃないか大丈夫なのかと戦々恐々としながらラックから予備を取り出し換装して電源ボタン押下。

ピポッ

流石というか。
往年の名機の底力を垣間見た。感動した。
感動した!
なんで二回言ったの。 というか、この人の部屋はなんでこんなに予備があるの。
2007/09/04 Tue
朝起きて。
顔を洗って。
着替えて。
カバンとゴミを持って。
部屋を出て。
ゴミを出して。
コンビニに寄って。
レジに直行して。
レジに並んでいたら横からレジに入ってきたオーナーが豚角煮まんをスタンバイしてくれて。
常連客の朝。 朝に樽。
昼に樽。
打ち合わせしながら樽。
第二会議室に別件で出たり入ったりを繰り返したりなんだり。
少し気が楽になりました。
至極単純です。 日記内のテーブルがindexでは表示されていないじゃないか。
ああ。そりゃそうだ。
2007/09/03 Mon
今シーズン初の豚角煮まんです。 たまにはホワイトカフェ。
いつものようにデミタス。
なんかまた当たったのでデミタス。
最後にまたホワイトカフェ。
http://www.dydo.c​o.jp/product/seihin/product.ph​tml?PD=574
http://www.dydo.c​o.jp/product/seihin/product.ph​tml?PD=356 続々々・SO_EXCLUSIVEADDRUSE。
そもそもオプションなしだとどうなるのんとテストコードを走らせる。

 LISTEN
 
 
LISTEN
ESTABLISHED
ESTABLISHED

FIN_WAIT_2
CLOSE_WAIT
 
TIME_WAIT
 
WindowsNo optionsWSAEADDRINUSEWSAEADDRINUSE00
SO_REUSEADDR0000
SO_EXCLUSIVEADDRUSEWSAEADDRINUSEWSAEADDRINUSEWSAEADDRINUSE0
LinuxNo optionsEADDRINUSEEADDRINUSEEADDRINUSEEADDRINUSE
SO_REUSEADDREADDRINUSEEADDRINUSE00

はい?
オプションなしがLinuxのSO_REUSEADDR指定と同じ動作のような。
WinsockのTIPSでTIME_WAIT対策にSO_REUSEADDRが挙げられているのはなんなんだ。Windowsのバージョンで挙動が違うとかか。
そういえば、NT4.0 SP4でSO_EXCLUSIVEADDRUSEが追加されているので、そのあたりで挙動が変わっているような気がしなくもなくもない。
むー。 そしてカレーまんです。