HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

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

11427 articles Page 1029/1143 Sans filtre

What canceled my Go context?

Les erreurs "context canceled" ne disent pas toujours pourquoi l’annulation survient, ce qui a conduit Go à introduire des API de cause pour attacher une raison explicite. WithTimeoutCause et WithCancelCause permettent d’étiqueter les délais et les annulations avec une cause personnalisée, mais des subtilités exigent de bien orchestrer les cancel() et les timers. Un exemple montre qu’un timer peut déclencher une cause spécifique lorsque le délai expire, mais que la sortie normale peut ne pas enregistrer cette cause. Pour s’assurer que toutes les voies conservent une cause utile, l’article présente des schémas alternatifs, comme gérer le timer manuellement avec une seule CancelCauseFunc ou empiler des contextes avec des causes distinctes. Enfin, l’article recommande d’injecter une cause au niveau du middleware et d’observer à la fois l’erreur et la cause pour faciliter le débogage et le tri des incidents.

Entomologists use a particle accelerator to image ants at scale

Antscan est un atlas tridimensionnel de la morphologie des fourmis, présentant des reconstructions à résolution micrométrique qui dévoilent l'exosquelette, les muscles, les nerfs, les tractus digestifs et les dards prêts à l'emploi. 792 espèces réparties sur 212 genres font partie de la base de données et sont accessibles via une plateforme en ligne interactive permettant de faire tourner, zoomer et dissectionner virtuellement les spécimens. Des experts indépendants estiment qu'Antscan constitue une ressource exceptionnelle pour les travaux de comparaison à travers les fourmis. L'équipe a mis en place une chaîne d'imagerie automatisée utilisant la tomographie par rayons X au synchrotron pour numériser plus de 2 200 spécimens, avec reconstruction 3D et outils d'apprentissage automatique pour l'identification des structures. À terme, Antscan pourrait transformer l'étude de la morphologie en un référentiel numérique, étendant l'accès public tout en surmontant les goulets d'étranglement liés au beamtime et à la gestion de centaines de téraoctets de données.

Modernizing swapping: virtual swap spaces

LWN.net appelle les lecteurs à soutenir la publication en souscrivant un abonnement. Le sous-système de swapping du noyau Linux est performant mais complexe et a connu ces derniers temps des améliorations, notamment l'ajout d'une table de swap et la suppression de la swap map. Nhat Pham propose de remplacer les tables de swap par périphérique par une table virtuelle unique, chaque entrée swp_desc pouvant pointer vers un slot physique ou une entrée zswap, et vers la page en RAM ou son shadow. Cette approche permet de déplacer des pages entre périphériques et de n’allouer des slots que lorsque nécessaire, mais elle augmente l’utilisation mémoire et la complexité, et soulève des inquiétudes sur les performances exprimées par Kairui Song et Chris Li. Des travaux complémentaires comme les swap tiers de Park pourraient se combiner avec cet espace d’échange virtuel, et la série continue d’évoluer vers une éventuelle fusion des approches.

CT Scans of Health Wearables

L’article retrace l’évolution de l’emballage des boissons, passant du verre au plastique, tout en soulignant l’ingénierie et l’infrastructure mobilisées derrière des objets apparemment banals. Il évoque l’échec des bouteilles en acrylonitrile de Coca‑Cola dans les années 1970 et l’arrivée du PET grâce à DuPont, qui a ouvert la voie à une production alimentaire en plastique. Le texte décrit ensuite le procédé d’injection-stretch-blow molding, la préforme en PET et le soufflage en moules qui donnent les bouteilles modernes. Il retrace la montée du marché des eaux en bouteille dans les années 1990 et l’optimisation continue des formats et des parois pour réduire le poids et les coûts. Enfin, il traite du recyclage et de la réutilisation, des défis du tri et des perspectives incertaines quant à l’avenir des emballages plastiques.

Editing changes in patch format with Jujutsu

