K.Sasada's Home Page

Diary - 2006 October

研究日記

神無月

_31(Tue)

http://slashdot.jp/linux/article.pl?sid=06/10/30/2247233 うーむ、先にやられてしまった orz


svn で、全部 revert というか co した状態に戻す方法ってないのかな?

親ディレクトリで svn revert -R . ってやればよいだけだった。


やりたいことは changeset を細かく保存できないかな、ということなんですけどね。作業をしたら patch 作って revert して、の繰り返しだとどうだろう、と思ったんだけれど。


1.9 への YARV のマージを考えているんだけど、どのポイントにどうやって、というのが未だに固まらない。結局作業は全部私がやるようだ。どうしたもんかな。個人的な判断では、やっぱりまだ時期尚早なんだけど。期限だけあって、なんか役所のプロジェクトみたい。

もう、1.9 最新を全部認めて、YARV をえいやとそこまで追いつかせてしまうかなぁ。どうしたものか。うーん。一人で悩んでいる時点で間違っている気がするけれど。

いくつか、それらに関するタスクが発生してくれるんだけど、ヘルプはどこに頼めばいいんだろう。ruby-dev? なんか違う気もする。

結局、誰も1.9にyarvを入れることを検討してないんだよな。1.9への(yarvが入れば関係ないような)コミットが続いている現状。入れないと検討されないし、検討してもらわないと入れられない、という状況。

どーせどうやっても文句は出るんだろうから、えいやとやってしまうか。


なんか、スルー力スルー力って言って、それ言いたいだけなんじゃないのかというのを目にする機会が増えた気がする。うーん、名前付け(じゃないか?)は凄い。こういうことを引き出す高林さんは凄い。

スルーしちゃいけないことも、これでスルーしなければいいんだけれど。


本業のほうが全然進まない。ヤバイ。

亀SVNで遊んでいる場合じゃないよ!

_まつもと(Wed Nov 01 02:42:11 JST 2006)

 だから日記で愚痴ってないで相談しなさいと何度...。

_30(Mon)

なんというか、色々と思うところはあるんだけれど、何もできていない状況。何も思っていないのと同じだよなぁ、これじゃ。


ううむ、もうちょっと甲斐性があれば...。


自分の杜撰さに嫌気が。変わらないと。


PGP鍵を新のを作った。今のやつがあと10日で失効するから。今度は10年ものにしてみた。http://www.atdot.net/~ko1/public-2.asc って、ここに書いてもあまり有効では無さそうだけれど。

さて、名刺に今までのものの fingerprint を載せていたんだけれどうそになってしまう。失効時のプロセスってどうすりゃいいんじゃろう?


qwik をインストールしようとしたら、apt-get に怒られてしまった。解決する気力はないので諦めてしまった。stable にはまだ入っていないのに、unstable から引っ張ってきて(sources.line どうなってたかな...)。あ、testing が混ざってる。


そうか、なるほど。一日に一度の qwik の変更メールは鬱陶しかったのだけれど、複数 Wiki(+ML)で運用している場合は、権限の関係から diff メールを一箇所に集約することが出来ないのか。なるほどなぁ。

さてどうする。


新しいデジカメ欲しいなあ。


おぉ、成瀬さんスゲェ。カッコイイ。

_29(Sun)

寝休日。


力尽きたり、(ヤバイくらい)遅れたりすることは、まだ無いんだけどね。

_28(Sat)

ああ、カーネル読書会だったのか。行きたかった。明日は増井さん迎撃会か。行きたいけど...。


弱酸性と弱参照は似ていると思った。


むぅ、FF12 終わりか。あっけなかったなぁ。ラストダンジョンにしてはちょっと...。


Rubyの会セッション終わり。


shugo さん、返事が遅くなってすみません。今日帰ったら返信しますので。


徹夜でぶっつづけは眠い...。


http://itpro.nikkeibp.co.jp/article/NEWS/20061028/252056/

大森さん仕事早いなあ。しかし、ニュースバリューってどれくらいあるんだろう。

るびまに関してはちょっとアレな気がするが、まぁさえぎるほどのことはないだろう。

RubyKaigi 2007 について、ちょっと早めのお披露目になってしまったな。

_27(Fri)

http://d.hatena.ne.jp/hzkr/20061027 感動してしまった。

YARV architecture のページは古くて現実に即していないのでなんとかしたい。


そうだよな。人のソース読まないとダメだよな。俺もなんか読んで書こう。


そういえば codeblog というのもあったな。全然チェックしてないんだけれど、どうなんだろう。以前見たときはただの日記な気がしたのであまり見る気がしなかったのだけれど。

見たら、結構コードがあるな。各論過ぎて、今から読むにはちょっとつらいかも。


それはともかく、GC バグが取れないんですよ。具体的には、parse 中に GC が発生すると mark 漏れがある。しかし、そのマーク漏れがいったい何所に起因するかわからないという。


やっと問題の場所を発見。解決法もわかったが、なんでこうなっているのかがわからない。


とりあえず、Lua を読むことにする。言語仕様も知らなかったので、まずは言語仕様を調べるところからだな。ぐぐったら http://uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html 日本語があった。HTMLHelp が欲しいが、まぁ諦めよう。


うがーーー。なんだよこれ。GC バグの原因である parse.y のバグ、1.9 の最新では直ってるじゃないか!

やられた!

Thu Oct 13 14:26:00 2005 UTC

うう、ちょうど先日じゃないか!

とりあえず、YARV のバグじゃなかったってことだな。うん。


lua. print 1 は許されないが、print "1" は許される。


iTunes を操作するというのは、前日の発表で使われたネタ(Macだけど)で、大変受けたらしい(見て無いけど)。だから、うまくやれれば多分受けたんだと思うんだな。きちんと説明できていれば。


Ruby 1.9.0 (というか YARV)でRails を動かすための変更。

# gems の変更

