Mensuel Shaarli

Tous les liens d'un mois sur une page.

March, 2025

Composer.json : le manifeste du développeur moderne  • Lecodeestdanslepre

L'article présente le fichier composer.json comme un élément central du développement moderne en PHP, en le comparant à un buffet à volonté où l'on accumule diverses dépendances. Il détaille les composants essentiels, tels que PHP 8.2, Doctrine ORM, et EasyAdminBundle, qui simplifient le développement en évitant l'écriture manuelle de SQL ou la création d'interfaces administratives. L'article met également en avant des outils de sécurité comme Scheb 2FA et Nelmio Security Bundle, ainsi que des utilitaires spécifiques comme Endroid QR Code et HTMLPurifier. Il souligne l'importance des bundles Symfony, tels que Asset Mapper et Monolog, qui facilitent la gestion des ressources et le logging. Enfin, il mentionne des outils de test comme PHPUnit et PHPStan, ainsi que des polyfills pour assurer la rétrocompatibilité. Le fichier composer.json est décrit comme un sac à dos rempli d'outils indispensables pour un développement PHP efficace et sécurisé.

Symfony : la haute gastronomie en terme de développement  • Lecodeestdanslepre

L'article compare Symfony à un restaurant gastronomique où chaque composant joue un rôle précis, comme une brigade de cuisine bien organisée. Symfony, un framework PHP, facilite le développement en fournissant une structure claire et des outils puissants. Le Kernel gère les requêtes comme un hôte d'accueil, les controllers coordonnent les actions, et Doctrine gère la base de données. Twig transforme les données en HTML, tandis que les composants comme Security et Form assurent l'authentification et la gestion des formulaires. L'Event Dispatcher permet une communication fluide entre les parties de l'application, et le Messenger Component gère les tâches asynchrones. Le Cache Component optimise les performances en stockant temporairement des données. En somme, Symfony offre une solution complète et efficace pour le développement web.

Les attributs PHP : ou comment Symfony s'est mis à la déco d'intérieur  • Lecodeestdanslepre

Les attributs PHP, introduits avec PHP 8.0, remplacent les annotations DocBlock par une syntaxe plus propre et officielle, utilisant des crochets. Cela améliore la lisibilité du code et facilite l'intégration avec les outils de développement. Symfony, à partir de la version 5.2, a adopté cette approche pour diverses fonctionnalités comme la définition de routes, la validation d'entités, et la gestion de la sécurité, rendant le code plus moderne et maintenable.

Using service facades in a Symfony application — part 2 | by Thierry Feuzeu | Mar, 2025 | Medium

Les façades de service offrent une alternative à l'injection de dépendances traditionnelle dans Symfony, particulièrement utile pour les utilitaires comme les loggers ou les rapports d'erreurs, où elles simplifient le code et réduisent les instanciations inutiles. Elles sont également efficaces pour les objets paresseux et les situations où l'inversion de contrôle (IoC) est impossible, comme l'instanciation manuelle de classes ou l'utilisation de bibliothèques externes qui ne supportent pas l'IoC.

Perfectionism: 10 Signs of a Perfectionist - Personal Excellence

Dans cet article, Celes explore comment le perfectionnisme peut nuire à votre bien-être et partage son expérience personnelle. Elle identifie 10 signes courants de perfectionnisme, tels que des normes extrêmement élevées, une critique sévère des erreurs, et une attention excessive aux détails. Le perfectionnisme peut mener à la procrastination et à une peur de l'échec, mais il est possible de surmonter ces tendances pour vivre une vie plus équilibrée.

Totally Custom List Styles | Modern CSS Solutions

Ce tutoriel explore des techniques avancées pour personnaliser les styles de listes en CSS, en utilisant notamment les grilles CSS pour une mise en page flexible. Il aborde l'utilisation des attributs de données pour créer des puces personnalisées, les compteurs CSS pour styliser les listes ordonnées, et les variables CSS pour des styles spécifiques à chaque élément de liste. L'article propose également des solutions pour des listes multi-colonnes réactives et introduit l'utilisation du sélecteur ::marker pour un contrôle direct sur les marqueurs de liste.

Créer un menu hamburger fonctionnant sans Javascript grâce à Popover API

Cet article explique comment créer un menu hamburger accessible et fonctionnel sans utiliser JavaScript, en s'appuyant sur l'API Popover. Cette approche permet de garantir une navigation fluide et accessible pour tous les utilisateurs, y compris ceux utilisant des lecteurs d'écran. L'article détaille les étapes pour structurer le menu en HTML sémantique, utiliser les attributs Popover pour gérer l'affichage du menu, et ajouter des attributs ARIA pour améliorer l'accessibilité. Des exemples de code et des conseils pratiques sont fournis pour animer l'ouverture et la fermeture du menu, tout en respectant les bonnes pratiques d'UX.

Gérer facilement le rythme vertical de son site web

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.

When to give up

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.

Here are 8 Books I Read on Making Friends This Month - Scott H Young

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.

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.

Laravel France - Gérez l'interruption de vos commandes Artisan avec les signaux

Tout est dans le titre

WebSocket vs Socket.IO: Real-Time Communication Guide

Un article concis sur les différences entre WebSocket et Socket.IO pour la communication en temps réel

NixOS : Guide sur cette distribution déclarative - Wiki - Wiki

Tout est dans le titre

systemctl logs: A Guide to Managing Logs in Linux | Last9

Tout est dans le titre

Flow PHP - Data Processing Framework

Un framework PHP pour le traitement des données (ETL)

Reka UI - Unstyled, fully accessible UI library | Reka UI

Une bibliothèque de composants bas niveau, non stylisés, pour Vue

Making a Browser Based Game With Vanilla JS and CSS – SitePoint

