Archive pour 2006

Sourira bien qui sourira le dernier

mercredi 7 juin 2006 | Autour du monde

Serez-vous capable de différencier un vrai sourire d'un faux ? Spot the fake smile (BBC).

Spot the fake smile

(Score perso 17/20, il y a en réalité une petite astuce qui peut aider)

Pas la tête

lundi 5 juin 2006 | Pilule Rouge

Combien de temps reste-t-on conscient après avoir été décapité ?

Pas de fausse joie, j'ai renoncé à tester, parce qu'il aurait été dommage de ne pas pouvoir vous délivrer le résultat de l'expérience. Macabre ? Que nenni, simple curiosité scientifique. Personne n'ignore que la guillotine était vraiment hype aux alentours de la Révolution (mais à partir de 1792 seulement parce qu'il fallut moult benchmarks avant de lancer le produit sur le marché). Elle était considérée comme un moyen plus humain que la pendaison ou la simple hache rouillée. On avait beau condamner à mort, il n'en restait pas moins que le bien-être post-mortem était au coeur des préoccupations.

Guillotine vs Hache

Il existait alors un jeu très en vogue lors de la Terreur (période connue pour faire chauffer la lame biseautée). On demandait au condamné, une fois raccourci, de cligner des yeux autant qu'il le pouvait. Des témoins affirment ainsi avoir vu des têtes cligner jusqu'à 30 secondes. Lavoisier, qui était lui aussi un sacré farceur, fut guillotiné mais demanda à ses amis de guetter ses ultimes clins d'oeil, qui durèrent environ 15 secondes. Bon, sans présumer de ses forces, je pense qu'il aurait au moins pu avoir la décence de faire du Morse, afin de se rendre utile et transmettre à ses amis un dernier message, tel que "je vous l'avais bien dit" ou "c'est trop mortel, lol".

De la même façon, un docteur étudia le comportement d'un criminel passé à la "raccourcisseuse patriotique" :

[...] j'ai attendu plusieurs secondes. J'appelai alors d'une voix forte son nom, et je vis les paupières se soulever, puis ses yeux me fixèrent. Au bout de quelques secondes, les paupières se refermèrent lentement. J'appelai alors une nouvelle fois et de nouveau, sans aucun spasme, les yeux indiscutablement vivants me fixèrent. Un troisième cri n'eut aucun effet.

Le New Scientist atteste que la conscience perdure quelques secondes, avant d'être victime de la perte de pression sanguine. Il s'avère aussi que la décapitation est douloureuse (sans blague), bien qu'on puisse penser que la colonne vertébrale tranchée désactive certaines sensations (ie : iptables -P INPUT DROP).

Pour terminer en beauté, dans un final poético-historique comme on les aime, et pour illustrer la volonté de trancher net en recourant aux nouvelles technologies du 18e siècle, il semblerait que Mary reine d'Ecosse ait été décapitée à la hache mais que le bourreau (peu habile) dut s'y reprendre à trois fois... Avant de déclarer forfait et de terminer le travail au couteau. Il semblerait aussi qu'elle ait peu apprécié cette incompétence (en témoignent ses nombreux cris et grognements).

Le sujet de notre prochaine étude : est-il nécessaire de désinfecter une guillotine ?

De PHP à Python et Ruby (en passant par C, Perl et Java)

jeudi 1 juin 2006 | Autour du monde

Deux nouveaux langages sont venus tâter du polyglotisme.
J'ai aujourd'hui adopté...

Python Ruby
Python et Ruby

... pour tenter de répondre à la (trollesque) question suivante : quel langage choisir pour écrire un script d'usage courant en un minimum de temps, sans forcément prendre en considération les performances ? La logique voudrait que l'on s'oriente vers un langage interprété, faiblement typé, fourni avec de nombreuses librairies pour se faciliter la vie et écrire un minimum de lignes.

Sachant aussi que beaucoup de monde est familiarisé à PHP, quelle est la facilité de transition vers ces langages ? Ou encore, lorsqu'on ne connaît rien : vers lequel s'orienter pour débuter ?

Je suis parti, pour cette comparaison totalement subjective, d'un script PHP écrit en 5 minutes, et je l'ai traduit en deux autres langages que je connaissais pas encore : Python, et Ruby qui est à la mode actuellement grâce à Ruby On Rails.

Par curiosité, je l'ai aussi écrit en Perl, Java et C. Mais pas d'assembleur pour sauver un minimum de vie sociale (en évitant aussi tout ce qui est Eiffel, Smalltalk, Fortran, Lips ou Caml, on n'est pas des bêtes). (Que celui qui a dit Promela sorte).

Le but est donc d'écrire le même script dans tous ces langages. Celui-ci va devoir :

  • Récupérer une page xhtml distante via http
  • Partir à la recherche du contenu de la balise <title>
  • Le comparer au dernier <title> mémorisé dans un fichier
  • Envoyer un mail d'avertissement à une liste de destinataires s'il y a eu modification
  • Ecrire le nouveau <title> dans le fichier

Ceci va donc permettre de "tester" les quelques points suivants :

  • syntaxe générale du langage (blocs, structures de contrôle, overhead en libs)
  • types (chaînes de caractères, listes et tableaux)
  • facilité d'emploi des PCRE (expressions régulières)
  • facilité d'emploi des connexions
  • lecture et écriture de fichiers
  • efficacité et facilité d'utilisation des modules préfabriqués (http/smtp) s'ils existent

D'autres particularités auraient aussi pu être évaluées : la connexion vers des bases de données (MySQL), le support du XML, la POO pure, les fonctions, etc. Mais ce test doit rester simple et équitable (autant qu'il puisse l'être). Chacun de ces langages a ses spécificités et son usage de prédilection. Un seul critère peut être éliminatoire dans le choix d'un langage. C'est donc là un cas particulier qui est mis en valeur, et non pas un benchmark (on n'écrit pas de moteur 3D en php).

Il se peut que chaque code n'ait pas été écrit comme il pourrait l'être idéalement. Premièrement parce que ça fait un moment que je n'ai plus fait de Java, que le C n'est pas mon compagnon de chambrée favori, que j'ai découvert Python et Ruby sur le moment, et qu'il y a des dizaines de façons d'arriver à ses fins. Une autre question subsidiaire vient alors s'ajouter : s'oriente-t-on directement vers la meilleure syntaxe ?

Voici les sources obtenues, dans l'ordre de leur création :

Java Perl PHP

Résultats et impressions (liste non exhaustive) :

Python et Ruby sont proches, ce qui est compréhensible car Ruby reprend des concepts de Python et Lisp. Ruby a l'avantage d'être entièrement orienté objet.

PHP, Python et Ruby sont bien fournis en libs HTTP et SMTP/mail. Lorsqu'on cherche à développer les mêmes types de communications dans les autres langages, il faut creuser bien plus profond que l'emploi de fonctions standard. Il existe BeautifulSoup pour Python, qui permet de parser du html très rapidement. Je ne l'ai pas utilisé ici, mais deux lignes auraient été gagnées.

Evidemment en C, il ne faut pas s'attendre à grand chose : pour récupérer la page et envoyer un mail j'ai exploité les sockets en dur (protocoles HTTP et SMTP).

Même chose pour Java : au point de vue HTTP une petite pirouette grâce à une classe existante, mais pour l'envoi des mails SMTP reste favori (tandis que javamail serait exploitable, mais son adjonction au projet eût été lourd et long).

Autre évidence : lorsqu'on gère soi-même ce type de connexion, on ne peut gérer toutes les erreurs (du moins, on n'en prend pas le temps). Il y a donc, par défaut, moins de protection à ce niveau-là en C et en Java. Ce qui conduit à négliger la stabilité et la sécurité dans des langages de plus bas niveau lorsqu'on manque de temps.

