public enum { java, logiciels libres,…}

public enum { java, logiciels libres,…}

Devoxx 2018 — 20 avril 2018

Devoxx 2018

L’édition 2018 de DEVOXX touche bientôt à sa fin. Pour ceux qui ne connaissent pas cette conférence, c’est LA conférence sur le développement en France. A titre personnel, je peux plus apprendre en trois jours à cette conférence qu’en formation.

img_20180419_155256624099247.jpg

Tout d’abord un grand merci aux organisateurs. Ils assurent réellement. Bon, pour l’année prochaine, n’hésitez à retenir ma conférence 😉

Si vous n’avez pas eu la chance d’assister aux trois jours, il faut savoir que vous pourrez voir les rediff sur la chaine youtube.

Les tendances

Voici les tendances que  j’ai retenu :

  • Spring, spring et encore spring
  • Du réactif en veux tu en voila
  • Du DDD sinon rien
  • Du devops

et le plus impressionnant pour moi était la conférence de JOSHUA BLOCH(!!!) sur Effective Java. Pas tant dans le contenu, car il reprenait peu ou prou celui du livre, mais de voir une personne de ce calibre (dans le monde JAVA, c’est une rock star) en France, c’est assez impressionnant.

Les keynotes ( dont celle sur le smart building) étaient dans l’ensemble très intéressantes. Les conférences étaient également d’un très bon niveau. J’ai pu découvrir par exemple l’avance que peut avoir l’Estonie sur l’IT ( voir le projet x-road )  par rapport à la France qui lance le projet french road.

Voici quelques conférences qui m’ont plu et interpelé :

Je ne vais pas trop les décrire ( voire pas du tout ), elles seront disponibles prochainement sur la chaine youtube .

Intégration et médiation avec Apache Camel — 10 avril 2018

Intégration et médiation avec Apache Camel

Depuis quelques jours, je teste Apache Camel pour la mise en œuvre  de médiations.

Apache-camel-logo

Apache Camel est un framework assez ancien. Il est similaire à Spring Intégration et permet l’ implémentation de patterns d’intégration.

Les patterns d’intégration

Qu’est-ce qu’un pattern d’intégration allez-vous me dire ? C’est une solution d’architecture ou plus simplement une recette de cuisine permettant d’avoir une solution toute prête à une problématique d’intégration donnée. L’ensemble de ces patterns est décrit sur ce site ( ne vous attardez pas sur le look des années 90 … ).

Exemple :

PublishSubscribeSolution

 

Camel permet simplement de gérer l’intégration via un DSL.

Choix d’implémentations

On peut faire pas mal de choses avec ce FRAMEWORK et de plusieurs manières. J’ai fait les choix d’implémentation suivants :

  • Tout se fera avec SPRING … et pas en XML 🙂
  • Il faut que toutes les médiations soient testables
  • J’exécute le code dans un FATJAR ( pourquoi avec springboot )

Configuration de la route

Apache Camel définit les médiations dans des routes. Elles se définissent assez rapidement .

Les routes commencent par une instruction from et se terminent par une ou plusieurs instructions to.

Pour mon exemple, j’extrais les données d’une table et les stocke dans un fichier.

Tout se configure par des URLs. La première permet d’extraire les données via JPA/HIBERNATE. Une entité Address permet le requêtage. La seconde permet le stockage dans un fichier texte JSON.

Elles sont externalisées dans des fichiers de configuration pour faciliter les tests et accessibles via SPRING.

Lancement de la route

Le lancement de la route se fait dans une méthode main() :

Tests

Camel fournit une API de test assez bien fournie. Elle permet notamment de mocker des endpoints existants (ex. : le fichier de sortie de mon cas de test).

Dans mon cas, j’ai décidé de remplacer la base de données que j’interroge en input par une base HSQLDB chargée en mémoire. Le fichier de sortie est, lui, remplacé dynamiquement par un mock. Pour ce faire, j’ai utilisé les « adviceWith »

Pour aller plus loin

Il y a pas mal d’exemples sur le GITHUB de CAMEL. Vous pouvez également acheter le livre « Camel In Action ». Ca ne vaut pas Effective Java 🙂 , mais vu qu’il est écrit par le principal développeur, c’est une très bonne référence.

 

 

Installation de Vagrant — 15 mars 2018

Installation de Vagrant

