AFUP Day Lille 2020

Nous continuons notre tour de France des AFUP Day avec la troisième étape à Lille toujours en visioconférence. Ces conférences ont eu lieu le 26 juin 2020, voici le programme complet des conférences.


Retour d’expérience

Comme pour l’AFUP Day Nantes et Lyon 2020, une partie de l’équipe technique de Kiboko a également participé à cette édition Lilloise. Nous avons choisi de vous faire un retour d’expérience en choisissant chacun une conférence :

Symfony 5 par Titouan GALOPIN

Titouan nous a présenté les nouveautés de Symfony 5 lors de sa conférence. Xavier a choisi de vous parler du composant Symfony Mailer, en place depuis Symfony 4.3 et qui a évolué dans la version 5 de Symfony avec la possibilité d’ajouter le Mime component. Avec ce dernier composant, on peut désormais concevoir des emails beaucoup plus facilement via un object Email. il est également possible d’utiliser l’objet TemplatedEmail qui, comme son nom l’indique permet de créer des templates emails en twig. Pour aller encore plus loins, il est aussi possible d’ajouter le composant css inliner extension permettant de mettre en forme des emails comme des sites webs via des feuilles de style.

C’est grâce à ces nouveautés qu’aujourd’hui nous pouvons concevoir nos emails en créant des templates twig avec des assets et du style. Elles nous permettent (enfin) de générer un template email compatible avec les différents clients emails.  Plus besoin de créer un ficher .html avec du style en dur pour concevoir son email. Vous pouvez également lire un article de Gary Houbre qui aborde ce sujet.

Sauvons le Web : décentralisons ! par Kevin DUNGLAS

Clément nous fait un retour sur la conférence de Kévin :

Le web va mal : même Tim Berners-Lee, son inventeur, le dit ! Autrefois un far-ouest libre partagé entre plusieurs sites et acteurs différents, il y a maintenant seulement 5 mega-corporations assurant tous nos besoins, et des milliers de petits poissons qui se partagent les 5% restants. Afin d’éviter tout incident diplomatique et sous couvert de protection de la veuve et de l’orphelin, les GAFAM appliquent des systèmes de censure automatisés entravant la liberté d’expression des utilisateurs. Et à ce petit jeu, les réseaux risquent d’énormes sanctions. Les robots se retrouvent obligés de ratisser large pour supprimer tout ce qui ressemble de près ou de loin à du contenu offensant. Et pour peu qu’un pays ait un nombre alléchant d’utilisateurs potentiels, son gouvernement définit lui-même les contenus illicites : par exemple sur Facebook, les groupes Kurdes en conflit contre Daesh n’ont pas le droit de s’organiser du fait qu’ils soient considérés comme des terroristes par le gouvernement Turque.

Nous laissons de plus en plus de pouvoir aux GAFAM et les télécrans leur permettent de s’immiscer 24/7 dans notre vie privée. Si nous voulons éviter l’enfer du cyberpunk et du système de crédit social, il faut décentraliser le web : se passer autant que possible des GAFAM et rechercher des solutions libres, indépendantes et hébergeables chez soi.

Kévin Dunglas rappelle que la stack native du web est faite pour être indépendante, il faut l’utiliser ! Une petite résistance se crée et des alternatives apparaissent : Mastodon à la place de Twitter, Mobilizon à la place des événements Facebook et caetera. Il reste cependant difficile de lutter contre les services d’hébergements d’Amazon ou de se passer du jour au lendemain d’Instagram par exemple. Mais souhaitez-vous vraiment vivre dans un monde où l’anonymat n’existe plus ? Dans un monde où il faut renseigner son numéro de sécurité sociale pour poster sur Twitter ou accéder à un site pour adulte ?


Vous pouvez retrouver nos retours d’expériences des autres évènements AFUP Day 2020 :
AFUP Day Nantes
AFUP Day Lyon

AFUP Day Lyon 2020

Nous continuons notre tour de France des AFUP Day 2020 avec la deuxième étape à Lyon toujours en visioconférence. Ces conférences ont eu lieu le 24 juin 2020, voici le programme complet des conférences.


