L'article explique comment Docker utilise par défaut le pilote json-file pour stocker les logs, ce qui peut entraîner des problèmes d'espace disque si non configuré correctement. Il propose des solutions pour configurer et limiter la taille des fichiers de logs via le fichier /etc/docker/daemon.json et présente divers pilotes de logs comme syslog, journald, et des solutions plus avancées comme Splunk ou AWS CloudWatch Logs pour des environnements critiques. Enfin, l'article souligne l'importance des bonnes pratiques telles que la rotation des logs, l'étiquetage, et la centralisation pour une gestion efficace des logs dans Docker.
L'article rappelle l'intérêt des connexions SSH sans mot de passe. Il détaille ensuite, étape par étape, comment générer une clé SSH et configurer l'accès sans mot de passe. Il donne quelques conseils pour renforcer la sécurité, et répond à quelques questions courantes. Enfin, il présente les bonnes pratiques : renouvellement périodique des clés, etc.
L'article présente des choses à ne plus faire avec Docker :
- mettre le champ "version" dans le fichier compose
- ne pas mettre de "healthchecks"
- être root par défaut
- ne avoir de .dockerignore
- avoir des Dockerfiles en une seule étape surchargée -> il faut utiliser les builds en plusieurs étapes
- des builds manuels sans cache, il y a même la possibilité de faire du hot reload
Docker peut servir aussi bien en développement local qu'en production.
Cet article explique l'importance de ne pas jeter vos vieux ordinateurs sous Windows 10. Il met en lumière des solutions pour leur donner une seconde vie, comme les recycler ou les réutiliser pour d'autres tâches. L'article souligne également les impacts environnementaux de la surconsommation de matériel électronique. Enfin, il offre des conseils pratiques pour optimiser et prolonger la durée de vie de ces appareils.
L'article explore l'importance des messages de commit clairs et de la documentation complète dans le processus de développement logiciel. L'auteur y décrit sa routine personnelle pour rédiger des messages de commit détaillés et structurés, en utilisant un modèle standard qui inclut le type de modification, la portée, un résumé, une description du problème, la solution apportée, et le contexte supplémentaire. Il souligne également l'impact positif de cette pratique sur la collaboration et la maintenance du code. L'article aborde aussi l'utilisation d'outils comme les hooks Git pour maintenir la qualité des commits et l'intégration de l'IA pour aider à la documentation. Enfin, l'auteur partage son approche pour gérer la documentation à travers différentes étapes du développement, soulignant que ces pratiques sont essentielles pour un développement professionnel efficace.
L'auteur donne 3 raisons pour lesquelles l'appel à flush() dans les repositories est une mauvaise idée, notamment vis à vis du DDD. Il explique ce qu'il fait à la place.
Quelques conseils pour sécuriser son site web, hébergé dans le cloud ou pas
L'article explore les meilleures pratiques pour rédiger une documentation technique efficace. Il aborde des aspects clés comme la perspective du lecteur, l'accessibilité, les boucles de rétroaction, et les techniques de rédaction. L'auteur souligne l'importance de connaître son audience, d'utiliser un langage clair et des diagrammes bien structurés. Un guide essentiel pour créer des documents techniques utiles et accessibles.
La scalabilité est essentielle pour la survie des applications, permettant de gérer plus d'utilisateurs, de données ou de fonctionnalités sans dégradation des performances. React, avec son architecture basée sur les composants, le Virtual DOM et un flux de données unidirectionnel, offre une base solide pour construire des applications web évolutives. L'article présente les meilleures pratiques pour des applications React évolutives : l'optimisation de la taille des bundles avec le code splitting et le lazy loading, une gestion efficace de l'état, et l'utilisation de composants et de hooks personnalisés.
Les formes normales en bases de données sont essentielles pour optimiser les performances, réduire la redondance des données et faciliter la maintenance à long terme. Elles permettent d'éviter les problèmes de duplication d'informations, d'incohérences lors des mises à jour et de complexité croissante des requêtes. Les trois niveaux fondamentaux sont la 1NF (atomicité des données), la 2NF (dépendance fonctionnelle complète) et la 3NF (élimination des dépendances transitives).
L'abstraction, souvent perçue comme un concept réservé aux architectes, est en réalité essentielle pour tous les développeurs PHP grâce aux interfaces. Ces dernières permettent de créer un code plus propre, modulaire et flexible en définissant des méthodes sans se soucier des détails d'implémentation sous-jacents. Les interfaces agissent comme des contrats, garantissant que les classes qui les implémentent suivent une structure spécifique, ce qui réduit le couplage et augmente la flexibilité. Elles facilitent également les tests unitaires en permettant de simuler des implémentations et soutiennent les principes SOLID, essentiels pour un code maintenable et évolutif. En adoptant les interfaces, les développeurs PHP peuvent améliorer la modularité, la réutilisabilité et la maintenabilité de leur code.
L'article souligne l'importance de créer des messages d'erreur utiles et empathiques pour améliorer l'expérience utilisateur. Il recommande d'identifier les types d'erreurs possibles, d'écrire de manière humaine et claire, d'éviter un ton trop fantaisiste, d'utiliser la voix active, et de fournir des solutions claires pour aider les utilisateurs à résoudre les problèmes. La cohérence dans la présentation des messages d'erreur est également essentielle pour faciliter la compréhension et l'action des utilisateurs.
L'article propose une méthode structurée pour mettre à jour un projet Symfony en toute confiance. Il recommande d'utiliser des outils comme Bruno pour tester les routes, de mettre à jour les dépendances et les outils, d'appliquer des analyses statiques avec PHPStan, et de refactorer le code avec Rector. L'article insiste sur l'importance des tests automatisés et des mises à jour progressives pour éviter les régressions.
Cursor et Claude ne sont pas seulement efficaces pour prototyper mais aussi pour structurer, standardiser, refactorer et maintenir de grands projets. Cursor permet de construire des logiciels 5 à 30 fois plus rapidement grâce à son cycle d'édition et de test. L'auteur donne quelques conseils et bonnes pratiques.
Un guide complet et des bonnes pratiques sur la sauvegarde
L'auteur partage son expérience approfondie de l'utilisation des Large Language Models (LLMs) pour le codage. Il souligne que l'utilisation des LLMs pour le codage est complexe et nécessite de fixer des attentes raisonnables. Il insiste sur l'importance de comprendre les dates de coupure d'entraînement des modèles et de gérer efficacement le contexte. Il partage des conseils pratiques tels que demander des options aux LLMs, fournir des instructions détaillées et itérer sur le code généré. Il discute également des avantages d'utiliser des outils capables d'exécuter et de tester le code, et introduit le concept de "vibe-coding" comme moyen d'apprentissage et d'expérimentation avec les LLMs. Il conclut que les LLMs accélèrent considérablement le développement et amplifient l'expertise existante, facilitant ainsi la mise en œuvre des idées et l'apprentissage de nouvelles choses.
L'auteur a récemment terminé un mois consacré à l'amélioration de son sommeil, dans le cadre de son projet annuel visant à renforcer ses bases de vie. Il a réussi à augmenter son temps de sommeil moyen de 26 minutes par nuit, ce qui a considérablement amélioré sa concentration et son bien-être général. Il attribue cette amélioration à des changements simples comme se coucher plus tôt et limiter la caféine. Il a également appris à distinguer la fatigue du besoin de sommeil, ce qui l'a aidé à mieux gérer son énergie tout au long de la journée.
L'article explore les défis et les étapes nécessaires pour changer le nom de domaine d'une application, en se basant sur son expérience personnelle avec le changement de nom de son application vers hakanai.io. L'auteur partage des leçons apprises, notamment l'importance de préserver le SEO, de gérer les redirections, de mettre à jour les configurations d'emails et de maintenir la conformité réglementaire. Il souligne également les risques et les efforts de communication nécessaires pour établir une nouvelle identité de marque
.
L'article explore l'application des principes de la Clean Architecture dans le cadre du développement avec le framework Laravel. Il partage l'expérience d'une équipe qui a travaillé pendant plus d'un an pour réduire la dette technique et repenser l'architecture de leurs applications Laravel. L'article aborde les différentes couches de la Clean Architecture (présentation, domaine, application, infrastructure), l'inversion des dépendances, et le passage de frontières pour améliorer la testabilité, l'évolutivité et la maintenabilité du code
.
L'article explore la difficulté de nommer les éléments en programmation. En travaillant sur un projet Laravel, l'auteur a réalisé l'importance de nommer les éléments de manière appropriée pour le contexte ou le schéma dans lequel ils sont utilisés. Il illustre cela avec un exemple où il devait requêter des utilisateurs n'ayant pas de mot de passe. Initialement, il a utilisé une requête basique, puis a créé une portée mécanique, mais aucune des deux solutions ne reflétait le concept métier. Finalement, il a opté pour un nom qui représentait mieux le concept métier : "completeUsers". Il conclut que nommer les éléments devient plus facile lorsqu'on considère le cas d'utilisation et qu'on imagine expliquer le code à un humain
.