Keynote d'ouverture

Katherine Johnson 25/10/2018 09:00-09:15 - Niveau : N/A - Français

Bienvenue au Forum PHP 2018 !

Présentation des conférencier·e·s

Katherine Johnson 25/10/2018 09:15-09:25 - Niveau : N/A - Français

Présentation des conférencier·e·s et de leurs sujets pour cette première matinée de conférences. 30 secondes par speaker pour pouvoir affiner ses choix !

Serverless et PHP

Katherine Johnson 25/10/2018 09:30-10:10 - Niveau : Confirmé - Français

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.

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

Grace Hopper 25/10/2018 09:30-10:10 - Niveau : Grand public - Français

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.

Vous n'avez pas besoin de ça !

Katherine Johnson 25/10/2018 10:15-10:55 - Niveau : Intermédiaire - Français

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.

Sylius quelques chocolats plus tard

Grace Hopper 25/10/2018 10:15-10:55 - Niveau : N/A - Français

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.

Maintenir et faire évoluer une API GraphQL

Katherine Johnson 25/10/2018 11:25-12:05 - Niveau : Intermédiaire - Français

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.

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

Grace Hopper 25/10/2018 11:25-12:05 - Niveau : Grand public - Français

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.

Bash pour les développeurs et développeuses PHP

Katherine Johnson 25/10/2018 12:10-12:30 - Niveau : Grand public - Français

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.

Le temps: la dépendance oubliée

Grace Hopper 25/10/2018 12:10-12:30 - Niveau : Grand public - Français

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.

Présentation des conférencier·e·s

Katherine Johnson 25/10/2018 14:15-14:25 - Niveau : N/A - Français

Présentation des conférencier·e·s et de leurs sujets pour cette première après-midi de conférences. 30 secondes par speaker pour pouvoir affiner ses choix !

Symfony 4 : une nouvelle expérience de développement

Katherine Johnson 25/10/2018 14:30-15:10 - Niveau : N/A - Français

Symfony 4 a été l'occasion de réévaluer tous les concepts de Symfony pour les adapter au développement en 2018. Cette nouvelle version est plus facile à apprendre, configurer, utiliser et déployer. Plongeons dans les nouveautés de cette version majeure pour comprendre l'impact de celles-ci sur nos projets.

Voyage au centre du cerveau humain ou comment manipuler des données binaires en Javascript

Grace Hopper 25/10/2018 14:30-15:10 - Niveau : Grand public - Français

Parcourir l’intérieur de votre cerveau, sur votre téléphone, uniquement avec des technologies web : c’est possible ! Et si je vous montrais comment on fait ?

On en profitera pour se demander : – Une IRM c’est quoi au juste ? – Comment on stocke une image dans un fichier ? – Comment ça marche le binaire pour un humain ? – Javascript sait faire ça !? – À quoi tout cela peut-il nous servir dans nos quotidiens de dev ?

Un talk avec des vrais morceaux de science, des 0, des 1, des exemples concrets et une démo live !

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

Katherine Johnson 25/10/2018 15:15-15:55 - Niveau : Intermédiaire - Français

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 fonctionne la cryptographie ?

Grace Hopper 25/10/2018 15:15-15:55 - Niveau : Grand public - Français

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.

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

Katherine Johnson 25/10/2018 16:25-17:05 - Niveau : Grand public - Français

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.

Sécurité, Bug Bounty & PHP

Grace Hopper 25/10/2018 16:25-17:05 - Niveau : Intermédiaire - Français

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, multiplier 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.

Mentorat & parcours de reconversion : comment faciliter l’apprentissage ?

Katherine Johnson 25/10/2018 17:10-17:50 - Niveau : Grand public - Français

Il y a plus d’un an, j’exerçais un autre métier. Après beaucoup de motivation, d'apprentissage personnel et quelques mois de formation dans une école spécialisée dans reconversion professionnelle, je fais aujourd'hui du développement web.. Ma particularité ? J’ai eu la chance d’être “accompagnée” par un mentor, dès le début de mes démarches. J’étais la seule dans ma promo.

Aujourd’hui, nous venons tous les deux vous raconter cette expérience, vous faire changer d’avis sur ces écoles de reconversion, vous donner l’envie de découvrir cette facette qui diffère de la formation initiale que la plupart d’entre vous connaissent, et vous inciter à aider vous-même d’autres futurs développeurs et développeuses.

  • Est-ce facile de trouver son mentor ou son mentoré ? Comment s’y prendre ? Par quels réseaux passer ?
  • Ce qu’on gagne quand on est mentoré : confiance, soutien, aide à l’apprentissage, réseau, conseils ...
  • Comment accompagner un reconverti quand on est mentor ?
  • Qu’en retire-t-on, à devenir mentor ?
  • Quelles sont les difficultés ? Comment ça se passe ?

