Quotidien Shaarli
Hier - December 21, 2025
Cet article explique comment utiliser l'attribut lang en HTML pour adapter le style CSS en fonction de la langue, notamment pour les sites multilingues comme les combinaisons anglais-japonais. L'article aborde les défis typographiques entre les scripts latins et japonais, proposant des solutions pour équilibrer visuellement les polices, les poids de caractères, l'espacement et la hauteur de ligne. Des exemples concrets montrent comment ajuster ces paramètres pour harmoniser l'affichage des textes bilingues.
Cet article explique pourquoi Doctrine ORM sauvegarde les modifications des entités même sans appeler la méthode persist(). Le mécanisme clé est le "dirty checking" : Doctrine suit les entités gérées (chargées depuis la base de données), compare leurs valeurs actuelles avec une copie initiale, et génère des requêtes SQL uniquement pour les champs modifiés lors de l'appel à flush(). La méthode persist() n'est nécessaire que pour les nouvelles entités.
L'article explore les stratégies pour développer des plateformes pérennes, en se basant sur l'exemple de Writizzy. Il met en avant l'importance de la réversibilité, en permettant aux utilisateurs d'exporter facilement leurs données et d'utiliser leur propre nom de domaine. L'auteur souligne aussi l'importance de prévenir la "merdification", c'est-à-dire l'évolution négative des produits due aux pressions économiques et internes. Il propose de construire uniquement ce qui est nécessaire et d'évoluer de manière mesurée, sans recourir à des investisseurs externes. L'interopérabilité et la décentralisation sont également évoquées comme des solutions pour assurer la durabilité des contenus.
Marine Dunstetter, ingénieure logicielle senior, explore les parallèles entre son métier et sa passion pour le jardinage. Elle souligne que ces deux activités, bien que différentes en apparence, partagent des similitudes fondamentales : un travail sans fin, un écosystème complexe à gérer et un apprentissage continu. Le jardinage, comme le développement web, demande une attention constante et une adaptation permanente aux changements. Les erreurs, inévitables dans les deux domaines, sont des opportunités d'apprentissage. L'auteur invite à voir ces défis comme des occasions de croissance et de compréhension plus profonde de nos environnements, qu'ils soient numériques ou naturels.
Ce tutoriel explique comment implémenter l'authentification multi-facteurs (MFA) basée sur les mots de passe à usage unique temporels (TOTP) dans Symfony 7, sans utiliser de bundles tiers. Il couvre les principes de fonctionnement du TOTP, la création d'un service TOTP personnalisé, la conception de la base de données pour le 2FA, les flux de configuration et de vérification, ainsi que l'application de l'authentification à deux facteurs basée sur les sessions via des abonnés d'événements. Le tutoriel inclut également la génération de codes QR pour une configuration facile et des composants d'interface utilisateur pour la configuration, la vérification et la désactivation du TOTP. Les prérequis incluent un projet Symfony 7.x avec l'authentification déjà configurée, Doctrine ORM et une compréhension de base de la sécurité Symfony.
L'article explique le pattern CQRS (Command Query Responsibility Segregation), qui sépare les opérations de lecture et d'écriture vers la base de données. Ce pattern permet d'optimiser les performances et la sécurité en utilisant des modèles de données distincts pour les lectures et les écritures. L'article explore différentes implémentations du CQRS et montre comment Debezium peut simplifier sa mise en œuvre, notamment dans les architectures microservices.
Florent Destremau discute de l'utilisation des DTO (Data Transfer Objects) dans les formulaires, soulignant que leur utilisation est souvent présentée comme une évidence sans considérer le contexte et le coût de maintenance. Il illustre cela avec un exemple simple où l'ajout d'un DTO et d'un service de mapping pour une entité basique crée une sur-complexité et une duplication de code. Il argue que pour des opérations CRUD simples, les DTO n'apportent que peu de valeur et recommande plutôt d'écrire des tests pour protéger le code. Il montre comment déplacer les contraintes de validation sur l'entité et utiliser du typage strict peut simplifier le code tout en maintenant une bonne robustesse. Il conclut que cette approche résulte en un couplage plus souple et une couverture de test accrue, malgré une perception initiale de moins de rigueur.
L'article critique l'utilisation excessive de balises <div> (divitis) et l'abus de balises HTML sémantiques sans compréhension de leur véritable signification. L'auteur explique que l'HTML sémantique ne se limite pas à remplacer les <div> par d'autres balises, mais nécessite une compréhension approfondie des éléments et de leur usage correct selon les normes HTML. Il souligne l'importance d'aller au-delà des apparences et de se former continuellement pour écrire un HTML vraiment sémantique et accessible.
Julien Wittouck, architecte freelance et formateur, partage son expérience en passant de direnv à mise pour la gestion des variables d'environnement et des outils de développement. Il explique les limites de direnv et les avantages de mise, qui offre une gestion de packages, de variables d'environnement et d'exécution de tâches, tout en étant extensible via des plugins. Il détaille l'installation sur Linux et la configuration du shell pour une intégration fluide.
Cet article de Sebastian Bergmann explique les différences entre les Data Transfer Objects (DTOs) et les Value Objects, et pourquoi l'immutabilité facilite les tests. Les DTOs, motivés techniquement, servent à transférer des données entre couches ou systèmes, tandis que les Value Objects, motivés par le domaine, représentent des concepts stables du domaine. L'immutabilité réduit la charge cognitive en test, car elle garantit que l'état des objets ne change pas. Les Value Objects, étant immuables, n'ont pas besoin de test doubles, contrairement aux DTOs qui peuvent en nécessiter si ils contiennent de la logique. L'utilisation d'objets immuables simplifie les tests en évitant les effets de bord indirects.