Aller au contenu | Aller au menu | Aller à la recherche

Teorem's Blog

Vous etes ici : Accueil > Programmation

mercredi 9 juillet 2008

Site Web en Flash: la fin de l'ostracisme googlien n'est pas pour tout de suite

Il y a peu, Yahoo, Google et Adobe ont annoncé qu'ils travaillaient sur l'amélioration de l'indexation des contenus des sites web en Flash. Cela est en soi une bonne nouvelle mais il ne faut pas s'emballer, loin s'en faut.

Comme le fait remarquer le blog d'Abondance.fr, ces travaux n'aboutiront certainement pas rapidement et serviront surtout à optimiser la place de ces contenus dans les moteurs de recherche. Cela veut donc dire que la plupart des contenus Flash actuels ne seront pas mieux indexés et qu'il faudra les revoir pour suivre de nouvelles règles de SEO pour qu'il y est un impact visible sur le placement sur les moteurs.

Il est donc urgent d'attendre et si vous construisez un site en Flash, prévoyez la création de pages HTML suivant les bonnes vieilles règles de SEO, qui renvoient vers vos animations flash par des liens astucieusement placés.

mercredi 18 juin 2008

Signature HTML dans Apple Mail

J'utilise un MacBook Pro depuis le mois de Janvier et j'en suis très content. N'ayant pas de client mail préféré, je suis passé d'Evolution sous Linux, à ThunderBird, puis Outlook sous Windows, et je me suis dit qu'utiliser le client natif Apple serait une bonne idée. Et, en fait, il n'est pas mal même si parfois un peu simpliste, notamment du côté de la composition des messages.

Justement, utilisant le plus souvent le Rich Text Format, qui chez Apple veut dire HTML en fait, j'aurai bien voulu avoir une signature avec des liens vers différents éléments de mon univers Web. Mais ce n'est pas possible: Mail.App ne permet qu'une composition des signatures encore plus simpliste que celle des mails: du texte, un point c'est tout.

Heureusement, je ne suis pas le seul face à ce problème et certains ont trouvé la solution: en français et en anglais.

J'ai pu donc arriver à mes fins et j'ai maintenant une signature avec mon nom qui pointe vers mon profile LinkedIn, une adresse e-mail avec un lien mailto:, et un Headline Animator de FeedBurner. Pour ce dernier, si vous en voulez un, il suffit d'aller dans l'interface de gestion de vos feeds, d'en choisir un, et de cliquer sur l'onglet Publicize. Ensuite, il vous suffit de cliquer sur le lien Headline Animator dans la section Boost Your Cross-Promotion Potential. De plus, vous aurez dans la colonne de gauche de l'onglet Analyze (celui qui vous donne un aperçu des stats de votre feed) un lien vers les statistiques des headline animator que vous avez créés.

dimanche 11 mai 2008

Intéressants: S3 vs. Akamaï, Touche pas à mon Mac ou gare à toi !

Après un parcours rapide de mes lectures habituelles, je pense que je dois partager et diffuser deux idées qui me paraissent excellentes.

  • L'utilisation de Amazon S3 en remplacement d'Akamai, en tant que Content Delivery Network. Vous voulez que les pages de votre site s'affichent rapidement ? Il vous faut un CDN capable de délivrer votre contenu statique le plus rapidement possible. Malheureusement, quand on est une startup ou un simple particulier, il est difficile de discuter et d'avoir accès aux chers (dans tous les sens du terme) service de CDNs comme Akamai. Tyler Hall, un web developpeur travaillant pour Yahoo, vous explique dans cet article comment vous pouvez réaliser cela. Il vous donne aussi des explications sur la façon d'implémenter les conseils de performance que peut vous donner Yslow. Je pense que je vais garder cela en tête précieusement pour mes prochains sites tout en calculant combien cela me coûterait réellement.
  • L'autre nouvelle qui m'a fait réagir (un grand sourire devant la bonne idée), je l'ai lu dans cet article de Engadget. Une jeune femme ingénieuse s'est fait piquer son Mac (attention, la version de la pomme). Quand le voleur s'est connecté à Internet, elle a pu prendre contrôle de la machine au travers de Back to my Mac, prendre une photo grâce à PhotoBooth (d'ailleurs, regarder ce que l'on peut faire avec cette application amusante) et ainsi donner à la police tout ce qui lui fallait pour arrêter les scélérats (ben oui, les personnes séparant un applemaniac de son Mac ne méritent aucune pitié). Comme cette feature de Leopard nécessite un compte .Mac, je viens de trouver enfin un attrait possible en plus de la synchronisation entre machines à ce service d'Apple.

