SlideShare ist ein Scribd-Unternehmen logo
1 von 79
Downloaden Sie, um offline zu lesen
Introduction to Node.js
Perspectives from a Drupal dev
Mike Cantelon, Vancouver Drupal Users Group, Nov. 25, 2010
Thursday, November 25, 2010
I am:
A longtime PHP dev
Devop for The Georgia Straight
Experimenting with JS/SSJS and HTML5
http://mikecantelon.com
http://github.com/mcantelon
Thursday, November 25, 2010
WHY NODE.JS?
Thursday, November 25, 2010
wordsquared.com: Real-time
HTML/JS Scrabble MMO
Thursday, November 25, 2010
The real-time web
Real-time applications are an interesting web subset
Examples: Twitter, Etherpad, games, monitoring
Real-time paradigm will spawn new types of apps
Thursday, November 25, 2010
Three barriers to real-time
Conventional languages can be slow
Conventional web servers can be slow
Conventional databases are slow
Thursday, November 25, 2010
Node.js eliminates two
Conventional languages can be slow
Conventional web servers can be slow
Conventional databases are slow
Thursday, November 25, 2010
http://www.slideshare.net/Vodafonedeveloper/nodejs-vs-phpapache
Node.js vs PHP/Apache
Thursday, November 25, 2010
So what exactly is Node.js?
Server-side Javascript (SSJS) implementation
“Asynchronous” (more on that later)
Built using V8 (JS engine used in Chrome Browser)
Thursday, November 25, 2010
Advantages over PHP
Javascript is a cleaner language
Asynchronous execution increases performance
Node.js is suitable for writing TCP/IP apps
Thursday, November 25, 2010
“Asynchronous”?
Also known as “event-based”
Think of it as deïŹning actions triggered by events
CPU spends less time waiting around
Thursday, November 25, 2010
More beneïŹts of SSJS
Requires less mental context switching for devs
Allows sharing of logic between client and server side
Server-side JQuery for screen scraping? Yes!
Thursday, November 25, 2010
What about that last barrier?
Conventional languages are slow
Conventional servers are slow
Conventional databases are slow
Thursday, November 25, 2010
MongoDB is one solution
MongoDB is generally faster than SQL databases
MongoDB queries are written in Javascript, not SQL
MongoDB works well with node.js
Thursday, November 25, 2010
And Drupal?
Drupal is great for managing content
Node.js has no killer CMS
Node.js can pull data from Drupal (details later)
Thursday, November 25, 2010
This looks conceptually like...
Thursday, November 25, 2010
SSJS HELLO WORLD
Thursday, November 25, 2010
Node.js isn’t hard to learn
Knowing Javascript is the hard part
Node.js is accessible
Express is a framework that makes Node.js easier
Thursday, November 25, 2010
Hello World in Node.js shell
var sys = require('sys');
sys.puts('Hello world');
Thursday, November 25, 2010
Node.js server Hello World
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen(8124, "127.0.0.1");
Thursday, November 25, 2010
Hello World in Express
var express = require('express');
var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(8124);
Thursday, November 25, 2010
Why use Express?
Handles routing and redirection
Nice templating support
Provides sessions
Thursday, November 25, 2010
Express Templating Support
Supports EJS, HAML, SASS, Jade (HAML variant)
Extend with app-speciïŹc helper functions
Provides “partials” (subtemplates)
Thursday, November 25, 2010
app.get('/', function(req, res){
res.render('index.haml', {
locals: { title: 'My Site' }
});
});
Templating Example
Thursday, November 25, 2010
SETTING UP NODE.JS
Thursday, November 25, 2010
Installing Node.js
OS X: build from source or brew install node
Linux: build from source
Build instructions at http://nodejs.org/#download
Thursday, November 25, 2010
Installing NPM
NPM lets you easily install node.js modules
OS X: brew install npm
Instructions for manual install:
http://mikecantelon.com/npm
Thursday, November 25, 2010
Installing Express
npm install express
Now the command express will set up an example
Express app for you
Thursday, November 25, 2010
Installing MongoDB
OS X: build from source or brew install mongodb
Linux: http://www.mongodb.org/display/DOCS/
Quickstart+Unix
npm install mongodb
Thursday, November 25, 2010
DRUPAL -> NODE.JS
Thursday, November 25, 2010
Drupal as a datastore
One way Node.js and Drupal can work together is
having Drupal be the storehouse for important content
requiring long-term management
Thursday, November 25, 2010
Something like...
Thursday, November 25, 2010
Serve data, not just pages
For realtime apps you’re going to want to serve chunks
of data to the browser rather than whole pages
Whole pages take longer to render and use more
bandwidth to transmit
Leverage the browser as much as possible
Thursday, November 25, 2010
Serving a page...
1. Browser requests a URL
2. Server grabs some data from a database and
dresses it up as a page using a template.
3. Whole page gets sent back to browser
Thursday, November 25, 2010
...vs Serving Data
1. Browser requests some data
2. Server sends back data
3. Browser templates data and outputs HTML
into the existing page
Thursday, November 25, 2010
Where to serve data from
Pulling Drupal data directly to the browser is quick to
implement, but puts more stress on your Drupal stack
The alternative is to pull Drupal data to node.js and
cache using a datastore like MongoDB
Data can then be relayed via AJAX or Socket.io
Thursday, November 25, 2010
DRUPAL DATA SHARING
Thursday, November 25, 2010
Javascript For Data Sharing
JSON is the duct tape of the web
drupal_to_js turns any chunk of data into JSON
Drupal Views can output JSON via Views Datasource
Thursday, November 25, 2010
What JSON looks like
{
'drupal': {
'language': 'PHP',
'license': 'GPL',
'developed_by': {
'individuals',
'organizations',
'companies'
}
}
}
Thursday, November 25, 2010
Drupal pumping out JSON
Thursday, November 25, 2010
Example: RSS to JSON via Views
Thursday, November 25, 2010
What our example will do
Use the Aggregator module to pull data from an RSS
feed (speciïŹcally “Drupal Planet”)
Use Views, via the Views JSON module, to publish the
aggregator items as JSON data
Thursday, November 25, 2010
Install Views Datasource
Thursday, November 25, 2010
Add View
Thursday, November 25, 2010
Add Page Display and Path
Thursday, November 25, 2010
Add Paging
Thursday, November 25, 2010
Add Fields
Thursday, November 25, 2010
Set Style to JSON
Thursday, November 25, 2010
Set Feed/Category ID
Thursday, November 25, 2010
Save View and Check Path
Thursday, November 25, 2010
Demo use of Drupal/JSON...
[demo]
http://github.com/mcantelon/Drupalurk
Thursday, November 25, 2010
Hack for Paging (v6 beta2)
function mytheme_preprocess_views_views_json_style_simple(&$vars) {
global $pager_total, $pager_page_array;
$element = $vars['view']->pager['element'];
$vars['rows']['pager'] = array(
'total' => $pager_total[$element],
'current' => $pager_page_array[$element]
);
}
http://gist.github.com/581974
Views Datasource needs theme tweak to make paging work
Stick the snippet below into your theme’s template.php
Thursday, November 25, 2010
Hack for Paging (v6 beta2)
This enables you to add &page=<page number
starting at 0> to JSON calls
You can then implement your own JS paging
Thursday, November 25, 2010
Possible JSON View Uses
Pull front-page content
Pull content by taxonomy
Pull recent comments
Whatever else you can do with a view
Thursday, November 25, 2010
Pulling JSON into Node.js
var sys = require('sys'),
rest = require('restler-aaronblohowiak'),
item,
node
rest.get('http://mikecantelon.com/jsontest/News')
.addListener('complete', function(data) {
for(item in data.nodes) {
node = data.nodes[item].node
sys.puts(node.Title)
sys.puts(node.Body)
}
})
http://gist.github.com/608741
restler module allows easy HTTP JSON requests
Thursday, November 25, 2010
TALKING TO MONGODB
Thursday, November 25, 2010
Things to remember
Can create databases and schema on-the-ïŹ‚y
Queries are Javascript
A “collection” is similar to an SQL DB’s “table”
MongoDB has a shell so easy to experiment
Thursday, November 25, 2010
Doing something to data
1. Open server DB connection
2. Open database
3. Open collection
4. Do something to the collection
Thursday, November 25, 2010
Opening server DB connection
var mongo = require('mongodb');
var port = mongo.Connection.DEFAULT_PORT;
var db = new mongo.Db(
'classroom',
new mongo.Server('localhost', port, {}),
{}
);
Thursday, November 25, 2010
Opening database
db.open(function(err, db) {
// stuff gets done in here
});
Thursday, November 25, 2010
Opening a collection
db.collection(
'students',
function(err, collection) {
// collection operations here
}
);
Thursday, November 25, 2010
Removing from a collection
collection.remove(
function(err, collection) {
// records are now gone!
}
);
Thursday, November 25, 2010
Adding some records
// make four students with random ages
var names
= ['Rick', 'Jane', 'Bob', 'Lisa'];
var index;
for (index in names) {
collection.insert({
'name': (names[index]),
'age':
Math.round(Math.random(4)*10)+18
});
}
Thursday, November 25, 2010
Displaying data from records
// display names
collection.find({}, {},
function(err, cursor) {
cursor.toArray(
function(err, students) {
var index;
for(index in students) {
sys.puts(students[index].name);
};
}
);
}
);
Thursday, November 25, 2010
DEPLOYING NODE.JS
Thursday, November 25, 2010
Node.js isn’t a daemon
Like PHP, node.js doesn’t run as a daemon
This means that naive deployment would require
keeping a terminal open
There are a number of ways to deal with this...
Thursday, November 25, 2010
Upstart (Ubuntu/some other distros)
Make a conïŹg ïŹle for each app in /etc/init
Name conïŹg ïŹle my_app.conf and set as executable
Start app using: sudo start my_app
Thursday, November 25, 2010
Installing Upstart
Ubuntu: apt-get install upstart
Linux: http://upstart.ubuntu.com/download.html
Thursday, November 25, 2010
System V init script (the right way)
rc.local/custom script (quick and dirty)
Gnu screen (for temporary deployment)
No Upstart? (Centos/some other distros)
Thursday, November 25, 2010
Requires adding a line to /etc/rc.local and a script
Example line in rc.local triggers script at startup:
su - mike -c "/home/mike/drupalchat/RUN.sh" &
Script should set NODE_PATH if you’re using npm
rc.local/custom script
Thursday, November 25, 2010
Example script
#!/bin/bash
cd /home/mike/drupalchat
export NODE_PATH=/home/mike/root
/usr/local/bin/node server.js
Thursday, November 25, 2010
Hotnode will restart node.js when you change a ïŹle
Start app with hotloading: hotnode my_app.js
Installation: npm install hotnode
Hotnode
Thursday, November 25, 2010
BONUS! WEBSOCKETS
Thursday, November 25, 2010
What are WebSockets?
WebSockets are an “HTML5” technology for two-way
TCP/IP textual communication
Modern browsers, like Chrome and Firefox 4, offer a
Javascript WebSockets interface
Thursday, November 25, 2010
Why not just use AJAX?
AJAX is a hack that uses HTTP for communication
HTTP request/response cycle has a lot of overhead
WebSockets increase speed, lessen bandwidth use
Thursday, November 25, 2010
Implementing with Socket.io
Socket.io is a client/server websocket solution, using
Node.js for the server side
The client library tries WebSockets, but falls back to
other mechanisms when talking to old browsers
Thursday, November 25, 2010
Questions? Ideas?
Thursday, November 25, 2010
Flickr Credits
http://www.ïŹ‚ickr.com/photos/sidehike/459483568/
http://www.ïŹ‚ickr.com/photos/wysz/86758900/
http://www.ïŹ‚ickr.com/photos/generated/291537716/
http://www.ïŹ‚ickr.com/photos/gsfc/3720663082/
http://www.ïŹ‚ickr.com/photos/skreuzer/354316778/
http://www.ïŹ‚ickr.com/photos/ubookworm/455760111/
http://www.ïŹ‚ickr.com/photos/batega/1596898776/
http://www.ïŹ‚ickr.com/photos/batigolix/3778363253/
http://www.ïŹ‚ickr.com/photos/wwworks/4472384764/
http://www.ïŹ‚ickr.com/photos/19779889@N00/4398186065/
http://www.ïŹ‚ickr.com/photos/theplanetdotcom/4878809615/
http://www.ïŹ‚ickr.com/photos/estherase/177188677/
Thursday, November 25, 2010
Resources
Node.js, Express.js and MongoDB
http://nodejs.org/
http://expressjs.com/
http://www.mongodb.org/
Socket.io
http://socket.io/
This presentation
http://mikecantelon.com/drupal-nodejs
Thursday, November 25, 2010