Retour d’expérience

Comme pour l’AFUP Day Nantes 2020, une partie de l’équipe technique de Kiboko a également participé à cet événement. Nous avons choisi de vous faire un retour d’expérience en choisissant chacun une conférence :

La programmation défensive ou l’art de ne pas se faire confiance par Alexandre BALMES

Camille a choisi la conférence d’Alexandre BALMES présentant la programmation défensive ou l’art de faire confiance en personne, même pas en son propre code. Il nous a présenté la librairie « Safe » qui se trouve très intéressante car, aujourd’hui beaucoup de fonctions natives de php ont été écrites avant l’ajout de la gestion d’exception (ce qui fait que certaines fonctions peuvent renvoyer « false » au lieu de « true » en cas d’erreur). Cette librairie réécrit ces fonctions et permet de renvoyer des exceptions qui rendent les erreurs bien plus pratiques à identifier.

Alexandre nous a également présenté différents outils d’analyses statiques qui permettent d’améliorer grandement la qualité de son code :

  • PHP-CS-Fixer qui permet d’améliorer son code pour qu’il réponde au standards php récents (PSR)
  • php stan qui permet une analyse statique du code et de détecter de potentiels erreurs
  • rector php qui est un outil qui permet de refactoriser son code

Ainsi que divers autres outils d’analyse statique. Tous ces outils sont faits pour avoir une approche défensive et d’anticiper les potentiels bugs qui peuvent échapper aux développeurs.

6play_API-v2-Final(1).doc par Benoit VIGUIER

Cette conférence, sélectionnée par Clément, sur les API employées pour M6 Replay s’intitulait « 6play_API-v2-Final(1) » pour nous rappeler qu’un concept initial n’est jamais éternel et que ce qui semblait être une bonne idée peut se transformer en cauchemar ingérable, uniquement descriptible comme un gros plat de spaghettis indémêlables.

Tout a commencé par un schéma pour représenter les connections entre les différentes fonctionnalités, ce qui aide à voir quelles informations l’API devrait fournir. En 2011 n’y avait que M6play, et le schéma était simple, mais depuis une dizaine d’autres services sont venus s’y greffer. Benoit a ensuite parlé des différents types d’API, de leurs avantages et inconvénients et nous a expliqué les différentes itérations par lesquelles les développeurs sont passés pour correspondre au mieux aux besoins de l’équipe Front-end. Par exemple, les API de type REST n’étaient pas adaptées car elles revenaient à utiliser Doctrine et provoquaient trop d’appels, donc trop de données pour les téléphones. C’est un débat constant entre des outils trop spécialisés ou trop génériques.

La conférence s’est terminé par la citation : « Make interfaces easy to use correctly and difficult to use incorrectly », en conclusion,  faire en sorte que l’utilisateur ne puisse pas se tromper, abuser de l’API ou se limiter simplement s’il ne comprend pas comment s’en servir.

DevOps ? Je n’ai jamais voulu faire ça, et pourtant… par Sofia LESCANO

Julien a choisi la conférence de Sofia LESCANO. Elle nous a présenté son retour d’expérience et sa montée en compétence dans le domaine du dev-ops, autrement dit, la gestion du serveur/monitoring des applications et la qualité du code. Elle nous a fait part qu’à ses débuts, elle était réticente quant à l’apprentissage de ce domaine. Mais c’est en découvrant l’immense panoplie d’outils permettant de faciliter et automatiser l’infrastructure de ses projets que Sofia s’est découvert une passion pour le dev-ops.

En faisant un peu de veille technique on peut comprendre facilement comment gérer le stockage de fichier, les bases des données, la puissance de son serveur, de manière qualitative. Sofia, pendant ce talk nous a prouvé que devenir dev-ops en étant à la base développeur n’est pas insurmontable et qu’il y a matière pour apprendre en s’amusant et améliorer l’écosystème de nos projets.

Tu n’es pas un {framework} développeur ! par Thomas Dutrion

