HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

7134 articles Page 400/714 Sans filtre

06:02

The becquerel as an SI unit for request rate

Le débit des requêtes correspond au nombre de requêtes arrivant, traitées ou quittant un système pendant une période donnée, et il faut impérativement préciser la durée de cette période car des tableaux de bord qui l'agrègent dynamiquement donnent des valeurs différentes selon la fenêtre d'affichage. Il est recommandé de mesurer le débit en secondes, c'est‑à‑dire en requêtes par seconde, plutôt qu'en requêtes par minute. Les unités SI hertz (Hz) et becquerel (Bq) valent toutes deux un événement par seconde, mais le hertz est associé à des phénomènes périodiques tandis que le becquerel convient à des événements aléatoires observés en moyenne. Ainsi, il est logique d'exprimer en Hz des tests de charge très réguliers et en Bq un trafic organique moyenné, d'autant plus que des préfixes comme kBq rendent l'écriture de grands débits plus compacte. Techniquement, le becquerel est destiné à mesurer l'activité radioactive et il n'existe pas d'unité SI officielle pour des événements arbitraires moyennés, bien que certains continuent d'employer le becquerel pour les débits de requêtes.

06:02

Migrating from DigitalOcean to Hetzner

L'équipe a migré une production complète de DigitalOcean vers un serveur dédié Hetzner pour réduire drastiquement les coûts en raison de l'inflation et de la dépréciation de la lire turque, passant d'un coût de 1 432 $/mois à 233 $/mois, soit une économie annuelle de 14 388 $. La pile en production comprenait 30 bases MySQL (248 Go), 34 virtual hosts Nginx, GitLab EE, Neo4j, des workers supervisés et plusieurs applications mobiles desservant des centaines de milliers d'utilisateurs, et a été migrée de CentOS 7 vers AlmaLinux 9.7. La migration en six phases a assuré zéro temps d'arrêt en réalisant d'abord une installation complète et une configuration identique sur le nouveau serveur, puis un clonage des fichiers avec rsync, la mise en place d'une réplication MySQL, la réduction des TTL DNS, la conversion de l'ancien Nginx en reverse proxy et enfin le basculement DNS automatisé. Pour MySQL, l'équipe a utilisé mydumper/myloader en parallèle pour exporter et importer les 248 Go, a démarré la réplication depuis la position de binlog, a résolu des erreurs de clé dupliquée avec SET GLOBAL slave_exec_mode='IDEMPOTENT' et a corrigé un problème lié au schéma sys après la montée de version de 5.7 vers 8.0. Les enseignements clés sont d'utiliser la réplication pour des migrations sans coupure, de vérifier et retirer les privilèges SUPER qui contournent read_only, d'automatiser les opérations (DNS, nginx, webhooks) et de profiter des scripts open source fournis sur GitHub pour reproduire le processus.

06:02

Optimizing Ruby Path Methods

En novembre, l'auteur a rejoint Intercom et s'est concentré sur la réduction du temps de configuration du CI du monolithe pour améliorer l'expérience utilisateur et diminuer les coûts. Il décrit comment Bootsnap accélère le démarrage Ruby en construisant un cache des chemins de chargement pour éviter les recherches linéaires coûteuses lors des require. Le principal goulot d'étranglement était le balayage récursif des répertoires provoquant de nombreux appels système (N+1 syscalls), problème amplifié sur les CI où les mtime ne sont pas préservés par git. Pour y remédier, il a prototypé et poussé une API Dir.scan et intégré ces optimisations à Bootsnap, réduisant le temps de scan d'environ 2x sur leur repo. Il a en outre accéléré File.join et d'autres fonctions de chemin en ajoutant des fastpaths d'encodage, une recherche inverse plus efficace, en supprimant des vérifications et allocations inutiles, obtenant des gains allant jusqu'à plusieurs fois la vitesse.

06:01

State of Kdenlive

En 2025, l'équipe Kdenlive a maintenu un rythme soutenu en privilégiant la stabilité tout en équilibrant ajout de fonctionnalités, correction de bugs, polissage de l'interface et amélioration des performances et du flux de travail. Les temps forts des versions incluent dans 25.04 l'ajout d'un plugin d'object segmentation basé sur SAM2 pour retirer des éléments d'arrière‑plan, la refonte de l'import/export OpenTimelineIO en C++ et un gain de 300 % sur la génération des formes d'onde audio. La version 25.08 a mis l'accent sur la stabilisation avec plus de 300 commits et des corrections de plantages, apportant aussi un mixeur audio repensé, une refonte des marqueurs et guides et des améliorations du titler, tandis que 25.12 a surtout amélioré l'expérience utilisateur avec un écran de bienvenue, un nouveau système d'ancrage et un moniteur de projet redessiné. À venir, 26.04 introduira le mirroring de moniteur, des aperçus animés de transitions et des ajustements automatiques de durée de transition, et la feuille de route prévoit des évolutions du framework MLT (support 10/12 bits, optimisations de décodage, OpenFX), la refonte du système de sous-titres, des outils d'Advanced Trimming et un dopesheet pour le keyframing soutenu par une subvention NGI. La communauté reste active avec 38 contributeurs de code en 2025 (dont de nombreux nouveaux), des sprints à Amsterdam et Berlin, 11,5 millions de téléchargements depuis le site et des dons totalisant 9 344,80 €, l'équipe invitant à soutenir le projet via dons, tests, traductions ou promotion locale.

06:01

