The biggest PHP event organized by the French PHP user group.

Thursday 24th October 2019

09:30 Writing Effective PHP
Talk by Nuno Maduro (40 minutes)

PHP has evolved massively since its first days, and it's on the road to a full-featured language. However, at the same time, there is a lot of outdated information and libraries with poorly written code. This talk is about writing PHP Code that is: safe, robust, and maintainable. We are going to cover a set of rules, that if you follow them; they will get you on the habit of writing code well. Get ready for a 25 min live-coding session, where I go through practical examples. You will learn how to design classes, how to think about your API to prevent breaking changes, and discover concepts around designing and creating objects, when and how to use immutability, and much more.

PHP Pragmatic Development
Talk by Frédéric Bouchery (40 minutes)

On ne va pas se mentir, DDD c'est bien, mais pas franchement facile à appréhender quand on débute. Et c'est bien là tout le problème : il n'y aurait que des développeurs seniors et des architectes sur nos projets, tout irait pour le mieux. Quand on parle d'expérience développeur (DX), il est donc nécessaire de prendre en considération ces jeunes inexpérimentés qui peuvent vite se perdre et enrayer notre belle machinerie. Héritage, traits, injection de dépendances, agrégation, programmation évènementielle, programmation orienté aspect, etc. faisons le point sur les architectures actuelles en PHP et retrouvons un peu de pragmatisme pour le bien de nos projets et de notre santé mentale.

10:15 La clean architecture: Pourquoi? Comment? Pour qui?
Talk by Nicolas De Boose (40 minutes)

Les frameworks et librairies externes sont une bénédiction pour les développeurs : cela nous permet de gagner du temps, d'utiliser du code (généralement) de qualité, et de nous concentrer sur ce qui est vraiment important: la vraie logique qui rapporte de la valeur! Cependant, tout vient avec un coût... A y regarder de plus près : qui est vraiment "le plus important" dans l'histoire? Le framework dicte ses lois: Vous devez "extend" ses classes, rajouter ses annotations, suivre sa structure de dossiers, etc... C'est une sorte de mariage forcé. Au début, tout est beau... Mais un mariage, c'est fait pour durer ! Quand la "mariée" décide de déprécier et ensuite supprimer ce que vous aimez chez elle (ou pire : elle n'est plus maintenue), vous vous retrouverez paralysé avec une version obsolète, par peur de casser votre fameuse logique métier... Ca ne peut plus durer ! Dans ce talk, on parlera de tout ce que j'aurais aimé qu'on me dise sur la clean architecture avant de commencer Comment controler le framework, plutôt que lui ne vous contrôle ? Comment arriver à ce que le framework et vos librairies ne soient qu'un détail d'implémentation ? Vous aurez en prime : Du code clair Une architecture claire, qui fonctionne sur du back-end comme du front-end Du code facilement testable unitairement... Plus besoin de "booter" votre framework pour tester vos vues Plus aucune peur de passer de mettre à jour une librairie, voire de la changer

Redis, ce n'est pas que pour le cache
Talk by Gregoire Pineau (40 minutes)

Redis sait faire bien plus que stocker des valeurs sous forme de Strings. Grâce à des structures de données évoluées et à ses performances hors du commun, il devient un allié très puissant à ajouter dans sa stack préférée. Des statistiques à la persistance de session en passant par les leaders board ou la gestion de coordonnées, vous ne verrez plus ce SGBD du même œil ! A travers une série d'exemples, des trucs & astuces, nous verrons comment utiliser Redis depuis une application PHP.

11:25 ⚡Une application résiliente, dans un monde partiellement dégradé⚡
Talk by Pascal MARTIN (40 minutes)

Dans un monde en perpétuelle évolution, pouvons-nous toujours atteindre « four-nines » de disponibilité ? Cloud et Kubernetes. APIs et Microservices… Nos architectures s’enrichissent et se complexifient. Au prix d’une certaine fragilité ? Nous commencerons par définir SLA, SLO et SLI et rappeler la signification de ces X-nines. Nous montrerons ensuite comment, dans un contexte en permanence partiellement dégradé, nos assemblages de services distribués nuisent à la fiabilité de nos plateformes. En profitant de l’expérience acquise sur 6play, nous verrons quelques pistes pour améliorer la résilience de nos applications, pour qu’elles répondent à nouveau aux besoins de notre public. Nous prononcerons peut-être même le terme de « Chaos Engineering » ;-)

