K.Sasada's Home Page

Diary - 2006 November

研究日記

霜月

_30(Thu)

責任って重いなぁ。自分の言ったことって、重いなぁ。

人の振り見てってのもアレだけど、きちんと肝に銘じなければ。


5時半の快速電車に乗ったら,結構快適だった.これからはこれを狙うかなあ.


スーツを着なければならなくなった.しかし,まともなスーツを持っていない.ということで,休日に買ってくるかなあ.どこで買うのがいいんだろ.あぁ,ひどい出費.

_さ(Thu Nov 30 18:34:41 JST 2006)

 PTT ちょっと遅れ 今池袋

_むらまさ(Thu Nov 30 19:46:16 JST 2006)

 2プライスとか3プライスとかのスーツ専門店が安くてよいのではないかと。スーツカンパニーとかスーツセレクト21とか。

_ささだ(Fri Dec 01 14:31:08 JST 2006)

 なるほど.探してみます.

_29(Wed)

なんかもう自分のダメさに死にたくなってくる.


多分,文章,とくに自分の文章に対してシビアな目で見ることが出来ないんだろうなぁ.あああ.


  • 大量に記述が必要なものを選んでしまった
  • くだらないことをダラダラ書きすぎた

どっちだろう.前者のつもりでいたんだが,なんとなく,指摘を見ていると後者な気がしてきた.となると,俺は世の中にくだらないものを出そうとして,無駄な努力をしているのか.それは世の中のためにならないよなぁ.うーん.


朝日がまぶしい.


しかしまぁ,色々重なるよな.

  • 未踏関係手続き(学生のころより全然めんどうくさい)
  • 学生さんのアレ,コレ,ソレ
  • アレ修正
  • イベント関係色々

日記書けているうちは大丈夫だ,うん.

_ikegami(Wed Nov 29 13:26:45 JST 2006)

 私の角刈り応援団姿でも見て元気を出すと良いゾ

_ささだ(Wed Nov 29 18:04:56 JST 2006)

 見たかったなあ.発表.

_28(Tue)

なんというか,人の悪意には慣れないね.どうにも.凹む.


英語が得意でないんで,本当に単なる疑問なんですが.

http://serif.hatelabo.jp/

serif でいいのか? 何か勘違いしてるんだろうか,俺.serif文字を使うからとか,なんとか.


アクセスカウンタ間違えてた.こういうとき,静的なページは厳しいなあ.

_shiro(Tue Nov 28 20:29:35 JST 2006)

 言われてみれば…台詞の意味の「せりふ」ってどこから来てるんだろう。英語ではlineって言う。

_ささだ(Tue Nov 28 20:40:55 JST 2006)

 普通に日本語みたいですよ>台詞 セリフ・台詞(せりふ) - 語源由来辞典

_shiro(Tue Nov 28 21:04:26 JST 2006)

 へぇ^12

_27(Mon)

Python の generator の理解がイマイチだったので,Ruby で実装してみた.

class Generator
  def initialize &b
    @cc = :first
    @bcc = nil
    @block = b
  end

  def _next
    callcc{|@bcc|
      case @cc
      when :first
        val = self.instance_eval(&@block)
        @cc = :finished
        @bcc.call val
      when :finished
        raise
      else
        @cc.call
      end
    }
  end
  
  def _yield *args
    callcc{|@cc|
      @bcc.call(*args)
    }
  end
end

g = Generator.new{
  _yield 100
  _yield 200
  _yield 300
}

10.times{|i|
  puts "next (#{i}) #{g._next.inspect}"
}

こんな感じかなぁ.

って,generator.rb と同じか.


いや,partial continuation を実装すると幸せになれるかなぁ,と色々考えていた感じなんですけどね.

Ruby 呼び出しレベルだけだったら part cont はあんまり問題にならなさげなんだが(rescue/ensure が混じるとやっぱりダメな気がするが).


いや,まつもとさんがマイクロスレッドみたいなものが欲しいと言っていたので.きちんとした仕様にするのは,やっぱり大変そうだ.


  • 12/5 Rubyの本読書会(2)
  • 12/6 仮想化実装技術勉強会
  • 12/12 仮想化実装技術勉強会

なんだこれは.

_26(Sun)

うーむ,RubyConf2006 の俺の発表の写真が無いので,発表証明が無い.


うう,あと何個残ってるんだ.


確かに入門JavaScriptって薄いなぁ.さくっと読めてしまった(超斜め読みだけど).


るびま17 リリース。お楽しみください。


ううむ。

_25(Sat)

YARVソースコード勉強会 (5)

超すげー.自分でもさっぱり忘れていた.


ESPer行きたかったなあ orz


生まれて初めて銭湯に行った気がする.初めてではないかもしれないけど,行った覚えがない.


なんというか,迷惑かけっぱなしで申し訳ないです.色々と.

もっと能力があればなぁ.

_24(Fri)

ドンキホーテで餅チョコというのが売っていたので買ってみた.なかなかおいしい.これで600円は,どうなんだろうな.


全然終わらない.

_23(Thu)

昨日の夕刊の1面にまつもとさんが.プログラマが1面に載るのって何人目くらいなんだろう.

しかし,親からお前なんかこんなのやってなかったか,と指摘された.新聞の威力は凄いなあ.


あー,まずいなぁ.またやってしまった.

_yam@(Fri Nov 24 00:14:24 JST 2006)

 さすがまつもとさん。Ruby全然書いてない自分が知っているほど有名な方ですからねぇ。

_22(Wed)

うは,カーネル読書会出遅れた! 興味のあるテーマだったんだけど.しょぼん.

録画に期待?


ダイビル30Fにはじめて行った.半年ここに居たのに.眺めいいなー.安いし,日立いいなー.

_21(Tue)

入門 JavaScript

次の RHG で読みます.


はて,16日以前が消えた.なんで? 直した.リンク消えちゃったけどいいや.


マジで,全然おわらねぇ.


うううう.


図を書くのは意外と楽しいんだけどな.説明が....

_さ(Tue Nov 21 23:00:31 JST 2006)

 かえろう……

_20(Mon)

27の誕生日はとっても修羅場らしい。


次の RHG のページ名を考えていて、 RHG読書会::東京 鬼隠し編 にするのはどうだろう、と思ったんだが、ページを紹介するときに恥ずかしいので止めた。


