46 liens privés
Dans cet article, l'auteur partage ses réflexions sur l'importance des amitiés et des réseaux sociaux, en s'appuyant sur huit livres qu'il a lus dans le cadre de son projet annuel "Foundations". Il explore comment les amitiés influencent notre santé, notre bien-être et même la société dans son ensemble. Young discute des défis liés à la création et au maintien d'amitiés, notamment dans les grandes villes, et propose des stratégies pour améliorer nos compétences sociales. Il souligne également l'importance de la participation communautaire et des interactions sociales pour renforcer la confiance et la cohésion sociale.
L'article présente WebLLM, une technologie développée par l'équipe MLC-AI qui permet d'exécuter des modèles de langage de grande taille (LLMs) directement dans le navigateur, sans infrastructure serveur. En utilisant WebAssembly (WASM) et WebGPU, WebLLM télécharge et stocke localement les modèles, permettant ainsi une utilisation hors ligne après le chargement initial. Cette approche offre des avantages en termes de confidentialité et de sécurité, car les données ne sont pas envoyées à des serveurs distants.
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.
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.
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.
Tout est dans le titre
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.
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.
Tout est dans le titre
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.
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.
Une astuce géniale :)
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.
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.
Tout est dans le titre
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é.
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.
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.
Le guide complet sur le sujet