This blog is available in English too. The English version is a bit less complete than the French one. Go to the English version of this blog.

Archives de 2008

28 septembre 2008

Blog Wordpress multilingue

[lang_fr]Drapeaux multicolores dans un temple à Darjeeling en Inde[/lang_fr][lang_en]Multicolor flags in a temple in Darjeeling, India[/lang_en]

Ce blog utilise la plateforme de blogs Wordpress. Tous les articles sont disponibles en Français et en Anglais, et l’interface du blog est entièrement traduite.

Pour cela, j’utilise l’extension qtranslate. Elle permet d’écrire très facilement ses articles en plusieurs langues, ainsi que les tags, les catégories, et toutes les fonctions incluses par défaut dans Wordpress.

Utilisation

L’extension modifie l’administration de wordpress en ajoutant un champ pour chaque langue pour les articles, les tags et les catégories. Pour le reste, il faut utiliser un système de balises très simple :

[ lang_en]English text[ /lang_en][ lang_fr]Texte français[ /lang_fr].

J’utilise aussi sur ce blog pas mal d’autres extensions (pour les widgets dans les barres latérales à droite par exemple). J’ai du modifier légèrement presque chaque extension pour qu’elle supporte les balises de langues. Il suffit d’utiliser la fonction __() – qui sert dans wordpress à traduire l’interface à partir de fichiers .mo – pour traduire les chaines avant l’affichage. Grâce à qtranslate, elle permet aussi de supporter les balises de langues.

Pour permettre aux utilisateurs de passer d’une langue à l’autre, l’extension met à disposition un widget qui peut être mis dans la barre latérale. J’ai préféré placer les liens vers les différentes langues en haut à droite de la page en insérant <?php echo qtrans_generateLanguageSelectCode('both'); ?> dans le header de mon template.

Améliorations

Pour l’instant, qtranslate n’inclut aucun système de détection de la langue de l’utilisateur. J’ai ajouté sur mon blog un message qui s’affiche en-dessous de l’en-tête s’il existe une version du blog dans une langue que vous préférez à celle affichée (selon les réglages de votre navigateur).

Pour cela, j’ai inséré dans l’en-tête de mon template le code PHP contenu dans ce fichier.

3 commentaires »

Tiny6 – IPv6 sur les réseaux de capteurs

[lang_fr]Capteur MicaZ[/lang_fr][lang_en]MicaZ sensor node[/lang_en]

Dans le cadre du semestre que j'ai passé en Inde de Janvier à Juin 2008, j’ai participé au projet Tiny6, projet entre TELECOM Bretagne, l’Indian Institute of Technology Guwahati (IITG) et une université en Chine.

But du projet

Les réseaux de capteurs sont des ensembles de petits capteurs (qui permettent de mesurer la température, la luminosité… à un endroit donné) reliés entre eux sans fil. La plupart du temps, ces capteurs communiquent entre eux en utilisant un protocole propriétaire, et il y a dans le réseau une passerelle qui récupère les données et qui les rend disponibles sur le réseau IP.

IPv6 est la prochaine version du protocole IP qui est à la base d’Internet. Cette nouvelle version fournit entre autres améliorations beaucoup plus d’adresses pour désigner des machines que la version actuelle IPv4, pour laquelle les adresses commencent à manquer.

Cette profusion d’adresses permet de donner à chaque capteur d’un réseau de capteurs une adresse IP distincte, et de faire communiquer les capteurs directement avec le protocole IPv6. Ceci permet de simplifier le réseau et d’augmenter sa fiabilité en autorisant plusieurs passerelles entre le réseau de capteurs et internet.

Le problème est qu’IPv6 est fait pour être utilisé avec des ordinateurs classiques, et les capteurs ont des ressources de calcul et de mémoire très limitées. Il est donc nécessaire de créer un protocole allégé, c’est ce qu’a fait le groupe de travail 6lowpan.

