Mensuel Shaarli
July, 2025
L'article présente des astuces pour optimiser l'utilisation de Docker Compose. Il propose d'utiliser des profils pour activer des services de manière conditionnelle, de gérer les variables d'environnement avec des fichiers .env, et d'optimiser les builds avec le cache. Il aborde également l'utilisation des vérifications de santé pour gérer les dépendances entre services, la personnalisation des logs pour une meilleure lisibilité, l'utilisation de volumes nommés pour la persistance des données, et l'extension des fichiers de configuration pour une meilleure modularité. Ces techniques permettent de rendre les workflows de développement plus efficaces et flexibles.
Suite de https://css-tricks.com/better-css-shapes-using-shape-part-1-lines-and-arcs/ et https://css-tricks.com/better-css-shapes-using-shape-part-2-more-on-arcs/, la troisième partie de la série sur la fonction shape() en CSS explore la commande curve, essentielle pour créer des courbes de Bézier et maîtriser pleinement cette fonction. Contrairement aux commandes line et arc précédemment abordées, la commande curve offre une flexibilité accrue pour dessiner des formes complexes en spécifiant des points de contrôle, sans nécessiter de connaissances mathématiques approfondies. L'article compare les commandes curve et arc, illustrant comment chacune peut être utilisée pour arrondir les coins des formes avec des résultats légèrement différents. Des exemples pratiques, tels que la création d'onglets arrondis et de polygones arrondis, démontrent l'utilisation de la commande curve en remplaçant les commandes line par des combinaisons de line et curve, bien que les calculs puissent être complexes et nécessiter des ajustements. L'utilisation de variables CSS simplifie la gestion et l'ajustement des formes, rendant la création de designs complexes plus accessible. Enfin, l'article encourage l'expérimentation avec la commande curve pour créer des formes esthétiques et rappelle que des outils en ligne sont disponibles pour faciliter l'utilisation et l'optimisation du code.
Il s'agit d'un logiciel pour faire des sauvegardes. Il semble d'un usage très simple et puissant.
L'article explique comment sécuriser l'accès à une API en utilisant OAuth2 avec Laravel Passport, en se concentrant sur le flux « Client Credentials Grant » pour l'authentification machine-à-machine. Il guide à travers l'installation de Laravel Passport, la création d'un client OAuth2 pour un bot, et la protection des routes API. L'auteur montre comment obtenir un jeton d'accès pour le bot et utiliser ce jeton pour accéder à des ressources protégées, illustrant ainsi un moyen efficace de sécuriser les interactions automatisées avec une API.
currentColor en CSS est un mot-clé dynamique représentant la valeur de la propriété color d'un élément. Utilisé pour les bordures, ombres, ou icônes SVG, il permet de synchroniser automatiquement ces propriétés avec la couleur du texte, facilitant ainsi la maintenance et la cohérence du style. Par exemple, en définissant border: 2px solid currentColor, la bordure adopte la couleur du texte et s'ajuste si celle-ci change. Cela évite la duplication de code et simplifie la création de thèmes. currentColor est bien supporté par tous les navigateurs, y compris Internet Explorer 9.
L'article montre différentes manières de styliser le texte affiché en ligne de commande sous Node.js, soit en utilisant des séquences d'échappement ANSI, soit en utilisant util.styleText
Apptainer, anciennement connu sous le nom de Singularity, est une plateforme de conteneurisation open source conçue pour exécuter des applications dans des environnements isolés et portables. Contrairement à d'autres solutions de conteneurisation comme Docker, Apptainer est spécialement optimisé pour les environnements de calcul haute performance (HPC) et les systèmes multi-utilisateurs, permettant aux utilisateurs d'exécuter des conteneurs sans nécessiter de privilèges root. Cela en fait un outil idéal pour les centres de recherche et les institutions académiques où la sécurité et la performance sont essentielles. Apptainer prend en charge les images Docker, facilitant ainsi l'intégration avec les infrastructures existantes, et offre une compatibilité avec les environnements HPC, permettant une interaction directe avec le matériel spécialisé. Grâce à sa capacité à fonctionner dans des environnements sans privilèges et à son architecture sans démon, Apptainer simplifie le déploiement d'applications conteneurisées tout en maintenant un haut niveau de sécurité et d'efficacité.
Il s'agit d'un tutoriel pour connecter Claude Desktop au système de fichiers via le Model Context Protocol. L'auteur est sous Windows 10, (mais ça devrait marcher sous d'autres OS) Il faut avoir Claude Desktop dans une version récente, Node.js et un compte Claude Pro de préférence.
L'article explique comment implémenter le modèle de conception d'Injection de Dépendances dans Vue 3, en utilisant le conteneur IoC (Inversion de Contrôle) et l'API Provide/Inject de Vue. Il montre comment créer un plugin pour lier des dépendances à l'instance Vue, les rendant accessibles dans toute l'application. L'article illustre également l'utilisation de ces dépendances dans des composables et des composants, favorisant ainsi la maintenabilité et la testabilité du code.
L'article traite des préoccupations liées à la fouille de données sur le web par les intelligences artificielles, une pratique souvent perçue comme une forme de vol de données. Il explore les moyens pour les créateurs de contenu de protéger leurs œuvres, notamment à travers des procédures comme l'opt-out, qui permet de déclarer son refus de voir ses données utilisées pour enrichir les bases de données de l'IA. L'article aborde également des méthodes techniques pour bloquer les robots aspirateurs, comme l'utilisation de fichiers robots.txt et .htaccess, tout en soulignant l'importance de l'opt-out pour une protection juridique. Il conclut sur la nécessité pour les auteurs de se préparer à ces enjeux, tout en restant ouverts à une collaboration éventuelle avec l'IA.
L'article explique que PHP, traditionnellement synchrone, peut optimiser des tâches comme les requêtes SQL en les exécutant de manière asynchrone. Cela permet de lancer des opérations non bloquantes, comme des requêtes de base de données ou des lectures de fichiers, pendant que d'autres tâches sont traitées. PHP a introduit des fonctionnalités asynchrones dès la version 4.3 avec les streams, et a évolué avec les générateurs en PHP 5.5 et les fibers en PHP 8.1, permettant une meilleure gestion des coroutines. L'EventLoop est présenté comme un modèle efficace pour gérer plusieurs opérations asynchrones en utilisant des callbacks, bien que cela puisse mener à un "callback hell". Les promesses sont proposées comme solution pour simplifier la gestion asynchrone, transformant les callbacks imbriqués en une chaîne de promesses plus lisible. Enfin, l'article compare des bibliothèques comme ReactPHP et Amp pour la gestion des promesses et des coroutines, recommandant ReactPHP pour les promesses et Amp pour une approche plus naturelle avec les coroutines, tout en suggérant Revolt pour l'EventLoop.
L'article explique comment utiliser et interpréter les plans d'exécution dans PostgreSQL pour optimiser les performances des requêtes. Il commence par souligner l'importance de l'utilisation de la commande EXPLAIN ANALYZE pour comprendre comment PostgreSQL exécute une requête. L'article détaille les différents éléments d'un plan d'exécution, tels que les scans séquentiels et les scans d'index, et explique comment lire ces plans pour identifier les goulots d'étranglement. Il fournit également des conseils pour optimiser les requêtes, comme l'ajout d'index et la réécriture des requêtes pour une meilleure performance. Enfin, l'article aborde les options utiles de EXPLAIN et donne des pistes pour résoudre les problèmes courants identifiés dans les plans d'exécution.
Suite de https://css-tricks.com/better-css-shapes-using-shape-part-1-lines-and-arcs/ la deuxième partie de la série sur la fonction shape() en CSS se concentre sur l'utilisation avancée de la commande arc, permettant de créer des formes complexes comme des secteurs et des arcs. L'article, qui suppose une compréhension préalable de la première partie, explore comment manipuler les arcs en utilisant des variables CSS pour contrôler leur taille et leur position, tout en utilisant des mots-clés comme top et center pour simplifier la définition des points. Il aborde les défis liés à la gestion des directions et des tailles des arcs, proposant des solutions pratiques comme l'utilisation de border-radius pour ajuster les formes et l'introduction de conditionnelles en ligne pour modifier dynamiquement les propriétés des arcs. L'article conclut en encourageant l'expérimentation avec la commande arc pour créer des formes esthétiques, tout en notant que la maîtrise des arcs elliptiques est rarement nécessaire pour la plupart des projets.
ArchiveBox est une application auto hébergée qui permet de sauvegarder le contenu de sites web.
Un comparateur de distributions basées sur Android
Un outil graphique pour aider à générer des commandes Linux / Unix de manière graphique
Suite de https://www.smashingmagazine.com/2025/06/decoding-svg-path-element-line-commands/ l'article explore les aspects complexes de l'élément path en SVG, en se concentrant sur la création de courbes et d'arcs. L'autrice explique les règles sous-jacentes et les fonctions de construction des courbes de Bézier quadratiques et cubiques, ainsi que des arcs, en utilisant des exemples visuels et des animations pour illustrer les concepts. L'article aborde également l'utilisation des commandes Q, T, C, S, et A pour dessiner ces formes, offrant ainsi une compréhension approfondie de la syntaxe et des mécanismes de l'élément path en SVG.
L'auteur décrit son passage de Tailwind CSS à Sass pour un nouveau projet et explique comment il a reproduit la structure du fichier de configuration de Tailwind en utilisant Sass. Il a créé une map Sass nommée $theme dans un fichier _theme.scss pour organiser les variables comme les couleurs, les polices et les espacements. Pour éviter que Sass interprète les polices comme des listes, il utilise la fonction unquote(). Ensuite, dans un fichier _functions.scss, il définit des fonctions pour récupérer ces valeurs, comme color($key) pour les couleurs et une fonction theme($key) plus générale, inspirée de Tailwind CSS v4.0, qui permet d'accéder à n'importe quelle valeur de thème. Cette approche lui permet d'utiliser des mots-clés comme DEFAULT pour définir des valeurs par défaut, offrant ainsi une flexibilité similaire à celle de Tailwind.
L'article explique comment organiser efficacement votre code pour améliorer la lisibilité et la maintenabilité. Il couvre l'utilisation de lignes shebang pour rendre les scripts exécutables, l'organisation des instructions d'importation selon les conventions PEP 8, et la création de points d'entrée principaux avec des blocs if name == "main". L'article aborde également la gestion des dépendances avec PEP 723, la manipulation des arguments en ligne de commande avec des bibliothèques comme Click, et l'amélioration de la structure interne des données avec des énumérations et des dataclasses. Enfin, il propose des conseils pour améliorer les retours des scripts, comme l'utilisation de bibliothèques telles que Rich pour une meilleure présentation des sorties.
L'article décrit le passage d'un NAS Synology à un NAS Asustor, motivé par l'évolution des besoins en stockage et les limitations des produits Synology. L'auteur explique que Synology a stagné en termes de matériel et de logiciel, devenant coûteux et restrictif, notamment avec l'obligation d'utiliser des disques durs Synology pour les nouveaux modèles. Après une analyse approfondie des alternatives, il opte pour un NAS Asustor Lockerstor 10 Gen 3, plus puissant et offrant une meilleure flexibilité. Le nouvel appareil, bien que plus cher, se révèle plus rentable grâce à une capacité de stockage accrue et des performances supérieures. L'auteur partage ses premières impressions positives sur le système d'exploitation ADM d'Asustor, malgré quelques bugs mineurs et une interface moins intuitive que celle de Synology.
L'article explique ce qu'est l'authentification multifacteur (2FA ou MFA), à quel besoin elle répond sur quels fondements elle repose. Il décrit aussi sa mise en place côté utilisateur.
L'article détaille la stack technique de Shopify, révélant comment la plateforme gère une échelle massive avec une architecture qui semble simple en surface, mais qui est en réalité le résultat de décisions architecturales astucieuses et de nombreuses années de refactoring. Shopify utilise principalement Ruby on Rails pour son backend, avec des investissements significatifs dans des outils comme YJIT et Sorbet pour améliorer les performances et la sécurité du typage. Le frontend est principalement construit avec React et TypeScript, tandis que React Native est utilisé pour le développement mobile. Shopify s'appuie sur MySQL pour sa base de données principale, avec des stratégies de sharding et de pods pour assurer l'isolation et la scalabilité. Kafka est utilisé pour la messagerie et la distribution d'événements, tandis que des outils comme Memcached et Redis sont utilisés pour le caching et la gestion des files d'attente. L'infrastructure ML de Shopify utilise des embeddings pour la recherche en temps réel et des pipelines de données basés sur Apache Beam. La plateforme est déployée sur Kubernetes, avec des processus CI/CD robustes et des outils d'observabilité pour assurer la fiabilité et la sécurité. Shopify traite des milliards de requêtes par jour, démontrant l'efficacité de sa pile technologique à grande échelle.
L'article explique comment compiler des programmes en C à l'aide de make. Il détaille les étapes essentielles : installer un compilateur C, gérer les dépendances, exécuter ./configure si nécessaire, et utiliser make pour construire le programme. L'autrice partage des astuces pour résoudre les erreurs de compilation, souvent liées aux dépendances, et explique comment utiliser des variables d'environnement comme CPPFLAGS et LDLIBS pour configurer le compilateur et l'éditeur de liens. L'article souligne également l'importance de comprendre les bases de la compilation C, même si on ne développe pas en C, et propose des conseils pour installer les binaires compilés.
Suite et fin de https://css-tricks.com/better-css-shapes-using-shape-part-1-lines-and-arcs/ https://css-tricks.com/better-css-shapes-using-shape-part-2-more-on-arcs/ et https://css-tricks.com/better-css-shapes-using-shape-part-3-curves/ la quatrième partie de la série sur la fonction shape() en CSS explore les commandes close et move, qui, bien que rarement utilisées, sont incroyablement utiles pour certaines formes complexes. La commande close permet de fermer une forme en revenant automatiquement au point de départ initial, simplifiant ainsi le code et le rendant plus lisible, surtout pour les formes avec plusieurs sous-parties. La commande move, quant à elle, permet de déplacer le point de départ à un nouvel emplacement sans dessiner de ligne, facilitant la création de formes composées de plusieurs parties non connectées. Ces commandes sont particulièrement utiles pour créer des formes découpées et des motifs répétitifs, offrant une grande flexibilité et expressivité. L'utilisation de variables CSS avec ces commandes permet de rendre le code plus adaptable et facile à ajuster, démontrant ainsi la puissance de la fonction shape() pour créer des designs complexes et dynamiques.
L'article, 1er d'une série de 4, explore l'utilisation de la nouvelle fonction shape() en CSS pour créer des formes plus complexes et personnalisées. La fonction shape(), actuellement supportée dans Chrome 137+ et Safari 18.4+, permet d'utiliser des commandes similaires à celles de SVG mais avec une syntaxe CSS plus standard, offrant ainsi plus de flexibilité et de fonctionnalités. L'article se concentre sur l'utilisation des lignes et des arcs pour créer des formes, en expliquant comment convertir des chemins SVG en formes CSS et en fournissant des exemples pratiques pour dessiner des rectangles, des découpes circulaires, des onglets arrondis et des rayons inversés. L'auteur souligne également l'importance d'analyser les formes pour simplifier leur création et propose un convertisseur en ligne pour faciliter la transition de SVG à CSS.
L'article explore les bases de l'élément
Il s'agit d'un serveur MCP donnant accès aux API de Open Meteo pour les utiliser avec des LLM
L'article décrit comment une équipe a optimisé le temps de récupération des données d'API dans un projet Symfony, réduisant le temps de traitement de 40 minutes à seulement 10 minutes. En utilisant des requêtes concurrentes et des techniques de parallélisation, ils ont pu gérer plusieurs appels API simultanément, améliorant ainsi considérablement l'efficacité et les performances de leur application. Cette approche a permis de réduire le temps d'exécution global et d'optimiser la gestion des ressources.
Dans son article, Lea Verou présente le framework "Hovercar", une approche innovante pour le développement de produits qui suggère de commencer par la vision finale plutôt que par un produit minimum viable (MVP). Contrairement à la méthode traditionnelle qui privilégie le démarrage à petite échelle, Verou propose de visualiser d'abord le produit final idéal, appelé "North Star UI", pour guider la conception et le développement. Cette vision sert de boussole pour orienter les décisions de conception et s'assurer que chaque étape du processus contribue à atteindre cet objectif ultime, tout en différenciant clairement cette approche de la "North Star Metric", qui est plutôt utilisée pour évaluer le succès d'un produit.
L'article explique comment connecter un conteneur Podman à Open vSwitch, d'abord en créant un namespace réseau avec ip netns add. Ensuite, ajoutez un port à Open vSwitch et configurez-le comme interface interne. Assignez cette interface au namespace créé et activez-la. Construisez une image de conteneur avec les outils réseau nécessaires et lancez le conteneur en utilisant l'option --network pour le connecter au namespace. Cela permet au conteneur de communiquer avec les machines virtuelles connectées à Open vSwitch, intégrant ainsi les conteneurs dans une topologie réseau virtualisée existante.
L'auteur a besoin de tester des rôles Ansible sur plusieurs versions de clones RHEL. Il a donc installé un multiboot de 4 systèmes : AlmaLinux 8 et 9, RockyLinux 8 et 9. Il détaille dans cet article comment il s'y est pris.
L'article présente une synthèse de cinq publications clés qui ont marqué le domaine des grands modèles de langage (LLM). Il commence par expliquer comment GPT-3 a révolutionné le traitement du langage naturel en permettant à un seul modèle de réaliser diverses tâches grâce au "few-shot learning". Ensuite, il aborde les "scaling laws" qui démontrent l'importance de la taille des modèles pour leur performance. Le concept de "modèles de fondation" est introduit comme une évolution vers des modèles plus génériques capables de s'adapter à différents domaines. L'architecture des Transformers, basée sur des mécanismes d'attention, est également explorée pour son efficacité à grande échelle. Enfin, l'approche RAG (Retrieval-Augmented Generation) est présentée comme une méthode pour améliorer les LLM en intégrant des informations actualisées sans réentraînement coûteux. L'article souligne l'importance de ces avancées pour comprendre l'essor de l'IA générative et des LLM.