How to fix CSV? Make it even more 💩 | Grist - Liens en vrac de sebsauvage

SQLite ? C’est pour les associations orientés communistes ça !
Dans les vraies entreprises, il FAUT utiliser .xlsx. C’est l’un des deux truc suffisamment bullshito-marketo-corporate pour être acceptable. L’autre étant Oracle.

CSV ? Impossible. On peut pas.
Par contre, XLSX, avec des macros toutes faites et des filtres, aucun problème ! L’export d’un binaire .xlsx se fait toutes les heures, Que demandent le peup… les réunionitophiles de merde ?

On imagine un restaurant qui ferait de la purée maison, des frites maison, et des chips maison, mais qui ne sait pas te servir des pommes de terre cuite à l’eau ? Bien-sûr que non ! Ça serait totalement débile. Mais les entreprises, elles fonctionnent comme ça. Enfin, elles essayent.

Ah et à notre niveau faut qu’on fasse avec hein… #tmts.

Oui, j’essaye de faire quelques outils pour le taf, où je dois contourner à la fois le fait que que j’ai ni serveur HTTP local (pour des outils basiques en HTML/JS), ni d’export automatiques de CSV, encore moins de SQLite évidemment… Quant à apprendre un truc comme les macros MS-Office, merci hein. Et les .ps sous Windows (raccourcis de PowerShit), je préfère encore le .bat : plus limité, mais au moins ça n’essaye pas faire du Linux alors que ça n’en est pas).
Pourquoi pas Python ? On n’a pas de vivarium au boulot. Voilà.

(oui, ce post est un mélange de sarcasme et de dégoût. J’adore SQLite, j’aimerais l’utiliser partout, tout le temps. Mais en dehors de la tech, quand tu es presque le seul de la boutique à savoir imbriquer deux « SI » dans Excel, c’est impossible de faire comprendre que des outils en PHP ou Python, des scripts .bat, .sh, ou encore des outils comme ImageMagick sont plus pratiques que MSPaint et Excel pour faire les choses. Et ça c’est avant même de commencer à parler de CLI, ou de demander aux gens de faire tout ça eux-mêmes.)

;____________;

Fun Friday: what got you into programming? | Lobsters

Bien avant d’avoir mon propre site (qui a déjà 15 ans maintenant), j’étais un helpeur sur divers forums informatiques : CCM, Ubuntu, SiteDuZéro…

La section programmation de CCM était alors la seule à laquelle je n’avais encore jamais touché. C’était le seul endroit où je n’allais jamais car je n’y comprenais rien.
Je dépannais les gens sous Linux, sous Windows, avec leur problèmes d’installation de logiciels, connexions réseau, imprimantes, navigateurs, sortie son… bref tout sauf ça.

À force de tout répéter sur les forums, j’avais constitué des fiches (dans Word ou OOo) avec des réponses pratiquement toutes prêtes mais qui fonctionnaient car les gens posaient des questions identiques sans lire les postes en dessous.
Je m’étais également fait des fiches pour moi-même, pour me souvenir de quels logiciels j’installais, quelques manips je faisais quand j’installais Ubuntu, à l’époque. C’était le début de ma « Checklist » (qui me sert d’ailleurs toujours à moi plus qu’à quiconque, je pense).

Bref, un jour je voulais mettre tout ça en ligne, et faire un site personnel, comme tout le monde. J’ai donc appris les bases du HTML, puis du CSS et j’ai pu me constituer un petit site avec quelques pages.
Après j’ai commencé à partager des pages plus souvent, avec des astuces plus légères, des remarques et critiques sur des sujets plus variés, l’actualité. Bref, un blog, là aussi comme bien d’autres personnes à l’époque.

Comme éditer le HTML c’était un peu chiant tous les jours, j’ai utilisé un vieux script PHP pour tenir un blog (Blogotext), donc le projet était à l’abandon, mais qui fonctionnait, et qui avait l’avantage d’être très léger, très facile à adapter à mon site et ses pages existantes. À l’époque j’avais installé ça et je l’utilisais.

Puis je voulais ouvrir les commentaires sur le site. Sauf que Blogotext avait ce bug qui faisait que si on postait un commentaire, et qu’on rafraîchissait la page, le commentaire était reposté. Et ceci, autant de fois qu’on rechargeait la page. Il n’était pas possible d’ouvrir ça : tôt où tard, un gros malin se serait amusé à recharger la page en boucle et à poster 36 000 commentaires juste pour le plaisir d’emmerder le monde.

En regardant le code source en PHP, je retrouvais ce que j’avais appris à l’école en matière de prog : les variables, les fonctions… bref, la base. Par contre, la syntaxe PHP, le noms des fonctions internes au langage, et surtout l’usage de la langue à une application réelle (autrement plus évoluée sur du C ou du Maple en cours de Math en 2008), tout ça m’était inconnu.

