atlas des actus
    
Jérémy Decool
19  janvier     23h00
Les constructeurs nommés comme alternative aux constructeurs multiples en PHP
   En PHP et, contrairement à d’autre langage, il n’est pas possible d’avoir plusieurs constructeurs dans une classe. Pouvoir définir plusieurs constructeurs peut être intéressants dans de nombreux cas, comme par exemple, pouvoir construire un objet à partir de différents types de données. Si cela n...
12  janvier     23h00
Écrire une API idempotente (exemple en PHP avec Symfony)
   D’après la RFC qui spécifie la sémantique d’une requête HTTP, une requête est considérée comme idempotente si elle peut être effectuée plusieurs fois et obtenir un résultat identique lors de chaque appel. Par exemple, si l’on tente d’accéder à une ressource REST GET resource , deux appels ...
06  janvier     23h00
Copier une image Docker d’une registry à une autre
   J’ai récemment eu le besoin de copier plusieurs images d’une registry Docker à une autre. Bien que cette opération peut sembler simple au premier abord, il y a quelques points auxquels il faut prêter attention. La première solution à laquelle on pourrait penser serait de récupérer l’image sur...
05  novembre     23h00
Un environnement local Dockerisé en deux lignes de commande avec ddev
   Construire un environnement de développement en local peut être fastidieux. Si l’on souhaite un environnement natif, il faudra installer tout le nécessaire en local. L’utilisation de machines virtuelles est pratique, mais gourmand en ressources matérielles. L’alternative à tout cela c’est bien ...
27  octobre     23h00
Testez vos images Docker
   Vous construisez des images Docker régulièrement Vous savez alors certainement que ce n’est pas parce que la construction de votre image s’est réalisée sans erreurs que cette dernière va se comporter comme vous vous y attendez. La construction d’une image Docker, tout comme n’importe quel code ...
24  octobre     22h00
Le pattern Optional, le conteneur de valeur qui va remplacer vos données nullables
   Nous manipulons tous au quotidien des données nullables, or manipuler des données qui peuvent être null implique de devoir effectuer de nombreuses vérifications afin de savoir si la donnée que l’on manipule contient bien une valeur avant de l’utiliser. Auquel cas, nous aurons une erreur de type...
22  octobre     22h00
Installer des extensions PHP facilement dans une image Docker
   Si vous avez déjà construit des images Docker pour des applications ou projet PHP, vous avez certainement utilisé l’outil docker php ext install. Ce dernier permet d’installer et configurer simplement des extensions PHP qui seront disponibles dans le conteneur. Néanmoins, cet outil se limite...
11  septembre     22h00
Installer Cursor sur Ubuntu 24.04
   Je ne sais pas pour vous, mais s’il y a bien un outil orienté IA dont j’entends beaucoup parlé en ce moment c’est bien Cursor, un fork de Visual Studio Code dont la promesse est de vous faire développez plus avec grâce à l’intelligence artificielle tout en restant dans un environnement connu. Par...
03  septembre     22h00
Comment récupérer le nombre d’erreurs ignorées dans une analyse PHPStan
   Je travaille au quotidien avec PHPStan que ce soit pour mes projets personnels, mais également professionnels. Pour des projets complexes et ayant plusieurs années d’existence, il n’est pas rare d’ajouter des règles d’analyses graduellement afin d’éviter un trop grand nombre d’erreurs à corriger ...
28  juillet     22h00
Tester un bundle avec plusieurs versions de Symfony
   Lorsque l’on travaille et maintient un bundle Symfony, il n’est pas rare de devoir gérer la compatibilité de ce dernier avec plusieurs versions du framework. Par exemple, au moment ou je publie ces lignes, les versions . , . et . sont officiellement maintenues. Exécuter sa batterie de tests...
01  juillet     22h00
Le principe de verrouillage optimiste (optimistic locking) avec Doctrine ORM
   Lorsque l’on travaille sur une application manipulant une base de données, il est possible de se retrouver dans un cas ou une donnée va être modifiée par deux requêtes concurrentes. Cela peut être problématique, car cela peut entraîner des incohérences dans les données d’un système. Prenons l...
26  mai     22h00
Quelle différence entre DateTime et DateTimeImmutable en PHP ?
   Il existe en PHP deux classes pour gérer et manipuler nativement les dates: DateTime et DateTimeImmutable. Je me rends compte que de nombreux développeurs ne maitrisent pas la différence entre les deux notions. Ce billet est l’occasion de voir pourquoi et dans quel cas utiliser l’un ou l’autre. ...
