東京Node学園 8時限目 ”Nodeとプロミスと、時々、関数型” by @okapies http://connpass.com/event/2125/
東京Node学園 8時限目 ”Nodeとプロミスと、時々、関数型” by @okapies http://connpass.com/event/2125/
先日JSHint 1.1.0がリリースされ、そのリリースノートに気になる記述がありました。 Adds new option gcl to make JSHint style checks compatible with Google Closure Linter. うそーまじでーなにそれヤバイ! 普段は仕事でClosureにどっぷりなせいもあってClosure Linterを使っているんですが、Closure LinterってJSDocとかお作法的なとこはチェックしてくれるけど、他のLintツールが当たり前にチェックしてくれるとこはやってくれないんですよね。たとえばvarの付け忘れとか。 Closure Compilerを使ってコンパイル時にチェックすることもできるけど、規模が大きくなってくるとその結果が出るまでに10分とか待たないといけなくっていやな感じー。Closure Linterと
仕事でRobotlegsというAS3のフレームワークを使っているのだけど、DI機構がかっこよかったので、Injectorだけ真似て作ってみた。 mizchi/injector.js · GitHub https://github.com/mizchi/injector.js Robotlegs AS3 Micro-Architecture - Home http://www.robotlegs.org/ 使い方 ConstructorClass.inject に {key:InjectedClass} で実体化するインスタンス名と実体化するクラスを登録する。 CoffeeScriptで違和感無いような記法でチューニングしてある。 class UserModel class X_View Injector.register(@) @inject: model: UserModel Injec
先月のHTML5など勉強会で、Yeoman超入門を発表したときに、Yeomanはフロントエンド開発専用にlocalhostサーバー立ち上げるからサーバーサイドとの同時開発はちょっと工夫がいるよね〜みたいな話題があって、参加されてたnode.jsに詳しい方からhttp-proxyつかってapiの部分リダイレクトかけたらいいよみたいな方法を教えてもらった。 なるほどそれは便利だなと思って実際書いてみたら手軽に使える感じにできたので書いておきます。ちなみに今週水曜日にGoogle Developers Liveに出演してYeomanのことを喋らせていただく機会に恵まれたので、その時の参照にも使えるかと思って。(ライブのスライドはこちら) Yeomanは $ grunt server で開発用のWebサーバーを起動することができる。デフォルトで http://localhost:9000/ 以降フ
This is a build of microperl compiled with emscripten so it all runs in your browser. This is only really a proof of concept so far. print "Hello, #qa2013 from Perl $^V\n"; # This is adapted from https://github.com/peelle/Perl-Euler-Solutions/blob/master/2/solution.pl # I haven't yet made modules work, so rather than: # use List::Util qw(sum); # here is a simple sum function: sub sum { my $s = 0;
asm.jsを触ってみたので所感など。 asm.jsはJavaScriptのサブセットで、限られた型しか使えないが高速に動作する言語との事。とりあえずどの程度速くなるのか、計算量が多くなるfibonacciの実装で試してみた。参考資料はasm.jsの仕様ぐらいしか無かったのでこれを見ながら。 で、実際に書いてみると型がゆるゆるなJavaScriptのイメージは脆くも崩れ去り、厳格な型チェックの世界である事がわかった。コンパイル言語を書いている時の頭に切り換えないと、コンパイルエラーと延々格闘する事になる。まずはasm.jsのコードは次の形式で、module exportする。 function create_my_asm_module(stdlib, foreign, heap) { "use asm"; function hoge() {...} function fuga() {...
このサイトについて Gruntの日本語リファレンスです。 Gruntの本家サイト(英文) の内容を翻訳して作成していますが、誤訳や誤記があると思いますのでその点についてはご了承ください。 もし、誤訳などの間違いを見つけましたら、 @tomof まで教えていただければ幸いです。 News 2013.04.15 サイトをオープンしました。 概要 何故タスクランナーを使うのか? 一言で言えば、自動化のためです。 ファイル圧縮、コンパイル、単体テスト、Lintなどの繰り返し実行しなければいけないタスクを自動化することで、仕事を楽にしてくれます。 タスクランナーを設定すれば、こういった冗長的なほとんどの仕事を、あなたやチームのために行なってくれます。 何故Gruntなのか? Gruntエコシステムは、巨大で日々成長しています。 Gruntを使って文字通り何百ものプラグインから選択し、最小限の努力で自
WebRTCへの最近の僕 今年最初のブログ記事ポスト。いやーもう4月も半ば。桜も散っちゃいました。ほんと、更新頻度の低いブログです・・・今日は、WebRTC関連の話題。 DataChannel(映像、音声以外の任意のデータを送受信できる機能)が実装されたり、Firefox nightlyでも実装が始まったり、Chrome for Android(beta)でも実装が始まったりと、最近ホットなニュースが目白押しのWebRTC(Web Real Time Communication)。僕も、ちょいちょいプロトタイプ実装を試しています。 例えば、3/22のWeb先端味見部の時に、当日講師の吉川さんに取り上げていただいたチャット実装(github)とか(その後、吉川さん、大津谷さんのcontributeのおかげで、ビデオチャット機能実装とかバグ改修とか進められています) なお、上のコードは、サンプ
node.js の fs.readdir が返すファイルオーダーだと不都合があるので、natsort を書いてみました。 http://sourcefrog.net/projects/natsort/ と http://d.hatena.ne.jp/noonworks/20091231/1262265351 を参考にしました。 function natsort(ary, // @arg StringArray: items. ["abc100", "abc1", "abc10"] ignoreCase) { // @arg Boolean(= false): true is case-insensitive // @ret StringArray: sorted items. ["abc1", "abc10", "abc100"] function num(s) { return isNa
Docco is a quick-and-dirty documentation generator, written in Literate CoffeeScript. It produces an HTML document that displays your comments intermingled with your code. All prose is passed through Markdown, and code is passed through Highlight.js syntax highlighting. This page is the result of running Docco against its own source file. Install Docco with npm: sudo npm install -g docco Run it ag
nueでは、独立に定義された関数を数珠つなぎにしています。 その中核を担っているコードはこんなです。 function chain(functions) { return functions.reduceRight(function (next, curr) { return function () { curr.apply({next: next}, arguments); } }); } このコード、短い割には使い勝手がいいんじゃないかと思っています。 ちょっと使ってみましょう。a, b, cという3つの関数を定義して数珠つなぎしたあと実行してみます。 var slice = Array.prototype.slice; function a() { console.log('a is called. args: ' + slice.call(arguments)); this.nex
第38回HTML5とか勉強会を以下の内容で実施します! ふるってのご応募をお待ちしております。 イベント概要 名称:第38回HTML5とか勉強会 テーマ:- 「Webアプリ×テスト最新事情」 - 概要:Webアプリの本格化・大規模化に伴い、テストの受容は高まるばかりです。そんな中、様々なテストフレームワークが公開されており、これらのツールを使うことで、効率的にWebアプリのテストを行うことができます。 今回の勉強会では、これら様々なテストフレームワークについて講演をいただきます。 内容: 「TDDで開発するJavaScriptアプリケーション」佐藤鉄平さん 20min 「jasmine」斎藤ゆうやさん 20min 「SinonJS」外村和仁さん(ピクセルグリッド) 20min 「JSテストフレームワークの比較(QUnit、Mocha、Jasmine...)」佐伯さん 20min 「講演者
FirefoxのJavaScriptではバージョンを1.7以上に指定するとyieldが使えて非同期処理を同期っぽく書くことができるようになる。 適当な例だけどこんな感じ。 function run(f) { var g = f(function(x) { g.send(x) }); g.next(); } run(function(next) { var result = []; result.push('foo'); // ここで1秒待つ yield setTimeout(function() { result.push('bar'); next(); }, 1000); // ここで1秒待つ var baz = yield setTimeout(function() { // nextの引数がyieldの返り値になる next('baz'); }, 1000); result.push
JavaScriptのユニットテストをJenkinsとかでCIしたいとき、PhantomJSで実行するのもいいけどやっぱりChromeとかFirefoxみたいな実際のブラウザでテストしたい。でも環境作るのめんどくさいよなーと思ってたけどXvfbを使うとChromeとかFirefoxが動くのでLinux版のChromeとFirefoxだけだとわりと簡単に環境つくれた。 Xvfbというのは画面入出力をシミュレートするやつでデスクトップ環境を用意しなくてもChromeとかFirefoxとかが動かせるやつ。 OSはUbuntsの12.04(precise64)で試した。 まずXvfbを入れる。 $ sudo apt-get install xvfb 次にFirefoxを入れる。これもすぐ入る。 $ sudo apt-get install firefox Chromeは一手間必要だけどわりとすぐ入
README.md Soy Soy is a small library to make it easy to integrate Google Closure Templates with node.js and express. It will now compile your soy templates on launch and pre-cache the files into memory. I would like to give thanks to the authors of soynode and soyer for acting as source-code teachers to work from. Install Download from github and paste into node modules Initialize module : var s
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く