トップ «前の日記(2008-01-03) 最新 次の日記(2008-01-05)» 編集

日々の破片

著作一覧

2008-01-04

_ Railsは吹き溜まりの続き(でも、メモだけ)

昨日の続きRails Is A Ghettoだが、DHHの400リスタートについては更新されてる。DHHからメールが来たそうだ。

相変わらず、抄訳(要約じゃないね、言葉のコンテキストを生かそうとしてるわけだから)。

●DHH Still Rocks More Than You(それでもDHHは、てめぇらよりもよっぽどいかしてるぜ)

おれ、実際のところDHHのこた、好きなんだ。でもあいつはおれのこと嫌ってるんじゃないかな。おれがRailsコアに繋げてるときに悪口言ってるし、おれが正しいことをやろうとしても絶対に助けてくれないし、でもあいつはいいやつさ。

DHHがおれにメールを寄越したから読めるようにしといてやろう。

「ところで、神の気まぐれな手によって400回のリスタートが起きているわけではないよ。同時に60プロセス動かしているのが、メモリの上限に達した時点でリスタートをかけるわけなんだ。」

ってことはだ、エリックのarray.cパッチを放置したのがすべてのドラマと嘘っぱちの原因なんじゃねぇか。まあ、悪意はなかったようだけどな。

でも、それがRailsが吹き溜まってる原因のひとつだぜ。日本人の開発者どもが、こういった重要なパッチ全般を無視するってことだ。やつらはすげぇいいやつらなんだが、しろーとくせぇんだよな。

(訳注の追記:コメント欄も参照。最終的には1.9系についてはakrさんのハッシュ最適化に始まる一連のメモリ使用効率向上修正シリーズで機能的には入ったのではないかと思う(追記の追記:少なくとも時期についてはこれは嘘でした。コメント欄参照。実際にどうかは必要な人が調べてください――さらに追記:akrさんが調べてくれたけど、1.8.4と1.9については入ってないそうです)。1.8.6へバックポートされているかはちょっとわからないけど、調べればわかるだろうから興味ある人は調べると良いと思います(追記:調べても無駄なようです。むしろshiftとか高速化したい人は元のパッチを直してみたらどうかなぁ?)。日本では1.9系に注力しているときに、向こうではRailsのおかげで1.8系が爆発的に利用されているとかの行き違いとみても良いかな?)

追記(1/5):Zedのエントリーを読んでも(というか読むものが間違っているとも言えるけど)、前後関係が良くわからない。Mutex周りにバグあるいはシステム固有の制限があって、それがfastthread(名前にthreadがつくけど、Mutexの別実装だと僕は認識している)で解消されたという話と、array.cのshift/unshiftパッチの関係がわからない。後者はキューとして利用する場合に引っかかるということはわかるけど。で、それらのためにMongrelの動作が不良になるが、Railsコアチームがその不良をMongrelのせいにしたということだとすると、FastCGIを使っていて延べリスタート400回していたDHHの話の原因がarray.cパッチにあるということの関連が見えない。こういう調べればわかるが、今すぐには調べる気にはならず、途中まで書いて放置するのも気になることっていやですね(と共感を求めて放置するメソッドを使ってみるとするか)。


で、追加分。実は、僕は、ここを読んでちょっといろいろ考えるというか、得るものがあった。うん、確かにそうだね、という個所がある。

●Dave Thomas Ain’t No Sammy Sosa (He’s Just Fat) (デイブはただのデブ)

デイブからのメールも来てるよ。電話で話したいのか? ばかめ、泣き言が通用するかってんだ、おいらは地獄君みたくぶっ飛びまくってんだぜ。ぶーぶーぶー、馬鹿め。

(訳注:以下は逆かも)てめぇは、おれのために、1つだけ良いことができるんだよ。「もう1つのカーゴカルト: なぜWebrickではなくMongrelを使うのか?」というゾクゾクしてくるキーノートをおれの目の前で口の穴から噴き出しさえすりゃいいんだ。でも、やってくれないね。

Mongrelは速いんだ。でもデイブはおれが嫌いなのさ。

さて、オリジナルのピッケル本の目次を見てくれ。これだめだろう。おれも、ああ、新しい言語だな、ってんでスルーしたぜ。よくあるOOPの本だ。

ところがRailsを見てびっくりした。なんてすげーメタプログラミングなんだ。しかもブロックでできるのか? くそー、いかすじゃねぇかよ。

ところがピッケル本ときた日にゃ、よくあるOOPの解説本だ。

メタプログラミングについては通り一遍の説明だけ。でもよ、メタプログラミングでブッチできることがRuby最強伝説じゃん。それがねぇのかよ。

おい、それがキモだろう。あとブロック。

(あとはばっさり省略)


いや、ピッケル本(2001年)にそれを求めるのは無理だろ、とも思うわけだが、逆に、DHHのことが好きなのもわかる。