L’article présente le problème consistant à modifier le contenu d’un seul changement dans Jujutsu et les limites du renommage via LSP pour Python. Il explore des solutions possibles comme inspecter le changement avec jj show et effectuer des remplacements globaux, ou exporter le patch avec git format-patch puis le réappliquer. Jujutsu ne supporte pas directement ces méthodes, mais offre jj diffedit pour modifier le contenu d’un changement. Cependant l’éditeur intégré ne permet pas de réorganiser le contenu et les outils externes comme KDiff3 ne fonctionnent pas bien pour ce cas. L’article décrit comment ajouter un outil externe via le fichier de configuration et présente un script edit-patch qui génère un patch et l’applique via jj diffedit --tool=patch.

Show HN: Kula – Lightweight, self-contained Linux server monitoring tool

L'outil est léger et autonome pour la surveillance de serveurs Linux, sans dépendances externes et sous forme d'un seul binaire. Il collecte des métriques système toutes les secondes en lisant directement /proc et /sys, les stocke dans un moteur de stockage en anneau à plusieurs niveaux et les expose via une interface Web en temps réel et une TUI. Le stockage utilise des fichiers ring-buffer pré-alloués par tier, avec des tailles fixes et une écriture cyclique qui remplace les anciennes entrées. Le backend Web propose une API REST (/api/current, /api/history, /api/config) et un WebSocket (/ws) pour le streaming en direct, avec une authentification optionnelle qui peut utiliser Argon2id avec des cookies de session ou des tokens Bearer. Le frontend est embarqué dans le binaire et constitue une SPA basée sur Chart.js avec des jauges SVG, connectée au WebSocket pour les mises à jour live et offrant zoom, focus et alertes.

The shady world of IP leasing

L'épuisement supposé d'IPv4 n'est pas une crise technique mais le résultat d'un accaparement massif et d'un marché de sous-location qui transforme les adresses publiques en une propriété immobilière numérique. Des blocs historiques sont accumulés par des sociétés et des spéculateurs qui les louent et les redistribuent, avec des pratiques comme le white-labeling et l'enregistrement d'ASN au nom d'autrui qui brouillent la traçabilité. Le leasing d'IP contourne le système des RIR et le WHOIS, créant des espaces d'adresses anonymes et difficilement traçables, et permettant d'afficher une géolocalisation choisie sans vérification. Des services tels que la suppression d'adresses des listes noires, la fourniture de proxies résidentiels et la géolocalisation manipulée sapent la fiabilité des données de sécurité et de conformité. Bien que ce système opère dans une zone grise légale, il remet en cause la confiance de l'internet en rendant la géolocalisation, la réputation des IP et l'attribution WHOIS facilement manipulables.

C# strings silently kill your SQL Server indexes in Dapper

Un problème de performance est apparu dans une application .NET utilisant Dapper lorsque les paramètres string ont été transmis en nvarchar par défaut. Une conversion implicite sur une colonne varchar a empêché l’utilisation de l’index, provoquant des scans et une charge CPU élevée. La solution est de préciser explicitement le type de paramètre comme varchar via DynamicParameters et DbType.AnsiString, avec la taille correspondant à la colonne. Le choix dépend du type de colonne et de la collation, l’objectif étant d’aligner le paramètre sur varchar ou nvarchar pour préserver les plans et l’index. Pour diagnostiquer, on peut rechercher des conversions implicites dans les plans ou dans Query Store et auditer les appels Dapper passant des strings à des colonnes varchar.

Querying 3B Vectors

L’article explore comment une discussion sur l’interrogation de 3 milliards de vecteurs a suscité une expérimentation pratique sur les performances et les méthodes possibles. Il décrit une approche naïve où chaque vecteur de requête est comparé à tous les vecteurs du corpus et les données sont stockées sur disque au format .npy. En passant à une version vectorisée, la multiplication de matrices permet des gains importants sur de petits jeux, mais pour des ensembles de millions de vecteurs le temps et la mémoire deviennent critiques. L’auteur calcule que viser 3 milliards de vecteurs en float32 nécessiterait environ 8,6 To et propose des solutions comme le batching, le mapping mémoire ou une réécriture en Rust/C ou l’utilisation de SIMD. Il conclut que le véritable défi est de clarifier les exigences du problème (top-k, streaming, matériel, formats, compression et délais) avant de choisir une solution technique.