«前の日記(2007年11月02日) 最新 次の日記(2007年11月05日)» 編集

ema log


2007年11月03日 Kanasan.JS 行ってきた [長年日記]

_ [最近][Programming][JavaScript] Kanasan.JS(Prototype.js の Code Reading)に行ってきた

蛍池で開催された、Kanasan.JS という、Prototype.js の Code Reading に参加してきました。次回はカレーも食べたいと思います。

http://cotocoto.jp/event/2429

主催者の Kanasan さん、ujihisa さん、どうもありがとうございました。

Prototype.js 1.5.1.1 を読もうという総勢24名による Code Reading。Code Reading ってどうやるんだろうと思っていたら、

  • 各自、指定された「何行目から何行目」を読みましょう
  • わかんないこと、etc を発言してみんなで討論

という形式でした。PCで読んでる人がほとんどだったのですが、印刷、W-ZERO3、iPod Touch で読んでいる強者の方もおられました。机を八角形に並べて Reading。結果、400 / 3277 [行] まで読み進んだことに。8 回で終わるペース!

総じて、非常に勉強になりました。ついて行けない部分もありましたが、やっぱり、外にどんどん出て行かないと駄目ですね。初心者の方も大歓迎ということでした。ustream で中継されてた人のアドレス聞いておけばよかった…もっとコミュニケーションしないとな…

Java使い / Rubyist の人が多く、Mac Book と Think Pad だらけだったのが印象的。Twitter 大人気なんですねw。Twitter もっと使ってみようかな。

yhara さん しか面識のある方がいなかったのですが、問題なく楽しめました。そそのかされたので、HID モジュールを RubyForge に登録してみようかな・・

円座でプレゼン、二画面同期

プロジェクターがなかったということで、MacBook 二台でプレゼンが流れて、机の内側のスペースでみんなで座って聞くスタイル。斬新すぎた。二画面同期させようと Kanasan さんが頑張ってはったのですが、最終的には一台にw

自己紹介は用意

自己紹介ぐらいは用意していかないと駄目ですね。

4.., (4), 4\n.

こいつらが全部文法的に合法らしい。4.times がエラーになるのをどう回避するかという話。でも、(4) が一番素直で良いかな。

bind すげえ

やっぱり便利。

レキシカルスコープとダイナミックスコープ

yhara 先生による講義。こういうとき、JavaScript というか、ふつう大半の言語は 1 ですが、一部の LISP などだと 2 になるみたい。スタックをみるだけで良いから、実装系を作りやすいからとのこと。

K(a)(b) = a

K コンビネータらしい。「どう見ても I コンビネータ」とつぶやいていた yhara さんが印象的でした。コンビネータわかりません><

Unlambda さわってみたらいいのかな?

__proto__ vs prototype

後半、JavaScript 初心者グループと、非初心者グループに分かれていたのですが、l.22-24 のに対して

  • SpecificElementExtensions ってどういう意味があるの?
  • __proto__ って何?

という疑問を投げかけられて混乱する、自称中級者の面々。どうも、「わかんないところをスルーしないグループ」と「わかんないところはスルーグループ」に分かれていたようです。

軽くググってみたけどよくわからない。iPhone 対策で修正されてたりするみたい だから意味はあるみたいなんですけど。なんなんだろう。

0, undefined, null

えっと、JavaScript の変態的な(歴史的遺恨?)部分だと思います。以下、Firebug で確認したのですが、null - 1 == -1 なら、null == 0 になって欲しい気がするんだけどなぁ。オライリーの JavaScript になんか書いてたような?

scanは配列を返さない、unescapeHTML ねぇよ!、inject の乱用

yhara さんのレポートが詳しいです

コメントなくても簡単でしょ?

「ここは、コメントが欲しい」という箇所にすらコメントがない。どなたかの「コメントなくても簡単でしょ?」っていう発言に吹きました。

SpecificElementExtensions とか、unescapeHTML とか、gsub とかには必要だと思う。