Gil Cot ✔ a écrit 5678 commentaires

  • [^] # Re: Comment est-ce possible ?

    Posté par  (site web personnel, Mastodon) . En réponse au lien Un 29 février ? C'est quoi ça ? C'est nouveau ?. Évalué à 2 (+0/-0).

    Eh oui, les supers devs n’ont pas attendu StackOverflow et Gépéto pour recopier du code sans trop comprendre :->

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Comment est-ce possible ?

    Posté par  (site web personnel, Mastodon) . En réponse au lien Un 29 février ? C'est quoi ça ? C'est nouveau ?. Évalué à 5 (+3/-0).

    qui irait croire qu'il n'y a pas…

    À tout hasard :

    • Des gens qui sont au courant des secondes intercalaires (RIP « 86400 s / j »)
    • Les gens qui savent qu’entre deux jours il peut historiquement y en avoir plusieurs (au moins le saut du calendrier julien au grégorien)
    • Tous les Jack Baeur dont la journée dure plusieurs épisodes, et d’autres qui soufflent de voir arriver la fin du Jour de la marmotte, etc.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: L

    Posté par  (site web personnel, Mastodon) . En réponse au journal Tracim - développement d'une fonctionnalité "journal de bord" - envie de tester ?. Évalué à 2 (+0/-0). Dernière modification le 04 mars 2024 à 11:57.

    (par exemple si la session change de langue, ou que /etc/xdg/user-dirs.defaults est modifié - certains environnements proposent ce renommage automatiquement)

    Ah… C’est donc pour cela que j’ai d’autres noms : c’est nommé d’après mon choix de langue d’interface (espéranto.)

    le fichier journal n'est pas censé bouger et son emplacement ne devrait pas dépendre de l'existence d'une variable après première configuration idéalement

    Normalement, si le fichier journal bouge, il faudra que l’utilisateur mette à jour manuellement le fichier de configuration. Le bloc en question (lignes 27 à 37) n’est appelé que pour la première configuration …et donc JOURNAL_FILE n’est plus modifié ;)

    Il faudrait plutôt détecter que JOURNAL_FILE n'existe pas / plus et se plaindre.

    Ça c’est un autre point qu’il faut adresser entre les lignes 62 et 63 (avant les utilisations de la variable, et après avoir lu la configuration) par quelque chose comme :

    if [ ! -f "${JOURNAL_FILE}" ]; then
          >&2 printf 'Cannot found %s.\n' "${JOURNAL_FILE}"
          >&2 printf 'Please correct JOURNAL_FILE= in %s.\n' "${CONFIG_FILE}"
          exit 1
    fi

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: L

    Posté par  (site web personnel, Mastodon) . En réponse au journal Tracim - développement d'une fonctionnalité "journal de bord" - envie de tester ?. Évalué à 2 (+0/-0).

    Justement, si XDG_DOCUMENTS_DIR était défini il vaudrait ~/Documents chez toi. Donc si tu tiens à avoir ce fallback il faudrait plutôt faire ainsi :

    if [ ! -f "${CONFIG_FILE}" ]; then
        mkdir -p "$(dirname -- "$CONFIG_FILE")"
        if [ -d "$HOME/Documents" ]; then
            printf 'JOURNAL_FILE="$HOME/Documents/journal.txt"\n' >> "${CONFIG_FILE}"
        else
            printf 'JOURNAL_FILE="${XDG_DOCUMENTS_DIR:-$HOME}/journal.txt"\n' >> "${CONFIG_FILE}"
        fi
        printf 'LESS='"'"'-~ -e +G'"'"'\n'                                >> "${CONFIG_FILE}"
    fi

    La forme {nom_de_variable:-valeur si variable non définie ou vide} est utilisée pour assigner HOME en fallback ;) (c’est la même technique qui a été utilisée pour XDG_CONFIG_HOME juste avant.)
    https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Desmurget

    Posté par  (site web personnel, Mastodon) . En réponse au journal Les écrans : voilà l’ennemi ? Bouquet de liens. Évalué à 3.

    Une autre vidéo, sur le sujet, que j’aime bien https://youtu.be/kXtX3C9SchE?feature=shared

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Broyé du Poitou

    Posté par  (site web personnel, Mastodon) . En réponse à la dépêche Claire Mathieu et les algorithmes. Évalué à 2.

    De la recette de cuisine à l’IA en passant par l’origine mathématico-arabe du mot au travers du calcul de la Pascaline et des métiers Jacquard, Arte met le pied dans le plat et c’est assez bien fait je trouve.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Espoir

    Posté par  (site web personnel, Mastodon) . En réponse au lien Publication de KDE Plasma 6. Évalué à 2 (+0/-0).

    Parlant de nostalgie ou de dépit, je lis que « le cube est de retour » et ça me fait : « ah… Compiz vit encore ? »

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Moi je veux bien t'embaucher ... mais je n'ai aucune idée de ce que tu fais :-)

    Posté par  (site web personnel, Mastodon) . En réponse au journal Mon activité rêvée. Évalué à 2 (+0/-0).

    Autant de choses qui font que ce ne peut être considéré comme un réseau social (on a déjà eu la discussion sous une autre dépêche.)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # shell prototype 4 C

    Posté par  (site web personnel, Mastodon) . En réponse au journal Args parser pour shell. Évalué à 4 (+2/-0).

    Parce que si j’ai un programme en Bash qui fonctionne, j’aurais tout de même un prototype pour savoir où je veux aller avec mon programme en C.

    Si tu prototypes, avec l’idée de réécrire en C, repose-toi plutôt sur AWK (mais c’est un avis qui n’engage que moi.)
    Tu peux directement utiliser PERL aussi, mais l’écrire de façon à pouvoir faire la traduction rapide en C ne produit pas un script très lisible (je trouve.) C’est la force de ce langage (le fameux « mille façons de faire » est sa capacité à s’adapter aux gens venant d’autres langages et paradigmes) et la source des reproches que lui font les gens qui ne connaissent pas.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # [ [[

    Posté par  (site web personnel, Mastodon) . En réponse au journal Args parser pour shell. Évalué à 3 (+1/-0).

    Ou c’est pour une autre raison ? je ne sais plus, peut-être pour une autre raison

    Quand tu es en BASH, utiliser directement [[ permet d’éviter certains écueils de test à moins d’être tatillonne avec les variables ;- (c’est une commande interne introduite par KSH88 et est connu de ZSH aussi.)

    tu n'es pas sûr que [ soit un builtin, ça peut très bien utiliser /usr/bin/[.

    À noter que test est bien une commande interne depuis System III en 1981 (en même temps qu’à été introduit le synonyme [ …retenu par POSIX qui indique « may be implemented as a single linked utility ») La/le spécification/standard POSIX permet que toutes les commandes internes puissent exister comme fonction ou comme binaire séparé : ce dernier cas est utile surtout pour les autres interpréteurs (moyennant quelques arrangements/réécritures, je me souviens d’avoir pu avoir des scripts qui Bourne qui pouvaient être traités aussi par CSH qui par contre va faire plus d’appels) ; et à moins d’indiquer le chemin absolu, éventuellement via un alias, c’est toujours la commande interne qui est prioritaire.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: L

    Posté par  (site web personnel, Mastodon) . En réponse au journal Tracim - développement d'une fonctionnalité "journal de bord" - envie de tester ?. Évalué à 4 (+2/-0).

    Le pire que j’ai vu cette année, c’est sur l’annonce de seraf1 : c’est parti dans tous les sens (je pensais pas qu’il y avait encore de l’intérêt pour les scripts shell) :-D
    Au moins ce ne sont pas des centaines de commentaires sur le complotisme-anticomplotisme-etc.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: et les drivers graphiques sous Linux ?

    Posté par  (site web personnel, Mastodon) . En réponse au lien Fenêtre travaille sur le Hot Patching (Redmond découvre enfin que c’est faisable ?). Évalué à 2 (+0/-0).

    Ouf, je me demandais de quoi il était question. Bien que n’ayant plus X sur mes postes persos, je n’ai souvenir de devoir rebooter l’ordi en dehors de la mise à jour des pilotes systèmes ou du noyau : pour Xorg fallait juste le relancer (enfin la session X) et ça c’est comme le reste (je mets à jour LibreOffice je dois le relancer…)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: et les drivers graphiques sous Linux ?

    Posté par  (site web personnel, Mastodon) . En réponse au lien Fenêtre travaille sur le Hot Patching (Redmond découvre enfin que c’est faisable ?). Évalué à 3 (+1/-0).

    Ça dépend de l’usage de la bécane. Quand tu ne l’utilises qu’interactivement, alors oui tu l’éteins. Quand la machine doit continuer à bosser sans que tu sois devant (entre les chercheurs d’E.T, les ânes et autres singes partageurs, les mineurs de l’ère numérique, et j’en passe), alors vaut mieux pas l’éteindre avant la fin. Perso, il m’arrive de partir en laissant tourner ma machine qui est en train de faire des batchs divers, mais il sait s’éteindre tout seul quand il a fini.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: L

    Posté par  (site web personnel, Mastodon) . En réponse au journal Tracim - développement d'une fonctionnalité "journal de bord" - envie de tester ?. Évalué à 2 (+0/-0).

    Ah bien vu ; je m’en doutais un peu mais suis pas parvenu à trouver cette liste.
    Du coup, la partie de la configuration se simplifie ainsi :

    if [ ! -f "${CONFIG_FILE}" ]; then
        mkdir -p "$(dirname -- "$CONFIG_FILE")"
        printf 'JOURNAL_FILE="${XDG_DOCUMENTS_DIR:-$HOME}/journal.txt"\n' >> "${CONFIG_FILE}"
        printf 'LESS='"'"'-~ -e +G'"'"'\n'                                >> "${CONFIG_FILE}"
    fi

    La commande xdg-user-dir n’est pas présente partout sinon on aurait pu écrire

        printf 'JOURNAL_FILE="$(xdg-user-dir DOCUMENTS )/journal.txt"\n' >> "${CONFIG_FILE}"

    Merci pour la découverte.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: L

    Posté par  (site web personnel, Mastodon) . En réponse au journal Tracim - développement d'une fonctionnalité "journal de bord" - envie de tester ?. Évalué à 2 (+0/-0).

    Désolé LeBouquetin< ; nous squattons ton annonce ;D Je voulais signaler un autre truc à raphj<
    Il y a un bloc qui pourrait avoir le même traitement que l’éditeur…

        else
            exec "${VIEWER}" -- "${JOURNAL_FILE}"
        fi

    Je m’explique : le visionneur de fichiers a déjà sa variable d’environnement POSIX nommée PAGER. C’est normalement défini (au moins quand il y a man et associés qui sont installés), et si ça ne l’est pas on est dans le même cas que EDITOR qui est vérifié… Or que se passe-t-il si la commande que tu mets par défaut dans le fichier de config n’existe pas ? (c’est de plus en plus rare mais j’ai croisé des bécanes sans less)

        else
            if [ -z "$PAGER" ]; then
                for prog in 'less' 'most' 'pg' 'more' 'lv' 'pager'; do
                    if command -v $prog >/dev/null; then
                        PAGER=$prog
                        break
                    fi
                done
            fi
            if [ -z "$PAGER" ]; then
                >&2 printf 'No pager found. Please set $PAGER.\n'
                exit 1
            fi
            exec "${PAGER}" -- "${JOURNAL_FILE}"
        fi

    Avec cela on peut retirer la ligne du VIEWER de la configuration par défaut.
    Pour la configuration par défaut, mes postes persos sous Linux n’ont pas de sous-répertoire Documents …sauf le seul qui a un DE mais où j’ai plutôt Dokumentoj, Muziko, Filmetoj, etc. Du coup, j’arrive à quelque chose comme

    if [ ! -f "${CONFIG_FILE}" ]; then
        mkdir -p "$(dirname "$CONFIG_FILE")"
        JOURNAL_DIR="${HOME}/Documents"
        if [ ! -f "${JOURNAL_DIR}" ]; then
            JOURNAL_DIR="${HOME}"
        fi
        printf 'JOURNAL_FILE="${JOURNAL_DIR}/journal.txt"\n' >> "${CONFIG_FILE}"
        unset JOURNAL_DIR
        printf 'LESS='"'"'-~ -e +G'"'"'\n'                   >> "${CONFIG_FILE}"
    fi

    Voilà, c’est tout, je pense.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Programmation défensive en bash

    Posté par  (site web personnel, Mastodon) . En réponse au journal Args parser pour shell. Évalué à 3 (+1/-0).

    On peut même faire simplement (mais avec réserve… vous avez trouvé ?)

    Si "${mondossier}" est vide ou n'existe pas ça va planter.

    Exact. Hormis cela, la commande ne râle pas si le dossier existe déjà, raison pour laquelle on peut zapper le test d’existence… En vrai on peut tester si la variable n’est pas vide (-z) ou si le chemin n’est pas déjà utilisé (-e) pour ne pas tenter de remplacer un fichier par un répertoire (il y aura normalement une errreur mais bon.)

    En fait, pour rester dans l’esprit de l’exemple, j’aurais du simplement écrire : mkdir "${mondossier}"
    …parce-que l’option -p nécessite aussi une autre réserve : que le chemin ne soit pas sur un montage absent… La création va se faire mais on va s’arracher les cheveux par la suite…

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Programmation défensive en bash

    Posté par  (site web personnel, Mastodon) . En réponse au journal Args parser pour shell. Évalué à 4 (+2/-0).

    Héhé :) Si tu regardes bien, ce n’est pas exactement le même test

    $ [ -f $variablequinexistepas ] && echo ok || echo ko
    ok
    $ [ -f "$variablequinexistepas" ] && echo ok || echo ko
    ko

    Par moment on ne se souvient plus de pourquoi on fait les chose comme cela …

    La forme [[…]] permet en effet de se prémunir des variables vides non “quoté”s …ou comportant des espaces, etc.

    Effectivement ca fonctionne, mais je trouve plus logique : si quelque chose n'existe pas, je fais ..
    Au contraire de si quelque chose existe … je passe ? sinon je le créer.

    Cette seconde forme se lit : vérifie si le répertoire existe, sinon crée le (et effectivement on ne fait rien s’il existe)
    La première forme est littéralement : vérifie le contraire de si le répertoire existe (oui donc au final si le répertoire n’existe pas), puis alors crée le (sinon je passe)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # Updated 2024-02-14

    Posté par  (site web personnel, Mastodon) . En réponse au lien PrivacyTests.org. Évalué à 4 (+2/-0).

    discussions précédentes 2023-02-03

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Résumé

    Posté par  (site web personnel, Mastodon) . En réponse au lien Unicode misconceptions. Évalué à 4 (+2/-0).

    C’est dommage dans le sens où la religion est contre la traduction par peur des contre-sens si j’ai bien compris. Du coup il faut aller à la source (donc lire et comprendre l’arabe de l’époque et de la région…) sinon c’est une blague (comme de bêtement réciter du bruit…)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Résumé

    Posté par  (site web personnel, Mastodon) . En réponse au lien Unicode misconceptions. Évalué à 3 (+1/-0).

    Si si, un alphabet (au même terme que les systèmes d’écritures latin ou cyrillique) …qui a la particularité de ressembler à un alphasyllabaire comme le sont l’amharique (plus précisément le système d’écriture guèze ou ge'ez) et le devanagari par exemple.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Comparaison avec DeepL

    Posté par  (site web personnel, Mastodon) . En réponse au message une alternative libre à google translate et autre site de traduction est arrivé. Évalué à 3 (+1/-0).

    L’expression en soi ne me parle pas (ou me plonge dans des interrogations philosophiques qui me font me demander si on a affaire à un droïde par exemple.) Dans le contexte présent (la phrase complète et les phrases autour), elle se comprend très bien (même si les natifs peuvent avoir l’impression de lire une sorte de « parler-nègre » comme on dit.)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Du rythme et du gazon

    Posté par  (site web personnel, Mastodon) . En réponse au journal Doom et jardinage. Évalué à 3 (+1/-0).

    Tu veux plutôt dire que ça mesure correctement le tempo des rotors non ?

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Logo

    Posté par  (site web personnel, Mastodon) . En réponse à la dépêche Un annuaire des producteurs locaux en Open-Source. Évalué à 4 (+2/-0).

    On n’était pas loin d’un igloo.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Un vœu pieux, mais une prise de conscience du politique

    Posté par  (site web personnel, Mastodon) . En réponse au lien Leaders in Industry Support White House Call to Address Root Cause of Many of the Worst Cyber Attack. Évalué à 4 (+2/-0). Dernière modification le 28 février 2024 à 05:04.

    Tu sais bien que nous sommes des gentils… :->
    rot13 est le moyen le plus simple (symétrie) et aisé/rapide (à scripter si on n’a pas quelque part un outil qui le fait) quand on n’a pas de balise à se poiler :-)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Programmation défensive en bash

    Posté par  (site web personnel, Mastodon) . En réponse au journal Args parser pour shell. Évalué à 3 (+1/-0).

    Je n'ai pas encore réussi à comprendre le principe des tests unitaires donc pas ( encore ? ) de ça dans mes scripts.

    Quand sera venu le moment, tu pourras ajouter à ta trousse d’outils : bach ou bats ou ShellSpec ou shunit2 ou korn-spec/bash-spec ou zunit etc. (tiens, ça pourrait faire l’objet d’un ou deux journaux si j’ai un peu de bande passante.)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume