The annual conference organized by AFUP, the French PHP-users group, gathering all PHP and Open Source communities, pros and PHP lovers
09:30 |
PHP 7.2
Talk by Remi Collet (40 minutes) La version 7.2 devrait être publiée avant la fin de l'année. Présentation de cette nouvelle version et de ses nouveautés. |
Cocktail Temps-Réel pour l'Olympia
Talk by Amelie DUVERNET (40 minutes) Un nouveau cocktail c'est tout un challenge ! Dans le shake-up, l'objectif est d'afficher en temps réel le compostage des places sur les plans de salle de l'Olympia. Savamment mélangé au comptoir de Digitick, cela donne un riche retour d'expérience sur ce défi à relever. Un contenu riche et même complexe, qui a été brillamment mis en oeuvre par une équipe super motivée. Une franche réussite au final. Nos ingrédients : PHP, AngularJS pour la partie plan, PHP, NodeJS, RabbitMQ, Redis pour la partie temps-réel. Ne pas oublier les saveurs originales : mise en place d'un système de bascule, en cas de perte de connexion du serveur NodeJS, gestion des piles de sièges suivant les filtres sélectionnés. La dégustation se terminera par une démonstration. |
|
10:15 |
L’AB testing chez M6 Web
Talk by Nastasia Saby, Fabien de Saint pern (40 minutes) Retour d’expérience sur notre solution d’AB testing utilisée sur 6play pour expérimenter de nouvelles fonctionnalités, telles que la recommandation et la personnalisation à la maille utilisateur. Nous parlerons également de canary-testing pour l’optimisation et la mise en production. Nous montrerons la mise en place sur une architecture en micro-services déjà existante, utilisée dans un environnement multiplateforme (Web, Mobile, IPTV). Nous aborderons le monitoring et tracking des tests, ainsi que le suivi de cohorte. Nous parlerons Symfony 3, Apcu, Redis, Varnish… mais aussi Kafka, Cassandra, Elasticsearch, Hadoop. |
La génération de dates en PHP
Talk by Kevin Nadin (40 minutes) Les dates en PHP peuvent être en apparence simple d'utilisation, mais il existe plusieurs comportements inattendu généralement méconnu des développeurs, des méthodes pratiques et des pièges dans la génération de dates. Cette présentation permet de voir comment générer des dates simplement en utilisant des timestamps, en utilisant l'objet DateTime, les Timezone, et lors de ces revues nous verrons les pièges lié à ces fonctions. Nous finissons avec la résolution de demandes réelles à but financier ou pour du reporting. |
|
11:25 |
Écrire des tests pour le long terme
Talk by Charles Desneuf (40 minutes) Début de projet, bonne résolution, cette fois on va faire des tests ! Au début tout se passe bien, puis petit à petit les tests commencent à devenir un frein au projet, ils prennent du temps à écrire, à s'exécuter, à modifier, virent au rouge à la moindre modification du code. Nous verrons entre autre comment organiser les tests, quels sont les pièges à éviter et comment améliorer leur lisibilité. Ces différentes techniques permettant d'améliorer la maintenabilité des tests et faire qu'ils aillent même jusqu'à servir de documentation. |
Software Management Lessons from the 1960s
Talk by Larry Garfield (40 minutes) "The Mythical Man-Month" is one of the seminal books in the field of software project management. It was written in 1975, based on experience from the 1960s. Is it even still relevant? Turns out, it is. Technology may have changed dramatically but people have not. Managing software projects is about managing people, not bits, and creative people engaged in intellectual endeavors are notoriously hard to predict and manage. (Just ask my project manager.) Fortunately, many of the lessons-learned Brooks' presents are still relevant today. Some are directly applicable ("adding people to a late project makes it later") while others are valid with a little interpretation. Still others fly in the face of conventional wisdom. What can we learn from that? This session will present a modern overview of the ideas presented by Brooks and a look at what we can still learn from them even today. |
|
12:10 |
L'art subtil du nommage
Talk by Julien Janvier (20 minutes) C’est bien connu, dans le développement logiciel, il n’y a que deux choses difficiles : l’invalidation de cache, et le nommage. Côté cache je ne peux malheureusement rien pour vous. En revanche, en ce qui concerne le nommage de nos chères variables, méthodes et classes, il est légitime de se poser quelques questions. Pourquoi est-ce si compliqué ? Y-a-t-il des pièges à éviter ? Existe-t-il des règles ou des méthodes qui pourraient nous aider ? Dans cette brève présentation, je vous propose d’explorer quelques pistes afin de tenter de répondre à ces interrogations. |
Signaux, process id et PHP
Talk by Alexandre Balmes (20 minutes) On a tous nos petites lubies et l’une des miennes consiste à maîtriser au mieux mes taches CLI (qu’elles soit exécutées via un cronjob ou non). Nous allons donc évoquer ce sujet avec une petite application en ligne de commande et des processus plus ou moins coûteux afin de voir comment améliorer la qualité de nos scripts PHP. |
|
14:30 |
Le Streaming d'API : pourquoi ? comment ?
Talk by Audrey Neveu (40 minutes) Nous savons que l’animation est essentielle pour l'interaction avec nos utilisateurs. Mais aujourd'hui l'interactivité ne peut plus se résumer à l’UX. Twitter, Waze, Slack … toutes les applications à succès utilisent le temps réel pour rendre leurs utilisateurs addicts. Mais comment faire pour transformer votre API statique en un flux de données temps-réel ? Du pull ? Du push ? Des Webhooks? Vous connaissez sûrement les Web-Sockets, mais avez vous déjà entendu parler de Server-Sent Events ? Dans ce talk nous comparerons ces technologies pour comprendre dans quel cas elles s'appliquent le mieux avant de voir comment on peut aller encore plus loin en réduisant la quantité de données échangées. |
Un framework basé sur les middlewares, ça donne quoi ?
Workshop by Matthieu Napoli (3 hour) Nous allons écrire ensemble un framework web basé sur les middlewares PHP. Vous n'avez jamais écrit de framework, et vous ne connaissez pas les middlewares ? Parfait ! Les middlewares sont parfois vus comme un détail d'implémentation pour des problématiques très précises. Après avoir découvert ces middlewares via PSR-7, après avoir écrit un framework avec et après avoir collaboré sur la prochaine PSR-15, ma vision est maintenant différente : les middlewares permettent de mieux comprendre et aborder les questions d'architecture dans nos applications. Plutôt que de se restreindre à des problèmes spécifiques, nous partirons de zéro en commençant par les concepts de base des applications web. Nous utiliserons la simplicité du middleware pour implémenter pas à pas les différentes briques qui composent un framework jusqu'à obtenir une application web complexe. Seul pré-requis : connaitre PHP et avoir des bases en programmation orienté objet. On construira le reste ensemble. |
|
Maisons du Monde et l'architecture orientée services
Talk by Marc Hugon (40 minutes) Le site www.maisonsdumonde.com a ouvert il y a 11 ans. Il y a un peu plus d'un an, pour assurer une croissance importante et créer une expérience client unifiée, nous avons fait le choix de migrer vers une architecture logicielle orientée services et de faire converger nos applicatifs e-commerce et de prise de commande en magasin. Nous reviendrons un peu plus précisément sur les choix que nous avons fait (gestion des versions, git, déploiement, logs applicatifs, ...), et nous vous présenterons quelques changements majeurs dans nos méthodes de travail, que nous n'avions pas forcément tous anticipés mais qui s'avèrent très efficaces. |
|
15:15 |
On a migré nos sites en full HTTPS !
Talk by Sébastien Rogier (40 minutes) Depuis plusieurs mois maintenant, Firefox et Chrome alertent plus ou moins fortement à propos des sites qui proposent de saisir des informations sensibles sans avoir établi de connexion sécurisée. Cette conférence va vous expliquer comment nous avons migré notre plateforme e-commerce en full HTTPS, les choix d'architecture que nous avons effectués, les différentes étapes de la migration en ayant pour objectif de n'avoir aucune interruption de service, mais aussi les différents problèmes rencontrés et nos solutions. Enfin, cette présentation vous montrera les impacts constatés après la migration sur le SEO et la webperformance. |
Climbing the Abstract Syntax Tree
Talk by James Titcumb (40 minutes) The new Abstract Syntax Tree (AST) in PHP 7 means the way our PHP code is being executed has changed. Understanding this new fundamental compilation step is key to understanding how our code is being run. To demonstrate, James will show how a basic compiler works and how introducing an AST simplifies this process. We’ll look into how these magical time-warp techniques* can also be used in your code to introspect, analyse and modify code in a way that was never possible before. After seeing this talk, you'll have a great insight as to the wonders of an AST, and how it can be applied to both compilers and userland code. (*actual magic or time-warp not guaranteed) |
|
16:25 |
Développer plus rapidement avec Symfony 4
Talk by Kévin Dunglas (40 minutes) Symfony est un framework universellement reconnu pour sa qualité, sa fiabilité et sa capacité à propulser les gros projets "entreprise". Mais depuis quelques années, Symfony s'est également doté de nombreuses fonctionnalités permettant de développer toujours plus rapidement des applications web. Symfony 4 propose des améliorations majeures dans ce domaine grâce à une refonte profonde de la configuration par défaut du framework qui va changer profondément la manière dont nous développons des applications. Au cours de cette présentation, j'aborderai : * Les grands concepts et les nouveautés de Symfony 4: micr-framework par défaut, 12-factor app, nouveaux composants... * Flex, le nouvel installateur surpuissant de Symfony qui peut également installer et configurer automatiquement bibliothèques et bundles * La nouvelle structure de répertoire simplifiée (et sans bundle) de Symfony 4 * L'autowiring (qui est désormais activé par défaut), qui permet l'injection automatique des dépendances sans avoir à écrire aucune configuration (fini le YAML et le XML) * Le système de contrôleurs, amélioré et assaini * "Encore", le nouveau système de gestion des assets (JS, CSS) basé sur Webpack * Les intégrations officielles des bibliothèques Doctrine (ORM), API Platform (API Rest) et EasyAdmin (générateur d'admin) * Comment utiliser facilement Symfony 4 avec Docker du poste de dev jusqu'au déploiement dans le Cloud, grâce à un squelette dédié A la fin de ce talk, vous saurez comment utiliser Symfony aussi bien pour vos gros projets que pour vos prototypes, vos petites applications et vos "week-end projects", tout en vous permettant de basculer d'un mode à l'autre. |
Développeur et protection de la vie privée
Talk by Erwan RIchard (40 minutes) Entre les GAFAs et le monde fou de l'internet des objets, le numérique ne nous a jamais autant espionné et catalogué. Je me pose de plus en plus de question sur notre responsabilité en tant que développeur envers la protection de la vie privée. Avons-nous des alternatives ? Peut-on simplement refuser de développer une fonctionnalité qui nous dérange. Une conférence qui pose des questions et ouvre le débat. |
|
17:10 |
C'est quoi d'être différent dans l'IT ?
Talk by Haikel Guemar (30 minutes) On parle beaucoup des problématiques de diversité, parfois avec véhémence (e.g Google Manifesto). Pour une fois, j'aimerais juste revenir sur un point essentiel: c'est quoi être différent dans l'IT? Prendre quelques minutes pour se mettre dans les chaussures d'une femme, d'une personne LGBT, d'un handicapé, d'une personne de couleur différente, de culture différente, ou même d'un milieu social différent dans un monde dominé par une culture fortement homogène avec ses propres codes. |
09:30 |
Des Lego, des bonnes pratiques et du fun !
Workshop by Pierre Plazanet, Antoine Lelaisant (3 hour) Expliquer les bonnes pratiques de code est compliqué. La compréhension étant une des clés pour changer l'état d'esprit, et les bonnes pratiques techniques un pré-requis pour créer du code de qualité, il est important de les expliquer. Je vous propose d'utiliser les Lego pour comprendre les mécanismes et les intérêts : - de la simplicité, - du TDD, - de la refactorisation, - de l'intégration continue, - du code "propre". D'après un atelier original de Mike Bowler et Bryan Beecham. Les intervenants : Nous - 1 scrum master et 1 développeur - avons cherché des jeux simples pour expliquer à des dev/manager/dirigeants/PO à quel point les développeurs et leur manière de coder est une des pierres angulaires de l'agilité. Et surtout comment leur faire prendre conscience que du bon code c'est du temps, de la réflexion et du travail d'équipe. Chaque jeu dure entre 20 et 45mn. En début de session les participants choisiront les jeux auxquels ils souhaitent participer. Nous serons 2 animateurs donc plusieurs petits groupes pourront se former pour jouer à des jeux différents. Ces jeux ont été créés par Mike Bowler et Bryan Beecham. Attention spoil, description des jeux : http://www.gargoylesoftware.com/ex |
Les process qualité - le cas de Symfony
Talk by Nicolas Grekas (40 minutes) En entreprise ou pas, assurer la qualité d'un projet logiciel sur la durée est un challenge difficile. Parce qu'il est ouvert aux yeux de tous, pour le meilleur et pour le pire, contribuer à un projet open-source est souvent l'occasion d'apprendre à revoir ses exigences. À travers le cas "Symfony", je vous propose une visite guidée des process mis en place années après années, écueil après écueil. Contributions, review, intégration continue, process de publications, politique de suppression de code, standardisation des pratiques, etc. Voyons ce qui, au delà du code, contribue de façon essentielle au succès du projet. |
|
Les hexagones de la Ruche qui dit Oui !
Talk by Benoit Merlet (40 minutes) Malgré une douloureuse ré-écriture en partant de zéro, le site de la Ruche qui dit Oui ! n'avait toujours pas d'architecture évidente permettant de faciliter les évolutions fonctionnelles et techniques. Afin d'éviter une nouvelle "big ball of mud" difficile à maintenir, l'équipe a décidé l'année dernière de procéder à la migration continue de notre architecture vers un ensemble d'hexagones. Chaque hexagone est en réalité un module bien borné et bien découplé au sein d'un monolithe, ce qui nous permet de ne pas céder aveuglément à la mode des microservices ! Voyons ensemble comment cette migration continue a débuté, quels sont les pièges à éviter et bien sûr quels bénéfices nous en retirons au quotidien. |
|
10:15 |
Télétravail et voyage, entre mythe et réalité
Talk by Stéphane Hulard (40 minutes) Adopter un nouveau mode de vie pour découvrir le monde tout en travaillant, est-ce possible ? Travailler dans le web c'est cool, il suffit d'un ordinateur et d'une connexion internet pour bosser de n'importe où, même sur une plage à l'autre bout du monde ! Mais adopter un nouveau mode de vie pour découvrir le monde tout en travaillant, est-ce possible ? Après cinq ans en tant qu'indépendant, on a décidé avec ma femme et mes trois enfants, de confronter le rêve à la réalité. Entre joies et galères, je vous raconte comment ça se passe… |
19 millions de recherches par jour @ Meetic
Talk by Sébastien Le Gall (40 minutes) Un moteur d’indexation au pays des événements et des microservices. Comment maintenir à jour un index Elasticsearch quand le ownership des données à indexer est distribué à travers de multiples micro-services? Comment requêter un index sur la base de paramètres qui sont, eux aussi, fournis par d'autres services? Comment faire quand l’ordre de réception des messages de mise à jour de l’index n’est pas forcément l’ordre d’insertion logique des données? Pour répondre à ces questions, je raconterai l’histoire de Jon et Ygritte en suivant un ensemble de parcours utilisateurs emprunté par des millions de personnes tous les jours sur nos plateformes. Nous verrons comment orchestrer Kafka, Symfony et ElasticSearch pour répondre à une volonté de découplage des micro-services et à une problématique de maintenance en temps réel d'un index. A chaque étape, je présenterai les différentes options envisagées, nos contraintes (traffic, performance, robustesse) et les choix que nous avons fait dans une logique agile de développement itératif. |
|
11:25 |
Réécriture de code vieux de 17 ans
Talk by Anna Filina (40 minutes) Avez-vous déjà eu à maintenir une application de 17 ans? Du code mort partout, des requêtes à la base de données entre deux balises HTML et quelques pages encore en PHP 3. Cette présentation de niveau stratégique vous mènera à travers une réécriture progressive depuis du code legacy à la dernière version de PHP. Apprenez à automatiser les tests de legacy, vous balader de façon transparente entre le vieux et nouveau code, et à surmonter d'autres défis qui se posent lorsqu'on travaille avec du legacy. |
The secrets of Cryptography
Talk by Christopher Riley (40 minutes) Alice and Bob have secrets they want to talk about without Eve being able to listen in. Worse yet, the mischievous Mallory delights in changing messages sent between parties. In such a hostile environment how can Alice talk to Bob without their messages being overheard and how can she be sure that it was Bob that sent the message in the first place? This talk will take a brief look at historic codes and ciphers before taking a look at modern day Cryptography. If you want to be able to know the difference between a block cipher and a stream cipher or get a glimpse into the mathematics behind public key Cryptography this talk is for you. |
|
12:10 |
Les interfaces, l’ADN de votre application
Talk by Sébastien LAVENANT (20 minutes) Tout comme l’ADN, qui permet l’identification d’une personne, les interfaces représentent la signature structurelle de votre application. Nous en utilisons tous, mais les exploitons nous au mieux ? Que se soit pour l’injection de services, les tests, l'exposition d’API, ou bien d’autres usages, elles sont au coeur de notre quotidien. Je vous propose de découvrir comment profiter des possibilités offertes par l’utilisation de ce formidable outil : l’interface. |
Log me now
Talk by Kévin Gomez (20 minutes) Souvent insuffisants et au mieux mal organisés, les logs sont pourtant un composant essentiel à la compréhension et à la maintenance de nos applications. Entre les niveaux de logs mal utilisés, les messages incohérents ou instructions de log éparpillées dans tout le code… il devient vite difficile d'extraire quoi que ce soit d'utile. Et si nous prenions le temps de réfléchir à ce qui doit être enregistré ? Pourquoi ? Dans quel format ? Avec quelles informations ? |
|
14:30 |
Principes et Patterns du DDD
Workshop by Alexandre Balmes (3 hour) L'objectif de cet atelier est simple : faire en sorte que vous repartiez avec une architecture polyvalente, évolutive et permettant de couvrir petits comme gros projets. Si vous cherchez à optimiser vos POC sans forcément tout passer à la poubelle, si vous cherchez à créer de la récurrence entre vos projets ou encore si vous êtes juste curieux : cet atelier est fait pour vous. Pas de niveau requis, il suffit de connaître les bases du PHP. C'est votre souci du détail qui nous permettra d'explorer toutes les pistes. |
GraphQL, la relève de REST ?
Talk by Francois Zaninotto (40 minutes) REST est devenu un standard pour les APIs web. Mais malgré sa popularité, il est plein de défauts. Son successeur existe et il vient de Facebook. Venez découvrir en détail le principe, la mise en oeuvre et l’écosystème de GraphQL. Vous repartirez de cette conférence avec la réponse à la question : dois-je utiliser GraphQL pour mon prochain projet ? |
|
Refacthon
Talk by Frédéric Bouchery (40 minutes) Vous savez ce qu'est le refactoring, mais connaissez-vous le refacthon ? Normal, c'est un terme que nous avons inventé chez Figaro-CCMBenchmark et qui consiste en des séances de refactoring en groupe comme on pourrait le faire lors d'un "mob programming". Il y a d'énormes avantages à pratiquer régulièrement le refacthon, et nous vous proposons d'en faire un en live (petites perles de code PHP en prime). |
|
15:15 |
Paradoxes and theorems every developer should know
Talk by Joshua Thijssen (40 minutes) What do german tanks, your birthday and quantum physics have to do with our daily development work? It turns out, quite a lot! During this presentation, I will explain a series of mathematical theorems and paradoxes that we encounter every day during development, but we often fail to recognize. By using these theorems, we can create better code, find more secure and efficient solutions to our problems, and it even helps you out communicating with clients and project owners. |
Faut-il faire du travail de qualité ?
Talk by Jean-françois Lépine (40 minutes) Laissez moi vous raconter l'histoire de Bob et Alice, dont les enjeux sont assez complexes (spoiler : ça sent le vécu) : Deux développeurs (Bob et Alice) doivent estimer le temps de développement d'un site ; Bob pense finir en une semaine ; Alice en 8 semaines. Lorsqu'on interroge Bob, il répond qu'il s'agit là d'un site vite fait ; comme il ne fait que peu de bugs, il n'aura pas à déployer souvent, alors un simple serveur FTP devrait suffire. D'ailleurs il a déjà un serveur pour un autre client, il suffira de tout mettre dessus et d'ajouter un vhost ni vu ni connu. Pour les tests, ça prend trop de temps (et c'est vraiment désagréable !), donc pas la peine. Pour les spécifications, on est agiles non ? Lorsqu'on interroge Alice, elle explique qu'elle ne peut travailler sans Jira, Jenkins, Gitlab, PHPUnit, Capistrano, Docker, Yarn, Bower ni Gulp sous peine de fournir un travail de mauvaise qualité. Elle a donc tenu compte du temps d'intallation et de configuration de ces outils. Elle doit d'ailleurs étudier la Blockchain, ReactJs et Kubernetes pour affiner le temps estimé. Qui a raison ? |
|
16:25 |
Le langage objet passé, présent futur
Talk by Sophie Beaupuis (40 minutes) Comment en est-on arrivé à la nécessité d'un langage orienté objet ? Quelle était le besoin et l'idée de départ ? Cette conférence a pour but de répondre à ces questions et de questionner aussi le présent, notre façon de "faire de l'objet" dans PHP aujourd'hui. Enfin nous aborderons pour finir deux visions de l'objet plus récentes : le motif "Objet nu" et la programmation orientée à l'Est. |
git, vers l’infini et au-delà!
Talk by Van Belle Jonathan (Grummfy) (40 minutes) git, la plupart d’entre nous l’utilise, on a tous une connaissance plus ou moins vague de git : commit, merge, push, pull et éventuellement des rebase ou encore des stash. Je ne vais pas vous parler de cela! Ce que nous allons voir c’est comment étendre git, comment faire en sorte que dans votre flux habituel de travail git soit là pour vous épauler avec quelques petit trucs et astuces. En gros, nous allons voir comment, au travers de git, créer des plug-ins vous permettant de vous épauler au quotidien, et tout cela dans notre langage favori ! Que cela soit pour votre boulot, pour vous, pour vos projets open source ou encore pour passer de l’un à l’autre, je vous garantis que vous repartirez avec de l’extra et que vous ne voudrez plus vous en séparer. |