Weitere Àhnliche Inhalte

Was ist angesagt?

Philly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJSPhilly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJSRoss Kukulinski
 
Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentationArvind Devaraj
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsRob O'Doherty
 
Nodejs vatsal shah
Nodejs vatsal shahNodejs vatsal shah
Nodejs vatsal shahVatsal N Shah
 
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 jsAkshay Mathur
 
Nodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web ApplicationsNodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web ApplicationsGanesh Iyer
 
Intro to node and non blocking io
Intro to node and non blocking ioIntro to node and non blocking io
Intro to node and non blocking ioAmy Hua
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleTom Croucher
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialTom Croucher
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsDinesh U
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Node.js Patterns for Discerning Developers
Node.js Patterns for Discerning DevelopersNode.js Patterns for Discerning Developers
Node.js Patterns for Discerning Developerscacois
 
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
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js PlatformDomenic Denicola
 
Understanding the Single Thread Event Loop
Understanding the Single Thread Event LoopUnderstanding the Single Thread Event Loop
Understanding the Single Thread Event LoopTorontoNodeJS
 
Introduction to node.js GDD
Introduction to node.js GDDIntroduction to node.js GDD
Introduction to node.js GDDSudar Muthu
 

Was ist angesagt? (20)

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
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Nodejs vatsal shah
Nodejs vatsal shahNodejs vatsal shah
Nodejs vatsal shah
 
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
 
Nodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web ApplicationsNodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web Applications
 
Intro to node and non blocking io
Intro to node and non blocking ioIntro to node and non blocking io
Intro to node and non blocking io
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
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
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Node.js Patterns for Discerning Developers
Node.js Patterns for Discerning DevelopersNode.js Patterns for Discerning Developers
Node.js Patterns for Discerning Developers
 
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
 
Introduction to NodeJS
Introduction to NodeJSIntroduction to NodeJS
Introduction to NodeJS
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js Platform
 
Understanding the Single Thread Event Loop
Understanding the Single Thread Event LoopUnderstanding the Single Thread Event Loop
Understanding the Single Thread Event Loop
 
Introduction to node.js GDD
Introduction to node.js GDDIntroduction to node.js GDD
Introduction to node.js GDD
 

Andere mochten auch

Introduction to Nodejs
Introduction to NodejsIntroduction to Nodejs
Introduction to NodejsGabriele Lana
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play FrameworkYevgeniy Brikman
 
Grunt JS - Getting Started With Grunt
Grunt JS - Getting Started With GruntGrunt JS - Getting Started With Grunt
Grunt JS - Getting Started With GruntDouglas Reynolds
 
Angular 2.0: Getting ready
Angular 2.0: Getting readyAngular 2.0: Getting ready
Angular 2.0: Getting readyAxilis
 
