dimanche, 16 septembre 2007

Algue? piézo-phosphorescente

Mercredi 12 septembre 2007, tard le soir, plage de Vieux-boucaux dans les Landes française.

Nous étions alors en vacances entre amis. Une soirée des plus tranquilles, avec comme il se doit un passage sur la plage pour boire quelque breuvage local. Cadre peu crédible pour la suite de l'histoire si nous n'avions pas été 9 à être témoin du phénomène que nous avons découvert ce soir-là.

C'est en s'approchant de l'océan qu'on aperçut des points lumineux autour de nos pas. Des points d'une légère lumière bleutée s'illuminaient à chaque pression de nos pieds sur le sol dans un rayon d'une vingtaine de centimètres, avant de disparaitre 3 secondes plus tard.
Phénomène qui nous a émerveillé une bonne partie de la soirée, mais qui reste un mystère pour nos esprits curieux...

Une hypothèse d'une algue ou d'un organisme piézo-phosphorescent est de mise, car les points de couleurs apparaissaient dans une zone semblable à la zone de compression imposée par nos pas...

Mais les hypothèses les plus folles ont été imaginées sous cette nuit claire et chargée d'étoiles filantes.

lundi, 20 août 2007

Générateur automatique de visualisation de site

Un nom qui ne donne pas très bien en français, mais j'ai développé avec une petite équipe un générateur automatique de visualisation de site.

Le principe est simple : on donne une url au générateur qui nous retourne une image qui est une copie d'écran du site qu'on aurait eu dans notre navigateur. Le coeur du générateur utilise le moteur Gecko pour le rendu de la page web.

Une démo du service de génération de visualisation de site est disponible en ligne, et l'idée est de développer une puissant API pour interfacer le service. L'idée principale de l'API est d'utiliser une url de callback qui permettra au service directement de retourner l'image une fois générée afin d'éviter au client de devoir poller pour controler si l'image est créée ou pas.

Les possibilités du service sont les suivantes :

  • Taille des images paramétrables (120x90, 160x120, 320x240, 640x480, 1024x768)
  • Format d'image JPEG ou PNG
  • Ajout de délai avant la capture (pour les sites en flash par exemple)
  • Mise-à-jour hebdomadaire, mensuelle ou annuelle des captures
Les feedbacks sont bien évidemment encouragés, et d'autres news sur l'API & CO suivront.

jeudi, 16 août 2007

Uniqid ou la contre-intuitivité des arguments

D'après le manuel PHP, le prototype de la fonction uniqid est le suivant :

string uniqid ( [string prefix [, bool more_entropy]] )
Le deuxième paramètre à l'air réellement intéressant, dans la mesure où il assure une meilleure unicité de la chaine produite. Une propriété qui de toute évidence nous intéresse si on utilise cette fonction uniqid.

Sans s'étendre sur la probabilité de collision entre les 2 appels (ce que j'étendrai plus longuement dans un autre article), je voulais juste montrer la différence de vitesse d'exécution qu'induisait ce paramètre more_entropy. Un petit script faisant 100 appels à uniqid avec une valeur possible du paramètre, nous donne le résultat suivant (!) :

100 * uniquid(mt_rand()) en 0.799283981323 seconde

100 * uniquid(mt_rand(), true) en 0.00346183776855 seconde

Chose extrêmement intéressante, le temps d'exécution de la fonction est 3 ordres de grandeurs en dessous si on demande une meilleures unicité du résultat.

La question obligée est donc : pourquoi est-ce que cette fonctionne ne prend pas par défaut cette option, puisqu'elle a tous les avantages (meilleures résultats, plus rapide) ?

lundi, 13 août 2007

Types ENUM avec MySQL

Toujours en train de travailler avec MySQL, et encore pour un bon moment, voici une particularité du type enum :

Soit un champ field2 :

`field2` enum('0','1') NOT NULL default '0'
Soit une requête :
SELECT * FROM ... WHERE ... AND field2 = 1
Le résultat de cette requête est intéressant dans le sens où MySQL va sélectionner tous les tuples dont la valeur du champ field2 vaut '0'. Pourquoi cela ? Parce qu'en passant le 1 sous forme d'entier, MySQL va l'associer à la première valeur de l'énumération, '0' donc. Dans le même ordre d'idée WHERE ... AND field2 = 2 sélectionnera tous les tuples dont field2 vaut '1'.

