gipoisson a écrit 76 commentaires

  • [^] # Re: Au début était la flemme…

    Posté par . En réponse au journal `smk`, un make sans Makefile. Évalué à 6.

    Comme le journal évoque Sénèque, voir aussi son L’Oisiveté. J'ajoute un journal dédié au thème, The Idler ! Ici par exemple, on attribue ceci à Bill Gate : “[…]an unwritten rule attributed to Bill Gates from the software industry: hire lazy programmers. Why? Lazy programmers will figure out the smartest way to get something done to avoid having to do it.”

  • [^] # Re: Oui mais

    Posté par . En réponse au journal Non, l'inférence de types n'est pas du typage faible. Oui, elle rend les programmes plus lisibles. Évalué à 3.

    Dans mon cas, les deux probabilités sont nulles grâce à deux options de configuration :

    • brouillon : -Wno-missing-signatures
    • release : -Wmissing-signatures
  • [^] # Re: Oui mais

    Posté par . En réponse au journal Non, l'inférence de types n'est pas du typage faible. Oui, elle rend les programmes plus lisibles. Évalué à 5. Dernière modification le 21/11/18 à 23:10.

    Dans l'absolu, ce n’est pas une mauvaise pratique de mettre les signatures car, pour moi au moins, elles font partie de la documentation.

    Cependant, selon le code sur lequel l’on travaille et pendant la phase « brouillon » du code, mettre systématiquement des signatures reviendrait à toujours rouler sur un vélo la tête dans le guidon. En effet, les besoins immédiats ont tendance à faire écrire des signatures (et implémentations) mono-morphiques même là où cela ne comporte aucun avantage. Et plus tard, par exemple, il n’est pas rare de se rendre compte que des implémentations « obtuses » respectivement de type Foo et Bar ont beaucoup de ressemblances ; on se mettra alors à faire du refactoring a posteriori alors qu’il aurait été inutile si l’on avait écrit une implémentation plus générale du premier coup. Il y a d’autres cas plus gênants, voire limitants, qui peuvent arriver quand on met systématiquement les signatures mais c’est presque toujours lors d’usages avancés de Haskell (donc à un stade où l’on n'a plus besoin des recommandations d’un quidam sur DLFP).

    En gros, je trouve plus efficace de se défaire des signatures pendant la phase « brouillon » du cycle de vie d’un code et de les mettre au moment où le code passe en mode release. Mes 2$.

  • [^] # Re: Théorie des patches

    Posté par . En réponse au journal Pijul 0.11. Évalué à 2.

    La théorie est utilisable indépendamment de Darcs. Ce dernier est lui aussi utilisable, mais c’est vrai que certaines de ces commandes sont lentes si elles sont appliquées sur un dépôt très vaste, typiquement des dépôts de la grandeur d’un compilateur grand public ou d’un noyau de même nature. Par contre, sur de petits et moyens dépôts, Darcs est tout à fait rapide. Et quelle que soit la taille des dépôts, ses simplicité et élégance à l’usage sont AMHA des atouts à considérer.

    Aussi, la compréhension de la théorie des patches n’est-elle pas nécessaire pour se mettre à Darcs. Ceci est un récent fil de discussion (en anglais) qui comporte des éléments de comparaison entre Git, Mercurial et Darcs. Dans la discussion, Ben Franksen est le nom de la personne qui, à mon avis, en connaît le plus sur le Darcs de ces dernières années que n’importe qui d’autre, le mainteneur officiel du projet inclus.

  • [^] # Re: Quelle est la marque du clavier?

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 2.

    Les touches ont la même forme. Le clavier a été surtout acheté pour des caractéristiques autres que la forme des touches ; grosso modo : AZERTY, sans fil, rétro-éclairage configurable par un bouton ON/OFF.

    Quant à tes cogitations sur un éventuel bricolage avant achat, elles seraient correctes ! Voici l'origine du clavier : pendant un voyage dans l'est asiatique, une connaissance a flashé sur un modèle de claviers et a voulu m'en apporter un comme cadeau-surprise. Comme il n'y avait que des QWERTY au premier passage, une commande d'AZERTY a été effectuée. Au final, deux claviers « AZERTY » ont été achetés, le sien et le mien, même si les termes de la commande n'avaient pas été respectés à la lettre.

    En effet, la personne en question n'étant pas très au fait des « geekeries », le constat fait à l'achat était que c'était des AZERTY au niveau des touches donnant des lettres et des QWERTY pour les touches des symboles. Cela était un facteur additif à l'effet de surprise, donc une raison de plus d'absolument faire l'achat !

    Cependant, tout est en ordre maintenant : son clavier est utilisé en mode WYS(aisis)WYG avec une installation Fedora que je lui ai faite ; les histoires de terminaux virtuels et autres SSH sont pour mon clavier et non pas l'autre.

  • [^] # Re: Facile

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 5.

    Solution

    J'ai réussi à torcher une bonne configuration grâce à tes indications, tous mes remerciements ! Une description détaillée se trouve infra pour la postérité.

    xev

    J'ai commencé avec ta suggestion de xev et les caractères d’intérêt donnaient ceci :

    $ xev
    # a (Un # indique ce qui est marqué sur la touche dans le post initial.)
    … keycode 24 (keysym 0x61, a) …
    # z
    … keycode 25 (keysym 0x7a, z) …
    # q
    … keycode 38 (keysym 0x71, q) …
    # w
    … keycode 52 (keysym 0x77, w) …
    # m
    … keycode 47 (keysym 0x6d, m) …
    # ;
    … keycode 58 (keysym 0x2c, comma) …

    À partir de là, un fichier Xmodmap s'imposait, du genre

    $ cat ~/.Xmodmap
    keycode  24 = a A a A
    keycode  38 = q Q q Q
    keycode  47 = m M m M
    keycode  52 = w W w W
    keycode  58 = semicolon colon semicolon colon
    keycode  25 = z Z z W

    Alors, on change la disposition en QWERTY, re-démarre la session et laisse X faire sa magie ? Que nenni ! La machine fait tourner Wayland et tout ce détour par xev+xmodmap (voire xkbcomp pour tenter une migration automatique de xmodmap à la bonne façon de faire) était pour la gallérie car le ~/.Xmodmap sera ignoré par un système sous Wayland. À noter que la majorité des liens bien indexés sur le Web orientent vers cette façon de faire un peu caduque. L'exercice était quand même instructif.

    xkb

    Il était temps donc d’arrêter la procrastination afin de se coltiner XKB et il s'est avéré que c'est un mécanisme élégant et facile à mettre en place. Ce format :

    less /usr/share/X11/xkb/symbols/us
        key <TLDE> {        [     grave,    asciitilde      ]       };
        key <AE01> {        [         1,    exclam          ]       };
        key <AD01> {        [         q,    Q               ]       };

    pourrait paraître abscons de loin mais il est des plus simples. Dans <…>, si on ignore la première lettre, les rangées des touches sont numérotées en A,B,C, … en commençant par le bas (là où se trouve la touche SPACE). Donc <AE01> et <AD01> indiquent à chaque fois la première touche (01), respectivement pour les rangées E et D. Simple et élégant ! Plus besoin d'intercepter des événements à la xev à la recherche des identifiants des touches ! Ce qui est entre {}; correspond à ce que renverra une touche donnée après saisie. Alors, j'ai fait mu-muse avec ce nouveau jouet :

    # root
    cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/us.backup
    vi /usr/share/X11/xkb/symbols/us # pour avoir
      key <AD01> { [ a, A, agrave, acircumflex  ] };
      key <AD02> { [ z, Z                       ] };
      key <AB02> { [ x, X, 0x10000AB, 0x10000BB ] }; // «,»
      ⋮

    Après avoir ajouté de l'Unicode partout où il y avait de la place sur les touches (oui oui, j'ai joué à fond !), il restait à activer tout le bousin via systemd. Et pour cela, c'est ta suggestion de us-qwerty/us-intl qui orientait dans le bon chemin :

    # root
    localectl set-x11-keymap us altgr-intl && systemctl reboot

    Au redémarrage, tout est nickel … du moins tant que la session ouverte est « graphique » . Ainsi, une session dans un terminal virtuel (CTRL+ALT+F(3|4|…)) replongera le clavier dans ses travers. J'imagine qu'il y a une solution pour ça aussi, peut-être un truc à appeler dans le ~/.bashrc, mais l'état actuel des choses me satisfait, donc re-bonjour la procrastination ! Quid de SSH et d'autres types de sessions ? Aucune idée pour le moment, tout baigne, on vous dit qu'on procrastine, qu'on n'aimerait pas trop abuser du clavier de peur qu'il ne se blo

  • [^] # Re: Quelle est la marque du clavier?

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 1.

    Ha, les triades, même pas peur ! C'est le retour aux origines, ça ! Tous les rudiments de kanji que j'ai sont le fruit d'un apprentissage décidé après avoir lu un livre dans lequel les personnages tournent autour de samouraïs. C'était un de ces chefs-d'œuvres artistiques à séquelles : il y a de l'art qui engendre de sortes de cultes pour les aficionados ; le culte pour ce livre-là était, dans mon cas, l'apprentissage du kanji ! Auteure : Helen DeWitt ; titre : The Last Samurai ; recommendation : regarder le film Seven Samurai d'Akira Kurosawa avant de se plonger dans la lecture du bouquin.

    Au moment de l'apprentissage, on nous inculquait, si je ne m'abuse, que « kanji » était aussi valable en Corée et certaines parties de la Chine mais je suis vraiment un noob sur le sujet, dont acte de tes clarifications, tu me paraît être à l'aise avec ces langues. Et merci !

  • [^] # Re: Quelle est la marque du clavier?

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 2. Dernière modification le 09/11/18 à 06:39.

    Le clavier est tout neuf.

  • [^] # Re: Quelle est la marque du clavier?

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 3.

    C'est une marque chinoise, écrite en kanji, avec une étiquette sous le clavier qui indique un site web dont l'URL est complètement bidonne : même si ma compréhension des différents kanji est très rudimentaire, je n'ai aucun doute que la page à laquelle renvoie l'URL n'a rien à voir avec les claviers (je n'ai même pas pris la peine d'essayer de la traduction automatique).

    À part ça, je n'étais pas au courant de la distinction xkbmodel vs. xbklayout, merci du tuyau, je le tenterai et rapporterai les résultats dès que j'aurai le clavier sous la main.

  • [^] # Re: Facile

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 2.

    Merci beaucoup, à première vue, ton explication me parait être la plus prometteuse, je n'ai pas le clavier pour le moment afin de confirmer, je te reviendrai plus tard.

    P.S. C'est moi qui ai complètement merdé avec ³ au lieu de ~, à force de faire du ASCII art, les touches se sont emmêlées. Toutes mes plates !

  • [^] # Re: Belge ?

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 2.

    Non, ce n'est pas du français belge car dans ce cas, on devrait avoir ceci.

  • [^] # Re: qwerty

    Posté par . En réponse au message [RÈSOLU] Comment configurer un clavier inhabituel ?. Évalué à 2.

    Bien vu pour le ³, c'était une erreur de frappe de ma part, merci. Je l’appellerai aussi QWERTY + échange de touches, il y a une proposition plus bas dans les commentaires qui me semble prometteuse.

  • # UNIX vs MS-DOS Epoch

    Posté par . En réponse au journal Réduire la taille des exécutables générés avec PyInstaller. Évalué à 2.

    Ce qui saute au yeux… c'est cette histoire de date. D'où on est en 1980 ?

    Apparemment, en établissant la liste des fichiers, 7-zip modifie les dates pour les ré-initialiser à l'heure Unix. Sous Windows, ce moment ne correspond pas à ce qu'on rencontre sur les systèmes *nix, du moins d'après ce blog. D'où les dates « 1980 » que tu as rencontrées.

  • [^] # Re: Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 1.

    L'option dynamic-word-wrap de Kate ne correspond absolument pas aux tabulations élastiques.

    Tout à fait. J'admets que son utilisation dans mon message initial était incongrue, dont acte. La bonne doc de l'option se trouve ici. Je l'ai mentionnée parce qu'à ce moment, je venais de lire cette page (voir les commentaires) ; depuis, les choses ont changé du côté de Kate.

    À noter qu'à part cette variable de document, dans les APIs de KDE demeurent les notions de dynamic vs static word wraps. Voir par exemple là-bas.

    il faut plusieurs tabulations sur la ligne 10 pour arriver au niveau des lignes 11 et 12.

    Euh, je ne clame pas que Kate met parfaitement en œuvre les idées de Nick. Sur son blog, que j'ai découvert hier grâce au journal de gasche, il a tenu une historique étalée sur plusieurs années pour relater les progrès qu'il observait dans l'implémentation de son idée originale. À un moment donné, il y a eu une tentative qu'il a qualifiée de “elastic tabstop lite” ; les deux images que j'ai postées visaient à montrer que Kate rentre dans cette catégorie d'implémentation édulcorée.

  • [^] # Re: Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 1.

    La discussion est partie dans tous les sens. Tentative de récapitulation : au départ (dans le journal), il est question de tabstop (taquet de tabulation) et de comment le gérer sémantiquement pour éviter des débats sans fins (comme le présent) sur les espaces dans du code.

    La solution proposée était que la touche TAB, lorsqu'il s'agit d'aligner, ferait abstraction des longueurs d'espaces attendues, que l'éditeur procéderait à une réorganisation visuelle tout en insérant qu'un seul blanc.

    Les deux images que j'ai postées se contentaient de montrer que Kate pouvait procéder à une part de cette abstraction mais de façon imparfaite : les longueurs des espaces insérés étaient certes dynamiques mais plusieurs espaces étaient quand même insérés.

    Alors, je ne vois pas à quoi « tabulation normale » répond dans ton message. S'il fait référence aux logiciels de traitement de texte, évidemment que ceux-ci peuvent insérer des espaces de longueurs variables pour des besoins d'alignement. Seulement, aux dernières nouvelles, Kate ne fait pas de traitement de texte.

  • [^] # Re: Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 1.

    je ne suis pas sûr que dynamic word wrap soit liée aux tabulations. Plutôt, ça permet de couper automatiquement les lignes trop longues pour éviter d'avoir à défiler horizontalement pour voir les fins de lignes.

    Cela existe presque dans tous les éditeurs de texte (du moins ceux qui proposent d'éditer du code). La nomenclature de Kate pour ça est “Static Word Wrap”.

  • [^] # Re: Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 1.

    C'est ce que fait Kate mais une ligne à la fois, ce qui nécessite de faire des modifications dans les lignes adjacentes lorsque la ligne de référence a changé (voir le GIF dans le fil en-bas). L'idée de Nick est de rendre l'ajustement automatique dans toutes les lignes concernées. Il appelle l'approche telle que celle de Kate “elastic tabstops lite”.

  • [^] # Re: Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 3.

    Une image animée pour compléter :

  • [^] # Re: Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 1.

    Peut-être que c'est moi qui ai raté un truc dans l'idée d'élasticité. Voici deux extraits de l'article de Nick Gavgaard.

    For as long as we continue to define each tabstop as being a multiple of N characters we will never be able to solve this problem satisfactorily.

    Rather than saying that a tab character places the text that follows it at the next Nth column, we should say that a tab character is a delimiter between table cells in a manner more reminiscent of how they're used in tab separated value (TSV) files.

    D'après ma comprenette, l'idée est que la touche TAB n'est plus équivalente à un multiple donné d'espaces à placer absolument dès qu'on l'invoque. Elle s'adapte suivant le contexte environnant. Sous cette lumière, revisitons la ligne 10 :

    • l'espace engendré par le premier TAB après « ; » est clairement plus petit que celui se trouvant avant « x(); », ce dernier respectant la spécification « indent-width=8 » dans l'en-tête du fichier ;
    • l'espace résultant des trois TAB suivant est conforme à la longueur fixe spécifiée ;
    • le dernier espace, juste avant « */ » est minuscule.

    Tous ces ajustements étant faits pour s'adapter aux autres commentaires dans les lignes 11 et 12. D'après ma compréhension du concept donc, ceci est un parfait exemple d'un TAB qui se comporte comme si c'était « un marqueur de cellules à la manière d'un tableur », pour paraphraser Nick Gavgaard.

    Maintenant, comme tu le fais fort bien remarquer, dans ma session neovim par exemple, j'aurai le même comportement, à une différence près : ce n'est pas le comportement par défaut et ça dépend de comment les TAB sont configurés. Dans Kate, le truc y est compilé par défaut mais reste configurable ; l'en-tête « dynamic-word-wrap » que j'ai placée dans l'exemple était redondante avec la valeur par défaut. De ce poit de vue, les développeurs de Kate ont changé la « sémantique »1 de TAB selon la manière dont Nick le voudrait.


    1. Ailleurs, j'ai remarqué que tu t'insurges contre l'idée d'une sémantique quelconque de TAB, soit. Aussi, Haskell est un autre langage où l'indentation a (optionnellement) de la sémantique. 

  • [^] # Re: Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 1.

    J'ai oublié comment embarquer (embed) une image dans un commentaire, c'était une histoire de cache, toute ma reconnaissance à une âme charitable qui pourrait m'éclairer. Peut-être que la fonctionnalité n'existe plus … Enfin, bref, l'illustration dans le message parent se trouve chez https://imgur.com/a/hO9b8Ce

  • # Kate

    Posté par . En réponse au journal Fins de tabulation élastiques: la bonne manière d'indenter et d'aligner le code. Évalué à 5. Dernière modification le 29/07/18 à 23:14.

    Merci de mettre une nomenclature « standardisée » sur la chose, je l'ignorais.

    Dans Kate, ça existe sous l'appellation “Dynamic Word Wrap” et ça se règle soit dans l'interface graphique soit dans les variables de documents.

    Illustration

    Dans la figure, les petits marqueurs ressemblant à des guillemets fermant indiquent des tabulations. Les marqueurs des lignes 10 à 13 montrent que la longueur des tabulations est adaptative. À chaque fois, remarquez la longueur de TAB juste après le point-virgule et juste avant la fermeture du commentaire.

    Après, j'imagine qu'il est très peu probable qu'il y ait des projets qui exigeraient Kate pour le développement, donc Kate c'est cool pour les elastic tabstops mais ce n'est guère « industriel ».

  • [^] # Re: Tab Suspender

    Posté par . En réponse au journal tlimit: un addon de navigateur pour limiter le nombre de tabs ouverts. Évalué à 3.

    Je n'avais aucune idée de la dépréciation de l'extension, d'habitude Firefox affiche des avertissements quand une extension est obsolète mais pour celle-ci, il n y a rien d'affiché quand j'ouvre la page des préférences. Alors, merci du signalement !

    En creusant un peu, on constate que le développeur a effectivement abandonné le projet, à l'heure actuelle le dernier commit date du 4 novembre 2017 et il y a un avertissement clair à la page liée.

    Le nouveau projet est Auto Tab Discard, par le même contributeur, voir ici et .

  • # Tab Suspender

    Posté par . En réponse au journal tlimit: un addon de navigateur pour limiter le nombre de tabs ouverts. Évalué à 5.

    Une autre approche est celle de Tab Suspender qui fige la consommation des ressources de tous les N+1-ième onglets, dès que l'un de ceux-ci est ouvert depuis plus de X minutes. N et X sont bien entendu configurables. Dès que l'on bascule sur un onglet figé, il est rechargé et le cycle de gélification concernera le reste des onglets ouverts.

  • [^] # Re: Pandoc

    Posté par . En réponse à la dépêche Trois outils pour développeur : MailHog, Tokei et Pandoc. Évalué à 2.

    C'est un cauchemar de dépendences digne des pire paquets d'Haskell […] un petit nix-store -q --graph sur pandoc me donne […] un graph de + de 6500 dependances.

    Il y a tout sauf de l'hyperbole dans cette citation :) Parmi les 6500 dépendances, y aurait-il la glibc ou équivalent ?

    Plus sérieusement, ma réponse initiale concernait les propos d'anaseto et Ingo Schwarze qui parlaient de façon on ne peut plus claire de dépendances directes. Matthias Kilian a même dû s'assurer de désinstaller toute autre chose différente de GHC & cabal pour être sûr de ne tirer que le strict minimum Haskell requis à la compilation de Pandoc.

  • [^] # Re: Pandoc

    Posté par . En réponse à la dépêche Trois outils pour développeur : MailHog, Tokei et Pandoc. Évalué à 7.

    Dans les points qui me chagrinent un peu dans ce logiciel, c'est […] surtout le nombre de dépendances (exagéré même selon les standards Haskell, autour de 100 !) […]

    Factuellement, les courriels de Matthias Kilian et d'Ingo Schwarze ne sont pas corrects quant au nombre de dépendances directes de Pandoc car celui-ci n'atteint pas la centaine :

    • moins d'une soixantaine si on veut le binaire pandoc
    • une dizaine de plus si on ajoute le binaire trypandoc

    Néanmoins, l'histoire est tout autre si l'on ajoute les dépendances transitives ; mais dans ce cas, on arrivera à bout du compte à reprocher à Pandoc de dépendre de la glibc et équivalents :)

    Au-delà de cette banale comptabilité, la vraie question consiste dans le pourquoi de toutes ces dépendances et la réponse est donnée dans l'aide du logiciel : “Pandoc includes a Haskell library and a standalone command-line program. The library includes separate modules for each input and output format, so adding a new input or output format just requires adding a new module.” que je traduis de la sorte :

    « Le projet Pandoc englobe une bibliothèque et un binaire à lancer sur la ligne de commandes. La bibliothèque se sert d'un module dédié afin de traiter chaque format d'entrée (respectivement de sortie) […] »

    Généralement, les modules Haskell suffisamment distincts les uns des autres se retrouvent dans des paquets différents. Vu la quantité de formats que supporte Pandoc et sans parler des extensions (à la fois celles mentionnées dans la dépêche et celles-ci), il n'est pas étonnant d'avoir des dizaines de paquets comme dépendances.

    Cela dit, étant donné à qui je répond, je n'ai pas de doute que ma logorrhée supra est superflue, la personne en question étant sans doute déjà au courant de tout ça. Peut-être que la partie citée au début de ce commentaire était sarcastique. Plus important, en 2018, on ne devrait plus utiliser cabal install pandoc pour compiler Pandoc comme dans le courriel de Matthias Kilian ; il est temps de rafraichir les workflows et de passer à cabal new-build pandoc et consorts.