Edit : apparemment la danse est une référence à la Caramella Girls Dance... #CultureOtakuSur20
Edit 2 : je ne sais pas quoi penser entre le fait que j'adore ce que fait l'humanité d'internet et que notre génie produit ce genre de choses.
Au travers d'une vidéo Youtube que je regardais avec @Kysofer, nous apprenions que Zero Two - qui est la FMC de l'anime Darling in the FranXX - détient le record d'être la Waifu la plus recherchée de tous les temps. Et bien en voyant ce genre de "prouesses" je me dis que les choses ne sont pas prêtes de changer !
Tout à fait d'accord !
Et j'ajouterai que la novlangue est en train de faire passer un discours très dangereux qui invisibilise la cause des causes, à savoir qu'avant c'était l'actionnaire, détenteur d'une propriétaire lucrative, qui exploitait les travailleurs en s'accaparant la richesse produite, à un discours où c'est l'homme blanc qui exploite tous les "non-blancs" et qui s'accapare la richesse produite (remplacez "homme blanc" par "juif" et comparez avec les slogans d'une autre époque).
Du coup, cela implique qu'il n'existe pas de grands propriétaires lucratifs milliardaires aux Emirats Arabes Unis, au Qatar et d'une manière générale au Maghreb, en Asie, en Amérique latine ou Afrique (ce qui est évidemment faux) et que ceux-ci sont blanchis pardon lavés de tout crime, voire vivent imbibés d'une bonté d'âme que l'Abbé Pierre envierait parce que... Bah juste parce que en fait.
Soft de synchro de folder pour Linux/Windows/Mac.
Merci à @Sebsauvage ou l'histoire du shaarliste qui trouve des applis incroyables sorties de nulle part.
Au début je vois cette image sur 9gag :

Je me dis, ça paraît trop gros pour être vrai, alors hop une petite recherche et en fait... Non c'est la vérité nous rapporte le Times. Le système de soins des USA engendre une facture si grosse qu'elle tuera quoi qu'il arrive son patient, soit de maladie, soit à la tâche pour la payer.
Les USA ne forment pas un pays puisque le système n'a pas les institutions ni les infrastructures permettant de faire société, le B.A.BA étant la santé et l'éducation. C'est un pays du tiers monde qui prétend sa richesse grâce au crédit, voie déliquescente qu'emprunte la France en suivant religieusement les GOPÉ 2020-2021.

