21 juin 2007

Sauvegardez

Je viens de retrouver un bout de code que j'avais écrit en 2002 sur un ordinateur que je n'ai plus.

C'est dans des méandres internetisques que j'ai retrouvé l'archive oubliée. Mais présente.
  • Le code récupéré n'a pas compilé de suite.
  • Il n'y aucun test automatisé (je n'ai franchement découvert JUnit qu'en 2003).
  • Les fichiers sont vaguement en ISO-8859-1.
  • Le code est formaté à la main : je travaillais avec UltraEdit à l'époque — je devrais d'ailleurs m'y remettre, question de productivité.
  • Les commentaires sont en anglais (very impressive).
  • Les paramètres des méthodes ne sont pas final.
L'archive comporte une vague spec et un jeu de tests.

En fait toute la documentation est sur le web, dans des sites que je ne tiens pas à jour mais qu'il fait parfois bon redécouvrir.

Moralité, une sauvegarde sur internet, vaut mieux que deux tu l'as plus sur CD.

10 juin 2007

Intégration de l'intégration continue

Sujet très technique.

Il s'agissait de mettre en place un système d'intégration continue sur une machine Unix dédiée...

Les contraintes et exigences étaient les suivantes :
  • accès aux sources via internet par le protocole SVN+SSH, sur un port autre que le port 22 (SSH)
  • éventuellement accès aux source sur le LAN par SVN seul (port traditionnel)
  • accès différenciés au système de suivi selon les types d'utilisateurs : accès invité aux résultats, accès authentifié à la configuration du projets, et accès administrateur à la configuration du système lui-même
  • rendu des pages de suivi à travers un reverse proxy HTTP, qui redirige une adresse sur le port 80 vers une adresse sur un autre port et une autre machine sur le même LAN
  • configuration équivalente à un fichier XML exportable, voire gérable en conf
La situation initiale en développement et en configuration était la suivante :
  • accès aux sources depuis Eclipse 3.2.2 / Windows XP SP2 par SVN+SSH
  • accès aux sources depuis Eclipse 3.2.2 / Mac OS X 10.4.9 par SVN+SSH
  • accès aux sources depuis une ligne de commande Windows XP SP2 par SVN+SSH (utilisation conjointe de PuTTY Pageant et de TortoiseSVN)
  • accès aux sources depuis des scripts Ant sous Windows XP SP2 par SVN+SSH (utilisation de svnAnt)
  • accès aux sources depuis une ligne de commande FreeBSD 6.2 par SVN+SSH (déclaration d'un tunnel déclaré dans ~/.subversion/config)
  • accès aux sources depuis des scripts Ant sous FreeBSD 6.2 par SVN+SSH (utilisation de svnAnt)
Les systèmes d'intégration continue que j'ai testés sont les suivants :
  • CruiseControl 2.6.2 (26 avril 2007)
  • LuntBuild 1.4.1 (5 juin 2007)
  • Continuum 1.0.3 (24 avril 2006)
Et le gagnant est... Continuum.

Ce n'est en aucun cas une étude approfondie. L'idée était d'aller vite.

C'est-à-dire que si on galère plus d'une heure sur l'installation ou la configuration d'un produit, hop, on l'abandonne.

Dans le détail, ce que j'ai constaté, sans creuser plus avant :

CruiseControl
  • permet de visualiser les résultats de tests (format junitreport)
  • ne permet pas de différencier les modes d'accès. Tous les utilisateurs qui voient les résultats peuvent également déclencher des builds.
  • réagit très mal quand on le met derrière un reverse proxy. Il y aurait des patchs à rajouter pour essayer quand même, mais bon.
    Quand on rentre dedans et qu'on voit l'indigence de certains développements open source, on essaie de changer des dizaines de lignes, mais on désespère.
    Abandon.
  • depuis Windows, avait de gros problèmes à aller chercher les sources par SVN+SSH (ah, et pourquoi ça ?).
  • note : permet de choisir l'emplacement des répertoires de local working copy pour SVN
LuntBuild
  • offre une typologie de 3 utilisateurs.
  • permet une configuration fine par une IHM web.
  • permet de positionner le rapatriement de sources sur des branches ou des tags
  • permet un paramétrage sympa : on peut fixer des propriétés d'exécution, etc.
  • franchement, c'était le plus prometteur.
  • quoique bénéficiant d'un installeur graphique bien foutu, est compliqué à installer en headless (= en ligne de commande).
    La copie de la webapp dans le répertoire de Tomcat 4.1.34 ne fonctionne pas, on obtient des java.lang.IllegalStateException indémerdables, mais si on le met dans Tomcat 5.5.17, il faut renseigner des variables qui ne sont pas documentées... Produit open source, pas de documentation de référence, tout ça.
    Abandon.
  • depuis Windows, avait de gros problèmes à aller chercher les sources par SVN+SSH (tiens donc ?).
  • note : met où il veut les répertoires de local working copy pour SVN

Continuum
  • permet un accès différencié entre invités et utilisateurs enregistrés
  • est d'une installation très simple
  • a une IHM web très simple aussi, voire rudimentaire (bien plus fonctionnelle que celle de CruiseControl cela dit)
  • du coup, ne disposerait pas d'une configuration exportable ? Apparemment pour cela il s'agit d'utiliser l'interface XML-RPC...
  • permet de changer la Base URL de l'IHM web (pratique pour le reverse proxy)
  • nécessite de modifier %ANT_HOME%\bin\ant.bat sous Windows, pour renvoyer un code erreur !=0 en cas de BUILD FAILED
  • se connecte sans problème à SVN+SSH depuis Windows
  • un projet = un module SVN (ouch!)
  • renomme à sa guise les répertoires de local working copy Subversion... (re-ouch!) Ça m'apprendra à être encore plus modulaire !
  • attend des plombes sur le checkout d'un gros projet (bah, c'est l'initialisation)
  • est rustique par rapport au potentiel de CruiseControl, mais au moins Continuum marche, lui, derrière le reverse proxy ! et marche plutôt bien :-)
  • ah, j'oubliais : la documentation de prise en main est très bonne (au vu du résultat atteint en un temps limité, pas de la qualité intrinsèque de la doc), mais je cherche encore la documentation de référence.

06 juin 2007

Réseautage cadres sur Toulouse

Par l'intermédiaire d'un collègue, Olivier Boisselet, j'ai pu participer hier à une soirée sur Toulouse, organisée par Cadres d'Oc. Allez, disons 60 personnes présentes ? Le thème de la conférence était « Marque ou pas marque ? ». Un panorama de concepts marketing, plus la vision personnelle de l'intervenant.
À part ça, ça réseaute à fond. Business, business, business, social, business, business, business... ;-)

Soirée bien sympathique ma foi. L'humanité et le dynamisme du secrétaire, Bernard-Yves Saint-Paul, sont je crois ce que je retiendrai le plus.

C'était l'occasion de rencontrer par une belle soirée toulousaine des entrepreneurs et cadres de tout poil. Tout le monde était en costard :-O et avait sa vingtaine de cartes de visite réglementaire.

Là il est 9 h 00. Les retours commencent à se faire : mails, demandes de contact Viadeo...

La France qui se lève tôt ? Tu parles. Business as usual, oui.

Merci Olivier.

03 juin 2007

Bill Gates and Steve Jobs: Video

Tout le monde en parle, alors je regarde : D5.

Et... Wow!

Ils parlent de l'informatique comme on en parlait en 1980. Les mêmes yeux qui pétillent, les mêmes rêves, et toujours une très grande énergie. Ils parlent de leur business et de leur passion. Ils s'envoient des vannes. Affectivement, il y a comme une complicité entre eux. Ils expriment leurs visions, leurs façons d'envisager les choses, avec une grande liberté : grande liberté d'action (100 milliards USD de capitalisation pour Apple Corp. Pour Microsoft, je ne veux même pas le savoir !), mais aussi grande liberté de pensée. C'est la Silicon Valley. C'est... l'Amérique.

Au moins ça change des lanceurs de start-ups qui ne parlent que pognon et Business Models tirés par la pub. Gates et Jobs parlent de valeur, de stratégie, de marché, de consommateurs, et même... d'utilisateurs.

Hey! ça m'a rappelé... un symbole, tout droit sorti des années 1980. Une pomme arc-en-ciel :-)

28 mai 2007

Formalisation vs. Annotations (suite à : codegen vs. @)

On dirait bien qu'il faut que les fichiers sources de génération, les méta-données, les diagrammes, les annotations... soient exprimés bêtement dans un langage fonctionnel. Langage fonctionnel, dont les documents « déclaratifs » XML, YAML, UML... sont des exemples primaires.

La frontière étant que le langage de programmation du code rajouté ne doit pas se mélanger aux « informations » (pour le coup, on est bien dans de l'information !) des méta-données. Tant que toute cette partie formelle est équivalente à une expression prouvable, on peut profiter de notre arsenal de preuve.

27 mai 2007

Génération de code vs. Annotations

Le sujet est un peu plus général que le titre, mais bon.

Il apparaît que dans le processus de développement logiciel, la génération de code qui s'appuie sur un formalisme (par exemple UML, XML, YAML...) est supérieure aux techniques inline qui s'embarquent dans le code lui-même : annotations, Generics, syntaxes de conventions à la RoR, reflection, JSP...

En pratique, cela se comprend quand le framework sous-jacent n'est pas bien mûr, ou pas maîtrisé : autant pouvoir s'appuyer sur du code produit par génération plutôt que sur un comportement « magique ». Mais en gros c'est une question de goût.

Cependant, du point de vue théorique, la génération de code est un opérateur qui a un inverse, et pas l'inlining. Dans les cas qui m'intéressent (principalement de la génération par XSLT), le code produit par génération est équivalent à la formalisation initiale du composant. Tandis qu'en inlining, non seulement on peut enrichir la formalisation avec du code (JSP...), on peut ou pas utiliser certaines techniques (Generics...), mais différents développeurs pourront avoir des techniques différentes. Certes, par rapport à la génération l'inlining a une richesse sémantique (cela du reste lorsque des gens trouvent intéressant de lire ce code), mais on n'a plus d'inverse.

L'inverse assure l'équivalence entre le code produit et la notation formelle. Ainsi un point de contrôle sur le code est équivalent à un point de contrôle sur la notation formelle. Ce n'est pas du tout le cas avec l'inlining : il faut écrire des points de contrôle spécifiques.

Le mieux qu'on puisse tirer est une extraction formelle à partir de code inlined : liste des annotations, etc. On obtient moults points de contrôles, mais on est forcément en-deçà du code lui-même. Et on perd évidemment toute la sémantique.

En conclusion : il ne faudrait plus mettre la sémantique dans l'inlining, mais dans une description autonome et disjointe. Et malgré les apparences il ne faut pas imaginer pouvoir suivre ce principe quand on utilise les annotations : on est toujours tenté par elles d'enrichir le code ou par le code d'enrichir icelles.

25 mai 2007

Plateformes applicatives

Le principe est le suivant : on met à disposition des utilisateurs une plateforme sur laquelle ils peuvent mêler eux-mêmes des composants applicatifs. Derrière, le métier, ou business, est lui regroupé non pas par utilisateurs, mais par services. Cela fait un maillage consistant, où chacun agrège ce qu'il veut : les utilisateurs font du drag&drop de widgets, les utilisateurs-développeurs font des mashups, les entreprises créent des partenariats pour se partager les données. Imaginez que vous puissiez faire installer par drag&drop un service Flickr sur votre page personnelle (modèle de NetVibes, voire d'AppExchange...), service qui propose des « objets » manipulables : des albums, des images, des personnes, des tags... et que cette manipulation permette les échanges avec les autres widgets : drag&drop d'image de Flickr vers un module de chat, recherche d'images analogues, retouche d'image... Ces fonctionnalités d'échanges ne sont pas apportés par les widgets eux-mêmes (très important), mais par la plateforme.

