〜2004年8月上旬〜
昨日のshutdown時のumountがうまくいかなかったのか、なんか一部のファイルが壊れたらしい。 とりあえずKNOPPIXで立ち上げてfsckしてみると、 出るわ出るわでlost+foundにいっぱいたまった。 一応確認してみるとRuby Binariesのインストール用作業ディレクトリのファイル群なので、消しても問題ない。 しかし消せないファイルというかディレクトリが1個。 変な属性が立っちゃったようなので、chattrで落とす。
% ls -l total 44 d--x------ 2 802897 2151695874 45056 Jan 1 1970 Child.src % lsattr lsattr: Permission denied While reading flags on ./Child.src % sudo lsattr -u---a-A----E-- ./Child.src % sudo chattr -u -a -A -E Child.src usage: chattr [-RV] [-+=AacDdijsSu] [-v version] files...
あれ?複数はだめなのかな。
% sudo chattr -u Child.src % sudo chattr -a Child.src % sudo chattr -A Child.src % sudo chattr -E Child.src usage: chattr [-RV] [-+=AacDdijsSu] [-v version] files...
あ、-Eが無効ってことか。
% sudo lsattr ------------E-- ./Child.src cow:classes/REXML % sudo chown watanabe:ruby Child.src cow:classes/REXML % ls -l total 44 d--x------ 2 watanabe ruby 45056 Jan 1 1970 Child.src cow:classes/REXML % chmod 0755 * cow:classes/REXML % ls -l total 44 drwxr-xr-x 2 watanabe ruby 45056 Jan 1 1970 Child.src % ls Child.src % rmdir Child.src
うーむ。Eってなんなんだろう?まあいいか。消えたし。
いやー、他の記事を読まなかったら、すっかり騙されてたよ。
また、今回見つかった文章の中に「紫に萌ゆるをとこ、げにをこがまし。(紫 の上に萌える男はたいそうみっともない)」(256段)という、『源氏物語』 の主人公・源氏の君に対する痛烈な批判も含まれており、清少納言の『源氏物 語』観を知るうえで貴重な資料になりそうだ。
さらに、この文脈で用いられている「萌ゆ」の意味が、現在サブカルチャーマ ニアが用いる「萌え」の意と一致すると、一部研究家から指摘されており、こ の言葉の起源についての議論にも発展する気配を見せている。
しかしサブカルチャーマニアて。
via クリックランキング
録っといたビデオを見る。なんとマルコ・パンターニが亡くなっていたとは。 死因不明かあ。
3825通。あれ。減ったよ?
Changes:
Invalid options now cause a warning rather than a program abortion. The regression tests were revised for %A/%I/%Q. The bogogrep_static program is now stripped on installation. Miscellaneous cleanups were done.
Changes:
This release fixes build problems on the latest versions of FreeBSD-current and a rare DHCP address allocation problem.
/cygdriveディレクトリを作ることが流行ってるらしいが、そもそも/cygdrive自体が長いよね。
% mount -u -b -c /
とすれば、/c, /dのような感じで各ドライブにアクセスできる。
さらに/dev/clipboardを作っとくと、こっちも補完できるようになる。 ただCygwinの外からじゃないと作れない。
C:\cygwin\dev>copy nul clipboard
bashの場合はc:/を使うと補完はc:が無視された形になるので、あまりうれしくない。 一方zshだと問題ない。":"に何か意味があるのか?
最近Subjectも本文もないメールがよく来るようになった。 spamにもならないし、いったい何がしたいんだ? テロリストが森に木を隠すように連絡するとかいう話をどこかで読んだけど、 これがそうかな。ほとんどFromしか情報がないんだけど。
Bash 3.0とともにリリースされたReadline 5.0をimportしよう。
% cvs -d $repository import -m "Import of Readline 5.0" \ readline eban readline-5_0
としたら親切にも
Use the following command to help the merge: cvs -d $repository checkout -j<prev_rel_tag> -jreadline-5_0 readline
と言われたので、
% cvs -d $repository co -j base -j readline-5_0 readline
のようにcheckoutした。あとはconflictしたファイルを修正してcommit。
そろそろRubyFilterを使おうと思って、 RAAで検索してみると、URLが間違っている。 RubyMailを指している。
ま、それはいいとして、 RFilter::DeliveryAgent#save にはMH形式で保存する方法ないようだ。 deliver_mhを作るか、#pipeでMHのコマンドを呼び出すか。
最近 IQサプリにはまってる。 自分でも問題を考えてみた。さて?には何が入るか?
P, H, B, H, H, P, H, P, H, ?
念のためぐぐってみるとなんと同じ問題を考えた人がいる。 なんか悔しい。
とりあえず~/.procmailrcの最初のほうに
:0 c * $RUBYFILTER ?? yes | /usr/local/bin/rdeliver.rb --log $HOME/.rdeliver.log
を追加してみた。全部カーボンコピー扱い。 こうしておけば今の環境と併用できるはず。 先頭あたりにRUBYFILTER=yesと書いておけばrdeliver.rbが起動される。
rdeliver.rbに書いてあった通りに~/.rdeliverに最小の
def main agent.save('inbox') end
を書いて実験。ここまでは問題なし。
つぎに
def main agent.pipe('/usr/lib/mh/rcvsore +test') end
としてMH形式で保存させてみる。
% scan +test 1 2004-08-10 00:58 1379 |WATANABE H| test<<テスト。 2 2004-08-09 09:45 5835 |"Abu M.Ses| business transaction.<<Greetings from
いいようだ。って早速spamも来てるし。
更新。
RubyFilterというよりはrdeliverと言ったほうがいいかもと思う今日この頃。 agent.messageでメール全体を扱えるので
open("/path/to/message", "w") do |f| f.write agent.message end
という感じで保存できる。 そのファイル名はというとここで 例のmax_byが出てくるわけだ(なげーよ)。
require "pathname" def main inbox = Pathname.new("~/Mail").expand_path.join("inbox") new_file = inbox.join(Dir.entries(inbox.untaint).max_by{|x| x.to_i}).to_s.succ agent.log(2, new_file) open(new_file.untaint, File::RDWR | File::CREAT | File::EXCL, 0600) do |f| f.write agent.message end end
でいいかと思ったら、なぜかlogに
Action: defer: finished without a final delivery
と出てくる。なにかおまじないが必要なようだ。 saveを見てみるとraiseしなきゃいけないらしい。
raise ::RFilter::DeliveryAgent::DeliverySuccess, "saved to mbox #{new_file.dump}" new_file
を最後に追加。これでいいみたい。
いやいやそんなことしなくてもagent.save(new_file.untaint)でいいじゃん。 pwdは$HOMEになるようなので、expand_pathもやめよう。
def main inbox = "Mail/inbox" new_file = File.join(inbox, Dir.entries(inbox).max_by{|x| x.to_i}).succ agent.save(new_file.untaint) end