Keynote d'ouverture

Salle Forum 18/05/2017 08:45-09:15 - Niveau : N/A - Français

Bienvenue à toutes et tous ! 

Sécurité web : et si on continuait à tout casser ?

Salle Forum 18/05/2017 09:20-10:00 - Niveau : Intermédiaire - Français

Sur le même principe que lors de mon talk de l'année dernière ( https://www.youtube.com/watch?v=YRRUbsXHC80 pour les curieux ), je vais vous montrer d'autres moyens de casser des sites, dans le but que vous sachiez comment vous en protéger par la suite. Redirect attacks, URL obfuscation, Man-in-the-Middle, Password reuse, premium phone numbers, captcha cracking, insecure direct object reference.... sont sûrement des buzzwords que vous avez entendus, mais savez-vous les exploiter ?

Does the SPL still have any relevance in the Brave New World of PHP7?

Salon VIP 18/05/2017 09:20-10:00 - Niveau : Intermédiaire - Anglais

Largely ignored under PHP5, the SPL (Standard PHP Library) offered a powerful toolbox for developers, ranging from it's horrendously named collection of Iterators, and a series of Interfaces allowing us to build our own, to DataStructures, and Object Oriented file handling classes. Fast and powerful, the SPL provided a stable and well-tested library of classes and functions But with all the performance and memory improvements of PHP7, SPL has remained unchanged, and feels like it has been left behind. Now, Generators provide a simpler replacement for writing our own Iterators without all the boilerplate code that SPL's core Iterators require, especially with the introduction of "yield from" in PHP7 for recursive Iterators. And PHP7's performance improvements allow us to write our own Datastructures (based around standard PHP arrays, or custom objects) that are as efficient as SPL's basic Datastructures. So does SPL still have any purpose or value in this new world of PHP7? Let's find out!

[ATELIER] My app is secure... I think

Salle d'atelier 18/05/2017 09:20-12:20 - Niveau : Grand public - Français

Inscription sur inscription (gratuite) uniquement ! 

With more and more sites falling victim to data theft, you've probably read the list of things (not) to do to write secure code. But what else should you do to make sure your code and the rest of your web stack is secure ? In this tutorial we'll go through the basic and more advanced techniques of securing your web and database servers, securing your backend PHP code and your frontend javascript code. We'll also look at how you can build code that detects and blocks intrusion attempts and a bunch of other tips and tricks to make sure your customer data stays secure.

Haute disponibilité native avec MySQL

Salle Forum 18/05/2017 10:30-11:10 - Niveau : Intermédiaire - Français

« Disponibilité du service », « Redondance des données », « Tolérance aux pannes », ... ces termes vous sont familiers. Vous savez également que la base de données n'est pas le composant le plus facile à apprivoiser, lorsque l'accès aux données ne doit pas être interrompu, parce que chaque arrêt de service à un coût (sur le Revenue, la Réputation, la Perception client, ...) pour l'entreprise. Avec MySQL Group Replication, MySQL intègre dans une seule et même distribution, une solution de Haute Disponibilité, multi-maîtres avec détection et résolution de conflits, très facile à mettre en œuvre.

2 ans avec Pomm

Salon VIP 18/05/2017 10:30-11:10 - Niveau : Intermédiaire - Français

Comment survit-on à un long développement sans utiliser Doctrine mais en s'appuyant sur Postgres avec l'OMM Pomm ? Quels problèmes a-t-on rencontré et quelles solutions cela nous a-t-il apporté ? Cette conférence se veut être un retour d'expérience du développement d'une application conséquente avec Symfony & Pomm.

Dependency Injection and Dependency Inversion in PHP

Salle Forum 18/05/2017 11:15-11:55 - Niveau : Intermédiaire - Français

Dependency Injection and Dependency Inversion are important tools for writing testable and reusable code. They are available in any object oriented language and PHP is no exception. In this talk we will look at both Dependency Injection and the Dependency Inversion Principle, how they fit in with SOLID, and why they should be used when writing object oriented code. How are objects wired together? What is an object graph? Is a Dependency Injection Container the right way forward? Can we do this automatically, and are there any patterns or reusable components available to help us achieve reusable and decoupled code? These are some of the topics covered in this talk from both a theoretical and a practical standpoint. Walking out of the room you should understand why dependency injection is so heavily advocated in programming and how you can use it to write awesome, decoupled code in PHP.

