_ Cobalt100号記念号にCobalt創刊号の表紙があって、そこに 新井素子の名前があった。この時期に何を書いてたんだろう? と思ったら、どうやら『拝啓 みなさまお元気ですか?』という エッセイだったらしい(『まるまる新井素子』p.203より)。 これって何かに載ってたっけ? エッセイに関してはあんまり 記憶がない。
_ その前に、小説ジュニアに『影絵の街にて』と『夕暮れ・五つの情景』を 書いている。
_ コバルトの新刊。 気になる男の子にお近づきになれたと思ったら、そいつは魔女(謎)で、 いきなりその魔女(男だけど)の使い魔にされてしまう女の子の話。
_ ふむ。なかなか良いですね。ちょっと荒っぽいところもあるけど、 ちゃんとコバルトな話になってるし。正直、竹岡葉月はCobalt掲載作 とかじゃちょっとどうかな? という感じもあるにはあったんですが、 これなら今後に期待できそうです。あとはコンスタントに新作が 書けるかどうかが勝負。頑張ってほしい。
_ どうでもいいけど飯田晴子の挿絵は変。
_ コンテンツの引越しを考えています。ドメインは取りました。 サーバスペースも借りてます。当然Rubyはインストールされてないので、 自力で入れました(<Rubyが使えないところでは生きていけないひと)。 あとはいろいろCGIなどを書いて、それができれば移行します。
_ いつ、どこまで移行するかは未定ですが、しばらくは併用する つもりです。
_ 麻弥さんの『リンクについてのアンケート』の結果が 公開されています。
_ しかし回答者の4割がl996年からWebを見てた、ってのがすごいですね。 それと、リンクしたら必ずメールか掲示板で連絡する、というのが 事前事後を合わせて15%を越える、というのもなかなか驚きです。
_ それと謝辞に名前を載せていただいていますが、 言うまでもなく私はたいしたことはしてません。Rubyの賢さと 麻弥さんの労力によるものです。ほんとうにおつかれさまでした。
_ しかしその後のメールのやりとりで、麻弥さんにはすっかり 謎なひとだと思われてしまっているような気もする今日このごろ。
_ httpgetterは、とりわけcookie周りがあまりにヘボい仕様なので 書き換え中です。今回はw3mのcookie.cを参考にして書き直している のでかなりまともでしょう。
_ しかし、どうもクッキーに関する世の中のサーバの仕様は 元々のNetscapeの仕様に従っているらしく、 RFC2109や RFC2965では parseできないらしい。なんてこと。
_ たいへん遅ればせながら。
_ 一歩さんの自動検索とか 芋づる検索ですが、そういうのは下手に作ると狂ったように DBをたたきまくる、とっても迷惑なアプリになって しまうのでちょっとでんじゃらすですよね。
_ みんな個人的に作って、 「あー、こういう書き方すると××を○○した時にやばいんだよなー。 まあでもそういうサイトには接続しない(はずだ)からいいか(汗;」 とかやって運用しているんじゃないかとか。だから、 なかなか表に出ないのかもしれません。
_ というわけで、HTTP-getter 改め WebAgentを書きました。 こちらにある webagent-0.5.1.tar.gz をダウンロードしてください。
_ 今回の変更の(個人的な)目玉は、cookie処理の部分を、テキストWeb ブラウザとして著名な w3m のソースを参考に書き直したことです。そのため、w3mが内部処理用に 作成する.w3m/cookie ファイルと互換性があります(あるはずです)。 まー、そんなことはw3mを使わないふつーの人にはどうでもいいんですが、 今までバイナリで読めなかったcookieのファイルが読めるようになる のはちょっとうれしいかも。標準では「agent_cookie.dat」という ファイル名のファイルにクッキーの情報が格納されます。
_ ところでこのw3mのcookie.cって、あITOさんじゃなくて岡部さんという 方が書かれたんでしょうか?
_ 有里さんのnet/httpを使ったコードについて いろいろと突っ込まなければいけないような気がするのですが、 なかなかまとまらない。 というか、そもそも判りにくいコードですみません(_o_)>HTTP-getter
_ MZTさんがカナダのオタワ大学 (リンク先はこれであってるかな?)に留学することになったので、 その壮行会に行く。
_ 一次会はMZTさんの隣の席に座ったので、いろいろと留学の話を聞く。 留学して学びたいのは汚職とか天下りとかが経済的にどういう意味がある のか、といったことらしい。要するに、経済のどういった仕組みから 汚職や天下りが生まれるのか、そしてそれにより経済にどういった 影響が出るのか、ということでいいんでしょうか? 話を聞いてる分には面白そうだけど、確かにそんな研究を表立って 支援してくれそうな企業はなさそうだし、日本の大学でも歓迎されるか どうかは怪しそう、てなことで、海外で研究してみようと思うのは納得 (そもそもそういうことをやってる研究者が日本ではほとんどいないらしい)。 頑張って研究に励んでくださいまし。
_ 今回の幹事のヒラマドさん は早くから壮行会に関するメールを精力的に送ったりと、忙しかった ようだ。どうもおつかれさまでした。
_ 小林泰三の『ΑΩ』 【 bk1 / ISIZE / 旭屋 / Jbook / BOL / 紀伊國屋 / amazon / eS! / 富士山 / 本屋さん 】 を読む。
_ わはははははははは。いやはや。面白かったです。 とりあえずp.75の『「熱力学の第二法則」は決して打ち破ることが できない普遍的な原理なのだ。』で爆笑。
_ ちなみに上の「Α」は「A」、つまりアルファベットのAではなく、 ギリシア文字のアルファを使ってみた。一応JIS X 0208的には ちゃんと別々の文字が用意されているのでした。
_ あの『Unicode A primer』の翻訳、『Unicode標準入門』 【 bk1 / ISIZE / 旭屋 / Jbook / BOL / 紀伊國屋 / amazon / eS! / 富士山 / 本屋さん 】 も読んでいます。まだ読んでる途中だけど、よい本。
_ いや、はっきりいって原著の出来はそんなに良くもないかも しれません。網羅的ではあるけど、とりたててすごいところは ないので。でも、この翻訳は、監修者のおかげで傑作になって います。Unicodeについて一通り知識がある人には、 監修者注と付録のF(と、ついでにG)だけでも読んでみてください。 新しい情報は何もないかもしれませんが、真摯な技術者の姿勢が きっと胸を打つはずです。
_ JAISTの立石さんからパッチをいただきました。 Sablotron 0.60の setEncodingを使えるようにするやつで、これを使えば、iconvの使える 環境だと出力する文字コードを自由に設定できるようになります。……が、例えば ISO-2022-JPで出力して時に、ファイルのヘッダが になってしまうのは ちとまずいような。要調査。
_ ……しかし今日の日記は文字コードネタ尽くしだな。
_ 麻弥さんの日記(01/06/20)から、 「虫のいい日々」[38]を読む。
_ ……うわ、××さん(<旧名は出してないので伏せておく)じゃない ですか! なんかなつかしくてうれしい。お元気そうで何よりです。
_ でも、「ミステリ系更新されてますリンク」の影響はそんなには大きく ないと思ってたのですが。作りはじめたのもそんなに昔ではないし。 ……と思ってファイルスタンプを確認してみたら、1999年5-6月ごろから 作りはじめたらしい。2年前ってことは、今だと結構前ってことに なるんでしょうかね?
_ さらに、書評系黎明期について。 私はとうぜん今も昔もリンク自由派なので、あまりその当時Webを 使いはじめた人の意識まではあんまり分かりません。 「みすりん」も無許可リンクでやってましたし。でも、 書評系黎明期前夜、1995年あたりにサイトを開いてた人は大学などの サーバを使っていた人がかなりいて、そういう人はリンク自由派が 多かったと思います。
_ ちなみに、ならのさんの旧サイトは1996年9月27日に「みすりん」に 登録してたようです。まさに黎明期。思わず過去データをひっくり 返しちゃったよ。
_ リクエストもいただいてしまったので(_o_;;)、 Net::HTTPクラスの使い方などについて。
_ まず、Net::HTTPクラスのインターフェースは変更が予定されています。 現状で Net::HTTP#get2 相当のものが、get という名前になるようです。 というわけで、ちょっと心にとめておいてください。
_ 次に、例外の使い方について。例外の基本は、
begin
(メイン)
rescue
(例外時に実行する命令)
ensure
(例外があってもなくても強制的に実行する命令)
end
_ ですが、どんな例外が起きたかによって処理を変えたい場合が あります。これはrescue節の中で条件判断(ifとか)を使っても できるのですが、rescue自体でも振り分けができます。 これは、
rescue (例外のクラス)
_ という書き方をします。例えば以下のような感じ。
(略)
begin
http = Net::HTTP.new(host, port)
http.start
(略)
rescue SocketError
$stderr.puts "ネットワークへの接続に失敗しました(SocketError)。"
$stderr.puts $!
rescue SystemCallError
$stderr.puts "ネットワークへの接続に失敗しました(SystemCallError)。"
$stderr.puts $!
rescue
$stderr.puts "ERROR: #$!"
ensure
http.finish
end
_ いや、エラーメッセージは日本語じゃなくてもいいんですが。
_ そしてもう一つ、HTTP#startの書き方ですが、これはイテレータ(ブロック)を 使うのがおすすめです。そうすると、ブロックからの脱出時には 必ず http.finish 相当の処理を勝手に行ってくれるので、 ensureする必要がなくなります。
(略)
begin
http = Net::HTTP.new(host, port)
http.start{|f|
res = f.get2(path)
puts res.code
puts res.message
puts res['Last-Modified']
b = res.body
b.each{ |line|
print line
}
}
rescue SocketError
$stderr.puts "ネットワークへの接続に失敗しました(SocketError)。"
$stderr.puts $!
rescue SystemCallError
$stderr.puts "ネットワークへの接続に失敗しました(SystemCallError)。"
$stderr.puts $!
rescue
$stderr.puts "ERROR: #$!"
end
_ こんなところですかね。でも、うまいエラー処理(適切な メッセージ表示など)は難しいです。 私もこれというのはまだ思いついてません(_o_)
_ ある程度知識がある人はみんなこういう読み方になっちゃう のは仕方ないですねえ。 でも、わたしとしては、積極的に監修者の「スタンス」を 読むというか、ちょっとおおげさに言うと「生き様」を読む、 という読み方を勧めたいのでした。 そういう読み方にも耐えられるような姿勢と記述だと思いますし (逆に言うと、原著の部分はそういう読み方に耐えられない)。
_ ……やっぱり「やのくん」と言い方は変だよなあ。 さりとていきなり「やの」と呼び捨てにするのは、Webでは 気がひけるし。
_ 昨日はTokyo Perl Mongersの定例会?に参加してきた。いや、Tokyo.pmの メンバー?ではないのですが、YARPC19101の反省会も兼ねて、ということ だったので参加させていただいたのでした (というか、そもそもTokyo.pmの構成すらよく分かっていない)。
_ だがしかし、参加者が多かったらしく、あまり反省会はせずに、 単に焼肉を食ってきただけ、という話も(^^; いや、美味しかった からよかったのですが(よかったのか?)。
_ それでも前田さんからはtokyo.pmの話を色々と聞く。
_ やはりRubyでも勉強会とかしますかね? ていうか、何を勉強する んだろう?
_ 今日はRubyの入門書の打ち合わせ。いや、遅れてるんですが(汗;、 どう進めましょうか、ということで。
_ やはりプログラミングを知らない人にオブジェクト指向とは何ぞや とか、クラスの使い方とかの説明をするのは難しい、という話に。
_ あと、制御構造の話もそれなりに丁寧にやらないとまずい、 という指摘も受ける。とはいえ、やるタイミングが難しい(Rubyの 制御構造はオブジェクトと絡み合う部分もあるため)。とりあえず、 最初のところでは各クラスの説明やざっとつまみ食いして、それから 改めて制御構造とかの基本的な話を書く、という構成になりそう。
_ とりあえず、7月の上旬で、基本的な文法のところと、OOPの基礎に ついてのところまでは書く、ということになる。頑張らねば。
_ その後、創元推理倶楽部東京分科会の二次会に。いや、昼の例会にも 出席したのですが、打ち合わせのために抜けてきたのでした。 創元は今年になってから初参加。東風さんから結婚式の話を聞いたり、 某氏より謎宮会について突込みを受けたりする。
_ Net::HTTPは、Ruby Application Archive(RAA)にある方では すでに1.2になっていて、ダウンロードできます。 Ruby 1.6.x にはフィードバックされないみたいですが。
_ 「他の言語からRubyにやってきた人がひっかかるのは、クラスと イテレータ」ということでしたが、 イテレータについては……うーん、これはどうしても慣れが必要なんです よねえ。一見似たような形をしても、意図としては異なる、という使われ 方もあるので。うまい説明とサンプルについては自分への宿題にして おきます。
_ 一方、クラスについてはちょっと事情が異なっていて、これは 他のまともなオブジェクト指向言語、JavaとかSmalltalkとかから 来た人にはあまり説明する必要がなかったりするところなのです (そういう意味ではイテレータもLispから来た人は ひっかからないのかも)。 とはいえ、「いいクラスの使い方」を説明するのはこれまた難問で……。 あくまで私見ですが、「いいクラスの使い方」が分かるようになる には、「デザインパターン」とか「リファクタリング」とかまで 分かってないといけないような気もするです。
_ で、SablotronのレベルでSAXとかDOMとかしたい(しかも機能限定版で)、 っていうひとは本当にいるんでしょうか? 単に変換して、あとは あらためてちゃんとしたDOMに食わせる、というのじゃだめ?
_ メソッドとクラスについて悩む。
_ 東直己『逆襲』 【 bk1 / ISIZE / 旭屋 / Jbook / BOL / 紀伊國屋 / amazon / eS! / 富士山 / 本屋さん 】 読了。
_ 推協賞をとった際、Webでも喜んでいる人が何人かいてうれしかった。 そんな東直己の、初のノンシリーズ短篇集(だと思う)。
_ んー、なんか今までと雰囲気が違うものが多いですね。好みは 別れるかもしれない。『春休み』(ほろ苦い青春物) 『本物』(東直己っぽくない味わいの佳作) 『逆襲』(探偵のキャラがいい)がおすすめ。
_ 薪谷市の作品は、北海道の話に比べるとアクが弱いように 思えるのは気のせいですかね。
_ をゐなりさんのをゐなり日誌を読む。
_ うーん、Rubyのイテレータは確かに慣れると癖になる要素はありますね。 JavaのIteratorは、クライアントがイテレートを管理する外部 イテレータなので、使いにくい一方、自由度の低いRubyのイテレータ より重宝することもあるようです。って、私はJavaはよく知らない んですけど(汗; Javaによる内部(インターナル)イテレータについては、 浅海さんの記事が参考になりそうですが、Javaでは全然シンプル じゃないですね……。これは言語の差でしょうか。
_ む、 この例の(1)ですが、「C的」かつ「Rubyで動く」ようにするには こんな感じでしょうか。
a = %w(Ruby Perl Python sed awk)
for i in 0...a.size
print a[i],"\n"
end
_ ところで、まつもとさんはRPGでいうならゲームマスターでしょう。 たまにゲームのルールを変えたりもしてくれたりして、一部の プレイヤーを悩ませてます :-)
_ をいろいろ書いてみる。あおきさんの 「極めるイテレータ」 を参考に。
##
## 内部要素へのアクセス
##
ary = ['a', 'b', 'c', 'd']
ary.each{|item|
print item,"\n"
}
#
hash = {"a"=>"b", "c"=>"d"}
hash.each{|key, value|
print key,": ",value,"\n"
}
##
## 内部要素へオブジェクトを生成しながらアクセス
##
str = <<-EOB
abcde
fghij
klmno
EOB
str.each{|line|
print line
}
#
ary = ['a', 'b', 'c', 'd']
ary.each_with_index{|item, num|
print num,": ",item,"\n"
}
##
## 一定期間のみ存在させたいオブジェクトのために、
## スコープを提供する
##
File.open(ARGV[0]){|f|
str = f.read
print str
}
#
File.open(ARGV[0]){|f|
f.each{|line|
print line
}
}
##
## メソッドにメソッドを渡すためのもの
##
ary = ['a', 'b', 'c', 'd']
ary2 = ary.collect{|item|
item + item
}
#
ary = [["foo", 1], ["bar", 3], ["buz", 2]]
sorted_ary = ary.sort{|a,b|
a[1] <=> b[1]
}
#
signal(SIGTRAP){
print "signal.\n"
}
_ あ、えーと、もうちょっと待ってくれるとうれしいかもです(_o_)。 URLを入れ替える(/r/ を本体にして /rubyist/ をredirectする)予定 なので。
_ あ、もしかしてnDiary Anntenaってredirect(3xx)にも対応してたり するんでしょうか?
_ ところで、nDiaryでサーバ側にデータを置いてWebで編集できる ようにしてる人って、他にどれくらいいるんでしょうかね。 こっちの方のスクリプト(咳さんのerbを使ったもの)も早く公開しないと。
_ アレですが、修正しました。まだHot linksができてない のがナニですが、リンクは構いませんです> のとやさん
_ ……と、ここまで書いてサイトのURLを書かないのは反則ですかね。 ここです。 数ある nDiary サイトの中でも、相当に異彩を放っているんじゃないかと 思います(いいか悪いかはともかく)。
_ あ、26日の クラスとかイテレータとか続き で、をゐなりさんのところに リンクを張り忘れてしまいました(_o_) というわけで、今さらながら修正。