Dans la vraie vie, (nous) développeurs, devons maîtriser un grand nombres de langages, pour le frontend, le backend, nous devons produire parfois très rapidement, sur des infrastructures non adaptées, trop peu performantes pour accueillir nos bons vieux CMS ! Voyons comment NodeJS, peut nous aider (dans la vraie vie)
Présentation donnée à l'Aperotech Oxalide, le 24 juin 2013.
Qu'est-ce que NodeJS ? pourquoi en parle-t-on autant ? quand l'utiliser ? qu'est-ce que l'asynchrone ? quelle est le contexte actuel du marché du js / NodeJS ?
Node.js et les nouvelles technologies javascriptKhalid Jebbari
Présentation sur Node.js et les nouvelles technologies javascript, qui a eu lieu dans les locaux de Smile, à Levallois (92).
Retour d'exploration par un développeur Drupal (moi) sur ces technologies, et comparaison avec Drupal.
Introduction to Rust in Production - Servo Mozilla project (Talk)Quentin Frémeaux
FRENCH - Talk made at the OVH Meetup on the 4th April, see the slides with the same name.
This presentation was made by a Mozilla Reps and not an employee working on the project.
Introduction to Rust in Production - Servo Mozilla project (Slides)Quentin Frémeaux
FRENCH - Slides presented at the OVH Meetup on the 4th April, about Servo the new parallized web browser developed at Mozilla Search. It stands as an example of project made in Rust: advantage of Rust, projects systems and contributions.
This presentation was made by a Mozilla Reps and not an employee working on the project.
Dans la vraie vie, (nous) développeurs, devons maîtriser un grand nombres de langages, pour le frontend, le backend, nous devons produire parfois très rapidement, sur des infrastructures non adaptées, trop peu performantes pour accueillir nos bons vieux CMS ! Voyons comment NodeJS, peut nous aider (dans la vraie vie)
Présentation donnée à l'Aperotech Oxalide, le 24 juin 2013.
Qu'est-ce que NodeJS ? pourquoi en parle-t-on autant ? quand l'utiliser ? qu'est-ce que l'asynchrone ? quelle est le contexte actuel du marché du js / NodeJS ?
Node.js et les nouvelles technologies javascriptKhalid Jebbari
Présentation sur Node.js et les nouvelles technologies javascript, qui a eu lieu dans les locaux de Smile, à Levallois (92).
Retour d'exploration par un développeur Drupal (moi) sur ces technologies, et comparaison avec Drupal.
Introduction to Rust in Production - Servo Mozilla project (Talk)Quentin Frémeaux
FRENCH - Talk made at the OVH Meetup on the 4th April, see the slides with the same name.
This presentation was made by a Mozilla Reps and not an employee working on the project.
Introduction to Rust in Production - Servo Mozilla project (Slides)Quentin Frémeaux
FRENCH - Slides presented at the OVH Meetup on the 4th April, about Servo the new parallized web browser developed at Mozilla Search. It stands as an example of project made in Rust: advantage of Rust, projects systems and contributions.
This presentation was made by a Mozilla Reps and not an employee working on the project.
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
Il est possible d'aller plus loin que les applications classiques. En profitant pleinement des capacités du navigateur cet atelier vous montrera comment améliorer les performances et modulariser l'existant. HTTP, REST et Ajax sont au menu pour une application orienté services légère, simple à modifier et avec une API partageable avec vos clients.
Présentation et retour d'expérieuce sur node.js + AngularJS au journal Le Monde, novembre 2014.
Présenté dans le cadre d'un « apéro techno » chez Omnilog.
"Enfin", c'est le mot qu'on peut avoir à la découverte du framework web Ruby On Rails.
Enfin un cadre de travail MVC qui facilité réellement le développement au lieu de le complexifier. ActiveRecord, une des briques magiques de cette application, pose une interface objet pour votre base de donnée en moins de cinq lignes. Le reste est à l'image de ruby : principe de surprise minimum, agilité et extensibilité. Cette présentation vous montrera, après des années de framework Web et d'expertises PHP, ce que quelques mois de Ruby On Rails suffisent à gagner.
PHP jouit parfois d'une mauvaise réputation au niveau des performances. Nous verrons si cette réputation est méritée, si les performances sont réellement un problème pour utiliser PHP.
PHP a une architecture qui lui permet de monter en charge sans mettre en place des solutions complexes. Entre l'installation, la configuration et les possibilités au niveau applicatif, cette session vous permettra de répondre efficacement à la problématique des performances.
Avec l’avènement des connexions haut-débit et bientôt très haut-débit, les concepteurs semblent de moins en moins attentifs à la rapidité de leurs sites. De plus, avec de telles connexions, les internautes supportent mal un site qui les fasse attendre. Cela gâche l’expérience utilisateur, pourtant censée être au cœur du "web 2.0"
Cet atelier vous présentera comment, sans devoir repenser votre application ou vos pages depuis le début, améliorer la rapidité de votre site.
Slide for my presentation at JugSummerCamp about integration of JavaScript in software factory. First trying to use Java Tools like Maven, then embrassing JavaScript Tools like Grunt and Bower.
JavaScript est un langage de programmation permettant d’ajouter de l’interactivité aux pages web. C’est un langage facile à apprendre et adapté aux débutants.
Lors de cette formation, les participants verront les principes de base du langage et apprendront à faire réagir une page web aux actions de l’utilisateur.
Des connaissances de base en HTML sont requises.
Responsible Design ou Le web moderne à destination de tousjwajsberg
Après avoir présenté la situation actuelle, j'essaie d'expliquer comment on peut utiliser les technologies récentes du web tout en supportant tous les navigateurs, qu'ils soient anciens ou minoritaires.
Automatisez vos tâches répétitives avec Grunt (Blend 2013)Corinne Schillinger
Cette présentation vous propose de découvrir les possibilités offertes par Grunt, et de voir comment automatiser certaines tâches telles que la compilation des feuilles de styles, la concaténation et minification des fichiers JavaScript ou encore l'optimisation des images.
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
Il est possible d'aller plus loin que les applications classiques. En profitant pleinement des capacités du navigateur cet atelier vous montrera comment améliorer les performances et modulariser l'existant. HTTP, REST et Ajax sont au menu pour une application orienté services légère, simple à modifier et avec une API partageable avec vos clients.
Présentation et retour d'expérieuce sur node.js + AngularJS au journal Le Monde, novembre 2014.
Présenté dans le cadre d'un « apéro techno » chez Omnilog.
"Enfin", c'est le mot qu'on peut avoir à la découverte du framework web Ruby On Rails.
Enfin un cadre de travail MVC qui facilité réellement le développement au lieu de le complexifier. ActiveRecord, une des briques magiques de cette application, pose une interface objet pour votre base de donnée en moins de cinq lignes. Le reste est à l'image de ruby : principe de surprise minimum, agilité et extensibilité. Cette présentation vous montrera, après des années de framework Web et d'expertises PHP, ce que quelques mois de Ruby On Rails suffisent à gagner.
PHP jouit parfois d'une mauvaise réputation au niveau des performances. Nous verrons si cette réputation est méritée, si les performances sont réellement un problème pour utiliser PHP.
PHP a une architecture qui lui permet de monter en charge sans mettre en place des solutions complexes. Entre l'installation, la configuration et les possibilités au niveau applicatif, cette session vous permettra de répondre efficacement à la problématique des performances.
Avec l’avènement des connexions haut-débit et bientôt très haut-débit, les concepteurs semblent de moins en moins attentifs à la rapidité de leurs sites. De plus, avec de telles connexions, les internautes supportent mal un site qui les fasse attendre. Cela gâche l’expérience utilisateur, pourtant censée être au cœur du "web 2.0"
Cet atelier vous présentera comment, sans devoir repenser votre application ou vos pages depuis le début, améliorer la rapidité de votre site.
Slide for my presentation at JugSummerCamp about integration of JavaScript in software factory. First trying to use Java Tools like Maven, then embrassing JavaScript Tools like Grunt and Bower.
JavaScript est un langage de programmation permettant d’ajouter de l’interactivité aux pages web. C’est un langage facile à apprendre et adapté aux débutants.
Lors de cette formation, les participants verront les principes de base du langage et apprendront à faire réagir une page web aux actions de l’utilisateur.
Des connaissances de base en HTML sont requises.
Responsible Design ou Le web moderne à destination de tousjwajsberg
Après avoir présenté la situation actuelle, j'essaie d'expliquer comment on peut utiliser les technologies récentes du web tout en supportant tous les navigateurs, qu'ils soient anciens ou minoritaires.
Automatisez vos tâches répétitives avec Grunt (Blend 2013)Corinne Schillinger
Cette présentation vous propose de découvrir les possibilités offertes par Grunt, et de voir comment automatiser certaines tâches telles que la compilation des feuilles de styles, la concaténation et minification des fichiers JavaScript ou encore l'optimisation des images.
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
Chapitre expliquant le cycle de vie d'une activité Android avec une application pour les différentes méthodes formant le cycle de vie de l'Activity.
Il contient aussi quelques exercices sure les composants Android comme les boites de dialogues et les case à cocher (
Les intents sous Android
I. Types de transmission d'Intent
II. Structure d'un Intent
IV. Intent Filter
V. Les différents types d'Intents
VI. Transfert de données entre activités
VII. Exercice : Utilisation des Intent de passer d'une activité à l'autre envoyer des données via putExtra
Android : système d'exploitation Linux pour appareils
nomades avec bibliothèques intégrées
(SQLite, WebKit, OpenGL...), machine virtuelle et
plate-forme de développement basée sur Java
Le support de formation de l'introduction à la programmation sous Android,réalisé par Houssem Lahiani dans le cadre du National Tour de Google Developers Group de Tunis.
Après avoir conquis le marché des smartphones et tablettes, Android devient incontournable dans le domaine industriel. Son utilisation pour la conception de solutions embarquées industrielles soulève toutefois des problématiques techniques spécifiques : customisation de l'OS, développement de pilotes de périphériques, capacité à répondre à des contraintes temps réel.
S'appuyant sur son expertise des technologies Linux embarqué, Open Wide Ingénierie a accompagné avec succès la réalisation de nombreux systèmes sur mesure. Les experts du pôle Mobilité et Multimédia partage leur expérience à travers cette présentation en abordant les sujets techniques indispensables avant de migrer vers Android.
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
Chapitre expliquant le cycle de vie d'une activité Android avec une application pour les différentes méthodes formant le cycle de vie de l'Activity.
Il contient aussi quelques exercices sure les composants Android comme les boites de dialogues(AlertDialog) et les case à cocher (RadioButton).
Formation Android (Initiation à la programmation sous Android)G²FOSS ENIT
Exposé de la première séance de formation en programmation mobile sous Android, animée par Med Hossam (Elève Ingénieur en GLSI à l'ISI)
[Atelier Mobile]
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Présentation des concepts autour de Node.js ainsi que son écosystème de modules. Très rapide overview de Sails.js, un excellent framework de développement d'API REST et d'application web.
Au coeur des applications Web riches, de HTML5 ou des applications Web mobiles, JavaScript est désormais incontournable. Sa communauté très dynamique a contribué à créer un écosystème complet pour répondre aux problématiques courantes de test, qualité du code ou intégration continue comme l'a fait avant elle la communauté Java il y a pas loin de dix ans... Parmi les projets les plus observés du moment, c'est curieusement côté serveur que JavaScript fait le plus parler de lui avec Node.js, un environnement de développement Web qui cultive sa différence.
Téléchargement du Coding Kata :
Pourquoi JavaScript?
Considéré comme « l’un des langages les plus universels », a déclaré Todd Anglin, vice-président de la gestion des produits et du marketing chez Telerik.
Quels sont les enjeux?
Exposer les APIs de la plateforme native à JavaScript
Produire une interface utilisateur native
Faire abstraction des interfaces utilisateurs natives
Présentation effectuée au Meetup 24 Programmez (5 Avril 2022) par Christophe Villeneuve sur "Infrastructure as code Drupal".
Cette présentation aborde les rappels de l'IaC (infrastructure as code), comment l'utilisé avec le CMS Drupal et déployé automatiquement le contenu et les évolutions dans l'IaC.
JavaScript aussi sur le serveur et jusque dans le cloud?Microsoft
JavaScript prend de plus en plus d'importance et Microsoft rend son exécution très efficace. Nous verrons dans cette session les cas d'utilisation de ce langage sur la plateforme Microsoft au niveau du serveur que ce soit par exemple avec Node.js ou Map/Reduce sur Windows Server et Windows Azure.
Similaire à Enib cours c.a.i. web - séance #6 : introduction à node js (20)
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Horacio Gonzalez
Polymer par-ci, Polymer par-là, c'est bien beau de voir tout ce qu'on peut faire avec cette bibliothèque…
Mais à la base le discours qu'on nous vend depuis des années est celui des Web Components, des briques modulaires et interopérables, suivant un standard et pouvant être mélangés comme on le souhaite pour construire des webapp comme si on faisait du LEGO.
Alors, il n'est pas contradictoire de militer pour les Web Components et d'utiliser Polymer ?
Ben, pas du tout ! Polymer, surtout depuis la sortie de Polymer 2, n'est qu'une surcouche de sucre syntactique au dessus du standard Web Components, et les éléments créés avec Polymer sont bel et bien des Web Components standard.
De la même façon, il y a plein d'autres bibliothèques de Web Components qui ont un rôle semblable : SkateJS, SlimJS, BramJS... Chacune orientée vers une sensibilité et une façon de coder. Et bien entendu, les éléments créés avec eux se mélangent sans soucis, car ils suivent tous le même standard.
Dans ce talk nous allons voir comment ces éléments Polymer sont construits à partir du standard web components, voir ce côté sucre syntactique et comprendre ce qu'ils apportent. Ensuite on verra rapidement les bases de SkateJS et de SlimJS pour finir par prouver l'intéropérabilité avec une petite application qui mélange du Web Component standard, du Polymer, du SkateJS et du SlimJS.
But there is no web component for that - Web Components Remote Conference - 2...Horacio Gonzalez
This document discusses componentalizing JavaScript libraries to create web components. It provides examples of componentalizing QR code generation and scanning libraries. To componentalize a library, the author defines inputs, outputs, a template, and wires the library to these. Issues may arise that require debugging and even patching the library. The goal is to encapsulate third party code into reusable custom elements.
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27Horacio Gonzalez
The document is a transcript of a talk given by Horacio Gonzalez and Cyril Balit on using web components across different frameworks. They discuss how they have previously talked about Polymer and web components individually. For this talk, they wanted to demonstrate using web components from different libraries (like Polymer) in various web application frameworks. They give a demo mixing web components from different libraries in applications built with different frameworks. They conclude that with web components standards, elements can be freely mixed and matched across frameworks.
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Horacio Gonzalez
The Paris Web Components Meetup proposed a session to compare several component-oriented frameworks, where each speaker made the case of his or her favorite framework and showed the implementation of the same webapp done with the chosen framework. I did the Polymer presentation.
Mixing Web Components - Best of Web Paris - 2016 06-09Horacio Gonzalez
Ah, les web components, quelle belle idée ! Du développement web basé enfin sur une vraie architecture en composants, de la réutilisation, de la modularisation, de l'encapsulation… Mais en attendant que le W3C décide de sortir le standard, ce qu'on a dans les mains c'est une panoplie de bibliothèques de polyfills : Polymer, X-Tag, Bosomic…
Dans ce talk nous allos répondre à la question : "OK, le futur sera beau, mais aujourd'hui, si je fais des composants avec une bibliothèque X et mon pote en fait avec une bibliothèque Y, je peux les utiliser dans la même application ? Et ils marcheront dans mon framework favori ?".
Polymer in the real life - Devoxx France - 2016 04-20Horacio Gonzalez
In the last two years I've been speaking a lot about web components and Polymer in conferences and user-groups, sharing a vision of the upcoming web-component revolution. But after these introductory talks I often got the same question: "that seems great... but does it works in Real Life?" Ah, the pesky real life question...
In this talk I'm going to tackle that question in the best way I know: I'm going to tell you my experience of almost two full years web applications with Polymer in the real life, for real projects in a real enterprise with real costumers, and all the lessons I've learnt from it.
You will heard why did I choose Polymer, how I dealt with the 0.x versions lifecycle, the good points and the bad ones too, how I did integrate lots of 3rd part libs into a component architecture and how now I'm able to create full fledge Progressive Web Apps using Polymer in a simple way without having to deal with the complexity of Angular/React/Whatever JS, but also how to integrate your components into those frameworks if needed.
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Horacio Gonzalez
This document discusses Warp 10, a software platform for collecting, storing, and analyzing sensor and IoT data. Warp 10 can ingest large amounts of time series and geo-time series data from sensors and other sources. It provides tools for storing, manipulating, and analyzing the data using the WarpScript language. Examples demonstrate how to calculate averages and find the closest fuel station using geo-time series data on fuel prices in France.
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptHoracio Gonzalez
The document discusses JavaScript forge tools like npm, Bower, Grunt and Yeoman that allow developers to manage dependencies, build processes, and more for front-end development. It explains that npm is used to install front-end build tools and serves as the base for building a JavaScript forge. Bower is introduced as a package manager for installing web libraries and their dependencies. The benefits of using Bower and other tools via a bower.json file to define project dependencies are also covered.
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...Horacio Gonzalez
This document provides an overview of a module on interactive web application development. It covers the following topics:
- Front-end technologies: HTML5, CSS, JavaScript, and the Polymer library for implementing web components.
- Back-end concepts: Introduction to Java EE including servlets, JSP, and frameworks like SparkJava.
- JavaScript tooling: Grunt, Gulp, Bower, and Yeoman for building JavaScript applications.
- Node.js and backend frameworks like ExpressJS for building APIs.
- Introduction to NoSQL databases like MongoDB, Redis, and Cassandra.
- Software tooling in Java.
- Test-driven development.
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLHoracio Gonzalez
This document provides an introduction and overview of MongoDB and how to use it. Some key points:
- MongoDB is an open-source document database that provides high performance, high availability, and automatic scaling. It uses documents (similar to JSON objects) rather than tables and rows.
- Documents are stored in collections without a predefined schema. Fields can be added, modified or deleted at any time.
- Common operations include inserting, querying, updating, and removing documents from collections. Queries can use filters, projections, sorting, skips, limits, and regular expressions.
- MongoDB is flexible compared to relational databases as schemas are not rigidly defined. It is suitable for high performance applications that need
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLHoracio Gonzalez
This document provides an introduction and overview of MongoDB and NoSQL databases. It discusses key MongoDB concepts like document databases, collections and documents. It also covers how to install and run MongoDB, insert and query data, and use common operations. Some examples show how to create indexes, use JavaScript and regex queries. Exercises at the end propose practicing installing MongoDB, creating a collection and querying data.
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptHoracio Gonzalez
The document discusses various JavaScript development tools including npm, Bower, Grunt, and Yeoman. It begins by explaining that npm is used to install other development tools like Bower, Grunt, and Yeoman. It then provides more details on Bower for managing front-end package dependencies, Grunt for automating tasks, and how they can be used together with a Gruntfile and package.json to set up a build system for a JavaScript project.
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...Horacio Gonzalez
This document provides an overview and description of a module on interactive web application development. It covers front-end topics like HTML5, CSS, JavaScript, and the Polymer library, as well as back-end concepts using Java EE frameworks and Node.js. The module will include sections on:
- Front-end with HTML5, CSS, JS, and the Polymer library
- Back-end concepts using Java EE for servlets, JSP, and frameworks
- Back-end using Node.js, ExpressJS, and APIs
- JavaScript build tools like Grunt, Gulp, Bower, and Yeoman
- Software development practices like test-driven development
- An examination of student
The W3C has been working on a Web Components standard for almost three years, but it is still a work in progress. But polyfills like allows current developers to use Web Components today, and incorporate to their apps widgets from any library of web components.
The best known of these libraries is Polymer, but it isn't the only one. In this talk we are going to compare Polymer, the '800 lb gorilla' in the Web Component field, with several of its lesser known competitors: Mozilla's X-Tags and Briks, and Bosonic, and even homemade ReactJS webcomponents
We will build an Angular JS application where, instead of directives, we will use webcomponents done with Polymer, X-Tag and ReactJS. And we will take a look to the performances in both Chrome and Firefox.
Mixing Web Components - Paris Web Components - 2015 09-16 Horacio Gonzalez
The W3C has been working on a Web Components standard for almost three years, but it is still a work in progress. But polyfills like allows current developers to use Web Components today, and incorporate to their apps widgets from any library of web components.
The best known of these libraries is Polymer, but it isn't the only one. In this talk we are going to compare Polymer, the '800 lb gorilla' in the Web Component field, with several of its lesser known competitors: Mozilla's X-Tags and Briks, and Bosonic, and even homemade ReactJS webcomponents
We will build an Angular JS application where, instead of directives, we will use webcomponents done with Polymer, X-Tag and ReactJS. And we will take a look to the performances in both Chrome and Firefox.
Devoxx France - Web Components, Polymer et Material DesignHoracio Gonzalez
Des concepts comme encapsulation, réutilisation de composants, data-binding ou templating sont maintenant monnaie courante dans la plupart de frameworks web… mais chacun le fait à ça façon !
Et c’est là que les Web Components débarquent. Un nouveau standard en cours d’élaboration au W3C, qui va permettre d’avoir une approche par composants au développement web.
Dans cette présentation nous parlerons de ce standard en construction, de concepts comme ShadowDOM, Mutation Observers, custom elements, Model-Driven-View, Object.observe()… Nous parlerons aussi des implémentations actuelles, du projet Polymer de Google, des X-Tags de Mozilla et de comment avec AngularJS on peut déjà avoir un bon aperçu de ce que nous attend.
Et ensuite on rentrera dans le détail de comment on peut dès aujourd'hui utiliser des web components avec Polymer, et on illustrera l'approche en utilisant les composants Polymer Paper pour implémenter le look Material Design d'Android L dans des applications web.
2. C'est quoi NodeJS ?
● C'st un outil en ligne de commande
● Qui permet de faire tourner des programmes JavaScript
depuis un terminal
○ node myProgramme.js
● Le JS est exécuté par le moteur V8
○ Celui qui fait que Google Chrome soit si rapide
● Node embarque des APIs multiples
○ Accès système de fichiers
○ Accès réseau
● Et a un modèle de programation event-driven avec IO non
bloquante
● Ce qui le rend idéal pour faire des serveurs HTTP
légers et performants
3. Mais je peux déjà tout
faire en Java !
● Ce n'est pas une solution magique
● Ce n'est pas une solution universelle
● Mais il est pensé pour certaines tâche et il les fait bien
● NodeJS excelle dans les tâches qui demandent de la
parallélisation
En NodeJS tout tourne en parallèle...
sauf votre code
4. Tout tourne en parallèle
sauf mon code ?
● Métaphore du roi et ses serviteurs
○ Le roi donne des tâches à faire aux servants
○ Il ne s'en occupe plus, passe à une autre chose
○ Lorsque le servant a fini il revient vers le roi
○ Le roi peut se centrer sur son travail
Le roi est votre code,
les serviteurs sont les APIs NodeJS
5. J'aime pas les
métaphores...
● Votre code tourne sur un seul thread
● Lorsque vous avez des choses à faire, vous appelez
des APIs NodeJS
● En leur donnant un callback, une fonction a appeler
lorsqu'ils auront fini leur tâche
● Et votre code passe à une autre chose
● Pas de problème de concurrence
● Pas de goulot d'étranglement
That's the entire beauty of JavaScripts single-
threaded / event loop design!
6. Des avantages
● Parallèlisation
○ des accès aux sources de données
○ des tâches chronophages
● Asynchronisme
○ Tenu de charge
○ Pas de threads bloqués,
● Vitesse
○ Moteur V8, très rapide
● JavaScript
○ Tout le monde connaît un peu de JS, non ?
○ Même langage dans le frontend que dans le
backend
7. Et si on fait
un HelloWorld ?
● Fichier helloWorld.js :
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
● Lancé en ligne de commande :
node helloWorld.js
8. Analysons le HelloWorld
● require("http") fait appel à un module NodeJS
○ Module pour gérer le HTTP
○ Des dizaines de modules disponibles
● http.createServer(function(request, response) { [...] }
○ On appelle à la fonction createServeur
○ En lui donnant comme argument une autre fonction
■ Un callback, qui sera appelé quand une requête sera reçue
● Lorsqu'on reçoit la requête, on exécutera
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
● Et on fait écouter sur le port 8888
listen(8888);
9. Event-driven
asynchronous callbacks
● Concept à garder en tête avec NodeJS
○ Modèle applicatif à respecter
○ Le thread de votre code est unique
■ Il faut pas le bloquer
● Mauvaise pratique : synchronisme
var result = database.query("SELECT * FROM hugetable");
console.log("Hello World");
● Bonne pratique : asynchronisme
database.query("SELECT * FROM hugetable",
function(rows) {
var result = rows;
});
console.log("Hello World");
10. Event-driven
asynchronous callbacks
● Vérifions le comportement sur le HelloWorld
var http = require("http");
function onRequest(request, response) {
console.log("Request received.");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");