日々精進

新しく学んだことを書き留めていきます

javascript

gulpでTypeScriptをフォーマットする

tsfmtを使用する。gulp-tsfmtはtsfmtモジュールを使わず独自にフォーマットロジックを組んでいるっぽい。 なのでgulp-shellを使ってtsfmtを実行することにした。 最初は$(npm bin)/tsfmt -r ./**/*.tsをgulpから実行すればいいのかと思ったが、フォーマット…

webstormでcoffeescriptの自動コンパイル

file watcherを使うとファイルが変更される度に自動でコンパイルしてくれる。 こんな機能あったとは。今まで自分でcoffee -wcしてました。 File Watchers in WebStorm/PhpStorm 6 (a.k.a. “Background Tasks”) | WebStorm & PhpStorm Blog

mochaのテストファイルをrecursiveに探す

以下のようにfile.walkSyncを使うとrecursiveにファイルを探すことができる。これ便利だなあ。 Mocha = require('mocha') require "should" require "long-stack-traces" path = require "path" fs = require "fs" file = require "file" _ = require "under…

webstormでファイルを指定してmochaをデバッグ実行する

2012-09-02 - 日々精進で紹介した方法だと、testフォルダ直下に置いたJSファイルしかテスト対象にならない。 テスト対象のファイルを指定したい場合、 Run/Debug ConfigurationのApplication Parameterにテスト対象のファイルパスを書けばいいだろう、と思い…

プロトタイプオブジェクトはprototypeプロパティではなく、__proto__に入っている

prototypeプロパティに入ってると思ってた。。 参考:prototype と __proto__ - フリーフォーム フリークアウト

単体テスト中にsetTimeoutに渡した関数が実行されない

sinon.useFakeTimersをどこかのテストケースで使ってる場合、後処理でclock.restore()しとかないとJS内部の時計が進まなくなる。 よってsetTimeoutに渡した関数が実行されなくなる。 useFakeTimersとrestoreはセットで書くようにしないとだめだな。。もしく…

coffeescriptでプロパティのオーバーライドができない

下記のようなコードでfooプロパティをオーバーライドした場合、 class Super foo: => console.log "super" class Sub extends Super foo: ["test"] s = new Sub console.log s.foo.toString() ログに出力される結果は以下のようになる。 function (){ return…

testacularのレポート画面で文字化け

testacularでAngularのe2eテストをデバッグ実行すると、debug.htmlを表示することになるがこの画面が文字化けしてる。 これはHTMLの中に文字コード指定が無いから。 以下を/usr/local/share/npm/lib/node_modules/testacular/static/debug.htmlのヘッダ部に…

AltJS

今はAltJSとしてCoffeescriptを使ってるけど、やっぱり静的に型付けしたい。。 型がないと以下の問題がある。 ・影響範囲の調査が難しい ・このオブジェクトがどんなデータを持っていて、何が出来るかがわかりづらい。よってコードを読みづらい・書きづらい…

testacularでRequirejsを使ったモジュールのテスト

サポートされたばかりということもあり、 testacularでRequirejsを使ったモジュールのテストを書くのは難しい。てか情報が少ない。 ヒントはほぼ下記からのリンクのみ。 https://github.com/vojtajina/testacular/issues/15 はまったポイントは以下。 ・Erro…

testacularでテスト環境を整備する

JSのテストドライバーはbuster.js、jsTestDriver、testacularなど色々あるけど、testacularを使ってみることにした。理由は以下。 ・WebStormと相性がいい(これは公式サポートされてるjsTestDriverの方が上か) ・AngularJSと相性がいい ・チュートリアル動…

reveal.jsで発表資料作成

前回勉強会で発表した時はdeck.jsで発表資料を作ったけど、今回はreveal.jsを使ってみた。 使っててreveal.jsの方が優れていると思ったところは以下。 ・markdownが使える 今回の発表資料では使ってないけど。。次回は使いたい ・下と右の2方向に次のスライ…

jasmineとmochaの比較

テスティングFWのjasmineとmochaのどっちを使おうか迷ったので比較記事を調査。 Jasmine vs. Mocha Javascript testing for Rails 3.1+ - Stack Overflow 記事の内容は以下。 自分的にはブラウザでのテストにはJasmine、Node.jsでのテストはMochaがいい気が…

webstormが超重くなる

webstormを使っているとすごく重くなって頻繁に固まることがある。 ウィンドウの右下のメモリ使用量を見るとMax近くになっている。たぶんメモリリークしてるんだろう。 一度終了させると軽くなる。 最近のPCは電源落とさないからちょっとでもリークしてると…

deck.jsでプレゼン資料を作ってgithubで公開

今度【増員】【TechBuzz】第2回.js系勉強会 〜Backbone.js 大集合!/ Backbone.js+Ruby On Rails + CoffeeScriptではじめるモダンWebアプリケーション / Backbone.IOでつくるリアルタイムアプリ / MVCフレームワークの選択基準と主要フレームワークの特徴〜 …

JSクライアントサイドモジュールライブラリ

JSはファイル間の依存関係を管理する仕組みがないので、RequireJSなどを使って管理する。 このモジュールライブラリが意外といっぱいあるらしい。 CoffeeScript時代のモジュールシステムの選び方ガイド | netswitch! ライブラリの調査結果は上記がよくまとま…

Backbone.js入門

・このチュートリアルすごい簡単かつStepByStepで非常にわかりやすかった。最初に写経すべき。 Hello Backbone.js Tutorial ・これは二つ目の課題にいいかも。 backbone-localstorage.js

underscore.jsの使い方を間違った

どうもまだコールバックしまくりのスタイルになれないので以下のような間違いをしてしまった。 ↓正しい var containsAll = function(ary1, ary2){ var result = true; _(ary2).each(function(el){ if (!_.contains(ary1, el)) result = false; }); return re…

_(array).eachをbreakする方法

_(array).eachをbreakする方法は無いらしい。 その代わり、_(array).forEachを使ってコールバックの中でfalseを返すとbreakできる。 eachとforEachは同じ仕様にしてほしいなあ。。 参考:javascript - how to break the .each function in underscore.js - S…