Le Backend For Frontend (BFF) est un pattern architectural qui agit comme une couche intermédiaire entre les applications frontend (web, mobile, etc.) et les API ou microservices. Son objectif est de simplifier la récupération et la transformation des données en centralisant la logique d’agrégation et d’adaptation des données côté serveur, plutôt que de la laisser aux clients. Cela évite de surcharger les applications frontend avec des tâches complexes et permet d’offrir une réponse sur mesure, optimisée pour chaque type de client (mobile, web, etc.). Contrairement à une API Gateway, le BFF est dédié à un type spécifique de client, ce qui permet de mieux répondre à ses besoins en termes de format de données, gestion d’erreurs ou authentification. Ce pattern est particulièrement utile dans un contexte MACH (Micro Services, API-first, Cloud Native, Headless) ou lorsque les besoins des utilisateurs varient selon le type d’application, mais il ajoute une couche supplémentaire à maintenir et nécessite des compétences fullstack. Son adoption se justifie surtout si l’expérience utilisateur doit être différente selon les plateformes.
Ce dépôt présente les principaux design patterns avec des exemples en JavaScript
Il s'agit d'un comparatif de différentes bibliothèques de composants UI pour Vue / Nuxt
Résumé pour Shaarli :
Le Domain-Driven Design (DDD) peut sembler complexe pour les développeurs backend habitués à une approche "data-first" (comme avec Laravel ou Symfony), car il inverse la logique : au lieu de partir des données ou des outils, on organise le code autour du métier et de ses règles. Le DDD introduit des frontières claires (Domain, Application, Infrastructure) et un langage ubiquitaire pour aligner code et besoins business, ce qui casse les habitudes de développement procédural ou centré sur le framework. Les concepts clés comme les Bounded Contexts, Entities, Value Objects et Repositories aident à structurer le code pour le rendre plus maintenable et testable. La courbe d’apprentissage est raide car elle demande de passer d’une pensée technique à une pensée métier, mais même une adoption progressive apporte plus de clarté et de modularité. L’article propose une approche "DDD-lite" avec une structure de projet simple et suggère d’utiliser le BDD pour faciliter la transition en collaborant avec les experts métier. En résumé : le DDD, c’est avant tout des frontières et du vocabulaire partagé, pas de la magie architecturale.
EventCatalog est un outil open source qui comble un manque crucial dans les architectures orientées événements : la documentation claire et maintenable. En adoptant une approche "documentation-as-code", il permet de décrire et visualiser les messages (événements, commandes, requêtes), les canaux de communication, les domaines, services et entités (inspirés du Domain-Driven Design), ainsi que les équipes et le langage ubiquitaire. Intégrable avec des registres de schémas (OpenAPI, AsyncAPI, JSON, Avro), il automatise la génération de documentation interactive, facilitant la compréhension et la maintenance des systèmes asynchrones. Grâce à des fonctionnalités comme les graphes de dépendances, la visualisation des schémas et la gestion des équipes, EventCatalog rend accessible et vivante la complexité des architectures événementielles, tout en restant simple à déployer et à mettre à jour. Une solution idéale pour aligner documentation et développement, surtout dans des écosystèmes distribués.
Alexandre Touret partage son retour d’expérience sur un atelier d’Architecture Kata organisé lors de la Riviera Dev, où plus de soixante participants ont planché sur la conception d’une plateforme numérique dédiée au tourisme solidaire et durable. L’objectif était de proposer une solution intégrant profils utilisateurs éco-responsables, tableau de bord d’empreinte carbone, gamification et gestion d’activités locales, avec des contraintes techniques et métiers variées. L’article présente trois approches distinctes : deux propositions d’équipes (dont une très détaillée avec des diagrammes Structurizr) et la sienne, soulignant l’importance de clarifier les besoins métiers, de prioriser les flux principaux et d’externaliser les fonctions critiques (comme les paiements). L’exercice illustre la diversité des solutions possibles selon l’expérience des participants et rappelle que la pratique régulière des katas permet d’améliorer la prise de décision, la communication et l’adaptabilité en architecture logicielle. Une ressource utile pour quiconque s’intéresse à l’amélioration des compétences en design système.
La dette technique est inévitable dans tout projet logiciel, mais la clé réside dans sa gestion stratégique plutôt que dans son élimination totale. Cet article explique comment évaluer quand il est judicieux de réécrire du code (par exemple, avant d’ajouter une nouvelle fonctionnalité ou en cas de risques majeurs) et quand il vaut mieux la tolérer temporairement (lorsque le coût dépasse les bénéfices immédiats). L’auteur propose une matrice décisionnelle et des conseils pour convaincre les parties prenantes en traduisant l’impact technique en arguments business : gain de temps, réduction des risques, et amélioration de la vélocité d’équipe. L’objectif ? Équilibrer pression court terme et santé long terme du code, sans tomber dans le piège de la quête de perfection.
Sean Goedecke y explique que le bon design système repose sur la simplicité, la minimisation de l’état (state) et l’utilisation judicieuse de composants éprouvés (bases de données, caches, files d’attente, etc.). Un bon design se remarque surtout par son absence de problèmes et sa discrétion : si tout fonctionne sans accroc et semble plus simple que prévu, c’est souvent signe de réussite. L’auteur insiste sur l’importance de centraliser la gestion de l’état (via une base de données bien structurée et indexée), d’éviter la complexité inutile, et de privilégier des solutions robustes plutôt que des astuces sophistiquées. Les opérations lentes doivent être déléguées à des tâches en arrière-plan, et le cache utilisé avec parcimonie. Enfin, il souligne que les "hot paths" (chemins critiques) méritent une attention particulière, tout comme la journalisation et la gestion des échecs (killswitches, retries). En résumé, un bon design système est souvent invisible, mais efficace et maintenable sur le long terme.
Ce guide démystifie l’élément <path>
en SVG, souvent perçu comme complexe. À travers des exemples interactifs, il explique comment utiliser les commandes (M
, L
, Q
, C
, A
, etc.) pour dessiner des lignes, courbes de Bézier et arcs elliptiques, en enchaînant des instructions comme avec un stylo. Le guide couvre aussi les astuces (fermeture de chemin, commandes relatives) et montre comment créer des formes avancées, utiles pour le design et les animations web.
DuckDB est un système de gestion de base de données relationnelle (SGBD) en code ouvert, conçu pour être léger, rapide et analytique, optimisé pour les requêtes complexes sur des jeux de données de taille moyenne à grande directement depuis un seul fichier. Contrairement aux bases de données traditionnelles comme PostgreSQL ou MySQL, DuckDB fonctionne en mode embarqué (sans serveur), ce qui le rend idéal pour les analyses locales, les applications intégrées ou les environnements où la simplicité et la performance sont cruciales. Il prend en charge le langage SQL standard, offre des fonctionnalités avancées comme les jointures, les agrégations, les fenêtres analytiques, et intègre des extensions pour le traitement de données par lots ou en mémoire. Particulièrement apprécié dans les domaines de la science des données et de l’analyse interactive, DuckDB se distingue par sa capacité à traiter efficacement des fichiers Parquet ou CSV, tout en restant portable et facile à déployer. Son architecture sans dépendance externe et sa compatibilité avec de nombreux langages (Python, R, Java, etc.) en font un outil polyvalent pour les développeurs et les analystes cherchant à manipuler des données sans infrastructure lourde.
L’article explique comment moderniser un système de logging dans Symfony en remplaçant les déclencheurs (triggers) traditionnels par les événements Doctrine, une approche plus flexible et maintenable. L’auteure, Jinal Solanki, détaille les limites des triggers (dépendance à la base de données, manque de souplesse) et propose une solution basée sur les listeners Doctrine pour intercepter les opérations CRUD (Create, Read, Update, Delete) directement dans le code PHP. Cette méthode permet de centraliser la logique de logging, de faciliter les tests unitaires et d’éviter les effets de bord liés aux triggers SQL. Elle illustre la mise en œuvre avec des exemples concrets : création d’un EventSubscriber pour écouter les événements prePersist
, preUpdate
et preRemove
, puis enregistrement des changements dans une table dédiée. L’avantage principal est une meilleure intégration avec le code métier, une maintenance simplifiée et une indépendance vis-à-vis du SGBD. Une solution idéale pour rendre le logging évolutif et cohérent dans une architecture Symfony.
L’article présente l’utilisation de Make pour simplifier et standardiser les commandes courantes dans un projet Symfony, surtout en environnement Docker. L’auteur partage ses Makefiles personnalisés, qui permettent de lancer des tâches comme l’installation des dépendances (make composer
), l’exécution des tests (make test
), l’analyse statique (make static-analysis
), ou encore la gestion de la base de données (make db-reset
), le tout avec des paramètres optionnels pour l’environnement (env=prod
) ou des arguments supplémentaires (arg=--testdox
). Grâce à Make, les commandes Docker complexes deviennent simples et documentées (ex: make qa
pour lancer la vérification de code, l’analyse statique et les tests en une seule commande). L’article propose trois versions de Makefile : pour Docker Compose, Docker seul, et PHP natif, inspirées du projet symfony-docker. L’objectif est d’améliorer la productivité en évitant de retaper des commandes longues et en centralisant la documentation des tâches disponibles. Une solution élégante pour uniformiser les workflows entre projets Symfony.
L'auteur explore dans son article les valeurs méconnues de l’attribut href
des liens HTML. Par exemple, href="#"
fait défiler vers le haut (sauf si un élément id="top"
existe), tandis que href=""
recharge la page en gardant les paramètres de recherche mais supprime le fragment. Avec href="."
, la page est rechargée en supprimant à la fois les paramètres et le fragment, mais attention à la structure de l’URL pour éviter des comportements inattendus. href="?"
efface les paramètres et le fragment, mais conserve le ?
. On peut aussi utiliser href="data:"
pour créer des liens vers des données encodées directement dans l’URL, ou href="video.mp4#t=10,20"
pour cibler une plage temporelle dans un média. L’article rappelle aussi l’existence des protocoles comme mailto:
ou tel:
, ainsi que les fragments de texte (#:~:text=foo
). Une lecture utile pour exploiter pleinement les possibilités des liens en HTML.
Il s'agit d'une liste organisée de commandes slash, de fichiers CLAUDE.md, d'outils CLI, d'autres ressources et guides pour améliorer votre flux de travailavec Claude Code. Claude Code est un assistant de codage et un agent de pointe basé sur CLI auquel vous pouvez accéder dans votre terminal ou IDE. C'est un outil en évolution rapide qui offre un certain nombre de capacités puissantes, et permet de beaucoup de configuration, de nombreuses manières différentes.
L’attribut HTML hidden="until-found"
permet de masquer du contenu tout en le rendant accessible via la recherche dans la page (Ctrl+F
). Contrairement à display: none
ou visibility: hidden
, il utilise content-visibility: hidden
en interne, ce qui cache visuellement le contenu sans l’exclure des résultats de recherche. Utile pour des cas comme des accordéons ou des sections cachées, il est déjà supporté par Chrome, Firefox et bientôt Safari. Une alternative à <details>
pour des contenus masqués mais "trouvables", avec des polyfills possibles via le Shadow DOM en attendant une adoption universelle. Une future pseudo-classe ::search-text
pourrait même permettre de styliser les correspondances de recherche.
L’article explore l’utilisation de Claude Code, un outil basé sur des modèles de langage avancés, pour développer des applications complètes en "vibe coding" — une méthode où l’on crée du logiciel presque exclusivement en dialoguant avec une IA, sans éditer manuellement le code. L’auteur illustre cette approche en générant un clone simplifié de Splitwise en une seule requête, montrant comment une spécification claire et concise (comme un fichier SPEC.md) permet d’obtenir une application fonctionnelle en PHP, sans framework ni dépendances lourdes, contrairement à une version JavaScript surchargée et dysfonctionnelle. Il souligne l’importance de la qualité de l’input et de la simplicité technique pour maximiser l’efficacité de l’IA. L’article va plus loin en décrivant des expériences d’automatisation poussée : création d’une startup autonome sur un VPS, migration d’un projet Laravel en production, et développement rapide de petits outils (plugin HackerNews, générateur de posters, renommage de fichiers bancaires). Malgré des limites (incohérences, blocages par les politiques d’usage), l’auteur souligne le potentiel révolutionnaire de ces outils pour accélérer le développement, réduire la charge mentale et rendre la création logicielle accessible à tous, tout en rappelant que l’IA reste un "calculateur de mots" nécessitant une supervision humaine pour les tâches complexes ou créatives.
Pourquoi les super-riches sont inévitables explique, via le "Yard-sale model" (modèle de la vente de garage), comment une économie de marché libre, même avec des échanges équitables et aléatoires, finit par concentrer la richesse entre les mains d’une infime minorité. À travers une simulation de jeux de pile ou face où chaque joueur mise un pourcentage fixe de sa fortune, on observe que les perdants perdent progressivement leur capacité à regagner ce qu’ils ont perdu, tandis que les gagnants accumulent toujours plus. Résultat : sans redistribution, un seul individu finit par posséder presque toute la richesse, purement par effet mécanique et chance. Le modèle, issu de l’éconophysique, illustre ainsi comment l’inégalité économique peut émerger naturellement, et suggère que seule une redistribution (comme les impôts) peut limiter ce phénomène. Une réflexion frappante sur les limites du "mérite" et les dynamiques structurelles de l’inégalité.
L’IA est un outil puissant pour accélérer et optimiser le développement, pas pour remplacer les devs. L’article illustre comment intégrer l’IA à chaque étape d’un projet (ex. : un site de location de voitures) : planification (génération de briefs et wireframes en quelques minutes), design (création d’interfaces et de code HTML/CSS via des outils comme v0.dev), boilerplate (conversion rapide en React/TypeScript avec des prompts précis), et amélioration (refactoring collaboratif pour rendre le code scalable et propre). L’IA automatise les tâches répétitives (recherche, design, code basique), mais c’est au développeur de superviser, architecturer et corriger les imperfections (logique métier, réutilisabilité). L’enjeu ? Travailler plus intelligemment, en utilisant l’IA comme un "pair programmer" pour se concentrer sur les défis complexes (architecture, UX, performance). À condition de rester critique : l’IA génère du code, mais c’est à vous d’en garantir la qualité et l’éthique. "Un dev qui maîtrise l’IA aura toujours un avantage."
L’article démystifie les différences entre piles (jetables, non rechargeables), accumulateurs (rechargeables, souvent appelés à tort "piles rechargeables") et batteries (assemblages de cellules). Il explique les formats standardisés (AA, AAA, 18650, etc.), les technologies (alcaline, NiMH, lithium-ion, sodium-ion), et leurs avantages/inconvénients : les piles alcalines peuvent fuir, les lithium-ion offrent de hautes performances mais sont inflammables, tandis que le sodium-ion émerge comme une alternative plus écologique et sûre. Le choix entre piles et accumulateurs dépend de l’usage : les accumulateurs sont recommandés pour les appareils gourmands en énergie ou critiques, mais leur coût et leur gestion (éviter de mélanger les modèles, surveiller la capacité) peuvent limiter leur intérêt pour un usage occasionnel. L’article donne aussi des conseils pour choisir des marques, des chargeurs (privilégier les modèles USB-C avec mesure de capacité) et optimiser la durée de vie des batteries (éviter les charges/décharges extrêmes, privilégier la charge lente). Une ressource utile pour y voir plus clair et faire des choix éclairés, tant pour l’environnement que pour le portefeuille.
L’auteur, insatisfait par la dégradation des résultats des moteurs de recherche actuels (spam SEO, manque de pertinence), a relevé le défi de construire son propre moteur de recherche en deux mois, en s’appuyant sur des modèles d’embeddings neuronaux (comme SBERT) pour comprendre le sens des requêtes plutôt que de se limiter à la correspondance de mots-clés. Le projet a impliqué la génération de 3 milliards d’embeddings à l’aide d’un cluster de 200 GPU, l’indexation de 280 millions de pages web, et une architecture distribuée combinant RocksDB et HNSW pour gérer 4 To de RAM et 82 To de stockage SSD, avec un temps de réponse moyen de 500 ms. L’approche innovante inclut une normalisation poussée du HTML, un découpage sémantique des pages pour préserver le contexte, et un crawler optimisé pour éviter les limitations de débit. Le moteur permet de répondre à des requêtes complexes et nuancées, même formulées en langage naturel, en identifiant des réponses précises et pertinentes, y compris dans des contenus obscurs ou peu accessibles. Le billet détaille chaque étape : preuve de concept, normalisation des données, chunking intelligent, optimisation des performances, et déploiement d’un graphe de connaissances. Un demo en ligne est disponible pour tester le résultat.
Forward Proxy vs Reverse Proxy : Le forward proxy agit comme un intermédiaire entre le client et internet, filtrant les requêtes (ex : contrôle d’accès, cache, anonymat) et nécessitant une configuration côté client, tandis que le reverse proxy se place entre internet et le serveur, protégeant ce dernier (ex : équilibrage de charge, sécurité, TLS termination, cache) et masquant son adresse IP. Le premier est utile pour gérer les requêtes sortantes (ex : réseaux d’entreprise), le second pour optimiser et sécuriser les requêtes entrantes (ex : sites web à fort trafic). En résumé, le forward proxy sert le client, le reverse proxy sert le serveur.
L’article présente l’intégration d’un serveur MCP (Model Context Protocol) dans une application Laravel à l’aide du package opgginc/laravel-mcp-server. Le MCP, introduit par Anthropic fin 2024, permet aux assistants IA d’accéder à des données fraîches et pertinentes, évitant ainsi les limites des données obsolètes ou incomplètes. Le package facilite cette intégration via HTTP, propose des outils prêts à l’emploi (comme un "Hello World" ou la vérification de la version Laravel), et permet de créer ses propres outils MCP pour enrichir les réponses des agents IA. L’installation est simple (via Composer), la configuration flexible (domaines, middlewares, JSON-RPC 2.0), et l’interaction avec des modèles locaux (comme LM Studio) est détaillée. Idéal pour dynamiser les échanges avec une IA tout en gardant le contrôle sur les données exposées.
L'auteur raconte son parcours à travers une multitude d’applications de todo (Notion, Todoist, Things 3, Trello, OmniFocus, etc.), qu’il a toutes abandonnées pour revenir à un simple fichier texte, todo.txt
. Après des années à perdre du temps à configurer et gérer des outils complexes, il a réalisé que la simplicité d’un fichier texte—accessible, instantané, intemporel et sans dépendance—lui permettait d’être bien plus productif. Son système repose sur une liste datée, mise à jour quotidiennement, où tâches, notes et résultats cohabitent, transformant son todo en un journal de bord. Sans fonctionnalités superflues, sans abonnement, et toujours disponible, cette méthode lui a prouvé qu’une solution basique, mais utilisée régulièrement, surpasse tous les outils sophistiqués. Une leçon : la productivité tient moins à l’outil qu’à l’action.
PHP 8.4 et Doctrine 3.4 révolutionnent la gestion des propriétés avec les Property Hooks : fini les centaines de lignes de getters/setters ! Désormais, il est possible d’intégrer directement la logique d’accès et de modification dans la déclaration des propriétés, réduisant drastiquement le code boilerplate (jusqu’à -60%). Par exemple, au lieu d’écrire des méthodes getName()
et setName()
, on utilise une syntaxe élégante comme public string $name { get => strtoupper($this->name); set => $this->name = trim($value); }
. Doctrine 3.4 supporte officiellement cette fonctionnalité, simplifiant ainsi les entités et améliorant la lisibilité. La migration, bien que bénéfique (moins de code, meilleure maintenance), demande une adaptation du code existant et des tests rigoureux. Une avancée majeure pour le PHP moderne, même si certains outils ou habitudes mettent du temps à s’adapter.
L'auteur analyse et améliore la section "hero" du site Time.com, critiquant notamment le passage trop précoce à un affichage mobile (1 colonne) qui gaspille l’espace disponible sur les écrans intermédiaires. Il propose une approche plus flexible et progressive, en utilisant des techniques CSS modernes : CSS Grid, container queries, display: contents, style queries, grid areas, et le sélecteur :has()
pour créer un layout adaptatif et dynamique. L’objectif est de laisser le contenu guider la mise en page, avec des transitions fluides entre 1, 2 et 3 colonnes, tout en optimisant l’espace et la lisibilité. L’article illustre aussi l’utilisation des query units (cqw
) pour des tailles de police fluides et des astuces comme text-wrap: pretty
pour équilibrer les titres. Une démonstration concrète de comment construire des layouts robustes et modulaires avec du CSS avancé.
Le comic explique que beaucoup de programmes (comme git
ou man
) utilisent l’outil less
pour afficher du texte long, sans toujours le préciser. less
permet de naviguer dans un texte page par page : on le reconnaît à son interface plein écran et au deux-points en bas à gauche. Pour en sortir, tapez q
; pour chercher un mot, utilisez /mot
puis n
ou N
pour naviguer entre les résultats. On peut aussi scroller avec les flèches ou la molette, et g
ou G
pour aller en début/fin de fichier. Enfin, pour éviter less
, on peut modifier la variable d’environnement PAGER
. Un rappel utile et visuel pour mieux maîtriser le terminal !
L'article explique comment Apache Iceberg offre une solution robuste pour la gestion des données volumineuses, avec des capacités ACID complètes, une évolution de schéma flexible et des performances optimisées. Son intégration native avec l'écosystème AWS, incluant des services comme Amazon Data Firehose pour l'ingestion de données en temps réel, en fait un choix idéal pour les architectures de données modernes de type Lakehouse nécessitant fiabilité, scalabilité et performance. L'article explore également l'utilisation de Spark (PySpark) pour manipuler des données et exploiter les capacités d'Iceberg, illustrant ainsi son efficacité dans un environnement cloud comme AWS.
L'article explore les mécanismes de la motivation et propose un modèle mental pour mieux la comprendre, résumé par la formule : Motivation = Valeur × Probabilité × Retour sur Effort / Distance. Il explique que la motivation dépend de la valeur que nous accordons à un objectif, de la probabilité de réussite, de l'effort nécessaire pour atteindre cet objectif, et de la distance psychologique par rapport à celui-ci. L'article suggère des stratégies pour augmenter la motivation, comme augmenter la valeur perçue d'un objectif, améliorer la probabilité de succès, maximiser le retour sur effort, et réduire la distance psychologique. Il aborde également des problèmes courants tels que le manque de buts clairs, la faible estime de soi, la procrastination et la distractibilité, et propose des solutions pour les surmonter. Enfin, il discute de conseils motivationnels apparemment contradictoires et explique comment les réconcilier en fonction de différentes situations.
OpenFreeMap est une solution open-source d'hébergement de cartes qui permet d'afficher des cartes personnalisées sur des sites web et des applications gratuitement. Développé à partir de l'infrastructure de MapHub, OpenFreeMap utilise des serveurs dédiés pour fournir des services de cartographie sans dépendre du cloud. Il offre une intégration facile avec des styles de cartes personnalisables et est conçu pour être simple à utiliser, avec des guides rapides pour aider à l'intégration. OpenFreeMap est particulièrement utile pour les développeurs cherchant une alternative économique et flexible aux services de cartographie traditionnels.
L'article soutient que les fonctionnalités modernes du CSS, telles que l'API View Transitions et les Speculation Rules, ont éliminé les principaux avantages des Single Page Applications (SPAs). Ces innovations permettent des transitions fluides entre les pages, une navigation instantanée et de meilleures performances sans la complexité et la surcharge de JavaScript associées aux SPAs. Alderson argue que les navigateurs modernes peuvent désormais gérer des expériences riches et fluides de manière native, rendant obsolètes les SPAs pour la plupart des sites web. Il encourage les développeurs à utiliser le rendu côté serveur, des pages réelles, des animations CSS et à réduire l'usage de JavaScript pour construire des sites web plus performants et maintenables.
Biome est présenté comme un outil révolutionnaire pour les développeurs front-end, remplaçant efficacement ESLint et Prettier. Il combine les fonctionnalités d'un formatter, d'un linter, et d'un analyseur statique en un seul binaire, offrant une solution plus rapide et moins complexe. Biome simplifie la configuration, réduit le besoin de multiples outils, et améliore la cohérence du code. Il est particulièrement apprécié pour sa rapidité et sa facilité d'intégration, notamment dans des projets Symfony via le bundle kocal/biome-js-bundle. Bien qu'il ne couvre pas 100% des cas d'utilisation d'ESLint, il est efficace dans 90% des situations courantes. Biome impose également des conventions strictes pour des pratiques de codage cohérentes, comme l'utilisation de points-virgules et de virgules finales. En résumé, Biome est une solution tout-en-un qui simplifie le développement et améliore la productivité.
L'article explore comment concevoir des citations en bloc et des citations extraites pour refléter l'identité visuelle d'une marque et aider à raconter son histoire. L'auteur explique comment styliser l'élément HTML blockquote
en utilisant des bordures, des guillemets décoratifs, des formes personnalisées et d'autres propriétés inattendues. Des exemples interactifs montrent comment des bordures simples, des guillemets stylisés et des formes variées peuvent transformer des citations en éléments de design expressifs et distinctifs, renforçant ainsi la personnalité et la voix d'une marque.
Le lien explique les redirections de terminal à travers des exemples de commandes. Il montre comment rediriger la sortie d'une commande vers un fichier avec >
, ajouter à un fichier avec >>
, envoyer un fichier en entrée avec <
, et gérer les erreurs avec 2>
. Il aborde aussi les pièges courants, comme la suppression accidentelle de fichiers et les problèmes de permissions avec sudo
. Enfin, il compare l'utilisation de cat
et <
pour les entrées, et mentionne des raccourcis comme &>
pour rediriger à la fois la sortie standard et les erreurs.
Le lien explique le rôle du shell dans le terminal, qui est essentiel pour démarrer des programmes. Il présente les trois shells les plus populaires : bash, le shell par défaut sur Linux ; zsh, le shell par défaut sur Mac depuis 2025 ; et fish, connu pour être plus convivial. Le zine mentionne également que bash et zsh sont des "POSIX shells", suivant un standard pour les shells Unix, bien qu'il existe des différences entre eux. Il fournit des informations sur l'emplacement des fichiers de configuration pour chaque shell : ~/.bashrc
ou ~/.bash_profile
pour bash, ~/.zshrc
pour zsh, et ~/.config/fish/config.fish
pour fish. Enfin, il offre un conseil pour déterminer quel fichier de configuration bash utilise.
La page explique comment gérer plusieurs programmes, ou "jobs", dans un même onglet de terminal. Les programmes peuvent s'exécuter au premier plan, en arrière-plan ou être arrêtés (mis en pause). En utilisant &
, un programme peut être exécuté en arrière-plan, ce qui est utile pour des tâches parallèles comme la conversion de fichiers. La commande jobs
permet de lister les tâches en arrière-plan ou arrêtées, et vous pouvez les manipuler en les ramenant au premier plan avec fg
, en les tuant avec kill
, ou en les détachant avec disown
. Lorsque vous fermez un onglet de terminal, toutes les tâches sont tuées par un signal SIGHUP
, mais cela peut être évité avec disown
ou nohup
. Un conseil est donné pour tuer les programmes récalcitrants : utilisez Ctrl+Z
pour les arrêter, puis kill
pour les terminer
Le lien explique le rôle d'un émulateur de terminal, qui consiste principalement à convertir les actions de l'utilisateur (comme la frappe et le clic) en octets pour les envoyer, et à recevoir des octets pour les afficher visuellement. Il aborde brièvement l'histoire des terminaux, mentionnant qu'ils étaient autrefois des machines distinctes dans les années 80, et explique que les octets échangés peuvent être du texte, des codes d'échappement pour les couleurs, ou des caractères de contrôle. L'émulateur de terminal gère également des fonctions comme le copier-coller et la gestion des couleurs et des polices, offrant souvent une bibliothèque de thèmes pour personnaliser l'apparence. Enfin, il mentionne comment les combinaisons de touches comme Ctrl-X
sont traduites en octets.
La page explique comment les émulateurs de terminal utilisent 16 couleurs configurables, connues sous le nom de "couleurs ANSI". Ces couleurs peuvent être personnalisées via les paramètres de l'émulateur de terminal ou en exécutant un script qui utilise des codes d'échappement. Les programmes peuvent utiliser ces couleurs en imprimant des codes d'échappement spécifiques, comme illustré par l'exemple echo -e "\033[34m blue text"
. Cependant, les couleurs ANSI par défaut souffrent souvent de problèmes de contraste, rendant le texte difficile à lire. La solution recommandée est d'utiliser un émulateur de terminal avec une fonctionnalité de "contraste minimum", comme iTerm ou Kitty, pour améliorer la lisibilité. De plus, les programmes désactivent généralement les couleurs lorsqu'ils écrivent dans un pipe pour éviter les problèmes d'affichage.
Le lien explique comment les clics de souris dans un terminal peuvent être gérés soit par l'émulateur de terminal, soit par le programme en cours d'exécution. L'émulateur de terminal est utile pour des actions comme copier du texte, tandis que certains programmes, comme tmux ou vim, peuvent prendre le contrôle de la souris pour des fonctionnalités spécifiques, comme redimensionner des panneaux ou naviguer dans des menus. Ce processus, appelé "mouse reporting", permet aux programmes de recevoir des codes d'échappement pour localiser les clics de souris. L'article mentionne également des astuces pour forcer l'émulateur de terminal à reprendre le contrôle de la souris et discute du comportement de la molette de défilement dans différents programmes.
La page explique que différents émulateurs de terminal utilisent divers codes d'échappement pour effectuer des actions comme effacer l'écran. Les systèmes disposent d'une base de données appelée "terminfo" qui contient ces codes d'échappement, permettant aux programmes de savoir comment interagir avec le terminal. La variable d'environnement TERM
est utilisée pour identifier le type de terminal, mais cela peut poser problème lors de l'utilisation de SSH avec des systèmes anciens et des émulateurs modernes. Des solutions sont proposées pour résoudre ces problèmes, comme installer le fichier terminfo approprié ou utiliser un émulateur de terminal différent. Autre possibilité : définir TERM=xterm-256color fonctionne assez souvent
L'article explique pourquoi l'édition de texte dans un REPL (Read-Eval-Print Loop) ne fonctionne pas toujours de manière intuitive. Contrairement aux attentes, chaque programme doit implémenter ses propres fonctionnalités d'édition de texte, ce qui signifie que les touches fléchées peuvent ne pas fonctionner automatiquement. Cependant, certaines fonctionnalités comme la touche de suppression (backspace), Ctrl+W pour supprimer un mot, et Ctrl+U pour supprimer une ligne, sont souvent disponibles. La plupart des REPLs utilisent ou imitent la bibliothèque "readline", qui standardise les raccourcis clavier comme Ctrl+A pour aller au début de la ligne. Pour les programmes qui n'utilisent pas "readline", comme certains programmes intégrés sur Mac, des outils comme rlwrap
peuvent ajouter ces fonctionnalités.
La page présente des raccourcis clavier utiles pour travailler dans un terminal. Parmi les raccourcis mentionnés, on trouve des commandes pour éditer du texte comme Ctrl + W
pour supprimer le mot précédent et Ctrl + U
pour supprimer une ligne entière. Pour quitter ou gérer des processus, on peut utiliser Ctrl + C
, Ctrl + Z
, ou Ctrl + D
. Des raccourcis pour naviguer dans le texte incluent Ctrl + A
pour aller au début de la ligne et Ctrl + E
pour la fin. D'autres astuces utiles incluent Ctrl + L
pour effacer l'écran et Ctrl + R
pour rechercher dans l'historique. Enfin, des combinaisons comme Ctrl + Shift + C/V
sont utilisées pour copier et coller dans l'émulateur de terminal.
Le comic "Meet the TTY Driver" de Wizard Zines présente le pilote TTY, une partie obscure mais essentielle des systèmes informatiques. Il explique que lorsque vous démarrez un émulateur de terminal, le système crée une paire de "pseudoterminal" composée de deux fichiers, permettant la communication entre l'émulateur de terminal et le programme. Le pilote TTY est responsable de plusieurs fonctions, comme la gestion de la taille de la fenêtre du terminal, l'envoi de signaux comme SIGHUP
lors de la fermeture du terminal, et le mode canonique pour la saisie de texte. Il est également la raison pour laquelle des combinaisons de touches comme Ctrl+C
fonctionnent de manière cohérente. Le pilote TTY peut aussi mettre en pause la sortie et gérer les processus au premier plan.
Le comic "stty" de Wizard Zines explore les configurations du pilote TTY dans les terminaux. Il explique comment utiliser la commande stty -a
pour voir la configuration actuelle, y compris la taille de la fenêtre. Le comic mentionne des fonctionnalités par défaut comme le gel du terminal avec Ctrl+S
et son dégel avec Ctrl+Q
, et comment désactiver cette fonction avec stty -ixon
. Il aborde aussi la possibilité de changer les raccourcis clavier, comme Ctrl+C
, bien que cela soit déconseillé en raison du chaos potentiel. Enfin, il souligne que les programmes doivent configurer le pilote TTY pour des fonctionnalités avancées, comme les touches fléchées, et que des bibliothèques comme readline
ou ncurses
peuvent aider à gérer ces configurations.
L'articleremet en question l'utilisation des service subscribers, une pratique courante dans les projets Symfony pour gérer les dépendances occasionnelles. L'auteur propose une alternative en utilisant des événements et des écouteurs pour cibler les dépendances nécessaires, plutôt que de tout centraliser dans une seule classe. Par exemple, au lieu d'utiliser un AbstractController
et de charger toutes les dépendances dans le constructeur, il suggère de créer des événements spécifiques pour chaque action (comme l'envoi d'un e-mail ou la génération d'un PDF) et d'utiliser des écouteurs pour gérer ces événements. Cela permet une meilleure séparation des responsabilités et une plus grande flexibilité. L'article conclut en encourageant les développeurs à réfléchir avant d'utiliser des service subscribers et à envisager d'autres moyens pour éviter les dépendances occasionnelles, comme l'injection de dépendances directement dans les méthodes des contrôleurs.
L'article explore l'outil PHPMD (PHP Mess Detector), qui analyse le code PHP pour détecter des problèmes de qualité et de complexité. L'auteur explique la notion de complexité cyclomatique, introduite par Thomas McCabe, qui mesure le nombre de chemins d'exécution possibles dans un code, et montre comment PHPMD peut aider à identifier des zones problématiques où cette complexité est trop élevée. L'article décrit l'installation et la configuration de PHPMD, ainsi que ses différentes règles pour améliorer la qualité du code, comme CleanCode, CodeSize, et Naming. Il aborde également l'intégration de PHPMD dans des workflows de développement, par exemple avec PHPStorm ou GitHub Actions, et discute des métriques avancées pour évaluer la qualité du code. En conclusion, l'auteur encourage les développeurs à utiliser PHPMD régulièrement pour maintenir un code propre et maintenable, malgré les critiques parfois sévères de l'outil.
L'article de Korben sur la "boîte à outils ultime pour dompter Windows 11" propose une série de conseils et d'outils pour optimiser et personnaliser votre expérience avec ce système d'exploitation. Il aborde des fonctionnalités comme le DNS-over-HTTPS pour sécuriser vos requêtes, la fonctionnalité "Cross-Device Resume" pour reprendre vos tâches entre différents appareils, et des outils comme BloatyNosy Nue pour nettoyer votre système. L'article vise à transformer Windows 11 en une "machine de guerre", que vous soyez un utilisateur occasionnel ou un expert, et encourage les lecteurs à partager leurs propres découvertes d'outils utiles.
L'article présente une technique CSS pour créer des placeholders d'images flous (LQIP) avec un minimum de balisage, nécessitant seulement une propriété CSS personnalisée. Cette méthode utilise un entier pour encoder les informations de couleur et de luminosité, permettant de générer des placeholders sans JavaScript ni éléments supplémentaires. L'approche est minimaliste et efficace, bien que les résultats soient très flous comparés à d'autres solutions. L'article explore également différentes techniques de LQIP et explique comment cette méthode CSS se distingue par sa simplicité et son intégration facile.
snapDOM est un outil rapide et précis de capture DOM en image, conçu pour Zumly, un framework de transition de vue basé sur le zoom. Il capture n'importe quel élément HTML sous forme d'image SVG redimensionnable, en préservant les styles, les polices, les images de fond, les pseudo-éléments et même le shadow DOM. Il prend également en charge l'exportation vers des formats d'image raster et canvas.
Le tutoriel présente BunkerWeb, une solution open-source combinant reverse proxy et Web Application Firewall (WAF) pour sécuriser les services web. Elle intègre des fonctionnalités comme le filtrage ModSecurity avec les règles OWASP CRS, le renforcement TLS, et la limitation de requêtes. Le tutoriel guide à travers le déploiement de BunkerWeb via Docker Compose, depuis la préparation de l'environnement jusqu'à la configuration d'un service web. Il explique comment créer un fichier compose.yaml
, lancer les conteneurs, et configurer BunkerWeb via une interface web d'administration. Le tutoriel montre également comment déployer un service web interne, comme IT-Tools, derrière BunkerWeb, en détaillant les étapes de configuration pour sécuriser et publier le service. Enfin, il conclut en soulignant la facilité d'utilisation et les options avancées de BunkerWeb pour renforcer la sécurité des applications web.
L'effet tunnel est un phénomène quantique où une particule, comme un électron, franchit une barrière de potentiel même si son énergie est inférieure à l'énergie minimale requise pour la traverser. En physique classique, cela serait impossible, mais en mécanique quantique, les particules sont décrites par des fonctions d'onde probabilistes, permettant une faible probabilité de présence de l'autre côté de la barrière. Cet effet est crucial dans des processus naturels comme la fusion nucléaire dans le Soleil, où les protons franchissent la barrière coulombienne malgré une énergie insuffisante. Technologiquement, l'effet tunnel est exploité dans les mémoires flash et les microscopes à effet tunnel, illustrant son importance tant théorique que pratique.
Le site Cosmos Cloud propose une plateforme sécurisée et facile à utiliser pour l'auto-hébergement. Voici un résumé des points clés :
Points Forts
- Sécurité et Maintenance Automatisée : Cosmos offre une configuration entièrement sécurisée avec une maintenance automatisée, intégrant des fonctionnalités comme l'authentification unique (SSO), l'anti-bot, l'anti-DDoS, et l'authentification à deux facteurs (2FA).
- Intégration Facile : La plateforme s'intègre facilement à votre configuration existante.
- Marché d'Applications : Cosmos propose un marché d'applications où vous pouvez parcourir et installer des applications qui s'intègrent à votre configuration, avec des règles de sécurité et de bases de données configurées automatiquement.
- Proxy Inverse Intégré : Un proxy inverse intégré facile à configurer et flexible, accessible via l'interface utilisateur moderne de Cosmos.
- Gestion des Conteneurs : Vous pouvez contrôler, mettre à jour et surveiller vos conteneurs directement depuis Cosmos et les exposer via le proxy inverse interne.
- VPN : Constellation est un VPN entièrement intégré qui vous permet de vous connecter à votre serveur à distance et de manière sécurisée, même sans ouvrir vos ports. Il inclut un DNS similaire à PiHole.
- Surveillance en Temps Réel : Surveillance persistante en temps réel avec des alertes et notifications personnalisables pour vous informer de tout problème.
Objectif
Cosmos vise à rendre l'auto-hébergement de vos services cloud et web satisfaisant tout en éliminant les tracas grâce à une maintenance automatisée et une configuration sécurisée dès le départ.
Pour plus de détails, vous pouvez consulter la documentation ou essayer la démo sur leur site web.
L'article explique comment créer des snapshots de volumes persistants dans Kubernetes en utilisant Rook-Ceph. L'auteur décrit d'abord l'utilisation de VolSync pour les sauvegardes, mais souligne ses limites avec les snapshots. Il détaille ensuite l'installation du CSI Snapshotter et la création d'une VolumeSnapshotClass pour configurer les paramètres de snapshot. L'article montre comment créer un PersistentVolumeClaim (PVC) et un Pod pour tester les snapshots, et comment créer et restaurer un snapshot. Enfin, il mentionne l'utilisation de DataMover comme Velero pour stocker les snapshots vers un stockage distant et évoque les prochaines étapes pour tester ces outils dans son lab.
L'article d'Alex Wlchan explique une méthode plus rapide pour copier des bases de données SQLite entre ordinateurs. En utilisant la commande .dump
de SQLite, on peut convertir la base de données en un fichier texte contenant des instructions SQL, ce qui réduit considérablement la taille du fichier. Ce fichier texte, qui peut être encore compressé avec gzip, est plus rapide à transférer. Une fois copié, le fichier texte peut être utilisé pour reconstruire la base de données locale. Cette approche évite les problèmes de corruption lors de la copie de gros fichiers et améliore l'efficacité des transferts, surtout pour les bases de données volumineuses.
Complément et suite de https://blog.victor-hery.com/2024/02/ssh-openssl-haproxy.html , l'article explore des améliorations de configuration pour HAProxy, en se concentrant sur l'intégration de SSH via HTTPS et l'optimisation de HTTP/2. L'auteur explique comment utiliser les abstract namespaces pour améliorer les performances et simplifier la configuration, tout en détaillant l'importance de l'extension TLS ALPN pour la négociation du protocole HTTP/2. L'article aborde également les avantages des abstract namespaces par rapport aux sockets Unix traditionnels, en termes de rapidité et d'efficacité. Enfin, il propose une configuration finale optimisée pour HAProxy, permettant une gestion plus discrète et performante des connexions SSH et HTTP/2.
Plakar est un outil de sauvegarde moderne pour Linux, offrant des fonctionnalités avancées comme la déduplication, le chiffrement de bout en bout, et la compression des données pour optimiser l'espace de stockage. Il permet des sauvegardes incrémentielles, ce qui le rend efficace pour des sauvegardes fréquentes, et supporte les sauvegardes distantes via SFTP. L'outil fonctionne avec un agent et propose une interface en ligne de commande ainsi qu'une interface graphique rudimentaire pour gérer les sauvegardes, les restaurations, et la vérification de l'intégrité des données. Plakar ne nécessite pas de base de données externe, stockant les métadonnées directement dans le dépôt de sauvegarde.
L'article introduit le Core Model, une méthodologie pratique qui révolutionne le développement numérique traditionnel en commençant par une hypothèse sur les besoins des utilisateurs plutôt que par des solutions préconçues. En posant six questions clés dans le bon ordre, cette approche aligne les équipes pluridisciplinaires autour des tâches des utilisateurs et des objectifs commerciaux, créant ainsi une clarté qui transcende les limites organisationnelles. Le processus commence par une préparation en amont pour identifier les priorités et former des hypothèses initiales, suivies d'un atelier collaboratif où des paires de participants travaillent ensemble pour valider et affiner ces hypothèses. Les six éléments du Core Model — groupe cible, tâches des utilisateurs, objectifs commerciaux, chemins d'accès, chemins de progression et contenu principal — créent un cadre structuré qui guide les équipes vers des solutions efficaces. L'article souligne l'importance de travailler en paires interdisciplinaires pour favoriser l'innovation et la qualité, et conclut en expliquant comment cette méthodologie peut être mise en œuvre pour améliorer la collaboration et obtenir de meilleurs résultats dans les projets numériques.
L'article explique comment transformer son réseau domestique en un environnement productif en utilisant des conteneurs Docker pour créer des alternatives privées aux services cloud. L'auteur décrit comment Docker facilite le déploiement d'applications et de services sans avoir à gérer des machines virtuelles complexes. Parmi les applications recommandées, on trouve Nextcloud pour le stockage et la collaboration de documents, Grocy pour la gestion des courses et des repas, Tududi pour la gestion des tâches, Bitwarden pour la gestion sécurisée des mots de passe, et Portainer pour la gestion des conteneurs Docker. Ces outils permettent de créer un écosystème privé, sécurisé et flexible directement depuis son réseau local.
L'article explore comment le Playwright MCP (Model Context Protocol) en mode Agent peut naviguer de manière autonome dans une application, découvrir des fonctionnalités clés et générer des tests exécutables sans script manuel. À travers une démonstration en direct sur une application de films, l'auteur montre comment le MCP peut découvrir des cas limites, construire une couverture de test et même révéler des bugs non détectés manuellement. L'agent explore l'application, interagit avec elle comme un utilisateur réel, et génère automatiquement des tests basés sur ces interactions, offrant ainsi une approche puissante d'assistance par IA pour le développement et les tests.
Un guide pour la sécurisation d'un serveur linux
L'article décrit une méthode pour démarrer Symfony Messenger à la demande afin de réduire les coûts inutiles sur AWS pour un projet nécessitant l'importation et le traitement occasionnel de grands fichiers Excel. L'auteur configure Symfony Messenger pour utiliser une file d'attente Doctrine et crée un message personnalisé, ProcessImportMessage
, qui est envoyé via un bus de messages chaque fois qu'un fichier est téléversé. Un service, MessengerConsumer
, est utilisé pour démarrer le consommateur de messages uniquement lorsque nécessaire, avec une limite de temps pour s'arrêter automatiquement. Le message est ensuite traité par un gestionnaire qui importe les données et gère les erreurs, offrant ainsi une solution efficace et économique pour les traitements peu fréquents.
L'article aborde un problème courant mais critique dans les projets Symfony utilisant Doctrine et le Symfony Serializer. L'auteur décrit une expérience de débogage où une erreur de mémoire épuisée a été causée par l'utilisation négligente du serializer par défaut de Symfony, qui utilise les métadonnées de Doctrine, entraînant une consommation excessive de mémoire. Le problème est survenu lors de la sérialisation de grandes quantités de données dans une entité contenant de grands champs JSON. La solution proposée consiste à créer un adaptateur de serializer léger qui évite complètement les métadonnées de Doctrine. L'article souligne l'importance d'utiliser des serializers adaptés pour les données internes de débogage ou de sauvegarde et met en garde contre l'utilisation du serializer par défaut pour les entités avec de grandes ou des données imbriquées, afin de rester en contrôle de l'utilisation de la mémoire.
L'article explore les concepts fondamentaux de la conception de systèmes, essentiels pour les développeurs et les ingénieurs logiciels. Il aborde des sujets variés tels que l'architecture client-serveur, les adresses IP, le DNS, les proxys, la latence, les protocoles HTTP/HTTPS, les APIs, les bases de données SQL et NoSQL, ainsi que des techniques de mise à l'échelle comme le scaling vertical et horizontal, l'équilibrage de charge, l'indexation des bases de données, la réplication et le sharding. L'article vise à simplifier ces concepts pour les rendre accessibles, que ce soit pour des entretiens techniques ou pour la conception de systèmes scalables dans un environnement professionnel.
L'article explique comment utiliser Uptime Kuma, un outil de surveillance auto-hébergé, pour surveiller l'état de plusieurs Freebox à distance. L'auteur décrit la configuration nécessaire, incluant l'activation de l'accès à distance et la réponse au ping sur les Freebox, ainsi que l'utilisation de noms de domaine personnalisés fournis par Free. Uptime Kuma envoie des alertes par SMS via l'API de Freemobile en cas de détection de panne, permettant ainsi à l'auteur de vérifier et de diagnostiquer rapidement les problèmes de connexion Internet pour les membres de sa famille.
Il s'agit d'un générateur de site statique pour la diffusion de musique.
L'article explique comment tester la documentation OpenAPI avec PHP pour garantir que le comportement d'une API correspond à sa documentation. Il propose d'intégrer la validation OpenAPI dans des tests fonctionnels en utilisant la bibliothèque league/openapi-psr7-validator
. L'approche consiste à créer une classe abstraite qui facilite la vérification des requêtes et réponses HTTP par rapport à la spécification OpenAPI. Cela permet de maintenir la cohérence entre le code et la documentation tout au long du développement, améliorant ainsi la qualité et la fiabilité de l'API.
Le fingerprinting, ou empreinte numérique, est une technique de suivi qui identifie un appareil ou un utilisateur sans utiliser de cookies, en collectant des informations comme le navigateur, le système d'exploitation, la langue, et d'autres configurations. Cette méthode crée un profil unique qui peut être utilisé pour suivre les utilisateurs à travers différents sites, même en navigation privée. Pour se protéger, il est conseillé de se fondre dans la masse en utilisant des navigateurs comme Tor ou Brave, ou des extensions comme Chameleon pour uniformiser son empreinte numérique. Des outils comme "Am I Unique ?" et "Cover Your Tracks" permettent de tester sa propre empreinte et de mieux comprendre les risques pour la vie privée.
L'article explique comment déployer un serveur Counter-Strike 2 sur Kubernetes en utilisant une image conteneur existante. Il guide à travers plusieurs étapes clés : la création d'un Namespace pour isoler les ressources, la configuration d'un Deployment basique, la mise en place d'un PersistentVolumeClaim pour le stockage persistant, et l'injection d'une ConfigMap pour la configuration du serveur. Il expose également les ports nécessaires et crée un Service de type NodePort pour rendre le serveur accessible publiquement. L'article suppose que le lecteur a déjà un cluster Kubernetes fonctionnel et utilise des commandes kubectl pour appliquer les configurations. Enfin, il propose des pistes pour aller plus loin, comme l'utilisation de l'outil k9s pour naviguer dans le cluster.
Ce guide explique comment construire un système RAG (Retrieval-Augmented Generation) local pour traiter des PDF en utilisant DeepSeek-R1, LangChain, Ollama et Streamlit. Il met l'accent sur la confidentialité et l'efficacité en effectuant toutes les opérations localement, sans frais d'API récurrents. Le système utilise LangChain pour orchestrer le flux de travail, DeepSeek-R1 pour le raisonnement et la génération de réponses, Ollama pour déployer les modèles localement, ChromaDB pour stocker et récupérer les embeddings de documents, et Streamlit pour une interface utilisateur intuitive. Le guide fournit des instructions étape par étape pour installer les prérequis, configurer le projet, et exécuter l'application, permettant aux utilisateurs de poser des questions sur des documents PDF téléchargés et d'obtenir des réponses précises et rapides.
L'article explique les quatre grandes cadences en musique, qui structurent les phrases musicales comme la ponctuation le fait pour les phrases écrites. Les cadences sont des enchaînements d'accords à la fin d'un élément musical, produisant des effets conclusifs ou suspensifs. La cadence parfaite, par exemple, utilise les accords de degré V et I pour créer une sensation de conclusion, comme dans "Somebody to Love" de Queen. La cadence plagale, avec les accords IV et I, offre une conclusion moins définitive, souvent utilisée dans la musique liturgique. La demi-cadence repose sur le cinquième degré, créant une suspension, tandis que la cadence rompue surprend en déviant de l'accord attendu, comme dans "I Want to Break Free" de Queen. Ces outils permettent aux musiciens de s'exprimer et d'enrichir leurs compositions.
Je cite l'auteur "Spatzi est un outil en ligne interactif conçu pour aider les designers et développeurs à créer des palettes de couleurs accessibles.
Il permet de vérifier les ratios de contraste selon les normes WCAG (Web Content Accessibility Guidelines) et APCA (Accessible Perceptual Contrast Algorithm), et d'explorer des variations de couleurs en utilisant l'espace colorimétrique OKLCH (Luminance, Chroma, Hue)."
L'article explore l'utilisation du Shadow DOM dans le cadre des Web Components. L'auteur explique que les Web Components ne se limitent pas aux Custom Elements, mais incluent également le Shadow DOM et les HTML Templates, chacun jouant un rôle spécifique. Le Shadow DOM permet d'encapsuler le HTML et le CSS, isolant ainsi les composants pour éviter les conflits et maintenir une séparation claire des préoccupations. L'article aborde les raisons d'être du Shadow DOM, son utilisation pour isoler les composants dans les applications web modernes, et comment il peut être instancié de manière impérative ou déclarative. L'auteur discute également des différentes options de configuration du Shadow DOM, comme les modes ouvert et fermé, et des fonctionnalités avancées telles que les contenus slottés, qui permettent d'injecter sélectivement du contenu dans les composants. Enfin, l'article souligne l'importance de la maîtrise du Shadow DOM pour améliorer la stabilité, la réutilisabilité et la sécurité des applications web.
L'article explique comment prioriser les messages dans les applications asynchrones utilisant Symfony Messenger. Il aborde les défis liés à la gestion des messages de différentes priorités et propose des solutions pour s'assurer que les messages critiques sont traités en temps opportun. L'auteur suggère de diviser les messages en plusieurs files d'attente basées sur leur priorité et d'utiliser des stamps personnalisés pour router dynamiquement les messages. De plus, il recommande de diviser les tâches longues en messages plus petits pour éviter de bloquer les travailleurs et garantir un flux fluide dans la file d'attente.
L'article explore les méthodes de test des messages différés dans Symfony Messenger en utilisant Behat. L'auteur décrit un projet où des opérations sont planifiées pour être traitées de manière asynchrone à l'avenir, parfois après quelques minutes, parfois après plusieurs heures. L'objectif est de se concentrer sur le résultat plutôt que sur la planification elle-même. L'article propose une solution pour "voyager" à travers le temps, traiter les travaux planifiés et vérifier les résultats attendus. Il utilise des scénarios Gherkin pour illustrer l'escalade de priorité des incidents en fonction du temps et explique comment configurer les entités, les messages et les transports dans Symfony pour gérer ces scénarios. Enfin, il montre comment créer un transport Messenger personnalisé pour contrôler quels travaux en arrière-plan sont traités et quand, en utilisant le composant Cache de Symfony pour persister temporairement les messages planifiés.
L'article décrit un projet expérimental et éducatif visant à déployer un control plane Kubernetes sur Clever Cloud en utilisant leurs nouvelles applications de type Linux. L'auteur, s'inspirant de son tutoriel précédent, utilise le gestionnaire de paquets Mise pour installer les dépendances et configurer les composants Kubernetes comme des processus sur une instance Linux managée. Le projet, bien que non destiné à un usage personnel, explore les fonctionnalités des apps Linux de Clever Cloud et montre comment déployer et tester un cluster Kubernetes fonctionnel, incluant l'ajout d'un worker node externe. L'article souligne les limitations et les améliorations possibles, tout en offrant un aperçu des fonctionnalités méconnues de Clever Cloud.
L'auteur de l'article, entre autres renseignements utiles, donne l'URL du formulaire : https://olcsupport.office.com/
L'article discute de la mise en place d'un système de surveillance efficace qui aide les équipes à mieux dormir la nuit sans avoir besoin de tableaux de bord complexes. L'auteure aborde le problème de la fatigue des alertes, où un trop grand nombre d'alertes, souvent fausses, conduit à ignorer les vraies urgences. Elle propose une règle simple : se concentrer sur trois types d'alertes principaux : les pannes, les ralentissements et les pics d'erreurs. L'article recommande de commencer avec des signaux clés comme la latence et le taux d'erreurs, et de concevoir des tableaux de bord simples et lisibles, avec des indicateurs visuels clairs. Il souligne également l'importance de logs utiles et de vérifications de santé efficaces. Enfin, l'auteure suggère d'utiliser des outils simples et de concevoir les alertes en pensant à l'expérience humaine, en les rendant actionnables et informatives.
L'article explore l'utilisation des animations SMIL (Synchronized Multimedia Integration Language) dans les SVG pour enrichir les conceptions web. Contrairement aux idées reçues, SMIL n'est pas obsolète et offre des moyens simples et sémantiques d'ajouter des animations aux designs. L'auteur, Andy Clarke, démontre comment SMIL peut être utilisé pour créer des animations complexes, synchroniser plusieurs animations et contrôler les transformations et les chemins de mouvement. Il met en lumière les avantages de SMIL, notamment sa capacité à fonctionner sans dépendre de JavaScript ou de frameworks, et son intégration directe dans les fichiers SVG, ce qui le rend idéal pour des effets d'animation compacts et portables.
L'article explore comment certaines propriétés CSS, bien que conçues pour améliorer la mise en page, peuvent nuire à l'accessibilité pour les utilisateurs de technologies d'assistance. Il met en lumière des problèmes subtils liés à l'utilisation de propriétés comme display
et list-style
, qui peuvent altérer la sémantique des éléments HTML, rendant les tableaux et les listes inaccessibles, notamment sur Safari avec VoiceOver. L'article propose des solutions, telles que l'utilisation de rôles ARIA pour préserver l'accessibilité, et offre une checklist pour garantir que les styles CSS ne compromettent pas l'accessibilité avant le déploiement d'un projet.
L'article présente Erugo, un logiciel auto hébergé pour le partage de fichiers. L'auteur décrit aussi la procédure d'installation (plutôt simple grâce à Docker)
Dans son article, Lea Verou aborde les défis rencontrés lors de la création de composants web accessibles et localisables en 2025, tout en présentant deux composants qu'elle a développés pour afficher les "likes" de Bluesky. Elle partage des conseils pratiques sur l'utilisation des éléments <slot>
et des attributs pour la personnalisation, tout en mettant l'accent sur la balance bénéfice / effort de développement.
Il s'agit d'un ensemble d'exemples d'utilisation de Claude : ses capacités (classification, RAG, résumé), l'intégration avec des outils externes pour étendre ses capacités (dont des sites web), le multimodal et autres techniques avancées.
L'article offre des conseils pratiques pour ceux qui souhaitent se lancer dans le bricolage. Il recommande d'acquérir progressivement du matériel de base, en privilégiant la qualité, et suggère des endroits où acheter des outils, comme les grandes surfaces de bricolage et les boutiques pour professionnels. L'auteur met en avant l'importance de regarder des vidéos éducatives pour apprendre des techniques et se familiariser avec le vocabulaire technique. Il liste également des outils essentiels, tels qu'un coffret de douilles, des pinces, un marteau, un tournevis plat, et des consommables comme le WD-40 et des joints de plomberie. Pour l'électroportatif, il conseille de choisir des outils de marques professionnelles et mentionne la perceuse-visseuse Bosch Pro GSR 12V-15 FC comme un outil polyvalent et indispensable. Enfin, l'article rappelle les limites du bricolage, notamment pour les travaux liés au gaz, au feu, et à la structure des bâtiments, et encourage à se former en électricité pour réaliser des travaux en toute sécurité.
L'article décrit la construction d'un homelab virtualisé utilisant un rack de 10 pouces. L'auteur, qui avait l'habitude de réutiliser de vieux ordinateurs pour héberger des services à domicile, a découvert les racks 10 pouces et a opté pour un DeskPi RackMate T0. Il a choisi deux mini-PC GMKtec NucBox G5 avec des processeurs Intel N97 pour virtualiser ses services avec XCP-ng, un hyperviseur basé sur Xen. Pour l'administration, il utilise Xen Orchestra, une application web dédiée. L'auteur recommande Alpine Linux pour les machines virtuelles en raison de sa légèreté et de sa simplicité. Il aborde également la gestion de la mémoire dans XCP-ng et exprime son enthousiasme pour de futures expérimentations avec son nouveau homelab.
L'article sur la préparation et l'utilisation d'une trousse de secours souligne l'importance d'être formé aux premiers secours et d'avoir une trousse de secours adaptée pour faire face aux imprévus et aux accidents du quotidien. L'auteur, insatisfait des trousses disponibles dans le commerce, a décidé de créer la sienne, qu'il décrit en détail. Il insiste sur l'importance de se conformer à la réglementation en vigueur et de s'adapter à ses propres besoins et connaissances en matière de secourisme. La trousse est divisée en trois compartiments : le premier pour le matériel d'urgence vitale, le second pour le matériel d'usage courant, et le troisième pour les petites choses utiles. L'article fournit également des conseils sur la formation aux premiers secours, la maintenance de la trousse, et les éléments à éviter d'inclure.
L'article explique l'importance d'utiliser des adresses e-mail uniques pour chaque correspondant afin de mieux tracer l'origine des messages et de détecter les fuites de données personnelles. L'auteur compare les adresses e-mail aux adresses postales, soulignant que, tout comme un changement de nom de rue ne change pas la boîte aux lettres, plusieurs adresses e-mail peuvent pointer vers une seule boîte de réception. Il explore différentes méthodes pour créer des adresses uniques, comme les sous-adresses (utilisant le caractère '+') et les alias, qui redirigent plusieurs adresses vers une seule boîte. Cependant, ces méthodes ont des limites, comme le refus de certains sites d'accepter les sous-adresses ou la nécessité de configurer les alias à l'avance. Pour surmonter ces limitations, l'auteur présente une solution innovante appelée SAKE (Sub-Address KEy), qui combine les avantages des sous-adresses et des alias en ajoutant un code de vérification aux adresses e-mail, offrant ainsi une meilleure sécurité et traçabilité.
L'article traite de l'authentification multifacteur (MFA), une méthode cruciale pour sécuriser l'accès à nos données numériques. L'auteur explique que l'authentification repose généralement sur trois catégories : ce que l'on sait (comme un mot de passe), ce que l'on possède (comme un téléphone), et ce que l'on est (comme une empreinte digitale). L'authentification multifacteur combine au moins deux de ces catégories pour renforcer la sécurité. L'article met en lumière les risques associés à l'utilisation de codes envoyés par SMS et recommande plutôt l'utilisation de codes générés par des applications utilisant le standard TOTP (Time-based One-Time Password). Il décrit également le fonctionnement des algorithmes HOTP et TOTP et souligne l'importance de choisir des applications de MFA fiables et bien maintenues. Enfin, l'auteur insiste sur la nécessité de sauvegarder et synchroniser les secrets d'authentification pour éviter de les perdre en cas de vol ou de perte du téléphone.
L'auteur relate son passage à un serveur conteneurisé utilisant FreeBSD après avoir testé sans succès plusieurs solutions de virtualisation et de conteneurisation comme Proxmox VE, Docker et LXC. Il a découvert Bastille, un outil de gestion des jails FreeBSD, qui lui a permis de créer des environnements isolés pour ses applications web. L'article décrit la mise en place d'un serveur PostgreSQL, d'un reverse-proxy avec Nginx, et d'une instance Pleroma pour le Fédiverse, le tout sécurisé par un pare-feu PF. Cette solution lui a offert un bon compromis entre performance, simplicité et sécurité pour son usage personnel.
Suite de https://rodolphe.breard.tf/article/introduction-aux-cables-usb/, l'article explore en détail les caractéristiques et les complexités des câbles USB de type C. Contrairement aux câbles de type A, les câbles USB-C sont dotés de 24 broches, permettant une plus grande polyvalence en termes d'alimentation électrique et de transfert de données. L'article aborde le mécanisme USB Power Delivery (USB PD), qui permet une négociation dynamique de la tension et de l'intensité pour des puissances allant jusqu'à 240 W, rendant ces câbles adaptés à une large gamme d'appareils électroniques. Il explique également le rôle de l'eMarker, un composant électronique intégré dans les câbles pour indiquer leurs capacités et garantir la sécurité. L'article discute des différents protocoles supportés par les câbles USB-C, tels que USB 2.0, USB 3.2 et USB 4, et met en garde contre les câbles bas de gamme qui peuvent ne supporter que l'USB 2.0. Enfin, il souligne l'importance du marquage des câbles pour identifier leurs capacités et propose des outils pour tester les câbles USB-C.
L'article explore les défis et solutions liés à l'utilisation de paramètres avec les écouteurs d'événements en JavaScript. L'auteur souligne l'importance de gérer correctement ces écouteurs pour éviter les fuites de mémoire et les problèmes de performance. L'article aborde des erreurs courantes, comme l'appel immédiat de fonctions lors de l'ajout d'écouteurs, et propose des solutions utilisant des fonctions fléchées, des fermetures et l'API AbortController pour une gestion efficace des paramètres et la suppression des écouteurs.
L'article explore les bases et les possibilités des SVGs (Scalable Vector Graphics) sur le web. Contrairement aux autres formats d'image, les SVGs sont basés sur XML et peuvent être intégrés directement dans le HTML, permettant une manipulation dynamique avec CSS et JavaScript. L'article couvre les formes de base comme les lignes, rectangles, cercles, et polygones, et explique comment utiliser le viewBox
pour rendre les SVGs scalables. Il aborde également les attributs de présentation comme fill
et stroke
, et montre comment animer ces propriétés pour créer des effets visuels captivants. En résumé, les SVGs sont un outil puissant et sous-estimé pour créer des illustrations interactives et dynamiques sur le web.
L'article présente un outil appelé "Kubernetes The Easier Way" (k8s-tew), qui simplifie l'installation de Kubernetes en automatisant la configuration des prérequis et des logiciels tiers via une interface en ligne de commande. Inspiré par "Kubernetes The Hard Way" de Kelsey Hightower, k8s-tew prend en charge divers modes de déploiement, y compris local, sur une machine distante unique, ou sur plusieurs machines avec ou sans haute disponibilité. L'auteur décrit le processus d'installation, de configuration et de déploiement de k8s-tew, en soulignant ses avantages, comme l'installation complète d'un cluster Kubernetes avec de nombreux composants préinstallés, ainsi que ses inconvénients, notamment des limitations en termes de flexibilité d'accès SSH et de gestion des adresses IP.
Les "property hooks" sont apparus en PHP 8.4.
L'auteur explique en quoi ça consiste, et il montre tout au long de l'article comment il s'en sert. C'est très intéressant, notamment sur les interfaces !
Je repartage ça, ça peut être utile ^^
Il s'agit d'un captcha open source - une alternative à Anubis ?
L'idée derrière ces 5 projets est d'apprendre la mécanique interne de Docker pour mieux construire ses propres images.
L'article explore comment les jeux vidéo peuvent enseigner des compétences et des concepts précieux. L'auteur commence par évoquer l'idée de Steve Jobs sur la connexion des points de la vie rétrospectivement, suggérant que chaque expérience, même frivole, peut offrir des leçons précieuses. Il partage ses réflexions sur les jeux de plateforme, comme ceux de Mario, qui excellent dans l'enseignement intuitif des mécaniques de jeu sans recourir à des tutoriels textuels. Il discute également des jeux roguelikes, qui illustrent l'importance de l'adaptation et de l'exploitation des non-linéarités pour réussir. Les simulateurs de ferme comme Stardew Valley sont présentés comme des outils pour comprendre la gestion des flux de trésorerie et la mise à l'échelle des opérations. Enfin, il aborde les jeux de combat comme Super Smash Bros, soulignant l'importance de comprendre la métagame et de s'adapter aux tendances changeantes pour exceller. En somme, il montre que les jeux vidéo peuvent être bien plus que de simples divertissements, offrant des leçons applicables dans divers aspects de la vie réelle.
Apache, suite à une mise à jour, est plus strict sur les vérifications SSL. Ça a eu un impact sur les serveurs Plesk qui utilisent nginx en tant que proxy. Voici la commande à exécuter en tant que root
echo -e "proxy_ssl_server_name on;\nproxy_ssl_name \$host;" > /etc/nginx/conf.d/fixssl.conf && service nginx restart
Tout est dans le titre
L'article explore comment styliser les lettrines pour refléter l'identité visuelle d'une marque et enrichir la narration. L'auteur combine les pseudo-éléments ::first-letter et la propriété initial-letter avec d'autres propriétés CSS comme border-image et clip-path pour créer des effets visuels uniques. Des exemples pratiques montrent comment utiliser des ombres, des contours, des arrière-plans, des bordures et des transformations pour rendre les lettrines plus attrayantes. L'article met en lumière l'importance des lettrines dans la conception web pour attirer l'attention et guider le lecteur, tout en ajoutant une touche distinctive et mémorable.
L'article explore l'idée d'un décalage évolutif entre notre environnement ancestral et le monde moderne, en se concentrant sur l'attention. Tout comme la malbouffe exploite nos instincts pour nous pousser à trop manger, les médias numériques et les environnements de travail modernes exploitent nos tendances naturelles à prêter attention à certaines informations, comme le commérage ou les menaces potentielles, mais de manière disproportionnée et souvent sans valeur réelle. Cela conduit à une surconsommation d'informations superficielles et distractives, nuisant à notre capacité à nous concentrer profondément. L'auteur suggère que, bien que la volonté seule ne suffise pas à résoudre ce problème, nous pouvons redessiner notre environnement pour favoriser une consommation attentionnelle plus saine, par exemple en éliminant les médias sociaux et en privilégiant les contenus longs et curatés.