46 liens privés
Cet article explique comment établir un rythme vertical harmonieux sur une page web pour améliorer l'expérience utilisateur. En définissant une "unité de rythme" basée sur la taille de la police et la hauteur de ligne, on peut créer des espacements proportionnels et prévisibles. L'auteur propose d'utiliser des multiples de cette unité pour les tailles de titres et autres éléments, facilitant ainsi la lecture et la hiérarchie visuelle. Le sélecteur CSS "hibou lobotomisé" ( + ) et les Custom Properties sont également mis en avant pour automatiser et simplifier la mise en page.
Tout est dans le titre
Cet article détaille une méthode progressive pour implémenter une politique de sécurité de contenu (CSP) sur un site web. La CSP est un en-tête HTTP crucial pour se protéger contre les attaques XSS. L'auteur propose cinq niveaux d'implémentation, allant de la configuration de base à des restrictions avancées, en passant par l'utilisation de Content-Security-Policy-Report-Only pour éviter les blocages intempestifs. Chaque niveau réduit progressivement les risques en restreignant les sources de scripts, styles et autres ressources. L'article insiste sur l'importance de maîtriser son front-end et de collaborer entre équipes pour une mise en œuvre efficace. Des conseils pratiques et des exemples de configurations sont fournis pour chaque étape.
L'article explore le phénomène de la "Tired Generation" en analysant les causes profondes de l'épuisement systémique qui touche de nombreuses personnes aujourd'hui. Il examine comment les pressions modernes, les attentes sociétales et les changements dans le monde du travail contribuent à cette fatigue généralisée. L'autrice propose également des réflexions sur les moyens de surmonter cet état et de retrouver une certaine énergie dans un contexte en constante évolution.
Dans cet article, David Heinemeier Hansson explore le concept de savoir quand abandonner. Il souligne que, bien que notre culture valorise souvent la persévérance et l'idée de "ne jamais abandonner", il est parfois nécessaire de reconnaître quand une idée ou un projet n'a pas le potentiel escompté. Hansson discute des raisons pour lesquelles même les meilleurs investisseurs se trompent souvent, car prédire l'avenir et les disruptions technologiques est extrêmement difficile. Il encourage les lecteurs à évaluer honnêtement leurs efforts et à accepter que parfois, il est plus sage de passer à autre chose plutôt que de s'acharner sur une voie sans issue.
L'article décrit le processus de recréation d'une animation P5.js de Rach Smith en utilisant CSS, en particulier la propriété offset-path
. Initialement, l'auteur a tenté de suivre manuellement les positions et directions de chaque boîte dans l'animation, ce qui s'est avéré complexe. Cependant, il a découvert que l'utilisation de offset-path
avec la fonction inset()
permettait de créer un chemin carré le long duquel les boîtes pouvaient se déplacer en animant les valeurs de offset-distance
. Cette méthode a simplifié le processus et permis de distribuer uniformément les boîtes grâce à des valeurs de animation-delay
calculées proportionnellement. L'article explore également l'utilisation de offset-path
avec d'autres formes comme polygon()
pour créer des animations intéressantes et variées.
En 2025, IPv6 est devenu incontournable avec près de la moitié du trafic internet mondial l'utilisant. Malgré ses avantages techniques (espace d'adressage quasi-infini, sécurité intégrée, efficacité de routage), son adoption reste inégale. Les gouvernements jouent un rôle clé en imposant des mandats d'adoption. Les organisations doivent planifier leur transition pour éviter des coûts croissants et des complications futures
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.