2012-09-01から1ヶ月間の記事一覧

CoffeeScriptにおけるarguments.callee的な再帰の考察

題材として、以下のフィボナッチ数の計算関数を利用します。効率が悪いのはご愛嬌。 fib = (n) -> return 1 if n is 1 or n is 2 (fib n-1) + (fib n-2) alert fib 10 ここで「fib(10)の結果を取得したいが、これ以上fibを使わないため、出来ればfibを消すか…

Node.jsのモジュールシステムとオブジェクトの参照

Node.jsのrequireの動作についてのメモです。 requireの大原則 一番重要なのは「requireされたファイルはキャッシュされ、2度ロードされることはない。*1」ということです。 モジュールは初めて読み込まれたときにキャッシュされます。 すなわち(他のキャ…

CoffeeScriptにおけるdo while

CoffeeScriptではdo while相当が無いのかー、と少しがっかりしたのですが、代案がstackoverflow先生に書かれていたのでメモしておきます。ちなみに、普通に無限ループとbreakの組み合わせで、ごくごく当たり前なことなのですが、何故か思いつきませんでした…

process.nextTickとはなんぞ

公式マニュアルのprocessを眺めていたらprocess.nextTickというのが出てきました。なんだかとても大事らしいです。マニュアルによればコレは、 イベントループの次以降のループでコールバックを呼び出します。 これは setTimeout(fn, 0) の単純なエイリアス…

CoffeeScriptでUnderscore.jsと戯れる

CoffeeScriptとUnderscore.jsの組み合わせで関数型言語のようなリスト主体のプログラミングをすることができます。せっかくなので_.mixinで_オブジェクトを拡張してみます。 keysとvaluesからObjectを作成する_.pairs Underscore.jsには、Objectから(1)キー…

jQueryとKnockout.jsによるタブUIの実装テスト

最近、backbone.js(+underscore.js)とKnockout.jsの練習をしており、その一環で作成したものです。jsdo.itが貼れるかどうかのテストも兼ねてます。 MVVMなかなかいい 最初はdata-bindになかなか慣れなかったのですが、一度慣れてしまうとbackboneのめんどく…

_.bindAllについてのメモ

_.bindAllは、第一引数に指定したオブジェクトAがあった時、Aがもつ関数プロパティのthisをAにしてしまう関数です。 hoge = { val: "hoge", print: function() { console.log(this.val); }, set: function(v) { this.val = v; }, get: function() { return t…