LiveCoding #6 の 22009年07月19日 23時40分

OSC Kansai に出た帰りに satzz 君に電話したら、ちょうど LiveCoding #6 をやっているとのことだったのでその足で寄ってきました。前回も第 6 回だった気がするのは何かの間違いでしょうか。

LiveCoding とはプログラミングの実演と実況を楽しみましょうというイベントで、出てくる言語も C から PHP まで色とりどり。まともとは思えないテクニックも多々披露されたわけですが、中でも驚愕だったのが ujihisa さんが書いた Ruby のコード、

def fib n, x = (n < 2) ? n : fib(n - 1) + fib(n - 2)
  x
end

fib 10 # => 55

Ruby ではデフォルト引数内で再帰呼び出しができるだなんてちっとも知りませんでした。

飛び入り LiveCoder も大歓迎といわれ、その特典である参加費 (お寿司 + カレー代 + etc.) キャッシュバックを目当てに手を挙げたのですが、ネタが思い浮かばず、bit.ly API の存在を教えてもらって「Web ページ閲覧中にリンク先が bit.ly 経由で何回クリックされたかを表示する Greasemonkey スクリプト」を作ることにしました。

[図: リンク先へのクリック回数を表示する Greasemonkey スクリプト]

Greasemonkey スクリプトでは let を使えないのについ let と打ってしまって var と打ち直したり、Greasemonkey と bit.ly と wedata の API リファレンスを読みふけったり、E4X で構築した要素を手っ取り早く使うために innerHTML を使おうと思ったら、そもそも要素を作成する必要がないことがわかって単なるテキストを innerHTML に代入する羽目になったり、それならとテキストノードを直接生成するように書き換えたりしているうちに制限時間 20 分はあっという間に過ぎ、45 分かけてどうにか動くものができるという有様。動くのは LDRize 対応サイトのみ、利用するには Firefox 3.5 以上と bit.ly のアカウントが必要です。

その場で cho45 が「こういうときは JSDeferred を使えば」とプッシュしていた気がするので、後日 JSDeferred を使って書き直してみました。JSDeferred をうまいこと使えているかは不明ですが。

ちなみに Greasemonkey スクリプトで let が使えないというのは、Components.utils.evalInSandbox で JavaScript のバージョンが指定できないという制限によるものです。この仕様は Firefox 3.5 で改善され、適切なバージョンを指定すればサンドボックス内でも letyield を使えるようになりましたが、Greasemonkey 側はまだ対応していません。

コーディングが終わった後はまったり過ごしていましたが、JSDeferred のロゴを作れば女子高生の間で JSDeferred が流行るんじゃないかという話になったため、実際に作ってみましたsecondlife さんに「何この 5 秒で描いたような」と dis られましたが、30 秒はかかっています。JSDeferred のトップページにもこのロゴを貼り付けたので、ナウなヤングにバカウケ間違い無しですね。

それと、Gist で Greasemonkey スクリプトを管理しようという話を聞きますが、皆さん具体的にどうやって管理しているんでしょうか? とりあえず Greasemonkey スクリプトを書いた後、gisty で投稿してそれを git remote で引っ張ってきてとやったのですが、これでいいのかよくわかりません (環境は Cygwin + Meadow)。

$ cd FIREFOX_PROFILE_DIR
$ cd gm_scripts/bitly_referred/
$ ls
bitly_referred.user.js
$ gisty post bitly_referred.user.js
Initialized empty Git repository in GISTY_DIR/149553/.git/
$ git init
$ git remote add origin git@gist.github.com:149553.git
$ git pull origin master
$ cat > .gitignore
*
!*.user.js
$ meadoww bitly_referred.user.js
$ git add .
$ git commit -m "Rewrite with JSDeferred"
$ git push

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
「ハイパーテキストマークアップ言語」をアルファベット4文字でいうと?

コメント:

トラックバック

このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2009/07/19/4445872/tb

_ newbie on xxx(ajax,ruby,javascript,html and more...) - 2009年07月22日 23時08分

フィボナッチ数列の例が載っていたので、僕は簡単な数字の合計(1からnまでを合計)をやってみました(チキン。 普通に書くとこんな感じ