Hatena::ブログ(Diary)

Higé au lait Twitter

 | 

2007年10月25日

3桁ごとに区切る

Number.prototype.split3 = function() {
    var r = ""; 
    var t = this.toString().split('.');
    var s = t[0].split("").reverse();
    var a = t[1];
    for(var i = 0; i < s.length; i++) {
        if(i % 3 == 0 && i != 0 && s[i] != "-") {
            r = s[i] + "," + r 
        } else {
            r = s[i] + r;
        }
    }   
    return a ? r + '.' + a : r;
}

alert((1000000).split3()) // 1,000,000

マイナスか。直した

追記 : 12/06

小数も考慮

2007年10月20日

Ubuntu 7.10 を入れた

アップデートマネージャで入れてみる。ダウンロードからインストールまでで半日くらいかかった。


気づいた点

  • フォントとかテーマとかがまとまった。

preview.del.icio.us が使えるようになったよ

f:id:higeorange:20071020183446p:image


preview に応募していたの完全に忘れていた。


感想

  • 検索が速くなった。といっても前が遅すぎたので普通のレベルになったという程度。
  • Opera でむちゃくちゃもっさり。 Firefox では普通。
  • おーこれは新しいっていう機能が見当たらない。

2007年10月17日

定数

@spidermonkey

var a = 1;
Object.watch.apply(this, ["a", function(p, o, n) { return o; }]);
print(a); // 1
a = 2; 
print(a); // 1
a++
print(a); // 1
a = "hoge"
print(a); // 1

お、できた。と思ったら

const a = 1;

でよかったみたい。


上のコードをブラウザ上で動かそうと思ったけど無理だった。


参考

JavaScript : const

2007年10月09日

Web Forms2.0 Validation

no title


validity オブジェクトあたりを。


element.validity.typeMismatch を調べると type が "url", "e-mail" なんかのときにとても便利だ。

pattern を記述しなくても正しいかどうかを判定できる。

もちろん pattern も追加で設定できて patternMismatch で判定できる。

2007年10月08日

ある数からある数までの配列をつくるの高速化

1 から 10 までの配列は [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] となるがこれを普通に作った場合。

Number.prototype.to = function(e) {
    for(var i = this, r = []; i <= e; i++) {
        r.push(i);
    }
    return r;
}

(1).to(100) // 1 から 100 までの配列

たぶん高速化。

Number.prototype.to = function(e) {
    for(var i = 0, c = this, r = new Array(e-c+1); c <= e; i++) {
        r[i] = c++;
    }   
    return r;
}

先に配列の大きさをきめてから各配列要素に代入してる分速くなってると思う。

Web Forms 2.0 がすごい。

いまさら気づいた。Twippera でも実は使っているというのに…。


http://higeorange.com/tmp/testWebForms20.html


Opera で試してね。

参照

WF2 demo - validation

2007年10月07日

無名関数の繰り返し with タイムアウト

(function() {
    // 処理
    setTimeout(arguments.callee, 1000)
})()

引数を取る場合 : 0 から順に数字を表示してみる

(function(c) {
    var self = arguments.callee;
    document.body.innerHTML = c
    setTimeout(function() { self(++c) }, 1000)
})(0)

再帰足し算

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

alert([1, 2, 3, 4, 5, 6, 7, 8, 9, 10].sum()); // 55

追記

配列が大きくて再帰しすぎると "too much recursion" とエラーが出る…。

SpiderMonkey で 1000 以上の大きさの配列で出る。

2007年10月04日

タスクリスト×はてなスター

以下アイデア。

Twippera の タスクリストを check*pad で管理しているわけだが。*1

この各項目に対してはてなスターで評価できるようになればいいと思った。


別にはてなスターじゃなくてもいいけど。


もっとオープンなタスク管理サービスを使えばいいかなともおもった。

2007年10月03日

編集中のファイルをブラウザで開く

vimrc に、

nmap ,o :!opera %:p<CR> 
nmap ,f :!firefox %:p<CR>

ずっと悩んでいたものが解決した。

参考

主流彩票_信誉平台

お手軽テンプレート

HTMLを書くときにDOCTYPE とか どの文章でも同じ構造(html, head, body) といちいちかくのはめんどくさい。

そこで html ファイルを新しく作ったときに自動でその辺を挿入してくれると便利だ。

まず, テンプレートファイルを用意

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title></title>
    </head>
    <body>

    </body>
</html>

これを skel.html として ~/.vim/templates/ にでも保存する。


vimrc に

autocmd BufNewFile *.html 0r ~/.vim/templates/skel.html

を追加。これで新しく HTML ファイルを開いたときに自動でテンプレートを自動で挿入してくれる。

2007年10月01日

getElementsByTagName で返ってくるもの

"document.getelementsByTagname('*')" で 返ってくるものは Opera, Konqueror だと "NodeList", Firefox だと "HTMLCollection" のようだ。あんまり変わらないけどね。

 |