Oui, oui, ça date de 1984, et ça s'appelle Macintosh. Les applications y sont bien pensées, mais, surtout, elles prévoient dès leur conception de pouvoir échanger des « objets » avec les autres applications.
Imaginons qu'on arrive à ce modèle également pour le web.

Selon le point de vue adopté sur ces principes, on obtient les univers Netvibes (cohérence de la plateforme applicative), l'écosystème Netvibes (services publiés), la Facebook Platform (services publiés), AppExchange de SalesForce (services publiés, logique de partenariat entre métiers).

Un article de Fred Cavazza connexe : Réseau social + Web OS = Facebook Plateform

Et les Fûts ? Ben les Fûts c'est ça, mais pour les associations, open source, déployable sur le modèle Peer-to-Peer, et surtout, surtout, encore à l'état d'étude.

23 mai 2007

PHP vs Java

C'est moi, ou du code Java pourrave écrit à la va-vite, sans caching, sans pool de connexions, avec de l'introspection dans tous les sens, va plus vite que le code PHP ultra-optimisé avec les pconnect() de la mort-qui-tue qu'il était censé reprototyper ?

Déjà 100 ms de gagnées sur 130... Que reste-t-il à PHP ?

05 mai 2007

YAML vers XML

YAML est une notation fortement lisible et bien adaptée aux fichiers de configuration.

J'ai découvert YAML avec Ruby on Rails, et il m'a semblé pertinent de l'utiliser pour mes fichiers de configuration et de sources de génération de code.

Dès lors, afin de reboucler avec l'existant écrit XSLT ou autres mécanismes qui prenaient du XML en entrée, il est apparu intéressant de chercher un moyen de convertir du YAML en XML. Et là c'est absolument extraordinaire : alors que la spécification décrit en détail le modèle de représentation YAML, les essais de binding XML sont totalement désastreux.

J'ai bien trouvé quelques sources en Java :
  • JYaml. Fin constatée des travaux : février 2006. Java 5 only.
  • JvYAML. Activité constatée : de juin à septembre 2006.
  • yaml4j. Juin 2005.
  • JAML.
Hors Java, parlons par exemple de Syck, dédié à Ruby, Python, PHP et OCaml, rien de moins.
Mais tout ça est orienté fichiers plats, périmètre restreint, échanges de données, et performances.

En Java, je ne trouve pas de documentation d'architecture. L'un parle fichiers plats, l'autre System.out.println(), l'autre type cast...

Je n'ai pour ma part aucun intérêt à utiliser YAML dans des échanges de données. Je préfèrerais voir cracher du bête XML, dans le bête respect de la spécification.

01 mai 2007

Exhaustivité du Système d'Information

Mais quel intérêt de chercher à tout classifier, à tout contrôler ?

Pourquoi vouloir tout automatiser ?

Et pourquoi cette peur de la redondance des données ?

Un bon SI, c'est un SI au service des humains. Les humains préfèrent d'ailleurs un système fiable à un système qui se permet d'avoir des données incohérentes et qui en plus aurait des velléités de totalitarisme.

L'exhaustivité du SI, c'est un mythe idéologique. C'est une perversion. C'est souhaiter une plate-forme unique, qui contienne des données en correspondance à tout instant, dont la fiabilité serait assurée par la théorie, c'est-à-dire par un discours incomplet. C'est tomber systématiquement dans le travers de réfuter ce qui n'a pas été prévu par l'enthousiasme naïf du démiurge. « Pourquoi irais-je contrôler le résultat, puisque si tout a été fait comme prévu, le résultat est bon ». Aucune place pour la critique. Aucune certitude (sauf que les implémenteurs sont forcément mauvais). Et aucun humour, vous remarquerez.

Alors que d'un autre côté, on sait créer des systèmes souples, avec des traitements asynchrones et des contrôles dans tous les sens, en donnant à l'envi des indicateurs de fiabilité, en écrivant d'ailleurs ces contrôles avant le système lui-même. La fiabilité est donnée par l'usage. Et la fiabilité est forcément bonne. Pas parfaite dans un idéal, mais... bonne en pratique. Si les indicateurs sont publics, qui a intérêt à ce qu'ils soient mauvais ?

23 avril 2007

Confluence Personal License

Confluence, ce très bon wiki moultes fois recommandé, a depuis peu (me semble-t-il) un programme de licensing gratuit pour 2 utilisateurs. Tout le monde peut lire et laisser des commentaires anonymes, mais seuls 2 comptes, dont le compte Admin, peuvent créer et modifier des pages.

Le produit nécessite un JDK 1.4, vient par défaut avec son propre serveur HTTP et sa propre base de données.

Installé.

Confluence en licence standard (on part à $1200 dans le cas où on est ni une association à but non lucratif ni un projet open source) est un outil obligé pour travailler de façon collaborative. C'est un produit simple, rapide, efficace, ergonomique. Il vient avec un éditeur WYSIWYG pas trop buggé (pas trop, ai-je dit), une recherche full text très puissante, il sait indexer les documents Word, PowerPoint et PDF, et exporter en Word et PDF. Il est possible de rajouter des plugins. Le support est même réactif.

N'acceptez pas moins bien.

22 avril 2007

Pratique de l'art

Le 9 novembre 1989, Mstislav Rostropovitch, lui aussi virtuose, est lui aussi allé jouer dans une foule bruyante, voire pire : Bach était alors couvert par le bruit des burins et des marteaux piqueurs. Le mur de Berlin tombait, morceau après morceau.

Pourtant Rostropovitch ne s'est jamais plaint de n'avoir pas été écouté lors de cette expérience. Ce que depuis Paris il avait découvert se dérouler ce soir-là avait suscité chez lui une bête nécessité créatrice. L'art n'avait plus besoin de prétexte, ni l'artiste de public. Il s'agissait à mon avis d'une bête transcendance, du même ordre qu'un bête marteau crevait ce mur emprisonnant l'Europe.

Les expériences de Rostropovitch devant le mur de Berlin et de Joshua Bell dans le métro de Washington sont à mon avis à comparer. Si Kant n'était pas tant taxé de rigorisme, ce rapprochement servirait pleinement plusieurs de ses démonstrations sur la raison pratique.

18 avril 2007

Instrumentation

Joshua Bell a été convié en janvier dernier par le Washington Post a venir jouer du violon dans une station de métro, pour voir si des passants seraient touchés par la musique.

Ce qui me frappe c'est la différence d'appréciation de la musique sur la vidéo lorsqu'on voit que quelqu'un écoute ou... personne.

Dans cette expérience la virtuosité de Joshua Bell a été délibérément instrumentée pour montrer que des usagers du métro sont instrumentés de façon plus forte et plus durable par leur quotidien, et que certains, extrêmement rares, peuvent s'échapper de cette routine et être attentifs pour un instant à la sérénité.

Mais ce que j'y vois surtout, c'est la démonstration que l'art existe dans la relation avec le public, et que la virtuosité dans le vide, eh bien... ça n'est rien de plus. Mr Bell a dû bien s'ennuyer par moments.

Ah, et l'instrument est un Stradivarius.

Same difference.

17 avril 2007

Bug tracker planté

Tiens, ça ne m'était encore jamais arrivé, de planter un bug tracker. Où est-ce que je fais un rapport ? Cette fois ce n'était pas méchant cependant : un problème de mises à jour mal terminées sur la machine « repository ».

Une occasion de plus de mesurer l'importance des backups.

#51. Mettre en place des backups automatiques pour les données du bug tracker.

Ha... ha.

16 avril 2007

FreeBSD/i386

J'ai été médisant l'autre jour. FreeBSD/i386 s'est installé comme un charme sur le Dell. Il dispose par ailleurs d'un JDK natif et gère les RAMs de 4 Go.

Kss.

11 avril 2007

Jamais sans Windows

Ils sont sympas chez Dell. On peut désormais commander des machines sans Windows préinstallé. Sauf que sur un Dimension E520 nSeries (sans OS, donc) même le CD fourni avec un FreeDOS beta8 bootable ne s'installe pas, car le clavier USB cesse soudain d'être reconnu en plein milieu de la procédure. Idem pour un FreeDOS 1.0 final. Alors ne parlons pas de Linux ou de *BSD.

Certes l'update DM061 BIOS 2.2.1 semble avoir été passée avant la livraison. Mais rien ne fonctionne pour autant.

C'est rageant.

30 mars 2007

Subversion Repositories (SVN)

Un projet chez SourceForge, un projet chez Google Code, un serveur dans un cagibi distant (remote cagibi), chacun avec un repository Subversion (SVN), le deux premiers avec un accès HTTPS, le troisième en SVN+SSH. But du jeu, arriver à développer avec ou sans Eclipse, sur des postes Mac (Mac OS X) ou Windows (XP), et faire un peu d'intégration pas trop discontinue sur du NetBSD...

Mazette que de temps passé sur la configuration de tout ce petit monde.

Les Fûts sont au point mort

Déjeuner hier des trois fondateurs du projet.

Les nouvelles ne sont pas brillantes.