Perl a toujours pour lui la force des expressions régulières et une écriture compacte. Cependant, il n'y a par exemple pas de fonction trim, d'où l'écriture nécessaire d'une pirouette :

my $str = shift;
	$str =~ s/^\s+//;
	$str =~ s/\s+$//;
	return $str;
}

En ce qui concerne HTTP et SMTP, les modules libwww pour HTTP et libmime-lite-perl pour SMTP sont d'une utilisation fluide comme dans les autres langages de script, cependant ils ne sont pas nécessairement livrés avec Perl. Il faudra donc peut-être les installer manuellement, après avoir deviné leur existence.

En C, il n'y a pas de facilité pour les regexp. Ce qui conduit au traditionnel jonglage avec les pointeurs. C'est un véritable frein lorsqu'on est amené à effectuer des manipulations autres qu'une simple concaténation, au contraire de PHP/Python/Ruby qui sont vraiment orientés vers la manipulation de chaînes. Il n'y a par exemple là aussi pas de fonction trim, d'où :

found = strlen(last_title)-1;
while(last_title[found] == '\n' || last_title[found] == '\r') last_title[found--]=0;

Ca n'a rien de sorcier, mais ça use le clavier.

Conclusion : il m'a fallu environ 5 minutes pour le script PHP, 40 minutes pour Python, 25 minutes pour Ruby, 15 minutes pour Perl, et beaucoup plus pour le code C et Java.

