タグ

ブックマーク / hakobera.hatenablog.com (8)

  • EventEmitter.emit() によくある勘違い - hakobera's blog

    突然ですが、Node.jsで次のプログラムを実行した結果を答えてください。 var EventEmitter = require('events').EventEmitter; var event = new EventEmitter(); console.log('1'); event.on('open', function () { console.log('2'); }); event.emit('open'); console.log(3); 正解は少し下の方に書いてあります。 少しだけスクロールを我慢して考えてみてください。 正解は 1 2 3 です。 1 3 2 だと思っていた人も多いのではないでしょうか。(私だけかもしれませんが) つまり、表題の「EventEmitter.emit() によくある勘違い」とは、EventEmitter.emit()が次のイベントループで実行さ

    EventEmitter.emit() によくある勘違い - hakobera's blog
    y-kawaz
    y-kawaz 2012/12/11
    何故か自分はこの勘違いしたことがなかったなぁ。多分クライアントサイドでもEventEmitter多用してるし実装がどうみても同期的だし勘違いする前に慣れちゃったからかな…。むしろemit自体が非同期だったらdataとか困るね^^;
  • Router-Line はじめました - hakobera's blog

    4/18 に開催された 東京Node学園 5時限目 で @KOBA789 さんが自作のルータである Router-Line を紹介していました。 その時から便利そうとは思っていたのですが、最近ちょっとした API サーバを書く時に実際に Router-Line を使ってみて、改めて良いなと思ったので、サンプルを見せながら、個人的に便利だと思う使い方を紹介します。 Router-Line とは KOBA789/router-line · GitHub github で「A URL routing module for Node.js」と書いてある通り、Router-Line はシンプルな URL ルータで、それ以外の機能は持っていません。サーバを構築するには Node.js の http モジュールなどと組み合わせて使う必要があります。 個人的には API サーバのルーティングには、Expr

    Router-Line はじめました - hakobera's blog
    y-kawaz
    y-kawaz 2012/05/09
    なるほど
  • Node.js vs Play vs SAStruts - hakobera's blog

    前置き Experiences with Node.js: Porting a RESTful Service Written in Java - ZiggyTech 上記記事では、実験的にJava (Jersey + Hibernate on Tomcat) で実装された REST API サーバを Node.js で書きなおしてみたら、少ないリソース(CPU/メモリ使用量)でほぼ同等のパフォーマンスが出せたよ(ただし、O/Rマッパーを使用しない場合)、と書いてあります。この件に関して @koichik さんとやり取りしていた中で以下のような意見を頂いたので、実際にやってみましたという記事です。 @hakobera メジャーってことだと,あの比較が Play ではなく Tomcat なのは正解.日的には Jersey ではなく Struts (もちろん 1 の方)なら更によかったw 2

    y-kawaz
    y-kawaz 2012/03/07
    この数値だけみるとコアの数までcluster増やせば余裕でNodeが逆転しそうなんだけど。ついでに試しておいて欲しかった。
  • Node.js と Titanium で SlideShare リモコンを作ってみた - hakobera's blog

    2012/1/11 に開催した 「Node塾 講義その5 Node.js × Titanium」の発表用に SlideConcert というアプリを作って、実際にそれを利用して発表してきました。 個人的にLTをする時に便利だなと思うを機能を実装してみました。 スライド発表時は結構歩きまわるたちなのでスライドを操作できるリモコンが欲しい 発表前に「今日のスライドです」と URL をハッシュタグ付きでつぶやくことが多いのでこれを簡単にしたい スライドの内容を手元で確認したい スライドの進行を見ている人で共有したい(進行も含めてスライド共有したい) 聞いている人の感想をリアルタイムで知りたい 言葉で説明するのも難しいので、実際の動作は以下の動画でご確認ください。 サーバは Node.js 、クライアントは Titanium という組み合わせで、構想1時間、実装がアイコンの作成なども含めて年末年始

    Node.js と Titanium で SlideShare リモコンを作ってみた - hakobera's blog
  • mocha と Jenkins で Node.js の CI 環境を構築する - hakobera's blog

    最近、mocha をつかってテストを書くのが楽しくなってきました。でも、テストの数が増えてくるとローカルでの実行だけでなく、CI 環境が欲しくなりますよね。github にあげられるようなプロジェクトだったら、Travis CI も良いですが、実際に仕事で使うとなると、既存の Jenkins と組み合わせてやる必要ができてきたので、実際にやってみました。 基的な手順は以下の通りです。 mocha でテスト結果を TAP 形式でファイルに出力する 出力したファイルを Jenkins の TAP Plugin に読み込ませる 簡単ですね。 実際にやってみた というわけで、以下のような最小構成で試してみます。 myapp |- lib | |- calc.js | |- test | |- calc.test.js | |- package.jsonここには書いていませんが、実際は git

    mocha と Jenkins で Node.js の CI 環境を構築する - hakobera's blog
  • もし node v0.4.9 (64bit版) が Crankshaft を有効にしたら - hakobera's blog

    Node v0.5.1 がリリースされて、64bit 版でも Crankshaft が有効になって、V8 Benchmark Suite を移植したりして、色々ベンチをとっていたら、「Crankshaft はえぇーーーーーーーー!」という結果になった。 hakobera/node-v8-benchmark-suite · GitHub で、各バージョンのベンチマークでも取ろうと思ったら、既に @muddydixon さんが既に取っていたので、 NodeのVersionゴトの簡単なベンチマーク - ぽりぴぃすらいと @koichik さんから教えてもらった 0.4 ブランチをチェックアウトして deps/v8 以下を削除,そこに v8 をまるごとクローンしてビルドすれば Node 0.4.9 + V8 3.4 のできあがり♪ という別のネタをやってみました。 手順 wget http://n

    もし node v0.4.9 (64bit版) が Crankshaft を有効にしたら - hakobera's blog
  • Clound Foundry の Node で 動く Data URL Proxy Server を書いた - hakobera's blog

    以前、GAE/J で同様のものを書いて利用していたのですが、大した処理じゃないのにスピンアップの時間が1〜2秒かかって初回レスポンスが遅いので、Cloud Foundry で動かせるように Node 版に書き換えてみました。Express 使うほどの処理ではないのですが、趣味と慣れの問題で使ってます。 こういう小物の Proxy や API サーバを置くには、Cloud Foundry (もしくは dotcloud) の Node がコードも短いし、インフラ整備もいらないので良いんじゃないかと思います。 ソース base64 encoding images using express in NodeJS — Gist /* * node-dataurl-proxy * * This code can run in Clound Foundry (http://cloudfoundry.co

    Clound Foundry の Node で 動く Data URL Proxy Server を書いた - hakobera's blog
  • Kinect を操作できる Node.js モジュールを作ってみた - hakobera's blog

    Kinect ハッカソン Vol.2 の時に仕上げ損なったやつを GW で時間があったので、完成させました。libfreenect のラッパーなので、ボーンは取れません。 hakobera/node-freenect · GitHub スクリーンショット (Kinect を WebSocket 経由でコントールしてるところ) 前に作った Kinect.js よりは速いのですが、正直、期待したほどの速度は出なかった(深度データのみ取得が MBA13 で 5-8 FPS) ので、実用性の面でお蔵入りしそうですが、全部 JavaScript で書けるのはやはり気持ち良いですね。 以下のようなコードが書けます。 var Freenect = require('freenect'); var kinect = new Freenect.Kinect(), ledOption = 0, prev =

    Kinect を操作できる Node.js モジュールを作ってみた - hakobera's blog
  • 1