同時マルチスレッディング - Wikipedia

なんかえらい詳しいな... すげぇ


http://com-pla.com/

うーむ,こんな施設があるのか.宿泊も可能か.なるほど.しかし,このURL凄いな.


自分へのプレゼントに,ではなくただの現実逃避に,

  • 入門JavaScript
  • スーパー株ロボを作ろう
  • 恋するプログラム
  • Linuxカーネル2.6解読室

を買ってきた.まぁ,お仕事に使えるかも,ということで買ってきたんだが,恋する〜はちょっと違うか.


ちょっと凄い誕生日プレゼントが来たな,これは.

http://www.ipa.go.jp/jinzai/esp/2006mito2/koubokekka.html

またかよって言われそうだ.


ChangeLog に日本語が許されれば,色々と詳しく書けそうだなぁ.

_もろはし(Mon Nov 20 18:54:03 JST 2006)

 おめでとうございます。誕生日プレゼントもあわせておめでとうございますです。

_babie(Tue Nov 21 00:43:45 JST 2006)

 おめでとう!そして、ありがとう!>Yarv

_しゅ(Tue Nov 21 02:04:03 JST 2006)

 おめでとう!そして、またかよ!(御期待通りに言っておこう!)

_斎藤ただし(Tue Nov 21 05:25:11 JST 2006)

 一歩遅れましたが、もろもろ合わせて(笑)おめでとうございます! 継続できる精神力に脱帽です。

_みずしま(Tue Nov 21 09:28:04 JST 2006)

 一日遅れですが、おめでとうございます。これでユース含めて3回目でしたっけ?修羅場に負けずにがんばってください。

_arton(Tue Nov 21 09:46:24 JST 2006)

 素晴らしい誕生日とかプレゼントとかおめでとうございます。

_とおる。(Tue Nov 21 13:59:03 JST 2006)

 20日だったんですかー。おめでとうございますー。

_n(Wed Nov 22 00:22:08 JST 2006)

 おめでと〜♪

_19(Sun)

もうダメダメだ。

_18(Sat)

ああ、RHGか。


RHG だった。ふつける読み終わった。今日も面白かったなぁ。最近全然行けなかったので、久々。

== これまでのあらすじ

* RHG1 2003/1 - 7
* RHG2 2003/8 - 2004/12
* 単発
  * 2005/1 何しようか
  * 2005/2 YARV
  * 2005/3 Rails
  * 2005/4 CGIKit
  * 2005/5 arton
  * 2005/6 なでしこ/HSP
  * 2005/7 MLコンパイラ
* ふつりな 2005/8 - 2006/4
* もなど 2006/5
* ふつける 2006/6 - 2006/11

長いよなあ、ほんと。丸4年やったんか。次で5年目。


次からは JavaScript の本になります。

_さ(Sat Nov 18 21:48:42 JST 2006)

 ふつける終わり

_17(Fri)

あれ、Matz にっきに書き込めない。

... 嫌われてる!


なんか意外と疲れた。疲れたのは結構立ちっぱなしだったからな気もする。いい加減、運動不足だなぁ。

やってよかった、と言ってくれる人がいればいいんだけど。


http://slashdot.jp/mobile/article.pl?sid=06/11/16/1234255&threshold=-1

凄いなあ。

でも、俺は腕時計付けないしな。USBメモリ付き懐中時計が欲しい。


国民年金滞納のお知らせが来た。共済年金に入ってるから要らないって、以前も問い合わせたのに...。再度問い合わせたら、やっぱりミスだって。


西山さん、森田さん、角谷さんから Pickaxe2 訂正Wikiを紹介された。みんなよく知ってるなあ(森田さんは、そりゃそうか)。


あー、どうしよ。ヤバイ。


Simula では。

_まつもと(Fri Nov 17 09:17:07 JST 2006)

 14日以前の日付に対するコメントをぜんぶ捨ててました。あまりにずれてる私が悪いんです。

