Skip to main content

ログ取得ツール

Category: GNU/Linux

sedのGUI版

sedやtr、cutなどのフィルタ系のツールはたくさんあるが、あれのGUIってものの需要はあるだろうか。sedを呼び出せるテキストエディタみたいなのはあるけど、フィルタを通す前後を横に並べて簡単に比較・確認できたりするといいと思う。デバッグの支援とかも。 …ってone-linerをGUIでデバッグする気か!? それはそれで非常にバカバカしくていいかもしれないな。one-linerって後ろにくっつけてくと楽だけど、途中で道を踏み外したと思ったときの、いわゆるバックトラックが面倒なんだよね。…でもGUIほど面倒じゃないか(笑) ただ、mkfifoとかを使ってフィルタにならないプログラムをフィルタにするのを支援してくれたりすれば、いろいろ楽になるかもしれない。mkfifoを使うのはone-linerとしては邪道だし、あれは面倒だ。あと過去に書いた履歴とかを勝手にDB化しておけるといいかも。普通は消えゆくものを、単に残すというだけで価値が出ることもあるから。

DVD-R

メモ。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の区別というかどこが違うのかがよくわからない。持っているドライブは両方に対応してしまっているから逆に始末が悪い。どっちのメディアを買うのがいいのか。

FrogPad Bluetooth

LinuxでBluetoothのHIDデバイスを使うにはKernel 2.6.6なんとか以上が必要(holtmann.org)、と書いてあるなぁ。まだ普段使ってる環境は2.6系にしてないから、使おうとしたら面倒だな。 FrogPad(frogpad.com)のコレ(frogpad.com)とか使ってたらかなりいけてるかな、とふと思ったんだけど。USB版もあるけど、このデバイスからケーブル出てるとカッコ悪いよなぁ。 BluetoothのUSBデバイス(アダプタのほう)は使えるんだけど、つないだことがあるのはCLIEだけだ。CLIEのネットワーク接続としてLinuxのノートPCでNATでネットにつないであげるというのは動く。 いまは文字入力には101キーボードにSKKもしくはSKK+azikを使っている。LinuxではIMEのOn/Offは主にShift+Spaceが多いのだが、このFrogPadキーボードはShift+Spaceは押しやすそうだよね。左手だけでそれなりに高速に打てればかなりカッコいい(…あるのはカッコ良さだけか)。

Firefoxメモ:userChrome.cssとuserContent.css

userChrome.cssはUI部分のカスタマイズに使う。userContent.cssはWebページ表示部分のカスタマイズに使う。見ているWebページの特定の入力エリアのフォントを自分用にカスタマイズするときは、userContent.cssに

button,input,textarea,select,option {
  font-size: 12px;
  font-family: "Serif" !important;
}

などと書く。これをuserChrome.cssに書いても無駄であった。気づくのに2年かかった…いやさすがに2年はかかってないな(笑)。 (追記) 2004-08-06 09:18 ついでに<input type=“hidden” ….>な状態の内容を画面に表示するようにCSSでカスタマイズできないかなぁ、と思ってみた。やり方はいまだわからないが、できそうな気もするよね。

メモ:firefoxの設定

メモしておこうっと。まずはabout:configで新規boolean、fonts.xft.enabledをfalseに。network.http.pipeliningとnetwork.http.proxy.pipeliningをtrueに。maxrequestを増やして。 状況に応じて、~/.mozilla/firefox/*/chrome/userChrome.cssを変更(xftを無効にするとUIのフォントが汚くなるので)。

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set defau
lt name space to XUL */
* {
  font-size: 12px;
  font-family: "Serif";
}

まあ、別にxftを使ってもいいんだけど、フォント関連でけっこう固まることがあって、ページによって処理に時間がかかるものがあるのだ。そしてxftで固まるほうが止まる時間が長い。理由はよくわからないが、けっこう頻繁に起きる。 あとはextensionを入れまくる。JLPとかも入れてあげるといいかもしれない。タブの挙動を自分の気に入りの状態にするには苦労する。前に使ってたバージョンのやつと同じ状態にしたいだけなのだが。mozexは本家のは日本語がダメみたい(mew.org)なので、UTF-8にしてくれるmozexを入れる必要があった。 (追記) 2004-07-19 19:20 Undo Close Tabが退化している。以前はもっと便利だった気がするのだが。sageよりもRSS Reader Panelのほうがよかった。全部のタブに×をつけるのはどうしたらよいのだったかな。タブの中の内容を見ずに消したいこともあるじゃんか。とりあえずClose Tab On Double Click拡張を入れてみたけども、望みの挙動にはまだ遠い。

distcc

distcc(samba.org)ってソースツリーがNFSで共有されてたりしなくてもいいんだね。ヘッダとかコンパイラはさすがに同じものを用意してあげないと無理かな。それにしても、けっこう偉い。これ使えばコンパイルむちゃくちゃ速くなるじゃん。 ccache(samba.org)のときも感動したけど、sambaの人はこういう周辺ツールもよくやるよなー。 (追記) 2004-07-09 17:21 distcc、ヘッダはなくても大丈夫みたいです。なんでかって、プリプロセッサはマスターになっているノードで通って、*.iを各ノードのccにかけて*.oを戻しているみたいなんで。

メモ:Visio図をTeXに貼る

Visioで、epsで保存。次にVisioで読んでも編集しづらいので、Visio形式でも保存しておくことを強く、果てしなく強くオススメする。Visioのepsの日本語部分が化けるのは、フォントの設定がおかしいためだ。そこで、Linux側で

#! /usr/bin/perl -p
s,/_MS-Gothic,/GothicBBB-Medium-83pv-RKSJ-H,g;

