From Paris to London, notre CTO anime un workshop à la PHP UK Conference 2020 !

ITW : David Négrier, notre CTO, nous raconte l’expérience de son 1er workshop PHP

« C’est vraiment sympa d’aller dans une conférence où on peut rencontrer des gens de la communauté PHP »
Le 21 février, David s’est rendu au coeur de la ville de Londres, au sein de la célèbre PHP UK Conference. L’opportunité pour lui d’animer un workshop centré sur PHP et GraphQL.
Chaque année, cette conférence vise à proposer un programme complet, accompagné de nombreux speakers, sponsors, et participants. Beaucoup de partage de connaissance et d’échange se font dans cet event, c’est ce qu’affirme David dans son interview.

1. Combien de temps a duré ton workshop ?

C’était une séance de 2h15. J’ai d’abord fait une présentation de 1h sur GraphQL en général ; l’écosystème autour de GraphQL en PHP ; et GraphQLite qui est la librairie PHP que nous avons développée, permettant de faire du GraphQL beaucoup plus facilement.
Suite à ça, j’ai fait une petite démo pour ensuite passer à l’atelier autour de GraphQLite.

2. Combien de personnes étaient présentes à ton workshop ?

Beaucoup, je dirais qu’il y avait une bonne cinquantaine de personnes présentes et accompagnées de leur machine (ordinateur).

3. C’est ton 1er workshop en tant qu’intervenant ?

J’ai déjà fait de nombreux talks, la plupart en France, un à San Francisco en 2007, mais je n’avais jamais animé de workshop. Et en particulier en anglais!

4. Tu étais stressé de présenter ce workshop ?

J’avoue que j’étais un peu stressé. D’ailleurs, j’ai passé plusieurs semaines à le préparer. J’ai même pris le soin d’amener une clé USB pour chaque participant, contenant le projet installé.
Aussi, je stressais par rapport à mon accent anglais, j’ai essayé de m’appliquer oralement pour qu’on me comprenne.

 5. As-tu rencontré des difficultés à mener ce workshop ?

La seule difficulté était le temps. Intervenir dans un workshop de 50 personnes pour seulement 2h, ça passe très vite, et par conséquent ça ne laisse pas assez de place pour l’interaction.
Dans ces situations, on sait qu’il y a des personnes qui n’arriveront pas à suivre, mais il faut malgré tout faire en sorte qu’elles ne s’ennuient pas. Ainsi, la difficulté était de trouver un bon équilibre entre le manque de temps et la pertinence du workshop, mais aussi entre la présentation théorique et les travaux pratiques.
Lors de l’atelier GraphQLite, j’ai tout de même essayé au maximum d’accorder du temps à chaque participant.

6. As-tu assisté à d’autres workshops de la PHP UK Conference en tant que participant ?

Oui bien sûr, j’ai pu participer à 2 ateliers très intéressants dont « ATDD Bowling – A Practical BDD Workshop » présenté par John Behrens, et « Introduction to Time Series » présenté par David McKay.

7. Tu as pu discuter avec des personnes de ton workshop et des personnes en dehors de ton workshop ?

En effet, à la fin de mon workshop, j’ai eu plus de temps pour discuter avec certains participants. D’ailleurs, j’ai pu aider un autre speaker à mettre en place une extension PHPStan. Ces moments d’interaction avec la communauté PHP sont vraiment importants. J’ai même pu rencontrer Georges Banyard, qui travaille sur la gestion des erreurs dans le coeur du langage PHP, un sujet qui nous intéresse énormément à TheCodingMachine puisque nous avons écrit une librairie PHP pour résoudre ce genre de problème.
Puis, j’ai passé la majorité de mon temps à me balader allant à la rencontre d’autres participants & intervenants. J’ai croisé Mathieu Napoli, l’intervenant du workshop « Serverless PHP applications with Bref », une personne que j’admire avec qui j’ai eu l’occasion de discuté plusieurs fois lors d’autres événements.
Bref, c’est vraiment sympa d’aller dans une conférence où on peut rencontrer des gens de la communauté PHP.

8. Si c’était à refaire tu le ferais ? Quelles améliorations apporterais-tu ?

Sans aucune hésitation, oui, je ferais d’autres workshop avec plaisir. C’était vraiment une belle expérience, j’ai rencontré beaucoup de monde, ainsi que des gens que j’avais déjà discuté dans d’autres événements.
Pour mon prochain workshop, je pense que j’essaierai de trouver une solution pour davantage interagir avec les participants.
PHP UK Conference TheCodingMachine

Quelques témoignages des participants au workshop de David :