12  mai     22h00
Gérer les décisions d’architectures dans les projets
   On me demande régulièrement comment sont gérées les décisions et le suivi d’architectures que l’on est amené à prendre dans les projets sur lesquels j’interviens. Dans la plupart des cas, cela va se dérouler en deux phases: la communication et le suivi. La première étape que j’ai nommée la...
05  mai     22h00
Retrouvez ma veille sur Maston & Bluesky
   Cela fait maintenant plusieurs années que je partage presque quotidiennement ma veille sur X Twitter . Du lundi au vendredi, généralement entre h et h, je diffuse jusqu’à publications sur le thème de développement et de l’informatique. Malheureusement, ces derniers temps, l’écosystème...
04  mai     22h00
Non, vous ne faites pas de la programmation objet
   Si vous posez la question à n’importe quel développeur, il vous répondra très certainement que oui, il fait bien de la programmation orientée objet. Effectivement, les langages de développement les plus utilisés actuellement tels que Python, C, Java, C , JavaScript, PHP ou encore Ruby permettent...
21  mars     23h00
Concentrez-vous sur les principes, pas la technologie
   Au détour d’une discussion sur les monolithes modulaires avec un collègue développeur ce matin, je lui explique être en train de regarder une formation en ligne intitulée Modular Monoliths in .NET . Il me demande alors: Pourquoi regarder une formation orientée .NET Alors qu’au quotidien, tu...
13  mars     23h00
Ne faites pas confiance aux données de vos utilisateurs
   S’il y a bien un proverbe que j’entends depuis que j’ai démarré l’informatique, c’est bien never trust user input ne faites pas confiance aux données de vos utilisateurs . L’idée est simple: lorsque vous attendez des données utilisateurs en entrée d’un traitement, il est nécessaire au préalable...
15  février     23h00
IA: ne ratez pas la révolution qui est en marche
   Hier soir jeudi février , j’ai eu la chance de pouvoir participer à la soirée de lancement de livre Hyperprompt, le premier manuel français de prompt engineering écrit par Flavien CHERVET auteur d’ouvrage et conférencier sur la thématique de l’intelligence artificielle . Durant cette...
05  février     23h00
Sauvegarder sa base de données MySQL sans perturber sa production
   Dans la majorité des cas, pour sauvegarder une base de données MySQL, c’est la commande mysqldump, l’outil fourni par le SGBD, qui va être utilisé. Mais saviez vous que cela n’est pas sans risque et que cette opération peut perturber les opérations en cours sur votre base de données J’ai pu le...
27  janvier     23h00
Installer et utiliser un LLM en local
   S’il y a bien un sujet tendance ces dernières années surtout depuis l’arrivée de Chat GPT , c’est les Large Language Model souvent appelé LLM . Personnellement, je n’échappe pas à ce mouvement . J’utilise Github Copilot au quotidien et Chat GPT régulièrement qui a remplacé à la fois Google...
19  octobre     22h00
Bouchon (mock) et implémentation mémoire dans les tests
   Un projet sur lequel je travaille actuellement utilise dans ses tests des bouchons ou mock en anglais , mais également des implémentations mémoires de service travaillant avec des objets. Aussi, on m’a demandé l’intérêt d’utiliser l’un ou l’autre et je trouvais le sujet assez intéressant pour en ...
08  octobre     22h00
Utiliser PHPUnit 10 avec Symfony
   Au moment ou j’écris ce billet, PHPUnit a été publié il y a près de mois le février . Et pourtant si on tente de l’utiliser dans un projet Symfony utilisant le bridge symfony phpunit bridge, nous obtenons l’erreur suivante: PHP Fatal error: Uncaught Error: Class PHPUnit TextUI...
27  juillet     22h00
Les interactions: la clé de la réussite d’un développement logiciel
   Au plus j’avance dans ma carrière et au plus je m’intéresse aux interactions entre individus. Je me rends compte au fil de mes expériences que la partie technique et produit ne sont qu’une partie de la clé de la réussite d’un logiciel. On peut avoir les meilleurs Product Owner, les meilleurs d...
18  janvier     23h00
Rendez-vous le 12 mai 2023 à l’AFUP Day
   L’AFUP Association Française des Utilisateurs de PHP vient de l’annoncer sur son blog cache , Twitter amp; Mastodon: La communauté PHP lyonnaise est en ébullition à l’idée du retour de l’AFUP Day dans sa ville. L’AFUP Day Lyon est SOLD OUT, mois avant l’événement Un peu plus...
