タグ

ブックマーク / blog.dakatsuka.jp (8)

  • Redis の Pub/Sub を使って Node.js + WebSocket のスケールアウトを実現する方法

    Node におけるスケールアーキテクチャ考察(Scale 編)というエントリーを読んで、RedisはPub/Sub型通信をサポートしているという事を知りました。エントリーでも言及されているように、Pub/Subを使えば Node.js + WebSocket サーバをスケールする際に、中継サーバの役割を果たす事が出来るはずです。 そんな訳で実際に Node.js と Redis を使って Pub/Sub の実験を行なってみました。ユーザが別々のNode.jsサーバに接続していてもWebSocketを通してメッセージのやり取りを出来るようにします。 イメージとしてはこんな感じです。 下準備# Ubuntuの場合は apt-get で1発でインストールする事が出来ます。 $ sudo apt-get install redis npmでredisモジュールをインストールします。 $ npm i

    Redis の Pub/Sub を使って Node.js + WebSocket のスケールアウトを実現する方法
  • node.js で コマンドライン引数を取るには

    node.js でコマンドライン引数を取りたい場合は opts というモジュールを使うことで簡単に実現出来ます。 optsモジュールは npm でインストールします。 var http = require('http') , opts = require('opts'); opts.parse([ { 'short': 'p', 'long': 'port', 'description': 'HTTP port', 'value': true, 'required': false }, ]); var port = opts.get('port') || 3000 server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('<

    node.js で コマンドライン引数を取るには
  • Rails3 + OmniAuth で mixi OpenID を使うための設定

    OmniAuthを使ってTwitterやFacebookと連携・認証をする方法はググればたくさん出てくるのですが、mixi OpenIDを使ったやり方は出てこなかったので調べてみました。 OmniAuthの設定# config/initializers/omniauth.rbに以下を記述して保存します。OpenID.fetcher.ca_fileを指定しないと Warning が出まくるのでしっかり指定してあげましょう。 require 'omniauth/openid' require 'openid/fetchers' require 'openid/store/filesystem' OpenID.fetcher.ca_file = "/usr/lib/ssl/certs/ca-certificates.crt" Rails.application.config.middleware

    Rails3 + OmniAuth で mixi OpenID を使うための設定
  • Node.js アプリをデプロイして Upstart で起動させる Capistrano レシピを書いた

    Node.js アプリをデプロイする場合、Heroku などの PaaS を使っているとすごく簡単なのですが、デプロイ先が VPS や専用サーバの場合、何かしらのツールを使ってデプロイをする事になると思います。 今回はデプロイツールに Capistrano を使うことにしました。ただ、Capistrano はそのままだと Rails 用になっているので、Node.js 用に少しレシピを書き換えます。ちなみに当初の予定では起動・監視ツールに Node.js製の Forever を使うはずだったのですが、v0.5系でうまく動作しなかったので急遽 Upstart で代用することにしました。他にも Upstart + God という組み合わせも良さそうですがまだ未検証。 # This program is free software. It comes without any warranty,

    Node.js アプリをデプロイして Upstart で起動させる Capistrano レシピを書いた
  • Node.js + Vowsではじめるテスト駆動開発

    Node.jsで使えるTDD, BDDフレームワークはいくつかあるのですが(nodeunit, Jasmine, etc)コールバック・イベント周りのテストのしやすさとCoffeeScriptが利用出来る Vows が非常に熱い感じです。 特にテストコードをCoffeeScriptで(別途コンパイルせずに)そのまま記述出来るのは、テストコードの可読性を考えると大きなメリットだと思います。 Vowsのインストール# VowsはNode Package Manager(npm)でインストールする事が出来ます。vowsコマンドを有効にするためにカレントディレクトリの node_modules の他にグローバルにも入れておきましょう。 npm install vows npm install -g vows Vowsを使った開発手順# サンプルとして自分のフルネームを返す事しか出来ないPerson

    Node.js + Vowsではじめるテスト駆動開発
  • Rails3 + cover_me でテストカバレッジ

    あとはいつも通りrake specを実行すれば、自動でcoverageディレクトリが作成されその中にカバレッジ結果が格納されます(HTML形式)。 お手軽です! ちなみにMacではテスト終了後自動でブラウザが起動してHTMLを表示してくれましたが、Ubuntuではエラーが出たため、下記コードをlib/tasks/cover_me.rakeの先頭に追加して自動でブラウザが起動しないようにしました。

    Rails3 + cover_me でテストカバレッジ
  • APIの作成に特化したRuby製フレームワーク grape を試してみた

    RESTful API の作成に特化したマイクロフレームワーク grape の存在を知ったので調査してみる事にしました。API の実装 に Rails の ActionController は重厚すぎる、Sinatra は軽いけど手間がかかる。。。という中で作られたこのフレームワーク、はたしてその実力は… grape の特徴# grape の特徴は概ね以下の通りです。grape 自体が Rack アプリケーションなので Rails3 に組み込むことが出来ます。というよりは組み込んで使うのが前提のようです(勿論単体でも動きます)。 Rack アプリケーション Sinatra ライクな DSL 自動で JSON にシリアライズ(#serializable_hash または #to_json が存在すればOKみたい) grape を使ってみる# 特徴を掴んだところで、実際にインストールして使って

    APIの作成に特化したRuby製フレームワーク grape を試してみた
    a2ikm
    a2ikm 2011/05/27
    APIのバージョンをURLに含めるのはTwitterがやってるけど、結局1以外使われていなさそうだ
  • Gitを使った開発・運用フローの紹介

    私の所属している会社では、2年程前にバージョン管理システムをSubversionからGitに移行し、現在まで開発フローを試行錯誤してきました。ようやく形になってきたということで、守秘義務に接触しない程度に紹介&考察していきたいと思います。 形になってきたとはいえ、まだまだ試行錯誤中ですので色々なツッコミは大歓迎です。 現在の開発フローの俯瞰図# 現在の開発フローを俯瞰してみると大体下記図のような感じになっています。途中で図を書くのが面倒になった都合上、Jenkinsさんが1人しか居ませんが、実際はmasterブランチの他にreleaseブランチも監視してもらっています。 以降この図を元に話を進めていきたと思います。 Gitoriousを利用して自由に開発# GitoriousというGitHubに似たサービスがあります。このGitoriousはオープンソースとしても公開されていますので社内に

    Gitを使った開発・運用フローの紹介
  • 1