Créer une image GIF à la volée

jeudi 16 décembre 2004 :: perrick :: PHP :: 2 commentaires :: aucun trackback

Depuis avant-hier dans ma suite de tests sur openTIME, j'avais une fonction qui ne passait plus : comme elle n'est presque pas utilisée, j'en ai juste pris note dans un coin de ma tête. Aujourd'hui je décide d'aller explorer la question et je tombe sur un ancien commentaire :
// note interne : cette fonction n'existera pas avant le 7 août 2004
// date de la fin du brevet sur les fichiers gif

Au lieu de retourner un échec, le test (créer une image GIF à la volée) marche désormais sur ma machine : j'avais tout préparé à l'époque (incapable de vous dire quand) en attendant que le brevet sur les fichiers GIF tombent dans le domaine public. Et en mettant à jour ma version de PHP à la 4.3.9, la magie de function_exists("imagegif") opère... ou plutôt celle du développement piloté par les tests !

PS : oui je sais que la version 4.3.10 est sortie depuis.

Sans Écho de Code -- le concept de développement DRY

lundi 6 décembre 2004 :: perrick :: PHP :: 5 commentaires :: aucun trackback

Le développeur PHP commence par du code procédurale, puis ajoute des fonctions avant de découvrir la programmation objet et le sommet de son art : les design patterns. Pour désacraliser cette notion, je tente une traduction : les motifs de conception. Plutôt qu'une recette ésotérique qui marcherait à tous les coups, cette traduction permet peut-être d'y voir plus clair : structure, figure ornémentale, le plus souvent répétée. Très utile pour communiquer, très avantageux pour parler de son code à un tiers, très profitable pour étudier la programmation. Moins efficace pour le développement. (Note : je différencie volontairement programmation et développement).

Si la différence n'est pas au niveau de la programmation objet et de son cortège de motifs de conception (on a fait et on fera encore beaucoup de code avec de simples fonctions), comment distinguer le code performant d'un code détestable ? La réponse est d'abord dans un principe simple : pas de duplication. En anglais ça donne DRY (Don't Repeat Yourself). Restait à trouver un jeu de mot suffisamment riche sur SEC : je propose Sans Écho de Code.

Un petit test... Demandez à vos lignes de PHP : lesquelles parmi vous doivent être modifiées pour changer ce menu de navigation ? La ligne 58 du fichier menu.php vous répond : Ici. Puis la ligne 121 de show_menu.php enchaîne : Ici. Puis au tour des lignes 345 et 570 dans show_template.php : Ici... Ici. Si à chaque question comme celle-là, votre code vous renvoie en écho plusieurs fois ici, c'est que vous avez un problème beaucoup plus urgent que la programmation objet ou les motifs de conception. Rien que les fonctions include et require font souvent des miracles : un remaniement -- ou refactoring en anglais -- commence par là. Après plusieurs de ces étapes (avec un code qui marche toujours, bien sûr) le motif adéquat vient tout seul !

L'autre différence s'appelle les tests unitaires... Mais ça c'est une autre histoire. Dès que la traduction de ce tutorial est bouclée, on en reparlera.

PS : si vous avez d'autres propositions pour SEC, je suis preneur !

PHP bientôt grand

jeudi 2 décembre 2004 :: perrick :: PHP :: 2 commentaires :: aucun trackback

Alors que dans la presse informatique d'entreprise (et pas uniquement en France) PHP est encore peu considéré en tant que langage professionnel, chez d'autres (qui ne font pas parti du "monde PHP" bien entendu sinon ce serait trop facile) il est d'ores et déjà devenu une référence.

Deux exemples récents chez des développeurs aguéris :
David Heinemeier Hansson (Ruby) Customers fear that a world of risk and hurt will come unless they choose "a standard", like Java, C#, or PHP, and by silently bowing in agreement, developers are selling the customer short.
Damian Conway (Perl) PHP's popularity for Web development isn't at all surprising.