SlideShare a Scribd company logo
1 of 66
Download to read offline
AZ02 – NODE.JS SU WINDOWS AZURE


Emanuele DelBono
Software engineer
@emadb


                    #CDays13 – 27 e 28 febbraio 2013
grazie a…
            Sponsor
Do you really know
    javascript?
Node azure
> [] + []
> [] + []
''
Node azure
> [] + {}
> [] + {}
{}
Node azure
> {} + []
> {} + []
0
Node azure
> {} + {}
> {} + {}
NaN
Node azure
> Array(10)
> Array(10)
[ , , , , , , , , , , ]
> Array(10)
[ , , , , , , , , , , ]
> Array(10).join('yo')
> Array(10)
[ , , , , , , , , , , ]
> Array(10).join('yo')
yoyoyoyoyoyoyoyoyoyoyo
> Array(10)
[ , , , , , , , , , , ]
> Array(10).join('yo')
yoyoyoyoyoyoyoyoyoyoyo
> Array(10).join('yo' + 1)
> Array(10)
[ , , , , , , , , , , ]
> Array(10).join('yo')
yoyoyoyoyoyoyoyoyoyoyo
> Array(10).join('yo' + 1)
yo1yo1yo1yo1yo1yo1yo1yo1yo1yo1yo
> Array(10)
[ , , , , , , , , , , ]
> Array(10).join('yo')
yoyoyoyoyoyoyoyoyoyoyo
> Array(10).join('yo' + 1)
yo1yo1yo1yo1yo1yo1yo1yo1yo1yo1yo
> Array(10).join('yo' - 1) + ' Batmaaan'
> Array(10)
[ , , , , , , , , , , ]
> Array(10).join('yo')
yoyoyoyoyoyoyoyoyoyoyo
> Array(10).join('yo' + 1)
yo1yo1yo1yo1yo1yo1yo1yo1yo1yo1yo
> Array(10).join('yo' - 1) + ' Batmaaan'

NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batmaaan
Agenda
•   What is node.js?
•   Architecture
•   Installation
•   Building applications
•   Modules
I am…
    Software engineer and
•
    Architect in codiceplastico.
    Writes web apps in C#,
    javascript e ruby.
What is node.js?
• A  development  framework  that  uses  
  event  driven,  non  blocking  I/O
• Built  on  javascript
• Based  on  Google  V8  engine
• Ideal  for  high  performance
History
• Created by Ryan Dahl in 2009
• He is trying to find the best way
  to notify the user in real time
• Written in C
• https://github.com/joyent/node
Curious facts
• It’s one of the most watched project on
  Github
• The community has build more than 21k
  modules
• It’s not only for web apps
Web apps scalability
• Synchronous:
  – Every request could block the others
• Multithread
  – Hard times with thousands connections
Node keep it simple


  Single thread
Node azure
Non-blocking
• Blocking
 var result = db.query(‘select ...’)


• Non blocking
 db.query(‘select...’,function(result) {...})
Why didn’t I think at it before?
• Culture: The non blocking code seems
  more difficult to get
• Infrastructure: single threaded event loop
  require non-blocking I/O
The event loop
• Every operation must be non-
  blocking
• Lots of callbacks
• The result will be available in
  one of the next ticks
The event loop
• No code in the main method
• All I/O operations are asynchronous
• Be quick to respond
YOU HAVE TO THINK IN
    CALLBACKS
Javascript
• Seems the best choice:
  – Anonymous functions, closures
  – One callback at a time
  – None were using it on the server side
Who are using it?




https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node
What can you do with node?
            Web Server
            TCP Server
          Robot controller
         Command line apps
            Proxy server
          Streaming server
          VoiceMail server
           Music machine
Install
What you get?
• node executable
• npm (the node packet manager)
• REPL
DEMO
IDE
• WebMatrix on windows
• Cloud9
• WebStorm

• Don’t forget about the command line + text
  editor
