Raphaël Rougeron

Aller au contenu | Aller au menu | Aller à la recherche

mardi 17 novembre 2009

Slides "Services web RESTful"

On dit que la foudre ne tombe jamais 2 fois au même endroit... Et pourtant, j'ai été une nouvelle fois victime de l'effet Bonaldi lors de ma session sur les services web RESTful : gros plantage du serveur X apparemment, pour une raison que je ne m'explique absolument pas. Le temps de régler le problème et de reprendre le fil de ma pensée et je n'avais déjà plus que 5 minutes ! La fin de la session a donc été pour le moins précipitée, et ma frustration est grande de n'avoir pu aborder certains points. Aussi ai-je décidé d'entamer une série de billets sur le sujet dans lesquels je compte notamment proposer une sorte de refactoring RESTful de certains services web. J'ai également mis en ligne les slides de ma présentation.

En dehors de mes petits déboires de conférencier, ce Forum 2009 est (encore) un excellent millésime ! Merci à tous les organisateurs et conférenciers et à l'année prochaine pour un Forum exceptionnel, celui des 10 ans de l'AFUP et des 15 ans de PHP !

vendredi 6 novembre 2009

Forum PHP 2009

forum_php_2009

C'est dans maintenant moins d'une semaine que se déroulera le désormais traditionnel Forum PHP organisé par l'AFUP. J'ai eu l'honneur (et le plaisir) d'avoir été sélectionné en tant que conférencier, j'y présenterais donc une session sur les services web RESTful en PHP.

La particularité de ce forum est qu'il est cette année organisé en partenariat avec LeMug, l'user group MySQL français, et de fait, il y aura nombre de sessions intéressantes autour de MySQL, notamment :

A jeudi donc pour ceux qui seront là, et pour ceux qui ne se sont pas encore inscrits, il n'est pas trop tard !

mardi 3 novembre 2009

Synthèse du Barcamp PHP toulousain

Un beau succès que ce premier Barcamp toulousain : 26 personnes présentes, et des discussions animées jusqu'à minuit passé ! Les thèmes choisis par les participants ont été les suivants : le déploiement, PHP 5.3, les frameworks, le NoSQL, les tests, et la sécurité. Si Xavier et moi-même avont bien sûr largement contribué à l'animation des débats, je tiens à remercier Patrick Paysant pour avoir si bien sû jouer le rôle de l'avocat du diable, et Quentin Delance pour son excellent travail de prise de notes ;)

MAJ : Thomas Gasc a publié sur son blog les synthèses des sessions Sécurité et PHP 5.3 !

MAJ2 : Christophe Le Bot a également publié sa propre synthèse.

Lire la suite...

lundi 26 octobre 2009

Barcamp PHP à Toulouse

barcamp_php_toulouse

Je n'en avais pas encore parlé sur ce blog (honte à moi d'écrire aussi peu), mais j'organise ce jeudi 29 octobre un barcamp PHP dans les locaux de Linagora GSO, en partenariat avec l'AFUP. Xavier Gorse, président de l'AFUP, sera d'ailleurs présent. Signe particulier : ce sera aussi un Cheese & Wine ;)

Donc si vous êtes intéressés de près ou de loin par PHP, n'hésitez pas à vous inscrire !

mercredi 29 juillet 2009

Stato 0.10

Et oui, enfin une nouvelle release ;) Cette nouvelle version, outre une réécriture complète des composants d'envoi de mail (avec un nouveau driver SMTP) et d'i18n, apporte surtout un tout nouveau composant de gestion des formulaires, très fortement inspiré de Django je l'avoue ;) Pour les téméraires qui utilisent Stato via un checkout du trunk, je vous recommande de basculer sur la branche 0-10-stable, car je compte backporter le composant webflow (le VC de MVC) de ce qui devrait devenir Stato v2, ce qui risque d'engendrer quelques problèmes de rétro-comptabilité (rien de grave toutefois).

Vous pouvez télécharger Stato v.0.10 sur Sourceforge, comme d'habitude.

Update Apparemment le nouveau File Manager de SF déconne plein tube, les fichiers ne semblent pas mirrorés... Je ne suis pas le seul à avoir le problème, il y a déjà 2 tickets ouverts depuis ce matin sur leur Trac. Je mets à jour ce billet dès que les fichiers sont réellement disponibles. Le problème semble résolu.

mercredi 11 mars 2009

De retour de PHPQuébec 2009

