WindowMaker, egcs, zshell による ikill の引数の補完


セキュリティ情報とは..

セキュリティにかかわる情報をこういうところで公開するというのも, あんまり良くない事ではある. ここでは ssh とか, その他のアクセス制限に関する記事をたまに書く が, 他にノートパソコンの記事とかもあるので, その気になれば, 攻撃の糸口も掴めるだろう. セキュリティの記事を書くというのも, なかなか気を使うのう. 「何だこいつ. こんなことやって, `安全だ' とか言ってるぞ. 一つ俺様が教育してやるか. 」という事にならぬとも限らない. それに, 俺って別にセキュリティにそんなに詳しいわけじゃないしな. それにしても, ありもしない cgi に怪しい引数を付けて 404 なリクエストをするのは, 帯域も有限な事だし, やめて頂きたいものです.

うちのホストが具体的にどういう構成になっているか, ということは, まあ, 良い子の皆さんは知っててもしょうがないだろうし, 悪い子には教えるつもりは無いので, 書かないわけですが, 一方, クライアント側の楽しげな話というのは, 多くの場合, セキュリティ上深刻な事態もあまり無いので, 書く方も気が楽じゃ.

WindowMaker 0.53.0

2週間くらい前に出てたものだが, 最近忙しくて, 学校に来てもダウンロードする暇が無い. そのうえ, いつも使っていた速いミラーサイトが無くなってしまい, ダウンロードに非常に時間がかかるようになってしまった. しょうがなく, wget で 300KB くらいまで落してそのまましばらく放置していたのだが, `-c' オプションを使って, 続きをやっとダウンロードできたので, コンパイルしてみた.

0.52 は bogus でどうしょうもなかったが, 今回はおとなしい. 0.51.2 と大して変わらないので, 別にインストールしないといけない, というものでもないな. 設定ツールでテクスチャを編集できるのがやってみたいけど, 本体が bogus なのが嫌だなあ, 設定ツールだけインストールするのは めんどくさいしなあ, と思ってやってなかった人は, インストールしてみる価値 はあるでしょう.

あいかわらず, src/window.c の titlebarDblClick という関数を 勝手に変更してから make している. 新しいのをインストールするたびに手で変更しているわけだが, いちいちめんどくさい. パッチつくるか?難しいところだなあ.

ところで, 俺のパッケージがおかしかったのかな. 今回は configure で トラブルがあった. config.guess (configure から呼ばれて, マシンやら OS やらを当てるやつ) が動かず, 空列を echo しやがって configure が動かない. しょうがないので他の GNU のパッケージから config.guess を頂いて来て, それで間に合わせた. wget -c を 3回ほど繋いでダウンロードしたのが原因と は思えないしな. (これが原因なら, bzip2 を復元できるわけがない) 単なるbug じゃろ. つうか, これは uname した結果をテキトーに切ったり貼ったりするだけの セコいシェルスクリプトなんだが, なんでこんなもんが動かんのかのう. しょぼいのう. あれ? 今実行したら, 動くぞ. 謎じゃ. まあいいや.

