Gil Cot ✔ a écrit 6110 commentaires

  • [^] # Re: Qualifié ? Je ne sais pas.

    Posté par  (site web personnel, Mastodon) . En réponse au journal RMS et la FSF. Évalué à 10.

    …Et quelle est sa spécialité mis à part surfer sur la vague ?

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

  • [^] # Re: viewer only, not editor

    Posté par  (site web personnel, Mastodon) . En réponse au message Éditeur de markdown. Évalué à 1.

    Excellent ; je me note de tester ça.
    Les captures d'écran sont proches de ce que fait glow, mais les titres sont gérées de façon plus originales et marrante.

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

  • [^] # Re: .

    Posté par  (site web personnel, Mastodon) . En réponse au journal csvspoon et csvformatmail: l'industrialisation de la manipulation de fichiers csv.. Évalué à 4.

    Exactement la question que je me suis posé car ayant évoqué le sujet récemment ailleurs : fawk, xsv, csvkit, csvtool, tsv-utils, etc.

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

  • [^] # Re: AWK en RUST

    Posté par  (site web personnel, Mastodon) . En réponse au lien Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust. Évalué à 1.

    Ah… comme on en parle, jben nous fait un journal sur sa cuillère

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

  • [^] # Re: Mais pourquoi ?

    Posté par  (site web personnel, Mastodon) . En réponse à la dépêche Sortie de Fedora 34 Beta. Évalué à 1.

    Le commentaire auquel tu réponds me semble troisième degré… Mais le nombre de moinsage illustre bien le ras-le-bol dont tu parles.

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

  • [^] # Re: Juridique du dimanche

    Posté par  (site web personnel, Mastodon) . En réponse au journal Question : Ai-je le droit de refuser d'exécuter un logiciel ?. Évalué à 5.

    Genre tu mets les pages en attente et vas lire le JS avant les autoriser à s'exécuter ?

    /me dubitatif sort

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

  • [^] # Re: Pipe ?

    Posté par  (site web personnel, Mastodon) . En réponse au journal Lancer un logiciel distant depuis sa machine. Évalué à 2.

    Ah oui, j'avais pas tout suivi en effet. Au départ il était vraiment question de purement et simplement abandonner la commande scp (sauf si j'ai mal compris) ; ce qui a fait pas mal râler sur la toile (des gens qui ont du mal comprendre aussi).
    Mais effectivement si la commande est préservée mais le protocole sous-jacent (scp) est remplacé par l'autre (sftp) ; alors t'as entièrement raison de parler de migration et c'est vraiment pas plus mal (on n'aura pas la compatibilité totale mais c'est beaucoup moins de casse et de changement d'outillage.) Tout à fait d'accord que c'est quasiment impossible de sanitizer le fonctionnement car on ne sait pas aisément distinguer une commande dangereuse d'un nom/chemin tordu mais légitime.

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

  • [^] # Re: Bof

    Posté par  (site web personnel, Mastodon) . En réponse à la dépêche Sortie de la version 2.0 de Grisbi, logiciel de comptabilité. Évalué à 2.

    Mille mercis, je vais examiner ça tranquillement.

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

  • [^] # Re: Pipe ?

    Posté par  (site web personnel, Mastodon) . En réponse au journal Lancer un logiciel distant depuis sa machine. Évalué à 2.

    C'est pas vraiment une migration puisque les deux ont toujours existé et ne font pas vraiment la même chose. Mais il y a bien une déprécation pour des raisons techniques qui se résume en gros à : scp n'a aucun lien avec ssh (si ce n'est d'utiliser son tuyau, alors que sftp par contre utilise les mêmes bibliothèques) et cette implémentation bâtarde pose des soucis de sécurité et plus personne n'a la force de maintenir ça avec ce risque.

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

  • [^] # Re: Bof

    Posté par  (site web personnel, Mastodon) . En réponse à la dépêche Sortie de la version 2.0 de Grisbi, logiciel de comptabilité. Évalué à 1.

    GNUCash ou Dolibar ne seraient pas de bonnes alternative ?

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

  • [^] # Re: Bof

    Posté par  (site web personnel, Mastodon) . En réponse à la dépêche Sortie de la version 2.0 de Grisbi, logiciel de comptabilité. Évalué à 1.

    bref, le fameux grand livre comptable quoi. mais difficile de trouver le formalisme exactement attendu dans ce retour en arrière.

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

  • [^] # Re: Pipe ?

    Posté par  (site web personnel, Mastodon) . En réponse au journal Lancer un logiciel distant depuis sa machine. Évalué à 5.

    Je ne m'explique pas pourquoi scp (même compressé) est à ce point si lent par rapport à la concurrence (bien pire que dans ma mémoire) alors que c'est justement son job de faire transiter des données potentiellement volumiques.

    Je n'ai pas vraiment ressenti cette lenteur, mais SCp et SSh ne fonctionnent absolument pas de la même façon… Je ne me rappelle pas bien les détails d'implémentation, mais quand tu fais un tube avec SSh, tu ouvres un pseudo-terminal dont tu connectes l'entrée standard (donc tu envois ton flux exactement comme tu le balancerais si tu le tapais au clavier…) Par contre quand tu fais un SCp, en dessous tu établies un liaison client-serveur (si, si, et toutes les bécanes ayant un serveur ssh ne permettent pas d'accepter du scp —comme c'est paquetagé dans OpenSSH utilisé par défaut dans beaucoup d'Unix, des BSD à Linux en passant par AIX— bah on s'en rend pas compte) comparable à curl/lftp -c/ftpget/ftpput (c'est encore différent du sous-système sftp qui ressemble plus à du ftp classique et utilise un tout autre protocole) Ça fait un certain nombre d'opérations (vérifier et se positionner dans le répertoire cible, vraiment recréer les arborescence quand utilisé en mode récursif, afficher la progression, etc.)

    tar -czf - linux-5.12-rc4/ | ssh remote 'tar -xzf -'

    cet exemple est en fait comparable à ceci :

    # il faut helas preparer le fichier avant car scp ne lit pas stdin
    tar -czf foo.tgz linux-5.12-rc4/ 
    # puis l'envoyer separement 
    scp foo.tgz remote:./ ; rm foo.tgz
    # et en face l'extraire car il n'exploite pas stdout
    tar -xzf foo.tgz ; rm foo.tgz

    et là on voit que la plus grande rapidité apparente, en supposant qu'on ait eu les même protocoles et que les deux outils ne se partagent pas que le mode de transport, est due au fait que dans le premier cas on parallélise presque (la gestion des tubes fait qu'on n'attend pas que tout se fasse séquentiellement)

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

  • [^] # Re: ouch…

    Posté par  (site web personnel, Mastodon) . En réponse au lien OVH : Suite à l'incendie à Strasbourg, des sauvegardes par défaut et gratuites.. Évalué à 1.

    Ils n'ont pas entièrement torts ; la question peut se poser… Mais en même temps, je me dis que c'est pris en compte au vue de la proposition de l'hébergeur. Alors ça me chagrine d'avoir l'impression de lire entre les lignes qu'on tire sur les blessés, et si on ajoute ce french-bashing de l'intérieur alors que le reste du monde a pris cette annonce/proposition très au sérieux, je suis outré et chagriné par nos médias.

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

  • [^] # Re: Étonnant

    Posté par  (site web personnel, Mastodon) . En réponse au lien OVH / RGPD : Vos backups sont perdus ? Il faut le signaler à la CNIL…. Évalué à 3.

    Et ça s'applique aux gens/organismes qui n'ont pas dument déclaré les dits données perdues ?

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

  • # ouch…

    Posté par  (site web personnel, Mastodon) . En réponse au lien OVH : Suite à l'incendie à Strasbourg, des sauvegardes par défaut et gratuites.. Évalué à 2.

    …le tacle à la fin de l'article

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

  • [^] # Re: Anecdote related

    Posté par  (site web personnel, Mastodon) . En réponse au journal Question : Ai-je le droit de refuser d'exécuter un logiciel ?. Évalué à 2.

    Légalement ils peuvent demander un numéro. Mais obligé que le numéro soit mobile c'est absolument de l'abus.
    Tiens, votre logique, pourquoi ne pas l'appliquer dans l'autre sens pour voir ?

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

  • [^] # Re: Des choux et des carottes...

    Posté par  (site web personnel, Mastodon) . En réponse au lien Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust. Évalué à 1.

    et ensuite viennent quelques pensées qu'il en tire, avec en premier : "I think it’s the simple, idiomatic versions that are the most telling. This is the code programmers are likely to write in real life.", alors que j'ai prouvé ci-dessus que ce n'est pas le cas, les developpeurs ne ponderont pas tous le même code dans la vie réelle, il existera des versions différentes avec des performances elles aussi bien différentes.

    Pas tous, mais la majorité, en ayant les mêmes contraintes que celles posées. Mais cela ne signifie pas que c'est la version finale de la majorité, mais le premier truc qui vient à l'esprit d'une personne pas trop perchée. Et sur ce point justement, il dit bien que ce qui l'intéresse c'est que les devs connaissent et comprennent assez ces aspects (comment sont géré les tableaux de hachage, les performances des entrées/sorties et des routines de tri intégrées) de leur langage de prédilection et non des concepts algorithmiques très avancés que peu mettent en œuvre au final (encore en général, et ça vise les petites entreprises qui veulent faire des entretiens à la Foogle/Gacebook pour finalement vous faire pondre des petits trucs bien loin de là) : « I think this is a good interview question because it’s somewhat harder to solve than FizzBuzz, but it doesn’t suffer from the “invert a binary tree on this whiteboard” issue. It’s the kind of thing a programmer might have to write a script for in real life, and it shows whether they understand file I/O, hash tables (maps), and how to use their language’s sort function. There’s a little bit of trickiness in the sorting part, because most hash tables aren’t ordered, and if they are, it’s by key or insertion order and not by value. »

    Le problème est certainement lié à une autre de ses pensées : "I still think this interview question is a good one for a coding question". Si cette question m'était posée telle que lors d'un entretien (hypothèse improbable), je demanderais à l'examinateur dans quel contexte le programme est censé s'exécuter, quels sont les critères importants : performance à tout prix ? code facile à maintenir même 20 ans plus tard par un nouvel arrivant ? Empreinte mémoire minimale ? Espace disque ou IO minimum ? … Même si dans la vie réelle c'est souvent un équilibre entre tous ces critères, rien ne permet de deviner le choix de l'examinateur. Au final il y aura autant de versions que ce choix d'équilibre entre ces critères.

    De ce que j'ai vu pour avoir fait passer un certain nombre d'entretiens et pour en avoir subi de bien costaudes aussi, on ne pense pas forcément à faire le malin ni à donner une réponse exhaustive quand on pense à tout les points que tu évoques. Les examinateurs pas fêlés n'ont normalement pas de choix et veulent juste voir comment est esquissée la solution (et là, en proposant celle de Ben tu le rassures que tu sauras répondre aux urgences au lieu de pinailler quand il y a le feu ; et si en plus tu mets les réserves citées par vous deux, ça montre que tu connais ton langage et sauras optimiser le moment venu)
    Mais sinon, c'est un peu la seconde partie de l'entretien déjà… « After the candidate has a basic solution, you can push it in all sorts of different directions: what about capitalization? punctuation? how does it order two words with the same frequency? what’s the performance bottleneck likely to be? how does it fare in terms of big-O? what’s the memory usage? roughly how long would your program take to process a 1GB file? would your solution still work for 1TB? and so on. Or you can take it in a “software engineering” direction and talk about error handling, testability, turning it into a hardened command line utility, etc. »

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

  • [^] # Re: Des choux et des carottes...

    Posté par  (site web personnel, Mastodon) . En réponse au lien Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust. Évalué à 2.

    Le titre est ce qu'on appelle, je crois, putaclic (il est à parier qu'avec un titre plus honnête il aurait eu beaucoup moins de lectures et de commentaires ici, et probablement de contributions héhé) ;-)

    Alors, pour la version simple et l'optimisée, il a énoncé les critères suivants :

    • on lit un fichier depuis l'entrée standard, et on ne lit pas tout le fichier en mémoire (mais par blocs pouvant être des lignes et au d'au plus 64 kibi)
    • on écrit le nombre d'occurrence des mots le composant du plus élevé au plus bas sur la sortie standard
    • on ne fait pas de distinction de casse et son résultat est en minuscule : "le" et "Le" et "LE" seront tous trois comptés "le 3"
    • on ne se préoccupe pas de l'encodage et des accentuations, on considère qu'on bosse sur de l'ASCII des familles (comme le document de test utilisé)
    • on ne cherche pas à classer les mots ayant la même fréquence d'apparition
    • on n'utilise que les éléments de base du langage (pas de bibliothèque supplémentaire)
    • on n'invente pas sa propre structure de hachage (même s'il a fait une exception pour la variante optimisée en C)
    • on s'évite les trucs de jedi du langage et le recours à l'assembleur ou trucs similaires

    Avec ces trois derniers, il est un peu difficile de trouver un autre algo que celui proposé. Tu trouves autres chose et ce ne sera plus le même test ni le même objectif de l'entretien.
    Mais fort de ces contraintes, il est normal que même la version optimisée ne touche pas fondamentalement la logique première (toute façon l'autre but, comme je le perçois, était de voir comment mettre le profilage à profit ensuite et quand il faut s'avoir s'arrêter dans l'optimisation : pour certains langages il dit qu'on peut faire mieux, mais qu'il estime que c'est trop d'effort pour des poullièmes par rapport au cadre posé)

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

  • [^] # Re: Des choux et des carottes...

    Posté par  (site web personnel, Mastodon) . En réponse au lien Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust. Évalué à 1.

    Le but était de démontrer d'une mesure de temps d'exécution est fantaisiste car il y a moultes façons d'écrire ce programme, avec des temps d'exécution fort différents.

    Ça tombe bien… C'est dans la section finale, « Other languages », où il est dit :

    Many readers contributed to the benhoyt/countwords repository to add other popular languages – thank you! Here’s the list:

    L'auteur n'a clairement pas écrit la variante en PHP d'une part (c'est Max Semenik qui en est crédité), et elles sont sur un dépôt ouvert ouvert d'autre part… Donc tu peux soumettre une version optimisée.

    Il est aussi conscient qu'il y a plusieurs façons d'arriver au même résultat, et précise dans le résumé en introduction :

    For each language, I’ve included a simple, idiomatic solution as well as a more optimized approach via profiling.

    La solution de base, simple, est normalement ce qu'on peut pondre de tête lorsqu'on vous présente le problème en entretien et qu'on n'a pas tous les éléments et le temps pour faire un truc beau et optimisé (là dessus, on est d'accord que le plus simple est d'utiliser explode et que peu de gens ont le réflexe preg_split qui se trouve moins performant pour le coup)

    A basic solution reads the file line-by-line, converts to lowercase, splits each line into words, and counts the frequencies in a hash table. When that’s done, it converts the hash table to a list of word-count pairs, sorts by count (largest first), and prints them out.

    L'optimisation est la seconde étape, et c'est dans ce cadre et ce sens qu'il faut regarder les temps d'exécution. Mais pas pour eux-même ni pour se comparer au voisi dans l'absolu : la démonstration est surtout comment profiter des outils de profilage pour optimiser (donc on devrait comparer les différentes versions d'un même langage entre elles —mais accidentellement, quand on sait le faire dans plusieurs langages, il est tentant de comparer les mêmes implémentations entre langages pour voir si les mêmes efforts payent de la même façon et aussi mieux appréhender les points forts et les points faibles de chacun.)
    Non seulement Ben ne pratique pas le PHP, mais si c'était le cas il n'aurait accordé une section que s'il peut présenter une version de base et une optimisée en s'appuyant sur une possibilité de profilage intégrée (et ce point m'intéresse si tu as la réponse.)

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

  • [^] # Re: En résumé et en français

    Posté par  (site web personnel, Mastodon) . En réponse au lien Outrun: utiliser la puissance d'une machine distante. Évalué à 1.

    Si quelqu'un a trouvé une utilité à ce logiciel, je serai ravi de lire son journal ;)

    À première vue, c'est pour avoir de la puissance de calcul/traitement distribuée sur des machines auxquelles on a accès.

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

  • # eh ben…

    Posté par  (site web personnel, Mastodon) . En réponse au lien En Suisse, le monde économique veut un passeport Covid pour début juin dans le sillage de l'UE. Évalué à 1.

    Faut-il en rire ou en pleurer ?

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

  • [^] # Re: Des choux et des carottes...

    Posté par  (site web personnel, Mastodon) . En réponse au lien Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust. Évalué à 1.

    Ils sont tous relativement courts les codes proposés…

    Alors, si je comprends bien, tu gagnes 0.08s chez toi en remplaçant

    if (!isset($words[$word])) {
        $words[$word] = 0;
    }
    $words[$word]++;

    par (moins propre pour ne pas dire carrément crade)

    @$words[$word]++;

    ? Est-ce isset ou l'affectation qui plombe les performance ?
    Parce-que raccourcir pour raccourci abouti au genre de trucs qui font la mauvaise presse de PHP (qui pourtant, malgré la performance qui te déplait, laisse Python sur le carreau)
    En tout cas je n'aurais pas viré ce passage, et si c'est juste pour faire moins de ligne

    isset($words[$word]) ?: $words[$word]= 0;
    $words[$word]++;

    ou encore (après c'est une question de goût)

    !isset($words[$word]) && $words[$word] = 0;
    $words[$word]++;

    Et une réduction de 57.9% (de 0.19s à 0.11s) n'est pas vraiment 100% comme tu dis

    de toutes petites modifs comme celle que j'ai faites peuvent faire passer le résultat presque du simple au double (ou l'inverse)

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

  • [^] # Re: Et c'est quoi la pratique en général ?

    Posté par  (site web personnel, Mastodon) . En réponse au journal SQL Server sous Linux : enjeux de sécurité. Évalué à 2. Dernière modification le 21 mars 2021 à 17:43.

    L'un n'a jamais empêché l'autre ; il y a eu plein d'entreprise qui ont utilisé les ordinateurs domestiques à des fins professionnelles. (je ne parle pas que de l'époque Atari, puisqu'on a vu plus tard en entreprise plein de fenêtre xp puis vista qui n'étaient pas estampillées pro s'utiliser comme poste de travail pro… et récemment dans un grand groupe j'ai vu utiliser la version express de sql-server en production)

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

  • [^] # Re: une belle illustration…

    Posté par  (site web personnel, Mastodon) . En réponse au lien Joyeux anniversaire cURL ! (23 ans aujourd'hui). Évalué à 1.

    Pourquoi migrer ? C'est toujours bien d'avoir le choix, et des choix libres.
    Et puis les deux ne se se recoupent pas vraiment en terme de fonctionnalités ; on peut trouver un certain nombre de cas où l'un est mieux ou l'autre défaillant, et des cas où utiliser l'un est plus simple que d'utiliser l'autre.

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

  • [^] # Re: AWK en RUST

    Posté par  (site web personnel, Mastodon) . En réponse au lien Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust. Évalué à 2.

    Je viens d'aller voir la page des performances de frawk et j'ai adoré son disclaimer :

    The abundance of such claims notwithstanding, I've found it is very hard to precisely state the degree to which an entire programming language implementation is or is not efficient. I have no doubt that there are programs in frawk that are slower than equivalent programs in Rust or C, or even mawk or gawk (indeed, see the "Group By Key" benchmark). In some cases this will be due to bugs or differences in the quality of the language implementations, in others it will be due to bugs or differences in the quality of the programs themselves, while in still others it may be due to the fact that in some nontrivial sense one language allows you to write the program more efficiently than another.

    I've found that it can be very hard to distinguish between these three categories of explanations when doing performance analysis. As such, I encourage everyone reading this document to draw at most modest conclusions based on the numbers below. What I do hope this document demonstrates are some of frawk's strengths when it comes to some common scripting tasks on CSV and TSV data

    AWK est un DSL prévu pour les fichiers DSV simples de l'époque (le fichier /etc/passwd en est un exemple) alors qu'aujourd'hui le CSV qui s'utilise de plus en plus en plus est loin de cette simplicité+régularité (non seulement, contrairement au sigle, ce n'est pas la virgule qui est forcément utilisée, mais les différents séparateurs peuvent se retrouver dans les champs qui doivent en plus être entourés etc.) À l'inverse, frawk veut adresser d'entrée cette complexité déjà discutée ici. Il est donc bien vu d'avoir xsv et tsv-tools dans le comparatif puisque ceux-ci sont sur le créneau visé. Ceci dit, le CSV utilisé pour ses tests n'est pas des plus complexes, mais nécessite plus de taf (comme je l'ai mentionné dans un autre commentaire, ce sont dans ces cas que xsv et tsv-utils peuvent sembler intéressant, pour ne pas devoir investir plus de temps et d'énergie en développement supplémentaire)

    Benchmarks for the TREE_GRM_ESTN dataset are not run on CSV input with mawk or gawk, as it contains quoted fields and these utilities do not handle CSV escaping out of the box. We still run them on the TSV versions of these files using \t as a field separator.

    Les awk présentés sont écrits sans hack et donc pourront être utilisés avec d'autres implémentations d'une part, et les performances observées avec les implémentations et versions utilisées n'exploitent pas leurs spécificité (gawk par exemple a quelques ajouts qui font que la réécriture peut donner des résultats plus bluffants mais cela ne sera malheureusement pas portable, contrairement à la forme POSIX) Il y a quand même de petits détails auxquels il faut faire gaffe, comme il est dit

    Note: the +0s ensure we are always performing a numeric comparison. In Awk this is unnecessary if all instances of column $4 and column $5 are numeric; in frawk this is required: max will perform a lexicographic comparison instead of a numeric one without the explicit conversion.

    La plus grande surprise, pour moi, fut pour le petit test en Python et en Rust

    frawk is a good deal faster than the other options, particularly on the newer hardware, or when run in parallel. Now, the Rust script could of course be optimized substantially (frawk is implemented in Rust, after all). But if you need to do exploratory, ad-hoc computations like this, a frawk script is probably going to be faster than the first few Rust programs you write.

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