A l’IITG, Alexandre, Antoine et moi avions pour but de faire fonctionner ce protocole allégé sur des capteurs précis, et de faire communiquer les capteurs en IPv6 avec TELECOM Bretagne. Nous nous sommes pour cela appuyés sur la thèse de Matus Harvan qui a réalisé une implémentation partielle (IPv6, ICMPv6 et UDP sont partiellement implémentés) de tiny6 en NesC, le langage utilisé pour programmer les capteurs, mais sur un matériel différent du notre.

Difficultés

La première difficulté a été de comprendre le fonctionnement des capteurs et du langage de programmation NesC. NesC est un langage dérivé du C fait pour minimiser l’utilisation de mémoire et de puissance de calcul. Pour programmer les capteurs, nous disposions d’une base branchée en USB à notre ordinateur. Nous avons utilisé une version adaptée de Xubuntu, XubunTOS dans une machine virtuelle comme environnement de travail pour programmer les capteurs et communiquer avec eux pour faire la liaison avec le reste d’Internet.

Nous avons ensuite adapté le code de Matus Harvan pour le faire fonctionner sur nos capteurs, un peu moins puissants que ceux qu’il avait utilisés. Le débuggage a été assez complexe car nous avions peu de moyens de savoir ce qui se passait dans les capteurs (3 leds à faire clignoter).

Enfin, il nous a fallu mettre en place un lien en IPv6 entre TELECOM Bretagne et l’IITG, ce qui s’est révélé compliqué car l’IITG avait une plage d’adresses IPv6 attribuée, mais les routeurs de son fournisseur d’accès ne supportaient pas encore IPv6. Nous avons donc du établir un tunnel IPv6 sur IPv4.

Finalement, ce qui a le plus compliqué le projet est la communication avec nos encadrants indiens. De nombreuses incompréhensions mutuelles nous ont fait perdre beaucoup de temps. Obtenir une adresse IPv4 routable pour communiquer avec TELECOM Bretagne a par exemple été très compliqué, et nous avons été obligés de travailler directement au centre informatique pour utiliser cette adresse IP, qui n’était autorisée à communiquer qu’avec un serveur précis de TELECOM Bretagne.

Résultat

Nous avons finalement réussi à faire communiquer les capteurs en UDP avec TELECOM Bretagne, qui a donc pu recevoir les données mesurées par le capteur. Mais notre volonté de simplifier le réseau a été mise à mal par l’utilisation d’un tunnel IPv6 sur IPv4 entre l’IITG et TELECOM Bretagne, et d’un NAT entre notre machine virtuelle et notre machine physique :

Schéma de la connexion des capteurs au réseau IPv6

3 commentaires »

7 juillet 2008

Un semestre en Inde

[lang_fr]Maisons dans le désert en Inde[/lang_fr][lang_en]Houses in the desert in India[/lang_en]

Je viens de passer un semestre dans le nord-est de l’Inde à Guwahati (Assam). J’étais à l’IITG : l’Indian Institute of Technology of Guwahati (institut indien de technologie de Guwahati). J’y suis resté de janvier à juin 2008.

Études

Ce séjour était dans le cadre d’un échange avec mon école en France, TELECOM Bretagne. Il est considéré comme un semestre d’étude normal pendant lequel j’ai étudié l’informatique (Software engineering) et le traitement du signal (Signal processing in smart antennas). Nous étions 3 étudiants à partir dans ce cadre. Nous avons aussi participé à un projet sur l'implémentation d'IPv6 dans des réseaux de capteurs dont je parlerai plus dans un prochain article.

Voyages, vacances, découvertes

Ce semestre a été l’occasion de découvrir l’Inde et les Indiens. Nous avons pas mal voyagé pendant les week-ends et les quelques semaines libres que nous avons eues. Nous avons voyagé à Darjeeling, dans le Rajasthan et sur les iles Andaman. Pour plus d’informations et des photos de nos aventures, vous pouvez aller voir les blogs d’Alexandre et d’Antoine qui étaient avec moi.

Aucun commentaire »

10 juin 2008

Mes widgets UWA

[lang_fr]Widgets UWA : write once, run everywhere[/lang_fr][lang_en]UWA widgets: write once, run everywhere[/lang_en]

