Archives de l’auteur : admin

Introduction à Node.js

Article rédigé par Naoufal Ben Bouazza

Node.js est une nouvelle technologie très utilisée à la Silicon Valley, notamment par Microsoft, VMware, eBay, Yahoo, LinkedIn, etc …  pour n’en citer que quelques uns.

Dans cette série d’articles, on va voir comment node.js offre de nouvelles opportunités aux développeurs.

Peut-être que vous avez entendu parler de Node.js, et vous savez qu’il est utilisé pour des applications « temps réel » ou qui demande de la «haute performance », et vous savez certainement que Node.js est du JavaScript côte-serveur, mais vous n’êtes pas sûrs quand et/ou pourquoi l’utiliser, rassurez-vous dans ce tutoriel, je vais tenter de vous expliquer quand l’utiliser et pourquoi.

Quand choisir Node.js ?

A l’époque du Web 2.0, le web est devenu plus interactif. Les utilisateurs autour du monde ont besoin d’interagir entre eux et ceci en temps réel. Le tchat, les jeux en ligne, réseaux sociaux, ainsi que les outils collaboratifs  sont des applications qui demandent une communication en temps-réel entre les utilisateurs. Cette communication en « temps-réel » doit se produire à grande échelle, en supportant des millions de requêtes.

Intro à Node.JS

Node.js est un environnement créé par Rayn Dahl en 2009 qui s’appuie sur le JavaScript exécuté côté serveur. Comme le montre le schéma ci-dessous il est principalement basé sur libuv, le moteur V8 JavaScript de Google utilisé dans le navigateur Google chrome, et le langage JavaScript.

node-1

A noter que Node.js n’est pas un Framework web, pour avoir une idée sur ces différents Framework de Node.js, je vous conseille de voir ce lien : http://webapplog.com/node-js-frameworks/ parmi d’autres.

Dans ce tutoriel, j’explique brièvement la différence entre fonction bloquante et non bloquante à travers un exemple, et pour clôturer, j’expliquerai l’utilité de la boucle d’évènement dans Node.js.
Pour commencer Node.js il faut comprendre la différence entre Node.js est les environnements des langages de script exécutés côté serveur tel que PHP.

La programmation asynchrone (ou non-bloquante)

J’illustre ici le principe de la programmation bloquante et la programmation non-bloquante, avec ce pseudo-code.
Par exemple un code bloquant sera de la forme suivante :

Lire le fichier à partir du système de fichier, stocker le contenu dans "contenu"
Afficher contenu
Faire autre chose

Avec cette version on ne peut pas afficher le contenu tant que l’on a pas lu tout le contenu à partir du fichier (on ne peut pas faire autres chose tant que la lecture et l’affichage ne sont pas faits), car on a trois instructions bloquantes en série.
Une version non-bloquante du code sera de la forme suivante :

Lire le fichier à partir du système de fichier
       Et quand tu as fini, affiche contenu
Faire autre chose

Avec cette version on peut lire le contenu à partir du fichier et quand la lecture est finie on pourra l’afficher. Entre temps, on passe à l’instruction suivante sans attendre le retour de la fonction qui la précède, ce qui permet en quelque sorte un « pseudo-parallélisme » même en sachant que Node.js n’est pas multithread. Cette technique est ce qu’on appelle «callback ».

Si on veut traduire ce code bloquant, ça sera :

var contenu = fs.readFileSync('/etc/hosts');
console.log(contenu) ;
console.log('Faire autre chose');

La version non-bloquante sera :

fs.readFileSync('/etc/hosts', function(err, contenu ){
    console.log(contenu);
});
console.log('Faire autre chose');

A noter que la plupart des fonctions contenues dans Node.js sont des fonctions asynchrones (c’est-à-dire des fonctions qui ne reste pas bloquées en attendant qu’une autre fonction soit terminée). C’est pour cela que le langage JavaScript est un de ces principaux composants comme le montre le schéma précèdent, car il permet l’utilisation des fonctions callbacks.

Comme mentionné au début de cet article, node.js est un environnement, ce qui signifie que certains fonctionnalités ne sont pas accessibles avec l’installation par défaut. Il est cependant très facile de charger des librairies externes créées par la communauté pour la majorité des besoins « classiques ». La création d’un serveur web peut par exemple être facilement réalisé avec la librairie « Express ».

Boucle d’évènements (Event Loop)

Je me permets de traduire ce que Rayn Dahl a dit à propos du choix du langage JavaScript:

« Le langage JavaScript a certaines caractéristiques qui le différencie des autres langages dynamiques. Il n’a pas de concept de threads, son modèle de gestion de la concurrence est complètement basée autour des évènements. »