diff -ru rubygems-0.9.0/lib/rubygems/package.rb rubygems-0.9.0-patched/lib/rubygems/package.rb
--- rubygems-0.9.0/lib/rubygems/package.rb      2006-06-14 12:39:45.000000000 +0900
+++ rubygems-0.9.0-patched/lib/rubygems/package.rb      2006-10-18 15:29:25.000000000 +0900
@@ -350,6 +350,12 @@
             ret
         end

+        def readpartial(len)
+          s = @io.readpartial(len)
+          @read += s.size
+          s
+        end
+
         def getc
             return nil if @read >= @size
             ret = @io.getc
@@ -503,7 +509,7 @@
                     @metadata = load_gemspec(gzis)
                     has_meta = true
                 ensure
-                    gzis.close
+                    gzis.close if gzis
                 end
             when 'metadata.gz.sig'
               meta_sig = entry.read


# Rails を動かすために Ruby レベルで必要な変更。俺は rubygems.rb に書いていた。

module Kernel
  alias send funcall
end

class Exception
  alias to_str to_s
end

class Object
  def to_a
    [self]
  end
end

module Enumerable
  alias map_orig map

  def map(&b)
    if block_given?
      map_orig(&b)
    else
      to_a
    end
  end
end


# rails-1.1.6/lib/rails_generator/commands.rb の dependency メソッドを以下のように変更

        def dependency(generator_name, args, runtime_options = {})
          logger.dependency(generator_name) do
            klass = ::Rails::Generator::Commands::Create
            klass.new(instance(generator_name, args, full_options(runtime_option
s))).invoke!
          end
        end

もしかしたら他にもあったかもしれず。

_向井(Fri Oct 27 15:15:22 JST 2006)

 lua は引数が1つでその引数が文字列、テーブルのリテラルのときはカッコを省略してよいという規約があるためで、ふつうはカッコは省略できません。f{x=1}のようにしてパラメータ引数っぽく見せいから、というのがその理由のようです。

_ささだ(Fri Oct 27 16:55:25 JST 2006)

 うい。マニュアル見て面白いなぁと思った例でした。

_斎藤ただし(Sat Oct 28 01:35:25 JST 2006)

やられた!

どんまいです。とりあえず未来じゃなくて良かったということで。これでshowstopperが一つ消えましたね。

# ていうネガティブな使い方が慣習でいいんでしたっけ>上記英単語…勘違いならごめんなさい

shim for 1.8…とか書いてたら方向が逆でしたね。ごめんなさいorz

_ささだ(Sat Oct 28 03:07:38 JST 2006)

《名》(ショーが一時中断されるほどの)拍手喝采の名演技[せりふ],猛烈な喝采の名演技[せりふ],人目を引くもの[人],コンピュータの動作を停止させるバグ

えいじろうより。うーん、ポジティブなんだかネガティブなんだか。

_26(Thu)

RubyForge が変わってる。


Sun のトップページに JRuby が!


Aspect Oriented とか Object Oriented とか Context Oriented とか、色々ある(最後のは知らない)が、なら 2.0 2.0 みたいな感じで Orient Oriented なんてどうだろうと思ってみる。いったい何がどういう言語になるのか。


RubyConf に行くと、英語力の無さを痛感して、英語やらないとなぁ、という気分になるが、たいてい一週間くらいで萎える。でも、英語やらないとなぁ。

と、大島さんの日記を見ていて思う。OOPSLA というか DSL 超楽しそう。うう、しかし行ってもさっぱりわからない罠。というか、英語を話す友人がたくさんいて羨ましい。RubyConfで、あっちから話しかけてくれることは結構あるんだけど、こちらがうまく理解できなかったり、うまく表現出来ないのを見ると、だんだん引いていくのがわかる。とても悲しい。

それを補ってあまりある技術力があればいいんだが、そういうわけでもないし。


RubyConf 2006: Implementers Summit というものに誘われたんだが、奴らは容赦なく議論をしていくので、ぜんぜん話についていけない。Ruby の実装の問題点なんか、日本では全然聞けない、話すことが出来ない内容なのに、なんとも自分の無能さが悲しい。私は写真に写ってはいるが、ポカーンとしている状態。しくしく。

We also agreed to hold more of these summits going forward. I'm hoping we'll see them as a semi-annual event.

こんなこと喋ってたのか。しらねーぞ、こんなの。

まつもとさんにくっついておけば言語の壁は大丈夫だろう、とかたかをくくっていたら、まつもとさんはPCでなんか内職してるし。


まぁ、そういうわけで、海外に行くと自分の無能さを思い知らされるのだが(いや、それは海外に限らないが)、まぁ一応 RubyConf 2006 につてまとめておこうと思う。

日本語では、卜部君の日記はんばあぐさんの日記に詳しい。発表内容とかは、卜部君の日記を見るのが一番早いです。というわけで、細かい内容は省略。


移動日。一緒に行ったのは卜部君、はんばあぐさん、高橋さんの3人。大変だった。何が大変だったかというと、旅行代理店のミスで飛行機のチケットの予約がキャンセルされていたという、なんというかあり得ない大変さでした。幸い、行きのチケットはなんとか手配してもらったものの、帰りのチケットが取れないという。飛行機までの時間まったりハックする予定だったんだが、大変狂ってしまった。理由としては、e-ticket は confirmation が必要だが、旅行代理店側でそれを忘れていた、ということ。しくしく。まぁ、成田でのトラブルだったため、日本語で収まったのでよかった。

その後、急遽用意してもらったチケットを利用したためか、チケットを使うたびに「このチケットはおかしい」「パスポートに登録されているものと違う」など、色々言われることになった。よく無事に帰れたものと思う。

というわけで、海外旅行のチケットを取るときに近畿日本ツーリストを使うのは注意しましょう。

まぁ、結局五体満足で帰れたわけだが。


成田 -> サンフランシスコ。飛行機内で発表資料の準備をしようと思っていたが映画「もしも昨日が選べたら」を見てしまった。映画、久々に見たな。単純に面白かった。ラストがベタベタだったけれど。

先日も書いたとおり、ネットが使えたが、ブチブチ切れた。imap でのメール受信はちょっとつらい。imap の未読だけ POP3 で落とせる、というものは無いかな? 作ればいいのか、そうか。今度作っておこう。