隣の画面に移ると `Workspace 2' とかいうのが一瞬画面の中央に表示されて, それから fade out するのがかわいい. ところで, このウィンドマネージャが全部 egcs を使ってコンパイルした最初の プログラムだ. egcs は性能が良いらしいが, 特にそういうことは感じないなあ. そりゃそうだ. だって, gcc-2.7.2 が, べつに性能が悪いというわけじゃないもんな.

linux 2.0.36

今さらですが, 自宅の据え置きは2.0.35 で egcs だったので, この際なのでパッチしてアップグレードした. それで, せっかくあるので make xconfig というのを使ってみた. 据え置きは, マウスが非常に使いにくいので, 具合悪かった. でも, ヘルプを見ながら設定を変更できるのが, 揮発性記憶の私にはとても良い. カーネルの make には 5分ちょっとかかった. K6なんて, もうアキバでは売って ないよ. それでコレだもんな. 最近の PC は尋常じゃないっすよ. カーネルの make なんて, 昔は重たい処理の典型で, 486 で 1時間ちかくかかっ たもんですが, えらい時代になったもんですな. だいたい, 5分で終るんじゃあ安定動作のテストにならんがな.

gnumeric 0.26

表計算ソフトというものを, 俺も使ってみるべ, とおもい, インストールしてみた. そのまま make すると, 変てこなライブラリを要求してコンパイルできないので, 最初の configure 時に --disable-bonobo とかしないとダメだ. あるいは CVS のブランチから bonobo を checkout してきてインストールするか.

ほとんどエクセルらしいが, それにしても使い方が全然判らん. 見当もつかん. 初めて gimp をインストールした時とおなじくらい, 使い方が判らん. なぜなら, 俺はエクセルを使ったことがないからだ. 計算は, gawk と bc で十分間に合っていたので, 使ったことがない. 噂では極めて強力なプログラムらしいので, ぜひその性能を見極めてみたい. ついでに, エクセルのマクロウィルスを書いてみたい.

xtetris

ゲームはほとんど入れてないが, コレと xbill は外せないでしょう. rpm が見付からなかったので, X の contrib を漁ってソースを取って来て make した. ちゃんとハイスコアも記録されるように設定した.

pcmcia-cs

ネットワークカードを抜いて家に帰ってから, 「あ! nfs を umount するのを忘れた!」ということが, 俺はけっこうある. 今さら umount しようにも, ネットワークが無いとできないのである. 何が具合が悪いのか知らんが, コレのせいで login も満足にできなくなってし まったので, しかたなく再起動した.

というわけで, 今日, ノートの方も再起動せねばならなくなったので, これを機会に egcs でカーネルをコンパイルしてみた. 必要なパッチはとうにあててたので, make dep && make clean && make zlilo && make modules && rm -fr /lib/modules/VERSION_NUMBER && make modules_install で終りそうなものだが, 音源の設定でつまづき, 音が出なくなっ て, コンパイルをやりなおした. 上の長いコマンドを実行するのに, 据え置き「みちろう」の K6 は 6分かかり, ノート「あや」の P5/150 は 20分 かかる. 何がこんなに違うのかのう. egcs は gcc-2.7.2x よりも厳格らしく, カーネルのコンパイルでも沢山のエラー を見た.

それはいい. それはいいとして, pcmcia で, ネットワークカードをすっこ抜く ときに, 勝手に nfs も umount しれくれろ, と思い, /etc/pcmcia/network を 改造しようと思ったが, 既にそのためのコードは書いてある. まあ, 俺が思い付 くようなことを誰かがやってないということは在り得ないわけだし. ところでその umount するためのコードだが, ifuser とかいう何か知らないコマンドを diagnostic に使っているので, 手で逐次実行しながら追って行くと, 「カードを抜いた時に umount する」という部分に処理が渡されてないことを突き止め, 条件分岐の構成を修正 し, ちゃんと umount する部分に処理が渡されるようにした. しかし, やはり umount されないのだった. なぜか?

考えてみれば当り前だ. カード抜いてから umount しようとしても, 今さら nfs サーバが返事できるわけないやんけ. いくら IP が繋がってないこ とを前提としたプロトコルでも, ほんとうに繋がってなければ umount できるわけないやん. でも, /etc/pcmcia/network が 引数 `stop' で呼ばれるのは カードを抜いてからだ. 「抜きました」というイベントが発生してから nfs を umount するのは, そりゃ無理です. できたらおかしいです. というわけでわしは, 実際に umount するのではなく, 「nfs が残ってますよ」というメッセージと警告音が出るようにした. それをみて, 「おお, えらいこっちゃ」とカードを挿し直して umount するのだ. 他に良いアイデアがあれば, 募集である.

glib-1.2.2 と gtk+-1.2.2

なんじゃこりゃ! slackware で glib がコンパイルできません. gtk をいじる気力消滅. thread を切ってもダメ. かといってコードを追っかける気合いも度胸もなし. 諦める. ノートの Vine の方は configure && make で終りなんだから, もう, なんつうか, 困ったものです.

ORBit-0.4.3 mc-4.5.33

