Retour sur le Symfony Live Paris 2016 – Day 2

Voici le résumé des conférences données le deuxième jour de ce séminaire Symfoniste, qui évangélise de plus en plus d’adeptes (moi en particulier 🙂 ) …

  • PSR-6 & Symfony Cache : de la perf en standard (Nicolas Grekas) : Cette conf intéressante nous explique l’intérêt de PHP-FIG, où sont soumis et approuvés des standards de code PHP, préfixés PSR (Quand je code moi par exemple, je respecte au maximum la norme PSR-3, validée par mes outils d’intégration continue.). Pour PSR-6 (Caching Interface),  le premier draft a été soumis en septembre 2013, le final en décembre 2015. Il définit deux objectifs : ouvrir des besoins de base nécessaires à la mise en cache, et permettre de faire mieux. Il « succède » un peu à Doctrine Cache. On retrouve cette PSR dans : psr/cache-implementation sur Packagist (Composer), Statsh PHP, PHP Cache et Symfony Cache. Symfony Cache n’est pas l’implémentation la plus puissante, elle est strict PSR-6, et suite les processus et standards de qualité Symfony. Il y a juste le minimum pour faire ce qu’il faut et aller vite.
  • Aller plus loin avec Doctrine2 (André Tapia) : Dans Doctrine, on a des fonctions assez méconnues (IfNull comme en SQL IF NULL), il existe également des DoctrineExtensions pour méthodes personnalisées, et des LifeCycleCallbacks (prePersist/postPersist, preUpdate/postUpdate, loadClassMetadata etc …). On peut faire également appel à des requêtes « partial », qui permettent d’obtenir un objet, pas un tableau (Query::HYDRATE_OBJECT, Query::HYDRATE_ARRAY, Query::HYDRATE_SCALAR, Query::SINGLE_SCALAR).
  • Refondre un moteur de règles avec l’expression langage de symfony2 (Abbas Hussein) : Pour la refonte, imposer un moteur de règle pour pouvoir : analyser des centaines de dates, déclencher un traitement statique, ou scorer une transaction (livraison : Go ou NoGO ?). Le but est de permettre de coder plus vite. A celà s’imposent des problématiques techniques : la fameuse datte technique, il faut construire à chaque fois le même projet, ou utiliser des petits projets OpenSource. Parmi eux, des problèmes métiers : les régles demandées par le métier sont de plus en plus complexes et les métiers écrivaient du JSON dans la BDD ! La meilleure des solutions doit donc : répondre aux besoins, être validée par les métiers, et extensible.
  • Sécurité et HTTP (Romain Neutron) : Voici quelques HTTP-Headers plutôt utiles en matière de protection :
    • X-XSS-Protection : protéger contre les attaques de type « Boutin ». Activé = 1. mode=block.
    • X-Content-Type-Options : prévient le comportement d’un navigateur. Supporté par ie et chrome. « nosniff » seule valeur supportée (désactiver).
    • X-Frame-Options : gestion du framing du site web.
    • Strict-Transport-Security : RFC-7697 Force le HTTPS. Supporté par Crome, IE11, Safari et Firefox. Bloque l’accès si certificat invalide fourni. Valide à la première connection, mais peut être préloadé.
    • Content-Security-Policy : vient du web 2.0. Prévient les XSS. Déclare des directives sur ce qui peut être exécuté sur le site web.Directives : default-src, script-src, style-src, object-src, img-src, media-src, frame-src, font-src, connect-src. Attention : certains scripts jQuery ne vont plus marcher si derective unsafe-eval et unsafe-inline !

Ma conclusion sur l’évènementiel le Symfony Live regroupe des thématiques plutôt variées (Sécurité, Cloud, Doctrine) … L’investissement est rentable, les stands attractifs. Mon seul regret est de ne pas avoir participé au Symfony Con qui se déroulait à Paris en décembre dernier, pour les dix ans de Symfony. Je pense bien renouveller l’expérience l’année prochaine, surtout si je gagne des concours qui me ramèneront plein de goodies (Casquette, Tshirt, ElePHPant Symfony, bonbons, macarons, et livre sur Blackfire.io dédicacé par Fabien Potencier).

