Nodefest2013 my npm modules7. 1. imagemagick-native
% npm install imagemagick
実体は
require(“child_process”).spawn(“convert”,
args);
% npm install imagemagick-native
ImageMagickのC++ Bindingを使う
imagemagick: 8.07ms per iteration
imagemagick-native: 0.87ms per iteration
8. app.get( "/*", function (req, res) {
async.waterfall([
function (options, callback) {
var requestOptions = parse( req.url );
// download from s3
request.get( requestOptions, function(err,res,body) {
callback( null, body, resizeOptions );
});
},
function (body, resizeOptions, callback) {
var buf;
try {
buf = imagemagick.convert( resizeOptions );
} catch (e) {
// handle error
};
callback( null, buf );
},
function (buf) {
// store
cache.set(key, buf);
},
function (buf) {
// respond
res.end(buf);
callback( null );
}
], errorHandler );
});
21. 2. angel
var angel = require("angel");
var server = require("http").createServer( function(req, res)
{
res.writeHead(200);
res.end("Hello, World!");
});
angel( app, {
port:
refresh_modules_regexp:
max_requests_per_child:
workers:
});
3000,
"(config|lib)/",
10000,
4
22. 2. angel
% angel --port 3000
--workers 4
--max-requests-per-child 10000
--refresh-modules-regexp “lib/”
app.js
% cat app.js
var server = require("http").createServer( function(req, res)
{
res.writeHead(200);
res.end("Hello, World!");
});
module.exports = server;
23. 2. angel
% node eg/server.js
master[70402] created pid_file: angel.pid
master[70402] master will fork 4 workers
master[70402] forked worker[70403]
master[70402] forked worker[70404]
master[70402] forked worker[70405]
master[70402] forked worker[70406]
worker[70404] launched
worker[70404] listening on 3000
worker[70406] launched
worker[70406] listening on 3000
worker[70403] launched
worker[70405] launched
worker[70403] listening on 3000
worker[70405] listening on 3000
24. 2. angel
% pstree -p 70402
| |
-+= 55828 mash /bin/zsh
| |
-+= 70402 mash node eg/server.js
| |
|--- 70403 mash snip/proj/node-angel/eg/server.js
| |
|--- 70404 mash snip/proj/node-angel/eg/server.js
| |
|--- 70405 mash snip/proj/node-angel/eg/server.js
| |
--- 70406 mash snip/proj/node-angel/eg/server.js