Je suis de retour à Toulouse après une conférence PHPQuébec très réussie. Je n'ai hélas pas pu profiter cette année du ski trip proposé aux conférenciers, mais apparemment bien m'en a pris car la conjugaison de fortes pluies et d'un froid intense avaient transformé les pistes en véritables patinoires :( Il convient de saluer encore une fois le formidable travail des organisateurs : Anna, Sylvain, Yann, et tous les bénévoles, merci pour tout, c'était vraiment parfait !

Mes 2 conférences se sont bien passées, beaucoup de questions et des retours très positifs. J'ai malheureusement été victime du fameux "effet démo" (ou de la loi de Murphy, c'est selon) : la petite appli de démo que j'avais écrite pour illustrer les services web RESTful n'a pas voulu fonctionner pendant la conférence, alors qu'elle marchait parfaitement 5 minutes avant et 5 minutes après ! Le pire c'est que je n'ai pas réussi à reproduire le problème, je ne sais donc pas ce qui s'est passé ce qui est particulièrement frustrant... J'ai donc fait un petit screencast avec quelques annotations pour ceux qui sont intéressés. Le code de cette petite appli réalisée à l'aide de mon framework Stato est bien sûr consultable. Enfin, les slides sont téléchargeables :

dimanche 8 février 2009

Réinventer la roue

Il est une tradition dans le monde du développement de clamer haut et fort qu'il ne faut pas réinventer la roue. Que lorsqu'une librairie existe et qu'elle répond au moins partiellement à nos besoins, il est stupide de vouloir écrire sa propre librairie. Mais comme l'a souligné Jeff Atwood dans un récent billet, il faudrait plutôt dire qu'il ne faut pas réinventer la roue, à moins que votre intention est d'en apprendre plus sur les roues. Prenons le cas de Stato, mon framework PHP sur lequel je m'acharne depuis maintenant 5 ans. On pourrait tout à fait me dire (et d'ailleurs on ne s'est pas privé de le faire) : pourquoi fais-tu ça ? Il y a des dizaines de frameworks PHP, pourquoi réinventer la roue ? La réponse est pourtant simple : parce que cela m'a permis d'apprendre énormément, de devenir un bien meilleur programmeur. Et parce qu'aucun outil au monde ne sera jamais parfait, il est toujours possible de faire mieux, ou au moins d'apprendre en essayant. En fait, le seul cas où il vaut mieux ne pas chercher à réinventer la roue, c'est lorsque vous avez des dealines, c'est tout. Et cela s'appelle le pragmatisme. Mais s'il vous vient l'envie le soir au coin du feu de coder quelque chose qui a déjà été fait des millions de fois, juste pour le plaisir de coder ou de chercher à faire un peu mieux que l'existant, pourquoi vous en empêcher ?

mercredi 10 décembre 2008

Sortie de Songbird 1.0

Il y a quelques jours est sortie la version 1.0 finale de Songbird, un lecteur de musique cross-platform basé sur les technologies Mozilla. Décrit par certains comme le futur Firefox des lecteurs de média, il s'agit certainement d'un des projets les plus aboutis de l'écosystème Mozilla. Songbird se base bien sûr sur xulrunner, un runtime XUL et XPCOM qui constitue en quelque sorte le "framework" de Firefox. Ceux qui ont pu assister à mes conférences sur les Rich Desktop Applications savent à quel point je suis fan des technos Mozilla, aussi je suis très heureux de voir Songbird passer enfin en version stable.

Ayant déjà testé plusieurs versions 0.x qui s'étaient révélées lentes et instables (un peu normal cependant), j'étais quelque peu inquiet à l'idée de tester cette version 1.0, et j'ai été très agréablement surpris : les performances sont bien meilleures, aucun crash jusqu'à maintenant, et les fonctionnalités proposées sont très intéressantes. J'ai notamment beaucoup aimé l'extension mashTape qui vous donnent de nombreuses informations tirées du web sur l'artiste que vous êtes en train d'écouter. Le support des iPods, bien qu'encore expérimental, est déjà très au point, et l'import d'une librairie iTunes se fait sans problèmes. Que du bonheur donc, et même si certaines fonctionnalités importantes pour moi manquent encore à l'appel (comme le rip de CDs, prévu pour avril 2009), je tiens à féliciter chaleureusement les développeurs de Songbird, qui ont vraiment fait du très bon boulot. Souhaitons donc longue vie à ce logiciel, qui mérite désormais de partager les couvertures des magazines spécialisés avec Firefox et Thunderbird.

vendredi 28 novembre 2008

Compiler PHP 5.3 sous Debian avec mysqlnd

