Programme

Vous n'avez pas besoin de ça !

React, Microservices, GraphQL, REST, DDD... Tous ces buzzwords porteurs de promesses d'un monde meilleur sont sur toutes les lèvres, de toutes les conférences et s'installent petit à petit dans nos projets. Sont-ils vraiment la seule solution à tous nos problèmes ? Au travers de cette conférence à la description taillée pour le SEO nous verrons qu'il existe des alternatives à ces technologies parfois mieux adaptées au contexte dans lequel nous évoluons tous les jours.

Serverless et PHP

Serverless et ses "functions as a service" nous promet des applications scalables et à bas coût. En réalité à quoi est-ce que ça ressemble vraiment ? Et comment merger l'écosystème PHP mâture avec cette nouvelle architecture et ses outils ? Est-ce qu'on peut y faire tourner des applications HTTP ou CLI ? Est-ce que ça marche avec Symfony, Laravel ou même PSR-15 ? Explorons les réponses à ces questions à travers des études de cas et le projet Bref, solution pour déployer PHP en serverless.

MySQL 8.0 : quoi de neuf ?

MySQL 8.0 est la nouvelle version de MySQL. Plein de nouvelles fonctionnalités ont fait leur apparition tel que les Window Functions ou les CTEs. De nouvelles possibilités de LOCK d'enregistrement, des améliorations d'index et beaucoup d'autres changements dans tout les domaines. Durant cette session, le public pourra apprendre quelles sont les améliorations apportées à MySQL 8.0 et comment les utiliser en PHP.

We got rid of management: We love it!

Liip never had much of a management hierachy to begin with. But one day, our management decided to give control to all of us. It has been a long process, at first I thought it sounded crazy. Now I can’t imagine anything else. This talk is a story about my experiences as an employee going from having a management I could rely on, to being self managed. Having a lot of responsibility and power leads to being able to impact the things that matters the most. I thought I wanted to be “just” a programmer, now I am so much more than that using the holacracy framework.

Bash pour les développeurs et développeuses PHP

Des scripts de ligne de commande sont souvent utilisés pour automatiser des tâches, installations et opérations de déploiement. Étant des développeurs PHP, nous sommes habitués à une syntaxe surprenante et des concepts inconsistants, mais bash apporte ces problèmes à un tout nouveau niveau. Bash peut avoir l'air simple, mais le language est bizarre et plein des pièges. Je vais expliquer les concepts de base et constructions syntaxiques de bash, ainsi que vous avertir des erreurs fréquentes. Si je vais peut être vous faire peur avec bash, je vais aussi vous montrer comment utiliser PHP pour écrire des scripts pour la ligne de commande.

Comment fonctionne la cryptographie ?

Cette présentation va montrer la base commune derrière tout processus cryptographique informatique. Nous parlerons du chiffrement de Vernam, appliqué dans la machine Enigma à l'époque, pour l'appliquer au domaine de l'informatique.

Nous verrons une implémentation précise de la notion de chiffrement : le chiffrement par flot et les registres à décalage. Ces structures sont derrière la notion d'aléatoire en informatique. Le but est que tout le monde comprenne bien techniquement, comment fonctionne la base de tous les algorithmes de cryptographie du monde, sans pour autant entrer dans des formules mathématiques incompréhensibles.

Nous coderons une machine de chiffrement par flot, pas à pas, en PHP, puis sous forme d'extension PHP (en C). Les (vieux) algorithmes RC4 et A51 seront analysés puis implémentés pas à pas à titre d'exemple dans des classes PHP.

Pour vraiment comprendre le Machine Learning quand on y connaît rien !

Et si on oubliait toute la littérature existante sur le Machine Learning, les grands principes, les formules mathématiques avec des symboles étranges ! Nous vous proposons de vous initier à cette science en partant de cas très concrets, simples et compréhensible pour tous. Classification, régression, supports de vecteur, TF-IDF, réseaux de neurones, etc., tous ces termes ne devraient plus avoir de secret pour vous ensuite.

Reprenez le contrôle de PostgreSQL grâce à POMM

Aujourd'hui, lorsque l'on parle des bases de données, nous pensons tout de suite ORM. Le plus célèbre d'entre eux est sans doute Doctrine. Mais à quoi sert l'ORM ? Le but premier de celui-ci est l'abstraction de la base de données. En effet, nul besoin de connaissances en SQL pour persister ou récupérer des données. Celui-ci permet également de changer facilement de SGBDR. Cependant, qui, dans la vie d'un projet, a besoin de ça sans refonte ?

