2006年 10月 25日

Firefox2.0

テーマは手動で GrApple (EOS) を入れ直した。
C-u C-k C-h がちゃんと効くgtlt

セッションの復元がわからなかったけどホームページの設定ドロップダウンだった……タブの項目をさがしてた

FireBug の $x とかはどこにあるのか

>> dir(FireBugEval.api);
["$0","$1","$n","$","$$","$x","clear","inspect","dir"]
>> FireBugEval.expr;
"FireBugEval.expr;" //=> 実行中のスクリプト文字列

FireBugEval は一行実行するごとに毎回生成されてる。該当ソース (commandLine.js)

FireBugCommandLine.evaluate = function(expr)
{
    var win = FireBug.currentContext.window;

    var result = null;    
    win.FireBugEval = function(value) { result = value; }    
    win.FireBugEval.api = FireBugCommandLineAPI;
    win.FireBugEval.expr = expr;

    if (FireBug.debuggr.debugging && FireBug.currentContext.currentFrame)
        FireBug.currentContext.currentFrame.eval(this.evalScript, "", 1, {});
    else
        this.injectScript(this.evalScript, win);

    delete win.FireBugEval.api;
    delete win.FireBugEval.expr;
    delete win.FireBugEval;
    
    return result;
}

js1.7 with Ruby/SpiderMonkey

cd src
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src mozilla/js/src/config mozilla/js/src/editline mozilla/js/src/fdlibm
cd mozilla/js/src
make -f Makefile.ref

cd Linux_All_DBG.OBJ
sudo cp spidermonkey.so /usr/local/lib/site_ruby/1.8/i486-linux  
sudo mv libjs.so /usr/lib 

cd ../ruby-smjs
vim extconf.rb # s/smjs/js/g
ruby extconf.rb --with-js-include=../mozilla/js/src --with-js-lib=../mozilla/js/src/Linux_All_DBG.OBJ 

1.7 の機能を使うには Context#version= をセットしてあげる。

c = SpiderMonkey::Context.new
c.version= "1.7"
c.evaluate("let (a = 1) a;")

Live HTTP Header のかわり

id:amachang 氏によると XHR うって FireBug 見るらしい。激しい。たしかにレスポンスヘッダならじゅうぶん
XHR のインタフェ覚えてないので

javascript:s=%22%s%22;r=new XMLHttpRequest;r.open(%22GET%22, s=='%\s'?'.':s);r.send(null);

を get キーワードにしてブックマークレットにした。

mini-DVI - VGA

mini-DVI - VGA のアダプタ買ってデュアルモニタ><
ヨドバシでなんか売ってなくて、アプルストア行った、ら、イベントやっててちょう混んでた。あの狭い渋谷アプルストアでgtlt

しかしこれでデュアル化しても、VirtueDesktop で結構違和感だ。全部のデスクトップに表示とかやらないとだね!

Ruby/SpiderMonkey function

c.eval("String.prototype").function("dump") {|this| p this.to_s.dump}
c.eval('"aaa".dump()')

this が ruby 側でとれない?みたいなので書き換えた。なにか方法あるのかな

--- spidermonkey.c.orig	2006-10-25 23:37:28.000000000 +0900
+++ spidermonkey.c	2006-10-25 23:58:26.000000000 +0900
@@ -598,10 +598,11 @@
 	so = (sSMJS_Class*)JS_GetPrivate( cx, fobj );
 
 	// 引数をSpiderMonkey::Valueに 
-	rargs = rb_ary_new2( argc + 1);
+	rargs = rb_ary_new2( argc + 2);
+	rb_ary_store( rargs, 0, rb_smjs_convert_prim( cx, thisobj )  );
 	for( i=0; i<argc; i++ )
-		rb_ary_store( rargs, i, rb_smjs_convert_prim( cx, argv[i] ) );
-	rb_ary_store( rargs, i, so->rbobj );
+		rb_ary_store( rargs, i+1, rb_smjs_convert_prim( cx, argv[i] ) );
+	rb_ary_store( rargs, i+1, so->rbobj );
 
 	// proc を実行 
 	res = rb_protect( rb_smjs_ruby_proc_caller, rargs, &status );

あーこれじゃだめだ。影響が広すぎて ruby のメソッドをそのまま呼べなくなる。新しいメソッドを定義するほうがいいのかなぁ。function_with_this みたいな