vendredi 30 mars 2007

Des nouvelles de Kappea

Le temps passe, et je me rends compte que je délaisse un peu ce blog. Alors voici quelques infos sur l'avancement de Kappea...
Hier soir, j'étais convié aux Trophées de l'Innovation organisés par le Technopôle de Mulhouse et la Région, car Kappea faisait partie des 18 projets innovants retenus pour concourir. Je n'ai pas eu de prix, mais ce n'est pas grave (quoique, le chèque n'aurait pas fait de mal au compte de Kappea). J'ai pu présenter le projet devant un certain nombre d'officiels et quelques banquiers, ce qui m'a permis de rôder un peu ma présentation. Il y a même un journaliste qui a dit qu'il me recontacterait, mais j'attends de voir.
A part ça, il est aussi assez probable que l'équipe de Kappea s'étoffe dans les semaines à venir : les discussions avancent bien. Un blogger dont le nom n'est pas inconnu pour les assidus du web 2.0. Un peu de patience...
Côté développement, on peut dire que je suis assez content. Les fonctionnalités se mettent en place, la charte graphique avance doucement... Sauf contre-temps majeur, je pense que la première version beta devrait sortir d'ici deux mois.

Voilà pour vous tenir un peu au courant de Kappea.

Rappel : pour ceux qui n'ont pas lu les billets précédents sur Kappea, c'est un nouveau service de petites annonces qui innove par sa stratégie de recherche. L'objectif étant bien sûr d'éviter aux utilisateurs de devoir chercher régulièrement sur plein de sites différents...

jeudi 22 mars 2007

Ca y est Ziki s'est mis à OpenID

Oui, bon, je sais, j'ai deux jours de retard pour cette info... Toujours est-il que Jean-François l'a annoncé sur le blog : Ziki accepte la connexion via OpenId, pout ceux qui avaient déjà un compte, et devient serveur d'identité pour tous ceux qui le souhaitent.
Alors oui, c'est vrai, il n'y a pas encore des milliers de sites qui utilisent OpenId pour l'authentification, mais je ne peux qu'applaudir cela.

Les lecteurs réguliers de ce blog (ça existe ?) savaient déjà que c'était dans les tuyaux, il semble que c'est finalement venu assez vite.
Il reste juste à évangéliser un peu auprès des 8000 inscrits, et dans quelques temps vous pourrez tester votre identifiant sur Kappea (et oui, ça avance...)

vendredi 16 mars 2007

Petit benchmark PHP : json_encode vs serialize

Âmes non techniciennes, passez votre chemin...

Tout simplement, pendant le développement du site de Kappea, j'ai eu besoin d'une comparaison entre les fonctions json_encode() et serialize() de PHP 5.2
Les deux approches permettent de transformer des variables en chaîne de caractère, et JSON et beaucoup utilisé depuis quelques temps pour les échanges Ajax, car il est implémenté dans différents langages (contrairement à serialize() qui n'est que pour PHP).

Pour moi, l'intérêt est de sérialiser un tableau pour stocker la valeur dans un cookie. Or la fonction serialize() me renvoie une chaîne de caractère qui est environ 40% plus longue que celle de json_encode(). Le gain de place est précieux pour moi, car un cookie a une taille limite (environ 4000 caractères). Mais il ne faut pas que ce gain de place ait un important coût de temps.
J'ai donc fait un petit benchmark qui ne prétend nullement être universel, sur ma machine perso avec Ubuntu 6.10, et j'ai remarqué que json_encode() met environ... 40% de temps de plus que serialize().
Cela dit, la différence n'est tout de même pas énorme, puisque dans mon cas cela équivaut à 2,5 millionièmes de seconde de plus. Je sais que je suis un maniaque de l'optimisation, mais je crois que je vais me satisfaire de ça.

En tout cas, comme je n'avais pas trouvé de comparatif entre ces deux fonctions, je le communique (si ça peut servir à d'autres...)

lundi 5 mars 2007

Quelques soucis avec ma Fonera

Après 2 mois d'utilisation de ma Fonera généreusement offerte par Wikio, le bilan est mitigé. Non, disons plutôt qu'il n'y avait aucun problème pendant longtemps, mais depuis quelques semaines j'ai des problèmes de connexion un peu pénibles.
Régulièrement, mon PowerBook n'accède plus au réseau alors que je l'utilise. Non pas que je perde le signal, ça semble plutôt être une histoire d'adressage IP. Du coup, je suis obligé de demander un nouveau bail DHCP. Je trouve ça un peu galère.
Pourtant je ne crois pas qu'il y ait eu de mise à jour Airport récemment... Je vais peut-être essayer le firmware modifié de francofon.fr...
Quelqu'un a t'il un retour d'expérience à ce sujet ?

Ziki et OpenId, on progresse !

Certains vont peut-être penser que j'en fais un petit peu trop sur ce sujet, mais ce n'est pas grave. Je voulais juste vous partager une petite phrase du dernier mail reçu de Jean-François Ruiz :
Tu vas être content, on va mettre en place OpenID prochainement sur Ziki (je n'ai pas de date à te donner mais ça va être fait bientot).
Moi je trouve ça plutôt bien. Je soupçonne que les annonces faites par Netvibes, Microsoft, AOL et Yahoo ont eu un peu plus de poids que mes billets sur le sujet, mais ce n'est pas grave.
Ce que je ne sais pas, c'est si il sera juste possible de se connecter à Ziki via OpenId, ou si ils vont implémenter un serveur d'identité (ce qui serait beaucoup plus cohérent je trouve).

Ainsi, quand Jérôme explique que pour la notion d'empreinte numérique (mise en avant d'ailleurs par Jeff), Ziki est plus pertinent que OpenId, le mieux est de dire : faisons les deux ! Mon empreinte numérique, qui recense mes productions et mes traces sur le web, peut aussi me servir d'identité pour me connecter sur de nouveaux services...

Je ne prétends pas que c'est le modèle idéal (il y a d'ailleurs encore de sérieuses questions de sécurité à régler), mais il faut bien avancer dans une direction, non ?

