2008-10-01から1ヶ月間の記事一覧
233,123,33のような文字を見つけたら、対応する色を表示する。 /(?:(?:[1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])(?:(?!\d)|,)){3}/が、カンマで区切られた0〜255の数字三つにマッチする正規表現。 document.normalize(); var span = document.createElement('span'…
*使うより、Math.pow使うほうが遅い。 var PI = function () { var sum = 0, n = 100000, d = 1 / n; for (var i = 0;i <= n; ++i) { var x = i * d, f = Math.sqrt(1 - Math.pow(x, 2)); if (i == 0 || i == n) sum += f; else if (i % 2) sum += f * 4; el…
MacだとControlキーがShiftの上にあるので、キーバインドが見た目と反対になっちゃってる。 javascripter's gist: 3740 — Gist var o = Keybind._keyfunc; [o["shift+ctrl"], o["ctrl+shift"]] = [o["ctrl+shift"], o["shift+ctrl"]];
こんな感じにすればいい。 あとは、jQueryか、か、404 · GitHubあたりを@requireで取り込めば、Greasemonkey版のAutoPagerizeとSeaHorse版のSITEINFOの橋渡しができそう。 const SITEINFO_URLS = [ 'http://wikiwiki.jp/958/?cmd=source&page=AutoPagerize%2…
JSON.parseとJSON.stringifyがサポートされた。 これは、JSON in JavaScriptのネイティブ実装と言える。これからWebサイトでJSONを使う時は、 <head> <script type="text/javascript"> if (typeof JSON != "object") document.write('<script type="text/javascript" src="http://www.json.org/jso</script></head>…
Text.replaceWholeText - MDNの使い方。 var span = document.createElement("span"); span.appendChild( document.createTextNode('aiu')); span.appendChild( document.createTextNode('eo')); span.childNodes[0].replaceWholeText("foo"); alert(span.te…
モンテカルロ法使って円周率を確率的に計算するやつでベンチマークを取ったら、何故かJITをオンにしたほうが速度が落ちた。こういうプログラムは、JITをオンにしたら速くなりそうな気がしてたので意外。 console.time("pi"); var n = 300000, hit = 0; for (…
var [a, b] = (function fib(a, b) b < 10000000000000000 ? fib (b, a + b) : [a, b] )(1, 1); alert(b / a); // 1.6180339887498947 Rubyだとこんな感じかなあ def sum(a) a.inject(0) {|sum, n| sum + n} end fib = (1..1000).inject([1, 1]) {|a, b| a.p…
ページの下のほうを見てるのに、sキー押すだけでページが上部に移動しちゃうのは、不便。 // ==UserScript== // @name GitHubKeyHack // @namespace http://d.hatena.ne.jp/javascripter/ // @include http://github.com/* // ==/UserScript== location.href…
// ==UserScript== // @name HatenaBookmarkIdCall // @namespace http://d.hatena.ne.jp/javascripter/ // @include http://b.hatena.ne.jp/entry/* // ==/UserScript== GM_addStyle( '[id^=bookmark-user-]:target {\ background-color: #e0e0f0;\ }'); va…
毎回手動で直してるのも面倒だから、パッチの作りかたを調べた。 肉少なめ | Item - Firebugのコンソールでjavascript 1.8を使うで練習する。 まず、下のような感じにして、 /Users/javascripter/fbug/content/firebug% cp lib.js lib.js.orig /Users/javasc…
var embed = document.getElementsByTagName("embed")[0]; alert(typeof embed); // "function" alert(embed instanceof Function); // false try { embed(); } catch (error) { alert(error); // Error: Error calling method on NPObject! } 何故か、typeo…
indexOf - MDNによると、Array#indexOfの第二引数を指定すると、途中から検索できるらしい。 これを使って、Array#removeを実装すると、毎回、全部をindexOfで探索するよりかなり速くすることができる。 Array.prototype.remove = function remove() { var s…
はてブユーザのストーキングを加速させるgreasemonkey(はてブしてるひとのダイアリーへのリンクを付加する) - Cherenkovの暗中模索にっきを勝手に添削する。まず、気をつけたほうがいいもの。 // ==UserScript== // @name hateb_link_user_diary // @names…
???㡼???ѿ?(sharp variables) - oct inaoduで、リテラルに循環したオブジェクトを書けることを知ったので、 JSEnumerator – CodeRepos::Share – Trac のサンプルのFizzBuzzを、それを使って書き直してみた。 function cycle(list) { var ret = […
関数を実行するたびに値を増やすカウンタを作ろうと思って、継続つかえないかなと思ったけど、むずい。 下の場合だと、一度(counter)した時、(define counter (make-counter))までのぼるので、counter自体が再定義されちゃう(defineで再定義してるから実行結…
マクロおもしろいなあ。 #!/usr/bin/env gosh (define-macro (ca..r n) (string->symbol (make-string n #\a)) `(define ( ,(string->symbol (string-append "c" (make-string n #\a) "r")) lis) (define (/lis lis i) (if (> i 0) (/lis (car lis) (- i 1))…
マクロ展開後に変数を漏らす必要がない場合?は、define-syntaxを使う。 #!/usr/bin/env gosh (define-syntax ++ (syntax-rules () ((++ var) (begin (set! var (+ var 1)) var)))) (let ((i 0)) (print i) ; 0 (print (++ i)) ; 1 (print (++ i))) ; 2 JSみ…
Schemeをそれとなくやろうと思って、SICPとかは難しいなーと思って、簡単そうなのを探したら、R5RS (Revised^5 Report on Algorithmic Language Scheme) 日本語訳がよさそうなので、見ながらちょこちょこ書いた。再帰を使ってリストのサイズを出す。末端再帰…
追記:からインストールできるようにした。wnp/nicovideo_wnp.js at master · miya2000/wnp · GitHubを参考に、Flashを毎回クリックしなくても勝手に再生されるようにした。 // ==UserScript== // @name NicoVideoAutoPlay // @namespace http://d.hatena.ne…
Download Pythonから、Python 2.6 for Macintosh OS Xをダウンロード。 すでに入れていたPython 2.5を/Applications/から削除する。 で、普通にインストール。 Terminalから、 % python -V して、Python 2.6と出ればOK。 僕の場合、Python 2.5と出たので、 %…
Array#mapなどを使う時、配列の要素に対して要素のメソッドを適用したいことがよくあるけど、普通はこう書かなきゃいけない。 [1, 2, 3, 4, 5].map(function (n) { return n.toString() }); こう書きたい。 [1, 2, 3, 4, 5].map(expand.toString()); // expa…
JavaScriptは、typeof nullが"object"だったり、typeof new String("foo")が"object"だったり、"foo" instanceof Stringがfalseだったりする。 なので、それらをまとめて下のような関数にして、ビットマスクを使って目的の型かどうかを確認できるようにする…