Quotidien Shaarli

Tous les liens d'un jour sur une page.

March 23, 2025

Modern Good Practices for Python Development · Field Notes

L'article présente des pratiques modernes pour le développement en Python. Il recommande d'utiliser des outils comme pipx ou uv pour exécuter des applications Python dans des environnements virtuels séparés, évitant ainsi d'installer des packages directement dans l'installation Python de l'OS. Pour le développement, il est conseillé d'utiliser des gestionnaires de versions comme pyenv ou des conteneurs de développement pour gérer plusieurs versions de Python. L'utilisation de Poetry, uv ou PDM est encouragée pour structurer les projets, tandis que Hatch est préféré pour les bibliothèques Python. Les outils de formatage comme Ruff et les linters comme flake8 sont essentiels pour maintenir un code propre et cohérent. Les type hints et les outils comme mypy améliorent la qualité du code, surtout pour les applications critiques. Pytest est recommandé pour les tests, avec des plugins comme pytest-randomly pour éviter les interférences entre tests. Les projets doivent être empaquetés en wheel pour les bibliothèques et en OCI ou PyInstaller pour les applications. Enfin, des pratiques comme l'utilisation de f-strings, de datetime avec time zones, et de pathlib pour les chemins de fichiers sont également mises en avant pour un code Python moderne et efficace.

CORS: the ultimate guide | Devsecurely

L'article explique comment CORS, en tandem avec SOP, protège les utilisateurs en ligne en contrôlant le partage de ressources entre différents domaines. CORS permet des interactions sécurisées en définissant des exceptions aux restrictions de SOP, mais une mauvaise configuration peut exposer les utilisateurs à des attaques. Il est crucial de définir une politique CORS stricte pour éviter que des sites malveillants n'accèdent à des informations sensibles. Le guide détaille l'importance des en-têtes HTTP et des vérifications CORS pour prévenir les attaques CSRF. Il recommande de tester les modifications de politique CORS pour assurer la sécurité sans affecter le fonctionnement légitime du site. Une politique CORS bien configurée protège les données utilisateur et prévient les actions non autorisées.

Clean Controller Design in Symfony with Argument Resolvers | by Kevin Wenger | Mar, 2025 | Medium

L'article explique comment Symfony utilise les résolveurs d'arguments pour convertir les paramètres de requête en objets, rendant les contrôleurs plus propres et focalisés. Avant Symfony 6.2, cette fonctionnalité nécessitait le SensioFrameworkExtraBundle et l'annotation @ParamConverter. Le processus de résolution d'arguments consiste à transformer une valeur primitive en un objet complexe. Symfony dispose de plusieurs résolveurs intégrés pour différents types d'arguments, comme EntityValueResolver qui remplace ParamConverter. L'article présente un exemple concret avec le projet Respawwwn, où un résolveur personnalisé gère différents types de sessions de jeu via une seule endpoint. La création d'un résolveur personnalisé implique d'implémenter l'interface ArgumentValueResolverInterface et de définir les méthodes supports et resolve. Les tests des résolveurs sont également abordés pour assurer leur fiabilité. Les avantages incluent la séparation des préoccupations, la réutilisabilité du code, la maintenabilité, la testabilité et des contrôleurs plus propres. En conclusion, les résolveurs d'arguments permettent de créer des applications Symfony plus élégantes et maintenables.

How to Accomplish Things When You Are Not Feeling It - Simple Thread

L'article propose des stratégies pour rester productif même lorsqu'on manque de motivation, notamment en organisant sa semaine sur un calendrier papier pour visualiser les tâches à accomplir. Il est important de reconnaître que l'inspiration finira par venir et de commencer par les tâches les plus simples pour se mettre en mouvement. Décomposer les grandes tâches en étapes plus petites et gérables peut rendre les projets moins intimidants. L'idée est de se concentrer sur le démarrage plutôt que sur la finalisation d'un projet, car commencer permet souvent de trouver l'élan nécessaire pour continuer. Faire des tâches ménagères peut aussi aider à débloquer l'esprit et à retrouver de l'énergie pour les tâches professionnelles. En suivant ces conseils, même les journées les plus difficiles peuvent devenir des opportunités de progrès, une petite victoire à la fois.

Symfony & Elasticsearch: Build a RAG-Powered AI for Smarter Response | Medium

L'article explore l'intégration de fonctionnalités d'intelligence artificielle dans les applications, en se concentrant sur deux approches principales : le RAG (Retrieval-Augmented Generation) et le fine-tuning. Le RAG combine la génération de texte avec la recherche d'informations externes pour améliorer la qualité des réponses générées, tandis que le fine-tuning adapte un modèle pré-entraîné à des tâches spécifiques en le réentraînant sur des données spécialisées. L'article détaille les différences entre ces méthodes et propose une implémentation pratique d'un système RAG utilisant Symfony et Elasticsearch. Le processus inclut la création d'embeddings à partir de données, leur stockage dans une base de données vectorielle, et l'utilisation d'un modèle de langage pour générer des réponses contextuelles. Le projet, disponible sur GitHub, permet d'expérimenter avec différents cas d'utilisation et modèles d'embeddings. En conclusion, l'article souligne comment la combinaison de RAG et de fine-tuning peut créer des applications AI plus intelligentes et réactives.

How to Integrate Stripe in a PHP Symfony App: A Complete Step-by-Step Guide | by Aghar Saifeddine | Mar, 2025 | Medium

Tout est dans le titre