Kiboko au ForumPHP 2018

l'équipe Kiboko

Toute l’équipe technique s’est rendue à Paris au Forum PHP 2018 organisé par l’AFUP. L’équipe est enthousiaste de vous présenter notre retour d’expérience et les différents sujets qui nous ont marqué.

l'équipe Kiboko


Sécurité, Bug-Bounty & PHP

En tant que développeurs, nous souhaitons tous développer nos applications de manière sécurisée. Mais qui d’entre nous sécurise de manière fiable ses applications ?

Grâce à une petite application Symfony, Xavier Leune nous a montré que sécuriser son application n’était pas une si mince affaire. Les hackers n’ayant que leur imagination comme limites pour attaquer un site, il est important de penser à un maximum de vecteurs d’attaques possibles.

Xavier Leune, nous a fait la démonstration qu’avec une application qui utilise curl (comme beaucoup), il était aisé de découvrir l’architecture serveur et potentiellement d’en prendre le contrôle. Xavier Leune a également expliqué les raisons de ce qui a poussé CCM Benchmark à ouvrir des Bug Bounty, en partie parce que les développeurs ne sont pas des RSSI(Responsable de la Sécurité des Systèmes d’Information).
Maxime


Sylius

sylius

L’équipe de MonsieurBiz, composée de Jacques Bodin-Hullin et Maxime Huran, nous a présenté leur retour d’expérience de Sylius. Après plusieurs années à utiliser Magento 1 et 2, ils ont décidé de se tourner complètement vers ce nouvel outil e-commerce.

Certes, la courbe d’apprentissage est différente sur ce CMS. Après avoir apprivoisé les notions Symfony essentielles, Sylius permet une souplesse et une personnalisation très avancée.

Côté point forts sur le développement, Sylius permet déjà d’utiliser Symfony 4.1 ce qui permet l’utilisation de bonnes pratiques et des performances accrues par rapport aux autres plateformes. Quelques petites difficultés rencontrées lors de la mise en place d’un mode de livraison spécifique pour un chocolatier, mise à part cela je ne voie pas beaucoup de points négatifs à utiliser et développer sur Sylius.
Xavier


Boostez vos applications avec HTTP/2

Nous avons eu l’occasion lors du talk de Kevin Dunglas de découvrir un nouvel outil : “Mercure”. Il permet de pousser des messages en temps réel, pour qu’une application externe puisse être au courant immédiatement, ce sont les SSE (Server-Side Events).

L’application pousse un message au hub, qui le « redistribue » aux clients.

Kevin nous a proposé un premier exemple d’utilisation : imaginons que sur un site e-commerce un client commande le dernier produit avant la rupture de stock. Dans le même temps un second client un peu moins rapide est aussi sur le point de le commander. Dans un cas d’utilisation habituel, le second client aurait reçu un message d’erreur l’informant de la rupture de stock. Avec mercure, le client pourra être notifié instantanément de la rupture de stock pour ce produit.

Ce n’est qu’un exemple de tout ce qui est possible de faire, imaginons autre chose : Une petite application de sondage où un utilisateur peut voter sur différent sujet. Grâce à Mercure, l’utilisateur peut savoir en temps réel où en est le sondage.

Les points forts du protocole sont la compatibilité avec tout type de serveurs, le support de GraphQL, support le chiffrement, possibilité de restreindre les accès grâce à JWT (JSON Web Tokens)

Le protocole est déja implémenté dans API Platform et intègre le composant Mercure et le bundle Symfony.
Camille


Design patterns

design pattern

Durant le 1er jour du Forum PHP 2018, nous avons pu participer à la conférence de Samuel Roze « Comment j’ai commencé à aimer ce qu’ils appellent design pattern ». Durant ce talk, Samuel Roze nous a démontré pourquoi il est très important de connaître et manipuler correctement les patrons de conception.

Un patron de conception est la meilleure solution connue à un problème de conception récurrent. De ce fait, ils nous permettent de rendre une application beaucoup plus facile à maintenir. C’est pourquoi Samuel Rose nous à incités à beaucoup plus les utiliser notamment celui qu’on appelle le « Décorateur ».
Julien


