jeudi 16 février 2023

Testez vos scripts BASH avec TAP

Durant ma dernière mission, il m'a été demandé de fournir un logiciel prenant la forme de scripts BASH. Sans entrer dans les détails, je me suis très vite confronté à un problème: comment je teste ce que je fait ?

Criant à qui veut l'entendre que tout est testable, suffit de le vouloir; il était temps d'en faire la preuve … une fois de plus.

Après une demi-journée de recherche, voici à quoi je suis arrivé:

Test Anything Protocol
Ou: Comment tester n'importe quoi, et même du BASH 🙂

mercredi 28 septembre 2022

Vous saviez pour OpenJDK et Docker™?

Jusqu'à la version 11 de la JDK, il était possible d'utiliser une image "fine" pour empaqueter les applications Java: openjdk:11-jre-slim. Mais depuis, ça se complique car il n'existe plus d'image officielle OpenJDK uniquement centrée sur la JRE.
La conséquence majeure: on se retrouve alors avec une image d'environ 400 MiB pour enrober une API dont le JAR n'en fait que 70; pas cool. On dirait un rapport Charge Utile / Masse Totale digne d'une fusée Arianne. Toute cela parce que:

  • l'image embarque l'ensemble du JDK; incluant le compilateur ainsi qu'un tas d'autres trucs inutiles au runtime
  • le concept de JRE n'existe pas au niveau de l'OpenJDK, c'est un "détail" laissé à la discretion des distributeurs du JDK

J'ai retenu deux solutions[1] à ce problème :

  1. la plus simple: changer d'image de base pour passer sur celle d'une distribution livrant une version JRE (comme docker.io/library/eclipse-temurin:18-jre-alpine par exemple ~170 MiB, ou une autre)
  2. la plus fun: utiliser jdeps et jlink pour fabriquer un JRE custom sur base de l'OpenJDK

On explorera ici la deuxième solution : non pas parce que c'est la plus facile, mais parce que c'est la plus compliquée 🙂 (… et parce que la première, vous la connaissiez sûrement déjà)

mise à jour du 29/03/2024:
Un projet d'exemple est disponible ici montrant un exemple d'usage production ready.

mercredi 23 septembre 2015

socat … so cute!

Avec la puissance de calcul désormais disponible, et depuis peu sur notre poignet, l'accès Internet à haut débit, il m'est difficile d'être patient lorsque, naviguant sur un site lambda, un petit chenillard, ou tout autre forme d'animation, me fait comprendre que ma demande est en cours de traitement et que ..., bien des instants plus tard, rien ne se passe.

Alors j'enrage, "Il fait quoi le serveur? ... Bon il va répondre, ça commence à bien faire ! ... S'il te plait, réponds, et j'arrête de t'embêter après ... Je peux rien faire, je me sens tout seul ! ... OK, c'est décidé, j'achète chez le concurrent!".

Mais au fait, je fait comment déjà sur les applications que je développe ? Eh oui, facile pour moi de voir la paille dans l'œil du voisin, mais que faire alors de la poutre que j'ai dans le mien ?

Voici dans un premier temps de quoi extraire une écharde : un petit banc de test permettant de simuler un ralentissement au sein d'une infrastructure.

dimanche 15 février 2015

B.D.D. en toute sérénité

Le concept de qualité d'un logiciel est un (très) vaste sujet. Sujet que je tente d'appréhender depuis quelques années par la biais le plus simple à mon sens : le logiciel fait-il ce qu'on attend de lui ? Question simple en surface car contrôler le comportement d'un logiciel est de plus en plus simple. Reste le problème de savoir exprimer ce qu'on attend du logiciel, et c'est bien le facteur humain qui pose problème ici : comment extraire un concept d'un individu A pour le transmettre à (au moins) un individu B.

Voici comment concilier la simplicité du contrôle qualité et une façon simple d'en spécifier le comportement.

dimanche 13 octobre 2013

(Ré)Activer Java 6 sur MacOS ... enfin surtout le plugin Applet

Si comme moi vous coder sur Mac OS X et avez la version qui vous permet d'utiliser les dernières version de Java, vous pourriez avoir des difficultés à faire tourner une Applet Java avec Chrome. Voici comment tout remettre en ordre.

dimanche 14 avril 2013

Du brutal local au Ch'ti JUG avec Thymeleaf & CG SceneGraph

? Hein ?

Ch'ti Java User Group

Mercredi 10 avril 2013, le Ch'ti JUG, avec le concours de Capgemini, nous a proposé une double session sous une forme un peu spécial : 2 présentations de type tools in action:

  • l'une sur Thymeleaf, un moteur de template HTML
  • et l'autre sur CG SceneGraph, un moteur 2D JavaScript.
Voici ce qu'il ne fallait pas louper.

DevoxxFR épisode 3 : Le retour du ... vendredi

Mon dernier jour à DevoxxFR 2013

"Voilàaaaaa, c'est fini" comme le disait dans sa chanson Jean-Louis Aubert. Effectivement, Devoxx France a fermé ses portes le 29 mars dernier. Il m'a d'ailleurs fallu tout ce temps pour m'en remettre. Bon OK, j'avais aussi quelques projets très prenant à mener à terme.
Donc voici le compte rendu de ma dernière et non des moindre journée à Devoxx France 2013.