Grunt - The JavaScript Task Runner
Grunt - The JavaScript Task RunnerGrunt - The JavaScript Task Runner
Grunt - The JavaScript Task RunnerMohammed Arif
 
Building servers with Node.js
Building servers with Node.jsBuilding servers with Node.js
Building servers with Node.jsConFoo
 
Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚
Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚
Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚Tatsuya Tobioka
 
Scaling and securing node.js apps
Scaling and securing node.js appsScaling and securing node.js apps
Scaling and securing node.js appsMaciej Lasyk
 
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...Ivan Loire
 
Node.js security
Node.js securityNode.js security
Node.js securityMaciej Lasyk
 
Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.jsChris Cowan
 
Fullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterFullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterMek Srunyu Stittri
 
Node.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideNode.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideMek Srunyu Stittri
 
Node js presentation
Node js presentationNode js presentation
Node js presentationmartincabrera
 
Modern UI Development With Node.js
Modern UI Development With Node.jsModern UI Development With Node.js
Modern UI Development With Node.jsRyan Anklam
 
Getting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress DevelopmentGetting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress DevelopmentDavid Bisset
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsAaron Rosenberg
 

Andere mochten auch (19)

Introduction to Nodejs
Introduction to NodejsIntroduction to Nodejs
Introduction to Nodejs
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
 
Grunt JS - Getting Started With Grunt
Grunt JS - Getting Started With GruntGrunt JS - Getting Started With Grunt
Grunt JS - Getting Started With Grunt
 
Angular 2.0: Getting ready
Angular 2.0: Getting readyAngular 2.0: Getting ready
Angular 2.0: Getting ready
 
Grunt - The JavaScript Task Runner
Grunt - The JavaScript Task RunnerGrunt - The JavaScript Task Runner
Grunt - The JavaScript Task Runner
 
Building servers with Node.js
Building servers with Node.jsBuilding servers with Node.js
Building servers with Node.js
 
Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚
Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚
Node.js ― Hello, world! た1æ­©ć…ˆăžă€‚
 
Scaling and securing node.js apps
Scaling and securing node.js appsScaling and securing node.js apps
Scaling and securing node.js apps
 
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
 
Node.js security
Node.js securityNode.js security
Node.js security
 
Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.js
 
Fullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterFullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year later
 
Node.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideNode.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java side
 
Node js presentation
Node js presentationNode js presentation
Node js presentation
 
Modern UI Development With Node.js
Modern UI Development With Node.jsModern UI Development With Node.js
Modern UI Development With Node.js
 
Nodejs intro
Nodejs introNodejs intro
Nodejs intro
 
