Imaginez, vous êtes en prestation pour une grosse boite et la cellule d'architecture de votre client active tout un tas de plugins Maven sans comprendre comment fonctionnent ces plugins et ni Maven d'une manière générale.
Vous souhaitez donc bloquer l'héritage de la configuration de ces plugins pour ne laisser que les vôtres. Évidemment vous êtes quand même obligé d'hériter du pom parent provenant de la cellule d'architecture pour récupérer quelques properties bien utiles.
Solution :
1) Vous créez un pom abstrait à la racine de votre projet.
2) Dans ce pom vous ajoutez plugin par plugin (ici avec ANT) la désactivation <inherited>false</inherited>:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.2</version>
<inherited>false</inherited>
...
</plugin>
</plugins>
</build>
...
</project>
3) Vous créez un second pom abstrait, enfant du premier et duquel héritera tous vos modules.
Et voilà, les modules n'auront plus connaissance des plugins du super-parent.
Coudifié ! Tout est dans le titre.
Pourquoi les FatJar avec Docker sont un antipattern, sachant qu'ils sont un anti-pattern quoi qu'il arrive ! #CoucouSpringBoot
Une pensée MA-GN-FIQUE #SoJoker
(traduction)
Offrez un billet d'avion à un homme et il volera un jour. Poussez-le hors de l'avion et il volera pour le restant de ses jours...

Ok le site les-moutons-enragés est catégorisé complotisto-sphère-toussa, toutefois vous tombez parfois sur du contenu qui vaut le détour. Ici en une phrase.

L'idée n'est pas mal : vous ajoutez des annotations dans votre code Java et un processeur d'annotations piloté par un plugin Maven va générer pour vous la configuration Kubernetes de votre application. Etant donné que je n'aime pas trop m'embêter avec Kubernetes (je n'arrive plus à apprendre toutes les technos de la terre, surtout les technos ops, elles sont en train de me tuer), j'apprécie d'autant plus cette initiative.
Via Riduidel.
Rendez vos bookmarks Firefox privés ! On l'oubli mais nos habitudes de surf en disent suffisamment long sur nous, les bookmarks fournissent aisément ce genre de méta-data.
Deuxièmement, la description du racisme systémique s'appuie sur une analyse économique du racisme. C'est sa grosse différence d'avoir l'antiracisme fainéant qui pense que le racisme se limite à des problèmes de gentillesse. [...] L'antiracisme sérieux a d'ailleurs eu de longue date des dialogues avec le marxisme et s'est complètement emparé de cette école de pensée.
Au contraire, plus je discute avec des partisans de la théorie du racisme systémique et plus je m'aperçois que la notion de classe sociale est complètement évincée au profit de quelque chose que je ne sais pas vraiment nommer mais dont la définition est l'intersection des points suivants :
- Personnes d'une même couleur (ou variation de couleur).
- Personnes issues d'une même origine ethnique ou nationale.
- Personnes partageant une même religion.
Donc je ne vois pas en quoi "l'antiracisme sérieux (sic) a d'ailleurs eu de longue date des dialogues avec le marxisme" puisqu'il en évince totalement la base, à savoir les notions de classes et de lutte des classes.
Bref, le mot fourre-tout que ces personnes emploient pour éviter le mot "race" c'est "culture" et de facto ce rassemblement uniquement entre "semblables" en excluant d'office tout ceux qui sont "dissemblables" (physiquement hein, parce que le milieu social ne compte pas), bah désolé mais je trouve cela raciste. Alors on parlera de "communautarisme" pour avoir bonne conscience ou encore "d'entre-soi" à l'image de ce que font les bourgeois mais sans se rendre compte du paradoxe d'abandonner le vivre-ensemble et intrinsèquement le "lutter ensemble" pour le "on se débrouille très bien entre-nous, entre racisés et sans vous les non-racisés".
N.B : je réponds ici uniquement au commentaire de Riff, je n'ai pas encore lu le thread Twitter qu'il propose.
Pour toi @Lenny ! Nous parlions de trucs & astuces sur l'ergonomie des interfaces, l'article est très succinct mais c'est toujours bon de lire et relire ce genre de choses jusqu'à ce qu'elles deviennent naturelles et évidentes.
Vous trouverez l'article complet de Google ici !
Un article très intéressant sur la notion de corruption dans l'informatique et son parallèle avec la société civile et la biologie.
Via Riduidel.
Bon en général je ne fais pas ça mais c'est trop incroyable. Je dois me taper le refacto d'une classe écrite par une trèèèès grosse boite de service pour mon client et qui calcule des dates spéciales en Java, dans le cas que je corrige, il s'agit de Pâques...
Je ne vous mets qu'un extrait du code (le reste est tout aussi incroyable mais je ne veux pas de problème de copyreich) :
private static GregorianCalendar calculJourPaques(int pYear) {
GregorianCalendar vPaques = new GregorianCalendar();
int vA = pYear % 19;
int vB = pYear / 100;
int vC = pYear % 100;
int vD = vB / 4;
int vE = vB % 4;
int vF = (vB + 8) / 25;
int vG = (vB - vF + 1) / 3;
int vH = (19 * vA + vB - vD - vG + 15) % 30;
int vI = vC / 4;
int vK = vC % 4;
int vL = (32 + 2 * vE + 2 * vI - vH - vK) % 7;
int vM = (vA + 11 * vH + 22 * vL) / 451;
int vN = (vH + vL - 7 * vM + 114) / 31;
int vP = (vH + vL - 7 * vM + 114) % 31;
vPaques.set(pYear, vN - 1, vP + 1);
vPaques.add(5, 1);
return vPaques;
}
Alors oui, le code est en français, oui les variables sont préfixées par un "p" pour dire qu'elles sont paramètres de la méthode et par un "v" pour indiquer qu'elles sont de simples variables dans cette méthode...
Sinon c'est un "a" (pour attribut) ou "f" (pour field) mais un attribut c'est aussi parfois un "c"... Bah oui vous comprenez, certains développeurs avaient de gros doigts donc ils ont appuyé à côté du "f" sur la touche "c"... Et d'autres ont simplement reproduit cette erreur pour que le préfix "c" corresponde aux attributs. #Enjoy
J'ai déjà patché du code compliqué, du code de merde, du code inutile, du code ultra-théorique à base de formules complexes mais je n'avais jamais dû patcher du code dont je ne peux décrire l'origine !
P.S : vous remarquerez que l'algorithme est juste une prouesse de complexité hein (T_T). J'ai déjà pu identifier que l'on parlait d'année bissextile et heureusement ! Vive les TU (que je vais devoir créer parce que trop marrant sinon).
Edit : l’algorithme est celui de Butcher-Meeus.
Un article remonté par Philou qui explique clairement comment fonctionne l'option TCPKeepAlive de SSH avec Ansible et comment l'utiliser.
Merci