mercredi 7 mai 2008

Intéressants: HTC diamond, REST Web Services

J'ai décidé de reprendre activement l'écriture de ce blog en commençant par un exercice simple: partager ce qui m'est passé sous les yeux dans les dernières 24 heures et qui a éveillé un ou deux neurones avec une réflexion personnelle.

  • Julien Codorniou tweets au sujet du HTC Diamond avec une question provocante: "iPhone Killer ?". Je vais immédiatement voir le site référencé, et c'est vrai qu'il est beau. Mais j'ai toujours envie de voir ce que va donner le version 2 de l'iPhone, car ce HTC n'a pas toujours pas suffisamment de mémoire (4Go contre 8 minimum pour l'iPhone) et son écran n'est pas assez grand (2,8 contre 3,5 pour l'iPhone) même si il a une meilleure résolution (VGA). Il faudrait que je puisse manipuler un WM6 pour voir ce que ça donne en terme d'interface. Je suis quand même très dubitatif. La machine est belle mais l'OS sera, je le crains, son talon d'achille. Si l'iPhone 2 a du GPS et un bon support bluetooth, les HTC ne me feront définitivement plus envie. Lien vers une news NetPPC. Lien vers l'article iPhon.fr. D'après Laurent, il semble que HTC ait bien amélioré la partie soft quand même.
  • Pour les aventuriers des Web Services, on vient de me faire passer le lien sur le blog de Mark Nottingham, l'un des experts Yahoo sur, justement, les web services et les protocoles du web. Pour ceux qui se poseraient des questions du genre REST vs SOAP/XMLRPC, commencez par lire son article sur réels problème du REST. De mon point de vue, REST est la bonne manière de faire des web services ouvert aux développeurs externes à votre système d'information (genre YDN). En interne, les outils existants pour faire du SOAP par exemple me pousseront peut-être vers ce protocole pour faciliter la mise en place. Le critère majeur restera toujours le niveau de contrôle sur le client et le serveur. Plus ce niveau est faible de l'un ou l'autre côté, plus je préférerai un protocole simple qui me permettra de faire évoluer rapidement le code du client.

jeudi 6 mars 2008

Histoire et Developpement: comment les choses deviennent compliquées

Dans un article paru après la publication par Microsoft de la spécifications de ses formats binaires, Joel Spolsky vitupère et explique pourquoi ces formats sont si compliqués et nécessitent autant de travail pour être réutiliser en dehors des applications MS Office Il donne aussi quelques pistes de réflexions pour s'accomoder sans trop de douleur de ces formats pour des tâches simples.

