Flux
Couleur d'accent
Toutes les sources

JoliCode

31 articles Flux RSS
Programmation Web
SimHash : trouver les pages qui se ressemblent

SimHash : trouver les pages qui se ressemblent

Il y a quelques semaines, j'ai eu besoin de détecter du contenu dupliqué dans le crawler de redirection.io. Pas du dupliqué à la virgule près, ça c'est facile, mais du dupliqué « en gros, c'est la même page ». J'aurais pu utiliser des embeddings avec un LLM, mais il me fallait quelque chose de rapide et de gratuit. J'ai finalement utilisé SimHash, un algorithme qui date de 2002 et qui tient en trente lignes de PHP. Dans cet article, nous allons voir pourquoi md5() ne peut pas nous aider,…

JoliCode
Quand le cache de Symfony ralentit votre application...

Quand le cache de Symfony ralentit votre application...

Mettre une valeur en cache, c'est toujours plus rapide, non ? Et bien, pas forcément ! Cet article partage l'analyse d'un problème de performance causé par la protection "anti-stampede" du composant Cache de Symfony, et sur la manière dont nous l'avons diagnostiqué puis corrigé. Nous avons récemment corrigé un problème de lenteur sur une application Symfony en production. Le diagnostic nous a pris un certain temps, car la cause était contre-intuitive : le responsable était le composant Cache de…

JoliCode
L'Agent Development Environment : une nouvelle unité de travail

L'Agent Development Environment : une nouvelle unité de travail

Régulièrement, quelque chose arrive et change ce que « écrire du code » veut dire. Cette fois, il se pourrait que ça ne veuille plus dire écrire du tout. D'où je viens Ce qui suit est mon parcours, pas une histoire de PHP. D'autres ont vécu ces mêmes années très différemment. Mon histoire commence en 2013, quand PHP n'était pas le choix évident qu'il allait devenir, donc j'ai appris le C : pointeurs, gestion mémoire manuelle, segfaults. Ensuite je suis passé à l'Objective-C pour du…

JoliCode
The Agent Development Environment: A New Unit of Work

The Agent Development Environment: A New Unit of Work

The Agent Development Environment: A New Unit of Work Every few years, something comes along that changes what "writing code" means. This time, it might stop meaning writing at all. Where we come from What follows is my own path, not a history of PHP. Other people lived those same years very differently. My story starts in 2013, when PHP was not the obvious choice it would later become, so I learned C: pointers, manual memory management, segfaults. Then I moved to Objective-C for iPad…

JoliCode
Writing the PHP Virtual Machine in Rust (with a lot of help from AI)

Writing the PHP Virtual Machine in Rust (with a lot of help from AI)

A few years ago, if someone had told me to rewrite the PHP engine in Rust, I would probably have laughed 😆. Not because it is technically impossible, but because such a project traditionally requires years of reading C code, reverse engineering decades of optimizations, and an intimidating amount of perseverance. Today, Large Language Models have changed how we approach ambitious engineering projects. They do not magically produce production-ready software, but they dramatically reduce the…

JoliCode
Détecter les régressions visuelles dans la CI avec Playwright et Docker

Détecter les régressions visuelles dans la CI avec Playwright et Docker

Sur un gros site public, le front bouge tout le temps : une migration Tailwind par-ci, un composant React par-là, un bloc CMS qui change de gabarit. Et comme toujours avec le CSS, la modification d’une classe qui semblait anodine peut très bien décaler un bloc trois pages plus loin, sans que personne ne s’en rende compte avant la mise en production. Sur un de nos projets, nous avions déjà des tests Behat pour le fonctionnel, et des tests PHPUnit pour le métier. Mais aucun de ces tests ne disait…

JoliCode
JoliDay 2026 avec du malt, des aiguilles, de la 3D et des copeaux

JoliDay 2026 avec du malt, des aiguilles, de la 3D et des copeaux

Comme tous les ans, nous avons profité d’un jour férié (en application de la journée de solidarité avec les personnes âgées) pour nous retrouver tous ensemble et faire des projets ni Web ni Mobile, mais toujours de qualité 👌. Nous avons un gros faible pour le DIY et retrouvons la même gratification à résoudre des problèmes dans « le monde réel » que dans nos projets du quotidien ! Dans cet article, nous vous présentons les différents projets réalisés en une journée par les JoliCodeuses et…

JoliCode
JoliMediaSyliusBundle, a New Bridge for Your Sylius Projects

JoliMediaSyliusBundle, a New Bridge for Your Sylius Projects

Does the excellent Sylius E-commerce framework even need an introduction? If Sylius has established itself in the e-commerce ecosystem, it's largely thanks to its ability to adapt to a wide variety of business needs without imposing a rigid architecture. Its extension system allows for gradual feature evolution while preserving the framework's core mechanisms. Late last year, we launched JoliMediaBundle, a Symfony bundle dedicated to managing media libraries. It already came with two bridges…

