メモ。cdrecordは以前DVD-Rに書けなかった。dvdrecordという別の似たプログラムを使えとかって話で、dvdrecordもなぜかうちでは使えなかったのだが、最近のcdrtoolsではcdrecordでDVD-Rにも書けるようになっていた。いま試し書きしているが、たぶん無事書けるだろう。DVD-Rはなぜか1倍速しか出ないうんこメディアしか持ってないので(笑)、速めのメディアを買っておこうと思う。ただし、今使っている2.4系のカーネルはUSBが遅いのであまり速くてもUSBのところでダメになりそうな予感もするけど。 SAOモードだと最初に次のトラックへのサイズを得る必要があるらしく、標準入力から入れない。ドライブにもよるのだろうがうちのドライブ/円盤ではPACKETとSAOしか使えないようだ。4.7GBもディスク容量が残っていなかったりするが、まあそのへんはあんまし気にしないということで。 DVD-Rが使えると、これまでデジカメで撮ったくだらない写真が全部1枚に入る。CD-Rだと数枚に分かれちゃうんだよね。MP3だとDVD-Rで数枚になる。CD-Rだと…それは考えないことにしよう。 LinuxでISOイメージを作ってWindowsで焼く、みたいな面倒なことをせずに済みそうだ。ありがたい。 ちなみにmkisofsで-input-charset eucjpとかって指定すれば、日本語のファイル名も正しく書かれるみたい。私はMP3ファイルは曲名を使って思いっきり日本語で作ることにしていて、日本語が使えないと全くダメなんで、このオプションを見るまでは安心できなかった。 freshmeat.netでCD-Rへのバックアップソフトを探したが、アーカイブ形式でただのブロックアクセスメディアとして(というかテープの代わりに?)CD-Rを使うというものが多かった。その中で、ファイルの機能を使おうとしてくれるsync2cd(calins.ch)というのが便利そうに思った。私が使ってみた限りでは、けっこう望みに近い動きをしてくれることが確認できた。余計なお節介もせず、素気なくも良い道具のようだ。 (追記) 2004-08-24 10:46 いまだにDVD-R/RWとDVD+R/RWの区別というかどこが違うのかがよくわからない。持っているドライブは両方に対応してしまっているから逆に始末が悪い。どっちのメディアを買うのがいいのか。
sendmailの設定メモ。自分のドメイン宛てのメールで、ユーザ名が何であっても自分のスプールにためてくれるような設定が、やっと見つかった。5年かかったよ…いや5年はかかってない。 答えは、virtusertable。 /etc/mail/virtusertableに、
@wtnb.mydns.jp watanabe
と書いて/etc/mailでmake。以前に/etc/aliasesにワイルドカード書ければなぁ、みたいなことを言っていたけど、別の設定場所がすでにあるのだった。 これで未登録ユーザ宛てのメールがwatanabe@wtnb.mydns.jpのスプールにたまるようになる。ドメインが違うと受け取らない。おれは、受け取ってもいいんだけどね。Relayされそうになったら思わず受信してしまう、という(笑)。自分が外に出したときまで自分で受信してしまうという、幸せすぎる世界に住むことになってしまうが。
私は、新撰組があまり好きではないんです。こないだ函館に行ったときに翌日のために新撰組の「誠」のTシャツを買ったんです(いわゆる現地調達)。それをそのまま着て関東に帰ってきたんですけど、その後たまたまその「誠」Tシャツを着て実家に帰ったときに、なぜ新撰組をあまり好きではないのかがわかりました。 のっけから実家の人から非難轟々だったんです。「何それ」「あんた新撰組なんて好きなの? いつから?(詰問調)」etc…別にオウムやネオナチになったわけじゃないのに(笑)。 よくよく考えると、母方も父方も、たまたま先祖が山口県人(いわゆる長州人)だったのでした。私は関東と東北で育ち、今じゃ川崎人ですけど、先祖は幕府軍や新撰組とは敵対していたわけです。禁門の変とか、長州征討とか、薩長同盟とか、あのへんですね。
単身、三ツ沢の丘に行ってきました。前回もそうだったんですが、入り口が分かれているらしいという情報があったけどよくわからないのでホーム側の入り口から入りました。ふくしまの米(サトウのごはん!)とマッチデープログラムと旗と袋をもらう。Jリーグのアンケートみたいなのがあって、答えて用紙とボールペンを返そうとしたらそのボールペン(Mr.ピッチのやつ)をくれた。Mr.ピッチのグッズを所有するのは初めてです(笑)。寺田しゅうへいが復帰、スタメンに。 それはさておき、あまり客は入ってないけど川崎のほうがちょっと多いかな、ってな感じだった。とりあえずビールを飲み干して試合開始。開始2分くらいで憲剛のクリア(パス?)にジュニーニョが追いつき、相手を引きつけてマルクスへ。それまでの2分間はボールを支配して攻撃の姿勢を見せた横浜に、あっさり先制。マルクスがいい感じになってきた。 そして徐々に審判がダメだということが判明しはじめる。なんか、妙に横浜寄りなんです。途中で後半あたりかな、逆でこっちにとってくれたときに、単に見えてなかっただけなんだろうな、と思ったけど、それまではけっこうヤバかった。逆に取るし。あっちのは取らないし。イエロー出しまくるし。選手も徐々に集中を欠きはじめる。 そしてイライラしてきたところでセットプレーから失点。得点したのはトゥイードだったかと思っていたけど、帰って記録を確認したらマシューだった。まあ、どっちでもいいが。さらに立て続けに右からのクロスから誰かに押し込まれ、1-2に(くそう)。それでもコールに合わせ、選手を信じてフロンターレ! フロンターレ! ばもかわさー! ふぉるつぁ! ふろ〜んたれ〜! と歌い叫び続けていると、マルクスのCKが寺田の頭に吸い込まれ、そしてネットを揺らした。よくやったしゅうへぇ! というわけで前半は2-2。そしてビールを補給。 後半も審判は相変わらずだったけど、ジュニーニョx3ってことで平和に終了。目の前でジュニーニョの3点を見れて、幸せでした。もうちょっと取れたような気もするけど、3点あれば充分です。 それにしてもカードをもらいすぎた。ベティ、箕輪、マルクス、ジュニーニョ、アウグスト。普通にやってただけなんだけどね。…箕輪のはしょうがないかな。憲剛が倒されたのを取ってくれなくて逆襲になったところを止めたやつだから。帰りに子供がフロンタ〜レ〜、のリズムで「ダメダメし〜んぱ〜ん」と歌っていた。気持ちはわかるが、子供がそんなこと言うのはよくないよ。 試合終了後、ささやかな花火が上がってました。なかなかいいですね。
ひとつ前の記事で、unsignedを追放しろ、という話をした。続きの話として、unsignedの有効性について述べてみようと思う。 負がないけどsignedの倍までいけるぜ! なんてのは、大した話ではない。今日びそんなことを誰が気にするというのか。世の中はみんな富豪なのだ。2Gで足りなければ4Gなんてセコいことを言う奴を尻目に迷わずlong longと打つし、それで駄目なら迷うことなくGNU mp(gmp)だろう。 unsignedで唯一良いところは、境界チェックが楽だというのがある。これも充分セコいけどね。 つまり配列の添字みたいな値を0〜1024に制限したいとする。signed intなnが与えられると、
if(0<=n && n<1024){
// OK
}
といったコードになるだろう。しかし、unsigned intなnならば、
if(n<1024){
// OK
}
で済む。なぜならアンダーランも<1024でどうにかできるからである。-1は4294967295なので<1024の真偽だけでチェックできる。 しかしこれってチェックするなら比較のときだけキャストすりゃいいんだよね。
if((unsigned)n<1024){
// OK
}
見た目は増えてるけど、例えばx86だと単に比較の後のbranchのインストラクションが変わるだけだから、2回比較するよりも2倍高速(!)というわけで、巷でよく使われているテクニックだと思う。計算機がいろいろとzero-originになってるのはこのためというのもあるんだよ!(へぇへぇへぇ) …って、普段はsigned intで持って必要なときだけキャストしろって話か。結局unsigned擁護になってないよ(笑)。 プログラマって、暇な時間さえあればこういうセコいことをしようとするんですよね。だから余計にバグるのか!
なぜバグがなくならないのか。そこにはいろんな原因があるんだけど…という話をしよう。今回は一言で言えば、計算機がバカだから、という理由。 世の中に、浮動小数点数を信用していない人は多くいると思うけど、実は整数演算も信用できるものではない。 #include int main(int argc, char **argv) { unsigned int a=10,b=20; unsigned int c; c=a-b; printf(“d: %d-%d=%d\n”, a,b,c); printf(“u: %u-%u=%u\n”, a,b,c); if(c > 3){ printf(“yes1! %u > 3\n”, c); } if(a-b > 3){ printf(“yes2! %u-%u > 3\n”, a, b); } return 0; } gcc -Wallでワーニングもなく粛々とコンパイルされたその麗しき実行ファイルは、以下のような出力をしてくれる。別に不思議なことは何も…ない!? d: 10-20=-10 u: 10-20=4294967286 yes1! 4294967286 > 3 yes2! 10-20 > 3 10-20 > 3なのだ。奴等はそう信じているのだ。整数はダメ! 疑え! ダウトだ! これだから計算機というものは信用できない(笑)。 実際にあった失敗例としては、タイムアウトを判定するときに時刻情報をunsignedな整数で定義していて、時刻情報同士で引き算をして比較する。でもって何かの拍子に時刻が狂うと(例えばntpはこういうことをけっこうする)、いきなりタイムアウトが発生してしまう。ntpが時刻を戻すときって、逆転しないように徐々に進みを遅くしていくって話を昔聞いたんだけどなぁ。そういうのは特別な設定だけなのかもしれない。 というわけで、「time_tを64bitにする前にとりあえずunsignedにして延命しよう」なんてバカな考えには賛同できない。人類の英知を持ってすれば、2038年までなら64bitにできるはずだ(地球では2038年1月19日にtime()==0x7fffffffを迎える)。 まあ、要はunsignedなんて使うなアホってな話になるだけなんだけど(笑)。なんでも「負の数はありえない=unsigned」だと思っていると、まんまと騙される。ファイルサイズとか。配列の長さとか。とにかくunsignedは使うな。っていうかむしろコンパイラがはやくunsignedを禁止するのがよろしかろう。若者よ、あんなのしょせんはゴマカシなのだ。はやく目を覚ませ(笑)。 賢い人は、size_tがunsignedなのを見て、バカばっかだな、と思うことだろう。size_tを引き算したらダメだ。これ基本。sizeof(x)も引いたらダメ。strlen()の戻り値も引いたらダメ。htonl() やhtons()も引いたらダメだ。幼稚な計算機に引き算などという高等なことはできないのだ。そこが人間様との大きな違いだ(笑)。 はやくC言語に標準で無限桁の整数演算を定義してほしい。そして国会議員は一刻も早くunsignedを法律で禁止してほしい。その法律こそがバグを半分に減らす魔法の法律として永遠に語り継がれるであろう。 …なんだそりゃ。 (追記) 2004-08-20 15:58 gccはsizeof()をunsignedにしますが、例えばtcc(Tiny C Compiler)(free.fr)はsizeof()をsigned intとして扱ってくれるので、sizeof() に関してはtccと心中する気のある人は引き算しても大丈夫です。どっちが仕様に従っていないのか、あるいはどっちでもいいのかは不明です。
PCから出ているケーブルと言えば、キーボード、マウス、サウンド、モニタ、盗難防止ワイヤー、ネットワーク、電源といったところだろう。このうちキーボード、マウス、モニタについては「CPU切替器」なるもので切替えて使っている人が多いと思う。 ケーブルの整理という面では、KB/Mouse/VGA以外にもEtherスイッチと電源、サウンド、盗難防止ワイヤーについても切替器の機能の一部として提供してはいかがだろうか。 つまり、PCから新切替器までを統一ケーブル(単に複数のケーブルを束ねたもの)でつなげる。新切替器から先はまたKB/Mouse/VGA/スピーカーの本物やUSBハブがつながって、Etherのアップリンクや電源コンセントもつながる(これは切替えるわけではないが)。これでかなりすっきりするのではなかろうか。あ、どうせならシリアルポートもつけてもらうか。 ワイヤレスLANやワイヤレスUSB、ワイヤレスキーボード/マウスと言ったところで、ケーブルが全部なくなるわけではなさそうだし、どうせならとりあえず1本にしてほしいよね。最後にその1本をどうにか工夫してワイヤレスにすればそれでいいじゃん。 夢の切替器、もうあるのかな。あってほしいが、いまだ見たことはない。

WARNING: 一応言っておきますが、私はぬいぐるみマニアではありません。
共に(?)川崎を本拠地とするプロスポーツチームではあるが、都市部では不人気の、しかし田舎ではなぜか異様な人気のある極悪金持ち大巨人軍と比べて、青黒に、ひたすらに、ぱたぱたと輝くフロンターレの美しさはどうだろうか。必然的に、おまえ、巨人のくせにオレンジかよ! と無理なツッコミを入れたくなる。 このぬいぐるみのサイズの差は、今の力の差と言ってもいいだろう。しかし、10年後にはおれらのほうが大きいサイズになっているに違いない。 ジャビット人形は友人に引き取ってもらいました。しかしこの人形、買ったら意外とけっこう高いのかもしれないなぁと思います。
cvs annotateがあるなんて知りませんでした。cvswebとかでannotateがどうの…とかで表示されてるの、どうやってるんだろうと思ってました。
いつの間にか雨が降ってきていたわけで。こんな日に限って天窓を開けっぱなしで出てきていたわけで。必然的に部屋はびしょ濡れなわけで。雨漏りになってないかちょっと心配な気もするな。しかも開けて出たにも関わらず、部屋は30℃を越えていたわけで。 なんかもう、どうでもいいや。今日はどこで寝ようかな。どこから拭いて、何から乾かすかを決めなければ。