12
JUIN

Retour sur le Symfony Live 2012 - Jour 1

Publié le 12/06/12 à 10h20 par Skwi

Le 6 et 7 juin a eu lieu l'édition 2012 du Symfony live, l'événement annuel autour du framework PHP. Hasard du calendrier, cet événement suivait le Forum PHP 2012 puisqu'il se déroulait le lendemain, au même endroit.

symfonylive2012

Nous avons pu assister à ces 2 jours de conférences que nous vous détailleront au cours de 2 articles. 

Les slides des conférences (y compris celles auxquelles nous n'avons pas pu assister) sont disponibles sur joind.in.

 

Opening Keynote - Fabien Potencier

Comme chaque année, Fabien ouvre le bal avec sa Keynote d'ouverture d'un style très inspiré de feu Steve Jobs. Le sujet cette année : La communauté.

Symfony a su en quelques années construire une importante communauté autour du framework (plus de 450 contributeurs)

Pour Fabien, la reconnaissance de la communauté est importante.

symfonylive2012

Crédit photo : Albert Jessurum

Le site Symfony.com dispose désormais d'une page dédiée pour lister l'ensemble des contributeurs, quelle que soit la taille de leur apport au framework.
Le site SensioLabsConnect est quand à lui un véritable réseau social qui met en avant la communauté (pas seulement les contibuteurs). On y trouve les profils des membres qui peuvent également parler des projets auxquels ils participent.

Les badges obtenus sur le site sont d'ailleurs disponibles IRL pour les participants à l'événement. Les plus gradés arboreront fièrement leurs médailles tout au long de ces 2 journées.

Pour les personnes désireuses d'organiser des meetups sur Symfony, SensioLabsEvents va mettre à disposition un meetup kit, une façon d'améliorer mais aussi de cadrer les événements autour du framework.

Fabien fait un retour sur le sondage qu'il avait lancé il y a quelques mois pour connaitre le profil et les attentes de la communauté.
Le chiffre qui l'a le plus étonné : 40% des développeurs Symfony codent sous Linux, contre 34% sous Mac et seulement 24% sous Windows.

Pour répondre a une demande assez importante, Fabien annonce la création d'une Certification Symfony. C'est un peu à contre sens du discours qu'il tenait il y a quelques années mais c'est à mon avis une bonne chose.

Ces examens se dérouleront dans des endroits physiques (pas de certif online). Principalement chez Sensio à Paris et lors des conférences.

La certification coutera 200€ et sera d'un niveau relativement élevé, l'objectif n'étant pas de la donner à tout le monde mais bien d'avoir des développeurs qualifiés, ayant une bonne connaissance du framework et de son fonctionnement.

Fabien termine sa Keynote sur un merci à l'ensemble de la communauté, une séquence émotion sur un fond musical qui nous metterait presque la larme à l'oeil.

 

How we built the new responsive BBC News site - John Cleveley

Petit imprévu, Johannes semble ne pas s'être réveillé suffisament tôt. Sa conférence est donc intervertie avec la suivante.

C'est John Cleveley qui nous expliquera comment lui et son équipe ont mis en place un site web responsif pour BBC News.

Il commence par une présentation rapide du vieux site de la BBC. Une interface un peu datée mais toujours très ergonomique. Son gros point faible : elle n'est adaptée que pour les ordinateurs de type deskop.

D'entrée de jeu, John met fin a une idée reçue : la distinction entre web mobile et web desktop. Le parc d'appareils connecté est aujourd'hui tellement vaste (desktop, laptop, tablettes, mobiles, consoles, (très) haut débit, bas débit …) qu'on a qu'un seul web, qui doit pouvoir s'adapter à toutes les plateformes. Petite anecdote : dans le cas de la BBC, seul 15% des appareils mobiles connectés sont des smartphones. Certains sont des téléphones avec affichage en noir et blanc (beaucoup utilisent Opera Mini, compatible avec de nombreux appareils).

Une pratique répandue est de différencier les appareils qui se connectent au site, que ce soit coté serveur (user agents) ou client (en js). Un bon site responsif s'affranchit de cette détection, il sert le même code à tout le monde et s'adapte automatiquement lorsqu'un nouveau format d'appareil arrive sur le marché.

L'idée de l'équipe BBC News est de partir sur un site pour mobile, et de l'améliorer au fur et à mesure des possibilités des appareils. Le développeur doit faire la différence entre les bons navigateurs et les mauvais. Le mauvais reçoit seulement le contenu de base (rapidité), les bons auront du contenu supplémentaires suivant les possibilités qu'ils offrent : gestion des événements et sélecteurs javascript, local storage, chargement d'éléments DOM lourds.

Les chargements doivent être optimisés, notamment les images. Il est possible d'utiliser javascript pour demander l'image la plus adaptée à la taille à laquelle elle sera affichée (inutile de télécharger une image HD si elle est affichée sur un navigateur en 480 × 320. Il est également possible de les lazyloader pour donner une impression de fluidité.

Il faut toujours garder en tête de faire un minimum de requêtes, et avec les plus petites réponses possible. Pour cela :
- Utliser Gzip
- Concaténer les CSS et JS
- Surveiller les plugin tiers (ex: les widgets twitters)
- Générer le rendu de la page côté serveur.

Quelques outils utiles qui ont été mis en place dans le cadre du site de la BBC :
- Varnish (qui a permis de multiplier par 10 les performances)
- Pimple (Le container pour l'injection de dépendances).
- Event dispatcher (Pour découpler les composants)
- AMD, qui gère et compile les dépendances JS. Il permet de travailler avec des petites librairies (donc plus de clarté) et de servir seulement celles qui sont nécessaires à l'affichage de la page consultée.

John insiste une dernière fois, la rapidité est la clé d'un bon design responsif.

 

Security : In real Life - Johannes Schmitt

Johannes Schmitt à l'air maintenant réveillé et prêt à intervenir pour sa conférence sur la sécurité.

La présentation commence par une explication de l'architecture du composant sécurité développé par Johannes.
Il fait bien la distinction entre la partie authentification et la gestion des autorisations.

Maintenant que le fonctionnement est expliqué, on entre dans le vif du sujet, comment utiliser le composant sécurité dans des cas concrets et régulièrement rencontrés. (Je ne rentrerais pas dans les détails de l'implémentation de chaque point, mais je donnerais les pistes sur lesquelles partir)

1. Pour faire des test fonctionnels alors que certaines parties de l'application requièrent d'être un utilisateur connecté, la meilleure solution est de suivre le même chemin que l'utilisateur, à savoir passer par l'authentification pour chaque test (en utilisant par exemple les outils de test de symfony pour remplir automatiquement le formulaire de login à chaque test)

2. Pour personnaliser les erreurs, il faut utiliser la classe EventListener (quitte à la surcharger), disponible partout, plutôt que de créer une classe perso qui se chargerait de gérer les AccessDeniedException.

3. Les bonnes pratiques pour utiliser les ACL, sont d'appeler l'AclListner le plus tôt possible, intégrer la gestion de droit dans les LifecycleCallback (preUpdate, prePersist ...) et utiliser l'annotation @RunAs avec un profil administrateur pour les méthodes "console" (pour éviter de passer à chaque fois par toute la gestion de droits).

4. Lorsque l'on veut se connecter avec une API (LDAP ...), il suffit d'implémenter AuthenticationProviderInterface et de régler le fichier de configuration security.yml.

5. Si l'on veut faire une authentification Ajax, les classes AjaxFailureHandler et AjaxSuccessHandler doivent implémenter AuthenticationFailureHandlerInterface et AuthenticationSuccessHandlerInterface. Il faut ensuite préciser au fichier security.yml que l'on utilise ces classes, avec les configs : success_handler et failure_handler.

6. Pour disposer d'une route qui soit localisée pour le login, il suffit d'utiliser le I18nRoutingBundle. Tout se fait ensuite dans la config. On peut éventuellement utiliser l'annotation @Route( [...] options : {"i18n" : false}) pour avoir une route unique "internationale".

7. Si l'on souhaite utiliser l'authentification Facebook ou Twitter, il faut définir des points d'entrée (EntryPoint) et créer les UserProvider associés à chaque système de login. On configure ensuite les routes pour les associer aux EntryPoint. Attention, si l'on est par exemple logué avec Twitter, on ne peux pas utiliser le composant sécurité pour associer automatiquement le compte Facebook (on ne se logue qu'une fois).

La matinée s'achève sur cette conférence, c'est l'heure de la pause déjeuner.

 

symfonylive2012

Crédit photo : Nicolas Hachet

 

Dependency Management with Composer - Nils Adermann, Jordi Boggiano

La journée reprend avec la présentation d'un des outils les plus en vogue du moment : Composer.

Jordi et Nils nous présentent l'écosystème Composer, qui comprend 3 outils :
- Composer, un outil de gestion de dépendances flexible, simple d'utilisation, et qui encourage les best practices.
- Packagist, un repository ouvert de packages PHP
- Satis, un micro-repository personnel, permettant de gérer des package propriétaires.

Composer s'installe en 3 commandes.

Son rôle est de gérer les dépendances (bundles, librairies ...) du projet PHP sur lequel on travaille. Grace à lui, on est assuré que tout le monde (développeurs, mais aussi serveurs d'intégration, de production …) utilise bien les mêmes versions des librairies. Il assure aussi les mises à jours des dépendances si besoin.

Connecté à GitHub, il est au courant des versions et branches existantes.

Composer génère un bootstrap d'autoloading pour le projet, ainsi qu'un fichier composer.lock. Ce dernier doit être partagé à tous les développeurs travaillant sur le projet, c'est lui qui détient la configuration commune. C'est également lui qui doit être déployé en production.

Grace à Packagist, les dépendances peuvent être automatiquement installées. On ne risque plus d'oublier l'installation d'un bundle lors d'une mise en production.

L'adoption de l'outil (plus de 1500 packages sur Packagist, installés 350000 fois) est impressionnante quand on sait que l'outil est encore au stade de version alpha.

Pour finir, Jordi et Nils nous ont donné leurs consignes de développement :
- Regardez si ce que vous voulez faire n'existe pas déjà
- Ecrivez de petites bibliothèques plutôt que du code spécifique à chaque projet
- Réutilisez votre code
- Partagez votre code
Toutes ces pratiques rendront PHP plus efficace.

Composer est disponible sur Getcomposer.org, une version beta arrivera en juin avec une release espérée pour cet été.

 

Using MongoDB responsibly - Jeremy Mikola

La conférence suivante portait sur l'utilisation de MongoDB.

Cette session s'adressait à ceux qui sont déjà assez familier avec MongoDB mais qui veulent en tirer un meilleur parti, ce qui n'est malheureusement pas mon cas, qui côtoie encore ce bon vieux (mais toujours efficace) SQL. Je ne reviendrais donc pas trop dans les détails de cette conférence.

L'accent était mis sur les performances, avec des conseils qui s'appliquent généralement à l'ensemble des systèmes de bases de données, mais présenté ici avec leurs avantages et spécificités dans le cas d'un NoSQL, et surtout comment les mettre en place de façon efficace et optimale pour une base MongoDB.

Malgré ma connaissance limité du sujet, j'ai trouvé que MongoDB est devenu un vrai système de base de données, fiable, bien pensé, flexible et optimisable au besoin, ce qui n'était pas mon ressenti lorsque j'avais tenté de l'appréhender il y a 2 ans.

Je conseille à ceux qui ont déjà une connaissance du système de consulter les slides de la conférence, assez complets et qui rentrent suffisamment dans le technique.

 

Symfony2 components to the rescue of your PHP projects - Xavier Lacot

Xavier Lacot, président de l'AFUP, anime cette dernière conférence, où l'on va apprendre comment faire d'un vieux projet PHP un beau projet moderne utilisant des technologies récentes.
 
Il commence par un état des lieux sur PHP et son écosystème en 2012. Il rappelle les principaux apports des versions 5.3 et 5.4.
Les frameworks (Symfony, Zend, CakePHP, ...) et les outils (Composer, github ....) qui gravitent autour du langage sont une preuve de la qualité de l'écosystème et de la communauté qui l'anime.

PHP est maintenant un langage professionnel, avec de véritables standards de qualité, contrairement à sa version de 2005.

Se pose donc le problème de la maintenance des projets créés en 2005, dans un contexte où l'on ne peut pas se permettre une refonte complète (pour des raisons aussi bien budgétaires, techniques , business ...).

Les composants PHP de Symfony, par leur aspect "standalone" vont nous permettre de faire évoluer de façon graduelle un vieux projet.

S'il faut retenir 3 composants à mettre en place sur un projet : HttpFoundation (pour gérer les requêtes), DependancyInjection (pour découpler le code) et ClassLoader (pour inclure les classes automatiquement avec la norme PSR-O).

On peut ensuite selon les besoins rajouter d'autres composants. Xavier conseille les suivants : Console, Finder, Routing, Templating et Validator. Au delà, il faut peut être songer à passer complètement sous Symfony.

Ne pas hésiter à utiliser Composer pour installer ces composants !

 

Jeopardy

La journée s'achève sur un Jeopardy.

symfonylive2012

Crédit photo : Henri Bergius

4 volontaires désignés vont s'affronter sur scène pour répondre à des questions (enfin des réponses, vous connaissez le principe du Jeopardy) à propos de Symfony, son code mais aussi (surtout) son équipe et sa communauté. En adéquation avec l'ouverture.

Baraguiné par C0il le 20/06/12 à 14h09
C0il via Twitter
Merci pour ce large résumé ! :)

Ajouter un Commentaire

Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:

Compte la Ferme du Web

Identifiez-vous
Inscrivez-vous

Compte Facebook

Connexion avec Facebook

Compte Twitter

Connexion avec votre compte twitter
Rechercher sur la Ferme du web