3
L'e-commerce sans accroc avec Sylius
Talk by Olivier Allain (40 minutes)

Quand les solutions e-commerce ne peuvent plus rien pour vous, il ne vous reste plus qu’un recours, un seul : Sylius ! Venez découvrir ce qui se cache sous le capot : de l’architecture à la roadmap en passant par les plugins ou les tests afin que le lancement de votre prochain projet de site e-commerce se déroule comme votre plan préféré, c’est-à-dire, sans accroc !

12:10
7
Concevoir des applications PHP résilientes en 2019
Talk by Mickaël Andrieu (20 minutes)

Vous souhaitez créer une architecture en micro services, ou une API REST et un joli front en React parce que c'est à la mode. Mais que se passe-t-il quand l'un de vos micro services tombe, ou si un de vos appels à votre API met un peu trop de temps à répondre ? En gros, comment gérez-vous vous la résilience de vos applications ? En vingt minutes, je vous montrerai comment faire : notamment à l'aide d'une librairie PHP que j'ai créée et qui est intégrée dans le projet Open Source PrestaShop. Vous comprendrez comment fonctionne un "Circuit Breaker", comment le configurer et comment le tester. A la fin de cette session, vous aurez les clés pour ne plus craindre les problèmes de réseau. Et vous aurez acquis un nouveau réflexe: penser au pire, pour garantir le minimum vital à vos utilisateurs.

1
Accueillir des junior·e·s en reconversion : comment éviter l'échec
Talk by Cindy Liwenge (20 minutes)

Avec la multiplication des formations accélérées, on observe depuis quelques années une augmentation du nombre de développeur·euse·s en reconversion. Ces profils présentent une diversité importante et des compétences professionnelles riches. Toutefois, malgré l'apparente bienveillance de notre milieu, accueillir des junior·e·s en reconversion n'est pas aisé. Les premières expériences de ces développeur·euse·s sont déterminantes et, parfois, découragent certain·e·s, jusqu'à l'abandon. Comment réussir l'intégration des junior·e·s en reconversion ? Comment prendre en compte et valoriser leurs différences ? Et surtout : comment les retenir ? Lors de ce talk, je partagerai mes expériences et les histoires (vraies) de succès et d'échecs. Grâce à ces REX et en nourrissant mon discours de références, je donnerai des pistes pour permettre aux équipes en place de préparer le terrain et de passer des paroles aux actes.

14:25 Mercure, et PHP s'enamoure enfin du temps réel
Talk by Kévin Dunglas (40 minutes)

Mercure est un protocole réseau qui permet aux serveurs de « pousser » très facilement des mises à jour en temps réel. C'est un remplaçant moderne de WebSocket, qui dispose d'une caractéristique qui va particulier intéresser les développeurs PHP : contrairenement à WebSocket, Mercure a été conçu dès l'origine pour fonctionner avec les plateformes qui ne peuvent pas maintenir de connections persistentes, telles que PHP, ou le "serverless". Le protocole, qui a actuellement le statut d'Internet Draft, est donc très simple à utiliser avec notre langage préféré. Côté client, il est nativement supporté par tous les navigateurs navigateurs modernes, sans même avoir besoin d'un SDK ou d'un paquet NPM. Mercure, contrairement à WebSocket, tire parti au maximum de HTTP/2 et de HTTP/3. Il est auto-découvrable, et a été conçu dès le départ pour être utilisé avec les API REST et GraphQL. Il dispose d’un mécanisme d’autorisation, supporte la re-connexion automatique et la récupération des messages perdus en cas de problème réseau. Depuis quelques mois, Mercure est officiellement implémenté par API Platform et Symfony. Au cours de cette présentation, nous découvrirons ce nouveau protocole et ses intégrations PHP.

14:30
9
PHP 8 et Just In Time Compilation
Talk by Benoit Jacquemont (40 minutes)