Nicolas nous fait part de la conférence de Thomas qui a été présenté en fin de journée. Il nous a rappelé que nous étions des développeurs PHP avant d’être développeurs de tel ou tel framework (coucou Symfony et Laravel). En effet, dans les offres d’emploi et dans les CV, il n’est pas rare de voir marquer « Recherche développeur Symfony » dans le cas d’une offre d’emploi ou « Développeur Symfony » sur un CV ou sur un profil Linkedin. Et si on remplaçait ça par « Recherche développeur PHP » ou encore mieux par « Recherche développeur » ?

Pour illustrer ses propos, Thomas a fait quelques petits comparatifs sur un exemple de code avec quelle syntaxe et méthode à adopter si on utilise Symfony ou Laravel. Il a même montré une équivalence de code en PHP dénué de tout framework et la logique était bien évidemment la même.

Sois un développeur PHP avant d’être un développeur Symfony/Laravel !

Le partage de connaissance en entreprise. par Guillaume Thirard

Xavier a sélectionné cette conférence car les expériences vécues et présentées par Guillaume sont très proches de celles déjà rencontrées dans le passé. Et il est vrai que transmettre un savoir-faire à un collaborateur est devenu un point sensible et parfois chronophage, mais des méthodes et des outils existent pour faciliter cela.

Documenter, automatiser et lister les différentes tâches ou actions à réaliser permettent de faciliter l’arrivée d’une nouvelle recrue. Ces documentations sont désormais indispensables pour mettre en place les outils modernes que nous utilisons aujourd’hui et comme l’indique Guillaume il ne faut pas oublier de la maintenir et de la mettre à jour. Un autre point très intéressant pour transmettre son savoir est de faire des codes review constructives, en posant des questions et échangeant avec le reviewer.

D’autres méthodologies existent pour faciliter l’apprentissage tel que le pair programming, le mob programming, participer à des conférences internes ou externes. À titre d’exemple, chez Kiboko, depuis le début de l’année nous avons mis en place 2 à 4 Kibokast par mois où un technicien nous présente un sujet à toute l’équipe (souvent choisi suite à un code review ouvrant cette discussion).


On se donne rendez-vous dans quelques jours pour les conférences des autres AFUP Days 2020 :
AFUP Day Nantes
AFUP Day Lille

AFUP Day Nantes 2020

Nous lançons notre série d’articles sur les AFUP Day 2020 sous un format exceptionnel. En effet, cette édition 2020 a également été perturbée par le COVID-19 et a dû s’adapter pour faire une version 100% en ligne. Grâce à cela, nous avons pu participer aux 4 éditions du cycle de conférences de l’AFUP.

Nous commençons donc notre premier volet des AFUP Day avec l’édition Nantaise qui a eu lieu le 19 juin 2020, vous pouvez consulter le programme complet des conférences.

Dans cette édition, Grégory a pu faire une conférence sur les synchronisations entre différentes applications.

Synchroniser ses applications facilement, 3 ans ont passés. par Grégory Planchat

Lors du PHP Tour 2017 Nantes, Grégory avait présenté le composant akeneo/batch. (revoir la conférence)
Revenons sur 3 ans supplémentaires d’usage, de réflexions et de refactorisation qui ont abouti à la création d’un framework spécialisé.

Dans des environnements de plus en plus inter-connectés, de plus en plus hétéroclites, nous remarquons l’émergence de l’utilisation des PWA, la généralisation des API et des tâches en files d’attentes asynchrones. Là où les solutions pour interroger de petits volumes de données dans des bases distantes commencent à atteindre une certaine maturité.

En plus de la conférence de Grégory, une partie de l’équipe technique de Kiboko a également participé en tant que spectateur. Nous avons choisi de vous faire un retour d’expérience en choisissant chacun une conférence :


Retour d’expérience :

Les structures de données en PHP par Frédéric BOUCHERY

