Kamelot Blog

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

jeudi 18 décembre 2008

jeu
18
dec '08

Touring perd pas le nord ou se fout des gens ?

Voilà le formulaire sur lequel on arrive quand on veut se désinscrire de la newsletter de Touring.

Je me demande si c'est volontairement contradictoire, ou juste fait par un crétin.

En tout cas la phrase est mensongère puisque si je clique sur envoyer comme proposé, je reste inscrit.

mercredi 17 décembre 2008

mer
17
dec '08

PEAR::Pager Liste des tutoriaux

Traduction d'une série d'articles de Lorenzo Alberton

Il lui est souvent posé des questions sur la façon d'utiliser PEAR::Pager. Cela va de la manière efficace de paginer des résultats lu dans une base de données, à l'utilisation combinée de PEAR::Pager et javascript ou de PEAR::Pager et AJAX, en passant par l'utilisation de PEAR::Pager et de mod_rewrite. Étant donné que ces questions sont de plus en plus récurrentes sur sa boîte mail ou sur les mailing-lists de PEAR, il a décidé d'écrire cette série de petits tutoriaux :

Vous désirez un sujet particulier? vous voulez utiliser Pager de façon inhabituelle? S’il vous plaît envoyez un mail à Lorenzo avec votre idée.

mer
17
dec '08

is_array_of

Dans un filtre on peut vérifier si une valeur est un nombre, une chaine, un objet, un tableau, ...

Pour tout ce qui est scalaire ca va mais pour un tableau par exemple, on ne vérifie que "l'enveloppe", la "structure" d'un ensemble de données, plus les données elles-même comme avec un is_numeric()

Voici une fonction que j'ai tenté d'écrire pour palier à cela.

Je suis parti d'un commentaire du manuel de la fonction PHP is_array()

Elle est sans doute encore à améliorer Edit:Lisez les commentaires ils sont "utiles"

Première version
  1. <?php
  2.  /**
  3.   *
  4.   *  @param string wanted param boolean|integer|double|string|array|
  5.   *                             object|resource|NULL|unknown type
  6.   *  @param array $array array to check
  7.   *  @param boolean $acceptRecursive if true,
  8.   *                                                 the type can  be in children of subarray.
  9.   */
  10.  function is_array_of($type, $array,$acceptRecursive = false)
  11.  {
  12.   $r = false;
  13.   if (is_array($array))
  14.   {
  15.    foreach($array as $n=>$v)
  16.    {
  17.     if ($acceptRecursive  && is_array( $array[$n] ))
  18.     {
  19.      $r = is_array_of($type, $array[$n] );
  20.      if ($r==false) break;
  21.     } else
  22.      if (!gettype($v)==$type)
  23.      {
  24.       $r=false;
  25.       break;
  26.      } else
  27.       $r=true;
  28.    }
  29.   }
  30.   return $r;
  31.  }
  32. ?>
  33.  

lundi 15 décembre 2008

lun
15
dec '08

Firefox à Paradisio

J'avais oublié que j'avais réussi a bien photographier le firefox de Paradisio. Firefox à Paradisio

samedi 13 décembre 2008

sam
13
dec '08

Kidcity relooké

Nouvelle page d'accueil pour kidcity.

Vous allez me dire, mais tu n'y travailles plus. Oui je sais, mais c'est la dernière chose sur laquelle j'ai travaillé sur kid, (et encore je n'ai participé qu'au brainstorming en février 2008.

Je suis content de voir qu'ils ont abouti.

Bravo à l'équipe. (surtout pour le bouton couper le son qui fera du bien aux rédac et au développeurs :)

vendredi 12 décembre 2008

ven
12
dec '08

Utilisation de Pear::Text_diff pour comparer des textes

Traduction d'un tutorial de pradeep pradeep, écrit le 6 Mai 2007.

Quand il devient nécessaire de comparer deux ou plusieurs fichiers texte sous UNIX, la plupart des développeurs vont chercher le programme diff. Ce logiciel, est inclus par défaut dans presque toutes les distributions Unix, compare les fichiers ligne par ligne et affiche les changements dans un certain nombre de différents formats de sortie.

Bien qu'à l'origine, diff est un utilitaire de ligne de commande, des paquets pour reproduire ses fonctionnalités sont disponibles pour la plupart des environnements de développement et les languages, y compris Perl, JSP, et PHP. Venons en à Text_Diff, une classe PEAR qui permet de comparer le fichier contenu dans l'environnement PHP et proposer un rendu en différents formats.

