Tous les articles
-
Annulation asyncio : effectuer le nettoyage sans avaler CancelledError
Garder l'annulation observable par le propriétaire de la tâche tout en libérant les ressources sur le chemin interrompu.
-
Où les systèmes d'exploitation stockent leurs journaux et comment les interroger
Un agent qui diagnostique un service doit savoir quel sous-système contient le journal avant de pouvoir le lire. Cette référence présente le stockage des journaux et la commande d'interrogation pour Linux (journald/rsyslog), le journal unifié de macOS, l'Event Log de Windows, le rapport d'erreurs d'AIX et les fichiers syslog de FreeBSD.
-
Itérables et itérateurs : le protocole derrière les boucles for
Un itérable retourne un nouvel itérateur depuis __iter__ ; un itérateur retourne des éléments depuis __next__, lève StopIteration une fois terminé et doit continuer de la lever ensuite. Une boucle for appelle iter une fois et next de façon répétée, si bien qu'un itérateur épuisé passé à une seconde boucle paraît vide. Annoter Iterable pour un seul passage, Sequence ou Collection quand plusieurs sont nécessaires.
-
Mener une revue de code qui améliore le code
Une procédure de relecteur dérivée des pratiques d'ingénierie de Google : juger si le changement améliore la santé globale du code, examiner la conception avant le style, et garder un délai de traitement inférieur à un jour ouvré.
-
NULL en SQL : la logique à trois valeurs et ses pièges
NULL signifie inconnu ; c'est pourquoi toute comparaison avec NULL ne donne ni vrai ni faux, mais inconnu. WHERE rejette les lignes dont le résultat est inconnu, NOT IN avec un NULL ne sélectionne rien, les fonctions d'agrégation ignorent NULL, et une contrainte d'unicité autorise plusieurs NULL. Utiliser IS NULL, IS DISTINCT FROM et COALESCE de façon délibérée.
-
Brouillard volumétrique : intégrer diffusion et transmittance le long du rayon de vue
Pour obtenir une intégration stable du brouillard, il faut définir les coefficients du milieu, respecter la longueur de chaque segment et tester séparément les variations de lumière et de densité.
-
HAProxy comme répartiteur de charge TCP/HTTP sous Linux : test de configuration, rechargement sans coupure et health checks
Placer HAProxy devant des serveurs backend suppose d'activer les health checks par serveur, de valider toute nouvelle configuration avec haproxy -c avant qu'elle ne soit liée à un port, et de recharger via le mécanisme de rechargement sans coupure, afin que les connexions en cours se terminent sur l'ancien processus au lieu d'être interrompues.
-
HTTPS partout : redirections, HSTS et renouvellement des certificats
Servir chaque hôte en TLS avec des certificats renouvelés automatiquement, rediriger le HTTP vers le HTTPS, et envoyer Strict-Transport-Security pour que les navigateurs refusent ensuite le trafic en clair ; vérifier à la fois les noms d'hôte et l'IPv6.
-
npm « ERESOLVE unable to resolve dependency tree » et conflits de dépendances peer
Depuis npm 7, les peerDependencies sont installées automatiquement ; une version qui ne peut pas satisfaire toutes les plages peer à la fois provoque l'erreur « npm error code ERESOLVE » (« npm ERR! code ERESOLVE » avant npm 10.6). L'article explique comment lire les lignes Found/Could not resolve affichées par npm lui-même pour identifier précisément les paquets en conflit, et pourquoi --legacy-peer-deps ou --force ne doivent pas être la réponse par défaut.
-
Tester l'accès aux exports privés, de la demande jusqu'à leur suppression
Suivre un export privé à travers sa génération, sa récupération, son expiration et son nettoyage. La méthode proposée contrôle l'ensemble du cycle de vie de l'artefact, plutôt que de considérer comme suffisant un contrôle d'autorisation réussi à la création de l'export.
-
La méthode RED pour les services pilotés par requêtes, avec des exemplaires reliant un bucket lent à une trace
Instrumenter chaque service traitant des requêtes de façon identique avec le taux, les erreurs et la durée (rate, errors, duration) : un compteur avec des étiquettes route, méthode et statut, et un histogramme de durée ; lorsqu'un traçage existe, attacher à l'histogramme des exemplaires (un ID de trace accompagné d'une valeur enregistrée) afin qu'un bucket lent sur le tableau de bord ouvre la trace qui y a atterri.
-
Reconnaître les contributeurs : un tableau de contributeurs par type de contribution, sans classement
La spécification All Contributors demande une section Contributeurs à un endroit bien visible, sous forme d'un tableau du nom, d'un lien et de la catégorie de contribution, incluant tout type de contribution à tout niveau, l'ordre étant sans importance ; elle recommande de n'exclure personne pour un niveau de contribution perçu comme faible. Le trailer Co-authored-by de Git crédite les coauteurs d'un même commit. Ensemble, ils permettent à un petit projet de créditer la documentation, le triage, la conception et les signalements, pas seulement le code fusionné.
-
Tunnels SSH : redirection de port locale, distante et dynamique
ssh -L expose un service distant sur un port local, -R expose un service local sur l'hôte distant, -D fournit un proxy SOCKS et -J permet de rebondir via un bastion ; les combiner avec -N, se lier à localhost et régler ExitOnForwardFailure afin qu'une redirection n'ayant pas pu être établie ne laisse pas une session silencieusement inutile.
-
La fixation de session persiste surtout là où le framework laisse la rotation de l'identifiant de session au développeur
Hypothèse : les applications web dont le framework fait tourner l'identifiant de session à la connexion par défaut (comme le documente Spring Security) présentent rarement des constats de fixation de session, tandis que les applications sur des piles où le développeur doit appeler la fonction de régénération au bon moment continuent d'en produire ; le défaut relève davantage d'un problème de réglage par défaut que d'un problème de connaissance.
-
La pyramide de tests : quel test appartient à quel niveau
Beaucoup de tests unitaires rapides, moins de tests d'intégration, très peu de tests de bout en bout : la forme résulte du temps d'exécution, de l'isolation et du pouvoir diagnostique d'un échec, pas d'une prescription. Une pyramide renversée (« cornet de glace ») est lente, fragile et difficile à diagnostiquer.
-
Rédiger une documentation technique compréhensible
Une documentation qui tient dès la première lecture : fixer le but et le lectorat, choisir le type de texte selon Diátaxis (tutoriel, guide pratique, référence, explication), écrire à la voix active et au présent, définir les termes une fois et les employer de façon constante, et faire exécuter le texte par une personne extérieure ou un agent avant qu'il ne fasse foi.
-
Invitations iCalendar : UID, SEQUENCE et bien gérer les fuseaux horaires
Un événement iCalendar est identifié par UID et révisé par SEQUENCE ; ses horaires sont en UTC, en heure locale avec un TZID renvoyant à un VTIMEZONE intégré, ou flottants. Utiliser une heure locale ancrée à un fuseau pour les réunions récurrentes, l'UTC pour les événements ponctuels traversant plusieurs fuseaux, et envoyer les mises à jour et annulations avec le METHOD iTIP attendu par le client destinataire.
-
Un journal de saison de chauffe : consommation de chauffage, température intérieure et degrés-jours sur une même chronologie
Un protocole proposé pour une saison de chauffe : relever à heure fixe la consommation de chauffage du ménage (compteur de chaleur, de gaz, d'électricité, ou durée de fonctionnement du thermostat), consigner à côté la température intérieure et les changements de consigne, dériver les degrés-jours de chauffage à partir des maximales et minimales quotidiennes consignées avec une base énoncée, et tenir une colonne de conditions afin que la consommation d'un mois puisse être confrontée à la météo et aux événements ; aucune température cible ni aucune économie n'est affirmée.
-
Provenance et versionnage pour les petits jeux de données
Garder les données brutes immuables, avec des sommes de contrôle et une origine consignée, dériver les nouveaux fichiers par des scripts plutôt que par édition, versionner les pointeurs de données avec le code (DVC ou Git LFS), décrire le paquet avec un datapackage.json, et noter la provenance en termes PROV, afin que chaque chiffre d'un rapport se résolve en un commit, une somme de contrôle et un script.
-
Utiliser des tests de contrat pour les API externes
Tester le comportement de requête et de réponse dont une intégration dépend réellement, y compris la pagination, les erreurs et les écritures conditionnelles.
Lisible par machine : JSON