My Slack Bot speaks PHP

Salon VIP 18/05/2017 11:15-11:55 - Niveau : Intermédiaire - Français

Retour d’expérience sur la mise en production, la croissance puis la monétisation de MailClark, le Slack Bot qui permet de recevoir et d’envoyer des emails et des tweets directement dans Slack. MailClark est développé en PHP sous un modèle de micro-services orchestrés par Docker et qui communiquent entre-eux via des queues et consumers RabbitMQ. Le cœur de la solution est un service gérant plus de 5000 connexions WebSocket avec Slack grâce au framework React-PHP, orienté asynchrone. Venez écouter comment nous avons géré la croissance de ce service basé en grande partie sur des technologies émergentes.

Une API GraphQL: du hype à la prod

Salle Forum 18/05/2017 12:00-12:20 - Niveau : Intermédiaire - Français

Point de débat REST vs GraphQL dans cette conférence, mais du concret ! De plus en plus utilisé par des géants du Web comme Facebook, GitHub, Pinterest, ou encore Shopify, GraphQL a attiré ma curiosité, jusqu’à ce que je me décide à l’utiliser en production. Cette conférence détaille les différentes problématiques rencontrées suite à sa mise en place, comme la description de ce qu'il est possible d'obtenir (on parle de schéma). Mais aussi le nouveau paradigme des requêtes qui implique que le client demande ce qu'il veut, et enfin comment conserver de bonnes performances au sein d’une même requête et comment gérer le cache entre les requêtes.

Comment marier Symfony et ReactJS ?

Salon VIP 18/05/2017 12:00-12:20 - Niveau : N/A - Français

ReactJS et Symfony proviennent de deux mondes différents. D’un côté le back, de l’autre le front. Il sont le résultat de deux philosophies, deux courants de pensée, opposés dans l’esprit de beaucoup de développeurs. Celui qui est plébiscité par les uns est donc parfois incompris par les autres. Pourtant, leur réunion peut donner naissance à des applications extrêmement puissantes, alliant la robustesse de Symfony à la flexibilité de ReactJS. Le chemin vers cette union n’est cependant pas exempt d’obstacles et nécessitera l’aide de complices : celle d’alliés puissants tels que Twig et v8js, mais surtout celle de développeurs tels que vous. Dans cette conférence, nous vous donnerons les clés pour intégrer ces deux technos et tirer le meilleur parti de leurs avantages respectifs.

Thread Safety en PHP (ZTS)

Salle Forum 18/05/2017 14:00-14:40 - Niveau : Intermédiaire - Français

On entend parfois parler de threads avec PHP, et du mode "Thread safe" de PHP. Mais, c'est quoi au juste ? Nous allons commencer par rappeler l'histoire de l'informatique et l'appartition des threads, tout en tâchant de les définir au passage. Nous nous focaliserons ensuite sur l'intéressant cas de PHP , en le comparant avec d'autres technos comme Java. C'est quoi "PHP thread safe". Peut-on utiliser des threads avec PHP ? Comment ? Quel interet ? Quels dangers ? A quoi sert le mode Zend Thread Safe (ZTS) de PHP ? Tâchons de demystifier ce vaste mais passionnant sujet ensemble.

A beginner's guide to deployments

Salon VIP 18/05/2017 14:00-14:40 - Niveau : Intermédiaire - Anglais

Deploying an application means different things to different people. It may be as simple as running `git pull` on a server, or as complex as building RPMs and deploying to a canary set of servers. This talk covers both ends of the spectrum and the points in between. We outline a tried and tested deployment methodology that everyone can use, whether it’s a simple WordPress site or a dozen micro-services. ---- Additional Notes (for organisers only) Application deployment is a complex and overcrowded area. You can use an FTP client or you can build custom RPMs for every service you use. The sweet spot is actually somewhere in between. This talk will cover code deployments as well as database and media migration, whilst touching on continuous integration as a way to reduce the risk of big bang deployments.