Machine Learning

Le Machine Learning est l’utilisation de statistiques à partir d’une base de données pour mieux anticiper les besoins ou anticiper des actions futures.

Dans l’exemple de la conférence, le concept de machine learning a été utilisé pour proposer de meilleurs résultats lors de recherches dans l’application. Les développeurs n’avaient pas prévu les mots-clés et synonymes qu’un utilisateur pourrait taper.

Par exemple, un utilisateur pouvait rechercher « mécanicien », même si dans la base de données, il est enregistré « garagiste ». Pour pallier à ce problème, les multiple requêtes ont été enregistrées. Au fur et à mesure que les utilisateurs exécutent les mêmes successions de requêtes, ont peut assumer que les mots entrés sont liés. Au bout de plusieurs itérations, les mots « garagiste », « mécanicien » et « réparateur automobile » font partie du même corpus et donnent les mêmes résultats.

Un autre cas d’utilisation est la reconnaissance de modèle, de motif. Le machine learning n’essaie pas de comprendre des liens mais il établit des corrélations. Selon les articles lus par un utilisateur, on peut lui en proposer des sujets semblables, parce que la machine aura analysé plusieurs articles et saura reconnaitre ceux qui ont la même apparence, le même pattern.

Pour l’entrainer à classer des textes, des images, ou n’importe quel objet, la machine a besoin d’un modèle. Pour cela il faut préalablement catégoriser les objets « à la main » dans une base de données immense, que l’on donne à l’algorithme. A force de dire à l’algorithme quels articles sont « bon » ou « mauvais », il s’efforcera à trouver des points communs insoupçonnables entre les objets d’une même catégorie. Après avoir été nourris de milliers de données, la machine peut avoir un fonctionnement opaque et incompréhensible, même pour ses créateurs. Pourtant, selon l’algorithme utilisé, la classification est habituellement satisfaisante. Mais le Machine Learning ne fait que suivre l’exemple, il est toujours à la merci du jugement humain exercé dans la création du modèle de données.
Clément


Conclusion

Encore un événement AFUP incontournable, nous avons une nouvelle fois apprécié les rencontres, les échanges, les différentes conférences, l’apéro communautaire, les goodies, les confrères… en fait tout ce qui fait le Forum PHP 2018. Un grand merci à tous les organisateurs de cette édition 2018 ! On se donne rendez-vous aux AFUP days le 17 mai 2019 à Lyon.

Weekend OpenGento 2018

Le Week-end Opengento 2018 s’est déroulé du Vendredi 1er juin 2018 au Dimanche 3 juin 2018 !

Cette année, nous nous éloignons de la ville rose pour nous rapprocher du pays de la lentille verte et de la liqueur de verveine !  Nous nous sommes réunis dans la commune d’Allègre à 30 km du Puy-en-Velay. Une vingtaine de développeurs de toute la France (Paris, Lyon, Toulouse, Strasbourg, Béthune…) et même de Suisse et de Belgique se sont réunis durant 3 jours pour un hackathon communautaire et conviviale.

Week-End Opengento - hackathon Magento
Week-End Opengento 2018 Allègre. Le hackathon de la communauté Magento francophone.

Au programme

Au début du weekend, nous avons pu participer à la présentation de plusieurs technologies telles que Front Commerce, OroCommerce & Marello. Mais bien entendu Magento était dans toutes les lèvres avec notamment le rachat récent par Adobe.

Après les retrouvailles et les présentations nous avons pu choisir les différents sujets à traiter durant le weekend ainsi que les intentions de chacun :

Entre apéro, barbecue, match de foot France-Italie (3-1) retransmis sur le vidéo projecteur, petit déjeuner et repas au restaurant, parties de babyfoot ou de rocket league, promenade dans le village, ce weekend fut productif et plusieurs sujets ont pu bien avancer.

Vous retrouverez tout le travail de ce hackaton sur le github d’Opengento avec les dépots suivants :

En images

Conclusion

Comme chaque année, ce fut un réel plaisir de se retrouver avec des développeurs de la communauté Magento. Nous avons pu échanger autour des différents choix techniques, des méthodes de travail de chacun, de la mise en place de la réforme RGPD, des difficultés rencontrés avec Magento 2…

