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.

Apéro PHP lyonnais : 09/12/2004

dimanche 28 novembre 2004 :: perrick :: PHP :: aucun commentaire :: aucun trackback

Pour une fois, mon prochain apéro PHP ne sera pas à Lille mais à Lyon : l'invitation est donc lancée pour le 9 décembre 2004 à l'Arrêt Public des Platanes -- 10 place Lieutenant Morel -- à partir de 20h. Pour plus d'infos et l'inscription, c'est toujours au même endroit...

J'ai souvent tendance à parler de développement web en PHP mais autour d'un verre d'autres pistes sont toujours possibles !

PHP pour les flasheurs

mardi 23 novembre 2004 :: perrick :: PHP :: 8 commentaires :: aucun trackback

Un petit tour via PHP Quebec et me voilà devant un projet qui a l'air fameux : AMFPHP. Il s'agit ni plus ni moins que d'un pont complet entre une application PHP et une interface en Flash. D'après la doc, tout y passe : Flash remoting for PHP enables objects in PHP to become objects in actionscript, almost magically! AMFPHP takes care of all the data-type conversions, serialization, and other client-server details.

Dommage pour moi, j'ai arrêté de faire des trucs en Flash il y a plus de deux ans. Faut dire qu'à l'époque j'avais pour voisins des très très bons flasheurs (ceux qui faisaient Chman et Banja)...

Retour des trackbacks et autres bricoles

dimanche 21 novembre 2004 :: perrick :: Connexe(s) :: aucun commentaire :: aucun trackback

Avec la ré-ouverture du Kamelot blog de Moosh et ses trackbacks en rafale, je me suis rendu que ces rétro-liens n'apparaissaient pas dans mon blog alors qu'ils étaient présents dans mon interface d'administration. C'est réparé désormais, vous pouvez aussi en profiter.

Un autre truc dont je me suis rendu compte, dans certains catégories (PHP en particulier) tous les articles n'apparaissent pas : les plus vieux sont juste "oubliés" au passage. Deux solutions : hacker DotClear (et le proposer pour ne pas le refaire lors de la version prochaine) ou alors attendre la version 1.3. Pour l'instant je préfère avancer la traduction de SimpleTest !

Quelques notes provenance du forum PHP 2004

vendredi 19 novembre 2004 :: perrick :: PHP :: 2 commentaires :: un trackback

Pour une première fois en live, le bonhomme est à l'image de son personnage : Rasmus Leedorf passe bien (très bien même) en conférence. Et ce qu'il raconte reste toujours engagé et pertinent, aussi bien entre 200 personnes et un grand écran de projection qu'à table en soirée. J'étais particulièrement attentif à ses critiques sur les templates -- que j'avais tendance à suivre : après avoir les avoir entendues, aujourd'hui j'ai vu sa méthodologie mise en place au sein de Yahoo (Note : dès que je retrouve un lien, il sera ici). Le débat peut continuer -- mais pas trop ici s'il vous plaît.

Il y a aussi et surtout son métier chez Yahoo : les couches serveur. Tout comme avec la présentation de Derick sur son débuggueur (XDebug), c'est dans les niveaux très bas de PHP que j'ai appris le plus de chose : attention au define qui bouffe "beaucoup" de ressources, ne pas hésiter à utiliser ./, des hacks au niveau de PHP, limiter les includes, etc. Au passage c'est fou ce qu'on peut apprendre à les entendre parler du code interne de PHP.

Dans les autres conférences, il y en a pour tous les goûts. Des ouvertures intéressantes : XUL et PHP-GTK, le monde des CMS : SPIP contre SPIP-AGORA (entre autres), le remaniement (ou refactoring) : attention à se protéger via les tests unitaires, les frameworks : très bien si c'est effectivement le vôtre.

Mais comme à chaque fois, en plus des conférenciers, il y a tous les visiteurs : je ne prendrai pas le risque d'en oublier, je vous renvoie donc vers les photos de Damien sur Nexen et le grand jeu du qui est qui ! Au risque de perdre toutes les discussions annexes : PEAR (encore et toujours), les tests unitaires et SimpleTest, la formation d'un développeur PHP moyen, d'autres trucs divers ou variés et pour faire bonne figure la question de la présidence AFUP.

La doc pas si bien faite de MySQL

mardi 16 novembre 2004 :: perrick :: MySQL :: 3 commentaires :: aucun trackback

Une des règles les plus courantes du développement tient en qq lettres : RTFM (lire le put**n de manuel). Et pourtant je viens de m'arracher les cheveux sur celui de MySQL à cause d'une information manquante et pourtant simple : les fonctions CONVERT et CAST ne sont apparues qu'à partir de la version 4. Si vous avez encore des serveurs qui tournent avec une version 3.23, passer votre chemin.

