atlas des actus
    
Jérémy Decool
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...
17  mai     22h00
Publier des dépendances PHP sur Packagist dans un projet monorepo
   Les dépôts monolithiques on parle également de dépôt monorepo ou monorepository consistent tout simplement à avoir un dépôt de code unique regroupant plusieurs projets. Cela peut être des applications distinctes dans le cas de microservices , des composants d’un même projet une API, avec son...
12  mai     22h00
Tester une connexion SMTP avec SwiftMailer
   J’ai pour habitude de créer une page de statut dans les applications que je développe afin de tester que l’ensemble des services nécessaires au bon fonctionnement de cette dernière base de données, serveur mail, API... sont lancés et correctement configurés. Nous allons voir dans cet article...
17  mars     23h00
Open source, gratuité et utilisation professionnelle
   J’aimerais aujourd’hui, au travers de ce billet, partager une réflexion concernant l’open source, que l’on utilise bien souvent gratuitement, dans un contexte professionnel. Ce billet découle de différentes discussions aussi bien orales qu’au travers des réseaux sociaux que j’ai pu avoir un...
05  mars     23h00
phpdaily le blog
   Si vous suivez sur ce blog ou les réseaux sociaux, vous n’êtes pas sans savoir que depuis le mois de février, je travaille sur un projet qui met à disposition des images Docker pour tester les versions en cours de développement de PHP. En plus de simplifier l’accès aux futures versions du langage...
31  janvier     23h00
Envie de tester PHP 7.4 ? Il y a une image Docker pour ça
   La version . de PHP est prévue pour la fin de cette année . Elle apportera un certain nombre de nouvelles fonctionnalités dont celle que j’attends avec la plus grande impatience: les propriétés typées. PHP est un langage dont le code source est librement disponible, il est alors possible de...
12  janvier     23h00
Rétrospective 2018
   s’est terminé et en ce début d’année , je cède à l’écriture des traditionnelles bonnes résolutions . Après tout, il est toujours intéressant de faire une petite rétrospective de l’année passée pour voir le chemin parcouru et de se motiver à définir de nouveaux objectifs. L’année derni...
09  décembre     23h00
Le rôle de lead developer
   J’ai l’impression que le poste de lead developer ou encore tech lead n’a pas réellement d’équivalence en français puisque, comme pour de nombreux termes dans notre industrie en fait, nous utilisons exclusivement une version anglo saxonne du terme pour nous exprimer. Avec l’émergence de notre...
02  septembre     22h00
Déploiement avec Deployer et Gitlab CI
   Chez Opéra Energie, la société dans laquelle je travaille, nous développons nos outils en PHP et utilisons Deployer pour le déploiement de nos différents projets. Notre code est hébergé sur une instance Gitlab et c’est tout naturellement que nous utilisons Gitlab CI pour notre intégration continue...
31  août     22h00
Docker, déploiement et PHP
   Si l’écosystème des conteneurs s’est autant démocratisé ces dernières années, c’est notamment grâce à l’apparition de Docker dont les ambitions sont clairement affichées sur le site: Build, Ship, and Run Any App, Anywhere, que l’on pourrait traduire par construisez, déployez, et exécutez n...
19  août     22h00
Soumettre un formulaire HTML en AJAX avec Javascript
   Nous travaillons aujourd’hui avec tellement de framework aussi bien pour concevoir les parties backend que frontend, que nous oublions parfois à quel point il peut être facile d’effectuer certaines actions pouvant paraître complexe sans utiliser aucun outil supplémentaire. C’est notamment le cas...