Témoignage de Chris Hogben
Wow. This tutorial was amazing and could have easily have been a full-day workshop. As Adam says, it was really well prepared with hands-on examples that were easy to follow and see what was happening at each stage. The amount of information provided for each concept was enough to understand and add value, but not too much to slow down the session. It did feel slightly rushed, but this was probably to be expected given the amount of content. Thanks David for this session! 🙂
Témoignage d’Adam Cooper
One of the best prepared workshops I’ve seen in a long time with about as much of an in depth review of the tech/libraries that you could fit into a 2 hour slot.
Merci à David Négrier pour cet interview, retrouvez-le prochainement :

N’hésitez pas à réserver vos places !

Elasticsearch : 3 étapes pour une utilisation optimale

Elasticsearch est une base de données NoSQL particulièrement performante pour mettre en place un système de recherches complexes.

Un atout majeur dans l’exploitation des données, mais encore faut-il savoir l’utiliser !


Elasticsearch, qu’est-ce que c’est ?

Définition

Elasticsearch est un outil performant qui permet de mettre en place un système de recherches complexes. Il permet de stocker une grande quantité de documents, de les indexer et les exploiter en temps. Il s’agit d’une base de données open source NoSQL qui n’utilise donc pas des données relationnelles comme MySQL.
Elasticsearch propose une API REST et utilise des documents JSON, ce qui permet d’obtenir des résultats pertinents et rapides aux diverses requêtes effectuées : un atout majeur dans l’exploitation des données.

Lexique

  • Nœud : un processus Elasticsearch en cours d’exécution.
  • Cluster : un composé d’un ou de plusieurs nœuds.
  • Index : un espace de logique de stockage de documents de même type, représentant l’ensemble de vos données.
  • Lucene : une bibliothèque Open Source qui permet d’indexer et de rechercher du texte. Le moteur d’Elasticsearch.
  • Shard : une partition de l’index qui correspond à une instance de Lucene. Attention, il n’est pas possible de modifier le nombre de shards après leur création.
  • Document : un enregistrement dans un shard Elasticsearch.

Utiliser Elasticsearch : les 3 étapes essentielles

Pour bénéficier des avantages de l’utilisation d’Elasticsearch, il est indispensable de passer par 3 étapes clés.


1. La création d’un modèle et l’indexation

Pour pouvoir profiter des performances d’Elasticsearch, vous devez élaborer une stratégie d’indexation. Cela implique une création d’un ou plusieurs modèles (appelés mappings) qui vous permettront d’indexer toutes vos données et de profiter ainsi au mieux de votre futur moteur de recherche.

Attention : si vous passez à côté de cette étape, votre utilisation d’Elasticsearch ne sera plus pertinente.

Dans votre mapping, vous devez typer vos champs. Par défaut, Elasticsearch propose différents types, parmi lesquels :

  • text = une description d’un produit
  • keyword = un contenu structuré comme une adresse ou un numéro d’identification
  • nested = un type permettant de créer des objets dans des objets
  • numeric = les types numériques peuvent être « long », « double », « float »…
  • boolean = valeurs booléennes « false » et « true » ou une chaîne de caractère « false » ou « true ».

Ce typage des données va permettre d’effectuer des recherches très avancées, plus précises et complètes.


2. La requête DSL, Domain Specific Language

Pour rechercher des données dans Elasticsearch, l’outil vous propose d’utiliser un langage spécifique basé sur du JSON.
Les requêtes les plus courantes sont :

  • match : la requête renvoie les documents contenant des termes similaires au terme recherché, mesurés par une distance de Levenshtein.
  • term : la requête envoie les documents contenant un terme exact dans un champs fourni. Vous pouvez utiliser requête « term » pour rechercher des documents en fonction d’une valeur précise, telle qu’un prix, un ID de produit ou un nom d’utilisateur.
  • terms : elle est semblable à une requête « term », mais elle vous permet de faire une recherche avec plusieurs valeurs.
  • prefix : la requête renvoie les documents commençant par la valeur fournie.
  • Boolean Query ou requête boléenne : ce type de requête permet une combinaison de plusieurs requêtes. Chaque combinaison possède au minimum une occurrence parmi les 4 types d’occurrence booléenne possibles, à savoir : « must » : opération ET, « must_not » : opération NON ET, « should » : opération OU, « filter » : comme le « must » mais le scoring sera ignoré.
  • Scoring : cette technique permet d’affecter un score à un document.

3. Les résultats des recherches

Pour chaque document issu de la recherche Elasticsearch, un score est calculé. Celui-ci permet d’évaluer la pertinence du document et ainsi d’ordonner les résultats obtenus.

La pertinence des résultats dépend toutefois des paramètres de recherche et d’indexation définis. Pour cela, ElasticSearch va s’appuyer sur différents critères tels que la fréquence du terme recherché dans le document.


Pour en savoir plus sur les bases de données, les langages de programmation et les dernières évolutions des technologies, découvrez le blog technique de The Coding Machine.