丁稚な日々

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

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

Jun.21,2008 (Sat)

Revision: 1.2 (Jun.22,2008 01:39)

[Ruby会議2008] 1日目

_ なんかいっぱいデバッグしたよ!

_ ってそれってRuby会議なのかみたいな。
いやIRCも頑張ったよ!(それも違うんじゃないか)

_ そういえば前にRuby会議で仕事をするとか言ってたけど、その仕事はボツになりました。
実はMatzの基調講演の時にサブ会場(多目的ホール)で中継を見てる人たちの前でリアルタイムツッコミをやるのはどうか、という話があったという。

_ で、それがボツになったかわりかなんか知らないけど、明日(2日目)の最初のセッションの司会をやることになりました。
朝早いけどみんな来てね!
# 今頃書いても遅いよ

Jun.22,2008 (Sun)

Revision: 1.1 (Jun.22,2008 10:21)

Jun.23,2008 (Mon)

Revision: 1.5 (Jun.25,2008 20:35)

[Ruby会議2008] 落ち穂拾い(1)

_ Web上での感想とかを軽く見て回ったところ、多目的ホールのいわゆる「開発者席」についてちょっと話があったのでその辺のことを書いておきます。

_ まず、「開発者席」なんてものはありません(いきなり結論)。
0日目は開始前にデザインミーティングをやるという話があったのでみんな集まっていたのですが、まあその後動くのが面倒な人たちがそのままずるずると座っていただけなので他意はありません。
1日目と2日目については、メインホールで電源を確保するのがめんどいのと飲み食いできないのがつらいのが判明したので多目的ホールのほうに常駐したわけですが、その際に知り合い同士が固まりやすかっただけでそれ以上でも以下でもありません。

_ というわけで、むしろ俺らがKYなだけで誰でも空いてる席には好きに座っていいんですよもちろん!

_ さて、そんな感じでだらだらと何時間も席を占領して何をやっていたかというと、人によって違うわけではあるのですが、私の場合は、

0日目
1.9.0-2、1.8.5-pXXX、1.8.6-pXXX、1.8.7-pXXのリリースが予定されていたので(実際リリースされましたが)、ひたすらビルドおよび添付テストの実行を繰り返していた。
ちょっと前に「make testすらしてないのかよ」というご批判があったりしたので、「使う奴がやれよ」とか愚痴りながらもまあ頑張っていたわけです。
なお1.9.0-2に関してはどうせsnapshotなのでというわけで時間的都合からほとんどノーチェックでしたが、1.8系は真面目にやったつもり。
1日目
ruby-coreで報告された3件の問題をデバッグ。
2件は解決しましたが、1件はどーしても俺の環境でMinGW版のビルドができなかったのでギブアップ。mswin32だと再現しないし。
あと、うーたん萌えを流行らせるために席に落ちていた簡易ホワイトボードにうーたんを描いておいたりしました。
うーたんを知らない奴はぐぐれ。
2日目
前の晩寝られなかったので基本的には死に体。
cygwinでmake testに失敗する件についてデバッグもしていたんだけど、cygwinは難しくてよくわかんないよ。

という感じでした。

_ あと、多目的ホールといえば、かんさんに何度も何度もペットボトルのゴミを潰していただいたのがなんか恐縮でした。
よく考えたら自分で潰して持っていけばよかったのか...

[Ruby会議2008] 落ち穂拾い(2)

_ 0日目の前夜祭でいきなり一升瓶を持ち込むなかださん。
まあそれは想定内だし、なかださんの車を俺が宿まで運転するのも予定のうちだったのですが、軽自動車を運転するのは実は初めてなので意外なほどとまどいました。
難しいな軽自動車。

_ 1日目はなかださんの車は宿の駐車場に置きっぱなしだったのですが(会場まで徒歩数分なので)、2日目はチェックアウトしてるので当然車を移動しないといけません。

_ 俺「今朝は俺は運転しなくていいよね、当然」
なかだ「あ、部屋出る前に残ってた日本酒空けてきた」

_ それは想定外でした。さすがです!

[Ruby会議2008] 落ち穂拾い(3)

_ 会場や懇親会などで何人かの方々に「お前は何か発表しないのか」と言われたんだけど、発表したいネタが別にないんですよねえ。
たぶん、私にとってのrubyってのは単なる生活の一部になっちゃってるので、わざわざ大勢の人たちに語るようなことがないというか。
自分が毎朝トーストをどうやって焼いてるかをわざわざ聴衆の前で発表しようとか、誰も思い立たないでしょ?

_ (2008-06-24 21:09追記)
そんなウリィィィィッ!な意図はそんなになくて(少しはあった)、毎日いじってる当たり前のものだから、いちいち話すもんでもないよなあというその程度の意味で。

