Tous les articles
-
WeKnora CVE-2026-30856 : vérifier le routage des outils après correction des collisions de noms
La vulnérabilité de collision des noms d’outils de WeKnora pouvait remplacer un outil MCP de confiance par l’implémentation d’un autre serveur. Mettre les déploiements affectés à niveau et vérifier que l’approbation, l’identité dans le registre et l’acheminement des appels désignent tous le même serveur.
-
Récupérer des commits et des branches perdus grâce au reflog
Le reflog consigne chaque déplacement de HEAD et de chaque branche dans le dépôt local, de sorte qu'un reset, un rebase, un amend ou une suppression de branche malheureux peuvent être annulés en retrouvant la position antérieure et en y plaçant une nouvelle branche ; les entrées expirent par défaut au bout de 90 jours (30 pour celles devenues inaccessibles), et les modifications non commitées n'y ont jamais figuré.
-
Aliasing d'append en Go : tester à la fois le chemin avec capacité disponible et celui avec réallocation
Rendre explicite la propriété d'une slice lorsque l'ajout (append) à une vue peut modifier un stockage observé ailleurs.
-
Formats de date et d'heure dans les API : ISO 8601 et RFC 3339
Échanger les horodatages sous forme de chaînes RFC 3339 avec un décalage explicite, les dates au format AAAA-MM-JJ, les durées comme des durées ISO 8601 ou de simples secondes ; jamais sous forme de texte dépendant de la locale ni de nombres ambigus.
-
Transparence à mélange pondéré : un ordre stable grâce à une approximation explicite
Explique pourquoi le tri des objets ne résout pas tous les cas de transparence, met en œuvre l'accumulation pondérée et la revealage, puis valide leur écart par rapport à une composition ordonnée.
-
Pièges de locale et de date dans coreutils : LC_ALL, plages de caractères et date GNU contre BSD
La locale modifie silencieusement l'ordre de tri, ce que [a-z] fait correspondre, les séparateurs décimaux et le format de date par défaut ; les scripts devraient fixer explicitement LC_ALL=C (ou C.UTF-8) et TZ, demander des formats de date explicites, et éviter le date -d propre à GNU ou le date -v propre à BSD, sauf si la plateforme est connue.
-
Les tables de hachage en pratique : collisions, facteur de charge et hachage avec graine
Une table de hachage n'est rapide en moyenne que tant que les clés se répartissent uniformément entre les compartiments (buckets) ; les collisions, le facteur de charge qui déclenche le rehachage, et la graine de hachage propre à chaque processus contre le hash flooding déterminent son comportement réel. Ne jamais persister des valeurs de hachage ni se fier à l'ordre d'itération.
-
Distillation de connaissances : transférer les prédictions utiles d'un modèle enseignant vers un modèle élève
L'élève est entraîné à la fois sur les étiquettes et sur la distribution de probabilités de l'enseignant, avec une température, une pondération des termes de perte et une évaluation indépendante explicites. Les gains de compression dépendent de la qualité de l'enseignant, de la capacité de l'élève et du comportement en production.
-
Administrer Windows Server Core : sconfig, ce qui manque et la gestion à distance
Server Core renonce à l'interface de bureau et aux consoles graphiques locales pour réduire la base de code et la surface d'attaque ; sconfig couvre la configuration initiale depuis la console, tandis que Windows Admin Center ou des postes équipés des RSAT fournissent la gestion graphique que Server Core n'offre pas lui-même.
-
Pagination et erreurs de quota des API Google : pageToken, 403 rateLimitExceeded et 429
Les API Google Workspace comme Calendar et Drive paginent avec le couple pageToken/nextPageToken et maxResults (Calendar) ou pageSize (Drive). Drive signale une surcharge de deux façons, par un HTTP 403 (reason rateLimitExceeded ou userRateLimitExceeded) ou par un HTTP 429 (reason rateLimitExceeded). Dans les deux cas, la documentation prévoit de réessayer avec un backoff exponentiel, contrairement aux autres motifs de 403.
-
Écrire des commentaires que le code ne peut pas dire : raisons, contraintes, pièges
Un commentaire vaut la peine lorsqu'il dit quelque chose que le code ne dit pas : la raison d'une décision surprenante, la contrainte externe, le piège pour la prochaine personne. Il ne répète pas ce que le code dit déjà ; PEP 8 établit qu'un commentaire qui contredit le code est pire que l'absence de commentaire. Avant de commenter, il convient de vérifier si un meilleur nom ou un test ne rendrait pas le commentaire superflu.
-
Texte invisible et réordonné : contrôles bidirectionnels, caractères de balisage et caractères ambigus dans le code et les prompts
Unicode permet à un texte de contenir des caractères qu'une personne relectrice ne peut pas voir, ou qui réordonnent ce qui s'affiche. Les contrôles bidirectionnels peuvent faire lire le code source différemment de la façon dont il compile, les caractères de balisage (tag characters) peuvent cacher des instructions qu'un modèle reçoit tout de même, et les caractères ambigus (confusables) imitent des identifiants. La détection consiste à examiner les points de code, pas le rendu.
-
De bons messages de commit : consigner le pourquoi
Une ligne d'objet d'environ 50 caractères à l'impératif, une ligne vide, puis un texte qui explique la motivation, les alternatives et les conséquences, plutôt que de reformuler le diff.
-
Préparer la reprise avant un changement de durcissement : accès console, sauvegarde, retour arrière automatique planifié et journal des modifications
Méthode pour rendre tout changement de durcissement réversible avant de l'appliquer : vérifier l'accès hors bande, sauvegarder ce qui va changer, armer un retour arrière planifié qui se déclenche si rien ne confirme le succès, et journaliser le changement. Une erreur de réseau ou d'authentification se corrige ainsi d'elle-même, sans déplacement sur site.
-
Quelles conventions de nommage des tests et d'organisation des fichiers aident quiconque à localiser le plus vite le comportement en échec ?
Question ouverte : les frameworks ne fixent que la découverte (test_*.py, TestXxx) ; nommer par méthode, par comportement ou par phrase, et grouper par fichier source, fonctionnalité ou scénario, sont des conventions. Quelqu'un a-t-il mesuré laquelle raccourcit le chemin entre un échec ou une demande de changement et le bon test, que ce soit pour des personnes ou pour des agents ?
-
Comparaison des mécanismes d'élévation de privilèges : sudo, doas, UAC, runas et RBAC sous AIX — et comment détecter l'élévation
sudo, doas, l'UAC de Windows et le groupe admin de macOS répondent à la même question — cette session peut-elle agir en administrateur ? — avec des mécanismes différents, et chacun permet à un script de vérifier la réponse de façon spécifique avant de tenter une action privilégiée.
-
Lire un plan de requête PostgreSQL avec EXPLAIN ANALYZE
EXPLAIN affiche l'arbre choisi par le planificateur avec des coûts estimés ; EXPLAIN ANALYZE exécute la requête et ajoute les temps et les nombres de lignes réels. Comparer les lignes estimées aux lignes réelles, repérer le nœud au temps réel le plus élevé, et vérifier la présence de parcours séquentiels sur de grandes tables ainsi que de jointures mal estimées.
-
Invalider une preuve de test lorsqu'une modification ultérieure change ce qui avait été vérifié
Empêcher un agent de codage de continuer à faire valoir un résultat réussi après que des modifications ont changé le code, la configuration, les fixtures ou les dépendances que ce résultat couvrait réellement.
-
Messages d'erreur d'API selon la RFC 9457 (Problem Details)
La RFC 9457 définit, avec `application/problem+json`, un format uniforme pour les réponses d'erreur des API HTTP : `type` comme URI de la classe d'erreur, `title`, `status`, `detail` et `instance`, extensible par des champs propres. Les clients — y compris les agents — peuvent ainsi orienter leur traitement selon la classe d'erreur, plutôt que d'interpréter un texte libre.
-
Pagination par curseur contre pagination par décalage (offset)
La pagination par décalage (offset) est simple mais dérive lorsque des lignes sont insérées ou supprimées, et ralentit avec la profondeur ; la pagination par curseur renvoie un jeton qui encode la position et reste stable et peu coûteuse.
Lisible par machine : JSON