そういえば、朝食の配給時、私の列だけ膳を下げてもらえなかった。なかなか添乗員さんは来ない。やっぱり呪われている。そういえば、一人だけ、ずーーっと愛想の悪いお姉さんがいたなぁ。何かを頼んでも機嫌悪そうに、面倒くさそうに対応していた。うーむ、ANA クオリティーも落ちたのか? いつもニコニコなんて、やっぱり無理ってことか。


SAN では高橋さんにお昼ご飯を一緒に買ってもらうように頼んだら、伊藤園のお茶と寿司を買ってきてくれた。ちょっ。伊藤園のお茶は、本当に日本のコンビニで買える様なお茶で、英語のラベルだけ貼ってあった。カバーの「一口メモ」みたいなのは、日本語で書いてあるんだがそんなの誰も読めんだろう。

そうこうしているうちに SAN -> DEN。

空港は広く、移動は電車。そういえば、成田の第一ターミナルは初めてだったけど、電車がなくなっていたな。使いやすくなっていた感じ。DEN はただただだだっ広い感じ。DEN からはバンでホテルへ。空港からホテルへ $19。結構高いなぁ。周りには何も無い。本当に広い。ホテルのそばはちょっとした店があった。Whole Foods という店は、日本で言う紀伊国屋みたいな感じ。

ホテル。Eric Hodel に部屋を取ってもらっていたんだが、彼の名前で取ってもらっていたので check in でもめた。でも、なんとなく部屋が取れたような気がする。部屋はとても広く、リビングとベッドルームが別だった。それぞれの部屋にTVがあったが、今回は全然テレビを見る暇がなかった。水道はリビング、バスルーム、ベッドルームになんと3箇所も。結局、この広い部屋、リビングで日本人が夜中中たむろすることになる。

その夜は Whole Foods で量り売りで買って夕食。買う途中、Eric Hodel に会ったが、顔を覚えていなかったので名前を聞いてしまった。ごめん。ありがとう。彼には今年はいろいろとお世話になった。

その後、荻野さんと合流。高橋さんはずっと発表練習をしているのを見ながら、眠かったのでさっさと眠ってしまった。


1日目。ホテルの朝飯が結構おいしい。ビュッフェスタイルだが、卵とソーセージとポテトがおいしい。ベーコンは焼きすぎでカリカリすぎだった。

会場は横にだだっ広い。超横に広い。プロジェクター2台。アメリカではこういう構成が多いんだろうか。去年の OOPSLA でもこういう構成だった気がする。ネットワークに全然つながらないので IRC で英語の解説が聞けないのが大変困った。chad に本にサインしてもらった。日本語版を見たのははじめてらしい。Eric Hodel にRubyKaigiのTシャツをあげた。

発表。高橋会長は凛々しい和服姿で登場。が、意外と和服に驚いている人は居なかった感じ。むしろ、日本人のほうが興奮していた感じ。高橋メソッドとRubyの歴史は好評だった様子。でも、RubyKaigi よりも勢いが無かった感じ(英語なんで当然か)。

Sydney and Rubinius: Hardcore Ruby では Ruby 1.8.2(だったっけ)に対していろんな改造をいていた evan が、そのプロジェクトの結末と、rubinius プロジェクトの開始について説明。Ruby で Ruby を作るという、meta-ruby プロジェクトそのまんまなやつの別プロジェクト。なんで Seattle.rb にはこういう変な奴ばかり集まるんだろう。コアすぎる。で、Seattle.rb の Eric Hodel や Ryan Davis がやっている meta-ruby とどう違うんだ、と聞いたら、同じ内容だって言ってた。meta-ruby では Ruby で Ruby の標準ライブラリを実装しているが、それを利用したい、って。Eric Hodel は、俺たちは簡単なことをやって、evan が難しいことをやるんだ、って言って笑っていた。しかし、GC も Ruby で実装するのか。まぁそれはそれでありか。しかし、今の conservertive GC を前提とした C ライブラリを exact copy GC から利用するのは無理だろう。なんか、工夫すれば出来るとか言ってたけど、ほんとかよ。


launch。日本人は日本人で固まるから日本語ばかり使って英語を上達させられないんだよ、ってわかっちゃいるが、怖くて知らない人のテーブルは避けるチキン。飯は ... えーと、忘れちゃった。ビュッフェスタイルなカンファレンスランチ。で、卜部君とまつもとさんが来てくれたが、同じテーブルにKevin Tew(Parrot 上で動く Ruby 処理系 Cardinal の作者)がいたので、色々と話を聞いてみた。Perl 6 は6になって仕様から作り始めたのでRubyも6くらいになれば仕様がまとまるんじゃないか、とかなんとか。Perl 6はPerl 6で作ることを目指しているらしい。ほんとうかなぁ。Cardinal 自体は、あんまり Ruby っぽくないような気がしたなあ。


Dynamic Graphics With Ruby は pure Ruby でこんなに簡単なグラフにって話。もう眠くなっていたような気がする。

Life After mkmf は mkmf はわけわかんなすぎるので mkrf を使って Rakefile で管理しましょうって話。Ruby 1.9.x からは rake 標準搭載で mkrf で設定ファイルを書くようになる、ということにはならないかなぁ。

Iron Mongrel: Fuzzing, Auditing, Thrashing, Risk and The Ways Of Mongrel Destruction で、Mongrel の話は何時始まるのかと思ったら、何時までも始まらなかった。Fuzzy Testing Framework の話。That manの語源って、まつもとさんの日記で出していた奴か? 発表内容はさっぱり。

Radiant -- Content Managment Simplified。Radiant の話。ruby-lang.org での話とか、アーキテクチャとか。頼むから XML-RPC に対応してください。プラグイン書けば対応できるのかしらん?


