Explicit resource management in JavaScript - Matt Smith
L'ajout du mot clé using en JavaScript permet de gérer les ressources qui doivent être "libérées" après usage plus facilement, par exemple la connection à une DB.
— Permalink
L'ajout du mot clé using en JavaScript permet de gérer les ressources qui doivent être "libérées" après usage plus facilement, par exemple la connection à une DB.
L'ajout du mot clé using en JavaScript permet de gérer les ressources qui doivent être "libérées" après usage plus facilement, par exemple la connection à une DB.
Aujourd'hui, on va aller un peu plus loin que les simples bidouilles habituelles car je vais vous présenter Reinstall , un outil qui va peut-être vous changer la vie si vous gérez des serveurs distants.
Vous connaissez la chanson... vous avez un VPS sous Debian et vous voulez passer sous Arch pour faire votre malin. Sauf que pour opérer ce changement, c'est la galère assurée !! Faut passer par l'interface web de l'hébergeur, booter sur une ISO via une console VNC qui rame sa maman, et prier pour que le réseau revienne après le reboot.
Eh bien ça c'est terminé grâce à ce script Reinstall. Vous lui balancez une commande, le script s'occupe de tout, et hop, votre serveur redémarre sur le nouvel OS de votre choix. Pas besoin d'accès IPMI, pas besoin de supplier le support technique, ça marche tout seul.
Et ça supporte pas mal d'OS... Côté Linux, y'a 19 distributions majeures : Alpine, Debian (de 9 à 13), Ubuntu (de 16.04 à 25.10), toute la famille Red Hat (AlmaLinux, Rocky, Oracle), Fedora, Arch, Gentoo, NixOS... Bref, y'a tout ce qu'il faut.
Et le truc qui va plaire à ceux qui font du cloud, c'est également le support de Windows. En effet, le script permet d'installer Windows Vista, 7, 8.1, 10, 11 et même Windows Server 2025.
Et rassurez-vous, il n'utilise pas des images bricolées par on ne sait qui, mais les ISO officielles de chez Microsoft. Lui se content d'injecter automatiquement les drivers VirtIO pour que ça tourne comme un charme sur n'importe quel cloud (AWS, GCP, Oracle Cloud...).
Aussi, le point le plus chiant quand on réinstalle un serveur distant, c'est la config réseau. Si on se loupe, on perd l'accès SSH et c'est fini. Reinstall gère ça intelligemment puisqu'il détecte votre IP (statique ou dynamique), gère l'IPv6, les passerelles exotiques et même les serveurs ARM.
Un petit avertissement quand même... Ce script ne gère pas les conteneurs type OpenVZ ou LXC. Faut que ce soit une vraie VM (KVM, VMware, Hyper-V) ou un serveur bare-metal.
C'est là que ça devient drôle. Pour installer un nouveau Linux (disons Debian 13) depuis votre système actuel, il suffit de faire un petit :
# Télécharger le script
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh
# Lancer la réinstallation
bash reinstall.sh debian 13 --password "VotreMotDePasse"
Si vous voulez tenter l'aventure Windows :
bash reinstall.sh windows --image-name "Windows 11 Enterprise LTSC 2024" --lang fr-fr
Le script tourne même depuis Windows (via un .bat) si vous voulez faire l'inverse et repasser sous Linux.
Perso, je trouve ça quand même génial pour tester des trucs sans passer des plombes à configurer des ISO. Ça dépanne grave quand on veut repartir on une base saine en un clin d'œil. D'ailleurs, si vous avez besoin de sécuriser vos serveurs après l'install, j'avais parlé de Fail2Ban il y a quelques temps, et c'est toujours une bonne idée. Et si vous avez peur de perdre vos données, jetez un œil à Restic pour vos backups.
Bref, si vous gérez des VPS et que vous en avez marre des consoles web préhistoriques, foncez tester ce truc (sur une machine de test d'abord, hein, venez pas pleurer après).
Bon, je vous laisse… Je vais aller me faire un petit café !

Vous connaissez sûrement TradingView pour suivre les cours de la bourse / crypto, et son fameux langage Pine Script. C'est top pour bidouiller des indicateurs techniques sans se prendre la tête, mais dès qu'on veut sortir du bac à sable pour intégrer ça dans un bot perso ou un backend, ça se corse sévère. Alors moi je fais pas tout ça, ni trading, ni dev autour du trading, mais je sais qu'on peut se retrouver souvent bloqué par les limites de la plateforme.
Hé bien bonne nouvelle pour tous les traders en culottes courtes qui n'ont pas encore compris que le DCA c'est + efficace que le day-trading, Alaa-eddine (un lecteur fidèle, coucou !) a bossé sur un projet qui va vous plaire : PineTS .
PineTS ce n'est pas encore l'un de ses parseurs bancal mais un vrai transpiler ET un runtime complet qui permet d'exécuter du code Pine Script directement dans un environnement Javascript ou TypeScript. Il vous faudra évidemment Node.js et votre bon vieux navigateur pour que ça fonctionne.?
Vous prenez votre script ta.rsi(close, 14), vous lancez un npm install pinets et hop, ça tourne sur votre serveur. PineTS gère la "transpilation" (non, c'est pas quand on a chaud sous les bras ^^) à la volée et fournit une implémentation des fonctions standard de Pine Script (v5 et v6). Il supporte déjà plus de 60 indicateurs techniques (SMA, EMA, MACD, Bollinger...), le multi-timeframe et même le streaming de données temps réel.
Du coup, ça ouvre des portes assez dingues ! Et si vous vous demandez si Pine Script est similaire à JavaScript, la réponse est "pas tout à fait", mais PineTS fait le pont entre les deux mondes. Vous pouvez grâce à ça récupérer des données de marché via n'importe quelle API (CCXT, Binance...), les passer à la moulinette PineTS, et utiliser le résultat pour trigger des ordres ou nourrir une IA.
Attention par contre, tout n'est pas encore supporté à 100%. Sauf si vous restez sur du standard, là c'est royal... Mais si vous utilisez des fonctions graphiques très exotiques, faudra vérifier tout pour ne pas finir sur la paille. Le seul truc qui manque peut-être, c'est une compatibilité totale avec les scripts v4, mais bon, on est en v6 maintenant et pour la logique de trading pure, c'est propre.
D'ailleurs, pour ceux qui utilisent ChatGPT pour écrire du Pine Script, sachez que vous pouvez maintenant intégrer ces snippets générés par l'IA directement dans vos propres applis Node.js. C'est quand même plus flexible que de copier-coller ça dans TradingView à chaque fois.
Et ce n'est pas tout (hé oui ^^) car pour la partie visuelle, il a aussi sorti également QFChart , une bibliothèque dédiée pour afficher le tout avec de jolis graphiques financiers. C'est le combo gagnant pour se faire un dashboard de trading sur mesure sans dépendre de l'infra de TradingView.
Perso, je trouve ça génial pour ceux qui veulent garder la main sur leur exécution ou faire du backtesting sérieux avec leurs propres données. En fait, c'est exactement ce qu'il manquait aux traders-developpeurs pour coder leur propre logique de A à Z. Le projet est open source et dispo sur GitHub et y'a même un playground pour tester vos scripts en live et voir la transpilation en temps réel.
Si vous faites du trading algo, ça vaut clairement le coup d'œil.
PineTS est à découvrir ici ! Et un grand merci à Alaa-eddine pour le partage !

Si vous êtes comme moi et que vous vivez dans Apple Notes parce que c'est fluide, synchronisé partout, et que ça marche sans qu'on ait à se poser de questions, cet outil va vous plaire.
Parce que oui, voilà, le jour où vous voulez bidouiller vos notes en ligne de commande, les exporter en Markdown, ou simplement éviter de vous retrouver coincé dans votre prison dorée Apple... Et bien c'est la galère. J'ai longtemps cherché une solution propre. Je me suis même dit à un moment que j'allais coder un script Python foireux pour scrapper la base SQLite locale, mais j'ai vite abandonné l'idée.
Pourquoi ? Parce que j'ai découvert Stash , un petit outil en ligne de commande qui fait le pont entre vos notes Apple et des fichiers Markdown.
Et le truc cool, c'est que ça marche dans les deux sens. Vous pouvez exporter vos notes Apple en Markdown (comme ici : Exporter pour vos backups ), mais aussi éditer vos fichiers Markdown et renvoyer les changements directement dans Apple Notes. C'est une vrai synchro bidirectionnelle qui vous rend vraiment maître de vos données.
J'ai testé ça sur macOS Tahoe avec un dossier de notes en vrac. J'ai lancé le bousin, et ça m'a fait plaisir de voir mes fichiers .md popper proprement dans le terminal, prêts à être commités ensuite sur un GitHub ou édités dans VS Code.
L'installation est toute bête, via Homebrew :
brew tap shakedlokits/stash https://github.com/shakedlokits/stash
brew install shakedlokits/stash/stash
Et ensuite, c'est juste 2 commandes. Pour exporter une note Apple vers Markdown, c'est
stash pull "Ma Super Note"
Stash va chercher la note dans Apple Notes, la convertit en Markdown propre via Pandoc, et vous la balance dans un fichier local Ma Super Note.md.
Et la seconde commande c'est pour faire l'inverse (éditer votre Markdown et pousser les changements vers Apple Notes). Là faut faire
stash push "Ma Super Note.md"
Et là, magie !! Vos modifs se retrouvent dans l'app Notes, synchronisées sur tous vos appareils Apple (iPhone, iPad, Mac). C'est dommage que ça soit pas natif ce truc.
Stash c'est chouette (Oula pas facile à prononcer vite celle là) parce qu'il utilise du YAML front-matter pour lier chaque fichier Markdown à une note Apple spécifique (via un ID unique). Quand vous faites stash push, le contenu du fichier écrase la note. Quand vous faites stash pull, la note écrase le fichier.
Attention toutefois car c'est là que ça se corse... Stash écrase sans pitié !! Si vous modifiez votre note sur l'iPhone ET votre fichier Markdown en même temps, c'est le dernier qui parle qui a raison. Y'a pas de fusion intelligente à la Git, donc gaffe aux conflits. C'est un peu brut de décoffrage, mais au moins c'est clair et prévisible.
Bref, pour ceux qui veulent scripter leurs notes, automatiser des backups, ou simplement bosser en Markdown avec leur éditeur préféré, c'est le chaînon manquant. J'avais testé Obsidian et Joplin par le passé, mais la synchro iCloud ou WebDAV m'avait saoulé. Là, c'est le bon compromis avec l'interface Apple pour la saisie, le Markdown pour le stockage long terme.

Une nouvelle lib TypeScript pour travailler avec les PDF en Node.js ou Bun. Elle permet notamment de gérer les formulaires, les signatures, etc.
Elle ambitionne également de générer des PDF à partir de HTML dans le futur.
Une nouvelle lib TypeScript pour travailler avec les PDF en Node.js ou Bun. Elle permet notamment de gérer les formulaires, les signatures, etc.
Elle ambitionne également de générer des PDF à partir de HTML dans le futur.
Vous avez déjà galéré à créer un mot de passe qui respecte les 42 règles imposées par un site un peu trop zélé ? Genre au moins 16 caractères, une majuscule, une minuscule, un chiffre, un caractère spécial, et surtout pas le prénom de votre chat ni votre date de naissance ?
C’est le genre de micro-agression qui peut flinguer une matinée ^^.
Heureusement, y’a un dev qui a eu une idée de génie en inversat complètement le problème grâce à la puissance brute des expressions régulières.
Son outil s'appelle RegExp Password Generator et comme son nom l'indique, c'est un générateur de mots de passe qui fonctionne avec des regex. Au lieu de cocher des cases un peu nazes dans une interface classique, vous définissez vos contraintes ligne par ligne sous forme d'expressions régulières.
Par exemple, vous balancez ^.{16,32}$ pour imposer une longueur entre 16 et 32 caractères, [0-9] pour exiger au moins un chiffre, and [A-Z] pour une majuscule. L’outil va alors calculer l’intersection de tous vos patterns pour vous sortir 5 mots de passe aléatoires qui matchent absolument toutes vos règles simultanément.
L'outil repose heureusement sur la bibliothèque TypeScript @gruhn/regex-utils. Pour ceux qui font du code, vous savez que manipuler des regex pour faire des intersections ou des compléments, c'est normalement une purge monumentale que la plupart des langages de programmation ne gèrent pas nativement.
C'est pourquoi ici, la lib fait tout le sale boulot de calcul d'ensemble pour s'assurer que vos contraintes ne sont pas contradictoires. Si vous demandez un truc impossible (genre un mot de passe qui doit être composé uniquement de chiffres ET uniquement de lettres), l’outil vous le dit direct au lieu de mouliner dans le vide.
Et tout tourne en local dans votre navigateur donc c'est cool pour la vie privée, par contre, gardez en tête que la lib supporte un sous-ensemble bien précis de la syntaxe RegExp de JavaScript. Inutile donc tenter des trucs ultra exotiques comme les lookbehinds complexes, l'outil risque de vous renvoyer une erreur.
Le côté pratique, c'est que vos contraintes sont directement encodées dans l'URL. Du coup, vous pouvez bookmarker une config précise pour un site spécifique ou la partager avec vos collègues sans avoir à tout retaper à chaque fois. Un petit compteur affiche même le nombre total de combinaisons possibles avec vos règles, histoire de vérifier que vous n'avez pas créé un mot de passe trop prévisible (ou au contraire, un truc tellement restrictif qu'il n'existe qu'une seule possibilité).
Bref, j'ai trouvé ça original !

Y'a un truc qui me rend joyeux avec le web, c'est quand des devs décident de pousser les technos dans leurs retranchements juste pour prouver que c'est possible.
Et
VoxCSS
, c'est totalement ça : une bibliothèque JavaScript qui permet de faire du rendu voxel complet en utilisant uniquement le DOM et le CSS. Alors attention, quand je dis "uniquement", je veux dire sans WebGL et sans l'élément <canvas>. Juste des éléments HTML empilés intelligemment qui tirent parti de l'accélération matérielle du navigateur pour les transformations 3D.
Pour cela, VoxCSS utilise des grilles CSS superposées sur l'axe Z pour créer un espace volumétrique. Chaque niveau de profondeur est une grille CSS classique, décalée avec des translations 3D. Les voxels eux-mêmes sont des cuboïdes HTML composés de plusieurs faces positionnées avec des rotations CSS.
Par défaut, la scène utilise une perspective de 8000px et le fameux transform-style: preserve-3d pour que la magie opère... Un pur hack de génie qui transforme votre navigateur en moteur 3D sans passer par les API habituelles !
Et le rendu n'est pas dégueu du tout puisque le moteur gère les couleurs, les textures, et même différentes formes comme des rampes, des pointes ou des coins pour sortir du simple cube de base. Pour ceux qui se demandent comment ça se passe pour les ombres, VoxCSS simule également un éclairage en jouant sur l'opacité des faces, ce qui donne ce petit relief indispensable au style voxel. Vous pouvez même choisir entre différentes projections (cubique ou dimétrique) pour donner le look que vous voulez à votre scène.
Côté performances, même si on parle de manipuler potentiellement des milliers d'éléments DOM, l'équipe de Layoutit Studio a bien bossé. Y'a un système de "culling" pour ne pas calculer les faces cachées (on n'affiche que la surface extérieure, quoi) et une option de fusion (le mergeVoxels) qui permet de regrouper les cubes adjacents pour alléger la structure HTML. C'est pas activé par défaut, mais c'est indispensable dès que votre château Minecraft commence à prendre de l'embonpoint.
L'installation se fait via
npm install @layoutit/voxcss
La lib est hyper flexible puisqu'elle propose des wrappers pour React, Vue et Svelte, tout en restant utilisable en vanilla JS.
Vous posez votre caméra (<voxcamera>) pour gérer le zoom et la rotation, vous injectez votre scène (<voxscene>), et roule ma poule. Cerise sur le gâteau pour les artistes, VoxCSS inclut un parser pour charger directement vos fichiers .vox créés dans MagicaVoxel.
Si vous voulez tâter la bête sans coder, allez faire un tour sur Layoutit Voxels, l'éditeur qui sert de démo technique. Ils ont aussi sorti Layoutit Terra qui génère des terrains entiers avec la même techno.
Franchement, pour un gros jeu en prod, OK pour du WebGL, mais pour créer des éléments interactifs stylés, des petites scènes 3D ou juste pour la beauté du geste technique, c'est un sacré bel outil.
Et puis, faire de la 3D sans toucher à un seul shader, ça a un petit côté cool je trouve.

