Programmation - RemyA's

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

RemyA's

Vous etes ici : Accueil > Programmation

lundi 13 avril 2009

Utilisation du Carousel et du Calendar de Yahoo! User Interface (YUI)

Si vous voulez aller passer quelques jours aux calme dans le Sud-Ouest de la France, je vous conseille de vous installer à Pré-Poussou, dans l'arrière-pays Agenais. Il y fait très beau, c'est idéalement placé pour les excursions à la mer ou à la campagne. Pour en savoir plus, vous pouvez aller sur Pre-Poussou.fr.

La raison pour laquelle j'en parle est que j'ai repris les pages de ce site (pour aider) et que j'ai pu utiliser des composants du framework Yahoo! User Interface (YUI). Je n'ai pas cherché par ce moyen à rajouter des gadgets qui attireront l'oeil sans donner sa place au contenu, juste à répondre à deux "petits" besoins de la manière la plus simple possible: remplacer un widget flash de défilement d'images et afficher un calendrier des disponibilités. C'est pourquoi j'ai fait appel au widget Carousel et au widget Calendar. Ces deux widgets sont au final assez facile à utiliser malgré leur complexité et je suis assez content du résultat.

Lire la suite

jeudi 5 mars 2009

Mystère : de l'utilisation des H1 avec positionnement CSS dans Internet Explorer

J'ai passé une heure hier au soir à essayer de comprendre pourquoi une page qui marchait parfaitement avec Firefox et avec Safari, me donnait un truc affreux avec IE : décalage à droite de toute la page en dessous du header, et donc bien entendu une page illisible.

Au final, je me suis rendu compte que la page en question sous IE avait un problème avec les balises H1 (et H2, mais cela devait être aussi vrai pour les niveaux suivants) quand on utilisait la propriété CSS position. Je cherchais juste à mettre un titre et un sous-titre bien placés par rapport à l'image de fond du DIV container. Et pour des raisons logiquement sémantique, je m'étais dis qu'un H1 et un H2 étaient les bonnes balises, comme dans l'exemple suivant.

Après de multiples essais, en enlevant la plupart des éléments de la page, je me suis rendu compte que le seul moyen de corriger le problème était d'utiliser des balises P au lieu des balises H, comme dans l'exemple suivant. Au passage, si quelqu'un peut m'indiquer un outil sous IE (gratuit de préférence) me permettant de faire les même choses que Firebug pour Firefox, je lui en serai très reconnaissant. En fait, en cherchant trente secondes, la solution est peut-être Firebug Lite tout simplement ?

Mais vous savez le plus drôle ? J'ai ensuite passé 15 minutes à essayer de mettre en place un test reproduisant le problème en copiant les fichiers originaux et en faisant de légères modifications pour avoir le nécessaire et le suffisant. Mais sans succès ! IE me montre la page correctement ! Pourtant, je n'étais pas le seul à avoir eu le problème.

J'en viens à penser que IE est capable d'apprendre, il suffit de lui taper dessus suffisamment longtemps. Ou bien que le problème était un glitch de character encoding (plus probable).

vendredi 6 février 2009

Amazon EC2 et Load Balancing

EDIT 2009-02-16 : Fixed a big mistake, due surely to bad sleep. Thanks Grig

Ceux qui ont lu mon article paru dans la dernière revue des anciens de l'Ensimag savent que je m'intéressent de près à ce que peut apporter Amazon EC2 dans la création d'application. En matière de web hosting, il est primordiale d'avoir une solution de load balancing et je me demandais comment faire cela avec des instances EC2. Il semble que l'utilisation de HA-Proxy soit la bonne solution pour l'instant.

Il est vrai que c'est une solution software de LB, donc qui n'atteindra jamais les performances d'une solution hardware.

J'aimerais maintenant voir si une autre solution permet une extension automatique à des instances EC2 en cas de surcharge de son hébergement habituel. En travaillant avec des Elastic IP Addresses, branchées sur des instances HA-Proxy, et un système de load-balancing externe à EC2, cela marcherait peut-être.

Quelle plate-forme pour une place de marché ?

J'ai rencontré un certain nombre de personnes qui ont des projets de site e-commerce sur des domaines particuliers (niche ou non) mais qui veulent le faire sous la forme d'une place de marché, c'est à dire avec les fournisseurs qui prennent activement part au fonctionnement : en gérant leur catalogue, en faisant eux-même les envois, le site fournissant l'infrastructure et les outils, le traitement des moyens de paiement et le calcul des coûts de transports ainsi qu'apportant le trafic par différents moyens.