On gèle toutes les actions auprès des associations... Certaines attendaient un site web. Elles ne l'auront pas :-(
On gèle toutes les actions auprès des financeurs... Certains croyaient dans le projet. Il faudra attendre :-(
Et la prochaine réunion technique n'est pas prévue...

Bref.

21 mars 2007

Affinitiz : blogs et communautés

Affinitiz, un service qui allie blogs et communautés. Bon, d'après la présentation ce n'est pas d'une ergonomie folle, mais ça a le mérite d'exister, suivez mon regard.

Le service existerait depuis 6 ans, et compte actuellement 300 000 adhérents.

18 mars 2007

top10is : pour les associations sportives

Via « Créer et animer une association Loi 1901 » : top10is, un outil en ligne, actuellement en béta gratuite, qui cible les associations sportives… Euh, surtout les clubs de tennis, en fait.

17 février 2007

À quand l'hébergement par les internautes ?

Vu chez Transnets : «Web 3.0: une autre branche pour l’arbre des possibles»

Voici un extrait de l'idée :
Web 1.0: Les contenus sont produits et hébergés par des entreprises.

Web 2.0: Les contenus sont produits par les internautes et hébergés par des entreprises.

Web 3.0: Les contenus sont produits et hébergés par les internautes.
(Cela signifie ne plus héberger son mail sur Gmail, ses photos sur Flickr, etc… Les données sont reçues, stockées et accessibles sur une machine administrée par et physiquement chez l’interna
ute.)

Oooh, comme je suis d'accord :-) C'est ça, internet. La mise en réseau, à la fois des machines et des geeks (l'internet du début), des gens normaux (le web, puis le web 2.0), mais également des machines chez les gens (le peer-to-peer enfin valorisé par un côté réellement applicatif).


J'irai plus loin : Échangeons des données cryptées par P2P, et distribuons les traitements.

12 février 2007

Typographie française sur le web

En travaillant sur Unicode, je découvre la typographie sur le web.

Certes, je faisais jusqu’ici mon possible pour utiliser les guillemets chevrons [«…»] bien français au lieu des guillemets anglophones ["], j’usais de capitales accentuées, même dans le cas de majuscules (voir ici: Majuscule et capitale, minuscule et bas de casse), et je rajoutais au mieux de belles espaces insécables avant les signes de ponctuation double comme [:], [;], [?] et [!], mais… en restant dans le jeu de caractères ISO-8859-1 (ou « ISO-Latin-1 ») j’avais au final tout faux.

Les liens suivants m’ont ouvert les yeux :
Tout d’abord, les signes de ponctuation [;], [?] et [!] ne doivent pas être précédés d’une espace insécable, mais d’une… fine.

Ah.

Et comment fait-on une fine en HTML ? M’enfin, en changeant la taille de la police de l’espace insécable, c’est bien connu !
Tous à bord !
Doit s’écrire :
Tous à bord<span style="font-size: 30%;">&nbsp;</span>!
Autant dire que ça commence bien.

Ensuite, l’apostrophe. Moi qui croyais benoîtement que la courbure imposée lors de la frappe par Microsoft Word était de l’ordre du superflu, eh bien non, l’apostrophe française s’écrit bien [’] (Unicode &#8217;), et non ['] (ASCII &#39;).

Et le tiret cadratin, alors ? Oh, un simple &#8212; (—). Rappelons en effet que le &#151; du Windows CP-1252 n’est pas Unicode, et ne fonctionne comme l’indique sa table de codage, que sous Windows.

Le tiret demi-cadratin est lui donné par &#8211; (–).

Les points de suspension ? &#8230; (…).

Et heureusement que je suis sur Mac : tous ces caractères, en plus des majuscules accentuées, sont facilement accessibles au clavier. À part la fine insécable, bien sûr.

Me voilà donc à revoir toutes mes pages web francophones et à estimer le temps de recomposition de leurs textes.

Mais soudain j’échoue pour mon infortune sur une page de typographie, datée de 2004, qui s’intitule « Les ligatures ».

Page où l’on se remémore qu’on doit d’user du « œ » &#339; pour bien parler d’un œuf (Unicode) et non d’un oeuf (pour s’en tenir à ISO-8859-1) ; quant au «æ» de Lætitia, il se trouve, lui, dans ISO-8859-1.

Mais page, où l’on se fait également et aimablement rappeler, que « f i » doit être ligaturé. Ainsi que « f l ». « f f i ». « f f l ». Etc. !

« f f » : « ff », &#64256;
« f i » : « fi », &#64257;
« f l » : « fl », &#64258;
« f f i » : « ffi », &#64259;
« f f l » : « ffl », &#64260;
« c t » : « … », &#…; Introuvable ?
« s t » : « st », &#64262;

On parlera donc de « signification » et d’« efficacité », et non de "signification" ou d'"efficacité" (quelle horreur ! une apostrophe droite mariée avec d’angliches guillemets ; on ne sait plus qui est qui – sans parler de l’absence de ligature).

Comparez en sélectionnant des parties de mots : dans les premiers cas, les lettres ligaturées forment bien un unique caractère.

Et c’est là qu’on atteint la limite de l’exercice : ces mots aux lettres joliment ligaturées ne peuvent plus être trouvés dans la page par une bête recherche dans son navigateur ! On ne sait non plus ce qui advient de l’indexation du texte.

Faut-il patcher Firefox ? Google ? Aïe, aïe !

11 février 2007

Hellotipi : plateforme de sites familiaux

Le site Hellotipi : http://www.hellotipi.com/
Blog du créateur, mrBoo : http://www.mrboo.fr/

Hellotipi se présente comme une plateforme de création de sites de famille.
Chaque site de famille contient :
  • Un blog communautaire (chacun peut y donner des nouvelles et faire des commentaires)
  • Des albums de photos (stockage illimité)
  • Un arbre généalogique simplifié (à venir)
  • Un annuaire des membres de la famille
  • Un agenda partagé (pour planifier des événements familiaux)
Wikis, calendriers, plateforme mutualisée… On a tous les mêmes bonnes idées :-)
mrBoo parle même d'utiliser OpenID : « Votre identité numérique »

03 février 2007

Internationalisation de logiciel

Chez Finis Africae, un article sur la difficulté à utiliser les bons codes de langues (pour PalmOS, bon…) lorsqu'on veut internationaliser un logiciel : http://www.finis-africae.net/article.php?id=861

30 janvier 2007

Où en sont les Fûts ?

C'est l'hiver.

Standby sur les Fûts pour 3 mois.
Personnellement, je prends mes marques sur une nouvelle mission, qui me retrouve basé à Montauban.
Les autres sont un petit peu tous sous l'eau. Ils réagiront sur ce blog si ce n'est pas vrai :-)

Les projets de statuts sont d'après moi dans leur état définitif, mais… mais… mais qu'est-ce qui bloque, alors ?
Les fiches d'adhésion sont au même point.

Les développements de la plateforme PHP/Java sont interrompus jusqu'à fin mars.

Des prototypages et des essais de CMS et de wikis PHP pour les associations qu'on avait contactées en 2006 sont en cours. Si, si, c'est en cours. Je sais, ça ressemble à un gros serpent de mer, cette histoire. Même pas foutus d'installer Joomla! ou Drupal chez Free ! Il faut dire qu'avec ces solutions on est loin de la plateforme de services transverses, donc forcément, la motivation n'est pas la même... Mais ça avance. Les installations de produits en tests se succèdent sur la plateforme technique.

Les réunions mensuelles continuent, avec un staff qui se réduit finalement à 4 habitués : Benoît, Christophe, Pierre et moi. Les discussions, ainsi que sur la mailing-list, se concentrent actuellement sur des sujets techniques.

La dernière réunion a eu lieu jeudi dernier 18 janvier. Au programme, le « DVD du prestataire ». 2 Go de logiciels vaillamment récoltés par Benoît, gratuits et / ou open source, pour le métier de la partie « technique » de l'association. Ça sert aussi à ça, les Fûts :-)

C'est l'hiver, donc.

On est déjà fin janvier.

Ça ne nous empêche pas de vous souhaiter, et de nous souhaiter par la même occasion :-) que cette année soit la meilleure du monde :-)

01 décembre 2006

Lancement du groupe «Les Fûts - jobs »

« Les Fûts » est une association d'informaticiens bordelais visant à promouvoir les NTIC auprès des associations à but non lucratif.

« Les Fûts - Jobs » est un groupe Google qui découle de la deuxième activité de l'association : offrir un point de rencontre, d'échange et d'entraide pour les informaticiens bordelais.

Il ne s'agit pas de recopier les annonces du net (sauf si l'annonce en question est vraiment intéressante) mais de tisser un réseau d'informations.

Ce groupe s'adresse donc à ceux qui cherchent un (nouveau) job, et pour les indépendants, une mission, en faisant circuler leur CV auprès des membres et de faire fonctionner le «réseautage». Il s'adresse également à ceux qui offrent un job ou une mission.

Dans ce cadre, «Les Fûts - Jobs» permettra de passer les annonces découlant du recueil des besoins des associations membres.

Pour mémoire, rappelons l'existence du premier groupe Google de l'association «Les Fûts».

30 novembre 2006

Première rencontre avec l'association du CDD du pays des rives de Garonne

Première rencontre ce soir avec une nouvelle association pour cerner leurs besoins et voir comment l'assoce Les Fûts peut les aider.

Après un résumé de nos activités "un pour tous, tous pour un" (l'association Les Fûts au service de toutes les autres, un point de rencontre des architectes au sein de l'association Les Fûts), nous entrons dans le vif du sujet.