dinner。前述の Implementers Summit をやるというので、昨日の Whole Foods で買って、ホテルのレストラン(ロビー? 中庭にテーブルが並んでいる感じ)で食べる。ここでうな丼を買った。Microsoft に行ったというJohn Lamになんでわざわざ日本食食べるんだって聞かれた。彼との会話はそれだけだった。同じアジア系の顔なのに、彼は無茶苦茶英語が速くて、全然喋れなかった orz で、ホテルのレストランだったから、ホテルの人にお前ら何してんだよ、と怒られた(んだと思う)。で、カンファレンス会場で議論。詳細は pat のブログを見てください。全然輪に入れなかった。set_trace_func どうしてる? って聞いたけど、あんまり相手にしてくれなかった。JRuby の Charles が(彼しか相手にしてくれなかった)、デバッガインターフェースがあればいいんじゃね? みたいなことを言っていたように思う。


で、matz の Roundtable。今年はあんまり盛り上がらなかったな。「なんで VM を YARV に選んだんだ?」っていう質問があったんだが、その質問者の意図がようわからんかった。

Q. Will ruby get become evil

は、Smalltalk にある become という evil メソッドを Ruby でも実装せんか? という質問。勿論 No。

終わった後、少し evan に話を聞いてみた後、ぐっすりと眠ってしまったが、2時くらいに起きたのでそろそろ発表資料でも作るかー、と思ったら Skype にまつもとさんが居たのでちょっとチャットをしたら、面倒なのでこの部屋に来るということに。そのまま夜通しなんか喋っていたような気がするが、何喋っていたんだっけ。

そろそろ俺も発表の準備しないとな、と思って YARV-trunk で Rails を動かそうとしたら、なんかいろんなエラーが出てしまって、朝まで動かなかった。やっぱり日本でデモの準備していくべきだった orz


朝飯。昨日と同じだが、この日は勇気を出してオムレツを作ってもらった。

しかし、バグが直らない。具体的には gem が動かない。chad が居たので聞いてみたりもしたが、よくわからなかった。


2二日目最初。Open Classes, Open Companies。スライド一切無しのぶっ続けトーク。こっちは必死になってデバッグをしていて、ただでさえわからない英語が全部わからない。もう諦めた。

もうこれはダメだな、と思って Leveraging Mac OS X from Ruby は諦めて部屋に帰る。が、後から聞いた話ではこのトークはとても面白かったらしい。聞けばよかったな。

む、卜部君本当たったのか。いいなぁ。Ruby Cookbook が欲しかった。読みたい。誰か訳して!

Rinda and DRb in the Real Worldは、Rinda の解説だった気がするが、やっぱりよくわからなかった(しつこい)。


ランチ。タコス。このランチでも日本人と固まる。誰かと喋ったかなぁ。


ここで LT。勢いがあってなかなか楽しい。

More than enough rope to hang yourselfという発表の発表者がいないから急遽企画され、初日にスピーカー募集していた。


Web 2.0 Beyond the Browser。Rich の話。やっぱり綺麗なんだよね、図が。

I18n, M17n, Unicode, and all thatはTim Bray。彼の喋りはとても聞きやすかった。やっぱり、喋りなれてるよね。内容が初心者向けだったのもあるだろうけれど。

そういえば、彼に初日、喋りかけられてびっくりした。最初 Sun の偉い人だとは思わなかったんだけど、藤井さんから俺のことを聞いていたらしい。並列マシン欲しいんだよね、って言ったら簡単に「やるよー」と反応があった。うは。

Speak My Language: Natural Language Processing in Ruby。My Language は英語じゃないんだよちくしょう。でも、便利そうだったな。専攻の人に教えてあげようかな。


夕食。大きなチキン。ちょっと大変だった。Tim Bray が近くに居た。Eric が隣に来てくれた。Rails Podcast の人も近くに居た。でも、あんまりうまく喋れなかった。しくしく。Eric が Ruby のヒープを visualize するツールを作っていることを教えてもらって、後でデモしてもらった。PNGに落とすだけだが、リアルタイムに見れたら面白いよね。

そういえば、Podcastingの人には、初日にインタビューしてもいいかと聞かれて、おお、俺もとうとうインタビューされるほど偉くなったかと内心喜んでいたのだが、結局何も無かった。しくしく。


んで、まつもとさんのキーノート。なんか、Desgin game の話をしたことをあとで後悔していた。でも、今の体制とあんまり変わらないんじゃないかなあ。そういえば、Parrot よりも Rite の方が初出が早いんだぜ、というネタは取られてしまった。


で、さっさと引き返して、バグ取りをするが、全然終わらない、眠らないので寝てしまう。で、また2時ごろ起きたらまつもとさんがまたSkypeに居たのでチャットで「1.9.1 を来年クリスマスに出すってほんとでっかー」と聞いたら俺次第といわれてしまう。で、なんだかんだでまたまつもとさんが来る。いつも時差ぼけでなかなか朝まで眠れないそうだ。

で、なんだかんだと話しながらデバッグするんだが、デバッグが終わらない。

結局、まつもとさん、高橋さん、荻野さんに囲まれて朝の6時くらいにやっとRailsが動くようになる。ウハー。しかし、なんとも豪華なデバッグだった。

Rails のバグは、結局 1.9 でも同じ修正が必要で、先に1.9で試せばよかった。なんともデバッグの基本を知った一日であった。何度同じ過ちを犯すんだ俺は...。


で、ハイのまま朝食。たくさん食べる。

Streamlined: A Framework for Data-centric Web Applications 。本当にきっちりかっちりわからなかった。


