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.
Pour le premier j’aurais plutôt fait comme ça :
LikeLike
Allez encore plus court 🙂
En ruby c’est encore mieux :
<% color = [“#0000FF”, “#FF0000”].choice %>
[Troll] Parfois (et surtout en ruby), une ligne suffit [/Troll]
LikeLike
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,…
LikeLike
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.
LikeLike
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)];
LikeLike
Excellent.
LikeLike
Pour le deuxième en PHP il y a array_rand
$color_list = array(“#0000FF”, “#FF0000”);
$color = array_rand($color_list);
LikeLike
Moi déjà j’aurais plutôt essayé d’avoir un boolean plutot qu’un yes/no, plus pertinent pour les conditions :]
LikeLike
Encore une preuve que le web est constitué d’idées 😉
LikeLike
Ah cool, je savais qu’il y avait moyen de faire mieux ! Merci pour vos propositions !
LikeLike
Ah ouep, array_rand, pas con ^^
LikeLike
Pour le 2ème en une ligne :
$color = array_rand(array(“#0000FF”, “#FF0000″));
LikeLike
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é.
LikeLike
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…
LikeLike
On est bien d’accord.
LikeLike
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).
:-))
LikeLike
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.
LikeLike
Ouais, mais ton étudiant il est payé en Spéculoos. Même en 9 secondes ton dev peut pas être moins cher. 😀
LikeLike
On peut raccourcir les couleurs en ne codant que les valeurs différentes de zéro : $color = array_rand(array(”#00F”, “#F00″));
LikeLike
slt je veux écris mon blog a moi
LikeLike