Un grand merci quand même à la fac d'Amsterdam (il y en a probablement d'autres) qui héberge encore le manuel de référence de MySQL pour sa version 3.23. C'est là que j'ai lu : «we plan to soon introduce casting between different character sets to make string comparison even more flexible».

Pour en revenir à mon problème (ne pas différencier dans ma requête les champs 0 et NULL tout en présent l'information dans la table), j'ai du faire appel à une astuce pas forcément très catholique mais qui a au moins le mérite de marcher : SELECT GREATEST(start, 0) as start FROM table.

PS : c'est dans ces cas-là qu'on se rend compte que la doc de PHP est vraiment très bien foutue.

Ce que les traductions disent de vous

lundi 15 novembre 2004 :: perrick :: Traductions :: 5 commentaires :: aucun trackback

Depuis que je me suis lancé dans la traduction de la documentation de SimpleTest, je me retrouve régulièrement confronté à des mots anglais très techniques et donc plus ou moins difficiles à traduire. D'autant plus qu'ayant étudié les maths et en Angleterre, je ne connais rien du jargon informatique universitaire. Avant d'aller plus loin, imaginez les équivalents en français à ces trois termes : test case, mock object et framework.

Read next

Une librairie en PHP pour des lignes étincelle

jeudi 11 novembre 2004 :: perrick :: PHP :: aucun commentaire :: un trackback

Il y a un peu plus de 2 mois je découvrais le concept de sparkline (ou ligne étincelle) sur le site d'Edward Tufte. Depuis j'ai acheté un de ses bouquins : je le prendrai avec moi lors du prochain apéro PHP. Et aujourd'hui je découvre qu'un certain James Byers a lancé un projet sur SourceForge pour en créer facilement : il ne s'agit que d'une version 0.1 mais les exemples sont prometteurs. Je crois surtout que j'ai trouvé mon prochain projet à traduire !

Le dédouanage chez Neuf Telecom

mardi 9 novembre 2004 :: perrick :: Connexe(s) :: aucun commentaire :: aucun trackback

Les locataires de mon futur nouveau local (c'est presque un scoop, on en reparlera un peu plus tard) avaient fait installer une BLR et la grande antenne qui va avec. J'ai donc appelé Neuf Telecom pour savoir les conditions techniques et tarifaires d'une telle installation : comme elle est déjà sur place, pourquoi ne pas en profiter...

La procédure commençait bien : plutôt que de poireauter au téléphone, le site web propose de laisser son numéro de téléphone pour être rappelé par la suite. C'était malheureusement leur seule bonne idée pour ma démarche. Le reste ? Un service "marketing - national" qui se déclare incompétent et qui renvoie vers un service "entreprise - national". Le service "entreprise - national" qui estime que ma demande sera traité au mieux par une agence locale. L'agence locale dont le numéro ne marche plus : Le numéro que vous avez demandé n'est pas attribué...

Petit détour par les pages jaunes pour découvrir le numéro d'une autre agence locale : une stagiaire me répond qu'elle est tout seule dans le bureau -- il est 10h -- et qu'il faudrait mieux rappeler en début d'après-midi. Nouvel appel au service "entreprise - national" qui m'annonce ne pas avoir d'autres numéros sur la métropole lilloise que celui qui ne marche pas et l'autre que j'avais trouvé tout seul. Heureusement que c'est indiqué partout sur leur site opérateur téléphonique, j'aurais fini par en douter. Lot de consolation : presque tous les numéros appelés étaient en 0800, donc gratuits.

Plus que 10 pour le Forum PHP, édition 2004

lundi 8 novembre 2004 :: perrick :: PHP :: 2 commentaires :: un trackback

Au détour de la liste des membres de l'AFUP, je vois qu'il ne reste bientôt plus de places pour le Forum PHP 2004 : on me souffle « plus que 10 ». Bref si vous voulez venir, dépêchez-vous d'en parler à votre patron ou de prendre quelques jours de congés spéciaux. Si le deuxième cas ne vous branche pas trop, lisez cet article d'Eric Sink : Carrer calculus, il a le mérite de mettre quelques idées reçues en perspective.

Mise-à-jour du 15/11/204 : le forum 2004 est officiellement complet.

Apéro PHP lillois : 25/11/2004

jeudi 4 novembre 2004 :: perrick :: PHP :: aucun commentaire :: aucun trackback

Une fois n'est pas coutume, je vous annonce le prochain apéro PHP lillois qui aura lieu jeudi 25 novembre 2004. Pour ceux et celles que ça intéresse, le rendez-vous est fixé au K13, 13 rue Henri Kolb à Lille à partir de 20h00. Plus d'informations sur aperophp.net. Cette fois, c'est à MisterN qu'il faut dire merci pour l'organisation.

Comme d'habitude on y parlera de PHP et de choses plus ou moins connexes. Sauf que cette fois il s'agira aussi d'une MozParty, une des 10 qui se préparent en France. Et ceux qui me connaissent un peu savent déjà que je ne pourrais pas m'empêcher de mentionner Opera...

dcBlogmark, PHP et quelques surprises du validator W3C

dimanche 31 octobre 2004 :: perrick :: Développement :: 3 commentaires :: aucun trackback

De temps en temps, envoyer un page au Validator du W3C permet de se faire une petite piqûre de rappel sur ses propres pratiques. Quel ne fut pas ma surprise de découvrir aujourd'hui que ma page principale n'était plus valide : presque une quinzaine d'erreurs, ça fait beaucoup. Remarque : vous pouvez consulter pendant quelques jours encore ces belles erreurs via la version dans le cache de Google.

Parmi les erreurs faciles à corriger les & à traduire en & : j'en avais deux (dans le titre et dans un billet). Et tout plein de syntax of attribute value does not conform to declared value à propos de mes hreflang. Réflexions faites, c'est le code proposé par JMF pour son très utile dcBlogmark qui pose soucis. Heureusement c'est assez facile à corriger. Dans le template dotClear, il suffit de remplacer :
while(!dcBlogmark::eof()){
  echo '<li><a href="' . dcBlogmark::get('url') . '" title="'
    . dcBlogmark::get('title') . '" hreflang="' . dcBlogmark::get('language') . '">'
    . dcBlogmark::get('title', 20) . '</a></li>';
  dcBlogmark::moveNext();
}

par
while(!dcBlogmark::eof()){
  $dcBlogmark_hreflang = '';
  if (dcBlogmark::get('language')) {
        $dcBlogmark_hreflang = ' hreflang="' . dcBlogmark::get('language') . '"';
  }
  echo '<li><a href="' . dcBlogmark::get('url') . '" title="'
    . dcBlogmark::get('title') .'"'.$dcBlogmark_hreflang. '>'
    . dcBlogmark::get('title', 20) . '</a></li>';
  dcBlogmark::moveNext();
}

Et voilà : plus d'erreurs... en attendant les prochaines ;-)

Tester sa position chez Google

vendredi 29 octobre 2004 :: perrick :: PHP :: 3 commentaires :: un trackback

Il y a quelques temps, j'avais remarqué que sur la recherche blog php ce site -- onpk.net -- était plutôt bien placé. Et comme je suis d'un naturel plutôt curieux, je me demande combien de temps est-ce que cela va durer...

Alors dans la foulée de la traduction en cours de la doc de SimpleTest, je vous propose ici un petit exemple.

<?php
require_once("simpletest/web_tester.php");
require_once("simpletest/reporter.php");

class test_google_onpk extends WebTestCase {
  function test_onpk() {
    $this->set_up();
    $this->get("http://www.google.fr/search", array("q" => "blog php", "btnG" => "Recherche Google", "hl" => "fr"));
    $this->assertWantedPattern("/www.onpk.net/i");
  }
}

$test = &new test_google_onpk();
$test->run(new HtmlReporter());
?>

Ce que ça fait ? Tout bête ça teste une requête de recherche chez Google, ici avec comme mot clef blog php. Le résultat est une ligne verte si onpk.net est toujours dans la première page, soit une ligne rouge dans le cas contraire. L'exemple en ligne est un peu plus fourni parce que j'y teste d'autres mots clef (onpk et blog php mysql, plus rtf php uniquement dans les pages francophones).

Màj du 29/10/2004 : j'ai supprimé la version dynamique dans l'exemple en ligne. N'est affiché que le résultat statique. Merci Ldo pour sa remarque via les commentaires.

Passage à l'heure d'hiver : 31 octobre 2004

mercredi 27 octobre 2004 :: perrick :: Connexe(s) :: 3 commentaires :: aucun trackback

En ce moment je reçois tout plein de visiteurs via une recherche hors propos chez Google : des changement d'horaire accompagnés par exemple de weekend ou de octobre 2004. Tout ça parce que j'ai eu des surprises avec le changement d'heure bi-annuel.

Plutôt que de vouloir les décevoir avec mes errements informatiques, je voulais les orienter vers une page du Wikipédia (vu la qualité de projet d'encyclopédie libre). Pas de bol, je n'ai pas trouvé de page plus proche que celle sur les fuseaux horaires.

En attendant que quelqu'un s'y plonge, voici d'autres références qui pourraient intéresser ces visiteurs sans connaissance de l'univers du développement PHP...

Pour les très pressés : le 31 octobre 2004, à 3 heures du matin il sera 2 heures.