Est-ce que vous avez déjà eu cette envie soudaine de composer de la techno tout en ayant l'air d'un hacker qui pirate le Pentagone dans un film des années 90 ?
Si oui, j'ai le truc parfait pour vous : Strudel .
Pour ceux qui débarquent, le live coding musical dont je vous ai déjà parlé y'a pas longtemps avec Loopmaster , c'est l'art de créer du son en écrivant du code en temps réel.
En gros, on tape des lignes, on valide, et hop le rythme change en direct. Strudel rend ce concept ultra accessible puisqu'il tourne entièrement dans votre navigateur préféré, sans chichi et surtout sans avoir besoin d'installer des usines à gaz comme SuperCollider ou de configurer des environnements de dev à n'en plus finir.
L'interface de Strudel - sobre mais efficace ( Source )
Le projet est d'ailleurs un port officiel du langage de patterns de TidalCycles vers JavaScript. TidalCycles , c'est un peu la référence absolue dans le monde du live coding, mais ça demandait pas mal de bidouille (Haskell, etc.) pour fonctionner correctement. Avec Strudel, vous ouvrez une page web, vous tapez du code et c'est parti mon kiki !
Le principe repose sur des motifs rythmiques qui occupent toujours le même espace temporel (appelé "cycle"). Contrairement à un séquenceur classique où on empile des notes, ici on définit des structures qui se compressent ou s'étirent automatiquement. C'est un peu déroutant au début mais une fois qu'on a pigé le truc, on peut sortir des beats qui tabassent en seulement trois lignes de code. Perso, je trouve ça assez hypnotique (oui j'aime le comique de répétition).
Côté technique, l'outil s'appuie sur l'API Web Audio et intègre un synthé/sampler baptisé Superdough. C'est assez costaud et ça permet déjà de s'amuser avec plein d'effets sans quitter le browser. Et pour les plus barbus d'entre vous qui voudraient piloter leur propre setup SuperCollider , c'est possible aussi via OSC , mais attention, il faudra quand même lancer un petit serveur relais en Node.js pour faire le pont entre le navigateur et votre machine.
Y'a même un workshop interactif vraiment bien foutu pour apprendre les bases. En quelques minutes, vous allez comprendre comment balancer des snares et des kicks avec une précision chirurgicale. Et le petit plus qui fait plaisir, vous pouvez partager vos chefs-d'œuvre en copiant simplement l'URL, puisque tout votre code est encodé dedans. C'est direct in the pocket !
La Reine de Strudel c'est évidemment Switch Angel :
Bref, si vous cherchez un nouveau hobby créatif un peu geek pour vos soirées d'hiver, foncez tester ça. Ça rappelle un peu d'autres pépites comme Drumbit ou même Draw Audio pour le côté fun et immédiat. De quoi verser une petite larme de joie en retrouvant des sensations de bidouille pure.
Merci Lorenper, Quentin & Jean-Raymond pour le partage !

Des scripts AutoHotkey prêts à l'emploi.
via https://www.canardpc.com/jeu-video/culture/download/keytik
Un outil pour automatiser l'utilisation des importmap, une nouvelle norme HTML qui permet d'améliorer la gestion des dépendances JavaScript externes.
Un outil pour automatiser l'utilisation des importmap, une nouvelle norme HTML qui permet d'améliorer la gestion des dépendances JavaScript externes.
jQuery 4 est de sortie. Première release majeure de jQuery depuis 10 ans ! Une longévité impressionnante.
jQuery 4 est de sortie. Première release majeure de jQuery depuis 10 ans ! Une longévité impressionnante.
Un article passionnant qui expose de manière argumentée le problème de la gestion des dépendances dans le JavaScript côté client, la courbe d'apprentissage ardue qu'elle représente pour les néophytes et de l'omniprésence des bundlers.
Il n'y a pas de solution immédiate et évidente mais quelques pistes.
Un article passionnant qui expose de manière argumentée le problème de la gestion des dépendances dans le JavaScript côté client, la courbe d'apprentissage ardue qu'elle représente pour les néophytes et de l'omniprésence des bundlers.
Il n'y a pas de solution immédiate et évidente mais quelques pistes.