SlideShare une entreprise Scribd logo
1  sur  15
Ferrara Linux Day 2011

    The tools of NodeJs
Evented I/O for V8 JavaScript.

Node's goal is to provide an easy way to build scalable
network programs.

Node is similar in design to and influenced by systems like
Ruby's Event Machine or Python's Twisted.

HTTP is a first class protocol in Node. Node's HTTP library has
grown out of the author's experiences developing and working
with web servers.
Event what???

Example:
var http = require('http');

setInterval(function(){
   console.log("Hello world");
}, 2000);

var host = '127.0.0.1';
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 + '/');
The first commit was:

"Autore: Ryan <ry@tinyclouds.org>   2009-02-16 01:02:00
Revisione creata da: Ryan <ry@tinyclouds.org> 2009-02-16 01:02:00
Figlio: 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/writev2
Segue:
Precede: v0.0.1

  add dependencies"

the project is young!
Very influenced from Ruby :-)
How to install Node?

You can build https://github.com/joyent/node

Or use something like this:
- Nave https://github.com/isaacs/nave
- Nvm https://github.com/creationix/nvm
- N https://github.com/visionmedia/n
All three are bash script that manage different versions on
node in different dirs.
In node there is only one way to manage packages: npm.

There was a big change in the first version, and now npm
manages easily same packages with different versions in
different projects.

The main actor is package.json defined in the CommonJs
specifications.
{
  "author": "gpad",
  "name": "nodelinuxday2011",
  "description": "app example fo LinuxDay 2001",
  "version": "0.0.1",
  "homepage": "https://github.com/gpad/nodelinuxday2011",
  "repository": {
    "type": "git",
    "url": "git://github.com/gpad/nodelinuxday2011.git"
  },
    [...]
}
{
  [...]
   "main": "./server.js",
  "engines": {
    "node": "*"
  },
  "dependencies": {
    "formidable": "~1.0.6"
  },
  "devDependencies": {
    "nodeunit": "~0.5.5",
    "far": "~0.0.7"
  }
}
package.json How it works?

see example ... Cloud9Ide

• Create a file with info e dependencies
• Execute npm install

Install all the dependencies locally so don't conflicts with
others in other projects.

What about devDependencies?
package.json devDependencies How it works?

see example ... Cloud9Ide

npm install --production

install locally only the package necessary to deploy. The
packages listed in devDependencies are not  installed ...

Cloud9Ide on version 1.8.7 works in different way, if you execute npm
install install only "dependencies" if you execute npm install --dev
also install the devDependencies
What about testing? If you look this you will find a long list of
modules 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 JSpec
maryjane — Mock object library inspired by Mockito
node-qunit — QUnit port for nodejs. Very simple API, async testing,
good tested testing framework.
nodeunit — Simple syntax, powerful tools. Based on the assert
module. Available for node.js and the browser!
So we are at the end, how to deploy?