_ささだ(Fri Nov 17 15:13:18 JST 2006)

 なるほど。まぁとりあえず継続は(ry

_n(Fri Nov 17 15:23:23 JST 2006)

 おつかれさまでした。楽しめました。

_16(Thu)

どうしよう。全然書けない。


最近、rgrey をすり抜ける spam がどうしようもなく増えてきたな。一晩で50通か。

もうちょっと厳しい何かを設けたほうがいいんだろうか。

_さ(Thu Nov 16 23:26:43 JST 2006)

 なんかとても疲れた

_15(Wed)

帰りの電車で、堂々と携帯電話で喋っている人がいた。うーむ。

指摘できない俺もヘタレだが...。


本当に、これを世に出していいのか不安なものがたくさん。どうやって自信を持つんだろうなぁ。


タイトルが全然決まらない。内容もなんだが。


今日の話は、話は面白かったけど、その後が...。ネットワークがつながらなかったのがつらかった。

_nishio(Wed Nov 15 03:50:34 JST 2006)

 指摘すると刺されるかもよ!

_ささだ(Wed Nov 15 10:05:02 JST 2006)

 そうなんだよねぇ。

_yoosee(Wed Nov 15 18:53:37 JST 2006)

 自信を持つんじゃなくて、自信が無くても出していいんだということを学ぶんでは。

_ささだ(Wed Nov 15 20:42:03 JST 2006)

 それはちょっと。

_wo(Fri Nov 17 02:16:49 JST 2006)

質問で、プログラムカウンタからフレーム情報検索テーブルはリンカが作ってると答えてしまったのですが、すいません、ちょっと正しくなかったです。

フレーム情報とプログラムカウンタの対応は、フレーム情報に書かれています。 unwind-dwarf2の例外用のテーブルは、二分探索できるように検索テーブルをリンカが作ってますが、GDBは、特にテーブルは作らないで、線形探索してるようです。

_ささだ(Fri Nov 17 16:19:16 JST 2006)

 誰が何時何所で(手作業でどうやって)作る/使う、みたいなものがやっぱり難しい/面白いですね。

_14(Tue)

モースト「もったいない」賞

orz

Rails は拍手貰ったからよかったと思ったんだけど、あんまりよくなかったらしい。日本では二番煎じは結構受けるんだがなあ。


来年はどうしよ。もう3年もやったから、いいかなぁ。


前も書いたっけな? 大変今更感がありますが。

再びRubyのパフォーマンスについてには、Ruby のメソッドディスパッチは「Duck typing, late binding だから遅い」って書いてあるけど、そこはあんまり問題じゃなかったりする(ハッシュの検索がどうの、とか言ってるんだけど、そんなこと言ったら Python と同じじゃん。あっちのほうがナイーブに検索してるよ)。Ruby の高級な機能をサポートするために、いろんな仕組みがあるんだけど、その辺が重いんだな。例えば、method っていうメソッド呼び出し式において、method メソッドが無いとき、引数も括弧もないからローカル変数かもしんないね、っていうエラーメッセージを出すため「だけ」にフラグがあったりする、そういう諸々が積み重なって、重いんだよね。


というか、Language Shootout を見て判断するってのが (ry


ってか、

私はRubyがすべての状況に適するわけではないという主張を続ける

って、あたりまえじゃん。そうでないと主張してる人なんて居るのだろうか?


メソッド呼び出しが x86 の call 命令一個に落としこめるか。答えは本質的に No で、なぜかと言うと、たとえば Strongtalk がどうの、って言っている人が cmp 命令と、って言っているとおり、(JIT compile するような)inline cache でも cmp 命令は必要で、多分移植性を考えると backtrace のための補助情報を埋め込む必要がある。補助情報は多分 linked list かなにか、たどれる形にしなければならないので、数命令必要であることは自明。例外とか考えるともうちょっとややこしい。


YARV wiki で検索すると Wikipedia が出てくるのは悲しい。


measured VMM って、検証は誰がするんだろう。H/W 的にブートをしなくなっちゃうんだろうか。


Intel は Transaction Memory を H/W にちゃんと入れるんだなぁ。


なんか体力の限界かも。

これからお詫びの文を書かないといけない orz


JavaScript みたいじゃなくてダサい、とか、Scheme みたいに callcc が無くてダサい、のなら、JavaScript や Scheme を使えばいいじゃない、という気もするんだが。

さて、ならなぜ Ruby に入れたくなるのか。

  • Ruby の文法は世界一〜
  • Ruby のライブラリは世界一〜

どっちも、かな?

後者は、たとえば YARV で JavaScript や Scheme を作ると解決できるかもしれない(いや、callcc の問題は残りそうだが... callcc は core の作り方で大分決まっちゃうからなぁ)。前者は、... どうなんだろう? Ruby っぽく書ける Scheme マクロを作る、なんてどうですかね。

Scheme に、ブロック構文みたいなものが出来るんだろうか。

[1, 2, 3].each{|e|
  p e
}

#=>

(each #(1 2 3) {|e|
  (p e)
})

(each #(1 2 3) (do (e)
  (p e)
))

リーダーマクロでなんかすれば、いけるのかな? do じゃなくて lambda そのまんまじゃん、というのは、まぁとりあえず書いてみただけ。

(#(1 2 3) . each (do (e)
  (p e)
))

なんてのは、マクロで書けそうだけど、どうなんだろう。


http://portal.nifty.com/koneta05/03/28/01/

世の中にはスゲエ人が居るもんだなあ。

_shiro(Tue Nov 14 14:53:51 JST 2006)

cmp命令ってレシーバの型チェックですか? だとしたら、例えば期待しているのと違うレシーバが来た時にcallee側でハード的に例外を発生させる仕掛けとか作れたら、予測が当たる限りにおいては最速に動いたりします? (外れたときのペナルティは大きいですが)。 昔のLisp処理系で数値演算をそんなふうに実装してたのがあったような気が (fixnumだかflonumだかの場合はノーペナルティで、それ以外の数値が来たときに例外を発生させてハンドラで処理する)。

_ささだ(Tue Nov 14 21:45:22 JST 2006)

 そういう手も確かにありますよね。

_shiro(Wed Nov 15 04:05:13 JST 2006)

専用ハード無しで↑を実現する方法を考えてみる。

  • 論理メモリ空間を、例えば2^32バイト毎の領域に分割 (64bitアドレスを仮定)
  • 各領域には単一の型のオブジェクトしか置かない
  • 各領域の先頭ページにはオブジェクトヘッダがずらりと置かれて、
  • オブジェクトのハンドルはそのヘッダを指している
  • オブジェクトの実体は、各領域の先頭から型固有のオフセットだけ離れた
  • ページに置かれる
  • 使われないページは物理メモリにマップしない
  • 各型のメソッドは、オブジェクトのフィールドにアクセスする時はハンドルに
  • オフセットを足してアクセス
  • 型の違うオブジェクトの場合、その時点でSEGV

超富豪的にアドレス空間を使うことになるけれど…

_maeda(Wed Nov 15 09:49:19 JST 2006)

fixnumだかflonumだかの場合はノーペナルティで、それ以外の数値が来たときに例外を発生

MITやSymbolicsのLispマシンはそういう感じでしたね。fixnumの演算とflonumの演算と型チェックをハードで並列にやる。bignumなんかの時はハンドラへ飛んで処理。

あとは、SPARCにtaddcc (tagged add set condition code) なんていう命令があった気がします。下位2ビットが0でないと例外が発生する整数加算。

Scheme に、ブロック構文みたいなものが出来るんだろうか。

もしかして: map

_ささだ(Wed Nov 15 10:04:00 JST 2006)

 いや、Ruby っぽくってことで>map

_ささだ(Wed Nov 15 10:11:57 JST 2006)

 x86 のセグメントを〜 というので前考えたことがあります。

_shiro(Wed Nov 15 12:14:23 JST 2006)
(use gauche.collection)

(define-method object-apply ((seq <sequence>) (proc <procedure>) . args)
  (apply proc seq args))

(define (each seq proc) (map-to (class-of seq) proc seq))

とかやっといて

