UCBでのMeteorの講義
UCBで行われたMeteorの講義の動画が公開されています。とても勉強になるのでぜひ参考にしてください。
講師はMeteorのco-founderのMatt Debergalisです。講義メモが公開されているので、それを紹介します。
CS 294-101でのMeteor講義メモ
Meteorの設計アイデアの多くはhttps://www.meteor.com/projectsに記述されている。
よいシステムデザイントしてBSD。実装要素は、プロセス実行スケジューラ、ソケット、システムコール、仮想メモリ、mbufメモリ管理。何がプラットフォームに必要か。Unix vs Multics.
アプリケーションアーキテクチャの歴史。メインフレーム(例: IBM 360 / 3270)、クライアント/サーバ(例: Win32)、 Web (例: LAMP), クラウド/クライアント。ソフトウエアが実行される場所の変化。シンクライアント対シッククライアント、データ転送対表現形式転送。技術による変化(低価格CPU、インターネット常時接続、モバイル)。変化に合わせて新しいアーキテクチャ。
モダンなUI/UXに必要なもの。モバイル。即時更新。コラボレーション。更新ボタンなし。すべて「リアルタイム」/「リアクティブ」システムに必要。HTTP時代とは異なる。
4つの質問: 1 - データをどう動かすか; 2 - データはどこから来るか; 3 - データをどこに置くか; 4 - データをどう使うか
DDP - 分散データプロトコル。データ転送に関するもの。HTTPとRESTの問題点。WebScokets。Publish/Subscribe。RPC。EJSON。認証。クライアントとサーバの分離。 https://www.meteor.com/ddp https://www.meteor.com/ejson
Livequery - 観測可能なデータベースクエリ。Mongoでpoll-and-diff方式対Oplog tailing方式。他のデータベース(Redis, SQL)での戦略。 https://www.meteor.com/livequery https://www.meteor.com/blog/2013/12/18/david-glasser-on-scaling-meteor-with-the-mongodb-oplog
フルスタックデータベースドライバ。ミニデータベース。同形API。分散キャッシュ。遅延補償。 https://www.meteor.com/full-stack-db-drivers https://www.meteor.com/mini-databases
Blazeとリアクティブテンプレート https://www.meteor.com/blaze
クライアントでの汎用リアクティビティ。Tracker。Autorun。 https://www.meteor.com/tracker https://github.com/meteor/meteor/wiki/Tracker-Manual
これらをすべてまとめる。autopublishとすばらしいスクリーンキャスト。 https://meteor.com/screencast
時間が余れば
JavaScriptの並行処理とパフォーマンス。Fibers。 https://github.com/laverdet/node-fibers http://wiki.ecmascript.org/doku.php?id=harmony:generators
パッケージ。単一読み込み対複数読み込み。バージョン解決。A* vs SAT. https://www.meteor.com/version-solver http://minisat.se/ https://www.npmjs.com/ http://bundler.io/