Industrialisation PHP

3sept/100

Le programme du Forum PHP 2010 est annoncé

Le programme du Forum PHP 2010 vient d'être officiellement annoncé. Cette édition est un peu spéciale car on y fêtera les 15 ans de PHP ainsi que les 10 ans de l'AFUP.

Cet évènement unique en France regroupe les meilleurs conférenciers français et internationaux autour des thèmes importants du moment. Parmi les "stars" qui seront présentes cette année, on trouve Rasmus Lerdorf, le créateur de PHP, Derick Rethans, le créateur d'Xdebug et contributeur majeur de PHP ainsi qu'Ilia Alshanetsky, contributeur de PHP.

Cette année le programme a été construit autour de 4 grands thèmes :

  • PHP de A à Z : Débuter en PHP, Réussir un projet avec PHP, Choisir son hébergement…
  • Les outils basés sur PHP : Drupal , outils de e-commerce et de business, CRM et ERP…
  • L'industrialisation de PHP : Performances, tests, authentification centralisée, frameworks…
  • Technologies autour de PHP : HTML 5, référencement…

Pour rappel, le Forum PHP 2010 aura lieu les 09 et 10 novembre 2010 à la Cité des Sciences de Paris la Villette (France). Vous pouvez vous inscrire dès à présent pour participer à cet évènement majeur.

2juil/100

Revue de presse Industrialisation PHP de la semaine 26 (2010)

Voici la dernière revue de presse avant les vacances. Selon l'actualité, j'espacerai peut-être un peu les revues de presse pendant les deux mois qui arrivent.

10 Tips for Optimizing MySQL Queries (That don’t suck)

Les conseils d'optimisation pullulent sur internet. Malheureusement, le meilleur côtoie parfois le pire comme le montre Jesse Farmer avant de proposer une liste des 10 optimisations pour MySQL qu'il considère utiles.

C'est la fête du test

Dans le prolongement de mon article sur le TestFest PHP 2010, Frédéric Hardy a rédigé un article qui explique en détails comment écrire son premier test unitaire pour PHP.

Xdebug 2.1

Derick Rethans a publié cette semaine la version 2.1 de son outil Xdebug. Cette version est la première à être totalement compatible avec PHP 5.3. Au menu des nouveautés, on trouve notamment la possibilité de tracer l'assignation des variables, de désactiver les opérateurs @ et de savoir quel bout du code a défini des entêtes HTTP.

Do yourself a favour and don’t test using HTTPS

Utiliser des connexion HTTPS en production est une très bonne chose mais cela complique souvent les tests IHM. Adam Goucher explique les raisons du problème et propose de tout simplement ne pas utiliser HTTPS lorsqu'on n'est pas en production.

25juin/100

Revue de presse Industrialisation PHP de la semaine 25 (2010)

Cette semaine la revue de presse est assez hétéroclite et propose quelques innovations à surveiller de près.

PHP: Client side caching for all MySQL extensions

PHP 5.3 a introduit mysqlnd, un pilote natif pour PHP dont le but est de remplacer la libraire libmysql. Cela n'a pas d'incidence directe sur l'usage des extensions permettant de dialoguer avec MySQL (mysql, mysqli, PDO_MySQL) mais ce nouveau pilote apporte de nombreuses améliorations techniques et notamment la possibilité d'écrire des plugins pour interagir avec les requêtes SQL qui passent par le pilote. Un peu à la manière de MySQL Proxy. Le premier plugin tirant parti de cette possibilité vient d'arriver et il permet de faire du cache de requête du côté de PHP.

Multiple PHP versions on the same IIS server

De nombreux articles expliquent comment utiliser plusieurs versions de PHP sur la même instance d'Apache mais aucun pour IIS. C'est désormais chose faite grâce à un développeur de Microsoft. Attention cependant, si vous avez déjà installé PHP avec un installeur, il vous faudra d'abord effectuer une manipulation avant de pouvoir utiliser cette technique.

Exploring the software behind Facebook, the world’s largest site

Royal Pingdom, le blog du service de monitoring Pingdom, consacre un article à la relation entre Facebook et l'Open Source. Il aborde les charges astronomiques supportées par leur architecture ainsi que les logiciels développés ou utilisés par Facebook.

State of Symfony 2 online conference – a killer feature revealed!

Sensio Labs a dévoilé cette semaine certains aspects de la prochaine version majeure de son framework : Symfony. L'un de ces aspects est particulièrement innovant. Il s 'agit de la prise en charge des Edge Side Includes, un mécanisme de cache partiel de pages HTML développé par Akamaï et proposé au W3c pour normalisation. Nous reviendrons sur cette notion très intéressante dans un prochain article.

24juin/100

TestFest PHP 2010