gosh> ('#(1 2 3) each (lambda (x) (* x 2)))
#(2 4 6)

これはSchemeじゃない、というツッコミは可。

_ささだ(Wed Nov 15 14:16:00 JST 2006)

 きっと、lambda って書いたら負けなんですよ。

_shiro(Wed Nov 15 14:54:11 JST 2006)

 Common Lispのリーダマクロみたいのを導入すれば ('#(1 2 3) each {(x) (* x 2)}) とか書けると思うけれど… あるいは { x -> (* x 2) } とか、Paul GrahamのArcだと [* _ 2] と書けるらしいし。でもそういうことにあまり熱心になれないのがLisp脳 (「どうせ展開してlambdaになるんでしょ」)

_まつもと(Wed Nov 15 19:54:58 JST 2006)

 その辺に気を使わないのがlispが一般人にウケない理由のような

_shiro(Thu Nov 16 02:02:11 JST 2006)

 多分、ひとつに決めてしまうことに抵抗があるんだと思う。決まりごとがある程度多い方が広めやすいってわかってても、プライマリユーザ=作ってる人たち自身が「ひとつに決められる」ことに抵抗があるから、色々できるようにしといて好きなの選んでね、っていう形に行きがち。

_まつもと(Thu Nov 16 08:06:57 JST 2006)

 わかります。ま、それがLispの生きる道なんでしょうね、きっと。

_13(Mon)

固有表現抽出というのを知らなかったので、ちょっとぐぐってみた。

http://www.forest.dnj.ynu.ac.jp/~mori/MExperiment/NE/gazolab.html

なんともわかりやすい解説で感動。なんか、正規表現でグリグリ書いたほうがいいのかしらん。自動学習型ってのが、楽そうなんだけどなぁ。


OpenSync というのを見つけたが、何と何を sync 出来るのかようわからんかった。


http://www.amazon.co.jp/gp/product/0321486811/

ドラゴンがかっこよくなってる!!


A君にパタヘネ3版を買ってきてもらった。凄い小さい!

って、CD-ROM つきか。

_12(Sun)

http://www.tnlab.ice.uec.ac.jp/daihinmin/

サンドボックスとか、何か利用するのかなぁ?


http://d.hatena.ne.jp/tkng/20061110/1163187966#c それ CaboCha で出来るよ、ということなので、ちょっと試してみる。Windows 版はインストールが超簡単だった。

[ruby-list:42182] を例にとってやってみる。

ここから抜き出したい情報は、

イベント名
日本 Ruby カンファレンス 2006
日程
2006 年 6 月 10 日 (土)、11 日 (日)
場所
独立行政法人 産業技術総合研究所 臨海副都心センター別館 (バイオ・IT 研究融合棟) 11 階

ということになる。

とりあえず、cabocha -n1 としてやってみる。

Subject:[ruby-list:42182][ANN]日本Rubyカンファレンス-D  
                                            2006開催の-D
                                                お知らせ
EOS
From:SASADAKoichi<ko1atdot.net>
EOS
Date:Tue,2May200601:22:12+0900
EOS
                                          -D      
  <LOCATION>日</LOCATION>本Rubyカンファレンス-D    
                               2006実行委員会の---D
                                               さ-D
                                         さだです。
EOS
EOS
                      お待たせ-D          
                       しました。---------O
      <LOCATION>日本</LOCATION>での-D     |
                                 初の---D |
        Rubyオン<PERSON>リー</PERSON>な-D |
                     大規模イベントである-D
                  <LOCATION>日本</LOCATION>
EOS
 Rubyカンファレンス-D      
               2006、-D    
    通称RubyKaigi2006の-D  
                   開催を-D
           お知らせします。
EOS
EOS
        チケット発売は-----D    
  <DATE>一週間後</DATE>の-D |    
                      5/9を-D    
             予定しています。---D
             発売チケット枚数が-D
                             会場
EOS
              の-D          
            関係で-----D    
              あまり-D |    
                  多く-D    
        ありませんので、---D
                売り切れに-D
            ご注意ください。
EOS
EOS
             皆様の-D  
              ご参加を-D
    お待ちしております。
EOS
EOS
EOS
-----------------------------------------------------------
EOS
EOS
====================================================
EOS
==日本Rubyカンファレンス-D  
                2006開催の-D
                  お知らせ==
EOS
==http://jp.rubyist.net/RubyKaigi2006/==
EOS
====================================================
EOS
EOS
EOS
=日本Rubyカンファレンス-D
                 2006とは
EOS
====================================
EOS
EOS
                                          -D    
  <LOCATION>日</LOCATION>本Rubyカンファレンス-D  
                    2006(通称RubyKaigi2006)は、-D
                                               多
EOS
            くの-D        
      Ruby開発者、-D      
        Ruby利用者が---D  
                一堂に-D  
                  会し、-D
          技術的・人的交流
EOS
                          を-D        
                        深める-D      
                  イベントです。-----D
                            また、---D
        プログラミング言語Rubyのみに-D
                                    特
EOS
            化した、-D      
              国内では-----D
                    初の---D
                  本格的な-D
        カンファレンスです。
EOS
EOS
                                               -D  
                                          詳しくは-D
    http://jp.rubyist.net/RubyKaigi2006/about.htmlを
EOS
      ご覧-D
  ください。
EOS
EOS
[日程]
EOS
EOS
                               -D      
  <DATE>2006年6月10日</DATE>(土)、---D  
                                11日-D  
                                (日)の-D
                            二日間です。
EOS
EOS
*<DATE>6月10日</DATE>(土)9:15開場、-D
                             9:45開始
EOS
                                   *懇親会は---O
  <DATE>6月10日</DATE>(土)18:30開始予定(場所は-D
                                         準備中)
EOS
*<DATE>6月11日</DATE>-D  
         (日)9:15開場、-D
                10:00開始
EOS
EOS
[カンファレンス会場]
EOS
EOS
 独立行政法人産業技術総合研究所
EOS
 <LOCATION>臨海</LOCATION>副都心センター別館-D  
                       (バイオ・IT研究融合棟)-D
                                             11階
EOS
 (地図:http://www.cbrc.jp/cbrc/map/index.ja.html)
EOS
EOS
EOS
=主催
EOS
======
EOS
EOS
<LOCATION>日</LOCATION>本Rubyカンファレンス-D  
                    2006実行委員会,日本Rubyの-D
                                             会
EOS
EOS
EOS
=後援
EOS
======
EOS
EOS
独立行政法人産業技術総合研究所
EOS
EOS
EOS
=協賛企業
EOS
==========
EOS
EOS
                                          -D        
  <LOCATION>日</LOCATION>本Rubyカンファレンス-D      
                                       2006は、-----D
                                         現時点で---D
                                             以下の-D
                                           企業より協
EOS
            賛を-D
  頂いております。
EOS
EOS
[特別協賛]
EOS
*株式会社ネットワーク応用通信研究所
EOS
EOS
[協賛]
EOS
*サイボウズ・ラボ株式会社
EOS
*株式会社永和システムマネジメント
EOS
*株式会社ツインスパーク
EOS
*<PERSON>サン・マイクロシステムズ</PERSON>株式会社
EOS
EOS
EOS
=プログラム
EOS
============
EOS
EOS
                              Rubyの-D      
                           開発者である-D    
    まつもとゆき<PERSON>ひろ</PERSON>氏、---D
                              RubyonRailsの-D
                                           作
EOS
                                       者である-D    
  <PERSON>DavidHeinemeierHansson</PERSON>氏両名の-D  
                                         基調講演を-D
                                             予定して
EOS
おります。
EOS
EOS
 プログラムについて、-------D
                詳しくは-----D
                      次の-D |
                    ページで-D
              ご確認ください。
EOS
EOS
<LOCATION>日</LOCATION>本Rubyカンファレンス-D
                              2006-プログラム
EOS
http://jp.rubyist.net/RubyKaigi2006/program.html
EOS
EOS
EOS
=参加方法
EOS
==========
EOS
EOS
                        チケットの-D        
                               購入が-D      
                             必要です。-----D
                                5/9(火)に---D
        <PERSON>ローソン</PERSON>チケットで-D
                                           発
EOS
売予定です。---------D
      詳しくは-------D
            次の-D   |
          ページを---D
                ご覧-D
            ください。
EOS
EOS
<LOCATION>日</LOCATION>本Rubyカンファレンス-D
                            2006-参加申し込み
EOS
http://jp.rubyist.net/RubyKaigi2006/application.html
EOS
EOS
           会場の-D          
            関係で、-------D  
                あまり-----D  
                  多くの-D |  
                チケットは-D  
          発売できないので、-D
                          売り
EOS
                切れに-D      
        ご注意ください。-----D
    チケット発売についての-D |
                      詳細が-D
                  確定したら、
EOS
              また---D
            本MLにて-D
    ご案内いたします。
EOS
EOS
EOS
=FAQ
EOS
=====
EOS
EOS
                                                  *Q.-D
  「<LOCATION>日</LOCATION>本Ruby会議2006」じゃないの?
EOS
                                *A.違います。---D
  「<LOCATION>日</LOCATION>本Rubyカンファレンス-D
                                     2006」です。
EOS
EOS
*Q.RubyConference(RubyConf)ですか-D
                                 ?
EOS
    *A.違います。-------O
  RubyCentralInc.が---D |
                 毎年-D |
             行っている-D
                 RubyConf
EOS
        とは---D
          関係-D
    ありません。
EOS
EOS
*Q.日本語ですか-D
               ?
EOS
*A.オフィシャル言語は-D    
           日本語です。---O
                 ただし、-D
            DavidHeinemeier
EOS
H<PERSON>ansson</PERSON>氏の-D      
                        発表は-----D
                          英語で-D |
                          行われる-D
                          予定です。
EOS
EOS
EOS
=お問い合わせ
EOS
==============
EOS
EOS
                                          -D    
  <LOCATION>日</LOCATION>本Rubyカンファレンス-D  
                                 2006についての-D
                                   お問い合わせは
EOS
rubykaigi2006/jp.rubyist.netへ-D
                  お願いします。
EOS
EOS
EOS
<LOCATION>日</LOCATION>本Rubyカンファレンス-D  
                 2006実行委員会 実行委員長 -D
                      <PERSON>高橋征義</PERSON>
EOS
-----------------------------------------------------------
EOS
EOS
   本メールの-D        
          内容の-D      
    ブログなどへの-D    
              転載は---D
            歓迎します-D
                      :)
EOS
EOS
--
EOS
//SASADAKoichiatatdotdotnet
EOS
EOS
EOS
EOS

うーん。ここからどうするものなんだろうなぁ。日付は取れてるけど、場所とかタイトルとかは難しそうだな。

タイトルはメールの Subject 決めうちでも、そんなに悪くない気もするな。「Subject: こんなイベントがあるそうです」なんてのはレアケースとして無視して。本文中に Subject と同じ内容があれば、タイトル決定でもいいのかもしんない。


自分の職業を「学者」と人に言われて、初めてそういう解釈もあるんだ、と思った。

というか、FF3 のジョブっぽくてカッコイイ! 召喚師にはなれそうにないけど、学者にはなれるんだなぁ。本でガコガコ殴る練習しないと。


今日は3本の記事をでっちあげて、あと一本なんか書かないといけない。ヤバイ。

_11(Sat)

今日(もう昨日か)は久々に特急電車がある時間に帰れた。いつもこうありたいものだ。


ご利用のIPはブラックリストに登録されているため、スパムコメント防止対策として投稿が禁止されています。

大変お手数ですが、はてなにログインしてから再度お書きください。

コメントの内容は以下となります。

....

詳しくは、はてなダイアリーのヘルプをご覧ください

!!!

えー、これがですか。Ruby 関連に突っ込みいれすぎたということなのか。

って、それならいいんだけど、この辺ハックされていたら一大事だ。ちょっと、どういうことか調べないと。

詳しくは〜 っていうところを見ても、この件についてはさっぱりわからん。

とりあえず、俺の atdot.net の管理が悪かったのか、上流が悪いのか知りたい。


というわけで、ここに書いていこう。

http://d.hatena.ne.jp/hzkr/comment?date=20061110#c

昨日、メソッド引数のコンパイルあたりを色々変えたので trunk を対象にするとよいかもしれません。

if/else のコンパイルについては一度まとめました:http://jp.rubyist.net/magazine/?0013-YarvManiacs

ちなみに、poped は popped の typo なんですが、pop 自体適当かよくわからないので、どうしようかなぁ、と思っています。

そういえば、帰り際、えらい長い行列があって、PS3 の発売を知ったのだった。

_10(Fri)

うー、なんでこんなところでこんな仕様変更してるんだー、と泣きながら parse.y の変更に追従しているわけですが。

やってきました GC バグ。parser 周りなんだろうな。

orz


やっとなんとかなった。


2263 tests, 18140 assertions, 37 failures, 100 errors

やっと test-all が動くようになった。


なんか昨日は狂ってた。

  • 避難訓練だった
  • まつもとさんがきた
    • まつもとさんと昼飯を食べた
    • まつもとさんは腰リーラーだった
  • えとさんとかが来た
  • 首藤さんが来た
  • IPA 未踏ユース説明会だった
    • 井尻さんが来た
    • なぜかしげとみさんが来てた
    • なぜかしげとみさんと中大の学生さんとで夕飯を食べた

いつもは、イベントも何もなく、全然人と会うことなどないのに。重なるときは重なるものだなぁ。


で、今日はとくに何もない。多分。


何もしないと思ったんだがなあ。


class C
  def m
    p "C#m"
  end
  private :m
end

class D < C
  public :m
end

D.new.m

が動かないなぁ。


動いた。

NODE_ZSUPER なメソッドで、visibility を上書きできないようになっていた。

2263 tests, 18491 assertions, 37 failures, 81 errors


test_get(TestNetHTTP_v1_2):
Errno::EADDRINUSE: Address already in use - bind(2)
    /home/ko1/yarv/trunk/lib/webrick/utils.rb:73:in `new'
    /home/ko1/yarv/trunk/lib/webrick/utils.rb:73:in `block in create_listeners'
    /home/ko1/yarv/trunk/lib/webrick/utils.rb:70:in `each'
    /home/ko1/yarv/trunk/lib/webrick/utils.rb:70:in `create_listeners'
    /home/ko1/yarv/trunk/lib/webrick/server.rb:74:in `listen'
    /home/ko1/yarv/trunk/lib/webrick/server.rb:62:in `initialize'
    /home/ko1/yarv/trunk/lib/webrick/httpserver.rb:24:in `initialize'
    /home/ko1/yarv/trunk/test/net/http/test_http.rb:280:in `new'
    /home/ko1/yarv/trunk/test/net/http/test_http.rb:280:in `spawn_server'
    /home/ko1/yarv/trunk/test/net/http/test_http.rb:270:in `setup'

この辺はなんだろう?


POSTARG と ARGSPUSH の違いはなんなんだろ。


ほんとに push するのか。しかも、毎回 dup して。非効率だなぁ。しかし、arraypush バイトコードを新設しないといけないのか...。どうしようかなぁ。


文章抽出とかは全然経験が無いので、少し試してみようかしらん。

_みずしま(Fri Nov 10 18:33:12 JST 2006)

 腰リーラーって何でしょう?検索してもよくわからんかったのですが。

_ささだ(Fri Nov 10 20:25:11 JST 2006)

 腰リール。

_9(Thu)

なんか、世の中のカレンダーソフトには、メールの中からスケジュール(イベント)情報を抽出するという機能を持っているものがあるらしい。きっと、google は gmail のエントリから抽出して、google calendar へ追加する機能をくっつけてくるんだろうと思う。

最近、(結局)Sunbird を使ってスケジュール管理してるんだけど、Thunderbird のメールエントリから Sunbird のエントリ追加を簡単にするプラグインを誰か作ってくれないかしらん。いや、コピーしてクリップボードに入っている文章を解析してくれる、というのでもいいんだが。

面白いと思うんだがなぁ。誰かやらないかな。

日付と時間の抽出だけでも、ありがたいと思うんだけれど。場所まで出来ればもっとよし。


「頭がいいと〜」を読み終わった。1300円が帰りの電車だけで読み終わるとは。

amazon のレビューにあったけど、基本をさらっただけ、と言う感じだった。だが、読みやすかった。こういう文章を書けるようになれるといいのかしらん。


まつもとさんの時計はやっぱりちょっとずれているような気がするなあ。


まつもとさん帰ってった。

YARV の parse.y が随分進歩したと思う。SEGVの嵐になったが。


うーん、Ruby に lexicial じゃない scope ってないと思うんだけど、何か勘違いしているのかな。


うは、module duplicate inclusion って revert されたのか!

_zunda(Thu Nov 09 06:36:41 JST 2006)

 一度google calendarを使いかけたのだけれど、GMailは日付しか抽出してくれませんでした。不便〜。

_まつもと(Fri Nov 10 12:20:08 JST 2006)

 ささだくんのためにrevertしたんじゃん。

_ささだ(Fri Nov 10 12:23:35 JST 2006)

 是非この機会に仕様の検討を。決まったら実装しますので。

_8(Wed)

なんか15日(水)が呪われてる。

BinaryHacks 聞きに行きたいんだけど...。



module M1
  def m
    p "M1#m"
    super
  end
end

module M2
  def m
    p "M2#m"
    super
  end
end

module M3
  def m
    p "M3#m"
    super
  end
end

module M4
  def m
    p "M4#m"
    super
  end
end


class C0
  def m
    p "C0#m"
  end
end

class C < C0
  def m
    p "C#m"
    super
  end

  include M1
  include M2
end

o = C.new

class << o
  def m
    p "singleton#m"
    super
  end
end

o.extend M3
o.extend M4
o.m

class << o
  p ancestors
end
"singleton#m"
"M4#m"
"M3#m"
"C#m"
"M2#m"
"M1#m"
"C0#m"
[M4, M3, C, M2, M1, C0, Object, Kernel]

extend したときのメソッド探索順を取り出すには特異クラスの ancestos を取ればいい、ということを卜部君に教えてもらった。


Binary Hacks を参考に、Ruby レベルで C のネイティブスレッドを出せるようにした。

./miniruby -I../trunk/lib ../trunk/test.rb
0x80d62d6:
  nsdr
  ../trunk/yarvcore.c:842
0x80d3751:
  call_cfunc
  ../trunk/call_cfunc.h:27
0x80d2b53:
  th_eval
  ../trunk/insns.def:2144
0x80d3353:
  th_eval_body
  ../trunk/vm.c:1527
0x80d5807:
  yarv_th_eval
  ../trunk/yarvcore.c:464
0x80d514a:
  yarvcore_eval_iseq
  ../trunk/yarvcore.c:176
0x80592d1:
  ruby_exec_internal
  ../trunk/eval.c:233
0x80592f6:
  ruby_exec
  ../trunk/eval.c:247
0x8059340:
  ruby_run
  ../trunk/eval.c:268
0x8056710:
  th_get_ruby_level_cfp
  ../trunk/eval_intern.h:301
0x4009b974:
  ??
  ??:0
0x8056631:
  _start
  ../sysdeps/i386/elf/start.S:105

こんな出力が出来るようになった。

NSDR().each{|e|
  if /(.+?)(\(.+\)|) \[(.+)\]/ =~ e
    cmd = "addr2line -e #{$1} -f #{$3}"
    puts "#{$3}:"
    puts `#{cmd}`.lines.map{|e| '  ' + e}
  else
    raise e
  end
}

addr2line を ruby レベルでやっているので、segv 時の出力としては利用は難しいか。アドレスだけ出せばいいんかな。


某で日本語がダメダメであるという指摘を受けた。まったくそのとおりかと思います。すみません。すみません。粉骨砕身の決意で直したいと思います。


うーん、首が。


首が回っていないうちの1つが、なんとRubyプログラムを作る(Rubyを作る、じゃなくて)なので、気分転換にそっちをやる。しかし、Ruby プログラムを作ると、性能とかバグとかやばそうなところを考えてしまってダメダメだ。


POK: Plain old Koichi


文章力が超落ちているような気がする。

ということで、「頭がいい」と思わせる文章術 仕事で結果を出す“稼ぐ書き方”を買ってきた。

_7(Tue)

なんで彼等は VCS 選びであんなに盛り上がれるんだ。


cygwin で一生懸命 find を実行しようとしていたら

$ find . -name CVS
FIND: パラメータの書式が違います

と出て動かない。やっぱり俺には find は使いこなせないのかと思っていたら、Windows の find を呼んでいた罠。


なんか、安請け合いして書かなきゃいけないものが溜まり溜まっている。

  • 仕事のアレ
  • 仕事のそれ
  • YARV 1.9 のマージ作業
  • るびま:YARV Maniacs
  • るびま:BinaryHacks 書評
  • るびま:インタビュー
  • るびま:進捗管理
  • 某原稿
  • 読書会の面倒

で、そんな中 Binary Hacks が。ヤバイよ、面白いよ読んじゃうよこれは。封印したい。

というか、なんで俺に書かせて(ry

ありがとうございました m(__)m


あんまりバイナリって感じじゃない気がするなぁ。


というかお仕事が全然進まないんですが...。すみませんすみませんすみません。

_ikegami(Tue Nov 07 15:06:21 JST 2006)

 GTD(Get Things Done)流に、仕事の一部を delegate (委譲)するのもいいかも。http://air.geo.tsukuba.ac.jp/~eddie/2005/05/26/58.html

_nishio(Wed Nov 08 00:24:14 JST 2006)

 仕事の一部をdele..te(記憶から)

_ささだ(Wed Nov 08 02:11:42 JST 2006)

 それだ。

_おにぎり(Wed Nov 08 02:38:09 JST 2006)

 VCSってVIとEmacsの戦争みたいだろ。実は人の好みは説明のしようがない^_^

_6(Mon)

右左のわからない俺。

というか、なんでみんな右左をぱっとわかるんだ? 東西南北ならさっとでてくるんだが。


笹田先生と書かれて寒気が...。


コンビニでなんか買って、電気街口の広場でダラダラする、ってのはやっぱりダメだよな...。

_とおる。(Mon Nov 06 16:12:58 JST 2006)

 ぼくも右左がわからないです。たしか森毅さんも、エッセイで東西南北のほうがわかりやすいって書いてました。京都の人だから。

_shiro(Mon Nov 06 16:49:53 JST 2006)

 私もわからん。考えないと出てこない。東西南北、及び上手(かみて)下手(しもて)はさっと出てくる。思うに、頭の中の座標軸が、場所固定の人と自分固定の人とがいるんではなかろうか。

_ken2uch(Mon Nov 06 19:36:36 JST 2006)

 「知らないところでは、東西南北がわからん」といことがあります。

_nishio(Tue Nov 07 04:10:48 JST 2006)

 神戸は山のある方が北ですし、大阪は東西が「通り」で南北が「筋」なので、どちらでも東西南北の方がわかりやすいので、そういうところで育った人は東西南北がわかりやすいんじゃないでしょうか。東京はどっちがどっちかさっぱりわかりません。ずっと秋葉原の街は東西方向に伸びていると思ってました。

_ささだ(Tue Nov 07 08:58:25 JST 2006)

 場所を住所で言い合うような場所には住んだ事はないんですよね。札幌の人が場所を聞いたら住所を聞き返してきたときにはとてもびびった。

_えむふる(Tue Nov 07 11:36:09 JST 2006)

 神戸は上下左右で地図の説明をされる方が多い気がします

_shiro(Tue Nov 07 15:12:47 JST 2006)

 ああ、ローカルな説明なら、mauka(山側)/makai(海側) とか windward(風上側)/leeward(風下側) とか使います。ホノルル近辺ではDiamond head side/Ewa sideのように特定のランドマークも。

_5(Sun)

なんか、とても疲れた。


議論が飛び交ってる中で、一人内職しようとしていたら、全然集中できなくてダメダメだった。ああいう場で集中して一人ドキュメントを書いていた shiro さんはやっぱりスゲエ。


http://pc8.2ch.net/test/read.cgi/tech/1159315598/592

というわけで、すみません、日本語ボロボロでした。

module M
  def m
    p "M#m"
  end
end

class C1
  include M
  def m
    p "C1#m"
  end
end

class C2 < C1
  include M
end

C2.new.m

従来は C2.ancestors は [C2, C1, M, Object, Kernel] になるので、C1#m が呼ばれます。

しかし、今回の変更で [C2, M, C1, M, Object, Kernel, BasicObject] となったので、M#m が呼ばれるようになります。

というわけで、C2 が M を include したという影響は後者のほうが大きいということになります。

いや、なんかわかりづらいなあと思ってたんだけど、適当な日本語が思いつかなかった。


さて、なんでこの件について考えているかと言うと、YARV では include される Module は1つである、という前提のもとで書かれたコードがあるから。具体的には super の処理。

C2#m のメソッド表現には、自分は C2 のメソッドであり、C2 の super は M を探せばよいかわかる。しかし、M#m は super したとき、どこを探しに行けばよいか実行時にしかわからない。なので困ってしまう。

そこで M#m で super が行われたとき、YARV は、receiver の klass の ancestors を検索して、M を探して、その上からメソッド検索を行っていくようになっている。

なので、ancestors が [..., M, C1, ..., M, ...] とあって、M#m が super を呼ぶような処理の場合、2度目の M#m を実行しているとき、最初の M の次の C1 へメソッド探索順序を戻してしまうため、無限ループになってしまう。


で、RSS に


class C0
  def initialize
    p "C0#initialize"
  end
end

module M
  def initialize
    p "M#initialize"
    super
  end
end

class C1 < C0
  include M
  def initialize
    p "C1#initialize"
    super
  end
end

class C2 < C1
  include M
  def initialize
    p "C2#initialize"
    super
  end
end

C2.new

#=> 1.9 最新版では以下のようになる
"C2#initialize"
"M#initialize"
"C1#initialize"
"M#initialize"
"C0#initialize"

#=> 従来はこうなる
"C2#initialize"
"C1#initialize"
"M#initialize"
"C0#initialize"

こんなコードがあって、YARV では動かないわけです。

Ruby 以外に module 機能のようなものがある言語ってあったっけ? で、それではこの問題はどう解決しているんだろう? そもそも module のメソッドに super なんてするなよ、ということかもしれないんだが。


自分の経験が、OSS 関係などの(開発に関わらず)比較的緩いものしか無いので、どうにも経験不足が身にしみる。


理想的には

"C2#initialize"
"M#initialize"
"C1#initialize"
"C0#initialize"

こうなるべき、なんだろうか?


なんか ruby-dev が盛り上がってるな。

_shiro(Sun Nov 05 03:52:41 JST 2006)

 linearizationしないの? > ancestors

_ささだ(Sun Nov 05 13:39:43 JST 2006)

 linearization という言葉を理解できているか自信がないのですが、従来はそうしていた、ということで、そうじゃなくなって「ぎゃっ」と言っている次第です。

_shiro(Sun Nov 05 20:16:02 JST 2006)

 ああ、Ruby本体の仕様変更ということなんですね。

_ささだ(Sun Nov 05 21:39:14 JST 2006)

 はい。すみません、言葉足らずでした。

_よしき(Mon Nov 06 04:29:55 JST 2006)

 自分で試したわけではありませんが、http://strongtalk.org/downloads/mixins-paper.psの6.3辺りを見ると、superclassも"invocation"ごとに違うみたいなのできっと複数あっても大丈夫なのでしょうか。(Related WorkのところにRubyも含めていろいろな言語が載っています)

_ささだ(Mon Nov 06 08:26:34 JST 2006)

 複数あっても大丈夫というのはわかるのですが、複数あっていいのか、というのが知りたいんですよね。いいのかなぁ。

_4(Sat)

s = 'foo'
t = "#{s}"

こんなコードで、s と t の実体が同じになるというバグがずーーっとあったらしい。ううむ、こんなところでひっかかるとは。こんなテスト書かないしなぁ。

mkmf.rb が String#dup の代わりに使っていた。一文字多いんだけどなあ。


YARVソースコード勉強会 (2)

たんたんと読んでいって素晴らしい。コメントとかデバッグメッセージを全然メンテナンスしていないので、微妙に違う感じがするな...。


ruby-core にも投げた。

dblack に英語を添削してもらったんだが、merge Ruby with YARV でもいいが、merge YARV into Ruby のほうがいいだろう、と教えてもらった。今度から気をつけよう。


さて、RubyKaigiのミーティング。なんかまた背負いすぎのような気がする。


なんか終わった後長時間ダラダラと。

_3(Fri)

参ったなぁ。なんとなく、まったりと読書会をやるつもりだったのに、なんか大変になってきている。


Symbol 周りが遅くなったので YARV でのコンパイルがとても遅くなっているような気がするなあ。作り直さないといけないかも。

_まつもと(Sat Nov 04 09:34:15 JST 2006)

 あまり速度は変わらないと思ってたんだけど(生成以外)。ちゃんとプロファイルとってないんで、遅そうな点があったら直します。

_2(Thu)

しかし、ただの読書会なのに、なんでこんな...。きっと moriq さんとかのサイン目当てに違いない。


差分でかすぎ。


オブジェクトの広場、千葉先生だ。

_1(Wed)

決めた。


職業病なのか、青木さんに洗脳されたからか、揃っていない空白とか、空白なしのツメツメの文章とかが気になってしまってしょうがない。


Google maps、「サンノゼ」で検索できた。


Rubyの本読書会ですが、目的はいくつかあって、

  • Ruby newbe がどこで躓くか調査
  • Ruby newbe にどういう説明が効果的か調査
  • Ruby 新人発掘(コミュニティ活動に参加してくれそうな人)
  • Ruby 人脈作り
  • 読書会のやり方の勉強

などになります。とりあえず、Ruby の C のソースコードの話はしません。し、しないんだからね!


まぁ、要するに慈善事業をしたいわけではないということです。こちらも下心があるので、気兼ねなくご利用ください。


てゆーか、知ってる人ばかりになりそうなんですけど orz ううむ。また偏っちゃうのかなあ。


ものすごい勢いで注釈をつけている件。


亀SVN 1.4 を入れたらコマンドラインのsvn 1.3では動かなくなってしまった件について。

_maeda(Thu Nov 02 00:55:17 JST 2006)

 もしかして: newbie

_ささだ(Thu Nov 02 01:09:04 JST 2006)

 ウワーン。

_青木(Thu Nov 02 05:54:53 JST 2006)

 あ、もしかしてインタビューいじってた? > 注釈

_むらまさ(Thu Nov 02 08:17:23 JST 2006)

 svn 1.4からワーキングコピーの仕様が変わってます。ワーキングコピーは自動的に変換されてしまうそうです。http://subversion.tigris.org/svn_1.4_releasenotes.html

_ささだ(Thu Nov 02 09:09:59 JST 2006)

 まだ見てもいない>いんたびゅ 多分そうなんだと思いました>仕様変更 問題なのは、サーバがとても重くて svn 1.4 がなかなか落とせなかったということなんですね。

_みずしま(Thu Nov 02 14:06:59 JST 2006)

 微妙に関係無いですけど、亀SVNって何のことかと思ってたら、Tortoise SVNのことだったんですね。英辞郎で検索して初めて知りました。

_ささだ(Thu Nov 02 15:04:23 JST 2006)

 スペル書けないんだもん。

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