Programme

Lundi 23 mai 2016

Keynote d'ouverture

Salle A, parce que Amour 23/05/2016 09:00-09:30

Grown-up MongoDB: Schema Design for Optimal Performance

Salle A, parce que Amour 23/05/2016 09:30-10:15

Although MongoDB is a non-relational database, it is still very important that you store your data in an optimal way. This presentation make you grow up from just starting with MongoDB, to a seasoned user, by teaching you how to design your data schema according to your application's needs. This requires a different mind set than designing for a relational database. Besides schema design techniques, I will also cover how to pick indexes, different types of indexes, and way to find out why queries are potentially not as fast as they could be.

Des sites prets pour le e-commerce de demain avec Thelia

Salle B, parce que Banzaï 23/05/2016 09:30-10:15

Aujourd’hui les besoins des E-commerçants sont multiples et en constante évolution: adaptabilité, réactivité et performances sont des conditions essentielles à la réussite d’un projet. L'équipe de Thelia aime les e-commerçants, tous les e-commerçants. Elle veut répondre au mieux à leurs nouveaux besoins, et a décidé d'utiliser les meilleures bases existantes pour construire THE solution E-commerce libre fondée sur... Symfony, bien sûr. Thelia permet maintenant de réaliser ?*vos*? projets avec une grande souplesse de développement et d'évolution... et avec plaisir !

Going Elastic

Salle C, parce que Cocorico 23/05/2016 09:30-12:30

One of the hottest tools for log monitoring and analytics at the moment is the Elastic Stack:
* Elasticsearch doing the hard work of searching large amounts of data.
* Logstash for ingesting logs.
* Kibana for visualizing what is going on.

This workshop gives you an overview of the three technologies, how they are working together, and how they can solve your problems. All you need to have on your laptop is Virtualbox. I will provide you with a box that has all the necessities installed and we'll take it from there.

Réservez votre place pour cet atelier sur EventBrite !  

PHP microservices beyond the trench

Salle A, parce que Amour 23/05/2016 10:15-11:00

Why such an architecture ? What are the base components to start with ? Can I do it solely with PHP ? How to ease developper's life ? Is it possible for a small team ? Feedback from 1 year of life with 400 microservices and going.

Migrating your Database with Phinx

Salle B, parce que Banzaï 23/05/2016 10:15-11:00

Phinx is one of the most popular standalone database migration tools. Learn the basic concepts of Phinx with its creator Rob Morgan. This presentation will cover adding it to a project, creating new migrations and then executing them. You will also be exposed to more advanced features of Phinx and everyday use cases.

Lancez-vous dans l'open source !

Salle A, parce que Amour 23/05/2016 11:30-12:00

Vous avez trop de temps libre en rentrant du boulot ? Une boîte email trop vide ? Lancez-vous dans un projet open source ! Voici un recueil de tips basé sur une expérience pleine de projets open source ratés, et quelques uns de réussis. Au menu, une flopée de buzzwords tels que GitHub, Packagist, Travis, Gitter, PSR, SemVer, StyleCI, MIT… Mais aussi à quoi s'attendre, et quels pièges à éviter ? Comment gérer les pull requests, demande de features et support ? Que faire de la documentation ? Comment faire connaitre son projet ?

PHP Meminfo ou la chasse aux memory leaks

Salle B, parce que Banzaï 23/05/2016 11:30-12:00

Les profilers tel que Blackfire.io ou Memprof permettent de connaitre les fonctions qui prennent ou libèrent de la mémoire. Mais visualiser ce que contient la mémoire PHP permet de mieux comprendre les origines des memory leaks. L'extension PHP Meminfo fournit une vue synthétique du nombre d'instances par classe en mémoire, la liste complète des objets et autres structures avec les relations qui les lient (membre de classe, présence dans un tableau, etc...). L'accès à ces informations de liaisons permet de comprendre pourquoi un élément n'a pas été libéré de la mémoire en suivant les références qui continuent à pointer sur lui. Le talk commencera par expliquer les mécanismes de libérations de la mémoire (references counter, cyclic reference garbage collector) spécifique à PHP, les effets des memory leaks sur les performances applicatives, puis détaillera des cases studies de fuite mémoire et de leur analyse avec meminfo, ainsi que leur résolution.

