2011-07-01から1ヶ月間の記事一覧
nodeでrequireされたモジュール内のthisはmodule.exportsになる console.log(this === module.exports); // true なのでthisに値を設定するのはmodule.exportsに設定するのと基本的には同じ。ただしスコープつくってしまうとthisが変わるので注意 (function(…
for (var key in obj) { if (obj.hasOwnProperty(key) { ... } } っていうのは Object.keys(obj).forEach(function(key) { ... }); と等価。ベンチマークとってみた。環境はnode.js v0.4.7。 ベンチマークのコードはこんな感じ。一応hasOwnPropertyなしのfor…
jQuery.isPlainObjectみたいなやつ。こんな感じかな function isObject(obj) { return obj instanceof Object && Object.getPrototypeOf(obj) === Object.prototype; } console.log(isObject({})); // true console.log(isObject({ foo: 'bar' })); // true …
node.jsでconsole.logとかしてもenumerableがfalseなプロパティは見れない。 var o = Object.create(null, { foo: { value: 'bar', enumerable: false }, }); console.log(o.foo); // => bar console.log(o); // => {} o.fooはあるのにoをconsole.logしても…
node.jsのデーモン化とかプロセス管理するのでforeverっていうの試したけどいまいちバギーだったので結局damontoolsに落ち着いた。さすがの安定感。インストール。svtoolsがdaemontoolsでdaemontools-runってのは起動時に自動でsvscanしてくれるようになるや…
的なシェルスクリプト #!/bin/sh FROM=/path/to/from/ TO=/path/to/to/ EXCLUDE=/path/to/exclude OPT="-av --delete --exclude-from=$EXCLUDE $FROM $TO" RUN="rsync $OPT" DRY_RUN="rsync --dry-run $OPT" $DRY_RUN echo -n 'deply? [y/n]: ' read YN if […
Objectを再帰的にマージしたい。 var _ = require('underscore')._; var a = { hoge: { key1: 'val1' } }; var b = { hoge: { key2: 'val2' } }; console.log(_.extend(a, b)); // こうなってほしいけど // { hoge: { key1: 'val1', key2: 'val2' } } // // …
ってsprintfみたいなことできたのね。 console.log('foo %s', 'bar'); //=> foo bar
nginxのベンチとってたら、abの途中でつまって、 apr_poll: The timeout specified has expired (70007)とかなったのでなんぞと思った。こういうことらしい。 http://www.maidsphere.jp/archive/20100801
なんかMongoDBのログの設定いじってたらOplogっていう設定項目があってなんぞと思って調べた。ここに詳しくのってる。 MongoDB Oplog入門レプリケーションの同期とかに使うやつらしい。
前回に引き続きconnect.jsを読む。今回はconnect/http.js。ここがconnectのコア。まず最初にコンストラクタ。ここでhttp.Serverを継承してる。んでhttp.Server.call(this, this.handle)ってやってるのでリクエストハンドラをthis.handleにしてる。リクエスト…
connect読んでてそもそもhttp.createServerがどういうものかわかってなかったので。 var http = require('http'); var server = http.createServer(); server.on('request', function(req, res) { res.write(req.method + ' ' + req.url); res.end(); }); se…
メモ。 Getting Started - SendGrid Documentation | SendGrid var email = require("mailer"); email.send({ host : ..., port : ..., to : "to@example.com", from : "from@example.com", subject : "タイトル", body: "Hi, <name>" authentication : "login", u</name>…
なんかnodemailerとかmailerとか名前が似てるけどmailerのやつ。 GitHub - Marak/node_mailer: ## Project deprecated, see READMEtemplateを指定するとテンプレートエンジンにmustache.jsを使ってレンダリングしてくれるんだけど、このとき、レンダリング結…
なんか前回Sendgridではまりまくった件、やっぱり使ってたモジュールが原因だったっぽい。 SendGridのSMTPではまる - hokaccha.hamalog v2なんかこういうエラーがでてた。 events.js:45 throw arguments[1]; // Unhandled 'error' event ^ Error: 503 Alread…
node-devがどういう仕組みでファイルを監視してるのか気になって調べたのでメモ。基本的にはfs.watchFileで監視するんだけど、ロードしてるモジュールも全部監視してるのが謎だった。node.jsはrequireでモジュールをロードするときrequire.extensionsという…
http://docs.sendgrid.com/documentation/get-started/integrate/ とりあえずnode.jsからSMTPでメール送ってみようと思ってここのサンプルみながらやったけどなんかエラーになる。 Error: 503 Already authenticatedとか言われる。 node.jsのモジュールがお…
ACLってのはアクセス制限を定義するやつ。ここに書いてある。 http://code.google.com/intl/ja/apis/storage/docs/accesscontrol.html スコープごとにパーミッションを指定する スコープごとっていうのはユーザーごとにとか、メールアドレスごとにとか、グル…
時間をファイル名につけるようなシェルスクリプト書くときに FILE_NAME=`date +"%Y%m%d-%k%M%S"`.tar.gz とかすると、時間が一桁(1時〜9時)だったとき、%kは空白入りの文字列になるので意図しない動作になることがある。 $ date -d "2011-07-10 01:00:00" …
バックアップをとる簡単なシェルスクリプトのメモ。mongodbのdatabaseのデータをdumpしてtar.gzにして30日以上前のは消す。 #!/bin/sh DB_NAME=$1 if [ -z $DB_NAME ]; then echo 'require database name' exit fi BACKUP_BASE_DIR=/backup/db BACKUP_DIR=$B…
シェルスクリプトはほんとにたまにしか書かないので基本的なことも忘れがち。 for i in {1..10}; do echo $i; done
なんかtarで圧縮しようと思ったら $ tar cvzf hoge.tar.gz /home/hokamura/tmp/hoge tar: Removing leading `/' from member namesっていうワーニングが出たので何かと思って調べた、絶対パスでの指定は-Pオプションをつけるべしということらしい。 -P, --ab…
使用するフレームワークのコードはちゃんと読んで理解しとけと偉い人が言ってた気がするのでexpressのコードを読んでみる。今回読むexpressのバージョンは2.4.3。 GitHub - expressjs/express at 2.4.3: Fast, unopinionated, minimalist web framework for …
がよくわからんかったのでソース見たら exports.createServer = function(requestListener) { return new Server(requestListener); }; だった。
nodeのqsモジュールのコード読んでたらよくわからん書き方があった。 if (~key.indexOf(']')) { ... } って感じだったんだけど、チルダってなんだっけと思って。チルダはビット反転演算子で、整数をビット反転させると符号を反転させて1引いた数になる。こん…
$ ffmpeg -i in.mp4 -f image2 out/%d.pngこんな感じ。超簡単。
homebrewで簡単に入るかと思いきやmakeでこけて入らなかったので自前でビルドした $ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg $ cd ffmpeg $ ./configure --enable-libmp3lame --enable-shared --disable-mmx --arch=x86_64 $ make $ make in…
最初32bitにしてたけど64bitにした。理由はMongoDBが32bitだと容量2GB制限があるから。 心配してたのはメモリ使用量で、メモリ1GBしかないVPSだから32bitのほうがメモリにやさしくていいかなーと思って、32bitにしたけど、nginx+node.js+mongodbとかで色々ベ…
snipMateのディレクトリ指定 snipMateのsnippetsディレクトリを指定してなくて、2回読まれるのwarningが出た。スニペットは自分で編集して管理したいので.vim直下に置いてgitで管理したい。 let g:snippets_dir = $HOME.'/.vim/snippets' インデントがおかし…
なんかSMTPサーバーをクラウドでやる的なやつ。調べたら色々あった。 SendGrid SocketLabs Amazon SES CritSend Postmark ElasticEmail SendGridがフリープランあるみたいだから試してみる。