C'est moi ou https://river.libox.fr/ est devenue la river personnelle de Sebsauvage ? Toujours des problèmes suite à la panne d'il y a deux semaines ?
Je résume l'idée :
1) "Will" s'utilise pour les prédictions (il va pleuvoir), l'expression d'une caractéristique (le fer va rouiller sous la pluie) et la volonté (je ne ferai pas ça).
2) "Shall" s'utilise pour exprimer une contrainte (vous ne passerez pas) ou une suggestion (est-ce que tu veux de l'aide).
Prenons deux exemples :
-
Will we see each other again ?
- Traduction : Nous reverrons-nous ?
- Sens : c'est une simple question.
-
Shall we see each other again ?
- Traduction : Est-ce qu'on pourrait se revoir tous les deux ?
- Sens : j'aimerai que nous nous revoyons, est-ce que ce serait possible ? (c'est là qu'émerge la notion de suggestion/contrainte)
En espérant que ça puisse aider quelqu'un.
Alors ce tutoriel est très bien pour ceux qui souhaitent apprendre la syntaxe du langage par contre en aucun cas il ne correspond au titre de l'e-book dont il est un chapitre : "Introduction au langage Kotlin, découvrir les notions avancées de la programmation orientée objet".
En rien l'article ne parle d'OOP et de ses concepts avancés, bien au contraire il met en avant les aspects du langage qui poussent à la programmation procédurale réalisée à partir de structures de données façon C/VB/PL-SQL et je m'explique.
Lorsque vous créez une classe avec des getters et des setters, vous ne faites ni plus ni moins que de créer une structure avec des attributs public déguisés en attributs privés. Fondamentalement, même si c'est au travers d'une méthode, vous permettez à n'importe quelle autre classe de violer l'aspect le plus fondamental de l'OOP : l'encapsulation (je vous invite à suivre les tutos de @Kysofer sur le sujet, c'est un grand gourou du domaine).
D'ailleurs, et pour reprendre l'un de ses cours, l'encapsulation c'est deux composantes :
- Personne d'autre que la classe ne peut connaître (et encore moins modifier) les données qu'elle contient.
- Personne d'autre que la classe ne peut connaître le type réel des données qu'elle contient.
Avec un exemple simple, si j'ai cette horreur (du point de vue de l'OOP) :
val name:String = person.getName()`
person.setName("my-name")`
Alors cela revient exactement au même que d'écrire :
val name:String = person.name`
person.name = "my-name"
Cela est tellement la même chose que Kotlin l'assume et génère à la compilation, à partir des getters/setters, le code du second exemple pour permettre l'accès en public aux attributs.
Mais là n'est pas le problème, en effet le vrai problème est que si je venais à changer le type interne de name pour le passer d'une String à un nouveau type, par exemple appelé Name, alors il faudra que je modifie TOUS LES APPELS EFFECTUÉS à getName() car les codes appelant s'attendent à une String, rien n'est encapsulé, rien n'est masqué, a contrario toute la représentation interne fuite à travers les getters/setters et les gens appellent cela innocemment de l'OOP alors que ça n'en est pas du tout : ce sont des struct déguisées en objets.
La solution consiste à n'utiliser que des interfaces car par essence, une interface ne peut pas avoir d'attributs. Alors certes les dérives depuis Java 8 et certains anti-patterns de la programmation fonctionnelle (du point de vue de l'OOP toujours) ont eu tendance à modifier le langage mais dans la pratique, c'est vraiment une très mauvaise idée de mettre des attributs/constantes dans une interface.
Je sais que @Kysofer et @Lenny réfléchissaient à faire des tutos sur l'OOP sur Youtube/PeerTube, j'espère que ce post va les motiver à passer à l'acte. D'ailleurs je partagerai toutes vos vidéos mes chéris :) #Waiting
Edit : je complète la liste:
J'ai fait le test et le numéro de TVA de mon entreprise n'est pas le bon. Du coup il faut d'abord que je m'assure que les données soient bien à jour côté greffe avant de remonter un problème côté service.
Pour tout le reste : c'est top ! Je valide !
Via Sebsauvage.
Microsoft qui fait la promotion de Rust (O__O). J'étais passée à côte de ça. Bon bah pour une fois merci à l'un des plus dangereux ennemis du logiciel libre.
Ohhh ! Pardon je veux dire
OHHH !!! (O_O)
Je ne migre pas les projets vers Gradle uniquement parce que le build n'est pas paramétrable et parce que je ne parviens pas à partager plusieurs configs de build entre deux projets (cf. principe de standardisation du processus de build/check dans une entreprise).
Et là @Philou m'apporte un début de solution sur un plateau. On devrait tous avoir un @Philou chez soi (^__^).
Je cite une phrase de l'article :
[...] Slave fait partie des mots à éviter et à remplacer par secondary, subordinate, replica ou follower [...]
Des "mots à éviter"... Peut-être que Dan Williams pense qu'il ne faut pas dire "merde" parce que c'est un "gros mot", ou peut-être pense-t-il même que certains mots devraient être interdits car vous comprenez une onde sonore ça peut être dangereux... Je ne veux pas élaborer ici une homme de paille mais c'est pour vous faire passer l'idée qu'un son reste un son point.
Nos confrères informaticiens outre-atlantique sont en train de créer une novlangue, ou plutôt une langue pure et propre, blanchie pardon je veux dire nettoyée... #ExpressionRaciste Je suis désolée mais j'en ris jaune pardon, je fais semblant d'en rire #ExpressionRaciste2... Avec ces deux exemples, sentez-vous venir la vague de novlangue fondée sur la plus magnifique des "bien-pensances" ? Car oui il y a des gens qui pensent mais ils pensent mal... À quel moment nous sera-t-il confortable de vivre dans un monde où nous devrons être sur le qui-vive pour éviter que notre langue "ne fourche" aux yeux et aux oreilles des autres ?
C'est un petit peu le même problème que la vie privée si vous voulez, car si moi je considère que ce que je fais est légal et juste, comme ce n'est pas moi qui me jugera mais des tiers, rien ne me dit que eux considéreront que ce que j'ai dit soit "normal" et surtout "non-raciste"... Et rien ne me dit qu'ils ne me feront pas payer les conséquences de leurs jugements personnels basés sur leurs ressentis tout aussi personnels et que je ne peux deviner car au cas où vous ne le sauriez pas : NOUS NE SOMMES PAS TÉLÉPATHES !
Je l'ai expliqué dans ce post que je ne voulais plus JAMAIS vivre sous la peur de dire ce qu'il ne fallait pas. Je ne veux plus connaître cette maltraitance psychologique, cette horreur au quotidien. J'en suis limite arrivée au point de troller et de proposer de remplacer les termes "master" et "slave" par "hetero-cis-white-male" et "nigger" histoire de bien montrer la différence entre la volonté de décrire le fonctionnement de quelque chose et la volonté de nuire à quelqu'un par les mots et les références ; parce que vraisemblablement, une minorité très bruyante de personnes ne parvient pas à faire la distinction.
Dans tout cela, je ne pense pas que Dan Williams ait eu spécialement l'envie de changer toutes ces appellations car cela engendra beaucoup de travail pour une valeur quasi nulle. Par contre j'ai l'intime conviction qu'il s'exerce en ce moment une pression colossale sur les épaules des leaders des grands projets. Leur place étant avant tout due au respect et à la réputation qu'ils ont acquis au fil des ans, alors dans cette période tragique, ils ne peuvent que se soumettre au diktat des suprémacistes noirs qui ont gangrenés le mouvement BLM, afin de ne pas être passés au bûcher car ils seraient devenus "politiquement incorrects". Ces leaders risquent en ce moment de perdre l'investissement de toute leur vie de travail bénévole et acharné et donc pour la plupart ils se soumettent car pas d'autre choix que de montrer patte blanche pardon de coopérer. #ExpressionRaciste3 #BienPensance #Morale
Une réputation c'est dix ans pour la construire et quelques minutes pour la briser.
Proverbe
Enfin, et pour ceux qui avanceraient que le concept de suprémacistes noirs n'existe pas, je rappelle que l'idée du racisme systémique a été soutenue par le mouvement des blacks panthers dont certains leaders souhaitaient une inversion du système de domination qu'ils décriaient eux-mêmes. J'ajouterai cette vidéo car peut-être que si un homme noir le dit en commentant une scène où d'autres noirs armés parcours les rues d'une ville en plein jour, scandant "black power", et arrêtant les automobilistes blancs pour les intimider et les menacer alors cela aura plus d'impact que les écrits d'une femme blanche (on en est réduit à cela oui) :
Mais imaginons l'inverse ! Imaginons des blancs faisant pareil et scandant "white power", tout en défilant armes aux poings dans les rues d'une ville et se divertissant à arrêter tous les noirs qui circulent dans leur voiture !? Nous serions tous en train de manifester par soutien et solidarité contre ce racisme évident ! Mais fort pratique, le concept de racisme systémique protège ces suprémacistes noirs qui peuvent faire ce qu'ils veulent sans que l'on puisse ne serait-ce que les critiquer ouvertement (car oui, pour ma part je n'oserais certainement pas écrire cela sans mon pseudonymat, la situation me fait trop peur et pourtant je n'insulte personne). #DeuxPoidsDeuxMesures
Par pitié, n'importons pas sur notre territoire les problèmes du communautarisme américain. Notre pays s'est fondé sur le vivre ensemble, au point que cela est littéralement devenue notre devise nationale : Liberté Égalité FRATERNITÉ. Pas de distinctions dans la couleur, dans la religion, dans le sexe, juste tout le monde ensemble au sein d'une seule et même nation. #Rousseau
Ne nous trompons pas de combat !
EDIT : je n'avais même pas fait attention au titre de l'article « la vision globale des relations entre races ». Comme si plusieurs "races" existaient au sein de l'humanité !!! C'est vraiment un problème importé tout droit des USA. #Soupir
Merci @Bronco. C'est marrant parce que j'en parlais avec @Lenny ce midi (je suis tombée sur Fontello par hasard ce matin). En fait, j'aimerais une opération qui soit 100 % utilisable dans une PIC (ie. Plateforme d'Intégration Continue pour ceux qui ne connaîtraient pas l'acronyme).
L'idée serait de pouvoir récupérer l'intégralité des fonts en local via une commande Yarn/NPM puis de produire le bundle avec juste ce qu'il faut, au moment du build, en ne déclarant que celles utilisées (dans une tâche Gulp par exemple).
Ce qui me gène dans Fontello, c'est qu'il faut cliquer, et donc qu'un humain doive le faire au moins une fois, puis à chaque mise à jour du set d'icônes ; augmenter ainsi la probabilité d'un oubli d'une icône précieuse au fil du temps...
La meilleure option reste de déclarer l'ensemble des icônes souhaitées dans une conf et de laisser le build produire l'archive qui va bien. Si je trouve une solution, je la posterai.
Il y a plusieurs façons de faire, mais lorsqu'il s'agit de remplir un placeholder d'un input text, cette méthode marche plutôt bien :
<input type="text" i18n="[placeholder]my-i18n-key" />
L'attribut qui se fera injecter le i18n doit être mis entre crochet [ ] et s'il y en a plusieurs, alors ils doivent être séparés par des virgules s'ils possèdent la même valeur ; ou par des points-virgules s'ils possèdent chacun une valeur différente.
Par exemple :
<!-- Les deux attributs posséderont la même valeur i18n -->
<input type="text" i18n="[placeholder,aria-placeholder]my-i18n-key" />
<!-- Chaque attribut possédera sa propre valeur i18n -->
<input type="text" i18n="[placeholder]my-i18n-key;[aria-placeholder]my-other-i18n-key" />
Aurelia est un framework à la fois simple et élégant.
Comment identifier la taille du ViewPort de votre navigateur sans effort.
Réduire la taille de votre lib Font Awesome en ne conservant que les icônes dont vous vous servez. La webapp permettant de le faire est disponible ici.
Je vais regarder pour faire la même chose dans une tâche Gulp car les Font Awesome consomment entre 120 Ko et 440 Ko, ce qui n'est pas négligeable du tout !
@Timo : parce qu'en cas de traitement administratif de mon dossier, on ne risque pas de m'envoyer en prison avec des violeurs alors que je suis une femme. Idem pour les fouilles aux douanes qui ne pourront pas être effectuées par des hommes pétés à la testostérone et souvent "tentés" lorsqu'ils se retrouvent seuls avec nous dans une pièce où on nous désappe pour nous "palper"... Est-ce que ça te semble plus évident comme ça ?
Nota : je ne dénigre pas l'idée d'ajouter le groupe sanguin, bien au contraire ce serait très utile pour les accidentés, mais le sexe est à conserver, vraiment !
Je partage la pensée décrite dans tout ce qu'exprime FatAgnus dans son commentaire au sujet de brevets logiciels (et des brevets d'une manière générale), je cite :
Les brevets logiciels sont juste une vaste escroquerie qui sous couvert d'une prétendue innovation technologie permettent à certaines sociétés de racketter d'autres sociétés. On se souviendra encore il y a quelques années que Microsoft rackettait les constructeurs Android en les menaçant de de 310 brevets logiciels, qui lui ont rapporté, rien qu'en 2014, 3,4 milliards de dollars, sans avoir écrit une seule ligne de code !
Aucune idée ne devrait être verrouillée par un brevet logiciel, en plus ces idées sont souvent triviales, la navigation au clavier sur Internet, une méthode pour avoir des noms courts et longs dans un système de fichiers, interface multilingue pour un système d’exploitation...
En tant que développeur, vous devriez lire de plus 500 000 brevets logiciels états-uniens pour voir si par hasard votre code ne viole pas une des idées « géniale » couverte par un des brevets logiciels, autant dire que c'est un travail impossible. Surtout que même si vous pensez ne pas enfreindre un brevet, un juge pourrait penser le contraire.
Les brevets logiciels ne sont pas un moyen de protéger l'innovation, mais une arme utilisée par les grandes multinationales (car déposer, défendre ou se défendre un brevet logiciel coûte cher) contre d'autres sociétés.
Le concept de brevets logiciels est tellement « innovant » que certaines sociétés en ont fait leur business, les patent troll, des sociétés qui acquièrent des brevets sans les exploiter, dans le seul but de gagner de l'argent en rackettant d'autre sociétés.
Les brevets reposent sur une économie de casino faite pour servir les big-blind afin de les protéger des small-blind n'ayant pas les moyens de jouer all-in à chaque coup.
Quelques benchmarks sur des serveurs http. Je partage surtout pour les lignes de commande de siege (l'utilitaire de benchmark utilisé).
En ce moment je regarde rapidoid et undertow, je recherche des serveurs web ultra-rapides et ultra-légers pour faire de l'embarqué sur du GraalVM natif (et peut-être remplacer Sparkjava qui ne reçoit plus de mises à jour).
Je viens de tester chez Free et Free Mobile => les deux sont 100 % ok.
@Chlouchloutte t'es pas chez Orange ou Sosh pour nous dire ?
@Animal : ce n'est pas parce qu'une publication est supprimée de ton flux qu'elle est supprimée de Facebook tout court.
En lisant leur CLUF il y a des années j'avais cru comprendre que l'utilisateur de Facebook cède à Facebook une licence d'utilisation à vie sur tout ce qu'il y publie...
Bref, cela aura au moins le mérite d'éviter des shitstorms à ceux qui étaient peu attentifs quant à leurs écrits étant plus jeunes.
Spoiler : absolument rien. L'UE n'a rien apporté, elle a même aggravé la situation dans quasiment tous les cas pour y étaler sa propagande. C'est sûr qu'en face il n'y a eu que des morts...
Encore une vidéo exemplaire du youtubeur Trouble Fait au passage.
(Titre d'origine de la vidéo : "Comment l’UE et l’euro s’effondrent face au Covid ! - YouTube")
Edit : oubliez BLAKE2... J'avais lu en diagonale puisque le site explique que BLAKE3 est encore plus rapide !
Je recherchais un algorithme de hachage qui soit optimisé pour des machines 64 bits, aussi sécurisé que SHA-512 voire SHA-3 mais surtout aussi rapide que MD5. Il semblerait que nous ayons notre silver bullet : BLAKE2.
L'algo est déjà implémenté dans Bouncy Castle, et je compte bien faire joujou avec pour tester la bête.
Visiblement ça marche, sauf dans les cas tricky où il y a une imbrication de la détection des types au runtime. Je note aussi que pour tout ce qui est découverte du classpath au runtime (typiquement les drivers JDBC), il faut spécifier le nom de la classe du driver si elle est chargée via un Class.forName() (ce qui est toujours le cas en théorie).
Il ne me reste plus que deux questions en suspend avant de pouvoir passer entièrement sous GraalVM :
1) Comment fonctionne le classpath lorsque ce dernier contient un répertoire ? Le contenu est-il intégré à l'exécutable produit par GraalVM ou faut-il faire une bidouille ?
2) Comment fonctionne l'allocation mémoire avec un exécutable natif ? Avant, nous passions les options Xms et Xmx à la JVM mais celles-ci ont-elles encore une sens ?
Sinon les gains au démarrage sont encore plus impressionnant que ceux que j'avais obtenus il y a presque deux ans et l'API NIO est bien plus rapide que celle d'une JVM normale !
Le renouveau de la JVM est bel et bien en train de devenir plus rapide que Go sauf que la plateforme est riche (en termes de features proposées par le langage) et aussi polyglotte puisque GraalVM permet de traiter du Kotlin, du Scala, du R, du JavaScript, du Ruby, etc.
Toutes celles et tous ceux qui ont vécu une relation toxique sauront de quoi je m'apprête à vous parler. Peut-être connaissez vous quelqu'un qui laisse toute place à ses émotions, qui ne met en avant que son ressenti et à côté duquel vous ne pouvez rien dire, vous n'osez plus parler de peur de vous faire sauter à la gorge. Chacun de vos mots peut devenir un prétexte, une arme utilisée par cet interlocuteur pour vous piéger et ensuite vous punir.
À ce stade, surtout lorsque c'est votre conjoint, vous préparez vos paroles dans votre tête avant de prononcer quoi que ce soit et pendant que vous vous exprimez, vous faites attention à ses expressions, à ses gestes, à la moindre de ses crispassions afin de vous dédire juste à temps et vous éviter la punition pour ne pas dire le cataclysme.
Cette torture je l'ai vécu trèèès longtemps, je l'aimais pourtant et de tout mon cœur mais j'étais piégée et j'avais peur de ses réactions en per-ma-nence, vraiment la crainte était omniprésente, toujours là et tout le temps. C'était une relation hautement toxique et même ses propres amis venaient me voir pour me dire que j'avais beaucoup changée, que je m'effaçais plus qu'avant, que je riais beaucoup moins et surtout que j'acceptais des choses "pas normales" selon eux (mais ils ne voulaient pas êtres pris pour cible, alors ils se limitaient à ça et ne lui disait rien).
Aujourd'hui dès années ont passé, nous nous sommes séparés et je me suis reconstruite, alors quand je vois les dérives du progressisme qui met en avant le ressenti des gens avant le signifiant des mots (cf. le couple master-slave), qui pousse à l'auto-censure parce que certaines choses seraient intrinsèquement "mauvaises" (comme si la morale était une valeur universelle et absolue) au point où des universités s'effondrent (cf. Evergreen) et bien je suis terrifiée par cette mouvance qui se généralise.
Et je pèse mes mots, car vivre ça au niveau du couple a été l'une des plus horribles expériences de toute ma vie, alors vivre ça au niveau de toute la société française je n'imagine même pas le cauchemar ! Parce qu'à l'époque, en dehors de mon couple, j'avais le travail où je pouvais souffler, même le RER était une phase de répit c'est vous dire ! Mais c'était tout.
En ce sens, maintenant que je suis bien plus forte et bien plus avertie, je compte me battre bec et ongle contre les problèmes tout droit venus des USA, engendrés à cause du passé tordu de cette nation et qui ne sont pas les nôtres, afin qu'ils ne s'importent pas dans notre pays. Il faut dire non au progressisme autoproclamé "inclusif", il ne l'est pas, c'est un buzzword, un mot de novlangue qui exclus ceux qui "pensent mal". C'est un obscurantisme qui ne dit pas son nom et il s’immisce facilement car il touche à nos émotions et non à notre raison. Pour lutter contre lui il faut lutter contre notre pire ennemi : nous-même.
L'anti-racisme fait la même chose (enfin un pan de la mouvance antiraciste), qui prône l'agression, la destruction de l'ennemi sans ouverture, sans dialogue ni pardon. Tout ce qui n'est pas antifa doit être détruit, tout ce qui n'est pas inclusif est méprisable, tout ce qui n'est pas comme nous est contre-nous. Je n'arrive même pas à comprendre comment des gens qui pensent lutter contre les extrêmes ne fassent pas le rapprochement entre leur mode de fonctionnement et celui de ce qui a été des milices, puis des partis politiques radicaux et qui nous ont conduit vers les deux grandes guerres. La démarche intellectuelle était la même : on ne peut pas discuter avec eux les XXX (remplacez par la motion la plus efficace, "raciste, extrémiste, masculiniste, fasciste, pianiste" ? Ah non pas encore pour celui-là).
Bref, le monsieur en vidéo explique bien le point de vue et cela m'a donné envie de poster tout ça car j'ai vu beaucoup de choses passer sur différentes rivers et sur les réseaux asociaux ces derniers temps et quasiment tout n'est qu’émotionnel et se contredit entre mise en œuvre et idéologie.