• L'équipe de développement du site Facebook.com a publié, dans la nuit de mardi à mercredi, une nouvelle implémentation Open Source du langage PHP, baptisée Hip Hop. Conçue dans une optique d'améliorations des performances, celle-ci traduit en fait l'essentiel du code PHP en code C++, avant de le compiler à l'aide de g++.

    Le souci des performances



    La rumeur courait déjà depuis quelques semaines, à cause d'une interview d'un prétendu employé de Facebook. Dans l'article, l'ingénieur évoquait la sortie d'une version de PHP développée par Facebook même, visant à fournir de meilleures performances que l'implémentation de base du langage. Cependant, la présentation officielle de HipHop n'a été faite que cette semaine.

    L'ingénieur responsable de HipHop, Haiping Zhao, explique ainsi que le projet est vieux de quelques années. Facebook est majoritairement écrit en PHP, mais la version du langage couramment utilisée est peu performante, ce qui force les ingénieurs à recourir à d'autres langages. Ainsi, Facebook a utilisé ou utilise encore des technologies comme Java, Python (et le serveur Tornado), Erlang (utilisé pour le chat) ou même C++. Le site participe donc à un certain nombre de projets Open Source, dont il est parfois l'initiateur, comme pour la base de données Cassandra.

    Cependant, Zhao explique que 90 % du site reste écrit en PHP, car le langage permet selon lui de développer plus simplement et plus rapidement de nouvelles fonctionnalités, sans compter qu'utiliser une autre technologie implique d'écrire un code "glu" en PHP pour pouvoir l'utiliser sur le site. Dans le développement d'un projet web, les performances des pages ne sont pas un problème, du moins au début, car la principale préoccupation est la base de données.

    Mais le succès de Facebook le contraint à une forte charge (environ 350 millions d'utilisateurs, soit 400 milliards de pages vues par mois), ce qui oblige les programmeurs à recourir à des techniques de mise en cache et déplace le problème du côté du code des pages lui-même. De manière générale, les sites de la génération dite du "web 2.0" sont souvent soumis à de cruciales questions de performances, et l'implémentation officielle de PHP n'a pas été pensée pour des sites subissant une charge aussi massive.

    Un hyper-PHP



    Les ingénieurs avaient alors plusieurs choix possibles : réécrire tout le site dans un autre langage (ce qui aurait pris du temps), ou continuer à recourir à des technologies tierces comme C++ en se contentant d'écrire un "code glu" en PHP pour faire la liaison avec ce code. La troisième possibilité, celle qui a été retenue, était de rendre PHP plus rapide, afin d'alléger la charge des serveurs tout en conservant le confort d'utilisation du langage.

    D'autres projets plus anciens avaient déjà cet objectif. Par exemple, Roadsend ou PHC sont deux compilateurs qui génèrent du code C à partir d'un programme PHP, Quercus produit du code Java, etc. Mais l'équipe du projet a préféré lancer son propre compilateur, qui traduit en fait le code PHP en un code C++, en l'intégrant dans un serveur web écrit pour l'occasion.

    Image utilisateur
    Les étapes de la compilation
    Le fait que PHP ressemble syntaxiquement à C++ permet, selon Zhao, de traduire directement une partie du code. Cependant, HipHop ne s'arrête pas là : le compilateur doit analyser les dépendances de chaque fichier afin d'optimiser les appels de fonctions ou l'utilisation de variables. De plus, C++ étant un langage statique, le type des données doit être connu à la compilation, ce qui est réalisé par inférence de types : les types des variables ne sont pas déclarés comme ils le seraient en C++, mais déduits du contexte d'utilisation, comme le font des langages comme OCaml (par opposition, PHP ne détermine le type d'une variable qu'à l'exécution d'un programme). C'est ensuite le compilateur g++ qui est appelé pour convertir le code C++ en un programme utilisable.

    Naturellement, les fonctionnalités dynamiques de PHP (par exemple l'inclusion de code inconnu à la compilation, la fonction eval ou l'indirection de variables) sont incompatibles avec cette approche, mais, selon les auteurs du projet, leur utilisation n'est pas si fréquente que cela dans la majorité des sites, et l'essentiel du code de Facebook, par exemple, est compatible avec HipHop sans réécriture. Le projet est Open Source, publié sous la licence libre PHP, et accessible sur le site GitHub.

    Pour l'instant, HipHop fonctionne avec PHP 5.2. Les premiers objectifs de l'équipe sont le support de la version 5.3, ainsi que de permettre d'utiliser le serveur web Apache plutôt que celui qui a été développé pour l'occasion.

    Image utilisateur
    La présentation au public de HipHop


    Une approche efficace



    Selon Haiping Zhao, HipHop PHP est à l'oeuvre depuis déjà plus de 6 mois, et a permis de réduire la charge des serveurs de 50 %, ce qui permet d'économiser en matériel. Naturellement, il n'est d'aucune utilité pour résoudre les problèmes liées à une base de données, et ne remplacera pas, au sein de Facebook, l'utilisation de langages comme C++ ou Erlang. Il a cependant fait ses preuves, et son caractère Open Source permet à d'autres sites de l'utiliser, voire de l'améliorer.

    L'approche de Facebook, qui s'est contenté de fournir une nouvelle implémentation de PHP basée sur une technologie pré-existante (C++), est à comparer à celle de Google, qui conseille depuis quelques temps à ses ingénieurs de ne pas utiliser des langages de scripts comme Python, et a annoncé quelques mois plus tôt le langage Go, dont un des objectifs est de ne dépendre d'aucune autre technologie tout en étant efficace. Il ne fait aucun doute que les deux histoires apporteront beaucoup d'enseignements, car Facebook et Google ont en commun de proposer des sites web dont le nombre d'utilisateurs se compte en dizaines de millions.

    Liens divers


    • Les statistiques de Facebook, pour se faire une idée des contraintes.
    • L'annonce officielle de HipHop, par Haiping Zhao.
    • Une autre interview d'un responsable de Facebook, David Recordon. Il explique notamment pourquoi HipHop utilise son propre serveur web.
    • Un autre exemple de site soumis à des problèmes de performances : Youtube.com (Google) doit par exemple servir plus de 100 millions de vidéos par jour.

    Pour plus d'informations sur le sujet Facebook publie Hip Hop PHP, il vous est conseillé de lire la suite.


    votre commentaire
  • Conky permet de surveiller presque tous les paramètres systèmes, de la température du disque dur à la vitesse des ventilateurs en passant par la charge de la batterie. Mais ce n'est pas simplement un logiciel du style "Everest", il est bien plus que ça. Notamment en permettant un intégration sur le bureau, l'affichage de graphiques, la personnalisation du style et de toutes les variables que vous pourriez avoir envie d'afficher.

    En plus de cela, Conky est personnalisable à souhait !
    Voici d'ailleurs certains Conky que l'on peut trouver sur la toile :
    Conky 3 Conky 2 Conky 1


    Conky est une alternative légère et pratique à d'autres programmes plus globaux tels que SuperKaramba pour KDE ou gDesklets pour Gnome. Il présente selon moi l'avantage d'être plus aisément configurable que ces derniers.
    Si vous souhaitez en savoir plus sur SuperKaramba ou gDesklets, rendez-vous sur la doc :
    • La doc de SuperKaramba
    • La doc de gDesklets

    Pour plus d'informations sur le sujet Installer et configurer Conky, il vous est conseillé de lire la suite.


    votre commentaire
  • Image utilisateur

    La version 4 de Chrome, le navigateur Internet de Google, est sortie lundi 25 janvier. Elle lui apporte deux fonctionnalités majeures qui lui permettront de continuer sa progression sur le marché des navigateurs.



    Chrome, un navigateur de plus en plus utilisé


    Une annonce surprenante

    Image utilisateur

    Le 3 septembre 2008, Google en surprend plus d'un en annonçant, par le biais d'une bande dessinée, la création d'un navigateur : Chrome est né. Selon Google, il doit être pratique, sûr et surtout rapide. Dans cet objectif, la firme de Moutain View choisit de séparer les processus des onglets pour les empêcher de planter, d'utiliser une nouvelle machine virtuelle très rapide pour le Javascript (V8), et de mettre en place une interface allégée mais claire.

    Une progression lente mais constante


    Le 11 décembre 2008, la première version stable de Chrome sort, mais uniquement pour Windows. En février 2009, Chrome parvient à dépasser les 1.5% de parts de marché, devant Netscape (selon une étude de Net Applications).

    Image utilisateur

    La version 2.0 sort le 24 mai 2009. Elle consiste surtout en une amélioration de la vitesse d'affichage (le chargement des pages serait plus rapide de 30% selon Google), mais aussi en un ajout de diverses fonctionnalités assez pratiques, telles que le mode plein écran ou le défilement dans une page. À ce moment-là, il lui manque néanmoins une fonctionnalité de taille face à ses concurrents : les extensions, qui permettent d'ajouter des fonctionnalités au navigateur. En juin 2009, Chrome détient 2,18% des parts du marché, devant Opera avec 2,06%.

    La version 3.0 sort le 12 octobre 2009. Elle intègre un système de thèmes permettant à l'utilisateur de modifier l'apparence de son navigateur, améliore la page Nouvel onglet et supporte mieux le HTML 5. Et encore une fois, pour remplir l'objectif principal de Google, elle améliore la vitesse d'affichage de 25%.

    Depuis peu, pour promouvoir Chrome, Google passe à l'offensive en affichant de la publicité dans le métro, ou dans de nombreux journaux. Il en résulte une grande progression de l'utilisation du navigateur : à ce jour, la part de marché de Chrome est de 4.6%, juste devant Safari avec 4.5%.
    Image utilisateur
    La progression de Chrome sur le marché des navigateurs


    Il faut aussi noter qu'il n'existe à ce jour aucune version stable de Chrome pour Mac et Linux. Cependant, depuis décembre dernier, on trouve une version bêta.

    La version 4 : quoi de neuf ?


    Plus de 1500 extensions disponibles


    Aujourd'hui, beaucoup de navigateurs sont dotés d'un système d'extensions, permettant d'accroître leurs fonctionnalités. C'est maintenant chose faite pour Google Chrome, qui en intègre un dans cette nouvelle version, et en propose ainsi plus de 1500 contre environ 11000 pour Firefox. La galerie d'extensions est accessible à partir du menu des outils ou alors à cette adresse. Il est bien sûr possible de développer ses propres extensions.
    Image utilisateur

    On peut citer comme exemple Chromed Bird qui permet de gérer un compte Twitter directement depuis Chrome, ou encore SessionManager, qui permet de sauvegarder et de restaurer des onglets.
    L'extension la plus populaire pour le moment est Google Mail Checker, avec plus de 173 000 utilisateurs à ce jour.

    Des marque-pages synchronisables


    Il est désormais courant d'utiliser plusieurs ordinateurs, un fixe et un portable par exemple. Mais cet usage pose un problème : sur chaque ordinateur, le navigateur web dispose de ses propres marque-pages et l'utilisateur ne retrouve pas la même configuration partout.

    C'est pour contrer ce problème que Google propose dans cette nouvelle version la possibilité de synchroniser les marque-pages. L'utilisateur peut, en ayant un compte Google, retrouver sur chacun de ses ordinateurs les mêmes marque-pages dans Chrome.
    Image utilisateur

    Des performances accrues et un meilleur support du HTML 5


    Une fois de plus, l'un des objectifs de Google est d'atteindre de meilleures performances. C'est chose faite puisque cette nouvelle version est plus performante de 42% par rapport à la dernière version stable, et de 400% par rapport à la toute première version du navigateur, en matière d'affichage de pages contenant du Javascript (selon le test DOM Core).

    Image utilisateur


    Dans cette nouvelle version, un meilleur support du HTML 5 est aussi assuré : la version 4 supporte LocalStorage, l'API Database et les Web sockets.

    Et après ?


    Image utilisateur

    La nouvelle version de Chrome n'est disponible pour Linux et Mac qu'en version bêta, mais Google nous promet de rapides mises à jour. Le système d'extensions ne marche malheureusement toujours pas sur Mac.

    La version 5 de Chrome devrait comprendre une nouvelle fonctionnalité très pratique, et déjà mise en place sur de nombreux navigateurs : le filtrage de contenu. Elle permettrait à l'utilisateur de mieux gérer le contenu affiché ou exécuté, par exemple de ne pas autoriser l'exécution de plugins de certains sites, ou encore de supprimer automatiquement tous les cookies après la fermeture du navigateur.

    Grâce à cette version, Chrome vient de combler un de ses plus gros défauts, à savoir l'absence d'un système d'extensions (déjà présent chez tous ses concurrents). Elle pourrait donc l'aider à atteindre son objectif de 2011 : 10% de parts de marché du Web. Malgré tout, il reste un problème non négligeable : l'absence de version stable pour Mac et Linux, qui freine sa progression.

    Liens utiles

    • Image utilisateur Télécharger la nouvelle version de Chrome
    • Image utilisateur L'annonce officielle de la sortie sur le blog de Google
    • Image utilisateur L'info sur PCInpact

    Pour plus d'informations sur le sujet Google Chrome passe en version 4, il vous est conseillé de lire la suite.


    votre commentaire
  • Bien souvent on veut récupérer le contenu d'un dossier et à moins de télécharger les fichiers un à un on ne peut pas le faire, on peut donc avec PHP créer une archive Zip à proposer en téléchargement.

    Les bases pour ce tutoriel sont de savoir programmer en PHP ( :p ) et de savoir programmer en POO (Tutoriel de vyk12) car les fonctions zip_* ne sont pas nombreuses et ne permettent que de lire une archive et de l'extraire. On utilisera donc la classe ZipArchive.
    Pour pouvoir utiliser cette classe il faut que l'extension php_zip soit activé, si elle ne l'est pas il faut la décommenter dans le php.ini.

    Ce tutoriel servira d'introduction aux fonctions Zip.

    Pour plus d'informations sur le sujet Les fonctions Zip en PHP, il vous est conseillé de lire la suite.


    votre commentaire
  • Bien souvent on veut récupérer le contenu d'un dossier et à moins de télécharger les fichiers un à un on ne peut pas le faire, on peut donc avec PHP créer une archive Zip à proposer en téléchargement.

    Les bases pour ce tutoriel sont de savoir programmer en PHP ( :p ) et de savoir programmer en POO (Tutoriel de vyk12) car les fonctions zip_* ne sont pas nombreuses et ne permettent que de lire une archive et de l'extraire. On utilisera donc la classe ZipArchive.
    Pour pouvoir utiliser cette classe il faut que l'extension php_zip soit activé, si elle ne l'est pas il faut la décommenter dans le php.ini.

    Ce tutoriel servira d'introduction aux fonctions Zip.

    Pour plus d'informations sur le sujet Les fonctions Zip en PHP, il vous est conseillé de lire la suite.


    votre commentaire


    Suivre le flux RSS des articles de cette rubrique
    Suivre le flux RSS des commentaires de cette rubrique