Du coup j’ai gagné un badge, hop :

Retour sur le Symfony Live Paris 2016 – Day 1

Et voilà, je commence à devenir Symfoniste.

J’avais déjà un peu touché Symfony il y a quelques années puis je me suis tournée et je me suis expertisée en Zend Framework. Cependant il faut voir, Symfony déjà est un produit français, très sollicité en entreprise, et derrière regroupe une communauté vivante et très contributive (il suffit de voir l’espace « Connect » de Sensio pour s’en rendre compte), ce qui est beaucoup plus sympa que le cas de ZF. Donc je me suis tournée naturellement vers ce framework je que ne connais que peu en fin de compte.

Pour commencer, j’ai fait une virée de deux jours dans les locaux de Sensiolabs pour faire une formation sur la gestion des composants et Drupal. Puis le grand évènementiel a lieu : deux jours à la Cité Internationale Universitaire de Paris. Les stands y sont très sympas et remplis de goodies (j’ai eu l’occasion de gagner un Lego Star Wars et de participer au concours de la bonbonnière – que j’ai remporté !).

Le contenu des conférences est alléchant :

  • Monoltith repositories with Git (Fabien Potencier) : faire du pluri-repo, c’est bien. Le code isolé peut être réutilisé, on a des repositories de petite taille, les frontières sont claires, le contrôle d’accès facile, ça simplifie l’intégration continue. Mais on peut utiliser efficacement un repo monolitique et plusieurs petits repo. Du coup, le subtree ça change la vie ! http://www.git-attitude.fr/2015/01/30/git-subtrees/
  • Guard dans la vraie vie (jeremyFreeAgent) : Guard est un nouveau composant « security » de Symfony. Il facilite l’authentification dans un code qui peut être complexe. La librairie continent une interface, GuardAuthenticatorInterface, qui permet d’utiliser les composant d’une authentification (gestion du Token, succès de l’authentication, traitement de la « response », cookie pour le « remember_me » etc …). Ensuite, un cas pratique avec trois sites qui utilisent trois systèmes d’authentification différents (mot de passe, numéro de téléphone) nous est proposé. Au final l’outil se révèle très puissant, et demande moins de dépendances vers d’autres bundles.
  • R2D2 to BB8 (Vincent Chalamont) : Un titre plus parlant serait « Refonte du site lafourchette.com ». A savoir que le site est au départ une grosse machine qui implique : plus de 12 pays, 32000 restaurants, 350000 réservations par mois, et plus de 70 développeurs derrière. Le « Fork Manager V2 » doit pouvoir gérer : les réservations, le contenu, le marketing & CRM, les stats et les plans de salle, tout en sachant en ce qui concerne la V1, que la « dette technique » (quand le site de départ est une usine à gaz avec du ode spaghetti derrière, en gros) est conséquente, les mises à jours sont difficiles, les fonctionnalités obsolètes et non ergonomiques, et qu’il y a des projets interdépendants. Les solutions envisagées ont donc été : création d’une API, la mise en place d’une migration continue,  un LegacyBundle, des loaders et des transformers.
  • PHP Meminfo ou la chasse aux memory leak (Benoit Jacquemont) : Jeune programmeur, attention aux effets dévastateurs d’une fuite de mémoire ! Moins de mémoire pour les autres programmes, perfs qui chutent, et processus qui n’arriveront jamais à terme ! Le système basique de cache de PHP permet toutefois un ménage : au bout de 10000 objets, le garbage_collector s’éxécute, et son activité peut être mesurée par une appli, « Visual VM », mais attention aux processus du garbage_collector, qui baissent les performances. Il faut donc pour cela fixer les fuites de mémoire. Good practices : monitorer les processus, éviter les services « stateful », utiliser une mémoire limite raisonnable, et garder un nombre raisonnable d’objets en mémoire.
  • Retour d’expérience Reactive Architecture et Microservices : Comment découpler mes applications ? (Fabien Meurillon) : Retour sur des migrations de back-office, cette fois chez Auchan. L’utilité d’utiliser des micros-services : un composant applicatif (package Composer), un domaine métier (Domaine Driven Design), et probablement moins de 5 agrégats exposés sur l’API. Les applications doivent être responsives, les services résilients, scalables. Il faut gérer les grosses charges. Restent à mettre en place : le mono-repository, exploiter la bulle d’échange, gérer la propagation de l’information, automatiser les déploiement, et surtout évangéliser les gens 🙂 …
  • Performance au quotidien dans un environnement SF (Xavier Lejeune) : La performance à un cout … dans notre cas on chiffre à : 100 euros si le bug est détecté pendant le dev, 1500 si il l’est pendant la recette, 1500 si il l’est en prod. La pattern Data Mapper a donc été choisi, Active Record a été rejeté, pas d’abstraction en programmation. TING a été choisi à la place de doctrine, le cache privé et public a été obtenu. Attention, Composer install génère un cache !

