Hatena::ブログ(Diary)

Higé au lait Twitter

 | 

2007年12月28日

配列足し算いろいろ

普通に for

Array.prototype.sum_for = function() {
    var r = 0;
    for(var i = 0, l = this.length; i < l; i++) {
        r += this[i];
    }   
    return r;
}

while pop

Array.prototype.sum_while = function() {
    var r = 0;
    var f;
    while(f = this.pop()) {
        r += f;
    }
    return r;
}

join eval

Array.prototype.sum_eval = function() {
    return eval(this.join('+'));
}

pop 再帰

Array.prototype.sum_ref = function() {
    if(this.length == 1) return this[0];
    return this.pop() + arguments.callee.apply(this);
}

普通に for が一番速いです。

2007年12月24日

del.icio.us の links for がうざいので消去するよ @ livedoor Reader

blog のフィードに del.icio.us にブックマークしたものをまぜて配信する人がいるけど鬱陶しいので消去してみるよ。


// ==UserScript==
// @name      ldr filter feed from del.icio.us
// @namespace http://opera.higeorange.com/
// @include   http://reader.livedoor.com/reader/*
// ==/UserScript==

(function(w) {
    w.register_hook("AFTER_PRINTFEED", function(feed) {
        var ngword = /^links\sfor/i;
        feed.items.forEach(function(item) {
            if(ngword.test(item.title)) {
                (function(id) {
                    var self = arguments.callee;
                    try {
                        w.close_item(id);
                    } catch (e) {
                        setTimeout(function() { self(id) }, 500);
                    }
                })(item.id);
            }
        });
    });
})(this.unsafeWindow || window);

タイトルが links for … で始まるエントリを表示しないようにしてる。..と思う。


参考

livedoor Reader で特定のサイトや記事の本文を非表示にする - (new Hatena).blog()

2007年12月04日

"del.icio.usのポストページを俺仕様にするユーザスクリプト" の別アプローチ

no title の別アプローチ


tabindex を使ってみる。

tab を押したときのフォーカス順を tags -> notes -> save にしただけ。

// ==UserScript==
// @name      delicious Post Costomize
// @namespace http://opera.higeorange.com/
// @inlcude   http://del.icio.us/*?*url=*
// ==/UserScript==

(function() {
    var notes = document.getElementById('notes');
    var tags = document.getElementById('tags');
    var save = document.evaluate(
        '//input[@type="submit"]',
        document,
        null,
        XPathResult.FIRST_ORDERED_NODE_TYPE,
        null).singleNodeValue;
    if(notes && tags && save) {
        notes.setAttribute('tabindex', "2");
        tags.setAttribute('tabindex', "1");
        save.setAttribute('tabindex', "3");
        tags.focus();
    }
})();

あと、元のスクリプトで Opera で使おうとした場合 タグサジェストが大変なことになる。 del.icio.us 本体の グローバル変数 tags を$x で取得した input 要素で上書きしてしまうため。


Greasemonkey だとその辺は大丈夫なんだろうか…。要調査。

unsafeWindow を通さないと グローバルな変数をいじれないからか…。

 |