Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ferrara Linux Day 2011


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Ferrara Linux Day 2011

  1. 1. Ferrara Linux Day 2011 The tools of NodeJs
  2. 2. Evented I/O for V8 JavaScript.Nodes goal is to provide an easy way to build scalablenetwork programs.Node is similar in design to and influenced by systems likeRubys Event Machine or Pythons Twisted.HTTP is a first class protocol in Node. Nodes HTTP library hasgrown out of the authors experiences developing and workingwith web servers.
  3. 3. Event what???Example:var http = require(http);setInterval(function(){ console.log("Hello world");}, 2000);var host =;var port = 12345;http.createServer(function (req, res) { res.writeHead(200, {Content-Type: text/plain}); res.end(Hello Worldn);}).listen(port, host);console.log(Server running at http:// + host + : + port + /);
  4. 4. The first commit was:"Autore: Ryan <> 2009-02-16 01:02:00Revisione creata da: Ryan <> 2009-02-16 01:02:00Figlio: 61890720c8a22a7f1577327b32a180a2d267d765 (add readme and initial code)Ramo: master, remotes/origin/autoconf, remotes/origin/back_to_waf, remotes/origin/debugger,remotes/origin/eventsource, remotes/origin/http_agent, remotes/origin/http_parser_refactor, remotes/origin/many_listener_warning, remotes/origin/master, remotes/origin/pointer_bindings, remotes/origin/reload,remotes/origin/v0.2, remotes/origin/v0.4, remotes/origin/writev, remotes/origin/writev2Segue:Precede: v0.0.1 add dependencies"the project is young!
  5. 5. Very influenced from Ruby :-)
  6. 6. How to install Node?You can build use something like this:- Nave Nvm N three are bash script that manage different versions onnode in different dirs.
  7. 7. In node there is only one way to manage packages: npm.There was a big change in the first version, and now npmmanages easily same packages with different versions indifferent projects.The main actor is package.json defined in the CommonJsspecifications.
  8. 8. { "author": "gpad", "name": "nodelinuxday2011", "description": "app example fo LinuxDay 2001", "version": "0.0.1", "homepage": "", "repository": { "type": "git", "url": "git://" },    [...]}
  9. 9. {  [...] "main": "./server.js", "engines": { "node": "*" }, "dependencies": { "formidable": "~1.0.6" }, "devDependencies": { "nodeunit": "~0.5.5", "far": "~0.0.7" }}
  10. 10. package.json How it works?see example ... Cloud9Ide• Create a file with info e dependencies• Execute npm installInstall all the dependencies locally so dont conflicts withothers in other projects.What about devDependencies?
  11. 11. package.json devDependencies How it works?see example ... Cloud9Idenpm install --productioninstall locally only the package necessary to deploy. Thepackages listed in devDependencies are not  installed ...Cloud9Ide on version 1.8.7 works in different way, if you execute npminstall install only "dependencies" if you execute npm install --devalso install the devDependencies
  12. 12. What about testing? If you look this you will find a long list ofmodules for Testing / Spec Frameworks, some examples:Cucumber — The official JavaScript implementation of the well-known BDD tool. Runs both on Node.js and browsers.expresso — TDD framework by the author of JSpecmaryjane — Mock object library inspired by Mockitonode-qunit — QUnit port for nodejs. Very simple API, async testing,good tested testing framework.nodeunit — Simple syntax, powerful tools. Based on the assertmodule. Available for node.js and the browser!
  13. 13. So we are at the end, how to deploy?If you use Cloud9ide is very simple (is in beta now I cant :-)) ...,you can deploy manually with Heroku tools in a very simpleway.There is a new platform called Nodejitsu with all the toolsavailable on github.Others use capistrano with this recipes
  14. 14. Other funny things??• Jake - Similar to Rake• Cluster - Node.JS multi-core server manager with plugins support • Express - High performance, high class web development for  Node.js• Node-DbDeploy - A data migration tool inspired by dbdeploy
  15. 15. Thank YOU !!! Q&A