Là encore, je ne vais pas décrire toute la procédure, car Pascal Martin, toujours lui, l'a déjà fait ;) Je tiens par contre à attirer votre attention sur un problème qui peut se poser lors de la compilation si vous souhaitez utiliser le driver mysqlnd. Avec une Debian Etch (et je pense que cela est valable aussi pour Ubuntu, j'attends la confirmation), la compilation se fera sans histoire, mais l'exécution des tests (make test) échouera pour tous les tests des 3 extension MySQL (No such file or directory unix:////tmp/mysql.sock), et vous ne pourrez donc pas utiliser MySQL depuis PHP. Le problème est connu, mais pour l'instant non résolu. La seule solution que j'ai trouvé (et que je trouve particulièrement inélégante) est de remplacer toutes les instances de /var/run/mysqld/mysqld.sock par /tmp/mysql.sock dans les fichiers /etc/mysql/my.cnf et /etc/mysql/debian.cnf (pensez d'abord à arrêter MySQL bien sûr). J'aimerais bien savoir si ce problème ne touche que les distribs type Debian, donc si quelqu'un a des infos...

Les nouveautés de PHP 5.3

Eh non, je ne vais pas écrire de billets sur ce sujet, car quelqu'un d'autre s'en est déjà chargé, et avec brio (avec qui ?). Je vous laisse donc découvrir le blog de Pascal Martin, qui décortique toutes les nouveautés de la prochaine version de PHP, notamment les namespaces dont la syntaxe a beaucoup évolué depuis mon article sur ce sujet dans PHPSolutions (article téléchargeable gratuitement d'ailleurs, mais qui je le répète, n'est plus tellement à jour sur certains points).

vendredi 21 novembre 2008

Conférence PHP Québec 2009

Je présenterais 2 sessions à la prochaine conférence PHP Québec en mars 2009 :

Git et le renouveau du contrôle de versions

Git est un système de contrôle de versions décentralisé créé par Linus Torvalds, le créateur du noyau Linux. Simple et très performant, il résout de nombreux problèmes posés par les systèmes classiques comme CVS ou Subversion. Cette session présentera les principes de base de Git, puis comment l'utiliser au quotidien à travers de nombreux exemples concrets, notamment son interfaçage avec un serveur central Subversion.

Services web RESTful en PHP

Pourquoi utiliser des protocoles complexes comme SOAP alors que HTTP n'est toujours pas utilisé à son plein potentiel ? Cette session mettra l'accent sur les capacités de HTTP et des URIs et introduira le concept de l'architecture orientée ressources. Nous découvrirons les bonnes pratiques de conception de services web à travers des exemples concrets tels que le service S3 d'Amazon ou le protocole Atom et la création de notre propre service web. Enfin, nous verrons comment implémenter ces services web à l'aide des outils PHP existants, notamment le Zend Framework.

En dehors du plaisir de revoir Montréal et de pouvoir discuter à bâtons rompus avec quelques-uns des plus illustres représentants de la communauté PHP, je suis très heureux de pouvoir traiter de ces 2 sujets qui me tiennent particulièrement à coeur.

Back

Oui je sais, 6 mois sans billet, ça fait long, en même temps c'est pas comme si j'avais des milliers de lecteurs ;)

Tout ça pour dire que je travaille maintenant à Toulouse, chez Linagora Grand Sud-Ouest, et que je vais m'efforcer de trouver un rythme de publication plus soutenu...

vendredi 4 avril 2008

Un jour à marquer d'une pierre blanche

David Heinemeier Hansson (le créateur de Ruby On Rails) qui rend hommage aux possibilités de PHP, je ne pensais pas lire ça un jour !

mercredi 2 avril 2008

Poissons de l'année

Eh oui, encore un 1er avril riche en fausses annonces !

Mon best of :

Moralité : si vous avez une annonce importante à faire en tant que développeur, attendez le 2 avril !

mardi 25 mars 2008

PHP TestFest

php_testfest

update : Le TestFest vient d'être annoncé officiellement sur php.net.

Si vous avez toujours rêvé de contribuer au bon développement de PHP, mais que le C vous intimide, voici une occasion à ne pas rater. En effet, la communauté PHP organise au mois de mai le TestFest 2008, un évènement visant à améliorer la panoplie de tests unitaires de PHP. Ecrire des tests est à la portée de n'importe quel développeur PHP, et de nombreux User Groups vont organiser des réunions pour vous assister dans cette démarche. Plus de détails très bientôt !

jeudi 13 mars 2008

Slides PHPQuébec 2008