PHP 7 a apporté des gains de performance importants. Mais saviez-vous que ces gains sont principalement issus du travail préparatoire pour la mise en place du JIT? La compilation Just In Time est un moyen de transformer l'opcode PHP directement en langage machine compris par le processeur, toujours pour obtenir des performances supplémentaires. Et c'est aussi un des composants principaux de la future version majeure de PHP. Ce talk sera l'occasion de plonger dans le fonctionnement de la technologie JIT choisie par l'équipe de développement du moteur Zend, ainsi que de présenter quelques premiers benchmarks.

When you get lost in API testing
Talk by Antonio Peric, Paula Čučuk (40 minutes)

If you are not writing tests yet, you should start. Tests will improve the quality of your code, reduce bugs and probably force you to think more about design and quality. Actually, the hardest thing is to start and figure out which type of tests to write. So you start researching and you find a lot of different materials and get even more confused.Even when you decide what type of tests to use, it can be hard to decide how to test some specific logic in your app. Don’t give up! We have some tips we learned along the way that will hopefully make your life easier. In this talk you will hear about different test types and when to use them. We’ll also show some tools for checking quality of your test. See you in Paris! :)

15:15
4
What's new with OPCache ?
Talk by Julien Pauli (40 minutes)

OPCache, le cache d'OPCodes par défaut de PHP, évolue aussi vite que PHP lui-même. Après quelques rappels sur ce qu'est OPCache, nous passerons en revue ses fonctionnalités actuelles: cache, pré-cache, optimiseur, modèles de mémoire partagée, etc... Nous verrons les différentes passes d'optimisation qu'OPCache opère sur les scripts, et nous rappelerons les différents paramètres de configuration d'OPCache, et comment les optimiser pour différents projets en production.

7
Se prémunir contre l’imprévisible : une analyse des failles les plus courantes en PHP
Talk by Paul Molin (40 minutes)

Même avec des frameworks robustes et éprouvés, il est encore possible d’introduire des vulnérabilités dans les applications PHP.En prenant l’exemple de Symfony, et en se basant sur des cas concrets et inspirés d’histoires vraies, nous verrons qu’il est facile y compris pour des développeurs chevronnés de faire des petites erreurs aux conséquences potentiellement désastreuses. À la tête d’une équipe chargée d’aider nos 80+ développeurs à construire des applications sans failles, j’ai pu répertorier les meilleures (et les pires) pratiques pour faire du code sécurisé. Des contrôles d’accès bancals aux Cross Site Scripting involontaires, en passant par les injections DQL, nous verrons les principales vulnérabilités des applications Web peuvent s’introduire subrepticement dans une application PHP et, surtout, comment s’en prémunir. À la fin de ce talk, vous aurez les idées claires sur la surface d’attaque de votre code applicatif, et sur les manières les plus simples de se protéger efficacement contre les vulnérabilités les plus courantes. Vous aurez toutes les clefs en main pour apporter une réelle culture de sécurité aux développeurs de votre équipe.

16:25 Neuroatypie et IT : quelques conseils
Talk by Alex Rock (40 minutes)

Un nouveau courant est né dans le monde de l'IT : recruter des neuro-atypiques, parce que leurs "capacités" seraient "meilleures". Mais pourquoi ce mouvement est-il né, et la combinaison "neuro-atypie / IT" est-elle vertueuse ? Nous allons ensemble aborder ce sujet encore trop méconnu et le mettre en condition dans notre activité professionnelle. Le déroulé de la conférence sera le suivant : Description de ce qu'est l'autisme et ce que sont les neuro-atypies Présentations des cas de recrutement d'autistes dans l'IT, qui les fait, et pourquoi Des conseils pour améliorer les relations humaines avec les personnes neuro-atypiques Vos questions, remarques et interrogations

17:10
10
Concevoir pour des futurs souhaitables
Talk by Marie-Cécile Godwin, Thomas Di Luccio (30 minutes)