If you use Cloud9ide is very simple (is in beta now I can't :-)) ...,
you can deploy manually with Heroku tools in a very simple
way.

There is a new platform called Nodejitsu with all the tools
available on github.

Others use capistrano with this recipes
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
Thank YOU !!!

     Q&A

Contenu connexe

Tendances

Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
Amit Thakkar
 
Webconf nodejs-production-architecture
Webconf nodejs-production-architectureWebconf nodejs-production-architecture
Webconf nodejs-production-architecture
Ben Lin
 

Tendances (20)

3 Things Everyone Knows About Node JS That You Don't
3 Things Everyone Knows About Node JS That You Don't3 Things Everyone Knows About Node JS That You Don't
3 Things Everyone Knows About Node JS That You Don't
 
Start tracking your ruby infrastructure
Start tracking your ruby infrastructureStart tracking your ruby infrastructure
Start tracking your ruby infrastructure
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?
 
Node.js and Ruby
Node.js and RubyNode.js and Ruby
Node.js and Ruby
 
Multiple django applications on a single server with nginx
Multiple django applications on a single server with nginxMultiple django applications on a single server with nginx
Multiple django applications on a single server with nginx
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
 
Philly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJSPhilly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJS
 
Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
 
Построение простого REST сервера на Node.js | Odessa Frontend Code challenge
Построение простого REST сервера на Node.js | Odessa Frontend Code challengeПостроение простого REST сервера на Node.js | Odessa Frontend Code challenge
Построение простого REST сервера на Node.js | Odessa Frontend Code challenge
 
Node js实践
Node js实践Node js实践
Node js实践
 
Nodejs in Production
Nodejs in ProductionNodejs in Production
Nodejs in Production
 
Node js for beginners
Node js for beginnersNode js for beginners
Node js for beginners
 
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ... Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 
Future of NodeJS
Future of NodeJSFuture of NodeJS
Future of NodeJS
 
Webconf nodejs-production-architecture
Webconf nodejs-production-architectureWebconf nodejs-production-architecture
Webconf nodejs-production-architecture
 
NodeJS
NodeJSNodeJS
NodeJS
 
[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx
 
Node.js
Node.jsNode.js
Node.js
 
Fundamental of Node.JS - Internship Presentation - Week7
Fundamental of Node.JS - Internship Presentation - Week7Fundamental of Node.JS - Internship Presentation - Week7
Fundamental of Node.JS - Internship Presentation - Week7
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
 

En vedette

En vedette (7)

Keynote meetup Elixir/Erlang 17 ottobre 2015
Keynote meetup Elixir/Erlang 17 ottobre 2015Keynote meetup Elixir/Erlang 17 ottobre 2015
Keynote meetup Elixir/Erlang 17 ottobre 2015
 
La mia prima lezione di pozioni
La mia prima lezione di pozioniLa mia prima lezione di pozioni
La mia prima lezione di pozioni
 
OOP vs COP
OOP vs COPOOP vs COP
OOP vs COP
 
C++ Actor Model - You’ve Got Mail ...
C++ Actor Model - You’ve Got Mail ...C++ Actor Model - You’ve Got Mail ...
C++ Actor Model - You’ve Got Mail ...
 
Docker e git lab
Docker e git labDocker e git lab
Docker e git lab
 
Async await in C++
Async await in C++Async await in C++
Async await in C++
 
System integration through queues
System integration through queuesSystem integration through queues
System integration through queues
 

Similaire à Ferrara Linux Day 2011

Similaire à Ferrara Linux Day 2011 (20)

I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
 
Nodejs
NodejsNodejs
Nodejs
 
Nodejs
NodejsNodejs
Nodejs
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 
An overview of node.js
An overview of node.jsAn overview of node.js
An overview of node.js
 
Proposal
ProposalProposal
Proposal
 
Node js (runtime environment + js library) platform
Node js (runtime environment + js library) platformNode js (runtime environment + js library) platform
Node js (runtime environment + js library) platform
 
Introduction to Node js for beginners + game project
Introduction to Node js for beginners + game projectIntroduction to Node js for beginners + game project
Introduction to Node js for beginners + game project
 
Node js beginner
Node js beginnerNode js beginner
Node js beginner
 
Introduce about Nodejs - duyetdev.com
Introduce about Nodejs - duyetdev.comIntroduce about Nodejs - duyetdev.com
Introduce about Nodejs - duyetdev.com
 
Node J pdf.docx
Node J pdf.docxNode J pdf.docx
Node J pdf.docx
 
Node J pdf.docx
Node J pdf.docxNode J pdf.docx
Node J pdf.docx
 
DCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless WorldDCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless World
 
Nodejs
NodejsNodejs
Nodejs
 
Overview of Node JS
Overview of Node JSOverview of Node JS
Overview of Node JS
 
Book
BookBook
Book
 
Node.js
Node.jsNode.js
Node.js
 

Plus de Gianluca Padovani

Plus de Gianluca Padovani (10)

A Gentle introduction to microservices
A Gentle introduction to microservicesA Gentle introduction to microservices
A Gentle introduction to microservices
 
Beam me up, scotty (PUG Roma)
Beam me up, scotty (PUG Roma)Beam me up, scotty (PUG Roma)
Beam me up, scotty (PUG Roma)
 
Tdd is not about testing (C++ version)
Tdd is not about testing (C++ version)Tdd is not about testing (C++ version)
Tdd is not about testing (C++ version)
 
Tdd is not about testing (OOP)
Tdd is not about testing (OOP)Tdd is not about testing (OOP)
Tdd is not about testing (OOP)
 
DDD loves Actor Model and Actor Model loves Elixir
DDD loves Actor Model and Actor Model loves ElixirDDD loves Actor Model and Actor Model loves Elixir
DDD loves Actor Model and Actor Model loves Elixir
 
Tdd is not about testing
Tdd is not about testingTdd is not about testing
Tdd is not about testing
 
From a web application to a distributed system
From a web application to a distributed systemFrom a web application to a distributed system
From a web application to a distributed system
 
Beam way of life
Beam way of lifeBeam way of life
Beam way of life
 
Cook your KV
Cook your KVCook your KV
Cook your KV
 
Beam me up, Scotty
Beam me up, ScottyBeam me up, Scotty
Beam me up, Scotty
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Ferrara Linux Day 2011

  • 1. Ferrara Linux Day 2011 The tools of NodeJs
  • 2. Evented I/O for V8 JavaScript. Node's goal is to provide an easy way to build scalable network programs. Node is similar in design to and influenced by systems like Ruby's Event Machine or Python's Twisted. HTTP is a first class protocol in Node. Node's HTTP library has grown out of the author's experiences developing and working with web servers.
  • 3. Event what??? Example: var http = require('http'); setInterval(function(){ console.log("Hello world"); }, 2000); var host = '127.0.0.1'; 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. The first commit was: "Autore: Ryan <ry@tinyclouds.org> 2009-02-16 01:02:00 Revisione creata da: Ryan <ry@tinyclouds.org> 2009-02-16 01:02:00 Figlio: 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/writev2 Segue: Precede: v0.0.1 add dependencies" the project is young!
  • 6. How to install Node? You can build https://github.com/joyent/node Or use something like this: - Nave https://github.com/isaacs/nave - Nvm https://github.com/creationix/nvm - N https://github.com/visionmedia/n All three are bash script that manage different versions on node in different dirs.
  • 7. In node there is only one way to manage packages: npm. There was a big change in the first version, and now npm manages easily same packages with different versions in different projects. The main actor is package.json defined in the CommonJs specifications.
  • 8. { "author": "gpad", "name": "nodelinuxday2011", "description": "app example fo LinuxDay 2001", "version": "0.0.1", "homepage": "https://github.com/gpad/nodelinuxday2011", "repository": { "type": "git", "url": "git://github.com/gpad/nodelinuxday2011.git" },     [...] }
  • 9. {   [...] "main": "./server.js", "engines": { "node": "*" }, "dependencies": { "formidable": "~1.0.6" }, "devDependencies": { "nodeunit": "~0.5.5", "far": "~0.0.7" } }
  • 10. package.json How it works? see example ... Cloud9Ide • Create a file with info e dependencies • Execute npm install Install all the dependencies locally so don't conflicts with others in other projects. What about devDependencies?
  • 11. package.json devDependencies How it works? see example ... Cloud9Ide npm install --production install locally only the package necessary to deploy. The packages listed in devDependencies are not  installed ... Cloud9Ide on version 1.8.7 works in different way, if you execute npm install install only "dependencies" if you execute npm install --dev also install the devDependencies
  • 12. What about testing? If you look this you will find a long list of modules 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 JSpec maryjane — Mock object library inspired by Mockito node-qunit — QUnit port for nodejs. Very simple API, async testing, good tested testing framework. nodeunit — Simple syntax, powerful tools. Based on the assert module. Available for node.js and the browser!
  • 13. So we are at the end, how to deploy? If you use Cloud9ide is very simple (is in beta now I can't :-)) ..., you can deploy manually with Heroku tools in a very simple way. There is a new platform called Nodejitsu with all the tools available on github. Others use capistrano with this recipes
  • 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