J'ai bidouillé mvnd cette semaine et je l'ai testé sur un projet de 29 modules écrits en Kotlin (il s'agit du projet commons de Lenny, Gejel et Kysofer pour ceux qui savent).
Résultats :
- Le build incrémental sans clean est passé de 4 min 20 à 1 min 53.
- Le build incrémental avec clean est passé de 4 min 43 à 2 min 05.
- Le build prod (optimisant le code + vérifs) sans clean est passé de 4 min 56 à 2 min 21.
- Le build prod (optimisant le code + vérifs) avec clean est passé de 4 min 58 à 2 min 22.
- L'analyse statique du code (SCA + SAST + LINTER) est passée de 5 min 11 à 2 min 17.
Conclusion simple, Maven Daemon ça marche !
Actuellement l'outil n'embarque pas encore de LSP (Language Server Page) incluant recompilation ciblée + exécution partielle des TU via graphe des dépendances, mais quand ce sera le cas, les temps de build devraient être divisés par 2 ou 3 ce qui correspondrait aux temps de build de Gradle sans avoir besoin d'écrire du code (via DSL Groovy ou Kotlin) pour compiler du code, pratique qui je l'affirme est une hérésie que les devops d'antant avaient presque réussi à tuer.
Si Charles Sannat dit vrai alors Donald Trump peut encore remporter l'élection états-unienne pour cause de non-constitutionnalité des votes par correspondances dans au moins quatre états ! (o_Ô)
Apparemment les votes par correspondance ont été mis en place par le pouvoir exécutif (c-à-d. le gouverneur de ces états) or seul le pouvoir législatif (c-à-d. parlements/chambre des représentants) a le droit de changer ce dispositif.
Bref, si la non-constitutionnalité est avérée par la Cours Suprême, alors deux cas de figure sont possibles :
- Soit les votes par correspondance sont annulés => et Trump gagne.
- Soit les voix des grands électeurs de ces états sont annulés => et Trump gagne.
Bref, je n'imagine même pas la pression qui doit peser sur les juges... En attendant, popcorn mes amis \(^__^)/
J'ai été très critique sur le code proposé par Collin Damon car en voulant montrer ce qu'est la OOP le seul exemple qu'il donne d'API à se fabriquer est entièrement statique.
Je reprends donc son exemple et je vais tenter de le rendre objet :
public final class Assert {
private Assert() {}
public static void notNull(String fieldName, Object input) {
if (input == null) {
throw MissingMandatoryValueException.forNullValue(fieldName);
}
}
public static void notBlank(String fieldName, String input) {
if (input == null) {
throw MissingMandatoryValueException.forNullValue(fieldName);
}
if (input.isBlank()) {
throw MissingMandatoryValueException.forBlankValue(fieldName);
}
}
public static StringAsserter field(String fieldName, String value) {
return new StringAsserter(fieldName, value);
}
public static class StringAsserter {
private final String fieldName;
private final String value;
private StringAsserter(String fieldName, String value) {
this.fieldName = fieldName;
this.value = value;
}
public StringAsserter notBlank() {
Assert.notBlank(fieldName, value);
return this;
}
public StringAsserter maxLength(int maxLength) {
if (value != null && value.length() > maxLength) {
throw StringSizeExceededException
.builder()
.field(fieldName)
.currentLength(value.length())
.maxLength(maxLength).build();
}
return this;
}
}
}
Étape 1 - Créer une interface qui va exprimer ce que l'on compte faire :
public interface Assertion {
boolean isValid();
}
Étape 2 - Fournir une implémentation pour chaque use case :
Cas de la chaîne de caractères null :
/**
* Cette classe prend un `Object` pour rendre générique le test de nullité.
*/
public final class NotNull implements Assertion {
private final Object value;
public NotNull(Object value) {
this.value = value;
}
@Override
public boolean isValid() {
return this.value != null;
}
}
Cas de la chaîne de caractères vide :
/**
* Il faudra fournir une implémentation de NotEmpty par type testé,
* ce qui peut sembler lourd mais qui a du sens puisque la notion de
* nullité peut changer en fonction du type. Par exemple, une String
* vide n'est pas la même chose qu'un tableau vide.
*/
public final class NotEmpty implements Assertion {
private final String value;
public NotEmpty(String value) {
this.value = value;
}
@Override
public boolean isValid() {
return !this.value.isEmpty();
}
}
Étape 3 - Ajout de la composition
L'assertion composée est elle aussi une implémentation de l'interface Assertion et ne prend que des Assertion en paramètre.
public final class Assertions implements Assertion {
private final Assertion[] assertions;
public Assertions(Assertion... assertions) {
this.assertions = assertions;
}
@Override
public boolean isValid() {
return Arrays.asList(this.assertions).stream().allMatch {
(Assertion it) -> is.isValid();
}
}
}
Étape 4 - Un exemple d'utilisation
public class Main {
public static void main(String... args) {
String toto = "titi";
new Assertions(
new NotNull(toto),
new NotEmpty(toto)
).isValid();
}
}
Dans cet exemple, aucun calcul n'est effectué dans le constructeur et tous les déclenchements sont joués uniquement au moment de l'invocation de la méthode isValid() (on est donc en lazy evaluation), chaque objet possède un à état, tous les attributs sont immutables et les classes aussi (car final), il y a zéro héritage et uniquement de la composition, tout a été codé en interface-first pour s'abstraire des implémentations, enfin les classes étant rikiki, elles sont ultra-simples à tester.
Edit : en Kotlin le mot-clef new disparait car le langage assume qu'un constructeur soit une fonction static à scope global (ce qui est le cas dans le bytecode de Java), du coup la chaîne d'instanciations apparaît comme une composition de fonctions (au sens f o g(x) ou f(g(x))) sans avoir besoin de passer par une fluent API et une monade.
Ce tweet me pose problème parce qu'il vise à susciter de l'émoi via un sous-texte que l'on peut caricaturer de la façon suivante : la LREM c'est le camp du mâââle (ce qui est vrai d'une manière générale, en tout cas de mon point de vue) et nous nous ne pensons pas pareil et puis nous, nous sommes dans le camp du bîîîen...
La question de la trêve hivernale - sur le sujet des expulsions locatives - est un problème complexe qu'on ne peut simplement synthétiser par : on la garde ou on la retire. Et une fois de plus, la LREM s'est plantée à fond ; car les députés LREM font toujours primer leur idéologie néo-libérale et capitaliste sur le réel et le niveau de vie de leurs citoyens mais bon, tant qu'il y a des gens pour les élire hein...
Je m'explique, prenons deux cas de figures :
-
Un ultra-riche propriétaire exclusif d'une SCI (Société Civile Immobilière) fondée sur un patrimoine d'une centaine d'appartements où 95 % d'entre-eux constituent un actif libéré de toute créance ou hypothèque.
-
Un jeune couple vivant en province avec un revenu un peu au-dessus de la moyenne, parents de deux enfants, ayant pris le risque avant la naissance de leurs petits d'acheter deux appartements, un pour y vivre et un pour louer afin d'assurer leur retraite pour le jour où la répartition sera morte et enterrée ; la location payant une partie du crédit, le reste étant à leur charge.
Dans le premier cas, même si 50% du parc immobilier du gérant de la SCI venait à lui faire défaut, il ne serait pas à la rue => le maintient de la trêve hivernale se justifie pour lui. Au pire du pire, et en s'appuyant sur une morale utilitariste, alors mieux vaut une seule personne ultra-riche à la rue que 30 familles de pauvres avec leurs enfants.
Dans le second cas, si la location faisait défaut, c'est le propriétaire qui va à la rue, sauf qu'il s'agit aussi d'une famille et au vue de l'endettement les conséquences peuvent être longues et douloureuses. À cet instant, l'arbitrage doit se faire au niveau des familles : laquelle "pèse" le plus, ou dit autrement laquelle est à prioriser par rapport à l'autre => le maintient de la trêve hivernale est à arbitrer.
Pour convaincre les aficionados de la trêve hivernale, imaginez maintenant que l'un des époux du couple propriétaire se retrouve paraplégique parce que renversé par un chauffard ? Que devons-nous lui dire à lui qui ne pourra plus exercer son job et où cette location se transforme en bien plus qu'un simple moyen de survie ? Que dire si le locataire qui a fait défaut a agressé un couple d'homos dans la rue parce qu'il ne supportait pas ça et que la justice préempte sur son salaire des dommages et intérêts qui auraient dû être son loyer ? Est-ce à la petite famille, certe propriétaire, de payer pour les crimes d'un fanatique ?
Car oui, tous les propriétaires ne sont pas riches, mais cela n'implique pas non plus qu'ils soient pauvres et tous les locataires ne sont pas honnêtes, mais cela n'implique pas non plus qu'ils soient malhonnêtes.
Et c'est ça mon problème avec la règle intransigeante de la trêve hivernale, c'est que façon "dictature communiste", elle considère que toutes les situations sont équivalentes et décide de manière manichéenne ce qui est bien ou mal alors que juste non, la vie ne fonctionne pas comme ça.
Bref, maintenir ou retirer la trêve hivernale n'est pas la bonne question à se poser car du point de vue des deux camps cette dernière n'est pas adaptée. D'ailleurs le fait qu'elle soit très mal adaptée aux petits propriétaires offre sur un plateau d'argent les arguments utiles à l'oligarchie pour la faire retirer, ce que s'est empressée de voter la LREM toujours à la solde du Grand Capital...
Les bonnes questions à se poser étaient : comment mieux gérer les cas de figure ? Comment accélérer les décisions de justices pour qu'il y ait des arbitrages qui ne prennent pas 2 à 3 ans ? Bref, fournir une réponse pragmatique et non idéologique à un problème humain.
Comme le dit l'image, pas plus de 6 à la maison, respect des distances sociales, port du masque obligatoire, limitation des déplacements et bientôt un couvre-feu... Mais quand il faut aller taffer pour les grands patronat et actionnariat, alors là il n'y a plus aucune contrainte.

S'il vous plaît, juste n'élisez plus un banquier d'affaire la prochaine fois, hein... Ses intérêts ne peuvent pas être les mêmes que les nôtres, nous les prolos...
Il y a quelques années, lorsque je passais un entretien dans une grosse banque pour intégrer dans une équipe de coachs crafts, deux coachs m'avaient demandé comment j'assurais ma veille technologique. J'avais alors énuméré tout un tas de sites web dont développez.com et là... Je les ai vu grincer des dents mais genre fort fort fort...
Aujourd'hui, je vois un article qui s'intitule : Tutoriel pour apprendre à développer des objets Java et pas simplement des classes de données et dès le second écran je peux lire ceci :
public final class Assert {
private Assert() {}
public static void notNull(String fieldName, Object input) {
if (input == null) {
throw MissingMandatoryValueException.forNullValue(fieldName);
}
}
public static void notBlank(String fieldName, String input) {
if (input == null) {
throw MissingMandatoryValueException.forNullValue(fieldName);
}
if (input.isBlank()) {
throw MissingMandatoryValueException.forBlankValue(fieldName);
}
}
public static StringAsserter field(String fieldName, String value) {
return new StringAsserter(fieldName, value);
}
public static class StringAsserter {
private final String fieldName;
private final String value;
private StringAsserter(String fieldName, String value) {
this.fieldName = fieldName;
this.value = value;
}
public StringAsserter notBlank() {
Assert.notBlank(fieldName, value);
return this;
}
public StringAsserter maxLength(int maxLength) {
if (value != null && value.length() > maxLength) {
throw StringSizeExceededException
.builder()
.field(fieldName)
.currentLength(value.length())
.maxLength(maxLength).build();
}
return this;
}
}
}
Que des méthodes statiques, un constructeur privé pour bien empêcher les instances, aucun état représenté... Donc sans critiquer l'auteur et son envie de bien faire (car il a le mérite d'avoir écrit quelque chose), cet article rappelle effectivement des principes de l'OOP mais sans jamais les comprendre ni même en illustrer ne serait-ce qu'un seul exemple valable.
L'objet est aux antipodes du static, si vous avez du code statique c'est foncièrement que vous ne codez pas en objet. Et là, le seul exemple de l'article est basé sur ça... Bref, article à mettre à la corbeille, navrée pour son auteur.
Incroyable, dès que j'ai un problème @Philou arrive avec une solution. Ici Maven Daemon qui propose ce que propose Gradle mais avec Maven (en rapport à mon post précédent).
Je teste ça dans la journée :D
Vous savez pourquoi Excel ou LibreOffice Calc c'est pourri et que ça ne devrait jamais être utilisé dans un cadre professionnel qui intervient après l'étape du PoC ?
Parce qu'on ne peut pas écrire de tests/TU avec une feuille de calcul !
Ce faisant il n'y a aucun moyen de prouver que les résultats obtenus soient justes. #AmateurismeSur20
D'où toutes ces erreurs récurrentes qui popent tous les mois dans les grands merdia comme le dernier qui de mémoire disant quelque chose du type : la feuille de calcul des britanniques ne gérait pas assez de lignes/colonnes pour encaisser la quantité de données nécessaires aux statistiques du COVID, du coup les chiffres sur lesquels le gouvernement s'appuyait étaient faux et ont eu une conséquence sur la gestion de la crise sanitaire....
Bref, il faut abandonner Excel et les tableurs d'une manière générale dès qu'ils sont utilisés après la phase d'expérimentation/idéation.
Ça doit faire 4-5 ans que je me remets régulièrement à Gradle dans l'espoir de trouver une solution à un problème pourtant trivial : comment, avec Gradle, mutualiser un processus de build qui doit s'appliquer sur plusieurs projets qui n'ont rien à voir ?
Gradle confond la notion de projets et de modules, donc je dois clarifier ces deux définitions pour la suite :
- Un module, c'est ce qui va produire un jar au sein de votre projet Git et votre projet est composé de modules.
- Donc yn projet, c'est un répo Git et qui en général va produire une application et les modules la composent.
Dans toutes les docs de Gradle, un projet est un module, donc pas besoin d'héritage puisque le build.gradle à la racine va injecter sa conf dans les build.gradle des modules positionnés dans les sous-répertoires.
Sauf que ce genre de bidouilles, ça marche bien dans une startup ne concevant qu'un seul produit, mais imaginez que vous deviez proposer un socle de build gérant Java, Kotlin, Groovy et Scala et qui soit utilisé par 2000 personnes, sur plus de 100 applications et 200 libs, comment faites-vous avec Gradle ?
Permettez-moi de détailler, le processus de build standard inclut :
- La compilation en mode dev (sans optim) et en mode prod (avec optim).
- Les analyses de sécurité.
- Les analyses de code.
- La signature des jars.
- La production des jars des docs et des sources.
- Les analyses des dépendances.
- Etc.
Tout ce processus qui est agnostique du code lui-même DOIT être factorisé pour devenir un standard de l'entreprise et se pose en tant que quality-gate/build-breaker en cas de manquement.
Avec Maven facile, il suffit que le pom parent de votre projet hérite du pom sachant faire tout ça, mais comment faire avec Gradle ? Ce build.gradle "commun" ne peut pas être hérité car Gradle ne permet pas l'héritage et il ne peut pas lancer lui-même le build des 300 répos dont les produits ont des cycles de vie totalement indépendants.
C'est une vraie question car j'aimerai vraiment abandonner Maven (puisqu'il est beaucoup trop lent) au profit de Gradle, mais sans la capacité de mutualiser le processus de build entre deux projets indépendants, cela fait de Gradle un outil pour "amateurs", or sa percée sur le marché me pousse à croire qu'il doit bien exister une astuce mais que je n'ai encore jamais vue. Bref si quelqu'un a l'info...
@Animal je ne sais pas si tu as vu, mais j'avais fait des descripteurs pour produire des packages tar.gz normalisés dans nos pom-bom. Voilà.
Ohhh 😲 mon 😰 dieu 😱 ?! #WTF
Je ne m'attendais pas DU TOUT à cette fin de underzap. J'avais vaguement entendu parler de cette loi visant à interdir de filmer la police mais là ! 🙊 #Vomis
Rappelons-nous que TOUTES les dictactures européennes ont pris le pouvoir légalement dans notre histoire (et a priori ça se vérifie avec presque toutes les dictactures de l'histoire). Le coup du grand méchant armé qui fait son putsch relève du fantasme.
Les gens qui ont voté Macron ont voté pour l'ordre et la discipline, ils n'avaient juste pas compris qu'il s'agirait de l'ordre décidé par un autre et que eux constitueraient le corp des disciplinés. Ne réïtérez pas cette erreur en 2022 par pitié !
Comment résister encore un an et surtout comment rendre une machine arrière possible ?
@Animal merci pour le lien.
@Autres vidéo à faire tourner s'il vous plaît et pensez à appeler le cabinet de votre député + mairie pour leur en parler. Sans pression sur les élus locaux, pas de changement possible.
"[...] et ceci s'appelle l'état de droit."
Pas tout à fait, l'état de droit est un concept allemand qui consite à dire qu'il existe un conseil de "sages" qui vont déterminer ensemble si une loi est conforme ou non à des principes, à une constitution ou à des traités (comme ceux de l'UE comme le TUE et le TFUE). Si la loi ne l'est pas, elle est rejetée. Si c'est un referendum qui ne l'est pas, il est rejeté #LePouvoirAuPeupleParaitIl
Typiquement, c'est le cas en France avec les pouvoir détenus par le Conseil Constitutionnel. L'état de droit, c'est de dire qu'il y a un juge de la loi, au-dessus de la volonté démocratique du peuple lui-même.
Rappel : le Sénat et le Parlement sont des organes anti-démocratiques par essence, donc qu'ils soient soumis à un Conseil Constitutionnel ne me dérange pas le cas échéant.
Je suis profondement démocrate, je ne crois pas en la tyrannie des foules, en tout cas telle que celle décrite par Tocqueville, et en conséquence, je suis profondément contre l'état de droit.
A contrario je suis favorable à la modification des lois de manière démocratique par l'unique voie du referendum via contrôle, organisation et mise en oeuvre par des Ecclesia dont les membres sont tirés au sort modulo certains filtres (âge légal, casier vierge, absence de problèmes psycho-pathologiques, être volontaire, etc).
Par contre, c'est extrêmement transformateur de la société civile et ça pose beaucoup d'autres questions.
Mais cet article est excellent !
Merci à @Sebsauvage pour sa doc et @Shikiryu pour le lien.
Si j''ai bien compris, toute la sécurité du DRM Widevine repose sur le fait que la clef privée permettant de déchiffrer les flux audio/vidéo ne soit pas volée côté client lorsqu'elle est envoyée au navigateur...
Redisons-le nous deux trois fois en décomposant bien les étapes afin d'identifier ce qui clocherait :
- Widevine envoie une clef privée aux navigateurs...
- Widevine envoie une clef privée...
- Une clef privée.
Si la clef qui doit restée privée est communiquée à toute la terre entière c'est qu'elle n'est plus privée bon-sang ! Je compte regarder dans le détail ce qu'il en retourne mais si c'est bien ce que je pense, alors le fait que Google n'emploierait que "les meilleurs des meilleurs des meilleurs Monsieur... Avec mention Monsieur" ne serait bel et bien qu'un mythe !
La petite citation qui va bien :
En plus de cette demande, nous avons déposé une demande distincte de retrait des données sensibles de ce fichier : /widevine-l3-decryptor, parce qu’il contient la clé privée secrète Widevine RSA, qui a été extraite du CDM de Widevine et peut être utilisée dans d'autres technologies de contournement.
@Neko ton post m'a vraiment faite tressaillir. C'est vrai que je fais partie des privilégiés puisque je suis travailleuse indépendante en IT, principalement en finance de marché (donc ce n'est pas vraiment les clients ni le salaire qui me font défaut par rapport à la majorité des gens) et je m'étais arrêtée au décompte "officiel" de 3 millions de chômeurs (mais dans les 2/3 fois plus lorsque l'on débunk les chiffres du gouvernement).
La France de 2020 avec ses 67 millions de citoyens aurait plus de 10 millions de pauvres. Ça fait 15% de la population ! Et les critères sont vraiment très bas pour être considéré comme pauvre !!
La France est un pays du tiers-monde qui vit à crédit ! Comme les USA en fait :( Et pourquoi cette masse incroyable de personnes continue-telle de soutenir des politiques contraires à ses intérêts ? De privilégier la néo-libéralisation à outrance et le dumping sociale institutionnalisé par l'UE ? Vraiment je ne comprends pas.