kidoOooOoooOOom

ゲーム開発やってます

Node.js

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

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

Node.jsでエクセルparseして出力など

本来はやりたくないことだが、大量のエクセルファイルで用意されてしまったデータから必要なものだけ抜き出して整形して出力する必要性があったので対応した。 使用したのは xlsx モジュール例えば、下記のようなテンプレートのエクセルファイルがあるとする…

Node.jsでBasic認証

basic-auth-connect モジュールを使うと簡単にできる。 そのまま user名とpasswordを渡すと、認証エラーの場合は 401を返してくれる。 var basicAuth = require('basic-auth-connect'); app.use(basicAuth(username, password)); ちょっと特殊な処理をかまし…

nodeでファイルの拡張子を厳格に指定して読み込み

nodeのプロジェクトで、/lib/service/index.js などのファイルから、同ディレクトリ配下のjsファイルを一括してexportsさせるケースがある。例えば下記のようなコード。 var fs = require('fs'); var path = require('path'); var _ = require('lodash'); _.…

nodejsで文字コードがsjisのcsvを取得して出力

svnサーバにあがっているcsvファイルを、httpsで取得してごにょごにょ処理をする必要があったのでメモ。 最初、httpsモジュール使って書いてたけど、文字化けがどうしても解決できなくて request モジュールに変えて enconding = null のオプションを使った…

async.eachSeriesで次のステップに進ませること

危うくeachSeriesの使い方間違ってバグを埋め込むところだった。間違ってたときはこんなコード書いてた。これだと最初の要素で処理終わってしまっていた。 async.eachSeries(hogeList, function(hoge){ // hogehoge return done(); }, function(err) { if (e…

async.waterfallなどの多用はパフォーマンスに影響あるので注意

今日はコードレビューを受けたが、if/switchで十分なところをasync.waterfallを使っている箇所があり、async.waterfallの多用は性能的に影響が出るのでif/switchにしてね という指摘があった。 まあ自分が書いたところではないんだけど、勉強がてらリファク…

Sublime TextでNodejsをコード補完

こんな便利なモジュールがあったのか・・・。気付かずに2週間ぐらい開発していた。Nodejs で検索して入れるだけでok.

Sublime Text上でjsを実行する

[ツール]-[ビルドシステム]-[ビルドシステムを追加する]を選択する。下記のようなテンプレートのファイルが開かれるので、 { "cmd": ["make"] }これを下記のように変更する。nodeのところは適宜パスの通るところで。 { "cmd": ["node","$file","file_base_na…

mochaのbefore, beforeEach, after, afterEachの実行順番

(function () { describe('before test', function () { before(function(){ console.log('before'); }); beforeEach(function(){ console.log('beforeEach'); }); after(function () { console.log('after'); }); afterEach(function () { console.log('aft…

エラー処理について

node.js におけるエラー処理のコーディングパターン (もしくは非同期 JavaScript における例外処理) http://d.hatena.ne.jp/kazuhooku/20120420/1334891656 繰り返しますが、「全ての」コールバックの第1引数を error にすることが重要です。 了解です。

npm installの小技

npm installで、gitリポジトリ上で公開されているライブラリのパスを指定しているような場合、バージョン番号ではなくブランチ名を指定したいことがある。 そういう場合は、パスの末尾に #ブランチ名 をつければそのブランチでインストールできる。 こんな感…

async.waterfallで気をつけておくこと

JS学んでまだ日が浅いせいか、callbackの引数周りがよく混乱する。特に今日はasync.waterfallでcallbackの第1引数にはnull, 第2引数にidとかを設定しておいて、次の関数では第1引数でidを受け取っている感じになっていて、えええーーとなった。 第1引数が…

今日知ったasyncシリーズのやつ

・async.eachSeries eachSeries(arr, iterator, callback)The same as each only the iterator is applied to each item in the array in series. The next iterator is only called once the current one has completed processing. This means the iterato…

underscore.jsとかいう良い奴

idプロパティが1~11のオブジェクトを持った配列を作りたい場合、underscore.js使ってこんな感じに書いた。もっと良い書き方探したい。 var items = _.map(_.range(1,12), function(num){ return { id: num }; });

asyncの勉強

node.jsでasyncモジュールが結構便利みたい。 series, parallel, waterfallはよく例としても見かけるので理解できた。 今日初めて見たuntilとqueueの2つをメモっておく。 async.until caolan/async · GitHub until(test, fn, callback) Repeatedly call fn,…

node.jsエンジニアになりまして

npm installで環境周りのエラーが出てきたので、一旦nodeを消してnodebrewを入れた。 参考にしたURL node.jsのversionを管理するためにnodebrewを利用する - Qiitanodeが入っていたので削除。 $ curl -o uninstall-node.sh https://gist.github.com/nicerobo…

Unity + node.js + redisを繋げただけのプロジェクト

勉強がてらに、Unity入門本のサンプルゲームのハイスコアをnode.jsのAPIを叩いてredisに格納、取得するプロジェクトを作成してみた。kidooom/unity_nodejs_redis_sample · GitHubUnity部分はUnity本のにわとりゲームがほとんどで、下記のAPI通信部分だけを追…

UnityScriptでHTTP POST

POSTを待ち受けているURLに対して scoreというパラメータをPOSTする場合は、 function sendScore(score : String){ var postUrl = "http://localhost:3000/unity_sample_score"; var wwwForm: WWWForm = new WWWForm(); wwwForm.AddField("score", score); v…

UnityScriptでJSONデータをHTTP GETしてパース

まずはminiJSONを下記から取得して、Assets/Pluginsに格納 http://forum.unity3d.com/threads/35484-MiniJSON-script-for-parsing-JSON-data練習がてら、下記のようなJSONを取得してみます。 { "x": 10, "y": 200, "z": 30 }localhostにたててるnode.jsからJ…