Crédit photo de une : Sensio Labs. Une Amelaye s’y trouve dedans, vous pouvez l’y chercher.

 

Diaporama sur le déploiement dans l’IC

Dans le cadre de l’AFUP Marseille dont je fais partie, j’ai organisé un topo sur le déploiement dans les processus d’intégration continue, Deployer et Jenkins en particulier 🙂

Bref résumé :

Aujourd’hui, le terme « déploiement » est un incontournable dans le métier des devOps. Comment en sommes-nous arrivés à intégrer au mieux les mises en prod ? Faisons un bref historique pour ensuite terminer sur les nouvelles techniques de déploiement de nos applications PHP et leur mise en place dans l’intégration continue.

Retour sur le PHP Forum 2015 – Jour 2

Ce deuxième jour a suivi son lot de conférences, et s’est terminé symboliquement par une table ronde, regroupant l’essentiel de la Core Team de PHP : Pascal MARTIN, Julien PAULI, Remi COLLET, Zeev SURASKI, et bien entendu le créateur de PHP himself : Rasmus LERDORF, pour discuter de la sortie de PHP7, et répondre aux différentes questions.

Mon avis général sur cet évènement est identique à celui de l’an passé, toujours une excellente ambiance, des prises de contacts. J’ai juste déploré les thèmes des ateliers de cette session, que je n’avais pas trouvés en adéquation avec ce qui m’intéressait.

Voici donc mes comptes-rendus des conférences auxquelles j’ai assisté ce deuxième jour, entre plusieurs visites de stands, de morceaux de gâteau, de pop-corn, de tests PHP, et de selfies (si je me trompe, ou si vous avez des remarques, n’hésitez pas à commenter) :

ZF3 le futur de PHP – Sophie BEAUPUIS

ZF3 est défini comme un ZF2 « nouvelle génération ». Il est centré sur PSR7 et les « middlewares ». Il se fait remarquer par ses performances, sa facilités d’utilisation. Le framework peut en plus, se séparer en composants réductibles.

Depuis la version 2.5, chaque composant de zend possède son propre repository, chaque élément est versionné de façon indépendante. Un package de framework est en fait un méta-package faisant références à différentes versions des composants. Ont changé le gestionnaire de services, le gestionnaire d’évènements, et les composants MVC en conséquence. Le gestionnaire de services est quatre fois plus rapide, compatible avec ZF2 pour la plus grande partie, et les noms canoniques ont été supprimés. L’apport majeur est le Container Interop : on peut utiliser la même factory pour différents services car le nom du service est passé en paramètre (en tant qu’utilisatrice de ZF2, je ne peux que dire : « YALLAAAAAA »). Adieu les factories pour chaque service !

Mon avis : une conférence qui m’était incontournable en tant que Zend-Addict. J’ai été on ne peut plus soulagée à l’idée de réduire le nombre de mes factories redondantes. Comme pour Symfony, on apprend ici que la version 3 est quasi-compatible avec la version 2.

L’architecture événementielle chez Meetic Robin Matthieu – Meetic / Pineau Benjamin

Meetic est devenu un incontournable des sites de rencontres. Cette application web est accessible en tant que site web desktop, mobile web, et applications natives.

Il y a eu un projet de refonte sous Angular JS.

