K.Sasada's Home Page

Diary - 2007 May

研究日記

皐月

_31(Thu)

すみません、ちょっと明日というか今日は、日中はメールが届かなくなります(MLシステムも同じ)。ご迷惑おかけします。9時5時で断続的に、か。ううむ、どうしよう。

って、この日記も見えなくなるんだよな。どうしよ。メール見れなくなると死んでしまうような気がする。ううん。

_さ(Thu May 31 12:28:55 JST 2007)

 普通に見えてるなあ

_30(Wed)

http://journal.mycom.co.jp/articles/2007/05/30/disney/001.html そうだよな。継続的な監視はプロファイリングには重要だよな。

しかし、プロファイリングにもオーバヘッドがかかるんだよなぁ。そこでマルチコアですか?


Fiber カッコいいのかなぁ。callcc で全部オーバヘッドなくいければもっとかっこいいんだけどね。でも私は性能を取りたい気がする。


なんか、もう折れそう。


callcc や fiber の対応をしていて、スタックの自動伸長をまじめにやったほうがいいかなぁ、やれるかもしれないなぁ、と思う。どうしようかな。


明日は本郷だ、と思っていたら、駒場だったという罠。危ない。

_29(Tue)

先週から,朝8時の帰りは1時という生活が続いていて,できれば週末は,と思っていたら結局週末も同じような感じだった.

高橋さんじゃないので死んでしまう.ううん.


そして,日常でも謝ってばかりで,もうなんというか.


そして continuation のバグは取れない.なんなんだ,これは.


昨日,JRubyの中の人に聞いてみた.

  • Q. 日本のマスコミでは YARV より速いって言ってるけど?
  • A. 計って無いけど(計れよ!),ベンチマークによっては速いんじゃない?(当たり前だ)
  • Q. JITコンパイルって何するのん.
  • A. Java バイトコードへ Ruby コードをコンパイルする.まだ限定的.
  • Q. JRuby って並列に動くの?
  • A. 動くよ(詳細不明.もっと突っ込んで聞けばよかった)

Rubinius は Fiber 相当として Task というものがあるらしい.しかし,そのタスク切り替えが Task.current= というのは,ちょっとどうなのかなと思った.スイッチするだけならいいんだけど,値を渡すには不向きだよね.

_28(Mon)

やっと Fiber についてまとめられた(http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/30827)。Coroutine という名前にするんなら、どんなAPIが適当なんだろうか。cocall なんてあるんだろうか。


こういうのに夢中になっていたら、むにゃむにゃ。本当にごめんなさい。


JRuby の人に、YARV より速いの? って聞いたら、知らないけど、いくつかのベンチマークではそうなんじゃね? と言ってた。そりゃそうだろうけどさ。

_27(Sun)

メイリオきれいだなぁ。

最初、「パフォーマンス優先」にしたせいで、クリアタイプが有効になっていなくて(でいいんだろうか)、とても汚く、Vistaってなんでこんなに(ry と思っていた。

_26(Sat)

不思議現象 on Vista.

svn+ssh を plink 経由で実行したい.で,cygwin(bash)から plink を行うと,pageant(ssh-agent 相当)が動いてるのに,なぜかパスフレーズを聞いてくる.なので,ssh+svn が動かない.

コマンドプロンプトからだと,パスフレーズは聞かれないので動いた.なんで?

cygwin 上で cmd /c で動かしてもパスフレーズを聞かれた.ということは,bash 経由だと,ということか? うーん.


verboseでメッセージを見ていると,pageant <-> plink 間の通信が出来ていないようだ.何が悪いんだろう.うううん.


コマンドプロンプトで、cygwin の ruyby を使って、 ruby -e 'p system("./plink -v ...")' とやってみても同様なので、cygwin 環境がなんかまずいような気がする。しかし、なんなんだ、これは。


再起動したら治った。なんだこれは。

_25(Fri)

http://d.hatena.ne.jp/essa/20070524/p1

puts "sum=#{(1..10).inject(0){|i, sum| i + sum}}"

こう書くかなあ.

_まつもと(Fri May 25 18:29:23 JST 2007)

 「puts "sum=#{(1..10).inject(:+)}"」かな。(1.9限定)

_24(Thu)

なんか,callcc は無いのかという声に対応するのがめんどくなったのでてきとーに対応.stack_extend 相当に気づくのが遅くなって一日仕事になってしまった.

まぁ,きっとSEGVるんだが,結局誰も使わないから気づかないよな.


http://pc11.2ch.net/test/read.cgi/tech/1173036694/898-901

shiroさんはやばい.超やばい.前にも書いたけど,凄すぎる.

昔,kahua のミーティング中に(shiroさんはふつうに議論に参加している)なんかPCでかちゃかちゃやっていたので,聞いてみたらミーティングで喋っているのとは別のドキュメントを書いていたという.

Rubyist であんな芸当が出来る人は,見たことが無い.というか,他で見たことが無い.見てないだけかもしれないけど.

というわけで,shiroさんはガチに凄い人です.


青木さんの議事録再現率も驚異的だよな.家に帰ってからあれだけ起こすのは脅威だ.

_斎藤ただし(Thu May 24 09:04:36 JST 2007)

 おぉ、強気だぁ ;) 対応お疲れさまです!