Ce tutoriel va faire la démonstration de cette classe en l'action, illustrant la façon dont vous pouvez l'utiliser pour comparer dynamiquement du contenu des fichiers avec PHP, et de rendre les résultats sous forme de page Web. Je vais supposer que vous avez une installation Apache et PHP et que la classe PEAR Text_Diff a été correctement installé.

Note: Vous pouvez installer le paquet PEAR Text_Diff directement à partir du Web, soit en le téléchargeant ou en utilisant les instructions fournies.

Mise en place de fichiers de test

Avant d'écrire le moindre code, il est nécessaire de mettre en place les fichiers de test, nous allons utiliser dans ce tutoriel. Ce sont deux fichiers simple, avec quelques différences délibérée que Text_Diff devrait être en mesure de reperer.

L'extrait A est le premier fichier, nommé data1.txt.

Extrait A

[txt]
apple 
banana
cantaloupe 
drumstick
enchilada
fig
grape
horseradish

Et l'extrait B est le second fichier, nommé data2.txt.

Extrait B

[txt]
apple
bat
cantaloupe
drumstick 
enchilada 
fig
peach
pear



zebra

Effectuer une comparaison de base

Après avoir créé les fichiers, nous allons commencer par une simple illustration de la manière dont fonctionne Text_Diff.

Commençons avec l'extrait C.

Extrait C
[php]
<?php
// ici il faut adapter les chemins à votre install

include_once "Text/Diff.php";
include_once "Text/Diff/Renderer.php";

// On défini les fichiers à comparer
$file1 = "data1.txt";
$file2 = "data2.txt";

// On effectue le diff 
$diff = &new Text_Diff(file($file1), file($file2));
// On construit le rendu et on affiche le résultat
$renderer = &new Text_Diff_Renderer();
echo $renderer->render($diff);
?>

C'est assez simple à première vue. Il ya deux classes de base dans le paquet Text_Diff:

  • Text_Diff (), qui effectue la comparaison et retourne diffoutput;
  • et Text_Diff_Renderer (), qui forme les résultat diff dans un format qui est facilement compréhensible.

Le Text_Diff () l'objet, en particulier, doit être initialisé avec le contenu réel (et non pas l'emplacement) des deux fichiers à comparer.

Le script commence par l'initialisation de ces deux objets, en utilisant la fonction file() de PHP pour extraire le contenu de chaque fichier en une série de tableaux. L'objet Text_Renderer() est ensuite utilisé pour créer le rendu au format standard diff, un résultat qui devrait être familier à tout développeur UNIX:

[diff]
2c2
<banana
---
>bat
7,8c7,12
<grape
<horseradish
---
>peach
>pear
>
>
>
>zebra
Rendre les différences plus facile à lire

Maintenant, la sortie ci-dessus n'est pas particulièrement facile à lire, sauf si vous avez beaucoup d'expérience au décodage diff résultats. C'est la raison pour laquelle Text_Diff est livré avec une série d'options de reformater ce résultat en quelque chose de plus lisible. Ces options sont accessibles au travers de classes enfant de l'objet Text_Diff_Renderer() et cela rend possible d'afficher le résultat de la comparaison en soit format unifié ou inline .

Le script suivant (extraits D) est une modification de l'exemple précédent pour obtenir un format unifié:

Extrait D
[php]
<html>
<head></head>
<body>
  <pre>
<?php
// ici il faut adapter les chemins à votre install

    include_once "Text/Diff.php";
    include_once "Text/Diff/Renderer.php";
    include_once "Text/Diff/Renderer/unified.php";

// On défini les fichiers à comparer
    $file1 = "data1.txt";
    $file2 = "data2.txt";

    // perform diff, print output
    $diff = &new Text_Diff(file($file1), file($file2));
    $renderer = &new Text_Diff_Renderer_unified();
    echo $renderer->render($diff);
?>
 </pre>
</body>
</html>

Constatez l'appel à la classe enfant lors de l'initialisation du moteur de rendu.

Et voici le résultat:

[diff]
@@ -1,8 +1,12 @@
apple
-banana
+bat
cantaloupe
drumstick
enchilada
fig
-grape
-horseradish
+peach
+pear
+
+
+
+zebra

Une rapide explication est ici nécéssaire: dans le format unifié, le signe plus (+) préfixe les lignes ajoutées, le signe (-) préfixe les lignes supprimées, et sans préfixe on a les lignes inchangées . Si l'on compare les résultats ci-dessus avec les fichiers originaux, il est assez facile de voir comment les diff générés reflètent les lignes qui ont changé et quel sont les changements.