Je suis encore en train de migrer sur ce blog tous les projets que je maintiens actuellement. Dans ce but, je viens de migrer tous les widgets UWA que j’ai créés ici.

Les widgets UWA sont de petites applications Web qui s’insèrent sur des plateformes comme Netvibes, IGoogle, Live.com, Opera, la barre latérale de Vista et le dashboard d’Apple.

Je décris tous ces widgets dans la catégorie "Widgets UWA".

N’hésitez pas à tester ces widgets, et à me dire dans les commentaires sur la page dédiée au widget s’il y a des problèmes.

Aucun commentaire »

1 juin 2008

TvOnResEl : Regardez la TV facilement sur le ResEl

[lang_fr]Logo de TvOnResEl[/lang_fr][lang_en]Logo of TvOnResEl[/lang_en]

En arrivant à TELECOM Bretagne, j’ai découvert le ResEl : le réseau des élèves. J’ai aussi découvert qu’ils diffusaient toutes les chaînes de la TNT sur le réseau. Seul problème : le logiciel recommandé pour regarder ces chaînes est VLC, lecteur multimédia très puissant mais à l’interface complexe et peu adaptée pour regarder la télévion.

J’ai donc eu l’idée de créer un logiciel multiplateformes open-source en Java qui contrôle VLC avec une interface plus adaptée : TvOnResEl. J’ai sorti la première version le 16 octobre 2006.

Dans sa version actuelle, TvOnResEl permet de regarder et d’enregistrer des émissions, de programmer des enregistrements et de consulter le programme TV.

Pour plus d'informations sur TvOnResEl, allez voir la page dédiée au projet.

Aucun commentaire »

Stage d’été comme développeur chez Netvibes

[lang_fr]Logo de Netvibes[/lang_fr][lang_en]Netvibes logo[/lang_en]

De début juillet à fin août 2007, j’ai fait un stage de deux mois chez Netvibes à Paris. Ce stage était dans le cadre des stages d’été à TELECOM Bretagne.

Lors de ce stage, j’ai fait du développement en AJAX, particulièrement dans le cadre de la plateforme de widgets universelle UWA. J’ai développé de nouveaux widgets et converti d’anciens widgets internes de Netvibes à UWA.

J’ai aussi développé de nouveaux compilateurs de widgets UWA, et de nouveaux environnements pour adapter les widgets à de nouvelles plateformes.

Ça a aussi été l’occasion de découvrir l’équipe de Netvibes, et la bonne ambiance qui règne dans cette start-up :) .

Aucun commentaire »

Développer un site de choix de projets pour des étudiants

[lang_fr]Logo de l\\\'UBO[/lang_fr][lang_en]UBO logo[/lang_en]

De janvier à juin 2007, dans le cadre du projet au semestre 2 de TELECOM Bretagne « Projet de développement », on m’a demandé, avec trois autres étudiants, de développer un système de gestion en ligne de projets pour l’intranet du département informatique de l’Université de Bretagne Occidentale (UBO).

Objectifs

Ce site devait permettre aux intervenants invités par l’administrateur d’une session de projets d’entrer des propositions de projets. Ces propositions étaient en suite validées ou non par l’administrateur, puis rendues visibles aux élèves. Les élèves intéressés classaient alors leurs choix. Une fois cette phase terminée, l’administrateur attribuait les projets en faisant le moins de mécontents possibles, puis les projets définitifs étaient notifiés aux élèves.

L’identification des élèves devait se faire grâce au LDAP de l’UBO. Les intervenants, en revanche, n’étaient pas obligatoirement inscrits dans le LDAP.

Le site devait enfin être compatible avec les principaux navigateurs actuels, et utiliser PHP et MySQL côté serveur.

Problèmes et solutions

Le problème le plus complexe que devait résoudre le système était l’attribution finale des projets aux élèves en faisant le moins de mécontents possible. Nous avons d’abord envisagé une solution de placement automatique, mais ça aurait manqué de souplesse, et nous manquions de temps pour mettre en place une telle solution. Nous avons donc décidé de créer une interface en AJAX qui permettait à l’administrateur de voir en direct quels élèves et quels projets étaient insatisfaits, et quels changements pouvaient être faits pour améliorer la solution. Les changements pouvaient être enregistrés en cours d’attribution pour éviter les pertes de données.