Le constat est qu'aujourd'hui, si bon nombre de développeurs font du Symfony avant de faire du PHP, ils sont encore plus nombreux à faire du Doctrine avant de faire du SQL. Ce qui était, avant, le point de départ d'un projet, est devenu complètement ignoré aujourd'hui.

Nous explorerons les concepts de POMM et son utilisation à travers une application PHP et nous reprendrons le contrôle de PostgreSQL afin d'exploiter la puissance de celui-ci.

Maintenir et faire évoluer une API GraphQL

Comment éviter de casser une API pour ses clients ? Comment continuer de la faire évoluer, le tout sans subir une maintenance trop lourde ? La solution n'est pas simple… Reprenons les bases : l'évolution d'une API consiste à s'efforcer de maintenir le corps de la requête / réponse, les paramètres de la requête, ses fonctionnalités générales, en ne les brisant que lorsque cela est absolument nécessaire. Ce concept n'est pas nouveau, mais il faut le dire, GraphQL va bien nous faciliter la tâche. Voyons ensemble comment mettre en place une API GraphQL évolutive, nous apportant plus de flexibilité et de liberté, tout en évitant (en théorie) aux clients d'avoir à migrer leur application vers une nouvelle version complètement différente.

Illuminez les applications de console avec Laravel Zero

C'est toujours sympa d'écrire de petits scripts à utilisations uniques, mais on a parfois besoin de créer une vraie application console, qui prend des arguments et respecte les conventions UNIX pour l'input, l'output et le reporting d'erreurs.

Pour cette présentation, nous utiliserons Laravel Zero, un micro framework qui s'appuie sur une version non officielle et modifiée de Laravel qui donne un point de départ parfait pour votre application console.

Vous y apprendrez les philosophies et idées à la base du framework. Nous aborderons aussi les points les plus importants de Laravel Zero, à savoir l'installation optionnelle d'Eloquent, l'utilisation du scheduler de Laravel ou l'intégration avec Collision.

La présentation incluera une session de live coding de 30m où vous apprendrez à utiliser Laravel Zero pour créer des applications consoles avec des usages réels.

Au terme de la présentation, vous serez capable de développer des applications console à la vitesse de l'éclair. Ces applications peuvent être utilisées pour des tâches récurrentes, par exemple des cronjobs ou des imports. Vous pourrez profiter de Laravel Zero, le micro framework basé sur les composants de Laravel pour utiliser vos fonctionnalités favorites de Laravel et créer des applications consoles élégantes et bien structurées.

Boostez vos applications avec HTTP/2

HTTP/2 permet d’améliorer jusqu’à plus de 50% le temps de chargement des pages web. Saviez-vous qu’il est désormais très facile d’optimiser vos applications PHP et Symfony pour tirer partie de ses fonctionnalités avancées ?

Au programme :

  • une présentation historiquement contextualisée des différentes versions du protocole HTTP ;
  • un état des lieux du support du protocole dans l’écosystème PHP ;
  • un guide présentant comment servir vos applications PHP et Symfony avec h2, en utilisant Nginx, Apache et Docker ;
  • de nombreux exemples de codes montrant comment utiliser HTTP/2 pour améliorer le temps de chargement de vos assets et de vos API grâce à la bibliothèque WebLink, à Twig et à Symfony
  • des exemples expliquant comment tirer parti du protocole via curl puis Guzzle en tant que clients

Sécurité, Bug Bounty & PHP

Malgré une prise de conscience ces dernières années, l'écosystème PHP a une culture de la sécurité très peu développée. Après plus de 2 ans d'expérience sur des programmes de bug bounty, retour sur quelques failles marquantes.

Starring:

  • Curl, l'ami qui peut se retourner contre vous
  • La vérité sur les IP
  • L'image bombing, mulitplier les bits

Lors de ce talk le but est de combattre l'effet Dunning-Kruger et de se rendre compte qu'en tant que développeur PHP, à propos de sécurité, nous savons que nous ne savons rien. Mais rassurez-vous, rien n'est perdu ! Nous verrons ensemble comment combattre ce constat.

Générateurs et Programmation Asynchrone: Mode d’emploi

Les générateurs sont souvent réduits à une simplification des itérateurs, mais ils sont surtout très pratiques et performants pour executer des traitements asynchrones. Nous aborderons le fonctionnement d’un programme asynchrone, le rôle des promises, et approfondirons l'utilisation des générateurs pour simplifier l’écriture de notre code. Enfin nous détaillerons des cas pratiques « prêts à l’emploi » pour tout type d’application, avec un retour d’expérience sur ce qui a été mis en place chez M6Web.

SOLID : Les principes à l’origine du succès de Symfony et de vos applications

