miyabihitoの日記

個人的な技術メモ

NPM ストック

概要

気になるNPMや把握した有用なNPMをリストアップしていく。

プロセス管理

  • node-dev

    ソースコードの修正を検知して自動で再起動してくれる開発ツール
    他のツールとの違いは、requireしているソースだけをwatchするので、設定ファイルが不要。

  • nodemon

    ソースコードの修正を検知して自動で再起動してくれる開発ツール
    coffee-scriptをデフォルトでサポートしている。

  • forever

  • PM2

    本番環境用のプロセス管理ツール(開発環境にも使える)
    KeymetricsというサービスのためのプログラムがOSS化されたもの
    foreverより機能が豊富

    • エラー時の自動リスタート
    • ソースコード修正時の自動リスタート
    • ダウンタイム無しのソースコードリローディング
    • CPU/メモリの利用状況
    • ログ管理
    • マルチプロセス化:アプリケーションのソースを修正せず、cluster moduleでのマルチプロセス化が可能
    • ES6、coffee-script対応(BabelJS等が組み込まれている)
    • デプロイツール

HTTPクライアント

  • request

    簡単に扱えるHTTPクライアント
    例えば、GETでデータを取得する時、dataイベントを扱わずに済む。
    それ以外にも色々ある。マニュアル必読。

  • SuperAgent

    Node.jsでだけでなく、browserify等を使用してブラウザでも利用できる。

XML関連

Memcachedクライアント

ロギング

設定

CLI

  • colors

    色やスタイル付きの文字列をコンソールに出力できる。

ORM

GitHubスターやNPMダウンロード数順 - Sequelize - Bookshelf.js - orm - CaminteJS

未調査

Node.js テストコード

スティングフレームワーク

mocha

express作者が開発しているテスティングフレームワーク
ConnectやSails.jsでも使用されている。

Wikiに記載の情報は要確認。(特にsinon.js)

ブラウザでの使用にも対応している。

「--watch(-w) --reporter(-R) min」の組み合わせは、TDDやBDDで便利そう!

-g [pattern]: 実行対象のテストをパターンで絞れる

Jasmine

behavior-driven development framework

Node.jsでは、「jasmine-node」を使用する。
(JasmineのGitHub Wikiからリンクされていたので、信頼できるようだ。)

Nodeunit

Easy unit testing in node.js and the browser, based on the assert module.

その他

Yadda, Cucumber.js, and so on

アサーションライブラリ

Node.jsでは、assertモジュールが提供されているが、その他のスタイルを提供するNPMもある。

should.js

BDD style assertions for node.js

  • https://github.com/shouldjs/should.js

  • 欠点 対象の変数が、nullやundefinedの時は、オブジェクトではないので、
    shouldを呼ぶと、エラーになってしまう。

expect.js

Minimalistic BDD-style assertions for Node.JS and the browser.
should.jsをベースに作られたらしい。

Chai

BDD / TDD assertion library for node and the browser

better-assert

Better c-style assertions using callsite for self-documenting failure messages.

expectations

Jasmine-style expect syntax for nodejs + browser

まとめ

とりあえず、ConnectやExpress,Sails.jsで使われている「mocha」と「should.js」を習得する。

PHPアクセラレータ

APC

概要

PHPの中間コードをキャッシュする事で、実行速度の向上を図るPECL拡張モジュール

中間コードだけでなく、ユーザデータのキャッシュも可能で、ローカルのKVSとしても使用可能。
(デメリットとして、サーバ間で異なるデータをキャッシュしている時間帯が発生し、
 アクセスするサーバによって、表示が異なるという事が起こりえる。)

設定

  • extension = apc.so
  • apc.shm_size

    個々の共有メモリセグメントの大きさ(MB)

  • apc.stat

    • On: 実行時に毎回、ソースコードファイルの更新確認をする。更新有りの時は、新バージョンをキャッシュする。
    • Off: 更新確認をしないので、パフォーマンスがあがる

etc..

備考

  • apc.phpという管理ツールも同梱されている。
  • 2012/09/03以降、バージョンが更新されていない。
  • PHP 5.5は、サポートされていない。(今後は、下記OPcacheが主流

OPcache

概要

APCと同様。ただし、ユーザデータのキャッシュはサポートされていない。
PHP 5.5.0以降では、PHPにバンドルされている。
PHP 5.2, 5.3, 5.4には、PECLで提供されている。

設定

  • zend_extension = /full/path/to/opcache.so

備考

参考資料

APCu

概要

OPcacheで提供されていないユーザデータキャッシュを提供するエクステンション
APCから中間コードキャッシュを取り除いたもの。 PHP5.5以降では、APCではなく、OPcache + APCu を使うことになりそう。

備考

設定や関数のインタフェースは、APCと変わらない

yac

APCのメンテナーの方が、開発しているユーザデータキャッシュを提供するエクステンション
また、「Experimental」との事。

Node.js テンプレートエンジン

Jade

EJS

Express対応、Sails.jsではデフォルトらしい

Swig

ECT

参考資料

Node.js Webアプリケーションフレームワーク

Express

RubyのWebアプリケーションフレームワークSinatra」に影響を受けたフレームワーク
したがって、MVCではない。
軽量で、柔軟性が高い。

koa

hapi

Connect

Sails.js

KrakenJS

Mojito

Meteor

compound.js

参考資料

https://github.com/visionmedia/express/wiki [Frameworks built with Express] http://memo.yomukaku.net/entries/8nZdDFu