2000-01-11(火)
◆ fetchmail
さて、今日はメールを受信しよう。この日のために、FreeMailに実験用のアカウントを用意しておいたわけよ。今日の教科書はここ。昨日はbindのバージョンが違って痛い目にあったけど、今日は(たぶん)大丈夫(笑)。用意したアカウントは++++++++@mizar.freemail.ne.jpなので、設定ファイルである.fetchmailrcは以下のようになる。*******はパスワード。マルチユーザで使うなら書くべきじゃないだろうけど、このマシンはおれ専用なので問題ないだろう。
defaults protocol pop3 user ++++++++ poll mizar.freemail.ne.jp pass ********
◆ このファイルを$HOMEに置いて、/usr/bin/fetchmailを実行するだけ。
$ fetchmail File /home/sho/.fetchmailrc must have no more than -rwx--x--- (0710) permissions.
◆ おぉぅ。怒られてしまった。セキュリティ対策ですな。
$ chmod 0710 .fetchmailrc $ fetchmail 1 message for ++++++++ at mizar.freemail.ne.jp (1090 octets). reading message 1 of 1 (1090 octets) . flushed
◆ 試しにNetscape Mailで読みだしてみる。よし、ちゃんと届いてるぞ、と。あとはいつも使ってる設定を.fetchmailrcに書き加えるだけで、Linuxで受信できるって寸法だ。まぁ、それはもう少しあとだけど(だってまだメール出せないからね)。
教科書のsendmailのところを読んでいたら、daemonとしてではなく、inetd経由でsendmailを動かす方法が書いてあった。ふむ。これはいいかも知んない。このサイトはslackwareをネタにしているので、Kondaraには合わないところもあるけど、なんとかなりそうなので、ついでに挑戦しておこう。まず、sendmailをdaemonとして起動させない方法は、linuxconfを使えばいい。/etc/inetd.confの編集はまったく同じ。sendmailを殺して、inetdにHUPを送るのも同じでいい。ただし、Kondaraを使っている場合は/var/runにあるファイルを使ってプロセスIDを得た方がカッコイイ(笑)。SMTPポートへtelnetしての動作確認、fetchmailによるメール受信も成功したので、大丈夫でしょう。あとはメールの送信か。あぁ、sendmail.cf。やりたくねぇなぁ、これだけは。
それはまぁ、明日にしようと思って、メーラをうだうだいじっていたら、重大なことに気がついた。フォルダが階層的に作れないのだ。例えばメーリングリストのメールを分類しようと思って、MLというフォルダを作る。その下に例えばrubyというフォルダを掘ろうとすると、「すでにMLというファイルがあるよ〜ん」という(意味の)メッセージが出る。そりゃそうだ。IMAPの「フォルダ」はそのフォルダに入っているメールをすべて集めた単一のファイルなので、その下にフォルダを掘ろうとしたらML/rubyというファイルを作らないといけない。でも、MLというファイルはすでにあるから、同じ名前のディレクトリなんて掘れるわけがないのだ。はて、これはいったいどうすればいいのじゃ? 試しにMLというファイル(フォルダ)は削除して、新規にML/rubyというフォルダを作ってみた。つまり最初から階層構造を意識した指定をしたわけ。そしたらできた。でもさぁ、これだとMLにはメールを整理できないんだよね。それに、あとから階層を深くしたいと思った時もダメ。なんだこの仕様。ダメじゃん。時おり見かけるMH形式ってヤツを試してみろってことかな。ふむん。ちょっと調べてみよう。
2002-01-11(金) 7911歩
◆ tDiary: gzip圧縮
それじゃなんだか嬉しくないよなぁと思いつつ、RFCを読む暇もなかったのだが、単にContent-Lengthを出すのが面倒だったからというオチでした(笑)。変だと思ったんだよなぁ。
というわけで、gzip圧縮組み込みはいちおうTodo行きにしておきました。ありがとう。ちゃんとzlib拡張ライブラリが入っていなくても誤動作しないようになっているので、あとはユーザが選択できるようにすればいいかな。昨日のキャッシュ機能はCPUパワーが足らない人向けだとすれば、gzip圧縮は回線容量の足らない人向け。なんたってあの2chを救ったのと同じ技術なので(笑)、効果は高いのではないだろうか。
◆ tDiary: Tips
昨日見つけた、「シンボリックリンクはダメ」「CGIの拡張子は.cgiのみ」「rubyは/home/hoge/bin/ruby」という、いわゆる「レンタルサーバ三重苦」(←いま命名)のサーバにtDiaryを入れて、かつ「tDiary自体のバージョンアップを楽にしたい」という要求を満たすインストール技。1.3.2以降で有効。
まず、tDiaryをインストールしたディレクトリに以下のファイルを作る。ファイル名は「index.cgi」。
#!/home/hoge/bin/ruby require 'index'
「update.cgi」も、「require 'update'」とするだけで同様。実行属性を付ければこれでOK。バージョンアップは上書きでいけるし、なかなかいいのではなかろうか。
別のディレクトリにtDiaryを入れた場合も「require '/home/hoge/tdiary/index'」みたいにすればいいし、単一サーバで複数の日記を提供する場合にも威力を発揮しそう。
2003-01-11(土)
◆ 本日のpiccolo
昨日、先に会社を出たhoukouが駅前のBICから電話をかけてきた。「CF-60SSがある」とのこと。ホント、こういうことにはマメな男だ……。
そういうわけで、帰りに寄って買ってきた。もっともそのままでは付けられない。付属のネジはヒートシンクにねじ込めないから、今まで使っていたのを流用するためにファン側を削ってやらないといけない。これで1時間くらいかかってしまった。
で、実際に付けてみると、回転数は1,000rpmくらい上がっているけど(このファンは回転数が可変ではない)音量は同じくらい。高音域が減って、むしろ静かになった感じ。悪くない。
もっとも風切り音はまだするので、やはりこのままリビングに置いておくのは厳しい。suzuneの確定申告が終わるまで(笑)、しばらく2Fの和室に設置することにした。ここにはかみさんのもっとうるさいPCがあるからな。ここだと気温も低いので、systemの温度は30度くらいで安定。
◆ レンタルバイク
BMW R1100RSの廃車手続きを頼んでいた福田モータースから、手続き完了の手紙が届いた。9月に依頼したのに、ずいぶん時間がかかったな、とつぶやいたら、「新車を買わなかったからじゃないの?」とかみさんに指摘された。なるほど、それが経済原則というものであるな。
あとは来春に今年の分の税金を払えば(2ヶ月しか所有してないのに!)、R1100RSとも完全にお別れである。あーあ……。
しかし、新しいバイクを欲しいという気にはならないんだよね。いや、もちろん乗りたいんだけど、所有したいという気持ちにはならない。まぁ、盗難がトラウマになっていて、保有することが怖くなっているというのもあるけど、そんなに頻繁に乗るわけでもないのに、もったいない(維持費が、でなくてバイクがもったいない)。
そうなると、レンタルバイクはどうよ、ってことになるんだが、検索してもロクに出てこない。ちょうどAllAboutにそのものズバリのリンク集があったので見てみたけど、北海道・沖縄の他はほとんどない。関東だとM-1、SMC、MSLといったところ。これも都内だから、借りに行くのも一苦労だ。たしかに、レンタカーと違って難しい商売だとは思うが……。
2004-01-11(日)
◆ 代官山メガネ大祭
やることいっぱいあるのに、ついつい恐がり - 模倣犯を震源とした代官山メガネ大祭をめぐってしまう。えぇ、メガネ好きですよ。かみさんもメガネかけてるし。って別にメガネと結婚したわけじゃないけど。アキュビューのCMを見るたびに拳をぶるぶる震わせて「本当のおまえはそっちじゃないだろ」とツッコミを入れずにいられないですよ。ちなみにマイ・フェイバリットな有名人のメガネは、長谷川京子のプライベートメガネだね。宝物なので見せてあげない。何書いてんだ、おれ。
◆ やること……
ちなみに「やることいっぱい」の内訳は(tDiaryの開発は言うまでもなく)、こま犬の写真整理と、tmlやhowmの試用。
tmlは念願のRuby製MLなので(QuickMLは除く)、これは使わずにはおれんだろう。そういえば以前、誰かが作ると宣言していたような……。ちなみに「tml」という名称はもし自分で作ることになったら使おうと思っていた名前なので、もうおれが作ることはないだろう(←そういう問題か?)。
howmはUNIX User誌を立ち読みしていたらvim版もあると知ったため。「分類はしない」って方針は琴線に触れるよね。もっとも、職場のMicrosoft Office依存環境から脱却しないと、一人で使ってもあまり意味がないかも知れないので、思案のしどころではある。でももう、雑多なWordファイルの山から必要な文書を探すという不毛な作業はイヤなんだよ。
2006-01-11(水)
◆ 23件
自分のMM/Memo上を「あとで」タグで検索した結果の件数。「忙しくてこんなに溜まっちゃってるよぉ〜」と言おうとしたのに、思いのほか溜まってなかった。自分の整理整頓好きをちょっと尊敬した。
2007-01-11(木)
◆ iPhone、欲しいか?
なんだかApple信者のたてるノイズが多すぎて、冷静に判断できない雰囲気。
でも、iPhoneの存在自体は秘密でもなんでもなかったし、全面タッチスクリーンのデザインも「第6世代iPod」として何度も流出している。こういうのが出るのはとっくに想像していたわけで、いささか騒ぎすぎだろうし、奇襲に成功とは思えないな。二本指が使えるUIだってMacに搭載済みだし。
で、仮に今使ってる「W32SA + W-ZERO3 + iPod shuffle」をiPhoneで置き換える(値段的に釣り合いがとれる置換案だろう)ことを冷静に考えてみたら、まだまだ欲しいと思わせるだけの出来ではないと思えてきた。
手探りで操作できない
余計なものがなにひとつ付いていない、相変わらず魅力的で所有欲をそそられるデザインはすばらしい。が、画面を見ないと何もできないということでもある。これってけっこう不便。
最近、朝の電車で乗り過ごすのを避けるために、8:26にバイブレータのアラームをかけているんだけど、止めるときは服の上から携帯のボタンをちょんと触るだけである。ポケットの中ではおそらく自動的にセンサーが切れるiPhoneではこれができない(※)。緊急時に、ポケットの中で手探り110番することもできない。
かつてPDAと言えば全面タッチスクリーンというのが当たり前だったが、pilot(Palm)がその常識を覆して、最小限のボタンが非常に有用であることを示した。Jobsはボタンをふたたび否定したけど、Palm育ちのおれとしては、ボタンは必要だと思うのだな。iPod shuffleだって、しょっちゅう手探りで操作してるし。
あと、タッチスクリーンはフィードバックに乏しいので、文字入力が遅くなる。たとえ女子高生でも。それを補うためにうんと賢い予測変換を入れてもらいたいものだが、今回のiPhoneにはまだ増井テクノロジーが未搭載なので、たぶんまだまだショボいだろう。これも待ち要因になる。
※ツッコミにも書いたが、ボタンが1個だけあるのを失念していた(知らなかったわけではない)。その意味ではこの例は不適切。個人的には、初代pilotと同じ、4個ないし5個のボタンが必要だと思う。この数はいみじくも、Apple唯一の「手探りデバイス」であるiPod shuffleが持つボタン数にほぼ等しい。
GPSがない
GSMではない日本での動向が気になるところだが、そんなもん、3社(WILLCOM入れて4社?)が競い合って対応させてくれと頼みに行っているところだろう。心配はいらないと思う。
ただし、3G端末で定額料金にしてもらわないと話にならない。そして、今年から3G端末はGPSを搭載すべしということになっている。ということは、今回発表になったiPhoneはGPSを搭載していないという理由で国内販売はなさそう、ということになる。
もっとも、(auユーザとしては)GPSを搭載していない端末なんてありえないと思うくらい、GPSは便利なものなので、そういう意味で今回のiPhoneには魅力がない。ぐだぐだ言ってないで最初から搭載しとけよ、と思う。
唯一の選択肢はGPSを搭載しなくてもいいWILLCOMから出ることだが……どうだろう。そうなるとauを手放せないことになるから、ちょっと困るな。
アプリを追加できない
インタビューによれば、iPhoneにはユーザアプリを追加できない。なぬー!? なんのためにMacOS Xを搭載したのよ。
現在使っているW-ZERO3に搭載されているWindows Mobileは、はっきりいって最低最悪のOSだ。他に選択肢がないからしかたなく使っている。だから、オルタナティブなOSを乗せた端末が出てくれれば、乗り換えるだけの強力な理由になる。
OS Xが載っているなら、当然RubyCocoaで自作ソフトを……って流れになるじゃないか。それができない!? ありえん。だったら、(標準ではダメダメながら)有志が作ったソフトウェアのおかげでなんとか使い物になっているWindows Mobileの方がまだ夢があるってもんだ。
ともかく、Windows Mobileは、ホントにホントにホントにホント〜〜にどうしようもないOSなので、Appleにはがんばって欲しいと思う。でも、もうちょっとなんとかしてくれないと買えない。
◆
オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)(バートランド・メイヤー)
via あちこち。昨日発売だったのか。とうとう出たんだ。感慨深いねぇ。
前の『オブジェクト指向入門 (ASCII SOFTWARE SCIENCE Programming Paradigm)(Bertrand Meyer/酒匂 寛/酒匂 順子)』は、それこそ人生に衝撃を与えた1冊と言ってもよいくらいの重要な本なので、新しいのも欲しいけど高いなぁ。そもそも今の仕事は、オブジェクト指向とかまったく関係ないし……。
ともあれ、これから/今まさにプログラミングに取り組んでいる人は、高くて厚いけど一度は読んでおくべき本だと思う。歯ごたえがあるけど、それだけに長期に渡って血となり肉となる。きっと後悔しないはず。買うときは、ぜひ上のリンクから(バキ)。
◆ ISBN-13 ⇔ ISBN-10相互変換
↑のエントリを書こうとしたら、Amazonのページに新しいISBN-13が併記されていたので、変換ライブラリを書いてtDiaryのamazonプラグインに仕込んだ。それを使うために(大手術中で今はちょっと危ない)trunk HEADに追従してしまったよ。ビクビク。
置き場所がないのでここに貼っておこう。仕様書を読んでそのとーりに実装しただけの馬鹿正直・未最適化バージョン。
#
# isbn.rb: ISBN Library
# Copyright (C) 2007 by TADA Tadashi <sho@spc.gr.jp>
# Distributed by LGPL.
#
def isbn_10?( isbn )
isbn.gsub( /[^\dX]/, '' ).length == 10
end
def isbn_13?( isbn )
isbn.gsub( /[^\d]/, '' ).length == 13
end
def isbn_check_digit_13( isbn )
raise ArgumentError::new( "#{isbn} is wrong ISBN-13" ) unless isbn_13?( isbn )
odd, even = 0, 0
isbn.gsub( /[^\d]/, '' ).chop.split( // ).each_with_index do |item, index|
if index % 2 == 0 then
odd += item.to_i
else # even
even += item.to_i
end
end
check_digit = 10 - (odd + even * 3) % 10
check_digit = 0 if check_digit == 10
check_digit.to_s
end
def isbn_check_digit_10( isbn )
raise ArgumentError::new( "#{isbn} is wrong ISBN-10" ) unless isbn_10?( isbn )
sum = 0
isbn.gsub( /[^\dX]/, '' ).chop.split( // ).each_with_index do |item, index|
sum += item.to_i * (10 - index)
end
check_digit = 11 - sum % 11
check_digit = case check_digit
when 10; 'X'
when 11; '0'
else; check_digit.to_s
end
check_digit
end
def isbn_13to10( isbn13 )
isbn10 = isbn13.gsub( /[^\d]/, '' )[3,10]
check_digit = isbn_check_digit_10( isbn10 )
isbn10[9] = check_digit
isbn10
end
def isbn_10to13( isbn10, prefix = '978' )
isbn13 = prefix + isbn10.gsub( /[^\dX]/, '' )
check_digit = isbn_check_digit_13( isbn13 )
isbn13[12] = check_digit
isbn13
end
if __FILE__ == $0 then
i13 = 'ISBN 978-4-798-11111-7'
i10 = 'ISBN 4-798-11111-2'
puts "#{i13} => #{isbn_13to10( i13 )}"
puts "#{i10} => #{isbn_10to13( i10 )}"
end
# きさら [Amazon U.K.のQ&Aでは、ISBN978-の間は13to10で大丈夫だが、ISBN979-以降はWebサー..]
# ただただし [うん、それが現実的な表現というものでしょうね >きさら]
# レジ [>W32SA + W-ZERO3 + iPod shuffle」をiPhoneで置き換える(値段的に釣り合いがとれる..]
# ymer [>レジさん iPhoneの価格は「2年間の縛り込みで」$599ですよ。]
# ただただし [レジさんの指摘は、日本国内のロジックとしては妥当な面もあるけど、相手は(見かけ上の値引きである)ポイント還元にすらい..]
# レジ [>レスをくれた皆さん 日本国内の販売になるなら、必ず日本国内の方式になるとした自分の認識が甘かったようですね。 ..]


# Nana [それ買ったらすぱいしーをなすに格安で譲るって言うのはどうでしょ?ひひひ]
# ただただし [えー、Trevaは10万画素しかないんだよ!]
# tom [! が抜けてません?(ぼそっ]
# ただただし [むむ。「!」込みが正式名だったのか……。]