のような感じのフィルタにかけて、TeX側に貼りつけると…見えます。フォントの名前の長さから推測して、毎回one-linerで書く気にはなれないと思います。 この後、できたdviをdvipdfmx等でPDFに落としてからxpdfで見ても図の中の日本語は見えます。このPDFはWindowsでAcroreadで見ても化けません。あんまり綺麗に出ているようには思えませんが、緊急避難用としては充分な状態になると思います。 すでにあるVisio図をTeXに貼り込みたいなんて思うことは…ないですか。そうですか。 Visio2002SP2(Windows)→tetex-latex-1.0.7-57のplatex(Linux)→dvipdfmx(Linux)→Acrobat5(Windows)で動作確認済み。ただし、Visio側でフォントをいろいろいじったりなんてことはしてません(してたらダメだと思う)。 (追記) 2004-06-16 19:45 しかしVisioの吐くepsファイルってなんでこんなにNULL文字とかがたくさんあるんだろう… (追記) 2004-06-17 09:38 あーでもちょっと複雑な図だとこの方法は全然通用しないな。psプリンタのドライバを使ってPSファイルに落として、ps2epsとかでいじったほうがよさそうだが…けっこう面倒だな。 (追記) 2004-06-17 09:54 Visioで必要な図をwmfとして保存し、OpenOffice.orgでwmfをepsに変換したら少しマシ。非常に面倒だけど。

Read Onlyでcreat(2)したファイルディスクリプタにwrite(2)が成功するなんて…

愚かな私は知りませんでした。 #include #include #include #include #include char data[] = “test\n”; int main(int argc, char **argv) { int f, r; if(argc!=2){ printf(“Usage: %s filename\n”, argv[0]); exit(1); } f=creat(argv[1], 0444); // open(argv[1], O_WRONLY|O_CREAT|O_TRUNC, 0444); if(f==-1){ perror(“creat”); exit(1); } r=write(f, data, sizeof(data)); printf(“write return: %d\n”, r); return 0; } で、

# gcc -o testcreat testcreat.c
# ./testcreat testfile
write return: 6
# ls -l testfile
r--r--r--    1 wtnb     users           6 Jun 16 08:57 testfile
# ./testcreat testfile
creat: Permission denied

なのです。GNU tarはこれを利用しているようです(パーミッション情報を指定してcreatしてからwriteするので、後でchmod(2)を呼ばなくてもRead Onlyのファイルを作って書ける)。 コメントのopen(2)を見ると、何が起きてるかわかりやすいかなぁと思う。

Firefox 0.9出てた…

こないだ0.9rcが出てたけど、いつの間にか0.9も出てたよ〜ん(mozilla.org)。 (追記) 2004-06-15 18:24 ダウンロードして使ってみている。プロファイルの移行は簡単にできたけど…Linux版はGTK2+XFT用しかバイナリがないのね。今まであえてXFT版じゃないのを使ってたから、なんか居心地が悪いな。まあ、ちゃんと動くんだけど。 (追記) 2004-06-15 18:34 エクステンションを入れると変になるのでいったん元ので動かすことにした。XFTなし版のバイナリが出たらそっちにしようっと。

unresolved symbol __moddi3…とか

gccは除算を最適化するために、/とか%の演算を__moddi3の呼び出しに変更してしまうようだ。いや変更はしないのだが、呼び出す選択肢もあって、シンボルだけは参照するのかな。それでとにかく、除算を含むプログラムをあるコンパイル方法でコンパイルしたときには、

unresolved symbol __moddi3
unresolved symbol __divdi3
can't resolve symbol '__moddi3'
can't resolve symbol '__divdi3'

などのエラーが出る。「あるコンパイル方法」というのは単に-nostdlibつき、ということなんだけど、__moddi3とかはlibgcc.aに含まれているので、libgcc.aをリンクしないような指定である-nostdlibをつけるとダメなのだ。-nostdlibをつけないか、あるいは手動でlibgcc.aをリンクすればよい。あるいはがんばって除算を使わないようにするという選択肢もある。しかし__moddi3等を使わないようにするコンパイルオプションも欲しいところ。 他にも、libgcc.aに入っている隠し関数(? hidden属性がついたシンボル)はこんな感じで、たくさんある。 __muldi3, __negdi2, __lshrdi3, __ashldi3, __ashrdi3, __ffsdi2, __clz_tab, __cmpdi2, __ucmpdi2, __floatdidf, __floatdisf, __fixunsdfsi, __fixunssfsi, __fixunsdfdi, __fixdfdi, __fixunssfdi, __fixsfdi, __fixxfdi, __fixunsxfdi, __floatdixf, __fixunsxfsi, __clear_cache, __absvsi2, __absvdi2, __addvsi3, __addvdi3, __subvsi3, __subvdi3, __mulvsi3, __mulvdi3, __negvsi2, __negvdi2, __divdi3, __moddi3, __udivdi3, __umoddi3, __udiv_w_sdiv, __udivmoddi4, __eprintf, __bb_exit_func, __bb_fork_func, __bb_init_func, __gcc_bcmp 気をつけられたい。 あ、__bb_*はbasic blockのプロファイラ用だな。こんなところにあったのか。また別の話になるけど、これはおもしろい機能で、テストカバレッジを調べるツールなんだけど、プログラムの各行を走った回数がわかるので、プロファイルにも使える。普通のgcc -pgは関数単位だけど、gcc -fprofile-arcs -ftest-coverageはbasic block単位なのだ(簡単に言えば行単位…と言うと説明が間違ってるけど)。そしてgcovで出てきた結果を解析する。 詳しくはgcovのマニュアル(info)を読んでみるとよいだろう。