2019 sera la dernière année qui ressemblera aux précédentes. Nous somme entré·es dans l'ère de l'Anthropocène, où nous humains sommes devenus une force géologique capable de modifier la planète, le climat et les dynamiques du vivant, et ce à nos dépens. Le design et la tech ont largement participé à l'exploitation des ressources naturelles et à l’accélération des cycles de production et de consommation. Nous actrices et acteurs des nouvelles technologies avons bien souvent perdu l’ancrage à la dimension systémique et politique de notre action. Nous avons malgré nous contribué à façonner ce monde prêt à s'effondrer... Il ne nous reste que peu de temps, c'est pourquoi nous vous proposons un moment de réflexion et d'introspection, mêlé à des voyages dans des temps futurs pour corriger nos biais négatifs sur le monde qui nous entoure et explorer ce que nous pouvons faire de mieux dès aujourd'hui. Nous vous proposons une invitation puissante à nous rassembler et nous questionner sur comment nous sculptons notre quotidien comme notre futur à travers nos métiers, au sein de notre industrie. Loin de nous l'idée de prôner la fin de la tech et de l'innovation : nous avons encore plein de cordes technologiques à notre arc que nous pouvons mobiliser différemment pour tracer les nouvelles règles d'un monde prospère, digne, résilient et circulaire. Cette intervention est le résultat de deux ans de réflexion et de recherches dont nous vous présenterons les premiers résultats pour agir dès maintenant et faire muter nos pratiques autant que nos paradigmes : des initiatives déjà existantes qui prouvent qu'on peut faire les choses autrement, des principes et heuristiques qui permettent de concevoir les bons outils pour des futurs différents, de l'inspiration pour faire muter profondément nos postures de conceptrices et concepteurs, etc.

Friday 25th October 2019

07:30 GraphQL, plus de raison de ne pas l'essayer !
Talk by Aurélien David (40 minutes)

Une sécurité compliquée, un cache réseau impossible et le monitoring d'un seul endpoint… en théorie une API GraphQL c'est plein de nouveaux problèmes. Voyons ensemble comment les résoudre et même, parfois, en tirer profit ! Mettre en place du cache applicatif simplement grâce au pattern dataloader et profiter du traitement par lots. Comment sécuriser tout en laissant de la souplesse aux clients ? Mais aussi profiter que nos clients demandent ce qu'ils veulent pour nous permettre un monitoring plus complet !

09:30
10
Si Darwin avait raison, l'agilité fonctionne par hasard.
Talk by Francois Zaninotto (40 minutes)

Les directions techniques semblent converties à l'idée que l'agilité est incontournable. Mais sur quoi repose-t-elle ? Qu'est-ce qui prouve qu'elle fonctionne ? Contre toute attente, la réponse a été découverte en 1859, dans un livre intitulé "De l'Origine des Espèces" écrit par un certain Charles Darwin. Et ce livre donne les clés pour qu'une transformation agile ne se fasse pas aux dépends des développeurs. François Zaninotto interprète le professeur Eugène Fournier, qui sera mieux placé que lui pour vous convaincre, science à l'appui, que les insectes ont beaucoup à apprendre aux agilistes.

10:15
4
Le TDD dans la vraie vie avec Panther
Talk by Adrien Lucas (40 minutes)

Panther est un tout nouveau composant Symfony dont l'objectif est de vous simplifier l'écriture des tests d'intégration et des tests end-to-end ! Dans ce talk vous découvrirez I. qu'est-ce que la pyramide des tests et en quoi Panther est l'outil idéal pour homogénéiser sa suite de tests ; II. en quoi consiste la pratique du TDD et comment doit-elle être adaptée pour correspondre aux problématiques d'une application web ; III. à quoi ressemblent ces pratiques sur un projet réel et quelles charges leur mise en place peut-elle coûter ; IV. quelles pistes peuvent être explorées pour améliorer nos suites de tests et bénéficier de toujours plus d'assurance qualité.

5
Aggressive PHP quality assurance in 2019
Talk by Marco Pivetta (40 minutes)

PHP has a reputation for being a very flexible, yet very messy programming language: keeping the chaos at bay requires a non-trivial amount of cognitive load and technical expertise. In this talk, we will explore how quality assurance for popular open source packages has evolved in the past few years, and how we can further improve our own projects. We will cover architectural practices, naming, code design, tooling and how to avoid common pitfalls that waste everyone's time. With this experience, we can all help the PHP ecosystem in further evolution.

11:25
7
Symfony HttpClient vs Guzzle vs HTTPlug
Talk by Nicolas Grekas (40 minutes)

