Hatena::Groupstudyroom

こそ勉

2011-10-29

memo001

| 13:15

基調講演 Ryan Dahl

今日はなすこと

  • node の基本概念
  • 今度リリースする node の新機能

本題はいる前にアンケート

  • node さわったことあるひと(たくさん)
  • node マシンにはいってるひと(たくさん)
  • node でプロダクト作ってるひと(ちらほら、おもったよりおおい?)

node の基本概念

  • unix: ブロックするシステームコール
    • IO おわるまでかえってこない
    • 遅くなる
    • むちゃくちゃ遅い可能性もある
  • プロセスは独立性がいいけど(コネクションが)
  • ruby, python, java とかもコードの見ためはオシャレだけど裏は unix なシステムコール(70年代)
  • 1プロセスで多重コネクションできるようなのがある
  • eventmachine とか、そういうノンブロッキングなやつあるけど、あとづけで理解がむずい(ブロッキング+ノンブロッキング)
  • node はノンブロッキングな API だけで開発できるように
  • カオスになってそれに対応するより、カオスな状態にならないのがいい
  • node は、利便性よりも、シンプルなモデル
    • プロセス毎につかわれるコールスタックはひとつだけ
    • コルーチンしない
  • なんで他の言語にプラグインするんじゃなくて、javascript でやったの?
    • 既存のに組み込んだらノンブロッキングとすでにあるブロッキングなIOが混在する
    • javascript えらんだのは IO どうやるか、というのがなかったから
  • コールバック地獄にならない?
    • 利便性よりも、ノンブロッキングが大事だから、あくまでもシンプルに
    • コールバックを関数にまとめてください
    • はじめは大変だけど、なれたらいいと思います
  • なんで "Node" なの?
    • node - network のノードというのが小さい部品であるというかんじ
    • ノード同士がやりとりできるようになってきます

今度リリースする node の新機能

  • 2.5 歳
  • v 0.6
  • win2003 server から win7 もサポート
  • v8 バインディングからきりはなす
  • cygwin でしか windows だと node つかえなかったから、がんばって対応しました
  • libev, libeio unix でノンブロッキング・非同期IOするやつなのですが、windows ではつかえないのでなんか IOCP とかなんか
    • unix ノンブロッキング、windows 非同期(ノンブロッキングもあるけどちょっと性能的にいっぱいいっぱいになる可能性もあるのでつかわない)
  • libuv という、ノンブロッキング・非同期IOを抽象化するライブラリ書いた
    • node ノンブロッキングな API を C で書いたかんじ
      • ノンブロッキング TCP だけでなく(HTTP なのだけでなく)、UDP、タイマ、DNS、TTY制御ANSIエスケープコードとか、いろいろ(抽象化)
      • ファイルシステムイベント inotify (ポーリングしないで、通知してくれる)
    • はやくなった
  • child_process.fork()
  • cluster
    • あるマスタから他のコードとかをワーカにできるか?
    • シンプルさのために自分をワーカとする
    • ワーカIDみて他のコードを reuqire してください
  • 質問、難易度たかくて難易度たかい

MiniMini2012/08/18 20:14Me dull. You smart. That's just what I nedeed.

wquxpkvgbvwquxpkvgbv2014/06/03 22:56zplyttuvezsppn, <a href="http://www.uyudvvnxqc.com/">jshfxkfdnm</a> , [url=http://www.mljdwgbkew.com/]jeffvnvwiw[/url], http://www.glnrzelkio.com/ jshfxkfdnm