Le contexte : le conseil de développement
Les communes sont regroupées dans une communauté de communes, les CDC.
La CDC permet de regrouper des moyens partagés au service des communes.
Les CDC sont regroupées dans un pays (notion non administrative), rien à voir avec la France.
Le pays qui nous intéresse est celui des rives de Garonne.
Ce pays a un conseil syndical (CS) comprenant des élus pour 5 ans et un conseil de développement (CDD) comprenant des personnes de la société civile pour 10 ans.
Le CDD du pays des rives de Garonne regroupe une quarantaine de personnes (des personnes volontaires à candidature et portant des projets, souvent des présidents d'association).
Le CDD, d'après la loi Voynet, a pour objectif d'élaborer une charte pour les 10 années à venir.

Cette charte couvre plusieurs thèmes tels que :

  • développement économique,
  • loisirs,
  • aménagement et protection de l'environnement

Les besoins
Le besoin principal est la mise en oeuvre des moyens de travailler à l'élaboration de cette charte et de faire son suivi.
Cela passe par la mise à disposition d'informations à 3 niveaux :

  • au sein du Conseil De Développement en premier lieu,
  • au Conseil Syndical,
  • au public pour la charte

Les moyens attendus ont pour rôle de faciliter le travail collaboratif et la diffusion de l'information.

  • Niveau 1 : travail collaboratif des membres du CDD
    - Documents : création de documents, diffusion restreinte, corrections, validations.
    - Calendrier partagé : organisation des réunions deux fois par mois
    - Discussion et échange : blog et liste de diffusion pour les actualités du groupe, forum pour les sujets structurés (les thèmes de la charte)
  • Niveau 2 : communication vers le conseil syndical
    Mise à disposition des états d'avancement : diffusion restreinte aux membres du CS et du CDD en lecture uniquement.
    Retour possible du CS via une adresse mail.
  • Niveau 3 : communication vers la société civile
    Diffusion publique de la charte en lecture uniquement.
    L'idée est que les écrits restent alors que les membres du CDD et les élus sont présents pour une durée déterminée.

Conclusion
Les besoins exprimés sont homogènes avec ceux des autres associations : gestion documentaire, diffusion, travail collaboratif, site informatif.

Pour finir : le lien indispensable sur nos activités avec la plaquette des Fûts

29 novembre 2006

Deuxième soirée de présentation de l'association

Voilà, la deuxième soirée de présentation de l'association a bien eu lieu, malgré quelques désistements de dernière minute. Nous avons regretté particulièrement l'absence de notre président David, contraint par des obligations familiales peu réjouissantes, pour lequel nous avons eu une pensée.

Quoi qu'il en soit le grand événement de la soirée aura été l'adhésion à notre groupe de la première association. En effet j'ai eu le plaisir d'accueillir «PTG Bodyboard - Only Free Bodyboarding» (www.ptgbodyboard.com), toute jeune association représentée par JP, son frangin et Yann. Ces derniers ont manifesté un vif intérêt pour notre projet et sont prêts à servir de cobayes, de beta-testeurs (et non l'inverse ;-) ), prêts également à donner de leur personnes pour notre noble cause... Bon j'en fais peut-être un peu trop là, à froid, mais dans le contexte après un verre de Guiness, c'était quand même l'esprit... :-)

Les sujets abordés au cours de la soirée ont étés les suivants :
  • Présentation des membres fondateurs à savoir :
  • David Andrianavalontsalama : Président (non je n'ai pas ripé sur le clavier ;-) )
  • Christophe Brugne : Secrétaire adjoint
  • votre serviteur Pierre Kypréos : Secrétaire
  • Présentation de la domiciliation postale (ça je suis plus sûr de l'avoir évoqué hier, mais là voilà tout de même) :
    • Association Les Fûts
      1, avenue des Champs
      33600 Pessac
  • Appel à candidature pour un poste de trésorier. Celui-ci est resté vacant, même si il a abouti à raffiner le profil de la personne recherché : nous cherchons donc un comptable ou toute personne ayant un tant soit peut d'expérience en comptabilité et souhaitant s'investir dans l'association.
  • Discussion de la banque choisie :
    • CMSO (Crédit Mutuel Sud Ouest) de Pessac l'Alouette, que David a déjà contacté.
    • Le Crédit Agricole pour son site dédié aux associations
  • Annonce du très prochain dépôt des statuts à la préfecture, après intégration des remarques de Laurent Samuel, qui a eu la gentillesse de nous donner de son temps.
  • Présentation de la plaquette à destination des associations.
  • La réponse à la fameuse question «pourquoi Les Fûts» (il fallait être là ;-) )
  • Évocation des moyens de communication mis à disposition par «Les Fûts» :
  • Évocation de la toute prochaine fiche d'adhésion qui sera disponible en ligne sur le site. Avec, alors, la possibilité de recevoir des cotisations à l'ordre de «Association Les Fûts»
  • Présentation de la liste (non exhaustive) des avantages pour un informaticien à être membre :
  • la participation à des repas et des soirées
  • l'appartenance à un réseau d'échange, de veille
  • l'accès au forum privé fontguinews : super avantage ! non ? ;-)
  • l'accès à un carnet d'adresses de clients
  • la participation à des présentations techniques
  • l'accès aux ressources partagées par les membres : livres achetés, livres PDF achetés, versions d'évaluation de logiciels, sharewares achetés en nombre...
  • l'accès à la plateforme technique de tests
  • leur visibilité dans le blog et le site les Fûts (quand il sera créé...)
Note : les activités suivantes sont plus ou moins publiques :
  • l'accès aux réunions mensuelles
  • les bouffes à midi
  • l'accès en lecture/écriture à la mailing-list
  • l'accès en lecture au blog
  • l'accès en lecture au site web
  • Récapitulatif des cas concrets que nous avons a en liste d'attente :
    • Demande d'assistance pour des sites web :
- PTG Bodyboard (excellentissime association membre précédemment citée)
- Graine d'école (petite enfance)
- Le Jardin Sauvage (spectacles pour la petite enfance)
- AICPP33 (petite enfance)
- AIPAC (insertion chômeurs)
- Association de rugby de JBouroumeau
    • Demandes d'assistance à MOA
  • Annonce d'une présentation à plusieurs associations en janvier 2007. A noter que la proposition d'un samedi matin a été accueillie plutôt fraîchement par nos nouveau membres. A méditer...
  • Discussions plus techniques autour des CMS (Joomla!) et des Wiki en vue du soutien à PTG Bodyboard.

Voilà pour la présentation de l'association «Les Fûts».

A suivi un repas dans un restau japonais, le Yamato pour ne pas le citer, au cours duquel ont été abordés les sujets suivant :
  • Les restaurants japonais avec JP qui nous conseille le Moshi Moshi à Bordeaux (8 place Fernand Lafargue)
  • Les restaurant traditionnels :
    • La Cape à Cenon (1 étoile)
    • Un restaurant de fruits de mer sur le port d'Andernos mais dont j'ai oublié le nom (HELP JP!!!)
    • La Forge à Léognant qu'un autre Jean-Phillippe m'avait fait connaître il y a quelques temps et qui est toujours d'un excellent rapport qualité/prix.
    • et d'autres dont, j'espère, nous retrouverons bientôt les adresses sur ce forum.
  • L'accord mets/plat avec un grave somme toute honnête. Le Grave rouge a en effet la particularité de s'accorder aussi bien sur une viande que sur un poisson.
  • Les premières expériences des nos convives concernant... les sushi, sashimi et autre maki.
  • Divers ragots en tout genre sur lesquels je resterai discret ;-)
  • Le tout pour finir sur un vrai saké servi chaud (à l'étonnement de Christophe).
En un mot, ce «Fûts» une excellente soirée.

Je tiens à remercier ceux qui sont venus et à dire «à la prochaine» à ceux qui n'ont pu venir.

17 novembre 2006

If You Can't Test It…

On connaissait « If You Can’t Test It, Don’t Code It », qui enlève du boulot à tous ceux qui ne sauraient pas ou n'auraient pas les moyens de:
  • trouver l'environnement de tests pertinent (ça peut être un problème de budget, de hardware, d'impossibilité d'atteindre une charge demandée…),
  • écrire le test – automatisable – du bout de code qu'il sont censés développer (eh ben non, ce n'est pas toujours aussi évident qu'on le dit, figurez-vous),
  • trouver le temps de lancer le test (mouarf).
Maintenant, inaugurons « If You Can’t Test It, Don’t Specify It », qui va enlever du boulot parmi les MOAs à celles qui n'ont pas envie de s'enfoncer dans des spécifications contradictoires ou lacunaires, spécifications qui ne seront de toute façon jamais testées en conformité : elles sont du genre à changer un peu avant que la recette ne commence.

Cette maxime « If You Can't… Just Don't » est bêtement une conséquence de la méthode Test-Driven pour les spécifications, et ma foi c'est une très bonne conséquence.

D'ailleurs ça donne une idée par contraposition : et si la MOE décidait de refuser un cahier des charges qui ne contient pas à la base une batterie automatisée de tests de haut niveau ? Je ne dis pas que la MOA devrait spécifier ces tests, hein, je dis qu'elle devrait les écrire.
C'est un gage de succès pour la réussite de l'action de la MOA, alors pourquoi ne serait-ce pas un élément contractuel pour la MOE ? Après tout, tout le monde souhaite que le projet aboutisse, non ?

15 novembre 2006

Vox : pourquoi une nouvelle plateforme ?

Vox.com, un nouveau service de SixApart (Typepad, MovableType, LiveJournal…) a été lancé. Et on grassèye en félicitations.

C'est merveilleux, tout ce beau monde échange ses articles grâce aux flux RSS. On parle tous dans tous les sens dans la grande salle des pas perdus qu'est le web, mais la magie des cornets acoustiques directionnels que sont les abonnements RSS vous donnent assurance et confiance dans votre façon d'agréger l'information. Techniquement, c'est le tiers monde, mais du moment que vous avez l'impression d'être au centre, on continue comme ça.

Or la nouveauté de Vox, c'est simplement d'être une interface simplifiée.

L'architecture reste désespérement centralisée (centralisée certes par SixApart, mais centralisée).

Un seul cas d'utilisation parmi ceux qui de ce que j'ai vu manquent : si j'ai déjà un blog chez Typepad, pourquoi d'un seul clic ne puis-je créer un compte correspondant chez Vox ? Je ne parle pas d'importer mes articles depuis Typepad, je parle de brancher l'interface Vox directement sur mes données Typepad. Vox ne devrait être qu'une interface, pas une plateforme complète. Je devrais pouvoir utiliser indifféremment Vox ou Typepad selon mes humeurs et mes préférences. J'aurais plus ou moins de fonctionnalités selon le système, mais mes articles devraient pouvoir être communs. De toute façon mes lecteurs me lisent à travers RSS, n'est-ce-pas…

« Aaah oui, vois-tu ce qui compte ce n'est pas que tes articles soient en réalité tous au même endroit ou que tu puisses avoir une unité de rédaction. Ce qui compte c'est que le lecteur puisse les agréger au même endroit. » Voilà le tiers monde.
Et il existe même des applications qui me permettent d'envoyer des articles de façon unifiée sur différents blogs. À chaque fois la solution est applicative. Les protocoles et formats d'échanges sont HTTP et RSS, point. Ou, devrais-je dire, point-à-point.

Je ne comprends pas que les applicatifs du web aient pu prendre à ce point le pas sur les architectes de l'internet. C'était vraiment si compliqué de faire évoluer NNTP et de l'adapter aux blogs ?

14 novembre 2006

Inversion de Contrôle

J'ai été l'objet d'un sondage par téléphone : le gars appelait d'un pays de l'Union Européenne, et posait des questions sur ma perception de certaines marques chaussures de sport. C'est déjà suffisant comme argument de saynète surréaliste. Des chaussures de sport à moi, non mais franchement où va-t-on…

Là où c'était vraiment drôle c'est que je me voyais demander si je trouvais que [telle marque] était très, pas du tout, voire plus ou moins présente dans les spots de pub.
Moi : « — Vous savez, je regarde surtout les avis sur internet, par conséquent je ne sais pas si je suis bien dans votre cible…
Eul' gars : — En fait notre questionnaire porte sur la publicité en général, qu'elle passe à la télé, à la radio, ou sur internet. Pour nous c'est pareil.
Moi : — Euh… Écoutez, je suis désolé mais je n'ai pas la télévision, et je ne connais pas les publicités dont vous me parlez. Ce que je sais d'après internet des marques que vous citez, ce sont des avis de blogueurs, pas des arguments de départements marketing.
Eul' gars : — Vous nous conseillez de faire plutôt de la publicité sur internet, c'est ça ?
Moi : — C'est-à-dire que… je vous dis juste que ce n'est pas la publicité que vous essayez de faire sur vos propres produits que je vais chercher… Je préfère lire des avis d'utilisateurs. »
Ne m'envoyez pas de pub, c'est moi qui viendrai la chercher.

Le Design Pattern IoC dans toute sa splendeur.

13 novembre 2006

Projet de statuts

Après moultes consultations, voici le projet de statuts final de l'association Les Fûts: Statuts PDF. Il devrait être déposé cette semaine, donc si parmi la rare mais exigeante audience de ce blog il se trouve quelqu'un qui aurait un avis très critique sur un point qu'on n'aurait pas vu, vite ! un commentaire.

Merci.

Soirée du 19/10

Sur les blogs, soit tu es réactif dans les 24 heures, soit tu es out.

Voici donc le compte-rendu out de la soirée d'architectes Les Fûts d'il y a 4 semaines au Yorkshireman — c'était le jeudi 19 octobre.

Nous étions là, nous avons discuté, nous avons bu, puis nous avons dit que l'association était une bonne idée. Toujours cette fameuse polysémie de «Fût», terme à la fois d'architecture — la partie de la colonne qui repose sur la base et qui soutient le chapiteau puis l'édifice —, d'agriculture — la partie du tronc de l'arbre avant les frondaisons —, et d'invitation à la beuverie qui, souvent, seule aide à accoucher de difficiles consensus.

De gauche à droite : Geoffroy Alazard, Benoît Laffitte, Pierre Kypréos, Christophe Brugne, Thierry Mazzotti.

La plaquette qu'on voit à côté des bières sur les tables est celle-ci après mise à jour: Plaquette PDF.

Après cette réunion, le Google Group public Association Les Fûts a été créé, pour échanger en toute ouverture sur les besoins des associations.

Nous avons également un forum privé, pour les échanges sur la partie administrative, les sponsors (… un jour viendra) et les engueulades (… un jour viendra aussi).

À titre personnel et technique, sur la deuxième partie de soirée Benoît m'a convaincu de me mettre à Ruby on Rails, ce que j'ai fait et qui a été très porteur, merci bien.

Java est open-source

Voir l'article de Tim Bray et ses commentaires sur le passage de Java en open-source. Le lien vers l'article correspondant chez Sun (sun.com/opensource/java) ne semble pas encore fonctionner.
Ça fait au moins 2 ans qu'on attend ça. C'est le dénouement de 2 saisons de feuilleton politico-technique.

Le choix de la license ? Bah, GPL2, pourquoi ? La même que Torvalds a choisie pour Linux (par opposition notable avec la GPL3).

06 novembre 2006

Google Apps

Lu sur 01net :
Déjà disponible outre-Altantique, Google Apps cible les PME et les universités. Il possède les inconvénients des services en mode ASP (Application Service Provider). Il suffit que la connexion de votre société soit hors service pour que vous n'ayez plus accès aux e-mails stockés dans votre compte de messagerie, conservés sur les serveurs de Google, et non pas sur votre ordinateur.
Aaah, Google...
Le charme désuet de la couche applicative sans réplication...

31 octobre 2006

Wikis : Socialtext & SharePoint => SocialPoint

Vu sur le blog de Ross Mayfield : SocialPoint: Best-of-Breed Wiki on Sharepoint.

J'avais assisté à une présentation de Microsoft SharePoint Portal Server à la CCI de Bordeaux. Tout n'était pas noir, mais Microsoft continuait de présenter sa solution intégrée comme étant le Graal indépassable, cette fois-ci dans le domaine du travail collaboratif. C'était d'autant plus agaçant que leur approche était clairement «orientée outil», et non pas «orientée méthode» [de travail].

La collaboration avec SharePoint de plateformes comme Socialtext, bien qu'il s'agisse certainement d'intégrations avant tout techniques, pourrait amener des utilisateurs de Socialtext à faire profiter de leurs pratiques, par porosité, certains groupes d'utilisateurs de SharePoint.

27 octobre 2006

Je ne comprends pas Netvibes

Je suis en train de visionner le screencast de MacosX86 sur Netvibes (30'00", 68 Mo, format QuickTime, trouvé via Alternatives numériques, par ici).

C'est une vidéo qui présente Netvibes aux débutants, mais elle va jusqu'à parler du Netvibes Ecosystem.

Ce qui frappe chez Netvibes, c'est l'abondance de drag&drop, et la volonté d'intégrer tous les services possibles du web 2.0 : reader RSS, signets, calendriers, mais aussi vidéos et autres. Et là j'avoue que je ne pige pas.
Pourquoi tout redévelopper en Ajax, alors que l'OS de l'utilisateur sait déjà, ou devrait déjà savoir, faire interopérer tous ces petits bouts d'applications ? Pourquoi utiliser un lecteur dans un plugin, encapsulé dans du scripting, encapsulé dans un navigateur, encapsulé dans l'OS ? En l'occurrence, de la vidéo dans Flash dans Ajax dans Firefox dans MacOS X. Il y a un concept qui m'échappe certainement.

Pourquoi ne pas directement proposer par exemple une application XUL qui s'exécute dans Firefox ?
On n'aurait peut-être pas le même niveau d'APIs, je ne sais pas – je ne connais pas XUL.
Mais il me semble qu'à l'ère de l'Injection de Dépendances et autres Inversions de Contrôle, on ne devrait plus réaliser de telles pièces montées qui empilent autant de technos les unes au-dessus des autres.
On devrait pouvoir s'en sortir par des callbacks sur l'OS ou a minima sur le navigateur.
Ça me semblerait logique, disons.

Je sais bien que les ActiveX de Microsoft ou les applets de Sun ne valent pas mieux que le bon vieil Ajax mis au goût du jour par Google, notamment au niveau performances – pour des choses simples –, et surtout base installée.
Mais au lieu de penser HTML + Javascript + machine puissante, ne pourrait-on pas penser Firefox ?

Netvibes me fait l'effet d'une bête maquette de ce que devrait raisonnablement être l'Internet grand public.

23 octobre 2006

Travailler sans les transactions

Le modèle technique fait qu'il n'y a pas de transactions...

C'est facile à gérer dans le cas des mises à jour, puisqu'il s'agit simplement de poser des verrous applicatifs ou des verrous métier. Rappelons à cette occasion qu'un verrou applicatif ou métier bien posé est une garantie de la cohérence des données, tandis que tous les verrous techniques du monde auront toujours a un moment donné un ou plusieurs angles morts, et là, bien malin qui saura dépatouiller le MPD de la mort, en répondant à la fois aux exigences des fonctionnels qui veulent pouvoir modifier la base de prod' en cas de pépin (si, si) et aux nouvelles contraintes techniques des architectes (si, si).
Par ailleurs dans le modèle la cohérence des données est également assurée par leur versioning : deux parachutes valent mieux qu'un.

Pour les mises à jour des données métier, donc, pas de problème. Pour certaines modifications des données techniques non versionnées (incrémenter une date de mise à jour...), ça passe aussi. Mais que se passe-t-il en cas de destruction des données techniques ? Je ne sais pas, moi, la destruction de la session applicative, par exemple.
Si une session est en train d'être détruite, il faut interdire toute lecture et toute modification sur les objets en base attachés à cette session. Ah, zut, on n'a pas les transactions. Et à ce niveau on n'est plus versionnés...
Bon, dans ce cas particulier, la solution est simple : on s'en sort en préparant un champ de date de dernier accès à la session et en posant un verrou par une requête classique UPDATE WHERE, comme dans le cas applicatif.

Mais voici la conclusion : travailler sans les transactions impose dans certains cas de raffiner son modèle de données (ici en rajoutant un champ, s'il n'était pas prévu au départ), afin de pouvoir poser des verrous par des requêtes simples, seules garanties d'ACIDité.

Une contrainte qui offre en contrepartie à la fois une garantie absolue [ici, la cohérence des données] et une plus grande solidité du modèle, ça ne vous rappelle rien ? Eh oui, les tests.
Pour pouvoir simplement écrire certains tests, il faut parfois revoir, à l'avantage, le modèle.

Dépassons les choses simples

Un article de Jakob Nielsen sur la productivité accrue ou amoindrie par un intranet : Productivity and Screen Size.

Deux citations choisies :
With more choices, it takes more time to make a decision.
Et :
Skilled performance almost never happens on the Web, because users constantly encounter new pages; that is, they spend most of their time pondering options and trying to understand the content that's being presented. This is why most websites should lay off the fancy drag-and-drop features and focus on the simplest possible interaction techniques that are common to all sites.
C'est le débat entre MacOS (le vrai MacOS des débuts, hein, pas son petit frère surdoué hyperactif et insupportable qu'est MacOS X) et, hrem... Windows. Entre les interfaces de Blogger (Google) et Vox (SixApart). Entre NetVibes et le reste du monde. Mais aussi entre la ligne de commande et le clickodrome. Certaines lignes de commandes sont mieux pensées que certains intranets, eh oui.

Je verrais un autre argument : dans la bureautique traditionnelle, les fichiers sont stockés sur le disque dur. Ce n'est pas le plus conceptuellement satisfaisant, mais la délimitation est claire. Si tant est que j'aie confiance dans mon système d'exploitation (et si non, "get a Macintosh"), tous mes fichiers sont à un endroit déterminé, je peux les retrouver en explorant le système. «Faire un backup» veut encore dire quelque chose ; ça s'adresse aux couches basses, pas à l'applicatif.

Avec le web 2.0 (Google, les blogs, les applications hébergées...) j'ai des documents un peu partout. Oh, d'accord, je parle de « documents », d'« information», et non plus de bêtes «fichiers». N'empêche que j'en ai partout, et que ce qui me sauve, ce n'est pas ma capacité à explorer, c'est ma capacité à faire des copies dans tous les coins. Ma capacité à rajouter de la «sémantique». Sauf que cette sémantique est rien moins que primaire. Et s'applique à des objets fort répandus, donc fort simples.

On passe le temps à trouver de nouvelles façons de faire des choses élémentaires, et à s'approprier des systèmes incomplets.

Moi ça me fait penser dans les années 90 aux copains qui étaient heureux sur PC de découvrir le milliard d'applications disponibles, pourtant le plus souvent nazes et incompatibles entre elles.
Pendant ce temps nous on était sur Mac, avec peu d'applications, mais des bonnes. Des applications interopérables, drag&droppables, avec des guidelines homogènes, et même quelques AppleEvents. J'ai bien dit : quelques.

Eh bien il semblerait que le Web 2.0 tienne du modèle PC. Un bordel couvré avec de bons détails et une bonne dose de tape-à-l'œil mais qui présente un ensemble au final peu fonctionnel et surtout non homogène.
Oh, pardon, il y a les... flux RSS. Dommage qu'il n'y ait aucune sémantique valable dans ces flux, hein ?

19 octobre 2006

L'identité numérique

Chez Tendances.IT : Qu'est-ce que l'identité numérique ? Il cite évidemment Verisign, Microsoft, Google (Google Account)...
« Les outils de gestion de l'identité numérique sont en pleine maturation, et ce domaine est jugé comme stratégique par les grands éditeurs. »
Chez Bertrand Duperrin : Des outils pour gérer votre e-dentité, et Les réseaux sociaux dans l'Internet 2.

Chez Les Fûts : ... et si l'identité n'était pas une donnée, mais un flux ?

16 octobre 2006

Rencontre avec blueKiwi

Au Forum Aquitain de l'Économie Numérique jeudi dernier à la CCI de Bordeaux, j'ai rencontré Bertrand Duperrin, blogueur émérite (blog perso, blog pro), à qui j'ai demandé de me présenter de vive voix blueKiwi, le produit de la boîte dont il est éponyme, qui s'est récemment taillé un beau succès de démarrage chez Dassault Systèmes.

blueKiwi est une plateforme de blogs d'entreprise, avec des fonctionnalités bien vues, mettant davantage l'accent sur l'apport managerial que sur les prouesses techniques.

Bertrand Duperrin quant à lui est un fou du blogging, qui connaît beaucoup beaucoup de choses.

Un déjeuner et un début d'après-midi ma foi passionnants.

Une petite histoire de Usenet

Parallèlement à la révolution des comportements qu'apportent les blogs, il est à mon sens bon de se rappeler ce qu'a apporté et continue d'apporter Usenet. Car il y a du bon et même du très bon dans ce réseau.

Pour cela, je vous convie à vous pencher sur Une petite histoire de Usenet, un billet à la fois informatif et décalé sur le sujet.

Rappelons que Usenet date de 1980, NNTP de 1986, et le web des années 1990 seulement. À mon sens, les flux RSS comme le « tout-collaboratif mais néanmoins propriétaire » du web 2.0 passent à côté d'un aspect de libre partage, qui est au cœur de Usenet.

Je vous livre quelques citations de l'article, pour vous faire une idée du ton général :

« Cette "Histoire De Usenet" explore ces aspects du point de vue de la théorie psychanalytique des groupes. »

« La transmission de paquets passant de nœuds en nœuds ayant la même autorité sans système central (...) »

« (...) la mise à disposition, pour tous, d'un travail d'un des membres du groupe afin d'améliorer le fonctionnement du groupe tout entier. »

« La structure ouverte de Usenet va garantir son succès. »

« Chaque administrateur est maître chez soi, et fait ce qu'il veut. »

« Mais [la toute puissance] est limitée à leur site. Les administrateurs règnent (...) sur un royaume qui ne comporte qu'un seul sujet : eux-mêmes. »

« Sur Usenet, les pseudonymes sont mal vus, et chaque contributeur se doit d'avoir une adresse e-mail valide. »

« La fantasmatique sous-jacente est assez explicite : elle est anale – il faut garder le groupe propre (...) »

« Le troll est ainsi à Usenet ce que le masochisme est au fonctionnement psychique : un gardien de vie. »

« Au flaming, les membres du groupe réagissent parfois par un flooding. »


Bonne lecture.

11 octobre 2006

Le syndrome du PowerPoint

Comment, ça ne vous dit rien ? C'est le syndrome du PowerPoint, chez Temps Réels.

Ils pointent également vers un document intitulé « Comment devenir beau, riche et intelligent grâce à Word, Excel et Powerpoint », ce qui peut toujours servir.

09 octobre 2006

Réplication entre centraux

Rappel d'une vieille idée (un peu à la base du truc, hein) : ça serait bien si n'importe qui pouvait installer un moteur « Les Fûts », que ce soit sur un gros serveur avec QoS, sur un LAN coupé du net, voire sur un portable, et que ces moteurs répliquent leurs données entre eux, à la manière de NNTP. J'ai bien dit « à la manière » ;-) On aurait des protocoles standard pour les échanges, et le b*rdel fonctionnerait aussi bien comme NNTP que comme un SCM... Le rêve.

À ce que j'ai compris, XWiki a aussi une vision qui parle de réplication, avec XWiki Concerto, pour lequel ils viennent d'obtenir une aide de l'ANR (Agence Nationale de la Recherche).

Pour les Fûts, l'idée est de considérer que les données, versionnées, faut-il une nouvelle fois le rappeler, sont des résultats de traitements, et que les traitements sont ce que font les centraux quand ils exécutent les commandes postées par les caches applicatifs.

Le central assure :
  • l'absence de conflits entre les traitements (puisque c'est lui qui les ordonnance)
  • la cohérence des données
  • l'indexation des données
  • le versioning des données
Il dispose :
  • d'un référentiel temporel
  • d'un référentiel des versions de données (« révisions »)
Il peut être découplé de tout espace de stockage. Son boulot est surtout d'assurer la gestion des informations sur les données, pas forcément des données elles-mêmes. En revanche, il archive pas mal de trucs, en particulier toutes les commandes.

Quand deux centraux s'échangent des informations, on ne fait transiter que les commandes (« tout est message », rappelez-vous), pas les données. Ça n'aurait aucun sens de répliquer les données, car on est incapable d'assurer la cohérence d'une donnée isolée.

Les données sont en quelque sorte des validations par les centraux des commandes. Les commandes sont donc estampillées « non validées, locales à tel cache applicatif », ou « validées, provenant de tel central ». Les données sont estampillées « non validées, locales à tel cache applicatif », ou « validées, provenant du central auquel est rattaché le cache applicatif »

Même si elle ne concerne que les commandes, la réplication entre centraux doit s'appuyer sur des identifiants « universels », qui permettront de référencer dans tous les centraux les mêmes objets :
  • identifiants d'articles (c'est le champ Message-ID dans NNTP)
  • identifiants d'utilisateurs (c'est la base visible de la base du projet !)
  • dates
  • URLs, e-mails, adresses IP...
  • types d'actions élémentaires
  • autres identifiants, externes (exemple : ISBN...)

