Blog
AngularJS est un framework javascript permettant de faciliter l’écriture d’application single page. Il y a de nombreuses fonctionnalités très intéressantes proposées par ce framework, mais selon moi il y en a une très importante : il est développé de manière à ce que le code écrit puisse être testé en intégralité, ce qui facile fortement une approche TDD.
Cet article est destiné aux personnes qui démarrent sur l’écriture de tests avec AngularJS, ou celles qui cherchent des trucs et astuce pour le quotidien. Une connaissance basique d’AngularJS et de Jasmine sont nécessaires.
Lire la suite
Ce petit article a pour but d’expliquer comment mettre en place un environnement de test de données avec symfony2 et doctrine. Cet environnement devra respecter 3 critères très importants :
- Rapidité : La suite de test, même si elle accède à une base de données ne doit pas être trop longue à s’exécuter
- Prédictibilité : On doit pouvoir se baser sur des données de tests déterminées
- Isolation : Les tests ne doivent pas interférer dans l’exécution des autres.
Lire la suite
Travaillant sur différents projets avec Play, sur différentes versions du framework j’ai trouvé qu’avoir plusieurs installations à gérer à la main c’était pas très pratique. Le but de ce post est de proposer une solution grâce à un outil très simple
Lire la suite
Après plusieurs lectures notamment de “Programming in Scala” de Martin Odersky, Lex Spoon, et Bill Venners et en lien mes objectifs personnels 2012, à savoir maîtriser Javascript et apprendre Scala, je me suis lancé dans l’écriture d’une petite application pour mettre tout ça en pratique.
L’article est découpé en 2 parties, d’abord le côté serveur avec play/scala puis le côté client avec angularjs/coffee script.
Le but est de donner mon avis / mes retours d’expérience sur les langages et technologies utilisées.
Cette première partie est dédiée à play et scala.
Lire la suite
J'ai eu la chance d'assister a la première édition du Devoxx en France à Paris.
Cet évènement a regroupé près de 1200 développeurs venus assister à des labs, university, tool in action, conférences, etc…
Le tout réparti sur 3 journées bien remplies (de 9h à 20h et plus) dans un très bel endroit.
Lire la suite
Hier s’est déroulé le premier code retreat à montpellier dans les locaux d’Epitech.
L’évènnement a organisé par Julient Lafont, Sylvain Fraïssé, et moi-même, sponsorisé par Zenexity.
Nous avons démarré par une petite présentation de l’organisation, puis du fonctionnement de la journée et 4 principes de développement à respecter sur l’ensemble des sessions par les facilitateurs. Rôle tenu par Antoine Vernois et Sylvain Fraïssé.
Ces principes sont issus de l’eXtreme Programming :
Lire la suite
Mon dernier article traitait de la gestion des transactions et des rollback avec JPA se terminait sur la conclusion que si on utilise Hibernate en provider, mieux vaut utiliser le flush manuel pour avoir un contrôle complet.
Cependant, j’avais noté de faire attention à la méthode de génération des ID, qui peut transformer le flush manuel en semi-manuel… C’est l’objet de cet article.
Lire la suite
Le mouvement software craftsmanship se propage rapidemment en France, pourtant à Montpellier nous n’avons pas encore eu d’évènnement de type code retreat ou coding dojo. C’est pourquoi Julien Lafont, Sylvain Fraïssé et moi-même nous sommes réunis pour remédier à ça.
Lire la suite
J’ai rencontré une incohérence due, comme souvent, à l’imbrication de plusieurs technologies. Si vous voulez utilisez le scope @ConversationScoped de CDI, Seam(3) persistence : atttention aux rollback() !
la spécification JPA 2.0 qui indique :
Lire la suite
Hier soir, une soirée a été organisée par le Montpellier JUG, où Sébastien Douche était invité.
J’utilise svn quotidiennement au boulot, ainsi que git sur mes projets perso. Réfléchissant à la fois à comment modéliser notre organisation avec un DVCS qui viendrait remplacer svn et en même temps améliorer mon utilisation actuelle de git, j’ai sauté sur l’occasion.
J’y suis personnellement allé en m’attendant à une présentation de type “tutoriel” où on explique comment installer git, comment se synchroniser, bref l’utilisation courante.
Lire la suite
J’ai beaucoup apprécié la facilité de développement rencontrée avec play!, qui sur beaucoup de points ressemble à Symfony (fixtures, controleur, tags etc..). J’ai malgré tout rencontré quelques points qui m’ont paru étonnant. Notamment, pour créer un template ré-utilisable qui a besoin d’accéder à la couche métier, il faut passer par les FastTags
Ce concept nous permet de faire à peu près tout ce dont a besoin, excepté qu’il casse le pattern MVC. En effet si on regarde de plus près la classe FastTags, on s’aperçoit que l’on a du HTML écrit dans des chaîne Java. Pas trop sexy. Du coup comment créer un Custom Tag, avec notre logique en Java et le template dans un fichier html séparé ?
Lire la suite
Après de longs mois sans écrire sur mon ancien blog j’ai
décidé de reprendre en allant plus loin, sur mon propre site.
Cela a été l’occasion d’approfondir play!, mais aussi d’être plus libre sur les fonctionnalités dont j’ai besoin aujourd’hui.
Le contenu de ce blog devrait principalement être axé autour des technologies Java,
qui sont actuellement mon coeur de métier.
Cependant, ce nouveau départ est aussi pour moi l’opportunité de mettre en pratique de nouveaux principes principalement issus du
mouvement craftsmanship :
- Rendre public mon apprentissage de nouvelles technologies, méthodes et outils
- Transmettre mes connaissances pour permettre à d’autres de progresser, mais aussi pour m’aider à connaître mon niveau de maîtrise
- Conserver une base de connaissance pour pouvoir m’y référer dans le futur
Si vous souhaitez suivre le contenu de ce blog, vous pouvez vous abonner
au flux RSS, ou me suivre sur twitter.
Enfin si vous avez des questions, vous pouvez les poser directement sur ce post, ou alors
via la page de contact.
Bonne visite !
Lire la suite
Le behavior softDelete de doctrine est très pratique.
Il permet d’automatiser la gestion des suppressions non physique en base.
Techniquement pour doctrine inférieur à 1.2, ce behavior ajoute un champ deleted de type BOOLEAN dans la table cible,
qui passera à vrai lors de la suppression d’une ligne.
Pour doctrine 1.2, ce champ est renommé en deleted_at et, est de type DATE. On a donc maintenant en plus la date de suppression.
Lire la suite
Le but de ce billet est d’apporter une idée d’approche pour l’implémentation de règles métiers sur les formulaires.
Supposons que nous ayons un formulaire A avec 2 champs A1 et A2. avec la spécification suivante : A1 est obligatoire, mais uniquement si A2 est saisi.
Lire la suite
Suite à la configuration de notre environnement, nous allons maintenant installer un IDE ainsi que Symfony lui-même.
Lire la suite
Dans ce billet je vais expliquer comment installer et configurer Apache/PHP/Windows XP pour Symfony.
Ce sera la première partie d’un article visant à montrer comment travailler dans de bonnes conditions avec cet environnement.
Je n’ai pas testé Windows Vista ou Seven mais je suppose que cela doit pouvoir s’adapter facilement.
Lire la suite