Dev Breeze

Dev back

We Removed Lombok, and Suddenly People Read Our Code Again

Cet article raconte l'expérience d'une équipe de développeurs qui a décidé de supprimer Lombok de leur code Java. Bien que Lombok ait initialement permis de réduire le code boilerplate et d'améliorer la productivité, il a finalement entraîné une confusion et des problèmes de lisibilité, rendant le débogage et la compréhension du code difficiles, surtout pour les développeurs juniors. Les auteurs mettent en avant les coûts cachés et la dette technique générés par cette dépendance à des annotations qui masquent la logique réelle du code.

Dev back

Common Hibernate & Spring Data JPA Mistakes and How to Avoid Them

Cet article aborde les erreurs courantes lors de l'utilisation d'Hibernate et de Spring Data JPA dans les applications Spring Boot. Il met en avant l'importance de mesurer la performance à l'aide d'outils de profilage et de ne pas se fier à l'intuition pour l'optimisation. L'article explique le fonctionnement d'Hibernate en tant que framework ORM et décrit l'importance du contexte de persistance et de l'EntityManager dans la gestion des entités.

Autre

Fouilles de données sur le web, comment s'en protéger

L'article traite des enjeux de la fouille de données pour les auteurs de contenus face à l'émergence de l'intelligence artificielle. Il met en avant les méthodes de protection, notamment l'opt-out et le blocage des robots aspirateurs, pour préserver les droits des créateurs. En expliquant les termes d'opt-out et d'opt-in, il souligne l'importance d'informer les robots de l'utilisation des œuvres, pour éviter leur extraction non consentie par des IA. La mise en place de balises sur les sites web est aussi proposée comme solution

"
Dev back

Go is 80/20 language

L'article discute du langage de programmation Go, soulignant son approche 80/20 qui permet d'obtenir 80% d'utilité avec seulement 20% de complexité. Il oppose cette philosophie à d'autres langages qui tendent vers une complexité accrue pour des gains d'utilité marginaux, et explique que Go a réussi à rester simple et efficace. Il aborde les défis que posent les fonctionnalités supplémentaires ainsi que l'importance de directives de codage pour maintenir la simplicité du langage.

Sécurité

Understand your software’s supply chain with GitHub’s dependency graph

L'outil de graphe de dépendances de GitHub permet de visualiser et de gérer les dépendances externes d'un projet logiciel, en mettant en avant les relations entre les différents packages. Cet outil aide à identifier les maillons faibles de la chaîne d'approvisionnement logicielle et à recevoir des alertes de sécurité relatives aux dépendances vulnérables. En activant le graphe, les développeurs peuvent également utiliser Dependabot pour des suggestions de correctifs automatiques, améliorant ainsi la sécurité des projets.

Fullstack

I Tried SSR with Next.js

L'auteur partage son expérience de la création d'un site de blog utilisant Next.js pour le frontend et Spring Boot pour le backend, en se concentrant sur les avantages de la génération de pages côté serveur (SSR) pour une performance rapide et une optimisation SEO. Il explique ce qui a fonctionné et les erreurs à éviter lors de l'utilisation de cette combinaison de technologies.

Dev back

Best Practices for Dockerizing Spring Boot Apps in 2025

Cet article présente les meilleures pratiques pour containeriser des applications Spring Boot en 2025 en utilisant Docker. Il aborde des techniques éprouvées pour créer des images Docker lean, sécurisées et performantes, tout en soulignant l'importance de bien comprendre les objectifs de la containerisation. L'accent est mis sur l'adoption de Java 21 et les perspectives futures avec Java 25.

Dev back

Java Threads, Part 2: Concurrency Control and Thread Safety

Cet article aborde des techniques avancées pour la gestion des threads en Java, en se concentrant sur les mécanismes de contrôle de la concurrence et les meilleures pratiques pour assurer la sécurité des threads. Il couvre des concepts tels que le service d'exécution, les défis de verrouillage, les techniques de sécurité des threads, et l'utilisation de verrous intrinsèques ainsi que la programmation sans verrou en utilisant des opérations atomiques.