http://d.hatena.ne.jp/yosuke_furukawa/20111002/1317572377で知って、原文を読んでみたら罵倒しまくってて面白かったので全文翻訳してみました。 原文はNode.js is Cancerです。 ウェブデベロッパー逹は伝統的なやり方よりも冴えたやり方が大好きだが、伝統的なやり方がなぜ伝統になってるかというと動きやがるからだ。Node.jsのナンセンスな振る舞いにはしばらくムカついてたが、Node.js作者のRyan Dahlによるこのポストを読むまでは相手しないようにしてた。「UNIX難しいよぅ」とか弱音を吐くよく居るタイプのマヌケに肩をすくめていただけだ。 でも、家族連れのミニバンをガサ入れしたら50kgの上物ヘロインを見つけてしまった警官が世の中間違ってると感じるように、こいつの弱々しいすすり泣きの何が間違ってるのか考えた。たぶん、たぶん
Let's face it, writing MongoDB validation, casting and business logic boilerplate is a drag. That's why we wrote Mongoose. const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:27017/test'); const Cat = mongoose.model('Cat', { name: String }); const kitty = new Cat({ name: 'Zildjian' }); kitty.save().then(() => console.log('meow')); Mongoose provides a straight-forward, schem
昨今注目を集めているWebアプリケーションプラットフォームの1つに、「Node.js」 がある。Node.jsはJavaScriptでWebアプリケーションのサーバーサイドプログラムを実装できる技術で、高いスケーラビリティが特徴だ。本記事ではNode.jsの基本的な知識やフレームワーク「express」を用いたWebアプリケーション作成方法を紹介する。また、Webブラウザ上で動作するIDE「Cloud9 IDE」を用いてNode.jsアプリケーションをWindows Azureで実行させる方法についても解説する。 JavaScript、そして非同期・シングルスレッドで注目を浴びるNode.js Node.jsはJavaScriptでWebアプリケーションのサーバーサイドプログラムを実装できる技術で、開発プロジェクトのスタートは2009年と、比較的その歴史は浅い。しかし、ここ数年でプロジェク
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
node.js + socket.io はリアルタイムwebアプリを作るのにとても良い組み合わせだと思っています。 しかし、基本的にsocket.ioのconnectionはhttpのsessionと関連が無いので、例えばそのconnectionがログインしているユーザのものかその他のユーザのものか区別がつかない。以前はSessionWebSocketを使ってそれを判別するようにしていたのだけど、残念なことに残念なのでコレはもう使いたくない。。 そこでclientから最初にcookieを送信してもらって、そこからclientのsessionを識別する、という方法がある、と以前@masahirohさんに教えていただきました。 *1 session共有方法 クライアント側では下記のように接続時にcookieを送信するようにしておき、 var socket = new io.Socket();
Posted on May 2, 2011 by cotaro サーバサイドJavascriptのアプリケーションサーバ「node.js」と言えば、高効率の非同期処理で知られる。 非同期処理は効率と引換えにコールバック地獄に陥るという批判をどこかのサイトで読んだのだが、やってみたらまさにその通りでびっくりした。 通常のプログラミングでは、関数やメソッドの返り値のreturnを加工して処理を進めていくが、非同期処理だと、returnを無視して処理がガンガン進んでしまう。 仕方がないので、一度コールバックを定義し始めると後続の処理もすべてコールバックで処理することになる。 コールバック地獄の対策については、「東京Node学園#1「非同期プログラミングの改善」のエッセンス」というプレゼンで解決法が提示されている。
本書について 本書は、Node.jsでのアプリケーション開発を始めようとする皆さんに、 ”高度な”JavaScriptについて知るべきあらゆることを解説します。 よくある”Hello World”チュートリアルの、はるか上をいくものです。 ステータス 貴方が読んでいるのは、本書のいわゆる最終版となります。 つまり本書は、間違いが見つかった場合や、 Node.jsの新バージョンにおえる変更点を反映する時のみ、改訂されます。 最終更新日は2012年2月12日です。 本書内のコードのサンプルは、Node.jsのバージョン0.6.10でテストしています。 ターゲット読者 本書は、Ruby、Python、PHP、Javaのような、少なくともひとつのオブジェクト指向言語を理解しており、 JavaScriptについてはあまり経験がなく、Node.jsについては全く経験がないという、 著者と同じようなバッ
派手で見栄えがする大規模なプロダクトを作ろう!っていうことで、一人でフルスタックなネトゲを作っている。大きなプログラムを書いても破綻しないようにテスト書きまくってテストファーストを心がけたり、Travis-CIによる継続的インテグレーションで頑張ったり。 というわけで作っているのはMMORPGなんだけど、ここで実装するのはまあ平均的なMMORPGを想像してもらいたい。自分がやろうとしているのは、モダンなOSSとさくらの安いVPSで、独学の学生一人でもフルスタックなネトゲみたいなのが組める、ということの実証。 なんでそんなことをしているかって言うと、一応就活中で、見栄えがするアプリ提出できるとおいしいなーっていう下心。 *追記* ここでは https://github.com/mizchi/wanderer のことを言ってるんだけど大規模リファクタリング中なのでここで言ってることは半分ぐらい
Cloud9は、クラウド上で様々な操作ができます。無料でエディタ、デバッグ、バージョン管理etc、、、作ったらボタンひとつで公開までできてしまいます。有料にすれば、チーム開発環境、プライベート開発環境も構築できます。 Cloud9 IDEは、ソースコードで公開されています。せっかくですからこの高機能で美しいCloud9 IDEをローカル環境に構築してみましょう。 システム環境 Mac OS X Lion インストール手順 gitからダウンロードします。 $ git clone git://github.com/ajaxorg/cloud9.git Cloning into cloud9... remote: Counting objects: 30583, done. remote: Compressing objects: 100% (10271/10271), done. remote
早速、インストールしてみます。Macの人は、Nideからdmgファイルをダウンロードしてインストールできます。 ここではコマンドでインストールする方法を紹介します。 ターミナルで $ sudo npm install -g nide 以上でインストール終了です。簡単ですね。 では、使ってみましょう。 適当にexpressで雛形を作ります。 $ express nide_sample $ cd nide_sample && npm install Nideを起動してみます。 $ nide init Nide running at http://localhost:8123 ブラウザが起動します。これがNideの画面です。画面の左側、Project以下にファイル構成が表示されます。npmの追加削除、ドキュメント閲覧が可能です。
node.js の負荷分散について考えてみました (フェイルオーバは考慮できていません).個人レベルなので 1 台のハード上に仮想マシンを 5〜6 個立ち上げて実験しています. 見出し はじめに cluster で負荷分散 寄り道:cluster の仕組み 例えばこんな全体構成 おわりに はじめに node.js は設計上,大量のコネクションを省リソース (プロセス・スレッドをバカスカ生成しない) でさばきます.おそらく想定されているのは I/O バウンドな処理であり,この場合は基本的に非同期で処理されるため,I/O 待ちで他のリクエスト処理がブロックすることはまずありません. node.js は「サービスをつなぎ・組み合わせるためのハブ」的な位置づけが一番しっくりくるように感じます *1. ただ, 大量のリクエストをさばかなければならない ロジックが重くてコールバック処理に負荷がかかって
追記 11/12/25 Bi ってそんなに一般的ではない、 Both-Sides JavaScript の方が、ということでまた変更しました。(side でなく side's') 11/12/04 Both Side JavaScript は変ということで、 BSJS=Bi-Side JavaScript に変更しました。 本文 CSJS と SSJS で両方同じ言語で処理が書けるメリットの 1 つとして、 書いた処理の共有があげられます。 (そこにメリットを感じない人もいるかも知れませんが。) 例えば Validater を共有 クライアントの状態をサーバで再現 などがあります。前者はそのままですね。 受け取った入力のバリデーションはサーバでは必須で、フィードバックを速くするためにクライアントでも同じように行う場合があります。 今まではサーバで書いたバリデーションと同等のものを JS に
米Yahoo!がJavaScriptフレームワーク「Mojito」と、Node.jsのホスティング環境「Manhattan」発表。同一コードをブラウザ、サーバ、iOSアプリで実行可能 JavaScriptでアプリケーションを1つ書けば、それがPCでも、クラウドでも、モバイルデバイスでも動作する。米Yahoo!が発表した「Cocktails」(カクテル)が実現するのは、すべてをWeb標準で実現したクロスプラットフォーム/クロスデバイスのアプリケーション環境です。 マルチプラットフォームを実現する「Mojito」 Cocktailsの核となるのが、JavaScriptフレームワークの「Mojito」(モヒート)。 Mojitoベースのコードは、ブラウザでもサーバでも動作すると説明されています。 With Mojito, developers will no longer have to wri
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く