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 してください
  • 質問、難易度たかくて難易度たかい

memo002

| 14:04

LiveCoding for beginner: jxck

http://jxck.node-ninja.com/nodefest2011.html

ビギナー向け。どうやって node でアプリケーション作るか。

  • 環境
    • nvm/nave, npm (今のところ nave のがトラブルすくない)
  • express
    • sinatra にインスパイアされた
  • npm install express -g (実行ファイルくる くわしくはヘルプ)
  • express -h してオプションみて(ジェネレータとか)
  • npm install (package.js みて bunle install のl Gemfile みたいな)
  • routes とかもある
  • soket.io
  • デモ
  • db, kvs バインディングある(mongo がいいかんじ。速度的に、セッション部分 redis)
  • test はスライトみて http://www.slideshare.net/slideshow/embed_code/9845589
  • ユーティリティ、自動リロードとかインスペクタ、あと rake? みたいのとか
  • 本番、まじめにやるといろいろやることある(forever, cluster, node-http-proxy, node-redis, hook.io..)

memo003

| 14:34

Node.jsでブラウザメッセンジャー

  • 社内 NackDay イベントで作成(8時間 x 3日、2分 LT)
  • 社内でふつうにつかわれてるみたい
  • UI側は HTML5 とかで使えるのとことんつかう
    • css3 とかつかってオシャレ?なレスポンスがかえってくる
    • アンケート機能
    • ファイルアップローダ
  • バックエンド
    • 想定外の例外は uncoughtException でひろう(本番で)
    • mongo
  • 数百人が同時接続
    • マルチプロセスでやってみたらプロセス間通信めんどい
    • シングルプロセスでやってみたら全然パフォーマンス問題なかった
  • websocket のバージョンアップ
    • socket.io がはやく対応してくれた(ナイス)
  • 中規模な開発に十分
    • 表裏両方 js でいけていい
    • js のみで(jquery とかつかわず)書いてって js 力あがる

YOLPとRealtime Geo

http://developer.yahoo.co.jp/webapi/map/

  • 位置情報
  • みんなでデータいれてく
  • 地域情報
  • realtime bus location
    • maptail.js
    • 移動体をリアルタイムに
    • バスの位置情報ので

memo004

| 22:18

途中バッテリ切れたので書いてない。

一番印象的だったのは、Guillermo Rauch の Socket.IO + Canvas API のセッションで、後半の Canvas のライブコーディングがとくにすごかった。タイピング速度が断然はやく、メソッド名や変数も補完なしに全部タイプしてた。コンソールにログ出すとき、console.log に渡す文字列に ANSI カラーシーケンスを素でタイプしだしたときは会場沸いた(質問のとき、なんでカラーシーケンスまでおぼえてるんすかて質問があがった)。

vim を起動して、package.json をさらっと書いて npm insall、そしてまっさらなファイルから index.js や、index.html を書いていって、段階的に機能をつみかさねて、最終的に、canvas へのお絵描きをフレーム毎に ffmpeg にわたして動画にする、というのを20分くらい?で、プレゼンしながら仕上げていた。

途中、なんかうごかん、てなったとき、console.log をいれていきデバッグしていっていく様子、冷静だったけどすごい速度だった。それを見てて、そこ入れてるのちがうよ、て言えるひともすごかった…。

JavaScript 勉強しよう…。

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