SlideShare a Scribd company logo
The Sexy Platform
Michele Nasti
Napoli Dev Day - Rework - 24/02/2016
Chi sono?
http://michelenasti.com
Twitter (@micnasti)
Linkedin
Facebook
... e tutti gli altri servizi on line
(Stack Overflow, Github, ....)
What is NodeJS ?
- Node NON E’ un webserver
- … è un modo come un altro per eseguire codice sulla
propria macchina
Node.js® is a JavaScript runtime built on Chrome's
V8 JavaScript engine. Node.js uses an event-
driven, non-blocking I/O model that makes it
lightweight and efficient.
Installazione e primo avvio
- installer per Win, Mac & Linux su nodejs.org
- node console (REPL):
$ node
> console.log('Hello World');
Hello World
undefined
- Oppure creare un file che contiene
- console.log('Hello World')
Proviamo a fare le cose serie
- Supponiamo di avere un file di log di questo tipo:
2013-08-09T13:50:33.166Z A 2
2013-08-09T13:51:33.166Z B 1
2013-08-09T13:52:33.166Z C 6
2013-08-09T13:53:33.166Z B 8
2013-08-09T13:54:33.166Z B 5
- Scriviamo un parser per SOMMARE i numeri per ogni lettera
- Output atteso:
{ A : 2, B: 14, C: 6}
“vuttamm e’
mman:”
un Parser in JS
Thread pool vs Single-Threaded
Callback Asincrone
- è il meccanismo preferito in NodeJS : “quando hai completato
l’operazione, esegui questo codice”
- “il 99% del tempo di una webapp è speso aspettando dati dal DB”
- “Callback Hell” ⇒
Organizzazione del Codice
- Come organizzare il codice in più file (classi…
moduli… ) ?
- Node is not Ruby on Rails!
- … potete fare quel che volete
- fate ciò che gli altri hanno già fatto bene, please!
- Refattorizziamo il Parser che abbiamo scritto prima!
A better Parser
Un
(semplicissimo)
webserver in
NodeJS
my_web_server.js
- very “basic”
- Il programma non “termina” (Ctrl+C)
- MA …
- Servire file?
- check parameters?
- routes?
- Soluzione: EXPRESS !
Come installarlo? Con NPM! (quindi vediamo prima NPM)
NPM
npm install express --save
package.json:
Node Package Manager
https://www.npmjs.com/
A REST server
with Express
(where is the GIF?)
(Using a Javascript framework
for the first time)
Performance
L’approccio Event-based / Async IO
paga?
Alcune comparison con PHP
Nota: HHVM è JIT + Async I/O
Vantaggi
Svantaggi
You already know JS
Build tools in JS too! (npm, grunt,
express…)
very fast JIT interpreter
amazing community
Some DBs (MongoDB) are written with JS
in mind
real-time made easy
support for high concurrency
Corporate backup (Joyent)
PaaS support NODE
NodeJS è ancora bleeding edge: altri
linguaggi più blasonati hanno decenni
di stabilità alle spalle
(poor) IDE Support
no strong typing
nothing is really market standard
(neither Express)
that’s open source, baby
Standard library is poor or too new or
unstable
Synchronous Style is easier to think
about and program
Javascript
Everywhere
Meetup
Javascript &
NodeJS
a Salerno!
Sabato 5 Marzo 2016
presso “Puntolingue” di fianco a
Italo
primo binario, stazione FF.SS.
Salerno
http://www.meetup.com/it-IT/JS-
Salerno/events/228723943/
Risorse utili
- Tutorial “advanced” per Express:
https://scotch.io/tutorials/build-a-restful-api-using-
node-and-express-4
- ExpressJS : http://expressjs.com/
Build tools:
- Grunt http://gruntjs.com/
- Gulp http://gulpjs.com/
Frontend:
Bye!
Questo gatto conosce l’event loop di NodeJS

More Related Content

PDF
Introduzione a node: cenni storici ecc
PDF
Introduzione a node.js
PDF
Node js: che cos'è e a che cosa serve?
PPT
node.js e Postgresql
PDF
Hacking in action - 1
PDF
Web performance & Http2
PPTX
Single Page Applications
PDF
Node and the Cloud
Introduzione a node: cenni storici ecc
Introduzione a node.js
Node js: che cos'è e a che cosa serve?
node.js e Postgresql
Hacking in action - 1
Web performance & Http2
Single Page Applications
Node and the Cloud

What's hot (20)

