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.
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.
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.
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.
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 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.
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.
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.
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.
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.
Stan partage son expérience en tant que mainteneur de projets open source (openvpn-install et wireguard-install) et explique comment Claude Code l'a aidé à gérer son backlog important. Grâce à l'IA, il a pu mettre en place des tests automatisés dans Docker, ce qui lui a permis de traiter plus efficacement les bugs et les demandes de fonctionnalités. Il décrit son workflow, les défis rencontrés et les améliorations apportées, comme la gestion des logs et l'ajout de fonctionnalités demandées depuis longtemps. Un témoignage intéressant sur l'impact des outils d'IA sur la maintenance de projets open source.
Ce second article de la série détaille la configuration avancée d’un nœud Proxmox VE sur un serveur dédié Scaleway avec une seule IP publique. L’auteur explique comment exposer plusieurs services (comme Garage S3 et l’interface Proxmox) de manière sécurisée via HTTPS, en utilisant Caddy comme reverse proxy avec gestion automatique des certificats SSL via Let’s Encrypt. Le guide couvre la configuration d’un réseau privé avec NAT, la création de règles de pare-feu Proxmox à trois niveaux (datacenter, nœud, VM/conteneur), et le dépannage des problèmes courants (DNS, ports, certificats, erreurs 502). Une attention particulière est portée sur l’identification des flux réseau internes et l’adaptation des IPSET pour éviter les blocages involontaires. L’objectif est de centraliser et sécuriser l’accès aux services tout en automatisant la gestion des certificats.
L’article détaille l’installation de Proxmox VE sur un serveur dédié Scaleway (modèle Start-2-S-SATA) sous Debian 13 Trixie, motivée par la volonté de remplacer une solution de sauvegarde instable basée sur un VPS Hetzner et un stockage Samba. L’auteur explique chaque étape : choix de Debian 13 pour éviter les versions obsolètes de Proxmox proposées par Scaleway, partitionnement manuel du disque (avec ajustements post-installation pour créer des partitions dédiées à /datastore et /data), configuration réseau en NAT pour permettre à plusieurs VMs/LXC de partager une seule IP publique, et sécurisation du serveur. Le guide inclut aussi la configuration du pare-feu Proxmox, l’activation du routage IPv4, et des astuces pour le dépannage. L’objectif final est de déployer un conteneur LXC avec Garage S3 pour stocker les sauvegardes Proxmox Backup Server de manière fiable et distante. Un tutoriel technique et pratique pour administrer un hyperviseur sur un serveur dédié avec une seule IP publique.
Ce billet explique comment contourner le blocage des lecteurs RSS par Cloudflare, qui les considère comme des bots. L'auteur, Nicolas Simond, détaille la création d'une règle personnalisée dans l'interface Cloudflare pour exclure les flux RSS de la protection anti-bot, permettant ainsi aux lecteurs d'accéder normalement aux flux. Il mentionne aussi une limite : les adresses IP blacklistées ne pourront pas bénéficier de ce contournement.
Andrea Verlicchi, expert en performance web, aborde dans cet article l’optimisation du Cumulative Layout Shift (CLS) pour les pages utilisant le défilement infini ou le bouton « Charger plus ». Il identifie deux causes majeures de CLS : les bannières promotionnelles retardées et le chargement dynamique de contenu (typique des sites e-commerce), qui déplace le pied de page hors de la vue et dégrade l’expérience utilisateur.
Pour le défilement infini, la solution consiste à insérer des squelettes (placeholders) dès le début de la requête, réservant ainsi l’espace nécessaire avant l’affichage du contenu réel, évitant tout saut de mise en page. Pour le bouton « Charger plus », bien qu’un délai de 500 ms après le clic soit toléré, il recommande aussi d’utiliser des squelettes pour garantir une stabilité visuelle, quel que soit le temps de réponse du réseau.
La règle d’or ? Ne jamais déplacer le contenu visible pendant le défilement et toujours réserver l’espace à l’avance, sauf après une interaction utilisateur explicite (clic), en respectant la fenêtre de 500 ms. Une approche simple mais efficace pour améliorer les Core Web Vitals et l’expérience utilisateur. 🎄✨
Le BFG Repo-Cleaner est un outil en Scala, plus rapide et plus simple que git-filter-branch, conçu pour nettoyer les dépôts Git en supprimant les gros fichiers ou les données sensibles comme les mots de passe. Il permet de cloner un dépôt, de le nettoyer avec des commandes spécifiques, puis de pousser les modifications. Exemples d'utilisation : suppression de fichiers spécifiques, suppression de blobs volumineux, remplacement de texte sensible. Le BFG ne modifie pas le dernier commit pour éviter les problèmes de déploiement.
L'article explore l'importance souvent sous-estimée du titre de page (
En octobre 2025, une panne majeure de l'hébergeur AWS a perturbé de nombreux services Internet, relançant la question de la dépendance du Web à ces géants. Bien que la panne soit localisée et logicielle, ses conséquences ont été amplifiées par la complexité et l'interconnexion des services. L'article analyse les réactions médiatiques, souvent sensationnalistes, et souligne la difficulté de gérer des infrastructures aussi vastes. Il invite à une réflexion sur les compromis entre robustesse et diversité des services offerts.
Ce billet de blog explique pourquoi l'auteur a remplacé les Makefiles par Castor, un task runner développé par JoliCode, pour automatiser ses projets PHP. Castor permet d'utiliser du PHP au lieu de scripts shell fragiles, offrant une meilleure expérience développeur avec autocomplétion, documentation et refactoring. L'auteur détaille comment Castor gère le démarrage du projet, en attendant intelligemment que la base de données soit prête, et montre un exemple de code pour illustrer ses propos.
ALTCHA propose une solution de protection contre les bots et le spam, conforme au RGPD et à d'autres réglementations internationales, sans suivi, cookies ou fingerprinting. Leur système, auto-hébergé et open source, utilise une vérification basée sur le Proof-of-Work (PoW) pour une expérience utilisateur fluide, avec une option de défi par code pour les cas à haut risque. ALTCHA Sentinel offre une protection adaptative et discrète, idéale pour les entreprises et les sites web, disponible également sous forme de plugin pour WordPress.