07  janvier     23h00
De l’utilité des réunions
   La tendance qui n’est pas nouvelle, je l’entends depuis plusieurs années maintenant est à la limitation des réunions. Dernier exemple en date, Shopify qui envisage de supprimer toutes les réunions récurrentes de plus de deux personnes. J’ai vraiment l’impression qu’il s’agit là d’une tendance...
02  janvier     23h00
A propos de la couverture de code
   Lorsque l’on met en place des tests sur un projet et que l’on souhaite commencer à avoir des indicateurs sur ces derniers, c’est naturellement que l’on se tourne sur le taux de couverture de code alias le code coverage en anglais . Pourtant, dans absolument toutes mes expériences professionnelles...
05  décembre     23h00
Retrouvez les utilisateurs Twitter sur Mastodon
   Comme je l’ai annoncé il y a peu de temps, je suis maintenant présent sur Mastodon. Comme sur Twitter, j’y partage ma veille, mes réflexions ainsi que mes différentes trouvailles. Mais il s’agit également d’une source de veille. Migrer vers un nouveau réseau social n’est pas aisé, encore plus...
13  novembre     23h00
Retrouvez-moi sur Mastodon
   Depuis son rachat par Elon Musk, Twitter est un peu dans la tourmente: licenciement en masse, de nombreux départ volontaire des employés et des utilisateurs effrayés qui fuient vers des réseaux alternatifs. Il n’y a pas de doute, Twitter est dans une très mauvaise période. Je ne suis pour le...
15  septembre     22h00
Quelle est la définition d’une équipe ?
   Aujourd’hui, en consultant LinkedIn, j’ai eu l’occasion de voir passer une infographie de Catherine TESTA proposant une définition que je trouve très juste d’une équipe. Je vous laisse apprécier.
13  septembre     22h00
Corriger un fichier UTF-8 mal encodé
   J’ai une application qui me génère pour une raison que j’ignore des fichiers UTF qui contiennent des caractères mal encodés. Si ce n’est visuellement pas dérangeant, certaines applications plantent à l’ouverture du fichier à cause de cela. S’il vous arrive la même chose et que vous êtes sous...
25  février     23h00
Le pattern Parameter Object
   Après avoir publié mon billet concernant le pattern Commande hier, on m’a demandé s’il était possible d’utiliser une commande pour remplacer un groupe de paramètre d’une fonction ou d’une méthode avec pour objectif de simplifier le code et sa lisibilité sans pour autant mettre en place un bus de...
24  février     23h00
Le pattern Commande
   Si je reprends la définition de wikipedia, il s’agit d’un patron de conception ou design pattern en anglais qui permet d’encapsuler la notion d’invocation. C’est un moyen très utile de rendre votre code modulaire et lisible en découpant votre code en différentes commandes, chacune ayant des...
14  novembre     23h00
Gestion des identités et Domain Driven Design
   Maîtriser la gestion des identités de nos entités dans une application dont la conception est pilotée par le domaine Domain Driven Design est un enjeu majeur. Cela permet notamment d’être découplé de son système de gestion de base de données et d’avoir une maîtrise totale de la gestion des donn...
13  novembre     23h00
Quand utiliser des interfaces?
   J’ai récemment découvert le concept de Interface based programming également appelé Interface based architecture . Il s’agit d’un modèle d’architecture reposant sur des interfaces plutôt que des implémentations. J’ai notamment eu l’occasion d’expérimenter cette technique de manière dogmatique ou...
22  septembre     22h00
Lire du code est une compétence
   A ce sujet, je vous recommande la lecture de l’article de Trisha GEE ou elle explique bien le sujet et d’ou je tire le titre de ce billet. Ecrire du code lisible et ou facilement compréhensible est compliqué à juste titre, car c’est avant tout quelque chose d’extrêmement subjectif. Nous avons...
03  mars     23h00
Ne soyez pas passif, créez
   Hier, je vous incitais à vous lancer et à passer l’action. Si l’on y réfléchit, cela va de pair avec le fait d’arrêter d’être passif au quotidien et de passer à l’action. C’est aussi cette idée que m’a inspiré l’article Less Twitter, more building. Je me retrouve un peu dans ce dernier, j’ai r...
02  mars     23h00
Lancez-vous
   Je viens de lire Just Start de Guy TORBET, un étudiant de ans qui explique que peu importe ce que l’on souhaite faire et peu importe le moment ou l’on a l’idée de faire quelque chose, ce n’est jamais le bon moment de se lancer. On est trop jeune, on n’a pas assez d’expérience, on a une famille ...
