[:fr]La parole est aux speakers : Quentin Pautrat[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Un autre regard sur la validation

"Persister les données c'est bien, persister les bonnes données c'est mieux". Derrière cet adage se cache, entre autres, la validation, une facette bien connue des développeurs et développeuses. Tellement connue qu'elle en est devenue triviale. À travers les différents frameworks et leurs documentations, nous avons banalisé cet aspect du développement. Il arrive que ces outils ne soient pas toujours adaptés et nous orientent dans de mauvaises directions. Cependant il est de notre responsabilité de voir plus loin et de se poser les bonnes questions.

Salle Morpheus
17/05/2018
16:25-17:05

La génération de formulaires est souvent l’un des composants les plus difficiles à aborder dans un framework. Aurais-tu des conseils pour en apprendre leur usage ?

En réalité, je pense que c’est assez simple. Il semble compliqué parce qu’il permet de faire beaucoup de choses.
Alors qu’en fait il suffit de garder en tête que le formulaire à une responsabilité bien précise. Son rôle est de permettre à l’utilisateur de saisir des informations et de le tenir informé des éventuelles erreurs de saisies. Rien d’autre. Si on limite l’impact du formulaire à la seule couche de présentation, tout devient normalement plus facile. Sans trop en dévoiler, une bonne idée est par exemple de ne pas utiliser ses entités métier directement dans ses formulaires. Si vous voulez en savoir plus j’en parle dans ma présentation.
Bien entendu il est toujours possible de tomber sur des formulaires complexes. Dans ces cas là, il n’y a pas de secret, il faut apprendre et tester… ou bien de déléguer la génération au client. Bon courage !
(suite…)

[:fr]La parole est aux speakers : Julien Vinber[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Un peu d'événement dans un monde linéaire.

Bien connu dans d'autres langues, l'utilisation d'événement peut apporter énormément dans la conception d'application en PHP. Que ce soit des événements synchrone pour améliorer la solidité de notre code ou asynchrone pour ne pas perdre en performance et dépasser certaine limitation que l'on peut avoir avec le langage. Après une présentation des avantages et des principes, nous verrons comment concrètement les mettre en places dans notre code, que ce soit directement ou en utilisant un Framworks. Nous aborderons également rapidement l'utilisation de serveur de message comme RabbitMQ pour mettre en places des événements asynchrones.

Salle Jarvis
18/05/2018
11:25-12:05

Qu’est-ce qui t’a donné envie de parler de la programmation évènementielle ?

J’ai choisi de mettre en avant les événements car j’ai pris l’habitude de les utiliser dans d’autres langages. Et même s’il existe de nombreuses solutions pour en faire en PHP, c’est rarement un réflexe d’y penser.
Cela peut s’expliquer en regardant l’histoire du langage. Mais je trouve cela dommage, d’autant plus que bien utilisé cela peut devenir un outil très puissant, en particulier pour gérer les « Single responsibility ».
(suite…)

[:fr]La parole est aux speakers : Edouard Cunibil[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Réussir en tant que communauté

"Come for the code, stay for the community". Avec plus d'1 million de membres, il faut croire que Drupal mérite son slogan. Le but de cette conférence est de souligner les multiples facettes de cette communauté et de mettre en valeur les décisions et initiatives qui expliquent sa croissance encore aujourd'hui. Il sera question de valorisation du travail, de protection des personnes, d'inclusion des minorités.

Salle Morpheus
18/05/2018
12:10-12:30

Comment es-tu rentré dans la communauté Drupal ?

Initialement, je cherchais quelques conseils pour l’un de mes tous premiers sites et le formateur qui m’avait lancé avait abordé l’existence d’un salon IRC. En souvenir de mes jeunes années de lycéen geek, j’y suis allé faire un saut et j’ai trouvé ce dont j’avais besoin là bas. Ayant moi-même pas mal œuvré à la grande époque du Site du Zéro pour aider les personnes à progresser dans le développement web, je me suis un peu retrouvé dans ce salon super accueillant et j’ai commencé à aider les gens à mon tour quand je le pouvais, au fil de ma propre montée en compétence. De fil en aiguille, je me suis retrouvé à filer un coup de main sur l’organisation du Drupalcamp Paris 2013 où j’ai physiquement rencontré la plupart de ceux qui étaient devenus des collègues de travail virtuels. C’est à partir de là que j’ai commencé à contribuer plus, ce qui m’a valu la chance de bénéficier quelques temps plus tard d’un scholarship pour aller rendre visite à nos amis Drupaliens de San Francisco au BADCamp, un événement d’une toute autre mesure avec plusieurs milliers de personnes. D’un naturel très timide, j’étais très angoissé à l’idée d’aller là bas, en n’ayant pas vraiment parlé anglais depuis très longtemps et sans connaître personne mais ça a finalement été une des expériences les plus incroyables de ma vie. Quelques personnes ont reconnu mon pseudo et ont décidé de me prendre sous leur aile et j’ai pu rencontrer une quantité énorme de gens incroyablement ouverts et bienveillants.

(suite…)

[:fr]La parole est aux speakers : Nicolas Grekas[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Tirer le maximum du moteur PHP 7 - l'exemple de Symfony

PHP 7.0 est déjà de l'histoire ancienne. Mais savez-vous en tirer partie à fond ? Si le moteur est plus rapide sur toutes les opérations en général, il y en a quelques unes qui sont particulièrement optimisées. Avec PHP 5, vous avez peut-être pris certains réflexes qui ne sont plus d'actualité, pour soi-disant écrire du code plus performant ? Je vous propose de passer en revues les différentes techniques d'optimisation mises en place dans Symfony, qui font de la v4 la plus rapide jamais publiée. Ce sera l'occasion de tordre le coup à quelques idées reçues, et de vous en donner quelques autres pour le jour où vous chercherez à presser les dernières millisecondes hors de cette boucle intensive. Benchmark à l'appui évidement.

Salle Jarvis
17/05/2018
09:30-10:10

Tu es un habitué des events AFUP, tu proposes souvent de nouveaux sujets : où trouves-tu ton inspiration ?!

Trouver un sujet n’a rien d’évident. Trouver un sujet qui passionne l’auditoire est encore plus difficile. On met souvent la barre trop haute : un sujet très pointu demandera beaucoup de travail à préparer, et sera difficile à recevoir. Personnellement, j’essaye de dédramatiser : plutôt que de chercher ce qui égoïstement me passionnerait, j’essaye de puiser dans les travaux auxquels j’ai participé, ceux avec lesquels je me sens à l’aise et qui ont un potentiel de transmission intéressant. Je peux aussi emprunter des sujets à d’autres (avec leur accord évidement, merci Ryan). Si l’objectif, en donnant une conférence, est d’accompagner un panel de devs à monter en compétence, je n’ai pas d’hésitation. Évidemment, le contact quotidien avec le « front » Symfony est une bonne source d’inspiration. J’ai aussi un petit carnet sur lequel je note les idées qui me passent par la tête. Et de temps en temps, j’en retiens une. Celui du PHP Tour autour de la performance PHP 7 est la suite logique de cette obsession à gratter la moindre milliseconde pour Symfony 4, doublée de l’envie de partager les choses apprises en interrogeant Julien Pauli (on bosse ensemble sur Blackfire).
(suite…)

[:fr]La parole est aux speakers : Jean Pasdeloup et Romain Cottard[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Retour sur 5 ans de CLI PHP pour importer le catalogue chez Deezer

Le catalogue chez Deezer c’est 43 millions de tracks, en augmentation constante et mis à jour régulièrement. Il y a 5 ans, l'import de ce catalogue consistait en quelques scripts PHP perdus dans le gros GIT monolithique de Deezer. Voyons comment cet import a évolué depuis, tout en restant en PHP : évolutions architecturales et focus sur des problématiques techniques. Au programme : de la vraie ligne de commande, des domaines métiers et des applications, un peu de Symfony et beaucoup de framework agnostic, des daemons parallélisés, des events asynchrones... Un talk par Romain & Jean, les 2 Architectes aux "commands" de la team Catalog.

Salle Jarvis
17/05/2018
10:15-10:55

Vous travaillez sur l’importation du catalogue Deezer qui comporte 43 millions de tracks. Quelle est la source d’import de ces tracks ?

Les tracks sont envoyées directement par les “providers”, c’est à dire les maisons de disques, qui possèdent les droits dessus. Les gros utilisent un format standard appelée DDEX, mais il faut également gérer différents petits formats alternatifs.

La grosse difficulté dans ces différents formats, c’est la gestion des droits : le même album peut être livré par différents providers avec des droits différents selon les pays. Ces droits évoluent également dans le temps avec une date de début, et des mises à jour qui peuvent arriver à tout moment pour envoyer une date de fin de droit pour ce provider.

En plus des tracks, on importe également des ressources de partenaires pour ajouter des informations, essentiellement sur les artistes : photos, biographies. Une autre difficulté consiste à faire correspondre correctement ces informations.

(suite…)

[:fr]La parole est aux speakers : Frédéric Hardy[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Le RGPD expliqué par un développeur

Souvent, le métier du développeur est bouleversé par une nouvelle technologie, qu'elle soit un nouveau langage, un nouvel outil ou un nouveau concept. Mais il arrive également qu'il le soit par quelque chose qui n'a rien à voir avec la technologie, et le RGPD est l'un de ces choses. Derrière cet acronyme se cache en effet un texte de loi dont nous allons devoir à l'avenir, et très rapidement, tenir compte à la fois lors de nos développement et dans nos relations avec nos client et nos utilisateurs. À moins d'une dizaine de jours de la fin du délai de mise en conformité, je vous propose de faire le point sur l'impact du RGPD dans notre quotidien de développeur !

Salle Morpheus
17/05/2018
09:30-10:10

Tu nous présenteras le RGPD. Est-ce difficile de lire un texte comme celui-ci ?

Le RGPD est un texte juridique qui contient « seulement » 100 articles, mais chacun de ses articles contient souvent beaucoup d’alinéas et de références vers d’autres articles ou d’autres textes de loi.
De plus, il interfère avec d’autres textes de loi, qui sont donc mis à jour en conséquence, même en ce moment alors que le RGPD va être appliqué très prochainement.
Les tournures de phrases sont donc parfois particulières et il représente finalement une masse d’informations importante qu’il est nécessaire d’interpréter correctement afin d’en comprendre tous les tenants et les aboutissants.
Enfin, il y a depuis quelque temps beaucoup « d’experts » qui s’expriment à son sujet et qui diffusent des interprétations plus ou moins différentes, ce qui brouille l’image que l’on peut s’en faire.
L’un dans l’autre, pour un développeur tel que moi, il est donc… délicat d’avoir une vision claire des obligations qu’impose le RGPD, aussi bien pour moi que pour mon équipe ou mon employeur.
Pour autant, ce n’est pas le texte de loi le plus difficile à lire que j’ai eu à décrypter, et à mes yeux, le véritable challenge qu’il propose à un développeur n’est pas sa lecture.
En effet, si le RGPD définit les obligations du développeur vis-à-vis des données personnelles collectées par son code, il ne donne aucune information sur ce qu’il va devoir faire concrètement dans son quotidien pour le respecter, aussi bien techniquement qu’en termes de méthodologie.
Si j’osais une comparaison parlante pour un développeur, je dirais que l’interface `RGPD` existe, mais que la classe `developpeur` qui la supporte est encore à écrire, ou bien c’est encore une classe abstraite.
Il a bien des préconisations rédigées par la CNIL, mais elles s’adressent avant tout à des gens qui sont déjà sensibilisés à la gestion des données privées, ce qui, en France, est loin d’être le cas des développeurs.

(suite…)

[:fr]La parole est aux speakers : Benoit Jacquemont[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Bienvenue dans la matrice !

Un processus PHP qui s'emballe sur un environnement sans debuggeur ? Un webservice qui semble fournir une réponse suspecte ? Un processus tout à coup très lent ? Un programme bloqué avec 0% d'utilisation CPU ? Une application avec un comportement inattendu ? Cela vous est déjà certainement arrivé, avec cette question: comment savoir ce qui se passe dans ces cas là, sans toucher au code PHP ? Des outils systèmes (strace, ltrace, lsof, perf-trace, ...) permettent d'intercepter et d'analyser les échanges entre les procesus et le noyau Linux. Ils peuvent s'appliquer aussi bien sur un processus PHP que sur n'importe quel autre processus s'exécutant sur la machine. Bien utilisés, ils permettent de rentrer à l'intérieur du processus et de comprendre ce qu'il est en train de faire. Le contenu des entrées et sorties, les blocages, les temps passés dans les différentes tâches, etc.... Toutes ses informations sont disponibles avec les bons outils. Alors passez en coulisse des processus et venez déchiffrer la matrice avec moi lors de cette présentation !

Salle Jarvis
17/05/2018
11:25-12:05

Tu vas nous parler de nombreux outils du type strace ou ltrace. Quelles sont tes sources pour les découvrir ?

Lorsque je fais du debug sur un problème technique, qu’il soit applicatif, système ou réseau, j’ai vraiment besoin de pouvoir regarder ce qui se passe sous le capot. Au fil du temps, je me suis consistué une petite bibliothèque d’outils et de pratiques pour y parvenir. Je me suis bien sûr inspiré de ce que j’ai pu voir chez mes collègues dev ou ops, mais je suis toujours à l’affût de nouveaux outils. En fait, dès qu’il y a une zone d’ombre dans un fonctionnement, je vais essayer d’obtenir l’outil qui va permettre d’y mettre de la lumière, si celui-ci existe. Bref, c’est généralement un peu de temps à passer sur les moteurs de recherche avec des requêtes très spécifiques 😉

(suite…)

[:fr]La parole est aux speakers : Nicolas Wurtz[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

GRAOU : la production ferroviaire collaborative

Les conducteurs et contrôleurs des trains SNCF ont toujours eu leur planning au format papier. En tant que conducteur de trains, j'en avais assez de le saisir tout à la main, et me suis mis en tête de créer un outil simple de synchro entre nos agendas électroniques et nos métiers. Puis en voyant les données passer, et grâce à l'arrivée de l'openData, le champ des possibles est devenu immense : qui est sur quel train, quel matériel, quels statistiques, quand vais-je croiser mes collègues, où manger, qui dort où, etc. et tout ça dans une web-app construite from scratch en PHP/MariaDb, un peu de JS et une grosse réflexion UX (le métier développe pour le métier !). GRAOU est aujourd'hui la première application interne collaborative SNCF, unanimement plébiscitée et massivement utilisée par les agents concernés. C'est l'histoire d'un conducteur de trains qui jongle désormais avec les containers docker et optimise php-fpm pour gérer les 800k vues/jour...

Salle Morpheus
18/05/2018
11:25-12:05

Les applications internes à la SNCF doivent avoir tout de suite de grands impacts sur les voyageurs. Quels sont les conséquences sur le développement de ces applications ?

Nous avons la particularité chez SNCF, d’en plus être une très grande entreprise (250.000 collaborateurs), d’avoir une diversité de métiers très importante, ce qui entraîne un besoin et une offre d’applications internes tout aussi importante, parfois déployées de manière nationale, parfois créées au fin fond d’une région — la multiplicité des lieux de travail est une des raisons de ces besoins parfois très spécifiques et locaux.
Ce n’est donc pas évident, encore aujourd’hui, de proposer des outils qui conviennent à toutes et à tous, tant côté contenu que contenant, les spécificités et silos sont encore très répandus, mais heureusement ces inconvénients disparaissent peu à peu grâce aux choix d’ouverture et de transparence de la donnée qui sont mis en oeuvre depuis quelques années, et de plus en plus.
De mon côté, justement grâce à ce qu’a apporté (mais aussi imposé !) l’openData, j’ai pu construire mon application, qui à défaut de servir directement les voyageurs, donne une information identique et généralisée aux agents qui l’utilisent.
Et cette facilité d’accès à l’information qui concerne les acteurs des trains, rend leur mission plus limpide et plus impliquée — ils savent avec qui ils peuvent travailler, sur qui ils peuvent compter, et ça change tout. L’humain est revenu au centre du système, il a un nom et pas seulement un numéro de train, par conséquent les interactions avec les voyageurs et la qualité du service apportée s’en trouvent améliorées.
Un exemple ? GRAOU permet de synchroniser le planning d’un agent avec un agenda électronique au format ICS. Une contrôleuse, récemment divorcée, avait toutes les peines du monde pour partager son planning, à la main, avec son ex-mari quant à la garde de leurs enfants.
Aujourd’hui, celui-ci a sur son smartphone le planning de la mère de ses enfants, il sait quand elle aura besoin de lui et peut s’organiser en fonction. Et cette collègue part l’esprit plus serein s’occuper de ses voyageurs à bord du train; et dans ce métier qui peut s’avérer très difficile parfois, pouvoir commencer sa journée en toute quiétude n’est pas insignifiant…

(suite…)

[:fr]La parole est aux speakers : Derick Rethans[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

It's all about the goto

Don't worry, this is not about the goto keyword. In this presentation, I am showing you some of the inner workings of PHP. We are going to look at how different language keywords and constructs are handled internally. Basically, everything is converted to goto, but the how and why, is not as simple as it seems! This is a very in depth talk, mostly interesting to people that want to know how PHP works internally. Expect lots of wonkyness, a form of assembly, and trees.

Salle Jarvis
18/05/2018
14:30-15:10

You’re a mapping enthusiast. How did your passion for maps and OpenStreetMap come?

I have always liked maps, and would always by extensive ones before going on a trip. When I had just moved to the UK in 2009, I had an OpenMoko « phone ». As this was a fully Open Source phone, it had a map viewing program Tango GPS (now Foxtrot GPS) using OpenStreetMap tiles.

When I went out hiking for the first time with friends, I had brought the « phone » along to see where we should be going and found plenty of things (parking place, paths) missing from the map. And when I got back home I did some research into adding these things.

That then leads to finding the local OpenStreetMap user group, as I was new in London, and they combined walking (i.e., mapping London), maps (duh!) and visiting pubs after a mapping party. This combination worked great for me, and I’ve met many of my current friends through these mapping parties.

After these first changes, I have kept my neighbourhood up to date, and mapped nearly every building and address. In the last 9 years, I’ve added 240 000 points, and 53 000 ways and nearly 50 000 addresses!
(suite…)

[:fr]La parole est aux speakers : Hannes Van De Vreken[:]

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

Caching with PSRs

In this talk you will learn what PSR-6 and PSR-16 are, why they are designed like they are, what the differences are, and how to use them. From the provided interfaces, the virtual package on Packagist.org, to the implementations available. Everything will be explained for both beginners and more experienced developers. We will dive into implementations, cache stampede protection, all using libraries we can find on Packagist.org. We will also show how to start using it today in our current applications by using adapters. The entire talk will be accompanied with code samples and live demos, showing both working and failing caching systems.

Salle Morpheus
18/05/2018
10:15-10:55

You will talk about how to use PSR for caching : did you have any tips on what to cache and when we need a cache mechanism ?

Before you cache, you need to be aware of your application’s behaviour. Profiling is a good start. By logging information, you can find places where caching could help your application’s performance the most. You can cache anything that is idempotent, runs several times with the same input and same output, and has a high latency due to the nature of the job. You can then start off with the quick wins: cache a slow query that runs thousands of times. Next up: things that are extremely slow but only need to happen a handful of times. You can even pre-compile that in a back-ground job and store it. After that it gets harder: a fast query that runs millions of times, maybe. You can save some time by avoiding millions of round-trips to the DB and lower the load on the DB.

Also beware of cache invalidation. Don’t make your caching layer too complex or you’ll be chasing caching artefacts. Your caching layer is supposed to save you time, not spend more time. Last tip: if your caching layer fails, your app should still work, albeit slower 😉

Come see my talk for more tips!
(suite…)