L'article montre comment créer un jeu de "devinez le drapeau" en JS natif et CSS, sans framework ni lib. L'auteur explique pas-à-pas ce qu'il fait... C'est très instructif

10 Secret Git Commands That Will Save You 5+ Hours Every Week - DEV Community

L'article présente dix commandes Git peu connues qui peuvent améliorer l'efficacité des développeurs. Parmi elles, git restore permet d'annuler des modifications ou de déstager des fichiers, tandis que git switch facilite le changement de branches. git sparse-checkout permet de cloner uniquement les fichiers nécessaires dans un dépôt volumineux, et git range-diff compare les différences entre deux séries de commits. git notes ajoute des métadonnées aux commits sans encombrer l'historique, et git worktree permet de travailler sur plusieurs branches simultanément. git bisect aide à identifier les commits à l'origine de bugs, git replace modifie l'historique sans changer les hashs, et git fsck vérifie l'intégrité du dépôt. Enfin, git alias permet de créer des raccourcis pour des commandes fréquentes. Ces commandes peuvent faire gagner du temps et résoudre des problèmes complexes.

benbusby/yeetfile: An encrypted file sharing and vault service for web and CLI

Tout est dans le titre

How To Prevent WordPress SQL Injection Attacks — Smashing Magazine

L'article explique comment protéger les sites WordPress contre les attaques par injection SQL, une méthode couramment utilisée par les hackers pour accéder aux bases de données. Les sites WordPress, représentant 43% des sites web, sont des cibles privilégiées en raison de leur popularité. Une injection SQL peut endommager un site, voler des données et verrouiller l'accès administrateur. Pour se protéger, il est crucial de valider les entrées utilisateur, éviter le SQL dynamique, mettre à jour régulièrement les thèmes et plugins, utiliser un pare-feu, cacher la version de WordPress, personnaliser les messages d'erreur de la base de données, limiter les permissions des rôles utilisateurs, activer l'authentification à deux facteurs, supprimer les fonctions inutiles de la base de données, surveiller l'activité du site et effectuer des sauvegardes régulières. En cas d'attaque, il faut vérifier la base de données, supprimer le code malveillant, restaurer une sauvegarde propre, changer tous les mots de passe et renforcer la sécurité du site.

Hexagonal Architecture. A metapattern. | ITNEXT

L'architecture hexagonale, également connue sous les noms de Ports et Adapters, Onion Architecture, ou Clean Architecture, est un modèle architectural qui vise à protéger le code métier des dépendances externes. Elle utilise des adapteurs pour encapsuler les dépendances externes, permettant ainsi une indépendance totale du code métier. Les avantages incluent la facilité de développement et de test, la protection contre le vendor lock-in, et la possibilité de changer les implémentations externes tardivement. Cependant, cette architecture peut entraîner une phase de conception plus longue et des pertes d'opportunités d'optimisation. Elle est particulièrement adaptée aux modules de taille moyenne ou plus grands, aux projets longs, et aux environnements multiplateformes. Elle est moins adaptée aux petits modules ou aux projets nécessitant un démarrage rapide.

CSS Relative Colors

Les CSS Relative Colors permettent de manipuler dynamiquement les couleurs sans recourir à des préprocesseurs comme Sass. Ils offrent une méthode native pour ajuster l'opacité et créer des variations de couleurs directement en CSS. Cette fonctionnalité est supportée par les principaux navigateurs et permet de simplifier la gestion des couleurs dans les projets web. Les couleurs relatives utilisent des fonctions comme rgb() et hsl() pour modifier les canaux de couleur, facilitant ainsi la création de thèmes et d'effets visuels cohérents. Elles peuvent également être combinées avec color-mix() pour des ajustements plus complexes, offrant une flexibilité accrue dans le design web.

Expansion automatique des alias dans Zsh

Tout est dans le titre

VictoriaLogs

L'article traite de l'agrégation de logs avec VictoriaLogs, une solution de centralisation des logs compatible avec Grafana et Prometheus. L'auteur explique comment il a découvert le problème de consommation de mémoire des processus logmon de Nomad et a cherché une solution plus efficace pour gérer les logs dans un environnement auto-hébergé avec des ressources limitées.

L'article conclut sur une note positive concernant l'efficacité de VictoriaLogs pour la gestion des logs dans un environnement limité en ressources.

SOLID - The Simple Way To Understand - DEV Community

Tout est dans le titre

Filtrage des conteneurs Docker sur Debian avec Firewalld et Salt | Kartzone

L'article explique comment filtrer les conteneurs Docker en entrée et en sortie sur une machine Debian utilisant Firewalld et Salt. Voici un résumé succinct :

  1. Objectif : Filtrer l'accès aux conteneurs Docker en utilisant les "zones" et "policies" de Firewalld.

  2. Problématique : L'intégration de Firewalld avec Docker ne permet pas un filtrage granulaire des conteneurs. La solution proposée est de désactiver l'intégration iptables dans Docker et de configurer Firewalld pour gérer la publication des conteneurs.

  3. Prérequis : Un serveur Salt avec les formules docker-formula et firewalld-formula.

  4. Configuration :

    • Exemple de configuration Salt pour déployer une image Docker de Shaarli et filtrer les accès.
    • Configuration de Firewalld pour gérer les zones et les politiques de filtrage.
  5. Commandes Utiles :

    • Commandes pour lister les zones et politiques Firewalld, ainsi que pour vérifier les configurations de nftables et iptables.

L'article fournit des exemples de configurations et des commandes pour mettre en place ce filtrage.

Alan Turing’s Secret “Delilah” Project - IEEE Spectrum