Nous tenons à remercier Aurélia pour nous avoir trouver le gîte et le restaurant, Maxime pour avoir su fédérer et motiver la communauté et bien sûr tous les participants à ce weekend notamment ceux qui ont fait plusieurs heures de route pour venir dans notre belle région.

PhpTour 2018 par Julien

Présentation du forum

Toute l’équipe Kiboko est allée les 17 au 18 Juin 2018 au dernier PhpTour, un événement de deux jours regroupant beaucoup de développeurs  autour du langage Php.

Durant ces deux jours, j’ai eu l’occasion de participer à de nombreuses conférences. Les conférences se déroulaient dans une salle de cinéma, de 9 heures à 18 heures, on ne manquait pas d’informations. Un membre de l’AFUP nous a présenté le PhpTour lors de la Keynote d’ouverture.

Avant de commencer, les conférenciers se présentaient et expliquaient brièvement leurs conférences en 30 secondes, de ce fait les participants du PhpTour pouvaient choisir d’aller dans telle ou telle conférence car deux conférences se déroulaient au même moment dans deux salles différentes du nom de Jarvis et de Morpheus, sous un format allant de 20 à 40 minutes.

Premier jour

Une des premières conférences à laquelle j’ai assisté a été “Retour sur 5 ans de CLI PHP pour importer le catalogue chez Deezer”.

Romain Cottard de Deezer nous a montré la façon dont est géré l’ajout de leur catalogue musical depuis la réception des albums par les maisons de disques jusqu’à la plateforme Deezer. Deezer n’est pas simplement une application Web mais aussi un catalogue disponible sur mobile et autres devices. Romain Cottard nous a montré comment d’une application d’un seul bloc il a réussi à diviser les différents processus de la gestion du catalogue.

« Bienvenue dans la matrice ! »

De par son titre, je m’attendais à quelque chose de complexe en tant que développeur junior, j’ai eu cette appréhension de ne rien comprendre, et bien j’ai eu tort car cette conférence est une de celles que j’ai le plus appréciées. Le conférencier Benoit Jacquemont d’Akeneo a réalisé une démonstration en ligne de commandes pour exécuter une application web, puis à lancé une commande de débogage qui nous a affiché une multitude de lignes incompréhensibles à première vue.
Benoit Jacquemont nous a convaincu d’utiliser cette manière de faire pour déboguer nos applications. En partant de “rien” et en suivant un raisonnement très logique, nous savons maintenant déboguer une application de A à Z.

Avant de manger, je voulais participer à tout prix à la conférence “Tenter de gagner (un peu) sa vie avec un projet open source”. Cette conférence évoquait un retour d’expérience de Nicolas Loeuillet. Il nous a raconté toute son expérience depuis son idée de développer une application mobile payante jusqu’à sa création et sa maintenance ainsi que ses contraintes temporelles.

Pendant la pause de midi, nous avons eu l’occasion d’échanger sur les différentes conférences auxquelles nous avons assisté. L’AFUP organisait un déjeuner chaque matin, de quoi grignoter tous les midis et de goûter à la pause de 4 heures. Tous ces moments permettaient de faire le point sur ce qu’on avait entendu précédemment.

Une des conférences que j’ai le plus apprécié fut “Éthique et macarons”. Laurent Chemla, un des principaux précurseurs d’internet (co-fondateur de Gandi) nous a montré sa vision de l’effet négatif que peut avoir internet aujourd’hui sur le comportement des gens. Il incitait tous les développeurs à réfléchir sur l’effet que leurs applications peuvent avoir sur le comportement des gens avant de les concevoir.

Juste avant de finir cette première journée, les organisateurs ont planifié différents Lightning-talks. Quelques conférenciers présentaient un sujet pendant cinq minutes, souvent des sujets annexes pour se divertir.

Le soir nous sommes allé à l’apéro organisé par l’AFUP au Circus dans le centre de Montpellier.

