2011-01-01から1年間の記事一覧

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イベントとかだとマウスで貼り付けとかやったときイベント発火しない。あ…

textareaでタブを入力できるようにする

document.querySelector("textarea").addEventListener("keydown", function(e) { if (e.keyCode === 9) { e.preventDefault(); var elem = e.target; var val = elem.value; var pos = elem.selectionStart; elem.value = val.substr(0, pos) + '\t' + val.…

正規表現のメタ文字をエスケープ

正規表現にマッチさせるときにメタ文字があるとエラるので var foo = 'hoge(fuga'; 'hoge(fuga'.match( new RegExp(foo) ); // error こうすといいらしい。 var foo = 'hoge(fuga'.replace(/\W/g,'\\$&'); 'hoge(fuga'.match( new RegExp(foo) ); // ok

mongooseでunsetできない

isuueあがってた https://github.com/LearnBoost/mongoose/issues/519Stringのカラムなら空文字とかにすればいいんだけど、ObjectIdとかにしてると詰む。unsetできないし空文字いれようとするとInvalid ObjectIdとかでエラるし。一度セットしたObjectIdの値…

lessのエラーハンドリングがイマイチ

lessけっこういいんだけどエラーハンドリングがイマイチで困る。@importでファイルがなかった場合process.exit()しちゃう。オーマイガ。 https://github.com/cloudhead/less.js/blob/198f7c9d96c1f70bb800afdd7bda5f2ce0e9d2b1/lib/less/index.js#L115-116pa…

chain-tinyにparallel追加

https://github.com/hokaccha/node-chain-tiny配列かハッシュを受け取って並列に処理して全部終わったら次に進む。nextに渡したのがresultsで受け取れる。まあ普通です。 var r = []; chain.parallel({ foo: function(next) { setTimeout(function() { r.pus…

jadeがテンプレート継承サポートしてた

0.16からextendsがサポートされたみたい。あとmixinとかincludeとかも0.13からサポートされてるみたい。expressのjadeのexsampleもextends使ったのになってる。 https://github.com/visionmedia/express/commit/a4aed5f51a2798b258efcbde89b55097f46e520blay…

animation-fill-mode

css

CSSのanimationsで始まりと終わりの位置を決めるプロパティらしい。これ知らんかった。 http://dev.w3.org/csswg/css3-animations/#the-animation-fill-mode-property-

expressでルーティング一覧を表示する

TJが書いてた。便利。 https://gist.github.com/1288766メソッドに色つけてパスでソートしてみた。 https://gist.github.com/1288919app.all('hoge') があったとき破綻するw

lessでGoogle Web Fonts APIがエラる

lessでこれがエラる。 @import "http://fonts.googleapis.com/css?family=Smythe"; file 'http://fonts.googleapis.com/css?family=Smythe.less' wasn't found..lessか.cssで終わらないやつに勝手に.lessってつけてないよっていわれる。issueにあがって直っ…

文字列のバイト数を求める

connectのmiddlewareつくって、なんか途中でレスポンスが切れてておかしいなと思ってたら、こうなってた。 res.writeHead(200, { 'Content-Length': str.length }); lengthだとマルチバイトも1とカウントするのでマルチバイトが入ってた場合にlengthが合わな…

DOMをプレーンなオブジェクト(ハッシュ)にする

<div> <div>foo</div> <p>bar</p> </div> こんなのを { div: { div: 'foo', p: 'bar' } } こんな感じにしたい。jQueryプラグインで書いてみた。 http://jsfiddle.net/hokaccha/syEH2/今回は属性は必要なかったんでめんどいし無視した。あとこういうのもうまくいかない <p>hoge<span>fuga</span>piyo</p>

chain-tinyというのを書いた

https://github.com/hokaccha/node-chain-tinyflowコントロール系のモジュール。flowコントロール系はnpmで探せば腐るほどあるのにも関わらずなんで書いたかというと、自分で書いて動作をちゃんと理解したかったからというのが最初の動機。書いてみると結構…

nodeunitでテストの最初と最後だけ処理したい

ようはDBの接続と切断をしたいんだけど、テスト全体の最初と最後になんか処理するみたいのはできんのかな。nodeunit.testCase()のsetUpとtearDownは一回のテスト毎に実行されるから毎回接続/切断してるとテストの速度が落ちるんだよなあ。 module.exports = …

connect sessionのデフォルトの生存期間

デフォルトのmaxAgeは14400000なんだけど、なんかすごく長いように見えてmsなんで実は4時間だった。

connect 2.0.0alpha1 Released

connectの2系がリリースされた。結構インターフェース変わってるっぽい。あと気を付けないといけないのがnpmにもあがってて、nodeのバージョンの依存が >= 0.5.0 すでにこういう問題が起きてる。 https://github.com/kcbanner/connect-mongo/issues/11これpa…

async.mapとかのサンプルの引数

https://github.com/fjakobs/async.js async.map(['file1','file2','file3'], fs.stat, function(err, results){ // results is now an array of stats for each file }); ぱっと見fs.statのところがわからんかったけど、まず素直に書くとこう。 async.map([…

mongo shellでpretty print

db.foo.find().pretty()でできた。

package.jsonに--mongodb:nativeとか書く方法がわからない

GitHub - davglass/express-session-mongo: MongoDB session storage for ExpressJS これ使おうと思ったら this._db = new Db( dbName, server, { native_parser:true }); ってハードコードしてあって強制的にmongodbのBSONのネイティブパーサー使わないとい…

カッとなってconnect-external-sassというのを書いた

気晴らしに書いた。npmには上げてない。 GitHub - hokaccha/node-connect-external-sass: node-connect middleware for sass. using external ruby sass command.sassを動的にコンパイルするconnectのミドルウェア。node版のsassは微妙なんでこの際思い切っ…

expressとかconnectのmasterは開発ブランチ

expressとconnectウォッチしてて、ずっとmasterしか見てなかったけど、どうやらmasterは開発ブランチだということが最近わかった。connectのインターフェースがやたら変わってるんだけど、npmにリリースされてるのは前のインターフェースだということに気づ…

githubの言語ランキング

git

https://github.com/languages こんなんあるのね。github上ではjsが今のところ一位らしい

.npmignore書くべし

npmにアップするときは.npmignoreに書いたファイルは除外される。書くの忘れててconfyに.vimrc.projectとかいう恥ずかしいファイルが上がってた。内容どうするかだけど、他の人の見てみると.git*とかtest/とかが多いかな。testをnpmignoreするかどうかが迷い…