Dans un article précédent, j’ai essayé de décrire comment créer une application AngularJS minimale en ECMAScript 2015 sans outil de build. La compilation ES2015 vers ES5 (JavaScript) se faisant à la volée, mon petit exemple mettait un certain temps à s’initialiser. Sur une vraie application, cette solution n’est pas envisageable et il est donc nécessaire de faire la compilation lors du build.

Dans cet article, nous allons nous attaquer à la migration d’une application Angular 1.X de JavaScript vers ES2015. Et comme cobaye, on utilisera mon appli Freelance Impôt écrite il y a quelques mois.

L’appli doit être iso-fonctionnelle une fois la migration terminée :

  • rendu identique
  • exécution des tests Jasmine toujours possible depuis la page http://freelance-impot.fr/specRunner.html
  • debuggage possible du code source d’origine dans le navigateur (autrement dit : sourceMaps)

Utilisation des nouveautés d’ECMAScript 2015

Les contrôleurs et les services deviennent des classes. Les...


Utiliser la même image Docker (serveur + appli) sur tous ses environnements, c’est bien. Mais en phase de développement, recréer une image à chaque modif du code, c’est long. Pour éviter ça quand on développe côté front, il est possible d’ajouter ses sources au démarrage du conteneur Docker plutôt qu’au build de l’image.

Sous Linux, c’est facile

Sous Linux, c’est facile grâce à l’option -v qui sert à monter un volume de données. Exemple avec un conteneur embarquant un serveur Apache :

docker run -p 8000:80 -v ~jeff/boulot/angular1-es6/:/usr/local/apache2/htdocs/ -it httpd:2.4

Si on modifie un fichier HTML et qu’on actualise son navigateur à l’URL http://localhost:8000, on verra tout de suite les changements.

Sous Windows, ça se complique

A ce jour, Docker tourne ne tourne que sous Linux. Il faut donc passer par une machine virtuelle (VM) Linux quand on est sous Windows. Cette couche de complexité supplémentaire est en partie masquée...


Le standard ECMAScript 2015 (ou ECMAScript 6 ou ES6) définissant la nouvelle version de JavaScript a été adopté en juin, mais il faudra encore quelques temps avant qu’il soit implémenté par tous les navigateurs. En attendant, on peut utiliser un compilateur comme Babel ou Traceur pour compiler son code ES6 en JavaScript. C’est même fortement conseillé par le Technology Radar paru le mois dernier.

Récemment au boulot, on m’a donc demandé d’ajouter Babel au build Grunt de notre application AngularJS 1.4, puis de migrer un contrôleur JavaScript simple vers ES6 pour valider que la compilation par Babel fonctionnait bien. Ça n’a pas posé de problème particulier, mais je me suis demandé si c’était aussi facile de migrer toute une application en ES6, et j’ai donc commencé à le faire sur une application perso.

Babel ou Traceur ?

J’ai d’abord essayé d’utiliser Babel comme un polyfill, pour ne pas...


Peut-on faire des requêtes de type SQL en utilisant les streams de Java 8 ? En utilisant des fonctions comme MIN ou MAX ? Si on manipule par exemple des instances de la classe Footballeur ci-dessous, comment fait-on pour trouver le joueur ayant marqué le plus de buts ?

class Footballeur { String nom; Integer nbButs; }

En SQL, c’est facile, on ferait une sous requête :

SELECT * FROM footballeur WHERE nbButs = (SELECT MAX(nbButs) FROM footballeur);

En Java, on trouve beaucoup d’exemples permettant de récupérer le plus grand élément d’une liste, mais moins pour récupérer les propriétés de l’objet associé. J’ai eu ce genre de problématique cette semaine, et après un long quart d’heure de recherches...


Avant, on installait Tomcat (par exemple) en local, en dév, en intégration et en production, puis on buildait son application et on la passait d’un environnement à l’autre. Et de temps en temps, ce qui marchait en dév ne marchait pas en prod. Aujourd’hui on peut, grâce à Docker, livrer son application avec son environnement d’exécution (appli + Tomcat + Linux) rapidement sur le serveur de son choix, et ainsi réduire le risque d’avoir des différences entre les environnements.

Docker est donc une solution de virtualisation légère qui fait énormément parler d’elle depuis plus de 2 ans. On trouve donc logiquement sur le web une grande quantité d’articles à son sujet. Mais les concepts de Docker peuvent prendre un peu de temps à assimiler quand ils ne sont pas bien expliqués. C’est pourquoi je vous conseille la lecture de ces 2 articles, qui sont les plus clairs que j’ai trouvés...


Freelance depuis peu, j’ai développé une petite application me permettant d’avoir une idée du montant de l’impot sur le revenu que je devrai payer. J’espère qu’elle pourra être utile à d’autres personnes !

L’application est développée avec AngularJS 1.4 et Bootstrap 3. La courbe interactive utilise une directive basée sur NVD3 et D3.js. L’appli tourne dans un container Docker qui récupère les sources depuis GitHub et les copie dans un Apache. Le Dockerfile comme le code source sont disponibles ici : https://github.com/jffourmond/freelance-impot

http://www.freelance-impot.fr



Ce blog est maintenant hébergé sur GitHub Pages suite à la lecture d’un post de mon collègue Sun Tan. Cet article montre comment créer un blog sur GitHub avec Jekyll, et comment l’éditer et le tester en utilisant Codenvy, un IDE en ligne qui lance des containers Docker : A blog site with Jekyll, Github Pages Eclipse Che and Codenvy.

Super intéressant ! Et pour ceux qui ne connaissent pas Codenvy/Eclipse Che, cet article fera un bon préambule : Eclipse Che, un IDE sur le Cloud.

Les sources de ce blog sont disponibles sur GitHub.


On entend de plus en plus parler de l’internet des objets, et ce n’est pas prêt de s’arrêter. Mais comment créer un objet connecté ? Qu’est-ce que le Raspberry Pi ? Et quels sont les langages, les frameworks et les protocoles à utiliser ? Toutes les réponses sont dans cet excellent article, qui présente le sujet à travers l’exemple d’un objet connecté programmé en JavaScript. Une parfaite introduction pour prendre le train en marche !

Comprendre l’IoT avec une boule… mais pas que…


Apprendre Git

  • 2015-05-25

Depuis un an, je bosse sur des projets versionnés sous Git. Et franchement, même avec beaucoup de bonne volonté, c’est difficile à apprendre. Le vocabulaire est incohérent, il y a souvent plusieurs moyens d’arriver au même résultat, et une commande donnée peut faire 3 ou 4 choses totalement différentes selon les arguments.

Pour comprendre le fonctionnement de Git, le Git Book est pas mal, mais je conseillerais plutôt la lecture des des tutos d’Atlassian que je trouve plus clairs. Cette page m’a aussi bien aidé : A Visual Git Reference.

Et pour éviter d’aller sur Stack Overflow avant chaque commande, une cheat sheet s’avère indispensable. Celle-ci est de loin ma préférée : Git Cheatsheet : an interaction from NDP Software(c).