Ever wondered why goto is considered harmful? – The Craft of Coding

Un exemple pourquoi "goto" peut être dangereux.

Son exemple est programme simple avec 5 embranchements de type 'if'. L’information peut prendre 72 chemins différents.

Maintenant ajoutez un "goto" quelque part et le même programme donne à l’information 93 748 416 840 chemins différents.

Dans le premier cas, c’est encore assez simple de comprendre ce qui se passe. Dans le second, c’est humainement impossible.

Et ça c’est avec un seul goto dans un programme simple. Comme il dit : imaginez avec 10 ou 100 goto et des dizaines de boucles ou embranchements. Ça devient vite le bordel à maintenant, et donc dangereux.

Ça se tient.

(et ça c’est sans l’aspect de la praticité ou de la lisibilité du code rempli de goto).

#20944  

https://craftofcoding.wordpress.com/2022/03/28/ever-wondered-why-goto-is-considered-harmful/

Write HTML, the HTML Way (Not the XHTML Way) | CSS-Tricks - CSS-Tricks

Le XML est beaucoup plus strict que le HTML. Certaines pratiques qu’on utilise normalement en HTML aujourd’hui sont héritées de l’époque où c’était XHTML qui servait à faire des pages web, mais sont parfaitement facultatives.

Cette page donne une petite liste de ces pratiques.

Maintenant, je préfère utiliser la syntaxe plus stricte de fermer les éléments, même en HTML. Ou encore de mettre des quotes pour les valeurs données attributs, ou encore de mettre tout en minuscule.

Je m’autorise par contre à mettre les attributs courts, tels que « required » ou « contenteditable » au lieu de « required="required" » et « contenteditable="true" ».
Tout comme je préfère aussi mettre des point virgules en fin de ligne en JS ou en fin de déclaration en CSS, qui ne sont pas toujours obligatoires. D’ailleurs en JS, j’utilise toujours le « 'use strict' », qui se met dans un mode strict où la moindre erreur (affectation à une variable non déclarée, par exemple) renvoie une erreur.

Je trouve que ça encourage aux bonnes pratiques, mais c’est également une question de préférence et de lisibilité.

#20929  

https://css-tricks.com/write-html-the-html-way-not-the-xhtml-way/

javascript - Webaudio playing two oscillator sounds in a same time causes vibration sound - Stack Overflow

(Pardon, oui je partage un peu mes trouvailles et réflexions ici)

Donc quand on produit deux sons et qu’on les somme, le son est absolument horrible. C’est parce que les deux sons sont par défaut avec un gain de 100 %. Si on les somme, ça peut produire des moments où le gain est de 200 % (le son sature), qui est alors tronqué à 100 % et d’une sinusoïde bien pure on passe pratiquement à un signal carré (qui est horrible).

Solution : mettre les deux sont à 50 % de gain. Le total ne dépassera pas 100 % et on a un joli son.

Ceci va me servir pour mon générateur de tonalités DTMF (outil qui ne sert à rien en soi, on est d’accord).

#20897  

https://stackoverflow.com/questions/59347938/webaudio-playing-two-oscillator-sounds-in-a-same-time-causes-vibration-sound

Audio WEB API

Je veux ajouter les sons à mon outil pour le morse.

Plutôt que de jongler avec une série de fichiers MP3 ou OGG, je vais utiliser l’API audio JS.
On peut générer des fréquences, des gains, etc. et moduler ça avec un timer.

De l’audio procédurale dans le navigateur.

On pourrait même faire un piano dans une page web. Je vais regarder tout ça.

J’avais déjà gratté cette API quand j’avais fait mon spectrogramme en JS. On ouvrait un MP3, l’API nous sortait les fréquences jouées et à quelle amplitude (une simple analyse FFT), et il ne restait plus qu’à utiliser l’API canvas pour dessiner tout ça : https://lehollandaisvolant.net/tout/tools/spectrum/spectrograph.php

Je manque de temps pour tout étudier autant en profondeur que je le voudrais :'(

#20894  

https://codepen.io/lehollandaisvolant/pen/yLPmwXd

5yhx7zsi7ug81.jpg (image)

If the computer knows I’m missing a semi-colon here, why won’t it add it itself

De même, dans un terminal (je ne sais plus lequel, peut-être Python) tu as le message quand on tape « quit » : « “quit” n’est pas la bonne commande : utilisez “exit” à la place ». En gros l’ordinateur a très bien compris ce qu’on voulait faire, mais refuse de le faire si on ne lui demande pas poliment.

GitHub - asvd/microlight: highlights code in any programming language

Une minuscule lib de coloration syntaxique (2.2 kio).

Sa particularité est de ne pas recourir aux couleurs pour rendre le code plus lisible, mais sur l’intensité des ombres et l’opacité. Ça fonctionne avec tous les langages.

Peut-être pas le plus lisible de toutes (loin de là), mais de très loin la plus légère. Les autres sont au minimum 100 ko si l’on veut supporter un paquet de langages.

#Édit : ce n’est pas parfait, mais ça rend du code nettement plus lisible que juste du blanc.
En jouant un peu le code, j’arrive à revenir à des couleurs et ça me fait une lib de coloration syntaxique en 2 ko.

#20848  

https://github.com/asvd/microlight