_23(Wed)

JRubyのJIT(なぜcompileを省略するんだろう)って意味がわかんないのだけど,何を指してるんだろう.Olaの成果かな?

まぁ,調べろってことか.聞くのが早そう.

_みずしま(Thu May 24 00:22:27 JST 2007)

 JRubyのプログラム実行時に直接Javaバイトコードに変換して実行する機能のことでは?>JIT

_みずしま(Thu May 24 00:23:32 JST 2007)

 あ、直接っていうのは、一度.classファイルを生成すること無しに、ということです。

_22(Tue)

職業柄,最近先生と呼ばれることが多い.面倒なのでそのままにしているだけど,どんどん自分が馬鹿になっていく気がしてしょうがない.


http://www.rubyist.net/~matz/20070512.html#p06

つまり、「主流の言語(established languages)」には手を入れず、それらで記述されたタスクを組み合わせる「協調言語(coordination languages)」が主流になるのではないかという予測。

結局,こうなるんじゃないかと思っています.で,その解として,MVMをやりたいなーと思っていたり.

_21(Mon)

色々と進まないので,しょうがないので末尾呼び出し最適化を正式にサポートしてみた(ただし,デフォルトでは使えない.スタックレイアウトが変わる→今までのソフトウェアが動かなくなる可能性があるため).

require 'benchmark'

def rec n
  rec n-1 if n > 0
end

def cnt n
  n.times{
  }
end

def wlp n
  i = 0
  while i < n
    i = i.succ
  end
end

Benchmark::bm{|x|
  MAX = 10000000

  x.report("rec"){
    rec(MAX)
  }
  x.report("cnt"){
    cnt(MAX)
  }
  x.report("wlp"){
    wlp(MAX)
  }
}
#=>
      user     system      total        real
rec  1.000000   0.000000   1.000000 (  1.006695)
cnt  1.470000   0.000000   1.470000 (  1.469967)
wlp  0.330000   0.000000   0.330000 (  0.329661)

なんというか,rb_yield() がやっぱり遅いんだよな.


http://pc11.2ch.net/test/read.cgi/tech/1173036694/716

おお,名指しされてる.凄い.

すみませんすみません.

ところで,JRubyが速いといっているのは,どのベンチマーク結果を指して言ってるんだろう.自分ではチェックして無いんだよね.


おっきなデータ処理なんかは,ライブラリの性能であって,VMの性能関係ないような気がするんだけど.メモリ管理はちょっと関係するかもしれないけど,YARVではあんまり変わらない.


aRuby 笑った.


http://pc11.2ch.net/test/read.cgi/tech/1173036694/764

model 2 です.細粒度ロックにするためのコストをちょっと想像して欲しい.


ちなみに

rec = lambda{|n|
  rec.call n-1 if n>0
}

rec.call(10000)

こんなコードは動かないので,やっぱり関数型っぽく使うのは無理っぽい(SEGVするのは,今の実装の弱さか...).

これを,きちんと末尾呼び出しの最適化で,何回やっても大丈夫ー,ということにするにはどうすればいいのか.うーん.色々と絡まっているので難しい.うーーん.


勉強会じゃなくて読書会だよー.多分.


あれ? Proc#call ってマシンスタック要らない? 本当? setjmp あるから要りそうなんだけどな.

ううむ,Proc#call での braek ハンドリングなどがようわからん.真面目に考えれば,Proc#call が随分速くなるかも.ならないかも.

バックトレースが消えてしまうんだなあ.

Proc.new{
  puts caller(0)
}.call
#=>
t.rb:4
t.rb:3:in `call'
t.rb:3

これの,`call' の部分が無くなる.これは許容範囲かなぁ.backtrace のため性能を犠牲にするのもなんとも.


Ruby レベルから Ruby レベルの Proc を呼ぶに限り,(スタックトレースを気にしなければ)できる,のかな.

_shiro(Mon May 21 15:33:40 JST 2007)

 SEGVしなければよい、というのなら、スタックが溢れそうになった時にスタックの内容をヒープに避難させるとか。スタックコピー式call/ccが既にあればそんなに手間じゃないかと。(call/ccってなくなるんだっけ?)

_ささだ(Mon May 21 17:13:45 JST 2007)

 その前の「(マシン)スタックが溢れそうになったとき」を検地するポータブルな方法がなさげです.

