[Node.js] ReadableStream of lines
$ npm install linestream
OR
newton_raphson = (f, x0)-> | |
x0 = Math.random() if typeof x0 isnt "number" | |
fx0 = f(x0) | |
x = x0 + 0.01 # for approximating gradient | |
loop | |
fx = f(x) | |
gradient = (fx - fx0) / (x - x0) | |
delta = fx/gradient | |
break if Math.abs(delta) < 0.0000001 | |
x0 = x |
function deepCopy(val) { | |
if (Array.isArray(val)) return val.map(deepCopy); | |
if (typeof val != "object" || val === null || val === undefined) return val; | |
var ret = {}; | |
for (var attr in val) if (val.hasOwnProperty(attr)) ret[attr] = deepCopy(val[attr]); | |
return ret; | |
} |
// WW XXXX YYY ZZ -> get four characters (e.g. WXXZ) | |
// var G = [2, 4, 3, 2] // each stands for the number of W, X, Y, Z | |
// select(G, 4); // get all possible combinations | |
// [ [2,2,0,0], [2,1,1,0], [2,1,0,1] ... ] // each stands for the number of selected W, X, Y, Z | |
function sum(G) { | |
return G.reduce(function(t,v){return v+t},0); | |
} | |
function copy(a) { | |
return a.slice(); |
/** | |
* transpose.js | |
* @author SHIN Suzuki | |
* | |
**/ | |
/** | |
* function transpose | |
* | |
* @param chordStr (string): documents containing chords |
function unique(arr) { | |
var ret = []; | |
for(var i=0, l=arr.length; i<l; i++) { | |
for(var j=i+1; j<l; j++) { | |
if (arr[i] === arr[j]) j = ++i; | |
} | |
ret.push(arr[i]); | |
} | |
return ret; | |
}; |
var values = [ | |
123, // int | |
"string", // short string | |
true, // boolean | |
42.195, // float | |
"AAAAAABBCCCCCCDDDDDDDDEEEEEEEAAAAAAAAAAAAA", // string | |
null | |
]; | |
function passObjByValue(N, nkey, keylen) { |
var fs = require('fs'); | |
var filename = process.argv[2]; | |
fs.open(filename, 'r', function(err, fd) { | |
fs.watchFile(filename, function(cstat, pstat) { | |
var delta = cstat.size - pstat.size; | |
if (delta <= 0) return; | |
fs.read(fd, new Buffer(delta), 0, delta, pstat.size, function(err, bytes, buffer) { | |
console.log("err", err, "delta", delta, "bytes", bytes, "buffer", buffer.toString()); | |
}); |
var crypto = require('crypto'); | |
var md5sum = crypto.createHash('md5'); | |
md5sum.update('shinout', 'utf8'); | |
console.log(md5sum.digest('hex')); |
/** | |
* 半角カナを全角カナに変換する | |
* 半角スペースは変換しない | |
* 対応がとれない濁点、半濁点は変換しない | |
*/ | |
function toKanaZenkaku(str) { | |
// lengthの等しい2つの文字列でkey-valueをつくる | |
const makeMap = (str1, str2) => | |
str1 | |
.split("") |