_ で、実は朝はあんまり食べないからそんなにトースト焼かないんだけど(ぉぃ、焼いてからなんかつけるんじゃなくて、マーガリンを塗ってから焼くのが好きだよ!
融けたマーガリンがトーストにしみこんで、匂いを味わいながら食べるのがいいんだよねえ。
なお、本当はマーガリンよりバターがいいんだけど、焼く前に塗るにはバターだと固すぎて大変なので、マーガリンで妥協っす。

_ とか、いざ語ってみると、トーストの焼き方もなんか既に俺普通じゃないのかもしれんな...

_ なお気分がいいときはさらにチーズとサラミを載せるよ!
チーズは「とろけるチーズ」じゃなくて、普通のスライスチーズを敢えて使ってとろけさせるのがいいです、はい。

[Ruby会議2008] 落ち穂拾い(4)

_ デバッグといえばwinsockの件。
手元では--with-winsock2の有無ではdrbの挙動に変化はなかったよ!

Jun.24,2008 (Tue)

Revision: 1.4 (Jun.24,2008 18:03)

hack

_ 先日のmake testが通らなかったので、直してみました。
ついでにブロック引数つきメソッドを呼び出せなかったのを修正。

Index: parse.y
===================================================================
--- parse.y	(revision 17554)
+++ parse.y	(working copy)
@@ -696,6 +696,7 @@ static void ripper_compile_error(struct 
 %token tCOLON2		/* :: */
 %token tCOLON3		/* :: at EXPR_BEG */
 %token <id> tOP_ASGN	/* +=, -=  etc. */
+%token tOP_ASGN2	/* .= */
 %token tASSOC		/* => */
 %token tLPAREN		/* ( */
 %token tLPAREN_ARG	/* ( */
@@ -720,7 +721,7 @@ static void ripper_compile_error(struct 
 %left  keyword_or keyword_and
 %right keyword_not
 %nonassoc keyword_defined
-%right '=' tOP_ASGN
+%right '=' tOP_ASGN tOP_ASGN2
 %left modifier_rescue
 %right '?' ':'
 %nonassoc tDOT2 tDOT3
@@ -1297,6 +1298,17 @@ command		: operation command_args       
 			$$ = method_add_block($$, $5);
 		    %*/
 		   }
+		| variable tOP_ASGN2 operation2 command_args cmd_brace_block
+		    {
+		    /*%%%*/
+			block_dup_check($4,$5);
+		        $5->nd_iter = NEW_CALL(gettable($1), $3, $4);
+			$$ = assignable($1, $5);
+		    /*%
+			$$ = dispatch4(command_call, $1, ripper_id2sym('.'), $3, $4);
+			$$ = method_add_block($$, $5);
+		    %*/
+		    }
 		| primary_value tCOLON2 operation2 command_args	%prec tLOWEST
 		    {
 		    /*%%%*/
@@ -3366,6 +3378,15 @@ method_call	: operation paren_args
 			$$ = method_optarg($$, $4);
 		    %*/
 		    }
+		| variable tOP_ASGN2 operation2 opt_paren_args
+		    {
+		    /*%%%*/
+			$$ = assignable($1, NEW_CALL(gettable($1), $3, $4));
+		    /*%
+			$$ = dispatch3(call, $1, ripper_id2sym('.'), $3);
+			$$ = method_optarg($$, $4);
+		    %*/
+		    }
 		| primary_value tCOLON2 operation3
 		    {
 		    /*%%%*/
@@ -6492,6 +6513,16 @@ parser_yylex(struct parser_params *parse
 	    pushback(c);
 	    return tDOT2;
 	}
+	else if (c == '=') {
+	    if ((c = nextc()) == '=' || c == '~') {
+		pushback(c);
+		c = '=';
+	    }
+	    else {
+		pushback(c);
+		return tOP_ASGN2;
+	    }
+	}
 	pushback(c);
 	if (ISDIGIT(c)) {
 	    yyerror("no .<digit> floating literal anymore; put 0 before dot");

def obj.==とかdef obj.=~とかと衝突するのを無理やり回避してるのがかっこ悪い。
lex_stateでなんとかできないもんかと思うんだけど...

[Ruby会議2008] 落ち穂拾い(5)

_ どうもRubyistはMac使うとかいう誤解(そう、断言するが誤解だ)があるみたいですな。
0日目開始前のRubyデザインミーティング(まあ、ろくにミーティングなんかしなかったけど)に集まった日本人committerのマシンは、全部非Macでしたよ。
もちろんそこにいたのは、matz、ko1、nokada、eban、...といったメンバーですよ!

_ でも、隣の英語席は全部Macだったのには笑いました。

_ つーわけで、wannabieな連中がMacに飛びついてる傾向が強いだけなんじゃねーの? と思います。
いや俺もMacほしい(つーかppc G3なiBook持ってる)んだけどね。


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