node.jsにはCommonJSのモジュールに準拠したmodule機構があり、あるファイルの中から別のファイルの中の関数やオブジェクトを呼び出して使うことができるようになっています。 モジュールには「コア・モジュール」と呼ばれ、node.jsに標準で組み込まれているモジュールの他に、第三者が開発してnpmjs.orgなどで配布されているモジュールがあります。 コア・モジュールの例はhttpモジュールやcryptoモジュールなどで、どこかからかモジュールをダウンロードしてインストールしなくても、単純にrequireすることで即座に使用可能になるものです。 例えば、次の例ではコア・モジュールであるcryptoモジュールをrequireし、DiffieHellmanクラスのインスタンスを得ています。 var crypto = require('crypto') , alice = crypto
After much thought, I decided to engineer a solution to the idea abandonment problem. I call it the ‘Init’ project (or Init.js). The core of the idea is to have a single project to start them all, to let the developer or the technical founder make all of the essential decisions at once, and receive an appropriate starting template based on those decisions. authors are vetted experts in their field
東京Node学園祭2012 アドベントカレンダー 14日目の記事です。イベントの告知の意味も含めて、毎日だれかが1つづつ node.js についてブログで書く、という企画だそうです。 そこで本題ですが、github に ajmax という node.js モジュールを公開しました。npm にも登録してあるので、"npm install ajmax" でインストールが可能です。 詳しくは readme ファイルに書いてありますが、英語なので簡単に解説すると、AJAX(eye candy 的な AJAX ではなくて、実際に非同期にデータをサーバーから取得してページの一部をアップデートするタイプの AJAX) を活用した one-page web application を作るための micro MVC framework です。 これまでいくつか AJAX を駆使したアプリを作って来ましたが、
結論 先に書くと、ここに答えがある。 node.js - How to output pretty html in Express? - Stack Overflow 問題 現時点での最新express@3.0.0rc5+jade@0.27.6でjadeをレンダリングすると、改行やインデントされずにHTMLが吐き出される。 $ express hoge create : hoge create : hoge/package.json create : hoge/app.js create : hoge/public create : hoge/public/javascripts create : hoge/public/images create : hoge/public/stylesheets create : hoge/public/stylesheets/style.css cr
intro この記事は、 東京Node学園祭2012 アドベントカレンダー : ATND の 3 日目の記事です。 (日付変更線は、はてな時間を採用しております。。 ごめんなさい m(__)m) 非同期と next() next() とは、 Express や Connect 、 Mocha 、 そして一部のフロー制御ライブラリで使われている、 関数のことをさしています。 今回は、これがどういう機能で、どういうふうに実装されているのかをスクリーンキャストで紹介します。 vimeo next() at async flow control from Jxck on Vimeo. まとめ 今回書いたコードはこちらです。 https://gist.github.com/3906371 実装方法は色々あるかと思いますが、だいたいこんな感じで実装できて、使うことができる、 わかってしまえばそんなに難
node.js のような非同期APIを使ったプログラミングに拒絶反応を示すエンジニアが多い理由の一つが、非同期APIと例外処理の相性の悪さだ。 Javascript の場合、例外処理はこんな感じに記述する。 function f(i) { try { throw new Error('an error #'+ i); } catch(e) { console.log('Error caught:', e.message); } } ところが、これに非同期APIが絡むと、とたんに分かりにくくなる。例えば下の例。 function f(i) { try { setTimeout(function() { throw new Error('an error #'+ i); }, 1000); } catch(e) { console.log('Error caught:', e.message)
先日の「node.js と thread hog の話」には、たくさんのコメントをいただいたが、やはり「イベント駆動型」のプログラミングには抵抗がある人も多いようだ。そこで、JavaScript の無名関数を使ったイベント駆動型のプログラミングの可読性が悪くないことを示すために、「朝7時に目覚まし時計をかけて眠りにつき、朝ご飯を食べ終わったら会社に行く」という典型的な「サラリーマンの朝」をイベント駆動型のJavaScriptで記述してみた。 注目して欲しいのは、素早く出来る「着替える」「顔を洗う」などの動作は割り込み不可な動作なので、通常のプログラミングと同じようにシーケンシャルに実行するが、時間のかかる「朝ご飯を食べる」「駅まで歩く」などの動作は割り込み可能な状態で実行し、"complete" のイベントを受けてから次の動作に移る点だ。 ちなみに、目覚まし時計は 「スヌーズボタン」付きな
[前回までの話へのリンク] ・node.js と thread hog の話(1) ・node.js と thread hog の話(2) では、なぜ今頃になって HTTP Server の c10k 問題(もしくは、thread hog 問題)が顕在化したのだろう。 当時(90年代の終わり頃)と比べて、もっとも大きく変わったのはCPUの性能である。クロック数は、数百MHzから数GHzへと一桁増えたし、マルチコア化もしている。CPU 性能だけ見れば、当時の数十倍の能力が出てしかるべきである。 しかし、実際の人生はそう簡単ではない。サーバーのパフォーマンスはCPU性能だけが決めるわけではないからだ。そこで、ボトルネックの一つとして注目されはじめたのが、thread の数なのである。 前回述べた様に、thread 一つあたり 2MB~8MB のスタック領域を仮想メモリ空間に確保しなければならな
[前回までの話へのリンク] ・node.js と thread hog の話(1) 最近になって「c10k 問題」が広く知られるようになったが、実際には、前回書いたように、thread を使いすぎるプログラム(thread hog なプログラム)はスケーラビリティが悪いということは、当時(90年代の終わりごろ)でもすでに「知る人は知る」問題になっていた。 複数のクライアントマシンとの間のソケットを開きっぱなしにしておく、Proxy Server、Chat Server、MMORPG に関わっている人達の間で、ソケット一つに thread を一つ割り当てるスタイルのプログラミングがスケーラビリティに欠けることが知られるようになったのもこのころである。 当時、Microsoft で MSN Messenger を作っている知り合いが「ついに1万人が同時接続しても大丈夫なアーキテクチャに到達した
ここ数日、 node.js で色々と作りはじめているのだが(node.js が一番力を発揮するのは、xmpp server や、push notification server のようにソケットを開きっぱなしにして非同期通信をするケースだと思うのだが、それについては来週のメルマガで詳しく解説する)、これで思い出すのが Microsoft 時代の「"thread hog" 退治」だ。 "thread hog" とは私が作った造語で、"memory hog" (メモリをやたらと使うプログラムのこと)と同じように、thread を不必要に作るプログラムのこと。 最初に出会った thread hog は、Microsoft が作っていた proxy server だった。コネクションが1000を超すとやたらと遅くなり、しまいには落ちてしまうという欠点を持っていたため、一時は「出荷出来ないところか、
[JavaScript] Jenkinsの対抗馬になるか?ビルド管理をJSで行うGrunt.jsの内容説明とスタートアップ こんにちは、ビルド管理といえばJenkinsだと思っていた@yoheiMuneです。 最近、node.js上で動くJavaScriptのビルド管理ツール「Grunt.js」について学んだので、今日は簡単な説明と 「Hello World」的なところまで書きたいと思います。 Grunt.jsとは何? grunt.jsは、grunt@Githubで公開されている ビルド管理ツールです。 個人的には、Jenkinsがビルド管理ツールとして有力だったのですが、 grunt.jsではフロントエンドのビルド作業を楽にできるいい感じのツールです。 Jenkinsでは例えば以下のようなビルドを行うと思います(JavaのWebアプリケーションの場合)。 checkStyleやfingB
jadeはテンプレートエンジンなので、サーバサイドでテンプレートにデータをバインドしてHTMLを返すことができる。しかし、Node.js + express + jade + jQuery Mobileを使ってアプリケーションを作る場合には、以下のルールに沿って開発した方が良いという結論に(個人的に)なった。 サーバサイド Node.js + expressによって、RESTfulなJSON APIを提供することに専念 jQuery Mobileでは単一画面が基本となるため、jadeはその単一画面の生成を効率良く書くことにのみ利用 クライアントサイド jQuery Mobileによって、単一画面によるUIを構築 サーバへの要求はjQueryでAjaxを使い、取得したデータをクライアント側のJSでバインドして画面を構築 リアルタイム処理が必要であれば、Socket.IOを使う 考察 メリット
そんな組み合わせを使う機会に恵まれたのでせっかくだからメモ。 websocketとかやりたい人はそれようのサンプルがいっぱいあると思うのでそっちを見たほうがいいです。 mongodb は既にインストールされていることを前提として書きます。 # node.js のインストール $ git clone git://github.com/ry/node.git $ cd node $ ./configure $ make $ sudo make install node.js がインストールできたら、ruby でいうところの gem のような npm をインストールして便利なものを追加していきます。 # npm のインストール $ curl http://npmjs.org/install.sh | sudo sh # node.js 用フレームワーク express のインストール $ sud
node.js ハンズオン資料¶ このドキュメントは node.js をハンズオンを通じて学習するためにまとめた資料集です. プログラミングの基本を知っている Unix コマンドの基本を知っている JavaScriptの基本を知っている ことを前提に、node.js 上で動作するプログラムの作成を通じて、node.js を学習していきます。 最新版 ソース オンライン log 2010/10/30 絶賛作成中. 非同期IOメソッドを使う まで完了. 入れてほしいコンテンツがあれば @yssk22 まで.
ATNDはhttp://atnd.org/events/8626、ハッシュタグは#riajyuです。 会場提供はGREEさまです。いつもありがとうございます。 今回は、なんか流れでいつの間にかに僕がハンズオンの講師という立場になってました。 で、一応資料としてはnode.jsのインストールからWebSocketを使った簡単なサンプルが動かせるところまでを用意しました。前回までのエントリがそれにあたります。 資料1. node.jsとnpmのインストール http://d.hatena.ne.jp/t_43z/20101013/1286957802 資料1補足. Cygwinや仮想化なしでnode.jsをWindowsへインストール http://d.hatena.ne.jp/t_43z/20101020/1287545238 資料2 ExpressとWebSocketを使ったWebSock
追記 ここの内容は Socket.IO のバージョンが v0.7 に上がったことで、古くなりました。 v0.7 については Socket.IO API 解説 - Block Rockin’ Codes を参照してください。 本文 リアルタイムWebハッカソン : ATND に参加しました。 みなさん websocket を用いて開発する感じで、websocket の実装としては node.js を筆頭に jetty や ChannelAPI の話も聞けてかなり充実したハッカソンだったと思います。 ここで自分は node.js の websocket ライブラリである socket.io をいじってたんですが、 いくつかアプリ書いて、共通するのは以下のような感じだなということで簡単なメモ。 socket.io でエコーサーバ websocket でリアルタイムなアプリとなると、socket.
前回は、pywebsocketでのWebSocketを紹介しましたが、HTML5 hack-a-thonでは結局node.jsの実装である Socket IOとSocket IO-nodeを使いました。 こちらも備忘録。 node.js node.jsはいわゆるサーバサイドJavaScriptの一つで、最近にわかに注目を集めてる(?)技術です。 主な特徴は もちろん全てJSで書ける。 コアがGoogleのV8エンジンで速い イベント駆動I/O node.jsの概要自体は、こちらのPREZIを使ったプレゼンが簡潔で分かりやすいかと思います。 Introduction to node.js by Toshihiro Shimizu on Prezi 丁度今日、node.jsの48時間耐久Hack-a-thonが開催されていました。 その名も、Node.js Knockout。@mesoさんも参
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く