Posts Tagged ‘python’
WindowsでV8 JavaScriptエンジンをコンパイルする
Windows VistaでV8を使いたかったのでビルドしたときのメモ
準備編
- Pythonをインストール(ActivePythonでもいいけど)
- SConsをインストール(PythonのMakeみたいなものらしい)
- Visual C++ 2010 Expressをインストール(本当はSConsだけでもいいけど、必要なWindows SDKが内蔵されてるので楽)
- git か svnがあるとV8のダウンロードが楽
実践編
(X / _ / X <は$みたいなプロンプトです)
バージョンの確認コマンドも打ってますが、How to Download and Build V8 – V8 JavaScript Engine – Google Codeでソフトウェアの必要なバージョンが載っています。
多くの例ではsvnで
svn checkout http://v8.googlecode.com/svn/trunk/ v8
としてv8をダウンロードしているみたいですが、githubに公式ミラーがあるので今回はそれを利用しました。
X / _ / X < git clone git://github.com/v8/v8.git v8 Initialized empty Git repository in D:/Software/v8/.git/ remote: Counting objects: 53075, done. remote: Compressing objects: 100% (7672/7672), done. remote: Total 53075 (delta 46205), reused 51859 (delta 45179) Receiving objects: 100% (53075/53075), 25.18 MiB | 749 KiB/s, done. Resolving deltas: 100% (46205/46205), done. Checking out files: 100% (1426/1426), done. X / _ / X < python -V Python 2.6.4 X / _ / X < scons --version SCons by Steven Knight et al.: engine: v2.0.1.r5134, 2010/08/16 23:02:40, by bdeegan on cooldog Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
ここまでで準備は終わり、次はビルドとテスト
sconsの引数はよく分からなかったのでBuildを見てscons d8としました。
X / _ / X < cd v8 X / _ / X < scons d8 #ビルド X / _ / X < tools\test.py #テスト [13:26|% 100|+ 4599|- 3]: Done
特に環境パスの引数なしでも通ったのでシンプルにしていますが、手動でパスを通す場合は大変なので”C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat”などのbatファイルを使うとよいかもしれないです。
- v8をビルドしてみました – とりあえずメモメモ。
- Compiling v8 on Windows 7
- BuildingOnWindows – v8 – Detailed instructions for building V8 on Windows. – V8 JavaScript Engine – Google Project Hosting
最後にベンチマークを取ってみて終了
X / _ / X < cd benchmarks\ X / _ / X < ../d8 run.js Richards: 7311 DeltaBlue: 9098 Crypto: 8762 RayTrace: 6707 EarleyBoyer: 12664 RegExp: 1440 Splay: 2193 ---- Score (version 6): 5521
これで、Windows上で使えるV8(d8)のバイナリ作成ができたので終わり
毎回d8.exeまでのパスを入力するのは大変なので、バイナリの場所までRedmond Pathを使ってパスを通しています。
GoogleのJavaScriptコーディングスタイルチェッカー「Closure Linter」
GoogleではJavaScriptは特定のコーディングスタイルで統一されるようにClosure Linterという専用のスクリプトを使用しているそうです。
Google JavaScript Style Guide(Google JavaScript Style Guide 和訳)という規則に従ってjsのコードは書かれていて、その規則に沿っているかを確認するgjslintとその規則に合うように修正するfixjsstyleからなるスクリプトです。
インストール方法
How to Use Closure Linter – Closure Linter – Google Code
pythonで書かれているのでeasy_installを使ってインストールします。
まずはPythonをインストールしてなかったらインストールして、次にeasy_installコマンドを使うためにsetuptoolsを自分のPythonにあったものをインストールします。
WindowsならC:\Python26\Scriptsに環境パスを通せば、コマンドプロンプトからeasy_installが使えるようになるので、
> easy_install http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
と打ってたらインストールできます。(パス通してないならC:\Python26\Scriptseasy_install でも大丈夫)
*注意 (修正済み)
現在配布されるやつはfixjsstyleがTypeError: ‘NoneType’ object is unsubscriptableのようになって動かないので、
easy_install -Z http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
という感じでファイルを展開するオプションをつけてインストールしてから、/python2.6/site-packages/closure_linter-2.2.1-py2.6.egg/
closure_linter/fixjsstyle.py の36行目にargfとなってるtypoがあるのでそれをargvにすれば動きます。
使い方
使い方は単純でHow to Use Closure Linter – Closure Linter – Google Codeを見ると分かりますが、
gjslint path/to/my/file.js fixjsstyle path/to/file1.js path/to/file2.js
のようにファイルやディレクトリを指定して実行するだけです。
–strictオプションやディレクトリに対してまとめてやる再帰オプションもあります。またGoogleのコーディングスタイルではJsDocを使う事になってるので、それを無視するオプションもあります。
fixjsstyleはE4Xとか特殊なものは認識してないっぽいので無理に書けると構文エラーを出すようになったりしますが、
Googleのコーディングスタイルはそこまで特殊ではないので、ちょっとした確認に使えたりして便利です。
JavaScriptの整形にはOnline javascript beautifier(これ自体がJavaScriptで書かれているのでEmeditorやNILScriptで動かせるgist: 453042 – クリップボードのJavaScriptコードを整形してクリップボードに返すNILScript – GitHub)とかと併用すると面白いかも。
- Introducing Closure Linter – Closure Tools Blog
- http://closuretools.blogspot.com/2010/08/introducing-closure-linter.html