で、YARVの発表。意外と外さなかったな。日本でも何度か使ったネタなんだが。

  • オブジェクト指向なのでスライドを再利用します。
  • 日本人は性を先に書くけどその代わり大文字で書きます。Rubyで説明したほうが早そうだからRubyで。「危険なメソッド」を使って書きました(Tim Bray が、昨日大文字小文字関係は危険、という話をしていた)。
  • 秋葉原のほうに就職した(拍手してくれた)
  • 秋葉原ってこんなところ(写真が受けた)
  • これ出張費で来てるんだ。
  • 誰かヨーロッパに呼んでくれないかなあ
  • RubyKaigi2006 の紹介。ブーンで結構受けた。Top Rubyists!
  • Perlの会作った。
  • Ruby の本書いてみたいけど、そんな企画全然無いし。
  • Rails を動かした。scaffoldとview操作。拍手してくれた。
  • バグ回避のために GC.disable と書いた(今もデバッグ中。どこかで node への mark が行われない。なぜだ)
  • rite > parrot (vaporwareness)
  • I love windows (でも、Mac OS の画面出しても受けなかった)
  • YARV myth
    • YARV make fast all Ruby Program by 50 times
    • YARV solve problem CHARACTER CODE Problem!
    • YARV puts down frame WAR!
    • YARV make you RICH!
    • YARV make you SLIM!
    • YARV finds your GIRL FRIEND!
  • 俺がガールフレンド欲しいよ!
  • if you trust Matz

全然受けなかった。

  • 高橋メソッド
  • 秋葉系ってのがある
  • Ruby は秋葉系言語になる。でもそもそもオタク言語だよな
  • Perlish Magazine 出した。まるごとPerl書いた
  • iTunes を操作するデモ

やっぱりグラフのあたりは説明が全然へたくそだよな。うーむ。

ちなみに、今年はスクリプト(台本)を用意しようと思って自己紹介のスライドのあたりまでは作ってみたんだけど、途中で飽きてしまって止めた。やっぱり最後の方はグダグダになってしまった。反省。今度は作るぞ。というか、20分くらいのトークをやりたい。誰か呼んで。

うーん、やっぱりあまりいいプレゼンテーションじゃなかったな。Q&A もグダグダ。まつもとさんにご登場願ってしまった。というか、実装の話じゃなくて、仕様の話を俺にするんじゃない。


最後の John Lam の You got your Ruby in my CLR! は、やっぱりよくわからなかったけど、実装のコアな話は無かったように思う。結局、どうやって速くする/したのかなぁ。どこまで実装したのかなぁ。


アメリカ最後のランチはサンドイッチだった。おいしくておかわりしてしまった。Tim Bray と Matz が隣同士でいろいろと喋っていたが、いつものようについていけなかった。しくしく。

昼飯後、Google Summer code の話。3件。ちょっと遅れてしまった。感想はなし。


その後、デンバーのダウンタウンへ行く。人が全然いない。無料バスがメインストリートを往復していた。多分州会議場のような立派な建物を見た。夕飯はイタ飯でおいしかった。量も普通。値段は高め。人が全然いないのは、フットボールか何かの試合があるからだとか。ティラミスを頼んだら、えらいでかいティラミスだったが。チョコレート屋に入る勇気は無かった。