Lors de cette AFUP Day 2020, Julien a choisi de présenter la conférence de Frédéric Bouchery, développeur depuis 1983, présent aux événements AFUP comme tous les ans. Cette fois-ci, Frédéric nous a présenté les avantages et inconvénients de l’utilisation des tableaux, des collections intégrées dans PHP (la SPL) et d’une extension intéressante : PHP-DS. Dans cette conférence, nous avons remarqué qu’il n’existe aucune solution parfaite pour manipuler ces objets mais qu’il est nécessaire de bien les connaître pour savoir quand les utiliser selon le contexte. Ce talk « Les structures de données en PHP' » fut très enrichissant puisque nous sommes souvent amenées à traiter de grosses quantités de données lors des synchronisations dans les différentes applications.

Une conférence avec réalisation digne d’une chaine météo :

Mon email devient dynamique ! par Patrice DE SAINT STEBAN

Nicolas a sélectionné pour vous cette conférence sur l’AMP (Accelerated Mobile Pages). Il s’agit d’une nouvelle technologie qui a été inventée par Google dont le but principal est d’accélérer le temps de chargement d’une page web sur mobile. Pour arriver à cela, le JS est chargé de manière asynchrone alors que l’HTML et le CSS sont chargés en premiers lieux pour avoir un rendu le plus vite possible d’une page.
Cette technologie est également utilisée depuis peu dans l’envoie de mail pour les rendre dynamiques. L’utilisation de ces mails devrait être de plus en plus courante dans les prochaines années, notamment dans le milieu professionnel. L’exemple simple de cet usage est l’envoi d’un questionnaire en ligne. Habituellement, on clique sur un lien qui nous envoie dans un autre onglet. Avec les mails dynamiques, ces questionnaires sont directement intégrés dans les mails, pas besoin d’ouvrir un autre onglet.

Un site internet pour répondre aux défis actuels : le greenIT, l’accessibilité, la performance et le référencement ! par Hervé BOISGONTIER

Xavier nous a sélectionné cette conférence, elle aborde les 4 points de vue lors de la conception un site web. Aujourd’hui la conception d’un site nécessite de prendre en compte de nombreux critères pour avoir un produit abouti et efficace. Hervé nous précise que l’accessibilité d’un site est un aspect trop souvent négligé par les créateurs de site. Pour rendre un site utilisable par tous types de handicaps et au plus grand nombre, plusieurs standards existent :
Standards WAI de W3C
Standards RGAA en France

En plus des règles d’accessibilité, les performances d’un site sont désormais une problématique très importante pour le référencement notamment pour le SEO. C’est même devenu un critère d’indexation majeure dans l’algorithme de Google. Pour améliorer ce point, nous avons accès à l’utilitaire en ligne Google Page Speed qui nous permet d’analyser un site en version mobile et desktop afin d’optimiser et d’identifier les éléments ralentissant un site.

Vos tests sont-ils de qualité ? Découvrez-le avec le mutation testing. par Julien BRAURE

Mutations créées, mutants capturés, mutants échappés… sont des sujets qui intéressent Clément. Ce n’est pas un épisode de X-Men, mais bien la conférence de Julien Braure sur le Mutation Testing en PHP. Tout le monde s’accorde à dire qu’écrire de bons tests est compliqué : on oublie parfois certains recoins et particularités de son propre code. Et dans la précipitation on écrit une assertion qui revient à tester si 1 est égal à 1.

Le Mutation Testing aide à écrire de bons tests en modifiant de petites portions du code testé. Par exemple, un changement de type sur une variable, une incrémentation sur un entier, etc.
Un utilitaire en ligne de commande (Infection) va automatiquement saupoudrer notre code de petites erreurs et lancer les tests pour rapporter le nombre de mutations. Si le test passe toujours, on dit qu’un mutant « s’est échappé », et le test devra être revu pour détecter l’anomalie. L’objectif est donc de capturer le plus de mutants en écrivant plus d’assertions aux bons endroits dans le but d’éviter que la moindre coquille ne se retrouve en production. De cette façon la mutation force à écrire des tests qui parent à toutes éventualités et permet d’éviter des comportements imprévus de l’application. L’interface en mode texte ne paie pas de mine, mais avec un peu d’imagination on se croirait dans le Wasteland.


On se donne rendez-vous dans quelques jours pour de nouveaux retours d’expériences sur les conférences des autres AFUP Day 2020 :
AFUP Day Lyon
AFUP Day Lille

