2012年10月28日日曜日

Node.jsについて個人的なまとめ


原本はこちら

1. Node.js

 - ブラウザ以外のところで動くJavaScriptフレームワーク
 - JavaScriptエンジンとしてGoogleのV8を採用
 - 一部のCommonJS仕様を準拠している。(ModuleとUnit Testingらしい)
 - Nonblocking I/O フレームワーク
 - イベントドリブン
 - 基本的にシングルプロセス(クラスタ化でマルチ可能)

2. メリット

 - JavaScript
  ・意外とJavaScriptが使いやすいと思ってる人が多いので。一応言語を覚えるハドルは低いかな。
 - CoffeeScript使用
  ・こっちかな。
 - JSON
  ・当たり前だけどJSONは結局JavaScriptなのでJavaScriptよりJSONに得意な言語はないと思う。
 - V8エンジン性能が良くて改善も早い。
 - 性能がいい。
  ・どこで見たか覚えてないが、基本的にNode.jsがJavaよりは遅いが、PHP(Python, Ruby)より3〜10倍性能がいい。
 - npm
  ・Node Package Manager
 - C/C++ Addon
 - NoSQLと相性がいい。

3. デメリット

 - まだ商用で使うには不安定な部分がある。
 - 開発者が少ない。
  ・JavaScript開発者がNode.jsの開発者ではない。
 - メジャーでもない。
 - 非同期処理なのでエラーハンドリングが難しい。
 - 基本的にシングルプロセスなのでどこかでシステムエラーが発生するとサーバダウン。
  - Hot deployができない。

4. Node.jsに合うユースケース

 - 同時リクエストが多い軽量処理。リアルタイムサーバ
  ・Gameサーバの一部
  ・チャットサーバ
 - RESTful + JSON
  ・RESTfulなAPI用のサーバならいいと思う。
  ・JSONならJavaScriptほど得意な言語はないと思う。
 - ページが少なくてAjaxでほとんどの処理をするパターン


5. Node.jsに合わないユースケース

 - I/OよりCPUを使う処理が多いパターン。
  ・動画エンコーディング
 - 静的コンテンツ用サーバ
  ・画像、動画や静的なHTMLページなどのサーバ。
  ・Node.jsよる用途にあうサーバが色々ある。
 - 単純なHTMLレンダリングとCRUD用サーバ
  ・既存のいいものがいっぱいあるはず。
  ・PHP, Python, Rubyなど。こっちが使えるフレームワークなどを色々あるし。

6. 知られている問題

  - メモリリークがあるらしい。バグ?

2012年10月17日水曜日

npm コマンドまとめ

よく使うnpmコマンドをまとめてみた。

npmコマンドまとめ