L'article révèle l'histoire méconnue du projet secret "Delilah" d'Alan Turing, un système de cryptage vocal portatif développé pendant la Seconde Guerre mondiale. Les documents récemment vendus aux enchères, connus sous le nom de "papiers Bayley", détaillent ce projet top-secret mené par Turing et son assistant Donald Bayley. Delilah, composé de trois petites unités, visait à miniaturiser le cryptage vocal, une avancée significative par rapport aux systèmes de cryptage de texte existants. Bien que le projet ait été abandonné après la guerre, il démontre les compétences de Turing en ingénierie électrique et sa contribution à la cryptographie moderne.

L’énigme de l’eau dans le vin et du vin dans l’eau - Couleur-Science

Tout est dans le titre

Organizing Your Go Code: Tips for Beginners | Jakub Jarosz

Tout est dans le titre

LHDG24. Prestidigitateur ou sorcier ? | Grise Bouille

Un récit pas si imaginaire que ça

Une histoire d’onduleurs | Le blog de Zythom

Une belle enquête ^^

Une petite surprise à propos de max en CSS - Nicolas-Hoffmann.net

En résumé, si les valeurs comparées dans max sont un calcul et qu'un de ces calculs échoue, l'intégralité de max échoue... donc il vaut mieux entourer le calcul par un @supports

Des objets autovalidants avec le "Self-Validating Object" pattern

Tout est dans le titre

Clean Architecture on Frontend - DEV Community

L'article explique ce qu'est l'architecture propre, comment l'utiliser avec des bases de code JS/TS et si cela en vaut vraiment la peine. Il décrit les concepts de domaine, de cas d'utilisation et de couches d'application, et discute de leur application au frontend. L'article inclut également des exemples de code et des liens vers des ressources utiles.

Adding PHP Function to Symfony ExpressionLanguage, The Simple Way 👌 - JoliCode

Tout est dans le titre

La dette technique : une supercherie mythologique pour galériens de l’IT | by Quentin ADAM | Medium

Cet article explore de manière satirique et critique le concept de “dette technique” dans le développement logiciel.

GitHub - Dokploy/dokploy at dailydev

Dokploy est un PaaS (Platform as a Service) auto hébergeable qui simplifie le déploiement et la gestion d'applications et bases de données.

Authentication and Authorization Best Practices

L'article traite des meilleures pratiques en matière d'authentification et d'autorisation, en particulier dans le contexte des API. Voici un résumé des points clés :

  1. Authentification :

    • HTTP Basic Authentication : Méthode simple mais peu sécurisée, utilisable uniquement dans des environnements très contrôlés ou pour des tests locaux.
    • Clés API : Doivent être traitées comme des mots de passe, transmises via HTTPS et régulièrement renouvelées.
    • JSON Web Token (JWT) : Plus sécurisé que les méthodes précédentes, mais nécessite une étape de connexion initiale. Idéal pour les applications web nécessitant une authentification utilisateur.
    • OpenID Connect (OIDC) : Ajoute une couche d'authentification à OAuth 2.0, permettant une intégration sécurisée des identités sur Internet.
    • Authentification Multi-Facteurs (MFA) : Renforce la sécurité en exigeant plusieurs facteurs d'authentification.
  2. Autorisation :

    • OAuth 2.0 : Mécanisme d'autorisation basé sur des jetons, permettant aux utilisateurs de donner accès à leurs données à des applications tierces sans partager leurs identifiants.
    • Contrôle d'Accès Basé sur les Rôles (RBAC) : Assigne des permissions basées sur les rôles des utilisateurs.
    • Contrôle d'Accès Basé sur les Attributs (ABAC) : Permet un contrôle plus fin en se basant sur les attributs des utilisateurs, des ressources et de l'environnement.
    • Contrôle d'Accès Basé sur les Politiques (PBAC) : Combine les rôles et les politiques pour déterminer les privilèges d'accès.
  3. Meilleures Pratiques :

    • Utiliser HTTPS pour chiffrer les communications.
    • Stocker les identifiants sensibles de manière sécurisée.
    • Appliquer le principe du moindre privilège.
    • Valider toutes les entrées utilisateur pour prévenir les attaques par injection.
    • Limiter le nombre de requêtes pour éviter les abus.
    • Surveiller et journaliser les activités pour détecter les comportements suspects.
  4. Erreurs Courantes à Éviter :

    • Utiliser HTTP au lieu de HTTPS.
    • Stocker les clés API dans le code.
    • Ne pas valider les entrées utilisateur.
    • Ignorer les bonnes pratiques de sécurité.

L'article souligne l'importance de rester à jour sur les menaces de sécurité et de suivre les meilleures pratiques pour garantir la sécurité des API.

Composer : comment arrêter de coder comme en 2009  • Lecodeestdanslepre

L'article explique comment Composer, un outil de gestion des dépendances PHP, peut transformer un projet PHP désorganisé en un environnement de développement propre et efficace. Avant Composer, les développeurs téléchargeaient manuellement des bibliothèques, souvent obsolètes et mal intégrées, ce qui entraînait des projets chaotiques et difficiles à maintenir. Composer simplifie l'installation et la gestion des dépendances via des commandes simples, garantissant que les bibliothèques sont à jour et compatibles. Il utilise des fichiers comme composer.json et composer.lock pour gérer les versions et assurer la cohérence des environnements de développement. L'article souligne également l'importance de ne pas utiliser composer update de manière imprudente et met en avant des fonctionnalités avancées comme l'autoloading et la gestion des versions multiples. En somme, Composer est présenté comme un outil indispensable pour moderniser et professionnaliser le développement PHP.

Docker et les containers : parce-qu'il faut expliquer avec des pancakes  • Lecodeestdanslepre

L'article explique Docker et les conteneurs en les comparant à des pancakes. Sans Docker, les applications partagent le même serveur, créant des conflits comme mélanger tous les ingrédients dans une seule cuisine. Docker isole chaque application dans un conteneur, assurant une isolation totale et évitant les conflits. Les images Docker sont des recettes, et les conteneurs des pancakes en cours de cuisson. Docker Compose gère plusieurs conteneurs, les volumes conservent les données, et les réseaux facilitent la communication entre conteneurs. L'article souligne les avantages de Docker pour le déploiement et la gestion des applications.

