Hebdomadaire Shaarli

Tous les liens d'un semaine sur une page.

Semaine 12 (March 17, 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.

Revisiting CSS border-image | CSS-Tricks

L'article explore la propriété CSS border-image, souvent sous-utilisée malgré son potentiel créatif. Introduite il y a une décennie, cette propriété permet d'ajouter des images aux bordures des éléments, y compris les cellules de tableaux. L'auteur explique les différentes propriétés et valeurs de border-image, comme border-image-source, border-image-slice, et border-image-repeat, et montre comment les utiliser pour créer des effets visuels uniques sans compromettre les performances. Il encourage les développeurs à redécouvrir cette propriété pour enrichir leur boîte à outils de design.

Self Gap

L'article aborde le problème de la gestion des espacements entre les éléments dans un conteneur utilisant Flexbox ou Grid. L'auteur se demande comment contrôler l'espacement entre certains éléments sans recourir à des solutions peu élégantes. Il propose plusieurs méthodes, comme ajuster les marges verticales, encapsuler les éléments dans un nouveau conteneur, ou utiliser le flux par défaut avec des marges CSS. Chaque méthode a ses avantages et inconvénients, notamment en termes de maintenance du code et de modification du HTML. L'auteur suggère finalement une approche utilisant des variables CSS pour gérer les espacements de manière plus flexible. Il propose également une idée pour une future propriété CSS qui permettrait de définir des espacements personnalisés pour certains éléments au sein d'un conteneur Flexbox ou Grid.

Lancer des scripts à l'ouverture d'un projet dans VSCode — Corentin Hatte

L'article explique comment automatiser l'exécution de scripts à l'ouverture d'un projet dans Visual Studio Code (VSCode) en utilisant un fichier de configuration JSON. En créant un fichier .vscode/tasks.json, vous pouvez définir des tâches réutilisables qui seront exécutées automatiquement lors de l'ouverture du dossier du projet. Par exemple, pour un projet avec des dossiers backend et frontend, vous pouvez configurer des tâches pour lancer des commandes spécifiques dans chaque dossier et ouvrir des terminaux dédiés. Le fichier peut être partagé avec d'autres développeurs via un dépôt Git, facilitant ainsi la collaboration. L'article fournit des exemples de configuration pour lancer des commandes et ouvrir des terminaux libres, et souligne l'importance de tester ces configurations pour s'assurer de leur bon fonctionnement.

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.

Previewing Content Changes In Your Work With document.designMode — Smashing Magazine

Une astuce géniale :)

Du désir profond de se faire arnaquer

L'article dénonce la "merdification" du web causée par le SEO et l'IA, qui génèrent du contenu de faible qualité et surchargent les infrastructures. L'auteur appelle à un retour aux petites communautés et à des espaces alternatifs pour échapper à cette dégradation. Il conclut que de nombreux clients préfèrent suivre des modes technologiques sans comprendre leurs besoins réels, ce qui les rend vulnérables aux arnaques.

Le principe d'Exponential Backoff

L'article explique le principe de l'exponential backoff, une technique utilisée pour améliorer la résilience des applications modernes en gérant les tentatives de reconnexion ou de réexécution d'opérations après un échec. Cet algorithme augmente progressivement le délai d'attente entre chaque tentative, réduisant ainsi la pression sur les systèmes en défaillance et augmentant les chances de succès lors de pannes temporaires. L'article décrit comment implémenter cette technique en PHP, en incluant des paramètres comme le jitter pour éviter les tentatives simultanées. Il souligne également l'importance de rendre les opérations idempotentes et de bien configurer les paramètres de délai. L'exponential backoff est largement utilisé dans divers frameworks et bibliothèques pour améliorer la fiabilité des applications.

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

MicroStack - un projet open source pour imprimer un rack modulable pour mon homelab Dell Micro

Tout est dans le titre

Be aware of the Makefile effect

L'article traite d'un phénomène courant dans le développement logiciel où des outils complexes ou peu familiers ne sont pas utilisés de novo, mais plutôt copiés et ajustés à partir d'exemples précédents. Ce phénomène, qu'il baptise « l'effet Makefile », est observé chez les ingénieurs de tous niveaux d'expérience. Par exemple, au lieu d'écrire un nouveau Makefile, un ingénieur copie souvent un Makefile existant d'un projet antérieur et le modifie jusqu'à ce qu'il fonctionne dans le nouveau contexte. Bien que cela puisse sembler efficace à court terme, cela indique que l'outil est trop compliqué ou ennuyeux à utiliser de zéro. Ce phénomène est également observé dans d'autres domaines comme les configurations CI/CD et les systèmes de build. L'auteur souligne que les outils qui encouragent ce comportement peuvent avoir des diagnostics ou un support de débogage moins qu'idéaux, décourager l'apprentissage approfondi, et être plus difficiles à utiliser de manière sécurisée. Il suggère que les concepteurs d'outils devraient viser à minimiser cet effet en rendant les outils plus intuitifs et faciles à utiliser dès le départ.

NAPS2 - Scan documents to PDF and more

Tout est dans le titre

Optimisation des Coding Agents : Coûts et Performance

L'article explore diverses stratégies pour réduire les coûts associés à l'utilisation des Coding Agents tout en améliorant leurs performances. Il présente plusieurs options, allant des modèles gratuits comme OpenRouter et Gemini Flash 2.0, aux abonnements avec plans gratuits, en passant par l'hébergement de modèles open-source. L'article souligne l'importance de choisir le bon modèle en fonction des tâches spécifiques pour optimiser les coûts et les performances. Il met également en avant des techniques comme l'optimisation du contexte, l'utilisation de fichiers de configuration et de Memory Bank pour améliorer l'efficacité des agents. Enfin, il insiste sur la nécessité de rester informé des évolutions rapides dans ce domaine pour maintenir la compétitivité.

Styling Counters in CSS | CSS-Tricks

Le guide complet sur le sujet