node.js

クロージャとbindの引数束縛パフォーマンス

JavaScriptで引数を束縛したい場合、クロージャかbindを使うのだが… function plus(x, y) { return x + y; } function multiply(x, y) { return x * y; } // Function.prototype.bindで束縛 const plus1 = plus.bind(null, 1); plus1(5); // => 6 // closure…

関数の可変長な仮引数を直接コンストラクタに渡す

ある関数が受け取る可変長引数を、コンストラクタに直接渡す方法 要するにコンストラクタが可変長引数を受け取るのでファクトリ関数も可変長引数を使えるようにしたいんですよ。 ES2015ならばこう。 'use strict'; class Hoge { constructor(...args) { cons…

ES2015以前の可変長引数の書き方

LTSのnode 4系ではRest Parametersは使えんのですよね。 'use strict'; function x(a, var_args) { const args = Array.prototype.slice.call(arguments, 1); console.log(a); console.log(args); } x('a'); x('b', 1); x('c', 1, 2); x('d', 1, 2, 3); 可変…

Hostname/IP doesn't match certificate's altnames

node v0.8時代のアプリをv4.2で起動したら、Hostname/IP doesn't match certificate's altnames というエラーが出て動作しなかった。 HTTPSリクエストで、リクエストホスト名とサーバ証明書に記されたドメインが一致しないというエラーメッセージ。node v0.1…

streamに汎用フィルタ処理

今度は任意のfunctionをフィルタ関数として使用するstreamを書いてみた。先日書いたテキストの行処理を行うストリームと組み合わせると便利に使えそう。 var stream = require('stream'); var util = require('util'); function StreamFilter(filter){ this.…

streamを使ってnode.jsで行処理する

node.jsのstreamはディスクやネットワークのIO処理を行うためのオブジェクトだが、それ自身ではIO処理を行わず別のstreamの後処理、前処理を行うフィルタとしても使うことができる。npmを探すと書き出す前にデータの暗号化や圧縮を行うstreamライブラリなど…

node.jsで行処理

追記:今はこちらのライブラリがおすすめwww.npmjs.com

nextTick等へ渡す関数に引数を設定する

function hoge(name, count) { var i = 0; (function fuga() { if (i < count) { console.log(name + ":" + i++); process.nextTick(fuga); } else { console.log(name + ":end"); } })(); みたいにクロージャでnextTickに値を渡す方法だけど、関数なのだか…

process.nextTick

ClusterとSocket.IO について - nodejs_jp | Google グループほむほむ hoge("a", 10); hoge("b", 10); function hoge(name, count) { var i = 0; (function fuga() { if (i < count) { console.log(name + ":" + i++); fuga(); } else { console.log(name + …