で、デンバー合意(http://redhanded.hobix.com/inspect/denverAccord.html)。なんかまたまつもとさんが来ていた。というか、日本人がなんとなく部屋に集まっていた。

あれよあれよと 1.9 に YARV をマージすることになってしまった(11月)。まぁ、尻を叩かれた格好。やらないといけないことだったしね。なんとかせんとなぁ。GC のバグがまだ見つからないのよねぇ。

全然話題になってませんが、Ruby リポジトリが CVS から SVN になるらしいです。これは結構衝撃的だと思うんだけど。規定路線だったのか? あと、1.8 メンテナが卜部君になるらしい。これも衝撃的だと思うんだけど、誰も話題にしていないなぁ。って、これは redhanded では言っていないのか。


発表で使った iTunes Controller。前日の発表では受けたらしいから、これも受けると思ったのになぁ。全然通じなかったらしい。YARV で Win32OLE でなんか派手なことするのは、とても簡単なことなのにインパクトはある。多分。ちゃんとできていれば。

もちろん、ちゃんと、YARV on mswin32 で動かしたよ。

# iTunes Controller
#

require 'win32ole'

$itunes = WIN32OLE.new("iTunes.Application")

STDOUT.sync = true

def get_tracks_from_itunes(name)
  plist = $itunes.LibrarySource.Playlists.ItemByName(name)
  raise "Unknown play list name: #{name}" unless plist
  tracks = plist.Tracks
  (1..tracks.Count).map{|i|
    tracks.Item(i).Name
  }
end

def play num, name
  track = $itunes.LibrarySource.Playlists.ItemByName(name).Tracks.Item(num)
  raise "unkown music number: #{num}" unless track
  track.play
end

def show_list pl
  get_tracks_from_itunes(pl).each_with_index{|name, i|
    puts "#{'%02d ' % (i+1)} - #{name}"
  }
end

def select_playlsit
  while true
    pls = $itunes.LibrarySource.Playlists
    (rng = 1..pls.count).each{|i|
      puts "#{'%02d' % i}: #{pls.item(i).name}"
    }
    print "Playlist number? > "
    i = gets.to_i
    if rng.include? i
      puts "Your select: #{name = pls.item(i).name}"
      break name
    end
  end
end

pl = select_playlsit
show_list pl

loop{
  print "> "
  case line = (gets||'').chomp
  when /\d+/
    play line.to_s, pl
  when 'playlist'
    show_playlist
  when 'list'
    show_list pl
  when 'stop'
    $itunes.stop
  when 'exit', ''
    $itunes.stop
    exit
  when 'irb'
    require 'irb'
    IRB.start
  else
    puts "unknown command: #{line}"
  end
}

帰る日。

朝の5時半に起きて6時に空港へ出発。DEN で朝飯食べて、飛行機。SAN でチケットについて、またひと悶着。SAN -> NRT ではフォレストガンプを見た。

で、無事、五体満足に日本へ帰国。


firefox 2.0 にしようかな、と思ったけどバージョンアップチェックでひっかからない。1.5 系しか見ないのかな。どうしよ。個人的には Fx よりも Tb 2.0 が大期待。

_にしお(Thu Oct 26 23:44:27 JST 2006)

 きっとorientalな言語。

_25(Wed)

超ヤバイ寝坊をしてしまった orz

_24(Tue)

また機上から。

つい、フォレストガンプを見てしまった。結局、ジェニーの心境がよくわからなかったな。


おおお、超揺れてる。揺れてるところでタイピングするのはこんなに大変なことだったとは知らなかった。


帰国したので職場。


yarvで検索しても http://www.atdot.net/yarv/ が出てこない。

_さ(Tue Oct 24 15:42:08 JST 2006)

 帰国

_斎藤ただし(Tue Oct 24 23:14:16 JST 2006)

 お疲れ様でした。ちなみにGoogle英語版だと/yarv/が出てきますよ。

_青木(Wed Oct 25 11:17:56 JST 2006)

 おかえりー

_babie(Wed Oct 25 12:54:47 JST 2006)

 おかえりなさい。

_みずしま(Thu Oct 26 02:49:53 JST 2006)

 お疲れ様でした。

_23(Mon)

発表終わった。反応はよくわからない。


そろそろ帰る。

_22(Sun)

さて、これから発表。

_21(Sat)

今日の夕飯はうなぎを食べた。鉄板で焼いていた。やっぱり飯はまずかった。

_20(Fri)

そろそろ到着。

無事に入国できますように...。


無事ホテルに着きました。ぐったりモード。

_ma2(Fri Oct 20 10:59:00 JST 2006)

 いよいよですね。プレゼンの様子が動画で配信されたりはしないのでしょうか。

_19(Thu)

機上より更新。

うーん、ちゃんとつながるもんだなぁ。すごい。

http://www.ana.co.jp/int/inflight/cbb/index.html

10月3日(火)よりANA@AIR装備機材にて運航する国際線全便で、機内インターネットサービス「ANA@AIR」を無料でお楽しみいただけます。ご利用にあたってはクレジットカードによる個人認証が必要です。(クレジットカード会社からの請求はありません。)


しかし、しょっぱなからトラブルてんこ盛りです。帰ったら顛末を書きたいと思います。なんとか無事に日本に帰れればいいんですが。とりあえず日本語で済んでよかったというべきか。これから地獄が待っているのか。

_18(Wed)

http://d.hatena.ne.jp/xtalco/20061018#1160881955

興味深いなぁ。つまり、32bit CPU なら 30bit、64bit CPU なら 62bit の情報を無駄にしているわけだが、これくらいなんともない、という判断。こういうタグ付けをする言語処理系って他にないんだろうか。無いわけないと思うけど。そもそも、俺は他の処理系しらなすぎるな。

浮動小数点数はやっぱり double (64bit) は欲しいなぁ、と思うのなら、最大 126bit 無駄にする設計が考えられるということか。

うーん、アリな気がしてきたな、メモリの有り余っている特定用途向けには。

struct VALUE {
  union {
    int ival;
    long lval;
    double dval;
    ptr *oval;
  };
  char type;
};

にしておけば、そんなにやばくないかな。9byte 使うのが、なんとも気持ち悪いが。

RValues が VALUE を持ちにくくなるのも問題か。

キャッシュとか考えると、やっぱり無いかもしれないけど。

あぁ、そもそも C 関数の引数に渡しづらいな、とんでもなく。


関数で渡すときはポインタ間接にして...、うーん、うまくないなぁ。今と一緒のようになってしまう。


RFloat をマシンスタックに割り付けるような実装を考えてみようと思ったけれど、3秒くらいでダメそうだなと思って諦めた。うぅむ。

RFloat 用のヒープを用意して利用する、ってのはアリかな、とは思った。ちょっと GC 時の mark 処理が難しくなるかな。

単なる double の配列と、bitmap だけで、なんとかなるかな、とか。あぁ、このネタいいなぁ。論文書けないかなぁ。mark の処理に、イチイチ Float への mark かと考えないといけない時点で、やっぱり難しいかなぁ。mark なんて、GC 時に起こるだけだから、なんとかならないかなぁ。

bitmap でのオブジェクト管理をやるときって freelist を作るのはどうやるんだろう。ううむ、結局 freelist のために link 構造が必要なのか? それって間抜けすぎ。オブジェクトアロケーションが超高速であれば、Float が heap にあっても問題ないわけで。ううむ、やっぱり難しいか。マシンスタック上にぽんと作る以上のものは。InlineRuby みたいなものが、やっぱり正しいかなぁ。


あぁ、英語の舌が回らない。最近全然まったく喋ってなかったしな。


http://wiki.rubygarden.org/Ruby/page/show/RubyConf2006Facebook

chad の髪がふさふさでびっくりした。


懐中時計の鎖を1000円で買った。つめの部分が壊れてしまっていたのだが。秋葉原の外に面した店で、埃をかぶっていた。ヨドバシだったら、もう少し安く買えたかなあ。

_向井(Wed Oct 18 09:11:17 JST 2006)

 lua が確かそのようになってます。

_ささだ(Wed Oct 18 14:03:14 JST 2006)

 へー、なるほど。関数への受け渡しなんかはどうやるんだろう。ポインタ渡し?

_maeda(Wed Oct 18 21:00:14 JST 2006)

太古のMACLISPコンパイラは、データフロー解析を行って「関数内で解放される」浮動小数点数に関しては特別なスタックに割り付けてました(Fast Arithmetic in MACLISP)。 って、去年の5月12日にも同じコメントを書いてるな。

データ本体と別にビットマップページを持つ場合でも、(データがポインタ以上のサイズなら)フリーリストを作ることはできますよね。


struct FLONUM {
  union {
    double dval;
    ptr *next_freel;
  };
};

とか。

フリーリストを作るのが嫌なら、mark-and-don't-sweepとか。

  • フリーリスト代わりに、小さなポインタ配列(1ページ分のオブジェクト数とか)を作っとく。
  • アロケート時は、この配列からフリーなオブジェクトのアドレスを取り出す。
  • 配列が空なら、1ページだけスイープして、フリーなオブジェクトへのポインタを配列に詰める。

_17(Tue)

借金をしないというソリューションは...。


シャチハタを使って書類を提出したら、怒られてしまった。

_16(Mon)

そうか、日曜日ではまつもとさんに見てもらえないのか。つまり、まつもとさんに見られたらやばい内容で勝負しろ、ということか(違)。


というか、まつもとさんが何を喋るか知らないと、発表資料が作れないことに気づいたので教えてください。


高校時代の同期に、数年ぶりに会う。昨日の訃報の次の日ということで、本当に偶然。こういうことってあるんですね。

_まつもと(Tue Oct 17 07:21:31 JST 2006)

 まだスライド書いてません。が、実装ネタではなく、デザインの話をしようと思ってます(バイク小屋とか)。実装は任せた。

_ささだ(Tue Oct 17 13:10:20 JST 2006)

 1.9.1 は2007/12 ってのは言うんですよね。多分。

_15(Sun)

高校時代のクラスメートが癌で亡くなったとの報せを受ける。

_14(Sat)

http://www.kadokawa.co.jp/bunko/bk_search.php?select=series&series=17 こ、これは買わないといけないんだろうか。メイド喫茶とか行くよりもつらそうだ。うむむむ。

_みずしま(Sat Oct 14 03:22:10 JST 2006)

 是非買ってレビューしてください。

_13(Fri)

ううむ、寝てしまった。


うーん、微妙だった。発表練習しないとダメだなぁ。

_12(Thu)

http://en.wikipedia.org/wiki/YARV

wikipedia ってほんとになんでも載せるんだな...。


やっぱり [ANN] ばかりな最近。るりま検討会やりますので興味のある方は。


勘のいい人は「このタイミングで」「あの場所で」「あの人が」というのはわかるかと思います。というわけで、13:00 から例のアレをやるわけですが、野次馬希望者はご連絡ください。


「生まれ変わり」に時間軸が関係するんだろうか。つまり、魂(とかなんとか)は時間に束縛されるのか。

前世は未来人とか、なんとか。そう考えて、結局1つの魂(とかなんとか)が輪廻を繰り返しているのがこの世なのかな、とかなんとか。


コンパイル型とインタプリタ型、どちらが速いか。いや、場合と条件によるんじゃないでしょうか(弱)。


「開発効率良し→アルゴリズムなどの改善→高速化(効率化)」という視点はなかったな。

しかし、言語によって、効率化しやすいかどうかの違いもあるんじゃなかろうか。Ruby はやりやすいですよ。C で書けばいいから。Java ってどうなんでしょうね。


某さんの印象は、あまりよくない、というか話が通じなかった覚えがあるので、深入りしないようにしておこう...。

_11(Wed)

青木さんの旅行記がとても楽しい。

どっかに旅行。うーん、行きたいところないんだよな。死ぬまでにインド行ってアガスティアの葉を見てみたいんだけど。

日本語が通じるところがいいと思うのは、やっぱりよくないよなあ。


明日から豊橋に出張 (IPSJ PRO)。

1月の沖縄行きたい...。そのためになんかネタ考えるか。


データをまとめていた OOo Calc が反応しなくなった orz

ううう、評価の取り直し。


と思ったら、ちゃんと「復元」してくれた! 素晴らしい!(って、元々固まらなければよかったんだが)。

_ヤスキ(Thu Oct 12 10:15:33 JST 2006)

 おぉ、豊橋に来てるんですか! 豊橋のどこに出没してるんですか?

_ささだ(Fri Oct 13 06:58:14 JST 2006)

 豊橋の駅前です。IPSJ PRO 研究会。

_10(Tue)

ハリーポッターと謎のプリンスを読みきってしまった。

なんてダメな俺。

ああぁ... orz


12日の宿予約。


寝ぼけていると文章が腐るな...。


るびま関係を片付ける。pickaxe への応募が 45 件、過去最高。やっぱり高いからかな。


自宅に S2410W を買おうと思ってたけど、http://pc8.2ch.net/test/read.cgi/hard/1159901190/ を見ると評判よく無いな。


2ch の main の話を見て

class Main
  # 必要な処理
end

だったら、Main のインスタンス作る必要ねーなー、などと思ってしまう。

gauche のように、main.rb ライブラリがあるといいのかもね。

# main.rb
END{
  main
}

Java 風にしたければ

# main.rb
END{
  main ARGV
}
# main.rb を使うほう
require 'main'
def main args
  # 実際に行う処理
end

みたいな。

... などと、昔考えたことがあるような、無いような。

_9(Mon)

http://www.rubyconf.org/agenda.html

ガーンガーンガーンガーン。最終日なのかよーー。初日にやらせてー(さっさと終わらせて楽になりたい)ってお願いしていたのに。ガーンガーンガーン。自分の発表が終わらないと楽しめないよう。

というか、Evan とぶつけてくれよ。実装系なんだから。


お、高橋さんがトップバッターだ。これは素晴らしいかも。


http://blog.livedoor.jp/dqnplus/archives/818654.html

また大爆笑してしまった。凄すぎる。

_8(Sun)

http://blog.livedoor.jp/dqnplus/archives/803432.html 大爆笑してしまった。


竹迫さんがmixiの写真を変えた、ということで、俺もいつまでも古い写真じゃだめだなぁ、と思って最新のに変えてみた。高橋メソッドです。

_7(Sat)

_6(Fri)

http://www.vector.co.jp/magazine/softnews/050604/n0506046.html 素晴らしい。使ってみよう。最後のコメントも興味深い。誰かやらないかな。


あれはスルーしてたんだけれど、そんなオチだったのね。まぁ、そうかなとも思う。

_5(Thu)

http://www.cs.tsukuba.ac.jp/activity.html

ウハー、ヤバイ、タイトル間違えた! 空気読めてませんでしたすみませんすみません。


http://www.tuat.ac.jp/social/gakuho/2006/447/news-2.html

こんなページが。たしか、「表彰してくれ」って文章を書いたら表彰してくれるという変なシステムだった気がする。というか、知り合いばっかりってことは、裏で(ry

というか、俺は (工学府(博士後期)電子情報工学専攻) こんな立場になったことないぞ(工学府になる前に退学した)。


     //install_sighandler(SIGSEGV, sigsegv);

常識らしい。


ううむ、MSVSのIDE便利だなぁ。


考えてみると、cond_signal で起こしているスレッドは 1 つしか待っていないのであった。なので、両方 broadcast で問題なかったという。

_nishio(Thu Oct 05 12:39:05 JST 2006)

 僕も大学退学した次の年に「当大学の○○君が未踏ユースに〜」的なことを書かれましたよ。退学証明書をもらいに行ったらなぜか卒業証明書が出たりしたのでその辺の情報共有がおかしいみたい。

_4(Wed)

リナザウをもうちょっと使えるようにしようかな、と思って色々考えているんだけど、なかなかうまくいかず。

せめて ssh だけでもまともに、と思ったんだけど、リナザウに秘密鍵を入れるのも怖いよな。


で、結局全然何も使えていないという。


で、スケジュール管理とか、リナザウでちょいちょいやっていたんだけれど、面倒すぎるんですよね。

そもそもスケジュール確認のためにリナザウを確認するのはちょっと遅いので紙。なんともローテク。


Lisp が好きっていうのは、Lisp が好きって言っておかないとハッカーコミュニティで肩身が狭いからではなかろうか。最低ラインみたいな。なんとなく、Lispと とか SICP とか言っておくとカッコイイ、とか。

いや、Lisp 好きですけどね。

(嘘、Scheme しか知らなくて、Scheme は好きです。仕様書があって、仕様書が薄いから)。


pthread_cond_* でやっていたことを Windows にもってくると、実装すればいいのかわからない。うーむ、どうしよう。

Event Handle でやろうと思ってるんだけど、SetEvent で pthread_cond_signal と broadcast の使い分けが出来ない。どーしようかしら。

うーん、pthread_cond_* べったりで書いているプログラムが悪いだけな気がするけれど、どうしたもんだか。

_soutaro(Thu Oct 05 01:14:10 JST 2006)

 Long Commentからだと「unknow prev mode」って出ます。(W-ZERO3に秘密鍵入れてる人より)

_ささだ(Thu Oct 05 02:22:41 JST 2006)

 む、ご報告ありがとうございました。

_ささだ(Thu Oct 05 02:27:34 JST 2006)

長いののてすと。

_3(Tue)

ちょっとこれはダメすぎだろう。反省。


うわ、to_splat って何ーーー。

to_ary でいいじゃない。


(defun my-run-cygwin-console ()
  (interactive)
  (launch-application
   "cmd /c \"C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\vsvars32.bat\" & bash"))

cmd では & でコマンドがつなげられることを忘れていた。


そろそろ家を出ないとな、と思って調べていたら、住居手当が出ないらしい。なんてことだ。というか、手当は通勤手当しか出ないらしい。

今の身分がいかにアレであるかを思い知らされた。

_2(Mon)

コメント spam 対策を色々考えてるんだけど、他の既存のシステムを利用するのが一番楽な気がしてきた。


とりあえず、preview とハムーチェックを併用するようにしてみた。どうだろう。

しかし、preview ページをどうやって作るのか、もうちょっと言うとパラメータの類をどうやって受け渡すのか、その方法に悩んだ。面倒だったので、とりあえず marshal して渡すようにした。

定番ってどうやるんだろう。セッションで受け渡すのが一番楽か?


ううむ、やっぱり羨ましいな、ハワイで仕事。


nadoka 0.7.0 リリース。1年7ヶ月ぶりのリリース。もう何が変わったんだかわからない。

nadoka の開発成果の一番のものは %nadoka (nadoka 開発用 IRC チャンネル)だと思う。Ruby 関連とか関係ない話とか、色々賑やかだ。

まぁ、いじめられるけど...。

_とおる。(Mon Oct 02 12:29:58 JST 2006)

 ハムーチェックってなに? フォームの記入内容を一度 Gmail に送って、Gmail のスパムフィルタを通した後で HTTP でポストするっていうのをやろうとしたけど難しそうだったのでやめました。なので未だにぼくの日記にはコメント機能がない。だれか Plagger とかでやんないかな。

_ささだ(Mon Oct 02 15:22:46 JST 2006)

 ハムーは「!spam」ということで、チェックボックスを入れてねってやつ。Gmail は私も考えたんだけど、面倒だったのでやめ。

_shiro(Mon Oct 02 15:46:05 JST 2006)

 コメント受ける度にdb全体にジャイアントロックかけるcgi掲示板を運用してたんだけど、spamで撃沈。チェックボックスは数日でadaptされた。spammerのIPはかなり散らばってるんで、botだろう。ほとんどDDoSだなあれは。

_shinh(Mon Oct 02 16:08:49 JST 2006)

 個人的な経験では、ひらがなの無いコメントはダメ、というものが圧倒的に効果があったんですが、そういうのはダメなのでしょうか。今プレビュー見ると英語で説明書いてあったので英語コメントにニーズあるのかもしれませんが、それでも頻度が少ないのであれば英語コメントはとりあえずメール送るだけ…とか。

_ささだ(Mon Oct 02 16:14:48 JST 2006)

 チェックボックスはスグにダメになるのか...。英語も、というのは英語日記の名残ですね。うーむ、サボってる。

_1(Sun)

ハムーチェックをおながいします。


... spam 多すぎ。というのも、一覧からポストするときは特にチェックしていないからなんだけど。

うーん、どうしたものか。やっぱり内容でチェックするしかないのかー。それはやりたくないんだけどな。


preview をつけて「本当によろしいですか?」画面を挟むのはどうだろうな。

_向井(Sun Oct 01 22:09:47 JST 2006)

 たぶんスパマーのホストはそんなに種類ないので、ホスト(サブネット)単位で弾いた方が楽だと思います。というか私も似たような攻撃を受けて、そのような対処をしたらスパムはぱったりと止みました。

_ささだ(Mon Oct 02 01:51:14 JST 2006)

 ううむ、来たら対応する、というのが嫌だったのですが、しょうがないかなぁ。

Sasada Koichi / sasada@namikilab.tuat.ac.jp
$Date: 2003/04/28 10:27:51 $