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.

vendredi 29 mars 2013

jeudi 28 mars 2013

DevoxxFR épisode 1 : un nouvel espoir

Mon premier jour à DevoxxFR 2013

Pour la deuxième année consécutive, la conférence Devoxx France se tient à Paris jusque la fin de cette semaine. Je suis parmi les quelques centaines de chanceux à pouvoir y assister et voici un compte-rendu (presque) à chaud de cette première journée.

vendredi 16 novembre 2012

Qui veux transcoder du MP3 en masse?

Utilisateur d'un mobile Android, j'ai souhaité pouvoir y écouter des morceaux précédemment encodés en WMA (merci Windows Media Player!), impossible avec le lecteur par défaut d'Android, impossible avec WinAmp, seul Mobo Player ne fait pas la fine bouche.

Bien sûr, j'aurai pu repartir du CD original qui se trouve ... je ne sais plus où, j'écoute constamment les formats numériques. En plus, il y a quantité d'album et ça me prendrai un temps précieux.

Voici un billet indiquant comment effectuer cette opération sous Mac OSX avec un logiciel gratuit : Audion 3. Ne soyez pas effrayés de voir un serial en clair, il s'agit de la clef fournit gratuitement sur le site officiel.

Enjoy!

vendredi 21 septembre 2012

Ceylon & Dart au Ch'ti JUG

Where is Bryan?

Ch'ti Java User Group

Mercredi 18 septembre 2012, l'équipe du Ch'it JUG nous à proposé une session "Langues Étrangères" avec une présentation de Dart et Ceylon, deux nouveaux langages émergents, orientés objet et résolument dédié au développement productif.

Une très bonne session, corrigeant mes préjugés sur Dart et confortant mon intérêt pour Ceylon, en voici une mini syntèse (ben oui, fallait êt' là :P)

Command line search replace on Mac OS X

The following command

sed -i '.original' 's/old_link/new_link/g' *
create 2 backup files like:
  • File1.txt.original
  • File2.cfg.original

You can use the following command to ignore backup file

sed -i '' 's/old_link/new_link/g' *
and with find :
find /paht/to/directory -exec sed -i '' 's/old_link/new_link/g' {} \;

Enjoy!

lundi 17 septembre 2012

The Pragmatic Programmer: from journey man to master

Il Faut Lire!

The Pragmatic Programmer : from journey man to master
Voici un livre plein de bonnes pratiques pour les développeurs ayant envie de passer à la vitesse supérieure. Voici, selon moi, pourquoi vous le trouverez aussi intéressant.

dimanche 16 septembre 2012

The Psychology Of Computer Programming

Il Faut Lire!

The Psychology Of Computer Programming de Gerald M. Weinberger
Cette année, j'ai pris une résolution : commencé à lire. Il était temps me direz vous, mais ceci est un autre sujet, pour ce qui nous concerne maintenant, je viens juste de terminé un livre dont j'ai beaucoup entendu parlé et dont le sujet m'a fortement intrigué : Psychology Of Computer Programming de Gerald M. Weinberger.
C'est un livre que je recommande fortement à tous ceux qui sont en relation direct ou indirecte avec l'industrie du logiciel et voici pourquoi.

dimanche 22 juillet 2012

OSX et JVM

Voici un excellent article sur l'utilisation de Java sur des machines OSX, notamment avec plusieurs environnements Java.

mardi 12 juin 2012

Driver d'impression Dell 1720dn sous Ubuntu GNU/Linux Precise

L'impression sous Linux n'est pas chose facile. Voici un tuto pour installer une imprimante Dell 1720 dn (imprimante laser noir réseau) à partir des drivers Windows.
Le tuto utilise le CD d'installation mais je suis parti du paquet téléchargeable sur le site Internet de Dell.

samedi 9 juin 2012

Un peu de vocabulaire dans votre IDE ?

Les IDE d'aujourd'hui nous permettent de faire un minimum d'erreur dans l'écriture de logiciel. Depuis quelques versions, Eclipse met à disposition un correcteur d'orthographe que je suis le premier à désactivé. En effet, jusque maintenant je n'avais pas trouvé la possibilité d'ajouter un dictionnaire dans ma langue maternelle. Finit maintenant les erreurs de français, voici une procédure pour ajouter un dictionnaire lorsque l'on utilise un ordinateur fonctionnant avec une distribution GNU/Linux, Ubuntu Precise dans mon cas.

dimanche 3 juin 2012

Devoxx France 2012 : I Did It !

Les 18, 19 et 20 avril 2012 s'est tenue à Paris la première édition de l'événement Devoxx en France, voici ce que j'ai vécu.

Code retreat #4 @Lille le 23 juin 2012 chez Norsys

Le 23 juin prochain se tiendra la quatrième édition du code retreat de Lille organisé par l'association nord-agile avec la participation de la société Norsys.
Pour les inscriptions, c'est par ici

-Legacy-CodeRetreat@Lille#3

Le 12 mai 2012, une session de code retreat s'est déroulée dans les locaux de la société ProxiAD, organisé par Jérémie Hattat (@jhattat) et avec la participation de Adrian Bolboaca (@adibolb), c'était cool.