Building a Network Vulnerability Scanner with Go — SitePoint

L'article explique comment créer un scanner de vulnérabilités réseau simple mais robuste en utilisant le langage Go. Le projet commence par la configuration d'un outil en ligne de commande capable de scanner des hôtes réseau, détecter les ports ouverts, identifier les services en cours d'exécution et découvrir d'éventuelles vulnérabilités. Le scanner évolue avec l'ajout de fonctionnalités comme le scan multithreadé, la détection de services et l'identification des vulnérabilités. L'auteur insiste sur les considérations éthiques et légales du scan réseau et fournit des exemples de code pour chaque étape du développement.

How Symfony Flex Works - DEV Community

Symfony Flex est un outil puissant qui simplifie la gestion des projets Symfony en modifiant les commandes Composer comme require, update, et remove. Il permet d'ajouter de nouvelles fonctionnalités rapidement grâce à des "recipes" qui automatisent la configuration des bundles et des dépendances. Flex optimise également la structure des projets Symfony en ne incluant que les dépendances critiques, ce qui rend les projets plus légers et plus faciles à maintenir. En résumé, Symfony Flex améliore le flux de travail des développeurs en automatisant les tâches courantes et en assurant une configuration cohérente des projets Symfony.

Tutoriel Proxmox VE 8 - SDN en mode VXLAN avec des machines sur Internet

Ce tutoriel complète une série d'articles sur Proxmox VE 8 en expliquant comment configurer un réseau SDN en mode VXLAN pour des machines distantes sur Internet. L'objectif est de permettre aux machines virtuelles (VM) de communiquer comme si elles étaient sur le même LAN, malgré leur éloignement géographique.

L'auteur utilise WireGuard pour établir un VPN sécurisé entre les serveurs, car VXLAN seul ne chiffre pas les trames. Il détaille les étapes de configuration du VPN et du SDN VXLAN, en insistant sur l'importance de la MTU pour éviter la fragmentation des paquets.

Bien que le DHCP automatique ne soit pas supporté pour les zones VXLAN, l'auteur montre comment créer et appliquer un réseau virtuel, permettant finalement aux VM de se pinguer entre elles.

Rook chiffré et kubelet conteneurisé, kamoulox ?

Dans cet article, Quentin JOLY partage ses expériences et défis rencontrés en activant le chiffrement des OSDs (Object Storage Daemons) avec Rook sur une infrastructure Kubernetes utilisant Talos. Il explique les complexités liées à la gestion des clés de chiffrement et les différences de montage des volumes entre les pods OSD et les CronJobs de rotation des clés. Une solution astucieuse est proposée pour résoudre les problèmes d'accès aux fichiers nécessaires pour la rotation des clés.

Accessibilité & animations : laisser la main à l'utilisateur avec prefers-reduced-motion

Cet article explore l'importance de prendre en compte les préférences des utilisateurs en matière d'animations sur les sites web, notamment grâce à la propriété CSS prefers-reduced-motion. Intégrée dans les navigateurs entre 2018 et 2020, cette préférence permet aux utilisateurs de réduire ou de supprimer les animations non essentielles, améliorant ainsi l'accessibilité pour ceux qui peuvent être gênés par les mouvements à l'écran. L'article explique comment utiliser cette propriété en CSS et JavaScript pour adapter les interfaces en fonction des préférences des utilisateurs, tout en fournissant des exemples de code pratiques.

Déploiement d'un cluster Proxmox VE 8 sur des serveurs dédiés (3/4)

Tout est dans le titre

Déployer CSP : une approche en 5 étapes - Alsacreations

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.

IPv6 en 2025 : État des lieux et stratégies de transition

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

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.

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

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.

Stop Using URL Versioning: 3 RESTful API Best Practices Top Companies Swear By (With Code) | Javarevisited

L'auteur explique qu'il a récemment dû mettre à jour son API vers une nouvelle version tout en maintenant l'ancienne pour les clients existants. Il a d'abord pensé à utiliser /v1/products pour la version actuelle et /v2/products pour la nouvelle, mais cette approche viole les principes REST et complique la maintenance. Les URL versionnées créent un couplage serré avec les clients, rendant difficile la gestion des versions obsolètes et entraînant une duplication de code. Une alternative RESTful consiste à utiliser les en-têtes HTTP pour négocier les versions, ce qui permet de maintenir des URI stables et de faciliter la compatibilité ascendante. Cependant, cette méthode nécessite que les clients configurent les en-têtes, ce qui peut être non trivial avec certains outils ou bibliothèques.

How Postgres stores data on disk – this one's a page turner | drew's dev blog

L'article explique comment PostgreSQL stocke les données sur le disque. Il commence par introduire les concepts de base des moteurs de bases de données relationnelles et se concentre sur PostgreSQL, en raison de sa popularité parmi les développeurs. L'auteur utilise un exemple pratique pour illustrer la structure des données dans PostgreSQL, en montrant comment les tables et les index sont organisés en segments et en pages. Il mentionne également que PostgreSQL utilise des fichiers de données pour stocker les informations de la base de données, et que ces fichiers peuvent être copiés pour créer des sauvegardes. L'article souligne l'importance de comprendre ces mécanismes internes pour optimiser les performances et la gestion des bases de données .

Le mythe de la neutralité : Pourquoi la tech est politique