Kiboko au ForumPHP 2019

Toute l’équipe technique s’est rendue à Paris au Forum PHP 2019 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é.


Présentation de Blackfire

Entre deux conférences, l’équipe a eu le droit à une présentation détaillée de l’outil de profilage Blackfire par Jérome Vieilledent. Depuis plusieurs mois, Kiboko utilise déjà cet outil afin de trouver les optimisations possibles dans le code. Mais cette présentation nous a permis de découvrir les nouveautés de ce profiler, de faire découvrir cette solution à toute l’équipe et également de découvrir certaines fonctionnalités que l’on n’utilisait pas ou très peu.


Darwin et l’agilité

La conférence de François Zaninotto était en réalité menée par un certain professeur « Eugene Fournier » dans le cadre d’un rassemblement d’experts des insectes. L’éminent faux scientifique a expliqué devant son assemblée de confrères pourquoi les entreprises des nouvelles technologies travaillant sur des programmes pour micro-ordinateurs personnels, devraient avoir un comportement proche des insectes.

Pour en arriver à ce raisonnement, le professeur Fournier a étudié le cas curieux d’une de ces « start huppe » (à prononcer à la française) et de ses joyeux employés.

Selon lui, la méthode d’évolution des entreprises, qu’on appelle « agile », accorde trop d’importance aux échecs et réussites des projets, alors que selon Charles Darwin, l’évolution d’une espèce est aléatoire, la sélection naturelle servant à faire le tri entre les espèces qui subsistent ou non. Un talk qui fait réfléchir.

Clément


Se prémunir contre l’imprévisible : une analyse des failles les plus courantes en php

Paul Molin nous a présenté les failles les plus courantes en PHP, de la XSS (Cross Site Scripting), à la SQLi (Injection SQL), en passant par la XXE (XML External Entity), nous avons pu nous rendre compte que l’exploitation de ces failles est relativement aisée, et que même un développeur chevronné pouvait par mégarde introduire dans son code des vecteurs de vulnérabilités.
Bien que la XSS puisse paraitre faible en terme d’impact et de vulnérabilité, elle reste l’une des principales causes de vols de credentials…
Un input mal échappé en front et c’est la XSS assurée, et si l’input à vocation à être sauvegardé en base de Données, la XSS est alors stockée (Stored XSS).

De la même manière, un champ input qui permettrait d’appliquer un filtre sur une liste d’éléments, peut-être la cible d’une attaque de type SQLi, on injecte dans l’input, non pas un filtre tel qu’attendu, mais du code SQL qui peut alors s’exécuter, tout en « annulant » la requête initiale. (ex : 1′ OR ‘1=1) peut permettre de bypasser une page de login.

Sur certains environnements également, il est possible d’interagir avec une ressource par du XML.Le XML peut permettre une attaque de type XXE, où l’attaquant défini une entité XML spécifique qui pourrait être la liste des utilisateurs du server (/etc/passwd), ou même le fichier des mots de pass hashés (/etc/shadow) et ensuite l’injecter dans le formulaire ciblé.

Il nous a démontré que l’imagination des pirates, est illimité… et qu’une petite erreur d’inattention au niveau du code, peut générer de gros dégâts au niveau d’une app.

Maxime


Agressive PHP Quality assurance in 2019

Marco Pivetta, un développeur chevronné, nous a présenté de nombreux outils que l’on peut intégrer à notre workflow de développement web pour limiter les problèmes en production. Le conférencier a notamment insisté sur l’outil PhpStan et Psalm pour détecter des potentiels bugs sans pour autant devoir lancer l’application ce qui en tant que développeur est très rapide et agréable à utiliser.
De plus, nous avons pu voir l’efficacité et la simplicité du security checker de Symfony qui permet de détecter les failles de sécurité dans les applications.

Enfin, Marco Pivetta nous a listé d’autres outils permettant d’assurer la qualité de notre code que l’on peut facilement ajouter à un outil d’intégration continue.

Julien


Résumé

L’équipe a participé à presque toutes les conférences et a bien apprécié le contenu de cette édition. Nous serons de retour en 2020.