mardi 9 juillet 2013

JavaScript au Tours JUG

J'ai eu l'occasion de faire ma présentation sur JavaScript au Tours JUG. Il y a eu quelques évolutions depuis les sessions à Nantes et Brest, notamment sur les Promises et la seconde partie sur l'industrialisation.

jeudi 18 avril 2013

Javascript en entreprise pour le développeur Java

Au début de la semaine j'ai eu l'occasion de faire cette présentation au NantesJUG et au FinistJUG.
L'accueil était très agréable, au cours des deux soirées avec un point de bonus pour le FinistJUG puisque là bas, le speaker repart avec un goodie (voir la photo).

Le public était nombreux et plein de questions. J'ai scotché sur certaines questions mais après quelques recherches je commence à avoir des réponses, je vais faire des articles à suivre.

En attendant, je vous mets les slides

mercredi 19 septembre 2012

Pourquoi et comment j'ai appris JavaScript

Vendredi 14 septembre avait lieu à la Rochelle la troisième édition du JugSummerCamp. Cette année la conférence innovait avec des quickies le midi. J'ai eu l'occasion de présenter un quickie sur le thème de JavaScript.
J'ai choisi de parler de pourquoi et comment un ancien détracteur de JavaScript, qui faisait tout pour l'éviter, code maintenant en JavaScript sur son temps personnel. Il y a d'abord des raisons professionnelles (demande du marché) mais aussi une envie de sortir de ma zone de confort. Après observation de l'écosystème, je pense que celui-ci atteint un niveau de maturité suffisant pour permettre de faire des projets en JavaScript sans s'appeler Google ou Yahoo.
JavaScript est un langage avec une grande simplicité de mise en oeuvre : pas de SDK ou compilateur, pas de variables d'environnement, vous copiez-collez du code depuis le web dans un fichier, l'ouvrez avec un navigateur et vous avez fait du JavaScript.
Il ne faut pas se laisser tromper par cette simplicité de mise en oeuvre car JavaScript est un langage avec de nombreuses particularité et piège, je vous recommande donc fortement de prendre le temps de l'apprendre.

jeudi 16 août 2012

JUG Summer Camp

La nouvelle édition du JUG Summer Camp aura lieu le vendredi 14 septembre à la Rochelle. J'aurai le plaisir d'y animer un Quickie sur le thème : Pourquoi et comment moi, développeur Java, j’ai appris JavaScript. Un Quickie est une session courte de 15 minutes. J'essaierai de ne pas aller trop vite pour bien faire passer le message.

Le JUG Summer Camp est une conférence vraiment agréable, avec un public réduit dans une très jolie ville. Je vous recommande vivement d'y aller. En plus il n'y a que deux sessions en parallèle ce qui réduit considérablement le risque de devoir faire des choix et donc la frustration de ne pas pouvoir assister à toutes les sessions. En plus l'équipe d'organisation fait un super travail et les sessions des années passées sont disponibles sur le site Parleys du Poitou Charentes JUG.

Il reste encore quelques places, alors n'hésitez pas à vous inscrire.

jeudi 28 juin 2012

Guide du développeur au pays du JavaScript

Lors de l'édition 2012 du breizhcamp à Rennes, j'ai donné une conférence sur JavaScript. JavaScript est un langage intéressant car simple à mettre en oeuvre : un éditeur de texte, un navigateur pour tester et c'est tout. Pas de variable d'environnement, pas de compilateur, vous pouvez copier-coller un morceau de JavaScript trouvé sur le web et c'est fini. Enfin c'est la façon de faire de Madame Michu pour son site personnel entretenu le dimanche.

L'objectif de cette présentation était de parler des principes du langage et des pièges principaux pour montrer aux gens que même si JavaScript est un langage simple d'accès, il est nécessaire de l'apprendre si on veut écrire de vraies applications.

En regardant les slides 15 jours après la conférence, je me dis qu'il manque quelques résultats sur les exécutions de code ou explications sur certaines slides. Normalement la présentation sera bientôt en ligne sur l'espace Parleys du Breizhcamp.

En attendant j'intègre les slides depuis slideshare.

jeudi 15 septembre 2011

Changer les fichiers de configuration avec Maven

L'idée d'aujourd'hui est de pouvoir générer avec Maven des livrables contenant des fichiers de configuration correspondant à différents environnements.
Pour cela j'utilise les profils Maven et une petite tache Ant.

On commence par créer nos fichiers de configuration en les suffixant selon les profils. On a alors les fichiers conf.xml.dev et conf.xml.prd par exemple pour les environnements de développement (dev) et de production (prd).