PPTX
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
PPTX
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
PDF
Web frameworks
PDF
Task automation with grunt
PDF
ASP .NET Core hands-on
PDF
Blazor ha vinto? Storie di casi reali
PDF
Applicazioni HTML5 Superveloci - Salvatore Romeo
PDF
Blazor - i limiti sono fatti per essere superati
PPTX
Creare API pubbliche, come evitare gli errori comuni
PPTX
Ottimizzare WordPress non solo per i motori di ricerca
PDF
SLA Confidential
PDF
Making Chatbots
PDF
Deno - L'anagramma di node
PDF
Grasso
PDF
Stanco delle solite Web App? Passa al Prgressive
ODP
Working between the clouds
PDF
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
PDF
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
PDF
Applicazioni Web ultra-performanti con Vue.js e Delphi
PPTX
Frontend Development with Blazor
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
Web frameworks
Task automation with grunt
ASP .NET Core hands-on
Blazor ha vinto? Storie di casi reali
Applicazioni HTML5 Superveloci - Salvatore Romeo
Blazor - i limiti sono fatti per essere superati
Creare API pubbliche, come evitare gli errori comuni
Ottimizzare WordPress non solo per i motori di ricerca
SLA Confidential
Making Chatbots
Deno - L'anagramma di node
Grasso
Stanco delle solite Web App? Passa al Prgressive
Working between the clouds
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Applicazioni Web ultra-performanti con Vue.js e Delphi
Frontend Development with Blazor
Ad

Viewers also liked (12)

PPTX
Compras em orlando
PDF
Test smt
PPTX
Healthy leaders
PDF
DOCX
Trabajo final de grado correcciones
PDF
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
PDF
God With Us? Origen of Evil
PDF
Revista Musica & Mercado
PDF
Ahmed saied cv_2016
PDF
Agile Software Development with Remote Teams
PDF
Goals on every level - Delivery Leads Melbourne
DOCX
Secuencia didactica 1 grado. meduca
Compras em orlando
Test smt
Healthy leaders
Trabajo final de grado correcciones
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
God With Us? Origen of Evil
Revista Musica & Mercado
Ahmed saied cv_2016
Agile Software Development with Remote Teams
Goals on every level - Delivery Leads Melbourne
Secuencia didactica 1 grado. meduca
Ad

Similar to Node js dev day napoli 2016 (20)

PDF
Node.js - Server Side Javascript
PDF
node.js everywhere
PDF
Roma linuxday 2013 - nodejs
PPTX
Introduzione a Node.js
PDF
Il Web orientato al futuro: Express, Angular e nodeJS
PDF
Introduzione a Node.js
PPTX
Javascript, il linguaggio (non solo) del web
PDF
Web base - Javascript (Node.js): Elementi di base
PDF
MEAN: il nuovo stack di sviluppo per il futuro del web
ODP
breve introduzione a node.js
PPTX
Christmas greetings cards with blazor
PDF
breve introduzione a node.js
PDF
Web base-03-js-numeri stringearray
PDF
Drupal Day 2011 - Node.js e Drupal
PPTX
CommunityDays 2015 - NPM, GRUNT E BOWER: IL NUOVO PACKAGE MANAGER DI VISUAL S...
PDF
Javascript - 1 | WebMaster & WebDesigner
PDF
Intro to JavaScript
PDF
Spa with Blazor
PDF
Corso base di Tecnologie WEB - Primi passi in javascript
PDF
Javascript - 1 | WebMaster & WebDesigner
Node.js - Server Side Javascript
node.js everywhere
Roma linuxday 2013 - nodejs
Introduzione a Node.js
Il Web orientato al futuro: Express, Angular e nodeJS
Introduzione a Node.js
Javascript, il linguaggio (non solo) del web
Web base - Javascript (Node.js): Elementi di base
MEAN: il nuovo stack di sviluppo per il futuro del web
breve introduzione a node.js
Christmas greetings cards with blazor
breve introduzione a node.js
Web base-03-js-numeri stringearray
Drupal Day 2011 - Node.js e Drupal
CommunityDays 2015 - NPM, GRUNT E BOWER: IL NUOVO PACKAGE MANAGER DI VISUAL S...
Javascript - 1 | WebMaster & WebDesigner
Intro to JavaScript
Spa with Blazor
Corso base di Tecnologie WEB - Primi passi in javascript
Javascript - 1 | WebMaster & WebDesigner