En route vers le multi-tâche !

Salle A, parce que Amour 23/05/2016 12:00-12:30

Depuis très longtemps, en tant que développeur PHP, je me demande s'il est possible de faire du multi-tâche en PHP. Il s'avère que la réponse à cette question n'est pas aussi simple que ce que l'on peut croire. En effet, répondre catégoriquement "non" à cette question peut sembler correct car PHP n'a pas été conçu comme un langage permettant de lancer des traitement en parallèle. Mais que diriez-vous si je vous démontrais que l'on peut finalement arriver assez facilement à faire des traitements multi-tâches en PHP et ainsi simuler une sorte d'asynchronisme ? Facile ! Me direz-vous, aujourd'hui nous avons tout un tas de logiciels et librairies à notre disposition pour le faire : * *MQ, * ReactPHP, * Les sous-processus, * PThread, * ... Et je répondrais que la majorité de ces solutions ne sont pas si simples à mettre en oeuvre que ce qu'on pense. Par contre, les générateurs, eux, sont intégrés nativement à PHP, ne nécessitent aucune extension ou infrastructure et peuvent nous permettre d'arriver à un résultat qui peut être, dans certains cas, satisfaisant.

On a tué mon agilité !

Salle B, parce que Banzaï 23/05/2016 12:00-12:30

Il y a 15 ans, j'étais un passionné des méthodes agiles, XP, Crystal Clear, RAD, ASD, DSDM, Scrum, etc. Toute cette mouvance était une réaction face aux lourdes méthodes de l'époque. Aujourd'hui, les débutants ne connaissent pas vraiment d'autres façons de faire, et quand je regarde dans le rétroviseur, je me dis qu'on a tué mon agilité. C'est devenu un mot banal, déformé, sur-vendu. L'esprit n'est plus là. Mais rien n'est perdu, surtout quand on connaît leur histoire. Venez prendre un petit coup de boost !

Atelier Docker et PHP

Salle C, parce que Cocorico 23/05/2016 14:00-17:00

WORKSHOP : Le but de l'atelier et de prendre un projet PHP et de le "dockeriser". Nous verrons ainsi les concepts de bases de Docker nécessaire pour une première approche ainsi que tout l'outillage utile pour cette mise en place. Une part importante sera consacré aux bonnes pratiques et comment créer son projet d'une façon agnostique à n'importe quel environnement (windows, linux, mac). Cet atelier est orienté pour des développeurs et non pour de l'administration système (n'ayez pas peur :) ). Les slides de ma formation Docker seront utilisés comme support de l'atelier.

ATTENTION pré-requis pour cet atelier : Merci d'avoir Docker installé et prêt à l'utilisation. Il est recommandé d'utiliser la documentation officielle pour cette installation. Pour les personnes sous mac (et sur la dernière version d'OSX) il peut être intéressant d'utiliser cette alternative. Le but est d'optimiser le temps de l'atelier sur l'utilisation de Docker et de ne pas faire une docker install party :). Pour les personnes qui ont eut trop de problèmes à l'installation on verra tout de même cette partie au début de l'atelier et on essaiera de fixer les problèmes, mais on y passera très peu de temps pour vraiment se consacrer à l'essentiel.

Réservez votre place pour cet atelier sur EventBrite !

Arrêtons de perdre du temps à débuguer !

Salle A, parce que Amour 23/05/2016 14:15-15:00

Débuguer peut se révéler long et fastidieux. C'est du temps perdu qu'on pourrait passer à créer de la valeur ajoutée. C'est d'une manière ou d'une autre une perte pour le business. Ayant commencé mon entrée dans la vie active par une TMA, j'ai compris vite et de manière un peu brutale que ça fait pourtant partie de la vie du développeur qui devient parfois débugueur. Quelles solutions et astuces pouvons-nous mettre en place afin d'être plus efficace dans cette tâche rébarbative ?

Building and deploying PHP applications

Salle B, parce que Banzaï 23/05/2016 14:15-15:00

During this presentation I will go over the concept of building & releasing software and most common PHP deployment strategies, highlighting pros and cons of each. I will also present techniques that can and should be used to package PHP code prior releasing it. Apart from that I will also show real world examples of how the packages can be deployed to different environments, without introducing downtime.