L'article explore en quoi la technologie est intrinsèquement politique. Il soutient que la technologie n'est pas neutre, car elle implique des choix qui ont des impacts sociétaux. Par exemple, les algorithmes de reconnaissance faciale ont montré des biais raciaux, et les réseaux sociaux sont utilisés comme des armes politiques. Les décisions de conception technologique, comme l'accessibilité des applications, excluent souvent certaines populations, ce qui est un choix politique. De plus, le financement de la technologie suit des logiques capitalistiques ou politiques, influençant ainsi les innovations qui voient le jour. L'auteur appelle les professionnels de la tech à reconnaître et à discuter des conséquences de leurs choix, car la neutralité est en soi un choix politique.

Alternatives aux apps préinstallées sur la plupart des smartphones Android

Tout est dans le titre

Sauvegarder ses données vers un NAS Synology avec BorgBackup - FLOZz' Blog

Tout est dans le titre

La signification et l'histoire du nom Git

Tout est dans le titre

Connaissez-vous le temps de reboot de vos machines ?

L'article aborde l'importance de connaître le temps de redémarrage des machines et de s'assurer que les équipements et services reprennent correctement après un reboot. Il soulève des questions sur la fréquence des redémarrages et leur impact sur la disponibilité des services. L'article met en avant la nécessité de tester régulièrement les procédures de redémarrage pour garantir la résilience des systèmes et minimiser les interruptions.

Should You Quit? Ask These Four Questions First - Scott H Young

L'article explore la question de savoir quand abandonner un projet ou une activité. Il souligne que, bien que de nombreux conseils se concentrent sur ce qu'il faut entreprendre, il est tout aussi crucial de savoir quand arrêter. Voici les points clés :

  1. Évaluation des coûts futurs :

    • Il est important de considérer uniquement les coûts et bénéfices futurs, en ignorant les investissements passés (coûts irrécupérables). Par exemple, décider de poursuivre un diplôme en comptabilité ou de changer pour l'ingénierie doit se baser sur les efforts futurs nécessaires, pas sur le temps déjà investi.
  2. Planification des points de sortie :

    • Définir à l'avance des moments pour réévaluer l'abandon d'un projet peut aider à éviter les décisions impulsives. Cela permet de prendre des décisions plus rationnelles, en évitant les influences émotionnelles immédiates.
  3. Considérer la réalité des alternatives :

    • Les nouvelles opportunités peuvent sembler plus attrayantes que les projets actuels en raison d'une vision idéalisée. Il est utile de tester brièvement ces alternatives pour en comprendre les défis réels avant de prendre une décision.
  4. Respecter ses valeurs :

    • Établir des règles claires sur ce qui justifie l'abandon, comme lorsque les valeurs personnelles ne sont plus alignées avec le projet. Il est crucial de ne pas persister dans des situations qui vont à l'encontre de ses principes ou qui ont des coûts disproportionnés par rapport aux bénéfices.

L'article conclut que bien que chaque situation soit unique, avoir un processus réfléchi pour décider quand abandonner peut conduire à de meilleures décisions.

Streamline Symfony error tracking with GlitchTip

Tout est dans le titre

Custom PHPStan Rules to Improve Every Symfony project | Tomas Votruba

Tout est dans le titre

Vous voulez un blog ? C'est comme si c'était fait !

L'article encourage les lecteurs à se lancer dans la création de blogs. L'auteur, passionné par la consommation de contenu de blogs, constate une baisse du nombre de personnes se lançant dans l'écriture d'articles. Il propose un guide pour créer un blog sans dépenser d'argent pour l'hébergement.

Voici les étapes clés :

  1. Inventaire des besoins :

    • Un domaine (optionnel)
    • Du contenu à stocker
    • Un support pour modifier le site (sans HTML/CSS brut)
    • Un hébergeur gratuit
  2. Choix technologiques :

    • Utilisation de Markdown pour écrire les articles
    • Utilisation d'un générateur de site statique comme Hugo
    • Hébergement gratuit via Cloudflare Pages
  3. Étapes pratiques :

    • Initialisation du site avec Hugo
    • Installation d'un thème (ex. PaperMod)
    • Configuration de Git pour sauvegarder le projet
    • Mise en place d'un pipeline CI/CD pour déployer automatiquement le site sur Cloudflare Pages

L'auteur recommande Hugo pour sa simplicité et son efficacité, et fournit des instructions détaillées pour configurer l'hébergement et le déploiement automatique. Le but est de rendre la création de blogs accessible à tous, même aux débutants.

Imposer nos standards de qualité à l'IA

L'article explore comment intégrer l'IA dans le développement logiciel tout en maintenant des normes de qualité élevées. Il souligne que bien que l'IA puisse générer du code rapidement, la qualité, la cohérence architecturale et la maintenance à long terme restent des défis.

L'article propose d'utiliser des tests comme contrats pour guider l'IA, en s'inspirant du Test-Driven Development (TDD) et de l'architecture hexagonale. Les tests fournissent un langage formel et sans ambiguïté, permettant à l'IA de mieux comprendre les attentes. En intégrant ces tests dans le processus de développement, l'IA peut itérer sur le code jusqu'à ce que tous les tests soient réussis, assurant ainsi une meilleure qualité du produit final.

L'article conclut que l'expertise humaine reste cruciale pour utiliser efficacement l'IA dans le développement logiciel, notamment en matière de principes algorithmiques et de gestion de projet.

Qu'est-ce qu'une transaction ACID ? Un guide complet pour les débutants | DataCamp

L'article présente ce que sont les transactions ACID.

Les transactions ACID sont un ensemble de principes garantissant la fiabilité des transactions dans les bases de données. ACID signifie Atomicité, Cohérence, Isolation et Durabilité. Ces propriétés assurent que les transactions sont complètes, maintenant l'intégrité des données même en cas de panne. L'atomicité garantit qu'une transaction est entièrement exécutée ou pas du tout, la cohérence maintient la base de données dans un état valide, l'isolation empêche les interférences entre transactions, et la durabilité assure que les modifications sont permanentes une fois la transaction terminée.

