．Winny事件判決の問題点 開発者が負う「責任」とは - 専門家がメディアにおいてこういう真っ当なことを言ってくれると、世の中の動向について楽観できるというものだ。こういうものをもって「それがジャーナリズムです」と叫ぶのならば、賛成するに吝かでない。 ．世の中は諦めが肝心だ。よく馬鹿の一つ覚えで「諦めたら終わりだ」とか言う人がいるけれど、そんなのは状況による。「しょうがないねえ」で現状を受け入れて初めて先に進める場合というのも確実に存在するのだ。 ．魔法瓶（まほうびん）はなぜ冷（さ）めないの？ - いっぺんにたくさん作る場合（ばあい）、工場（こうじょう）の部屋（へや）全体（ぜんたい）からポンプで空気を抜（ぬ）いて真空状態にした後（あと）、外瓶と内瓶をくっつけているんだって。 おー。 ．複数のファイルの特定文字列を一括変換したい場合、 for i in *; do cat < "$i" | sed 's/AAA/BBB/' > "$i"; done とすると良さそうに見えるけど、これってポータブルなのかねぇ。 ．しかし for i in *; do sh -c "sed 's/AAA/BBB/' > \"$i\"" < $i; done ではうまくいかない。これは既存のファイルオブジェクトをそのままにしておいて truncate(2) で切り詰めてる時の挙動だ。したがって、一番最初の方法でも長いファイルだと尻が切れるのかもしれない。open(2) の O_TRUNC もこういう挙動だっけ? うっかり O_TRUNC というのは「ファイルを消してから再度ファイル生成」と等価だと勘違いしてたが、よくよく考えてみればそんなわけはないよな。だから最初の方法もきっと駄目だ。 ．一方で for i in *; do sh -c "rm \"$i\"; sed 's/AAA/BBB/' > \"$i\"" < $i; done だとうまくいく。 ．sh の評価順序が信頼できるならこれは for i in *; do (rm "$i"; sed 's/AAA/BBB/' > "$i") < $i; done と簡単に書くことができるし、NetBSD の /bin/sh や zsh はこれでうまくいくようだが、やっぱりポータブルかどうかはわからない。 ．これらの方法がポータブルでない理由として考えられるのは、 unlink したファイルを読めるかどうか分からない sh の評価順序が意図した通りかどうか分からない という二点で、 1 はカーネルの実装に、 2 はシェルの実装に依存する。 sh -c を使う方法ならば、 2 には依存しない。括弧を使う方法では、サブシェル内のリダイレクトの評価がサブシェルのキックより前に行われているとうまくいくかどうか怪しいが、そういう風に実装するとサブシェルの意味がないような気がするので大丈夫なような気がする。 ．GNU の sed だと for i in *; do sed -i -e 's/AAA/BBB/' "$i"; done でいいらしい。なんて軟弱な! ．オリコンが自分たちに都合の悪い記事を書いたジャーナリストを潰すべく高額訴訟を起こす - 片方の言い分だけでは判断できないけれど、こういうのは難しいね。ライターさんたちも、こういうことに備えて互助会でも作って訴訟資金のプールをしておくとか、そういう防衛策を用意しておく必要があるのかもしれないね。