この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
GNU tar では -z とか -j とかつけなくても「tar xf archive.tar.gz」で gz や bz2 などを自動認識してくれるようになっています。(NEWS ファイルによると 1.15 から)
1.19 以降では --exclude-caches で CACHEDIR.TAG のあるディレクトリの中身を除外したり、 --exclude-vcs で CVS/ や .svn/ などを除外したりも出来るようになっています。
CACHEDIR.TAG の除外を rsync でもやりたいと思ったら、直接対応していなくて find と「rsync --exclude-from」の組み合わせになってしまって効率が悪くて困っているので、何か良い解決方法があれば教えてほしいです。
(この記事は Ruby Advent Calendar jp: 2010 : ATND の2日目です。前日は yhara さんでした。)
ruby には 1.8.0 のころから un.rb というライブラリが標準添付されていて、 「ruby -run -e cp -- -p foo bar」や「ruby -run -e help cp」のように使えるようになっています。 どんなコマンドが使えるのかは「ruby -run -e help」を参照してください。
何のためにこういうものがあるのかというと、 win32/Makefile.sub や mkmf.rb で生成される Makefile で OS に依存せずに MAKEDIRS などを使えるようにするため ([Ruby] un.rb) というのが由来で、「-run」で実行できるようにこんな名前になっているそうです。
その un.rb に ruby 1.9.2 から httpd が増えていて「ruby -run -e httpd -- --port=3000 .」のように実行すると http://localhost:3000/ でカレントディレクトリのファイルが見えるようになります。
今まででも http://yoosee.net/d/archives/2009/04/03/002.html の「ruby -r webrick -e 'WEBrick::HTTPServer.new({:DocumentRoot => "./", :Port=>8000}).start'」のように起動することはできましたが、これだけではシグナルハンドラが WEBrick のデフォルトのままになってしまい、 Ctrl+C などで終了できなくて不便でした。 un.rb の httpd ではそれも含めて設定してくれるため、非常に使いやすくなりました。
ただし Windows で ruby 1.9.2p0 を使っている場合は lib/un.rb (httpd): SIGQUIT and SIGHUP are not guaranteed to exist. のバグでひっかかって起動しないため、「Signal.trap("QUIT", shut)」と「Signal.trap("HUP", shut)」の行を削除するか、チケットのところからたどれるのと同じように「if Signal.list.has_key?」を付ける必要があります。 すでに修正がバックポートされているので、次にリリースされる 1.9.2pXX では Windows でも問題なく起動するはずです。
最後に httpd のヘルプを載せておきます。 「--help」は optparse による自動生成のメッセージのため、コマンドの部分が「-e」になっていたり、オプションの後の DocumentRoot がなかったりしてわかりにくいため、 help コマンドを使う方が良いようです。
% ruby-1.9.2 -run -e httpd -- --help
Usage: -e [options]
--bind-address=ADDR
--port=PORT
--max-clients=NUM
--temp-dir=DIR
--do-not-reverse-lookup
--request-timeout=SECOND
--http-version=VERSION
-v
% ruby-1.9.2 -run -e help httpd
Run WEBrick HTTP server.
ruby -run -e httpd -- [OPTION] DocumentRoot
--bind-address=ADDR address to bind
--port=NUM listening port number
--max-clients=MAX max number of simultaneous clients
--temp-dir=DIR temporary directory
--do-not-reverse-lookup disable reverse lookup
--request-timeout=SECOND request timeout in seconds
--http-version=VERSION HTTP version
-v verbose
%
gnupg の鍵の有効期限を 2038 年より後にしてみているが、 64ビット環境だとちゃんと表示されるのに 32 ビット環境だと ????-??-?? になってしまう。 Seahorse (Ubuntu lucid の 2.30.0-0ubuntu2 で確認) だともっとひどくて 1904 年扱いになってしまっていた。
amd64の環境: % gpg --list-keys B4222F7A | head -n1 pub 4096R/B4222F7A 2010-06-27 [満了: 2040-08-10]
x86 の環境: % gpg --list-keys B4222F7A | head -n1 pub 4096R/B4222F7A 2010-06-27 [満了: ????-??-??]
「file -sL /dev/cdrom」で取得できた。
/dev/cdrom から実際の光学ドライブのデバイス (sr0 とか) へのシンボリックリンクがあるので「-L」でシンボリックリンクをたどるようにして、「-s」で「block special」と出させずに実際のドライブの中身を読むようにしたらボリュームラベルも含めて読み出すことが出来た (/dev/sr0 の読み出し権限のあるユーザで)。
% file -sL /dev/cdrom /dev/cdrom: # ISO 9660 CD-ROM filesystem data 'CDROM ' (bootable) % eject % file -sL /dev/cdrom /dev/cdrom: writable, no read permission %
それから「eject -t」でトレイを閉じることが出来ると言うことも知った (閉じる機構のあるドライブの場合)。