La reconnaissance faciale débarque en France et vous n’y échapperez pas - Médias / Net - Télérama.fr
À votre avis, quelle était l'étape qui allait juste après la vidéo surveillance de masse généralisée ? Un indice, ça s'appuie sur l'IA, ça traite une quantité pharaonique d'images et ça pourrait s'appeler le contrôle de surveillance individuel généralisé et total ! #Orwell
Autre question, à quoi pourrait bien servir un tel système à un état, lorsqu'il est utilisé à 99% sur des populations civiles, innocentes et sans casier judiciaire ni intension de nuir ? Un indice Huxley et Orwell nous l'on déjà expliqués : au contrôle politique, au contrôle des comportements et au contrôle des pensées PER-MA-NENTS.
Mais bon, il paraît que la Chine a une économie florissante donc pourquoi ne pas faire comme elle hein ? HEIN ?
Puisse les dépolitisés ayant voté Macron être atteints les premiers par une telle horreur.
Analyse très pertinente des deux mouvements. À revoir une seconde fois.
M'a faite sourire !

Dans la liste, je cite :
Perl, Haskell, Ruby, Objective-C et finalement R
J'ajouterai Java d'ici à 20 ans et Scala d'ici à 15, les deux remplacés par Kotlin en grande partie et Clojure/Elixir dans une autre mesure ; et enfin PHP d'ici à 15 ans remplacé par Python et TypeScript. Voici un graphique tiré de l'article :
Question... À quand JavaScript ?
Comment paramétrer parfaitement votre equalizer / mixer. C'est fou toute la différence que procure cette configuration !

Un retour d'expérience sur la complexité qu'implique les micro-services.
Une comparaison avancée du mode natif vs jvm de Quarkus. Le benchmark est intéressant.