Lorsque l'on demande à Maven de packager nos livrables, ils contiennent alors les deux fichiers.
La première étape est alors de faire en sorte de ne copier que la resource qui nous intéresse.
Pour cela nous déclarons les profils dans le fichier pom.xml du projet :
<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <activebydefault>true</activebydefault>
    </activation>
    <properties>
      <maven.deployment.suffix>dev</maven.deployment.suffix>
    </properties>
  </profile>
  <profile>
    <id>prd</id>
    <properties>
      <maven.deployment.suffix>prd</maven.deployment.suffix>
    </properties>
  </profile>
</profiles>

Nous avons donc deux profils : "dev" et "prd". "dev" est le profil actif par défaut et les deux profils déclarent une propriété "maven.deployment.suffix".
Pour faire en sorte que Maven sélectionne le bon fichier, il faut configurer le plugin resource dans la section build du xml.
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.xml</include>
        <include>**/*.xml.${maven.deployment.suffix}</include>
      </includes>
    </resource>
  </resources>
</build>
Il ne faut pas oublier d'inclure les autres types de fichiers à copier comme xml dans l'exemple mais aussi les fichiers properties et autres.

On constate alors que Maven a bien inclu dans le livrable le bon fichier mais notre fichier s'appelle conf.xml.dev au lieu de conf.xml. Pour avoir le fichier de l'environnement de production, il faut utiliser la commande mvn clean package -Pprd

C'est alors qu'intervient Ant, nous allons utiliser une tache Ant pour faire le renommage des fichiers. Pour cela nous allons ajouter le plugin Ant pour permettre l'exécution de la task move lors de la phase process-classes de Maven.
Dans la section build du pom.xml, on a alors :
<build>
  <plugins>
    <plugin>
      <artifactid>maven-antrun-plugin</artifactid>
      <executions>
        <execution>
          <phase>process-classes</phase>
          <configuration>
            <tasks>
              <echo message="Renommage des fichiers..." />
              <property name="maven.deployment.files" value="*.${maven.deployment.suffix}"/>
              <move overwrite="yes" todir="${project.build.directory}/classes" verbose="yes">
                <fileset dir="${project.build.directory}/classes">
                  <include name="**/${maven.deployment.files}"/>
                </fileset>
                <mapper from="${maven.deployment.files}" to="*" type="glob"/>
              </move>
              <echo message="Fin de renommage !"/>
            </tasks>
          </configuration>
          <goals>
            <goal>run</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
  
  <resources>
    .......
  </resources>
</build>

On a alors une copie des fichiers suffixés par le profil dans le même répertoire en utilisant un mapper qui renomme le fichier en supprimant le suffixe.

mercredi 27 juillet 2011

Hello World

Bonjour et bienvenue sur ce blog.

Je m'appelle Christophe Jollivet, j'ai 36 ans, je suis informaticien et j'aime la technique et le code.
Après cette introduction façon "codeur anonyme", j'assume mon amour du code. Je considère que le poste de chef de projet n'est pas l'évolution normale du métier de développeur mais un métier complètement différent qui fait appel à des compétences différentes.

Je dois faire une confession, je ne suis pas un "vrai informaticien". Ce que je veux dire par là, c'est que ma formation universitaire est un doctorat de neurobiologie et ce que l'on appelait à l'époque un DESS CCI ou Diplôme d'Etudes Supérieures Spécialisés (devenu Master 2) Compétences Complémentaires en Informatique. C'est à dire une formation ouverte à des non-informaticien avec des cours pendant 6 mois et un stage de 6 mois.

Par la suite j'ai travaillé dans le service informatique d'une entreprise de semences agricole pendant un an, j'ai fait un passage par un petit éditeur avant d'aller chez Apside TOP où je travaille depuis bientôt 6 ans.
Je suis aussi actif au niveau des communautés, j'ai été rédacteur et modérateur sur developpez.com, co-responsable de la rubrique Java avant de créer le Tours JUG que je mène toujours. Il m'arrive aussi de parler dans des JUG ou conférence. Enfin je fais des vacations en Faculté où j'enseigne Java EE en Master 2.


Ce blog sera donc un blog à orientation technique avec quelques réflexions sur le métier. Alors pourquoi un n-ième blog technique?
J'ai tendance à beaucoup expérimenter sur les frameworks et outils. Par la suite, dans la cadre du travail, il m'arrive de me dire : 
"j'ai déjà fait cela mais comment ?"
Quand j'étais en thèse, j'avais un "cahier de laboratoire" dans lequel je consignais mes différentes expérimentations et observations. Cela permettait par la suite de revenir dessus et comparer pour l'écriture d'article et de mon mémoire.

L'idée de ce blog est donc de reproduire cette pratique que j'avais oublié. Il s'agira de mon carnet de labo dans lequel je consignerai des expériences et leurs résultats ainsi que des réflexions/observations.
Vous ne trouverez sans doute pas de grand morceaux de code révolutionnaire encore vu nulle part. Vous trouverez plutôt ces petit morceaux de code que l'on recherche régulièrement sur le web, des POC sur mes expérimentations et quelques réflexions.

En espérant que certains morceaux pourront vous servir à vous aussi.