Category Archives: Informatique

Google lance Go

On discutait le weekend dernier avec Liz de l’apparition des langages de programmation. Et bien c’est aujourd’hui Google qui lance le sien. Le dernier s’appelle « Go » pour le moment. Je précise pour le moment car ce nom est déjà utilisé pour un langage de programmation. Il semble que « Go » soit un mix des langages de programmation Python et C++. Connaissant la puissance de Google, il faudra donc suivre l’évolution de ce langage qui ne peut être utilisé à grande échelle pour le moment

Source Le Monde

Internet a 40 ans

Il y a quarante ans s’échangeait un message entre deux ordinateurs distants. Situés à l’université de Los Angeles pour l’un et Stanford pour l’autre, ces deux pc utilisaient à l’époque le réseau Arpanet, l’ancêtre d’Internet. A l’origine destiné à une utilisation militaire, il en a dépassé les applications prévues à l’origine.

Source Le Monde

La Maison Blanche en open source

Depuis ce week end, le monde de l’open source a une fois de plus pris une part de marché aux logiciels payants. On assiste depuis quelques années à une montée en puissance des logiciels open source pour plusieurs raisons :

  • L’open source s’est professionnalisé. La notion de « gratuité » est de moins en moins associé aux problèmes de sécurité.
  • L’écart dans de nombreux domaines entre l’open source et le payant s’est réduit.

De très nombreuses administrations migrent vers l’open source, de Microsoft Office vers Open Office par exemple. Ce week end, c’est le site de la Maison Blanche qui est entrée dans le monde du libre en migrant son site web vers Drupal.

Source Le Monde

Migration Dékio réussie

Prévue depuis la semaine dernière, la migration de version eZ Publish pour les sites www.dekio.fr, www.art-decoration.fr, www.maison-travaux.fr s’est très bien passée ce matin. Les sites utilisent donc aujourd’hui la dernière version (4.1.3) du CMS eZ Publish, l’extension ezoe (« online editor ») ainsi que la dernière version des eZ Components.

Migration WordPress

Cela faisait un moment que je voulais faire ma première migration de version sur le CMS WordPress. Auparavant en version 2.7.3, le blog est désormais à jour avec la dernière version 2.8.4. Cela s’est très bien passé. Je n’ai pas eu besoin de faire la moindre intervention manuel pour corriger un problème, c’est agréable.

Cette dernière version corrige qui plus est une faille récemment mise à jour permettant de changer le mot de passe admin…

Astuces PHP

A heure tardive post orienté informatique. Aujourd’hui je vais vous présenter quelques astuces (tips en anglais) de langage permettant de gagner de la place, de ne pas rallonger inutilement le code, d’éviter des erreurs basiques… La liste n’est évidemment pas exhaustive mais cela pourra toujours vous aider de les connaître. Ces astuces ne s’appliquent d’ailleurs pas uniquement au PHP.

Bien utiliser les expressions booléennes

Que l’informaticien, développeur… qui n’a pas eu un jour à abuser des if/elseif/else lève le doigt. Il est nécessaire d’optimiser ces codes pour éviter qu’ils prennent trois kilomètres de long.

/*Boolean Expressions optimization*/
if ($a == true) {
    if ($a == true) {
        print "coucou";
    }
    else if($b == true) {
        print "coucou";
    }
}

Le code ci-dessus devrait être le suivant.

/*Boolean Expressions optimization*/
if ($a && ($b || $c)) {
    print "coucou";
}

Utiliser for à la place de while

/*Use for instead of while*/
$i = 0;
while($i < 18) {
    /*SOMETHING TODO*/
    $i++;
}
/*Shorter*/
for($i = 0; $i < 18; $i++) {
    /*SOMETHING TODO*/
}

Utiliser la récursivité

La récursivité n’est pas toujours bien comprise ni utilisée. Une mauvaise utilisation amène très vite à des programmes qui tournent en boucle dans le vide. Le principe de la récursivité est d’effectuer le même traitement sur un élément. Ci-dessous se trouve la célèbre suite de Fibonaci

