Comment ont-ils fait ?

On est souvent impressionné par l’aspect graphique d’un site Web. C’est ce qu’on voit en premier et c’est donc naturel qu’il en soit ainsi. Je n’ai jamais vu quelqu’un être impressionné par l’intégration, l’optimisation sur les moteurs de recherche ou le développement d’un site Web au premier coup d’oeil…

Pourtant, sur certains sites, il est possible de voir directement que le travail de développement est colossal et, avec un sentiment de respect melé avec de la jalousie, la première question qu’on se pose est : « Comment ont-ils fait ? »

Aujourd’hui, j’ai décidé de vous présenter deux sites qui m’ont tapé dans l’oeil au niveau développement. Je vais tenter de vous montrer comment ils ont été réalisés, en supposant que la technologie utilisée côté serveur est PHP.

Le premier site est Is it Christmas?, un site qui va, via un calcul savant, vous dire si le jour courant est le jour de Noël ou pas. Si vous ne souhaitez pas revenir chaque jour sur le site pour vérifier, vous pouvez même suivre le flux RSS !

Voilà à quoi pourrait ressembler le code source de ce site :

<?php
$today = getdate();
$answer = (($today['mday'] == 25) && ($today['mon'] == 12)) ? 'YES' : 'NO';
echo $answer;
?>

Tout d’abord, je récupère la date du jour avec la fonction getdate de PHP. Cette fonction me renvoie un tableau où se trouve toutes les informations du jour courant. Ensuite, je vérifie que le jour courant est le 25 décembre, jour de Noël. Pour ce faire, je regarde si le jour du mois courant est le 25 (via $today['mday']) et si le mois courant est 12 (via $today['mon']) c’est-à-dire décembre. Si nous sommes le 25/12, la variable $answer aura la valeur YES. Dans tous les autres cas, elle aura la valeur NO. J’ai écrit ce script en trois lignes mais il est sans doute possible de le faire intelligemment en une ligne. J’attends vos propositions.

Le second site impressionnant dont je vais vous faire le making of est Sometimes Red, Sometimes Blue, un chef d’oeuvre dont je vous avais déjà parlé par le passé. Le principe de ce site est le suivant : parfois il est rouge, parfois il est bleu.

Voilà à quoi pourrait ressembler le code source de ce site :

<?php
$color_list = array("#0000FF", "#FF0000");
$color = $color_list[rand(0,count($color_list)-1)];
?>
<html>
<body style="background:<?= $color ?>;"></body>
</html>

Nos deux couleurs sont stockées dans le tableau $color_list. La partie compliquée se trouve entre les crochets. On y génère un nombre aléatoire entre 0 et 1 (c’est-à-dire 0 ou 1) ce qui va nous permettre de récupérer une des deux couleurs stockées dans le tableau. Il reste enfin à afficher cette couleur en fond de la page. De nouveau, il est possible de faire plus concis. J’attends vos propositions.

Pourquoi ce billet ?

* Pour rire
* Pour montrer qu’on peut TOUT faire en PHP
* Pour montrer que deux lignes de code suffisent pour créer un buzz.