JoliCode
JoliMediaSyliusBundle, un nouveau bridge pour vos projets Sylius

JoliMediaSyliusBundle, un nouveau bridge pour vos projets Sylius

Est-il encore nécessaire de présenter l’excellent framework E-commerce Sylius ? Si Sylius s’est imposé dans l’écosystème e-commerce, c’est notamment grâce à sa capacité à s’adapter à des besoins métier très variés sans imposer une architecture rigide. Son système d’extensions permet de faire évoluer progressivement les fonctionnalités tout en conservant les mécanismes du cœur du framework. Fin d'année dernière, nous avons lancé le JoliMediaBundle, un bundle Symfony dédié à la gestion de…

JoliCode
Accélérer votre CI : mettre en cache l’état de la base de données

Accélérer votre CI : mettre en cache l’état de la base de données

Il y a quelques années, j’écrivais Accélérer votre intégration continue. L’article passait en revue tout un tas de techniques pour rendre une CI plus rapide : cache Composer, cache Yarn, layers Docker, parallélisation, tmpDir de PHPStan… et, tout en bas de la liste, une idée un peu à part : plutôt que de rejouer les fixtures à chaque build, charger un dump SQL pré-généré. L’idée est séduisante, mais sous sa forme la plus simple (un dump statique, versionné, régénéré à la main) elle a un défaut…

JoliCode
Customizing Sylius Grids - Improved DX with Grid Mutators

Customizing Sylius Grids - Improved DX with Grid Mutators

In Sylius, grids handle back-office list rendering: data fetching, column definitions, filters, actions, and more. Sylius E-commerce ships with a large number of ready-to-use grids that can be customized to fit your project's needs. Until now, customization mainly relied on YAML configuration overrides or Grid events. These approaches still work, but they quickly hit their limits when you need to introduce business logic or benefit from a more modern, pleasant API. With the upcoming release of…

JoliCode
Customiser les grilles Sylius - DX améliorée avec les Grid mutators

Customiser les grilles Sylius - DX améliorée avec les Grid mutators

Dans Sylius, les grilles sont responsables de l'affichage des listes du back-office : récupération des données, définition des colonnes, filtres, actions... Sylius E-commerce fournit un grand nombre de grilles prêtes à l'emploi, qu'il est possible de personnaliser pour répondre aux besoins de votre projet. Jusqu'à présent, cette personnalisation reposait principalement sur des surcharges de configuration YAML ou sur les Grid events. Ces approches fonctionnent toujours, mais elles atteignent…

JoliCode
Profiler un consumer avec Blackfire

Profiler un consumer avec Blackfire

Quand on parle de profiling PHP avec Blackfire, on pense généralement à une requête HTTP : un clic sur l'extension navigateur, et hop, le profil apparaît. Mais que faire quand le code à profiler tourne dans un consumer ou un worker ; une commande Symfony qui boucle indéfiniment, consommant une queue ou traitant des tâches en background ? La bonne nouvelle : Blackfire peut fonctionner dans ce contexte. La moins bonne : on ne peut pas déclencher le profiling au moment où ça nous arrange... sauf…

JoliCode
Améliorer l’accessibilité d’un site existant : retour d’expérience chez JoliCode

Améliorer l’accessibilité d’un site existant : retour d’expérience chez JoliCode

Malgré des avancées réglementaires importantes, l’accessibilité numérique reste largement sous-estimée dans de nombreux projets web. Depuis le 28 juin 2025, l’European Accessibility Act (EAA) étend les obligations d’accessibilité à de nombreux services numériques privés. Pourtant, la réalité est encore loin des objectifs fixés : selon l’Observatoire du respect des obligations d’accessibilité numérique, seuls 44 sites sur 7 560 contrôlés déclarent être totalement conformes au référentiel général…

JoliCode
UX Days 2026 : Design, IA et conscience, ce que cette journée nous a appris sur notre métier

UX Days 2026 : Design, IA et conscience, ce que cette journée nous a appris sur notre métier

L'intelligence artificielle redessine nos métiers. C'est le constat que partagent aujourd'hui designers, développeurs et product managers. Les UX Days 2026 n'ont pas échappé à cette réalité. Parmi les nombreuses conférences de la journée, six nous ont particulièrement marqués et partageaient un fil rouge : comment concevoir avec conscience à l'ère de l'IA ? Keynote d'ouverture avec Pablo Ruiz-Múzquiz : L'avenir du design UX est-il l’open source ? La matinée s'est ouverte avec Pablo…

JoliCode
Esc