Revue de presse Industrialisation PHP de la semaine 51 (2010)
En cette veille de Noël, voici la revue de presse de la semaine.
Autoloader PHP Universel – Jouons avec les Patterns
J'aime beaucoup les design patterns et j'essaie dès que je le peux d'en promouvoir l'usage. L'un des freins que je rencontre souvent est la difficulté à les mettre en œuvre dans un cas d'utilisation concret lorsqu'on débute. Grâce à Gérald Croës, j'ai désormais un exemple d'autoloader combinant plusieurs design patterns.
How test automation with Selenium or Watir can fail
Les tests automatisés permettent d'encadrer la maintenance d'une application et d'identifier immédiatement toute régression. Malheureusement, il n'est pas toujours facile, au moins au début, d'écrire des tests pertinents. Deux erreurs courantes sont d'écrire des tests complexes qui reproduisent des comportements similaires à ceux de l'application et de mettre en place une navigation importante avant d'arriver à l'élément à tester.
Arrêter d'interdire des adresses de courrier légales
Tester la validité d'une adresse mail est une tâche aussi récurrente que difficile à effectuer correctement. Stéphane Bortzmeyer nous aide à y voir plus clair.
Setting up Hudson for PHP Projects in 15 minutes
Hudson est un outil d'intégration continue qui a deux gros atouts : il possède une importante liste de plugins qui permettent de l'intégrer facilement dans un système d'information et il est facile à mettre en œuvre, ce qui en fait une excellente alternative à phpUnderControl.
HTG Explains: Which Linux File System Should You Choose?
Lorsqu'on prépare un nouveau serveur Unix, rare sont ceux qui se soucient du système de fichiers utilisé. Pourtant ce choix peut apporter des gains de performances et de sécurité des données pour certains usages.
Bonnes fêtes à toutes et à tous !
Revue de presse Industrialisation PHP de la semaine 49 (2010)
Après quelques semaines d'absence pour cause de vacances puis de préparation du Forum PHP 2010 et enfin de grosse charge de travail ces dernières semaines, la revue de presse reprend son rythme habituel. Pour de bon, je l'espère !
Top-5 certifications for every PHP programmer
Joshua Thijssen s'est lancé un défi étonnant cette année : passer 12 certifications techniques. Il vient de terminer son dernier examen et partage avec nous son expérience en listant les 5 certifications qui, selon lui, sont les plus utiles pour un développeur PHP.
Real-life example of Closure usage with PHP5.3
Les closures, ou fonctions anonymes, sont une fonctionnalité récente de PHP. Le principe est intéressant mais par manque d'habitude on est parfois bien en peine pour leur trouver un usage concret. Gonzalo Ayuso nous propose de les utiliser pour effectuer des calculs dynamiques sur des données, travail souvent demandé au SQL.
PHP Code review checklist
Ceux qui ont vu ma conférence sur les revues de code au Forum PHP, m'ont entendu parler de l'importance des checklists dans la phase préparatoire. Voici une proposition de liste de ce type. Certains points sont discutables mais c'est une bonne base pour construire son propre référentiel.
PHP Commit Hooks
Stocker ses développements dans des dépôts Subversion est une bonne pratique mais elle ne doit pas s'arrêter là. Il convient également de s'assurer que la qualité des commits. Subversion propose un mécanisme de hooks qui permettent d'effectuer des traitement à différentes étapes de la vie du dépôt. L'outil PHP Commit Hooks propose de mettre facilement en place des hooks de pre et de post commit pour effectuer certaines actions comme s'assurer de la présence d'un message de commit, valider la syntaxe des fichiers ou vérifier l'application des conventions de codage.
Profiling with XHGui
Xdebug est un excellent outil pour profiler du code lors de la phase de développement mais il est trop gourmand en ressources pour être utilisé en production. Facebook a développé pour son propre usage XHProf, et son interface de visualisation XHGui, qui permet d'avoir une vision claire des performances d'une application en production. Ces outils sont à présent disponibles pour tous.
Revue de presse Industrialisation PHP de la semaine 40 (2010)
Understanding APC
APC est une extension PHP qui est à la fois un cache d'OPCode et un cache de données utilisateur. Le blog TechPortal explique son fonctionnement, le compare avec memcached et propose des clés pour déterminer quand choisir l'un ou l'autre.
Zend Framework app's PHPUnit suite 3x faster
Zend a choisi PHPUnit comme outil de tests unitaires pour son framework. Leur bonne intégration, notamment grâce à Zend_test, facilite beaucoup les tests d'application développées avec Zend Framework. Cependant, les tests touchant à la base de données restent lents à cause des vidages de tables après chaque test. Olek Janiszewski propose une solution ingénieuse à ce problème : utiliser des transactions et faire systématiquement un rollback après le test unitaire.
Créer une autorité de certification et des certificats SSL auto-signés
Utiliser des certificats SSL est très important pour améliorer la sécurité des applications web. Cependant, ceux-ci coûtent souvent cher. Il peut donc être intéressant de créer ses propres certificats lorsque cela est possible, notamment dans le cas d'un usage interne à une organisation.
Bugfixes without Tests are Anti-fixes
Dans un court article, Dan Ackerson rappelle a juste titre qu'une correction de bogue sans test revient à faire un pari dangeureux. On ne peut être sûr que le remède n'est pas pire que le mal et que ce bogue ne réapparaîtra pas plus tard. C'est d'ailleurs une des choses que les utilisateurs détestent le plus : ils ne comprennent pas comment un problème corrigé peut survenir à nouveau.
Examine All HTTP/HTTPS Traffic on Windows with Fiddler2
Bien que discret, le protocole HTTP est l'élément indispensable au fonctionnement des applications web. Il est parfois nécessaire d'étudier le détail des échanges HTTP pour débusquer l'origine d''un problème. Pour cela il existe des outils que l'on appelle proxies de développement. Comme leur nom l'indique, ils se placent entre le client HTTP, généralement le navigateur mais pas seulement, et le serveur HTTP analysant tout ce qui transite. Parmi les logiciels gratuits disponibles sur Windows, on trouve Fiddler2 dont parle le blog Coding This dans un article récent.
The story of one MySQL Upgrade
Cette semaine, le blog MySQL Performance, nous conte par le détail le déroulement d'une mise à jour périlleuse d'un serveur MySQL. On y apprend les étapes définies et les outils utilisés.
Revue de presse Industrialisation PHP de la semaine 39 (2010)
Voici, avec un peu de retard, la revue de presse de la semaine passée.
tron - Centralized Scheduling
Nous avons régulièrement besoin de planifier des tâches récurrentes comme extraire des données statistiques, produire un rapport ou invalider un cache. Parfois, ces tâches sont en réalités composées de sous-tâches qui dépendent les unes des autres. Chacune d'entre-elles pouvant prendre un temps inconnu. Optimiser tout cela devient rapidement compliqué. Le site Yelp est confronté à cela et a conçu un outil pour répondre à ce besoin : tron. Une sorte de cron distribué mélangé à un ant.
Tester unitairement, ce n'est pas tester une seule fois !
Il est parfois difficile de faire comprendre l'intérêt des test unitaires, particulièrement à quelqu'un qui n'a pas de connaissances techniques. Il y a beaucoup de mythes et d'idées préconçues à combattre pour les faire adopter. Gauthier Delamarre a récemment publié un billet sur son blog qui est une excellente base pour un construire un argumentaire en faveur des tests unitaires.
Outils d’analyse de requêtes lentes – mk-query-digest
MySQL propose depuis longtemps un mécanisme pour journaliser les requêtes lentes mais son exploitation reste difficile sans un outil adapté. Le blog dbnewz montre comment utiliser mk-query-digest, l'un des nombreux outils de Maatkit, que je vous recommande chaudement soit dit en passant.
Git et Mercurial: avant tout de bons outils de merge !
Le raz de marée des dépôts de code décentralisés ne semble pas vouloir s'arrêter mais il est parfois difficile de s'y retrouver parmi les nouveaux arrivants. Afin de mieux les connaître, OCTO publie un article synthétisant le mode de fonctionnement interne des trois principaux outils du domaine : Git, Mercurial et Bazaar.
Facebook and Site Failures Caused by Complex, Weakly Interacting, Layered Systems
Le site High Scalability revient sur l'incident qui est arrivé à Facebook le 24 septembre et qui a entraîné la coupure totale du site pendant 2h30. Il montre pourquoi les systèmes en couches, bien que très efficaces pour la tenue à la charge, sont complexes à maintenir.
Map Reduce: A really simple introduction
Si vous vous êtes déjà intéressé au traitement de très gros volume de données, vous avez sans doute entendu parler de Map/Reduce, un concept théorisé et mis en œuvre par Google pour ses besoins internes. Cependant, son usage ne se limite pas au géant américain. Par exemple, CouchDb utilise également cette approche pour manipuler ses données. Cette méthode est très puissante mais pas forcément facile à comprendre au début. Heureusement, Kaushik Sathupadi nous propose une explication simple de la chose.
Revue de presse Industrialisation PHP des semaines 32 à 38 (2010)
Maintenant que l'été est derrière nous, il est temps de reprendre nos revues de presse hebdomadaires. Cette revue de rentrée va traiter de ce qui c'est dit d'intéressant depuis le début du mois d'août.
Apache 2, Cherokee, LigHTTPd, Nginx Benchmarked with Static Files, PHP5 Script and WordPress
La guerre des serveur HTTP est déclarée depuis longtemps entre l'omniprésent Apache et son outsider LigHTTPD. Depuis quelques temps cependant, de nouveaux venus ont fait leur apparition. Parmi eux, Nginx et Cherokee.
Leur panoplie fonctionnelle est encore loin de faire de l'ombre à Apache mais leurs qualités se trouvent plutôt sur le terrain des performances. Il était temps de les comparer sur 3 usages (affichage de fichiers statiques, de scripts PHP simples et d'un blog WordPress) pour y voir plus clair.
java, le papy du web : sa pertinence hier, aujourd’hui, et demain
Une fois n'est pas coutume, je vais vous parler d'un article sur Java. On parle beaucoup de l'avenir de PHP mais ses concurrents ont également leurs péripéties. Il est intéressant de voir comment Java s'est construit et comment il évolue.
Forget Concatenation; Format your strings!
Des études ont montré que jusqu'à 70% du temps passé à travailler sur un morceau de code est dévolu à sa maintenance. Il est donc primordial que celui-ci soit clair et lisible. La concaténation de données complexes met souvent à mal ce but. La solution est souvent de privilégier le formatage.
Les interfaces, c'est bon, mangez-en !
Les interfaces sont probablement la fonctionnalité la plus sous-utilisée par les développeurs PHP de la Programmation Orientée Objet. Elles permettent pourtant de créer du code structuré mais découplé.
Exception Best Practices in PHP 5.3
Dans la série des concepts de la Programmation Orientée Objet sous-utilisés par les développeurs PHP, le second sur la liste me semble être les exceptions. Elles sont présentes dans le langage depuis la version 5.0, qui est sortie il y a 6 ans déjà, mais il est encore peu courant d'en voir un usage intensif et efficace dans le code rencontré. Ralph Shindler explique comment les utiliser au mieux et tirer parti des nouveautés introduites dans PHP 5.3.
Raw vs. cooked PHP $_POST variables
L'une des forces de PHP tient aux multiples petits détails destinés à faciliter la vie d'un développeur. Il arrive cependant que le côté magique de ces fonctionnalités puisse être déroutant si on n'en connaît pas le mécanisme interne. C'est notamment le cas de la gestion des champs de formulaire dont le nom se termine par "[]". PHP les interprète comment étant des tableaux mais ce n'est pas ce que dit HTTP, d'où parfois des confusions.
Things I learnt tracking a billion events in 24 hours
L'équipe de Playtomic, un outil analytique destiné aux éditeurs de jeux flash, doit quotidiennement faire face à une forte charge sur ses serveurs. Dans un article récent, ils nous font part des leçons apprises dans la gestion de cette situation.
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.
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.
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.

