ラベル JavaScript の投稿を表示しています。 すべての投稿を表示
ラベル JavaScript の投稿を表示しています。 すべての投稿を表示

2015/11/05

20の言語/環境でてきとうにベンチマークしてみた (Rust, Go, Crystal, Nim, Swiftなど)

自分が普段利用している言語や、気になっている言語などを集めてベンチマークを行いました。

次の2つのブログ記事の伝統に則り、再帰のフィボナッチ関数を使って、処理時間や利用メモリなどを計測してみました。

ただし、値は埋め込みではなくて、コマンドライン引数として取れるように変更しています (定数で最適化されると嫌なので)。

2015/04/28

JavaScript for Automation (JXA) を利用してMac AppStoreからアプリケーションを自動インストールさせる

OS X 10.10からJavaScript for Automation (通称 JXA)が導入されて、オートメーションのためのスクリプトがより書きやすくなりました。

そのJXAを使って、「AppStore.appを起動させてから、購入済みのアプリをInstalllさせる」というスクリプトを書いてみました。

その結果が次の地味なgifです。購入済みリストからMouseposéを探しだしてインストールさせています。

JXAスクリプトとChefやAnsibleなんかを組み合わせると、自動でストアアプリも入れられるようになる…かもしれません。

2014/07/24

流体シミュレーションエンジンLiquidFunをJavaScriptから使ってみる

流体シミュレーションエンジンLiquidFunのバージョン1.1.0が先日リリースされて、このバージョンからJavaScriptがサポートされました。

そこで、LiquidFun.jsとPaper.jsを利用して、簡単なデモを作ってみました。

2014/03/28

3Dブロック的グラフィックライブラリObelisk.jsを試す

3Dブロック的なピクセルアートが書けるようになるObelisk.jsを試してみました。

2013/09/10

Chromium + Nodeで動作してJavaScriptで拡張可能なブラウザExoBrowserを試す

ExoChromiumをベースとして、そこにNodeを載せてHTML/CSSとJavaScriptでブラウザUIを利用できるように設計されたブラウザです。

この記事ではExoブラウザをソースからビルドして利用してみました。

なお、コンパイル環境はXcode 5-DP4です。また、Windowsではコンパイルできませんでした。

2013/09/05

Mocha + Istanbulでテストしてコードカバレッジを取得する

JavaScriptでテストとコードカバレッジ取得するためのツールやフレームワークは沢山あるので、最近ちょこちょこJavaScriptに手を出しはじめたばかりの人間にとってどれを使ったらよいのかわからなかったりします。

また、それをするためのボイラープレートコードが必要だったりして、わりと面倒そうだと思って二の足を踏んでいたのですが、GitHubにあったテンプレートを利用したら、簡単にMochaIstanbulでテストとコードカバレッジ取得ができるようになったので、その手順を紹介します。

2013/08/27

NoFloでFlow-based programmingを試してみる

NoFloFlow-based programmingという、 Yahoo! Pipesなどのように、コンポーネント同士を接続したグラフによってプログラミングを行うライブラリ/ツールです。

KickStarterで先月から出資者を募集中で、プロジェクトが成功したあかつきには、GUIプログラミングでいろいろなことができそうなかんじですが、今回はnofloをライブラリとして用いることを念頭に、テキストベースでこのツールを試してみました。

2013/08/20

JavaScriptのSource Mapの内部表現について

CoffeeScriptなどの別言語からコンパイルしたり、ClosureコンパイラなどでMinifyしたりしたソースをデバッグしているときなどに、生成されたJavaScriptソースコードから変換前のオリジナルソースの場所を知りたいときがあります。

それを知るための技術がSource Mapです。これがどのようにオリジナルのソースを参照しているのか気になったので調べてみました。

2013/07/11

JavaScriptでundefinedよりvoid 0を使ったほうがよい理由はほとんどのブラウザで最速だから、かも

ちょっと前に、株式会社LIGのブログundefinedはただのグローバル変数だからvoid 0を使うほうがよいみたいな記事がありました。

いろいろ調べてみると、それだけが理由ではないように思えたので、そこらへんをまとめてみました。

1行でまとめると次のようになります。

  • undefinedとの比較判定には、やっぱりvoid 0を使うこと (ほとんどのブラウザで最速だから)

もうすこし細かい話をすると、

  • ECMAScript 5ではundefinedに上書きできない
    • グローバルオブジェクトのundefinedのプロパティ属性[[Writable]]falseのため

みたいな感じです。

2013/05/28

Emacsでflymake-jshintを利用してリアルタイムでのJavaScript文法チェックができるようにする

flymake-jshintを利用して、Emacsで JSHintを利用したリアルタイムでのJavaScript文法チェックができるようにしてみました。

今回利用したEmacsのバージョンは次の通り。

GNU Emacs 24.3.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of 2013-03-13 on bob.porkrind.org

jshintの導入にはnodeを利用しています。nodeはbrew経由で入れたもので、nodeとnpmのバージョンはそれぞれv0.10.7と1.2.21です。

2013/04/18

Node-Javaを使ってSikuliをJavaScriptで操作する

Node-Javaという、JavaScriptからJavaを利用できるNodeのライブラリがあります。

これを使ってSikuliをJavaScriptから操作するようにしたら、JavaScirptのテストフレームワークが楽に使えて便利かなあと思って試してみました。

結論から言えば、MacではNode-JavaからSikuliが使えませんでした。 Windowsでは動作するようなので備忘録も兼ねて作業手順を記しておきます。

2012/09/12

Emscriptenを用いてC++ソースをJavaScriptに変換する

EmscriptenはC/C++ソースからJavaScriptソースへ変換するコンパイラです。

BananaBreadのようなゲームやPythonやRubyのようなスクリプト言語もコンパイルできるようです (Emscripten Wikiにはそれ以外のデモやサンプルへのリンクがあります)。

そこで、今回は導入してHello worldを実行させるまでの手順を紹介します。

2010/08/02

V8のMinGWでのコンパイル

V8はGoogle Chromeに搭載されたIA-32かARM上で動作するJavaScriptエンジンです。ソースコードはC++で書かれており、新BSDライセンスで提供されています。

Chromeに使用されていますが、スタンドアロンでの実行や組み込みでの実行が簡単に実現できるようになっています。使用ユーザが多いJavaScriptであり実行速度が速いため、今後組み込み用に使えるのではないかと思います。

この記事では、V8のコンパイルを行います。ただし、コンパイルを通すためにMemoryBarrierをコメントアウトしているので完全な動作を保証するものではありません。(よい対処法があればお知らせください)