gtk をmake したあと, この 2つもコンパイルした. 2つとも, 新しく egcs で make した gtk をリンクしている. やっぱ egcs は性能良いですね. まじで. ちょっと俺のノートでは重たかったの だが, 今は全然平気です. 軽いです. 速いです. 体感できる違いがあるぞ. gcc-2.7.2 なんざポイだ! えらい時代になったもんです.

メニューがだいぶ日本語になったが, おかしな日本語のところもあるので, それ を修正する方法を紹介しよう. といっても, ソースのディレクトリ構成を見れば, どこに日本語メニューが置いてあるのか一目瞭然だけどね.

ソースは, $source_root/po/ja.po だ. この中のおかしな日本語になっていると ころをエディタで適当に修正してセーブし, make && make install でできあがり. そして, ファイルマネージャを再起動する. いやあ, ソースがあるって, 良いですねえ! ソースがあなたとともに在ります ように. May the Source Be With You!

それにしても, GNOME はえらい具合いいですよ. ちょっとまえまでは, アイディア先行で落ちまくりの死にまくりという評判であ り, 実際そうだった. 特にファイルマネージャ gmc はひどかった. 複数のファイルをいっぺんにいじると大概死んでました. しかし, 今は違います. ほとんどのメニュー表記も日本語になり, たいてい何をしても死なない. 特に, mc-4.5.31 からは, ディレクトリへのシンボリックリンクの窓を開いた ときに, その中で VFS を使えなかったのが使えるようになっている. デスクトップにあるアーカイブをダブルクリックすれば, ただちに VFS に 展開されて窓が開くのがとてもいい.

とおもったら, 自分の所有でないファイルのプロパティを見ると即死するバグ あり. ろくでもねえ. アップグレードしない方が良い 4.5.31 にはそういうバグ はなかったぞ. 増やすんじゃねえよ. マイクロソフトかよ.

gimp-1.1.5 と Mesa を egcs で make しなおす

普通は Cコンパイラの最適化オプションは -O2 だが, せっかく egcs は速いバイナリをつくるので, これを活かすべく, また, もっと 気合いを入れるべく最適化オプションを -O4 で gimp をコンパイルしなおした. やり方は簡単で, configure で CFLAGS を定義しているところのうち -O2 となっ ているのを根こそぎ -O4 に sed か何かで書き換えればいいのだ.

% mv configure configure.old
% sed 's/O2/O4/g' configure.old > configure
% chmod 755 ./configure

こんな感じでできあがり, あとは, 普通に configure と make すればいい. その結果, 起動からして明かに速くなった. こりゃ具合ええで. 他にも重たくて困っていたプログラムを幾つかegcs でコンパイルしなおした. かなり速くなるものと, そうでないものがある. 速くならないのは, リアルタイム系の, 描画がボトルネックになる奴だ. egcs のドキュメントを見る限りでは, 最適化オプションは -O3 までしか 無く, しかも -O3 と -O2 の違いはほとんど無いというはなしなんだけど, たまに -O4 や -O5 を最初から指定しているパッケージも存在するので, 実際のところはよくわからんのだが. 2つコンパイルしてみて, time して違いを比べれば いいのだがね.

今日の compctl

xlock でオプションとモード名を補完する.

xlock_opts () {
	reply=( `xlock -help | awk '{print $1}'| grep -- - | sed 's/\/+//'`)
	}
xlock_modes () {
	reply=( `xlock -help | awk '{print $1}'|grep -v -- -` )
	}
compctl	-K xlock_opts \
-x 'c[-1,-mode]' -K xlock_modes -- \
xlock
それから, ikill の引数は, まあ, たいがいは実行中のプログラム名か, あるいは実行可能なプログラム名だ. 最初に実行中のプロセス名を持って来て, それにない文字列を書いたら 実行可能なプログラム名から持ってこよう. これなら, gtop なんて糞重いプログラムも要らんぞ. 俺って天才!
running_process () {
	reply=(` ps ax| awk '{print $5}'`)
	}
compctl -K running_process + -caF ikill
そういや, ikill の引数は自分の login 名でもいいんだよ. この場合は 普通は 自分の xsession が出て来るはずで, これを終了して X から logout す るのにも使える. なんて便利!(そうか?).