Changement d’adresse

Le blog a changé d’adresse, il se trouve maintenant sur http://www.atinux.fr/, c’est plus facile a retenir n’est pas ? :)

Le design est légèrement différent et de plus, 2 articles vont bientôt sortir !

Un sur Socket.IO et un autre sur Express JS fait par Benjamin Gressier, un nouveau contributeur au blog !

A très vite sur atinux.fr !


Tutoriel sur Node JS

Bonjour tout le monde,

logo nodejitsuAujourd’hui je vais vous expliquer comment installer l’environnement de Node JS sur Linux et comment créer sa première application en JavaScript avec Node JS.

Cet article va donc se découper en 3 parties :

  1. Installation de Node JS et ses dépendances
  2. Fonctionnement de Node JS
  3. Première application en Javascript

Si vous avez des soucis de compréhension ou encore des problèmes durant l’installation, n’hésitez pas à poster un commentaire, je vous répondrez le plus rapidement possible et ça pourra surement aider les prochains lecteurs par la suite ;).

I/ Installation de Node JS et ses dépendances

Linux L’installation de Node JS va se faire dans la console (même si nous sommes en 2011).

Pour cela, ouvrez un terminal : Applications -> Accessoires -> Terminal

$> tar -xvf node-v0.4.10.tar.gz
$> cd node-v0.4.10
$> sudo apt-get install g++ curl libssl-dev apache2-utils git-core
$> ./configure
$> make
$> sudo make install
Qu’est ce que nous avons fait ici ? (traduction ligne par ligne)
  • Téléchargement de l’archive (tar.gz) de Node JS version 0.4.10
  • Décompression de l’archive
  • On se positionne dans le dossier de l’archive décompressée
  • On installe les dépendances de Node JS (pas besoin de plus de précisions dessus)
  • Configuration de Node JS (c’est ici que Node JS vous précise une erreur si il manque quelque chose dans votre système)
  • Compilation de tout les fichiers (écrits en C++) afin de les préparer à l’installation
  • Installation de Node JS sur le système (la commande sudo va vous demander votre mot de passe avant d’exécuter la commande, c’est une sécurité car vous passez en mode root)
Maintenant il faut installer NPM (Node Packet Manager)…mais qu’est-ce que c’est ?
NPM est un gestionnaire de modules pour Node, il permet d’ajouter un dossier avec un tas de fichiers dedans qu’on inclus par la suite dans notre fichier JavaScript afin d’ajouter pleins de fonctionnalités (exemple : gestion des sockets avec socket.io, utilisation d’un framework avec Express JS, utilisation de template avec Jade…).
Cet outil nous permet aussi d’installer directement un exécutable du module grâce a l’option -g (très pratique pour Coffee-Script par exemple, mais j’en parlerai dans un prochain article).
Cette installation est facultative pour ce tutoriel mais je vous la conseille vivement afin de pouvoir reproduire les prochains tutoriels que je posterai par la suite.

Installation de NPM :

$> sudo su

Ces commandes permettent d’avoir un exécutable nommé npm afin d’installer directement des modules de Node JS, j’en reviendrai dans un prochain article.

II/ Fonctionnement de Node JS

Normalement, vous devriez avoir une commande nommée node. Cette commande va nous permettre d’interpréter et d’exécuter du code JavaScript sans devoir lancer un navigateur web.

interogationINFO : J’ai oublié de le préciser dans l’article précédent présentant Node JS, mais l’interpréteur ne comprend pas les commandes propres au client (évènements DOM, objet window, alert…), ce qui est plutôt logique me diriez vous car nous sommes coté serveur ;)

Tout d’abord, nous allons créer un fichier JavaScript se nommant test.js.

Dedans ce fichier nous allons écrire un peu de JavaScript (je m’inspire beaucoup de la vidéo de l’auteur je l’avoue) :

setTimeout(function() {
console.log(‘Coucou’);
}, 2000);
console.log(‘toi’);