SOLID est un acronyme représentant cinq principes de bases de la programmation orientée objet permettant le développement de logiciels fiables, évolutifs et robustes. Le framework Symfony est un excellent support pour illustrer chacun de ces principes. Nous verrons ainsi que SOLID est à l’origine de sa flexibilité, sa fiabilité mais aussi de sa maintenabilité et son évolutivité. Nous verrons également comment appliquer ces principes pour améliorer son code métier et perfectionner l’architecture de son application.

Comment j’ai commencé à aimer ce qu’ils appellent « design pattern »

Il arrive parfois que nous, développeurs, pensions qu’il n’est pas nécessaire de connaître ce qu’ils appellent les « design patterns » ou « patrons de conception ». Nous pensons parfois que nous n’avons pas besoin de cette théorie. Après des années d’expériences avec la faible maintenabilité de mon propre code et de celui de mes clients, j’ai exploré de nombreuses façons de découpler nos applications afin de créer des applications « enterprise ready » qui peuvent vivre pendant de nombreuses années. Via des exemples concrets, je vais vous présenter quelques design patterns qui peuvent vous aider à travailler sur une codebase propre, structurée et bien découplée.

Comprendre le fonctionnement de l’analyse statique

L’analyse statique est un domaine en pleine explosion, surtout en PHP. Relire du code à la vitesse de l’ordinateur requiert des outils théoriques puissants : contrôle de flux, dépendance des données, arbre de syntaxe abstraite, graphe de dépendances acycliques !

Si tout cela semble bien loin de PHP, vendez découvrir comment ils fonctionnent en PHP. Ce sont les outils les plus efficaces pour détecter ces mêmes erreurs que l’on retrouve en production, mais bien avant même que le code ne compile. Nous verrons comment ces différentes approches peuvent être exploitées pour construire une analyse de code destinée à traquer les erreurs qui vous gênent le plus.

De 6play.fr à une plate-forme internationale : retour d’expérience

Comment rendre compatible un modèle de données créé il y a 10 ans, qui n’a cessé d’évoluer mais qu’on doit conserver ? Comment traduire une application symfony ? Et côté front ? Comment garder la rétro-compatibilité de nos API et de l’ensemble de nos microservices ? Comment adapter nos back-offices, parfois legacy ? Comment échanger entre équipes, de métiers ou pays différents ?

Ce projet a été l’occasion de remettre à plat une partie de notre architecture, d’en faire évoluer d’autres.

Retour d’expérience sur sept mois de transformation pour passer d’un produit dédié à la France à une plateforme accessible dans quatre pays.

Cessons les estimations !

Alors que les estimations sont à la base des méthodes classiques et que dans le domaine Agile, SCRUM notamment lui accorde une grande importance, nous allons l’espace d’une conférence remettre en cause celles-ci.

Après un bref rappel de différentes méthodes permettant de réaliser des estimations et croyances qui y sont attachées, nous prendrons le temps de réfléchir sur les effets néfastes de ces dernières. Enfin, nous verrons comment dans la réalité des projets, il est possible de s’en extraire.

Conférence iconoclaste, sous la forme d’un one man show, afin de réfléchir (et de rire ?) sur un aspect essentiel de l’agilité.

Ouvert à tout public ayant une première approche des projets de développement logiciel.

Plongée dans le code du Zend Opcache : étude d'une suggestion pour la distribution de scripts PHP pré-compilés

Avec PHP 7, l'extension Opcache a gagné en maturité, pour garder les scripts PHP en mémoire cache dans une représentation intermédiaire après la phase d'analyse syntaxique. Aussi des gains de temps très nets sont au rendez-vous en production grâce à ce mécanisme.

Le Zend Opcache offre la possibilité de prolonger le cache mémoire par un cache disque, où l'on peut retrouver les scripts PHP pré-compilés sous forme de fichiers binaires.

Et si nous explorions ?

Nous examinerons le code source de l'extension, que nous recompilerons en proposant des modifications qui rendent possible la distribution directe de scripts PHP pré-compilés, sans livrer les sources, de façon similaire à la distribution de ".class" Java.

Le temps: la dépendance oubliée

Il y a 2 pratiques qui sont maintenant bien ancrées dans la plupart des projets : l'injection de dépendance et ne pas utiliser d'état global. L'objectif est de produire un code plus maintenable, testable et prédictible. Pourtant l'utilisation de l'api du temps en PHP enfreint ces 2 pratiques, il est donc temps d'adopter le pattern de l'horloge.

Symfony/Messenger un composant à votre service !

