Gaypride 2006
lundi 26 juin 2006 | Autour du monde
lundi 26 juin 2006 | Autour du monde
lundi 12 juin 2006 | Autour du monde
On en découvre de nouvelles tous les jours, même en cette prolifique ère skyblogienne...
Il est possible d'acheter ses déclarations d'amour.
Oui... Et c'est par ici que ça se passe (sans vouloir leur donner du pagerank trop facile). Je conçois que trouver des modèles de lettres pour l'administration ou son notaire favori soit très pratique, cependant c'est pousser le peu de considération pour sa dulcinée, un peu loin.
Vous remarquerez la subtilité dans les prix :
Tout est prévu, même la Déclaration d'amour après une séparation (2.00 €), ce qui ne manquera pas d'arriver si le ou la correspondant(e) concerné(e) se rend compte de la supercherie préfabriquée.
samedi 10 juin 2006 | Autour du monde
Fini le classique Pierre-Papier-Ciseaux, voici le RPS-25. Dynamite, serpent, hache, lune, singe, bombe nucléaire... il faudra se référer au schéma pour savoir qui bat l'autre, car il y a plus de 15 octillions de possibilités. Oui m'dame 15 octillions.
Voilà de quoi meubler de longues soirées d'hiver... rien que pour mémoriser la règle.
jeudi 8 juin 2006 | Autour du monde
Musicovery se propose de faire découvrir de nouveaux styles et artistes en suivant une playlist aléatoire figurée sous forme de carte, dont le thème de départ est fixé par vos goûts personnels : énergique ou calme, dark ou positif, parmi des styles plus que variés : Electro, Latino, Classique, Cinema, World, Reggae, Soul, Funk, Disco, Rap, R&B, Jazz, Gospel, Blues, Metal, Rock, Variété, Pop. Il est également possible de filtrer par décennie.
Espérons que le répertoire s'enrichira au fur et à mesure.
mercredi 7 juin 2006 | Autour du monde
Serez-vous capable de différencier un vrai sourire d'un faux ? Spot the fake smile (BBC).
(Score perso 17/20, il y a en réalité une petite astuce qui peut aider)
jeudi 1 juin 2006 | Autour du monde
Deux nouveaux langages sont venus tâter du polyglotisme.
J'ai aujourd'hui adopté...
... 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 :
Ceci va donc permettre de "tester" les quelques points suivants :
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 :
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.
mardi 30 mai 2006 | Autour du monde
mercredi 24 mai 2006 | Autour du monde
Voici les solutions du précédent blindtest.
Merci à tous les participants et bravo à ceux qui ont tout trouvé : xk_liber, lowweek, Frór, Madest, Globulvert, neFAST, et une parfaite inconnue.
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.
mardi 16 mai 2006 | Autour du monde
Nouveau blindtest OST, dont le principe est toujours de retrouver des titres de films à partir d'extraits musicaux. Les titres sont ceux des versions françaises (mais il se peut également qu'un titre soit officiellement en anglais, référence : Allociné pour l'orthographe).
Indices :
1. | ||
2. | ||
3. | ||
4. | ||
5. | ||
6. | ||
7. | ||
8. | ||
9. | ||
10. |
Blindtest terminé, les solutions sont disponibles ici.