Une autre difficulté est que pour le HTML, si on voit un truc sur une page web et que l’on souhaite l’étudier, on peut juste faire Ctrl+U et regarder le code source. Pour le PHP, c’est impossible : le code source n’est pas dans la page. C’est comme si on demandait à un cuisto sa recette et que d’un seul coup, il te disait « non, tu ne l’auras pas, débrouilles-toi », alors qu’avant tout le monde partageait sa recette avec le gâteau. Ici on avait juste la liste des ingrédients et le gâteau final.

Mais j’ai intégré tout ça, je me suis tout approprié et je visualisais de mieux en mieux l’enchaînement des fonctions, leur rôle. J’ai aussi très vite compris le fonctionnement de l’interaction entre le navigateur et le serveur. Non seulement le sens descendant (le serveur forge et donne une page au navigateur qui l’affiche) que dans le sens montant (le navigateur envoie un formulaire au serveur qui traite alors les données)

J’ai aussi compris pourquoi Blogotext avait ce bug des commentaires identiques : il fallait rediriger la page vers une autre page après l’envoi du commentaire. Comme ça, si on recharge cette page, c’est cette page là qui est rechargée, pas celle qui a envoyé le formulaire. J’ai donc mis ça en place en transposant le code du postage des articles (qui ne soufrait pas de ce problème) et en l’appliquant au code de postage des commentaires.
C’était mon tout premier bug-fix en conditions réelles d’un projet de programmation.

Blogotext avait plein d’autres bugs, mais ça c’était le plus évident, et comme le projet était abandonné, personne n’allait le corriger pour moi. J’étais seul : si je voulais les commentaires sur mon site, *JE* devais corriger ça.

Petit à petit, j’ai fini par modifier Blogotext et l’adapter à mes besoins. Ajouter des fonctionnalités : une page listant tous les commentaires (côté admin), une page pour uploader des images à intégrer aux articles, puis j’ai troqué le stockage XML contre du stockage SQLite, puis des #categories aux articles, puis j’ai ajouté le partage des liens (avec LinX, d’abord, un micro outil qui m’a permis de découvrir SQLite), puis un lecteur RSS…

Entre temps, le PHP et le HTML c’était fun, mais j’ai aussi peu à peu appris à jouer au Javascript, qui permet l’interaction dans le navigateur (le PHP c’était seulement côté serveur). Le JS ce sont les boutons dans un page web qui restent dans la page, dans le navigateur.

Et puis j’ai appris que le JS pouvait parler au serveur PHP pour envoyer et demander des données sans avoir à recharger ou reposter toute la page (principe de l’AJAX).

Depuis, je fais beaucoup de JS, un peu de PHP. Le tout sur des petits outils plus ou moins utiles. Mais j’ai la satisfaction d’utiliser quotidiennement les outils que j’ai moi-même soit amélioré et maintenu, soit créé de toutes pièces.
Certains de ces outils et où projets ont servis ou servent de base pour d’autres personnes ou entreprises, qui préfèrent adapter un script minimal plutôt qu’un énorme programme payant impossible à tailler sur mesure.

Je ne me dirais pas un grand programmeur, mais j’ai ce qu’il faut pour créer ce dont j’ai besoin moi-même, plus particulièrement si ça peut tenir dans une page web. Et j’ai tout appris tout seul, en bidouillant, sur plusieurs années :-)

Les dates et heures - Dates, durées et horloges en informatique • Tutoriels • Zeste de Savoir

Ok, donc « Le » Timestamp ça ne veut rien dire. Il existe au moins 20 époques (epoch) différents. Celui dont on parle le plus souvent en programmation, et qui est implémenté partout, et qui est celui que j’appelle « le timestamp », c’est l’époque Unix. Celui qui commence avec 1970.

Ensuite t’as Matlab, Excel, NTFS… qui en utilisent d’autres.

Voir aussi ça : https://scorpil.com/post/you-dont-need-datetime/
Où il fait la distinction entre les timestamp et les dates. Distinction à utiliser de façon raisonnée car il faut distinguer une date+heure (qui varie selon les gens, à cause des fuseaux), et le timestamp (qui est absolu pour tous et auquel on applique ensuite un delta lié au fuseau).

Equivalences entre Linux et Windows (bash/Dos/Powershell) | by Louis Jeanne-Julien | Ouidou

Un mémo pour les équivalences entre les commandes Bash (Linux) et Dos, Powershell (Windows).

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).

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é.

Dwitter - JavaScript demos in 140 characters

Des démos en 140 caractères de JS.
Y a des jolis trucs, principalement dans des HTML Canvas.

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).

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 :'(

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.

Stop Saying PHP Is Dead.. It isn’t. PHP is not dead. It isn’t… | by Warrick Bayman | The Startup | Medium

A new year, a new MDN - Mozilla Hacks - the Web developer blog

Le site de MDN (mozilla developper network, le wikipédia du webdév) change de look :)

Ah ouais ça fait vraiment trop peur là | Les Joies du Code - Humour de développeurs : gifs, memes, blagues

lol^^

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.

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