HttpClient est un nouveau composant publié avec Symfony 4.3. Qu'apporte-il par rapport aux solutions précédentes ? Je vous propose de le découvrir lors de cette conférence. Que pouvons-nous attendre d'un client HTTP à l'heure où la version 3 est en préparation ? Quels sont les cas d'utilisation envisageables, du plus simple aux plus ésotériques ? À travers des exemples comparés de code et des benchmarks de performance, nous allons disséquer les possibilités de chaque librairie pour vous permettre de faire le bon choix en toute connaissance de cause.

3
Améliorer les ventes d'un site e-commerce en touchant à peine au code
Talk by Amrouche Hamza (40 minutes)

Si vous avez déjà travaillé dans le milieu de l’e-commerce, vous avez sûrement déjà entendu parler de temps de chargement, de performance, de tolérance des visiteurs ou hot path. “Le point d’entrée du site doit être instantané !". À travers ce retour d’expérience, intéressons-nous aux impacts qu’ont eus les améliorations de performances sur nos utilisateurs qu’ils soient internes (gestion de produits & devis) ou simplement clients et voyons comment les performances ont changé leur vie. Joli programme... Vous verrez également que ce n’est pas le seul axe de succès pour ce genre de site !

12:10
5
Symfony Checker is coming
Talk by Valentine Boineau (20 minutes)

Avez vous déjà entendu parlé de l'AST ? Peut être pas... Le CFG et le SSA ? Encore moins ! J'aimerais vous présenter ces algorithmes trop cools utilisés dans l'analyse de qualité de code avec lesquels j'ai eu l'occasion de travailler via un projet : le SymfonyChecker.

Devenir un Lead Dev - Echecs et succès
Talk by Romain Monceau (20 minutes)

On demande beaucoup de choses à un Lead Dev/Tech Lead parfois même des choses qui sortent de son périmètre, de ses compétences. Il n'en demeure pas moins que ce rôle est crucial au bon développement d'un logiciel. Facilitateur de la communication avec les product owners, garant de l'architecture applicative, responsable du delivery, organisateur du travail, évangéliste... Les casquettes peuvent très vite être multiples et demander beaucoup de challenges pour une seule personne. Ce talk est un retour d'expérience de mon aventure en tant que Lead Dev produit chez Akeneo. Avec le recul, je ne ferai probablement pas toujours les mêmes choix. Certains étaient bons d'autres moins. L'idée est de les partager sur des exemples concrets de situation avec ce qu'il faut et ne pas faire.

14:30
0
Be nice, help the person who hacks your servers to get your data (Seatec Astronomy)
Talk by Srdjan Vranac (40 minutes)

Where are your credentials and secrets stored? In .env files or in environment variables, or even worse in config files? Are your primary AWS keys shared amongst developers? Do you still have SSH keys from former employees on your servers? If your answer is "Yes" to one or more of these questions you probably haven't heard the term "secrets management" In this talk we will look into managing secrets in development and operations, and expose the problems related to them. I will give you an overview of the current state of techniques to mitigate these problems and we'll take a brief look at how an open source tool like Hashicorp Vault can provide a solution to managing secrets in the years to come.

Tout pour se préparer à PHP 7.4
Talk by Damien Seguy (40 minutes)

Déjà, PHP 7.4 toque à la porte, et il arrive les bras chargés de fonctionnalités et de modernisations. Que ce soit les FFI, le support du typage pour les propriétés, l’abandon des nombres real, la covariance, et même la modernisation de strip_tags, array_merge sans argument, et l’imbrication d’opérateurs ternaires : ouf, il va falloir se retrousser les manches. Durant la session, nous passerons en revue les nouvelles fonctionnalités, les incompatibilités, et nous verrons comment préparer son code dès maintenant.

15:15 De CRUD à DDD, comment Meetic a sauvé son legacy
Talk by Jean-Marie Lamodière (40 minutes)

Maîtriser son framework, c'est bien ! Il vous aidera à gérer les besoins génériques sans ré-inventer la roue, comme mettre en place un CRUD (Create Read Update Delete). Mais dès que votre logique métier devient complexe, il vous faudra de nouvelles compétences pour garder un code lisible et évolutif. - Vos tests automatisés cassent au moindre refactoring, vous freinant au lieu de vous aider ? - Votre code est complexe à prendre en main pour les nouveaux arrivants ? - Mettre à jour la version de votre framework prend des proportions anormales ? Chez Meetic, nous sommes passés par là ! Découvrez pourquoi et comment notre culture a évolué vers de nouvelles pratiques, comme le Domain Driven Design et l'architecture Port & Adapters, nous aidant par exemple à créer des tests enfin utiles ou à mieux dialoguer avec les spécialistes du métier. Des pratiques utilisables tout au long de votre carrière, quelques soient les changements de framework ou de language que nous réservent l'avenir !

