2007-01-12
■ [softs] fub最初の一歩
Windows用のタブブラウザfubの導入方法。
特徴
- シンプルながら高いカスタマイズ性
- 多段タブ(グループタブ)が実装されているので、タブを開きまくっても大丈夫
- grep検索とかインクリメンタル検索とか
- お気に入りはIEと共通
- 「しいて挙げれば起動が遅いです。」だそうです。
ダウンロード
公式サイトの「導入方法」から fub_net_full.zipをダウンロード。
インストール
解凍するだけ。
初期設定
起動すると、メニューバーがないのにびっくりするかも知れません。fubではツールバーの青いアイコンからメニューを開きます。 その隣(★)がお気に入り、その隣(時計)が履歴、その隣がエクスプローラバーの表示/非表示です。
とりあえず最低限の設定を済ませてしまいましょう。
- ツールバー
- 表示→ツールバーから表示するツールバーを選択しましょう。
- プロキシ
- ツールバーの緑の三角マークをクリックすると、プロキシのON/OFFができます(明るい緑のときがON)。右クリックするとプロキシのアドレスを設定できます。
- マウスジェスチャ
- オプション→マウスジェスチャの設定 から。「←で戻る」とか「↓で閉じる」とかそういうやつです。
- タブ
- F4キー(またはオプション→設定)で設定画面が開きます。タブ→新規タブ のページで、「新規タブをどこに追加するか」「タブを新しく開くかどうか」「開いたタブをアクティブにするかどうか」を設定しましょう。
- グループタブ
- デフォルトではOFFになっています。F4キーで設定画面を出して、グループタブ→表示 からONにできます(再起動が必要)
とまあとりあえずこんなところで。より詳しいことはヘルプをどうぞ。
■ [javascript] JavaScriptの簡易プロファイラ(非prototype版)
http://d.hatena.ne.jp/llamerada/20050919/1127096571 がうまく動かなかったので、 prototype.js非依存にしたバージョンを作ってみた。
Array.prototype.sum = function(){
for(var i = 0, sum = 0; i < this.length; i++){
sum += this[i];
}
return sum;
}
Array.prototype.mean = function(){
return (this.length > 0) ? (this.sum() / this.length) : 0;
}
Array.prototype.max = function(){
if(this.length == 0){
return 0;
}
for(var i = 1, max = this[0]; i < this.length; i++){
if(this[i] > max){
max = this[i];
}
}
return max;
}
Array.prototype.min = function(){
if(this.length == 0){
return 0;
}
for(var i = 1, min = this[0]; i < this.length; i++){
if(this[i] < min){
min = this[i];
}
}
return min;
}
function Profiler() {
this.keys = [];
this.records = {};
}
Profiler.prototype.observe = function(object, name){
name = name || "Method";
for (property in object) {
if(typeof object[property] == "function"){
var key = name + "::" + property;
this.keys.push(key);
this.records[key] = [];
object[property] = function(__method, __timeRecord){
return function(){
var start = new Date;
var rv = __method.apply(this, arguments);
__timeRecord.push( (new Date) - start);
return rv;
}
}(object[property], this.records[key])
}
}
}
Profiler.prototype.result = function(){
var out = []
for(var i = 0; i < this.keys.length; i++){
var rs = this.records[this.keys[i]];
out.push("<td>"+ this.keys[i] +
"</td><td>count</td><td>" + rs.length +
"</td><td>total</td><td>" + rs.sum() +
"</td><td>mean</td><td>" + Math.floor(rs.mean() * 10) / 10 +
"</td><td>max</td><td>" + Math.floor(rs.max() * 10) / 10 +
"</td><td>min</td><td>" + Math.floor(rs.min() * 10) / 10 + "</td>"
);
}
return "<table><tr>"+out.join("</tr><tr>")+"</tr></table>";
}
単純に書き換えただけですね。あとresultをテーブル形式にした。
使い方は
p = new Profiler;
p.observe(ClassA.prototype);
p.observe(ClassB.prototype);
//重たい処理
document.write("<div align=left>"+p.result()+"</div>");
とか。
[ツッコミを入れる]