kidoOooOoooOOom

ゲーム開発やってます

JS

gruntでjshintとjscsのlintをタスク化

jshintのチェックルールを.jshintrcに、jscsのチェックルールを .jscsrc とかで用意しておき、下記をGruntfile.js に追加する。 grunt.initConfig({ jshint: { files: [ 'lib/**/*.js', 'test/**/*.js', '*.js', ], options: { jshintrc: '.jshintrc' } }, j…

最近入れたSublime Textのプラグイン

JS

このページを参考にして、いくつか入れてみました。 http://qiita.com/maccotsan/items/f320036e19f8d3b798c1 AdvancedNewFile https://github.com/skuroda/Sublime-AdvancedNewFile cmd + alt + n でファイル新規作成をすぐ実行。 BoundKeys https://github…

nullとundefiendについてあらためて

JS

特殊な値nullはほんのいくつかのケースで使われるべき 変数を初期化するとき 初期化された変数と比較するとき 関数に渡す値としてオブジェクトが期待されているとき 関数の返り値としてオブジェクトが期待されているとき nullを使うべきないケース 引数が渡…

JSの改行位置

JS

JSではASI(自動セミコロン挿入)があるため、複数行にわたるコードで演算子の前で改行をするのは危険。 例えば下記のようなコードは、改行の位置が危険 if(aaa && bbb && ccc && ddd) goto fail;ASIがcccの後に入れられるとエラーになってしまう。

JSで文字列にゼロパティング

JS

2〜4文字で生成されるstrに必ず左詰めで0を埋めたいケースがあったので、sliceを使って文字列の0パティング。slice(-4)で、後ろから4文字をとってくる。 var str = 'aaa' // 2~4文字の文字列が入る想定 str = ('00' + str).slice(-4);

_.isObjectを使う

JS

今日は、JSの真偽値でオブジェクトの存在をチェックするのではなく、underscore.jsの _.isObject を使ってチェックした方がいいですよとアドバイスを貰った。 var hoge = {id: 100, name: 'aaa'} // 悪い例 if (hoge) { console.log(hoge.name); } // お勧め…

should.jsの基本的API

JS

should.jsの書き方に慣れるのも兼ねて基本的なAPIを使ってみた。 it('should tests', function () { true.should.be.ok; 'test'.should.equal('test'); 'foobar'.should.startWith('foo'); 'foobar'.should.endWith('bar'); (5).should.be.within(5, 10).and…

underscore.jsの extend, compact

JS

今日出てきたのは以下の2つ extend プロパティが無ければ追加、重複していた場合は上書きしてオブジェクトを返す。 _.extend({name: 'moe'}, {age: 50}); => {name: 'moe', age: 50} compact(array) falsyな値を除いた配列のコピーを返す。 _.compact([0, 1…

Sublime Textでローカルヒストリー管理

JS

割りと重要な機能なので入れておいた。 cmd + shift + P で install を選択後、Local Historyを選択して入れるだけでおk。

Sublime text に jshintを入れる

JS

cmd + shift + p で install を選択後、js gutter で JSHint Gutterをインストール。 インストール後、cmd + shift + p で JS hintを選択したら 実行できるのだが、nodeのパスが正しく設定されていないとエラーになり、入力用のテキストが表示される。 自分…

JSでコールバックを多用した関数の共通化

JS

今日は、JSの関数の共通化でちょっと時間がかかった。 下記のようなコードで、 function task のところを共通化する必要があった。 BBB.prototype.huga = function(callback){ var human; var age = 10; AAA.hoge(function task(done) { async.watarfall([ f…

今日のunderscore.js

JS

unionを見かけた。 union_.union(*arrays) Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays._.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); => [1, 2, 3, 101, 10] 重複除…

JSでfalsyな値

JS

昨日ミスってたので忘れないように張り付け。 JSで if(hoge) とかで評価したときに falseと判定される値は、 false undefined null 0 NaN ''

今日みかけたunderscore.js

JS

もうこれなしでは生きられないunderscore.js. 今日は filter を使っているのを見かけた。 filter_.filter(list, iterator, [context]) Alias: select Looks through each value in the list, returning an array of all the values that pass a truth test (…

moment.jsで今月末や来月末の取得

JS

今月末と来月末の時間を取得する処理を書くときに非常に助かったライブラリ。 https://github.com/kidooom/node_test/blob/master/momentTest.jsこんな感じで今日は使った。 var moment = require('moment'); // 今のunixTime console.log(moment().unix());…

underscore.js の pick

JS

みんな大好き underscore.jsで、今日はpickってのを見かけた。 http://underscorejs.org/#pick pick_.pick(object, *keys) Return a copy of the object, filtered to only have values for the whitelisted keys (or array of valid keys). _.pick({name: '…

JSのMath関数でよく使うやつ

JS

Math.ceil: 切り上げ Math.floor: 切り捨て Math.round(double): 四捨五入。引数にもっとも近いlongを返す Math.round(float): 四捨五入。引数に最も近いintを返す

!!

JS

JSのソースを見ていたら、 !!hoge という記述があった。(hogeは変数) なんすかこれと思って調べたら、undefiendを避けて強制的にboolean値に変換する書き方らしい。 hogeがundefinedの場合、評価された時の値が hoge -> undefined !hoge -> true !!hoge -> f…

sinon.jsのstub()とsandbox()を用いたstub作成例

JS

プロジェクトでAAAというライブラリを用いているけれど、そのAAAのインタフェースのstubでテストをしたい場合の話。AAA-mockとかプロジェクトを作って、下記のような感じですげかえる。 var AAA-mock = function(AAA, sandbox) { this.aaa = AAA this.initDa…

sinon.jsとかいうやつ

JS

テストで便利なライブラリ。spy(), stub(), mock(), sandbox()などが提供されている。 この中のsandboxからのrestore()の動きが最初よく分からずにハマった。 mochaのbeforeEachでsanboxを確保してから各メソッドのstubを作っておいて、各テストにおいてstub…

phantom.jsとかいうやつ

JS

テストの事前準備としてブラウザでの認証情報が必要な場合、phantom.jsを使ってCUIからブラウザ操作をして認証情報を取得していた。 基本的な操作はこんな感じ。 ●require('webpage').create() URL指定でページを表示するためのpageオブジェクトを作成します…