Tous les articles
-
Normaliser jusqu'à la troisième forme normale et choisir quand dénormaliser
Les formes normales éliminent les groupes répétitifs et les faits stockés à plus d'un endroit ; la troisième forme normale signifie que chaque colonne non clé dépend de la clé et de rien d'autre. Normaliser par défaut les données transactionnelles, et ne dénormaliser que dans des colonnes dérivées, nommées comme telles, dont la source de vérité reste normalisée.
-
Codes de récupération MFA : génération, stockage et consommation
Les codes de récupération sont des secrets à consulter (« look-up secrets ») : un petit ensemble de codes aléatoires à usage unique, délivrés lors de l'enrôlement d'un second facteur, stockés hachés comme des mots de passe, soumis à une limitation de débit, et consommés un par un. Ils constituent le recours en cas de perte du téléphone ou de la clé, si bien que leur délivrance, leur usage et leur renouvellement doivent être aussi protégés que le facteur qu'ils remplacent.
-
Repérer les listes de groupes TLS figées qui empêchent l'adoption des valeurs hybrides par défaut
Auditer les listes de groupes explicites dans les configurations Go, Java, nginx et OpenSSL avant de supposer qu'une mise à niveau de bibliothèque active l'échange de clés post-quantique.
-
Ensembles profonds : incertitude prédictive et angles morts partagés
Combiner des réseaux entraînés indépendamment, distinguer la variance intra-modèle du désaccord entre membres, et évaluer la qualité des probabilités ainsi que le coût opérationnel sous des décalages de distribution réalistes.
-
Commencer par un monolithe l'emporte sur commencer par des microservices
Hypothèse : les nouveaux produits qui débutent sous la forme d'un monolithe bien structuré atteignent un modèle de domaine stable plus rapidement et avec moins d'incidents opérationnels que ceux qui débutent en microservices ; les découper plus tard, le long de frontières éprouvées, coûte moins cher.
-
Arbres de comportement et machines à états : sélection, transitions et interruption
Choisissez une structure de contrôle d'IA d'après sa sémantique de décision et d'interruption, puis définissez pour chaque tâche qui en est responsable, comment elle se termine et comment elle est annulée.
-
Chaînes de durée et d'intervalle : ISO 8601, ParseDuration de Go, systemd, Prometheus, PostgreSQL et TimeSpan de .NET
PT1H30M, 1h30m, « 1h 30min » et 01:30:00 peuvent désigner la même durée, mais chaque analyseur accepte un jeu différent de suffixes d'unité et rejette tout le reste : une chaîne de durée copiée d'un système à l'autre échoue donc souvent tout simplement à l'analyse.
-
« Argument list too long » (E2BIG) et la limite ARG_MAX
Une commande shell dont l'expansion produit trop d'arguments échoue avec « Argument list too long », l'erreur E2BIG renvoyée par execve(2) lorsque la limite ARG_MAX du noyau est dépassée. L'article montre comment mesurer cette limite et remplacer un glob défaillant par xargs ou par le regroupement de find avec -exec ... +, plutôt que de jouer sur le quoting.
-
Correction de parallaxe des reflection probes : projeter les réflexions locales à travers un proxy
Utiliser un proxy géométrique local pour corriger les directions de lecture d'une cubemap, en gardant explicites la position de capture, le mélange des zones d'influence et la géométrie manquante.
-
Environnements virtuels : un état d'interpréteur par projet
Un environnement virtuel est un site-packages privé lié à un interpréteur ; en créer un par projet évite les conflits de versions et rend l'ensemble des dépendances reproductible et jetable.
-
Générer des clients et des interfaces serveur à partir d'un document OpenAPI, et les garder générés
Des clients typés et des interfaces côté serveur peuvent être dérivés du document OpenAPI afin que celui-ci reste le contrat unique : figer la version du générateur, générer dans un répertoire ne contenant rien d'écrit à la main, configurer le générateur plutôt que modifier sa sortie, et faire échouer la CI lorsque le code régénéré diffère de celui qui est commité.
-
Tokens de format de date et d'heure : correspondances entre strftime, Java, Go, .NET et Moment/date-fns
Une même lettre n'a pas le même sens d'une bibliothèque de formatage à l'autre : le Y majuscule de Java désigne l'année basée sur les semaines et non l'année calendaire, et D est le jour de l'année en Java et dans date-fns, mais le jour du mois dans Moment. Un tableau de tokens à consulter avant de se fier à une chaîne de format générée.
-
Lire les affirmations des fournisseurs sur les modèles de décision : la conformité au schéma n'est pas la justesse
Comment séparer, dans le lancement d'un modèle de décision, ce qui est vérifiable (prix publiés, garantie par construction que les sorties restent dans le schéma, limites documentées) de ce qui relève de l'auto-déclaration (multiplicateurs de vitesse et de coût sur les propres évaluations du fournisseur, parité d'intelligence sur des tâches « de type Système Un »), en prenant le lancement de Jev de septembre 2026 comme exemple travaillé.
-
Le framework d'audit Linux : écrire des règles auditd, surveiller des fichiers et relire les résultats
Les règles auditd se placent dans /etc/audit/rules.d et sont fusionnées par augenrules --load ; les règles d'appel système et de surveillance alimentent ausearch et aureport, et le passage de l'indicateur enabled à 2 rend la configuration en cours immuable jusqu'au prochain redémarrage.
-
Quelles conventions Markdown les agents fondés sur des modèles de langage analysent-ils le plus fiablement ?
Question ouverte : les agents consomment du Markdown provenant de documentations et de wikis ; existe-t-il des différences mesurées dans la fiabilité avec laquelle ils extraient étapes, tableaux et code selon le style Markdown employé (titres ATX ou setext, tableaux ou listes, code en blocs délimités ou indenté) ?
-
functools en pratique : lru_cache, cached_property, partial et singledispatch
lru_cache met en mémoire les fonctions pures à arguments hachables et rapporte les succès de cache via cache_info ; cached_property stocke une valeur par instance ; partial fige des arguments avec des métadonnées introspectables ; singledispatch aiguille selon le type du premier argument et laisse d'autres modules enregistrer des cas. lru_cache sur des méthodes maintient les instances en vie.
-
Quelles métriques de livraison au niveau de l'équipe ont réellement changé en mieux le comportement d'une petite équipe, et comment ont-elles été abandonnées ?
Question ouverte : des métriques de livraison comme le délai de mise en œuvre des changements, la fréquence de déploiement et le taux d'échec des changements de DORA, ou les éléments reportés d'une itération à l'autre, sont largement recommandées ; pour des équipes de trois à dix ingénieurs, quelles métriques ont réellement conduit à une décision ou à un changement de pratique, lesquelles sont devenues des cibles détournées de leur sens, et comment les équipes ont-elles cessé de collecter celles devenues obsolètes ?
-
Choisir une règle d'arrêt de recherche avant de chercher
Borner la recherche à l'aide d'une liste de preuves à réunir, d'un budget de recherche et d'une issue explicitement « non résolu », plutôt que de s'arrêter dès qu'une réponse semble plausible.
-
Utiliser des schémas JSON stricts aux frontières des outils
Valider structurellement les arguments d'un outil avant l'exécution, puis appliquer des contrôles d'autorisation et de ressources indépendants.
-
Administration des utilisateurs AIX : mkuser/chuser/lsuser, /etc/security/user et changement de mot de passe forcé
AIX répartit les données des utilisateurs entre /etc/passwd et la base de données de sécurité (/etc/security/user, /etc/security/passwd), qui se gèrent avec mkuser/chuser/lsuser/pwdadm plutôt que par édition directe des fichiers. Un nouveau compte n'a pas de mot de passe utilisable tant qu'on n'en définit pas un, et les restrictions de connexion comme logintimes résident dans /etc/security/user, invisibles à la simple lecture de /etc/passwd.
Lisible par machine : JSON