デジャブかもしれません
twitterを使ってみんなでアイデアを共有するサービス、ひらめいったーのはてなスターサイト上で、twitterユーザのアイコンが表示されるようにするグリモン書いた。
2008/01/31
Minibuffer用のFuck!コマンド書いた
Firefoxをshellの様に扱えるグリモン「Minibuffer ? Userscripts.org」で使える、Fuck!コマンド「fuck」書いた。
使い方は、はてなブックマークコマンドとほぼ同じ。
目障りな記事を見つけたら
なお
例えばtwitterなんかで
※followerの皆様ごめんなさい。
ソースはこんな感じ
てか使い道なくね?
目障りな記事を見つけたら
:fuck
とすれば良い。
もしくはpinを付けて
:pinned-link | fuck
とすればpinを付けたリンクが全部「Fuck!」になる。なお
:pinned-node | fuck
とすれば、pinが指すノード自体が削除される。例えばtwitterなんかで
followerの発言をpinしてfuckしようもんなら![]()
こんなんになっちゃう!![]()
※followerの皆様ごめんなさい。
ソースはこんな感じ
// ==UserScript==
// @name Minibuffer Fuck Command
// @namespace Minibuffer.Fuck.Command
// @description add fuck command to Minibuffer.
// @include http://*
// @include https://*
// ==/UserScript==
window.Minibuffer.addCommand({
name: 'fuck',
command: function(stdin){
if (stdin.length == 0) {
document.open();
document.write('<h1>Fuck!</h1>');
document.close();
} else {
stdin.forEach(function(obj){
if (("" + obj).match(/^https?:.*/)) {
var links = document.getElementsByTagName('a');
for(var n = 0; n < links.length; n++) {
if (links[n].href == obj) {
links[n].href = 'javascript:void(0);';
links[n].addEventListener('click', function() {alert(this.innerHTML)}, false);
links[n].innerHTML = 'Fuck!';
}
}
} else if (typeof obj == 'object') {
try {
obj.parentNode.removeChild(obj);
} catch(e) { }
}
});
}
return stdin;
}
});
インストール:minibuffer.fuck.user.js
てか使い道なくね?
3桁ごとに区切る
その1 3桁ごとに区切る - PleasureDelayerDiary 
Number.prototype.split3_1 = function() {
var r = "";
var s = this.toString().split("").reverse();
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 r;
}
その2 iandeth. - javascriptで数値をカンマ区切り文字列に変換する関数メモ 
Number.prototype.split3_2 = function () {
var to = String(this);
var tmp = "";
while (to != (tmp = to.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2"))){
to = tmp;
}
return to;
}
その3 JavaScriptで数値を3桁ごとに区切る - 0x集積蔵 
Number.prototype.split3_3 = function() {
var m = (this < 0) ? -1 : 1;
var str = String(this*m).split('.');
var arr = String(str[0]).split(''), len = Math.ceil(arr.length/3), res = [];
for (var i =0;i<len;++i) res.push(arr.splice(-3,3).join(''));
return (m == -1 ? '-' : '') + res.reverse().join(',') + (str[1] ? '.' + str[1] : '');
};
その4 [JavaScript]数値を3桁ごとに区切る 
Number.prototype.split3_ore = function() {
('' + this).match(/(-?)([0-9]+)(\.[0-9]*)?/);
var sp = [RegExp.$1, RegExp.$2, RegExp.$3];
var x = Math.floor(sp[1].length / 3) * 3;
var len = sp[1].length;
return sp[0] + (sp[1].substr(0, len - x)) + (len - x == 0 ? '' : ',') +
(sp[1].substr(len - x, x).match(/[0-9]{3}/g).join(',')) + sp[2];
}
私ならこう書く。
Number.prototype.split3 = function() {
var r = "", s = this.toString().split("").reverse().join("").replace(/\d{3}/g,
function(v){r+=v+',';return ''});
return (r + s).split("").reverse().join("");
}
alert((1000000).split3()) // 1,000,000
文字列を逆にして、replaceに指定した関数で3桁毎にカンマを入れた結果と、空で置換したsubstituteの結果(あまった結果)を足す。その後文字列を逆にして戻す。マイナスもたぶんOK。
追記1
しまった。チェック甘すぎ。
Number.prototype.split3 = function() {
var r = "", s = this.toString().split("").reverse().join("").replace(/\d{3}/g,
function(v){r+=v+',';return ''});
if (!s.match(/\d/)) r = r.substr(0, r.length-1);
return (r + s).split("").reverse().join("");
}
計測してみる!関数呼び出しコストか?
追記2
うむ。小数か...
Number.prototype.split3_mattn2 = function() {
var r = '', s = this.toString();
s.match(/(-?)([0-9]+)(\.[0-9]*)?/);
var sp = [RegExp.$1, s = parseInt(RegExp.$2), RegExp.$3];
while(s >= 1000) {
r = ',' + (s%1000) + r;
s = parseInt(s/1000);
}
return sp[0] + s + r + sp[2];
}
-12345678.2356を3桁ごとに区切るテストタイム測定
うむ。それでも遅い。