[ATELIER] Find Bugs in Your Code With PHPStan

Salle d'atelier 18/05/2017 14:00-17:00 - Niveau : Grand public - Français

Running static analysis on your codebase can discover a lot of bugs and documentation issues. It can find errors like calling an undefined method, unknown classes in typehints, whether a method returns the same type it declares to return etc. It also reduces the need for unit testing the wiring of your code so you can focus on business logic. I set out to create a static analysis tool that is fast, extensible and user-friendly. It's called PHPStan and I'd love to tell what it can do for you. In this workshop, I'll show you various features and performed checks of PHPStan, how to configure it properly and get the most out of it. Bring your own code and I'll help you to integrate PHPStan into your workflow.

PHP : The Wrong Way

Salle Forum 18/05/2017 14:45-15:25 - Niveau : N/A - Français

En quelques années, nous avons eu Composer, Symfony et ses composants, phpunit et behat, php-cs-fixer ou encore phan... Bref, aujourd'hui, il est presque devenu impossible de produire du mauvais PHP. Mais impossible n'est pas français, et nous nous amuserons donc à faire le code le plus sale possible avec ce magnifique langage, et pourquoi pas trouver les meilleures façons de le faire violemment crasher ?

Make your code great again with the Object Calisthenics

Salon VIP 18/05/2017 14:45-15:25 - Niveau : Intermédiaire - Français

Et si vous utilisiez les Objects Calisthenics pour muscler votre code ? Que sont ces règles ? Pourquoi et comment les appliquer ? La promesse initiale d'améliorer la lisibilité, la maintenabilité et la testabilité de son code est-elle vraiment respectée ? Et surtout, est-ce que c'est applicables à notre merveilleux monde du PHP ? Promis, aucun effort physique ne vous sera demandé.

Des applis PHP 15 fois plus rapides !

Salle Forum 18/05/2017 15:30-15:50 - Niveau : Intermédiaire - Français

C’est en tous cas la promesse de PHP PM, une librairie PHP qui se propose de troquer l’un des paradigmes fondateurs de PHP, le “share nothing” contre une amélioration significative des performances. Afin de vérifier cette assertion, nous ferons un tour d’horizon des fonctionnalités proposées par la librairie et nous mettrons en évidence les avantages et inconvénients de ce type d’architecture.

Code review beyond code style

Salon VIP 18/05/2017 15:30-15:50 - Niveau : Intermédiaire - Français

Reviewing code can feel like a secondary task. Discussing code can be easy though, if you leave out syntax details. Following a couple of guide lines for pull requests can make code reviewing much easier. Some code style rules can drastically reduce the mental overhead needed to understand code changes. Furthermore this talk will give some general guidelines on how to give feedback on PRs as a peer developer or coworker. These rules are not to keep for yourself, share them with your peers and your life will get easier.  

De la qualité de PHP

Salle Forum 18/05/2017 16:20-17:00 - Niveau : Grand public - Français

Après un rappel sur les versions maintenues de PHP regardons le cycle de vie des versions, avec les différents niveaux de maintenance (active ou sécurité). Regardons aussi le traitement des problèmes de sécurité qui vient d'être récemment modifié. Chaque version "Release Candidate" doit être soumise à des tests approfondis (QA) pour s'assurer que la version finale n'introduit pas de régression, pour cela, la suite de tests de PHP n'est pas suffisante, au contraire il est nécessaire de vérifier le fonctionnement de l'ensemble de la pile PHP, c'est à dire d'un maximum de composants utilisant PHP (bibliothèque, cadre logiciel, application...). Membre de la "QA team" depuis plusieurs années, il s'agit aussi d'un retour d'expérience sur les tests réalisés, quelques régressions découvertes, leur gestion. L'occasion de mettre en lumière la collaboration entre les projets, en amont (développeurs) et en aval (utilisateurs et distributeurs).

Tagua VM, a safe PHP virtual machine

Salon VIP 18/05/2017 16:20-17:00 - Niveau : N/A - Français