L’interface de classement des projets par les élèves était aussi relativement complexe. Nous avons donc utilisé du javascript pour permettre de faire glisser les projets dans la liste, et rendre l’interface plus intuitive. Cependant l’interface se dégradait bien si javascript n’était pas activé, et restait utilisable.

Un petit problème technique se posait aussi pour tester le système d’identification : nous travaillions à TELECOM Bretagne d’où nous n’avions pas accès au LDAP de l’UBO. Nous avons donc testé l’identification avec le LDAP de TELECOM Bretagne, et fait les derniers ajustements lors du déploiement sur le serveur de l’UBO.

Difficultés

La première difficulté que nous avons rencontrée est que parmi le groupe de 4 étudiants pour ce projet, j’étais le seul à avoir déjà développé en PHP. Il a donc fallu du temps pour que les 3 autres apprennent ce langage.

Un autre problème est venu du fait que nous n’avons pas passé assez de temps sur le cahier des charges au départ. Le problème de départ était vague, ce qui a provoqué des changements du cahier des charges en cours de projet qui ont fortement ralenti l’avancement du projet.

Conclusion

Malgré ces difficultés, le résultat final était fonctionnel, pas très beau (aucun de nous n’était designer). Il était assez facilement maintenable et correctement documenté.

Je ne sais pas si notre système est actuellement utilisé à l’UBO.

Aucun commentaire »

31 mai 2008

Une courte aventure : annuaire des modules Netvibes

[lang_fr]Un mini module Netvibes[/lang_fr][lang_en]A Netvibes mini module[/lang_en]

Connaissez-vous Netvibes ? Il s’agit (à mon avis) de la meilleure page d’accueil personnalisable (concurrente de iGoogle).

Elle permet de rassembler sur une page toutes les informations qui nous intéressent sur internet, actualisées automatiquement. Pour cela, elle utilise une structure modulaire : chaque utilisateur peut ajouter les modules qui l’intéressent.

L’idée d’un annuaire des modules Netvibes

Au début, seuls les développeurs de Netvibes créaient des modules, qui étaient accessibles à partir d’une barre latérale dans Netvibes.

Mais le 3 mars 2006, Netvibes a annoncé sur son blog la sortie de la Mini Module API. Ainsi, tout le monde pouvait faire des modules, simplement avec des connaissances en HTML (PHP et javascript pouvaient aider aussi). Je me suis alors amusé à créer quelques modules.

Quelques jours plus tard, quelques modules avaient été créés par des utilisateurs, et il n’existait pas de liste pratique pour référencer ces modules. Je me suis alors lancé dans la création d’un annuaire des modules Netvibes, que j’ai sorti quelques semaines plus tard à l’adresse http://twisterss.free.fr/netvibes. Le site étant maintenant fermé, vous pouvez toujours le consulter dans les archives de ce blog.

Cet annuaire, disponible en Anglais, Français puis Allemand a rencontré un certain succès, et la plupart des modules Netvibes ont été ajoutés rapidement à cet annuaire par leurs auteurs.

Collaboration avec Netvibes

Peu de temps après, j’ai été contacté par Tariq Krim, qui dirigeait alors Netvibes, dans le but d’intégrer cet annuaire à leur site. Cette collaboration a conduit à l’amélioreration du design de l’annuaire grâce à un designer de Netvibes (Maurice Svay), et à l’ajout des flux RSS et ICal à l’annuaire, sur une idée de Tariq.

Des difficultés d’intégration ont empêché d’utiliser mon code de départ pour l’annuaire de Netvibes, mais ma base de données a été intégrée lors de la sortie de l’annuaire de Netvibes, qui fonctionne toujours.

Pour éviter la duplication des listes de modules, j’ai alors désactivé mon annuaire, et je l’ai remplacé par une redirection vers l’annuaire de Netvibes.

Conclusion

