• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Réu technodejs
 

Réu technodejs

on

  • 904 views

 

Statistics

Views

Total Views
904
Views on SlideShare
897
Embed Views
7

Actions

Likes
0
Downloads
2
Comments
0

3 Embeds 7

http://paper.li 4
https://twitter.com 2
http://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Réu technodejs Réu technodejs Presentation Transcript

    • Présentation de Node.JS Réunion Technique @CleverAge 17/06/2011 Code des démonstrations: https://github.com/naholyr/demo-reunion-technique-nodejs
    • Le me introduce
      • Web : Javascript côté serveur
      • Performant : Moteur V8 de Chrome + API asynchrone
      • Open-Source : https://github.com/joyent/node
      • En prod : tempalias ( http://301.tl/2v ) , transloadit ( http://301.tl/2u ) , yammer ( http://301.tl/2s ) , 301TL ( http://301.tl ) … Et d'autres tous les jours o/ ( http://301.tl/2t )
      Ryah Dahl @ryah – http://nodejs.org
    • JS côté serveur
      • Pas une idée récente... SSJS -> Netscape -> 1996
      • Pas vraiment le seul...
      • Le plus puissant? Le plus rapide? Simple question de timing?
        • Performances
        • Qualité de l'API réseau
      http://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
    • Communauté
      • Projet open-source démarré en 2009
      • Top 3 des projets les plus surveillés sur github
      • Plus de 150 contributeurs
      • Plus de 2000 modules
      • Et ça ne fait que commencer!
    • Performances
      • Choix de l'asynchrone = garantie d'un meilleur temps de réponse et d'une meilleure gestion de la montée en charge -> attente de ressources versus -> jamais bloqué
      • Un petit benchmark ? http://naholyr.fr/2011/06/benchmark-node-js-methodes-synchrones-ou-asynchrones/
    • Modules & dépendances
      • Node est modulaire require(…)
      • Gestionnaire de modules officiel : npm
        • package.json
        • Gestion des dépendances -> Dependency-hell will burn your brain !
        • Installation locale au projet
        • Possibilité d'utiliser ses propres dépôts
      Isaacs @izs – http://npmjs.org
    • La soupe de callbacks
      • async simplifie:
        • Les appels successifs
        • Les appels en cascade
        • github.com/caolan/async
      foo(function (err, res1) { if (err) throw err; bar(result1, function (err, res2) { if (err) throw err; baz(res2, function (err) { if (err) throw err; biz(function (err) { zOMG INDENT OVERFLOW !!1! eleven ! }) }); }); }); async.waterfall([ function (c) { foo(c); }, function (res1, c) { bar(res1, c); }, function (res2, c) { biz(c) HMMM I FEEL NICE :) } ], function (err) { throw err; });
    • Web: on repart de Ø!
      • Pas de vrais frameworks ”full-stack”
        • Surtout pas d'ORMs en fait ( mais c'est pas grave )
        • Mais des microframeworks
      • Let me introduce
      npm install express app. get (' / ', function (req, res) { res. render(”home”, {”title”: ”hello”}) ; } app. get (' /profile/:id ', function (req, res) { var user = User.find({”id”: req.params.id}); if (!user) { res.send('Invalid user ID', 404); } else { res. render(”profile”, {”user”: user}) ; } }); TJ Holowaychuk @tjholowaychuk Learnboost - https://github.com/learnboost
    • Temps réel
      • socket.io
        • Côté client et aussi côté serveur!
        • Côté serveur: Connexions, traitements, broadcasting...
        • Côté client: Fallback automatique sur la technologie dispo (Websockets, Flash, Long polling, iframe...)
        • Push!
      var client = new io.Socket (); client.on(' connect ', function(){   alert('ready to play'); }); client.on(' message ', function( msg ){   if (msg.win || msg.lose) { alert(”Win? Lose?”); } }); var server = io.listen(app) ; // Un nouveau gagnant toutes les 10 secondes setInterval(function () { if (server.clients.length < 2) { server.broadcast ({”lose”:true}); } else { var client = getRandom(); client.send ({”win”:true}); server.broadcast ({”lose”:true}, client); } }, 10000);
    • Techno hype = cloud
      • dotcloud
        • deploy -t nodejs ns.nom
        • push ns.nom
        • http://nom.ns.dotcloud.com
      • cloud9ide
        • IDE en ligne
        • Liaison directe avec github
        • Test serveur en live
    • Pleins de projets top cool http://nodecloud.org
    • Questions subsidiaires ?