• Technique
PHP Tour 2017 à Nantes, deuxième jour de conférence !

  • Technique
PHP Tour 2017 à Nantes, retour sur le premier jour de la conférence...

#PHPTour, retour sur le premier jour de la conférence.

  • Technique
"php-crashers" : exemples de scripts qui déclenche une segmentation fault en PHP

Erreur de segmentation, qu'est-ce que c'est et dans quels cas sont elles déclenchées en PHP ? Un dépôt Github présente quelques exemples détaillés...

  • Développement
  • Technique
PHP Coding Standard Fixer ou comment nettoyer les namespaces inutiles en PHP ?

Aujourd'hui il existe des outils pour aider à produire un code propre et respectant une mise en forme normée, pourquoi ne pas essayer !

  • Technique
Désactivation de certaines fonctionnalités des navigateurs sur les sites non "sécurisés"

  • Serveur
  • Technique
Let’s Encrypt : une nouvelle autorité de certification libre, automatisée et ouverte

  • Développement
  • Technique
Comment cloner un objet en JavaScript

Toute assignation créé une référence et pas une copie. Ce comportement est standard dans la programmation mais en JavaScript on se perd facilement...

  • Serveur
  • Technique
Comment en finir avec l'édition du fichier hosts ?

Comment configurer un serveur DNS simple dans un environnement de développement ? En utilisant dnsmasq, un outil efficace qui permet de s'affranchir de l'édition du fichier hosts.

  • Développement
  • Technique
PHP 7: Installation sur une distribution Ubuntu Server

Plus d'excuse maintenant pour ne pas installer et utiliser PHP 7 sur votre serveur Ubuntu. Grâce à ce guide, vous pouvez suivre une procédure fiable et officielle sans passer par une compilation personnalisée.

  • Développement
  • Technique
Symfony, Composer et la configuration `platform`

Une erreur du type `overriden by "config.platform.php"` en installant vos dépendances composer ? Venez comprendre la configuration qui en est la cause et comment la dompter !

  • Développement
  • Technique
  • Tests unitaires
Atoum: Comment automatiser l'utilisation du fichier de `bootstrap` ?

J'ai utilisé atoum sur un projet récemment. Il m'a permis de découvrir une autre approche des tests unitaires, plus simple et efficace

  • Technique
On a testé Firefox Developer Edition !

Mozilla vient de présenter sa dernière nouveauté, Firefox Developer Edition. C'est un outil puissant qui intègre les dernières innovations pour aider les développeurs web au quotidien.

  • Technique
Contrôler l'installation des mises à jour de Wordpress

Il est intéressant de pouvoir limiter l'installation des mises à jour à certains utilisateurs pour contrôler les problèmes techniques qui peuvent en découler.

  • Technique
L'Ipad et les problèmes de redimensionnement des images hors viewport

L'Ipad et safari sur iOS n'autorisent pas par défaut l'application d'une image de fond qui dépasse du viewport, voici quelques astuces pour contourner ce problème.

  • Design
Prendre les bonnes décisions pour une interface plus efficace

Vous vous demandez pourquoi certaines interfaces web plaisent aux internautes et d’autres pas ?

  • Stratégie
Comment rédiger un brief efficace pour obtenir ce que vous voulez !

Vous souhaitez que votre projet aboutisse à la réalisation que vous imaginez ?

Mots Clés

  • Technique

26 mai 2017 par Stéphane Hulard

PHP Tour 2017 à Nantes, deuxième jour de conférence !

Après la première journée bien chargée du PHP Tour, je suis arrivé bien en forme pour le deuxième jour et à temps pour le petit déjeuner… Je retrouve rapidement quelques personnes de la veille, on se met dans le bain pour la première conférence qui commence à 8h30…

Le détail des différentes conférences peut être un peu complexe, si vous avez des questions n’hésitez pas à laisser un commentaire !

Application profiling using XDebug, XHProf, Blackfire

Dmytro Naumenko participe activement au développement du coeur de Yii Framework. Il vient de Kyiv en Ukraine et nous a préparé une présentation complète sur le debug et le profiling en PHP. Je connaissais déjà les différents outils présentés mais j’ai appris pas mal de petites choses.
Même si mon esprit a eu du mal à parler anglais dès 8h30, Dmytro propose un contenu clair et ponctué d’exemple très concret.

XDebug est surement l’outil le plus populaire sur le marché aujourd’hui quand on parle de debugger PHP. Depuis 2002, il est toujours en place et apporte un lot de fonctionnalité très utile : points d’arrêts, exécution à distance, intégration dans les principaux IDE du marché…
Je ne connaissais pas l’empreinte de cet outil sur l’environnement d’exécution. Il diminue d’environ 50% les temps d’exécution du code par le simple fait d’être activé ! Il s’agit d’un debugger, il n’a donc aucune utilité sur un environnement de production… Dmytro nous dit très simplement de ne pas optimiser les performances d’exécution du code avec XDebug, car le simple fait de le désactiver est déjà un gros bond en avant.

