HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

Les meilleurs longs formats de Hacker News, relus plus calmement.

11567 articles Page 975/1157 Sans filtre

The three pillars of JavaScript bloat

Cet article observe la croissance de la communauté e18e et le nettoyage des dépendances, notamment l’élimination des paquets redondants, obsolètes ou non maintenus. Le premier type de bloat regroupe le support pour des moteurs très anciens, la protection contre la mutation du namespace global et les valeurs passées entre domaines (cross-realm). Le deuxième type est l’architecture atomique qui décompose le code en paquets minuscules, aboutissant souvent à de la duplication, peu de réutilisation et une surface de maintenance accrue. Le troisième type concerne les ponyfills qui persistent après que la fonctionnalité est désormais prise en charge, ce qui n’est plus nécessaire pour les bibliothèques. Pour atténuer ce bloat, l’article propose d’examiner chaque dépendance, d’utiliser knip et l’outil e18e pour analyser et migrer, d’explorer npmgraph et le projet module-replacements, et de privilégier les solutions natives lorsque c’est possible.

Show HN: Baltic shadow fleet tracker – live AIS, cable proximity alerts

Un outil open source développé par Former Lab surveille la Baltique à partir des données AIS en direct et s’exécute localement. Il suit plus de 1200 navires via le catalogue War&Sanctions du GUR et le flux AISStream WebSocket, affichant leurs positions sur une carte auto-actualisante. Des alertes signalent lorsque des navires se rapprochent de câbles sous-marins et des motifs de transbordement Russie↔Ouest sont détectés sur une période de 21 jours. Les données de position sont enregistrées dans SQLite et le système peut fonctionner sans cloud ni abonnement, nécessitant une clé AISStream gratuite. L’installation se fait en clonant le dépôt, installant les dépendances et lançant le consommateur AIS et le tableau de bord via les scripts fournis.

Java is fast, code might not be

Cet article présente une application Java de traitement de commandes et compare les performances avant et après des optimisations sans modifier l’architecture. Il identifie huit anti‑patterns courants dans le code réel, tels que la concaténation de chaînes dans les boucles, les boucles avec des streams, String.format dans les chemins chauds et l’autoboxing. Pour chacun, il propose des correctifs simples et efficaces comme utiliser StringBuilder, éviter les streams imbriqués et pré‑valider les entrées pour éviter les exceptions en boucle. Les améliorations entraînent un débit plus élevé, une utilisation mémoire réduite et moins de pauses GC, et ces gains s’appliquent à des applications déployées sur plusieurs machines. La suite promet de présenter le flame graph et d’expliquer l’automatisation de l’identification et de l’application des optimisations.

Drawvg Filter for FFmpeg

drawvg est un filtre FFmpeg introduit depuis la version 8.1 pour superposer des graphismes vectoriels sur des frames vidéo. Le rendu est réalisé en exécutant un script dédié écrit dans le langage VGS, appelé Vector Graphics Script, qui décrit des graphismes 2D et est rasterisé par la bibliothèque Cairo. VGS n'est pas destiné à un usage général et privilégie la concision et la facilité d'utilisation, avec une syntaxe inspirée par Magick Vector Graphics et SVG, et des noms de commandes largement issus du PostScript. Les scripts peuvent utiliser des expressions FFmpeg pour calculer des coordonnées dynamiquement, lire des métadonnées, générer des valeurs aléatoires et accéder à des couleurs de pixels. Des exemples démontrent des usages variés tels que des transitions, des effets d'ondes, des pixellisations en losanges ou des masques via alphamerge et overlay, tous créés avec drawvg.

Windows 11's Start menu was built using React – now switching to native WinUI

Microsoft a confirmé qu'il prépare plusieurs mises à jour majeures de Windows 11 pour répondre aux plus grandes plaintes des utilisateurs, en améliorant les performances, la fiabilité et en réduisant les publicités, avec la possibilité de déplacer la barre des tâches. Le plan prévoit notamment d'utiliser WinUI pour davantage d'éléments du système, dont le menu Démarrer, afin d'améliorer les performances et la réactivité par rapport à l'utilisation actuelle de React. Les mises à jour Windows Update offriront plus de contrôle sur l’installation des mises à jour, avec possibilité de les mettre en pause aussi longtemps que nécessaire et moins de redémarrages obligatoires. Microsoft réduira également la présence de Copilot et de publicités dans le flux Recommandations du Menu Démarrer, et simplifiera les paramètres pour désactiver les publicités. Le descriptif stratégique parle de trois axes — Performance, Fiabilité et Craft — avec une amélioration de l’expérience utilisateur, de l’UI WinUI3, et un déploiement progressif en version Preview dans les mois à venir.

Work_mem: It's a Trap

L'article relate un incident Postgres où une requête unique a consommé une mémoire importante et a déclenché l'OOM killer sur un cluster avec une grande RAM disponible. Les journaux indiquent que des contextes mémoire comme ExecutorState et HashTableContext accumulent des allocations qui ne sont libérées qu'à la fin de l'exécution. Le problème ne vient pas d'un oubli de work_mem mais du fait que la mémoire allouée est libérée en bloc à la fin de l'opération, selon le fonctionnement du système de mémoire. L'exemple met en avant 524 059 chunks dans ExecutorState, chacun consommant du work_mem et restant vivants jusqu'au terme de l'opération, ce qui peut faire exploser l'usage mémoire lors d'une jointure impliquant une fonction plpgsql. Pour prévenir cela, il faut améliorer les statistiques et les plans avec ANALYZE et CREATE STATISTICS, corriger les requêtes problématiques, utiliser des timeouts (statement_timeout) et surveiller avec pg_log_backend_memory_contexts; le texte rappelle que ce comportement est par design et qu'aucune contrainte matérielle ne peut compenser une requête mal conçue.

Add age verification to accounts service

Le texte décrit un dispositif visant à protéger les serveurs contre les entreprises qui récupèrent massivement le contenu des sites web. Il s'agit d'un compromis qui déploie une preuve de travail similaire à Hashcash pour augmenter le coût du scraping. À l'échelle individuelle, la charge supplémentaire est négligeable, mais elle s'accumule face aux scrapers de masse et rend le scraping plus coûteux. L'objectif est de gagner du temps en identifiant et en prenant l'empreinte des navigateurs headless, afin que la page de défi ne soit plus présentée aux utilisateurs légitimes. Le mécanisme nécessite des fonctionnalités JavaScript modernes qui peuvent être bloquées par certains plugins comme JShelter, et il est recommandé de désactiver ces plugins pour ce domaine.

The Soul of a Pedicab Driver

Cet essai raconte l'expérience d'un chauffeur de pedicab à Oslo, qui trouve l'activité lucrative et enrichissante sur le plan personnel. Il décrit les plaisirs des trajets où les passagers rient et les regards complices des badauds, mais aussi les agressions et les frictions avec des ivres ou des jeunes. Pour gérer le stress, il met en place des pauses régulières, de la méditation et une planification qui préserve son énergie mentale. Suite à une confrontation avec des clientes récalcitrantes qui tentaient de payer peu, il opte pour une conduite plus douce et plus respectueuse envers les passagers et les piétons. Il constate que ce changement réduit les incidents, améliore son bien-être et peut même augmenter ses revenus, tout en offrant une leçon sur l'application de ces principes à sa vie et à d'autres aspects du cyclisme urbain.