Aquitaine : Forum de l'Économie Numérique le 12/10

Ce jeudi 12 octobre se tient à Bordeaux le Forum aquitain de l'Économie Numérique. Il y aura du France Telecom, du Capgemini, du Microsoft, mais aussi du Google entre autres.

Via Bertrand Duperrin et Miss Tics.

05 octobre 2006

Amazon's S3 — et EC2

L'initiative Simple Storage Server (S3) d'Amazon semble être une excellente solution pour monter sans s'embêter avec des locaux et du matériel, une baie virtuelle de stockage de données.

Par ici, un développeur en parle : Replacing my home backup server with Amazon's S3.

Le tarif mensuel : $0.15/GB pour le stockage, et $0.20/GB pour le transfert. Largement dans les moyens des Fûts.

Amazon lance aussi son Elastic Compute Cloud (EC2), pour du CPU virtuel.

Rencontre avec XWiki (2)

P'tite photo sur le blog de Luis Arias : David Andriana @ XWiki.

04 octobre 2006

OpenAjax Alliance White Paper

Un White Paper sur Ajax chez l'OpenAjax Alliance (Google mais pas Yahoo!, Mozilla mais pas Microsoft...) : OpenAjax Alliance White Paper. Le PDF fait 23 pages, en anglais et avec de jolis schémas.

