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.
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.
Revue de presse Industrialisation PHP de la semaine 24 (2010)
C'est totalement involontaire mais l'actualité fait que la revue de presse de la semaine passée est placée sous le signe des gestionnaires de version.
Pourquoi vous ne devriez pas utiliser la Fork Queue de GitHub
Git est en train de révolutionner le développement collaboratif et plus particulièrement le développement Open Source notamment grâce à GitHub. Contribuer à un projet revient à créer sa propre copie du projet, effectuer ses modifications puis demander au responsable du projet de les intégrer dans le dépôt officiel. Le processus est simple à décrire mais pas forcément facile à maîtriser. Heureusement, Damien Mathieu explique en détails comment faire sur son blog.
Keeping Hudson configuration and data in SVN
Hudson est un outil d'intégration continue issu du monde Java. Bien que relativement simple à mettre en œuvre, lorsqu'on a passé beaucoup de temps ) peaufiner la configuration jusque dans le détail, il est frustrant de la perdre à cause d'un bête problème de maintenance du serveur. La solution que préconise Mike Rooney pour éviter ce genre de désagrément est de sauvegarder automatiquement les fichiers importants dans un dépôt Subversion.
Zoning, wireframe, maquettage, prototype ... : les meilleures pratiques
Certains ont la mauvaise habitude de commencer un projet par la réalisation de maquettes graphiques. En faisant cela, ils mélangent deux étapes très différentes : la conception ergonomique et la création graphique. Commencer par la création graphique amène inévitablement à se concentrer sur la forme au détriment du fond. Il est donc impératif de commencer par construire son interface avant de l'habiller graphiquement.
Introducing Subversion Edge
Subversion a conquis beaucoup de sociétés mais certains le trouvent encore difficile à mettre en place et souhaiteraient une application prête à l'emploi. C'est aujourd'hui possible grâce à Subversion Edge, un logiciel libre édité par CollabNet. Ce dernier propose une intégration d'Apache, Subversion et ViewVC dans une pile très simple à installer. Celle-ci est disponible pour Windows et Linux.
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.
Forum PHP 2010 : Appel à conférencier
L'édition 2010 du Forum PHP sera très spéciale car on y fêtera à la fois les 15 ans de PHP et les 10 ans de l'AFUP.
Cette année, les thèmes particulièrement mis en avant seront les suivants :
- PHP de A à Z: Débuter en PHP, Réussir un projet avec PHP, Choisir son hébergement ;
- Outils basés sur PHP: CMS et CMF, outils de e-commerce et de business, paiement en ligne, CRM et ERP ;
- Industrialisation de PHP: Performances, tests, authentification centralisée, frameworks ;
- Technologies autour de PHP: Javascript, HTML 5, microformats.
Vous êtes expert dans un domaine, vous avez installé une ou plusieurs applications PHP (CMS, e-commerce, CRM, GED) dans un contexte spécifique (forte charge, client reconnu, projet innovant) ou bien vous participez à un projet Open Source lié à PHP, venez partager votre expérience !
Vous pouvez soumettre vos candidatures avant le 30 juin sur le site de l'AFUP.
Revue de presse Industrialisation PHP de la semaine 22 (2010)
Comme chaque fin de semaine, voici ma sélection d'articles traitant d'industrialisation de PHP au sens large.
Building XQuery-powered applications with PHP and Zorba
XQuery est un langage de requête qui permet d'extraire des informations d'un document XML. Il s'apparente à ce qu'est SQL pour une base de données. Encore assez confidentiel, ce langage prend de plus en plus d'importance et cet article publié sur le site DeveloperWorks d'IBM montre comment l'exploiter avec PHP au travers de Zorba, un exécuteur de requêtes XQuery.
Vim for Programmers on Slideshare
Parmi les développeurs deux clans s'affrontent souvent : les fans de VIM et les gens normaux
. Je ne fais pas partie du premier groupe (et pas non plus du second diront certains) mais les fans de VIM sont suffisamment nombreux pour qu'on ne les ignore pas.
Certains sont d'ailleurs célèbres dans le monde PHP comme Andrei Zmievski, entre autre contributeur de PHP, Smarty et PHP-GTK, qui donne depuis quelques temps maintenant une conférence sur l'usage de VIM pour les développeurs PHP. Il partage aujourd'hui à la fois les slides de sa conférence dans une version étendue et les fichiers de configuration qu'il utilise au quotidien.
10 Reasons to Write Unit Tests
Les tests unitaires sont malheureusement souvent vus comme une perte de temps. Anna Filina liste 10 très bonnes raisons d'écrire des tests unitaires. Un argumentaire à utiliser lors de votre prochaine réunion de suivi de projet.
Développer en équipe
Martin Supiot détaille les éléments à mettre en place pour faciliter le développement en équipe, notamment quand certains se trouvent à distance.
Tenir une réunion technique hebdomadaire
Il y a de nombreuses réunions qui jalonnent le calendrier de travail, mais je remarque de plus en plus qu'il en manque une principale : la réunion technique. Réfléchissez un instant, à quand remonte la dernière rencontre technique que vous avez faite sur votre projet actuel ? Au mois dernier ? A l'an dernier ? Jamais, le plus souvent.
Comment se fait-il que l'équipe technique ne se réunisse qu'exceptionnellement pour parler de ce qui fait son quotidien : programmer. Les raisons affluent alors immédiatement à l'esprit : on n’a pas le temps, le chef n'a rien organisé, ce n'est pas productif, on n’est jamais tous là, on n’y a pas pensé. Mettons que si vous avez commencé à lire cet article, le dernier point n'est déjà plus recevable : vous êtes maintenant en train d'y penser.
Dans une réunion technique, on reproduit ce qui est fait pour les autres aspects du projet, mais cette fois-ci, concentré sur des points techniques. Cela s'organise très bien tout seul d'ailleurs : actualité des technologies (PHP a sorti une nouvelle version), retour d'expérience (j'ai utilisé Git, c'est super), dossier approfondi (on va voir ensemble comment écrire un test unitaire), revue de code ou de conception, problèmes qui se profilent. Les sujets ne manquent pas.
Le plus important de la réunion est de traiter des points de fond, indépendamment de la production. C'est le cadre idéal pour débattre de la conception, ou réfléchir à la manière dont les espaces de noms vont pouvoir être utilisés dans les développements actuels. Pas de décision immédiate, pas d'obligation à produire : notez combien cela change de ces "discussions techniques", faites avec une fesse sur le coin d'un bureau, qui se terminent toujours par des décisions unilatérales, sous contrainte de production.
Durant la réunion, c'est le moment de laisser chacun expliquer pourquoi il préfère les constructeurs aux usines d'objets (et vice-versa), ou faire une démonstration de tests unitaires. Une telle réunion permet d'élever le niveau de jeu de tous les intervenants, et de souder les membres de l'équipe : le travail en entreprise a fortement tendance à cloisonner les développeurs dans des tâches parallèles : c'est bien connu, les parallèles ne se rencontrent jamais.
Pour réussir cette réunion, voici quelques suggestions :
- Placez-la à un moment de la semaine, moins chargé. Vendredi après-midi par exemple (quand on ne fait plus de mise en production) mais si vous avez un pic de trafic ce soir-là, placez-la mercredi matin.
- 1 heure suffit : indiquez aux participants les horaires exacts, et soyez précis dans leur application. Pas besoin de faire trop long, il faut garder les intervenants concentrés. De plus, il est facile de trouver une heure par semaine.
- Soyez réguliers : il vaut mieux tenir la réunion, et la faire courte. L'important ici est de prendre l'habitude.
- Nommez un secrétaire pour noter l'ordre du jour, et les minutes importantes. Cela permet de garder une trace. Cela permet aussi d'écarter les remarques ridicules du genre : c'est une perte de temps. Désormais, on peut baptiser la réunion "veille technologique" ou "formation".
- Étendez la réunion à l'ensemble des développeurs de l'entreprise : vous pouvez commencer par votre équipe, mais n'hésitez pas à faire venir les développeurs des autres services/projets. Cela élève le niveau de compétences de tous.
- Vous n'avez pas besoin d'autorisation de toute votre hiérarchie pour tenir ce type de réunion. Et ce n'est pas uniquement le chef de projet ou le gourou qui peut proposer ces réunions : il faut surtout quelqu'un qui sache trouver la bonne salle.
Une réunion technique régulière porte rapidement ses fruits en termes d'esprit d'équipe et de connivence de développement. Et vous pouvez même apporter les croissants si vous voulez ou fêter les 15 ans de PHP.