XHProf, est un outil dédié au profiling. Il permet donc d’étudier le coût de chaque opération lors de l’exécution du code et de connaitre les goulots d’étranglements de l’application. L’impact est négligeable (+10% environ) sur les temps d’exécution, il pourrait donc être utilisé en production pour étudier les performances réelles de l’application, à voir au cas par cas. En effet, dans tous les frameworks, le mode development est plus lent que le mode production, il peut donc être vraiment intéressant d’avoir un retour sur les performances live.
Avec quelques instructions à utiliser dans le code PHP, il est possible d’extraire la pile d’appel et l’impact de toutes les instructions (temps d’exécution, mémoire), tout ce qu’il faut pour agir sur les performances.
Malheureusement, l’extension n’est pas encore compatible avec PHP7 ce qui est un réel handicap aujourd’hui… Il existe plusieurs forks sur GitHub apportant la compatibilité, mais pas de support officiel pour le moment…

Blackfire, est d’abord un fork de XHProf démarré par SensioLabs. C’est devenu un produit commercial édité par la société. L’idée est de rendre l’extension compatible avec les dernières fonctionnalités de PHP tout en proposant une interface web pour analyser les profils plus simple et efficace (les appels de fonctions « inutiles » sont cachés, de l’interactivité est ajoutée avec un peu de JavaScript…).
Il existe un niveau d’utilisation gratuit comprenant tout ce qu’il faut pour une optimisation de premier niveau (performance du code, rétention des données sur 1 jour, possibilité d’utiliser le SDK PHP…). Pour pouvoir étudier la totalité des métriques, il faut passer en mode payant (à partir 19,90€/mois).
Un énorme avantage de Blackfire est d’intégrer des tests de performances dans les tests unitaires, de proposer un client CLI pour lancer des benchmarks et aussi un SDK PHP. Une suite d’outil complète pour répondre aux besoins spécifiques de chacun…

Dmytro termine sa présentation par un rappel sur les points sensibles à surveiller durant le développement :

Monitoring applications – Evolve from text logs to extensive automatic monitoring

Sven Finke, DevOps chez Shopware, nous propose un retour d’expérience sur la mise en place de l’analyse de logs pour surveiller une application.

Au départ, ils ont choisi de s’appuyer sur une suite d’outils SAAS pour démarrer facilement cette analyse, mais avec le temps et la quantité de données (30Gb de logs par mois) ils sont en train de voir pour migrer vers la suite Elastic en interne.

La présentation est intéressante mais manque un peu de profondeur, Sven nous présente le résultat et l’intérêt de ces pratiques, mais pas trop le cheminement qui a conduit jusqu’à cette solution…

Learning about machine learning

Une présentation très dynamique sur les algorithmes utilisés en machine learning. Joel Lord fait un point sur ce qu’est le machine learning, la différence avec l’intelligence artificielle et les cas d’usage concret de ces algorithmes aujourd’hui (chat bots, analyse big data…).

Joel, présente deux implémentations (Naïve Bayes Classifier et algorithme génétique) réalisés en PHP avec démo à l’appui et code source ici : https://github.com/joellord/php-machinelearning

Un talk pour démystifier ces algorithmes tendances qui font un peu peur. Je pense que Joel a réussi son pari en montrant qu’en quelques centaines de lignes de code il est possible de les utiliser dans la vraie vie (détection de la langue par exemple) !

Synchroniser ses applis avec akeneo/batch

Gregory Planchat nous présente un outil, akeneo/batch développé en interne chez Akeneo. L’objectif est de fournir une interface en ligne de commande pour traiter l’import / export de grosses masses de données. C’est un portage en PHP de la librairie Java Spring Batch.

La présentation manque un peu de concret et se réduit à une explication de la documentation qui est disponible sur le site d’Akeneo.

Ma petite entreprise ne connaît pas la crise !

Juste après le repas, 3 personnes (Pierre Tomasina de ContinuousPHPFabrice Fesch de Melis Technology et Eric Hifi de Roague Wave) nous proposent une présentation conjointe. Ils annoncent le retour de Zend en France à travers Roague Wave et font un point sur l’état des technologies actuelles.

Outillage, automatisation ces trois sociétés éditent des solutions répondant à ces besoins et essaient d’évangéliser ces bonnes pratiques pendant les événements.

Year with Event Sourcing & CQRS

Miro Svrtan nous vient de la Croatie pour parler d’Event Sourcing ! Sa présentation très accessible m’a permis de faire le point sur Event Sourcing et CQRS et de me mettre à jour sur l’intérêt de ces approches.

Il revient sur la mise en place dans un de ses projets : TicketSwap
Il fait un parallèle avec d’autres projets pour bien montrer les cas dans lesquelles ce n’est pas une bonne idée de les utiliser.

Je trouve intéressant aussi qu’il prenne le temps de nous montrer les principaux obstacles à cette approche (taille des données à stocker, structuration des données…).

JWT Authentication To authentication and beyond