How I learned to stop worrying and love Regular Expressions

Salle A, parce que Amour 23/05/2016 15:00-15:45

This session will cover Regular Expressions from the basics to the darkest corners of this arcane art. Regular Expressions at the core come in handy to achieve validation and text manipulation tasks. In the day to day life of a developer, becoming comfortable with them opens up many more use cases. As one of the tortured souls that actually enjoys writing - and reading - regexes, Jordi will share his passion so that you too can see there is no reason to worry.

wallabag, comment on a migré vers Symfony3

Salle B, parce que Banzaï 23/05/2016 15:00-15:45

wallabag est une application opensource de lecture différée : elle vous permet de mettre de côté la version épurée d'un article pour la consulter plus tard où que vous soyez. Créée il y a 3 ans à base de fichiers PHP comme on faisait en 2005, nous avons décidé il y a maintenant un peu plus d'un an de migrer le projet à Symfony. Au cours de ce talk, nous présenterons donc le projet wallabag et tout son écosystème : son concept, son socle technique (API REST, tests unitaires, Rulerz, RabbitMQ, Capistrano), les difficultés rencontrées, la communauté et les projets qui tournent autour, la roadmap pour les semaines à venir.

Oublions mod_php

Salle A, parce que Amour 23/05/2016 16:15-17:00

La configuration classique de PHP utilise Apache + mod_php. Essayons de comprendre pourquoi c'est une erreur, et comment optimiser le fonctionnement avec FPM. * inconvénients de mod_php * apache + php-fpm * nginx + php-fpm * apache + plusieurs versions de PHP * apache + répartition de charge

Mettre en production plus rapidement

Salle B, parce que Banzaï 23/05/2016 16:15-17:00

Comment s'équiper pour résoudre un incident en production au plus vite ? Comment s'organiser pour livrer une fonctionnalité dans les délais prévus ? Comment devenir capable de mettre en production quotidiennement ? Retour d'expérience sur la manière dont l'équipe technique de "La Ruche qui dit Oui !", une start-up en pleine croissance, s'est organisée et outillée pour mettre en production plus rapidement et devenir plus performante.

Le jeu vidéo à la rescousse du web

Salle A, parce que Amour 23/05/2016 17:00-17:45

En client-serveur traditionnel, chaque action de l'utilisateur induit un recalcul de toute la page côté serveur, puis le transport du HTML vers le navigateur. PHP et ses frameworks MVC sont conçus pour gérer cette architecture. Mais quand AJAX et HTML5 viennent bouleverser la répartition de ce qui se fait côté client et côté serveur, il est temps de repenser nos outils. Quelle part de nos frameworks reste pertinente dans une architecture API-centric? PHP est-il condamné à ne servir que des APIs REST? Et quelles architectures côté client peuvent prendre le relais sans faire exploser la complexité de développement ? Paradoxalement, c'est du monde du jeu vidéo que viendra peut-être la clé des applications de demain. Une conférence sans code, mais avec des dessins. Et des idées pour demain.

Mardi 24 mai 2016

Performance Optimization

Salle A, parce que Amour 24/05/2016 09:00-09:45

I bet you are writing unit tests for your apps; if not, you probably feel ashamed. But what about performance? Everyone is talking about it but very few people actually integrate performance into their development workflow... But performance is key to success: if your website is not fast enough, you will loose both customers and revenue. Theory and good tools can go a long way to quick wins and continuous performance testing.

Créer un site pour tester du code sous plusieurs versions de PHP avec Docker

Salle C, parce que Cocorico 24/05/2016 09:00-12:30

WORKSHOP : Vous écrivez une portion de code PHP et aimeriez savoir comment elle se comporte sous plusieurs versions ? Sous PHP 7.0, 5.6, 5.5, HHVM,… ? Pendant cet atelier, je nous propose de mettre en place un site Web permettant de saisir du code PHP. Celui-ci sera exécuté dans un conteneur Docker, en isolation du système. Puis dans plusieurs conteneurs, chacun avec une version de PHP différente. Les résultats de ces exécutions seront retournés à l’utilisateur, affichés sur le site. Si vous connaissez 3v4l.org, c’est un peu, dans l’idée, ce que nous allons commencer à redévelopper ;-) Cet atelier vous permettra de jouer avec Docker et PHP : utiliser des images existantes, créer la vôtre. Vous repartirez avec des idées pour continuer à faire évoluer l’application développée pendant ces quelques heures. Prérequis : connaître HTML, PHP ; notions Linux (ligne de commandes), Git. Venir avec un PC et VirtualBox installé. Une machine virtuelle sera fournie quelques jours avant l’atelier, pour faciliter le démarrage.