Qu’est-ce code JavaScript veut dire ?

  • La fonction setTimeout permet d’exécuter une fonction après X millisecondes donnes en 2eme paramètre.
  • La fonction console.log permet d’afficher du texte dans la console…logique :)

Je pense que vous avec donc une idée de ce que le code va donner… exécuter maintenant le script test.js avec la commande :

$> node test.js

Que s’affiche t-il dans l’écran de votre console ?

WTFComme vous avez pu le remarquer, la console affiche :

$> node test.js
toi
Coucou
$>

Étrange n’est-ce pas ? On aurait pu penser l’inverse, c’est a dire que l’interpréteur allait attendre la fin de la fonction setTimeout() avant de passer à l’instruction suivante afin de nous afficher "Coucou" suivit de "Toi".

Comment cela se fait-il ?

non_bloquantEn effet, le JavaScript est un langage asynchrone, c’est a dire que l’interpréteur ne vas pas attendre la fin de l’instruction si celle-ci n’est pas bloquante (boucle infinie, fonction synchrone, calculs…). Pour reconnaître les fonctions synchrones à celles asynchrones, il suffit de savoir si la fonction a un paramètre de type callback, c’est a dire qu’elle récupère en paramètre une fonction qu’elle exécutera (avec parfois certains paramètres) dès qu’elle aura fini ce qu’elle avait à faire.

Dans le cas de la fonction setTimeout, on lui a donné la fonction à exécuter quand elle aura fini d’attendre les X millisecondes précisées en 2eme paramètre.

Le meilleure exemple de fonction asynchrone sont les fonctions de type AJAX, en effet, elles appellent l’url donnée en paramètre et exécute la fonction donnée en callback en lui donnant en parametre le resultat de la page.

Vous avez donc vu rapidement le fonctionnement de Node JS, ce qu’il faut surtout retenir est qu’il n’attend pas la fin d’une instruction avant de passer à la suivante (sauf si celle-ci est bloquante). Je vous laisse imaginer des fonctions asynchrones qui appellent d’autres fonctions asynchrones et ainsi de suite… ça devient vite très lourd mais ne vous inquiétez pas, il y a des solutions pour permettre de garder un code assez clair et totalement asynchrone (gestions de promises, futures, defferer… mais j’en parlerai dans un prochain article).

III/ Première application en Javascript

appNous allons enfin commercer à faire notre première application avec Node JS !

Mais elle va ressembler à quoi notre application ?

Nous allons faire simple pour commencer….nous allons créer un serveur web en local écoutant sur le port 8080, il sera donc accessible depuis l’adresse http://localhost:8080/.

Quand on se rendra sur cette adresse, la page nous affichera : Salut tout le monde !

Nous allons créer un fichier app.js qui contiendra :

