yo_waka's blog

418 I'm a teapot

javascript

WEB+DB PRESS Vol.79にAngularJSの記事を書きました

2/22発売のWEB+DB PRESS Vol.79のJavaScript連載で「AngularJS」をテーマに記事を書きました。 こんな感じのことを書いてます。 AngularJSについて AngularJSの主な機能 2wayバインディング スコープ モジュール コントローラ Dependency Injection (DI) サ…

AngularJSのディレクティブの仕組みを追ってみた

追ってみたシリーズ第3回目。 AngularJSのディレクティブ、名前は聞いたことあるけどあれでしょ?自前の「ng-hoge」を作るための仕組みでしょ? だいたいそんな感じですが、どうやって実現しているのか。 ディレクティブの役割 ディレクティブはHTMLビューを…

AngularJSのDIの仕組みを追ってみた

AngularJS黒魔術のうちの1つ。DI。 コントローラーの引数に$httpなどを指定すると、なぜ何もしなくてもHttpProviderの返り値が入ってくるのか。 var userControllers = angular.module('userControllers', []); userControllers.controller('UsersCtrl', fun…

AngularJSの2way bindingの仕組みを追ってみた

AngularJSの特徴でもある、モデルとビューの2way binding。 AngularJSの簡単なコードがあるとする。(投稿時点ではv1.2.6) <body ng-app ng-init="message = 'nothing'"> <div ng-controller="SampleCtrl"> <input type="text" ng-model="message"> <br> <button ng-click="clearMessage()">Clear</button> <br> <span>{{getMessage()}}</span> </div> <script> va…</body>

WEB+DB PRESS Vol.76にWeb Componentsの記事を書きました

うう、発売されてからだいぶ経ってしまった。。。 WEB+DB PRESSのJavaScript連載の第9回目にWeb Componentsについての記事を書かせていただきました。 WEB+DB PRESS Vol.76作者: 五十嵐啓人,伊野亘輝,近藤宇智朗,渡邊恵太,須藤耕平,中島聡,A-Listers,はまち…

RailsアプリのJavaScriptをkonachaを使ってCLI上でテストする

前回のでアプリケーションのテストがMiniTest::Specで実行できるようになったので、今度はJavaScriptのユニットテストをコマンドラインから実行できるようにする。 慣れてるMochaを使ってテストが書けるkonachaと、konachaが使用するCapybaraのPhantomJSドラ…

Google Closure LibraryのユニットテストをPhantomJSで実行するやつ

を2年前くらいに作ったのだけど、久々にGoogle Closure Libraryを使いたくなって、そうなるとテストも書かないとなので引っ張りだして使おうと思ったのですが、なにせ2年前に作ったものなので、ソースコードはレガシー感が漂ってて、使ってるPhantomJSのAPI…

bowlというNode.jsのcluster管理モジュールを作った

cluster周りのコードを書いていて、ワーカー周りの死活監視やエラー処理などいつも同じようなこと書いてるのでモジュール化してみました。 bowl GitHubにソースコードもあげてあります。 安心のテストコード付き! waka/node-bowl できること コマンドライン…

Node.jsアプリで結果が非同期になる箇所はコールバックを渡せるようにした方がいい

既存のNodeアプリのテストを書いていて思ったことをメモ。 書いてるうちに別にNode.jsに限った話じゃなくて、JavaScript全般に言える話じゃんと思ったけどまいっか。 Node.jsで書くアプリは中の処理で非同期API使われてると、テストを書くのがとても難しいと…

Node.jsのcluster.disconnectの挙動とGracefulリスタート

clusterモジュールを使ってサーバアプリ管理ツールを作ってるのだけど、cluster.disconnectのコールバックが実行されてもワーカープロセスが死なないことがある。 Chromeでサーバにアクセスすると、cluster.disconnectしてもワーカーの'exit'イベントが発火…

デブサミ2012で大規模JS開発について発表してきました

「Developers Summit 2012 - 10年後も世界で通じるエンジニアであるために」で発表してきました。 デブサミ2012 kintoneの表と裏 - 表編 View more presentations from yo_waka イマドキのJSの話とかではなくて、UIをJSで作る際の設計ノウハウみたいな話にし…

WebRTCを使ってWebカメラから顔認識+画像効果

ChromeのDevチャンネル版でWebRTCが使えるようになったそうなので早速試してみた。 DevChannelからChromeを落として、「chrome://flags」から有効にできます。WebRTC(Web Real-Time Communications)は、ブラウザからカメラやマイクを利用できるようにしたり…

オレオレCoffeeScriptを作ろう

若干遅いですが、あけましておめでとうございます。 今年もこっそり! 昨年からcoffee-scriptが流行り出しましたね! coffee-scriptってもう現場でも使われ始めてるのかな? Railsな人たちは使ってるんだろうけど、JavaScriptでアプリ書いちゃうようなゴリゴ…

Google Closure Libraryの良いところ

Google Closure Libraryを使ってると、基本的にプロトタイプベースのOOPで書かざるを得なくなる訳ですが、その中でClosure Libraryを使ってクラスを書く上で最もベースとなっている"goog.inherits"と"goog.base"は改めてよくできてると思った。 goog.provide…

大規模なJS開発

最近大規模すごい!とか言われるようになってそれは嬉しいんだけど、複数人で作ってるすごい!なのか、10万行すごい!なのかよく分からない。 この2つはちょっとアプローチの仕方が違う。 前者の方は、厳密にPrivate変数がないJSでプライベート/パブリックを…

Node塾その2(connectソースコードリーディング)に行ってきた

昨日開催されたNode塾その2でconnectのソースコードリーディングをしてきました。connectの中身を見るのは初めてだったのですが、id:scalar さん(@hakobera さん)の説明がとても丁寧で理解も進み、後半はひたすらミドルウェアのソースを読んでました。※バー…

最近のJavaScriptモジュールの書き方

サーバサイド(特にNode.js)とクライアントサイド両方で動かしたいものは最近はこんな感じで書いている。 CommonJSのwiki見ててそこに紹介されてるソースコードで(どれだったか忘れたけど。。)やってたのを見ていいなーと思って真似っこした。 (function(…