2011-11-01から1ヶ月間の記事一覧

Foo.prototype = {}するとconstructorがObjectになる

function Foo() {} Foo.prototype.a = 'b'; var foo = new Foo; console.log(foo.constructor.name); // => Foo これでコンストラクタとれるんだけど、こうするとダメ。 function Foo() {} Foo.prototype = { a: 'b' }; var foo = new Foo; console.log(foo.…

lessのエラーハンドリング

function foo() { var e = { name: 'Error', message: 'hoge' }; throw e; } foo(); node.jsでこれ実行すると node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: hogeこうなるわけなんだけど、エラーの箇所がさっぱ…

chromeのwebkitNotificationsに設定したonclickが一定時間後に効かなくなる

原因がよくわからんのだけどnotificationsに設定したonclickがしばらくすると効かなくなることがある気がする。chrome15。 function notify() { var n = webkitNotifications.createNotification("foo", "bar"); n.onclick = function() { console.log("hoge…

jQueryのanimate scrollTopで困った件

今更こんなのにはまった。スムーズスクロール実装するときに、 $("html, body").animate({ scrollTop: 0 }, function() { console.log("animate end"); }); WebKitだとbody、それ以外だとhtmlにしないと動かないので $('html, body') って書くのが普通っぽい…

jsdomでメモリリークしてる場合はwindow.close()すべし

5000件くらい一気にスクレイピングしたいってのがあって、jsdomでスクレイピングしてたんだけど、メモリの使用量がふくれあがってすぐメモリリークしちゃってどうしようかと思ったんだけど、ググったら同じ人いっぱいいて、window.close()しろって書いてあっ…

node.jsで出力がTTYかどうか判断する

perlでいうと if (-t STDOUT) { say 'tty'; } else { say 'not tty'; } こういうことがやりたくてnodeだとこうするといけるみたい。 var tty = require('tty'); if (tty.isatty(1)) { console.log('tty'); } else { console.log('not tty'); } 1はSTDOUTね。…

node.jsでjson整形するワンライナー

curl http://api.twitter.com/1/statuses/user_timeline/hokaccha.json | node -e 'd = ""; process.stdin.resume(); process.stdin.on("data", function(c) { d+=c; }); process.stdin.on("end", function() { console.log(JSON.parse(d, null, " ")); });'…

less 1.1.5 released

リリースされてた。npmにも。 https://github.com/cloudhead/less.js/commit/ab5af597effc0bea3c7466f0c6f8f3ae2bc7dcae#package.jsonリリーススパンはそんな短くないlessだから色々バグ直ってて嬉しい。細かいChangeLogは見てないけどとりあえず。

jsでarray_chunk

http://php.net/manual/ja/function.array-chunk.php こういうのほしかったので。 function arrayChunk(input, size) { var ret = [] , x = -1; input.forEach(function(val, i) { var y = i % size; y === 0 ? ret[++x] = [val] : ret[x][y] = val; }); ret…

nodebrewをgithubに移した

なんか意外にもいけそうな気がしたのでgithubに移した https://github.com/hokaccha/nodebrew機能追加とか改善点があればどしどしお願いします。

nodebrew書いてみた

Jxck's OutPut - Node.js の環境管理(version manager) について。 #nodejs_jpnvmってそんな難しいことしてないので自分が使いやすいのを書けばいいんじゃないかと思って書いてみた。 node package manager · GitHubperlだったらまあほとんどのサーバーに入…

expressのルーティング

express2.5からexpressコマンドでプロジェクトつくると./routesってディレクトリにルーティングが書かれるようになってる。規模が大きくなるほど煩雑になるので、ルーティングのファイルは分けたほうがいいと思うけど、これでも個人的にはやや微妙。 var exp…

Travis CIでNodeのテスト

やってみた。Travice CIにログインしたら自分のGithubのプロジェクトが一覧で出るのでCIしたいプロジェクトをONにする。んでgithubのプロジェクトに.travis.ymlおいてpushするだけ。超簡単。 http://travis-ci.org/#!/hokaccha/node-chain-tiny.travis.ymlは…

chain-tinyにwaitとeach(Parallel)追加

ほしかったので追加。eachはforEachのObject版。waitはjsdeferredのwaitとほぼ同じ(引数はms)こんな感じ。 var chain = require('chain-tiny'); // each chain(function(next) { next(null, { foo: 'bar', hoge: 'fuga'}); }) .each(function(key, val, ne…

Bufferの連結

こんな感じでいいんだろうか function concatBuffer(bufs) { var len = bufs.reduce(function(a, b) { return a.length + b.length }) , buf = new Buffer(len) , start = 0; bufs.forEach(function(chunk) { chunk.copy(buf, start, 0); start += chunk.len…

node 0.6対応

0.6がリリースされたんでリリースしてるモジュールを対応させた。chain-tinyは大丈夫だったけどconfyとdata-sectionがテストこけてたので修正した。https://github.com/hokaccha/node-confy/commit/2bb4efab77c87ffd6c395c77d00b7890542d0630 process.ENVは…

gitlabのインストールではまる

gitlab立ち上げるけどプロジェクトつくるところでgitosisのエラーになって延々はまった。最終的に慣れないrubyのソース読んだ。https://github.com/gitlabhq/gitlabhq/blob/23187d60c4eb3eb2d51459ab18fd16da9caa5b58/lib/gitosis.rb#L29最初間違えてsudoで…

inputイベント便利

どのブラウザで今サポートされてるかちゃんと調べてないけどchrome15ではサポートされてる。input[type=text]とかchangeイベントだとフォーカス外れないとイベント発火しないし、keyupイベントとかだとマウスで貼り付けとかやったときイベント発火しない。あ…