Après un ski trip extraordinaire grâce à un enneigement particulièrement généreux et des organisateurs très sympathiques, je suis actuellement à Montréal pour la conférence annuelle de PHPQuébec. J'ai une nouvelle fois parlé des Rich Desktop Applications, et vous pouvez télécharger mes slides si le sujet vous intéresse. Je profite de l'occasion pour remercier chaleureusement les organisateurs, dont la gentillesse et l'efficacité font de cette conférence un grand moment !

samedi 8 décembre 2007

Type hinting en PHP et SPLTypes

Il y a en ce moment une discussion animée sur la mailing list PHP-DEV à propos du type hinting. Plus précisément, s'il est aujourd'hui possible en PHP5 de forcer un paramètre d'une fonction ou méthode à être une instance d'une classe particulière, le seul type scalaire accepté pour le type hinting est le type tableau :

class Foo {
    public function bar(MyObject $param) { // OK
        ...
    }
 
    public function bas(array $param) { // OK
        ...
    }
 
    public function bat(float $param) { // PAS OK
        ...
    }
}

Certains voudraient étendre le type hinting à tous les types scalaires de PHP (integer, float, string, etc...), mais bien sûr d'autres ne sont pas d'accord, souvent parce qu'ils n'en voient pas l'intérêt ou parce qu'ils trouvent cela contraire à la philosophie de PHP (qui se veut un langage dynamique). Pour ma part, je vois au moins un intérêt au type hinting : la génération automatique d'un fichier WSDL à partir du code PHP d'un service web. En effet, l'API de Réflexion de PHP vous permet d'ores et déjà de récupérer le type des arguments d'une méthode, comme l'illustre l'exemple suivant :

class MyObject {}
 
class Foo {
    public function bar(MyObject $param) {}
}
 
$ref = new ReflectionClass('Foo');
$params = $ref->getMethod('bar')->getParameters();
 
foreach ($params as $param) {
    echo "parameter $".$param->getName()." (".$param->getClass()->getName().")
";
}

Mais sans support des types scalaires dans le type hinting, cette technique n'est pas idéale. Si une méthode prend comme argument un entier, cela vous oblige à créer une classe Integer, qui mapperait vers le type XML Schema xs:integer. Le framework de WSO2, qui permet la génération automatique de fichiers WSDL, utilise le principe des annotations de Java pour résoudre le problème. L'idée est de décrire le type des arguments dans un commentaire, qui sera parsé par le framework :

/** 
 * The purchaseOrder function
 * @param int $itemNo ID of the item to be purchased
 * (maps to the xs:int XML schema type )
 * @param string $date Date that the purchase order was done
 * (maps to the xs:gDate XML schema type)
 * @return int $price tolal price
 * (maps to the xs:nonNegativeInteger schema type )
 */
 function purchaseOrder ($itemNo, $date)
 {
    // some logic
    return $Price;
 }

L'idée est bonne, mais une solution en PHP pur me satisferait plus. Pour cette raison, un support des types scalaires dans le type hinting me parait intéressant, d'autant plus que le type hinting reste optionnel en PHP, alors pourquoi ne pas l'implémenter jusqu'au bout. En attendant que cela se fasse, une autre solution pourrait bientôt être possible. En effet, Marcus Börger et David Coallier travaillent actuellement sur une extension de SPL nommée SPLTypes. Pas de manuel pour l'instant, juste une petite description par l'un des auteurs. Plutôt que de créer vos propres classes Integer, Float, etc... pour le type hinting, il vous suffirait alors d'utiliser les types SPL : SPLInt, SPLFloat, etc... A suivre de près !

mercredi 5 décembre 2007

Des graphiques avec jQuery

Après avoir longtemps utilisé le couple Prototype / Scriptaculous, je suis récemment tombé amoureux de jQuery. Deux raisons à cela : c'est un poids plume (14 Ko une fois minifié et gzippé) contrairement à Prototype qui prend de plus en plus d'embonpoint, et j'adore sa syntaxe (spécialement le chaînage de méthodes). La communauté jQuery est également très active, en témoigne le nombre de plugins disponibles. Mais attention, le plugin que j'ai découvert ce matin via je ne sais plus qui est une vraie merveille : il s'agit de Flot, qui vous permet de tracer des graphiques magnifiques en exploitant la balise canvas introduite par Apple dans Webkit et aujourd'hui reprise par Firefox et Opéra. La version minifiée pèse seulement 20 Ko, et quand on voit le résultat, on ne peut qu'applaudir. Encore un outil à mettre sous le code pour le jour où...

flot.png

samedi 1 décembre 2007

Vector Magic : un bel exemple d'application Flex

