自作ライブラリなんか使うな!!!
どうにも、僕の周りには、
なんでも自作したがる人が多くて、
EventEmitterも、Throttleも、
果てはjQueryライクなライブラリまで、俺俺でやってる始末。
マジでやめてほしい。
なんで人と足並み揃えられないんだろう。
そんなちんけなライブラリ、自前で作っても、誇るところはなにもないよ。
勉強のつもりなら、自分のローカルでとどめてくれ。
世の中に出回ってる、ライブラリは、
あなたの自作ライブラリより遥かにテストされているし、
多くのひとの意見を取り入れているし、
良い設計がされているし、
ドキュメントも揃っている。
コードを書く前にググれ。
作るなら、せめてドキュメントを用意しろ。
自作ライブラリに埋もれているのは、自分が無能だと主張していることに気がつけ。
CoffeeScriptを書くならCoffeeらしく書いて欲しいという思い
厳密等価(===)
if(a === b)
if a is b
undefined
if(a !== undefined)
if a?
否定if
if(!a)
unless a
後置if
if(a) return;
return if a
即時関数
!function(){ }();
do ->
式としてのif, switch
if(x < 0) { y = 0; } else { y = x; }
y = if x < 0 0 else x
論理演算子
a || b && c
a or b and c
git pull したときデフォルトで rebase するようにする
git config --global branch.autosetuprebase always
We Will All Be Game Programmers
面白いのでぜひ見てください。
状態と副作用について、ゲームからReactまで、なぜそれらが重要か、それらを安全に取り扱うにはどうするべきか、丁寧に説明しています。
gulp で livereload できる開発用サーバを立てる
gulp で開発用サーバを立てるには、gulp-connect とか、gulp-webserver とががあるんだけど、
ブラックリスト入りしていて、
gulp 的には
「入出力を伴わない処理をプラグインにすんじゃねーよバーカ」
ってことなんだと思う。
なんだか過激だなあと感じつつも、できるだけ依存の少ない gulpfile を書けという方針には、概ね賛成なので、
その辺のプラグインを使わずに、開発用サーバを立ててみる。
静的ファイルを配信するサーバを立てる
まずは、普通にサーバを立てる。
connect 使えって言われてるので、素直にその言に従います。
connect = require "connect" gulp.task "serve", -> connect() .listen 9000
やったーー!!
立ちました、ウェッブサーバが。やった。
しかし、何のファイルも配信していないので、middleware で静的ファイルを配信します。
connect = require "connect" serveStatic = require "serve-static" gulp.task "serve", -> connect() .use serveStatic DOCUMENT_ROOT .listen 9000
やったーー!!
立ちました、静的ファイルを配信するウェッブサーバが。
なんだ簡単じゃないか。
確かにこんなことのためにプラグインなど必要ない。
livereload サーバを立てる
livereload をするためには、リロードの通知を送るための websocket サーバを立ててやる必要がある。
livereload 用のサーバとしては、tiny-lr が有名なので、
このモジュールを使ってレッツトライ!したいところだが、ほんのちょっとだけ手間(本当にほんのちょっとだけ)なので、
代わりに gulp プラグインの gulp-livereload を使う。
gulp-livereload で livereload サーバを立てるのは、こんな感じ。
connect = require "connect" serveStatic = require "serve-static" livereload = require "gulp-livereload" gulp.task "serve", -> livereload.listen() connect() .use serveStatic DOCUMENT_ROOT .listen 9000
そして、ブラァウザーをリィロードしたいタァーイミングで livereload.reload() を pipe すればOK!
gulp.task "some-task", -> gulp .src SRC .pipe someProcess() .pipe livereload.reload()
このとき、リロードの指示が、pipe されてるファイルにだけ飛ぶので、
CSSとかは、ページ自体の更新をせずに、スタイルだけが逐次更新される。うれしい!
これで livereload サーバはOK!
ただし、ブラウザ側は、livereload 用のブラウザ拡張が必要。
ブラウザ拡張なしで更新できるようにする
当たり前だが、livereload を実現するには、どこかで websocket サーバに繋げるための js を実行する必要がある。
livereload 用のブラウザ拡張は、そのための JS のスニペットを自動で、全てのページに埋め込んでくれるもの。
とはいえ、そんなことのためにブラウザ拡張入れるのいやだし、スマホとかでもリロードしてほしい。
ので、connect の middleware で livereload のスニペットを埋め込む。
connect-livereload という middleware を使う。
connect = require "connect" serveStatic = require "serve-static" livereload = require "gulp-livereload" connectLivereload = require "connect-livereload" gulp.task "serve", -> livereload.listen() connect() .use connectLivereload() .use serveStatic DOCUMENT_ROOT .listen 9000
かくて html には livereload 用のスニペットが埋め込まれ、websocket の使えるブラウザは、誰でも自由に livereload ができる社会が生まれた。