ブックマーク / badatmath.hatenablog.com (4)

  • node.js とは何か - I am bad at math

    期せずして久々の更新になってしまった。ブログを書く気がなくなったとかそういうのではなくてただ単に忙しかっただけ。その間、まぁ仕事が予期せぬ方向から炎上してみたり、事故をもらって愛車が全損したり(フロントガラスが全面熱線入りなんていう変なオプションなどを諸々付けていたからお気に入りだったのに)と決して良いことばかりで忙しかったわけではないけどね! で、今回は node.js のお話。異様な盛り上がりを見せているものの、じゃぁそれっていったい何かというと「JavaScriptを用いたNon-blocking I/O環境」という非常にシンプルなものだ。 その根底には「うまくスケールできること」と「動作が速いこと」という理念が見受けられる。 まず「うまくスケールできること(多量のアクセスを捌けること)」を解決するにあたり、まずはスレッドモデルか、イベントループかという問題があった。そこで auth

    node.js とは何か - I am bad at math
    Qurage
    Qurage 2013/11/27
    (2010.10.20) node.js の背景
  • node.js とは何か (2) - I am bad at math

    昨日に引き続き、いざ!part2なのだ。 前回では node.js と v8 の結びつきまでを書いたので、今日は Non-Blocking I/O の話を。 Non-Blocking I/O という言葉からブロックしない I/O をイメージするのはたやすい。でもこれを実現しようとなるといろいろとまあ面倒くさいんだよね。 それを解決する常套手段で言うとファイルディスクリプタ(ネットワークならソケットだね)を開いてそれをselectシステムコールの監視対象に加えておき、selectを呼び出すことで監視するっていう方法がある。こうすると何が嬉しいのかファイルディスクリプタが2つある場合で考えてみよう。 まずAとBというファイルディスクリプタを監視対象とする。 selectシステムコールを呼び出し、そのどちらかが読み出し準備完了となっていないかを確認する。 もしどっちも準備できていなかったらプロセ

    node.js とは何か (2) - I am bad at math
    Qurage
    Qurage 2013/11/27
    (2010.10.22) node.js のことを node.js 周りのことも含めて詳しく紹介してる
  • node.jsとは何か(3) - I am bad at math

    今日はnode.jsで採用しているCommonJSの話である。 CommonJSの説明だけだとあっという間に終わってしまうのでJavaScript歴史を混ぜ込んだら期せずして長くなってしまった。 さて、1995年に発表されたJavaScriptは開発当初「Mocha」と呼ばれ、次に「LiveScript」となり(実際Netscape Navigatorの2.0のアルファ版ではではこの名前だった)、最後にようやくJavaScriptになる(Navigatorの2.0B3から)という変遷をたどった。このJavaScriptという名前っていうのはJavaというコンパイル言語を補完するスクリプト言語にしたいという考えがあったからという話もあるんだけど、そのころ開発元のNetscapeはSunとの業務提携を発表しており、ちょうどそのころJavaが世に出てNetscapeブラウザ上でクールなJava

    node.jsとは何か(3) - I am bad at math
    Qurage
    Qurage 2013/11/27
    (2010.10.26) node.js のことを node.js 周りのことも含めて詳しく紹介してる
  • node.jsとは何か(4) - I am bad at math

    さて、前回まで基礎部分をいろいろと説明したので今回からは実装について。現在のソースやその成り立ちを説明するのもいいんだろうけど、今日からはちょっぴりハンズオン形式に趣向を変えてみよう。ってことで node.js を作っていくよ! 実装編その一はJSエンジンであるV8にJavaScriptのソースをわせて実行する、つまりはオレオレJS環境を作るまでを扱うのだ。 V8はもともと他のソフトウェアに組み込まれて使用されることを想定(例えばChromeとかね)されているのでこういう作業が必要になる。 手順は大きくわけて二つ 1. まずはV8のソースを落としてきてV8のビルド 2. V8のソースディレクトリに自作のC++のソースを作ってコンパイル&実行 C++が出てきた時点で引いちゃったかもしれないけど、C++を使えるようになるのが今回の目的ではないのでまずはリラックス。C++っていったってそんなに

    node.jsとは何か(4) - I am bad at math
    Qurage
    Qurage 2013/11/27
    (2010.11.01) node.js で hello world
  • 1