PHP est un langage extrêment populaire. En 2015, PHP était utilisé par plus de 80% de tous les sites Web. Cependant, 500 vulnérabilités sévères sont répertoriées. Bien qu'inhérent à tous langages populaires, cela reste très dangereux. L'objectif du projet Tagua VM est de fournir une VM PHP qui garantie un haut niveau de sûreté et de qualité en supprimant des larges classes de vulnérabilités, grâce à des outils appropriés comme Rust et LLVM. Rust est un langage remarquable qui apporte des garanties fortes à propos de la sûreté de la mémoire. C'est aussi un langage très rapide qui rivalise avec C. LLVM est une infrastructure de compilateur célèbre qui apporte de la modernité, des algorithmes à la pointe, des performances, une suite d'outils pour développeur etc. Ce projet va résoudre trois problèmes en une fois : 1. Fournir un niveau haut niveau de sûreté et de qualité en supprimant des larges classes de vulnérabilité, et ainsi éviter des coûts de bugs dramatiques ; 2. Fournir de la modernité, une nouvelle expérience développeur et des algorithmes à la pointe de la recherche, donc des performances ; 3. Fournir un ensemble de bibliothèques qui vont composer la VM et qui pourront être réutiliser en dehors du projet (comme le parseur, les analyseurs, les extensions etc.). Durant cette conférence, nous présenterons les objectifs de ce projet, ainsi que son avancement. Nous expliquerons pourquoi il est crucial et pourquoi il reçoit le soutient d'une communauté grandissante et de développeurs notables (avec un rôle important dans le développement de PHP).

The Big "Why equal doesn't equal" Quiz

Salle Forum 18/05/2017 17:05-17:45 - Niveau : Intermédiaire - Français

So you think you know PHP ? But do you really ? We all compare and test data on nearly every other line in our code, be it input validation, an if-statement, a switch or determining what to display and how. So of course we are all experts on how to do these tests and comparisons…. Or are we? No matter whether you are a beginner or an expert, come and join in the fun for the Big “Why equal doesn’t equal” Quiz, test your knowledge and learn about defensive programming and the quirks of a loose type programming language along the way.

Opcode ? Mais à quoi ça sert ?

Salon VIP 18/05/2017 17:05-17:45 - Niveau : Intermédiaire - Français

En tant que développeur PHP, nous avons certainement tous entendu parler de l'opcode, cette sauce magique qui tourne au sein du moteur PHP qui permet de booster les performances. Mais qu'est-ce que c'est exactement cet opcode ? Pourquoi rend-il l'exécution plus rapide ? Est-ce que ça ne sert qu'à la performance ? Et le cache d'opcode dans tout ça ? Le but de cette conférence est de démystifier ce qui se passe au sein du moteur Zend, de comprendre ce que devient notre code lorsqu'il est digéré par l'interpréteur et transformé en opcode avant d'être executé sur la machine virtuelle.

Dev rencontre Ops, 1 an après

Salle Forum 19/05/2017 08:30-09:10 - Niveau : Grand public - Français

Infrastructure AWS hautement résiliante, architecture blue-green, déploiements entièrement automatisés, application Symfony découplée en microservices gérés par un API Manager... Nous avions tous les outils pour former une équipe Devops performante. Pourtant il nous manquait un ingrédient essentiel: la pratique, qui nous a permis d'améliorer significativement la manière dont nous collaborons !

C'est pourquoi, nous, Pauline, ops, et Aurore, dev, souhaitons revenir avec vous sur un an de projet qui a abouti au lancement d'une nouvelle plateforme web d'un leader industriel mondial. Grâce à des exemples concrets, vous découvrirez nos bonnes idées, aussi bien techniques qu'organisationnelles, mais aussi les erreurs que nous avons commises et comment nous les avons corrigées afin que vous puissiez les éviter.

Application profiling using XDebug, XHprof, Blackfire

Salon VIP 19/05/2017 08:30-09:10 - Niveau : Intermédiaire - Anglais

It's obvious, that a good application must be fast. Fast execution saves clients' time, server resources and, as a result - company's budget. We will dive into PHP profiling world and will learn, how to profile your app using the Xdebug, XHprof and Blackfire. We will learn how to configure these tools, collect and analyze profiles, search and fix "bottlenecks" in code and evaluate optimization results. We will discuss popular mistakes that lead to lower performance and learn how to avoid them. Plus we'll discuss how to support the application performance during development even without profiler on Yii 2 example. 

