Industrialisation PHP

24sept/100

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.

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.

8avr/100

Revue de presse PHP de la semaine 14 (2010)

Après une (trop) longue interruption, je reprends ma revue de presse hebdomadaire du monde PHP mais cette fois sur ce blog et non plus sur mon blog personnel.

Le but est de vous proposer une sélection d'articles traitant de PHP au sens large, c'est à dire incluant éventuellement les technologies associées. Ces articles seront principalement tirés de la partie "Lecture" située dans la barre de droite de ce blog mais au lieu de simplement donner un lien, je résumerai le contenu de l'article afin d'expliquer ce que je trouve intéressant dedans. Le nombre d'articles proposés variera en fonction de l'actualité.

Comme toute sélection celle-ci sera nécessairement subjective mais je m'efforcerai de piocher dans ma veille personnelle des articles pertinents pour le plus grand nombre.

Enfin, lorsque l'occasion s'en présentera, j'essaierai d'ajouter un article qui ne sera pas directement lié au monde PHP mais qui mérite d'être lu.

Trêve de bavardage, passons à la revue de presse de la semaine.

Mort de PHP6 + 20 jours

L'actualité récente de PHP a été assez tumultueuse concernant les futures versions. Certains développeurs considèrent que la marche actuelle vers PHP 6 n'est pas la bonne et qu'il faut changer de méthode afin de sortir de l'enlisement actuel.

A la suite de son premier bilan, Frédéric Hardy propose un résumé circonstancié 20 jours après le début de ces discussions animées sur l'avenir de PHP et les actions menées depuis lors.

A Primer for PHP 5.3's New Language Features

Au cours du travail préliminaire sur la version 2.0 de Zend Framework, Matthew Weier O'Phinney et son équipe se sont penchés sur les nouvelles fonctionnalités de PHP 5.3. Leurs découvertes montrent des cas d'usage des namespaces, des closures et la méthode magique __invoke().

Cet article pointe également les limites de ces nouvelles fonctionnalités et certains aspects contre-intuitifs lorsqu'on les découvre.

Don't reinvent the wheel ... invent the car !

Sous ce titre anglophone se cache un très bon article d'olivier Hoareau qui gratte là où ça fait mal. Il s'attache à démonter les discours faciles sur la mise en place de bonnes pratiques de développement, en particulier sur l'usage d'un framework.

On rencontre souvent des discours creux ponctués de mots-clés mais en poussant un peu plus loin la discussion, on découvre généralement que les bonnes pratiques affichées cachent un manque de maîtrise des outils et des méthodologies voire de PHP lui-même.

Introducing phpfarm

Tester son code avec différentes versions de PHP est souvent compliqué. Pour la librairie PEAR et ses très nombreux paquets c'est un réel problème. Heureusement, une solution simple à mettre en œuvre est désormais disponible grâce à phpfarm.

Cet outil permet d'installer simplement de nombreuses versions de PHP pour un usage en ligne de commande ce qui est suffisant pour lancer des tests unitaires. Il est également possible d'utiliser ces versions de PHP avec Apache via CGI. Les possibilités offertes sont énormes.

Neural Networks in PHP

Les réseaux neuronaux sont un concept récent qui vise à reproduire le fonctionnement du cerveau pour traiter des données. L'avantage de ce système c'est qu'il est adaptatif et peut apprendre de ses échecs. Une application neuronale sera donc théoriquement capable d'améliorer ses résultats avec le temps.

Le blog du site PHP Classes explique la théorie des réseaux neuronaux et propose un exemple d'implémentation avec le framework Neural Mesh.

How MySpace Tested Their Live Site with 1 Million Concurrent Users

MySpace n'est pas une société comme les autres. La preuve, pour tester la tenue à la charge de son site en vue de l'introduction d'une nouvelle fonctionnalité elle a mis en place 800 machines virtuelles Amazon EC2 afin de simuler 1 000 000 d'utilisateurs concurrents.

Vous n'aurez sans doute jamais besoin de tester une telle charge mais l'idée d'utiliser le Cloud pour simuler rapidement un afflux massif de visiteurs est intéressante.