canvas で文字を表示してみる
del.icio.us で他人のコメントをコピーする
del.icio.us で network, tag などのページから save this というリンクをクリックしてブックマークする時に他人のつけているコメントをそのままコピーするスクリプト.わかりにくい.
// ==UserScript== // @name del.icio.us Copy Note // @namespace http://opera.higeorange.com // @include http://del.icio.us/* // ==/UserScript== (function() { var posts = document.evaluate('//li[@class="post"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for(var i = 0, l = posts.snapshotLength; i < l; i++) { var post = posts.snapshotItem(i); var note = document.evaluate('./p[@class="notes"]', post, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if(note) { var save = document.evaluate('./div[@class="commands"]/a', post, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; save.href = [ save.href, "&extended=", encodeURIComponent(note.innerHTML)].join(''); } } })();
"Hashを使ってユニークにしよう!" を JavaScript で.
var cars = ["honda", "honda", "suzuki", "toyota", "toyota", "daihatu", "mitubishi"]; var report = {}; cars.forEach(function(car) { report[car] = ++report[car] || 1; }); for(var i in report) { print(i + ": " + report[i]); }
これでおk?
Canvas で簡単な図形を描いてみる
printf もどき
function printArray(format, arry) { var i = 0; return format.replace(/%s/g, function($0) { return arry[i++]; }); } var a = ["foo", "bar"]; printArray("%s+%s", a); // foo+bar
そもそも printf がどんなものか詳しくはしらないのでそれっぽいやつ.
型とか関係なし.第2引数に配列をとって順に展開していく.
エラー処理がまったくないけどきにしない.
参考
Number オブジェクトのメソッド呼び出しではまったこと.
数値のメソッド呼び出しは
3.toString(2);
では Syntax Error となる.
3..toString(2); // . を二つつける.
もしくは
(3).toString(2);
とする必要がある.
問題はここから.
まず,Math.abs を Number.abs でも呼べるようにする.
Number.prototype.abs = function() { return Math.abs(this); }
これを . を二つつけるやり方で呼び出してみる.
-3..abs() >> -3
ん.なぜと思ったけど
-(3).abs()
となってしまっているようだ.
(-3).abs();
負の数字の場合 () でくくってやる必要がある.
まぁほとんどこのようなことは書かないのではまることは少ないないけどメモ.
"先頭を0で埋めて桁をそろえる" を考えてみた
http://d.hatena.ne.jp/javascripter/20080514/1210791575 より
unshift で
Number.prototype.fillZero = function(n) { var r = this.toString().split(''); while(r.length <= n) { r.unshift('0'); } return r.join(''); }
2
Number.prototype.fillZero = function(n) { return Array((n+1) - this.toString().split('').length).join('0') + this; }
小数や負の数の場合も考えて
if(this < 0 || (this - Math.floor(this) != 0)) return this;
を入れてもいいかもね.