Vagrant est un outil permettant de construire des environnements de travail virtualisés hébergés sur vmware, virtualbox ou encore docker. Il permet par exemple de construire et gérer une VM dans un seul et même workflow et d’éviter les exports et partages de machines virtuelles ( tout est déclaré dans un seul et même fichier ).

Vagrant

Voici comment je l’ai installé sur ma debian 9.

Installation

Le paquet fourni dans la distribution n’est pas compatible avec la version de virtualbox fournie dans le repo virtualbox.org. j’ai donc installé la version disponible sur le site de vagrant.

# dpkg -i vagrant_2.0.2_x86_64.deb

Configuration

Proxy

Si vous avez un proxy, il faut effectuer le paramétrage suivant

$ export http_proxy="http://user:password@host:port"
$ export https_proxy="http://user:password@host:port"
$ vagrant plugin install vagrant-proxyconf
$ export VAGRANT_HTTP_PROXY="http://user:password@host:port"
$ export VAGRANT_NO_PROXY="127.0.0.1"
$vagrant box add \
precise64 https://files.hashicorp.com/precise64.box
<code>$ export VAGRANT_DEFAULT_PROVIDER</code>=virtualbox 

Installation d’une VM

Voici un exemple pour une VM virtualbox basée sur ubuntu

$ mkdir ~/vagrant
$ cd ~/vagrant
$ vagrant init pristine ubuntu-budgie-17-x64
$ vagrant up 

Avec ces quelques commandes j’obtiens un environnement ubuntu hébergé sur virtualbox sans avoir à installer et configurer la vm. Pour l’instant je ne rentre pas trop dans les détails de la construction des images. Peut-être que je m’y plongerai prochainement…

Ma présentation au Touraine Tech — 26 février 2018

Ma présentation au Touraine Tech

J’ai eu la chance d’être sélectionné pour la première édition de la conférence TouraineTech.

logotnt_final

Tout d’abord, je tiens à remercier toute l’équipe du Touraine Tech pour l’accueil et l’organisation de cette conférence.

Ma présentation s’intitulait: Jenkins2 le retour (d’expérience). Je faisais un retour d’expérience sur la mise en œuvre de Jenkins 2 et des pipelines. Elle était au format quickie  (15mn).

Vous trouverez ci-dessous les slides :

J’ai pas mal préparé la présentation car c’était ma première dans ce domaine. Je trouve que ça s’est pas trop mal passé. J’ai fait quelques erreurs dans mes slides ou tout du moins je trouve que je n’ai pas eu l’effet escompté. Quoi qu’il en soit, je suis plutôt content du résultat.

Les retours ont été assez satisfaisants. Voici le retour des participants :

IMG_0161

Pour ceux qui regrettaient de ne pas avoir de démos, j’en suis désolé, mais le format de 15mn ne s’y prêtait pas trop . Si j’avais eu plus de temps, j’aurai fait des démonstrations qui auraient beaucoup mieux illustré mon propos.

Pour conclure, je pense rééditer cette expérience. Ça m’a vraiment plu. Je n’ai plus qu’à trouver un sujet pour l’édition 2019 de Touraine Tech 🙂

 

 

 

Ma configuration CYGWIN — 16 février 2018

Ma configuration CYGWIN

Dans la série, j’essaye de sauvegarder toutes mes configurations, voici ce que j’ai fait pour configurer correctement cygwin.

Pour ceux qui ne connaissent pas ou qui n’ont pas la chance d’utiliser windows au travail, cygwin est un shell avec tous les outils GNU.

En attendant d’avoir windows 10 ( au travail ) et un BASH intégré, il n’y a pas mieux. Du moins à mon humble avis.2000px-Cygwin_logo.svg.png

GIT

Complétion

On a besoin des fichiers suivants

Je les ai téléchargé et placé dans le répertoire $HOME.

Activation de la configuration et affichage de la branche en cours dans le prompt

J’ai activé la configuration git en exécutant les scripts précédemment téléchargés.

Voici la personnalisation que j’ai paramétré dans la variable d’environnement PS1

J’ai également activé des propriétés qui étaient en commentaire dans ce fichier. Je ne les ai pas listée pour ne pas trop surcharger l’article 🙂

Configuration Nom et sécurité

VIM

Que serait un prompt sans vim ?

J’ai installé une suite de plugin : The ultimate vimrc. Il faut cloner le repo GIT et lancer un script

git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh