Cet article explore les limites du contrôle d'accès basé sur les rôles (RBAC) et du chiffrement au repos pour répondre aux exigences SOC 2, soulignant que ces méthodes ne protègent pas contre les accès non autorisés une fois l'application ou les identifiants compromis. L'auteur propose une approche plus robuste avec le chiffrement au niveau applicatif, utilisant une stratégie hybride combinant chiffrement symétrique (AES-256-GCM) pour les données et asymétrique (RSA avec OAEP) pour les clés, afin d'isoler cryptographiquement les enregistrements.
L'architecture repose sur le modèle d'enveloppe, où chaque document est chiffré avec une clé unique (DEK), elle-même chiffrée avec la clé publique du destinataire. Ce système garantit que même en cas de fuite des identifiants de la base de données, les données restent inaccessibles sans la clé privée correspondante. L'article insiste sur l'importance des modes de chiffrement authentifiés (GCM) et des mécanismes de rembourrage sécurisés (OAEP) pour prévenir les attaques par modification ou oracle.
Enfin, l'auteur détaille la modélisation des données avec Symfony et Doctrine, où chaque utilisateur possède une paire de clés asymétriques, la clé privée étant gérée par un coffre-fort ou un HSM. Cette approche permet une isolation cryptographique au niveau des enregistrements, renforçant ainsi la conformité SOC 2 en matière de traçabilité et de protection des données.
L’auteur, développeur depuis 1983, partage son expérience de l’intégration de l’IA dans son workflow, notamment via le Markdown pour rédiger spécifications et architectures. Il critique à la fois le vibe coding (délégation aveugle à l’IA) et le rejet puriste de cette technologie, soulignant que la valeur réside désormais dans la conception et la supervision, pas dans la production de code brute.
Il utilise l’IA comme un outil collaboratif : pour des tâches simples, elle agit comme une exécutante rapide, tandis que pour les parties complexes, il supervise et valide, voire code lui-même. L’objectif est de maintenir une architecture compréhensible et maîtrisée, évitant ainsi les risques liés à des systèmes opaques ou dépendants de tarifs ou de disponibilités externes.
Enfin, il compare l’IA à un retour partiel du cycle en V, où la spécification redevient centrale. La confiance dans le code généré doit être proportionnelle à la capacité de le critiquer, et les rôles (spécification, validation, expertise) doivent rester clairs pour préserver la robustesse du système.
Le site EasyDMARC propose un outil de vérification et d'analyse des enregistrements DMARC, un protocole essentiel pour sécuriser les emails contre le phishing et le spoofing. L'outil permet de détecter les vulnérabilités des configurations DMARC, SPF et DKIM, offrant des rapports détaillés et des recommandations pour renforcer la sécurité des emails et la réputation des domaines.
EasyDMARC se distingue par son interface intuitive, adaptée aux utilisateurs de tous niveaux, et ses fonctionnalités avancées comme les alertes en temps réel et la gestion multi-domaines. La plateforme propose également des outils complémentaires (DKIM, SPF, BIMI) pour une sécurité email complète, tout en étant utilisée par des milliers d'organisations à travers le monde.
Le service met l'accent sur la simplicité d'utilisation, avec des guides et des visualisations claires pour faciliter l'analyse et la configuration, tout en s'adaptant aux besoins des entreprises et des fournisseurs de services gérés (MSP).
L’article SVG from Scratch explique que SVG n’est pas un simple format d’image, mais un système de coordonnées, une surface de style et une cible d’animation, comparable à un élément DOM. L’auteur souligne l’importance de comprendre le viewBox, qui définit un espace de coordonnées interne que le navigateur adapte à la taille d’affichage, permettant une conception flexible et scalable.
L’auteur présente les formes de base (cercle, rectangle, ligne, polygone, chemin) et leur syntaxe, en insistant sur la puissance du path, qui permet de créer des formes complexes. Il détaille aussi les commandes de base pour dessiner des courbes, lignes et arcs, en distinguant les coordonnées absolues et relatives.
Enfin, l’article aborde le style des SVG via CSS, où les propriétés comme fill, stroke ou opacity peuvent être contrôlées dynamiquement, avec une priorité sur les styles définis en CSS plutôt qu’en attributs SVG. L’auteur encourage à écrire manuellement le code SVG pour en exploiter pleinement les possibilités.
Ce site propose un tutoriel moderne et complet sur JavaScript, couvrant à la fois les bases du langage et ses aspects avancés, comme la programmation orientée objet ou les promesses. Il est structuré en trois parties : le langage JavaScript, la manipulation du navigateur (DOM, événements) et des articles thématiques supplémentaires. Le contenu est régulièrement mis à jour, avec la dernière version datant de mai 2026.
L’approche pédagogique mise sur des explications claires et détaillées, sans se perdre dans des détails spécifiques à un environnement particulier. Le tutoriel aborde aussi des outils comme les éditeurs de code, la console développeur et les tests automatisés, tout en intégrant des concepts modernes comme les modules, les classes ou l’asynchrone avec async/await.
Disponible en ligne gratuitement, le site propose également des versions payantes en EPUB/PDF. Il inclut des liens vers des ressources complémentaires comme un dépôt GitHub ou un chat Discord pour échanger avec la communauté.
Topgrade est un outil open source écrit en Rust qui automatise la mise à jour de multiples gestionnaires de paquets et logiciels sur un système. Il détecte les outils installés (comme apt, pacman, Homebrew, etc.) et exécute les commandes appropriées pour les mettre à jour, simplifiant ainsi la maintenance du système. Ce projet est un fork maintenu du logiciel original topgrade par r-darwish.
L'installation est possible sur diverses plateformes via des méthodes officielles (binaires auto-mis à jour, gestionnaires de paquets comme Homebrew ou APT) ou communautaires (Scoop, NixOS, etc.). Une fois installé, il suffit d'exécuter topgrade pour lancer la mise à jour globale. Une configuration personnalisable au format TOML permet d'ajuster son comportement.
Le projet suit une politique de versions stables (MSRV) et documente les changements majeurs dans ses notes de version. Les fichiers de configuration sont recherchés dans des emplacements standardisés selon le système d'exploitation, comme %APPDATA% sous Windows ou ~/.config sous Unix.
L’auteur partage sa stack frontend pour 2026, axée sur des outils éprouvés et efficaces. Il utilise Next.js pour les sites de contenu (SSR, optimisation d'images) et Vite 8 pour les applications internes (HMR instantané, builds rapides grâce à Rolldown). TypeScript en mode strict et pnpm (pour sa rapidité et son gestionnaire de dépendances optimisé) complètent les fondations.
Pour le design, Tailwind CSS simplifie le style tandis que shadcn/ui fournit des composants accessibles et personnalisables, évitant les dépendances externes. Storybook est intégré pour documenter et tester les composants, notamment en synergie avec shadcn/ui, offrant une vue claire des variantes et états.
L’article souligne l’importance d’une stack stable et productive, privilégiant des outils qui s’intègrent bien et réduisent les frictions, plutôt que les dernières tendances. L’auteur mentionne aussi des outils complémentaires comme TanStack Query, Zustand, Zod, ou Vitest pour les tests, reflétant une approche pragmatique et optimisée.
L’auteur explique comment configurer un RAID 0 manuellement sur Linux Mint Debian Edition (LMDE), l’installateur ne proposant pas cette option. Il détaille les étapes de préparation des disques (suppression des métadonnées RAID existantes, effacement des partitions) avant d’installer le système sur un seul disque, puis de configurer le RAID 0 ultérieurement.
Après l’installation, il sauvegarde le système et utilise des outils comme mdadm pour créer le RAID 0 à partir des deux disques identiques. La procédure, adaptable à d’autres distributions, nécessite des manipulations en ligne de commande et diffère selon que la machine utilise un BIOS ou un UEFI.
L’article souligne les précautions à prendre (sauvegardes, vérifications) et propose une solution pour optimiser les performances en lecture/écriture sur des disques SATA, sans recourir à un SSD. Les commandes et étapes sont présentées de manière concise pour une mise en œuvre pratique.
L’article explique ce qu’est l’alcool isopropylique (ou isopropanol), un composé chimique distinct de l’éthanol, l’alcool des boissons. Il clarifie la notion d’alcool, qui varie selon le contexte, et souligne que l’isopropanol est utilisé comme solvant, dégraissant et désinfectant grâce à son évaporation rapide et son absence de résidus.
L’auteur détaille ses applications pratiques, notamment en électronique pour nettoyer les composants sans les endommager, ou en mécanique pour dégraisser chaînes, disques de frein et jantes. Il insiste sur son efficacité et sa polyvalence par rapport à d’autres alcools.
Enfin, le texte aborde brièvement sa concentration, sa conservation et où se le procurer, tout en rappelant que sa composition diffère de celle de l’alcool éthylique, souvent confondu dans le langage courant.
L’article explique comment sécuriser une application via Envoy Gateway en utilisant OIDC (OpenID Connect) et JWT pour l’authentification, ainsi que l’autorisation par groupes. L’auteur montre comment configurer une SecurityPolicy dans un cluster Kubernetes pour appliquer une authentification centralisée avec Keycloak, sans avoir besoin d’un outil supplémentaire comme oauth2-proxy.
La configuration repose sur une HTTPRoute pour router le trafic vers l’application, avec une règle dédiée pour le callback OIDC. La SecurityPolicy est ensuite attachée à cette route, définissant l’URL du fournisseur OIDC, les identifiants du client et les chemins de callback et de déconnexion. L’autorisation par groupe est évoquée, mais son implémentation détaillée n’est pas abordée dans cet article.
L’exemple utilise un cluster Kubernetes sur Clever Cloud avec un add-on Keycloak, mais la configuration de Keycloak et l’exposition via Gateway API sont supposées déjà en place. L’approche simplifie la gestion de l’authentification en intégrant directement ces fonctionnalités dans Envoy Gateway.
Chris Shiflett décrit la création d’un serveur MCP (Model Context Protocol) pour son laboratoire personnel, un espace où il centralise ses projets et outils maison. Il explique comment il a rationalisé son répertoire ~/local, autrefois encombré de projets inaboutis, en relançant des outils comme Landice, Faculty ou Schoolcase, tout en adoptant progressivement l’IA malgré ses réticences initiales. Son approche progressive avec l’IA, passant de simple référence à collaborateur, l’a conduit à voir cette technologie comme un "robot" capable d’exécuter du code, bien que des limites persistent, comme l’interface de Claude ou la perte de contexte entre conversations.
Shiflett souligne deux obstacles majeurs dans son utilisation de l’IA : d’abord, l’asymétrie entre l’exécution manuelle du code et l’approche automatisée de Claude Code, qui réduit sa participation active. Ensuite, le manque de mémoire des assistants, obligeant à résumer manuellement l’historique des échanges dans des fichiers Markdown avant de recommencer une conversation. Ces contraintes l’ont poussé à concevoir un serveur MCP pour mieux contrôler l’interaction avec l’IA et intégrer ses outils existants.
L’objectif final est de fluidifier ce processus en créant une interface unifiée, où l’IA agit comme un véritable partenaire de développement plutôt qu’un simple exécutant. Ce projet reflète sa volonté de concilier innovation technologique et méthodes de travail personnelles, tout en résolvant les frictions rencontrées dans l’adoption de l’IA.
L’article propose une version optimisée de l’utilisation de PostgreSQL pour remplacer Redis, en corrigeant les erreurs d’une précédente publication. L’auteur souligne l’importance des valeurs par défaut dans PostgreSQL 18, comme les fonctions uuidv4() ou uuidv7() pour les identifiants, ou encore la génération automatique des dates d’expiration via des intervalles, simplifiant ainsi les opérations côté client. Il met aussi en avant l’utilisation de RETURNING pour récupérer les valeurs générées directement lors de l’insertion, évitant des requêtes supplémentaires.
L’auteur critique l’héritage de tables, une fonctionnalité de PostgreSQL souvent mal comprise, car les index ne sont pas hérités, ce qui peut impacter gravement les performances. Il illustre ce problème avec un exemple comparant une table classique et une table héritée, montrant que l’absence d’index sur la table parente rend les requêtes coûteuses, même sur de grandes volumétries (25 millions d’entrées).
Enfin, l’article aborde brièvement l’utilisation des index, recommandant d’éviter les index inutiles qui alourdissent les opérations d’écriture. L’auteur conclut en insistant sur l’importance de bien comprendre les mécanismes de PostgreSQL pour éviter des erreurs de conception coûteuses en performance.
L’auteur explique comment Domain-Driven Design (DDD) a révolutionné sa vision de l’architecture logicielle, notamment pour les agents IA. Après des années de routine en développement, il découvre ce concept en lisant Domain-Driven Design d’Eric Evans, ce qui transforme sa manière d’aborder la complexité des systèmes. Son expérience précédente avec des microservices mal conçus, où les services manquaient de sens métier, l’a poussé à chercher une approche plus structurée.
Le livre l’a confronté à une réflexion approfondie sur la modélisation du domaine, où chaque détail (noms de classes, relations, effets de bord) devient crucial. Cette approche l’a ramené aux fondamentaux de la programmation orientée objet, avec une attention accrue à la clarté et à la cohérence du code. Il souligne que DDD a comblé un vide entre le développement et la compréhension du métier, contrairement à sa vision initiale où ces deux aspects étaient dissociés.
L’AFUP Day 2026 à Paris a réuni des professionnels de l’écosystème PHP autour de conférences axées sur l’intelligence artificielle, l’architecture et la productivité. L’événement a mis en lumière l’intégration croissante de l’IA dans les outils comme Symfony, avec des présentations sur les embeddings pour des recherches sémantiques et l’utilisation de LLM comme GitHub Copilot pour optimiser les workflows de développement.
Loïck Piera a présenté Castor, un task runner open source développé par JoliCode, tandis que Nicolas Grekas a exploré les avantages de Caddy et FrankenPHP pour moderniser la gestion des applications PHP, proposant une alternative au traditionnel PHP-FPM. Ces outils visent à améliorer la productivité et la durabilité des projets.
Enfin, des discussions ont porté sur les bonnes pratiques en matière de qualité de code, notamment avec PHPStan, et sur la nécessité de concilier fonctionnalité, pérennité et collaboration humaine pour garantir des logiciels robustes et évolutifs.
L’article de Josh W. Comeau compare les performances des animations en CSS et en JavaScript, un sujet souvent abordé avec des idées reçues. L’auteur explique que, contrairement aux apparences, les animations JavaScript ne sont pas nécessairement plus lentes, mais leur exécution sur le fil principal (main thread) les rend vulnérables aux blocages causés par d’autres tâches JavaScript. À l’inverse, les animations CSS s’exécutent sur un fil dédié, ce qui les rend plus fluides dans des applications complexes.
L’analyse se concentre sur deux méthodes : les keyframes CSS et une boucle JavaScript utilisant requestAnimationFrame. Bien que le JavaScript moderne soit optimisé pour des calculs rapides, son exécution sur le fil principal le rend sensible aux interruptions, contrairement au CSS qui bénéficie d’un traitement séparé. L’auteur illustre ce point avec une démonstration où des blocages du fil principal perturbent davantage l’animation JavaScript que l’animation CSS.
Enfin, l’article souligne que le choix entre CSS et JavaScript dépend du contexte : le CSS est idéal pour des animations simples et performantes, tandis que le JavaScript offre plus de flexibilité pour des interactions dynamiques ou complexes, malgré les risques de latence liés au fil principal.
L’article explique comment gérer les options et arguments dans des scripts Bash afin de rendre les scripts plus flexibles et robustes, notamment via les commandes getopts, shift et les variables spéciales comme $1 ou $@. Il détaille la différence entre options courtes et longues, montre comment vérifier la présence d’arguments obligatoires et recommande des pratiques de développement plus sûres comme set -euo pipefail pour détecter rapidement les erreurs et éviter les comportements inattendus dans les scripts shell.
L’article explore les défis liés à la mise à l’échelle des View Transitions entre documents, notamment pour des pages affichant des centaines d’éléments comme une grille de produits. Après avoir résolu les problèmes initiaux (métadonnées obsolètes, délais de timeout, etc.), l’auteur souligne que les tutoriels classiques, conçus pour des transitions simples, échouent face à des cas complexes. La solution idéale, purement CSS, reposerait sur des fonctions comme ident() et sibling-index() pour générer automatiquement des noms uniques, mais cette approche n’est pas encore implémentée dans les navigateurs.
En attendant, les développeurs doivent recourir à des méthodes manuelles fastidieuses, comme des règles CSS répétitives pour chaque élément, ce qui devient ingérable avec un grand nombre d’items. L’article met en lumière l’écart entre les promesses futures des standards CSS et les contraintes actuelles, tout en soulignant l’importance de solutions évolutives pour des interfaces dynamiques.
L’article aborde les difficultés rencontrées avec les Cross-Document View Transitions, une fonctionnalité permettant d’animer les transitions entre pages HTML classiques sans framework. L’auteur explique que les tutoriels obsolètes, utilisant une balise <meta> désormais dépréciée, induisent en erreur, tandis que les solutions pour Single-Page Applications (SPA) ne s’appliquent pas aux sites multi-pages. Les problèmes courants incluent des transitions silencieusement bloquées par un délai de 4 secondes, des distorsions d’images ou des styles CSS complexes pour gérer les noms de transitions.
L’auteur souligne l’absence de documentation claire et actualisée, rendant l’implémentation ardue malgré des démos prometteuses. Il annonce une série en deux parties pour clarifier les bonnes pratiques, comme l’utilisation de l’API @view-transition en CSS, la gestion des événements pagereveal et pageswap, ou encore l’optimisation des noms de transitions pour éviter des fichiers CSS surchargés. La seconde partie promet des solutions pour les projets à grande échelle, notamment la gestion des animations avec prefers-reduced-motion.
L’article dénonce la standardisation d’Internet sous l’ère des réseaux sociaux, qui a remplacé la créativité individuelle et l’expression personnelle par des plateformes uniformes et optimisées. L’auteur évoque son expérience des années 2000, où des outils comme MySpace permettaient de personnaliser son espace web avec du code HTML, transformant chaque profil en une œuvre unique et chaotique. Cette époque, marquée par l’expérimentation et l’authenticité, a cédé la place à des interfaces standardisées et professionnelles, vidant le web de sa dimension humaine.
L’auteur souligne que cette transition n’était pas seulement technique, mais culturelle, réduisant la diversité des expressions en ligne à une « monoculture technologique ». Il cite une analyse de Maria Farrell et Robin Berjon, comparant cette uniformisation à la sylviculture scientifique, qui a remplacé un écosystème créatif par des structures rigides et identiques. Aujourd’hui, les réseaux sociaux, autrefois perçus comme des progrès, sont critiqués pour leur impact négatif sur la société, notamment en termes d’authenticité et de bien-être.
Face à ce constat, l’article appelle à une reconquête du web par ses utilisateurs, en encourageant le retour à des pratiques plus personnelles et créatives, comme le codage ou l’hébergement de sites indépendants. L’idée centrale est de « réensauvager » Internet, en restaurant sa diversité et son âme originelle, loin des algorithmes et des templates imposés.
European Alternatives propose une plateforme pour identifier des alternatives européennes à des services et produits numériques courants, comme les solutions cloud ou SaaS. Le site met en avant l'importance de soutenir les entreprises locales, soulignant les retombées économiques (emplois, taxes) et la conformité aux réglementations européennes, notamment le RGPD, la TVA et les normes juridiques harmonisées au sein de l'UE. Il recense des alternatives dans divers domaines (hébergement, messagerie, moteurs de recherche, etc.) et encourage les utilisateurs à contribuer en suggérant de nouveaux services.