Not only for web apps
• Useful for I/O intensive tasks
• Scripts for DevOps
• Build (jake)

• Not suitable for intensive CPU tasks
Modules (npm)
• NPM is the Nuget for noders
• No version clash
• package.json to manage app
  dependencies
DEMO
Express.js
•   Minimal MVC framework
•   Verb oriented
•   Middleware
•   Templating
Express.js
var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello noders');
});

app.listen(3000);
Jade
doctype 5
html(lang="en")
  head
    title= pageTitle
    script(type='text/javascript')
       if (foo) {
          bar()
       }
  body
    h1 Jade - node template engine
    #container
       if youAreUsingJade
         p You are amazing
       else
         p Get on it!
DEMO
Azure
• You can deploy your app to Windows
  Azure.
• Using the CLI
• From WebMatrix (for IDE addicted)
Node on Azure
• Web sites
• Cloud services
• Virtual machines
Deploy on azure
$ azure site create nodeisfun --git
$ git add .
$ git commit -m’first commit’
$ git push azure master
$ azure site browse
DEMO
PACKAGES
mongodb
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/myDb",
function(err, db) {

  var collection = db.collection('myCollection');

  collection.findOne({mykey:1}, function(err, item){
    console.log(item)
  });
});
node-sqlserver
conn.queryRaw("SELECT * FROM Employees", function (err, res) {
  if (err) {
   console.log("Error running query!");
    return;
  }
  for (var i = 0; i < res.rows.length; i++) {
   console.log(res.rows[i][0] + " " + res.rows[i][1]);
  }
});
WebSockets
• Full-duplex communication over TCP
• W3C standard

• The server calls the browser!!
WebSockets: socket.io
var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});
WebSockets: socket.io
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>
DEMO
• A collaborative Drum Machine
  – Node.js/express
  – Azure
  – WebSockets
  – Web Audio API
LET’S DRUM
Conclusions
• Node is an interesting platform
• It worth a look
• It’s becoming popular
Not all problems
should be solved in C#
Q&A
Slides and demos available here
  http://www.communitydays.it/
    http://github.com/emadb/
   http://slideshare.net/emadb/

More Related Content

What's hot

Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJSJITENDRA KUMAR PATEL
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsjacekbecela
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejsAmit Thakkar
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsRob O'Doherty
 
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 backendDavid Padbury
 
Node.js Crash Course
Node.js Crash CourseNode.js Crash Course
Node.js Crash CourseDavid Neal
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node jsAkshay Mathur
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialTom Croucher
 
NodeJS Concurrency
NodeJS ConcurrencyNodeJS Concurrency
NodeJS Concurrencypgriess
 
Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013Oscar Renalias
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsVikash Singh
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS Ganesh Kondal
 
Node.js tutoria for beginner
Node.js tutoria for beginnerNode.js tutoria for beginner
Node.js tutoria for beginnerManinder Singh
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js PlatformDomenic Denicola
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsMarcus Frödin
 

What's hot (20)

Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
 
Nodejs intro
Nodejs introNodejs intro
Nodejs intro
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Node.js debugging
Node.js debuggingNode.js debugging
Node.js debugging
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
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
 
Node.js Crash Course
Node.js Crash CourseNode.js Crash Course
Node.js Crash Course
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
 
NodeJS Concurrency
NodeJS ConcurrencyNodeJS Concurrency
NodeJS Concurrency
 
Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
 
Node.js tutoria for beginner
Node.js tutoria for beginnerNode.js tutoria for beginner
Node.js tutoria for beginner
 
Node ppt
Node pptNode ppt
Node ppt
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js Platform
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.js
 
Future of NodeJS
Future of NodeJSFuture of NodeJS
Future of NodeJS
 

Viewers also liked

دعوة حضور حفله السبت القادم
دعوة حضور حفله السبت القادمدعوة حضور حفله السبت القادم
دعوة حضور حفله السبت القادمguest520f2b
 
