LiveCoding #6 の 2 ― 2009年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 スクリプトでは 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 で改善され、適切なバージョンを指定すればサンドボックス内でも let
、yield
を使えるようになりましたが、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: http://nanto.asablo.jp/blog/2009/07/19/4445872/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。