Les RIAs utilisant Flex sont de plus en plus courantes aujourd'hui, mais trop souvent des solutions type AJAX auraient très bien pu faire l'affaire. Aussi suis-je heureux de pouvoir vous présenter une application très réussie qui exploite vraiment les capacités de Flex : il s'agit de Vector Magic, créé par le laboratoire d'intelligence artificielle de l'université de Stanford. Cet outil vous permet de vectoriser n'importe quelle image bitmap, il peut donc vous être très utile si comme moi vous ne disposez pas d'une licence Illustrator. J'ai tout d'abord été bluffé par la qualité de leur algorithme : certes je ne suis absolument pas un expert en algorithme de traitement d'images, mais j'ai été très impressionné de voir le logo de Stato reconnu automatiquement comme étant un logo (voir l'image ci-contre).

vector_magic_1.jpg

De plus, la qualité de la vectorisation obtenue avec les réglages par défaut est remarquable. Mais si cela ne vous suffit pas, Vector Magic vous propose un outil pour réparer les erreurs de segmentation de l'image vectorielle. Et c'est en l'utilisant que l'on comprend l'intérêt de Flex : pour des UI aussi "riches", Flex est encore aujourd'hui la meilleure (et la seule ?) solution. En résumé, un outil très pratique, et une interface très bien conçue, je vous le recommande !

vector_magic_2.jpg

jeudi 29 novembre 2007

WampServer 2 et PHP 6

Romain Bourdon a profité du Forum PHP 2007 pour nous présenter en avant-première sa nouvelle version de Wamp, désormais appellé WampServer, et force est de constater qu'il a mis au point ce qui est certainement la meilleure plateforme de dev PHP sous Windows à l'heure actuelle. Comme beaucoup d'entre vous, j'ai longtemps utilisé EasyPHP avant de migrer sous xampp lorsque je me suis mis à PHP 5. Mais WampServer apporte une fonctionnalité de premier ordre : la possibilité d'installer différentes versions de PHP, Apache et MySQL. 25 versions différentes de PHP sont ainsi proposées, de la 4.1.2 à la 5.2.5. L'intérêt de la chose est évident : cela vous permet de tester votre code sous différents environnements de production. Les développeurs de librairies, ou ceux qui cherchent à migrer du code PHP 4 vers PHP 5 pourront ainsi être beaucoup plus productifs. En dehors de cette fonctionnalité majeure, WampServer vous permet de gérer la configuration de votre serveur très simplement : l'activation d'une extension PHP se fait par exemple par le menu de WampServer, pas besoin d'éditer le php.ini ! Bref, WampServer est une vraie réussite, et je remercie Romain de nous avoir donné un si bel outil.

Mais bien sûr, il m'en fallait plus ;) Cela faisait longtemps que j'avais envie de faire mumuse avec les prochaines versions de PHP (5.3 et 6), et en testant WampServer, j'ai immédiatement pensé à essayer d'installer un snapshot de PHP 6. Et j'y suis parvenu très facilement, preuve que WampServer est très bien conçu. Voici la recette : commencez par télécharger un snapshot de PHP 6. En admettant que WampServer est installé dans C:\wamp, créez un nouveau dossier C:\wamp\bin\php\php6.0.0 et placez-y le contenu dézippé du snapshot. Créez 2 copies du fichier php.ini-dist, que vous nommerez php.ini et phpForApache.ini. Enfin, créez un fichier wampserver.conf avec le contenu suivant :

<?php

$phpConf['phpIniDir'] = '.';
$phpConf['phpExeDir'] = '.';
$phpConf['phpConfFile'] = 'php.ini';

$phpConf['apache']['2.0']['LoadModuleName'] = 'php6_module';
$phpConf['apache']['2.0']['LoadModuleFile'] = 'php6apache2.dll';
$phpConf['apache']['2.0']['AddModule'] =  '';

$phpConf['apache']['2.2']['LoadModuleName'] = 'php6_module';
$phpConf['apache']['2.2']['LoadModuleFile'] = 'php6apache2_2.dll';
$phpConf['apache']['2.2']['AddModule'] =  '';

?>

Démarrez WampServer, vous devriez voir votre nouvelle version 6.0.0 dans PHP > Version. Cliquez dessus, laisser les services redémarrer et cliquez sur PHP > php.ini. Cherchez la directive extension_dir qui se trouve dans la section "Paths and Directories" et indiquez l'emplacement du répertoire contenant les extensions, par exemple :

extension_dir = "c:/wamp/bin/php/php6.0.0/ext/"

Redémarrez les services, et c'est terminé, vous disposez maintenant d'une installation de PHP 6 fonctionnelle, ce que vous pouvez vérifier à l'aide d'un phpinfo() !

php6.png

- page 1 de 2