Tous les articles
-
Propriété des ressources en FFI Rust : associer le constructeur étranger à son véritable destructeur
Rendre explicites l'allocation, la libération et la durée de vie des rappels (callbacks) dans un wrapper Rust étroit autour de ressources étrangères.
-
Opérations en masse plutôt que des boucles ligne par ligne : allers-retours, transactions et COPY
Une boucle qui envoie une instruction par ligne paie un aller-retour, une analyse syntaxique et souvent une validation (commit) par ligne ; une opération en masse envoie l'ensemble en une seule instruction, un seul flux ou une seule transaction. La documentation de PostgreSQL elle-même recommande de valider une seule fois, d'utiliser COPY pour les chargements et de construire les index après le chargement ; les bibliothèques clientes proposent executemany et copy pour la même raison.
-
Débit réseau et retransmissions sous Linux : ss -ti, nstat et iperf3
ss -ti affiche la vue propre à une connexion sur ses retransmissions et son RTT ; nstat fournit le même type de compteurs à l'échelle de l'hôte, à partir des statistiques SNMP et des statistiques TCP étendues du noyau ; iperf3 mesure directement le débit atteignable lorsque les retransmissions sont faibles mais que le débit reste décevant.
-
Un premier game day : une expérience de chaos avec une hypothèse, un rayon d'impact et une règle d'abandon
Mener un premier exercice d'injection de faute comme une expérience planifiée et annoncée : définir l'état stable comme une sortie mesurable, formuler l'hypothèse qu'il se maintient sous une faute précise, limiter le rayon d'impact, fixer une condition d'abandon, injecter, et consigner ce qu'ont fait le système et les personnes ; les Principles of Chaos Engineering donnent les quatre étapes et le livre SRE de Google décrit le jeu de rôle de catastrophe comme un rituel hebdomadaire.
-
Raisonner sur la complexité avant d'optimiser
La complexité asymptotique prédit comment le temps d'exécution croît avec la taille de l'entrée ; repérer en relecture de code les boucles quadratiques, les recherches linéaires répétées et la récursion non bornée évite la plupart des incidents de performance avant même qu'un profilage soit nécessaire.
-
Séparer l'éclairage HDR, l'exposition, le tone mapping et la sortie d'affichage
Des étapes explicites permettent de conserver les informations des zones lumineuses de la scène, de régler l'exposition de façon prévisible et de produire un signal adapté à l'écran cible.
-
Un podomètre au poignet et un téléphone en poche divergent davantage les jours à nombreuses courtes marches et mains occupées
Hypothèse : deux podomètres grand public portés par une même personne, l'un au poignet et l'autre dans une poche de pantalon, divergent dans une proportion plus grande les jours que le journal marque comme comportant de nombreuses courtes marches ou des mains occupées (poussette, sacs, chariot) que les jours à quelques longues marches, parce que les deux appareils lisent des mouvements corporels différents ; un relevé quotidien indiquant les deux appareils est proposé comme test, et aucune mesure n'est rapportée.
-
La sérialisation déterministe de Protocol Buffers n'est pas une identité canonique de message
Éviter d'utiliser des octets protobuf arbitraires comme empreinte sémantique stable entre environnements d'exécution et versions.
-
Séparer le service agissant de l'utilisateur représenté dans les tests de délégation
Tester une action déléguée avec à la fois l'identité du service exécutant et l'utilisateur qu'il représente visibles dans l'oracle. Cette méthode proposée évite de traiter une authentification de service réussie comme une preuve suffisante de l'autorité de l'utilisateur.
-
Le keep-alive HTTP et la réutilisation de connexion : pools, délais d'inactivité et la course à la connexion périmée
HTTP/1.1 garde une connexion ouverte pour d'autres requêtes à moins qu'un Connection: close ne soit envoyé, ce qui supprime une poignée de main TCP et TLS de chaque requête après la première ; le client doit conserver un pool pendant toute la durée de vie du processus, lire chaque corps de réponse, et fixer son délai d'inactivité en dessous de celui du serveur pour ne pas réutiliser une connexion que le serveur a déjà fermée.
-
Épinglage APT : maintenir un paquet sur une version ou une source choisie grâce aux fichiers de préférences
L'épinglage APT permet de figer un paquet à sa version actuelle, de l'installer depuis une suite non par défaut ou d'empêcher un futur apt upgrade d'y toucher. La configuration se fait par fichier dans /etc/apt/preferences.d, sans éditer un fichier unique partagé, et se vérifie avec apt-cache policy.
-
AdamW : pourquoi la décroissance des poids découplée diffère d'une pénalité L2
AdamW applique la contraction des paramètres séparément de la mise à jour adaptative du gradient, de sorte que le terme de décroissance n'entre pas dans les estimations des moments d'Adam. Le taux d'apprentissage, le nombre de mises à jour et le choix des groupes de paramètres continuent toutefois d'influer sur la régularisation.
-
Lire, accorder et sauvegarder les permissions NTFS avec icacls et Get-Acl/Set-Acl
icacls lit et accorde les permissions NTFS et exprime l'héritage avec les indicateurs (OI)(CI) ; icacls /save et /restore sauvegardent puis réappliquent toute une arborescence d'ACL avant une modification, et Get-Acl/Set-Acl fournissent les mêmes informations sous forme d'objets PowerShell.
-
Les améliorations mesurées après avoir ciblé les cas les moins performants sont en partie une régression vers la moyenne
Hypothèse : lorsqu'un effort d'ingénierie sélectionne les points de terminaison, tests, hôtes ou tenants les moins bien notés selon une métrique bruitée et rapporte leur amélioration après intervention, une part substantielle du gain rapporté se serait produite sans l'intervention, parce que les mesures extrêmes tendent à être suivies de mesures moins extrêmes. Un test proposé avec un groupe témoin non touché est décrit.
-
Dérivées de shader : préserver des gradients valides à travers les branches et les coutures UV
Diagnostiquer des empreintes de texture instables en distinguant coordonnées continues, gradients explicites et opérations de dérivées dans un flot de contrôle divergent d'un fragment shader.
-
Objectifs de niveau de service et budgets d'erreur
Un SLO est une cible pour un indicateur de niveau de service tel que la disponibilité ou la latence ; l'écart entre la cible et 100 % constitue un budget d'erreur qui détermine quel niveau de risque les mises en production peuvent prendre.
-
Un script d'installation du premier jour qui se vérifie lui-même : bootstrap, doctor, test de fumée
Une seule commande après le clonage produit soit un environnement fonctionnel, soit une liste précise de ce qui manque et comment le corriger : un script doctor en lecture seule vérifie chaque prérequis, un bootstrap idempotent n'installe que ce que les vérifications signalent manquant, et un test de fumée décide du code de sortie ; l'intégration continue l'exécute depuis une machine propre afin qu'il ne se dégrade pas entre deux arrivées.
-
Vérifications de qualité des données : fraîcheur, volume, valeurs nulles et unicité comme socle minimal
Quatre vérifications peu coûteuses détectent la plupart des chargements défaillants : la source est-elle assez fraîche, un nombre de lignes plausible est-il arrivé, les clés et les indicateurs sont-ils renseignés, la granularité déclarée est-elle unique ? Formuler chaque vérification comme une requête qui renvoie les lignes fautives, l'exécuter après le chargement et avant la publication, et séparer l'avertissement du blocage.
-
Les intervalles de confiance en bref : ce que l'intervalle dit et ce qu'il ne dit pas
Un intervalle de confiance à 95 % provient d'une procédure qui capture la vraie valeur dans 95 % des échantillons répétés ; un intervalle particulier la contient ou ne la contient pas. Sa largeur diminue avec la racine carrée de la taille de l'échantillon et croît avec la dispersion. Le lire comme la plage de valeurs compatibles avec les données, le rapporter à côté de chaque estimation, et calculer l'intervalle d'une différence lors d'une comparaison.
-
Extraction sûre d'archives : traversée de chemin dans zip et tar
Les entrées d'une archive peuvent porter des noms comme ../../etc/passwd ou des chemins absolus et des liens symboliques ; n'extraire qu'après avoir résolu chaque chemin cible et vérifié qu'il reste à l'intérieur de la destination, rejeter les liens pointant vers l'extérieur, et plafonner la taille totale et le nombre d'entrées.
Lisible par machine : JSON