Ce site sert à documenter collaborativement les protocoles HTTP/3 et QUIC.
Ce billet explore le pattern Backend-for-Frontend (BFF), une solution architecturale pour les applications modernes où plusieurs frontends (web, mobile, TV) consomment les mêmes services backend. Le BFF agit comme une couche de traduction dédiée à chaque client, agrégeant les appels API, transformant les données et gérant la logique spécifique (cache, authentification, etc.), le tout possédé et maintenu par l’équipe frontend.
Les signes qu’un BFF pourrait être utile incluent des problèmes de performance (appels multiples, sur/sous-récupération de données), une lenteur de développement (dépendances entre équipes, duplication de logique) ou des frictions organisationnelles (API mal adaptées aux besoins UX). Le BFF permet d’aligner les priorités des équipes, d’améliorer les performances (notamment sur mobile) et d’accélérer la livraison de fonctionnalités.
Cependant, le BFF n’est pas une solution universelle : il ajoute de la complexité opérationnelle et peut être excessif pour des applications simples ou des petites équipes. Des alternatives existent (GraphQL, API Gateway, refonte backend). L’article souligne l’importance d’un pilote pour évaluer son impact avant une adoption large, et rappelle que le succès dépend d’une appropriation par les équipes frontend et d’une approche itérative.
Ce billet explique comment tirer pleinement parti du composant symfony/object-mapper, bien au-delà d'une simple hydratation d'objets à partir de tableaux. L'auteur montre que cet outil, basé sur le puissant Serializer de Symfony, permet de gérer des cas avancés comme la création de DTO immutables (avec promotion de propriétés dans le constructeur), la gestion de structures imbriquées et de collections, l'application de logiques personnalisées (ex : conversion de chaînes en DateTimeImmutable), et l'adaptation entre différentes conventions de nommage (snake_case ↔ camelCase). Grâce à des exemples concrets en Symfony 7.3, il démontre comment configurer et utiliser l'ObjectMapper pour des transformations de données élégantes et maintenables, tout en intégrant la validation et la gestion des erreurs. Un guide pratique pour optimiser la manipulation de données dans des applications PHP modernes.
Cet article explique comment utiliser GoAccess, un outil open-source d’analyse de logs web, pour surveiller le trafic de son serveur Apache/Nginx directement depuis le terminal ou via des rapports HTML. L’article détaille l’installation sur Ubuntu, la configuration du format des logs, les commandes de base pour analyser les logs (y compris en temps réel), et des astuces pour filtrer le trafic (exclure les bots, les pages admin, etc.). Il propose aussi des alias pour simplifier l’utilisation, des méthodes pour sécuriser les rapports générés, et des techniques avancées comme l’automatisation via des scripts et cron. L’outil est présenté comme une alternative légère, performante et respectueuse de la vie privée à Google Analytics, idéale pour les développeurs qui veulent garder le contrôle sur leurs données. En résumé : installation rapide, configuration flexible, et résultats complets (visiteurs, pages, OS, géolocalisation, etc.) sans dépendre d’un service externe.
L’article explique comment utiliser Robot Framework, un outil open source écrit en Python, pour automatiser les tests dans le domaine de l’embarqué. Ce framework, mature et flexible, permet de réaliser des tests d’intégration, de bout en bout et des mocks (simulations de devices, communications CAN, API, etc.), grâce à une syntaxe simple et de nombreuses bibliothèques (CAN, HTTP, MQTT, bases de données, etc.). Ses avantages incluent la génération de rapports HTML détaillés, l’export au format xUnit pour les CI/CD (GitLab, Jenkins), et une courbe d’apprentissage accessible même aux non-experts. Cependant, il peut devenir verbeux pour des scénarios complexes et dépend de Python, ce qui le rend plus lent que des tests unitaires natifs en C/C++.
L’article détaille la structure des fichiers .robot (sections Settings, Variables, Test Cases, Keywords), la syntaxe spécifique (variables, boucles, conditions), et présente des exemples concrets : tests de communications CAN avec des mocks Python, simulation d’API via Flask, et exécution de programmes C++ embarqués. Il montre aussi comment intégrer Robot Framework dans un workflow embarqué, en combinant bibliothèques Python, commandes CLI pour lancer les tests, et intégration avec des outils comme Jenkins ou GitLab CI. Un guide pratique pour qui souhaite industrialiser ses tests embarqués tout en gardant une approche haut niveau et maintenable.
L’article explique de manière claire et pédagogique ce que sont les modes musicaux et comment les utiliser pour colorer une composition. Un mode est une gamme dont on change le point de départ : à partir d’une gamme majeure (comme Do majeur), on obtient 7 modes en commençant par chacune de ses notes (ex. : Ré dorien, Mi phrygien, etc.). Les modes sont classés en majeurs (ionien, lydien, mixolydien) et mineurs (dorien, phrygien, aeolien, locrien), chacun ayant une « couleur » sonore distinctive. Par exemple, le lydien (4e mode) apporte une touche féerique grâce à sa quarte augmentée, tandis que le phrygien (3e mode) est sombre et souvent utilisé en métal. L’article détaille la construction de chaque mode, leurs notes caractéristiques et des exemples concrets (comme le thème de Yoda en lydien ou Wherever I May Roam de Metallica en phrygien). Une ressource idéale pour comprendre comment les modes enrichissent l’émotion et l’ambiance d’un morceau, avec des comparaisons visuelles et auditives pour faciliter l’apprentissage. Un PDF et une vidéo sont proposés en téléchargement pour approfondir.
Ce guide pratique détaille 5 étapes essentielles pour sécuriser un serveur Ubuntu : création d’un utilisateur dédié avec droits sudo, configuration de l’authentification SSH par clé (et désactivation de l’accès root et des mots de passe), verrouillage du compte root, personnalisation du hostname et du message d’accueil (MOTD). Il explique aussi comment désactiver les messages système indésirables et propose des bonnes pratiques supplémentaires comme l’utilisation d’un firewall (ufw), l’installation de fail2ban, et la surveillance des logs. L’objectif est de réduire les risques d’intrusion en adoptant une configuration robuste dès l’installation. Idéal pour les administrateurs système souhaitant renforcer la sécurité de base de leur serveur.
L’article de Stack Overflow souligne que le rôle d’un architecte logiciel ne se limite pas à écrire du code, mais consiste surtout à déployer des idées dans des systèmes humains : convaincre, aligner et faire collaborer des équipes aux perspectives variées. Pour cela, le principal outil de l’architecte n’est pas un langage de programmation, mais la rédaction de documents clairs et structurés.
Points clés :
- La documentation comme levier : Les architectes utilisent des documents (Confluence, Google Docs, Notion, etc.) pour formaliser des propositions, des designs techniques ou des analyses, et ainsi obtenir l’adhésion des parties prenantes.
- Principe de base : Privilégier la simplicité (bullet points, titres clairs) et l’utilité immédiate plutôt que la perfection formelle. Un document doit permettre à chacun de trouver rapidement l’information dont il a besoin.
- Types de documents impactants :
- Architecture overview : Schéma ou description des composants d’un système pour faciliter la compréhension et l’onboarding.
- Dev design : Détail des modifications prévues pour recueillir des feedbacks avant de coder.
- Project proposal : Argumentaire pour justifier l’allocation de ressources à un projet.
- Developer forecast : Alerte sur les risques potentiels d’une décision technique.
- Technology menu : Guide pour standardiser les choix technologiques.
- Problem statement : Cadre pour résoudre un problème complexe en équipe.
- Postmortem : Analyse blameless d’un incident pour éviter sa répétition.
Méthode recommandée :
- Organisation chronologique : Classer les documents par sprint/année plutôt que par thème, car la recherche textuelle est plus efficace que la navigation par dossiers.
- Culture de la documentation : Encourager l’écriture rapide et itérative, avec des relectures ciblées, plutôt que des mises à jour constantes.
- Objectif : Rendre les idées accessibles, actionnables et pérennes, même si le document devient obsolète.
En résumé, un architecte excelle moins par sa maîtrise technique que par sa capacité à structurer et communiquer des idées pour faire avancer les projets, en transformant les blocages humains en processus collaboratifs. Une compétence clé pour ceux qui veulent rester techniques tout en élargissant leur impact.
L’auteur partage son passage de BorgBackup à Restic pour ses sauvegardes personnelles sous Archlinux, séduit par sa simplicité, sa documentation claire et sa compatibilité avec SFTP. Il détaille une configuration minimaliste : sauvegardes incrémentales vers un serveur distant, planification via systemd (2x/jour en semaine), gestion des rétentions (3 mois de sauvegardes hebdomadaires), et montage des instantanés en local. Restic s’intègre même comme backend pour Déjà Dup (GNOME 49). Un outil efficace, moderne, et respectueux du principe 3-2-1.
L’article du blog Ippon explique comment personnaliser GitHub Copilot dans VS Code grâce aux custom instructions, afin d’adapter ses suggestions à vos conventions de code, frameworks et besoins spécifiques. Ces instructions, définies via des fichiers Markdown (comme .github/copilot-instructions.md), permettent de guider Copilot sur le style de code, les bibliothèques à utiliser, la structure des livrables, ou encore le niveau de détail des réponses. Trois types de règles existent : personnelles (globales), par dépôt (spécifiques à un projet), et organisationnelles (pour uniformiser les standards d’une équipe). L’article illustre l’impact de ces règles avec un exemple concret de widget Flutter, montrant comment Copilot génère un code plus aligné avec les attentes (design, localisation, gestion d’état) lorsqu’il est bien configuré. Il détaille aussi l’utilisation des prompt files pour des actions récurrentes et le mode Agent de Copilot, capable de modifier plusieurs fichiers ou d’exécuter des tâches complexes. Enfin, des bonnes pratiques et outils (comme la génération automatique de règles via VS Code) sont présentés pour optimiser l’intégration de Copilot dans un workflow, en évitant les contradictions et en maximisant la pertinence des suggestions. Une ressource utile pour transformer Copilot en un véritable partenaire de développement.
Ce guide pratique explique comment maîtriser les migrations de base de données avec Symfony 7 et Doctrine. Il couvre l'installation d'un projet Symfony, la création d'entités, la génération et l'application des migrations, ainsi que leur réversion. L'article détaille aussi la personnalisation des migrations (méthodes preUp, postUp, preDown, postDown, gestion des transactions, etc.), l'évolution des propriétés d'entités, et propose une solution pour éviter l'erreur récurrente de création du schéma public avec PostgreSQL. Un template personnalisé pour les migrations et un listener Doctrine sont présentés pour optimiser le workflow. Enfin, une cheatsheet récapitule les commandes utiles pour gérer les migrations efficacement. Idéal pour les développeurs souhaitant approfondir la gestion des schémas de base de données dans Symfony.
L’article explore les possibilités créatives offertes par la propriété CSS shape-outside, qui permet de faire épouser le flux de texte aux contours d’une image ou d’une forme personnalisée, au lieu de se limiter à un rectangle classique. L’auteur illustre son propos avec des exemples concrets, comme un site web pour une artiste de country fictive, Patty Meltt. Il montre comment utiliser shape-outside pour créer des mises en page dynamiques et immersives : text wrapping autour de portraits, d’instruments de musique, ou même de montages photo, en jouant avec les canaux alpha des images ou des clip-path. L’article détaille aussi des astuces pour simuler un centrage d’image ou contourner les limites des rotations CSS. L’objectif ? Rendre les longs contenus visuellement plus engageants et moins statiques, en intégrant images et texte dans une composition harmonieuse. Des exemples interactifs sont disponibles dans un lab en ligne pour expérimenter ces techniques. Une lecture inspirante pour les designers et développeurs web cherchant à ajouter du mouvement et de la personnalité à leurs layouts.
Cet article explique comment créer des décorateurs Python acceptant des arguments, en utilisant une structure à trois niveaux : une fonction externe pour les paramètres, une fonction intermédiaire pour le décorateur, et une fonction interne pour l'exécution. L'article illustre ce concept avec des exemples concrets comme un décorateur de logging configurable, un système de réessai, une validation de plage, et une limitation de débit. Il montre aussi comment gérer les arguments optionnels et comment implémenter des décorateurs sous forme de classes. L'idée clé est que les décorateurs avec arguments agissent comme des "fabriques de décorateurs", permettant une personnalisation fine du comportement des fonctions décorées. Une lecture utile pour maîtriser l'abstraction et la configuration avancée en Python.
Cet article explore en profondeur le Saga Pattern, une solution élégante pour gérer les transactions distribuées dans les architectures microservices en PHP. Il explique pourquoi les transactions ACID traditionnelles ne fonctionnent pas dans un contexte distribué et comment le Saga Pattern, basé sur des transactions compensatoires et une cohérence éventuelle, permet de contourner ces limites. L'article détaille deux approches d'implémentation (chorégraphie et orchestration), présente des exemples concrets de code, et aborde des défis avancés comme la gestion des timeouts, l'idempotence, les verrous sémantiques, ainsi que des modèles théoriques comme les sagas imbriquées ou parallèles. Une attention particulière est portée sur la persistance de l'état des sagas, la récupération après échec, et la surveillance pour assurer la fiabilité du système. Une lecture essentielle pour les développeurs PHP travaillant sur des systèmes distribués complexes.
Ce shaarli explique comment utiliser Podman comme un substitut à Docker, en permettant l'exécution des commandes Docker habituelles avec Podman. L'article détaille l'installation du paquet podman-docker, qui fournit un script docker émulant les commandes Docker, ainsi que la suppression du message d'avertissement via la création du fichier /etc/containers/nodocker. Il aborde aussi la compatibilité avec docker-compose grâce à l'installation de podman-compose, et présente deux solutions pour gérer le démarrage automatique des conteneurs (via Quadlet ou en activant le service podman-restart). L'objectif est de faciliter la transition pour les utilisateurs habitués à Docker, tout en profitant des avantages de Podman, notamment son absence de démon.
L'auteur propose une approche innovante de développement piloté par les spécifications (« spec-driven development ») en utilisant le Markdown comme langage de programmation, avec l’aide d’agents d’IA comme GitHub Copilot. L’idée est de décrire l’intégralité d’une application dans un fichier Markdown (par exemple main.md), qui sert à la fois de documentation et de spécification technique, puis de laisser l’IA générer le code source (ici en Go) à partir de ce fichier. Le workflow repose sur quatre fichiers clés : un README.md pour la documentation utilisateur, un main.md pour la spécification technique (incluant la logique métier, les schémas de base de données, et même des extraits GraphQL), et des prompts (compile.prompt.md, lint.prompt.md) pour guider l’IA dans la génération et l’optimisation du code.
L’avantage principal est de centraliser la logique et la documentation en un seul endroit, évitant les incohérences et facilitant les mises à jour. Le développeur édite le Markdown, demande à l’IA de « compiler » la spécification en code, puis teste l’application. Cette méthode permet une itération rapide et une meilleure synchronisation entre la documentation et l’implémentation. Cependant, la compilation peut ralentir à mesure que le projet grandit, et l’approche nécessite une description claire et précise des attentes. L’auteur envisage d’étendre cette méthode à d’autres langages et d’intégrer des tests automatisés. Une expérience prometteuse, surtout avec les progrès des agents IA, mais qui demande une rigueur dans la rédaction des spécifications.
Cet article compare les architectures standalone et haute disponibilité (HA) pour Kubernetes on-premise, en expliquant comment concevoir et opérer un cluster HA. L’article détaille l’importance de redonder les composants critiques (comme l’API Kubernetes) pour éviter les points de défaillance uniques (SPOF), même si cela peut introduire de nouveaux défis (ex. : un load balancer devant les control planes peut lui-même devenir un SPOF). Il présente aussi une solution de stockage HA avec TrueNAS (exposant des volumes bloc via iSCSI) et Longhorn pour orchestrer la réplication, les snapshots et la reconstruction automatique en cas de panne d’un nœud. L’auteur insiste sur la nécessité de bien dimensionner chaque couche (stockage, réseau, contrôle) pour garantir la résilience du cluster, tout en soulignant que la haute disponibilité commence par la redondance du plan de contrôle et une gestion fine des volumes persistants. Le billet s’inscrit dans une série technique explorant les bonnes pratiques pour opérer Kubernetes en production.
L'article introduit la commande Linux tc (traffic control), utilisée pour simuler et contrôler le trafic réseau. L’article montre comment ajouter un délai de 500 ms aux paquets avec tc qdisc add dev wlp3s0 root netem delay 500ms, puis supprimer cette règle avec tc qdisc del. L’outil netem permet aussi de perdre, dupliquer ou corrompre des paquets, idéal pour tester des conditions réseau difficiles. L’autrice mentionne qu’avec un routeur Linux, on peut même ralentir le trafic d’autres utilisateurs (comme celui d’un frère), et invite à explorer tc qdisc show pour voir les règles actuelles. Le zine complet et d’autres comics sont disponibles via abonnement ou sur le site.
L'article explique comment utiliser la commande ss (socket statistics) sous Linux pour identifier et gérer les processus utilisant un port réseau. L’article montre comment ss -tunapl permet de lister les serveurs en cours d’exécution et d’afficher les PID des processus, utile pour libérer un port occupé (comme le 8080). Les options comme -n (affichage des ports en numérique), -p (affichage des PID), et d’autres (-l, -t, -u) sont détaillées pour filtrer les sockets TCP, UDP ou Unix. L’autrice recommande ss plutôt que netstat, plus ancien et complexe, pour une utilisation plus simple et efficace. Le zine complet et d’autres ressources sont disponibles via abonnement ou sur le site.
Cet article explique la commande Linux ip, utilisée pour visualiser et modifier la configuration réseau. L’article détaille quelques sous-commandes utiles comme ip addr list (affiche les adresses IP des interfaces), ip route list (affiche la table de routage), et montre comment changer une adresse MAC pour contourner des restrictions réseau (par exemple dans les cafés). D’autres options comme ip link (gestion des interfaces), ip neigh (table ARP), et ip xfrm (pour IPsec) sont mentionnées, ainsi que des astuces comme l’utilisation de --color pour une sortie colorée ou --brief pour un résumé. Le zine complet et d’autres comics sont disponibles via un abonnement à la newsletter ou sur le site de l’autrice.