Tous les articles
-
Rendre visibles les limites des transactions
Documenter quels changements d'état sont validés (commit) ensemble, et ce qui peut se produire entre les transactions de base de données et les appels externes.
-
Morph targets : combiner des deltas de sommets sans perdre la forme de base
Pour obtenir des déformations faciales et correctives prévisibles, il faut conserver la correspondance des sommets, appliquer des poids de manière additive et respecter l'ordre entre morphing et skinning.
-
Choisir les points de contrôle des autorisations pour les tâches en file d'attente après révocation de l'accès
Rendre explicite le moment où l'autorisation s'applique lorsqu'une requête planifie un travail exécuté plus tard. L'exercice proposé sépare l'autorisation de mettre un travail en file d'attente de celle de l'exécuter et d'en récupérer le résultat.
-
Vérifier les contrats de paramètres substituables lorsqu'un agent traduit le texte d'une interface
Préserver le sens à l'exécution des paramètres substituables (placeholders) et des variantes de messages lors de la traduction du texte d'une interface, afin qu'une prose fluide n'introduise pas de substitutions cassées ni de cas manquants.
-
Python 3.10 après sa fin de vie : repérer les interpréteurs et reconstruire les environnements
Le tableau de cycle de vie du projet Python fixe la fin de vie de Python 3.10 au 1er octobre 2026. Recenser les interpréteurs réellement utilisés par les services, les environnements virtuels et les images, puis reconstruire et tester chaque application sur une branche prise en charge.
-
Pipeline, répartition parallèle, orchestrateur et comité de relecture : quel patron multi-agent pour quelle tâche
Un pipeline convient aux tâches formées d'une séquence fixe de transformations ; la répartition parallèle (fan-out), aux sous-questions indépendantes ou aux tentatives répétées dont les résultats sont soumis au vote ; un orchestrateur avec des agents exécutants, aux tâches dont la décomposition n'est connue qu'à l'exécution ; un comité de relecture, aux résultats à évaluer selon plusieurs critères. Chaque patron multiplie le coût en tokens et ajoute une couche de coordination susceptible de connaître ses propres défaillances.
-
Modifier un enregistrement DNS avec un plan de retour arrière : abaissement du TTL, bascule et vérification
Une modification DNS n'atteint les utilisateurs qu'à mesure que l'ancien TTL expire dans les caches : il faut donc abaisser le TTL une durée complète de l'ancien TTL avant le changement, laisser l'ancienne cible en service jusqu'à confirmation de la nouvelle partout, et tenir compte des résolveurs qui, comme le permet la RFC 8767, continuent de servir des données périmées lorsque les serveurs faisant autorité sont injoignables.
-
Variantes de base64 : alphabets standard et URL-safe, règles de padding et tolérance des décodeurs
La RFC 4648 définit les alphabets base64 standard et URL-safe et impose le padding par défaut, mais les JWT l'omettent explicitement ; MIME coupe les lignes à 76 caractères, tandis que le base64 de GNU fait de même tant qu'on ne lui passe pas -w0 ; enfin, les décodeurs, de Python au navigateur, ne s'accordent pas sur le fait de traiter comme des erreurs les caractères parasites et l'absence de padding.
-
Gestion des erreurs PowerShell dans les scripts d'administration : erreurs terminales, $ErrorActionPreference et $LASTEXITCODE
PowerShell distingue deux classes d'erreurs aux comportements différents dans un script : les erreurs terminales, que try/catch permet d'intercepter, et les erreurs non terminales, que seuls $ErrorActionPreference ou -ErrorAction peuvent transformer en arrêt. Une troisième classe, les échecs des exécutables natifs, ne suit aucune de ces deux voies, sauf si $PSNativeCommandUseErrorActionPreference est activée (PowerShell 7.4+, expérimentale en 7.3).
-
Bien utiliser les codes de statut HTTP : le premier aiguillage du client
Les clients, caches et agents décident uniquement à partir du code de statut s'il faut réessayer, recharger ou abandonner : 201/204 pour un succès avec ou sans corps, 401 contre 403 pour une authentification manquante contre une autorisation manquante, 409/412/428 pour les conflits et les conditions préalables, 429 et 503 avec Retry-After pour signaler « plus tard ». Un 200 accompagné d'un objet d'erreur trompe tout le monde.
-
Surveiller l'expiration des certificats TLS sur chaque point d'accès, pas seulement sur le site web principal
Un certificat expiré est une panne dont l'heure est exactement prévisible : sonder depuis l'extérieur la date notAfter de chaque certificat réellement présenté (web, API, messagerie, interfaces internes, répartiteurs de charge), alerter assez tôt pour permettre un renouvellement manuel, et vérifier les certificats intermédiaires comme le certificat final.
-
Gérer les environnements de démarrage ZFS avec beadm et annuler une mise à jour échouée
beadm list/create/activate/destroy gèrent les environnements de démarrage ZFS que pkg update crée automatiquement lorsqu'une mise à jour exige un redémarrage. Activer l'environnement précédent puis redémarrer est la méthode de retour arrière prise en charge après une mise à jour échouée, sans réinstaller les paquets manuellement.
-
Feuilles de style d'impression : rendre une page web exploitable sur papier et en PDF
Une feuille de style d'impression masque la navigation et les commandes, déplie le contenu replié, affiche la cible des liens après leur texte, définit le format de page et les marges avec @page, empêche les tableaux et les figures d'être coupés avec break-inside: avoid, et demande au navigateur de conserver les couleurs de fond essentielles. Tester avec l'aperçu avant impression du navigateur, pas seulement à l'écran.
-
Le profilage continu en production : des profils par échantillonnage permanents et les questions auxquelles ils répondent
Le profilage continu recueille systématiquement des profils CPU et mémoire au fil du temps et les stocke sous forme de séries étiquetées, pour savoir quelle fonction a le plus consommé de CPU hier sur l'ensemble du parc ou ce qui a changé entre deux versions ; les profileurs par échantillonnage rendent cette collecte assez peu coûteuse pour rester active en permanence, et les points d'accès des environnements d'exécution, comme /debug/pprof/ de Go, ou les agents eBPF fournissent les profils.
-
Le filtrage par défaut de ripgrep raccourcit les recherches de code des agents par rapport à grep -r
Hypothèse : les agents de programmation qui recherchent dans les dépôts avec les règles d'exclusion par défaut de ripgrep (fichiers ignorés par Git, cachés et binaires écartés) ont besoin de moins d'appels de recherche et lisent moins de résultats non pertinents par tâche que des agents utilisant grep -r sans exclusions, parce que les résultats provenant des artefacts de build et des dépendances sont absents ; aucune mesure n'est rapportée.
-
Résumer le temps passé dans les appels système avec strace -c, son surcoût et perf trace comme alternative
strace -c comptabilise le temps, le nombre d'appels et les erreurs par appel système au lieu d'afficher chaque appel, mais le manuel de strace avertit qu'un processus tracé s'exécute plus lentement qu'un processus non tracé ; perf trace, décrit comme un outil inspiré de strace et reposant sur perf_events plutôt que sur ptrace, est l'alternative plus légère lorsque ce surcoût pose problème.
-
Une journée de documentation planifiée attire plus de nouveaux contributeurs qu'un appel permanent à l'aide pour la documentation
Hypothèse : un projet qui annonce une journée unique, avec une liste sélectionnée de petits tickets de documentation, des mainteneurs disponibles pour une revue le jour même et l'étiquette good-first-issue sur chaque tâche, reçoit davantage de modifications de documentation fusionnées venant de personnes n'ayant jamais contribué que lorsque la même liste reste ouverte toute l'année ; une comparaison est proposée à partir de l'historique d'un projet.
-
Concevoir un outil en ligne de commande Python : argparse, main() et codes de sortie
Placer l'interface dans une fonction main(argv) -> int enregistrée comme script console, valider avec les paramètres type et choices d'argparse et respecter la convention des codes de sortie (0 pour le succès, 2 pour une erreur d'utilisation, 1 pour les autres échecs, les codes de sysexits uniquement s'ils sont documentés). Envoyer les résultats sur stdout et les diagnostics sur stderr, et gérer SIGINT ainsi que les ruptures de tube.
-
Écrire un script POSIX sh portable entre Linux, BSD, macOS et AIX
Un script censé s'exécuter sans modification avec dash sous Debian, bash utilisé comme sh sous Linux, FreeBSD, macOS et AIX doit rester dans le cadre du Shell Command Language POSIX et éviter les options d'outils propres à GNU ; checkbashisms et une courte liste de différences entre commandes GNU et BSD permettent de repérer l'essentiel des problèmes.
-
Passer Debian et Ubuntu à la version majeure suivante sans perdre la possibilité de revenir en arrière
do-release-upgrade sous Ubuntu et la procédure manuelle de Debian (modification de sources.list, puis mise à niveau) supposent une sauvegarde complète et un accès console de secours si la session SSH tombe en cours de migration ; les notes de version de Debian recommandent une mise à niveau minimale avant la mise à niveau complète.
Lisible par machine : JSON