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

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

nodejsでモジュール(クラス)作成

初めてNodeを使ったときは、どばーっと1ファイルに書いちゃって
ものすごく可読性が良くないソースを書いてしまった。
nodeで独自モジュールを作成できるので、その方法についてメモ。nodejsでの「モジュール」というのはオブジェクト指向言語でいう「クラス」みたい位置づけです。
javascriptなので、中身はライブラリみたいな関数オブジェクトの集合体になります。
(さらに…)

Node.jsをデバッグオプションでデバッグしてみる

前にnode-inspectorを使ってのデバッグ方法を書いたけど、node-inspectorをバッググランドで起動させたり、デバック用のポート(例:http://localhost:8080/debug?port=5858)にアクセスするとか面倒だったのNode.jsのデバッグオプションを使ってgdbライクにデバッグしてみました。
※サンプルはお絵描きアプリです。
(さらに…)

dotcloudバージョンアップ後にNodejsがデプロイ出来ない対処

dotcloudがバージョンアップしてから、今までのDeploy出来てたものが出来なくなった。。。
port8080のwarningがでてるし、吐き出されたURLにアクセスすると、502。。

同じ現象で解決している人がいたので参考にしながらやったらうまくいったのでメモを。

まずログの確認。

$ dotcloud logs アプリケーション名.www
# tail -F /var/log/supervisor/*.log
==> /var/log/supervisor/node-stderr—supervisor-BkNQQ9.log <== at Function._resolveFilename (module.js:317:11) at Function._load (module.js:262:25) at require (module.js:346:19) at Object. (/home/dotcloud/rsync-xxxxxx/フォルダ名/node_modules/express/node_modules/connect/lib/middleware/compress.js:14:12)
at Module._compile (module.js:402:26)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
at require (module.js:346:19)
at Object.compress (/home/dotcloud/rsync-xxxxxx/フォルダ名/node_modules/express/node_modules/connect/lib/connect.js:89:14)
 
==> /var/log/supervisor/node-stdout—supervisor-l9fdKH.log <==

express/node_modules/connect/lib/middleware/compress.jsとexpress/node_modules/connect/lib/connect.jsで何かやらかしてるらしい。。原因はローカルとdotCloudでconnectのバージョンが違うことらしい。

(さらに…)

expressでBasic認証

expressを使用してBASIC認証を試してみたよ。

やり方は、expressのbasicAuthメソッドをcreateServer時に叩くだけ。
これで、サーバはクライアントに401を返すので、ブラウザからユーザ名とパスワードを入力すると
authorizeメソッドが呼ばれます。

var app = express.createServer(express.basicAuth(authorize));
// Basic Auth
function authorize(username, password) {
    return 'username' === username & 'password' === password;
}

3行目以降を次のように変更すれば、パスを分けてBasic認証することが可能っす。

app.all('/hoge/*', express.basicAuth(function(user, password) {
  return user === 'username' && password === 'password';
}));

 
 
■■■■■■■■ 追記(2012/10/18) ■■■■■■■■
expressのバージョンがあがって使い方が少し変わりました。

app.configure(function(){
  app.use(express.basicAuth(function(user, pass){
    return 'username' == user & 'password' == pass;
  }));
 
  app.use(app.router); // これより前にBasic認証を書く
 });

Node + webSocket on dotCloud

dotCloud上でNodejsを使ってみたときのメモ。

まずはアプリケーションの作成(nodechatがアプリ名)

$ dotcloud create nodechat

ビルドファイル(dotcloud.yml)の作成

#dotcloud.yml
www:
  type: nodejs
  approot: chat

packge.jsonはこんな感じ

#packge.json
{
  "name": "nodechat",
  "version": "0.0.0",
  "dependencies": {
    "express": "*",
	"ejs": "*",
    "socket.io": "*"
  },
  "devDependencies": {}
}

続いて、supervisord.confをこんな感じに設定する

#supervisord.conf
[program:node]
command = node server.js
directory = /home/dotcloud/current

最後に、グローバルにインストルしたnpmのモジュールを紐つけます。

$ npm link express ejs socket.io

(さらに…)

php on dotcloud

dotcloudを試してみました。
dotcludはPHPやPerl、Ruby、Java、Python、Node.jsなど複数の言語と、MySQL、PostgreSQL、MongoDB、CouchDB、Redisなど複数のデータベースを開発者が
自由に組み合わせてプラットフォームを構成できて、クラウド上のPaaSとして利用できるみたい。
料金はどのプログラミング言語とデータベースを選択しても同一で、2サービスまでは無料で利用可能とのこと。

これは試すしかないと思ってとりあえず、チュートリアルに従ってやったときの手順をまとめておきます。

まずはdotcloudへの登録
dotcloudへアクセスしてのFreeの「Sing up now」を選択。
いろいろ登録

次にクライアントCLIをインストール
書いてあるけど念のためここにも書いておく
【Linux】

$ sudo easy_install pip && sudo pip install dotcloud
$ dotcloud
Enter your api key (You can find it at http://www.dotcloud.com/account/settings):APIキーを入力

【Mac】

$ sudo easy_install pip && sudo pip install dotcloud
$ dotcloud
Enter your api key (You can find it at http://www.dotcloud.com/account/settings):APIキーを入力

これでクライアントCLIツールのインストールが完了

次は実際にphpで書いてみよう。
(さらに…)

Node.jsのアンインストール

Nodejsのインストールについて書かれている記事はたくさんあるけど、Nodejsやパッケージのアンインストールあまり記事か無いので書いておきます。

■ Nodejsのアンインストール

$ cd node-v0.1.103
$ sudo make uninstall

■ npmのアンインストール

$ sudo npm uninstall npm -g

■ パッケージ(グローバルオプション付き)のアンインストール

$ npm uninstall -g “パッケージ名”

グローバルオプション(-g)を指定ないでインストールをしたパッケージは

$ npm uninstall “パッケージ名”

これでインストールしたものは削除完了なはずです。
 

おすすめ書籍