Avec la sortie de Symfony 4.1 le 30 mai 2018, un nouveau composant officiel fait son entrée sur le marché : Messenger. Il s'agit d'une abstraction autour des files d'attente de message. Ce nouveau composant ouvre la porte à une nouvelle façon de travailler car les traitements asynchrones et la consommation des messages sont maintenant supportés nativement par Symfony.

Qu'est-ce que ça change ? Pourquoi un nouveau composant officiel ? Comment l'intégrer dans un projet ? Quels sont les connecteurs supportés ? Quels bénéfices dans la structure du code ?

Nous avons choisi de faire confiance à ce jeune composant et je vous invite à suivre nos pas à travers les exemples réels de notre implémentation.

Docker en prod ? Oui, avec Kubernetes !

Kubernetes. À en croire certains articles, c’est une solution miracle. Développeurs, vous avez peut-être entendu ce mot ? C’est l’outil qui vous permettra de déployer du Docker en production ! Parce qu’autant utiliser Docker en dev c’est facile, autant en prod…

Mais qu’est-ce que Kubernetes ? Quelles possibilités si intéressantes nous fournit cet orchestrateur de conteneurs ? Pods, nodes, deployments, services, ou auto-scaling et health checks : autant de primitives et de fonctionnalités que vous allez découvrir et adorer, y compris en tant que développeurs !

Après avoir présenté ces bases, je vous proposerai un retour d’expérience sur la migration vers Kubernetes que nous sommes en train d’effectuer pour 6play.fr. Comment développeurs et sysadmins se répartissent-ils les tâches ? Avons-nous dû adapter nos applications PHP ? Quelles difficultés avons-nous rencontrées, quels compromis avons-nous acceptés et quelle route nous reste-t-il à parcourir ?

Sylius quelques chocolats plus tard

Maxime et Jacques viennent du Dark Web sous Magento. Après deux mois d'été à prendre en main Sylius pour un grand chocolatier nantais ils reviennent à Paris pour vous faire un retour bourré de pépites. Ces pépites ne seront pas en chocolat mais elles seront une première et belle mise en bouche à ceux qui souhaitent en savoir plus sur ce splendide framework e-commerce ! On va vous donner les clés de la boutique : e-commerce, symfony 4, une équipe de choc', beaucoup de soirée pizzas/bières, des astuces, des fails/success, du continous everything™ top moumoute et surtout du chocolat ! Plein de bonnes choses en somme.

Quelle différence y a-t-il entre le bon et le mauvais repository ?

Qu’est ce qu’un repository? Le pattern repository est l’un des pattern les plus utilisés dans nos applications. Bien que simple et pratique il est trop fréquemment mal employé : nos repositories sont plus souvent des entrepôts de requêtes SQL que des “vrais” repositories. Durant ce talk, nous verrons comment désigner un repository et gérer nos requêtes SQL.

La cuillère n'existe pas

Aujourd'hui la majorité des développeurs est d'accord sur 2 points :

  • Tester c'est important !
  • On n'a pas le temps de tester !

L'illusion de la 2e affirmation permet encore trop souvent de produire du code non couvert par des tests.

Pourtant le test de manière générale est un super concept qui va bien au delà de la simple "assurance" du travail effectué. Il est donc temps de se rendre à l'évidence, la cuillère n'existe pas ! (On commencera donc par là).

Et maintenant le mouvement "software craftsmanship" avec des patterns comme CQRS, Event Sourcing et de manière générale le DDD rend le travail de test encore plus simple. (C'est le 2e effet kiss cool trop souvent oublié, on enchainera dessus). Exemples et méthodologie au menu !

On se rendra alors compte au fil de la présentation qu'en fait un test rapporte de l'argent et que le problème de temps ne le sera plus une fois que vous l'aurez expliqué à vos managers !

Beyond design patterns and principles - writing good OO code

Of course, you should read all you can about SOLID, Design patterns, Patterns of Enterprise Application Architecture, etc. Once you have a basic understanding of these topics you still have to write that code though, and write it well too! What is good code? Are there some guidelines, or rules of thumb, which you can follow while making your everyday coding decisions?

In this talk I’ll cover many of these coding guidelines, which aren’t usually covered by patterns or principles books. They should help you write better code and give you a richer vocabulary for reviewing other people’s code. Some of the subjects that we’ll discuss are: state, mutability, CQS, one-method objects, domain-first, API-driven, functional programming influences, object boundaries, (de)serialization, and many more!

Microservices Gone Wrong

Microservices are the latest architectural trend to take the PHP community by storm. Is it a good pattern, and how can you use it effectively? In this talk, we'll explore real world experience building out a large scale application based around microservices: what worked really well, what didn't work at all, and what we learned along the way. Spoiler alert: we got a lot wrong.