Humour de développeur

Je vous recommande : How to Shoot Yourself in the Foot in Any Programming Language.

03 octobre 2006

Forum Architectes (SOA) le 19/10

C'est ballot, le jeudi 19/10 il y a un forum Architectes à Paris, centré sur SOA.
Inscription sur le site de Microsoft France.

Il faudra rentrer tôt pour la soirée Les Fûts à Talence :-)

02 octobre 2006

Rencontre avec XWiki

De passage à Paris en fin de semaine, j'ai pu rencontrer Ludovic Dubost et Luis Arias, de XWiki.

XWiki est un wiki en Java, avec un coeur open-source, une équipe française et une communauté importante. Lire Why Is XWiki Different. Les clients peuvent demander à intégrer une surcouche spécifique à leur besoin au-dessus de XWiki. Un exemple, Chronopolys :
CHRONOPOLYS® est solution hébergée au service des collectivités locales et territoriales. CHRONOPOLYS® sert à organiser ou simplifier la gestion des projets de la collectivité, c'est-à-dire les échanges entre ses agents internes et externes : la coordination, le partage d'information, la planification, etc.
Chronopolys s'appuie sur XWiki.

J'avais regardé le produit de loin au début du dev des Fûts. C'était intéressant de discuter avec son fondateur.
On a échangé nos points de vue, notamment sur la réplication de wikis, et sur l'utilité ou non de la transversalité. Intéressant.

26 septembre 2006

Un forum en Ajax

Un forum 3 zones en Ajax :
http://www.jackslocum.com/forum2/

L'annonce par le développeur, dans un classiquement ignoble phpBB :
http://www.jackslocum.com/forum/viewtopic.php?t=72

Dans le forum Ajax, on notera la liste scrollable définitivement user-friendly, sauf qu'il a gardé la... pagination ! du forum HTML. Impressionnant de bêtise. J'espère qu'il peut faire sauter ça.

21 septembre 2006

Soirée les Fûts : 19/10

Une soirée entre architectes qui aiment la bière...
  • Qui : ouvert à tous.
  • Quoi : du buzz 2.0, de la binouze et de la détente.
  • Quand : dans un mois, jeudi soir 19 octobre 2006.
  • Où : sur Bordeaux, mais on ne sait pas encore où précisément. Contactez-moi pour dire si vous venez. Selon le nombre de participants et les avis, on choisira le lieu.

