Michaël a écrit 2929 commentaires

  • [^] # Re: seriously ??

    Posté par  (site web personnel) . En réponse au journal toujours pas convaincus par l'Hydroxychloroquine ?. Évalué à 8.

    Va balancer tes intox ailleurs s'il te plait.

    Arrêter d'en balancer, c'est vraiment trop demander?

  • # Il faut plutôt partir du point de vue inverse

    Posté par  (site web personnel) . En réponse au message Peut-on savoir si on est à proximité d'un assistant vocal ?. Évalué à 6. Dernière modification le 17 janvier 2021 à 23:12.

    C'est terrible d'écrire ça mais être à proximité d'un assistant vocal et donc d'être écouté par cet assistant est aujourd'hui le cas général – jusqu'à ce qu'on rende ces outils illégaux? (À moins qu'ils ne le soient déjà?) Il n'y a aucune raison de croire qu'on n'est pas proche d'un assistant vocal à moins de prendre des mesures spécifiques pour cela.

    (Même sans assistant vocaux, les téléphones portables ont une longue historique de détournement comme micro-espions – depuis la fin des années 90 au moins.)

  • # Une question de volume?

    Posté par  (site web personnel) . En réponse au journal Vim ou Emacs pour le courriel ?. Évalué à 9.

    De 2000 à 2010 environ j'ai essentiellement utilisé Gnus/Emacs (oui Gnus: “gniouzes”) pour lire et écrire mes mails. Les raisons principales qui font que je ne l'utilise plus sont que:

    • Cela encaisse mal le volume des communications. En étant abonné à quelques mailing lists à fort trafic (FreeBSD), recevant plein de spams (plus de 50 par j) et ayant une messagerie d'entreprise avec un trafic complètement délirant, le logiciel ne suit pas.

    • La plupart des mes correspondants préfèrent les messageries instantanées. (Pas tous, la plupart.)

    • En travaillant avec plusieurs ordinateurs cela demande un effort de synchroniser les configurations de ces logiciels.

    • Comme tu le constates, les clients de messagerie ne sont pas très satisfaisants… soit la gestion des fils de discussion, tags, … est mauvaise ou inexistante, soit le flot de travail est contre-intuitif, soit trop gourmand en ressources, … bref aucun que j'ai utilisé en me disant “C'est vraiment ce qu'il me faut.”

    Du coup j'utilise essentiellement les interfaces web de mes diverses messageries.

    Si tu as un volume de messages relativement faible et que tu aimes bien configurer tout ce qui est configurable, j'avais trouvé Gnus/Emacs vraiment bien!

    https://www.gnu.org/software/emacs/manual/html_node/gnus/Starting-Up.html#Starting-Up

    Il y a même un chapitre “Emacs pour les païens” :D

  • # Au risque de passer pour un petit joueur …

    Posté par  (site web personnel) . En réponse au journal Un RISC-V sous Linux pour $12.50. Évalué à 2.

    Au risque de passer pour un petit joueur je dois souligner qu'il faut écrire “un jeu d'instructions” avec “jeu” au singulier.

  • [^] # Re: Impression de déjà vu

    Posté par  (site web personnel) . En réponse au lien Julia, le code informatique qui bouleverse la science. Évalué à 4. Dernière modification le 02 novembre 2020 à 22:51.

    À part pour la vitesse, ça fait tout de même furieusement pensé à Python. Non ?

    Ben en fait ça fait penser non seulement à Python mais à plein de langages de programmations: OCaml, Lisp, Clojure, Ruby, JavaScript, Scala, Go, …

  • [^] # Re: Pas que

    Posté par  (site web personnel) . En réponse au journal Comment se compose un exécutable Linux ?. Évalué à 3.

    par un handle ?

    Par une poignée? Donc sous windows, tout est fenêtre, porte, sac à main ou tasse de thé. CQFD.

  • # Cela devrait être normal

    Posté par  (site web personnel) . En réponse au journal H.S. En France petite leçon de démocratie (de séparation des pouvoir, surtout). Évalué à 9.

    J'ai peu d'espoir que ce genre d'initiative améliore la gestion de crise du gouvernement (#YOLO) et j'ai peur qu'au contraire ça n'affaiblisse encore d'avantage celui-ci, le rendant encore moins capable de gérer la situation

    Si l'autorité du ministre de la santé par exemple est entamée par la procédure au point qu'il ne puisse continuer d'assumer ses fonctions il démissionnera et l'administration assurera la continuité de la gestion de crise.

    C'est un peu étrange mais si nous pouvons certainement regretter que ces opérations doivent être menées, car on préfèrerait que les problèmes qui les motivent n'aient pas eu lieu, il nous faut pourtant aussi nous réjouir qu'elles soient menées, car elles font honneur à notre démocratie.

    mais en même temps le timing me met un petit peu mal à l'aise.

    Ça c'est un peu comme les vacances des salariés, tomber malade, ou les examens à la fac: ce n'est jamais le bon moment, tout simplement!

  • [^] # Re: Presque ?

    Posté par  (site web personnel) . En réponse au message Recréation d'arborescence et de contenu. Évalué à 2.

    touch "$DEST/$fichier"

    Ben oui, c'est bien ce qu'il faut faire!

    echo touch $dossier/$fichier

    et ceci est un conseil des plus valables!

    Dans les programmes plus compliqués j'aime bien faire quelque chose comme

    touch()
    {
       echo "Debug: touch" "$@"
       command touch "$@"
    }
    

    pour tracer les appels à un programme extérieur.

  • [^] # Re: Rashell

    Posté par  (site web personnel) . En réponse au journal Rashell – Une bibliothèque pour remplacer les scripts shells par du Lisp. Évalué à 2.

    Ce n'est pas vraiment un “shell lisp” ce que je montre en exemple c'est juste un usage interactif dans la boucle d'interaction mais les fonctions en question sont “juste” des fonctions utilisables dans n'importe quel programme. (Lisp gomme beaucoup de différences entre l'usage interactif du langage et l'usage non interactif.)

    La bibliothèque définit un type “command” et des fonctions pour exécuter une commande selon les modes que j'ai décrits “utilitaire”, ”test”, ”recherche” ou “filtre”. L'utilisation de la fonction “cp” renvoie donc une commande, et pour rendre l'écriture d'interfaces comme la fonction “cp” et le programme Unix “cp” facile, j'ai écrit une macro qui s'occupe de toute la plomberie et qui s'utilise comme ça:

    (define-command cp (pathname-list destination)
      ((follow :flag "-H")
       (force :flag "-f")
       (recursive :flag "-R"))
      (:program #p"/bin/cp"
       :documentation "Run cp(1) on PATHNAME-LIST and DESTINATION."
       :reference "http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.html"
       :rest (append (ensure-list pathname-list) (list destination))))

    En évaluant ce bout de code, Lisp définit une fonction “cp” qui comprend les options “follow”, ”force” et “recursive” et les traduits en les arguments correspondants du programme “cp”.

    Cette macro traite “le cas facile” mais pour “find*” j'ai du comme tu le devinais dans ton commentaire écrire une interface spécifique:

    (defun find* (predicate-expr pathname &key directory environment follow)
      "Prepare a find(1) command on PATHNAME with the given PREDICATE-EXPR.
    The options are
     FOLLOW
       If set, symbolic links are followed.
     DIRECTORY
        A pathname to a working doirectory to use when running the command.
    "
      ;; References: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
      (make-instance 'command
                     :program #p"/usr/bin/find"
                     :directory directory
                     :environment environment
                     :argv (append
                            (when follow (list "-L"))
                            (mapcar #'define-command/to-string (ensure-list pathname))
                            (find-predicate-to-argv predicate-expr))))

    (Le “make-instance” en Lisp c'est comme le “new” en C++ pour faire vite.)

    La partie compliquée est cachée dans la fonction “find-predicate-to-argv” qui convertit un prédicat comme '(:and (:has-kind :regular)(:name "*.lisp")) en quelque chose que le programme “find” comprend.

  • [^] # Re: Snif !

    Posté par  (site web personnel) . En réponse au journal Rashell – Une bibliothèque pour remplacer les scripts shells par du Lisp. Évalué à 2.

    Qu'est-ce que c'est lush? Il me semble avoir compris en survolant la page qu'il s'agissait d'un langage “à la Lisp” mais qui ne cherche pas du tout à implémenter un Lisp standard (par exemple, pas trace de CLOS). En tout cas merci du lien, je m'intéresse aussi au calcul scientifique et à l'apprentissage automatique, j'y consacrerai un peu de temps.

    Comment as-tu découvert lush et pour quoi t'en sers tu?

  • [^] # Re: + de doc sur CL

    Posté par  (site web personnel) . En réponse au journal Kaputt – une bibliothèque pour tester ses programmes Common Lisp. Évalué à 2.

    Ah oui, maintenant je me souviens du gros problème que j'avais avec 5AM il y a deux ans, et la raison pour-laquelle j'ai écrit Kaputt (en plus du fait que je voulais mieux comprendre le traitement des erreurs).

    La raison est que lorsqu'un test du style

    (is (equal a b))

    n'est pas satisfait on a besoin de voir a et b, ce que montre 5AM et la plupart des outils analogues. Là où ça se corse, c'est lorsqu'on dévie de la forme la plus simple du test

    (is (prédicat-binaire attendu reçu))

    la macro is a besoin de savoir des choses sur le prédicat pour montrer intelligemment les arguments, par exemple si on a quelque chose comme:

    (is (prédicat-ternaire contexte-partagé attendu reçu))

    il faut faire des efforts pour montrer les arguments.

  • [^] # Re: + de doc sur CL

    Posté par  (site web personnel) . En réponse au journal Kaputt – une bibliothèque pour tester ses programmes Common Lisp. Évalué à 2. Dernière modification le 14 septembre 2020 à 09:08.

    Ah cool, merci pour le commentaire encourageant et les détails! :-)

    J'ai vu que le “cookbook” présente PROVE comme obsolète, du coup il faudrait réécrire la section. Qu'est-ce que tu préconiserais comme paquet de référence pour le remplacer?

  • # Considérer le problème c'est déjà presque le résoudre!

    Posté par  (site web personnel) . En réponse au message Problèmes lors de la conception / abstraction de programmes. Évalué à 2.

    Salut Pascal,

    je voudrais commencer par un message assez encourageant et rassurant: c'est une très beau problème que tu te poses et se le poser est déjà presque le résoudre. Il n'y a pas d'absolu dans la simplicité et en ce qui me concerne je continue d'avancer sur ce chemin même si je programme depuis maintenant presque 30 ans!

    Pour faire des progrès dans ce domaine, voici quelques idées que tu pourrais voiloir incorporer dans ta pratique:

    En parler à tes collègues!

    C'est tout bête mais si tu travailles dans un environnement assez ouvert et qui stimule la progression c'est un sujet que tu peux aborder très ouvertement avec tes collègues et par exemple convenir avec ton équipe que le critère de simplicité soit systématiquement abordé dans les revues par exemple pour les 3 prochains mois.

    Programmer en binôme

    C'est une pratique plus ou moins répandue mais un des nombreux bénéfices de la programmation en binôme (pairing) est généralement l'obtention d'une code plus simple.

    Faire des lectures critiques régulièrement.

    Pour les 3 prochains mois tu peux te réserver 1-2h par semaine pour lire des programmes écris par d'autres, ou des programmes que tu as écris toi-même il y a longtemps, en te concentrant particulièrement sur les aspects de simplicité qui te préoccupent en ce moment. (C'est en général une bonne chose de lire du code écrit par d'autres!)

    Un exercice consiste par exemple à partir d'un comportement du programme qu'on voudrait modifier et à examiner le programme pour 1/trouver la partie responsable et 2/comprendre les conséquences de cette modification. Tous les obstacles à 1 et 2 sont autant d'enseignements qu'on peut retirer.

    Faire du développement gouverné par les tests (test driven development en beau nanglais)

    Le cycle de va et viens entre les tests et le programme aident à se concentrer sur les attentes du programme et souvent à privilégier des solutions simples.

    Apprendre de nouveaux langages de programmation

    C'est un gros investissement en temps mais apprendre de nouveaux langages tous les 3-4 ans est vraiment quelque chose qui m'a fait progresser dans la programmation en général et en simplicité en particulier. Par exemple quand j'étais encore à la fac je faisais surtout du OCaml et des Shell scripts. Un beau jour je me suis rendu compte que j'écrivais beaucoup plus rapidement mes programmes avec le Shell qu'avec OCaml – alors que ce langage très primitif qu'est le Shell devrait être battu à plate couture par le langage de très haut niveau qu'est OCaml! C'est donc dans ma pratique de ces langages que je devais chercher l'explication et En faisant un peu d'autocritique je me suis rendu compte quellen programmant OCaml je passais beaucoup plus de temps à m'amuser et à explorer les possibilités expressives du langage qu'à me concentrer réellement sur les fonctions de me programme. Bien-sûr cette exploration a aussi des vertus mais en ce qui concerne la recherche de simplicité elles sont plutôt nuisibles.
    Quand on programme le Shell tout est simple: typiquement une fonction lit son entrée sur STDIN écrit sa réponse sur STDOUT e basta.

    Ce point est particulièrement important si tu fais de la POO avec un langage tel que Java, où tout est un object ce qui pousse naturellement à faire de plutôt mauvaises modélisations (souvent beaucoup trop granulaires et avec les relations de dépendance dans le mauvais sens) et à définir trois classes là où le problème n'en exige qu'une.

    Bonne chance!

  • [^] # Re: J'aime pas :)

    Posté par  (site web personnel) . En réponse au journal Mi kama sona e toki pona*. Évalué à 5.

    Rien que son nom, toki pona peut s'interpréter de différentes manières tel que "langue du bien" ou […]

    ou encore novlangue. ;-) (Je taquine, rien de sérieux.)

    L'expérience que tu décris par “De part sa simplicité, la langue force à changer sa manière de penser” je l'ai en partie vécue en m'installant en Allemagne il y a 10 ans avec des connaissances rudimentaires dans la langue. Cela m'a permis de retrouver les chemin vers les catégories les plus simples comme “oui, non, bon, mauvais, j'aime, j'aime pas, je veux, je veux pas” et rappelé que s'il est louable de faire preuve d'esprit de finesse, il ne faut pas pour autant perdre de vue ces catégories car lorsque le temps est venu d'agir ou décider, il n'y a pas toujours d'entre deux et d'équilibre.

    À ce propos, les gens de la mer étaient-ils vraiment obligés de créer tout un vocabulaire redondant avec le français courant ?

    Il faut croire que oui. :-) Surtout il ne faut pas oublier que jusqu'à il n'y a pas très longtemps le français n'était pas forcément parlé par les français, qui pratiquaient des langues régionales. Les gens de la mer dont le vocabulaire a irrigué notre langue n'étaient pas forcément français et de nombreux termes de marine proviennent du néerlandais.

    Gauche, droite, avant et arrière sont vraiment ambiguës au point de nécessiter bâbord, tribord, proue et poupe ?

    Sur un bateau entraîné par des rameurs, ces derniers et le barreur (qui guide l'embarcation) regardent dans des directions opposées, ce qui rend gauche et droite assez ambigus.

  • [^] # Re: Mes premières lignes de code professionnelles

    Posté par  (site web personnel) . En réponse au journal Des nouvelles de Fortran. Évalué à 4.

    Des IF sans ELSE, c'est rude ! Ca sent le GO TO !

    Si on veut écrire du code spaghetti dégueulasse le GO TO est complètement obsolète: la programmation asynchrone avec callbacks à la NodeJS ou bien les architectures d'applications décentralisées faisant un usage intensif des “bus d'évènements” surpassent largement le GO TO dans leur acceptation techno-sociale ou leur champ d'action. ;-)

  • [^] # Re: J'ai trouvé

    Posté par  (site web personnel) . En réponse au message Perte de données sous linux. Évalué à 3.

    J’ai retrouvé mes données.

    Très bonne nouvelle!

    Cependant si cela était amené à se reproduire et que tu ne disposais pas de sauvegardes il y a un réflexe absolument vital à avoir: ne pas utiliser en écriture le disque ou les partitions où sont enregistrées les fichiers “perdus”: il faut éviter le moindre risque que l'OS réclame l'espace utilisé par les fichiers (cas du rm -rf malheureux par exemple).

    Donc booter en read-only, si besoin depuis un système de récupération. À l'époque j'avais eu une bonne expérience avec https://www.cgsecurity.org/wiki/TestDisk sous FreeBSD.

    Ceci dit le plus simple est d'avoir une sauvegarde à jour. (On trouve des volume USB de 2TB dans le 50 EUR aujourd'hui ce qui devrait amplement faire l'affaire et le stockage en ligne est relativement abordable aussi.)

  • [^] # Re: Sans bruit?

    Posté par  (site web personnel) . En réponse au journal Victor Hugo : « Les nains sapent sans bruit le travail des géants ». Évalué à 4.

    (Atchoum est en quarentaine.)

  • [^] # Re: Sans bruit?

    Posté par  (site web personnel) . En réponse au journal Victor Hugo : « Les nains sapent sans bruit le travail des géants ». Évalué à 3.

    D'ailleurs depuis quelques jours l'un d'entre eux manque à l'appel.

  • [^] # Re: Les nains sont discrets

    Posté par  (site web personnel) . En réponse au journal Victor Hugo : « Les nains sapent sans bruit le travail des géants ». Évalué à 4.

    L'œuvre des VRPs dédiée aux nains est ample, majestueuese et indispensable. “Je voudrais être un nain” ou encore “Les nénés des nanas des nains.”

  • [^] # Re: Pires inventions à mon avis

    Posté par  (site web personnel) . En réponse au journal Mon Top 5 des inventions geeks des 20 dernières années. Évalué à 6.

    Ou une carte russe. Les cartes russes sont (ou étaient) connues pour donner des infos fausses par endroits comme, par exemple, signaler qu'une route est accessible des véhicules lourds comme des camions semi-remorques ou des chars alors qu'elle ne l'est pas.

    Je confirme, c'est ce qui a fait foirer ma dernière tentative d'invasion de la Russie. Du coup avec les copains on est rentrés à la caserne et on a pris l'apéro.

  • [^] # Re: 20 minutes?

    Posté par  (site web personnel) . En réponse au journal De l'importance de la précision. Évalué à 3.

    Et tu as vu où que les textes de 20 minutes venaient de près ou de loin de l'AFP? Je ne veux pas l'exclure mais le texte de l'article cité dit seulement “20 Minutes avec agence” et le nom de cette agence n'est manifestement pas un motif de fierté.

  • # 20 minutes?

    Posté par  (site web personnel) . En réponse au journal De l'importance de la précision. Évalué à 10.

    Y a-t-il de bonnes raisons de lire 20 minutes? Ou bien c'est juste pour le plaisir de lire des textes approximatifs qui servent d'alibi à un déversoir de publicités?

  • [^] # Re: Violence

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

    • Frozen Bubble (ce n'est pas le jeu le plus intelligent, …)

    À côté de Circus Linux le jeu Frozen Bubble fait très CSP+ qui aide ses enfants à poser des questions aux petits bateaux de Noëlle Bréham.

  • # Il faut éditer … avec un éditeur :-)

    Posté par  (site web personnel) . En réponse au message Commande introuvable/permission refusé dans le terminal. Évalué à 6. Dernière modification le 08 octobre 2019 à 00:51.

    Avant de commencer, une suggestion: la prochaine fois n'hésite pas à mettre une copie conforme de ton interaction avec le terminal, au besoin avec quelques commentaires, plutôt que de paraphraser cette interaction. Cela rend les choses plus faciles pour les gens qui veulent t'aider!

    Ce que tu dis vs. ce que tu crois dire

    Si tu envoies /etc/bash.bashrc dans ton terminal, le shell comprend “Je veux charger et exécuter le programme situé dans le fichier /etc/bash.bashrc, sans arguments.” Il te répond que charger et exécuter le fichier /etc/bash.bashrc n'est pas permis, parceque ce fichier n'a pas le bit x – cf. les modes de fichiers.

    Si tu envoies sudo /etc/bash.bashrc tu dis quelque chose comme “Je veux charger et exécuter le programme situé dans le fichier /etc/bash.bashrc, sans arguments et comme super utilisateur.” et sudo te répond que cette commande n'existe pas, ce qui est essentiellement le même message que le premier.

    Si tu envoies su /etc/bash.bashrc tu dis quelque chose comme “Ouvre un terminal pour l'utilisateur /etc/bash.bashrc.” qui bien-sûr n'existe pas.

    Pour éditer ton fichier

    Pour éditer ton fichier, tu peux essayer quelque chose comme

    % sudo su -
    # nano /etc/bash.bashrc
    

    si nano est ton éditeur préféré.

  • [^] # Re: Intégrité, intégrité ...

    Posté par  (site web personnel) . En réponse au journal Tristesse. Évalué à 3.

    Et non, c'est pas parce qu'on fait plein de bonnes choses qu'on peut se permettre d'en faire/dire une mauvaise (sauf si on parle du karma sur DLFP, certes).

    Ou qu'on fait une baguette extraordinaire! (Merci Blanche Gardin.)

    https://www.youtube.com/watch?v=fxdROcLj0Ww