Life goes on

何かJavaScriptとかVimとかMacとかに関係してそうな深淵から覗かれる者

mjson-serverというnpmのお手伝いしてる

最近,同僚がmjson-serverというプロダクトを作ってくれたんで,お手伝いというか何個かprを送ってる.

元々その方が作ってたmjsonというJSONにコメントがあっても除去してくれるというCLIをローカルでWebアプリとして,使えるようにしたものです.

主にpr送った機能としては,

  • JSON.parse()のエラーを表示していたのをJSONLintのエラーにしてエラー部分を見やすくした
  • エラーが起きた場合にどの行でエラーが起きたかをシンタックスハイライトするようにした

くらいですが,使いやすいと思うのでよろしければ使ってみてください.

contributorsに加えてもらったので,宣伝してみました.

Node.vimがステキ

どうもあんまり話題になっていない感あるんですが,Node.vimというVimプラグインが大変ステキな感じです.

moll/vim-node

そこそこ開発も活発な感じです.

機能としては,ざっくりこんな感じ.(README読めば分かるんですけど)

  1. 標準のgfとかC-w fとかするとrequire()のモジュールに飛ばしてくれる
  2. [Iをメソッドにカーソル当てて入力するとそのファイルはもちろん,require()内からでも検索してプレビューウィンドウに表示
  3. 最近できた機能ですが:NEdit module/pathとするとそのファイルを開いてくれる

などなどカユいところに手が届いてるプラグインです.

Node.js + Vim使ってる人にはオススメの逸品.

そろそろBuster.js使うの一旦休止か…

先日家のMacを買い替えまして.TimeMachine経由で全部バックアップを復元したんで,時間がかかる以外はそれ程苦労無く移行できたわけですが.

そういえば…と思いましてnpm update -gしたら何度やっても途中で止まるなあ…止まるなあ…と思ってたんです.

npm ERR! cb() never called!
npm ERR! not ok code 0

でこれ出る前後を色々見ていったらどうも原因はBuster.jsにある模様.Buster.jsをnpm rmしたらちゃんとアップデートできるようになりました. npm-debug.logとか色々眺めてたらどうやらdependenciesの一つがコケてるようで,ググったら公式MLで同じ症状の人達が結構いました.

https://groups.google.com/forum/#!topic/busterjs/P8OeXmyRjj8

原因はやっぱdependenciesがBuster.js側で古いものを参照してるせいで,そのnpmの作者が古いものをアップしなくなった模様.

この人が言うように,Buster.jsが最後に(npmで更新されたの)去年の年末だったりするので,まあdependenciesを上げてもらうと嬉しいなあ.

https://groups.google.com/d/msg/busterjs/P8OeXmyRjj8/A1X0DNhitM8J

当座困ってるのが,上述の通り色々アップデートさせようとしてBuster.jsをアンインストールしてしまったんで,自分のプロダクトの更新が 無理なこと.一旦諦めて,mochaとexpect.jsとかにしようかと考えてる.

gatekeeper.jsなるものを作った

https://github.com/Layzie/gatekeeper.js

これだけ見ると何のこっちゃ?と思いますが。Vanilla.js用かつスマホブラウザ用のevent delegate専用ライブラリです。

今の案件で必要なんでCoffeeScriptで作ってみました。と、言っても一からオリジナルという訳ではなくVimeoの中の人が作ったgator.jsというライブラリのソースを参考に、モバイルブラウザにいらなそうな部分削ったり、趣味に合わない部分を変更したり…という事してます。READMEにも書いてますが。

一番悩んだ点は…これライセンス表記とかどうすんの?って所でした。ここに一応gator.jsをベースにしてるっていうの書いて、元がApache ライセンスだったんで踏襲してたりしますが。

最終的には、CoffeeScriptからの派生プロジェクトのLiveScriptとかを参考にしました。

forkしちゃえばまあ…という感じでしょうけど、コードは参考にしつつ、別言語(?)に移植して名前が違うとかいう場合はこれで良いんだろうか。ちょっと心配ですな。

使い方自体はほとんどjQueryとかと変わらずに

Gk(document).on('click', '.hoge a', function(e) { console.log(e.innerHTML); });

みたいな感じです。gator.jsのドキュメントとほぼ変わらないです。(GatorがGkになってるくらい) 一応、スマホで見れるデモはついてます。カッコ悪いけど。あと、テスト作りたいけど、どうしよう。ブランチは作ってあるけど何もしてないわ…。

名前の由来は、まあ親のDOMでイベントの門番みたいなもんだなーといって安易に付けました。S○NYの工作員とは関係がな…うわなにをするやめろ。

リポジトリ作った後にググってみたんですが、どうやらパスワードフォーム関係のJavaScriptのライブラリが既にあったりして、名前決める前に調べりゃ良かった…と若干の後悔をしたまま公開しました。

ニーズとしては非常にニッチなんじゃないかと思うのですが、ご紹介まで。(jQueryとかzepto.jsとかあれば、delegate付いてくるし)