Pendant cette partie de l’événement, nous avons eu la chance de pouvoir discuter autour de plein de sujets tournant autour du Php, e-commerce… tout en dégustant de nombreux petits plats de charcuterie et de fromages proposé avec une distribution de boissons tout aussi agréable.
Ce passage de nuit m’a permis de découvrir la ville de Montpellier, j’ai d’ailleurs retrouvé une atmosphère très sympathique. Durant cette soirée j’ai eu la chance d’écouter le parcours fort intéressant de Romain Monceau speaker et lead développeur chez Akeneo.

Deuxième jour

Le lendemain, il ne faut pas se le cacher nous étions un peu fatigués. Dès la reprise des conférences, j’ai beaucoup apprécié les différentes conférences car beaucoup d’entre elles évoquaient Symfony, un outil que j’utilise tous les jours depuis le début de mon stage.
J’ai trouvé ça génial de pouvoir assister réellement aux conférences des développeurs de SensioLabs et d’échanger avec les créateurs de Symfony dont Kevin Dunglas.

Pour finir cette journée :

1) “La pire meilleure idée : faire du batch processing avec Doctrine”, était une conférence sur la gestion de grande base de données dans une application. Je l’ai beaucoup apprécié car elle m’a permis de découvrir à quel point les problématiques peuvent changer au cours du temps dans une application.

2) Jouons tous ensemble à un petit jeu. La dernière grosse conférence était en fait une application web créée par Thomas Sieffert. Le principe était de se connecter sur le site en utilisant le QR code avec nos smartphones et on accédait ensuite à un quiz en temps réel, le fait qu’on voyait toutes les personnes connectées et les réponses en temps réel fut très impressionnant.

Ma vision personnelle

Ce fut une première pour moi de participer à un événement de ce type.
Il y avait une super ambiance dans notre équipe ainsi qu’avec les autres participants. En tant que stagiaire, je trouve génial d’avoir participé, cela m’a permis de tisser des liens forts au sein de l’équipe.
Ma participation au PhpTour m’a permis également d’ouvrir ma vision sur le métier de développeur php et de regarder autour de nous comment les autres développeurs peuvent travailler. Ce PhpTour m’a également permis de découvrir des nouvelles technologies, de nouvelles méthodes, et donc d’élargir ma vision de développeur.
J’ai retenu pas mal de choses et je suis très fier d’avoir mangé à côté de développeurs très expérimentés.

Pour conclure, je suis très satisfait de ce séjour montpellierrain et j’ai hâte de participer aux prochains AFUP days avec toute l’équipe Kiboko !!!

PhpTour 2018 par Camille

Premier Jour

Le 24 et 25 mai 2018 se déroulait la dernière édition du PHP Tour.

Étant stagiaire chez Kiboko, je n’imaginais pas avoir la chance de pouvoir me rendre à ce genre d’événement. Après 5h de voiture, nous voilà au Gaumont Odysseum, à Montpellier, qui a été réquisitionné pour l’occasion.

L’équipe Kiboko en route pour le PHP tour 2018

Après une razzia sur les stands des sponsors, c’est le sac pleins de goodies que nous assistons à la première conférence de la journée.

Nikolas Grekas nous explique comment Symfony 4 a pu tirer le maximum du potentiel du moteur de PHP7.

Arrive ensuite Jean Pasdeloup et Romain Cottard, qui nous résument 5 ans d’évolution de l’import du catalogue Deezer.

Puis vient la conférence qui pour moi a été la plus intéressante de la journée :

“Bienvenue dans la matrice !” de Benoit Jacquemont, qui travaille chez Akeneo. Il nous montre différents outils systèmes qui peuvent nous permettre d’intercepter et d’analyser les échanges entre les processus et le noyau Linux.

Une conférence technique, mais Benoît, très pédagogue, a su bien vulgariser ce qui se passait derrière un programme, comment les processus interagissaient entre eux, et comment trouver des solutions à des problèmes qui semblent à première vue très compliqués à résoudre.

Moi qui avais une vision très surfaite de comment fonctionnait un programme, j’ai pu grâce à cette conférence acquérir une vision un peu plus globale de la “Matrice”.