Les transactions ACID sont cruciales dans des domaines comme la finance et le commerce électronique, où l'intégrité des données est primordiale. Cependant, elles peuvent poser des défis en termes de performance et d'évolutivité, surtout dans les systèmes distribués. Les bases de données NoSQL, en revanche, adoptent souvent le modèle BASE (Basically Available, Soft state, Eventual consistency), privilégiant la disponibilité et la flexibilité à la cohérence stricte.

Pour optimiser les transactions ACID, il est recommandé de limiter leur portée, d'utiliser des transactions plus petites, et de choisir des niveaux d'isolation appropriés. La surveillance et l'enregistrement des transactions sont également essentiels pour maintenir les performances du système.

How OWASP Helps You Secure Your Full-Stack Web Applications — Smashing Magazine

L'article de Smashing Magazine explore comment l'OWASP (Open Web Application Security Project) aide à sécuriser les applications web full-stack en se concentrant sur les dix principales vulnérabilités identifiées par l'OWASP. Voici un résumé des points clés abordés :

  1. Introduction à l'OWASP Top 10 :

    • L'OWASP Top 10 est une liste des vulnérabilités les plus courantes, compilée par des experts en sécurité. Elle sert de guide pour les développeurs web cherchant à renforcer la sécurité de leurs applications.
  2. Vulnérabilités Présentées :

    • Server-Side Request Forgery (SSRF) : Permet à un attaquant d'exploiter le serveur pour effectuer des requêtes non autorisées.
    • Échecs de Journalisation et de Surveillance de la Sécurité : Importance de la journalisation des transactions critiques pour détecter et corriger les problèmes de sécurité.
    • Échecs de l'Intégrité des Logiciels et des Données : Risques liés aux attaques de la chaîne d'approvisionnement et aux dépendances obsolètes.
    • Échecs d'Identification et d'Authentification : Prévention des attaques par force brute et importance des pare-feu d'applications web (WAF).
    • Composants Vulnérables et Obsolètes : Nécessité de maintenir les dépendances à jour pour éviter les vulnérabilités connues.
    • Mauvaise Configuration de la Sécurité : Importance de configurer correctement les en-têtes HTTP et autres paramètres de sécurité.
    • Conception Non Sécurisée : Les mauvaises pratiques de codage peuvent introduire des vulnérabilités difficiles à détecter.
    • Injection : Risques liés aux injections SQL et JavaScript, et comment les prévenir.
    • Échecs Cryptographiques : Importance de l'utilisation correcte des algorithmes de cryptographie pour protéger les données sensibles.
    • Contrôle d'Accès Défectueux : Assurer que les utilisateurs ne peuvent accéder qu'aux ressources autorisées.
  3. Conseils Pratiques :

    • Utiliser des outils de surveillance et d'analyse pour détecter les vulnérabilités.
    • Appliquer des pratiques de codage sécurisé et comprendre les configurations de sécurité.
    • Se tenir informé des vulnérabilités courantes et des meilleures pratiques en matière de sécurité.
  4. Ressources Supplémentaires :

    • L'article fournit des liens vers des ressources supplémentaires pour approfondir chaque vulnérabilité et des outils pour aider à sécuriser les applications web.

L'article met en lumière l'importance de la sécurité dans le développement web et comment l'OWASP Top 10 peut servir de guide pratique pour identifier et atténuer les vulnérabilités courantes dans les applications full-stack.

La Content Security Policy (CSP pour les intimes)  • Lecodeestdanslepre

L'article explique la Content Security Policy (CSP) comme un mécanisme de sécurité essentiel pour les sites web, agissant comme un videur strict qui contrôle les contenus autorisés à s'exécuter. La CSP est configurée via un en-tête HTTP qui spécifie les sources autorisées pour les scripts, styles, images, etc. Elle protège contre les attaques XSS, clickjacking, et autres injections malveillantes en bloquant les contenus non autorisés. L'article détaille comment configurer la CSP dans un fichier nelmio_security.yaml, en définissant des directives comme default-src, script-src, et style-src pour restreindre les sources de contenu. Il souligne également l'importance de tester la CSP en mode report-only pour identifier les violations sans impacter les utilisateurs.

Les tests, ou bien comment jouer au Cluedo  • Lecodeestdanslepre

L'article compare les tests unitaires au jeu Cluedo, où chaque ligne de code est un suspect potentiel. En utilisant PHPUnit, les développeurs peuvent identifier les bugs comme des crimes à résoudre. L'article explique comment les tests, notamment avec PHP 8.4, permettent de vérifier chaque combinaison possible pour éviter les erreurs en production. Le Test-Driven Development (TDD) est présenté comme une méthode préventive, où les tests sont écrits avant le code pour anticiper les problèmes. L'article souligne l'importance des mocks et des doublures pour simuler les dépendances externes et assure que les tests sont essentiels pour maintenir la qualité du code et dormir tranquille.

Utilisation d'un Git Credential Helper Oauth sur Debian et WSL avec Gitlab | Kartzone

Cet article explique comment configurer un "git credential helper" OAuth sur Debian et Microsoft WSL pour se connecter à GitLab, évitant ainsi de stocker des mots de passe ou des jetons d'accès personnels. Pour Debian, il utilise git-credential-oauth, tandis que pour WSL, il utilise le "Git Credential Manager" inclus avec "Git for Windows". Des instructions détaillées sont fournies pour chaque environnement, y compris la configuration pour des instances GitLab auto-hébergées.

L'injection de dépendance, ou comment être fainéant avec élégance  • Lecodeestdanslepre

