ubuntu12.04 にmeteor.jsを入れてみた

ubuntuにmeteor.jsを入れてみました。
【環境】
Ubuntu12.04

meteor.jsはjavascritptによるWebアプリのフレームワーク。
クライアントサイドJS(ブラウザで動くJS)やサーバーサイドJS(Node.jsとか)ではなく、
その両方で動く(Isomorphicな)フレームワークです。

まずは、インストール用のスクリプトを叩く

$ wget install.meteor.com
$ sudo sh index.html

これでインストールは完了。パッケージはdebパッケージでインストールしてくれる。
インストールされた内容は以下でチェックできる。

$ dpkg –listfiles meteor

ここまでで環境構築完了。

次にに、サンプルアプリケーションを作ってみる。
/usr/lib/meteor/examples/ 配下にサンプルがインストールされてる。

$ ls
todos wordplay leaderbord

ここではtodos 展開する。適当なディレクトリで以下のコマンドを叩く

$ meteor create –example todos
todos: created.
 
To run your new app:
cd todos
meteor

これで、叩いた場所に todosディレクトリが作られる。
それでは実行。

$ cd todos
$ meteor
[[[[[ ~/todos ]]]]]
 
Running on: http://localhost:3000/
///////////////////////////////////////////////
///////////////////////////////////////////////
 
meteor is out of date. Please run;
 
meteor update
 
///////////////////////////////////////////////
///////////////////////////////////////////////

これで、http://localhost:3000 にアクセスするとtodo管理アプリできている。

次に実際に、プロジェクトを作成してみる

$ meteor create firstApp
firstApp: created.
 
To run your new app:
cd firstApp
meteor

すると、firstAppディレクトリ配下に以下のファイルが出来ているので、好きなようにいじるだけ。

$ ls
firstApp.css firstApp.html firstApp.js

とりあえずは何か作ってみよう。

emscriptenを試してみる

C/C++とかで書かれたコードを Javascriptのエンジン上で動かすために Emscripten っている変換ツールがあるらしい。
ってことで試してみました。
Emscripten を使うと、C/C++のコードをコンパイラに通して、それを中間コードに分解し、その命令をJavascriptのコードに変換してくれる。

実行環境は以下のとおり。
OS : ubuntu 12.04
llvmはここからダウンロードして展開する。
展開の場所はどこでもいいでので。今回はホームディレクリに展開しました。

展開が終わったら、ファイル名をcalc.cとして次のコードで試してみる。

int add(int a, int b)
{
     int c;
     c = a + b;
     return c;
}

これをEmscriptenでビルドする。

emscripten/emcc calc.c -o calc.js

calc.jsファイルができる。
中身を見てみるとCで書いたメソッドの前にアンダーバーが付いた「_add」が出来ている。

function _add($a, $b) {
  ;
  var __label__;

  var $1;
  var $2;
  var $c;
  $1=$a;
  $2=$b;
  var $3=$1;
  var $4=$2;
  var $5=((($3)+($4))|0);
  $c=$5;
  var $6=$c;
  ;
  return $6;
}

このメソッドを実際にjavascriptからコールしてみる。

var ret_add = _add(5, 10);
console.log(ret_add);

ちゃんとログで15ってログを吐き出している!
C言語で書かれたコードをライブラリとして使いたい場合に使いたい場合には使えるかも。