Lightning talks

Katherine Johnson 25/10/2018 17:55-18:25 - Niveau : N/A - Français

  • Diversify our Symfony community: This is the story of a girl, Michelle sanver
  • Commander une application par le texte, Richard Hanna
  • La randonnée à vélo, Thomas Jarrand
  • Sécurité et cookies, Ulrich Lusseau
  • La méthode du Troll, Frederic Bouchery
  • Le RGPD a-t-il été le cavalier de l'apocalypse ?, Frederic Hardy

Présentation des conférencier·e·s

Katherine Johnson 26/10/2018 09:15-09:25 - Niveau : N/A - Français

Présentation des conférencier·e·s et de leurs sujets pour cette deuxième matinée de conférences. 30 secondes par speaker pour pouvoir affiner ses choix !

Symfony/Messenger un composant à votre service !

Katherine Johnson 26/10/2018 09:30-10:10 - Niveau : Intermédiaire - Français

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.

MySQL 8.0 : quoi de neuf ?

Grace Hopper 26/10/2018 09:30-10:10 - Niveau : Grand public - Français

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.

Docker en prod ? Oui, avec Kubernetes !

Katherine Johnson 26/10/2018 10:15-10:55 - Niveau : Grand public - Français

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 ?

La cuillère n'existe pas

Grace Hopper 26/10/2018 10:15-10:55 - Niveau : N/A - Français

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 !

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

Katherine Johnson 26/10/2018 11:25-12:05 - Niveau : Intermédiaire - Français

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.

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

Grace Hopper 26/10/2018 11:25-12:05 - Niveau : Grand public - Français

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.

We got rid of management: We love it!

Katherine Johnson 26/10/2018 12:10-12:30 - Niveau : N/A - Anglais

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.

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

Grace Hopper 26/10/2018 12:10-12:30 - Niveau : Grand public - Français

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.

Présentation des conférencier·e·s

Katherine Johnson 26/10/2018 14:15-14:25 - Niveau : N/A - Français

Présentation des conférencier·e·s et de leurs sujets pour cette dernière après-midi de conférences. 30 secondes par speaker pour pouvoir affiner ses choix !

Beyond design patterns and principles - writing good OO code

Katherine Johnson 26/10/2018 14:30-15:10 - Niveau : N/A - Anglais

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!

Comprendre le fonctionnement de l’analyse statique

Grace Hopper 26/10/2018 14:30-15:10 - Niveau : Confirmé - Français

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.

Cessons les estimations !

Katherine Johnson 26/10/2018 15:15-15:55 - Niveau : N/A - Français

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.

De la page au composant, partage de réflexion autour du front avec Radio France

Grace Hopper 26/10/2018 15:15-15:55 - Niveau : N/A - Français

À quels enjeux un front de service public doit-il répondre ? Depuis 2015, Radio France a entrepris un énorme chantier de refonte de l'ensemble de son offre. Jean-François, qui a participé à tout ce chantier depuis l'intérieur, vous proposera un aperçu des différentes situations et réflexions rencontrées lors de ces 3 années passées. À mi-chemin entre le retour d'expérience et le vœu pieux, nous allons parler pratiques de développement, qualité front, méthodes & organisations de travail, et brièvement technique.

Boostez vos applications avec HTTP/2

Katherine Johnson 26/10/2018 16:25-17:05 - Niveau : Grand public - Français

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

Illuminez les applications de console avec Laravel Zero

Grace Hopper 26/10/2018 16:25-17:05 - Niveau : Grand public - Français

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.

Développeurs de jeux vidéo: les rois de la combine

Katherine Johnson 26/10/2018 17:10-17:40 - Niveau : N/A - Français

Où on y parlera de jeux, de développement de jeux, ou de comment un jeu vidéo n’est qu’un amas de bric et de brocs mis bout à bout dans le seul but de duper, tromper, et leurrer le cerveau des joueurs et faire en sorte qu’ils en redemandent.

Keynote de clôture

Katherine Johnson 26/10/2018 17:40-17:50 - Niveau : N/A - Français

Ce n'est qu'un au revoir :'(