Bien sûr, il est possible de le rendre encore plus facile à utiliser - et c'est précisément ce que le formatage en ligne tente d'accomplir.

Dans ce format, des biffures sont utilisées pour indiquer visuellement les caractères et les lignes qui ont changés.

L'extrait E vous montre comment l'utiliser.

Extrait E
[php]
<html>
<head></head>
<body>
    <pre>
    <?php
// ici il faut adapter les chemins à votre install

    include_once "Text/Diff.php";
    include_once "Text/Diff/Renderer.php";
    include_once "Text/Diff/Renderer/inline.php";

// On défini les fichiers à comparer
    $file1 = "data1.txt";
    $file2 = "data2.txt";

    // perform diff, print output
    $diff = &new Text_Diff(file($file1), file($file2));
    $renderer = &new Text_Diff_Renderer_inline();
    echo $renderer->render($diff);
    ?>
    </pre>
</body>
</html>

Et voici le rendu:

[html]
apple
<strike>banana</strike>bat
cantaloupe
drumstick
enchilada
fig
<strike> grape</strike>
<strike>horseradishpeach</strike>
pear



zebra

Voilà, ca c'est fait. J'espère que vous avez maintenant une idée claire de la façon dont Text_Diff peut être utilisé pour rapidement et efficacement comparer des fichiers dans l'environnement PHP et de la façon dont le rendu peut être formaté pour faciliter la lisibilité. Codez bien!

mercredi 10 décembre 2008

mer
10
dec '08

Ma première rétrospective.

(posté en retard, j'avais oublié de le publier)


Voilà ca aussi c'est fait.

Durée 65 minutes (mais on a aussi fait la rétrospective de la mise en place de la méthode agile).

J'ai utilisé ma petite fiche.

Reunions Agiles

Retrospective

durée
1h
Cadre

Environnement propice à la discussion.

étapes
  • Collecter les infos sur le processus (en direct pendant le meeting, et en se référant aux problèmes listés pendant le Scrumm Meeting
  • Catégoriser les feedback
  • Définir les priorités sur l'amélioration. En triant les catégories, puis en choisissant une catégorie sur la quelle poser l'effort)
  • Planifier les amélioration : choisir les actions pratiques visant a améliorer la catégorie choisie.
Objectif

Avoir une liste d'action écrite et un engagement de l'équipe

Notes

Tout le monde doit participer activement

En pratique

On a relu les problèmes notés pendant les scrumm meetings.

Contrairement à la revue qui a duré la moité du temps prévu, celle-ci a débordé de 5 minutes, parce qu'on a enchainé sur la retrospective "de l'agile".

On a constaté les problèmes suivants

  • l'absence de test unitaires (corrigé depuis)
  • le manque d'info dans les feedback utilisateur
  • la mauvaise gestion des spikes
  • le conflit entre la maintenance de l'existant et des tâches du sprint (on ne sait pas isoler les équipes, puisqu'on est que 2 pour le moment)
  • J'ai entendu le développeur exprimer une crainte quand j'ai parlé de travailler dans une classe précise. (Ca m'inquiète sur l'état de la classe)
  • J'ai parfois manqué de droit système pour mettre en place les outils de travail.

On a repris ca dans 3 catégories

  • l'environnement de travail
  • la méthode
  • la gestion de l'existant

vendredi 5 décembre 2008

ven
05
dec '08

Je veux des <?php

Petit memento à critiquer

Un search and replace normal

search <%
replace by <?

suivi d'un search and replace normal

search <?=
replace by <?php echo

suivi d'un search and replace regexp

search <\?[^p]
replace by <?php
Pour ceux qui ne savent pas pourquoi je veux cela, un petit rafraichissement de mémoire se trouve ici : Pourquoi il est déconseillé d'utiliser les balises courtes...

jeudi 4 décembre 2008

jeu
04
dec '08

Votez pour vos blogs belges préférés

La DH propose de Voter pour vos blogs préférés

mercredi 3 décembre 2008

mer
03
dec '08

Ich Komm Mit Dir de Nena

Nena Kerner est surtout connue pour son 99 Luftballon.

Elle n'a toute fois pas arrêté sa carrière là.

Elle sort en 2005 Willst du mit mir gehnavec un morceau que j'adore et que je voulais partager : Ich Komm Mit Dir


aaaaaaaaaaaaad Il y avait aussi Rette mich

P*tain je suis vieux.

lundi 1 décembre 2008

lun
01
dec '08

Mes 4 fiches mémo pour l'agile

zer48868586

Tags