Nous découvrons peu de temps après le Speak de Nicolas Loeuillet, qui nous présente son projet, Wallabang, et son retour d’expérience sur le parcours qu’il a effectué lors de cette aventure. Il répond également à la fameuse question : Peut-on gagner sa vie avec un projet Open-source?

La réponse? Ça semble à première vue compliqué, mais pas forcément impossible.

La pause

Petite pause déjeuner, histoire de reprendre des forces pour l’après-midi, puis compétition inter-entreprise de BabyFoot, où nous avons malheureusement dû nous incliner face à l’adversité.

14h00 : reprise des hostilités avec Joel Wurtz, qui nous explique comment faire de l’asynchrone avec PhP de manière simple, sans finir avec le cerveau qui fume, et surtout sans callbacks (Et oui c’est possible !).

C’est à ce moment de la journée que j’ai du faire le choix cornélien, entre la conférence “Un autre regard sur la validation” de Quentin Pautrat, et “CQRS, Fonctionnel, Event Sourcing & DDD (Domain Driven Design)” d’Arnaud Lemaire.

J’ai fini par choisir le speak d’Arnaud car je ne connaissais aucun des concepts énoncés ci-dessus.

Au programme beaucoup de théories sur des concepts architecturaux assez complexes, à une cadence très soutenue (environ une centaine de slides en 40 minutes, autant dire qu’il fallait s’accrocher, surtout après avoir bien mangé).

Mais le sujet était plus qu’intéressant et permettait d’entrevoir différentes approches d’un projet, de choisir la bonne manière d’organiser son code suivant le besoin, et surtout d’expliquer des concepts qui peuvent paraître très nébuleux aux premiers abords.

Un peu d’Ethique

Enfin, pour finir cette belle journée, Laurent Chemla nous a proposé une conférence-débat sur un sujet plus que polémique en ce moment, j’ai nommé : Le respect de la vie privée,  et plus particulièrement la responsabilité des développeurs par rapport à celle-ci.

Et en plus il distribuait des macarons.

Apéro communautaire

Consommations offertes par l’Afup, ça c’est cool.

Deuxième jour

Lever à 8 heures, on attaque avec Kévin Dunglas , que je suis sur les réseaux sociaux déjà depuis un bon moment.

Il nous montre les différences entre les architectures REST et GraphQL, l’alternative proposée par Facebook. Démonstrations à l’appui, il nous explique les avantages, les inconvénients, le tout à travers son framework : Api Platform.

Toujours au top, des explications toujours clairs, un vrai plaisir d’assister à ses talks.

Caching with PSRS

Hannes Van De Vreken nous présente ici les différences entre le PSR-6 et le PSR-16, comment le mettre en place sur nos  applications, et chose très importante :  Comment bien gérer son cache.

Petite pause

On fait le plein de café et de viennoiseries, et on y retourne !

Un peu d’événements dans un monde linéaire

Une autre de mes conventions préférées, car la gestion des événements a longtemps été un concept assez abstrait pour moi, et Julien Vinber a su éclairer les choses grâce à des exemples très complets.

Il nous montre aussi les différences entre la gestion d’événements synchrones et asynchrones (RabbitMQ)

Et pour la fin…

Et pour finir ce PHP tour, on se retrouve avec Romain Monceau qui nous présente son retour d’expérience de l’utilisation de doctrine pour traiter des processus lourds, de type import de gros volumes de données et des problèmes qui en découlent à travers un exemple qui nous parlera à tous :

L’import d’un immense catalogue de bières dans notre base de données !

A travers cet exemple léger, on a pu voir que changer notre manière de développer peut apporter d’énormes gains de performance, ce qui sur de gros volumes peut nous faire gagner un temps précieux.

Ma vision de ce tour

C’est le premier événement de ce genre auquel j’assiste et sûrement pas le dernier. Outre les conférences toutes très intéressantes, ce que j’ai préféré dans ce tour, c’est de pouvoir rencontrer et de surcroit échanger avec d’autres développeurs qui ont pour la plupart beaucoup plus d’expériences que moi, et de voir à quel niveau ils ont pu arriver et surtout l’ampleur des projets qu’ils entreprennent .