L'article présente Rector, un outil de refactoring automatique pour PHP qui modernise le code, applique les bonnes pratiques et standardise les conventions. Il explique comment configurer et utiliser Rector, en mettant en avant ses avantages en termes de gain de temps, de cohérence et d'apprentissage. L'auteur partage sa configuration personnelle et des conseils pratiques pour intégrer Rector dans les projets, tout en soulignant l'importance de prévenir les erreurs courantes
.
L'article présente PHP-CS-Fixer, un outil qui standardise le format du code PHP pour assurer la cohérence. Il explique comment configurer et utiliser PHP-CS-Fixer, en mettant en avant ses avantages pour la maintenance du code, les revues de code, et l'intégration de nouveaux développeurs. L'auteur partage des conseils pratiques et des exemples de configuration pour tirer le meilleur parti de cet outil
.
La "Clean Architecture" va bien au-delà d'une simple organisation de fichiers. Bien que souvent représentée par des couches comme Domain, Application, Infrastructure et UserInterface, son principe fondamental réside dans le sens des dépendances, qui doivent toujours pointer vers l'intérieur. Cela signifie que les règles métier (Domain) ne doivent pas dépendre des détails techniques (couches extérieures), permettant ainsi d'isoler la logique métier et de faciliter les tests et les évolutions du code. Cette approche, illustrée par les principes SOLID, favorise la flexibilité et la modularité, rendant le code plus résilient aux changements. Bien que l'arborescence des dossiers soit un outil pratique pour visualiser et organiser le code, l'essentiel est de se concentrer sur l'indépendance des couches métier vis-à-vis des dépendances techniques.
Les tests d'architecture sont essentiels pour maintenir la cohérence et la maintenabilité d'un projet sur le long terme. Ils permettent de vérifier que le code respecte les règles architecturales définies, assurant ainsi une structure correcte et empêchant les dérives lors de l'ajout de nouvelles fonctionnalités ou de l'intégration de nouveaux développeurs. Ces tests servent également de documentation explicite des règles, facilitant l'intégration des nouveaux membres de l'équipe. Plusieurs outils, comme Deptrac, PHPArkitect, PHPat, et Pest, peuvent être utilisés pour mettre en place ces tests dans l'écosystème PHP, chacun ayant ses propres méthodes de configuration et d'utilisation.
La navigation au clavier est un aspect crucial de la conception web accessible, permettant aux utilisateurs d'interagir avec un site uniquement via le clavier, en utilisant des raccourcis et en sélectionnant des éléments avec les touches Tab et Entrée. Cela rend le site plus accessible aux personnes ayant des troubles moteurs ou visuels, améliore l'efficacité pour tous les utilisateurs et peut éviter des complications légales liées à l'accessibilité. Pour rendre un site navigable au clavier, il est essentiel d'inclure des indicateurs de focus visibles, un ordre de tabulation logique, des liens de navigation rapide et des éléments interactifs accessibles via le clavier. Tester la navigabilité au clavier en utilisant uniquement le clavier permet de s'assurer que le site répond aux normes d'accessibilité.
L'article est un guide complet sur l'utilisation de la commande systemctl : une interface qui permet de gérer les services sous Linux. L'auteur présente les commandes principales, comment définir des services SystemD, des bonnes pratiques, y compris en sécurité, etc.
L'auteur explique pourquoi c'est une bonne pratique
L'auteur a nommé son article en référence à l'excuse improbable du "chien qui a mangé mon travail" :) L'architecture en micro-services n'est pas responsable de problèmes, mais les mauvaises décisions si ! L'auteur donne quelques pistes pour repérer les problèmes, et surtout comment s'en prémunir.
L'auteur explique à quoi servent les DTOs et comment les utiliser dans le contexte d'une application Symfony en particulier.
L'auteur montre comment se prémunir des attaques XSS dans Symfony : pour les templates Twig en les échappant systématiquement, pour les entrées utilisateur en les "sanitizant" et en utilisant une politique de sécurité de contenu (CSP)
Il est possible d'appliquer des styles CSS à SVG. Il y a 3 cas principaux : SVG inline (facile à manipuler en CSS), SVG externe (limité), et SVG via
L'auteur présente brièvement ce qu'est la "screaming architecture" et ses avantages
L'idempotence est un concept clé en informatique et en mathématiques, particulièrement crucial dans la conception de systèmes fiables. Une opération idempotente produit le même effet, peu importe le nombre de fois qu'elle est exécutée. Par exemple, soumettre un formulaire plusieurs fois ne devrait générer qu'un seul résultat, et une requête de paiement ne devrait débiter le compte de l'utilisateur qu'une seule fois, même en cas de réessais réseau. Pour implémenter l'idempotence, des techniques comme l'utilisation de jetons uniques, des verrous pessimistes ou optimistes, et des index uniques dans les bases de données sont employées. Ces méthodes assurent que les opérations répétées n'altèrent pas l'état du système de manière indésirable, garantissant ainsi la cohérence et la fiabilité des applications.
Le changement de contexte, ou la nécessité de passer rapidement d'une tâche à une autre, est identifié comme le principal obstacle à la productivité des développeurs. Chaque interruption, même mineure, peut coûter jusqu'à 23 minutes de travail productif et dégrade la qualité du code en brisant la concentration. L'article explore les raisons pour lesquelles les développeurs sont particulièrement affectés, notamment en raison de la complexité des tâches de programmation qui nécessitent une mémoire de travail élevée. Des stratégies sont proposées pour minimiser ces interruptions, telles que la planification de périodes de travail ininterrompues et l'utilisation d'outils de communication asynchrones, afin d'améliorer la productivité et le bien-être des équipes de développement.
L'article met en lumière les erreurs fréquentes commises lors de la création de diagrammes d'architecture technique. Parmi celles-ci, on trouve la réalisation de diagrammes théoriques plutôt que concrets, le mélange de niveaux d'abstraction, la surcharge d'informations, l'utilisation de flèches non étiquetées, des compositions trompeuses, l'absence de contexte, et le manque de texte explicatif accompagnant les diagrammes. Pour éviter ces écueils, il est recommandé de se concentrer sur des représentations spécifiques et claires, de séparer les niveaux d'abstraction, de réduire le nombre de préoccupations simultanées, d'étiqueter les relations, de fournir un contexte adéquat, et d'accompagner les diagrammes de descriptions détaillées.
L'article explique la Content Security Policy (CSP) comme un mécanisme de sécurité essentiel pour les sites web, agissant comme un videur strict qui contrôle les contenus autorisés à s'exécuter. La CSP est configurée via un en-tête HTTP qui spécifie les sources autorisées pour les scripts, styles, images, etc. Elle protège contre les attaques XSS, clickjacking, et autres injections malveillantes en bloquant les contenus non autorisés. L'article détaille comment configurer la CSP dans un fichier nelmio_security.yaml, en définissant des directives comme default-src, script-src, et style-src pour restreindre les sources de contenu. Il souligne également l'importance de tester la CSP en mode report-only pour identifier les violations sans impacter les utilisateurs.
Les façades de service offrent une alternative à l'injection de dépendances traditionnelle dans Symfony, particulièrement utile pour les utilitaires comme les loggers ou les rapports d'erreurs, où elles simplifient le code et réduisent les instanciations inutiles. Elles sont également efficaces pour les objets paresseux et les situations où l'inversion de contrôle (IoC) est impossible, comme l'instanciation manuelle de classes ou l'utilisation de bibliothèques externes qui ne supportent pas l'IoC.
Cet article explique comment créer un menu hamburger accessible et fonctionnel sans utiliser JavaScript, en s'appuyant sur l'API Popover. Cette approche permet de garantir une navigation fluide et accessible pour tous les utilisateurs, y compris ceux utilisant des lecteurs d'écran. L'article détaille les étapes pour structurer le menu en HTML sémantique, utiliser les attributs Popover pour gérer l'affichage du menu, et ajouter des attributs ARIA pour améliorer l'accessibilité. Des exemples de code et des conseils pratiques sont fournis pour animer l'ouverture et la fermeture du menu, tout en respectant les bonnes pratiques d'UX.
Le legal design est une approche qui applique les principes du design centré sur l'humain pour rendre les systèmes, services et documents juridiques plus compréhensibles et accessibles. L'objectif est de permettre à tous, experts ou non, de mieux comprendre et utiliser les informations légales. L'article explore les enjeux du legal design dans la fonction publique, notamment pour simplifier l'analyse des documents juridiques et adresser des messages clairs à divers profils techniques. Des techniques concrètes sont présentées, comme la structuration de l'information dans les contrats, l'utilisation d'un langage clair et la contextualisation des informations. Plusieurs exemples de projets utilisant le legal design illustrent son impact positif sur la compréhension et l'autonomisation des utilisateurs.
Cet article détaille une méthode progressive pour implémenter une politique de sécurité de contenu (CSP) sur un site web. La CSP est un en-tête HTTP crucial pour se protéger contre les attaques XSS. L'auteur propose cinq niveaux d'implémentation, allant de la configuration de base à des restrictions avancées, en passant par l'utilisation de Content-Security-Policy-Report-Only pour éviter les blocages intempestifs. Chaque niveau réduit progressivement les risques en restreignant les sources de scripts, styles et autres ressources. L'article insiste sur l'importance de maîtriser son front-end et de collaborer entre équipes pour une mise en œuvre efficace. Des conseils pratiques et des exemples de configurations sont fournis pour chaque étape.