Modern Common Lisp with FSet

Le document est publié sous la licence Creative Commons CC BY-NC-SA 4.0. La licence permet la distribution, la modification et l'adaptation pour des usages non commerciaux avec attribution et partage à l'identique. L'auteur affirme que le texte n'a pas été généré par un modèle de langage. Les erreurs et suggestions doivent être signalées via les instances GitLab ou GitHub de Common-Lisp.Net. Le document contient une table des matières.

06:01

Why Japan has such good railways

Le Japon est de loin le pays développé où le rail représente la part la plus importante du transport de passagers, avec 28 % des kilomètres-passagers et des centres urbains hyperdenses qui concentrent l'usage. Le réseau est assuré par une pluralité d'entreprises privées historiques et par six compagnies JR issues de la privatisation de 1988, qui sont majoritairement rentables et souvent intégrées verticalement. Les compagnies ferroviaires récupèrent les retombées économiques de leurs lignes en développant de vastes activités annexes — immobilier, commerce, loisirs et services — qui financent les opérations et attirent des résidents le long des axes. Des règles d'urbanisme libérales et des procédures de readjustement foncier ont facilité la densification autour des gares, tandis que la restriction du stationnement public et le financement routier par péages et taxes ont fait supporter à l'automobile une part importante de ses coûts. Des politiques publiques ciblées — privatisation et restructuration du JNR, plafonds tarifaires généreux mais protecteurs, subventions d'investissement conditionnelles et régulation opérationnelle limitée — ont renforcé productivité et investissement, montrant que les institutions et les choix publics expliquent davantage le succès ferroviaire que la culture.

06:01

Zero-Copy GPU Inference from WebAssembly on Apple Silicon

Sur Apple Silicon, la mémoire linéaire d'un module WebAssembly peut être partagée directement avec le GPU sans copies ni buffers intermédiaires, le CPU et le GPU lisent et écrivent les mêmes octets physiques. Alors que sur du matériel classique la communication VM→GPU exige des copies à travers un bus PCIe, l'architecture mémoire unifiée d'Apple efface cette frontière et permet de faire remonter un pointeur mmap jusque Metal et Wasmtime sans copies défensives. L'auteur a validé une chaîne en trois maillons : mmap fournit une mémoire alignée, Metal accepte les buffers via MTLDevice.makeBuffer(bytesNoCopy:length:) sans duplication, et Wasmtime permet d'utiliser son propre allocateur pour exposer la région mmap comme mémoire linéaire du module. Les mesures montrent l'identité des pointeurs, une surcharge mémoire quasi nulle (delta RSS ~0,03 Mo contre ~16,78 Mo pour la voie par copie), une latence de GEMM équivalente et des résultats corrects sur un test 128×128. Sur cette base, l'auteur construit Driftwood, un runtime pour acteurs Wasm étatful avec inférence GPU et sérialisation rapide du cache KV (safetensors) pour restaurations et mobilité d'acteurs, tout en notant que le travail reste précoce et à valider à plus grande échelle.

06:00

The electromechanical angle computer inside the B-52 bomber's star tracker

Avant le GPS, la navigation céleste — fondée sur la position du soleil, des étoiles et des planètes — était une méthode précise et insensible au brouillage mais longue et difficile à réaliser manuellement. Pour automatiser la navigation sur le B‑52, on a développé l'Astro Compass incluant l'Angle Computer, un ordinateur analogique électromécanique qui modélisait la sphère céleste et résolvait le triangle de navigation. Le système Astro Compass comprenait un Astro Tracker monté sous un dôme, un télescope avec photomultiplicateur et une plateforme stabilisée par gyroscopes et moteurs pour suivre précisément les étoiles. L'Angle Computer recevait en entrée déclinaison, angle horaire local et latitude et convertissait mécaniquement ces données en azimut et altitude via un mécanisme de bras, d'arcs et de synchros, complété par moteurs et boucles de rétroaction électriques. Outre la fourniture d'un cap très précis, l'ensemble permettait d'établir des lignes de position célestes pour fixer la position, mais la solution mécanique et électro‑mécanique fut rapidement supplantée par l'informatique numérique.

06:00

What Are Skiplists Good For?

Un skiplist est une structure de données aléatoire qui remplace un arbre binaire de recherche en ajoutant des voies rapides hiérarchiques pour obtenir des recherches en O(log n). Chez Antithesis, des tests fuzz ont produit un arbre de timelines très volumineux dont les parcours d'ancêtres nécessitaient des lectures point à point, ce qui était extrêmement coûteux dans BigQuery qui effectue des scans massifs plutôt que des lectures ponctuelles. La solution inventée, appelée skiptree, empile des arbres de niveaux successifs et stocke dans une table par niveau une colonne next_level_ancestor et une colonne ancestors_between contenant les nœuds intermédiaires, de sorte que chaque chemin racine-feuille correspond à un skiplist partagé entre niveaux. Avec cette organisation, il est possible de récupérer les ancêtres d'un nœud par une requête SQL non récursive à nombre fixe de JOINs (environ une trentaine ou quarantaine), ce qui réduit le coût de lecture grâce à la distribution géométrique des tailles de tables mais génère des requêtes SQL volumineuses qu'ils ont produites à l'aide d'un compilateur JavaScript. L'approche, proche des skip graphs en distribution, a évité la complexité de synchroniser deux bases et a finalement été remplacée par une base analytique interne, illustrant aussi l'utilité pratique des implémentations naïves de skiplists.