[ATELIER] Des Lego, des bonnes pratiques et du fun !

Salle d'atelier 19/05/2017 09:00-12:00 - Niveau : Grand public - Français

Atelier sur inscription (gratuite) uniquement !

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. Nous vous proposons 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) 


Chaque jeu dure entre 20 et 45mn. En début de session les participants choisiront les jeux auxquels ils souhaitent participer. Cet atelier s'adresse aux dev débutants/managers/RH/PO/clients qui souhaite comprendre à quel point les développeurs et leur manière de coder est une des pierres angulaires de l'agilité. Et surtout comment prendre conscience que du bon code c'est du temps, de la réflexion et du travail d'équipe.

Asynchronous processing with RabbitMQ

Salle Forum 19/05/2017 09:15-09:55 - Niveau : Grand public - Anglais

Developers of modern web applications strive for fast response times and efficiency. One of the ways to achieve them is to postpone performing costly and potentially failing operations like sending an e-mail after the HTTP request is complete and the user has seen that his intended action has been successful. This is called asynchronous task processing. In the past it was usually achieved with periodically executed scripts by Cron. This solution requires inserting data about tasks into a persistent storage like a relational database and lock the data to prevent duplicate execution. Tasks are not performed instantly but within the next run of a script. It's also not easy to scale task processing to multiple executors at the same time. This approach became popular because of limited capabilities of shared webhosts. But in the last years it has been more and more difficult to make excuses for preferring Cron over alternative approaches thanks to decreasing prices of VPSes. Message queues do not share the problems of Cron-executed scripts - they offer instant task processing and easy scalability. But at the same time this concept can be more difficult to grasp and creates new troubles in different areas - mainly deployment and integration into existing codebases. In this talk, I will dive into specifics, advantages and disadvantages of developing a web application with the help of RabbitMQ or a similar technology, and share everything we had to do to be able to produce and consume hundreds of thousands messages a day within a large legacy PHP codebase of an application that serves >200k daily visitors.

Code moi une RH !

Salon VIP 19/05/2017 09:15-09:55 - Niveau : Intermédiaire - Français

Est-ce que nous allons parler de gestion des ressources humaines au PHP tour ? Non, je vous vais vous parler des modèles anémiques et des modèles riches. Depuis des années frameworks et ORM nous conditionnent à utiliser des modèles anémiques, une classe avec de simples setters et getters. A travers l’histoire d’Estelle, une RH, qui veut une application pour gérer ses salariés, je vais vous montrer comment changer nos vieilles habitudes afin de nous focaliser sur le métier que nous implémentons. Nous verrons ensemble quels outils utiliser, comme par exemple, le design pattern command bus, l’opérateur NEW de doctrine pour vos Data Transfert Object dans une application Symfony.

REX API Platform

Salle Forum 19/05/2017 10:30-11:10 - Niveau : Grand public - Français

API Platform, vous connaissez ? Si on en croit la documentation, il s'agit du framework ultime pour construire des APIs web modernes. Je vous propose de découvrir ce qui se cache réellement derrière ce titre un peu pompeux. :) Suite à l'utilisation de ce framework pour construire une API web, je vous expliquerais ce que ce framework m'a apporté ainsi que les différents problèmes que j'ai rencontrés lors de sa mise en place.

Monitoring applications - evolve from text logs to extensive automatic monitoring

Salon VIP 19/05/2017 10:30-11:10 - Niveau : Intermédiaire - Anglais

Bugs, corrupt data or performance issues on web applications are often recognized far too late. In the worst case they are reported by the customer, so they probably have already done some serious damage - frustrated the user, made them lose trust or even corrupted their data. Finding these bugs or recognizing them early gets especially hard, if your application makes heavy use of background processes, daemons or cronjobs. They might even throw exceptions that are buried somewhere in the logs, and no one will ever be aware of them, until someone has a look into the log files. I want to show a way out of this misery and provide different solutions in form of practical examples. These will include different levels of monitoring - from simple text logs on the servers up to a fully monitored application including hardware monitoring, extensive metrics, indexed and searchable logs of the whole environment, performance analysis and alerts if something odd happens. I'll show different examples and give ideas when such a fully monitored solution is a good idea, or when a "light monitoring" is applicable.

L'analyse statique ? Oui oui je connais. Mais j'y comprends rien !

Salle Forum 19/05/2017 11:15-11:55 - Niveau : Grand public - Français

L'analyse statique est économique, facile à mettre en oeuvre. Mais elle a un énorme inconvénient : comme on ne comprend pas grand choses aux chiffres, on parle plus souvent de comment marchent les outils plutôt que de comment tirer profit des informations qu'ils nous livrent. Cette conférence est l'occasion de rentrer en profondeur dans les méandres de l'analyse statique. Comment analyser un code source ? Comment comprendre les impacts de telle ou telle métrique sur la vie d'un projet ? Comment peut-elle avoir un impact sur mon code au quotidien ? Comment sont calculées les métriques et comment les interpréter ? Bienvenue dans l'univers de l'analyse statique !

Learning About Machine Learning

Salon VIP 19/05/2017 11:15-11:55 - Niveau : Intermédiaire - Français

From chatbots to your home thermostat, it seems like machine learning algorithms are everywhere nowadays. How about understanding how this works now? In this talk, you will learn about the basics of machine learning through various basic examples, without the need for a PhD or deep knowledge of assembly. At the end of this talk, you will know what the Naive Bayes classifiers, sentiment analysis and basic genetic algorithms are and how they work. You will also see how to create your own implementations in PHP.

Synchroniser ses applis simplement avec akeneo/batch

Salle Forum 19/05/2017 12:00-12:20 - Niveau : Intermédiaire - Français

On utilise des outils de plus en plus complexes et de plus en plus hétérogènes : Full-stack Symfony, Laravel, Zend, Doctrine, Propel, Magento, Wordpress, Drupal, etc... Et si en plus je pouvais réutiliser mes modèles, mes sérialiseurs, mes clients d'API ? Je simplifierais mon appli et je gagnerais sûrement du temps ! Je vais vous présenter le composant akeneo/batch, un portage léger du composant Batch de Spring en PHP. Il s'intègre en quelques lignes dans vos outils et permet de découper en étapes simples des processus complexes.

Map, filter, reduce : aidons-les, ils nous aideront

Salon VIP 19/05/2017 12:00-12:20 - Niveau : Grand public - Français

Les fonctions array_map, array_filter et array_reduce sont disponibles depuis longtemps en PHP. Pourtant, mesure-t-on vraiment l’intérêt de cette façon de programmer par rapport aux bonnes vieilles boucles qui marchent très bien ? Pourquoi la trouve-t-on associée à Google, Apache Hadoop, ou encore Java 8 ? Je vous propose d’abord de voir que cette approche donne du code clair, focalisé sur la description de l’algorithme plutôt que sur l’implémentation, et qu’elle se combine très bien avec les notions de curryfication et de composition, également issues de la programmation fonctionnelle. Ce sera l’occasion de constater que si PHP7 a facilité l’usage de ces deux concepts, il lui reste encore une marge de progression. Enfin, la démonstration d’une implémentation parallèle 100% PHP de map, filter et reduce, exploitant un processeur multicœur, illustrera le gain de performances que l’on peut en attendre.

Ma petite entrePHPrise ne connaît pas la crise!

Salle Forum 19/05/2017 13:20-14:00 - Niveau : N/A - Français

Conférence présentée par Eric Hifi, Fabrice Fesch et Pierre Tomasina.
20 ans passés, PHP trône toujours en pole position avec 80 % du marché des sites Web. Les applications web sont devenues critiques. Les niveaux de performance et sécurité exigés par les clients dépassent désormais ceux des applications métiers traditionnelles en intégrant du déploiement continu et plus de scalabilité. Comment les développeurs et les exploitants doivent-ils développer, tester et déployer une application PHP aujourd'hui ? Quelles sont les perspectives d’évolution de notre éco-système pour être en constante adaptation ? Vers quoi faut-il aller ?

