丁稚な日々

Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...

[直前] [最新] [直後] [Top]

Feb.21,2007 (Wed)

Revision: 1.10 (Feb.21,2007 03:58)

[あなごる] tak

_ っていうか、ほとんどの言語はズルしないと答えが時間内に出せないかスタックが足りないかだよ!

_ 偶然なのかどうか、Matzにっきから竹内先生のスライドの存在を知る。
スライド11を見て、自分のコードがズルではなく正当な式変形(?)だったことを発見。
... ごめんなさい、嘘です、ズルを紛れ込ませて1B削ってます。

Feb.22,2007 (Thu)

Revision: 1.3 (Feb.22,2007 03:07)

Feb.24,2007 (Sat)

Revision: 1.2 (Feb.24,2007 13:34)

合宿

_ というわけで、一昨日から合宿してるわけなんだけど、全然同じ宿に泊まってないのでそもそも合宿の定義に反しているという説もある。

_ 一昨日は基本的には動かしたのは口だけ。
ささださんとこ青木さんとこにそれぞれまとまってる通り。
要するにtrunkにここ最近入った驚くような変更は2.0に回される、と。
では、1.8に比べて1.9には何が入るかというと、大きいのはYARVとm17n、ということになる。
Dir.globはなんか二人のところで書いてあることが微妙に違う気がするけど、取ってくるencodingを指定できるようにするみたいな話だったと思う。

_ 昨日は結構真面目にhack。
1.8のVS8SP1対応は予定通り(ってYARVに関係ない)。
本命はtrunkでのwin32/win32.cとthread_win32.ciにある同じような関数を統合したり要らなくなってるものを消したりという作業... だったのだけど、その過程でtrunkはおろか1.8にも問題があるシチュエーションがあることが判明し、慌てて直すはめに。
夜に、キーワード引数について議論というかなんというか。
これも青木さんとこに書いてあるとおりなんだけど、多重代入を自然(?)に拡張することによってあっさり実現できてしまうんじゃなかんべ、という方向に。
superの引数を*と書けるようにする話は、super(*)はsuper starと読んでください。
カニクリームコロッケはそういえば食ってない。
pで始まるfriendっぽい単語でpoisonというアイデアも出ていた。友達だと信用していると毒を盛られるらしい。つーか酔ってるだけだろ、それ。

_ 今日は午前中は1.8のシグナル周り。
って、なんでこんなに1.8ばかり見てるんだ、俺。

Feb.25,2007 (Sun)

Revision: 1.1 (Feb.25,2007 14:04)

合宿

_ 昨日の午後はうちの子が遊びに来たのでつい遊んでしまった。
いちおう最終日ということでまとめとか。
そういやソースツリーをちょっとは整理しようぜ、ということで、includeとencodingくらいは掘るか、という話にまとまる。
その後、玉造温泉でサウナを堪能。

_ 今日もいちおうちょっとだけ。
ゴルフサポートとキーワード引数について考える。

Feb.26,2007 (Mon)

Revision: 1.5 (Feb.26,2007 18:05)

合宿

_ 昨日で終わって帰ってきてるんだけど、口を動かして手を動かしてない分のまとめなどを。
記憶違いはあるかもしれない。

_ まず、既に出ているように、今回はRuby 1.9とは何なのか、についてが検討された。
基本的な方針としては、数ヶ月前の1.9の仕様+YARV+m17n。
1.8とは80%〜90%の互換性を保つ。この条件の範囲で可能ならばキーワード引数も。
なお、最近のドラスティックな言語仕様変更については既にrevertされている。

_ m17nに関しては、ベースは懐かしのm17nブランチで実験されたものがそのまま使えるはず。
鬼車とのすり合わせに関してはまだまだ検討しなければならない。鬼車の勉強が必要(私が)。
今のRuby内の鬼車は4.xだけど、5.xにしたいという話もあった。
StringIOがエンコーディングを属性として持つであろうことはほぼ確定。
システムコールから来る文字列に関しては、原則としてエンコーディングはバイナリと考えるが、よくわかっている個別のものに関しては環境変数LANGなり$KCODE(という名前のままかどうかはわからないが)なりに影響されることになる。
IOについては、オープン時などの生成時にエンコーディングが設定される。
IO.openなんかはエンコーディングを指定する引数がどっかに入る。例えばUTF-8の場合、mode引数が"ru"になるとか"r:utf-8"になるとかキーワード引数使ってencoding:"utf-8"とか。

_ キーワード引数については、多重代入の自然な(?)拡張として実現できるのではないかという方向。
これはつまりkey1:val1, key2:val2 = {:key1 => 123, :key2 => 456} と書けるようになるということ。
なお、キー名と変数名が同一の場合(たぶんそうすることが多いだろう)は2回書くのは無駄なので、受け側に関してはkey1:とだけ書けばいいという構文糖がおそらく用意される。
でも(しばらくは導入されないであろう):=とかぶりそうなので、左辺値としてシンボルリテラル(:key1)が現れたときはkey1:key1とみなすということでいいんじゃないかと提案してみたが、これはこれで受けが悪かった。