var http = require(‘http’);
http.createServer(function (req, res) {
res.writeHead(200, {‘Content-Type': ‘text/html’});
res.write(‘Salut tout le monde !‘);
res.end();
}).listen(8080);
console.log(‘Serveur tourne sur http://localhost:8080/’);

Voici quelques explications du code ci-dessus :

  • var http = require(‘http’); -> on inclue la classe http (propre a Node JS), cette classe nous permet d’appeler la fonction pour créer un serveur web
  • http.createServer -> on appelle la méthode createServer() qui prend en paramètre (type callback) la fonction à exécuter quand le serveur a bien été créé. Vous pouvez afficher plus de détails sur les deux paramètres que récupère la fonction en faisant un console.log(req) et console.log(res).
  • res.writeHead -> on définit le header de la page renvoyée (res = response), 200 correspond a OK pour dire que tout s’est bien passé (404 pour un NOT FOUND par exemple).
  • res.write -> permet d’écrire dans le corps de la page
  • res.end -> permet de signaler au serveur que toutes les réponses pour le header et le body ont été envoyées.
  • .listen(8080) -> indique que le serveur va écouter les entrées sur le port 8080

Je vous invite à lire la documentation de Node JS pour mieux comprendre comment cela fonctionne (en anglais par contre) : http://nodejs.org/docs/v0.4.10/api/http.html

Maintenant il suffit d’exécuter notre script avec node :

$> node app.js
Serveur tourne sur http://localhost:8080/

Comme vous pouvez le remarquer, notre application est déjà terminée ! Rapide non ? Et encore ce n’est que le début, vous verrez dans les prochains articles comment créer une application web beaucoup plus riche. Voici une petite application que j’ai réalisé avec Node JS et que vous saurez faire dans peu de temps (ma connexion internet étant assez lente, l’application mettait pas mal de temps à répondre car elle était hébergeait sur internet):

Vous pouvez essayer l’application sur votre ordinateur en faisant :

$> git clone git://github.com/Atinux/liveBalls.git
$> cd liveBalls
$> npm install socket.io
$> node app.js

Puis rendez-vous sur http://localhost:8080/ avec deux navigateurs différents !

finishVoila le premier tutoriel sur Node JS est (deja) terminé, j’espère avoir été le plus clair possible et comme j’ai dit au début de l’article, n’hésitez pas à laisser un commentaire si vous avez quelques questions encore en suspends ou même pour me dire si vous avez apprécié ou non mon premier tutoriel sur Node JS :).


Présentation de Node JS

Bonjour tout le monde,

Node Js Node Js Node Js…de plus en plus de personnes en parlent mais il n’y en a pas énormément qui l’expliquent vraiment en français.

Mais c’est quoi Node JS exactement ?

Logo de Node JS

Je vais essayer de vous expliquer à ma façon comment je comprends Node JS, car j’ai lu beaucoup d’articles sur celui-ci, mais aucun ne disaient exactement ce que c’était.

Node JS est tout simplement un interpréteur de JavaScript coté serveur. Ensuite viennent toutes les spécifications propres à Node (utilisation d’un thread, il est open source, développé par Ryan Dahl, …), mais pour ma part c’est la principale chose que j’ai retenue.

La deuxième chose importante que j’ai gardé qui caractérise aussi Node, et qu’il interprète le JavaScript ET aussi ses propres fonctions (elles ont la même syntaxe que le JavaScript mais permettent de rajouter pleines de fonctionnalité au JavaScript coté serveur), comme par exemple créer un serveur HTTP, lire des fichiers, faire des inclusions, … pleins de nouvelles choses que vous pourrez voir dans mon prochain article.

Comme vous l’avez compris, vous avez besoin de connaitre le JavaScript pour utiliser Node JS, je ne vais pas vous écrire un tutoriel dessus car il y en a déjà d’excellents.

Si vous voulez apprendre le JavaScript, c’est ici : Tuto JavaScript (regardez surtout les bases du langage, initialiser une variable, fonctions, boucles, tableaux…)

Pour les amateurs d’anglais, je vous conseille vraiment cette vidéo qui m’a permis de comprendre réellement ce qu’est Node JS (présentation de Node JS par son auteur) :

Le prochain article vous expliquera comment installer Node Js sur Linux, ainsi que de créer votre première application !

Twittergithub


Je vous souhaite la bienvenue !

Comme le précise le titre, je vous souhaite la bienvenue sur mon blog.
Je ne vais pas faire de longues phrases de présentation que personne n’a envie de lire donc je vais aller à l’essentiel !
Voilà les thèmes que je vais aborder dans mes articles et dont je vais essayer d’expliquer au maximum pour que les plus novices puissent comprendre.

  • Node JS

    Logo de Node JS

  • Coffee Script

    Logo de Coffee Script

  • BDD (Behavior Driven Development)

    Logo de Cucumber

  • Real-Time en JavaScript (socket.io et now.js)

    Logo de Socket.io

    Logo de Now JS

  • Backbone js (architecture MVC coté client)

    Logo de Backbone JS

Et bien plus encore !

Je vais essayer d’être le plus clair possible pour qu’un maximum de personnes puisse comprendre ces dernières poussés technologique (tutoriels, explications détaillés, démonstrations, …)

A très vite !

Mes profils Twitter et Github :
Twittergithub


Suivre

Recevez les nouvelles publications par mail.