_shiro(Mon May 21 17:37:48 JST 2007)

 完全にポータブルに書くのは難しそうだけど、保守的GCでやっている程度のヒューリスティクスで何とかなりそうな気もしないでもない。ってまてよ。YARVでrec.call実行してもマシンスタック消費するの?

_ささだ(Mon May 21 17:39:42 JST 2007)

 そうなんですよー.

_shiro(Mon May 21 19:37:19 JST 2007)

 ああ、もしかして既存のC extensionとの互換性のためかな。

_まつもと(Tue May 22 00:36:36 JST 2007)

 バックトレースからメソッド名がいくつか落ちるくらい許容範囲じゃないかな

_ささだ(Tue May 22 01:55:35 JST 2007)

 おー,許しが出た!

_20(Sun)

やっとクリアした....長かった.

ファイアーエンブレムって紋章の謎しか知らなかったんだけど,他にも沢山出てたんだね.前作がやりたい.

_19(Sat)

軽井沢は雨で寒かった.

_18(Fri)

軽井沢行って来ます.仕事だけど.

_17(Thu)

色々難しいなぁ.

_16(Wed)

http://d.hatena.ne.jp/Artisan/20070515/1179250669

実は私は松本さんに命令されてYARVを作っていた! どうでもいいけど,日本語がよくわからなかった.開発停止を命じ,なら意味が通るんだけど.


--------------------------------------------------------------------
第8回仮想化実装技術勉強会

日時:
 2007年5月22日 (火) 18:00 〜