Getting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress DevelopmentGetting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress Development
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Node.js - Best practices
Node.js  - Best practicesNode.js  - Best practices
Node.js - Best practices
 

Ähnlich wie Introduction to Node.js: perspectives from a Drupal dev

ActiveRecord 2.3
ActiveRecord 2.3ActiveRecord 2.3
ActiveRecord 2.3Reuven Lerner
 
Sencha Touch Workshop
Sencha Touch WorkshopSencha Touch Workshop
Sencha Touch WorkshopDavid Kaneda
 
Ruby on-rails-workshop
Ruby on-rails-workshopRuby on-rails-workshop
Ruby on-rails-workshopRyan Abbott
 
For every site a make file
For every site a make fileFor every site a make file
For every site a make fileDevelopment Seed
 
Barcamprdu linkeddata
Barcamprdu linkeddataBarcamprdu linkeddata
Barcamprdu linkeddataDavid M. Johnson
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Adrian Olaru
 
Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...
Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...
Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...Jazkarta, Inc.
 
Macruby - RubyConf Presentation 2010
Macruby - RubyConf Presentation 2010Macruby - RubyConf Presentation 2010
Macruby - RubyConf Presentation 2010Matt Aimonetti
 
Fcc open-developer-day
Fcc open-developer-dayFcc open-developer-day
Fcc open-developer-dayTed Drake
 
Node.js: The What, The How and The When
Node.js: The What, The How and The WhenNode.js: The What, The How and The When
Node.js: The What, The How and The WhenFITC
 
Couchdbkit & Dango
Couchdbkit & DangoCouchdbkit & Dango
Couchdbkit & DangoBenoit Chesneau
 
Couchdbkit djangocong-20100425
Couchdbkit djangocong-20100425Couchdbkit djangocong-20100425
Couchdbkit djangocong-20100425guest4f2eea
 
Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...
Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...
Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...Uwe Printz
 
Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Dave Stokes
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSDerek Collison
 
Presentation: mongo db & elasticsearch & membase
Presentation: mongo db & elasticsearch & membasePresentation: mongo db & elasticsearch & membase
Presentation: mongo db & elasticsearch & membaseArdak Shalkarbayuli
 
Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...jaxconf
 

Ähnlich wie Introduction to Node.js: perspectives from a Drupal dev (20)

ActiveRecord 2.3
ActiveRecord 2.3ActiveRecord 2.3
ActiveRecord 2.3
 
Sencha Touch Workshop
Sencha Touch WorkshopSencha Touch Workshop
Sencha Touch Workshop
 
Ruby on-rails-workshop
Ruby on-rails-workshopRuby on-rails-workshop
Ruby on-rails-workshop
 
For every site a make file
For every site a make fileFor every site a make file
For every site a make file
 
Barcamprdu linkeddata
Barcamprdu linkeddataBarcamprdu linkeddata
Barcamprdu linkeddata
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...
Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...
Scalable Plone hosting with Amazon EC2 for Rice University's Rhaptos open lea...
 
Macruby - RubyConf Presentation 2010
Macruby - RubyConf Presentation 2010Macruby - RubyConf Presentation 2010
Macruby - RubyConf Presentation 2010
 
Fcc open-developer-day
Fcc open-developer-dayFcc open-developer-day
Fcc open-developer-day
 
Node.js: The What, The How and The When
Node.js: The What, The How and The WhenNode.js: The What, The How and The When
Node.js: The What, The How and The When
 
Couchdbkit & Dango
Couchdbkit & DangoCouchdbkit & Dango
Couchdbkit & Dango
 
Couchdbkit djangocong-20100425
Couchdbkit djangocong-20100425Couchdbkit djangocong-20100425
Couchdbkit djangocong-20100425
 
Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...
Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...
Introduction to the Hadoop Ecosystem with Hadoop 2.0 aka YARN (Java Serbia Ed...
 
Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaS
 
Lecture 6 Data Driven Design
Lecture 6  Data Driven DesignLecture 6  Data Driven Design
Lecture 6 Data Driven Design
 
Presentation: mongo db & elasticsearch & membase
Presentation: mongo db & elasticsearch & membasePresentation: mongo db & elasticsearch & membase
Presentation: mongo db & elasticsearch & membase
 
NoSQL Introduction
NoSQL IntroductionNoSQL Introduction
NoSQL Introduction
 
NoSQL Introduction
NoSQL IntroductionNoSQL Introduction
NoSQL Introduction
 
Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...
 

KĂŒrzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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...Martijn de Jong
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

KĂŒrzlich hochgeladen (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Introduction to Node.js: perspectives from a Drupal dev