12 septembre 2006

Spread : CMS open-source

Citation :
Spread est un outil de gestion de contenu ergonomique
  • Il se concentre sur les besoins essentiels des associations ou PME.
  • Il utilise AJAX pour simplifier les insertions de contenus multimédias.
  • Il applique au Web les principes des applications classiques : palettes d'outils, drag & drop...
  • Il est Open Source
  • Il est basé sur le framework Ruby on Rails et la bibliothèque Ajax Prototype.
Eh oui, le fameux Ruby on Rails...

C'est fou le temps qu'on a à perdre et les jolies choses qu'on peut faire avec ces technos de djeunz.

« Netvibes 2.0 »

Un article chez Fred Cavazza, qui généralise un aspect de la vision qui sous-tend la plateforme associative des Fûts : Netvibes 2.0 ?

Oui, oui, je sais, Netvibes a levé 12 M€ récemment...

Reconfiguration de réseau

Franchement, en 2006, il y a encore des gens qui paramètrent des adresses IP en dur dans leur environnement ? Comme par exemple l'adresse IP d'un serveur Subversion ?

Mais c'est dingue ! Et comment font ces gens quand la cartographie du réseau évolue ?

Non ! Ils se font à la main les relocations des 20 projets sur chaque poste ?

Ah, oui.

Bien sûr...

Fichier hosts, qu'on te dit.

08 septembre 2006

Priorités techniques (versionnage des données)

On a eu un débat sur les priorités dans le développement :-P

Une question forte était notamment de savoir s'il n'aurait pas été plus judicieux de faire de suite un amorçage avec une petite IHM sexy, au lieu de régler la question du versionnage des données.

J'avoue que je n'ai pas de réponse à cette question, j'ai vraiment hésité à implémenter le versionnage des données dès la v0.2 (implémentation du forum).

Ce que je peux dire, c'est que pour le développement du forum, le versionnage des données offrait d'emblée les points suivants :
  • les contextes de navigation, notamment dans les résultats de recherche (les résultats d'une recherche lancée à un instant <t> restent inchangés même si de nouvelles données sont arrivées à <t+1>, <t+2>... <t+n> : le rafraîchissement de la recherche est à la discrétion de l'utilisateur, pas du système)
  • le suivi des commandes pour les traitements asynchrones (si une commande à <n+2> ne passe pas, on peut revenir à l'état <n> ou <n+1>, selon l'intégrité demandée : passage de commandes par lots, etc.).
    À vrai dire, dès qu'on fait du traitement asynchrone, je ne vois pas comment s'en sortir sans versionnage.
Et bien sûr, sur le long terme, le versionnage des données offrira :
  • des sauvegardes métier faciles et cohérentes
  • une possibilité de gérer la concurrence entre des modifications multi-sites
Bien sûr, les utilisateurs lambda n'ont que faire de ces subtilités. Le versionnage est surtout un confort pour les administrateurs fonctionnels, car pour chaque version étiquetée, le système leur garantit la cohérence des données.

Cependant ce versionnage est tellement galère à implémenter from scratch, que je n'arrive même pas à imaginer la somme monstrueuse d'efforts qu'il faut déployer pour garantir une migration souple des données d'un système sans versionnage, vers un système avec versionnage. À moins bien sûr d'arrêter les serveurs pour verrouiller les données, mais c'est pas du jeu ;-)

C'est une autre façon de voir les choses : y avait-il un moyen acceptable de faire autrement que d'implémenter ce merdier dès le début ?
La question ainsi posée, ma réponse serait proche du « non »...


Dans le même genre, il y a d'autres « priorités techniques discutables » :
  • Unicode
  • internationalisation (1)
  • gestion des timezones
  • gestion répartie des identités
  • centralisation de la publication des messages
  • sessions multi-sites (un peu de SSO)
  • ...?
Cela, alors que le Back&Reload n'est pas encore géré...

Le débat reste ouvert, ainsi que les commentaires :-)


(1) Pour mémoire, sur l'internationalisation, voir le post de Tristant Nitot :
Localization and Internationalization: what some of us have learnt

05 septembre 2006

Ben tiens : rev link vers blog associatif

Juste le temps de retrouver mes pénates de développeur fou, pénates qui consistent entre autres à relever certains blogs, et je m'aperçois que LSM cite le projet... C'est par ici. LSM y recense les caractéristiques de ce que serait un bon outil web pour les associations.
LSM, Laurent Samuel, tient entre autres un blog intitulé «Créer et animer une association Loi 1901», que j'ai déjà cité.

01 août 2006

OpenID (Verisign)

Et le gagnant est... OpenID, visiblement une initiative de Verisign. C'est une solution gratuite et réellement distribuée ("anybody can be an OpenID server") pour la problématique du Single Sign-On sur le web.

Vite ! une implémentation gratuite, qu'on puisse tester.

31 juillet 2006

Lafraise.com : Success Story

1er mars 2004 :
Voir : en bas de la page d'archives http://www.lafraise.com/blog/2004/03/index.php


19 juillet 2006 :
(...) je viens de signer la vente de Lafraise, à Spreadshirt et qu'une page va bientôt se tourner, dans ma courte vie.
Voir : l'article intitulé «Ma retraite à 35 ans», au milieu de la page d'archives http://www.lafraise.com/blog/2006/07/index.php


Lafraise.com. Voir les détails magnifiques de la création de la boîte en plongeant dans ledit blog. Après 3 ans d'activité commerciale web personnalisée -- eh oui, c'est ça la technologie au service des gens -- Patrice arrivait à 80 kEUR de CA mensuel, et finalement revend.

Cette histoire est exemplaire, magnifique. Bien, bien, avant les 80 kEUR de CA, c'était tout simplement un exemple, THE exemple, de comment on pouvait comprendre internet. La revente de ces derniers jours clôt le chapitre de façon pragmatique.

27 juillet 2006

Achats IRL vs. achats online

L'autre jour j'achète une imprimante(*).
Je prends la voiture, je vais chez Surcouf, j'achète, je repars.
Au moment de déballer l'engin, pour une sombre histoire de détails sur les caractéristiques, je regarde sur surcouf.fr. J'y vois la bête 70 EUR moins chère qu'en ville. Mazette me dis-je.
Je reprends la voiture, je vais me faire rembourser, puis je me fais livrer par le net.

Quelques jours plus tard j'achète un disque dur(**).
Donc là j'ai bien compris le truc, je regarde d'abord sur le net, et je vais au magasin pour comparer. L'appareil y est à 10 EUR moins cher que sur le net, mazette.

Çà alors !


(*) Brother HL-5250DN, laser N&B, réseau, compatible MacOS / MacOS X / Win XP, silencieuse, stable, 20ppm recto-verso, imprimante que je vous recommande du reste.
(**) Non, je ne prévois pas mes achats à l'avance, quelle idée.

25 juillet 2006

Blogger : publication différée

C'est quoi ce bug ? On ne peut pas faire proprement de publication différée sous Blogger ?
Si je prépare des notes le 23/07, ce n'est pas pour les voir apparaître comme datées du 23 alors que je les publie le 25 !

23 juillet 2006

Quand une plateforme blog tombe en panne: le cas TypePad

Via pointblog : Panne mondiale pour TypePad ?

En deux mots, les blogs TypePad étaient accessibles en lecture, mais les auteurs ne pouvaient pas poster de nouveaux messages. C'était le 12 juillet, et ça a duré moins d'une journée.

C'est exactement ce qui se passe quand la consultation des messages se fait depuis un cache applicatif réparti mais avec une publication de messages centralisée. C'est le choix suivi pour le lancement des Fûts. Ce n'est pas le cas d'un système NNTP comme Usenet par exemple.

Tout ça pour dire qu'intégrer toute la logique NNTP au phénomène des blogs, serait une bonne grosse révolution. Redondance, fiabilité, pérennité.

Sans parler du cross-blogging dans les commentaires, qui est une sous-partie de ce qu'apporte NNTP, et qui pour le coup est dans les principes initiaux des Fûts. Mais c'est applicatif. La révolution devrait porter sur l'infrastructure, pas seulement sur l'applicatif.
Et qu'on ne me parle pas de RSS ! cette espèce de tam-tam XML, où «chacun» est responsable de faire la réplication des informations. RSS est applicatif. Ce n'est pas du transport, il faut arrêter cette confusion.

Un peu de distribution PHP/Java

On teste la publication d'un message sur un forum des Fûts, avec des appels synchrones uniquement, en mode DEBUG et en mono-thread.
Les appels distants pour la publication d'un message sont les suivants :
  1. PHP notifie Java que des commandes sont à traiter
  2. Java récupère auprès de PHP les commandes à traiter (en lot)
  3. Java réserve auprès de PHP une nouvelle version des données («locked rev»)
  4. Java sollicite PHP pour chaque message posté : prise en compte des données dans la rev applicative, calcul des threads
  5. Java relâche la rev auprès de PHP
  6. Java indique à PHP que les commandes sont traitées (une par une. Petit bug)
Total pour un message : un appel distant de PHP vers Java, 5 appels distants dans l'autre sens.

En cible, 1./2. forke.
Pour les tests, 1./2. est synchrone.

Voici les temps de réponse :
  1. PHP/PC ---(local)---> Java/PC
    moyenne 1356 ms, écart-type 64 ms (5 %)
  2. PHP/PC ---(LAN)---> Java/minimac
    moyenne 6988 ms, écart-type 2828 ms (36 %)
  3. PHP/free.fr ---(internet)---> Freebox ---(LAN)---> Java/PC
    moyenne 3266 ms, écart-type 1191 ms (36 %)
  4. PHP/free.fr ---(internet)---> Freebox ---(LAN)---> Java/minimac
    moyenne 7778 ms, écart-type 3672 ms (47 %)
Axes d'améliorations :
  • Mettre une vraie machine en frontal SOA DMZisé. Le «minimac» PPC patine quand on veut lui faire faire du J2EE.
  • Penser à un serveur hébergé.
Urgence :
  • Aucune. Depuis quand 10 secondes pour poster un message sont-elles un délai rédhibitoire sur le web ? ;-)

21 juillet 2006

Tests de mini-scénarios web

Pour le développement, il y a une catégorie de tests qui se déroulent sur des scénarios, c'est-à-dire des enchaînements de pages. On procède ainsi :
  1. on décrit la suite de pages du site web à tester. Soit en donnant explicitement les URLs, soit en indiquant quel clic simuler, soit en indiquant quel formulaire soumettre.
  2. pour chaque page, on donne la série de tests à passer sur le HTML : validité du HTML, contenus attendus, contenus interdits...
  3. pour chaque page, on donne la série de tests à passer sur l'état de la base : le test le plus simple étant de contrôler le nombre de lignes dans certaines tables.
