Slackware 14.0 (4)
『ゼロからトースターを作ってみた』(飛鳥新社)なんて本を読んだ。その手の本として有名所に Makeなんてのがあるけど、あちらはオライリー。出版社が違うって事は、その筋の本ではない。
イギリスのいかれた人が本当にゼロからトースターを作っちゃうというプロジェクトの記録だ。 それにしても、何でトースターなの? 本を読み始めてみて理由が明らかになった。
リナスの、それがぼくには楽しかったから ののりですな。 に通じるものがあるな。
トースターをリバースエンジニアリング(早い話が分解)して、どんな材料で出来ているかを 調べあげる所からスタートする。鉄、銅、マイカ(雲母)、プラステッィク、それと発熱体としてのニッケル。
これらのものを原料から加工してこうとするんだけど、その悪戦苦闘ぶりが涙ぐましい。鉄は鉄鉱石を 堀に行く所から始まる。
移動には飛行機を使わない。車は現代版の馬だから許すってようなルールを自分に課していたり して、面白い。鉄鉱石からどうやって鉄を取り出すか? 図書館に篭って資料を調べるも現代版の 作り方しか手に入らず。ふとした事から、年代ものの資料を調べるうちに、自分でもやれそうな 方法を手に入れる。はやめちゃだけど、ちゃんと納得出来る説明が載ってるんで、予備知識不用で 読める。
それにしても、こういうところに通じる 話だなあ。
最後は、あっと言う結末が待っているけど、面白い。お勧め。
editor
Slackに付属のeditorって事で、edを見たんだけど、少し時代を近代に戻してみよう。 edとvimの間に横たわるものとして、elvisなんてのが有る。広告看板
|-----handy-ruler------------------------------------------------------| elvis: elvis (text editor) elvis: elvis: Elvis is a text editor. It is intended to be a modern replacement elvis: for the classic ex/vi editor of UNIX fame. Elvis supports many new elvis: features, including multiple edit buffers, multiple windows, and a elvis: variety of display modes. elvis: elvis: As elvis is Slackware's default vi, this is a required package. elvis:
slackではないけど、viviなんてのも有るのね。 その内部文書なんてのが公開されてて 参考になるなあ。
歴史を遡ると、tecoに行き着く。Slackでも簡単にコンパイル 出来るんで昔を偲んでみるのもいいかも。
DISK GC
Slackでも、DISK GCをやってみようと思う。ああ、DISK GCってのは、おいらが勝手に 付けた名前だった。正式には、 Open Virtual Machine Toolsの中に入っている DISK圧縮用ツールだ。
コンパイルして、実行してみると
root@slck:~# vmware-toolbox-cmd help disk vmware-toolbox-cmd: error while loading shared libraries: libguestlib.so.0: cannot open shared object file: No such file or directory
ちゃんとインストールまで成功してるはずなのにねぇ。
root@slck:~# ldd /usr/local/bin/vmware-toolbox-cmd linux-gate.so.1 (0xffffe000) libguestlib.so.0 => not found libvmtools.so.0 => not found libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7690000) libicui18n.so.49 => /usr/lib/libicui18n.so.49 (0xb748c000) libicuuc.so.49 => /usr/lib/libicuuc.so.49 (0xb731c000) libicudata.so.49 => /usr/lib/libicudata.so.49 (0xb61fb000) libpthread.so.0 => /lib/libpthread.so.0 (0xb61e1000) libdl.so.2 => /lib/libdl.so.2 (0xb61dc000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb60f5000) libm.so.6 => /lib/libm.so.6 (0xb60c9000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb60ab000) libc.so.6 => /lib/libc.so.6 (0xb5f26000) librt.so.1 => /lib/librt.so.1 (0xb5f1d000) /lib/ld-linux.so.2 (0xb77e0000)
ライブラリィーが見つからんと言う事だな。えーと、えーーと、えーーーと。私の記憶では、 ld.so.cacheに載っていない。/etc/ld.so.confだな。
root@slck:~# cat /etc/ld.so.conf /usr/local/lib /usr/i486-slackware-linux/lib /usr/lib/seamonkey
後は、登録コマンドか。なんだっけな? 適当にmanしてSee alsoを見て手繰りよせる。
root@slck:~# /sbin/ldconfig root@slck:~# ldd /usr/local/bin/vmware-toolbox-cmd linux-gate.so.1 (0xffffe000) libguestlib.so.0 => /usr/local/lib/libguestlib.so.0 (0xb7741000) libvmtools.so.0 => /usr/local/lib/libvmtools.so.0 (0xb76bc000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7598000) :
今度は認識したみたい。
root@slck:~# vmware-toolbox-cmd help disk disk: perform disk shrink operations Usage: vmware-toolbox-cmd disk <subcommand> [args] Subcommands: list: list available locations shrink <location>: wipes and shrinks a file system at the given location shrinkonly: shrinks all disks wipe <location>: wipes a file system at the given location
今度は大丈夫みたいなので、Archと同じ不具合を起さないかgdbで監視してみる。
Breakpoint 2, WiperPartitionFilter (item=0x80732d8, mnt=0xb7faa4b8 <sm.7874>) at wiperPosix.c:423 423 const char *comment = NULL; (gdb) n 424 const char *fsname = MNTINFO_FSTYPE(mnt); (gdb) n 428 item->type = PARTITION_UNSUPPORTED; (gdb) p *mnt $1 = {mnt_fsname = 0x80734e8 "/dev/sda1", mnt_dir = 0x8073500 "/", mnt_type = 0x8073510 "ext4", mnt_opts = 0x8073520 "rw", mnt_freq = 0, mnt_passno = 0} (gdb) p fsname $2 = 0x8073510 "ext4"
うん、大丈夫だ。
(gdb) c Continuing. Progress: 29 [===> ]
ちゃんと実行してる。
メモ
GUIのプログラミングをやるには
番外編で、 ironruby でもいいのかな?