Ruby seen by a C# developer
Ruby seen by a C# developerRuby seen by a C# developer
Ruby seen by a C# developerEmanuele DelBono
 
La promoció de la lectura a cicle mitjà. aspectes metodològics
La promoció de la lectura a cicle mitjà. aspectes metodològicsLa promoció de la lectura a cicle mitjà. aspectes metodològics
La promoció de la lectura a cicle mitjà. aspectes metodològicsreporteducacio
 
Servei Comunitari. Projecte Rius
Servei Comunitari. Projecte RiusServei Comunitari. Projecte Rius
Servei Comunitari. Projecte Riusreporteducacio
 
An introduction to knockout.js
An introduction to knockout.jsAn introduction to knockout.js
An introduction to knockout.jsEmanuele DelBono
 
Servei Comunitari. Departament d'Ensenyament
Servei Comunitari. Departament d'EnsenyamentServei Comunitari. Departament d'Ensenyament
Servei Comunitari. Departament d'Ensenyamentreporteducacio
 
All I Ever Need To Know About Testing I Learned In Kindergarten
All I Ever Need To Know About Testing I Learned In KindergartenAll I Ever Need To Know About Testing I Learned In Kindergarten
All I Ever Need To Know About Testing I Learned In KindergartenEduardo Sinkiko Yonamine Costa
 
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingFrom ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingEmanuele DelBono
 
An introduction to React.js
An introduction to React.jsAn introduction to React.js
An introduction to React.jsEmanuele DelBono
 

Viewers also liked (18)

دعوة حضور حفله السبت القادم
دعوة حضور حفله السبت القادمدعوة حضور حفله السبت القادم
دعوة حضور حفله السبت القادم
 
Ruby seen by a C# developer
Ruby seen by a C# developerRuby seen by a C# developer
Ruby seen by a C# developer
 
Mocking
MockingMocking
Mocking
 
Conversa peto
Conversa petoConversa peto
Conversa peto
 
La promoció de la lectura a cicle mitjà. aspectes metodològics
La promoció de la lectura a cicle mitjà. aspectes metodològicsLa promoció de la lectura a cicle mitjà. aspectes metodològics
La promoció de la lectura a cicle mitjà. aspectes metodològics
 
Nodes
Nodes  Nodes
Nodes
 
Inclusió digital
Inclusió digitalInclusió digital
Inclusió digital
 
Servei Comunitari. Projecte Rius
Servei Comunitari. Projecte RiusServei Comunitari. Projecte Rius
Servei Comunitari. Projecte Rius
 
An introduction to knockout.js
An introduction to knockout.jsAn introduction to knockout.js
An introduction to knockout.js
 
Sinatra for REST services
Sinatra for REST servicesSinatra for REST services
Sinatra for REST services
 
Da programmatore a CEO
Da programmatore a CEODa programmatore a CEO
Da programmatore a CEO
 
Test driving an MVVM App
Test driving an MVVM AppTest driving an MVVM App
Test driving an MVVM App
 
Servei Comunitari. Departament d'Ensenyament
Servei Comunitari. Departament d'EnsenyamentServei Comunitari. Departament d'Ensenyament
Servei Comunitari. Departament d'Ensenyament
 
All I Ever Need To Know About Testing I Learned In Kindergarten
All I Ever Need To Know About Testing I Learned In KindergartenAll I Ever Need To Know About Testing I Learned In Kindergarten
All I Ever Need To Know About Testing I Learned In Kindergarten
 
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingFrom ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
 
Ruby loves DDD
Ruby loves DDDRuby loves DDD
Ruby loves DDD
 
Ortografia gabarro
Ortografia gabarroOrtografia gabarro
Ortografia gabarro
 
An introduction to React.js
An introduction to React.jsAn introduction to React.js
An introduction to React.js
 

Similar to Node azure

soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsasync_io
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 
Introduction to REST API with Node.js
Introduction to REST API with Node.jsIntroduction to REST API with Node.js
Introduction to REST API with Node.jsYoann Gotthilf
 
Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.jsChris Cowan
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiJackson Tian
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.jsguileen
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jibanJibanananda Sana
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSocketsGonzalo Ayuso
 
Introducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.jsIntroducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.jsRichard Rodger
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS drupalcampest
 
JS & NodeJS - An Introduction
JS & NodeJS - An IntroductionJS & NodeJS - An Introduction
JS & NodeJS - An IntroductionNirvanic Labs
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineRicardo Silva
 
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 ThingsMichael Lange
 
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationReal World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationBen Hall
 

Similar to Node azure (20)

soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
Introduction to REST API with Node.js
Introduction to REST API with Node.jsIntroduction to REST API with Node.js
Introduction to REST API with Node.js
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Node.js on Azure
Node.js on AzureNode.js on Azure
Node.js on Azure
 
Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.js
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin Shanghai
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.js
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSockets
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Introducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.jsIntroducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.js
 
20120816 nodejsdublin
20120816 nodejsdublin20120816 nodejsdublin
20120816 nodejsdublin
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
 
JS & NodeJS - An Introduction
JS & NodeJS - An IntroductionJS & NodeJS - An Introduction
JS & NodeJS - An Introduction
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
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
 
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationReal World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS Application
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 

Recently uploaded

Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdfJamie (Taka) Wang
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfAnna Loughnan Colquhoun
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncObject Automation
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIUdaiappa Ramachandran
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 

Recently uploaded (20)

Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdf
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation Inc
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AI
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 

