2011-04-01から1ヶ月間の記事一覧

オープンソースカンファレンス2011 Kansai/Kobe でNode.jsの発表を行ないました

4/16(土)に開催されたオープンソースカンファレンス2011 Kansai/Kobeで、Node.jsの発表を行ないました。 朝早くから多くの方に参加して頂き、大変ありがとうございました。 拙い説明で申し訳ございません。資料をアップロードさせて頂きます。Node.jsを使…

参考資料

UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI developerWorks「Boost application performance using asynchronous I/O」 「同期I/O」と「非同期I/O」の定義、とか 非同期I/O 概説 epoll を使った echo サーバ libevでechoサーバ…

Node.jsの処理フロー

Node.jsでは、「libev」と「libeio」を組み合わせて使用しています。 下記のようなファイル読み込み処理を実行すると以下のような処理フローになります。 var path = require('path'), fs = require('fs'), filepath = path.join(__dirname, 'a.txt'), fd = …

libeioのサンプルコード

「libeio」は、C言語で書かれた非同期I/Oライブラリです。 実装的には、キューとスレッドプールを使い、I/Oを非同期並行処理します。 先程の「Boost application performance using asynchronous I/O」の図の右下(Asynchronous + Non-blocking)に「libeio…

libevでechoサーバ

libev版 echoサーバ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <arpa/inet.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <ev.h> #define SERVER_PORT 8011 #define MAX_BACKLOG 10 #define MAX_EVENTS 100 #define RCV…</ev.h></errno.h></fcntl.h></unistd.h></arpa/inet.h></sys/types.h></sys/socket.h></string.h></stdlib.h></stdio.h>

epollでechoサーバ

epollとlibevをそれぞれ使って、echoサーバを実装すると以下のようになります。 ubuntu 10.10で実行しました。 epoll版 echoサーバ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/epoll.h> #include <unistd.h> #include <fcntl.h> #include <netinet/in.h> #define SERVER_PORT 8012 #</netinet/in.h></fcntl.h></unistd.h></sys/epoll.h></sys/types.h></sys/socket.h></string.h></stdlib.h></stdio.h>…

Node.jsと非同期I/Oと混乱した私

最近、Node.jsに興味があります。Node.jsを調べていると、I/O関係で、非同期I/O、ノンブロッキング、コールバック等、いろいろとキーワードがでてきて混乱してきます。 そこで、ブログに書いて整理しよう思います。間違いがあれば是非、指摘してください。 …