/*Write recursively*/
function fibonacci($n) {
    $f1 = 1;
    $f2 = 0;
    $total = 0;
    if( $n == 0 || $n == 1)
        return $n;
    for($i = 2; $i <= $n; $i++) {
        $fib = $f1 + $f2;
        $f2 = $f1;
        $f1 = $fib;
    }
    return $fib;
}
/*Shorter*/
function fibonacci($n) {
    if ($n <= 2) return 1;
    else return fibonacci($n-1) + fibonacci($n-2);
}

L’opérateur ternaire

Je parlais plus haut de réduction du nombre de lignes de code lors de l’utilisation des if. Il est possible de réduire encore plus avec l’opérateur ternaire. Celui permet d’écrire un if/else sur un seule et unique ligne.

/*Ternary Operator*/
if ($iCompteur > 550)
    $bBool = true;
else
    $bBool = false;
/*Shorter*/
$bBool = $iCompteur > 550 ? true : false;
/*Even shorter*/
$bBool = $iCompteur > 550;

Combinaison arithmétique et opérateurs

Il s’agit sans doute de l’astuce la plus connue et utilisée. Elle permet d’identifier tout de suite ce qui est effectué.

/*Combination Arithmetic and Assignment Operators*/
$iCompteur = $iCompteur + 1000;
/*Shorter*/
$iCompteur += 1000;

Il en existe d’ailleurs un certain nombre qu’il faut connaître.

/*Combination Arithmetic and Assignment Operators*/
+= Addition
-= Soustraction
/= Division
*= Multiplication
%= Modulo
.= Concatènation
++ Incrémentation de 1
-- Diminution de 1
|= Opérateur logique ou
&= Opérateur logique et
^= Opérateur logique ou exclusif

Sens d’écriture du if

Entre le test et l’assignation à une variable, il n’existe dans la plupart des langages qu’un caractère de différence. Il est très facile de l’oublier et ainsi de générer une assignation alors qu’on voulait écrire une expression booléenne.

/*Test*/
if ($a == 1) echo "coucou";
/*Setting the variable $a to 1*/
if ($a = 1) echo "coucou";
/*Could be written this way to avoid the mistake */
if (1 == $a) echo "coucou";
/*The following code would generate a fatal error you would detect*/
if (1 = $a) echo "coucou";

Accès au blog

Les lecteurs assidus l’auront remarqué, le blog n’était plus accessible depuis quelques jours. En effet nous avions lancé une routine automatique sur notre serveur dédié, mais celle-ci a apparemment planté quelque part et rendu inaccessible toute les applications du serveur. L’assistance technique a résolé le problème et finit la manipulation commencée le week end dernier.

Tout est désormais revenu à la normale…

Star Wars en ascii art

