家計簿、消費生活

このサイト
http://www.web-across.com/lifestyle/index.html
はけっこう昔に知って、ここで消費生活やってる人はどーやって選ぶんだろうって思ったことはあったけど、
こういうの
http://www.3zai.com/
は思いつかなかったけど今思えば全然アリですねっていうかそのころはまだSNSなんて言葉も知らなかったわけですが。

continuation

まえにJiftyのドキュメントを読んだときにContinuationsって言葉を見て「なにそれ?」って思ってたらどうやらそういう考え方があるらしい。
Jiftyではこういうことらしいのだが、

With Jifty, it's easy to let the user go off and do something else, like fill out a wizard, look something up in the help system or go twiddle their preferences and come right back to where they were.
Jifty - an application framework - metacpan.org

あまりよくわからないし。
で、ほっといてあったんだけどさっきなぜか急に思い出したんでここにメモしておいていつかちゃんとわかるようになるということで。
なんかいくつかのプログラミング言語の世界ではふつうに登場する言葉っぽいんですけどね。
とりあえずそんなに難しい印象は持たないでいよう。

    • -

Continuation - Wikipedia
continuation - Google 検索
はてなブックマーク - continuationに関するnitsujiのブックマーク

Ajax.Request使用時のコールバック順序

Ajax.Requestを使うとき(というか正確にはXMLHttpRequestを使うときかな)、リクエストの進捗報告のためにいくつかコールバックポイントがあるけど、これのコール順序がGETとPOSTで違ってはまった。しかもIEだけでFirefox(1.5.0.4)とOpera(8.54)は正常。OSはWindows XPで。
最終的には以下のようにアラートしまくってコールされる順序を調べてみました。

function init() {
    $('formid').onsubmit = function() {
        $('success').style.display = 'none';
        $('fail').style.display = 'none';
        var url = '/path/to/request/url';
        new Ajax.Request(
            url,
            {
                method: 'post',
                asynchronous: true,
                parameters: Form.serialize(this),
                onLoading: function() {
                    alert('loading');
                    $('indicator').style.display = 'block';
                },
                onLoaded: function() {
                    alert('loaded');
                },
                onInteractive: function() {
                    alert('interactive');
                },
                onComplete: showResult,
                onSuccess: function() {
                    alert('success');
                },
                onFailure: function() {
                    alert('failure');
                },
                onException: function() {
                    alert('exception');
                }
            }
        );
        return false;
    }
}

function showResult() {
}

<body onload="init()">

結果はこんな感じ。

GET : loading -> loaded -> interactive -> success -> complete
POST: 同上

GET : loading -> interactive -> success -> complete
POST: 同上

GET : loaded -> interactive -> success -> complete -> loading
POST: loading -> loaded -> interactive -> success -> complete

    • -

IEはキャッシュが効いてていきなりloadedになるのかとか考えてみたけどいまいち説得力がなく。
プログラム的にやり方が間違ってるのかとも考えてみたけどよくわからず。
まあ、POSTでちゃんと動くっぽいからとりあえずいいか。