Finalement, mon annuaire n’a fonctionné que quelques mois, mais il a attiré un très grand nombre de visiteurs (ce qui m’a obligé à faire un système de mise en cache évolué pour éviter de surcharger mon hébergement gratuit).

Cette courte aventure m’a permis de commencer à découvrir l’équipe de Netvibes, et de découvrir en même temps la nécessité d’écrire un code clair et de séparer l’apparence du site du reste du code, pour permettre une collaboration plus facile par la suite avec d’autres développeurs. En l’occurence, l’utilisation propre du framework Zend de PHP aurait sûrement permis de réutiliser mon code dans l’annuaire de Netvibes.

Aucun commentaire »

Juste pour rire : mon premier site internet

[lang_fr]Capture de mon premier site internet[/lang_fr][lang_en]Screenshot of my first website[/lang_en]

En cherchant dans mes archives de sites internet pour mon dernier article, j’ai découvert un très vieux site. Celui-ci est réellement le premier site internet que j’ai créé.

Comme il m’a bien amusé, j’ai décidé de le remettre en ligne dans les archives de ce blog. Vous pouvez le voir ici.

Il fait 4 pages et a été réalisé avec WebExpert 2000. Je me rappelle avoir mis très longtemps pour trouver comment le mettre en ligne. Je pense que personne ne l’a jamais vraiment visité.

C’est un très bon exemple de tout ce qu’il ne faut pas faire sur un site internet :) . Heureusement on voit de moins en moins de sites comme celui-ci sur internet, sauf peut-être du côté des skyblogs.

Aucun commentaire »

Création du site internet d’une très petite entreprise : Le fil à soi

[lang_fr]Logo du fil à  soi[/lang_fr][lang_en]Logo of Le fil à  soi[/lang_en]

Il s’agit de l’un des premiers sites internet que j’ai créés (j’en avais créés d’autres avant, mais ils ont disparu dans les entrailles d’internet).

Historique

La première version ressemblait très fortement à un sapin de noël. Elle avait été faite avec un éditeur WYSIWYG. Il y avait des frames et des images GIF animées, qui donnaient au site un aspect pas très pro :) . Je n’ai malheureusement pas gardé de capture d’écran de cette version.

La seconde version était un peu meilleure : j’avais découvert PHP, ce qui m’a permis de remplacer les frames par des include. Cependant, j’étais hébergé gratuitement par libertysurf (qui a été racheté par tiscali qui a été racheté par Alice qui va être racheté par je ne sais pas encore qui) à ce moment-là. Je n’avais donc pas de base de données à ma disposition, et toutes les pages étaient stockées dans des fichiers texte.

Cette architecture n’étant pas très souple, elle n’a pas facilité la mise en place des nouveautés qui se sont ajoutées par la suite : gestion d’une version imprimable des pages, centralisation des dates de stages et génération d’un flux RSS, création d’une interface de gestion facile à utiliser pour que les animatrices puissent gérer le contenu du site, refonte du design (le nouveau design était beaucoup plus joli que le précédent, mais faisait une utilisation massive de table dans la mise en page)…

État actuel

Il y a quelques années, j’ai migré le site chez free, et j’ai décidé de refaire complètement le site pour lui faire utiliser une base de données, et des templates pour faciliter les changements de design. J’ai aussi fait un nouveau design plus propre, avec une meilleure utilisation des CSSs, mais encore loin d’être compatible XHTML.

Vous pouvez voir le site du fil à soi dans sa version actuelle.

Conclusions

Je ne suis pas encore très satisfait du design actuel du site, mais mes talents de designer me limitent fortement.

Si vous aussi devez faire un site pour une très petite entreprise, je vous conseille fortement de ne pas faire comme moi, et d’utiliser une plateforme existante (drupal par exemple). Cela vous permettra de réutiliser les fonctions et thèmes implémentés par les autres utilisateurs, et d’obtenir rapidement un site fonctionnel, sans nécessairement limiter vos possibilités de personnalisation.

La prochaine étape pour moi dans la gestion de ce site serait sûrement de le migrer vers une plateforme comme Drupal, et de convaincre ses propriétaires de payer un vrai hébergement et un vrai nom de domaine.

Aucun commentaire »