Aujourd’hui l’application est composée de différents éléments comme une API publique, une API Microservices en Symfony 2, et des bases de données.

Des flux asynchrones doivent être gérés pour envoyer des emails, faire des notifications « Push », des manipulations sur des images, et de la modération. Ceci pose des limites en matière de traitements et de possibilité de rejouer des évènements. Les interactions entre les membres doivent être pris en compte : consultation de profils, « flashs », messages, etc …

Agnostic framework for the win – Jonathan Reinink

La meilleure façon d’utiliser un framework est de faire une application dont les éléments sont réutilisables, car un code réutilisable devient un code qu’on n’a plus besoin d’écrire.

Entre 1994 et 2004, Vanilla PHP était en vogue. On avait également recours aux fichiers Zip, puis est venu PEAR. A partir de 2005, l’ère des frameworks est arrivée, leur avantage est de pouvoir travailler rapidement, cependant, les développeurs ont continué à téléchager des Zips. Depuis 2013, c’est composer et ses packages qui est le must. En effet, composer permet d’updater des packages déjà téléchargés, de résoudre les dépendances, et les classes autoloadées.

Jonathan Reinink nous parle également du projet The PHP Framework Interop Group, accessible sur php-fig.org qui définit les PSR.

Mon avis : un bon bilan sur ces dix dernières années de la gestion des packages PHP. Composer est en effet l’outil plébiscité du moment, tant par son efficacité que par sa polyvalence (utilisé pour Symfony, ZF, et indépendamment).

Un éléphant dans le monde des licornes – Moquet Matthieu

Chez Blablacar, la mise en production se déroule ainsi :

Master → branch → CR+CI → staging → merge → mise en prod

Les tests sont 70% unitaires, 30% d’intégration et fonctionnels.

Les ORM, pour une grosse appli, ce n’est pas une bonne idée. En programmation évènementielle, on va privilégier les Bundles et les Events.

Matthieu nous explique l’utilisation de Monolitic, de Gateway et de Cassandra (utilisation indirecte d’une brique JAVA), et nous renvoit sur le site de BlaBlaTech.

MySQL 5.7 & JSON: New Opportunities for Developers – Ulin Thomas

Cette nouvelle version du fameux SGBD se caractérise par sa performance, sa scalabilité et sa maintenabilité.