Note : c'est assez différent de la «fermeture Hyper Texte», qui valide que tous les liens à l'intérieur d'un site sont cohérents, mais qui concerne davantage un site statique qu'un site dynamique.

Voici les écrans qui résument les résultats des tests sur scénarios.

Tout d'abord l'écran global, qui montrait dans sa première version les résultats de validation HTML, et qui montre maintenant en sus les résultats de validation DB :


La colonne «v.» donne le nombre total de tests pour chaque page, HTML et DB confondus.
En rouge, le nombre de tests qui ne passent pas.

Puis l'écran qui résume l'évolution de la base au fil du scénario :


En lignes les tables, en colonnes les étapes du scénario (les actions SUBMIT sont indiquées), et à l'intérieur du tableau les nombres de lignes dans chaque table. Quand le test ne passe pas (en rouge), on indique le nombre de lignes attendu et le nombre réel.

16 juillet 2006

Les joies de l'intégration

Une servlet avec du joli code Java qui marchait bien sur de l'Intel Core Duo, ne fonctionne plus après déploiement sur un Mac mini PowerPC G4.

Je n'arrive plus à lui dire de lire plusieurs octets à la fois en HTTP :
final InputStream is = socket.getInputStream();
// Ne fonctionne pas sur le Mac mini :
// final int byteCount = is.read(bytes, 0, 4096);
// --> SocketException: Illegal Argument
final int b = is.read(); // Pour le Mac Mini.

Résultat de ce changement : perfs -11%


Ah, et incidemment, toujours sur des tests en LAN, le déploiement de la servlet sur le PowerPC G4 rend l'ensemble 2,6 fois plus lent qu'avec le déploiement sur le Core Duo.
  • PC : Core Duo 2,8 GHz / 2 Go, Windows XP, JDK Sun 1.4.2_11, Tomcat4
  • Mac : G4 1,25 GHz / 512 Mo, NetBSD 3.0, JDK Blackdown 1.3.1, Tomcat4

12 juillet 2006

Associations et Web Agencies

Je vois en ce moment des associations se faire démarcher de façon assez agressive par des Web Agencies françaises, qui leur proposent de monter des sites web rapidement, facilement, et économiquement.

À l'adresse de ces agences, je pense que le secteur de marché est bon ;-)

Cela dit, au vu des sites de ces boîtes, ce qu'elles proposent relève davantage du CMS que de l'outil collaboratif.

Où est la plus-value ?

1. Dans la qualité ?
Les associations s'en fichent un peu.

2. Dans le prix ?
Leur prix est standard : 3000 ~ 3500 EUR pour un site institutionnel d'une dizaine de pages.
L'approche commerciale agressive est de proposer un «partenariat». En gros : donne-moi ton fichier client et je te fais une méga-ristourne.

Je ne mettrai pas de lien vers les sites de ces agences. Ce n'est pas pour éviter de leur faire de la pub, mais par respect des contacts associatifs qui m'en ont parlé.

J'ai quand même le droit de mettre un lien, celui de Médiacité, qui a la bonne approche à mon avis : «Notre vocation est de répondre aux besoins de communication publique et de promotion territoriale».

Ils ne font pas partie des agences qui démarchent, donc je peux en parler :-)

Pourquoi est-ce la bonne approche ? Parce qu'en étant spécialisé dans la promotion territoriale, le financement peut être mixte. Et ça, c'est très clairement un élément différenciateur :-) Cela dit pour des petits sites, je ne sais pas si le modèle reste bon. Ah, on me fait signe que oui. Alors oui.

Techniquement, d'après ce que j'en ai vu, eux aussi font du CMS.

Plateformes de blog : Gandi

Je viens de créer un blog chez Gandi, vu que j'y gère le domaine halfj.com.

L'URL : http://blog.halfj.com/.

Ma première impression est plutôt mitigée.

"Il y a du potentiel" (façon 2.0 de dire que l'interface est compliquée).

09 juillet 2006

Outil de diaporama

Une des demandes du Jardin Sauvage (tiens, ça me fait penser qu'il faudrait publier un compte-rendu de la réunion, un jour) était de pouvoir mettre en ligne des diaporamas. Avec fond sonore s'il vous plaît.

J'ai trouvé Lightbox JS V2.0, ça a l'air assez fort.
C'est du pur JavaScript, uniquement côté client, non intrusif pour le reste du code HTML de la page.
Voir des exemples d'utilisation sur le blog de parapente Le rêve d'Icare.

Qu'en pensez-vous ?

Connaissez-vous d'autres produits pour faire des diaporamas ?


Quant à la lecture des MP3, le Dewplayer s'impose, à mon avis.

Perfs de la couche présentation

Avant de passer aux appels distribués PHP/Java, voici quelques mesures de temps de traitements applicatifs PHP sur le forum en l'état.
Ces mesures font apparaître les temps hallucinants dus à la couche de présentation.

Pour rappel, aujourd'hui :

1. Le traitement applicatif PHP remplit des DataBeans, c'est-à-dire des objets qui n'ont que des méthodes getXxx() et setXxx().

2. Le relais est ensuite passé à la couche de présentation, qui sérialise les DataBeans en XML par la méthode «toXml()». Pour de sordides raisons de limitations de PHP, on normalise le résultat en UTF-8 propre, avant d'appliquer la XSLT qui a servi au maquettage XHTML. On renormalise ça en UTF-8 propre, puis on formate le XHTML en HTML 4.01 «optimisé». Cela fait 5 passes où l'on utilise XML.

Ce sont ces passes qui prennent du temps.


Les mesures ont été faites en une heure, sur des écrans de consultation en mode debug, avec le jeu de données «dataset-005» (ça, c'est pour les intimes).
On a testé l'affichage d'une liste de 3 forums, l'affichage d'une liste de 38 messages dans un forum, en tri par date puis en tri par enfilade, l'affichage d'un message, avec une liste sous-jacente en tri par date puis en tri par enfilade.



1. Liste de 3 forums

XML du DataBean sérialisé : 13 Ko
HTML : 14 Ko
Temps total : 612 ms
Couche applicative : 226 ms (37%)
Couche de présentation : 374 ms (61%)

2. Liste de 38 messages, tri par date

XML du DataBean sérialisé : 29 Ko
HTML : 70 Ko
Temps total : 1400 ms
Couche applicative : 341 ms (24%)
Couche de présentation : 1042 ms (74%)

3. Liste de 38 messages, tri par thread

XML du DataBean sérialisé : 29 Ko
HTML : 59 Ko (il y a moins de lignes de séparation dans la table qu'en tri par date)
Temps total : 1275 ms
Couche applicative : 335 ms (26%)
Couche de présentation : 925 ms (73%)

4. Un message, avec liste sous-jacente triée par date

XML du DataBean sérialisé : 18 Ko
HTML : 23 Ko
Temps total : 924 ms
Couche applicative : 307 ms (33%)
Couche de présentation : 605 ms (65%)

5. Un message, avec liste sous-jacente triée par enfilade

XML du DataBean sérialisé : 18 Ko
HTML : 23 Ko
Temps total : 943 ms
Couche applicative : 340 ms (36%)
Couche de présentation : 587 ms (62%)

6. Répartitions moyennes détaillées :
  • Couche applicative : 31%
  • Couche de présentation : 67%
    • Sérialisation du DataBean en XML : 2%
    • Transformation XSLT : 29%
    • Formatage du HTML : 22%
    • Temps total des deux renormalisations en UTF-8 : 14%




Les pistes d'optimisations sont les suivantes, :

1. Ne plus s'appuyer sur XML pour la couche de présentation.

C'est-à-dire construire directement le HTML en PHP en une passe, au lieu d'utiliser XML sur 5 passes. C'est fou comme c'est plus rapide le PHP, si, si. On devrait gagner entre 50% et 60%.

Néanmoins il faut garder la skin XSLT, est passer des UAT avec, car c'est la seule qu'on ait aujourd'hui qui soit corrélée à un maquettage hors serveur.

2. Faire la mise en page davantage en CSS plutôt qu'en HTML.

On gagnera évidemment d'autant plus de temps que le HTML sortant sera proche d'un bête dump du DataBean.

2.1. Passer à des entités numériques (&#233;) plutôt que codes (&eacute;) quand on y gagne. Sur «é» (&eacute;), on gagne 2 octets.

Le fait de ne transférer que des octets sur 7 bits n'est pas négociable. Donc autant gagner sur la taille des entités.

3. Afficher plusieurs messages par page.

S'il faut une seconde en dev (2 sec. en prod) pour afficher un message, ça va faire cher de la discussion.
Il faut impérativement permettre de lire les messages par lots.




Quand seront faites ces optimisations :

4. Pas avant l'automne.

Les optimisations 1 et 2 ne sont même pas critiques pour les premiers utilisateurs. On a des temps de réponse de l'ordre de 1,5 sec. sur poste de développement, donc de 3 sec. en production. Je parie que ça passe.

Pour l'optimisation 3, là, c'est sûr, ça va se voir. Cela dit, arrivons d'abord au béta-test.

08 juillet 2006

Navigation structurelle

Je ne parle pas là de la localisation dite «chemin de fer» de type «a -> b -> c» en haut des pages qui indique à quel niveau de l'arborescence du site on se trouve.

Je veux parler des facilités de navigation au sein d'un site ou d'un sous-site offertes par certains navigateurs.

Dès qu'on navigue dans une liste, on doit avoir des liens «Premier élement», «Élément précédent», «Élément suivant», «Dernier élément», et «Retour à la liste».

Les liens <a> correspondants doivent avoir un attributs«rel», respectivement à "first", "prev", "next", "last", et "up".

Et la partie <head> de la page doit contenir des <link> avec les mêmes attributs. Cela permet à iCab, Opera ou Mozilla, d'afficher ces liens de façon uniforme, dans leur «Site Navigation Toolbar» (Mozilla), encore appelée «Navigation bar» (Opera).

L'article de Jajob Nielsen sur iCab sur le sujet : http://www.useit.com/papers/icab.html

Je me demande : qui utilise ces liens pour surfer sur le net ?

Pour un intranet, ça a davantage de sens à mon avis. What do you think?

03 juillet 2006

Passage facile à Eclipse 3.2

Eclipse 3.2 : 120 Mo en téléchargement.
Copier/coller du plugin pour Subversion depuis la 3.1.2, et redémarrage sans aucun problème.

C'est beau, la technique.