L’article d’Alsacréations explique comment la propriété CSS align-content simplifie désormais le centrage vertical, une tâche autrefois complexe en CSS. Historiquement, les développeurs devaient recourir à des techniques comme vertical-align ou des combinaisons de position: absolute et transform, souvent fragiles. Grâce aux mises à jour des spécifications CSS (notamment le CSS Box Alignment Module Level 3), align-content fonctionne désormais dans tous les modes d’affichage, y compris les blocs natifs, sans nécessiter Flexbox ou Grid.
L’auteur illustre cette évolution avec deux exemples concrets : centrer verticalement un contenu dans un conteneur de hauteur fixe en utilisant simplement align-content: center, ou aligner un élément en bas avec align-content: end. Contrairement à Flexbox, cette méthode préserve le comportement natif des enfants (marges, flux normal), évitant ainsi des modifications structurelles inutiles. Toutes les valeurs classiques de la propriété (start, center, end, etc.) sont désormais applicables, offrant une solution universelle et moderne.
Cette avancée, déjà supportée par tous les navigateurs modernes, marque la fin des solutions de contournement pour le centrage vertical. Elle permet d’écrire moins de code tout en gardant un rendu fiable et maintenable, simplifiant ainsi l’intégration web.
L’article propose d’utiliser OpenTelemetry pour surveiller et optimiser les tests PHPUnit, face à des problèmes de mémoire ou de temps d’exécution croissants dans des projets en expansion. L’idée est d’appliquer les mêmes principes d’observabilité que pour les applications en production, afin d’identifier les tests les plus gourmands en ressources grâce à des traces et métriques collectées.
Pour cela, l’auteur recommande l’extension phpunit-telemetry-bridge, compatible avec OpenTelemetry, qui s’intègre facilement via Composer et se configure dans le fichier PHPUnit. Une fois activée, elle génère des données détaillées sur chaque test (durée, mémoire, statut), exportables vers un backend OTLP pour analyse.
L’outil est particulièrement utile pour les grandes suites de tests, où son surcoût devient justifié. L’article inclut un exemple de configuration et un lien vers un dépôt démonstratif, tout en soulignant la nécessité d’évaluer son utilité selon l’envergure du projet.
PHP Satan est un site humoristique et pédagogique dédié à PHPStan, un outil d'analyse statique pour PHP souvent surnommé ainsi par ses utilisateurs. Le site guide les développeurs à travers les défis de l'analyse de code, en commençant par les bases de l'installation et de la configuration, jusqu'à des concepts plus avancés comme la gestion des erreurs de type et l'optimisation des performances.
L'idée principale est d'aider les développeurs à comprendre et à corriger les erreurs détectées par PHPStan, notamment celles liées aux types de données. Le site explique le système de niveaux de PHPStan (de 0 à 10), chaque niveau étant plus strict que le précédent, et propose des solutions pour résoudre les erreurs courantes, comme l'utilisation de type hints ou le narrowing de types. Des conseils pratiques, comme l'augmentation de la mémoire allouée ou l'utilisation de flags en ligne de commande, sont également fournis pour optimiser l'analyse.
Eric Meyer explore une solution pour rendre accessibles des en-têtes de tableau avec cellules divisées diagonalement, comme dans la documentation d’Apollo 16. Il propose d’abord une structure HTML avec deux lignes d’en-têtes, mais cette approche échoue aux critères d’accessibilité WCAG 1.3.3. Une alternative validée par des experts consiste à utiliser rowspan pour fusionner les cellules de la première ligne, améliorant ainsi la navigation au clavier.
Pour le rendu visuel, Meyer utilise du positionnement CSS absolu et relatif pour superposer la deuxième ligne d’en-têtes sur la première, créant l’effet de division diagonale. Un dégradé linéaire sert à matérialiser cette séparation, bien qu’un SVG soit suggéré pour une implémentation plus robuste en production.
L’article souligne les limites de cette méthode, notamment des risques de chevauchement des textes ou de dépassement des cellules, nécessitant parfois un ajustement de la hauteur minimale. Malgré ces défis, la solution offre un compromis entre accessibilité et design, tout en invitant à des améliorations futures.
Les entretiens annuels d'évaluation, largement critiqués pour leur inefficacité, restent pourtant répandus dans les organisations malgré les preuves de leurs limites. Principalement axés sur le passé et les performances individuelles, ces dispositifs négligent souvent la collaboration, l'apprentissage continu et les réalités du travail moderne. Les recherches montrent qu'ils brouillent la frontière entre rémunération et amélioration de la performance, tout en offrant des retours trop tardifs pour être utiles.
Un décalage persistant existe entre la perception des dirigeants, qui jugent ces systèmes efficaces, et celle des salariés, dont une majorité les considère comme un échec. Les employés soulignent notamment leur caractère fastidieux et leur faible valeur ajoutée, préférant des retours en temps réel et des opportunités de développement continu plutôt que des évaluations annuelles rigides.
Malgré ces critiques, les entretiens annuels persistent, en partie à cause d'une illusion d'objectivité et d'une résistance au changement. Leur persistance s'explique aussi par des contraintes légales ou organisationnelles, bien que des alternatives plus adaptées aux besoins actuels du travail émergent progressivement.
Scott H. Young, auteur d’Ultralearning, exprime son scepticisme face aux propositions radicales de révolutionner l’école, malgré son expertise en apprentissage. Bien qu’il reconnaisse que des améliorations sont possibles (comme l’enseignement systématique de la phonétique ou la gestion de la charge cognitive), il souligne que les méthodes intuitivement séduisantes – comme privilégier les projets concrets ou l’apprentissage par la découverte – échouent souvent en pratique. Il s’appuie sur des études et des expériences passées, comme Project Follow Through, qui montrent que les approches structurées et directes obtiennent de meilleurs résultats que les méthodes constructivistes.
Young cite des exemples concrets où ces alternatives ont échoué, notamment en éducation médicale, où l’apprentissage par problèmes a conduit à des performances inférieures. Il rappelle aussi que les méthodes les plus efficaces pour enseigner la lecture reposent sur des exercices systématiques de décodage, plutôt que sur des approches centrées sur la motivation. Pour lui, les compétences générales en résolution de problèmes ne s’acquièrent pas spontanément, mais nécessitent un enseignement explicite et structuré.
Enfin, il critique l’idée que l’école devrait imiter la vie réelle ou abandonner les méthodes traditionnelles comme la mémorisation. Bien que ces propositions paraissent logiques, les preuves empiriques montrent qu’elles nuisent souvent à l’efficacité de l’apprentissage. Young invite à reconsidérer ces intuitions en s’appuyant sur des données solides plutôt que sur des croyances populaires.
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.