Thomas Ulin nous fait alors une série de démonstrations pour nous montrer les features JSON : en effet, on peut maintenant extraire des données sous ce format : JSON_EXTRACT(colum_name, #type) ;

On peut également aller chercher des données JQuery pour les infiltrer dans des requêtes. D’après une variable $(‘#type’), par exemple, on peut créer ce genre de requête : SELECT DISTINCT feature->  »$.type » as json_extract FROM features.

Les utilisateurs peuvent également créer leurs propres plugins.

Mon avis : une conférence ultra-fournie qui est passée très vite. Le sujet est néanmoins ultra-interessant pour tout développeur web, et mérite une découverte par soi-même du potentiel de cette version, en pratique, plus en profondeur.

 

Photo une : Tirée du blog de Rémi Collet http://blog.remirepo.net

Retour sur le PHP Forum 2015 – Jour 1

Mieux vaux tard que jamais, j’ai récupéré et mis au propre mes petites notes que j’ai prises lors des différentes conférences. J’étais donc présente au PHPForum 2015 organisé par l’AFUP, et qui célébrait deux évènements, et pas des moindres :

  • les 15 ans de l’AFUP
  • et surtout, les 20 ans de PHP.

20 ans que PHP a pu faire son bonhomme de chemin, et persévérer avec ses forces et ses faiblesses.

Je profite d’un petit edit pour partager la vidéo spéciale « anniversaire PHP » qui a été diffusée pendant la keynote d’ouverture, si vous regardez bien j’y apparais 🙂

 

Parmi le panel de choix des différentes conférences, voici celles auxquelles j’ai assisté :

Symfony 3.0  est sorti ! – Nicolas Grekas

Cette saison est la saison du renouveau pour les Fraworks majeurs, tels que Symfony ou Zend Framework. Cette nouvelle version tient une promesse de rétrocompatibilité. Il suffit d’utiliser Composer pour autoriser l’update.
Pour rappel, un numéro de version se compose comme suit : Major.Minor.Patch. L’incrément du numéro majeur est susceptible de casser la compatibilité. Le mineur ne s’incrémente qu’à chaque nouvelle feature. Le Patch est fixe.
Symfony 3 n’est pas une version LTS. Elle est basée sur le code de Symfony 2.8, et PHP 5.5.9 minimum est requis. La backward-compatibility a été gardée, les lignes de code ont été réduites.

Mon avis : une bonne mise en bouche pour commencer le Forum, même si je suis plus adepte de ZF2, et moins férue de Symfony. Bien contente d’apprendre que le code de cette nouvelle version ne donnera que peu d’incompatibilités par rapport à la précédente. Il en est de même pour ZF2 d’ailleurs.

Les flux, méconnus et sous-utilisés – Pascal Martin

Ici, Pascal Martin nous rappelle l’immense utilité des fonctions PHP telles que file_get_contents, file_put_contents, fopen, fgets, fseek … mais également tempnam, tmpfile.

Un flux est tout simplement une ressource streamable, et ces ressources sont gérées depuis PHP 4.3.

Il existe une bibliothèque de fonctions stream_* qui permettent également de manipuler les flux.

Pour appeler un flux, il suffit juste de l’appeler via la syntaxe appropriée : schema://cible

Il est conseillé de créer un flux pour tester des accès à fichiers, au lieu de créer directement le fichier sur le disque. Cette manipulation permet, avec une bonne pratique, de passer outre CURL.

Pascal a également évoqué reactphp.org et icicle.io pour les scripts asynchrones.

Mon avis : Très intéressant. On a tendance à oublier l’existence des flux, au profit des manipulations avec CURL. Pascal Martin a fait d’ailleurs un dossier très intéressant à ce sujet sur son site.

PHP7 Story – Zeev Suraski

Ici, un des principaux « cores PHP développers » revient sur la conception de PHP7.

Il faut savoir qu’une version majeure de PHP sort tous les 5 ans, sauf pour PHP6, qui est mort-né officiellement le 11 mars 2010 à 11:09:37. Pour rappel, il devait gérer avec unicité l’encodage des caractères (PHP + unicode).

Depuis, il y a eu HHVM, un runtime PHP crée par Facebook. La réponse de Zend, PHPNG (PHP New Generation) a été crée en janvier 2014, avec comme promesse un PHP plus rapide, et plus performant.

PHP7 est donc sorti avec des nouveautés, hormis la rapidité qui est flagrante on a :

  • Plus de gestion d’erreur E_ERROR
  • Déclaration des types scalaires de paramètres ET de retour dans les fonctions
  • Fonction userialize : on peut mettre des filtres noms de fonctions
  • « Spaceship opérator »

Mon avis : quoi de mieux qu’un des principaux acteurs de PHP pour nous présenter cette nouvelle version ? La conférence était incontournable, aussi incontournable que la multitude de ElePHPants sur le diaporama.

Mets du ValueObject dans ton modèle – Alexandre Damien

Qu’est-ce que le Domain Driven Design ? Il s’agit en fait d’un ensemble de pratiques fondées sur la collaboration entre experts fonctionnels : dedans il y a une notion de ValueObject. C’est un objet qui continent des données. Il n’a pas d’identité, il n’est pasimmutable. Son identité est basée sur le contenu, l’objet a une vie, se manipule, se supprime, se consomme …

Il se base sur le principe de « Simple Responsibility ».

On compare les VO avec == et non pas === qui va se baser sur la référence mémoire de l’objet. Ou avec une méthode isEqual().

ON NE DOIT PAS CHANGER LE CONTENU. Pour changer de contenu, il faut créer une nouvelle instance d’objet.

Pour rendre immutable :
– Mettre les variables dans la classe en privé
– Mot-clé final dans la déclaration de la classe (= no extends)
– Constructeur vide et privé. Utiliser un constructeur nommé en statique.
– Empêcher les autres devs d’implémenter des setters

Avec Doctrine :
– Utiliser Embeddable (nouvelle fonctionnalité) et le type object

Mais malgré tout, le Value Object a des inconvénients :

  • On ne peut pas requêter sur les champs de VO
  • On ne peut pas non plus le sérialiser correctement

Mon avis : Conférence tournée avec beaucoup d’humour, un sujet qu’on n’a pas souvent l’habitude d’aborder dans son propre code. Ce pattern a pourtant bien des avantages.

Performance Testing for Modern Apps – Dustin Whittle

A partir d’une seconde de chargement d’une page web, l’attente se fait sentir. Il ne faut pas passer au-delà.

Pour pouvoir vérifier le temps de chargement d’une page, des outils sont à dispostion :

  • Apache Bench  – ab -c 10 -t 10 -k http://monsiteatester.com/
  • Siege – siege -c 10 -b -t etc …
  • Bees with machine guns – bees attack -n 1000 -c 50 -u http://monsiteatester.com/
  • locust.io
  • PageSpeed Tools de Google.
  • Google Developpers
  • webpagetest.org
  • sitespeed.io
  • Test for failures : simian army + chaos monkey

Halte à l’anarchitecture – Gauthier Delamarre

Ici Gauthier Delamarre revient sur les principales architectures logicielles, dont la réalisation peut être abstraite dans un premier temps.

Il faut distinguer la macro et la micro architecture.

La macro architecture va concerner :

  • Le schéma général : Couches applicatives, workflows, acteurs tiers.
  • Les responsabilités : validation de données, mécanismes ACL, gestion d’erreur.
  • Les structures diverses : modèles de données, organisation des sources, et des ressources
  • Et surtout, la DOCUMENTATION !

Quant à la micro architecture, elle va concerner :

  • Les données métiers : systèmes d’objets, entités, formats d’échanges
  • Les services : injections, événements, tests
  • Les composants : accès aux données, persistance, User Interface

Zoom sur les objets PHP – Julien Pauli

Toute variable en PHP, va créer une Zval.  Les Zvals sont des « conteneurs » écrits en C. PHP utilise ces conteneurs pour stocker des tableaux, etc … Dans ces Zvals, on y trouve un élément « refcount », qui  s’incrémente à chaque occurrence de la même instance.

En PHP, un Handler est un entier utilisé pour référencer l’objet d’une manière unique. On peut le faire apparaître quand on fait un var_dump. Les handlers sont utilisés lors de l’implémentation des interfaces ArrayAccess, Serializable, Countable.

Les objets, s’ils sont des variables, ne sont pas des références.

Le Garbage Collector, lui, ne sert que pour les références « circulaires » quand deux objets se référencent les uns les autres (zvals seulement). gc_collect_cycles() permet de vider ce cache.

Julien nous rappelle également qu’une classe c’est lourd, donc il est préférable utiliser l’autoloading.

SimpleXMLElement, PDOStatement, Datetime utilisent des Object handlers.

Le destructeur d’une classe ne libère pas la mémoire tout de suite. Il est recommandé de faire unset() si on veut supprimer l’objet et sa mémoire. Un destructeur qui « plante » va entrainer la désactivation de tous les autres destructeurs car le script va être considéré comme pas stable.

Mon avis : un petit voyage dans le comportement même de PHP. Un sujet qui commence à me titiller d’ailleurs. Il est souvent intéressant de s’initier à la grammaire d’un langage informatique.

Unglue all the things – Beau Simenson

Utilisés comme des services, les controleurs sont plus portables.

Beau Simenson fait également référence à Puli, qui est un nouvel outil de packages. Le système de séparation en sous-arborescences permet une manipulation plus facile, chaque répertoire contient de multiples packages.

Le modèle sera toujours influencé par l’ORM.

J’ai testé : le PHP Forum de Paris

elePHPant
Vous avez le bonjour de l’éléPHPant !

Le PHP Forum, c’est en fait LE pèlerinage pour tout développeur passionné par son métier et qui veut approfondir d’avantage ses connaissances. Si vous êtes développeur, et que ça ne vous ai jamais venu à l’idée, le mois d’octobre venu, de venir voir ce qu’il s’y passe, c’est que vous êtes un faux développeur, que vous avez choisi cette voie par dépit professionnel et que vous programmez toujours en PHP4 (rhô la vilaine que je suis).

Le PHP Forum est un évènement sur deux jours qui a lieu vers la fin d’octobre au Beffroi de Montrouge. Il a son petit prix (un peu plus de 200 euros), mais si vous souscrivez à l’AFUP, qui est l’Association Française des Utilisateurs de PHP (25 euros), vous aurez droit à une réduction de 100 euros … donc non seulement vous payez moins cher mais en plus, vous aurez droit à entrer dans la communauté et à participer via des mailings-lists au développement des évolutions du langage. Et ça, j’aime. L’inscription vous donné également le droit réserver votre place à un (seul, hélas) atelier qui prend une demi-journée, et qui vous permet de vous ouvrir à des outils que vous ne connaissiez pas. Personnellement, j’ai souscrit à l’atelier « Usage avancé de Jenkins comme outil d’amélioration/intégration continue ». Ce qui me permet d’avoir vu en diagonale le potentiel de ce dernier.

Bref, arrivés sur les lieux (je vous conseille de venir une demi-heure à l’avance sinon vous allez pleurer les premières minutes auxquelles vous n’assisterez pas), vous voyez une belle file d’attente, avec plein de geeks, majoritairement masculins à 98,5% , barbus à 70%, et avec un portable ou une tablette à 100%, Apple à 65%. On s’immisce donc d’entrée à l’ambiance de l’évènement.

Une fois que vous arrivez à l’accueil, on vous remet votre badge, qui ne vous quittera

Haouuu la classe avec les lunettes
Haouuu la classe avec les lunettes Jolicode

plus, ainsi qu’une pochette-surprise avec plein de jolies choses dedans :
– 1 t-shirt pour se la péter au bureau
– 1 bilboquet
– 1 chargeur de smartphone USB
– 1 paire de lunettes de soleil <Jolicode />
– 1 magazine
– des stylos
– des prospectus avec des bons de réductions (notamment un bon SensioLabs pour découvrir son nouveau débugger).
– des bonbons à la menthe « stay PHPresh » (I’m serious)

Pendant les premières minutes qui précèdent le discours de bienvenue, vous pouvez donc découvrir avec émerveillement ce package … puis vous pourrez choisir vos confs, auxquelles vous assisterez pendant deux jours entiers. En général, deux conférences ont lieu en simultané, donc vous avez l’embarras du choix. Si vous regrettez de ne pas être doté du miracle du dédoublement, rassurez-vous, toutes les conférences sont enregistrées et diffusées sur le chan Youtube de l’AFUP.

Pour ma part, j’ai pu : découvrir Drupal 8 et son croisement avec Symfony 2, approfondir Cake PHP, tout su sur le déploiement des tests unitaires, et découvert la vraie communauté WordPress, et j’ai également pu découvrir Docker.

Un exemple de conférence à laquelle j’ai assisté

Entre deux conférences, on peut aller se promener autour des stands en buvant un café, allez critiquer Zend auprès de SensioLabs, et critiquer SensioLabs chez Zend (personnellement je préfère de beaucoup Zend), et apprécier que Microsft puisse lâcher ASP, le vilain petit canard du monde web.

A la fin, en guise de clôture, vous assisterez à un débat qui aura pour sujet les évolutions du langage PHP. En espérant d’ailleurs que PHP7 puisse voir enfin le jour avant l’année 2016 …

En bref

Le Graal qui permet d'assister à THE event
Le Graal qui permet d’assister à THE event
  • J’ai aimé : l’ambiance geek, l’intérêt des sujets des conférences, les ateliers en petits groupes de 20, qu’on nous offre le repas de midi, le contenu de la pochette-suprise.
  • J’ai moins aimé : qu’on ne puisse assister qu’à un atelier (normal, pour avoir un nombre adéquat de personnes par atelier), y’a pas toujours du café quand on le souhaite, et y’avait pas de peluches élePHPant !!!
  • Y retournerais-je ? carrément.