Une année de PHP asynchrone en production
Talk by Benoit Viguier (40 minutes)

Oui, il est tout à fait possible de faire de la programmation asynchrone en Php et il existe des librairies matures pour le mettre en place dans vos projets. Oui, ça peut améliorer considérablement la performance de vos applications, mais si c’était aussi simple tout le monde le ferait déjà. Cela fait plus d'an que les équipes de 6play ont franchit le pas sur certains projets et les applications asynchrones tiennent toutes leurs promesses en production, mais la mise en place a soulevé beaucoup de questions. À quels critères se fier pour rendre une application asynchrone? Comment former les équipes sur ces nouveaux paradigmes? Comment adapter les outils existants et comment gérer ce nouveau type de charge sur les serveurs? Voici notre retour d’expérience sur le Php asynchrone, du développement à la production, en passant par la vie de tous les jours.

16:25 L'architecture progressive
Talk by Matthieu Napoli (40 minutes)

MVC, CRUD, ORM, SOA, DDD, CQRS, event sourcing, architecture hexagonale, micro-services… J'ai toujours couru après la solution optimale mais je n'ai encore jamais vu le projet parfait. Fini de courir. Et si la meilleure architecture ne dépendait pas de sa maintenabilité, son extensibilité ou sa testabilité, mais plutôt du contexte ? Le métier, la stratégie business, l'humain… Des variables pas toujours familières pour nous développeurs, alors qu'il existe des outils pour mieux les comprendre. L'architecture progressive se place en approche plutôt qu'en solution. Cette approche est libératrice : nous n'avons plus à opposer SQL et ORM, CRUD et DDD, façades et injection de dépendances ! Nous pouvons produire de la valeur ajoutée en mettant en face la qualité et l'effort approprié.

1
Gérez le Traefik de vos services
Talk by Sylvain Combraque (40 minutes)

Depuis quelques années nous ne développons plus des grosses applications monolithiques mais nous préférons les découper en plusieurs services afin de pouvoir déployer chaque service indépendamment les uns des autres et possiblement ne pas casser le coeur de l’application. Nous voulons aussi déployer de nouveaux services et aussi rajouter des instances de services déjà déployés afin d'accroître la tenue de charge du serveur contenant notre application et cela à chaud, sans redémarrage du reverse-proxy. De plus nous aimerions avoir possiblement plusieurs applications totalement différentes, par exemple un serveur Teamspeak, un site web avec une API en PHP, un front en ReactJS, un petit serveur web en Go, et une instance d'un serveur web Tomcat. Enfin nous voulons pouvoir déployer l'application très rapidement. Nous devrions avoir différents systèmes d'exploitation pour gérer tout cela, cependant grâce à Docker, à l'orchestration de Docker Swarm et la gestion des services grâce à Traefik nous allons le faire facilement.

17:10
6
Pratiquons la physique avec Star Wars !
Talk by Romain Lehoucq (30 minutes)

La saga cinématographique « Star wars » a eu un succès considérable. Elle met en scène des technologies futuristes qui, à l’évidence, dépassent largement les nôtres. Est-il possible de faire la part de la science et de la fiction, du rêve et de la réalité ? En utilisant les outils de la physique pour décrypter certaines scènes du film, nous allons mener l’enquête : quelle pourrait-être la nature de la Force qu'utilisent les chevaliers Jedi ? Quelle est la puissance d’un sabre-laser ? Comment classer les Jedi ? Il ne s'agit pas, bien sûr, de détruire la part de rêve inhérente à toute œuvre de fiction, mais plutôt de s'en servir comme support pour parler de physique de façon ludique. Ce questionnement transforme le spectateur en acteur très proche de l'astrophysicien qui, pour interroger l'univers, n'a d'autres sources que la lumière des astres captée par ses instruments. Au terme de l'enquête, son monde sera transformé. Que la Force soit avec vous !