Cette citation résume tout :
The beauty of programming language design is not building the most complex edifice like Scala or making the language unacceptably crippled like Go - but giving the programmer the ability to represent complex ideas elegantly and safely. Rust really shines in that regard.
Merci à Riduidel pour le lien.
Beau témoignage (un peu ensanglanté attention aux personnes très sensibles), d'un pompier qui vient de se faire tirer dessus a bout portant par un CRS alors qu'il portait assistance à quelqu'un durant une manifestation des Gilets Jaunes. Juste après il témoigne dans la rue, plaie ouverte face à la caméra.
Cela va faire un an et rien n'a changé, la police est toujours le bras armé de la mafia au pouvoir. Mais rappelez-vous, la vraie violence provient des casseurs hein...
Edit : vous remarquerez l'aspect "non-létal" et "quasi-sans-danger" des flashballs. Dites-vous bien que le pompier porte un pantalon de pompiers et que ces derniers sont renforcés pour résister aux chocs et aux chaleurs intenses...
J'étais complètement passée à côté de cela ! L'API time a été repensée en Kotlin pour éviter la confusion de passer une durée en Long et de ne pas savoir s'il s'agit de secondes, de millisecondes, de nanosecondes, etc.
L'idée est d'utiliser les inline-classes (ie. l'enrichissement d'un type existant par un sous-type) et c'est très astucieux regardez :
import kotlinx.coroutines.delay
import kotlin.time.*
@ExperimentalTime
suspend fun greetAfterTimeout(duration: Duration) {
delay(duration.toLongMilliseconds())
println("Hi!")
}
@UseExperimental(ExperimentalTime::class)
suspend fun main() {
greetAfterTimeout(100.milliseconds)
greetAfterTimeout(1.seconds)
}
Les Integer contiennent des classes internes qui vont retourner un objet de type Duration et contenant la valeur de l'Integer. De cette manière nous avons la valeur et son type en une seule fois.
Ce langage est tellement réfléchi c'est incroyable.
Une réponse de @Philou sur ce post où je parle des fatjar, de Docker et de leur inefficacité.
Très intéressant.
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.