PSRs: quoi, pourquoi et comment ?

Salle Forum 19/05/2017 14:00-14:40 - Niveau : Grand public - Français

Bien que prenant de plus en plus d'importance dans notre écosystème, les PHP Standards Recommendations restent trop méconnues et quelque peu mystiques pour bon nombre d'entre nous. Dans ce talk, je vous propose de comprendre ce qu'est une PSR puis de parcourir brièvement l'ensemble des recommandations existantes, qu'elles soient validées, acceptées ou en cours d'écriture. Nous reviendrons également sur l'importance et le but de ces standards ainsi que sur leur processus d'élaboration.

Year with event sourcing and CQRS

Salon VIP 19/05/2017 14:00-14:40 - Niveau : Confirmé - Anglais

For the last few years, PHP community has been buzzing about ES/CQRS, pretty much there was a talk on every conference. Now it's time to see how it worked out for me in practice. ES/CQRS is a different approach to building applications from what we all have been thought to do for years. I'm not going to introduce Event Sourcing and Command Query Responsibility Segregation (ES & CQRS) but speak about my experiences in developing & running it on production. I have implemented it on few projects: in some I run it as a part of bigger application, while in some it's just the core and one where everything is event driven. The shift in architecture and mindset is pretty big: while code structures and logic became simple, amount of code and workflows get complicated to the point of 'where did I loose this input?'. Not to go into too many details, I've had to learn lot of DDD practices that I feel have made me a better developer and use some of the knowledge gathered in this projects into 'everyday' code of projects that I work on.

[ATELIER] CQRS et Event Sourcing, les mains dans le cambouis !

Salle d'atelier 19/05/2017 14:00-17:00 - Niveau : Intermédiaire - Français

Atelier sur inscription (gratuite) uniquement !