jeudi 1 mars 2007

Petit mystère de MySQL

Attention : ceci est un billet plutôt technique (vous êtes prévenus dès le début).

Comme Kappea comporte une partie géolocalisation, j'ai une table cities qui comprend pour l'instant toutes les villes de France (DOM-TOM compris) avec leurs coordonnées (latitude, longitude). Il n'y pour l'instant que les villes française, mais comme je prévois d'ouvrir Kappea à d'autres pays (tiens, une révélation !), j'ai bien sûr un champ country qui est un CHAR(2) et qui est indexé.
Bien. Le décor est planté. Voyons voir ce qu'il y a de mystérieux...

mysql> SELECT COUNT(*) FROM cities;
+----------+
| COUNT(*) |
+----------+
| 38949 |
+----------+
1 row in set (0.02 sec)

mysql> SELECT COUNT(*) FROM cities WHERE country = "FR";
+----------+
| COUNT(*) |
+----------+
| 38949 |
+----------+
1 row in set (0.06 sec)
Jusque là rien de bien spécial, puisque j'ai bien dit qu'il n'y a que des villes françaises.
Mais si on analyse la requête, ça devient surprenant...


mysql> explain SELECT COUNT(*) FROM cities;
+----+-------------+--------+-------+---------------+---------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+-------+---------------+---------+---------+------+-------+-------------+
| 1 | SIMPLE | cities | index | NULL | country | 2 | NULL | 38958 | Using index |
+----+-------------+--------+-------+---------------+---------+---------+------+-------+-------------+
1 row in set (0.00 sec)
OK, il passe toutes les lignes en revue. Logique, puisque je ne restreint rien.

mysql> explain SELECT COUNT(*) FROM cities WHERE country = "FR";
+----+-------------+--------+------+---------------+---------+---------+-------+-------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+---------------+---------+---------+-------+-------+--------------------------+
| 1 | SIMPLE | cities | ref | country | country | 2 | const | 19479 | Using where; Using index |
+----+-------------+--------+------+---------------+---------+---------+-------+-------+--------------------------+
1 row in set (0.00 sec)
Et là, je ne comprends plus. Alors que toutes les lignes ont le champ country à la valeur "FR", la recherche par index n'en indique que 19479. Mais la requête donne le même résultat...
Je crois qu'il reste encore pas mal de secrets que je n'ai pas percé dans les arcanes de MySQL.

PS: j'ai une version 5.0.32 avec la dernière Ubuntu.

Si jamais un pro de MySQL passe par là, je veux bien quelques éclairages.