Une campagne baptisée TestFest est organisée chaque année par la communauté PHP. Cette année elle s'étale du 1er mai au 31 août bien que son annonce officielle vienne seulement d'être faite.

Son but est d'élargir le cercle des personnes qui écrivent des tests unitaires pour PHP. Il s'agit bien de tests pour vérifier le comportement du langage lui-même. Si PHP est écrit en C, les tests sont eux rédigés au format PHPT. Ce format est relativement facile à prendre en main du fait de sa simplicité. La seule chose déroutante au début est que l''on teste forcément par rapport à un affichage. Pour les fonctions qui n'en produisent pas, ce qui est le cas de la plupart d'entre elles, on affiche le contenu de la valeur de retour au moyen des fonctions echo() ou var_dump().

PHP possède déjà plus de 7 000 tests mais il reste des parties qui sont peu couvertes par des tests unitaires. On peut les repérer grâce à la liste des fonctions testées et au rapport de couverture de code.

Une fois la fonction à tester choisie et le test rédigé, il est temps de l'exécuter. Pour cela, il faut mettre en place un environnement contenant les dernières versions des branches 5.2 et 5.3 ainsi que du tronc du code source. Cette année, des instructions détaillées sont fournies pour Windows, Mac OS X et Ubuntu. Ce dernier bénéficie en plus d'un script qui automatise l'ensemble du processus de mise en place. Bien que conçu pour Ubuntu 9.10, il fonctionne parfaitement sur la version 10.04 sortie récemment.

Des manifestations locales sont organisées un peu partout dans le monde par des volontaires pour aider toutes les bonnes volontés à faire leurs premières armes. Avec un peu d'accompagnement, on écrit son premier test en moins d'une heure et beaucoup moins pour les suivants. C'est très gratifiant de savoir qu'on contribue directement à la qualité de PHP et que des morceaux de son propre code sont distribués avec PHP.

Pour le moment, aucune manifestation n'est prévue en France mais n'hésitez pas à proposer d'en organiser une si vous le souhaitez. Enfin, le TestFest vise à initier des vocations. Si vous souhaitez continuer au-delà de la campagne, n'hésitez pas à le faire.

Mise à jour : Frédéric Hardy a rédigé un article très détaillé sur l'écriture de tests unitaires pour PHP que je vous encourage à lire.

14juin/100

Revue de presse Industrialisation PHP de la semaine 23 (2010)

C'est avec un peu de retard que je vous présente ma revue de presse de la semaine passée.

NGINX + PHP-FPM + APC = Awesome

Apache est un excellent serveur HTTP, robuste et très paramétrable. S'il est suffisant pour la majorité des utilisations, il peine parfois à tenir de forte charges. Il faut alors se tourner vers des serveurs à la couverture fonctionnelle moindre mais taillés pour encaisser de grandes quantités de requêtes. Les deux plus connus dans ce domaine sont LightTPD et nginx. C'est l'installation et le paramétrage de ce dernier que cet article explique en détails. Au passage, l'auteur parle de PHP-FPM, une manière de mettre en œuvre PHP dont on entendra beaucoup parler dans les prochains mois car elle a été intégrée dans le tronc de PHP.

Sikuli

Il existe plusieurs outils, comme Selenium ou Watir, pour automatiser des actions dans des interfaces graphiques notamment pour effectuer des tests d'IHM. La plupart de ces outils utilisent un mécanisme interne à la technologie testée pour pouvoir interagir avec elle. Ils ne peuvent donc pas tester les technologies ne fournissant pas un moyen d'introspection.

Sikuli est un nouvel outil qui fonctionne de manière révolutionnaire. Il se base sur l'affichage de l'interface testée et cela par le biais de captures d'écran. Ce principe ne nécessite aucune manipulation interne de la technologie testée. Il est donc utilisable avec n'importe quelle application pourvu qu'elle produise un affichage. Le concept est un peu difficile à expliquer avec des mots mais la vidéo de démonstration est très explicite.

Why are interfaces widely ignored in the PHP world and what use do they have when working with symfony?

PHP est souvent moqué par les communautés de langage plus fortement orientés objet. La cause a longtemps été un modèle objet très basique. Cependant, depuis l'arrivée de PHP5, il y a déjà presque 6 ans rappelons-le, cette raison est caduque. Certes, le modèle objet de PHP reste perfectible mais pour qui sait l'utiliser pleinement, il est possible de faire de fort belles choses.

Dorénavant, le problème vient surtout des développeurs qui ne tirent pas suffisamment parti de la Programmation Orientée Objet. Christian Schaefer prend l'exemple des interfaces qui sont trop souvent ignorées ou mal utilisées alors qu'elles apportent tant de souplesse lors de la conception d'une application.

Git Reference

Par sa nature décentralisée et sa puissance, Git a révolutionné les usages que nous avions de la gestion de version. Cependant, il n'est pas toujours aisé de l'appréhender, surtout quand on a l'habitude des systèmes centralisés comme CVS ou Subversion.

Pour découvrir Git, il existe un excellent livre, Pro Git, qui est consultable en ligne. Je vous recommande d'ailleurs d'acheter, comme je l'ai fait, une copie papier pour remercier l'auteur. Ce livre a beau être parfait pour comprendre les concepts et les rouages de Git, une référence rapide aux commandes courantes est un compagnon utile lorsqu'on fait ses premières armes. C'est ce que propose Git Reference en décomposant les commandes en différentes catégories : Bases, branches et merges, partage et mise à jour, inspection.

31mai/103

RMLL 2010

Comme chaque année, les Rencontres mondiales du logiciel libre (RMLL) permettront aux acteurs et aux utilisateurs du Logiciel Libre de se croiser et d'échanger dans une ambiance simple et conviviale. Cette année, cela se passera à Bordeaux du 6 au 11 juillet.

Le programme est large et varié avec des thèmes qui vont de la technique (Administration système, développement, systèmes embarqués, matériel libre, systèmes d’exploitation, sécurité, internet) à la culture en passant par l'économie sociale et solidaire, les entreprises et le libre ou encore l'accessibilité et le handicap.

Damien et moi-même y présenterons  chacun une conférence, respectivement Audits de code PHP et Industrialiser ses développements PHP. Nous espérons vous y croiser nombreux.

28mai/102

Revue de presse Industrialisation PHP de la semaine 21 (2010)

C'est le .phar à "On", parce qu'il s'appelle "On", le mec...

Phar est probablement l'une des fonctionnalités de PHP les plus méconnue. Disponible depuis quelques années à titre expérimental et en standard depuis PHP 5.3, Phar est, pour simplifier, l'équivalent de Jar dans le monde Java. Il s 'agit d'un format de fichier qui est capable d'encapsuler des fichiers PHP et des métadonnées dans une archive qui peut être compressée et signée.

L'avantage par rapport à une archive classique est que PHP est capable de manipuler et d'exécuter nativement les fichiers PHP contenus dans une archive Phar. Cela permet par exemple de déployer une application web complète sous forme d'un unique fichier Phar qui est immédiatement exploitable comme l'explique en détails Frédéric Hardy dans cet article.

Models for hierarchical data

Stocker et manipuler des données hiérarchisées avec une base de données relationnelle est compliqué. Il existe plusieurs stratégies, certaines simples, voire simplistes, comme les listes adjacentes  et d'autres plus performantes mais plus complexes comme la représentation intervallaire.

Bill Karwin, ancien responsable du Zend Framework, a donné une conférence sur ce sujet où il présente les avantages et les inconvénients des différentes approches.

Sécuriser un serveur SSH

De nos jours, plus personne n'utilise FTP pour déployer une application (n'est-ce pas ? ;) ) à cause des problèmes de sécurité inhérents à ce protocole. SSH l'a supplanté depuis longtemps mais encore faut-il que le serveur soit bien configuré pour assurer une sécurité optimale.

Command Line PHP

J'ai déjà eu plusieurs fois l'occasion d'en parler mais je suis très fan de l'usage de PHP en ligne de commande. Cette possibilité reste malheureusement largement ignorée par les développeurs PHP. Pour remédier à cela Vanessa Vasile a publié une série d'articles montrant comment utiliser PHP pour créer des scripts exécutables en ligne de commande.

Comment signaler efficacement un bug

On a tous été confronté au problème de l'utilisateur qui se plaint d'un bogue mais qui ne prend la peine de donner au développeur les clés pour le comprendre et donc le corriger. On arrive vite à un dialogue de sourds : l'utilisateur pense que le développeur est un incapable et le développeur considère que l'utilisateur ne sais pas utiliser l'application.

Simon Tatham a écrit il y a plus de 10 ans un article qui est toujours d'actualité et qui fait référence dans ce domaine. Il y explique comment faire un rapport de bogue utile. C'est une mine d'idées pour éduquer les utilisateurs et éviter cette incompréhension préjudiciable pour tous.

14mai/102

Revue de presse PHP de la semaine 19 (2010)

Cette semaine encore, la revue de presse est courte. Mon parti pris depuis le début est de ne pas faire une resucée de ce que font très bien nombre de sites très connus comme PHPDevelopper.org ou Nexen.net. J'essaie plutôt de mettre en avant des articles pertinents qui, à mon sens, n'ont pas eu la visibilité qu'ils méritent.

Il me reste généralement dans ma besace nombre de bons articles mais qui ne sont pas directement liés à PHP, or j'ai choisi de ne mettre en avant qu'un "article bonus" par semaine. Peut-être devrais-je élargir la thématique et intégrer à cette revue de presse tous les articles qui touchent à l'industrialisation de PHP, au sens large. Qu'en pensez-vous ?

Après ces réflexions sur l'avenir de cette revue de presse, voici les articles de la semaine.

Writing Gearman Workers in PHP

Certains traitements prennent du temps. Il n'est donc pas possible de les effectuer pendant que l'utilisateur attend le résultat. Il est alors souhaitable d'effectuer ce traitement en tâche de fond et de prévenir l'utilisateur une fois celui-ci terminé. On appelle cela le traitement asynchrone. Il existe plusieurs techniques et outils pour gérer ces queues de travaux en attente.

Matthew Weier O'Phinney, le responsable du développement du Zend Framework, explique dans un billet comment écrire des workers pour Gearman. Gearman est un outil qui centralise les travaux sur un serveur auquel les workers se connectent pour demander du travail. Il s'agit de programmes simples, développés pour effectuer des tâches précises.

Unpredictable hashes for humans

Il est souvent nécessaire de générer des identifiants aléatoires dans une application web. Cette tâche qui semble simple au premier abord peut facilement amener des problèmes de sécurité si les valeurs générées sont devinables par un pirate. Il est donc impératif de choisir une stratégie fiable lors de la génération de valeurs aléatoires.

Checking for a live database connection considered harmful

L'article bonus de cette semaine explique pourquoi il est inutile et même préjudiciable de tester une connexion à la base de données avant d'effectuer une requête.

Voici comme chaque vendredi la revue de presse de la semaine qui vient de s'écouler.

PHP Smart Date Parsing: Natural Language Input (task.fm explained)

La saisie de date dans un formulaire est toujours compliquée. Deux logiques s'affrontent : l'utilisateur veut saisir la date dans un format qui lui paraît naturel tandis que le développeur souhaite un format strict directement exploitable techniquement. L'usage d'un calendrier est souvent une solution satisfaisante mais elle est parfois inapplicable notamment en cas de date relative, par exemple "le 3e jeudi du mois".

Heureusement avec un peu d'astuce et l'aide de PHP, il est possible de facilement extraire une date technique d'une phrase naturelle comme le montre un article du blog Enavu.

Find my Xdebug download wizard

Xdebug est un excellent outil mais il est parfois difficile à mettre en œuvre, notamment sur Windows. Pour remédier à cela, Son auteur, Derick Rethans, propose dorénavant un outil qui analyse votre phpinfo() et vous préconise les actions à mener pour le configurer selon le système d'exploitation.

Regex Clinic on Slideshare

Les expressions rationnelles, abusivement appelées expressions régulières, sont aussi puissantes que déroutantes à prendre en main. Heureusement, Andrei Zmievski, qui a présenté une session sur le sujet dans de nombreuses conférences à travers le monde, vient de publier sur Slideshare une version étendue de ses supports. Une lecture indispensable pour apprendre ou se perfectionner !

Tutoriels JMeter

Cette semaine l'article bonus est en réalité une liste d'articles traitant en détails de l'utilisation de JMeter pour faire des tests de charge.

11mai/100

2 000 téléchargements pour le livre blanc Industrialisation PHP

A peine 6 mois après sa publication, le livre blanc Industrialisation PHP vient de franchir la barre des 2 000 téléchargements. Ce chiffre important montre l'intérêt actuel des entreprises pour les problématiques d'industrialisation des développements PHP.

En près de 60 pages, ce livre blanc dresse un panorama des outils et des méthodes qu'il est possible de mettre en place au sein d'une entreprise pour produire des projet de qualité en respectant à la fois les délais et le budget. Quelque soit le degré d'avancement des procédures d'industrialisation dans votre entreprise, vous trouverez probablement dans ce livre blanc des éléments pour améliorer vos pratiques.

Pour fêter l'évènement, nous travaillons actuellement sur une version remaniée qui tiendra compte des remarques qui nous ont été faites et apportera quelques compléments notamment au niveau des outils. Par ailleurs, des illustrations supplémentaires et une bibliographie plus fournie seront également au menu de cette nouvelle édition qui devrait sortir avant l'été.

10mai/100

Annonce de l’édition 2010 des PHP Days

L'édition 2010 des PHP Days a été annoncée par Alter Way Formation il y a quelques jours. Cette année, l'accent sera mis sur l'industrialisation de PHP. Damien et moi auront la joie de présenter plusieurs sessions sur ce thème aux côté de notre collègue Julien Pauli.

L'évènement, qui se déroulera les 8 et 9 juillet prochains à Paris,  est composé de 4 sessions d'une demi-journée :

  • Panorama de l''industrialisation de PHP
  • L'environnement de travail
  • Les bonnes pratiques de programmation
  • Gestion de projet et méthodes

Les inscriptions se font sur le site de PHP Days.