20 Comments

  1. Hooli's avatar Hooli says:

    Pour le premier j’aurais plutôt fait comme ça :

    Like

  2. jblanche's avatar jblanche says:

    Allez encore plus court 🙂

    En ruby c’est encore mieux :
    <% color = [“#0000FF”, “#FF0000”].choice %>

    [Troll] Parfois (et surtout en ruby), une ligne suffit [/Troll]

    Like

  3. lapinlove404's avatar lapinlove404 says:

    Pour rigoler un peu plus, on pourrait reprendre le truc de “Sometimes Red, Sometimes Blue” pour faire varier l’ID du Body ou d’un autre “container”…

    Après, avec un peu de CSS, on pout alors s’amuser à changer la couleur de fond, les polices,…

    Like

  4. Tommy's avatar Tommy says:

    Par contre pour le second, j’avoue avoir un peu plus de mal pour faire plus concis tout en gardant l’aspect du tableau qui permet de rajouter plus de couleurs si besin.

    Par contre, c’est pas vraiment mieux en fin de compte…

    Pourquoi ce billet ?
    – Pour montrer qu’il y a de nombreux sites qui servent à rien et dont beaucoup de monde parlent.

    Like

  5. Tommy's avatar Tommy says:

    Bref sans les balises, ça donner ça :

    echo (date(‘d/m’) == ’25/12′) ? ‘YES’ : ‘NO’;

    $color_list = array(“#0000FF”, “#FF0000”);
    echo $color_list[time()%count($color_list)];

    Like

  6. aurels's avatar aurels says:

    Excellent.

    Like

  7. jblanche's avatar jblanche says:

    Pour le deuxième en PHP il y a array_rand

    $color_list = array(“#0000FF”, “#FF0000”);
    $color = array_rand($color_list);

    Like

  8. Palleas's avatar Palleas says:

    Moi déjà j’aurais plutôt essayé d’avoir un boolean plutot qu’un yes/no, plus pertinent pour les conditions :]

    Like

  9. Daaaaad's avatar Daaaaad says:

    Encore une preuve que le web est constitué d’idées 😉

    Like

  10. vinch's avatar Vinch says:

    Ah cool, je savais qu’il y avait moyen de faire mieux ! Merci pour vos propositions !

    Like

  11. Tommy's avatar Tommy says:

    Ah ouep, array_rand, pas con ^^

    Like

  12. bachus's avatar bachus says:

    Pour le 2ème en une ligne :
    $color = array_rand(array(“#0000FF”, “#FF0000″));

    Like

  13. vinch's avatar Vinch says:

    Ah voilà ce qui semble la solution la plus concise possible ! Bravo !

    On devrait toujours programmer tous ensemble, on arriverait à un niveau jamais égalé !

    Cependant, il ne faut pas oublier que même si être le plus concis possible, c’est bien, cela doit rester lisible pour que le mec qui doit repasser dans le code après nous ne s’arrache pas les cheveux. Il faut donc trouver un compromis, un juste milieu entre concision et lisibilité.

    Like

  14. Bachus's avatar Bachus says:

    Un bon code n’est pas un code concis.
    C’est un code commenté juste ce qu’il faut (ni plus, ni moins), lisible, avec des noms de variables et de fonctions explicite.

    Je vais peut-être provoquer les foudres en disant cela mais c’est comme l’optimisation. Optimiser à tout prix au détriment de la compréhension n’est pas non plus une bonne pratique (après tout dépend des projets).

    Cela vient de me donner une idée, je posterais sur mon blog les bonnes pratiques. Le débat est ouvert…

    Like

  15. vinch's avatar Vinch says:

    On est bien d’accord.

    Like

  16. ADN's avatar ADN says:

    Dans le cas de isitchristmas.com, tout est une question de point de vue, de gestion de l’information et d’analyse des coûts.
    Est-ce qu’au lieu d’engager un développeur (qui comme tout le monde sait coûte très cher de nos jours) pour passer son temps à écrire la ligne de PHP et générer l’XML il n’aurait pas mieux fallu payer des cacahuètes un étudiant-webmaster qui serait payer à faire deux mises à jour par an? (une le 24 à minuit et l’autre le 25 à minuit, plus fainéant que le papy Noël).
    :-))

    Like

  17. bachus's avatar bachus says:

    euh… pas sure car tu vas devoir le payer à 200% (travail de nuit oblige). De plus il y a de grandes chances que ton étudiant soit mort bourré à 23h30 et qu’il soit parti se coucher.
    Donc au final ton site ne sera pas ok.

    Alors que si tu avais payé un développer même avec un tarif horaire exorbitant (il faut +/- 9 sec pour écrire la ligne de code), cela t’aurais couté moins cher et tout serait opérationnel.

    Conclusion la solution la moins cher n’est pas toujours la bonne.

    Like

  18. ADN's avatar ADN says:

    Ouais, mais ton étudiant il est payé en Spéculoos. Même en 9 secondes ton dev peut pas être moins cher. 😀

    Like

  19. Nico B.'s avatar Nico B. says:

    On peut raccourcir les couleurs en ne codant que les valeurs différentes de zéro : $color = array_rand(array(”#00F”, “#F00″));

    Like

  20. dalila's avatar dalila says:

    slt je veux écris mon blog a moi

    Like

Leave a reply to aurels Cancel reply