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.
Se fixer un but pour garder le cap
Après quelques décennies passées à suivre des procédures formelles et lourdes, l'heure est aux méthodes agiles qui prônent la supériorité du pragmatisme sur le dogmatisme.
Je suis personnellement convaincu du bien-fondé des approches agiles. Plutôt que de viser un idéal impossible à atteindre, elles préconisent de constamment revoir sa copie et de s'adapter au mieux aux circonstances afin que le projet colle le plus possible au besoin réel et non au besoin exprimé ou pire encore : au besoin imaginé.
Il arrive que les nouveaux pratiquants pensent à tort que les méthodes agiles s'apparentent à la trop célèbre méthode La Rache. Même si elles sont moins contraignantes que les méthodes dites traditionnelles, les méthodes agiles proposent chacune un formalisme.
Au-delà de la méthode choisie, il me semble important de ne jamais perdre de vue le but du projet. Pour cela Tom Preston-Werner a imaginé une méthode originale et tout à fait intéressante : le Readme Driven Development. Il préconise de toujours commencer un projet par la rédaction de son fichier README. Ce fichier est traditionnellement inclus dans la distribution d'un programme afin d'en expliquer l'usage.
Rédiger ce document avant toute autre chose permet d'éviter de se jeter tête baissée dans le développement avec le risque que ce soit lui qui induise la direction que prendra le projet. Il faut au contraire que le code ne soit qu'un instrument destiné à atteindre un but. En se mettant à la place de l'utilisateur final dès le début, on privilégie l'usage et non le développement du produit.
Par ailleurs, si de nouveaux développeurs viennent étoffer l'équipe ou s'il faut expliquer le but de l'application à quelqu'un d'extérieur, ce document sera une bonne base de travail.
Parfois, le produit n'est pas vraiment une application destinée à un utilisateur final mais plutôt une librairie qu'utiliseront d'autres développeurs pour construire une application. Dans ce cas là, j'ai pris pour habitude de commencer par concevoir les exemples d'utilisation.
Ainsi, je peux voir si l'usage est simple et logique. Généralement, je fais plusieurs modifications radicales avant d'arriver à quelque chose qui me satisfasse pleinement. L'avantage de cette approche est que les classes n'étant pas encore implémentées, le coût de refactorisation du code à ce stade est quasiment nul.
Cette approche très simple à mettre en œuvre permet de concevoir une librairie idéale sans se laisser influencer par d'éventuels raccourcis que l'on utilise parfois pour se faciliter la programmation mais qui vont compliquer l'usage ultérieur de la librairie.
Cela se rapproche de la philosophie du Test Driven Development mais sans s'encombrer, pour le moment, du framework de tests unitaires. Le but est de prototyper l'usage de la future libraire de la manière la plus souple possible.
Et vous, utilisez-vous une méthode personnelle pour conserver le cap lors de vos développements ?
Readme Driven Development
Revue de presse Industrialisation PHP des semaines 27 à 31 (2010)
Au milieu de l'été voici une revue de presse rédigée à 10 000 mètres d'altitude dans l'avion qui me ramène vers la France après deux semaines de vacances salutaires.
HipHop PHP -- some guidance for programmers
Il y a quelques mois, la publication par Facebook de Hip Hop for PHP a eu un retentissement énorme. Certains y ont vu le futur de PHP, d'autres un simple jouet destiné à une frange infime des utilisateurs de PHP. L'outil commence à être utilisé çà et là et OC Portal vient de publier le premier retour d'expérience d'une autre société autre que Facebook utilisant Hip Hop for PHP en production. On y retrouve des conseils pour effectuer sans douleur ses premiers pas ainsi qu'un panorama des solutions alternatives.
Velocity: Forcing Gzip Compression
Steve Souders est un spécialiste des performances des applications web. Auteur de YSlow, la célèbre extension pour Firefox, lorsqu'il était chez Yahoo!, Steve occupe maintenant un poste de responsable des performances web chez Google et continue ses recherches dans le domaines.
Il traite aujourd'hui du problème des clients web qui ne spécifient pas pouvoir recevoir un contenu compressé alors qu'ils en ont la capacité. Plusieurs raisons peuvent amener à ce problème mais celui-ci est désormais contournable grâce à l'astuce dévoilée dans cet article.
Storing Date/Times in Databases
La gestion des dates est un problème qui semble simple au premier abord mais qui ne cesse ensuite de dévoiler des cas particuliers et des subtilités inattendues. Derick Rethans, qui a écrit un livre sur ce sujet, aborde cette fois le stockage de dates dans une base de données et ce n'est pas aussi simple que ça en à l'air.
A Beginner’s Guide to Design Patterns
Les design patterns sont trop rarement utilisés. Parfois par ignorance de leur existence, mais également parfois par difficulté à les comprendre et à les implémenter. Nettuts+ propose un article didactique sur le sujet pour débuter du bon pied.
Les utilisateurs ont-ils confiance en l’avenir de PHP
Le désormais incontournable Frédéric Hardy a eu une idée intéressante : demander à 5 utilisateurs français de PHP de répondre à un questionnaire sur la manière dont ils voient l'avenir de PHP.
Ces interviews, toutes basées sur le même modèle, ont réalisées avec le concours de gens connus ou moins connus, professionnels ou étudiants, consultants ou développeurs :
La confrontation de ces points de vue est très intéressante … et je ne dis pas cela uniquement parce que j'ai eu la chance que Frédéric me demande de m'exprimer sur le sujet.
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.
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.

