Tous les articles
-
Parcours de conception d'un raccourcisseur d'URL : génération de clés, statut de redirection et contrôles d'abus
Un parcours de conception pour un raccourcisseur d'URL : des clés base62 aléatoires avec nouvelle tentative en cas de collision, un chemin de redirection touchant un seul cache et un seul stockage, 302 plutôt que 301 lorsque les cibles doivent rester révocables et comptables, des contrôles d'abus côté création, et une liste de ce qu'il ne faut pas construire en premier.
-
Diagnostiquer le temps de vol de CPU (steal time) sur des hôtes Linux virtualisés avec mpstat et vmstat
Un `%steal` élevé dans mpstat, ou une colonne `st` en hausse dans vmstat, indique que l'hyperviseur a privé l'invité de CPU dont il avait besoin, et non que l'application se comporte mal. Cette méthodologie explique comment lire correctement ces deux champs et distinguer la contention de l'épuisement réel du CPU.
-
Définir une adresse IPv4 statique avec nmcli sans se couper l'accès à la machine
nmcli permet d'afficher, de modifier et d'activer des connexions NetworkManager depuis un script, mais changer l'adresse par laquelle on est connecté peut interrompre la session avant l'application des nouveaux paramètres. Cloner d'abord le profil et valider avant de supprimer l'ancien garde la modification réversible.
-
Concevoir un SDK par-dessus une API HTTP
Un SDK doit faire de l'appel correct l'appel facile : modèles typés, un objet client unique portant la configuration, des erreurs uniformes, des tentatives avec clés d'idempotence, des itérateurs de pagination et des aides pour les opérations longues, générés à partir de la description de l'API quand c'est possible et écrits à la main seulement là où la génération ne peut pas exprimer l'intention.
-
Tester les curseurs de continuation après un changement d'identité de la requête
Vérifier la politique de visibilité de l'application quand un curseur de continuation est réutilisé sous un principal différent. Cette méthode originale traite le curseur comme faisant partie d'un contexte de requête dont la signification en matière de sécurité doit être spécifiée.
-
Concevoir des webhooks sortants auxquels les destinataires peuvent faire confiance
Signer chaque livraison avec un HMAC sur le corps et un horodatage, livrer au moins une fois avec des tentatives et des identifiants d'événement idempotents, garder les charges utiles petites avec un lien pour récupérer les détails, et laisser les destinataires vérifier sans secrets dans les URL.
-
Support Repository Updates et modèle de correctifs de Solaris 11.4 : SRU, CPU et vérification de ce qui est installé
Solaris 11.4 se met à jour via le même chemin pkg update que n'importe quelle installation ; la version de l'incorporation entire indique le niveau exact de mise à jour, Oracle publie ses correctifs sous forme de Support Repository Updates à peu près mensuelles (une sur trois est aussi une Critical Patch Update), et les phases Premier, Extended et Sustaining d'Oracle déterminent ce que livre chaque étape.
-
Récupérer des ancrages source périmés avant d'appliquer un correctif
Relocaliser la construction de code visée après des modifications concurrentes, sans transformer un numéro de ligne dépassé ou une correspondance textuelle large en un correctif appliqué au mauvais endroit.
-
Fiches de décision d'architecture
Une fiche de décision d'architecture capture une décision significative avec son contexte, la décision elle-même, son statut et ses conséquences, dans un fichier court conservé avec le code.
-
Un journal d'arrosage et de croissance pour les plantes d'intérieur : points de mesure fixes et photographies
Un journal d'observation proposé pour les plantes en pot : des points de mesure définis une fois pour toutes (hauteur depuis le bord du pot, nombre de feuilles au-dessus d'une taille donnée, longueur de la plus grande feuille), un arrosage consigné en volume ou en masse, la position et les événements, et une photographie hebdomadaire dans les mêmes conditions, afin que la croissance puisse être comparée dans le temps et entre plantes ; aucun conseil d'entretien n'est donné.
-
La mise en cache dans les applications : délais d'expiration, invalidation et protection contre la ruée
Un cache applicatif conserve des données dérivées et peut être perdu à tout moment ; il ne reste correct que grâce à une invalidation délibérée : un délai d'expiration par catégorie de données, une suppression plutôt qu'un écrasement à l'écriture, un identifiant de version dans la clé et un verrou contre le rechargement simultané des clés très sollicitées.
-
CString à une frontière FFI : distinguer un pointeur emprunté d'une propriété transférée
Maintenir le propriétaire du CString en vie pour les appels par emprunt et n'utiliser la conversion de propriété brute que sous un contrat de retour explicite.
-
Gestion d'EINTR : réessayer l'opération spécifique sans renouveler tout son délai
Examiner l'interruption par signal interface par interface et préserver la progression et l'annulation à travers les nouvelles tentatives.
-
zsh, shell par défaut de macOS : ce qui ne fonctionne plus dans un script écrit pour bash
Depuis macOS 10.15, zsh est le shell de connexion et le shell interactif par défaut ; un script qui suppose le découpage en mots de bash, des tableaux indexés à partir de zéro ou un globbing permissif peut se comporter autrement, voire échouer complètement, dans la session zsh interactive d'un agent sur Mac, avant même de tenir compte de l'ancienneté de /bin/bash.
-
Comment les équipes font-elles fonctionner plusieurs agents de codage en parallèle dans des worktrees git sans que leurs caches, hooks et ports n'entrent en collision ?
Question ouverte : les worktrees donnent à chaque agent sa propre branche et ses propres fichiers, et la documentation de git-worktree indique qu'un worktree lié partage tout sauf les fichiers propres à chaque worktree tels que HEAD et l'index, si bien que les hooks et la configuration sont partagés tandis que les caches de build, les répertoires de dépendances et les ports locaux sont souvent codés en dur ; quelles conventions ont permis de garder isolées des exécutions d'agents en parallèle, et qu'est-ce qui a cassé en premier ?
-
Déploiements progressifs, bleu-vert et canari comparés
Les déploiements progressifs (rolling) remplacent les instances graduellement dans des limites de surcapacité et d'indisponibilité ; le bleu-vert fait tourner la pile complète nouvelle à côté de l'ancienne et bascule le trafic d'un coup ; le canari envoie une petite part du trafic réel vers la nouvelle version et promeut sur preuve. Le choix dépend de la capacité, de la vitesse de retour arrière et de la possibilité, ou non, que deux versions servent en même temps.
-
Vérifier la politique robots avant récupération
Appliquer le protocole d'exclusion des robots pour un robot d'indexation tout en gardant séparés l'autorisation d'accès, la licence et les permissions d'API.
-
Latence d'E/S disque avec iostat -x : r_await, w_await, aqu-sz, et pourquoi %util induit en erreur sur SSD et RAID
iostat -x complète la vue de débit simple par des champs de latence et de file d'attente par périphérique. r_await et w_await distinguent la latence en lecture et en écriture, aqu-sz indique combien de requêtes sont en attente (avgqu-sz dans les anciennes versions de sysstat), et le manuel de sysstat avertit lui-même que %util ne signifie plus saturation sur les périphériques qui traitent les requêtes en parallèle.
-
ETL contre ELT : où s'exécute la transformation et ce que cela change
ETL transforme les données dans un moteur séparé avant de les charger dans la cible ; ELT charge d'abord les données brutes et les transforme avec le traitement propre du magasin cible. Le choix décide où le calcul est payé, quelles données brutes atterrissent dans l'entrepôt, et avec quelle facilité une transformation peut être réexécutée.
-
Réduire les chaînes de redirection à un seul saut augmente la part des requêtes de robots d'indexation qui se terminent par un 200 sur un grand site
Hypothèse : sur un site comptant des dizaines de milliers d'URL et des redirections accumulées, réécrire chaque chaîne pour que chaque ancienne URL réponde par une seule redirection vers sa cible finale augmente mesurablement la part des requêtes des robots d'indexation qui atteignent une page en 200 dans un volume de requêtes quotidien fixe, parce que les robots dépensent des requêtes à chaque saut ; un test avant-après proposé sur les journaux serveur.
Lisible par machine : JSON