Tomcat, Maven, Angular, Grunt et Yeoman sont dans un bateau

Depuis quelques mois, je développe (avec mon pote Jérémy ) une application web basée sur AngularJsangular

Au fil des itérations, nous avons :

  • Ajouté pas pal de dépendances Javascript, (d3.js, angularstrap, ..) il faut alors gérer les dépendances communes, les mises à jour, les conflits, …
  • Utilisé Twitter bootstrap en mode LESS, ce qui nous permet de définir le thème de notre application de manière centrale et facilite aussi la création de « composants » utilisables partout dans l’application
  • Utilisé CoffeeScript …. parce que la syntaxe nous plait bien. Une sorte de JavaScript un peu amélioré.
  • Concaténé les fichiers javascripts pour limiter le nombre de requêtes HTTP et la latence qui va avec.

Fans de CodeStory, nous avons adapté le mécanisme qu’il utilisent : gérer ces taches au runtime, coté serveur. Cependant au fur et à mesure que le projet avançait le code source grossit et les temps de compilation LESS et CoffeeScript devenaient désagréables et pénalisants pour le développement. Plus de 20 secondes d’attente pour tester la modification d’une feuille de style, …. ca laisse trop de temps pour twitter ! :).

Devoxx France  2012 est passé par la et pas mal de présentations autour des outils d’assemblage JavaScript : Yeoman, Grunt et Bower.

  • Bower est un outil de gestion de dépendances web (Javascript, Css, fonts, ..)
  • Grunt est le Ant de Javascript : enchainer des taches pour former une chaine d’assemblage ou de tests. Il peut servir de lanceur pour un serveur web de développement, qui surveille les changements dans les sources et recompile tout instantanément
  • Yeoman est un générateur de projets, qui permet de démarrer les projets rapidement. Il se base sur Bower et Grunt

Yeoman workflow

Enervé par une journée passée à trop souvent attendre que les transformations LESS ou Coffee se terminent, je passe une partie de mon WeekEnd à migrer nos sources vers une organisation « Yeoman », le bilan est extrêmement positif, la compilation est instantanée, la page se rafraichit immédiatement.

C’est clair, le moteur JavaScript utilisé sur JVM (Rhino.js) est beaucoup plus lent que le moteur V8 qui propulse node.js.

Maintenant, plus question de reculer, mais il va falloir résoudre plusieurs soucis :

  • Notre application doit être déployée sous forme d’un unique fichier War (je n’ose pas vous donner le nom du serveur d’app), embarquant à la fois le serveur (ressources REST) et le client (fichiers HTML, JS, CSS, …).

Au run, le client et le serveur sont donc déployés sous la même URL racine, alors qu’en développement, les fichiers « client » sont mis à disposition par un « serveur Grunt » et les ressources REST par un Tomcat local.

Pour résoudre ce soucis, nous avons paramètré le serveur web de Grunt pour que les appels REST soient délégués à Tomcat.

Pour cela : installer le module grunt-connect-proxy :

npm install grunt-connect-proxy --save-dev

Puis le déclarer dans le fichier Gruntfile.js

  • Tout le cycle de vie de l’application et de son système sont gérés par maven. Nous voulions donc intégrer le build Yeoman (Npm, Grunt et Bower en fait) dans le build maven. Pour faire rapide, le plugin antrun a fait le boulot dans un premier temps. Puis j’ai intégré tout ça dans un plugin maven, pour rendre le pom plus léger et partager ça avec une autre équipe.

L’organisation par défaut du projet est la suivante :

pom.xml
 - src
   - main
     - java
     - webapp
     - …
   - test
     - ..
 - yo
   package.json
   component.json
   Gruntfile.js
   - app
     index.html
     ...
   - test
     ...
   - dist
     ...

Et voici les modifications à apporter au pom.xml

Le bilan est très positif est nous sommes super satisfaits de cette plateforme de développement.

Le plugin yeoman-maven-plugin est disponible sur github et sur le repo maven central, j’ai également publié un projet exemple qui intègre tout ceci avec une application REST/JAXRS.