Réservez votre place pour cet atelier sur EventBrite

Les Webhooks: véritable levier d'intégration de votre application

Salle A, parce que Amour 24/05/2016 09:45-10:30

Les APIs sont désormais bien démocratisées et n'ont plus grand secret pour nous. C'est un formidable moyen pour construire des Single Page Applications en javascript, pour des applis mobiles natives et aussi et surtout pour permettre à des développeurs tiers d'intégrer votre application et de dialoguer avec celle-ci pour créer de la valeur pour eux comme pour vous. Les Webhooks font partie de la même catégorie : de puissants créateurs de valeur pour vos apps et vos utilisateurs. Plus méconus que les APIs, ils sont pourtant très pratiques et relativement faciles de mise en oeuvre. Ce talk propose d'expliquer comment chez Wisembly nous avons en 2 semaines mis en place un système de Webhooks simple mais puissant pour Wisembly et Solid. Sur un stack Symfony2, MySQL et RabbitMQ. Une fois la mise en place et le fonctionnement expliqué, nous nous pencherons sur deux cas d'usage d'intégration avec Zapier, formidable relais de votre application et de ses Webhooks.

De 7 à 3s : retour d’expérience sur la performance Web sur decitre.fr

Salle B, parce que Banzaï 24/05/2016 09:45-10:30

Cette conférence est l’occasion de vous présenter le travail effectué sur la performance Web sur notre site. decitre.fr est un site e-commerce qui est basé sur magento et comptabilise 4,2 millions de pages vues par mois. Lors des deux dernières années, nous avons fait la chasse à la seconde côté front (réduction et allègement des ressources exposées) et côté back (notamment avec une migration en cours vers PHP7) afin d’améliorer l’expérience utilisateur de notre site. Cette présentation vous montrera quelles optimisations ont été faites, les résultats constatés et comment nous mesurons et suivons l’évolution de la performance Web.

Prenons soin de nos microservices

Salle A, parce que Amour 24/05/2016 11:00-11:45

Une architecture orientée micro-services est un moyen de supporter une évolution toujours plus rapide de nos applications et technologies. Les nombreux avantages de ce genre d'architectures viennent néanmoins avec de nouveaux challenges tels que la pipeline de déploiement, la haute disponibilité, la tolerance des erreurs ou le monitoring/debugging. Nous verrons donc des pistes de solutions avec des librairies comme Tolerance ou des outils d'orchestration de containers Docker comme Kubernetes.

RabbitMQ 101 : How to cook the rabbit?

Salle B, parce que Banzaï 24/05/2016 11:00-11:45

Lots of people need job scheduling, microservices communication, asynchronous message passing… There is a stable and reliable solution: AMQP. Event if it seems to be complicated at first, it can solve lots of problems. RabbitMQ is a stable and battle tested product, has great performance, and provides simple access from C, java, python, ruby, node.js, scala, go… This talk is about rabbitMQ, how to start using it, how to work with it, fundamental and various pattern to use it in real world cases.

Advanced package development

Salle A, parce que Amour 24/05/2016 11:45-12:30

Registering your new awesome package to packagist is easy. But what about maintainability? What about open source contributions? What dependencies should you avoid? Have you considered reducing download size? How will you keep your users up to date with changes in newer versions? How do you best handle releases? How do you manage your package to behave in an optimal way both in other people's production environment as in your local package development environment? What are virtual packages, how should you use it? Why you should depend on more stable packages only? Why you should draw a dependency tree, ... Answers and explanations to all these questions will be given during this talk. A talk for everyone who wants to be a true package maintainer.

Soyez spécifiques

Salle B, parce que Banzaï 24/05/2016 11:45-12:30

