かえるー

夕方教会から日吉へやってきて、そのままてりーさんとケーキ買いにいって研究室。
研究室にはなんだかんだいって、けっこう人がきたのだけれど、
最初から最後までいたのは結局僕だけだったりして。
機器室にいってテープの入れ替えとか、link down しちゃったマシンの ethernet ケーブルの挿し直しとか。機器室でサーバ用にけっこういいディスプレイが使われていてもったいなかったので、そいつを別のにつけかえて、開発用に使うことにした。
今日も激務でありました。
しかし、root 仕事も実装も、いろいろ進んだので、よしとしよう。
linux の ext2/ext3 用の dump コマンドは、BSD とかで慣れた感じのインタフェイスでいいね。その一方で、xfsdump はなんか難しいけど、けっこうカッコイイところも多くて、それはそれでいい感じ。
しかしまあ、dump コマンドがいろいろある、というのも考えものだな…

おれ vs iBook

Ctrl とか shift とか option とか command が、ランダムに押される模様。… ctrl がいつ押されるかわかんないので、うっかり c とか押すとプログラムが止まったりして危険な感じだ。

iBook のキーボードが不調です。
Ctrl とか shift とか option とか command が、ランダムに押される模様。
いままでも、ときどきあったんだけど、今回はちょっとひどいぞ。治らないかも。
ctrl がいつ押されるかわかんないので、うっかり c とか押すとプログラムが止まったりして危険な感じだ。
Emacs を使っているときにも、不慮の事故がよく起きる。
ハードディスクはこの間頑張って交換したし、キーボードとポインティングデバイス以外には、特に不満ないんだけどね。
うむむ。

おれさま vs Windows

きょうも Windows- fork() したいWin32 API には fork() みたいなことをやるのはないんだそうだ。… cygwin はこのあたりを、かなりすごい仕掛けで解決しているのだそうで、だから- ldd したいldd がないから dll の依存関係がわかんないすよー、と思って困ってたのだけれど、cygwin についてくる cygcheck というプログラムで解決。

きょうも Windows。
つまり、Windows は Unix じゃないってことなんですが。いい加減 POSIX 準拠な API 用意しろよコノヤロウ。
(DOS の INT 21h はわりと Unix 、というか stdio.h な感じの function call がいっぱいあったよなー、とか思う…)
– 黒いウィンドウ
mingw で GTK なコードをコンパイルして、explorer から実行すると、黒いウィンドウが開いてそこが stdout になるんですが、あまりにかっこ悪いじゃないすか。というわけで、リンクするときに -Wl,–subsystem,windows を付けてみました。消えました。わーい。
– getenv(“PWD”)
mingw とか cygwin の shell から実行するときはこれで current directory がわかるんだけど、ふつうに explorer から実行するとダメみたい。getcwd() 使うべし。
– コマンドプロンプトの escape 文字とか
& は、unix のたいていのシェルでいうところの ; であり、dir & dir とかすると、2度実行される。
ちなみに、; はリスト表現のときのスペースみたいな区切り文字であり、つまり、sh で PATH=/bin:/sbin と書くわけだが、それと同じノリで ; を使う模様。
んで、こういうやつらを escape してやるには、\ (backslash) ではなくて、なんと ^ (hat) を使うんですよ! 信じられません!!
したがって、Cygwin や MinGW で system() を使う場合には、互換性が失われるおそれがあるので要注意です。
– fork() したい
Win32 API には fork() みたいなことをやるのはないんだそうだ。あと、pipe もないらしい。のすけ師匠によれば、cygwin はこのあたりを、かなりすごい仕掛けで解決しているのだそうで、だから遅いとのこと。ほへー。で、MinGW にも fork() はないわけですが。
で、なんで fork() したかったかというと、ブラウザを開くのに
rundll32 url.dll,FileProtocolHandler http://hogehoge.org/
とかしてやれば、デフォルトのブラウザが起動するわけですが、MinGW の system() とかで呼ぶと cmd.exe の黒いウィンドウが出てきてかっこ悪いんですよ。まあ、簡単なプログラムで execvp() つかってみたら、やっぱり黒いウィンドウ開くから、fork() できても意味なかったんですが。
結局のところ、glib に入ってる、g_spawn_command_line_async() というのを使って一発で解決した。これ使うと、エスケープ文字が変なのとか、そういう問題も一気に解決できて、Unix で system() を呼ぶのとほとんど同じノリで Windows でも使えるので、非常にいい感じ。Glib とか GTK とか作ってる人たちは、ほんとすげーっす。頭が下がります。
おかげで、#ifdef とか使った platform specific な記述を減らせました。ばんざーい。
– ldd したい
ldd がないから dll の依存関係がわかんないすよー、と思って困ってたのだけれど、cygwin についてくる cygcheck というプログラムで解決。
cygcheck ./hogehoge.exe
みたいな感じだ。dll の依存関係を recursive に辿って、結果がインデントして表示されるのがおもしろい。
– アイコンつけたい
.exe ファイルにリソースを埋め込むとアイコンとかつけられるわけですが、GNU の linker はそのままじゃリソースファイルを扱うことができないので、windres というプログラムがある模様。これを使うと、リソースファイルから .o ファイルを生成して、これをリンクしてやればいいみたいだ。ふーむ。
で、リソースファイルってどうやって書くんだろう…
今日はそんな感じ。本質的な実装は全然進まなかった気がするが、まあいいか。

おれ vs Windows

そういば教育基本法が変わっちゃったそうですな。 「国を愛せ」なんて明文化するなんて、一種の DV じゃないかと思うわけです。

いま作っているソフトウェア (GTK ベースの GUI) を Windows でも動くようにしたい、ということで、ひさしぶりに Windows をいじってみた。Cygwin のコンソールはあまりに poor な環境であり、minGW/msys の xrvt もアレなので、やっぱり Cygwin で xterm くらい使いたいわけだけれど、keymap が日本語キーボードになっちゃう。
setxkbmap us
と、.xinitrc に書いたら解決した。わーい。
しかし、開発環境としては Windows はなんだかしょんぼりな感じだ。Unix 使いとしては、Mac のほうが断然いいね。FreeBSD (や、もしどうしてもというなら Linux) ならいうことないんだが、MacOS X とか Solaris みたいな商用 Unix っていうのは、日本語入力の環境とかそういう点で非常に恵まれていると思う。
なんていうか、Windows しか知らないで、Cygwin とかでしょんぼり作業している学生はかわいそうだ…

しゅうしょくしたわけですが

ほげほげ、という書類が足りないから書くように、だそうだ。… まったく。

もう、大学に就職して半年くらいたつんですが、
出張旅費の申請したら、事務から書類が戻ってきましたよ。
ほげほげ、という書類が足りないから書くように、だそうだ。
ふーん。それ、学生が学外活動するときに書く奴ですよ?
まったく。出張許可願はちゃんと出したっての・・・

Double Standard

人に要求することと自分でやることが違う、っていうことって、
よく考えると、けっこう世の中で起きている気がしてきました。
ひとを管理する立場になったりすると、より危ないのかも。
気をつけないとね。

TdF ’06

今年の Tour de France の DVD が出てたので、買ってきた。
昨日の夜、第1ステージの途中くらいまで寝たんだが、
いやー、チャリっていいっすね。
ていうか、DVD のオープニングがめちゃめちゃカッコイイっす。
しかし、今年を振り返ってみると全然乗れてないわけで、
来年はもう少しがんばろう。

今週のいろいろ

仕事はあんまり進まなかったけど、いろんな人に会って、けっこうおもしろかった。 今日はぶっ倒れてました。

なんか、アホみたいに忙しい一週間でした。
仕事はあんまり進まなかったけど、いろんな人に会って、けっこうおもしろかった。
今日はぶっ倒れてました。よく寝た。
来週は働こう。