En lisant l'article, je me suis dis qu'il n'y a rien de nouveau sous le soleil. Les mêmes causes produisent les mêmes effets dans notre domaine. Généralement, les logiciels ayant un tant soit peu de succès sont construit année après année, et même dans le monde open-source, en essayant de minimiser les efforts nécessaires: cela implique que le temps passé à prévoir l'avenir et donc à concevoir une architecture ou un logiciel très modulaire, et très facile à modifier et à comprendre, reste minimal. J'ai entendu pas mal de personnes s'écrier "Haaa ! Quel horreur !" ou "Mais pourquoi ont-ils fait comme ça ?!!" en lisant le code (ou le schéma d'architecture, ou le schéma de bases de données) d'une application qu'ils devaient modifier. Je peux même dire que j'en ai sans doute fait partie pendant un temps.

Seulement, l'histoire démontre qu'il y a toujours une bonne raison pour une complexité qui s'est amassée au fil du temps. Souvent, c'est le manque de temps pour refaire les choses (parce qu'il y a la pression du business qui préfère avoir un produit ayant du succès demain plutôt qu'un produit facilement modifiable ayant du succès dans 6 mois). Il arrive que le problème est de rester compatible avec d'anciennes versions du logiciel. Le problème des "legacy applications" qui permettent de continuer à gagner de l'argent, pendant que l'équipe produit essaie de réinventer le monde.

Et une des solutions explicitée par Joel Spolsky dans son article peut s'adapter (conceptuellement) à nos problèmes d'architecture. Il s'agit simplement d'isoler le composant qui nous pose problème derrière un web service, comme l'on peut travailler sur un fichier Excel ou Word en scriptant une machine tournant sous Windows, ce qui permet de travailler sur ce qui est vraiment important (les nouvelles fonctionnalités, bien sûr). Cette technique peut-être utilisée avec des bibliothèques que vous ne pouvez pas mettre à jour (parce que vous ne vulez pas payer ou parce que le fournisseur a disparu) ou avec une base de données et de la business logique implémentés dans une techno dont vou voulez vous séparer. L'isolation a souvent comme intéressante conséquence de vous permettre d'améliorer la scalabilité de cette partie de l'application.

Rien de bien nouveau sous le soleil, mais simplement quelques réflexes qui permettent de gagner du temps et de se concentrer sur ce qui est prioritaire.

mercredi 10 octobre 2007

Pensez toujours à vérifier vos entrées utilisateurs

Pour éviter de perdre des données, il faut toujours vérifier ce que vous file l'utilisateur. C'est vrai aux différents niveaux de votre architecture. Si vous utilisez l'information qu'il vous fournit dans une requête SQL, vérifiez que l'information n'est pas construite pour faire quelque chose que vous ne désirez pas (détruire une table par exemple).

EXEMPLE PRATIQUE

Comme je l'ai raconté par ailleurs, si vous réutilisez la donnée pour afficher quelque chose dans une page web, on peut donc insérer du javascript dans votre site. C'est du cross-site scripting (XSS). Il faut savoir qu'en utilisant cette possibilitée, il est maintenant possible de prendre possession de l'ordinateur de vos utilisateurs et de leur faire faire des choses que vous n'osez imaginer (voir ce bouquin pour en savoir plus).

Moralité: pensez à bien nettoyer, de préférence avec de la javel et un karcher, les données que vous recevez de vos utilisateurs.

lundi 24 septembre 2007

Comment déveloper de l'Internet Software

J'ai participé jeudi dernier à une table ronde dans le cadre de la 4ième conférence de l'IE-Club pour 2007: la Révolution de l'Internet Software. L'évènement était sponsorisé par Microsoft France et TechCrunch France, entre autres.

Qu'est ce que l'Internet Software ou le SaaS (software as a service) ? C'est tout simplement tous les types de logiciels qui sont utilisables soit au travers d'une API publique (comme les services de Yahoo au travers de YDN) soit au travers d'un client léger adossé à des API tournant sur des serveurs accessibles sur Internet.

La première table ronde m'a permis de parler de YDN, du danger de développer sur ces services sans aucune garantie des fournisseurs des-dits services (Amazon et S9) et de l'importance d'un développement professionnel (test, test, test) même dans le cadre d'un process agile et du contexte web 2.0. Elle m'a permis aussi d'apprendre qu'une vieille boîte telle que CEGID se tournait résolument vers une architecture client-serveur over internet (malgré une cible difficile dans une nouvelle version du B2C, le Business to Comptables) et que le marché des développeurs était semble-t-il tendu en France.

La seconde et la troisième tables rondes se sont moins concentrées sur le SaaS proprement dit, mais j'ai appris des choses intéressantes sur les VC européens et la création/marketing de start-up.

Je dois avouer que ma prestation n'a pas été transcendantale. Il va falloir que je m'améliore dans ce genre d'exercice en prenant la parole de manière plus affirmative et en préparant mieux mes interventions (phrases courtes pour être plus clair) si j'en refais.

Il y avait plus de 350 personnes présentes quand même dont une quinzaine de journalistes d'après Julien Codorniou, l'organisateur. On verra les retombés médiatiques, et si j'en crois Wikio en ce moment, j'ai l'impression qu'elles sont inexistantes pour moi, même si j'ai vu une de mes phrases reprises dans un blog :-).

Je pourrai vraiment apprécier ma prestation quand je verrai la vidéo que Brainsonic doit mettre en ligne cette semaine. On verra si mon t-shirt I'm Blogging This est plus visible que les vestes des autres speakers.

dimanche 26 août 2007

Toujours penser à son encoding

Je suis tombé sur un problème typique (et récurrent) qui guette tout programmeur dont l'application se doit d'être internationalisable.

Un copain s'est amusé à créer des scripts GreaseMonkey afin de se faciliter la vie sur une application web : son script détecte des chaînes de caractères particulières et va changer le look&feel de cette partie de la page afin de lui permettre de repérer plus rapidement les choses qui peuvent être importantes pour lui.

Il s'est trouvé récemment devant un problème incompréhensible : la détection de chaîne ne marchait plus et les commentaires apparaissant dans les boîtes de dialogues (par exemple, la description de son script apparaissant dans un dialogue greasemonkey) montraient des caractères bizarres ou des points d'interrogation à la place des caractères accentués. Evidemment, quand il regardait son script avec son éditeur, les accents étaient bien là. Il a essayé de modifier les paramètres du navigateur pour accepter ce qu'il croyait être le bon encoding, mais sans succès.

Au final, le problème venait simplement de son éditeur qui avait un encoding par défaut différent de ce qu'il pensait.

Morale de l'histoire: il ne faut jamais rien laisser au hasard, surtout en matière de paramètres liés à l'internationalisation, le bug qui risque de vous pourrir la vie est là car vous n'avez pas spécifiez et mis en place correctement votre environnement de développement, de test ou de production !

lundi 20 août 2007

Concurrence et parallelisation dans Ruby et PHP

On vient de demander à l'architecte que je suis de donner son avis sur le langage de programmation Ruby et le framework Ruby On Rails. N'ayant jamais pratiqué ce langage, j'aurais été bien à mal de répondre mais mes différentes lectures (remises à jour rapidement) me permettent de dire que pour une application web "industrielle", je me ferai un peu de souci vis à vis de la rapidité de l'interpréteur que certains jugent lent même si Ruby et RoR permettent de faire gagner des developer cycles sinon des cpu cycles. L'autre souci, mais qui est commun à la plupart des frameworks offrant des facilités de programmation vis à vis des bases de données, est que le programmeur se laisse abuser par la simplicité de développement et oublie qu'une application web nécessitant de bonnes performances ne peut se contenter de requêtes SQL génériques si celles-ci doivent être nombreuses et répétées.

Dans mes lectures de ce soir, je me suis rendu compte que Ruby permettrait de manipuler des threads (ce qui est à mon avis l'une des meilleures features de Java) de qui n'ets pas forcément d'une grand intérêt pour une application Web sauf si l'on considère que celle-ci est un mash-up et doit faire appel à de multiples web services, en essayant de minimiser les temps d'accès à ceux-ci, ainsi que le traitement permettant d'utiliser les résultats qu'ils renvoient. L'utilisation de threads, notamment sur une machine multi-processeurs (ce qui est assez commun de nos jours), permet alors d'assurer de bonnes performances à cette application Web. Malheureusement, j'ai été déçu de lire que les interpréteurs Ruby ne fournissaient pas le support des threads natifs, seuls à même de faire profiter de la puissance des multi-pros.

De la même manière, il n'y a pas à ma connaissance de support des threads natifs ou non dans PHP. Mais il se trouve que l'on peut au moins démarrer des demandes en parallèle et attendre la réponse la plus rapide pour commencer le traitement. Pour cela, il faudra utiliser stream_select, ou de manière plus simple les fonctions multi de curl.

jeudi 12 juillet 2007

FC7 et Synce WM5

Je viens de réinstaller mon portable avec la Fedora Core 7 (cela s'est d'ailleurs très bien passé sauf que j'avais oublié de virer de mon xorg.conf l'utilisation du driver ATI propriétaire qui n'était pas encore dispo).

Il est donc temps d'aller revisiter le site de la communauté Synce pour voir si je ne peux pas avec un peu de connectivité avec mon vieux PDA. Donc, je suis en train de suivre les instructions du site Windows Mobile 2005 Support pour construire ce qui m'est nécessaire à partir du repository SVN.

La récuperation svn se passe très bien (j'avais installé le package svn depuis très longtemps). Pour ce qui est des packages de développement, j'ai installé (ou je me suis assuré qu'ils étaient installés) libusb-devel, python-devel, glib2-devel, automake, autoconf, libtool, gnet2-devel, hal-devel, Pyrex, dbus-glib-devel. J'ai aussi du installer gcc-c++ et j'ai eu un probleme avec la FC7. Comme j'avais fait un upgrade et pas une réinstallation complète, j'avais encore une version fc6 de libstdc++, car celle-ci avait une version supérieure à celle disponible pour la fc7. Et comme cette librairie est utilisée par plein de packages différents, il est impossible de l'enlever pour la remplacer par une version plus ancienne. J'ai donc dû télécharger la version fc7, et utiliser directement rpm (et non pas yum) avec l'option --force pour arriver à mes fins. La compilation s'est passée sans problème et l'installation aussi (pensez à utiliser sudo, cela facilite les choses). Par ailleurs, l'utilisation de ''make uninstall'' nettoie très correctement ce qui est installer, donc avant toute nouvelle installation, pensez-y.

Pour ce qui est de la connexion, le plus simple est de mettre la chose suivante dans /etc/rc.local:

 # bluetooth active sync
 /usr/bin/dund --listen --activesync --msdun call dun
 sdptool add SP
 # start odccm 
 export LD_LIBRARY_PATH=/usr/local/lib; /usr/local/sbin/odccm

J'ai WM5 installé sur mon hx4700 et j'ai une version de bluez supérieure à 3.0, mais j'ai quand même dû mettre la commande sdptool en place pour que cela marche. De plus, la modification de LD_LIBRARY_PATH est nécessaire sinon on se paye des problèmes de chargements de libraries. Enfin, odccm doit être démarré par root et pas par un utilisateur comme vdccm. Après avoir désactivé mon iptables, j'ai pu me connecter sans problème.

Prochaine étape: règles firewall qui permettent la connexion sans manip excessive et synchronization avec evolution. Sur ce dernier point, j'ai quand même bien envie de tenter les versions de développement : the bleeding edge instead of the leading edge !

mardi 19 juin 2007

IE sous Linux

Je suis sûr que vous avez déjà eu besoin de IE sous Linux car il n'était pas possible de voir un site web autrement. La solution à votre porblème sans avoir besoin de redémarrer est peut-être sur le site IEs4Linux.

vendredi 11 mai 2007

A Yahoo and MySQL Guy

Jay Janssen, who you have maybe seen on the pictures of the Mysql Conference started a blog named MySQL Guy some days ago.

I think you will find valuable information in his posts, for instance regarding mysql clusters.

lundi 7 mai 2007

Mysql Conference

Pour les personnes intéressées par MySQL, vous trouverez des informations sur la conference vu par un français bien de chez nous sur le blog dbnewz. Photos disponibles par là.

Il semble que ce soit grâce à lui qu'il il y a maintenant un lien francophone sur PlanetMysql. Il lui faudra être quand même assez actif car il semble être bien seul à blogguer en Français sur MySQL.

lundi 30 avril 2007

Apache 2.2 et les droits d'accès

Je viens encore de faire pour la énièmes fois la même erreur de configuration apache !

Avis à tous : par défaut dans les installation apaches fournies pour Fedora, l'utilisation des .htaccess n'est pas activée. Pour ce faire, il ne faut pas oublier de remplacer la directive AllowOverride none dans la configuration principale par un AllowOverride AuthConfig si vous voulez configurer des droits d'accès dans le .htaccess (ce qui était mon cas). Choisissez les paramètres d'AllowOverride en fonction du type de configuration que vous voulez avoir dans le .htaccess. Voir la documentation pour plus d'information.

Pour ma part, j'ai décidé de me passer des .htaccess et de tout regrouper dans un fichier de conf spécifique en utilisant les directives Directory. Comme en FC6, il y a un répertoire /etc/httpd/conf.d dont les fichiers sont automatiquement pris en compte, il est toujours possible d'avoir une configuration d'une partie du site bien séparée de la configuration principale (ce qui est l'attrait principal de l'utilisation des .htaccess).

mercredi 18 avril 2007

Adios Gaim, Welcome Pidgin

Cela fait très longtemps que j'utilise le logiciel de messagerie instantanée GAIM sous Linux. Il est multi-protocol, est assez sobre d'un point de vue interface et plutôt robuste depuis la 1.0. Depuis quelques mois, les mises à jour se faisaient plutôt rares, et en allant voir le site du projet par curiosité ce matin, je suis tombé sur l'annonce du changement de nom du logiciel. Il est bon de voir que ce changement de nom, bien que forcé par voie légale, est finalement pris dans le bon sens par les développeurs du projet. En plus, Pidgin sonne bien (en tout cas à mes oreilles). Je viens de vérifier, et les repository yum que j'utilise ne contiennent pour l'instant qu'une version 2.0 beta de gaim et yum ne trouve pas encore de package pidgin. Je me demande d'ailleurs comment ils vont faire le changement de nom pour les packages RPM; sans doute que chaque distribution passera à pidgin à leur changement de version (la 7 pour le Fedora).