« On offre une réduction de 8% aux clients ayant passé plus de 10 commandes et s'étant inscrit dans l'année » Imaginez pouvoir tester si un client donné satisfait cette règle. Mieux, imaginez que cette même règle puisse être utilisée avec Doctrine, Elasticsearch, Pomm et autres pour retourner les clients ayant droit à la réduction. Nous discuterons de règles métier, de leur représentation et de leur impact sur la complexité de nos applications. Au travers de cas concrets, nous verrons comment le pattern Specification et RulerZ tentent de répondre à ces problématiques.

Docteur SQL

Salle A, parce que Amour 24/05/2016 13:30-14:00

Le principe est simple : vous venez avec vos problèmes de base (préféremment PostgreSQL), structures ou requêtes SQL, et on parle ensemble (en lien avec PHP).

Performances PHP 7 contre PHP 5

Salle A, parce que Amour 24/05/2016 14:00-14:45

PHP 7 promet et tient sa promesse : il est en moyenne 2 fois plus rapide, et 2 fois moins consommateur de mémoire que PHP 5. Nous allons comparer les performances de PHP 5 par rapport à PHP 7 dans une application typique codée avec Symfony2. Nous tenterons alors d'expliquer comment et pourquoi PHP 7 surpasse largement PHP 5. Nous verrons les différences en terme d'OPCodes générés, l'évolution des structures internes utilisées, nous zoomerons sur les compilateurs et les machines virtuelles utilisées par PHP 5 et 7. Ceci permettra aussi de justifier quelques cassures de compat introduites en PHP 7.

Soyez doux avec votre prod.

Salle B, parce que Banzaï 24/05/2016 14:00-14:45

Grâce aux feature flags, vous pouvez tester en prod ! \o/ Grâce aux feature flags, l'effet Capital ne sera plus un problème pour vous (ou presque) ! \o/ Grâce aux feature flags, finis les bugs en prod ! \o/ Nous aimons les feature flags et nous saurons vous les faire aimer également ! Que ce soit sur le web ou sur le mobile, comptez sur nous pour décrire comment et pourquoi mettre en place des feature flags partout et tout le temps.

Web Security Basics

Salle A, parce que Amour 24/05/2016 14:45-15:30

Let's hack! This is the best way to remember how to protect. During this session, I will present an overview on how to exploit and prevent against "common" web vulnerabilities. How to crack passwords on a database, how to find and exploit XSS, how to use clickjacking, how to bruteforce login, to properly crawl.. and lots of other concepts.

Retour d’expérience : réaliser des Workers en PHP

Salle B, parce que Banzaï 24/05/2016 14:45-15:30

Soyons honnêtes, PHP n'est peut-être pas le langage de prédilection pour réaliser des daemons. ;-) Mais laissons les préjugés de coté et voyons les nombreux avantages à ajouter des workers à une application PHP. Retour d'expérience après 2 ans et des dizaines de workers en production. Focus le monitoring, l'utilisation de RabbitMq, Redis, MySQL, Cassandra... et plus généralement les problèmes rencontrés et les pièges à éviter.

Scaler du legacy, coûte que coûte

Salle A, parce que Amour 24/05/2016 16:00-16:45

Quand on parle de webperformance, il y a la théorie, les bonnes pratiques mais aussi la réalité du terrain. L'amélioration de la tenue de charge des systèmes monolithiques se heurtent parfois aux réalités budgétaires et calendaires (par exemple la date de lancement des soldes dans le e-commerce). Retour d'expérience sur 3 années de travaux dans un contexte legacy à forte audience !

PSR-6 & Symfony Cache : de la perf en standard

Salle B, parce que Banzaï 24/05/2016 16:00-16:45

Après plusieurs mois de discussion, le PHP-FIG (PHP Framework Interop Group) a publié la PSR-6. Son objectif est de permettre l'interopérabilité entre implémentations de systèmes de mise en cache - un aspect indispensable pour gagner en performance dans votre application. Lors de cette conférence, nous verrons les avantages et les limites de PSR-6, nous discuterons des différentes solutions de cache existantes (Doctrine, Stash, php-cache), et je vous présenterai le nouveau composant Symfony Cache.

Keynote de fermeture

Salle A, parce que Amour 24/05/2016 16:45-17:30

informations complémentaires

Le programme ci-dessus est donné à titre indicatif : il peut encore évoluer.

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :