Industrialisation PHP

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.

21mai/103

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

De par sa nature adaptative, PHP est une technologie qui est rarement isolée. Quand j'interviens chez mes clients en tant que "consultant PHP", je ne me cantonne que rarement à PHP. Les problèmes touchent la plupart du temps également la base de données, le système d'exploitation ou encore les technologies clients. Bref pour bien faire du PHP, il ne faut pas faire que du PHP.

C'est pour quoi j'ai décidé d'élargir la thématique de cette revue de presse aux domaines qui ne se rapportent pas strictement à PHP mais qui sont utiles dans le cadre de son industrialisation.

Par ailleurs, je ne vais plus seulement me limiter aux articles de blogs. Je parlerai dorénavant également d'outils.

Voici donc la première édition de cette revue de presse élargie.

asql

L'analyse des fichiers de log d'Apache est une mine d'or pour comprendre les problèmes rencontrés par une application PHP. Malheureusement, la plupart des outils qui permettent de l'analyser sont orientés statistiques de fréquentation et l'analyse manuelle de ces fichiers est fastidieuse.

Steve Kemp a eu l'idée géniale de parser un fichier de log, de le mettre en base de données et de permettre ensuite de requêter dessus. Avec asql, vous avez à disposition toute la puissance de SQL pour analyser un fichier de log Apache.

Internet Explorer Collection

Internet Explorer a pousser une génération entière de développeur à la déprime mais nous devons encore trop souvent faire avec ce navigateur. Microsoft ayant eu la brillante idée de ne permettre l'installation qu'une d'une version à la fois sur un même poste, tester facilement une application avec plusieurs versions est assez compliqué.

Des outils comme Multiple IE, IE Tester ou encore IE4Linux nous ont permis de contourner cette limitation mais le premier n'est plus maintenu tandis que les deux autres sont incomplets et encore expérimentaux. Heureusement, il existe Internet Explorer Collection qui beaucoup plus exhaustif au niveau des versions d'Internet Explorer proposées et activement maintenu.

CloudFusion

Au delà d'être le nouveau buzzword à la mode, le cloud a radicalement changé notre approche de l'hébergement et de la gestion des ressources machines. Le problème est qu'il existe de nombreux fournisseurs avec chacun leur API. CloudFusion est une librairie PHP qui règle ce problème en proposant une abstraction de ces services ce qui permet  de changer de fournisseur sans trop impacter l'application. Pour le moment Amazon Web Services et Eucalyptus sont gérés.

FlockDB

Développée par Twitter pour ses besoins internes, FlockDB est une base de données distribuée de type graph. C'est à dire qu'au lieu de stocker des données selon un schéma relationnel, elle va stocker des nœuds ainsi que les liens qu'ils ont entre eux et le sens de ces derniers. Cela permet à Facebook de stocker de manière efficace les informations du type "Paul aime le statut de Pierre". FlockDB a été conçu pour être performant et facilement scalable horizontalement.

Pagetest

De nombreuses études l'ont montré : la vitesse d'affichage d'une application web impacte directement l'opinion qu'en ont ses utilisateurs. Dans le cas d'une application commerciale, cela se répercute donc directement sur le chiffre d'affaire. Il est donc primordial de vérifier les performances de l'application dans ce domaine.

Pour cela, il existe par exemple des extensions Firefox comme YSlow ou Page Speed mais celles-ci ne proposent qu'un diagnostique et des recommandations, ce qui est déjà pas mal reconnaissont le. Le site Pagetest propose en plus des fonctionnalités comme le choix du lieu d'où sera effectué le test, le navigateur utilisé, le type de connexion à internet et même  la visualisation au ralenti du rendu des pages afin de mieux comprendre comme travaille le navigateur. Avec cette fonctionnalité, il est possible de comparer visuellement le rendu de plusieurs sites. C'est assez bluffant.

Top 10 Motivation Boosters and Procrastination Killers

Enfin, Lifehacker, une excellente ressource de tout et n'importe quoi soit dit en passant, propose une liste de 10 astuces pour se motiver et éviter la procrastination, un mal dont beaucoup d'entre nous souffrent.

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.

7mai/100

Revue de presse PHP de la semaine 18 (2010)

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.

5mai/102

Etre un héros c’est bon pour les films

Le projet prend du retard. La date de livraison approche à grands pas. A ce rythme là, vous ne serez pas prêt et décidez d'allonger vos journées de travail. Rapidement, celles-ci se transforment plutôt en nuits de travail. Vous êtes éreinté mais le projet est livré en temps et en heure. Vos responsables et votre client sont satisfaits et un agréable sentiment de fierté vous emplit : vous êtes un héros !

Pourtant à y regarder de plus prêt votre action était-elle si héroïque que cela ? Tout a un prix et vos longues heures de travail nocturne vous ont mis les batteries à plat. Le stress engendré par la crainte de l'échec n'a rien arrangé à cela, au contraire. Bien entendu, l'euphorie d'avoir sauvé la situation vient momentanément compenser cela mais qu'en est-il sur le long terme ? Vos efforts vont plomber les jours suivants le temps de vous refaire une santé. Il faut vous rendre à l'évidence : vous ne pourrez pas toujours sauver la situation en agissant ainsi.

Agir en héros et réussir à sauver une situation mal engagée est toujours gratifiant et généralement valorisé par votre encadrement mais n'est-ce pas une manière désespérée de pallier à des problèmes plus profonds ?

Ce temps dont vous avez manqué pour terminer le projet à un rythme confortable n'est-il pas dû à une mauvaise estimation des tâches ou à des problèmes imprévus ? Dans ce cas, quelque chose qui était pertinent s'il fallait deux heures pour le faire l'est-il toujours si vous y avez passé deux jours, et cela même si au final cela fonctionne ? Il faut essayer de prendre du recul. Il est souvent préférable de revoir ses priorités plutôt que de laisser une tâche déborder de manière trop importante.

Une tâche peut généralement être modifiée ou simplifiée sans que cela n'impacte de manière significative le projet. Il est également possible avec la pression que vous subissez que vous soyez tout simplement en train de passer à côté d'une solution astucieuse. Les héros ne sont solitaires que dans les bandes dessinées. Quand vous vous sentez bloqué, demandez l'avis de vos collègues. Des yeux neufs verront probablement des choses que vous ne voyez plus avec l'habitude.

Il arrive même que la bonne solution soit d'abandonner purement et simplement la tâche. Cela ne fait jamais plaisir de faire un trait sur les efforts déjà effectué mais c'est parfois la chose la plus raisonnable à faire.

Il arrive également que la cause du problème soit un manque de méthodologie ou d'outillage de l'équipe. Dans ce cas, être un héros ne fait que masquer le problème. Il vaut mieux alors l'attaquer à la base en identifiant et en éliminant ses causes.

Le sentiment de fierté et d'importance que l'on ressent lorsqu'on a été le héros d'un projet est très agréable mais il est dangereux aussi bien pour soi que pour son équipe. Laissez donc les héros au cinéma et mettez en place un rythme de travail raisonnable au sein de votre équipe. Tout le monde y trouvera son compte.