Luìs Cobucci est un développeur PHP actif dans la communauté (développement de l’ORM Doctrine et organisateur du meetup AmsterdamPHP) qui travaille actuellement à Amsterdam chez Usabilla.

Il nous présente les Json Web Token, leurs avantages / inconvénients et comment bien les utiliser. Pour moi ces tokens ne sont pas vraiment adaptés pour travailler sur une communication front / back traditionnelle (web app) mais présentent une approche intéressante pour échanger des données entre service de manière sécurisée. En effet sur un échange avec le navigateur, on est réduit à une sorte d’échange de cookie avec une structure différente et je ne vois pas trop l’intérêt de se passer d’une session serveur surtout que la taille d’un JWT est beaucoup plus importante que celle d’un session id.

Par contre, dans le cas d’une API, ces tokens présentent un avantage, ils sont signés et on peut s’assurer que le service qui l’a généré est valide… Je ne m’étais jamais encore posé sur cette techno, mais Luìs m’a donné envie d’essayer !
Il faudra que je teste sur un projet réel pour avoir une meilleure vision de leurs avantages.

Luìs a développé une librairie PHP pour utiliser ces tokens, elle respecte la RFC7519 correspondante, il n’y a plus qu’à s’en servir 😉.

Retour sur les Panama Papers et les bases de données graphes

C’est Benoit Simard, developer evangelist chez Neo4J qui nous rejoint pour cette présentation. Il commence par un petit rappel sur les « Panama Papers » (la plus grosse fuite de données de l’histoire avec plus de 3Tb de documents…) et l’analyse qui en a suivi.
C’est ensuite l’International Consortium of Investigative Journalists (ICIJ) qui a pris les choses en main pendant un an pour découper / transformer les données et les rendre exploitable pour une investigation.

Pour l’analyse ils ont utilisé SolR pour la recherche documentaire et Neo4J pour les liens entre les données. Quelques scripts Python permettent de faire le lien entre ces outils. Il est possible de télécharger le jeu de données Neo4J généré pour pouvoir « jouer ».

J’avais forcément entendu parler de cette fuite de données. Elle a donné lieu à plusieurs arrestations et de nombreuses enquêtes. Je n’avais pas conscience de l’ampleur et de la quantité de données que ça représentait. Benoit nous a aussi fait une démonstration du langage de requête Cypher permettant d’explorer les noeuds du graph.

Une présentation intéressante et accessible (peut être un peu trop accessible :)). Je me suis déjà intéressé à Neo4J pour d’autres projets et les questions que j’ai posé à la fin était un peu trop technique, je reste sur ma faim pour cette partie.

The ultimate microservice stack

Dernière conférence de la journée, c’est Julien Bianchi, lead développeur chez PMSIPilot, qui nous fait un retour d’expérience sur l’architecture micro services. Son titre représente une utopie qui n’existe pas, il n’y a pas de solution miracle ou ultime…

Il commence en nous racontant une histoire :

Au sein de PMSIPilot, son équipe a été amenée à développer un service d’authentification centralisé pour gérer les permissions dans leur logiciel.
Ils ont choisi il y a plus de deux ans de s’appuyer sur un logiciel en Java pour gérer cette partie. Ce choix était un mauvais choix, la solution ne tenait pas la charge et était complètement inadaptée à leur besoin.
Une fois en place, ils avaient pieds et poings liés…

Suite à cette déroute, ils ont amorcé un projet de refonte qui a prix du temps, mais ils ont choisi de faire des choix :

Sans grande surprise, ils ont choisi de s’appuyer sur PHP pour leurs développements et de créer un service OAuth2 s’appuyant sur une base de données PostgreSQL.

J’ai découvert dans cette conférence, une approche de simplification et de fiabilisation vraiment très intéressante. À tous les niveaux (choix, développement, déploiement, monitoring…), le projet a été porté par l’équipe ce qui lui donne une force incroyable !

Voici les outils utilisés pour cette refonte :

Pour les tests, ils ont combiné des tests unitaires, des tests de charges et des smoke tests pour fiabiliser au maximum :

Une présentation très complète sur cette refonte de service. La prise de recul de Julien est exemplaire et le résultat impeccable !

Le petit mot de la fin

Geoffrey vice président de l’AFUP reprend la parole pour la keynote de fermeture. Une petite présentation de toute l’équipe et quelques annonces à propos du forum PHP qui aura lieu au mois d’octobre clôture ces deux jours très riches en rencontre et en apprentissage…

Même si je n’ai pas gagné d’elephpant (😢), je suis très content de ce premier PHP Tour ! On repart avec une jolie tasse fournie par Jolicode, un goodies arrivé dans les temps que tous les participants peuvent prendre avant de partir.

Merci à l’AFUP pour l’organisation et à bientôt pour de prochaines aventures !

Partager cet article


Soumettre un commentaire

Vous avez décidé de laiser un commentaire. C'est fantastique !
Votre adresse e-mail ne sera pas publiée, merci d'être passé !

(*) Champs obligatoires Envoyer

Votre commentaire a été soumis à validation