18  octobre     22h00
Modéliser une relation plusieurs à plusieurs (n:n) dans un agrégat
   J’ai publié hier un article sur la notion d’agrégat, si le principe peut paraître relativement simple, il peut soulever quelques questions comme par exemple, comment modéliser une relation type n:n plusieurs à plusieurs . Prenons un exemple que je suis amené à manipuler régulièrement: le cas de...
17  octobre     22h00
La notion d’agrégat en DDD
   La notion d’agrégat est un principe essentiel de la conception pilotée par le domaine Domain Driven Design . L’agrégat désigne un groupe d’objets du domaine qui doit être manipulé comme une seule unité métier et dont les relations enfants ne peuvent être utilisées de manière indépendante. Prenons...
06  juillet     22h00
Utiliser MinIO comme stockage de données objets en PHP
   Je travaille sur un projet ou il est question de stocker un grand nombre de fichiers. Ce dernier devrait être hébergé dans le Cloud et notamment sur des infrastructures orientées Serverless. Il est donc impensable d’utiliser un système de fichiers classique pour stocker des fichiers. Je me suis...
31  mai     22h00
Définition du rôle de Tech Lead
   Je me suis déjà exprimé plusieurs fois sur le rôle de lead dev. Je découvre aujourd’hui la définition de Patrick KUA si vous ne le connaissez pas, je vous recommande vivement de vous intéresser à son blog sur le sujet. Si ce n’est pas déjà fait, je vous recommande vivement la lecture du...
03  avril     22h00
Cohérence des données dans un modèle orienté objet
   On en présentera plus la programmation orientée objet, c’est aujourd’hui l’un, si ce n’est le paradigme de programmation informatique le plus utilisé. Le concept central de ce paradigme, les objets représente un concept, une idée ou toute entité du monde physique définition Wikipédia . Le...
15  mars     23h00
La confusion entre symptôme et problème
   Dans mon travail de développement logiciel, il m’arrive régulièrement de parler de causes et conséquences. Il n’est en effet pas rare, lors de la correction d’un bug, de résoudre la conséquence d’un problème sans pourtant autant en corriger la cause de ce dernier. Ce qui implique qu’en réalité l...
17  février     23h00
Interroger un serveur DNS
   Le protocole DNS Domain Name System est un protocole central du web. C’est ce dernier qui est chargé de communiquer l’adresse IP associée à un nom de domaine. Pour gérer au mieux la croissance de cet annuaire, le protocole s’appuie sur un système distribué. Comme Wikipédia le décrit assez...
06  octobre     22h00
La gestion des enums en PHP
   Un enum, on parle également de type énuméré ou énumération en français, est un type de donnée qui consiste en un ensemble de valeurs constantes source Wikipédia . Il s’agit d’une structure très pratique, mais qui n’existe malheureusement pas nativement dans PHP. Si l’on se réfère à la...
02  octobre     22h00
Tout ce que vous devez savoir sur PHP 7.4
   La fin de l’année approche à grand et comme d’habitude, nous autres développeurs PHP auront sous le sapin une nouvelle version de PHP à notre disposition. La version . est une version que j’attends avec impatience notamment pour la possibilité de pouvoir typer les propriétés de classe. Ce...
22  août     22h00
Mettre en place une Review App d’application statique
   J’ai décidé d’écrire une série de quelques billets sur la gestion des Review Apps. Ces dernières représentent aujourd’hui une partie du Saint Graal des équipes de développement et DevOps. Le concept de Review Apps a été popularisé par Gitlab et consiste à déployer automatiquement du code...
12  août     22h00
Vous êtes lead dev ? Et maintenant ?
   Il y a quelques mois, j’écrivais un article sur le rôle de lead developer afin de donner ma vision sur le travail qui en découle. Je découvre aujourd’hui une présentation de Eryn O’Neil sur le sujet. The tech lead is the owner of the technological vision for a project, and the technical leader...
27  juillet     22h00
Mettre à jour automatiquement une description sur le Docker Hub
   Le Docker Hub c’est le registre officiel d’image Docker. L’annuaire ou toutes les personnes qui créent et maintiennent des images Docker peuvent les mettre à la disposition de tous. Pour avoir le plus de succès possible, il est alors important de bien remplir la description de son image, en...
18  mai     22h00
Déployer un projet PHP depuis un monorepo
   Je parlais dans un billet précédent de comment publier des composants PHP sur Packagist depuis un dépôt de code monolithique. Une autre question récurrente venant des équipes projet qui souhaitent mettre en place ce type de structure est: comment déployer un sous projet du dépôt de manière ind...