Node azure

  • 1. AZ02 – NODE.JS SU WINDOWS AZURE Emanuele DelBono Software engineer @emadb #CDays13 – 27 e 28 febbraio 2013
  • 2. grazie a… Sponsor
  • 3. Do you really know javascript?
  • 5. > [] + []
  • 6. > [] + [] ''
  • 8. > [] + {}
  • 9. > [] + {} {}
  • 11. > {} + []
  • 12. > {} + [] 0
  • 14. > {} + {}
  • 15. > {} + {} NaN
  • 18. > Array(10) [ , , , , , , , , , , ]
  • 19. > Array(10) [ , , , , , , , , , , ] > Array(10).join('yo')
  • 20. > Array(10) [ , , , , , , , , , , ] > Array(10).join('yo') yoyoyoyoyoyoyoyoyoyoyo
  • 21. > Array(10) [ , , , , , , , , , , ] > Array(10).join('yo') yoyoyoyoyoyoyoyoyoyoyo > Array(10).join('yo' + 1)
  • 22. > Array(10) [ , , , , , , , , , , ] > Array(10).join('yo') yoyoyoyoyoyoyoyoyoyoyo > Array(10).join('yo' + 1) yo1yo1yo1yo1yo1yo1yo1yo1yo1yo1yo
  • 23. > Array(10) [ , , , , , , , , , , ] > Array(10).join('yo') yoyoyoyoyoyoyoyoyoyoyo > Array(10).join('yo' + 1) yo1yo1yo1yo1yo1yo1yo1yo1yo1yo1yo > Array(10).join('yo' - 1) + ' Batmaaan'
  • 24. > Array(10) [ , , , , , , , , , , ] > Array(10).join('yo') yoyoyoyoyoyoyoyoyoyoyo > Array(10).join('yo' + 1) yo1yo1yo1yo1yo1yo1yo1yo1yo1yo1yo > Array(10).join('yo' - 1) + ' Batmaaan' NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batmaaan
  • 25. Agenda • What is node.js? • Architecture • Installation • Building applications • Modules
  • 26. I am… Software engineer and • Architect in codiceplastico. Writes web apps in C#, javascript e ruby.
  • 27. What is node.js? • A  development  framework  that  uses   event  driven,  non  blocking  I/O • Built  on  javascript • Based  on  Google  V8  engine • Ideal  for  high  performance
  • 28. History • Created by Ryan Dahl in 2009 • He is trying to find the best way to notify the user in real time • Written in C • https://github.com/joyent/node
  • 29. Curious facts • It’s one of the most watched project on Github • The community has build more than 21k modules • It’s not only for web apps
  • 30. Web apps scalability • Synchronous: – Every request could block the others • Multithread – Hard times with thousands connections
  • 31. Node keep it simple Single thread
  • 33. Non-blocking • Blocking var result = db.query(‘select ...’) • Non blocking db.query(‘select...’,function(result) {...})
  • 34. Why didn’t I think at it before? • Culture: The non blocking code seems more difficult to get • Infrastructure: single threaded event loop require non-blocking I/O
  • 35. The event loop • Every operation must be non- blocking • Lots of callbacks • The result will be available in one of the next ticks
  • 36. The event loop • No code in the main method • All I/O operations are asynchronous • Be quick to respond
  • 37. YOU HAVE TO THINK IN CALLBACKS
  • 38. Javascript • Seems the best choice: – Anonymous functions, closures – One callback at a time – None were using it on the server side
  • 39. Who are using it? https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node
  • 40. What can you do with node? Web Server TCP Server Robot controller Command line apps Proxy server Streaming server VoiceMail server Music machine
  • 42. What you get? • node executable • npm (the node packet manager) • REPL
  • 43. DEMO
  • 44. IDE • WebMatrix on windows • Cloud9 • WebStorm • Don’t forget about the command line + text editor
  • 45. Not only for web apps • Useful for I/O intensive tasks • Scripts for DevOps • Build (jake) • Not suitable for intensive CPU tasks
  • 46. Modules (npm) • NPM is the Nuget for noders • No version clash • package.json to manage app dependencies
  • 47. DEMO
  • 48. Express.js • Minimal MVC framework • Verb oriented • Middleware • Templating
  • 49. Express.js var express = require('express'); var app = express(); app.get('/', function(req, res){ res.send('hello noders'); }); app.listen(3000);
  • 50. Jade doctype 5 html(lang="en") head title= pageTitle script(type='text/javascript') if (foo) { bar() } body h1 Jade - node template engine #container if youAreUsingJade p You are amazing else p Get on it!
  • 51. DEMO
  • 52. Azure • You can deploy your app to Windows Azure. • Using the CLI • From WebMatrix (for IDE addicted)
  • 53. Node on Azure • Web sites • Cloud services • Virtual machines
  • 54. Deploy on azure $ azure site create nodeisfun --git $ git add . $ git commit -m’first commit’ $ git push azure master $ azure site browse
  • 55. DEMO
  • 57. mongodb var MongoClient = require('mongodb').MongoClient; MongoClient.connect("mongodb://localhost:27017/myDb", function(err, db) { var collection = db.collection('myCollection'); collection.findOne({mykey:1}, function(err, item){ console.log(item) }); });
  • 58. node-sqlserver conn.queryRaw("SELECT * FROM Employees", function (err, res) { if (err) {    console.log("Error running query!");     return;   }   for (var i = 0; i < res.rows.length; i++) {    console.log(res.rows[i][0] + " " + res.rows[i][1]);   } });
  • 59. WebSockets • Full-duplex communication over TCP • W3C standard • The server calls the browser!!
  • 60. WebSockets: socket.io var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });
  • 61. WebSockets: socket.io <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script>
  • 62. DEMO • A collaborative Drum Machine – Node.js/express – Azure – WebSockets – Web Audio API
  • 64. Conclusions • Node is an interesting platform • It worth a look • It’s becoming popular
  • 65. Not all problems should be solved in C#
  • 66. Q&A Slides and demos available here http://www.communitydays.it/ http://github.com/emadb/ http://slideshare.net/emadb/