Kanasan.JS第二回サイ本読書会のレポート

去る1月14日に、prototype.jsのコードリーディングとサイ本の読書会を交互に繰り返すKanasan.JSの第二回サイ本読書会に遊びにいってきました。

Lightning Talks

レポートは各所で挙がっているいますので割愛。スピーカ一覧です。

私もちらっとしゃべったのでその補足
  • JSにはinclude 'path/to/javascript'; や require 'path/to/javascript';がなくて困る。
  • なかったらつくればいいじゃない?
  • じゃあどうやって?
    • XMLHttpRequestでJSファイルを同期取得して
    • evalか(new Function())();するといいよ

というお話でした。new Functionを利用しているのはevalに比べて色々と安全だからです。以下のような処理を毎回行っています。

var foo = (new Function
(
   'function foo(){};' +
 // ~~~~~~~~~~~~~~~~~~ XMLHttpRequestで取得した中身
   'return foo;'
 // ^^^^^^^^^^^^ 自動生成
))();

気になった人は、JSmarty.Plugin.parseの実装見るといいかも知れません

資料公開

お昼休み

食事をとる前にチュッパチャップスを食べるとなかなか食べきれずに、お昼ごはんが食べられないのではないのか?という事態に。就業中の昼休み1時間でチュッパチャップスは危険だと痛感。最終的にはおにぎり2個という軽食だったので食べられることに。全て自分がアホなのが悪い。

午後の読書会

全体的に言って、id:amachang先生とnanto_vi先生の議論は圧巻でした。東西JS重鎮の議論はここでしか見られなかったかも。

主な内容は、

  • switch構文
  • 式と文の違い
  • for/inについて
  • ラベルについて
  • .は演算子?
  • プロトタイプベースのOOpの世界

という内容でした。

switch構文

以下のように出来るよというお話。

switch(true)
{
    case (foo == 'foo'):
        // ----
        break;
    case (bar == 'bar'):
        // ----
        break;
};
式と分の違い

別の機会で。

for/inについて

以下のような使い方もできるよねというお話。空文のループはどうやって書くとトラブルが起きないの?という議論。

i = 0;
a = [];
o = {a:'foo',b:'bar'};
for(a[i++] in o) /* 空文 */ ;
alert(a); // a, b 

昔こんな現象に遭遇したことがありました→Function#toString()とswitch構文 - Thousand Years

ラベルについて

二重ループやループの中にswitch文つけたときにラベルを付けておくとネストされたループやswitch文から親のループを操る時に便利ですという話。

i = 0;

mainloop:
while(true)
{
    i++;
    switch(true)
    {
       case (0 <= i && i <= 9):
         // --
         continue mainloop;
       case (i <= 10):
         // --
         break mainloop;
    };
};
.(ドット)は演算子

いちおう演算子でいいのではという結論…。

プロトタイプベースのOOpの世界

別の機会で言及したい。JavaScript以外でプロトタイプのOOpを採用しているのはselfだとか。

ネットワーク不調

Windows Visatを利用している方々がネットワークにつながらないよっていう事態に。たぶんうまい設定方法があるはず。要調査。

懇親会

Ajax・コメット。次に流行る技術の名前は「ソ○ランC」だ!以上。

ブログを書くまで読書会

Kanasan.JSの主催のkanasanの御言葉。というわけで僕の読書会は今日で終わりですy(^^)