_ 可視性についても(私がいない時に)検討がされたりしたらしいが、1.9では変更されないと思われるのでとりあえず当面は考えなくていいと思う。

_ 総括。

  • Wiiが持ち込まれなかったのは正解であった。
    あったらたぶんあれだけのcommitがなされることはなく、今頃みんな肘を痛めている。
  • というわけで、commit件数からもわかるとおり、生産性の高い合宿だった。
    やはりネット越しよりも顔をつき合わせて作業する方が効率は上がる。
  • しかし、手を動かしてコードを書いた部分よりも、むしろ広範に仕様について検討できたことがよかった。
  • ペアプロしてみればよかった。
  • trunkを検討するとなぜか1.8のバグが見つかる。
  • 毎日、今日は何をやるかというのを朝礼(?)で決めておいたほうがいい。
  • パッチなどのやり取りがけっこう発生するので、サーバみたいなものがあるといい。
  • ホテルにネットがないと困る。そのほうが夜寝られていいんじゃないかと思ったりもするのだが、ネットがなくてもやっぱり夜更かしする人がいるのでそうでもないようだ。
  • 集合予定時刻に現れずに、その時刻に自宅からcommitしてる人がいる謎。
  • m17nをUnicodeと言ってしまうのは誤解するのでやめよう。
  • ゴマはすりすぎるな。ピザは人数分に分けろ。

_ おまけ。ゴルフサポートについて。
メソッド名を短縮形でアクセスできる機能があるといいのではないかという発想から、メソッド名は自動的にabbrev検索するというアイデアが出たのだが、別に一意に定まるところまで書かなくても、それより短い名前だったらアルファベット順で前に来るメソッドを実行すればいいじゃん、という画期的なアイデアが出る。
というわけで、ささださん謹製のg.rb(*1)

class Object
  def method_missing m, *a, &b
    t = (public_methods + private_methods).sort.find{|e| /^#{m}/ =~ e.to_s}
    t ? __send__(t, *a, &b) : super
  end
end

if $0 == __FILE__
  p o
  pr 'Hello World!'
end

なおputsputcというメソッドがあるので短くなりません。
これが標準添付になるかどうかはゴルファーの陳情次第(ほんとかよ)。
また、デフォルトでこれを組み込んだ処理系gorubyもRuby組み込みアプリケーションのサンプルとして添付するのはどうかという意見(と実装例)あり。

_ そういえば、昨日はまつもと家のみなさんにも会ったのだが、末娘ちゃんが我々の顔を見るなり「こわい〜」と言い出したり。怖いのは誰だ?
一昨日うちの子もなかださんとささださんを見て泣いていたので、たぶんそのあたりであろう(←それ、ただの人見知りです)。

付記

(*1) g.rb
18:00前に書いてあった奴は(私がいじったせいで)バグってました。

Feb.28,2007 (Wed)

Revision: 1.2 (Feb.28,2007 21:41)

[Web] 合宿ネタ

_ 鈍くて申し訳ないですが、今頃反応

_ 80%〜90%の件は、本当にそういう話だったかそもそも自信なかったり...
手元に検討に使ったホワイトボードのデジカメ画像があって、そこに「80%〜90%」って書いてあったので、そういう話だったかなー、とか勝手に思っただけです(ひどい)。
実は1.8から80%〜90%の速度低下はやむを得ない、という話だったりして。そんなわけないか。

_ 鬼車の件は、確かまつもとさんが現在の鬼車を触ってよりruby(のm17n)にとって都合のいいようにいじるという話で、それで本家から分岐するという話だったのですが、その後結局m17n進んでないのとご指摘のとおりのUnicode Propertyとかの話があって、それならまた本家を追っかけよう、ということのはずです。
鬼車の勉強については、今回のm17nの話で鬼車にまつわる部分は全然ついていけなかったので、鬼車のAPIをちゃんと理解せなあかんなあ、ということです。
木村さんはその辺は当然ばっちりなはず。私は鬼車のコードはほとんど見たことないのでかなり問題外です...(前に(?<)あたりのコードを読んだくらいか)

[Web] goruby

_ コマンド名は自分のコードの長さに関係ないからどうでもいいのだす。

_ each_with_indexといえば、_は特別扱いしてたとえばeach_with_indexならewiと書ければいいんじゃないかとかそういう話もありました。実装は作ってないけど。
他にも青木さんとこにいろいろ極悪なネタが出てるな。
ああ、そうそう、Kernel#hは当然必要だよね。これでHello, world!は1Bで最強確定。

[Rubyist Magazine] 0018

_ 出ました
今回はずいぶん遅れたねえ。そろそろマンパワー的に限界が近いのか?


被捕捉アンテナ類
[Ant] [Antenna-Julia] [Rabbit's Antenna] [Ruby hotlinks]