その後、実家の近くの奥湯田温泉に入る。ひとり100円は安すぎ。
効能書きによると単純アルカリ泉らしいのだが、湯につかるとすべすべした感触があり、 いかにも温泉らしい気分が味わえる。玉造温泉は歴史はあるものの、お湯は普通だものなあ。
なんて、ゆっくりした気分を味わってはみたものの〆切が延びるわけではない。
で、原稿を書くためにirbを使っているのだが、補完機能が思いのほか便利で、 いまさらながら感動する。
ホームディレクトリの.irbrcに
require 'irb/completion'
という記述を追加すると、あら不思議、TABキーで識別子を補完してくれるじゃありませんか。
しかも、
foo.
の後ろでTABを押せば、変数fooの指すオブジェクトに応じてメソッド名を補完してくれます。 これ、最強。
これがあれば、他の対話環境はめじゃないなと。
年に1,2回、山口に帰省しているのだが、たいていは週日のうちに松江に帰ってしまうので、 山口支部にはずいぶん長い間顔を見せていなかった。何年ぶりだろう。 懐かしい人がたくさんいた。
山口の教会はバイパス沿いのパラボラアンテナが見える位置にある。 二階の窓からは真正面に見えるので、喜ぶ人もいるかもしれない。
集会終了後、防府のバプテスマ会があり、フォントを借りに来たので、防府の人たちにも会った。 それこそ17年ぶりくらいに会った人もいた。懐かしい。
当時2歳くらいだった子がめちゃめちゃ成長してて、あいさつしてもお互いに全然分からなかったとか。 その子のお兄さんを見て、お父さんと勘違いしたとか(いつまでも若いなあとか思ってた)。
日曜日には仕事をしないことにしている。
とあるからだ*1。とはいうものの、今回みたいに、
ような状況では、日曜日でも仕事しておきたいなあ、という誘惑に駆られる。
しかし、まあ、そういう状況でも自分の決めたルールに従い、かつ責任もきちんと果たすのが、 宗教を持つものとしてのあるべき態度だろう。冒険だが、今回もそうすることにする。
しかし、本当に「あるべき態度」は、もっと前から原稿を仕上げておくことではないか。 帰省することはず〜っと前からわかってたんだから。
*1 ユダヤ教徒の安息日は土曜日だが、キリスト教徒は「主の日」である日曜日を安息日としている
お盆だからということで、12時過ぎたところで夜釣に出かけた人たちがいた。 おかげでセミナリー欠席と遅刻。こらこら。
クリスチャンにお盆は関係ないだろうと思うのだが、 家族の希望により今日は休みとする。
で、米子で買いもの。ブックオフ、オフハウス、アニーのお気に入り、いとこの店('tis clay)、天満屋。 あちこちさすらってくたびれちゃったよ。
米子のブックオフで『め組の大悟』を12巻までまとめて買った。 12巻で完結だと思っていたからだ。ところが、実は20巻まであることが判明。 何年かぶりに買った漫画本なのに、残りを探して回ることになりそうだ。 連続ものは後半が入手しにくいんだよなあ。愛蔵版ならまだ新刊があるんだけど、 半分入手してるからなあ。
しばらく前にサーバをXFree86からXorgに置き換えた。 別になんの問題もない、と思っていたのだが、 DPMSでバックライトがオフにならないことに気がついた。 なにが問題なんだろう。放置しておくとバックライトが消えていることがあるので、 standby/suspend/offの問題かと思ったが、dpms force offとかでも消えない。
謎だ。
追記
私のマシンはIBM Thinkpad X31、使っているドライバはatiでもradeonでも同様にバックライトは消えなかった。他に関係ありそうな情報はなんだろう?
金曜日の午後から火曜日の午後までまる4日間ネットにアクセスしなかったことになるのだが、 帰宅してからメールを取り込むと、7400通以上のメールがたまっていた。
スパムフィルタを使ってフィルタリングしてもまだ1200通以上の「読むべきメール」が残っている。途方に暮れそうだ。
とりあえず仕事関係の急ぐものだけ、ピックアップする。 それでもかなりの量だ。げんなり。
吹き出しそうになった。恐るべし、Ruby City MATSUE。
20号。ぱちぱちぱち。
しかし、私は今月めちゃめちゃ忙しくて、 連載(他言語探訪)はお休みしてます。
ごめんなさい。
商用Smalltalk処理系としてはそれなりに有名だったDolphinの開発が 中止される、という話。最大の理由は「商売にならないから」。
また、「オープンソース化してほしい」というリクエストには 「オープンソース運動は好きじゃない。 Dolphinの商業的価値を投げ棄てるくらいなら、 時の砂の中に埋もれて消えていく方がマシ」という返答が。
いずれにしても、Smalltalkは世間に受け入れられない証拠がまた一つ、 という感じか。残念だ。
しかし、Dolphinが市場からいなくなっても Smalltalkが死んでしまったわけじゃない。
たとえば、Syxは Smalltalk-80の新しい実装。頑張っているようにみえる。 ソースはまだ読んでないけど。
Smalltalk言語そのものではなく、その影響ということなら、 それは現代でも決して小さいものではない。 たとえばRubyもそうだ。RubyにはSmalltalkの影響が随所に見られる。
で、ここで紹介するSScriptはJavaScriptに対するSmalltalkの影響(文字列ベースだけど)。
実際にSScriptを使ったソースコードを見れば、ひとめでその面白さが分かるのではないだろうか。
[1, 2, 3]._collect(':x | ^x+1'); -> [2, 3, 4] [1, 2, 3, 4]._select(':x | ^x > 2'); -> [3, 4] [1, 2, 3]._collect(':x | ^x*2'); -> [2, 4, 6] [1, 2, 3]._reject(':x | ^x > 1'); -> [1] [1, 2, 3, 4]._inject_into(1, ':x :y | ^x*y'); -> 24 [1, 2, 3, 4]._inject_into(0, ':x :y | ^x+y'); -> 10 [1, 10, 7, 8]._sort(':x :y | ^x < y'); -> [1, 7, 8, 10] [1, 2, 3]._sort(':x :y | ^x > y'); -> [3, 2, 1] var a= { x: 1, y: 'howdy' }; var b= { x: 4, y: 'howdy' }; var c= { x: 2, y: 'howdy' }; [a, b, c]._sort(':w :z | ^w.x < z.x'); -> [a, c, b] var counter= 0; '^counter < 5'.whileTrue('counter._print(); counter++;'); (5)._to_do(10, ':counter | counter._print();') (0 > 1)._ifTrue(' "howdy partners!"._print(); '); return (this <= 2)._ifTrue_ifFalse('^1', '^('+this+' -1).fibo(); + ('+this+' - 2).fibo();');
えーと、なんてクレージーなんでしょう(ほめてる)。 APIリファレンスも参照のこと。
Nuは「Rubyでない言語」。 どういうことかっていうと、Objective-CとRubyは思想的にはかなり近い線だが、 実装はまるで違う。文字列も配列もなにもかも。 で、Objective-Cのデータ構造を使ったRubyのような(しかも、Cのように効率が良く、 Lispの強力さも併せ持つ)言語なのだそうだ。
ただ、まだこれ以上の情報はないので、続報を楽しみに待ちたい。
追記: 続報
実態がよくわからない言語、その2。
Otterは「いつまでも公開されないArcはきっとこういう言語なんじゃないかな」というような言語。 だが、現時点ではホームページには なんの情報もない。
このLisp NYCに出席した人からの情報がほしいな。
追記: 過去ログが公開されているらしい。
ActiveRecordの欠点はテキストベースのカラムタイプの扱いと、 属性ハッシュにデータベースからのテキストとシリアライズされたオブジェクトが混じること、だとか。
私には判断できないが、欠点の指摘や改善の提案は非常に健全だと思う。
個人的にはRailsの最大の欠点は、 「自己中心性」にあると思う。 つまり、Railsはかなりすごい勢いでRubyそのものを変化させてしまうので、 他のライブラリなりフレームワークなりが似たようなことをしようとすると すぐに衝突してしまう。まあ、同じようなことをみんながやると大抵悲惨なことになるので、 基礎クラスを書き換えるような「黒魔術」はActiveSupportに任せておけ、 というのも理解できる態度ではあるが。
ま、このRailsの欠点はそのままRubyの弱点のせいでもあるわけで、 Ruby 2.0では、この辺になんとか対処したい。
Erlangのメッセージリングの例題をRubyで実装したもの、だと思うのだが、 ソースコードを読んでもいまいちなにをやっているのかわからない。
誰か解説してくれると嬉しいなあ。