Aujourd’hui je vous propose un petit post de pur Geek. Certains d’entre vous connaissent peut être le ASCII art. En fait cette notion est connu de tout le monde, absolument tout le monde. En voici quelques exemples :

  • :-)
  • ‘-(
  • ^_^ (que Lyr et moi utilisons beaucoup

Vous l’avez compris, l’ASCII art consiste à réaliser des images à partir des caractères ASCII. L’image ci-dessous vous montre ces caractères.

Caractères ASCII

Caractères ASCII

Les smileys font parti de cet art, c’est pour cela que tout le monde connaît l’ASCII art sans vraiment savoir ce que c’est. Voici un exemple qui je pense devrait rappeler des souvenirs aux personnes de notre génération.

                        MMMMM
                          MMMMMM
                            MMMMMMM
                             MMMMMMMM     .
                              MMMMMMMMM
                              HMMMMMMMMMM
                               MMMMMMMMMMMM  M
                               MMMMMMMMMMMMM  M
                                MMMMMMMMMMMMM  M
                                MMMMMMMMMMMMM:
                                oMMMMMMMMMMMMMM
      .MMMMMMMMMMMMMMo           MMMMMMMMMMMMMMM M
MMMMMMMMMMMMMMMMMMMMMMMMMMM      MMMMMMMMMMMMMMMM
  MMMMMMMMMMMMMMMMMMMMMMMMMMMM.  oMMMMMMMMMMMMMMM.M
    MMMMMMMMMMMMMMMMMMMMMMMMMMMM  MMMMMMMMMMMMMMMM
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
        oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
          MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
            MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:                     H
             MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM                  .         MMM
              MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM              M       MMMMMM
               .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM          M   MMMMMMMMMM
        MM.      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM       M MMMMMMMMMMMM
            MM    MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM    .MMMMMMMMMMMMMM
              MM  MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
                MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
       .MMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
          HMMMMMMMMMMMMMMMMMMMMM.MMMMMMMMM.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
             MMMMMMMMMMMMMMM MMM.oMMMMMMM..MMMMMMMMM:MMMMMMMMMMMMMMMMMMMMMMM
               MMMMMMMMMMMMMM MM..MMMMMMM...MMMMMMM. MMMMMMMMMMMMMMMMMMMMM
                 MMMMMMMMMMMMMMM ..MMMMMM...MMMMMM ..MMMMMMMMMMMMMMMMMMM
                  MMMMMMM:M.MMM.M.. MMMMM M..MMMMM...MMMMMMMMMMMMMMMMMM  MMM
                    MMMM. .M..MM.M...MMMMMM..MMMMM.. MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .
                     MMMM..M....M.....:MMM .MMMMMM..MMMMMMM...MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
                      MMM.M.. ...M......MM.MMMMM.......MHM.M  .MMMMMMMMMMMMMMMMMMMMMMMMM
                 MMMMMMMM..MM. . MMM.....MMMMMM.M.....M ..MM..M MMMMMMMMMMMMMMMMMMM
                    .MMMMMHMM. ..MMMM. MMM............o..... . .MMMMMMMMMMMMMMM
                       MMM. M... .........................M..:.MMMMMMMMMMMM
                         oMMM............ .................M.M.MMMMMMMMM
                            .....MM........................ . MMMMMM
                           M.....M.....................o.MM.MMMMMMMM.
                            M........................M.. ...MMMMMMMMMMMMMo
                              :....MMM..............MMM..oMMMMMMM
                               M...MMM.............MMMMMMM
                                  .............:MMMMMMMM
                                  M..... MMM.....M
                                  M M.............
                                  ................M
                               ooM.................MM  MoMMMMMoooM
                          MMoooM......................MoooooooH..oMM
                      MHooooMoM.....................MMooooooM........M
                    oooooooMoooM......... o........MoooooooM............
                    Mooooooooooo.......M.........Moooooooo:..............M
                   MooMoooooooooM...M........:Mooooooooooo:..............M
                  M..oooooooooooo .........Mooooooooooooooo..............M
                 M...Mooo:oooooooo.M....ooooooooooooooooooo..M...........M
                  ...oooooMoooooooM..Mooooooooooooo:oooooooM.M...........M.
                 M...ooooooMoo:ooooMoooooooooooooHoooooooooH:M. ...........:
                 M..MoooooooMoooooooooooooooooo:ooooooMooooMoM..............M
                 M..ooooooooooMooooooooooooooHoooooooMooHooooM...............M
                 ...ooooooooooooooooooo:MooooooooooooooMoMoooM................
                M...oooooooooooooooooooooooooooooooooooooMooMM................M
                ...MooooooooooooooooooooooooooooooooooooooooMo ................
                ...MooooooooooooooooooooooooooooooooooooooooM M................M
               M...ooooooooooooooooooooooooooooooooooooooooM   ................M
               ...MoooooooooooooooooooooooooooooooooooooooMM   .:...............
               .....MooooooooooooooooooooooooooooooooooooMoo       .............M
               M...... ooooooooooooooooooooooooooooooooooooM       M..............M
               M........MooooMMM MM MM  MMMMMMMMMooooooooM         M...............M
               .........HM     M:  MM :MMMMMM          M           M...............
              M..........M     M   MoM M                           M................M
              M.........:M  MoH  M M M MooooHoooMM.   M             M...............M
              M..........Moooo MMooM    oooooMooooooooM              M..............H
              M.........MooooM  Mooo  : ooooooMooooMoooM              M........ . .o.M
              H..  .....ooooo   oooo  M MooooooooooooooM               M... MMMMMMMMMMM
              MMMMMMMMMMooooM M oooo  .  ooooooMooooooooM              .MMMMMMMMMMMMMMM
              MMMMMMMMMMooooH : ooooH    oooooooooooooooo               MMMMMMMMMMMMMMM
              MMMMMMMMMMoooo    ooooM    Moooooooooooooooo              .MMMMMMMMMMMMMMM
              MMMMMMMMMMoooo    ooooM    MooooooooooooooooM              MMMMMMMMMMMMMMM
              MMMMMMMMMMoooM    ooooM     ooooooooooooooooo               MMMMMMMMMMM:M
              MMMMMMMMMMoooM   MooooM     oooooooooooMoooooo               MH...........
               . ......Mooo.   MooooM     oooooooooooooooooo              M............M
              M.M......oooo    MooooM     Moooooooooooooooooo:           .........M.....
              M.M.....Moooo    MooooM      ooooooooooooooooooM            .M............
              .......MooooH    MooooM      oooooooooMoooooooooo          M..o...M..o....M
              .o....HMooooM    MooooH      MooooooooMooooooooooM          .:M...M.......M
             M..M.....MoooM    :o ooo:    .MooooooooHooMoooooooooM         M M... ..oM.M
              M...M.:.Mooo. MMMMooooo   oooooooooooMoooooooooooooM          ....M. M
               M:M..o.Moooooooooooooo MooooooooooooooMooooooooooooM          .Mo
                      MooooooooooooooMooooooooooooMoMoooooooooooooo
                      Mooooooooooooooo:ooooooooooooooooooooooooooooo
                      ooooooooooooooooMooooooooooMoooooooooooooooooo
                      ooooooooooooooooMoooooooooooMooooooooooooooooHo
                      ooMooooooooooooooMoooooooooooooooooooooooooooMoM
                     MooMoooooooooooooo.ooooooooooooooooooooooooooo:oM
                     MoooooooooooooooooooooooooooooooooooooooooooooooM
                     MoooMooooooooooooooMooooooooooooooooooooooooooooo.
                     MoooMooooooooooooooMoooooooooooooooooooooooooMooooM
                     MooooooooooooooooooMoooooooooooooooooooooooooMoooooM
                     MooooMoooooooooooooMoooooooooooooooooooooooooMoHooooM
                     ooooooMooooooooooooooooooooooooooooooooooooooooMoMoooM
                    MooooooooooooooooooooMooooooooooooooooooooooooooMoooooH:
                    MoooooooMooooooooooooMoooooooooooooooooooooooooooooHoooM
                    MooooooooMoooooooooooMoooooooooooooooooooooooooMoooMooooM
                    Moooooooooooooooooooooooooooooooooooooooooooooo.oooMooooo
                    MoooooooooooooooooooooooooooooooooooooooooooooMoooooooooM
                     MooooooooooooooooooooMoooooooooooooooooooooooooooooooooM
                      MooooooooooooooooooooMHooooooooooooooooooooMoooo:ooooo
                       MMooooooooooooooooooMoMHoooooooooooooooooooooooMooooo
                        MMoooooooooooooooMMooo MMooooooooooooooooooooooooooM
                        MMMoooooooooooooMooooo  oooooooooooooooooooooMooooo
                        MooMMoooooooooMoooMMoM  ooooHooooooooooooooooMooooM
                        MooooMooooooMooooMoooM  MoooooMoooooooooooooMooooo
                        ooooooMMooooooooMooooM  MoooooooooMooooooooooooooM
                        HooooooMoooooooMooooM    HoooooooHooMooooooooooooo
                         oooMoooooooooHoooM         MoooooooooMoooooooooM
                          HooooooooooooHM             MooooooooMMoooooooM
                           MMMMMMMMMMMMMM                Moooooo:MooooHMM
                            MMMMMMM: ...                  MMMMMMMMMMMMMM
                           M............M                  MMMMMMMMM ....
                           M.MM..........                  M.............M
                        M ..............MM                 M..............
                     MMMMM............MMMM                 ..MMMMMMMM ....M
                   MMMMMMMMMMMMMMMMMMMMMMMM               MMMMMMMMMMMMM...M
                .MMMMMMMMMMMMMMMMMMMMMMMMMM               MMMMMMMMMMMMMMMMMM
                MMMMMMMMMMMMMMMMMMMMMMMMM                MMMMMMMMMMMMMMMMMMM
                :MMMMMMMMMMMMMMMMMMH                     MMMMMMMMMMMMMMMMMMM
                   By EBEN Jérôme                        MMMMMMMMMMMMMMMMMM
                                                         MMMMMMMMMMMMMMM
                                                          HMMMMMM

Vous pouvez en trouver d’autres sur le site Ascii-fr.com

Quelques internautes se sont ainsi amusés à recréer le tout premier épisode de la saga Star Wars. C’est stupéfiant. Je vous conseille de regarder car c’est impressionnant. Pour regarder, il vous suffit de

  • Sous OS X : Lancez le Terminal
  • Sous Windows : Cliquez sur « Démarrer » puis « Exécuter »

Puis de taper la commande suivante :

telnet towel.blinkenlights.nl

Pour les utiklisateurs de Windows Vista, il faudra auparavant vous assurer que la commande telnet est coché dans les fonctionnalités de Windows car elle est par défaut décochée.

Merci à fufu pour l’idée…

Le pagerank du blog franchit le premier niveau

Cela fait un moment que ce blog existe, souvenez-vous bien (pour ceux qui étaient là dès le début) j’écris sur ce blog depuis maintenant quelques années et ce premier article en avril 2006. J’ai il y a peu changé de CMS car Dotclear ne me convenait plus. Il était pour moi trop limité. WordPress est actuellement le numéro un des blogs personnels en dehors des plateformes pré-construites comme les skyblogs… Les changements ont porté leurs fruits puisque le page rank google du blog a enfin passé le premier niveau, plafonnant jusqu’ici à zéro.

Revenons précisément à ce qu’est le Page Rank (PR). Je précise qu’il s’agit du page rank google pour introduire cette notion qui est propre au système le calculant. Le plus connu est celui fait par Google, mais chaque moteur de recherche calcule le page rank des sites qu’il référence. Il n’y a donc pas de normes permettant de calculer le page rank d’un site, il s’agit plutôt d’une « recette » algorithmique de calcul que personne ne connaît exactement. Le page rank est un indicateur, un score affecté à chaque site web. Cette « note » est attribué selon des critères évoluant dans le temps en fonction des technologies. Ce qu’on appelle le web 2.0 a pas mal modifié le réseau et les liens externes entre les sites. La notion de liens externes est primordiale et prépondérante, mais personne ne sait à quel point. Un lien externe est un lien entre deux sites, du site A vers le site B. On dit que le site B a un lien externe en provenance de A.

Aujourd’hui en travaillant sur le référencement du blog, j’ai remarqué que le Page rank était de un comme vous pouvez le voir sur l’image ci-dessous.

Page rank

Page rank

Cela fait plaisir…

Joli bug sur IE

En informatique, il est très facile de créer des bugs. Pour ce qui est des sites internet, ils peuvent être de nature très différentes.

  • Erreur fatale qui affiche une page blanche…
  • Erreur javascript qui coupe la navigation de l’internaute (et qui donc s’en va…)
  • Erreur html ce qui donne des design déstructurés

Les origines sont multiples. Les solutions sont malheureusement pour nous aussi variées que le nombre de systèmes existants. Pour donner un exemple simple et compréhensible par tous, une solution qui fonctionnera sous Firefox ne fonctionnera pas forcément sous Internet Explorer (IE 6, 7 ou 8). Un consortium s’est donc créé au début de l’internet dans le but de créer des standards, sous la forme de recommandations et non de normes. Ces recommandations ne sont pas toujours respectées pour des raisons bien trop nombreuses à expliquer ici d’autant plus que ce n’est pas l’objet de ce post.

Je vais vous détailler un bug rencontré au boulot hier et ce matin.

Vous pouvez voir ci-dessous le visuel normal du site Dékio.

Page d'accueil de Dékio

Page d'accueil de Dékio

Voici le visuel de la page sur les navigateurs IE 6 et IE 7 de ce matin.

Page d'accueil de Dékio

Page d'accueil de Dékio

Comme vous pouvez le voir, toute la partie en dessous du head de la page n’apparaissait pas, ce qui est bien embêtant. La raison en était très simple. Une balise était correctement fermée selon les standards mais cette méthode n’est pas géré par IE. Le petit bout de code était :

<span class="fond" />

alors qu’il devait être pour ne pas avoir le bug

<span class="fond"></span>

L’expérience des développeurs plus anciens a permis de corriger le problème parce que ne le connaissant pas je ne sais pas si je l’aurai trouvé…

Joli non ?