Pour établir un classement - résultat prévisible dès le départ - en terme de facilité : PHP = Ruby > Python > Perl >> Java >> C. Mais là aussi, il s'agit d'un avis personnel, il appartient à chacun de moduler selon ses propres compétences et habitudes.

L'avenir sourit donc aux langages de script interprétés et épaulés par un maximum de librairies - c'est une conclusion évidente. Il est cependant dommage que la doc de Python soit soviétique, et que celle de Ruby soit encore en devenir. Lorsqu'on a l'habitude de la documentation PHP traduite dans toutes les langues, avec un moteur de recherche performant, un bon niveau de détails sur toutes les fonctions, des commentaires pertinents et des exemples, ça change.

Sources : Python Global Module Index, Dive into Python, Rubycentral : Class and Library Reference, Rubycentral : Programming Ruby, et tout ce qui est doc Java API par Sun, man, rtfm et stfw.

En Corée aussi...

mardi 30 mai 2006 | Autour du monde

Pr4y est devenu adepte (collection sur 2 jours).

Mountain Dew Coréen

Thx pr4y.

Live from NYC

lundi 29 mai 2006 | 3617 MyLife

New York City... Merci à Caroline pour les photos.

New York City - Dew
New York City - Mountain Dew
New York City

Lucrèce Borgia

samedi 27 mai 2006 | Pilule Rouge

L'Histoire compte de nombreuses sagas, dont les échos parviennent encore à transcender les siècles, pour nous enseigner que le passé méritait lui aussi son lot de paparazzi. Mais des paparazzi à cheval et à chevalet, improductifs et nécessiteux, car il fallait que le sujet pose plusieurs heures pour parvenir à voler son image sur la toile.

Parmi ces sagas, celle de la famille Borgia, qui a fourni deux papes et certains empoisonneurs mémorables. Les Borgia furent accusés pêle-mêle de fratricides, d'incestes, d'empoisonnements et de trahisons diverses.

Bref, une famille noble qui aurait rendu Stéphane Bern tout frétillant, prêt à se faire téléporter au XVe siècle, tel starminator, dans une nuée de crépitements et de fumée, avec pas grand chose sur lui. Parmi les Borgia, il aurait pu interviewer César, Rodrigo et Lucrèce, qui était un peu la Paris Hilton de la Renaissance, avec pourtant comme différence fondamentale une grande intelligence.

Lucrèce Borgia

Parlons bio. Lucrèce était la fille du cardinal Rodrigo, soeur de César, fiancée à 11 ans à Chérubin de Centelles et à Gaspare de Procida (simultanément oui oui, on ne s'ennuyait pas au château Saint-Ange), mariée à 13 ans à Giovanni Sforza, maîtresse de Perotto (tué par César), mère d'un fils resté anonyme, mariée à Alonso d'Aragon (tué par César), mère de Rodrigo de Bisceglie, mariée à Alfonse d'Este, mère d'Hercule, d'Hippolyte, d'Eleonore et de Francesco, accusée d'avoir entretenu des rapports avec son père.

Le Pape Borgia

Rodrigo devint pape sous le nom d'Alexandre VI (Lucrèce étant donc la fille plus ou moins avouée du Pape). L'histoire de la famille était empreinte de mariages arrangés, afin de gagner influences et territoires, mais Lucrèce était en elle-même un beau parti (fille de pape, dot considérable et beauté réputée...). Ce furent là les premières étapes de la déchéance des papes, qui menaient alors une vie bien dissolue. Pendant ce temps, Savonarole - le prédicateur - exercait de son influence à Florence pour dénoncer les péchés de l'Eglise. Voilà donc le cadre de l'intrigue, extrêmement condensé.

Afin de s'imprégner un peu plus de personnage de Lucrèce, avisons la description qu'en fait Victor Hugo, dans le drame du même nom.

Prenez la difformité physique la plus hideuse, la plus repoussante, la plus complète ; placez-la où elle ressort le mieux, dans le coeur d'une femme, avec toutes les conditions de beauté physique et de grandeur royale, qui donnent de la saillie au crime ; et maintenant, mêlez à toute cette difformité morale en un sentiment pur, le plus pur que la femme puisse éprouver, le sentiment maternel ; dans votre monstre, mettez une mère ; et le monstre intéressera, et le monstre fera pleurer, et cette âme deviendra presque belle à vos yeux. La maternité purifiant la difformité morale, voilà Lucrèce Borgia.

Comme on peut le voir, Victor en avait gros sur la patate. Mais si l'on retient encore aujourd'hui le nom des Borgia, c'est surtout pour leur exquise maîtrise du poison. J'en viens là au but de l'histoire : vous enseigner la recette secrète du poison des Borgia, la Cantarella, dont on dit que le pape lui-même faisait abondamment usage. Nous avons tous un ennemi dont le débarras apporterait un nouveau souffle à l'humanité, un propriétaire hargneux ou un facteur envahissant très porté sur le café.

Borgia au Poison

Le processus de fabrication nous est cette fois-ci conté par Voltaire.

La bave d'un cochon rendu enragé en le suspendant par les pieds, la tête en bas, et en le battant longtemps jusqu'à la mort. [...] Il semble que le poison des Borgia ait été un mélange d'acide arsénieux et d'alcaloïdes putrides. Il se préparait ainsi : on sacrifiait un porc, on saupoudrait d'acide arsénieux les organes abdominaux, et on attendait que la décomposition - retardée d'ailleurs par l'arsenic - fût complète. Puis, suivant qu'on comptait l'utiliser sous forme de poudre ou de gouttes, on n'avait plus qu'à faire sécher la masse putréfiée ou à en recueillir les liquides.

Bon, c'est sûr, il faut habiter à la campagne. Parce que le cochon pendu à la tringle du rideau de douche, c'est un coup à se retrouver en pénurie de Chanel N°5 avec la brigade des moeurs et 150 kg de viande sur le dos.

Bonne fête des mères... et des belles-mères (mais ceci n'a aucun rapport avec la recette précitée bien sûr). Ô pardon, bonne fête maman.

Blindtest 5 - Solutions

mercredi 24 mai 2006 | Autour du monde

Voici les solutions du précédent blindtest.

  1. Sleepy Hollow (Danny Elfman)
    Sleepy Hollow
  2. La cité de la peur (interprété par Alain Chabat et Gérard Darmon)
    La cité de la peur
  3. Lawrence d'Arabie (Maurice Jarre)
    Lawrence d'Arabie
  4. La soupe aux choux (Raymond Lefèvre)
    La soupe aux choux
  5. L'histoire sans fin (Giorgio Moroder)
    L'histoire sans fin
  6. La vie est un long fleuve tranquille (Paroles de Florence Quentin et Étienne Chatiliez, musique de Gérard Kawczynski)
    La vie est un long fleuve tranquille
  7. Forrest Gump (Alan Silvestri)
    Forrest Gump
  8. L'étrange Noël de Monsieur Jack (Danny Elfman)
    L'étrange Noël de Monsieur Jack
  9. Princesse Mononoke (Joe Hisaishi)
    Princesse Mononoke
  10. Minority Report (Schubert - Symphonie n°8 inachevée)
    Minority Report

Merci à tous les participants et bravo à ceux qui ont tout trouvé : xk_liber, lowweek, Frór, Madest, Globulvert, neFAST, et une parfaite inconnue.

Survivor

mardi 23 mai 2006 | 3617 MyLife

Que les derniers survivants tremblent...

Oeufs survivants

Votez par SMS pour déterminer lequel sera éliminé en premier.

Photo sans fin

samedi 20 mai 2006 | Pilule Rouge

Photo sans fin
Photo sans fin, par 10ways (Shockwave)

Eshope Alsacréations

vendredi 19 mai 2006 | Autour du monde

Ouverture aujourd'hui de boutique.alsacreations.com proposant - pour l'instant - une petite vingtaine de produits qui se verront rejoints au fur et à mesure par d'autres exclusivités...

Sont principalement disponibles t-shirts, sacs à dos, pochettes, tapis de souris, string et choppe de bière...

Deux méthodes sont employées pour la conception des t-shirts : le transfert numérique et la flexographie. La première méthode (bitmap) ne s'applique que sur les t-shirts de couleur blanche, la seconde méthode (vectorielle) s'applique sur toutes les couleurs.