Stateless is priceless : la vidéo

Les vidéos de la session que j’ai eu l’honneur de présenter au Ch’ti JUG sur le thême des applications Web sans session sont maintenant disponibles sur Parleys: partie 1 et partie 2.

Grand merci à Loïc pour le montage.

Mots-clés : , ,

Indépendant : assisté ou conseillé ?

J’ai été salarié pendant plus de 11 ans de la même société de service, c’était même mon premier employeur. Toutes les belles histoires ont une fin et après beaucoup de reflection, je suis devenu indépendant il y a quelques mois.

Comme beaucoup, je vais parler dans cet article de la création administrative de la société, mais bien entendu les premières choses à valider sont ailleurs :

  • Est ce que mon profil est recherché ?
  • Est ce que j’ai laissé une bonne image chez mes anciens clients ?
  • Est ce que je vais stresser comme dingue au premier intercontrat ?
  • Est ce que je vais savoir évoluer, prendre en main ma formation ?
  • Est ce que ca térrorise mon conjoint, est ce que ca compromet un projet immobillier ?

Une fois toutes ces questions passées en revue plusieurs fois, une fois décidé (vaincre le coté mou (c) (r) ™), il est temps de s’intéresser au coté administratif.

Je m’étais pas mal renseigné sur le Web notamment sur le touilleur express, sur les forums de freelance-info, et sur le site de l’apce. J’ai ensuite contacté un expert comptable avec qui des proches travaillent depuis une dizaine d’années. Rapidement je présente ma future activité, il me confirme que le statut EURL est bien adapté à ma situation, répond à mes questions, puis nous discutons des démarches de création de l’entreprise. Il me propose alors deux choix :

  • Le cabinet comptable prend en charge la rédaction des statuts et toutes les démarches, pour XXX €
  • Je rédige les statuts et effectue les démarches, guidé par mon expert comptable.

D’un naturel curieux et n’étant pas préssé par le temps, j’ai choisi la seconde solution. Je me suis basé sur les statuts types proposés par l’APCE, j’ai acheté les statuts d’une société du même type sur societe.com, ils étaient beaucoup plus verbeux mais me semblaient avoir le même sens. L’autre gros morceau est le formulaire M0 (Oui c’est un .do …). L’expert comptable me confirme les chapitres importants et les options fiscales et je peux enregistrer tout cela auprès du trésor public et des greffes du tribunal de commerce. Au dela de la petite fièretée d’avoir accompli tout cela, je pense que le plus important est d’avoir pleinement mené ce projet et de ne pas avoir été simple spectateur.

Environ 3 semaines plus tard, les extraits K-Bis arrivent dans ma boite aux lettres, je passe chez l’expert comptable pour discuter de la suite de notre collaboration et sur la lancée je décide de prendre en charge moi même la tenue de la comptabilité de la société. Ce n’est pas franchement moins cher que de tout déléguer au cabinet, mais j’ai envie de mettre en pratique les cours de comptabilité suivis lors de mes études. 6 mois plus tard (et autant de déclarations de TVA) je ne regrette absolument pas ce choix. Certes cela me prend un peu de temps, mais cela reste très raisonnable (quelques heures par mois), mais encore une fois je suis acteur des différents aspects de mon activité et ca me plait. Bien sur, le cabinet comptable m’a conseillé de nombreuses fois, nous avons rédigé les premières déclaration de TVA ensemble, et je n’aurai pas fait ce choix si l’expert comptable n’était pas ouvert à ce mode de fonctionnement.

Mon but n’est pas de critiquer ceux qui délèguent un maximum de choses ou même de vous conseiller de suivre le même chemin que moi, mais simplement d’expliquer que ce mode de fonctionnement est possible.

En ce qui concerne le détail de la procédure, un de mes amis a fait le même choix que moi et je pense qu’il a pris des notes plus détaillées que les miennes, je rajouterai un lien vers ses notes dès que l’article sera en ligne.

Mots-clés :

Retrouvez moi au Ch’ti JUG le 23 février

16 février 2012 1 commentaire

Le jeudi 23 février, le Ch’ti JUG organise une soirée dédiée aux architectures avec et sans état.

J’aurai le plaisir de vous présenter mon point de vue sur les architectures sans état et de discuter de leur mise en oeuvre avec Spring MVC.

Ensuite, Antoine Sabot Durand nous expliquera que les architectures avec état sont adaptées pour certains usages.

Les 72 premières places ont été réservées en une heure, mais avec notre partenaire Ineat Conseil nous avons maintenant une très grande salle à disposition, les inscriptions sont donc de nouveau ouvertes.

A jeudi.

Plusieurs instances de Tomcat sur Ubuntu

18 janvier 2012 3 commentaires

Pourquoi plusieurs instances ?

  • Pour pouvoir déployer plusieurs applications partageant les même adresses, sur plusieurs virtuals hosts, sans pour autant gérer ces virtuals hosts dans Tomcat
  • Pour pouvoir arrêter / démarrer les JVM de manière indépendante
  • Pouvoir utiliser des environnements Java différents (version de la JVM, librairies partagées, propriétés système, …)
  • Isoler complètement les applications, une fuite mémoire sur l’une ne peut pas impacter l’autre.

Variables d’environnement.

Tomcat utilise deux variables d’environnement :

  • CATALINA_HOME pointe vers le répertoire d’installation de Tomcat
  • CATALINA_BASE est utilisée pour tous les chemins relatifs : configuration, applications.

Si CATALINA_BASE n’est pas précisée, c’est CATALINA_HOME qui est utilisée.

Mise en oeuvre avec Ubuntu

  • Installer tomcat et OpenJDK et le paquet « tomcat6-user » qui permet de créer d’autres instances tomcat :
tom@ubuntu:~$ sudo apt-get install -y tomcat6 openjdk-6-jdk tomcat6-user
  • Pour ne pas créer de confusion, désactiver l’instance principale de tomcat :
tom@ubuntu:~$ sudo update-rc.d -f tomcat6 remove
tom@ubuntu:~$ sudo service tomcat6 stop
  • Créer une nouvelle instance, nommée tomcat6-www, dans notre exemple :
tom@ubuntu:~$ cd /opt
tom@ubuntu:/opt$ sudo tomcat6-instance-create -p 8081 -c 8006 tomcat6-www
tom@ubuntu:/opt$ sudo mkdir tomcat6-www/conf/policy.d
tom@ubuntu:/opt$ sudo touch tomcat6-www/conf/policy.d/empty.policy
tom@ubuntu:/opt$ sudo chown -R tomcat6:tomcat6 tomcat6-www
tom@ubuntu:/opt$ cd /etc/init.d/
tom@ubuntu:/etc/init.d$ sudo cp tomcat6 tomcat6-www

8081 est le port http et 8006 est port d’arrêt.

  • Editer le script de lancement /etc/init.d/tomcat6-www, y changer les variables suivantes :
NAME=tomcat6-www
JVM_TMP=/tmp/tomcat6-www-tmp
DEFAULT=/etc/default/tomcat6
CATALINA_HOME=/usr/share/tomcat6
CATALINA_BASE=/opt/tomcat6-www
  • Activer le démarrage automatique, démarrer l’instance :
tom@ubuntu:/etc/init.d$ sudo update-rc.d tomcat6-www defaults 90
tom@ubuntu:/etc/init.d$ sudo service tomcat6-www start
Mots-clés : ,

Mon premier Devoxx

19 novembre 2011 2 commentaires

J’ai enfin eu l’occasion de participer à mon premier Devoxx cette semaine, encore un peu à chaud voici ce qui m’a marqué :

Keynote de S.Janssen

La Keynote a lieu dans une des (la ?) plus grandes salles et elle est retransmise en live dans les autres salles.
Tout l’esprit de Devoxx est représenté par Stephan : fun et sérieux.
Il introduit les trois jours de conférence et termine sur l’annonce de DevoxxFrance via un « One more thing » et une vidéo bien menée.
Un grand moment pour les Français qui attendaient enfin une belle conférence de ce type en France.