(追記)想像すべきは、あるプログラミング言語の入門書を書くとした場合に、何を書くべきか、ということだ。高速道路理論も忘れちゃいけない。今は知識すらインフレ化してるということ。まるで少年ジャンプマンガみたいなものだ。100人の入門者がいたとして、80人はすでにその言語の入門者だが、他の言語あるいはプログラミングについての基礎的なあるいは高度な知識を持っているかも知れない、しかし、いないかも知れない。多様性は善ではあるが、どこまで読者の多様性を想定すべきだろうか? 1週間の研修でビジネスプログラミングの現場に放り込まれる人をターゲットにするか、自分の研究のシミュレーションのために利用しようとしている人をターゲットにするか、単に趣味で何かを作ろうとしている人をターゲットにするか、現場での日々の作業の効率化を図る人をターゲットにするか、コンピュータを手に入れたのでプログラミングをしてみたいなぁと考えている人をターゲットにするか――同じ入門者ではあるものの、それぞれで求めているものはまったく異なる。理屈という釣り場を与えれば後はその情報を元に自分で竿を用意するところか始める人もいれば、餌をつけたつり竿と糸を垂らすポイントを教えろと言う人もいる。(追記ここまで)

あと、最後に謝辞がある。

DHH、Obie、Bradley、Why、Mongrelチーム、Railsコアチームの1/2(リックオルセンとか)、Rubinusチーム、JRubyチームなどなど、そして最後にMatz。

しょっぱなに無価値なものを火にくべて暖をとってると、最後は骨を焼くことになるぜ、覚えておけよ―Zed

本日のツッコミ(全16件) [ツッコミを入れる]
_ なかだ (2008-01-04 02:17)

エリックのarray.cパッチってのは共有化のやつですかね。<br>無視したわけじゃなくて、実際一度コミットされてます。<br>ただ、いささか怪しい部分があったりバグってたりで結局revertされたまま、というのが現状なわけで。

_ arton (2008-01-04 02:30)

多分、それです。以下のリンクを引用しています。<br>http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/216115<br>いささか怪しいとかのあたりの説明の行き違いなのか、怪しいところはコアチームで直せという意味なのかも知れません。「悪意があるわけじゃない」とか「いいやつらだが、しろうとくさい」というあたりがそういうった感じではないかな。

_ akr (2008-01-04 13:42)

array の効率化をした覚えはありません。

_ arton (2008-01-04 13:56)

一連のというのは、akrさんがポストしたパッチ群ということでなく、それと関連(あるいは連鎖)してポストされたという意味で書きました。

_ arton (2008-01-04 14:11)

ああ、済みません。st_tableの修正のあと、同じような修正があったよな、とうろ覚えで書いてたのですが、ArrayではなくRangeでした(これもakrさんですね)。

_ akr (2008-01-04 15:38)

[ruby-talk:216115] のベンチマークを 1.8.4 と 1.9 で動かしてみましたが、入っているようには見えませんね。<br><br>あからさまに速くなるはずの unshift(shift) も大きくは変わりません。

_ まつもと (2008-01-05 17:14)

なかださんのおっしゃる通り、例のパッチはバグバグな上、面倒見るのも大変だったので外しました。<br>こっちで直すのもねえ。

_ トーリスギラリ (2008-01-05 19:33)

s/をを/を/

_ arton (2008-01-05 20:19)

なるほど、了解しました。<br>>こちらで直すのもねぇ。<br>正直言って僕にはどうするのが一番良いかは言えないと書こうと思ったけど、言えるか。まつもとさんが決められた方針で良いのではないですか。正直なところruby-talkの流れを追う気はないので、言いっぱなしになりますが、これこれの場合に動作がおかしくなる=バグバグなので外すから作り直してくれ、みたく言えば良かったのかも知れませんね(既に言われていたのでしたらすみません、し、そう書くのも結構な骨だということは経験的にわかるので、難しいところですけど)。<br>>をを<br>お、どうも。文脈にも検索にも影響しないタイポなので、何かのついでに直せるようなら直します。

_ 秋田誠 (2008-01-06 01:21)

これはすごいですね、すごくいい通訳です、おめでとうございます。私はakitaonrails.comからのブラジル人です。初めまして。やっぱりゼッドは言い過ぎたけれど、事実が言ってないことでもない。でも、あなた達日本人は今度の事情のことどう考えているか興味ありますね。

_ arton (2008-01-06 12:56)

はじめまして。どうもありがとうございます。<br>日本の代表的な反応としては、Matz(http://www.rubyist.net/~matz/20080101.html#p03)や、弾さん(http://blog.livedoor.jp/dankogai/archives/50978950.html)、moroさん(http://d.hatena.ne.jp/moro/20080104/1199454315)のところでしょうか。2日目の内容に踏み込んだ反応はなかったように思います。

_ 秋田誠 (2008-01-06 13:16)

あの、私はあんまりあなた達の事は知らないのですみませんが、もしかしてartonさんてこういう人ですか?(http://www.amazon.co.jp/exec/obidos/search-handle-url/503-0307569-8392768?%5Fencoding=UTF8&search-type=ss&index=books-jp&field-author=arton)

_ arton (2008-01-06 13:44)

そうです。あと、こんなのもあります。http://rubyforge.org/projects/rjb/

_ 秋田誠 (2008-01-06 14:09)

あ!やっぱり!すごい、光栄です!私もブラジルでレイルズの本も書いたのです。ところで、ほかにも聞きたい事があります。ZedはDave Thomasの本ピックアックスがとてもだめな本と言った。あんな本でいいプログラマーが育てる事は出来ないと。あなたもそう思うかな?<br><br>それでもう一つ:私は時々対話をします。あなたと対話できませんかな?でも私の日本語はへたくそで、英語で話せますかな?できればe-mailでも送ってください。

_ 秋田誠 (2008-01-06 14:16)

あ、すみません、アドレスが言い出すの忘れました:fabioakita@gmail.com。

_ arton (2008-01-07 02:23)

秋田さん、メールしました。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え