L'article explore le concept d'injection de dépendance dans Symfony. Il explique comment cette technique permet de simplifier le développement en automatisant la gestion des services, rendant le code plus propre et maintenable. L'auteur compare l'injection de dépendance à un assistant personnel qui apporte tout ce dont vous avez besoin sans effort, soulignant les avantages comme l'autowiring, les services tagués, et la facilité des tests unitaires. Il insiste sur l'importance de déléguer ces tâches à Symfony pour se concentrer sur l'essentiel du développement, tout en assurant une meilleure performance et une réduction des erreurs.

Using service facades in a Symfony application — part 1 | by Thierry Feuzeu | Mar, 2025 | Medium

Les développeurs Symfony sont souvent réticents à l'idée d'utiliser des façades de service, les confondant avec des classes statiques et craignant qu'elles introduisent un état global. Cependant, les façades de service sont en réalité une forme d'injection de dépendances, offrant flexibilité et personnalisation sans ajouter de dépendance supplémentaire au conteneur de services. Elles permettent aux classes d'appeler dynamiquement des services lorsqu'elles en ont besoin, tout en restant liées au framework utilisé.

Évolution de mon homelab - MiniRack

On découvre l'évolution du homelab de l'auteur, de l'utilisation d'un serveur dédié OVH à la création d'un setup organisé avec un rack 10 pouces. Ce parcours inclut l'intégration de Kubernetes, Talos, et diverses machines comme des Raspberry Pi et un Mac Mini, le tout géré efficacement pour héberger des applications quotidiennes.

Générer un flux RSS pour quasiment n'importe quel site web

Cet article explique comment créer des flux RSS pour des sites web qui n'en proposent pas, en utilisant l'outil open source RSS-Proxy. Les flux RSS permettent de suivre les mises à jour d'un site sans dépendre d'algorithmes ou de plateformes spécifiques. RSS-Proxy analyse la structure HTML d'un site pour générer un flux RSS ou Atom, accessible via n'importe quel lecteur de flux. L'article détaille les étapes d'installation de RSS-Proxy avec Docker et explique comment configurer un réseau pour que le lecteur de flux puisse accéder aux flux générés. Une brève histoire des flux web et des formats RSS, Atom et JSON est également présentée.

Le legal design : qu'est-ce que c'est ?

Le legal design est une approche qui applique les principes du design centré sur l'humain pour rendre les systèmes, services et documents juridiques plus compréhensibles et accessibles. L'objectif est de permettre à tous, experts ou non, de mieux comprendre et utiliser les informations légales. L'article explore les enjeux du legal design dans la fonction publique, notamment pour simplifier l'analyse des documents juridiques et adresser des messages clairs à divers profils techniques. Des techniques concrètes sont présentées, comme la structuration de l'information dans les contrats, l'utilisation d'un langage clair et la contextualisation des informations. Plusieurs exemples de projets utilisant le legal design illustrent son impact positif sur la compréhension et l'autonomisation des utilisateurs.

Vous êtes fatigués ?

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.

CSS Animation with offset-path

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.

What is WebLLM - iO tech_hub

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.

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.

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

Installer WSL pour utiliser Linux dans Windows

Tout est dans le titre

Simple Input Validation with Symfony Live Components | by Stefan Pöltl | Mar, 2025 | Medium

Vous créez une application Symfony, et vous avez un petit formulaire. Vous souhaitez ne pas construire un formulaire Symfony (trop lourd). L'auteur montre une fonctionnalité très sympathique des Symfony Live Components : le "ValidatableComponentTrait"

Log Strategy For A Symfony/PHP Project | by laurentmn | Feb, 2025 | Medium

L'auteur explore 3 catégories de log : log depuis l'application (avec Monolog), depuis le langage de programmation (PHP) et depuis le serveur web (Nginx)

Pimentez vos progressions d’accords avec les notes pédales

Tout est dans le titre

Optimisation des Coding Agents : Choisir son modèle (1/2)

L'article explore les défis et les considérations pour sélectionner le bon modèle de Coding Agent afin d'optimiser les projets de développement. Il souligne que bien que les Coding Agents accélèrent les projets, il est crucial de comprendre leurs implications sur la qualité et les coûts. L'auteur discute des différents modèles disponibles, comme Claude Sonnet 3.7 et Deepseek R1, en mettant en lumière leurs performances et leurs limitations respectives. Il insiste sur l'importance de métriques telles que le nombre de tokens, la taille de la fenêtre de contexte, le coût par token, et la latence pour faire un choix éclairé. Enfin, il mentionne l'importance de la communauté et des "vibes" dans la sélection d'un modèle, tout en soulignant que la maîtrise des outils associés est essentielle pour une utilisation optimale des Coding Agents.

Open Source API Testing Tools: RestAssured, Bruno, SoapUI

L'article présente une liste d'outils open source pour le test d'API, essentiels dans les architectures modernes basées sur les microservices. Il explique les différents protocoles comme SOAP, REST et GraphQL, et les critères techniques pour choisir un outil de test d'API. Parmi les outils mentionnés, on trouve Airborne, APIAuto, Apickli, ArexTest, Bruno, Dredd, Firecamp, Frisby, Insomnia, mountebank, RestAssured, Schemathesis, SoapUI, SuperTest et Tavern. Chaque outil a ses propres caractéristiques et avantages, comme la facilité d'utilisation, la compatibilité avec divers langages de programmation, et l'intégration avec les processus de développement et de livraison de logiciels.

Les tests automatisés à eux seuls ne garantissent pas le bon fonctionnement de vos applications

Tout est dans le titre

Après photorec - LinuxFr.org

Après avoir récupéré 432 Go de données avec Photorec suite à un formatage accidentel, l'auteur a trié et réduit les 150 159 fichiers récupérés en supprimant les fichiers de programmation, les miniatures JPEG, et les fichiers redondants, tout en identifiant les fichiers récents pour faciliter la recherche des données importantes, concluant que Photorec est un outil précieux mais nécessitant un tri minutieux des fichiers récupérés.