La requête

SELECT * FROM ... WHERE ... AND field2 = '1'
fournira quant à elle la juste réponse. Attention donc avec les types des valeurs, surtout en PHP...

lundi, 6 août 2007

Mysql NT vs Unix : quand les systèmes de fichier font des différences

La question posée ici est la suivante : le nom des tables dans une base de données MySQL est-il sensible à la casse ou pas ?

La réponse dépend du système sur lequel le serveur tourne... Et cette différence vient même d'une manière plus intrinsèque du système de fichier sur lequel repose la base de données.

Explication :

Pour MySQL, une base de données est un répertoire du même nom dans lequel se trouvent des fichiers représentant les tables. Le nom des fichiers est naturellement identique aux tables, à l'extension prêt.

Pour savoir sur une base existe, MySQL va chercher si le répertoire correspondant existe. Du même principe pour accéder à un table il va ouvrir le fichier lié.

Sur un système de fichier Unix, ext3 ou reiserfs par exemple, un fichier base1/table1.MYI n'est pas le même que base1/tAbLe1.MYI, donc une requête "SELECT * FROM table1" ou "SELECT * FROM tAbLe1" ne produira pas le même résultat. Sur un système de fichier NTFS par contre, les chemins ci-dessus pointeront vers le même fichier, et donc les 2 requêtes précédents fonctionneront.

En conclusion, le nom des bases et tables MySQL sont sensibles à la casse sur un système Unix, et non sensible à la casse sur un système Windows.

lundi, 14 mai 2007

Citer Montaigne quand on parle d'informatique

Chose pas forcément aisée, mais Jean Véronis, professeur de linguistique et d'informatique à l'université de Montpellier y est parvenu à merveille jeudi 18 janvier, dans la capsule de Monsieur Pain.

"Scrobbler" Tome II, jeudi 18 janvier 2007

La capsule, une émission à écouter et ré-écouter...

vendredi, 6 avril 2007

Je sers mon pays...

Joyeuses Pâques !

Pendant que les uns vont profiter du climats printanier annoncé pour ce week-end de Pâques, d'autres remplissent leurs obligations de citoyens en gardant un parc véhicule (4 piranha 8x8, 3 eagles et quelques duros) ...

Un ingénieur, un vrai

Samedi 31 mars a eu lieu la cérémonie de remise des diplômes : la Magistrale. Très belle cérémonie, en collaboration avec le cirque StarLight qui animaient les pauses inter-discours. Même Paul Allen était présent et serrait la main de tous les nouveaux ingénieurs. Non là je fabule un peu sur la poignée de main, mais Paul était bien présent et nous a fait un discours de 40 minutes. Une galerie de photo de la Magistrale 2007 est disponible.

Puis fut le temps de la remise des diplômes, donc du passage sur scène et de la photo de la volée "Master in Computer Science Printemps 2007".

Et petite cerise sur le gâteau, qui est aussi l'aboutissement du travail régulier que j'ai fourni tout au long de mon travail de Master, j'ai reçu le prix de la Société Suisse des entreprises en qualité de deuxième meilleure moyenne du cycle Master de la faculté d'Informatique. Voilà une ligne de plus à ajouter à mon CV :)

samedi, 31 mars 2007

Camp de ski avec l'école primaire de Prez-vers-Noréaz

La semaine du 26 au 30 mars 2007 a eu lieu le camp de ski de l'école primaire de Prez-vers-Noréaz à Villars-sur-Ollon. Une semaine magnifique retransmise en mots et en images sur le site de l'école de Prez-vers-Noréaz.

mardi, 13 mars 2007

Travail de Master : quelques chiffres (suite)

Quelques chiffres supplémentaires pour mon travail et mon Master en général :

  • Note finale du travail de Master : 6 (sur 6 donc :))
  • Moyenne de Master (sur 93 crédits) : 5.79
  • Et pas une note en dessous de 5.
Je tenais juste à remercier Marius Erni, Dominique Bongard et Samuel Gmehlin grâce à qui j'ai réussi à me surpasser durant ces presque 2 ans de Master.