場所:
 秋葉原ダイビル13F 東大秋葉原拠点 大会議室
 (http://www.i.u-tokyo.ac.jp/map/index.shtml#aki)

題目:
 「リッチクライアント技術を用いた仮想マシンモニタの提案と実装」

講演者:
 高橋一志(金沢工業大学 工学部 情報工学科)

講演概要:
 近年,リッチクライアント技術を用いたWeb アプリケーションが普及してい
る.しかし,従来より開発されてきた膨大なソフトウェア資産はブラウザ上でそ
のまま利用することはできないため再実装が必須であり,また必要なソフトウェ
アすべてを再実装するのは現実的ではない.
 そこで本研究ではVMM とAjax を組み合わせることで,Web ブラウザ上で既存
ソフトウェアを動作させるシステムを提案する.本システムでは既存のIA-32
アーキテクチャ向けのソフトウェアをブラウザ上からそのまま利用できるため,
再実装のコストは不要である.本システムを実現するにあたり,Linux Kernel
2.8.18 上にてデバイスドライバとして動作するVMM の開発を行った.勉強会で
は,主に本システムの概要およびこのVMM の実装方法について説明する.
--------------------------------------------------------------------
http://www.atdot.net/~ko1/vimpl/

こんなのをやります.

_たかはし(Wed May 16 20:37:51 JST 2007)

 がんばります...

_Artisan(Thu May 17 06:39:47 JST 2007)

 開発を命じ→開発停止を命じですね。

_nishio(Sat May 19 19:53:54 JST 2007)

 そもそも普及ってなんなんだろうねぇ。Java人口に比べればRubyもPythonも全然普及していないわけで。その普及していないPythonのCによる実装と比べるとJythonはやっぱり普及していないわけだけど…

_15(Tue)

しゃぶしゃぶだった.

_14(Mon)

hatena の ruby キーワードに spam がよくひっかかるようになった気がする.

_まつもと(Mon May 14 18:16:12 JST 2007)

 キーワードスパムはメジャーになった証拠だと思うけど、やたら鬱陶しいのは確か。対策できないものか。

_KM(Tue May 15 12:23:48 JST 2007)

 はてな側がシステム的に spam 日記を排除するまで、人海戦術ではてな事務局に、id:ほげほげ は spam 日記だから消してくれ、と言う他なさげ

_13(Sun)

RubyKaigi2007ミーティング.今年は平和だなぁ.

_12(Sat)

170円のアイスクリーム.おいしい.

_11(Fri)

この数日でMS Wordの使い方をちょびっとだけ学習した.


就職してからはじめて電車を乗り過ごしてしまった.気づいたら,新宿で降りるはずが中野についてた.面倒になったので,立川経由でぐるっとまわって帰ったが,定期が効かないので(京王線まわりなら無料の駅だが)500円以上かかった気がする,が,SUICAなのでいくらかかったのか良くわからなかった.

_10(Thu)

vimplの飲み会でErlangの話が出て,CPU使いまくりな富豪的プログラミング環境になるのか,という話をしていた.

RubyはメモリやCPU時間なんかは頓着しないんだけど,今後はそれがCPU数になる,と.さて,どうなんだろうね.通信時間ってのもあるからな.


shiroさん来日してたのかー.いいなぁ.やっぱり行けばよかったなぁ(shiroさんがskype出演というのが,行かなかった理由のひとつだった).


ううむ,JRubyそんなに速くなってたのか.すごいなぁ.


vimpl webpage http://www.atdot.net/~ko1/vimpl/ 興味がある人はご参加ください.


ちょこっと jruby で fib ってみたんだけど,1.8 CRuby よりも速いってことは無さそうだけどなぁ.気のせいか(fib が遅いから jruby は遅い,というつもりは無い).

_みずしま(Fri May 11 01:23:47 JST 2007)

 Javaバイトコードにコンパイルしたjrubyプログラムと比較してるんじゃないですかね?>1.8 CRubyよりも速い

_keisuken(Fri May 11 14:26:01 JST 2007)

 たぶんみずしまさんのいう通りだと思います.jrubycする必要があるかと.

_shiro(Fri May 11 23:10:37 JST 2007)

 オフィシャルな情報として「私がSkype出演」という話が流れたことは一度も無かったのだけれど、勘違いしてた人は実は多いのかなあ。

_私もハワイからと思ってた(Sat May 12 06:36:24 JST 2007)

 去年のLLで出演&shiroさんはハワイ→Skype出演という連想?

_ささだ(Sat May 12 17:20:06 JST 2007)

 オフィシャルなアナウンスにskype出演と書いてあったような.

_9(Wed)

ぱっと思い浮かんだのは,次のようなひねりのないもの.

(1..100).each{|e|
  print s = "Fizz" if e % 3 == 0
  print s = "Buzz" if e % 5 == 0
  print "#{s ? '' : e} "
}

その後,ゴルフしてみたんだけど,ダメダメ.やっぱ俺頭悪い.


スレッドセーフなメソッドキャッシュ,ってなんか前提が全然違うけど.インラインメソッドキャッシュは流行らないのかな.うーん.

ちなみに,YARV/Parallelのグローバルメソッドキャッシュはこんな感じ.


たんぽぽ,じゃなくてオキザリスという花だそうです.

参考(このサイトのワンポイントの変遷):http://www.atdot.net/~ko1/css/base.css


GaucheNight 行きたかったなぁ.

_まつもと(Thu May 10 00:38:23 JST 2007)

 私も行きたかったです。途中でSkypeの調子が悪くなって、ぜんぜん参加できませんでした。

_きむら(K)(Thu May 10 01:13:08 JST 2007)

 すいません。参加してきますた。まつもとさんのSkypeはぜんぜん調子出ませんでしたねー。黒田さんとのやり取りが…

_まつもと(Thu May 10 07:51:21 JST 2007)

 すいません。これに懲りて今後Skype出演は断るようにします(泣

_きむら(K)(Thu May 10 12:04:35 JST 2007)

 あ、でも、娘さんの声がマイクに拾われて会場に流れたときは(会場が)和んだような。

_まつもと(Thu May 10 19:22:18 JST 2007)

 あ、流れてたのか。はずかしい。

_8(Tue)

めがねを変えたんだけど,めまいがするくらい,変な感覚.慣れるんだろうか,これ.それとも,何かが根本的に間違っているんだろうか.


いつのまにか RubyConf の話が.今年は東海岸か.もう喋ること,ないんだよなぁ.見るだけにしとくかなぁ(お金でるかなぁ).

_雪見酒(Wed May 09 00:05:48 JST 2007)

 たんぽぽ、でかくなった?

_7(Mon)

2部の最後で誰かが死んでしまう.あとちょっとなんだけどなぁ.


しかし,アレです.休日を休日として楽しめない.やることが沢山ありそうな気がして.いや,あるからダメなんだけど.


今年のくらやみ祭は始まる前(4/29)と終わった後(5/5の23時ごろ)に行ってみた.終わった後は,やっぱり物悲しいような気がするけれど,祭の熱気はまだ残っていた.

_6(Sun)

そしてWiiのFEにはまる.

_5(Sat)

ぐだぐだーっと.

FF12REをクリアしてしまった orz

_4(Fri)

ぐだぐだーっと.

_3(Thu)

数年ぶりに鎌倉に行った.気持ちいいねぇ.

_2(Wed)

青木さん,今度はふつうのErlang書いてくれないかな.


久々に,CSSを弄ってみた.春らしくなったかしらん.

_1(Tue)

gauche night はチケット取れなかったからなぁ.


早速5月病ですよ.


http://www.atdot.net/~ko1/vimpl/

ウェブページを作ってみた.


週末の2/3を(イベント以外で)外に出たのは,とても久しぶりじゃないだろうか.


Array#choice は find_all の別名かと思った.


Japan.internet.com Webビジネス - 民間刑務所で Ruby によるソフトウェア開発者を養成、アウトソーシング業務を

なんか凄いな。

というか、民間刑務所、というものを知らなかった。

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