You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
node.js Domain 時代のエラー処理のコーディングパターンで、node-v0.7.8でDomainという機能が入ったのを知りました。 これはいいですね! さっそく、自分好みの使い方を考えてみました。 それは、Domainを関数ごとに作る、というもの。こんな感じ。 var fs = require('fs'); var domain = require('domain'); function countChars(filename, callback) { var d = domain.create().on('error', function (err) { callback(err); // 呼び出し元にエラーを通知 }); fs.readFile(filename, 'utf-8', d.intercept(function (_, data) { callback(null
よく分からなくなるのでメモ。 Nodeの非同期を扱うライブラリasync。の機能でフロー制御関数が幾つかある。 var async = require('async'); async.waterfall([ function (callback) { console.log('waterfall 1'); setTimeout(function () { console.log('waterfall 1 done.'); callback(null, 1); }, 500); }, function (arg, callback) { console.log('waterfall 2'); setTimeout(function () { console.log('waterfall 2 done.'); callback(null, arg + 1); }, 300); }, funct
node.js を代表とする JavaScript を用いた非同期プログラミング環境においては、コーディングパターンのベストプラクティスが共有されておらず、結果として品質の低いコードが多くなるという問題があるように思います。そこで、特にエラー処理をどう書くべきか、既存のライブラリを使う方法を紹介してみることにしました。 いきなりですが、ファイルの文字数を返す関数を作ることを考えてみます。Java だと以下のような感じになるでしょうか。countChars メソッドに注目すると、エラーを例外として扱っていて、モジュラーかつ簡潔になっていることがわかります。 class FileCounter { static long countChars(String filename) throws IOException { FileInputStream is = new FileInputStre
Node.js といえば非同期処理です.そして非同期処理と言えばコールバック. そんなわけで (どんなわけで?),すぐにこんなコードになったりしがちですよね. http://stackoverflow.com/questions/3538156/file-i-o-in-every-programming-language/3538377#3538377 fs.writeFile(path, "hello", function (error) { fs.open(path, "a", 0666, function (error, file) { fs.write(file, "\nworld", null, "utf-8", function () { fs.close(file, function (error) { fs.readFile(path, "utf-8", function
https://node-ninja.com/でSocket.ioを稼働させているのですが、exception発生しちゃうと、簡単にデーモンとして稼働していたスクリプトが停止しちゃうnode.jsですが、ほんと、そういう時かなしいです。 前回紹介した、foreverをnode-ninjaでも動かします。 foreverをインストール node-ninjaのサーバはx86アーキテクチャではない?のか、手元のMacでコンパイルビルドしたforeverをプロジェクトのnode_moduleに入れてdeployしてもうまく稼働してくれません。 そこで、node-ninjaにログインして $ npm install forever -g とすると、 /home/node/local/lib/node_modules/forever/ にインストールされます。 bashの設定を変更 ~/.bashrc
daemontools使えばいいという話しなんだけど、node.jsの死活監視だけならforeverというのでモジュールでできるみたいなのでやってみた。 GitHub - indexzero/forever: A simple CLI tool for ensuring that a given script runs continuously (i.e. forever) $ forever start app.jsとかでアプリを起動できてエラーとかで死んだら自動で再起動してくれる。 あとサーバー再起動時に立ち上がるように/etc/rc.localに起動スクリプト書いた。 PATH=$PATH:/usr/local/bin NODE_ENV=production /usr/local/bin/forever start -p /path/to/forever_dir /path/to/a
node.jsでUDPサーバーを作ったので、いざこれを適当なサーバー上で運用させてみようと思ったところ、どういった形で運用すればよいのかわからない…。開発時にはnodeコマンドを使ってサーバーを立ち上げていましたが、本番サーバーでもそれでよいのか?調べていたところ、foreverというnode.js用のデーモンマネージャーがあり、これを使うのが楽そうだったので使ってみました。 foreverのインストール foreverはnpmを使ってインストールすることができます。foreverはコマンドライン上で使うので、npm 1.0系では-gオプションをつけてグローバルインストールする必要があります。 sudo npm install forever -g アプリケーションの起動 アプリケーションの管理にはforeverコマンドを使います。 forever start udpserver/udps
node.jsのサーバーはかなりナイーブで一度でもエラーが起こると停止します。そんなnode.jsのサーバーをバックグラウンドで開始し、例外発生時に理由をログにとりながら止める方法。 node.jsのサーバーを開始するには、サーバーのしかるべきディレクトリにgit cloneし、nohupでプロセスを開始します。git clone myproject /var/www/myproject nohup node app.js // または nohup node app.js > /path/to.log 2>&1 &テストをパスしたサーバーであっても、予期しない新規の例外で停止することがあり得ます。プロセスが止まるような例外であればいいのですが、'uncaughtException'が発生した場合が問題です。良くないことが起こっているのですが、それでもプロセスは止まらず、きっと後になってさら
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く