Oracle vs Google

Assurément compétents, les speakers de Oracle m’ont appris beaucoup de choses sur l’intégration des closures et sur Jigsaw pour Java 8 … mais que c’est dur de rester accroché, des slides chargés, pas de live coding, des speakers un peu monocordes.
D’un autre coté, que ce soit sur Android ou HTML5, Google a sorti l’artillerie lourde avec beaucoup de conférences par des speakers de grande qualité.
Des bons speakers, du code et/ou des démos, c’est ce que les gens attendent. Même en restant sur le thème Java SE, Josh Bloch arrive à avoir une présentation sympa et accrocheuse .

BOF Java EE

J’ai participé au BOF animé par Alexis Moussine-Pouchkine sur les JSR relatives à Java EE 7.
C’était assez interessant de voir de nombreux « specs leaders » répondre à des questions très pointues et débattre entre eux.
Devoxx est une énorme conférence mais les intervenants sont très accessibles.

BOF JUG

Je crois que j’ai oublié de vous le dire mais j’ai intégré l’équipe d’organisation du Ch’ti JUG il y a quelques mois.
J’ai donc participé avec plaisir à cette rencontre des JUG Leaders. Des représentants d’Oracle étaient présents ainsi que de nombreux JUG Leaders des capitales européennes et d’autres continents (Maroc, Egypte, Brésil, USA, ..)
Oracle semble apprendre vite et faire beaucoup d’efforts en direction des JUGs, bonne nouvelle.
Une large partie de la session a été consacrée au programme « Adopt a JSR« , le JCP est preneur de retour d’information de la part de développeurs et encourage la communauté à s’investir dans les JSR.

Matt Raible

Matt Raible est un spécialiste des frameworks Web et nous a présenté la session la plus hallucinante de ces trois jours, .
Il a aimé venir à Devoxx l’année dernière et c’est imposé un challenge de taille : apprendre Scala pour en faire une session à Devoxx 2011 !
Comme le garçon n’a pas froid aux yeux, il empile de nombreuses technologies dans sa R&D : Play!, CoffeeScript, Scalate, Jade et pour finir PhoneGap car tout ca tourne dans Safari Mobile.
Le tout est présenté avec beaucoup d’humour, à la fin de la session il présente une vidéo qui retrace toute cette aventure avec trois sessions de test en extérieur.

Ceylon

Dernière session de la conférence : présentation du langage Ceylon par Emmanuel Bernard et Stephane Epardaud.
Ceylon est un langage statique pour la JVM qui vient apporter des solutions à certains problèmes rencontrés avec Java.
Par rapport à Java, la syntaxe n’est vraiment pas chocante, le développeur Java ne sera pas chamboullé.
Parmis les fonctionnalités proposées, j’ai retenu :

  • Une protection contre les NullPointerException par le compilateur.
  • L’utilisation naturelle d’objects immuables.
  • Le type Union qui permet de combiner plusieurs interfaces.
  • Les propriétés : les accesseurs sont présents par défaut
  • … et plein d’autres choses sympas.

Pendant la session, Emmanuel annonce que le projet a maintenant un site web et a puplié son code sur Github.
Je n’ai pas encore regardé attentivement les autres langages (Kotlin et Fantom) mais celui ci me plait bien.

Un dernier mot : Harcelez votre manager, prenez des congés, changez de boite  ou devenez indépendant mais allez à ces conférences

Mots-clés : , ,

Devoxx France à Paris en Avril 2012

16 novembre 2011 1 commentaire

Ce matin lors de la Keynote d’ouverture de Devoxx, nous avons eu le droit à un « One more thing » : la projection d’une vidéo annonçant l’organisation d’une édition Française de la conférence Devoxx.

C’est une excellente nouvelle, car aucune conférence de ce gabarit n’existe pour les développeurs Java francophones.

Grand bravo et bon courage à l’équipe du Paris JUG qui prend en charge cette organisation.

Rendez vous sur le site de DevooxFrance pour plus d’infos.

 

Mots-clés : ,
Suivre

Recevez les nouvelles publications par mail.