Le pillage de la communauté des logiciels libres, par Mathieu O'Neil, Laure Muselli, Fred Pailler & Stefano Zacchiroli (Le Monde diplomatique, janvier 2022)

On y revient.

Je pense qu’on devrait ajouter une clause aux petites lib comme ça similaire à la clause « NC » des licences CC.

À savoir aussi que n’importe qui peut aussi demander une licence spécifique à un dév.
Ça m’est déjà arrivé de contacter un dév pour lui demander d’utiliser son code qui n’était, à la base, pas libre). Je mets alors généralement « ressource de Untel, utilisé avec accord de l’auteur ».

Pour du code, ça permet deux choses, si c’est respecté :
— si le dév voit que c’est une grosse boîte qui demande, il peut exiger une contrepartie ;
— si le dév voir qu’une grosse boîte utilise sa lib, il peut engager des poursuites

Après, je vois bien certaines grosses boîtes utiliser le code sans en avoir le droit, puis aller réclamer un support en cas de grosse faille. Ça serait vraiment con, mais fort probable que ça arrive xD

#20766  

https://www.monde-diplomatique.fr/2022/01/O_NEIL/64221

Rechercher un mot - le hollandais volant

Vous jouez à Wordle / Sutom ? Vous ne connaissez pas tous les mots en français ?

Je vous ait fait un z'outil (pas encore terminé) !.

Exemple, si le mot est « R . . . . . .S », tapez « R......S » et il vous sort tous les mots possibles (c’est en regex, donc le joker c’est le point).
Dans l’outil, le début est fixe (le « ^ » est implicite) mais pas la fin (le « $ » peut être rajouté à votre texte). En vrai il faut donc mettre «R......S$ ».

Le dictionnaire de mots utilisé fait 336 411 mots (y a les singuliers, les pluriels, les conjugaisons…) et pèse un peu. Attendez que le chargement se finisse avant de lancer la recherche.

Pour les plus férus, vous pouvez créer et taper la régex parfaite qui permettra à partir des lettres bonnes (en rouge) et les lettres déplacées (en jaune) =) de filtrer suffisamment pour réduire la recherche à tout juste quelques mots.

Il ne resterait plus qu’à utiliser le dictionnaire interne de Sutom et à faire un script qui analyse et automatise la résolution du jeu :-D.
Après tout, c’est de la pure logique, ça doit pouvoir se faire. On fait bien des solveurs de Sudoku ou de Rubik's-Cube.

En dehors de ça, cet outil peut aussi servir pour les mots croisés (toujours en exploitant la puissance des régex pour filtrer au nombre de lettres (avec « .{5}$ » par exemple).

(PS : ceux qui pensent que c’est de la triche, c’est votre droit, mais ne vous fatiguez pas : si vous n’êtes pas programmeur, vous ne comprendriez pas le fun de faire un script qui fait tout à votre place, y compris répondre une fois par jour à un jeu gratuit où y a rien à gagner ou à perdre :p)

JavaScript Sudoku solver

J’aime ce genre d’article où on montrer itérrativement comment résoudre un problème de prog, et comment on arrive à passer d’une solution qui fonctionne mais qui est un peu lente (8 secondes) à une solution faisant appel à quelques astuces logiques (issues de l’intelligence humaine, impossible à deviner pour un script comme ça) pour le réduire à 0,7 secondes (le nombre de calculs passe lui de 8,9 millions à 1 200). Magnifique.

There is no 'printf'.

As so often when debugging something that doesn't make sense, we need to determine if what we're looking at is actually what we think we're looking at. We wrote some code, and we run an executable, but who's to say that the executable uses the exact instructions we wrote into the code?

C is not an interpreted language, but a compiled language, meaning we use a tool -- a compiler -- to translate our high-level code into machine instructions. And if you remember the various stages of a compiler, you'll note that one of them includes code optimization. So let's take a look at what exactly our compiler produces:

Parfois, les compilateurs remplacent certaines fonctions que vous écrivez par d’autres qu’ils jugent plus appropriées. Et ça peut provoquer des désagréments. Ici, printf() retourne la longueur de la chaîne affichée. Mais le compilateur peut le remplacer par une fonction qui retourne autre chose (ici, puts(), qui retourne un code, pas la longueur de la chaîne passée en paramètres).

#20499  

https://www.netmeister.org/blog/return-printf.html

CodePen Home File and Directory Drag-and-drop for Firefox and Chrome - Codepen

Un script JS pour uploader des fichiers ET des répertoires.

Ça marche dans Firefox et dans Chrome.
Alors que généralement, cette fonction est décrite comme ne fonctionnant pas dans Firefox.

En vrai, Firefox supporte une fonction de Webkit ici, mais elle le supporte depuis 2016 (la fonction — expérimentale et préfixée — existe elle depuis 2012, mais est utilisée partout), et autant de temps qu’on a droit à ce genre de bullshit :
https://twitter.com/lehollandaisv/status/1447595435233882114

Déjà connu depuis longtemps sur les sites de Google (qui ont tout intérêt à descendre la concurrence), voir là :
https://lehollandaisvolant.net/?d=2016/01/03/16/30/39-youtube-lent-en-html5-avec-firefox-42

… et sur les sites codés avec des moufles sur chaque main :
https://lehollandaisvolant.net/?d=2017/07/03/20/33/52-ce-site-nest-fait-que-pour-chrome-bla-bla-blah

#ChromeIsTheNewIE