Gérer efficacement vos dépôts avec git sparse-checkout - Informatique générale - ShevArezo`Blog

Tout est dans le titre

Aggregates et Eventual Consistency - Ancyr Academy

L'article traite de la modélisation des invariants métiers dans le cadre du Domain-Driven Design (DDD) et de l'importance des agrégats (Aggregates). Il aborde la complexité de maintenir ces invariants, notamment lorsque les règles métiers deviennent plus complexes. L'exemple donné est celui d'une application e-commerce où la quantité de produits par commande est limitée. L'article explore deux approches pour gérer ces invariants : une approche simple où l'invariant est vérifié au niveau de l'objet LineItem, et une approche plus complexe nécessitant la dénormalisation des données pour garantir la cohérence éventuelle (Eventual Consistency). Cette dernière méthode implique de dupliquer certaines informations pour éviter des transactions lourdes et potentiellement bloquantes. L'article souligne également l'importance de la discussion avec les experts métiers pour définir les règles de gestion des invariants et introduit le concept de Job Queue pour assurer la mise à jour asynchrone et robuste des données. En conclusion, la complexité de la solution dépend de la volumétrie des données et des exigences métiers.

Connecter un interrupteur en Zigbee, pour moins de 4€ - ~/quent1.fr

L'article décrit un hack économique pour intégrer des interrupteurs sans fil dans un système domotique Home Assistant en utilisant des capteurs Zigbee bon marché. L'auteur explique comment il a transformé des capteurs d'ouverture Zigbee achetés pour environ 3€ chacun en interrupteurs connectés, évitant ainsi des solutions coûteuses comme le Hue Wall Switch Module de Philips.

L'auteur conclut que ce hack est simple, efficace, et économique, permettant d'éviter des dépenses inutiles pour des solutions plus onéreuses.

Firefox et consoles NOVNC Proxmox, VMware Horizon : corriger le layout clavier azerty - Wiki - Wiki

L'article explique comment résoudre un problème de disposition de clavier (azerty) lors de l'utilisation de consoles NoVNC dans Proxmox ou VMware Horizon via Firefox. Le souci vient des paramètres de sécurité renforcée de Firefox, notamment l'option "ResistFingerprinting".

Deux solutions sont proposées :

  1. Désactiver l'option "ResistFingerprinting" :

    • Aller dans about:config et mettre la clé privacy.resistFingerprinting à false.
  2. Ajouter des exceptions pour certains domaines :

    • Laisser privacy.resistFingerprinting à true et ajouter les domaines problématiques dans privacy.resistFingerprinting.exemptedDomains.

Ces ajustements permettent de conserver la disposition azerty du clavier sans redémarrer Firefox.

SEO pour un SAAS quand t'es tout seul (et sans budget)

L'article aborde les défis et stratégies pour promouvoir un logiciel en tant que service (SaaS) sans budget marketing. L'auteur partage sa propre expérience avec son produit Blogtally, soulignant l'importance du SEO pour attirer du trafic à long terme.

Il décrit plusieurs piliers de sa stratégie :

  1. Blog du SaaS : Conçu pour répondre aux questions des utilisateurs et attirer des prospects via les moteurs de recherche.
  2. Blog personnel : Utilisé pour partager son parcours et attirer du trafic grâce à la transparence (Build In Public).
  3. Forums et réseaux sociaux : Participer activement pour apporter de la valeur et mentionner son outil de manière pertinente.
  4. Backlinks : Inscription dans des annuaires d'applications pour améliorer le référencement.
  5. Ressource de référence : Création d'un "blog starter kit" pour attirer un trafic qualifié et générer des backlinks naturellement.

L'auteur conclut en soulignant les erreurs à éviter, comme l'inaction et l'impatience, et envisage d'explorer d'autres stratégies marketing à l'avenir.

uBlock Origin n'est pas un adblocker — MiddleEarth

Rien à ajouter, la pub c'est une faille de sécurité

L'art des animations d'entrée avec CSS @starting-style - Alsacreations

Tout est dans le titre

How To Fix Largest Contentful Issues With Subpart Analysis — Smashing Magazine

Tout est dans le titre

Problème de géométrie (Debian 1.3 sur VirtualBox ≥ 7.1.2)

C'est surtout la démarche pour résoudre ce problème qui est intéressante... et la conclusion de l'article :)

Grouping Selection List Items Together With CSS Grid | CSS-Tricks

Tout est dans le titre

stdlib-js/stdlib: ✨ Standard library for JavaScript and Node.js. ✨

Une bibliothèque de fonctions pour JavaScript / Node.js : mathématiques, probabilités, générateurs de nombres pseudo aléatoires, transformations de données, assertions, etc.

My sales pitch for TypeScript

L'article explique les avantages de TypeScript par des exemples

Laravel France - Automatisez vos tests avec GitHub Actions

Tout est dans le titre

lorenzofox blog | Pub/Sub with Postgres logical replication and Nodejs

L'article fournit un guide complet pour configurer et optimiser la réplication logique Pub/Sub dans PostgreSQL, en mettant l'accent sur la flexibilité et la fiabilité du système.

GDPR Made Easy: Automating Anonymization in Symfony | by Vladislav Solntsev | ekino-france | Feb, 2025 | Medium

Tout est dans le titre

Doing in-place, single-node Postgres upgrades with almost no downtime · Stan's blog

Il y a un outil pour faire la mise à jour de Postgres : pg_upgrade

Learn Golang in 2025, You Won't Regret It - DEV Community

Une introduction au langage Go

GitHub - localtunnel/localtunnel: expose yourself

localtunnel permet d'exposer votre localhost à l'extérieur pour faciliter vos tests et partages.