2010年4月29日木曜日

node.jsまでの道のり2(node.jsでHelloWorldの巻)

今回の概要:
  1. node.jsをインストールするためのツール(git)をインストールする。
  2. node.jsをビルドするためにコンパイラ等のツール(build-essential)をインストールする。
  3. node.jsをビルド(make等)する。
  4. 簡単なJavaScriptサーバプログラムを書く。
  5. プログラムをnode.jsで動かす!
まずはUbuntuを起動し、「アプリケーション」から「端末」を起動。
そこで git --version とコマンドを打ってみる。
gitがまだインストールされてなければ、インストール方法を教えてくれる。
sudo apt-get install git-core とやれば git をインストールできる。
git --version とやって、インストールされたgitのバージョンを確認。次に、
git clone git://github.com/ry/node.git
というコマンドを打ち、gitを使ってnode.jsをダウンロードを開始。
ダウンロードが終わると node というディレクトリができるので、cd node で移動し、ls -l で中身を確認。
ここで ./configure とやって node.js のビルドを進める必要があるが、Ubuntuインストール直後だと could not configure a cxx compiler! のエラーが出る。

そこで、sudo apt-get install build-essential とコマンドを打ち、コンパイラやライブラリなど、ビルドに必要な環境を手に入れる。
試しに gcc --version で gcc のバージョンを確認。うまく入ったようだ。
あらためて ./configure してみる。今度は成功したみたい。
make してみる。
ls -lt とやってみると、build ディレクトリが出来上がっていることが判る。
続いて、sudo make install とやれば、node.js のインストール完了!
ドキドキしながら node --version とやってみる。node.js インストール成功!
テキストエディタを使って、ネットで見つけたサンプルコードを入力して保存。
ファイル名は適当に test.js にしてみた。
node test.js とコマンドを打つと、node.js が起動して test.js プログラムが実行された。
このプログラムは、ポート8000でリクエストをlistenし、リクエストが届いたらレスポンスコード200(正常)という情報と、レスポンスの内容がHTMLであることを示す情報をヘッダにセットして、ボディ部にはHello Worldというテキストのレスポンスをクライアントに返す。プロトコルはHTTPとし、コネクションのタイムアウトは2000ミリ秒、って感じでしょうか。
JavaScriptの匿名関数をうまく使ったシンプルなコードですが、頑張れば色んなことができるみたい。
雰囲気つかんだので、node.jsこの辺で終了〜!

node.jsまでの道のり1(VirualBox+Ubuntu環境を作ってみるの巻)

マシン環境を汚したくなかったので、node.jsはとりあえず仮想環境にインストールしてみることにしました。
仮想環境なら壊したい放題。気に入らなければ簡単に過去にタイムスリップできますしね。
という訳で現在最新の VirtualBox 3.1.6 をここからダウンロードして適当にインストール。

VirtualBoxがインストールし終わったら、VirtualBox用のUbuntuここからダウンロード
最新は9.10だったけど、VirtualBox用はUbuntu 8.04みたい。でも気にしない。


ダウンロードしたzipファイルを解凍したらUbuntu-8.04-Japanese.vdiってファイルが出てくるので、これをVirtualBoxに認識させれば、インストール済み状態でUbuntuが起動されるため、インストールの手間を省ける、というラクチン作戦でいくことにしました。

という訳で先ほどインストールしたVirtualBoxを起動し、「新規」をクリックしてウィザードを開いて、あとはこんな感じでやってみた。



ここで空のディスクを選ばずに、ファイル参照のアイコンをクリック。

こんな画面が開いたら、追加をクリックしてさっき解凍したUbuntuのvdiファイルを選択。

こんな感じになったら完了を押す。
これでVirtualBox+Ubuntu環境ができた。矢印アイコンを押して起動してみる。
Ubuntuが起動したら、いくつか簡単な初期設定をやる。
ログイン画面が出て来たら、初期設定で入力したアカウントでログイン。
ちなみにもしIntel Macで仮想環境の呪縛から逃れたいときは、左のcommandキーを押せばおk。

あと、やなこと全部忘れたいときに重宝するので、この辺で一度スナップショットを作成しておくといいかも。
試しに2回ほどスナップショットをとってみる。

スナップショットをとったときの状態にタイムスリップできるようになるので、これでもう壊したい放題。
念のためUbuntuを最新の状態にしてみる。

けっこう時間がかかるので、その隙に洗濯してお茶でも飲んで一服してみる。

アップデートが終わったら、もっぺんスナップショットをとってみる。
ウインドウを閉じて、作業を一旦中断する。
状態を保存しておけば後でまた作業を再開できるので大変便利。

壊したい放題のUbuntu環境のできあがり!

node.jsでサーバサイドJavaScript

node.jsを使えば、たった20行のJavaScriptでHTTPプロクシサーバを書けるという、気になる記事を海外で見つけました。
しかもそれはたくさんの人が同時にアクセスしても問題なくイベントドリブンするし、スケール可能な素晴らしい代物なのだとか。
ソースコードも公開中です。

グーグル先生に聞いたところ、node.jsはGoogle V8の技術がベースにあるようですね。
チャットとか、DBアクセスとか、色んなことができるみたい。
JavaScriptでサーバ?って何かピンと来ない感じだったんですが、面白そうなのでちょっと動かしてみました。
その様子はまたのちほど。

Hello World!

# egrep "funny (news|technologies|something)" ~/my_brain
#