liberforce a écrit 4730 commentaires

  • # Magic et FOSDEM ?

    Posté par  (site web personnel) . En réponse au journal De retour du FOSDEM 2020. Évalué à 3. Dernière modification le 04 février 2020 à 18:17.

    Rah, deux bonnes raisons pour y être cette année, flûte !
    Bon, reste toujours Arena.

    Allez, pour la peine, un article sur des bots avec un IA de draft en mode "Drafting the Hard Way":
    https://draftsim.com/ryan-saxe-bot-model/

  • [^] # Re: Les wheels ne sont pas fait pour musl

    Posté par  (site web personnel) . En réponse au lien Alpine makes Python Docker builds 50× slower, and images 2× larger. Évalué à 3.

    Oui, ça m'a semblé aussi assez partial. C'est comme si on disait: "n'utilisez pas Linux, sous Windows ça marche bien et vous aurez d'autres problèmes en passant à Linux". Le plus répandu ne détient pas la vérité absolue.

    Je vous conseille cette présentation sur alpine et musl au FOSDEM 2017: https://www.youtube.com/watch?v=Cc1rBayMnVI

    J'ai trouvé les apports de musl, même pour les autres systèmes, intéressants en termes d'amélioration de la qualité de code. J'aime aussi leur approche "on essaie de faire les choses de la bonne manière".

  • # Port d'armes

    Posté par  (site web personnel) . En réponse au journal Le compilateur GCC passe à Git. Évalué à 10.

    Je remercie cette conversion (et surout le coup de fatigue qui s'ensuivit) d'avoir mis ESR hors service pour une manifestation pro-armes.

    I’m getting better now. But I had planned to go to the big pro-Second Amendment demonstration in Richmond on Jan 20th and had to bail at the last minute because I was too sick to travel.

    Oui oui, on est que lundi…

  • [^] # Re: Yoda ?

    Posté par  (site web personnel) . En réponse à la dépêche Python 3.8 : opérateur d’assignation, REPL async, Pickle v5 et plus. Évalué à 2. Dernière modification le 12 novembre 2019 à 19:01.

    C'est un super mauvais exemple : tu as des langages qui inversent l'affectation.

    Et ? Le fait qu'un langage implémente cela dans sa syntaxe validerait cette approche. Dans ce cas les créateurs du brainfuck ont validé plein de choses. Ensuite il y a une différence entre la syntaxe d'un langage (obligatoire) et une convention qu'on est libre d'adopter ou pas.

    Il y a un moment où il faut travailler la plasticité de son cerveau aussi. Se créer des biais et passer temps à les maintenir ça n'a rien de sain.

    C'est cette inversion d'opérandes qui est un bias pour compenser la mauvaise utilisation du langage…

    Toi qui prenais l'exemple des Texas Instrument, j'ai utilisé une HP48 et utilisé en notation polonaise inversé (RPN). C'est une approche avec laquelle j'ai complètement adhéré (et à laquelle j'adhère toujours), et là pour le coup c'est vraiment une feature qui mérite le changement de mode de raisonnement.

    Mais là on parle d'une convention comme méthode de contournement pour un problème pour lequel le compilo remonte déjà un warning, et un -Werror te remontera donc obligatoirement tous les cas problématiques:

        ../main.c:11:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
             if (i = 0)
                 ^
    

    Le compilo te suggère de doubler les parenthèses pour expliciter le fait que oui, tu souhaites utiliser le résultat de cette affectation comme valeur pour ton test. Pas besoin de plus.

  • [^] # Re: Yoda ?

    Posté par  (site web personnel) . En réponse à la dépêche Python 3.8 : opérateur d’assignation, REPL async, Pickle v5 et plus. Évalué à 4.

    L'égalité marche toujours dans les deux sens.

    Je me doute. Mais quand tu manipules une variable, c'est elle qui est l'élément essentiel.

    En maths, tu as plus de mal avec "12 = 2*5+2" qu'avec "2*5+2 = 12" ?

    Justement, en math, combien de fois tu as écris sur ta copie 0 = x plutôt que x = 0 ? Si tu écris x = 0 (avec x dans le terme de gauche, donc), c'est parce que ce qui t'intéresse, c'est la variable. C'est ce que tu mentionnes en premier. Si je te donne une variable, tu peux avoir son contenu, ici 0. Mais si je te donne un 0, il y a une infinité de variables qui pourraient avoir cette valeur. Ce n'est pas bijectif. Là on est dans le cas de l'assignation et pas dans le test, mais c'est tellement similaire que même si l'opérateur de comparaison est commutatif, dans les faits, la partie qui m'intéresse je veux l'écrire en premier, donc à gauche de l'opérateur.

    Si c'est qu'une histoire de vocalisation, tu dois bien pouvoir te trouver une phrase qui te plaira.

    Bin non, je ne veux pas. C'est changer le mode de pensée du développeur pour contourner une difficulté du langage. C'est à la machine de s'adapter à l'humain, pas l'inverse. Le code machine, c'est pour l'ordinateur, moi je suis un humain et je veux du code lisible, sans avoir à m'adapter à une méthode de contournement bidon.

    Le code est avec des noms d'instructions en anglais, pour être quasiment lu comme de l'anglais,

    Dans beaucoup de cas les assertions utilisent cet ordre.

    Pour la même raison foireuse. C'est aux compilateurs ou analyseurs statiques de t'avertir des tournures dangereuses.

  • [^] # Re: Python se rapproche du Perl ?

    Posté par  (site web personnel) . En réponse à la dépêche Python 3.8 : opérateur d’assignation, REPL async, Pickle v5 et plus. Évalué à 4. Dernière modification le 06 novembre 2019 à 17:32.

    C'est surtout que l'exemple initial est discutable:
    https://www.python.org/dev/peps/pep-0572/#the-importance-of-real-code

    Another example illustrates that programmers sometimes do more work to save an extra level of indentation:

        match1 = pattern1.match(data)
        match2 = pattern2.match(data)
        if match1:
            result = match1.group(1)
        elif match2:
           result = match2.group(2)
        else:
            result = None

    This code tries to match pattern2 even if pattern1 has a match (in which case the match on pattern2 is never used). The more efficient rewrite would have been:

        match1 = pattern1.match(data)
        if match1:
            result = match1.group(1)
        else:
            match2 = pattern2.match(data)
            if match2:
                result = match2.group(2)
            else:
                result = None

    Avec ce code "amélioré", on se retrouve avec autant de if/else imbriqués et donc de niveaux d'indentation qu'on a de motifs…

    Pour éviter l'indentation, j'aurais fait une sous-fonction et fait du early return:

        match1 = pattern1.match(data)
        if match1:
            return match1.group(1)
    
        match2 = pattern2.match(data)
        if match2:
           return match2.group(2)
    
        return None

    Après j'ai pas de soucis avec la nouvelle syntaxe que je découvre aujourd'hui, mais il y a peut être des bonnes pratiques ou avertissement issus d'analyseurs statiques de code qui auraient pu aider à corriger ce problème plutôt que le langage lui même.

  • [^] # Re: Yoda ?

    Posté par  (site web personnel) . En réponse à la dépêche Python 3.8 : opérateur d’assignation, REPL async, Pickle v5 et plus. Évalué à 2.

    Je n'aime pas du tout cette manière d'écrire, c'est répandu, mais illisible. Tu te dis "est-ce que cette variable vaut 12", et tu dois écrire "est-ce que 12 vaut cette variable" ? On doit écrire pour la lisibilité. La manière d'éviter cela c'est d'activer les warnings du compilateur.

  • [^] # Re: Signaler et porter plainte

    Posté par  (site web personnel) . En réponse au journal Les cons? ça ose tout!. Évalué à 3.

    À ta décharge, une telle adresse a dû être créée il y a longtemps sur hotmail et doit déjà se faire spammer depuis des siècles ;)

  • [^] # Re: Signaler et porter plainte

    Posté par  (site web personnel) . En réponse au journal Les cons? ça ose tout!. Évalué à 5.

    Une pensée pour le pauvre gars qui possède l'adresse xyz@hotmail.com et va se faire spammer…
    Pour les adresse email d'exemple, il y a le domaine réservé example.com.

  • [^] # Re: Bien d'accord !

    Posté par  (site web personnel) . En réponse au journal Snap, Flatpak, Packagekit : c'est quoi ce bordel ?. Évalué à 10. Dernière modification le 18 octobre 2019 à 11:54.

    Avec 20 ans de métier spécialisé sur UNIX puis Linux, je pense maîtriser un peu les archi système… Fais un peu attention à qui tu t'adresses quand tu fais ce genre de remarques…

    Expérience et compétence sont deux choses différentes.

    Je considère effectivement que c'est "pourri", si on a inventé les bibliothèques partagées, c'est justement pour éviter ces horreurs.

    Et cela a fonctionné, jusqu'à un certain point.

    Voici un scénario typique:

    • un développeur d'applications a testé son application avec une version A de bibliothèque
    • un autre développeur d'applications a testé son application avec une version B de la même bibliothèque
    • un mainteneur de distribution veut intégrer ces deux applications. Il va donc chercher à utiliser la même version pour toutes les applications utilisant cette bibliothèque.
    • le mainteneur choisit une version unique (A, B, voire C)
    • malgré les tests du mainteneur et de l'équipe d'assurance qualité de la distribution, il y a peut être des bugs spécifiques à la version de bibliothèque utilisée

    Par conséquent, l'utilisateur est mécontent car:

    • il ne peut bénéficier de la dernière version de ses applications préférées tant qu'elles n'ont pas été packagées pour sa distribution
    • même si elle est packagée, elle ne fonctionnera peut être pas à 100% avec la version de bibliothèque choisie par le mainteneur
    • il va remonter des bugs au développeur de l'application

    De plus, les développeurs d'applications sont mécontents, car:

    • ils sont inondés de bugs remontés par les utilisateurs, mais pour lesquels ils ne peuvent rien, car dus aux choix des mainteneurs de distributions, et ce pour chaque distribution où cela pose problème.
    • ils ont fait une application qui fonctionne, mais voient leur réputation être entachée par des bugs ou incompatibilités des bibliothèques, et des choix des mainteneurs de distributions
    • on leur remonte des bugs sur des applications obsolètes car ils ont déjà sorti la version n+1 mais les distributions sont restées sur la version n.

    Enfin, le mainteneur est mécontent car:

    • packager des logiciels ça prend du temps et on duplique l'effort pour chaque distribution
    • il a des problèmes insolubles à résoudre notamment dû à l'explosion de la matrice de test qui fait que la moindre mise à jour d'une bibliothèque peut casser plein d'applications

    Flatpack et Snap ont été créées pour résoudre ces problèmes:

    • c'est un circuit court: directement du producteur (développeur) au consommateur (l'utilisateur) sans intermédiaire (distribution), par conséquent tu peux avoir la version nightly d'une application avec un Flatpack quelques minutes après qu'elle a été compilée
    • les testeurs peuvent remonter des bugs sur la dernière version facilement (au lieu de galérer à recompiler cette dernière version non fournie dans les backports de leur distribution)
    • l'application se lancera sans polluer ton système (pas de paquets expérimentaux, pas besoin de déstabiliser ton système)
    • tous les utilisateurs de l'application Flatpack/Snap feront tourner l'application dans la configuration choisie par les développeurs: plus de combinatoire de test, tout les utilisateurs ont une combinaison unique de versions.

    Alors oui, ça prend plus de place sur le disque, mais tu n'es pas obligé d'installer toutes tes applications avec des systèmes de conteneurs de ce type. Toutefois, quand tu as besoin d'un logiciel non fourni par ta distribution, ça change la vie. Si tu suis le développement de certains logiciels en particulier, tu peux utiliser la version stable de ta distribution, et par dessus un Flatpak/Snap de la poignée de ces applications dont tu veux absolument la dernière version stable (si tu veux les dernières fonctionnalités), ou nightly (si tu veux tester au fil de l'eau et remonter des bugs dès qu'il apparaissent).

    On s'oriente de plus en plus vers un système de base construit avec des packages pour ce qui est des composant système, avec au dessus des runtimes intermédiaires, et des applications contenairisées au-dessus.
    Tu peux jeter un coup d'oeil à Fedora Silverblue ou à EndlessOS pour avoir un aperçu de ce futur pas si lointain.

    Je n'ai pas demandé à avoir snap installé sur mon système, ça c'est fait sans mon consentement.

    Je doute qu'on t'ai mis le couteau sous la gorge. Tu as à un moment donné accepté le contrat de licence utilisateur à l'installation de ta distribution qui justement permet cela. Soit tu as directement installé une vesion utilisant snap, soit tu as donné ton consentement explicite autorisant les mises à jour et as migré vers une version utilisant snap.

    Résultat, je me retrouve avec des lib en double/triple/whatever qui me "bouffe" des giga de disque.

    Tout à fait. Mais l'espace disque est bon marché de nos jours, et bien que partager les ressources offre de meilleurs performances (accès cache, etc.), parfois cela est moins prioritaire qu'avoir une application qui fonctionne, ou avoir la dernière version d'application sans avoir à attendre 1 an. Tu n'es pas non plus obligé d'installer toutes tes applications de cette manière: on te donne le choix d'utiliser la version de ta distribution ou la version en conteneur.

    En effet, même si Flatpak ou Snap est sur ton système, tu n'es pas obligé de l'utiliser.

  • [^] # Re: Médecin traitant

    Posté par  (site web personnel) . En réponse au journal Aller au travail, quand on n'a plus le choix.. Évalué à 8. Dernière modification le 09 octobre 2019 à 12:20.

    Ça me semble être le cas d'usage typique d'une consultation à domicile.

    Juste pour l'exemple: j'ai aussi appelé il y a quelques semaines SOS médecin pour justement une consultation à domicile. Ma femme avait le dos bloqué, on a pas de voiture, même avec un taxi le transport allait être galère, et on a le petit de 2 ans, donc siège auto si déplacement. La consultation à domicile paraissait le mieux, et c'était assez grave pour que cela me semble justifié. Réponse: on a personne sur votre ville cet après midi (il était 13h, j'étais rentré de mon boulot en urgence).

    On a dû prendre le bus, pas besoin de siège auto et on peut prendre la poussette. Bin c'était jour de grève RATP, on a mis 2h à arriver à l'hôpital. Y a des jours comme ça où on ferait mieux de rester couché…

  • [^] # Re: Médecin traitant

    Posté par  (site web personnel) . En réponse au journal Aller au travail, quand on n'a plus le choix.. Évalué à 10.

    Comme dit plus haut, va voir ton médecin traitant !

    Perso j'ai plus de médecin traitant. Le dernier a disparu du jour au lendemain sans prévenir sa patientèle (il est médecin du travail maintenant, je l'ai retrouvé sur le net). Ma femme en a trouvé un autre, il a cessé son activité depuis. Le seul moyen pour avoir un rendez vous au moment où tu en as besoin c'est Doctolib, et prendre le premier dispo. Du coup, pas de suivi dans le temps. Même pour le petit qui a 2 ans on a pas de pédiatre attitré, parce qu'il faut 3 ou 4 jours pour un rendez vous. Quand on demande aux médecins qui ils peuvent devenir nouveau médecin traitant, ils refusent: trop de patients. Je ne pense pourtant pas être dans un désert médical, je sui en région parisienne, dans le Val-de-Marne. Heureusement on est pas souvent malades, mais je ne sais pas comment font les ceux qui ont une mauvaise santé.

  • [^] # Re: World of Goo, Rodland, Magic The Gatering et Arena

    Posté par  (site web personnel) . En réponse au journal recherche jeu et chat pour préados. Évalué à 4.

    Ah, j'ajoute l'excellent Battle for Wesnoth, stratégie en tour par tour. Jolies illustrations, musiques, bon gameplay, plein d'aventures différentes, et c'est Libre !

  • # World of Goo, Rodland, Magic The Gatering et Arena

    Posté par  (site web personnel) . En réponse au journal recherche jeu et chat pour préados. Évalué à 3. Dernière modification le 08 octobre 2019 à 11:26.

    World of Goo est un super jeu de réflexion avec des petits personnage tout mignons.
    https://fr.wikipedia.org/wiki/World_of_Goo

    Sinon tu as des jeux en émulation…

    Dans les vieux jeux Amiga auxquels j'ai joué, tu as Rodland qui était tout mignon: https://www.youtube.com/watch?v=kmmPgw7pRfc
    Ça demande peut être un peu de setup en revanche, à voir à quel point les émulateurs comme https://fs-uae.net/ se sont améliorés.

    Mais sinon le démon en moi te dirait que tu as juste à acheter sur ebay un lot de vieilles cartes Magic the Gathering pour une bouchée de pain et les faire jouer entre eux. Certes il y a tout un bestiaire (des goules, etc), mais la dernière extension, Throne of Eldraine est axée sur les contes de fée avec des elfes, fées, chevaliers, zombies…, donc tu peux aussi acheter des choses plus "cadrées". En allant en magasin, tu peux aussi demander des paquets d'introduction gratuits pour qu'ils apprennent à jouer ensemble (en mode "la première dose est gratuite" ;). Ouais, il y a 13 ans et + sur la boîte mais les ados d'aujourd'hui sont précoces ;). S'ils savent lire, ils peuvent apprendre à jouer. Les règles sont dures à maîtriser, mais tu peux jouer sans maîtriser toutes les règles et apprendre au fur et à mesure.

    Il y a aussi la version jeu vidéo Magic Arena qui vient de sortir (i.e.: n'est plus en version beta).
    Exemple de partie: https://youtu.be/15DeQbR9RtY?t=354
    Le jeu est disponible en français, donc pas de panique ;)

    Ça reste de la réflexion en tour par tour, identique au jeu de carte, mais avec un assistant qui t'apprend à jouer au début, ce qui est une bonne introduction. C'est un free to play, ils ont donc la possibilité de jouer sans dépenser d'argent, et ne sont pas obligés de jouer contre des humains (même si c'est le but un peu quand même), car il y a un bot d'entrainement qui peut servir d'adversaire.

    Ensuite en progressant, un adversaire humain, c'est quand même plus sympa. Il n'y a pas de chat intégré, donc pas de risque de discussion subversive avec des adultes. Et ils peuvent jouer l'un contre l'autre si tu as 2 ordis. Ça fonctionne sous Windows, la prochaine version du mois prochain devrait tourner sur Mac, et il est possible de le faire fonctionner sous Linux avec Wine, il y avait de bons retours je crois.

    C'est donc possible de jouer au jeu vidéo, ou au jeu de cartes, et c'est le même jeu, juste pas la même expérience. Comme j'imagine qu'ils n'auront pas le droit de jouer quand ils veulent sur ordinateur, ça peut être bien de pouvoir passer de la vidéo au papier.

    Si vous optez pour le papier et voulez aller plus loin avec les cartes de la dernière extension, les decks (jeux) de planeswalker sont déjà tout faits, et permettent de jouer immédiatement. Pas besoin de choisir les cartes qui les composent. Ils sont à 13,50€ chaque (deck Orko, et deck Rowan). Ne prenez pas des deck brawl, il n'y a qu'un exemplaire de chaque carte, c'est plus cher et plus dur à maîtriser.

  • [^] # Re: Plusieurs solutions

    Posté par  (site web personnel) . En réponse au message problème find et espaces dans les noms de fichiers. Évalué à 2.

    Je pense que c'est une solution qui reste possible, mais pas sans changer l'IFS, ce que l'OP ne souhaite pas.

  • [^] # Re: Plusieurs solutions

    Posté par  (site web personnel) . En réponse au message problème find et espaces dans les noms de fichiers. Évalué à 2. Dernière modification le 07 octobre 2019 à 16:14.

    Ah, effectivement, mea culpa. Mais on ne peut pas non plus enlever les guillemets autour du $(find ...) car alors on ne gère plus les fichiers ayant un espace dans leur nom.

  • [^] # Re: Différences entre versions des licences CC

    Posté par  (site web personnel) . En réponse au journal Que se passe-t-il StackOverflow?. Évalué à 3.

    La page pointée étant gargantuesque, un résumé est disponible ici: https://creativecommons.org/Version4

  • # Plusieurs solutions

    Posté par  (site web personnel) . En réponse au message problème find et espaces dans les noms de fichiers. Évalué à 5. Dernière modification le 02 octobre 2019 à 18:11.

    mkdir toto && cd toto
    touch "bla bla"
    touch "bli bli"
    find . -type f -print0 | xargs --null ls -l         # un seul processus ls consommant les données
    find . -type f -exec ls -l {} \;                    # un processus ls par fichier
    for f in "$(find . -type f)"; do ls -l "$f" ; done  # un processus ls par fichier

    Souvent la méthode avec xargs est mieux (un seul processus lancé), sauf dans le cas où tu as beaucoup de fichiers et tu risques de dépasser la liste d'arguments maximale qu'on peut passer à un process.

    Autre liste de méthodes ici:
    https://stackoverflow.com/questions/9612090/how-to-loop-through-file-names-returned-by-find

    Je note sur leur réponse que tu peux te passer de find en utilisant shopt -s globstar et glober en récursif avec **/*.

  • [^] # Re: Facture sociale

    Posté par  (site web personnel) . En réponse au journal [HS][Nécrologie] L'ancien président français Jacques Chirac est bronsonnisé.. Évalué à 7.

    En fait, le M.O. de Chirac - politiquement, s'entend - c'était de rien faire.

    C'est surtout que (comme d'autres) il a passé une vie entière à tenter de devenir président. Il était bon pour la conquête du pouvoir, pas forcément pour l'exercer. Le deuxième mandat de Mitterrand était aussi passablement vide.

  • [^] # Re: Économies

    Posté par  (site web personnel) . En réponse au journal [HS][Nécrologie] L'ancien président français Jacques Chirac est bronsonnisé.. Évalué à 3. Dernière modification le 26 septembre 2019 à 16:55.

    En même temps les nouveaux anciens présidents font le tour des popotes à faire des conférences qui rapportent une fortune, je ne m'en fais pas pour eux…

  • [^] # Re: Facture sociale

    Posté par  (site web personnel) . En réponse au journal [HS][Nécrologie] L'ancien président français Jacques Chirac est bronsonnisé.. Évalué à 10.

    Ça me rappelle que je m'étais dit à un moment que Sarko avait au moins une qualité : il avait réussi à me faire regretter Chirac…

  • [^] # Re: Facture sociale

    Posté par  (site web personnel) . En réponse au journal [HS][Nécrologie] L'ancien président français Jacques Chirac est bronsonnisé.. Évalué à 8.

    Tros gros, passera pas.

  • [^] # Re: Glitchophobie

    Posté par  (site web personnel) . En réponse à la dépêche G’MIC 2.7.0 : Une rentrée pleine de style pour le traitement d’images !. Évalué à 2.

    Je me demande à quel point c'est fréquent. Je ne suis pas spécialement sensible, mais là effectivement, c'est assez dérangeant. Ça fait un peu peur primale, genre une araignée qui aurait pondu dans la chair. Il y a des gens à qui ça ne fait rien ?

  • [^] # Re: Ni bonne, ni mauvaise

    Posté par  (site web personnel) . En réponse au journal Tristan Nitot devient directeur général de Qwant. Évalué à 2.

    À ma connaissance ils sont locataires. On m'avait dit que le bail leur a été cédé à prix préférentiel à condition qu'ils prennent en charge les travaux (et apparemment il y en avait beaucoup). Alors c'est sûr que des vieux locaux rénovés en plein Paris avec bonne hauteur sous plafond, ça fait luxueux (ça l'est, pour y allé il y a quelques années, justement pour un événement du libre extérieur à Mozilla). Mais cela leur permet d'avoir une place centrale à un coût moindre que s'ils avaient loué un truc neuf directement. Je pense que l'argument des "locaux de luxe" est un mauvais argument.

  • [^] # Re: Dommage

    Posté par  (site web personnel) . En réponse au journal Au revoir, LinuxFR. Évalué à 3.

    Pfff, vim, pas vi. Et puis le débât est clos depuis un moment. Comment ça je manque de second degré ? ;)