C/C++

V8 用の C++ クラスラッパユーティリティを書いているところ

C++ オブジェクトを Javascript オブジェクトと関連付けるためのノウハウがある程度たまってきたので、Javascript 向けバインディングを作るためのユーティリティを書いてみています。 ATL のような形で継承したクラスを作り、必要なメソッドを実装すればク…

Boost をビルドしています

せっかく V8 のノウハウもちょっとたまってきたことだし、italk の無脳でもひさびさに書いてみるかと思ったのはよいけれど、C++ からソケットを生でいじるのは非常に面倒なので何かよいライブラリはないかと探して結局 boost::asio に行き当たる。 手元に De…

msvcrt=shared でビルドすると snapshot がとれない

C:\progs\v8\v8>scons mode=debug snapshot=on msvcrt=shared scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... ... cl /Foobj\debug\mksnapshot.obj /c src\mksnapshot.cc /nologo /W3 /WX /wd4355…

TryCatch のスコープではまること

V8 における文字列の評価処理は、だいたい次のような流れをとります。 const char* lpszScript = ...; HandleScope handle_scope; TryCatch try_catch; Local<Script> script = Script::Compile(String::New(lpszScript)); if (script.IsEmpty()) { ReportException(…

Weak handle にも Dispose の愛の手を

http://groups.google.com/group/v8-users/browse_thread/thread/d0c8bd822ce21f9e http://d.hatena.ne.jp/tossy-2/20090123/1232653840 最近の v8-users のログを見たらちょうど話題にあがっていたので、ちょっとエントリ修正。 上記エントリでデストラクタ…

V8 のヒープの中身を覗き見る

参照がなくなったはずのオブジェクトがなかなか回収されないのでどうしたもんかと思い、昨日今日ととりあえずヒープの中に分け入っています。 GC 管理下のヒープの中身を覗くとか正直あまりやりたくはないのですが、表向きには参照がなくなっているはずなの…

V8 向け ActiveXObject、なんとか動いた

というわけで、先日からごそごそとやっている V8 用 COM/OLE 対応コードですが、なんか別の URL を使ってみたら動きました。悲しすぎる。 要するにどういうものかというと、OLE オートメーションに対応しているオブジェクトを Javascript コードからオブジェ…

メモ

COleDispatchImpl (atlmfc/src/mfc/oledisp1.cpp)

ActiveXObject with V8 (続き)

Locale の問題とかいろいろ修正していたら、なんとなく動くようになった気がしますが、よくわからないエラーが出ているのでまだまだのようです。。。 > var o = new ActiveXObject('Msxml2.XMLHTTP') > o [ActiveXObject@021D3A68] > o.open function open()…

Locale の罠

コンソールでマルチバイト文字を使う。 #include <stdio.h> #include <tchar.h> int _tmain(int argc, TCHAR* argv[]) { _tprintf(_T("%s\n"), _T("こんにちは、世界!")); return 0; } で、こいつを実行してみると。 >cl /D_UNICODE /DUNICODE hello.cc Microsoft(R) 32-bit C/</tchar.h></stdio.h>…

ActiveXObject with V8

今日はこんなことをやっています。 > var o = new ActiveXObject('Microsoft.XMLHTTP') > o ActiveXObject(021D3A68) > o.readyState 0 > o.open function () { [native code] } > o.open('GET', 'http://www.google.com/') Error: Error: Invoke(method) ex…

VC++ で JS_THREADSAFE な Spidermonkey をビルドする

昨日のつづき。なんとか無理やりビルドしてみました。

SpiderMonkey のビルドに四苦八苦中

以前 SpiderMonkey 1.60 の頃に tarball 取ってきて VS2005 でビルドしてみたことがありますが、あのときはなんというか、苦難の道だったなあという印象がまず第一です。 まず、Visual Studio 用のプロジェクトファイルである js.mdp が tarball に入ってい…

ID3 タグを UTF-8 に変換する

mt-daapd が文字化けするーという話、結局は ID3 タグが Shift-JIS/UTF-8 混在環境にあるのが問題なのですが、今後のことを考えると今のうちに UTF-8 に統一しておくのがよさそうです。しかし、iTunes は Shift-JIS でもちゃんと解釈してくれて、テキストエ…

UTF-8/CP932 両対応 mt-daapd の作成とインストール

ちょっと話は前後するのですが、LANDISK に Debian がなんとかはいったので、とりあえず samba やらをいれてファイルサーバにしてみました。その後ついでなので、mt-daapd をいれて iTunes サーバにしてみようと。apt で問題なくインストールされて設定もで…

GC がちゃんと動いているところを見たい

ひとつ前のエントリで、GC のタイミングにあわせて裏にあるオブジェクトが解放されるような仕掛けを入れました…が、ちょっとやそっとでは(…という言い方も語弊があるかとは思いますが) GC がおこらないので、テストするのが面倒です。 こういうときは、GC を…

C/C++ オブジェクトを Javascript オブジェクトにエクスポートする

V8 の Embedder's Guide を見ると、C/C++ の関数を Javascript から使えるようにするやり方が解説されています。 Accessor のセクションにある Point の例をちょっと拡張すれば C/C++ のオブジェクトを Javascript のオブジェクトとして見せることができるよ…