Node js dev day napoli 2016

  • 1. The Sexy Platform Michele Nasti Napoli Dev Day - Rework - 24/02/2016
  • 2. Chi sono? http://michelenasti.com Twitter (@micnasti) Linkedin Facebook ... e tutti gli altri servizi on line (Stack Overflow, Github, ....)
  • 3. What is NodeJS ? - Node NON E’ un webserver - … è un modo come un altro per eseguire codice sulla propria macchina Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event- driven, non-blocking I/O model that makes it lightweight and efficient.
  • 4. Installazione e primo avvio - installer per Win, Mac & Linux su nodejs.org - node console (REPL): $ node > console.log('Hello World'); Hello World undefined - Oppure creare un file che contiene - console.log('Hello World')
  • 5. Proviamo a fare le cose serie - Supponiamo di avere un file di log di questo tipo: 2013-08-09T13:50:33.166Z A 2 2013-08-09T13:51:33.166Z B 1 2013-08-09T13:52:33.166Z C 6 2013-08-09T13:53:33.166Z B 8 2013-08-09T13:54:33.166Z B 5 - Scriviamo un parser per SOMMARE i numeri per ogni lettera - Output atteso: { A : 2, B: 14, C: 6}
  • 7. Thread pool vs Single-Threaded
  • 8. Callback Asincrone - è il meccanismo preferito in NodeJS : “quando hai completato l’operazione, esegui questo codice” - “il 99% del tempo di una webapp è speso aspettando dati dal DB” - “Callback Hell” ⇒
  • 9. Organizzazione del Codice - Come organizzare il codice in più file (classi… moduli… ) ? - Node is not Ruby on Rails! - … potete fare quel che volete - fate ciò che gli altri hanno già fatto bene, please! - Refattorizziamo il Parser che abbiamo scritto prima!
  • 12. my_web_server.js - very “basic” - Il programma non “termina” (Ctrl+C) - MA … - Servire file? - check parameters? - routes? - Soluzione: EXPRESS ! Come installarlo? Con NPM! (quindi vediamo prima NPM)
  • 13. NPM npm install express --save package.json: Node Package Manager https://www.npmjs.com/
  • 14. A REST server with Express (where is the GIF?)
  • 15. (Using a Javascript framework for the first time)
  • 16. Performance L’approccio Event-based / Async IO paga? Alcune comparison con PHP Nota: HHVM è JIT + Async I/O
  • 17. Vantaggi Svantaggi You already know JS Build tools in JS too! (npm, grunt, express…) very fast JIT interpreter amazing community Some DBs (MongoDB) are written with JS in mind real-time made easy support for high concurrency Corporate backup (Joyent) PaaS support NODE NodeJS è ancora bleeding edge: altri linguaggi più blasonati hanno decenni di stabilità alle spalle (poor) IDE Support no strong typing nothing is really market standard (neither Express) that’s open source, baby Standard library is poor or too new or unstable Synchronous Style is easier to think about and program
  • 19. Meetup Javascript & NodeJS a Salerno! Sabato 5 Marzo 2016 presso “Puntolingue” di fianco a Italo primo binario, stazione FF.SS. Salerno http://www.meetup.com/it-IT/JS- Salerno/events/228723943/
  • 20. Risorse utili - Tutorial “advanced” per Express: https://scotch.io/tutorials/build-a-restful-api-using- node-and-express-4 - ExpressJS : http://expressjs.com/ Build tools: - Grunt http://gruntjs.com/ - Gulp http://gulpjs.com/ Frontend:
  • 21. Bye! Questo gatto conosce l’event loop di NodeJS

Editor's Notes

  • #2: check: terminale aperto ? sublime aperto ? finalità: infarinatura dei concetti alla base prerequisiti: zero per quanto riguarda node, intermediate per javascript. Sapere cos’è callback, prototype. useremo un po’ di es6 Obiettivi: infarinatura di concetti su Node, stimolare la curiosità.
  • #3: sul mio sito web troverete le slide. Diventiamo amici! accetto tutti. E parliamo di programmazione.
  • #4: - perchè node: l’autore l’ha creato per la barra di upload di flickr - v8: alla base c’è lo stesso motore di chrome aggiornato, quindi es6 e altre feature Alla base di Node ci sono due concetti fondamentali: - event-driven come per le UI, quando accade un evento (tipo: ho letto un file) eseguo un compito. Non aspetto la lettura - non blocking I/O: le chiamate a I/O (rete, file…) vengono eseguite in maniera asincrona e quando il task completa il controllo ritorna alla callback.
  • #5: Facilissimo installarlo 2 modi per eseguire Node: dalla REPL cosa è undefined ? e lanciando il file da riga di comando
  • #6: abbiamo un log con una serie di “eventi” vogliamo sommare i numeri di fianco a questi eventi per produrre un summary come si fa in Node?
  • #7: aprire file parser_complete.js Cose da dire sul codice: come si importano i moduli tutto è asincrono (vedi readFile) standard error handling l’importanza di un buon editor, specialmente all’inizio (se si vuole un minimo di code assist…) la classe Buffer di Node (diversa da String)
  • #9: in altri linguaggi di programmazione il thread resterebbe bloccato in attesa dei dati. Ricorda definizione: “Non Blocking I/O Model” In Node invece il thread delega l’I/O a altri thread che quando terminano l’accesso restituiscono il risultato alla callback. Quando l’event-loop di Node scopre che il thread ha terminato, esegue la callback associata. Questo permette di eseguire altri eventi nel frattempo
  • #10: non è Rails apri: refactored_parser && refactored_file_parser parlare di : exports e module.exports
  • #12: vedi file my_web_Server.js
  • #14: Npm è il package manager ufficiale di node è preinstallato permette di installare anche altri sw tipo bower… eslint … creare file package.json con nome e descrizione con --save si salvano le dep in dependencies si crea una cartella “node_modules” nel proj
  • #15: (where is the GIF ?!)
  • #16: Ora fai vedere l’esempio con Express. npm install (per le dipendenze) file server.js , node server.js GET da browser