ファイルアップロードについて
- HTTPはあんまりアップロードのこと考えてない
- FTPはいまはあんまり使われてないけど、前は使われてた
- TCPはファイルとHTMLを一緒には通信できない
- 最近のHTTPはマルチパートアップロードサポートしてきたから良くなってきた
レジュームとかできないとかね
- progress eventあったり
- File APIもある
- Blob#slice
- Partyはこれらを使うシンプルなフレームワーク
- ファイルアップロード専用
- どちらかというとBitTorentみたいな感じ
- setupとかdistributionを簡単にできるようになる
- ファイルを分割して送るから速くアップロードできる
- WebSocketでDEFLATE使う
- ASM.js -> zlib.js使ったら速いかもね
- Partyはここらの面倒な部分を全部やる
- チャンクは独自に同期する感じ
- ページがリフレッシュしても切断しない
- Worker API使ってる
- configが充実してるからフレキシブル
- S3なんかも使えるよ
- ナパの地震グラフをJSON APIで取得するという良い時代
- Node使ったAPIサーバを使ったら夢が広がりんぐ
- APIを使ったら色々なデバイスに応用できる
- HTMLだけだとちょっとこうは行かない
- 速い
- 色々な企業で使われてる
- クラスタとか
- デバッグがしやすくなるとか
dispatcher
- flow control
- サイトがリニューアルしたよ
- Markdownでドキュメント書いてる
- Express Generatorを搭載
- APIゲートウェイ
- ミドルウェアの順番決め
- Zoneつかってエラーハンドリング
https://github.com/strongloop/loopback http://loopback.io/
- 自動でREST APIになる
- モダンなORM
- AndroidとかJS SDKある
- ビルトインでAPIエクスプローラある
- APIなんかをGUIで扱えるStudio
- 勝手にAngularとかで使えるようなModelが生成される
- compilerのひとつ
- source -> source compiler
- EJS / Marked / Jade
- Less / stylus / sass
- みんな良く使ってるのに、なんで悪いわけ?
- Static Site Generatorの待つ時間が長い
- Syncかつimportがある場合は
async
がないとツラたん- JSX / TypeScript
- Jade / EJS
require('transpiler')
のスピードが遅い- JSX / Jadeが特に悪い
import
のキャッシュ- キャッシュない場合は全ての
import
をコンパイルしないといけない
- キャッシュない場合は全ての
- 設定ファイルをこれだけ書かないといけない
- 一般的な設定
- 言語専用設定
- 環境設定
- (ファイル設定)
- (ユーザー設定)
- それぞれのtranspilerで別に設定しないといけない
- 例えば
watch
- メインファイルしかwatchしないのがstage1
- 依存ファイルもwatchするのがstage2
import
してるファイルもwatchするのがstage3- クロスコンパイラでwatchするのがstage4
- コンフィグファイルもwatchするのがstage5
- パイプで例えば、圧縮するのとかもstage6
- 大体はstage1か2で3も少ない、4以上は絶対にない
- CLIのオプションとかが各transpilerごとにバラバラ
- Node.jsの世界の気持ちが悪くなるw
- エラーコードやそのフォーマットがバラバラ
- 1つのtranspilerと別のものの組み合わせがツラい
- ECOシステムとかを良くする
- Nodeの世界を良くする
- みんな使ってるしね
みんな長いGruntfile書いてたりする人いるでしょ?
https://github.com/better-compiler/member
良いコンパイラ作るためのリポジトリを作ったよ
- テスト書いてる?
- テストライブラリのメソッドが多い。chaiでは33メソッド
- 日本人であればassertが読みやすい
- 標準のアサーションライブラリでは情報量がとても少ない!
- そこでPower Assert
- https://github.com/azu/intelli-espower-loader もね
- 覚えること少なくなった
- コードの復権
- 成功してるときは静かに、失敗したらうるさく
- Unixの沈黙の原則
- テストコードから情報を埋めこんでコンパイル
- JavaScriptをASTに変換して実現している
- Esprimaを使うとJSのオブジェクトツリーにしてる
- ASTからコードに変換
- escodegenを使って、esprimaからのASTをJSのコードに戻す
- estraverseを使ってASTからJSまでで変更をかけるようにできる
ここら辺ライブコーディングしてて凄いです。emacsつよい
- Nodeのモジュールの中にもUnix哲学が入ってる
- 一つのことを、うまくやれ
- モジュール間の原則
- substack pattern
module.exports = function(arg) {
// do one thing well
};
先程のライブコーディングしたコードをこの原則にしたがってリライト中。emacsつよいというか、t_wadaさんがつよい。
- power-assertは12個のモジュールで構成されてる
- Easy isn't simple.
- Simple: objective
- Easy: relative
- やばい、話のスコープはユーザーと企業の間に立ってるユーザー企業の話なんだが、カオス
- 書きやすいので、ギャルでも書ける
- セキュリティとかあんま関係なくいける
- Node-webkit
- Backbone.stickit
- Backbone.localstorage
- 外部サイト
- jQuery
- RemoteDebuggingProtcol
- MailServer
- 結構普通にアプリは負担すくない
- 仕様変更以外特に問題ない
- WebKit Context
- DOM要素
- Node Context
require
で読みこんだもの
- Node Contextだけ基本使う
- どうしてもしょうがないのは場合のみ
<script>
タグ
- どうしてもしょうがないのは場合のみ
- ぜんぜんちがうよ
- atom-shellは
window
からDOM側にアクセスできねえ
- まあ使えばいいじゃない
console.log()
が標準入力にこない- そもそも標準入出力がでねえ(windows)
- Nightwatch使ってる
- node-webkit専用のバイナリもあるけど、普通のChrome driverも使える
remote-debugging-port
の指定して接続できない
- node-weebkitでビルドしてもバイナリになるわけじゃない
- devtool -> ひらくボタンなくす
- Remote Debugging port -> メインウィンドウのinspect権を取っとく
- ローカルのTMP_DIR -> 暗号化する
- jsを暗号化して、ファイル名を変える
require
するときに復号する
- D3のチューニングつらい
- node.js v0.10のSSL
- mogooseでハマる