JavaScript nous permet de faire la programmation événementielle en utilisant la boucle d’évènements et d’écrire un code asynchrone (non-bloquant).

Alors qu’est-ce que la boucle d’évènements ?

La boucle d’évènement est une file FIFO (First-In-First-Out). Lorsqu’une fonction asynchrone est exécutée, les fonctions callbacks sont ajoutées dans la file, et le moteur JavaScript ne démarre pas le traitement de la boucle d’événements jusqu’à ce que le code qui est après la fonction asynchrone soit exécuté. Puisque la boucle d’évènement est une file (FIFO) les fonctions callbacks s’exécutent dans l’ordre où elles étaient ajoutées à la file d’attente.

Conclusion

Node.js est un environnement qui permet d’exécuter JavaScript côte serveur, offrant de hautes performances pour des applications temps-réel grâce à son modèle mono-thread.
Dans le prochain tutoriel nous allons installer Node.js via le gestionnaire de version de Node (NVM) dans un environnement Ubuntu.

Offre de stage – Développeur junior application web sur Montreuil

Offre de stage – Développeur junior application web sur Montreuil

  • Titre: Développeur junior application web
  • L’entreprise: Hedera Technology (http://hederatech.com) est un éditeur concevant des solutions innovantes de management d’infrastructures informatiques. Après deux ans de R&D, notre solution KANOPYA aide les responsables SI à optimiser l’administration et le fonctionnement de leurs serveurs, notamment grâce à un module d’intelligence artificielle.
    Notre philosophie d’entreprise est ancrée dans le développement durable et l’open-source.Notre équipe sera heureuse de répondre à vos questions et de vous accueillir au sein d’une structure a taille humaine, organisée autour de la méthodologie SCRUM dans un contexte d’innovation ouverte.

    Démonstration des bénéfices de notre solution par des LEGOs: http://www.youtube.com/watch?v=HrTrtO4gvcc

    Ce que l’on dit de nous sur le web: http://www.scoop.it/t/hedera-technology

Profil Recherché

  • Profil recherché:
    • Jeune développeur web enthousiaste en M1 ou M2, vous êtes à la recherche d’un environnement de travail dynamique et prospectif, caractéristique des start-ups.
    • Vous avez développé des projets d’applications métiers Web dans un framework type Django, Ruby on Rails, Zend, Zope ou autres.
    • Vous appréciez le potentiel du JavaScript et vous souhaitez vous perfectionner dans ce langage, épine dorsale d’un web toujours plus dynamique. Le domaine des API REST vous intéresse également.
    • Vous intégrez une équipe d’experts spécialistes de l’administration Linux et du café bien dosé. Dans cet environnement résolument technophile, vous travaillez sur l’interface web de Kanopya aux côtés de notre chef de projet dédié à la partie web qui vous fera bénéficier de son expérience.
    • Vous participez aux réunions SCRUM pour faire partager à l’équipe votre vision du développement web pointu et êtes force de proposition pour explorer et valider les outils que vous jugerez pertinents pour notre Rich Internet Application..
  • Compétences Techniques Requises:
    • Le Javascript s’impose pour le développement de notre interface web.
    • Environnement technique : « Serverside JS, AJAX, HMTL5 Modèle MVC, Single Page App, WebSocket / Real-time apps »
    • Parmi les challenges à relever aux côtés de l’équipe :
      • Contribuer au développement de l’API REST
      • Représenter de façon visuellement attractive les données (conso énergétique, CPU … )
      • Développer le FrontEnd des modules du cœur de Kanopya en collaboration avec les équipes BackEnd
      • Développer l’interface du portail client self-service de VM avec objectif de simple « Drag&Drop »
    • Nous définirons ensemble les sujets qui vous intéressent le plus.
  • Expérience Requise:  1 XP/projet en développement JavaScript
  • Disponibilité:Janvier

Conditions d’embauche

  • Lieu :Montreuil (proche M1 et 9+ Rer C)
  • Rémunération: 800 à 1000€
  • Contrat: Stage (6 mois)

Pour postuler

  • Contact:
    • Envoyez nous votre CV et lettre de motivation personnalisée par mail àrecrutement@hederatech.com
    • Vous pouvez me joindre au 09 81 97 29 39 pour avoir plus d’informations sur notre projet ou notre entreprise.

Un petit coup de main pour traduire mon application Maps Pro pour Windows 8

Salut à tous,

Pour cet article, pas de tutorial mais besoin d’un petit coup de main. Dans le dernier article, je vous parlais de Maps Pro, mon application pour Windows 8:

Maps Pro disponible sur le Windows 8 Store

L’application est déjà traduite en Anglais / Français et j’ai envie de proposer plus de langues. J’ai donc besoin de vous pour me donner un coup de main, si vous maîtrisez une langue telle que l’espagnol par exemple (Java et PHP ne comptent pas).

Microsoft propose un toolkit permettant de traduire automatiquement les textes d’une applications mais les traductions sont parfois hasardeuses, voire fausses. Le but de l’opération est donc de jeter un coup d’oeil à ces traductions et de les corriger si besoin est. Pour la traduction en Dutch de Clouder par exemple, uniquement 25% des textes ont du être corrigé, ce qui n’est pas si mal.

J’ai déjà trouvé des volontaires pour Dutch et German (merci à eux), je cherche donc des personnes qui parlent espagnol, russe, chinois ou même une autre langue. Ce n’est pas un travail de traduction à 100%, il suffit de corriger les traductions automatiques trop approximatives. Si vous parlez la langue, cela ne devrait vous prendre pas plus de 10 minutes.

Si cela vous intéresse, envoyez-moi un email à fnicollet@gmail.com, en précisant la langue que vous maîtrisez et je vous donnerai les droits d’accès en écriture sur un Google Document à corriger:

https://docs.google.com/spreadsheet/ccc?key=0Aou-2njuXGa1dFJyb3RDQTRBSnZ5alBUOUYzY1Nza1E

Si la langue que vous maîtrisez n’est pas encore dans le document, je l’ajouterai avec les traductions automatiques.

En récompense, vous apparaîtrez dans la description / les crédits de l’application :)

Merci à vous!

Fabien

Maps Pro disponible sur le Windows 8 Store!

Comme je le disais dans le dernier article sur Clouder! pour Windows 8, je n’ai pas chômé dernièrement. Dernier projet en date, une nouvelle application pour Windows 8: Maps Pro.

L’idée

Maps Pro est une application qui a pour but de combler les manques de l’application « Maps » de base. En effet, l’application Maps pour Windows 8 est loin d’être la meilleure, surtout quand on voit ce que fait Google Maps sur mobile et encore plus sur Android. L’application a en ce moment une note moyenne de 3*/5 avec beaucoup d’utilisateurs laissant un commentaire à 1* car certaines fonctionnalités qui semblent essentielles manquent: pas de Street View, une géolocalisation trop approximative et une recherche texte qui ne fonctionne pas directement avec des adresses, …

Comme je mange de la cartographie à longueur de journée, j’ai vu là une bonne opportunité pour réaliser une application :)

Maps Pro est désormais disponible sur le Windows 8 Store pour toutes les versions de Windows 8 (x86, x64 et RT).

Maps Pro pour Windows 8

Elle est même disponible entièrement en Français sous le nom « Cartes Pro » pour les possesseurs d’une version FR de Windows 8:

Cartes Pro pour Windows 8

L’application est disponible pour 1.99€ avec une période d’essai de 7 jours. N’hésitez donc pas à la télécharger si vous avez installé Windows 8 ou si vous testez du matériel Windows 8 à la Fnac :). Et si elle vous plait, laissez donc un petit commentaire avec une note, ça fait toujours plaisir !

Les fonctionnalités

Pour choisir les fonctionnalités, ce fut assez simple, j’ai pris toutes les plaintes des utilisateurs de l’application Maps standard et je les ai implémentées comme ils l’auraient voulu. Ajoutez à cela, ce que j’aurais aimé voir dans l’applications Maps et vous obtenez Maps Pro.

Voici les principales fonctionnalités de l’application:

  • Choix parmi 20+ styles de cartes, avec des fonds de plan issus d’Open Street Map, MapBox, Stamen, ESRI, Nokia ou Bing Maps
  • Possibilité d’afficher sur la carte des points d’intérêt (POI) parmi plus de 80 catégories différentes (restaurants, bars, cinémas, etc.)
  • Accès à Street View en plein écran dans les zones couvertes
  • Affichage de la géolocalisation de l’utilisateur en lui donnant la possibilité de la changer si trop approximative (souvent le cas avec une geoloc par IP)
  • Recherche par un nom de rue, ou un nom d’établissement comme un restaurant par exemple
  • Calcul d’itinéraire depuis une adresse, un lieu ou depuis votre position actuelle
  • Choix entre 3 types de calcul d’itinéraire: voiture, vélo et piéton
  • Ajout d’overlays (superpositions) sur la carte pour donner un style perso à votre carte
  • Versions en anglais et en français (avec peut-être d’autres langues à venir)

Quelques screenshots

Voici quelques screenshots de Maps Pro pour vous donner une idée:

L’application est sur le store Windows 8, à vous d’aller l’essayer donc. Je suis à l’écoute des suggestions que vous pourriez avoir sur cette application encore jeune, n’hésitez pas à laisser un commentaire sur cet article ou sur l’application :)