Je dois avoué que les plate-formes e-commerce de ma connaissance n'offrent pas ce type de fonctions ou alors partiellement. Dans le cas de Magento, il n'y a rien mais ils prévoient de le faire peut-être d'ici l'été prochain, disponible en mode payant. Je suis allé jeté un oeil du côté de Joomla et VirtueMart : ce dernier a la possibilité de faire du multi-vendors mais la doc précise que la fonctionalité n'est pas encore à mettre en prod. Je n'ai pas réussi à éclaircir à quel point on peut faire un seul site avec des vendeurs multiples.

On a porté à ma connaissance (merci Jean-Tristan) l'existence d'une solution payante nommé X-Cart. Je dois avouer que pour quelqu'un qui n'a pas le temps de faire les développements soi-même, cela correspond exactement au besoin. Ils fournissent aussi le code (php/mysql), ce qui est un gage pour ceux qui veulent faire évoluer leur système. La liste des features est impressionnante, mais le seul moyen d'en rajouter est d'acheter la boîte qui va bien soit chez X-Cart, soit chez d'autres éditeurs.

Il serait sans doute intéressant de travailler avec les APIs de Magento pour faire quelque chose de propre.

vendredi 30 janvier 2009

Magento E-Commerce sur plateforme Ubunbtu

Je démarre l'installation d'une plate-forme de boutiques sur mon serveur dédibox avec Ubuntu : j'ai choisi Magento.

Lire la suite

vendredi 12 septembre 2008

GWT or not GWT ?

I had to do a very quick survey of what is possible to do with Google Gears. And frankly, it's exactly what I was looking for in a very special case: a simple ajax application, that people are using while connected to the internet most of the time but that should still be  usable for its simplest usage of inputing information into the system most of the day, while the internet connection of the user is down.

Google Gears is then perfect, first to cache information necessary to make an easy task of inputing the informations, second to store the entered information waiting for the server to be available. It's still a plugin that the user has to install, but it's available on various browsers and different OSes.

The final question is then : what framework should I use to build the Ajax application ?

Using the Google Web Toolkit and its ability to compile a java application to its html & javascript equivalent is very tempting for someone used to Java programming and Java IDEs. I have still to dig in, but its extensibility if the provided widgets are not sufficient is also interesting.

Now, Dojo is also integrating Google Gears and its usage with php applications (there is a partnership with the zend framework) could be quite interesting. Now, I have to look into other frameworks to see how easy it would be to use them together with gears.

In the end, the title of this post translates to : java or php ?

mardi 26 août 2008

SEO et noms de domaines et URLs, Yahoo Search Monkey et Site Search

Kelkoo a bâti son succès en 2003 et 2004 par son excellent référencement basé sur des tactiques de SEO (Search Engine Optimization) qui ont évoluées du très mauvais au très bon. Christophe Odin, un des fondateurs de Kelkoo et maintenant Business Angel et consultant SEO, était à l'origine de ces avancées. Cela explique pourquoi je m'intéresse toujours à ce domaine, même si il s'apparente parfois à de la divination (Saint Google, priez pour nous :-) ) plus qu'à de l'ingénierie.

Je suis tombé ce matin sur un article, que j'ai trouvé assez drôle, sur le choix du nom de domaine à enregistrer pour un site. Certains des exemples sont effectivement hilarants pour qui parle anglais. J'imagine très bien qu'il est difficile pour quelqu'un ayant le nom de sa société en tête tout le temps de voir les anagrammes malencontreux pouvant résulter d'un oubli de tiret. De plus, les personnes voyant très bien où est censé se trouver la séparation des mots n'imaginent pas un instant que les serveurs de Saint Google ne seraient pas capable de la voir aussi. Ce qui fait que des sites sont introuvables car les utilisateurs du moteur de recherche taperont plusieurs mots et ne trouveront presque jamais ce site qui en est la concaténation.

Dans la même séance de lecture, je suis tombé sur "Supercharge Your URLs For Maximum SEO Impact". Ces dernières années, la course du SEO s'est plutôt concentrée sur les moyens d'arriver en première page. Cela doit rester un objectif primordial car en dehors de la première page, il est quasiment impossible de recevoir du trafic. Mais cet article rappelle que cet objectif étant atteint après tellement de travail et d'investissement, il  serait dommage de perdre le moindre clic simplement parce que l'URL de la page est trop longue et mal formée. Il faut se rappeler que l'URL, que ce soit dans son nom de domaine ou dans sa partie "chemin d'accès" (pathinfo) sert autant le ranking de la page que sa visibilité dans les résultats de recherches.

Par ailleurs, pour fidéliser encore plus les utilisateurs, il serait intelligent de se pencher sur les possibilités de Search Monkey chez Yahoo. C'est un moyen de rendre son site plus attrayant et, même si le trafic reçu de Yahoo n'est pas énorme, cela peut se rentabiliser en réutilisant le plugin search monkey dans Yahoo Site Search, ce qui fournira à peu de frais un très bon moteur de recherche textuelle sur votre site.

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 !