Cet atelier a pour but de présenter concrètement le concept de CQRS et Event Sourcing en faisant développer les participant(e)s sur un petit projet prévu à cet effet. Par un exercice préparé exprès pour l'occasion nous illustrerons les différents points clés d'une architecture Event Sourcée : 
* utilisation de commandes (création d'après interactions externes) afin d'injecter des actions métiers dans l'application 
* création de CommandHandlers (et explication rapide des Aggrégats) pour conversion en évènements après validations métier 
* stockage et publication d'évènements 
* création (et modification de projections) Les participant(e)s pourront juger de l'intérêt de décorréler le code métier du code des frameworks / librairies au sein de leurs applications, tout en montrant les facilités d'évolutions amenées par l'Event Sourcing. 
À l'issue de l'atelier, le sujet de l'atelier pourra servir de base à l'apprentissage du concept pour ceux/celles que cela aura vraiment intéréssé.

Cet atelier a pour but de présenter concrètement le concept de CQRS et Event Sourcing en faisant développer les participant(e)s sur un petit projet prévu à cet effet. Par un exercice préparé exprès pour l'occasion nous illustrerons les différents points clés d'une architecture Event Sourcée : 
* utilisation de commandes (création d'après interactions externes) afin d'injecter des actions métiers dans l'application 
* création de CommandHandlers (et explication rapide des Aggrégats) pour conversion en évènements après validations métier 
* stockage et publication d'évènements 
* création (et modification de projections)
Les participant(e)s pourront juger de l'intérêt de décorréler le code métier du code des frameworks / librairies au sein de leurs applications, tout en montrant les facilités d'évolutions amenées par l'Event Sourcing. À l'issue de l'atelier, le sujet de l'atelier pourra servir de base à l'apprentissage du concept pour ceux/celles que cela aura vraiment intéréssé.

JWT - To authentication & beyond!

Salle Forum 19/05/2017 14:45-15:25 - Niveau : Intermédiaire - Français

Tokens are widely used to identify resources and try to add some security to insecure environments, but sometimes the management of those identifiers can get a bit complex - even more on distributed systems. What if we could have an intelligent token, one that simplifies the way things works without losing integrity or security? In this talk we present Json Web Tokens as an alternative for smart and self contained tokens, explaining how to use each claim and giving some common use cases.

phpSpec: Les tests unitaires version BDD

Salon VIP 19/05/2017 14:45-15:25 - Niveau : Intermédiaire - Français

phpUnit est très généralisé. Voilà l'occassion de découvrir une alternative: PhpSpec ! Ne pensez plus test unitaire, pensez Specifications ! Vous verrez que cet outil permet de mieux découpler votre code et qu'il permet de rédiger des tests parfois plus "unitaire" que certains tests via PHPUnit. Chez KNP, nous utilisons uniquement PhpSpec depuis plusieurs années et nous sommes toujours aussi confiants dans nos tests !

Retour sur les panama papers et les bases de données graphe

Salle Forum 19/05/2017 15:30-15:50 - Niveau : Grand public - Français

Au printemps 2016, le premier article de presse sur les "Panama papers" a été publié. Il s'agit de la plus grande 'fuites' de l'histoire avec plus de 3T de données brutes. Cette conférence vous détaillera les technologies que l'ICIJ (International Consortium Of Investigate Journalists) a utilisé pour fournir aux journalistes une interface simple pour leur recherche. Via une démonstration sur les données des panama papers, je vous présenterai notamment le coeur du système, à savoir la base de données graph Neo4j avec son moteur de requête Cypher.

PHP Doc Vs PHP 7 Strict Typing

Salon VIP 19/05/2017 15:30-15:50 - Niveau : Grand public - Français

Au cours de mes dernières expériences professionnelles, dans l'équipe de développement nous avons eu plusieurs discussions à propos d'une convention à adopter pour la PHP Doc dans nos codes, surtout avec le type hinting enrichi par PHP 7 (types scalaires des variables et type de retour autorisé). Certains pensent que le type hinting de PHP7 suffit amplement, d'autres pensent qu'il faut le mixer avec la php doc, d'autres pensent que selon les cas, la php doc peut être utilisée en complément. Un draft sur la documentation dans la psr 5 est en cours d'écriture mais n'impose pas un standard. Quelle conclusions faut il en tirer ? quelles solutions sont adaptées ? Une présentation de l'étude permettra aux développeurs de mieux documenter leurs codes et de comprendre certaines spécificités.

Grâce aux tags de Varnish, j'ai switché ma prod sur un Raspberry Pi

Salle Forum 19/05/2017 16:20-17:00 - Niveau : Intermédiaire - Français

Le moyen le plus rapide d'obtenir une réponse d'un Backend est de ne pas l'appeler ;-) Une solution fournie par les "reverse proxy" me direz vous, mais pas si simple d'invalider le cache... Ce talk aborde une fonctionnalité méconnue de Varnish: les tags. Nous verrons comment en tirer partie via les "event listeners" d'une application Symfony standard. Au menu, un cluster de Rasberry Pi, une API, et des données toujours fraîches sous la milliseconde.

The ultimate microservice stack

Salon VIP 19/05/2017 16:20-17:00 - Niveau : Intermédiaire - Français

L'architecture de nos applications a beaucoup évolué ces derniers temps : nous sommes passés des monolithes à des architectures orientées services où chacun de ces services joue un rôle très spécifique et expose une API. D'autre part, le mode de livraison de nos applications a radicalement changé : aujourd'hui nous voulons livrer un MVP rapidement et itérer sur cette base. Les frameworks full-stack ne sont pas forcément adaptés car ils obligent à mettre en place une certaine quantité de choses avant de fonctionner. En PHP, nous avons donc des frameworks permettant de produire rapidement des applications monolithiques mais également beaucoup d'autres petites libraires ou micro-frameworks permettant de créer de petits services rapidement. Je vous propose donc aujourd'hui une présentation sur une pile technique très intéressante pour construire des micro-services et des MVPs rapidement tout en utilisant les bonnes pratiques connues (tests, injection de dépendances, ...). Cette pile s'appuie sur des librairies PHP, des recommandations (PSR) et outils permettant d'être productif du début du développement jusqu'à la mise en production.

Keynote de clôture

Salle Forum 19/05/2017 17:05-17:30 - Niveau : N/A - Français

On se donne RDV les 26-27 octobre au Forum PHP, Paris ?