• Li chevron_right

      refind la bonne alternative à grub ?

      Cheumole · pubsub.eckmul.net / linuxfr · Friday, 15 January, 2021 - 00:13 · 1 minute

    <p><strong>Problème</strong>: suite à une volonté de configurer plymouth sur ma distribution, mon grub s'est casse (grub-calloc not found)</p> <p><strong>Scenario</strong>: <br> Après avoir booté sur le disque via un stick usb, j'ai donc reconfiuré pour que ça boote et en ait profité pour desinstallé refind.</p> <p><strong>Resultat</strong>: </p> <p>Performance de merde, une configuration assez complexe entre les staze et la configuration automatique, et c'était sans compter sur le durée du scan, mis uniquement en internal, il fut de 30 secs. <br> Malgré mes vaines recherches , je ne pus rien trouvé de probant, si ce n'est "ah parfois c'est lent, mais je ne sais pas encore pourquoi".</p> <p><strong>Solution</strong>: Repartir sur du grub , et me voilà de retour à 1secs de load de grub</p> <h3 id="toc-conclusion">Conclusion</h3> <p>Ce qui m'a surpris est que refind est souvent considéré comme le meilleur bootloader :<br> <a href="https://www.slant.co/versus/8093/13256/%7Egrub2_vs_refind">https://www.slant.co/versus/8093/13256/~grub2_vs_refind</a></p> <p>j'ignore s'il est vraient meilleur mais mon expérience et surtout <strong>la réponse du developpeur (en gros: je m'en fiche)</strong> a calmé mes ardeurs sur une migration vers refind </p> <div><a href="https://linuxfr.org/users/cheumole/journaux/refind-la-bonne-alternative-a-grub.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122947/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/cheumole/journaux/refind-la-bonne-alternative-a-grub#comments">ouvrir dans le navigateur</a> </p>
    • wifi_tethering open_in_new

      This post is public

      linuxfr.org /users/cheumole/journaux/refind-la-bonne-alternative-a-grub

    • Li chevron_right

      Un hacker français finance l'alt right US avec Bitcoin

      Misc · pubsub.eckmul.net / linuxfr · Thursday, 14 January, 2021 - 21:42 · 1 minute

    <p>Ça vient tout juste de tomber:</p> <p><a href="https://news.yahoo.com/exclusive-large-bitcoin-payments-to-rightwing-activists-a-month-before-capitol-riot-linked-to-foreign-account-181954668.html?guccounter=1">https://news.yahoo.com/exclusive-large-bitcoin-payments-to-rightwing-activists-a-month-before-capitol-riot-linked-to-foreign-account-181954668.html?guccounter=1</a></p> <p>Les gens sur Twitter se demandent déjà si il s'agit d'une opération d'une organisation gouvernemental:</p> <p><a href="https://twitter.com/jason_a_w/status/1349802758874955778">https://twitter.com/jason_a_w/status/1349802758874955778</a></p> <p>Le rapport à l'origine de la news donne un peu plus d'information, spoiler, c'est peut être quelqu'un qui avait un compte sur linuxfr:</p> <p><a href="https://blog.chainalysis.com/reports/capitol-riot-bitcoin-donation-alt-right-domestic-extremism">https://blog.chainalysis.com/reports/capitol-riot-bitcoin-donation-alt-right-domestic-extremism</a></p> <div><a href="https://linuxfr.org/users/misc/journaux/un-hacker-francais-finance-l-alt-right-us-avec-bitcoin.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122944/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/misc/journaux/un-hacker-francais-finance-l-alt-right-us-avec-bitcoin#comments">ouvrir dans le navigateur</a> </p>
    • wifi_tethering open_in_new

      This post is public

      linuxfr.org /users/misc/journaux/un-hacker-francais-finance-l-alt-right-us-avec-bitcoin

    • Li chevron_right

      TapTempo contest : un peu moins d'octets en Awk

      Vincent Caron · pubsub.eckmul.net / linuxfr · Thursday, 14 January, 2021 - 21:31 · 3 minutes

    <p>Voici une implémentation de TapTempo encore plus compacte que l'indigeste one-liner Perl précédent (<a href="//linuxfr.org/users/zerodeux/journaux/taptempo-en-une-ligne">https://linuxfr.org/users/zerodeux/journaux/taptempo-en-une-ligne</a>), elle vous est offerte par Loïc Cerf qui me l'a soumise et me propose de vous la partager.</p> <p>J'ai donc l'honneur de vous transmettre sa solution en 97 caractères :<br> <code><br> $ awk '{system("date +%s%N")}'|awk '{t[++k]=$0}k&gt;5{r=k-5}k&gt;1{printf"%i",6e10*(k-r-1)/($0-t[r+1])}'<br> </code><br> Le comportement est identique à celui de la ligne Perl de Vincent. Elle considère notamment le temps il y a cinq tapes sur la touche Entrée, moins au début… mais je triche en imprimant <code>%i</code>, le seul tempo (un nombre entier), plutôt que <code>%i bpm</code> qui mènerait à 101 caractères.</p> <p>La solution n'est pas particulièrement cryptique. Le premier programme AWK appelle <code>date +%s%N</code>, comme dans la solution en Bash de superna, à chaque appui sur la touche Entrée, <code>\n</code> séparant par défaut les "enregistrements" ("record" en anglais) en AWK. Le second programme reçoit donc des nombres de millisecondes depuis l'époque. Il les stocke<br> dans <code>t[1]</code>, <code>t[2]</code>, etc., <code>$0</code> étant l'enregistrement entier en AWK, qui initialise <code>k</code> à 0 la première fois que la variable est utilisée (de façon numérique : ici, un incrément). Au premier enregistrement, rien n'est fait : les tests <code>k&gt;5</code> et <code>k&gt;1</code> échouent. Du second au cinquième, seul le test <code>k&gt;1</code> passe et l'entier imprimé est le tempo calculé en considérant le dernier temps (<code>$0</code>), le premier (<code>t[r+1]</code> est <code>t[1]</code> puisque <code>r</code> vaut 0), le nombre d'intervalle (<code>k-1</code>) et le fait que le temps est en millisecondes plutôt qu'en minutes (facteur <code>6e10</code>). À partir du sixième enregistrement<br> (<code>k&gt;5</code>), <code>r</code> est défini comme étant <code>k-5</code> de sorte que le tempo est calculé en considérant le dernier temps (<code>$0</code>), le temps au <code>k-5+1 = k-4</code> ème enregistrement et donc <code>k-r-1 = k-(k-5)-1 = 4</code> intervalles.</p> <p>J'avais au départ une solution similaire en 103 caractères (107 en écrivant " bpm"). J'ai proposé un défi TapTempo après avoir enseigné AWK ( <a href="https://dcc.ufmg.br/%7Elcerf/slides/mda6.pdf">https://dcc.ufmg.br/~lcerf/slides/mda6.pdf</a> ) à mes étudiants (je suis professeur à l'Université Fédérale du Minas Gerais, au Brésil) : réaliser la même chose en moins de caractères. Une étudiante a économisé trois caractères. J'ai ensuite encore gagné trois caractères.</p> <p>Si l'un de vous deux veut participer au renouveau d'intérêt pour TapTempo, je n'ai rien contre un journal qui présente cette solution en moins de 100 caractères. Je suis en fait curieux de découvrir si quelqu'un trouvera une solution encore plus brève.</p> <p>Loïc.</p> <div><a href="https://linuxfr.org/users/zerodeux/journaux/taptempo-contest-un-peu-moins-d-octets-en-awk.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122943/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/zerodeux/journaux/taptempo-contest-un-peu-moins-d-octets-en-awk#comments">ouvrir dans le navigateur</a> </p>
    • wifi_tethering open_in_new

      This post is public

      linuxfr.org /users/zerodeux/journaux/taptempo-contest-un-peu-moins-d-octets-en-awk

    • Li chevron_right

      Bookshelf: publier ses ebooks simplement

      Greizgh · pubsub.eckmul.net / linuxfr · Thursday, 14 January, 2021 - 20:52 · 5 minutes

    <p>En ces temps troublés, la lecture devient une enclave paisible où il fait bon se réfugier.</p> <p>Charentaises aux pieds, plaid sur les genoux, petit fond musical pour l'ambiance: on est pas mal.<br> Le thé vient d'être servi, allez-y, prenez une tasse!<br> Le feu dans la cheminée est assez fort pour qu'on soit bercé par son crépitement.</p> <p>Ce qui serait vraiment relou, là maintenant, ce serait d'avoir à se relever pour téléverser un livre sur la liseuse.</p> <h3 id="toc-koreader-3-opds">Koreader &lt;3 OPDS</h3> <p><a href="http://koreader.rocks/">Koreader</a> est un lecteur de documents conçu pour les appareils e-ink.<br> C'est un logiciel libre qui apporte de nombreuses fonctionnalités faisant souvent défaut aux logiciels livrés avec les liseuses.<br> Une fonctionnalité particulièrement utile, qui m'évite d'avoir à quitter mon plaid pour ajouter un livre, est le support des catalogues OPDS.</p> <p><a href="https://opds.io/">OPDS</a> c'est le petit nom de Open Publication Distribution System.<br> En gros c'est un format pour décrire une collection de livres, et une manière de se les procurer (téléchargement, achat, prêt, etc).</p> <p>Une URL vers l'OPDS à renseigner dans Koreader et voila des kilo-bytes de lecture a portée de clic!</p> <p>La question qui te brûle maintenant les lèvres c'est bien sûr: mais quelle URL qu'on met?</p> <p>Celle de son serveur bookshelf bien évidemment!</p> <h3 id="toc-serveurs-opds">Serveurs OPDS</h3> <p>Il existe plusieurs manières de publier un flux OPDS.<br> Sans chercher à être exhaustif, j'en ai noté deux principales:<br> - faire tourner un serveur <a href="https://calibre-ebook.com/fr">calibre</a><br> - faire tourner <a href="https://blog.slucas.fr/projects/calibre-opds-php-server/">COPS</a></p> <p>Dans les deux cas la collection doit être gérée par calibre, COPS se base sur la bibliothèque seulement (pas besoin de calibre sur le serveur).<br> Calibre est un super logiciel, mais bien trop lourd pour mon besoin.</p> <p>Et en cherchant des alternatives légères, ben j'en ai pas trouvé bézef…</p> <h3 id="toc-bookshelf">Bookshelf</h3> <p>Je veux pouvoir partager un répertoire contenant des fichiers epubs.<br> Outre l'accès OPDS, je souhaites aussi pouvoir parcourir la collection avec mon navigateur préféré.</p> <p>Comme on est souvent bien servi par soi-même, et que c’était un bon prétexte pour écrire du go, je me suis concocté une petite solution.</p> <p>Ça s'appelle donc <a href="https://gitlab.com/greizgh/bookshelf">Bookshelf</a>, c'est libre et ça ne fait pas grand chose (simple et stupide).</p> <p>Pour commencer, ça mange un répertoire dans lequel il y a des epubs.<br> Ils vont être indexés pour être publiés, c'est la partie la plus gourmande en ressource selon la taille de la collection.<br> Mais c'est un coût unique puisque lors de l'ajout ultérieur d'epub, l'indexation ne passera que sur les nouveaux fichiers.</p> <p>Il n'y a pas de page d'auteur, de série ou autre parce que les métadonnées sont toujours nazes et on se retrouverait avec des "Lewis Carroll", "Carroll Lewis", "Caroll L", etc.<br> On est trop bien au coin du feu pour passer sa journée à corriger des métadonnées: je préfère la recherche plein texte.</p> <p>Tout passe par la recherche. Tu veux un polar? Tape "enquête". Une romance? "bisou"! Tu vois l’idée.<br> Pour peu que le mot apparaisse dans la description, le titre, la série ou l'auteur, le bouquin remontera dans les résultats.</p> <p>Avec ce petit bout de logiciel, je suis satisfait:<br> - je dépose des epubs en SFTP sur le serveur<br> - un cron indexe le répertoire contenant les fichiers<br> - je récupère mon livre en OPDS quand je le souhaite</p> <p>C'est tellement simple que ma maman s'en sert.<br> Et les copains qui ont accès au sftp peuvent également ajouter des bouquins.</p> <p>Voilà, des fois que ça te serait utile, <a href="https://gitlab.com/greizgh/bookshelf">le code est libre</a>.</p> <p>Et si tu cherches des livres, le <a href="http://www.gutenberg.org/">projet Gutenberg</a> est une mine d'or.</p> <p>Sur ce, j'y retourne, mon thé va refroidir.</p> <p>Bisous</p> <div><a href="https://linuxfr.org/users/grzgh/journaux/bookshelf-publier-ses-ebooks-simplement.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122942/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/grzgh/journaux/bookshelf-publier-ses-ebooks-simplement#comments">ouvrir dans le navigateur</a> </p>
    • Li chevron_right

      Signal la bonne alternative à Whatsapp ?

      ComputingFroggy · pubsub.eckmul.net / linuxfr · Thursday, 14 January, 2021 - 10:38 · 2 minutes

    <p>Salut Nal,<br> avec le changement de politique de <em>Whatsapp</em>, la majorité des utilisateurs se retournent vers <em>Signal</em>. Mes amis, eux, se sont tournés vers moi : "l'expert informatique" du groupe (c'est juste que eux, ils ne s'intéressent pas du tout à l'informatique) pour définir si <em>Signal</em> est une bonne solution … mais bon, moi, je n'en sais rien.</p> <p>J'ai donc un peu cherché et à priori, ç'est une <a href="https://independentpress.cc/telegram-whatsapp-signal-facebook-messenger-what-data-apps-really-collect-from-you/2021/01/09/">bonne solution</a>, d'après ce que j'ai pu lire.<br> Cependant, j'ai retrouvé un <a href="//linuxfr.org/users/ted/liens/session-le-fork-de-signal-qui-ne-collecte-pas-ton-numero">post sur <em>LinuxFR</em></a> de personnes mécontentes que <em>Signal</em> utilise le n° de téléphone. Mais je n'ai pas trouvé d'autres retours sur les applications indiquées (<em>Session</em> parait pas mal, <em>Silence</em> ne fonctionne que sur <em>Android</em>). <em>Signal</em> a créé l'<a href="https://nakedsecurity.sophos.com/2020/05/22/signal-secure-messaging-can-now-identify-you-without-a-phone-number/">utilisation de n° PIN</a>, pour s'affranchir de l'authentification par n° de téléphone mais nécessite toujours l'utilisation d'un n° de téléphone pour l'inscription (on peut <a href="https://lifehacker.com/how-to-use-signal-without-revealing-your-private-phone-1818996580">ne pas utiliser son n° de smartphone</a> … mais il faut quand même utiliser un n° personnel). Dans l'avenir, il semblerait que l'utilisation des n° PIN permette de n<a href="https://www.zdnet.com/article/signal-to-move-away-from-phone-numbers-as-user-ids/">e plus être obligé d'utiliser un n° de téléphone</a> pour ouvrir un compte <em>Signal</em>.</p> <p>Bref, pour moi, <em>Signal</em> me parait une bonne solution (mes amis et ma famille connaissent déjà mon n° de smartphone … et moi les leurs), mais je ne comprends pas d'où la fondation prend l'argent pour faire tourner les serveurs (sans parler des dév et des admin) qui font tourner l'appli. Il semblerait que dans ce cas, le fameux dicton "si c'est gratuit, c'est toi le produit !" ne soit pas vrai. Cependant, il faut bien que la fondation rentre de l'argent pour faire tourner tout ça ! ? ! ?</p> <p>Bonne journée.</p> <div><a href="https://linuxfr.org/users/computingfroggy/journaux/signal-la-bonne-alternative-a-whatsapp.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122931/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/computingfroggy/journaux/signal-la-bonne-alternative-a-whatsapp#comments">ouvrir dans le navigateur</a> </p>
    • Li chevron_right

      Augmenter le rendement de votre moulage de près de 174% !

      ploum · pubsub.eckmul.net / linuxfr · Thursday, 14 January, 2021 - 09:34 · 4 minutes

    <p>Grâce à Gemini, AV-98 et JPFox…</p> <p>Une méthode révolutionnaire approuvée par ma boulangère !</p> <p>En effet, cher journal, ne t’es-tu jamais dit que ton moulage procrastinatoire sur Linuxfr n’était pas au top de l’efficacité ? Ne t’es-tu jamais penché sur des plugins tels que Vimium ou sur W3M/Lynx afin de rendre ton moulage le plus performant possible en ligne de commande ?</p> <p>Et bien grâce à Gemini, AV-98 et JPFox (qu’il soit béni), c’est désormais possible.</p> <p>Je ne te présente plus Gemini [1]. Peut-être as-tu essayé Gemini avec les client Lagrange ou Amfora, que tu n’as pas trop vu l’intérêt ou que t’as trouvé ça cool mais que ça manquait de contenu.</p> <p>Et bien je te propose d’essayer le client Gemini AV-98 [2]. Dans le genre simplicité, ce client se réduit en tout et pour tout à un script python de 1500 lignes. Il suffit de lancer le fichier.</p> <p>Une fois lancé, on va accéder à Linuxfr grâce à JPFox, il suffit de taper :</p> <p><code>go gemini://jpfox.fr/rss/linuxfr-depeches/</code></p> <p>On va l’ajouter à nos bookmarks avec la commande : </p> <p><code>add</code></p> <p>De la même façon, on peut ajouter à nos bookmarks les capsules suivantes (ce n’est qu’une suggestion):</p> <p>=&gt; gemini://jpfox.fr/rss/linuxfr-journaux/<br> =&gt; gemini://rawtext.club/~ploum/ (ma capsule personnelle)<br> =&gt; gemini://purexo.mom/blog/ Purexo<br> =&gt; gemini://hashtagueule.fr/ Hashtagueule<br> =&gt; gemini://dmerej.info/blog/ Dmerej Blog</p> <p>Si vous voulez des liens intéressants, lobste.rs et tilde.news sont très biens :</p> <p>=&gt; gemini://typed-hole.org/lobsters/lobsters.gemini <br> =&gt; gemini://typed-hole.org/tilde_news/index.gmi </p> <p>Et pour voir ce qui se dit sur le Gemini space de manière un peu aléatoire :</p> <p>=&gt; gemini://gemini.circumlunar.space/capcom/ CAPCOM</p> <p>Bon, vous avez ajoutez cela à vos bookmarks ? (vos bookmarks qui ne sont qu’un simple ficiher .gmi dans $XDG_CONFIG/av98/ )</p> <p>C’est maintenant que vous allez pouvoir mouler à pleine puissance.</p> <p>Premièrement, affichez vos bookmarks :</p> <p><code>bm</code></p> <p>Ensuite, ajoutez-les à votre "tour". Il y’en a 9, ajoutez ceux de 1 à 9 :</p> <p><code>t 1-9</code></p> <p>Voilà, votre tour est prêt. Pour le lancer, il suffit de taper :</p> <p><code>t</code></p> <p>Une page s’affiche (vous pouvez la piper dans less avec la commande <code>less</code> si elle est longue).</p> <p>Si des liens vous intéressent sur cette page, ajoutez-les dans votre tour, par exemple le cinquième lien :</p> <p><code>t 5</code></p> <p>Puis continuez votre tour de moulage avec </p> <p><code>t</code></p> <p>Continuez ainsi jusqu’au moment où AV-98 vous informe : "End of tour".</p> <p>Voilà, c’est qu’il est tant d’aller procrastiner dans votre éditeur de code préféré ou, pire, dans un tableur Excel. Mais, au moins, votre moulage aura été productif !</p> <p>[1] Enfin si, je le présente ici : <a href="https://ploum.net/gemini-le-protocole-du-slow-web/">https://ploum.net/gemini-le-protocole-du-slow-web/</a><br> [2] <a href="https://tildegit.org/solderpunk/AV-98">https://tildegit.org/solderpunk/AV-98</a></p> <div><a href="https://linuxfr.org/users/ploum/journaux/augmenter-le-rendement-de-votre-moulage-de-pres-de-174.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122930/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/ploum/journaux/augmenter-le-rendement-de-votre-moulage-de-pres-de-174#comments">ouvrir dans le navigateur</a> </p>
    • wifi_tethering open_in_new

      This post is public

      linuxfr.org /users/ploum/journaux/augmenter-le-rendement-de-votre-moulage-de-pres-de-174

    • Li chevron_right

      Trois processeurs, trois processus

      orfenor · pubsub.eckmul.net / linuxfr · Thursday, 14 January, 2021 - 07:07 · 4 minutes

    <p>On pourrait aussi bien dire <em>trois possesseurs</em>, vu les histoires d'argent et de matériel libre derrière. Donc ça viiiiiibre dans les CPU, et les lémuriens font danser tout le monde, et le gros poussah intel s'inquiète.</p> <h2 id="toc-qualcomm-investit-1500-000-000--dans-une-équipe-de-rêve-en-rachetant-nuvia">Qualcomm investit 1 500 000 000 $ dans une équipe de rêve en rachetant NUVIA</h2> <p>NUVIA c'est une startup de vieux de la vieille : lancée il y a deux ans par les concepteurs des nouvelles puces d'Apple (John Bruno, Manu Gulati et Gerard Williams III), elle a débauché une masse d'ingénieurs expérimentés en conception de CPU chez tout le monde (Google, Apple, Arm, Broadcom et AMD). NUVIA Phoenix, leur prototype-pas-encore-sorti de CPU pour serveur promet d'être devant tout le monde. Vu l'équipe rassemblée, tout le monde y croit.</p> <p><a href="https://images.anandtech.com/doci/15967/N2.png"><img src="//img.linuxfr.org/img/68747470733a2f2f696d616765732e616e616e64746563682e636f6d2f646f63692f31353936372f4e322e706e67/N2.png" alt="le CPU Nuvia Phoenix comparé aux autres" title="Source : https://images.anandtech.com/doci/15967/N2.png"></a></p> <ul> <li> <a href="https://www.anandtech.com/show/16416/qualcomm-to-acquire-nuvia-a-cpu-magnitude-shift">L'article d'Anandtech</a> (en anglais).</li> <li> <a href="https://news.ycombinator.com/item?id=25762092">La discussion avec plein de liens sur Hacker News</a> (en anglais itou).</li> </ul> <h2 id="toc-beagle-et-seed-lancent-un-mini-ordinateur-risc-v-pas-cher">Beagle et Seed lancent un mini-ordinateur Risc-V pas cher</h2> <p>Ce n'est pas le premier ordinateur Risc-V « grand public » disponible, <a href="https://www.sifive.com/">SiFive</a> qui produit des CPU Risc-V, en a déja lancé plusieurs : des petites compatibles Arduino <a href="/tags/sifive/public">dont on a un peu parlé sur linuxfr</a> et une carte très performante de toute beauté — <a href="/users/antistress/liens/beaglev-is-a-risc-v-single-board-pc-for-150-or-less-osnews#comment-1837468">comme dit Antistress qui a les mêmes lectures que moi</a> et d'ailleurs, à moins d'avoir le cœur soudé aux processeurs d'intel, qui n'a pas gémit devant <a href="https://www.crowdsupply.com/sifive/hifive-unmatched">cette présentation de la bête en vidéo</a> ?<br> Allons lecteur reprends toi ! Voici la bestiole un peu moins séduisante dont il est question (<em>tu peux cliquer c'est beau</em>) :</p> <p><a href="https://beaglev.seeed.cc/img/s2-board.png"><img src="//img.linuxfr.org/img/68747470733a2f2f626561676c65762e73656565642e63632f696d672f73322d626f6172642e706e67/s2-board.png" alt="la carte Beagle-V" title="Source : https://beaglev.seeed.cc/img/s2-board.png"></a></p> <p>C'est une petite carte dans l'esprit <a href="https://fr.wikipedia.org/wiki/BeagleBoard" title="Définition Wikipédia">BeagleBoard</a> avec un processeur Risc-V de SiFive, un matériel libre réservé aux gens motivés <a href="https://beaglev.seeed.cc/">qui devront s'expliquer</a> pour être servi dans le premier <em>batch</em> au mois d'avril.</p> <ul> <li> <a href="https://arstechnica.com/gadgets/2021/01/seeed-and-beagleboard-team-up-to-provide-a-new-risc-v-based-linux-pc/">L'article enthousiaste d'Ars Technica</a> (en anglais).</li> <li> <a href="https://news.ycombinator.com/item?id=25761469">La discussion dubitative sur Hacker News</a> (en anglais itou).</li> </ul> <h2 id="toc-une-superconductrice-japonaise">Une superconductrice japonaise</h2> <p>Non, le japon ne conccurence pas Tesla. C'est un prototype de processeur <a href="https://fr.wikipedia.org/wiki/supraconducteur" title="Définition Wikipédia">supraconducteur</a> <a href="https://fr.wikipedia.org/wiki/adiabatique" title="Définition Wikipédia">adiabatique</a>. Dit grossièrement, ça consomme rien — 80 fois moins que l'équivalent actuel — et malgré l'hélium liquide c'est rentable et bon pour la planète. C'est le premier processeur de ce type, il est destiné aux centres serveurs et pour ne pas écrire de bêtises sur un sujet qui me dépasse, je vous laisse lire les articles liés à la présentation sur Spectrum :</p> <p><a href="https://spectrum.ieee.org/image/Mzc1MDYzOA.jpeg"><img src="//img.linuxfr.org/img/68747470733a2f2f737065637472756d2e696565652e6f72672f696d6167652f4d7a63314d44597a4f412e6a706567/Mzc1MDYzOA.jpeg" alt="Superconducting Microprocessors? Turns Out They're Ultra-Efficient" title="Source : https://spectrum.ieee.org/image/Mzc1MDYzOA.jpeg"></a></p> <ul> <li> <a href="https://spectrum.ieee.org/tech-talk/computing/hardware/new-superconductor-microprocessor-yields-a-substantial-boost-in-efficiency">L'article chez Spectrum</a> (en anglais).</li> </ul> <h2 id="toc-pendant-ce-temps-là-chez-intel">Pendant ce temps là chez intel…</h2> <p>… on vire le PDG !</p> <div><a href="https://linuxfr.org/users/orfenor/journaux/trois-processeurs-trois-processus.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122928/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/orfenor/journaux/trois-processeurs-trois-processus#comments">ouvrir dans le navigateur</a> </p>
    • wifi_tethering open_in_new

      This post is public

      linuxfr.org /users/orfenor/journaux/trois-processeurs-trois-processus

    • Li chevron_right

      La lecture, l'écriture et les tours que nous joue le monde dans intervalle.

      FDF · pubsub.eckmul.net / linuxfr · Tuesday, 12 January, 2021 - 10:04 · 17 minutes

    <h2 class="sommaire">Sommaire</h2> <ul class="toc"> <li><a href="#toc-explication">Explication</a></li> <li><a href="#toc-prologue-initial">Prologue initial.</a></li> <li><a href="#toc-prologue-choisi-par-la-suite">Prologue choisi par la suite.</a></li> </ul> <h2 id="toc-explication">Explication</h2> <p><img src="//img.linuxfr.org/img/68747470733a2f2f696d616765732d6e612e73736c2d696d616765732d616d617a6f6e2e636f6d2f696d616765732f492f3431342b68444d5074304c2e5f53593334345f424f312c3230342c3230332c3230305f2e6a7067/414+hDMPt0L._SY344_BO1,204,203,200_.jpg" alt="Couverture de Gene 0" title="Source : https://images-na.ssl-images-amazon.com/images/I/414+hDMPt0L._SY344_BO1,204,203,200_.jpg"><br> Bonjour,<br> J’écris de la science-fiction depuis quelques années, pour mon plaisir personnel, bien que mes lecteurs apprécient également généralement.</p> <p>Pour moi, l’écriture de la science-fiction passe, pour une part assez importante, par la construction d’un univers qui lui est propre, avec des spécificités qui vont ensuite influencer les personnages. <br> Dans ce travail de mise en place, j’écris souvent un prologue, qui ne parle pas des personnages du roman à proprement parler, mais qui évoque une période antérieure, une étape pivot ou un point marquant qui illustre bien comment on est arrivé dans la situation de l’histoire.</p> <p>Mon dernier roman s’appelle GENE 0. Il n’y a pas de secret, la génétique y joue un rôle. Lorsque je l’ai commencé en 2018, j’ai écrit un prologue pour indiquer comment l’humanité pouvait en être arrivée à privatiser son génome. Plus tard, au printemps 2020, j’ai écarté ce prologue, considérant qu’il était un peu trop explicatif, et avec sans doute trop peu d’accroches. Il n’était pas mauvais, mais peut-être pas assez « grand public ». J’en ai donc écrit un autre qui parle de la période intermédiaire entre aujourd’hui et celle du roman, période pendant laquelle on aurait pu se rendre compte que le contrôle d’identité permanent n’était probablement pas une bonne idée. </p> <p>Puis, le temps présent m’a rattrapé. Les vaccins à ARN sont sortis. Les budgets médicaux vont continuer d’exploser et les besoins de financement des états vont se faire sentir… Du coup, mon prologue initial reprend tout son sens. Comme les prologues sont des textes « indépendants », les voici pour vous. Ils ne sont pas très longs, et vous changeront de la procrastination informatique.</p> <p><strong>NB.</strong> Je ne dis pas que les vaccins ARN modifient notre ADN. Mon propos n'est pas de parler du covid.<br> <strong>NB2.</strong> si ces prologues vous donnent envie de lire la suite, le roman est dispo en epub et papier sur les sites des vendeurs de livre, ou contactez-moi pour que j’envoie le fichier. Pour l’anecdote, la source est faite avec Lyx.</p> <h2 id="toc-prologue-initial">Prologue initial.</h2> <p>Le Professeur Erwan Legarec entra dans la salle. Ses pairs assistaient à la conférence comme à de nombreuses autres de par le monde, mais à présent les premiers rangs étaient occupés par les journalistes. Des caméras de tous les pays étaient présentes. Il lui semblait qu’une mer cyclopéenne se tenait devant lui.</p> <p>— Mesdames et messieurs, c’est aujourd’hui avec un plaisir immense que je vous annonce que la maladie de Hunter est virtuellement un mal du passé. Chez Synthogene, nous avons mis au point une nouvelle méthode, qui non seulement soigne le patient, mais éradique la maladie.</p> <p>S'accordant une petite pause, il reprit.</p> <p>— Souvenez-vous ! La variole, cette affliction du siècle dernier, éliminée par la vaccination. C’est maintenant ce que nous pouvons faire avec la maladie de Hunter.</p> <p>Le professeur s’arrêta un instant, but une gorgée du verre posé devant lui. Son regard parcourut la foule assemblée, puis il reprit. </p> <p>— Laissez-moi vous expliquer un peu plus ce que cela veut dire. Soyez indulgent avec mes vieilles habitudes de conférencier d’université. Je vous assure que vous ne serez pas venu pour rien et que l’exposé qui s’ensuit est en effet nécessaire. Certains d’entre vous ont probablement lu la publication du mois dernier, mais l’objet du symposium est d'expliquer les implications au plus grand nombre, et je me dois de m’adresser aussi aux béotiens. Des choix importants doivent en découler et il serait antidémocratique que cela ne soit qu’une discussion d’experts. Mais revenons à la médecine.</p> <p>S’inclinant sur le pupitre, Erwan Legarec lança un diaporama de photos, la plupart en noir et blanc, exposant des personnes hideusement déformées par des pustules sur tout le corps.</p> <p>— Ces photos ont été prises, pour les dernières, dans les années 1970. En particulier celle-ci, de cette jeune fille du Bangladesh en 1973. Elle était atteinte de la variole. Pourtant, qui parle encore de cette pathologie de nos jours ? Je suis sûr que la plupart d’entre vous n'en connaissaient même pas ses symptômes visibles jusqu’à aujourd’hui. Un bon nombre de vos lecteurs ou de vos spectateurs auront besoin de vos explications sur l’existence de cette maladie qui a balayait tous les continents il y a déjà six mille ans. La raison de cette ignorance est simple. La variole a été éradiquée. La vaccination systématique a permis d’éviter la transmission du virus infectieux en empêchant chaque être humain de devenir un vecteur et un réservoir du pathogène. Ainsi, petit à petit, n’ayant plus de véhicule potentiel, ni de lieu de multiplication, le poxvirus de la Variole a purement été annihilé, éliminé de la surface du globe et la maladie a donc disparu.</p> <p>Le professeur s'interrompit de nouveau, reprit une gorgée d’eau, changea la projection pour une vidéo et poursuivit.</p> <p>— Je vous montre maintenant les images de chromosomes humains, ainsi que des photos obtenues par microscope à balayage électronique de quelques chaines d’ADN. Les gènes ont se pouvoir étrange de coder la chimie complexe de notre corps et corollairement de rendre la vie possible. Ce sont eux encore que les parents partagent pour créer une nouvelle vie. Mais ils sont aussi parfois à l’origine de pathologies incurables comme la maladie de Hunter. Cette dernière est d'origine génétique, clairement identifiée mais malheureusement comme souvant sans remède. Les enfants qui en sont porteurs souffre de graves retards de croissances et de développement, et malgré des effort thérapeutiques important, la mort est souvent précoce. Dans cette maladie, comme dans tant d'autres, les gènes qui codent la chimie de notre corps, s’ils sont imparfaits, coderont des protéines défectueuses. Ce processus se répettera au sein de chaque cellule, sauf de rares exceptions sans objet ici.</p> <p>Le professeur promena son regard sur la foule qui commençait à s’impatienter. Les médecins de l’assistance n'écoutaient que distraitement ces explications rhétoriques puisqu'ils n'assitaient à la conférence que dans l'espoir de rencontrer le professeur. Mais les journalistes des médias généralistes qui avaient été dépèchés par leur rédaction supportaient mal ce qu’ils considéraient comme une perte de temps. Paradoxalement, certains trouvaient les explications trop précises et donc totalement inexploitables pour leur article, quand d’autres essayaient vainement de comprendre tout ce que le professeur disait tout en recherchant les termes qu’ils ne connaissaient pas sur Wikipédia. </p> <p>— Certains ont travaillé sur la correction de gènes eux-mêmes pour soigner les pathologies. Cette méthode, bien que couteuse, fait régulièrement ses preuves et nous félicitons ici nos prédécesseurs, les pionniers de la génétique médicale sur les épaules desquels nous nous sommes issés. Car c’est bien de génétique médicale dont nous parlons aujourd’hui. Nous soignons la maladie de Hunter. Mais nous avons atteint bien plus que cela. Nous sommes maintenant en mesure d’éradiquer cette maladie et de nombreuses autres comme a son époque le vaccin nous a permis de faire disparaitre la variole de la planète. L’objet n’est plus de guérir uniquement, mais d’éliminer les maladies.</p> <p>La salle s’agitait. On arrivait au coeur du sujet. Les plus au fait révisaient les questions qu'ils avaient préparés. Les autres, ressentant l'aspect historique de la conférence, s'attardaient à capturer les images les plus remarquables rêvant déjà du World Press Photo Award. Le professeur Erwan Legarec reprit sans permettre à l’assemblée de se disperser.</p> <p>— Nos recherches ont permis de mettre au point un protocole de correction des gènes in vivo, non pas au niveau de quelques cellules, mais au niveau d’un organisme entier. Ainsi, toutes les cellules sont « corrigées » et la maladie est complètement soignée. C’est une avancée importante, car nous étions habitués à des solutions de contournement pour finallement uniquement limiter symptomes les plus incommodants. Par le passé, nous pouvions également intervenir sur les cellules sexuelles, les gamètes. Nous prévenions de la sorte la transmission d’un gène défectueux. Mais notre méthode réalise les deux simultanément. Ainsi, et c’est là le premier point clé de cette avancée, une personne atteinte de la maladie de Hunter et soignée par notre protocole de correction génétique en sera complètement débarrassé et ne perpétuera pas elle-même ce syndrome. Si une proportion suffisante de la population est traitée, c’est bien d’éradication de la maladie dont nous pouvons convenir.</p> <p>Les commentaires et les questions commençaient à fuser, mais les micros encore éteints empêchaient quiconque de se faire réellement entendre et le professeur continua.</p> <p>— Il y a une deuxième avancée majeure dont je veux vous parler avant de répondre à quelques-unes de vos interrogations. Le protocole que nous avons mis au point pour la maladie de Hunter est généralisable. Nous pouvons l’appliquer à d’autres pathologies d’origines génétiques, qu’elles soient directes comme la maladie de Hunter ou que les gènes incriminés ne soient que des précurseurs comme dans de nombreux syndromes cardiovasculaires, les cancers ou dans une part importante des diabètes. Nous ne parlons donc pas d’éradiquer une maladie, mais un nombre considérable de pathologies. </p> <p>La salle ne se tenait plus, consciente d’assister à une présentation majeure de la médecine. Les journalistes pensaient à leurs ancêtres qui n’avaient pas su anticiper l’importance de la découverte des concepts des micro-organismes, de la vaccination ou plus récemment des chromosomes et de l’ADN. Ils ne voulaient pas commettre la même erreur et comptaient bien faire partie de ceux qui auraient rapporté l’Histoire : l’humanité basculait de la connaissance du génome à son utilisation pour se soigner. Les questions déferlèrent vers le podium et une équipe de modérateurs tentait de créer une certaine discipline pour qu’Erwan Legarec puisse répondre posément. Les sujets les plus techniques étaient rapidement renvoyés vers un site web qui venait tout juste d’être mis en ligne. Les interrogations d’ordre sociétales ou philosophiques attiraient par contre systématiquement des arguments posés du professeur. Cela faisait plus d’une heure qu’il était sous le feu roulant des questions quand il reprit la parole sans attendre une nouvelle demande.</p> <p>— Nous l’avons tous vu, les implications de la possibilité d’éradiquer les pathologies d’origine génétique sont fabuleuses. Ce sont des interrogations que nous avons nous-même soulevées chez Synthogene. Les étapes de recherche et de mise au point pour chacune des maladies que nous voudrons traiter sont longues, mais surtout très couteuses. Il est évident que notre laboratoire n’en a pas les moyens. Devons-nous n’avancer que petit à petit parce que nous n’avons pas les ressources suffisantes ? Où devons-nous au contraire tenter de faire bénéficier l’humanité de ce progrès aussi vite que possible ? Nous penchons bien sûr pour la deuxième solution. En conséquence, nous avons une proposition à faire à la société dans son ensemble et à nos députés en particulier.</p> <p>Il s’interrompit, reprit une gorgée d’eau, ayant retrouvé son comportement doctorant. La salle était accrochée à ses lèvres et il en profitait.</p> <p>— Nous sommes prêts à déclarer notre méthode comme faisant partie du domaine public. Ainsi chacun pourra l’étudier et la mettre en œuvre. Parallèlement, il nous semble fondamental que tout cela puisse effectivement être diffusé au plus vite et sans accaparement par quelques laboratoires pharmaceutiques, qui pourraient de plus être en conflit d’intérêts. Les sociétés fournissant de l’insuline ne sont bien sûr pas les plus enclines à faire disparaitre le diabète. Aussi, pour favoriser une concurrence la plus vaste possible, tout en permettant des financements massifs, nous demandons, en échange du classement de la méthode dans le domaine public, à ce que les gènes modifiés bénéficient de la protection sur les droits d’auteurs. Ainsi, les investisseurs pourront-ils rentabiliser leur capital sur une période longue.</p> <h2 id="toc-prologue-choisi-par-la-suite">Prologue choisi par la suite.</h2> <p>Je n’aurais pas d’enfants.</p> <p>C’est décidé. Jamais je ne me permettrais de transmettre mes gènes pourris. Ce matin, en me levant, j’ai tout de suite su que la journée tenterait de me faire fléchir. Elle a réussi.</p> <p>Ça a commencé par la machine à café. Elle exige une mise à jour de son logiciel. Mais si je la laisse faire, elle va redémarrer, et il faudra que je me scanne pour qu’elle accepte de se remettre en marche. Avec quelques dizaines gènes non déclarés chez GenBuy, je n’ai aucun espoir de passer ce test. Demain, la cafetière ne vaudra guère plus qu’un presse-papier. Sans mise à jour elle refusera de faire un putain de café, mais avec, je la brique au premier essai.</p> <p>J’ai donc pris mon dernier café en ruminant. Un appareil de plus qui devient inutile ! Il va rejoindre la télé et le réfrigérateur. J’ai l’impression de me faire cambrioler petit à petit. D’ici peu, seuls le lit, la table et le fauteuil continueront de m’accepter dans ce trou qui me sert d’appartement.</p> <p>Les choses ne se sont pas améliorées en sortant pour aller travailler.La police procédait à un contrôle en bas de la rue. Avec leur lecteur portable, ils testaient tout le monde. Un panier à salade tenait lieu de bureau pour l’émission immédiate des PVs en cas d’infraction sur les droits d’auteur et les droits voisins. Quatre ou cinq personnes attendaient leur tour. Avec mon génome qui est dispersé sur une vingtaine de compagnies, comment pourrais-je être à jour de toutes les licences ? Ils me font rire ces politiciens qui dénoncent la fraude comme un manquement fiscal. Si je pouvais payer, ça fait longtemps que ce serait fait. Avec plaisir même, ne serait-ce que pour continuer de boire du café le matin. Je n’ai rien demandé. On m’a affublé de cet ADN, merci papa, merci maman. Et maintenant, on m’en tient responsable.</p> <p>Enfin, pour éviter le contrôle, je suis passé par le soupirail qui ouvre sur la rue de derrière, mais j’ai loupé le bus municipal. Quelle farce, le gouvernement rémunère des inspecteurs pour s’assurer que les citoyens s’acquittent de toutes leurs cotisations génomiales. Mais en même temps, la ville m’embauche en sachant très bien que ce n’est pas mon cas ! Ils en profitent pour me donner un boulot que personne ne veut, ordonnanceur de poubelles organiques, ou, plus précisément, « trieur d’ordures qui puent » comme on dit entre collègues.</p> <p>Du coup, j’ai cherché un vélo pour ne pas perdre trop de temps. Mais comme d’habitude, les seuls disponibles dépendaient des plus grosses multicompagnies. « Pour ta pomme, Hugo ! Paiement par scanner génétique ! Impossible pour toi d’en déverrouiller un ! »</p> <p>Je suis donc parti en courant au travail. Voilà un truc pour lequel mon génome me sert. Un de mes ancêtres avait renforcé son système cardiovasculaire. Courir est naturel pour moi, mais on m’a dit une fois qu’avec mon rythme, avant l’époque de l’amélioration génétique, j’aurais battu des records au marathon. Ça m’a permis d’arriver pas trop en retard.</p> <p>J’allais me faufiler dans l’atelier quand j’ai aperçu les collègues faire la queue dans la cour. Je m’y suis glissé et j’ai demandé ce qui se passait. La réponse m’a confirmé que je n’aurais pas dû me lever ce matin.</p> <p>— Tu n’as pas vu le message dans les vestiaires ? m’a dit celui qui me devançait dans la ligne. Tous ceux qui ne sont pas à jour de leurs droits avec plus de deux laboratoires génétiques vont être réaffectés.</p> <p>Pendant l’heure d’attente, j’ai cherché quels postes dégradants les chefs de service avaient pu imaginer pour nous. C’est pour la campagne, le maire veut montrer à ses électeurs qu’il agit dans la lutte contre les ADN clandestins en interdisant certains métiers du secteur public. Pourtant, sans nous, il n’y aurait personne pour faire les sales boulots.</p> <p>— Vous avez été affecté au nettoyage des filtres des eaux usées terminales, m’a dit le DRH, sans même lever les yeux.</p> <p>Putain, et pas moyen de se plaindre. C’est le seul employeur pour les multi-G comme moi. Après avoir été trieur d’ordures qui puent, me voilà propulsé en tant que laveur de filtres à merde. Encore une génération, et ils ne nous laisseront même plus gagner notre vie. Je ne peux pas imposer ça à un enfant.</p> <div><a href="https://linuxfr.org/users/fdf/journaux/la-lecture-l-ecriture-et-les-tours-que-nous-joue-le-monde-dans-intervalle.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122906/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/fdf/journaux/la-lecture-l-ecriture-et-les-tours-que-nous-joue-le-monde-dans-intervalle#comments">ouvrir dans le navigateur</a> </p>
    • wifi_tethering open_in_new

      This post is public

      linuxfr.org /users/fdf/journaux/la-lecture-l-ecriture-et-les-tours-que-nous-joue-le-monde-dans-intervalle

    • Li chevron_right

      Port complet de TapTempo en C# 9

      xcomcmdr · pubsub.eckmul.net / linuxfr · Sunday, 10 January, 2021 - 23:02 · 8 minutes

    <h2 class="sommaire">Sommaire</h2> <ul class="toc"> <li><a href="#toc-les-sources">Les sources</a></li> <li><a href="#toc-pourquoi">Pourquoi ?</a></li> <li><a href="#toc-ce-qui-a-%C3%A9t%C3%A9-port%C3%A9">Ce qui a été porté</a></li> <li><a href="#toc-ce-qui-est-propre-%C3%A0-ce-port">Ce qui est propre à ce port</a></li> <li><a href="#toc-ce-que-jai-loup%C3%A9">Ce que j'ai loupé</a></li> <li><a href="#toc-note-%C3%A0-moi-m%C3%AAme">Note à moi-même</a></li> </ul> <p>Bonjour 'nal,</p> <p>Y'a plein de poussière ici dit moi. Faut dire que ça fait longtemps que je ne t'ai plus écrit.</p> <p>Ce WE, j'ai voulu faire honneur à Pierre Tramo avec un langage qui (à ses débuts) était une copie de Java avec quelques améliorations pour pas que le prof voit qu'on a copié sur le voisin.</p> <p>Je veux bien sûr parler de C#.</p> <h2 id="toc-les-sources">Les sources</h2> <p><a href="https://github.com/maximilien-noal/SharpTempo">C'est par là</a></p> <h2 id="toc-pourquoi">Pourquoi ?</h2> <p>Parce que j'en avais envie. Pour le fun. Parce que ça manquait (ou pas), surtout face au port Java.</p> <h2 id="toc-ce-qui-a-été-porté">Ce qui a été porté</h2> <p>Tout. Les traductions, les tests unitaires, le mode jeu, l'aspect orienté-objet, …</p> <h2 id="toc-ce-qui-est-propre-à-ce-port">Ce qui est propre à ce port</h2> <p>J'ai voulu utiliser au plus les possibilités modernes de C# 9 et précédents.</p> <p>Bon y'a pas de <a href="https://docs.microsoft.com/en-us/archive/msdn-magazine/2019/may/csharp-8-0-pattern-matching-in-csharp-8-0">pattern matching</a> ni d'async/await ni de <a href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/stackalloc">stackalloc</a>, ni plein d'autres choses, mais c'est pour très une bonne raison : on en a pas besoin.</p> <p>Le point d'entré utilise des <em>top level statements</em> (C# 9) (et une lambda) :</p> <pre><code>using CmdTempo; using CommandLine; using CommandLine.Text; using LibTempo; // Set sentence builder to localizable SentenceBuilder.Factory = () =&gt; new LocalizableSentenceBuilder(); Parser.Default.ParseArguments&lt;Options&gt;(args).WithParsed((options) =&gt; Runner.RunOptions(options)); </code></pre> <p>Comme pour <a href="https://blog.stephencleary.com/2012/02/async-console-programs.html">async dans un point d'entrée de programme console</a>, ce n'est que du sucre syntaxique.<br> Le compilateur s'occupe de rajouter tout la sauce (namespace, classe statique, static void Main (string[] args)).</p> <p>Mais ça fait du bien à mes petits doigts potelés de ne pas avoir à l'écrire, et à mes yeux de ne pas avoir à les lire. Et ça, c'est bon !</p> <p>On utilise parfois des <a href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/ranges">ranges</a> sur des chaînes de caractère (C# 8) :</p> <pre><code>return String.Format(Resource.SentenceMutuallyExclusiveSetErrors, names[0..^2], incompat[0..^2]); </code></pre> <p>C'est beaucoup plus rapide à écrire qu'avec <a href="https://docs.microsoft.com/en-us/dotnet/api/system.string.substring?view=net-5.0">SubString</a>, et ça me rappelle <a href="https://ruby-doc.org/core-2.5.1/Range.html">mes années Ruby</a>.</p> <p>Les options sont une classe essayant de forcer l'immutabilité (<a href="https://devblogs.microsoft.com/dotnet/c-9-0-on-the-record/">un record</a>) (C# 9) :</p> <pre><code>namespace LibTempo { using CommandLine; public record Options { public const uint DefaultSampleSize = 5; public const uint DefaultResetTime = 5; public const uint DefaultPrecision = 0; public const uint MaxPrecision = 5; [Option('g', "game", Required = false, Default = false, HelpText = nameof(IsGamingMode), ResourceType = typeof(Resource))] public bool IsGamingMode { get; } [Option('s', "sample-size", Required = true, Default = DefaultSampleSize, HelpText = nameof(SampleSize), ResourceType = typeof(Resource))] public uint SampleSize { get; } [Option('r', "reset-time", Required = true, Default = DefaultResetTime, HelpText = nameof(ResetTime), ResourceType = typeof(Resource))] public uint ResetTime { get; } [Option('p', "precision", Required = true, Default = DefaultPrecision, HelpText = nameof(Precision), ResourceType = typeof(Resource))] public uint Precision { get; } public Options(bool isGamingMode, uint sampleSize, uint resetTime, uint precision) { IsGamingMode = isGamingMode; SampleSize = sampleSize == 0 ? DefaultSampleSize : sampleSize; ResetTime = resetTime == 0 ? DefaultResetTime : resetTime; Precision = precision &gt; MaxPrecision ? MaxPrecision : precision == 0 ? DefaultPrecision : precision; } } } </code></pre> <p>On utilise des extensions pour faire croire que nous aussi on a Back, Front, et IsEmpty dans la classe générique <a href="https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.queue-1?view=net-5.0">Queue</a> (C# 2 pour les <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/">Generics</a> et 3 pour <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/introduction-to-linq-queries">LINQ</a>, ça nous rajeunit pas) :</p> <pre><code>using System.Collections.Generic; using System.Linq; namespace LibTempo { internal static class QueueExtensions { public static bool IsEmpty&lt;T&gt;(this Queue&lt;T&gt; queue) =&gt; queue.Count == 0; public static T Back&lt;T&gt;(this Queue&lt;T&gt; queue) =&gt; queue.Last(); public static T Front&lt;T&gt;(this Queue&lt;T&gt; queue) =&gt; queue.First(); } } </code></pre> <p>On utilise partout des <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members"><em>expression body</em></a> pour des méthodes car les {} et return c'est <em>has-been</em> (C# 7) :</p> <pre><code>private double ComputeNewSecretBPM() =&gt; _betterRng.Next(50, 200); </code></pre> <p>On écrit le BPM avec la précision demandée <a href="https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings">en utilisant beaucoup moins le clavier</a> et avec de l'<a href="https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/string-interpolation">interpolation</a> (C# 7) :</p> <pre><code>protected string BPMToStringWithPrecision(double bpm) =&gt; bpm.ToString($"G{_precision}", CultureInfo.CurrentCulture); </code></pre> <p>Et le pattern Fluent pour des tests plus rapidement écrits (mais ça c'est un package Nuget) :</p> <pre><code> [Fact] public void InvalidArsShouldReturnDefaultOptions() { var result = Parser.Default.ParseArguments&lt;Options&gt;(args: new string[] { "0", "0" }); result.Tag.Should().Be(ParserResultType.NotParsed); } </code></pre> <p>On a activé les <a href="https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references">Nullable Reference Types</a> partout, parce que c'est la gueere contre les NullReferenceExceptions depuis C# 8 (comme beaucoup de choses, C# a piqué ça à F# où NULL n'existe pas) :</p> <pre><code> &lt;Nullable&gt;enable&lt;/Nullable&gt; &lt;TreatWarningsAsErrors&gt;True&lt;/TreatWarningsAsErrors&gt; </code></pre> <p>Ainsi, un accès à null (qui provoque un crash) est détecté à la compilation et traité comme une erreur.<br> Mais je n'ai pas eu l’occasion d'utiliser les annotations, donc pas de code à montrer. Le compilateur n'a rien dit.</p> <h2 id="toc-ce-que-jai-loupé">Ce que j'ai loupé</h2> <p>J'aurais pu convertir le projet en <a href="https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.CodeConverter">VB.NET en un tour de main grâce au compilateur Roslyn</a>, afficher la console dans le navigateur avec <a href="https://github.com/ardacetinkaya/Blazor.Console">Blazor.Console</a>… Peut-être plus tard ?</p> <p>J'aurais pu aussi utiliser <a href="https://github.com/VitaliiTsilnyk/NGettext">NGetText</a> pour éviter les fichiers RESX et leur intrusion avec leurs clés en <a href="https://wiki.c2.com/?PascalCase">Pascal Case</a> dans le code, ce qui le rend moins lisible. Et ainsi garder le fichier .PO d'origine.</p> <pre><code>Console.WriteLine(Resource.HitEnterForEachTempoOrQToQuit); </code></pre> <p>Enfin, j'ai loupé mon week-end, et j'aurais pu me coucher plus tôt.</p> <p>Sacré Pierre Tramo !</p> <h2 id="toc-note-à-moi-même">Note à moi-même</h2> <p>Ce n'est pas parce que c'est plus facile de compiler et déboguer <a href="https://taptempo.tuxfamily.org/">TapTempo</a> quand on est sous Windows avec <a href="https://doc.ubuntu-fr.org/wsl">WSL</a> qu'il fallait forcément t'y intéresser !</p> <div><a href="https://linuxfr.org/users/xcomcmdr/journaux/port-complet-de-taptempo-en-c-9.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122890/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/xcomcmdr/journaux/port-complet-de-taptempo-en-c-9#comments">ouvrir dans le navigateur</a> </p>