Tuesday 24 June 2008

Le site web de la BBC abandonne hCalendar dans sa partie programmes TV

Via David et Karl :

Malheureusement, il y a eu un certain nombre d'inquiétudes dans la manière dont hCalendar utilise le patron de structure "abréviation". Cela utilise l'élément HTML "abbr" pour ajouter les données logicielles aux pages. Nos inquiétudes étaient :

  • l'impact chez les utilisateurs non-voyant qui utilisent des lecteurs d'écran configurés pour lire la forme développée des abréviations, lorsque ces formes développées sont les données logicielles
  • l'impact chez les utilisateurs mal-voyant qui utilisent des lecteurs d'écran où les info-bulles des abréviations conçues pour les logiciels seraient lues
  • l'impact des info-bulles incompréhensibles chez les utilisateurs présentant des déficiences intellectuelles
  • la restriction potentielle des abréviations aux domaines qui en ont besoin (voyage - code aéroport, finance - code ticker, etc)

En attendant que ces problèmes soient corrigés, les normes de marquage sémantique de la BBC ont été mises à jour afin d'empêcher l'utilisation de texte non destiné aux humains dans les abréviations. [...] Pour cette raison, nous avons pris la décision de supprimer le microformat hCalendar de /programmes jusqu'à ce que :

  • le "BBC accessibility group" continue ses tests et déclare que cette utilisation des abréviations peut être utilisée sans risque
  • ou que la communauté des microformats se mette d'accord sur une alternative accessible du patron de structure "abréviation". Une conversation à ce propos a déjà été commencée par Frances Berriman.

Removing Microformats from bbc.co.uk/programmes

Alors, quel est le problème ? En HTML, tout est texte, car le but du HTML est de présenter des documents aux humains. Puis est venu un temps où le HTML n'était plus seulement une expression d'un document, mais était le document lui-même, et où on a voulu exploiter de manière automatisées les informations fournies dans ces documents. De là est née la "communauté" des microformats (ou µformat). Le but des microformats (et d'autres initiatives comme RDFa) est de mettre dans un seul et même document les informations pour l'humain et pour le logiciel. Et dans cet objectif, les microformats ont une approche prag-ma-ti-que, dans le sens où c'est la réponse que vous donnera systématiquement un microformateux à n'importe laquelle de vos questions (j'exagère, ils ont aussi une deuxième réponse : "tous des cons").

Pour mélanger des données calendaires destinées à être vues par des humains et des logiciels, il existe le microformat hCalendar, basé sur iCalendar, lui-même basé sur vCalendar (le v de vCalendar venant de Versit, le i de iCalendar étant pour internet, le h de hCalendar étant pour... HTML évidemment, vu que la description du format énonce "suitable for embedding in HTML or XHTML, Atom, RSS, and arbitrary XML", donc c'est pragmatique). En hCalendar, on représente une date de la façon suivante :

à <abbr class="dtstart" title="20080624T12:15:10+0200">midi et quart le 24</abbr>.

Ce qui sera affiché de la façon suivante :

à midi et quart le 24.

Le problème est que cet élément <abbr> a un sens en HTML : représenter une abréviation, avec la forme développée de l'abréviation dans l'attribut "title" de l'élément, par exemple : ex.. Et les navigateurs cherchent à afficher cette information. Pour les voyants, cela ne se déclenche en général qu'au passage de la souris au-dessus du texte concerné, pour les déficients visuels, le problème peut être tout autre, d'où l'arrêt de l'utilisation de cette technique sur le site web de la BBC.

Alors, quelles solutions ? Dans les commentaires, Lachlan Hunt propose d'utiliser l'élément time défini dans HTML5. HTML5, c'est le standard encore à l'état d'ébauche pour remplacer HTML 4 et les XHTML... Pour cela, ils réinventent un nouveau format de temps, et ils réinventent un algorithme de conversion d'une date en un format textuel. Mais ils réinventent cela de manière prag-ma-ti-que (ça vous rappelle d'autres personnes ?). D'ailleurs on trouve dans les petites notes associées à cet élément :

Les cas d'utilisation primaires pour ces éléments sont de marquer des dates de publication, par exemple dans les billets de blogs, et pour les dates d'événements en marquage hCalendar.

Oui, le web, c'est pragmatique. Mais ni HTML5 ni hCalendar ne sont des standards supportés à l'heure actuelle, ce qui ne fait que tourner les choses en rond.

Une approche que je n'ai pas vu citée est celle prise dans VXML, et en particulier l'élément say-as issu de SSML. En SSML, on laisse le navigateur vocal interpréter certaines données. Si l'on prend les valeurs possibles pour says-as, notre exemple précédent revient à écrire :

à <say-as interpret-as="time" format="hms24">12:15:00</abbr> le <say-as interpret-as="date" format="d">24</abbr>.

Ca ne convient évidemment pas directement dans notre exemple, vu qu'on perd des informations (année, mois) ainsi que la liaison entre la date et l'heure, mais il est à noter que cette approche dans laquelle le navigateur interprète des attributs de l'élément pour interpréter le contenu n'est pas présente en HTML.

Une autre réaction est celle de "Cochons sur l'aile" qui pointe une discussion sur IRC précisant que la BBC n'est pas pragmatique, car l'utilisation d'"abbr" n'est pas rendue obligatoire par hCalendar (ce qui nous renseigne sur la clarté et la précision du "standard" hCalendar), et c'est (presque) ce qui est dit dans la page de description du patron de structure "abréviation" :

Notez que les exemples suivant sont tous équivalents pour un interpréteur microformat :
 
<span class="dtstart">20070501</span> ⇒ 20070501
<span class="dtstart">2007-05-01</span> ⇒ 2007-05-01
<abbr class="dtstart" title="20070501">1er mai 2007</abbr> ⇒ 1er mai 2007

On a donc le choix entre un <abbr> inaccessible, ou un <span> illisible. Une autre proposition est faite, dans la discussion référencée plus haut :

à <span class="dtstart"><span class="hour">12</span> et <span class="minutes">15</span> le <span class="day">24</span></span>
à 12 et 15 minutes le 24

On voit tout de suite que cette solution ne convient pas non plus, car on perd la possibilité de représenter les éléments de manière textuelle (par exemple, on doit marquer "12" et pas "midi"), et on a perdu des informations (année, mois). Cette solution est donc très loin d'être satisfaisante, finalement la BBC n'est pas si a-pragmatique que ça.


Dans les réactions à cette annonce, greut signale la réaction d'Edd Dumbil à la réaction de John Resig (un gourou de Javascript travaillant chez Mozilla Corp, qui en est resté à Windows 98 en ce qui concerne la gestion de la sécurité applicative). John Resig nous dit à propos de RDFa :

Criblé de terminologie avancée, voire même complètement embrouillante (espace de nommage XML, Dublin Core, web sémantique, sans oublier de mentionner de nombreux nouveaux attributs - comme typeof, about et property) il apparaît être solidement encerclé dans les contraintes dont les microformats ont réussi à se libérer, leur permettant d'arriver à une adoption généralisée.

En fait RDFa définit en tout et pour tout 5 nouveaux attributs (about, property, resource, datatype, typeof) ; Dublin Core est le vocabulaire de base pour annoter une publication (on y retrouve la notion d'auteur, de date de publication, etc...), normalisé (ISO, ANSI, IETF...), utilisé par exemple dans RSS-RDF, RSS 2.0 (mais pas Atom, le pragmatisme impliquant de réinventer la roue)... donc si John n'y comprend rien, ça ne l'empêche pas de l'utiliser sur son blog. Les espaces de nommages XML ça l'embrouille aussi... c'est dommage, vu que les espaces de nommage en Javascript sont un de ses cheval de bataille dans jQuery vs. le monde. Et pour le web sémantique... soyons gentils, passons. Vous l'aurez compris, John est un prag-ma-ti-que... enfin quand il s'agit de taper sur les non-pragmaticiens, parce que dans jQuery, il a fait des choses totalement non pragmatiques, comme le support de la syntaxe des sélecteurs CSS3 et d'une partie de XPath : quelle erreur pour un pragmaticien de faire référence à un existant, ça fait toute une terminologie avancée, voire même complètement embrouillante, à acquérir.

Saturday 31 May 2008

Google : confiez-nous vos données

Google a un but dans sa vie d'entreprise : faire des bénéfices. Forcément me direz-vous, c'est une entreprise. Pour cela ils ont l'unique Business Model 2.0 qui fonctionne : récupérer des données personnelles, les croiser et ventre des espaces publicitaires dont le ciblage est issu de ces croisements. Après il leur quelques millions de dollars pour exciter la foule intelligente pythonienne et faire croire dans le mythe du "Don't be evil". Et pour récolter ces données, le plus simple c'est encore d'héberger le plus de choses possibles, comme cela ça permet d'être plus réactif pour indexer le tout, un bête intercepteur sur le GFS est le tour est joué, plus besoin de parcourir l'internet public.

Mais pour ça, encore faut-il accepter les données de l'utilisateur, comme par exemple un calendrier :

Message d'erreur Google Agenda...

Visiblement chez Google, on ignore la différence entre une URL et une adresse mail, et pour la précision du "ne contient pas", vous repasserez, le développeur est parti finir sa partie de baby à ce moment-là.

Sunday 30 March 2008

Douuuucement

Que garde-t-on sous la main quand on est un jeune développeur qui se met au web ? Réponse, en 2000 :

A noter que le "Style Guide" n'est pas une référence à CSS, mais au Style Guide for online hypertext. Et pourtant, cette page est stylée ! Mais uniquement en ce qui concerne les polices de caractères et les couleurs. Il faut dire que le support du positionnement dans les différents navigateurs à l'époque... Donc pas besoin d'avoir une documentation sous la main. Et pourtant, un peu plus de 7 ans, ça n'est pas si vieux.

Monday 24 March 2008

Apple : le pouvoir de dire non

Hasard ordinaire de la vie. Le disque dur du Mac est inaccessible (qui a dit une fois de plus ?) pour une sombre affaire d'inodes pas dans l'ordre et de fichiers qui se recouvrent. Moi qui croyait que ça n'arrivait que sous ext3 ! Bref, pour réparer son filesystem en déroute, Apple propose d'aller acheter un utilitaire (DiskWarrior) qui coûte à peu près aussi cher que le système d'exploitation lui-même. C'est un peu comme si Microsoft vous disait d'aller acheter un anti-virus parce que leur système est une passoire et que ça va vous tomber dessus un jour ou l'autre. Bref, dans l'intervalle, achat d'un autre disque dur (qui vaut un tiers du prix de l'OS), et réinstallation du système d'exploitation, l'autre disque étant quand même accessible en lecture seule, ça va permettre de sauvegarder et de repartir à neuf ; ou presque. Problème, je n'ai que le DVD d'installation de 10.2, la 10.3 ayant été installée par une bonne âme. Donc réinstallation de 10.2, iLife '04, tout le bastringue. Récupération de la musique achetée sur iTunes, lecture : "votre ordinateur n'est pas autorisé". Oui, normal, c'est une nouvelle installation. Saisie du mot de passe : "vous n'avez le droit d'utiliser que l'iTunes Store France". Je m'en fiche de l'iTunes Store, je veux lire mon morceau. Allons changer de magasin : "Upgrade to the latest version of iTunes to choose other stores." Ok ok, let me upgrade: "Macintosh requirements - Mac OS X 10.3.9 or Mac OS X 10.4.9 or later required". So, I can't upgrade, end of the line. Moralité : pour écouter votre musique avec Apple, il faut acheter la musique et acheter les mises à jour des systèmes d'exploitation. Moralité numéro 2 : considérant que Mac OS 10.3 est sorti fin 2003, et considérant que Windows XP est sorti deux ans avant, et que celui-ci est encore supporté, alors il est plus économique pour profiter d'iTunes d'utiliser un PC sous Windows qu'une machine Apple.

Saturday 22 March 2008

The sad state of application packaging

First, RFE #4648386, opened more than 6 years ago: 6th March 2002. The request is to allow the compositing of jars, ie. having J2SE providing a ClassLoader able to load classes from archives nested into another archives (typical case of an EAR containing WARs themselves containing JARs). Secondly, JSR 277: JavaTM Module System, to solve on a broader scale the same problem: how to package? How to version? How to mark dependencies? Among the expert group, we can find Jayasoft, a company now defunct, who created the dependency manager Ivy (now an Apache Ant subproject). Also, Brett Porter, from the Maven management committe. We can find as well Richard S. Hall, the architect behind Oscar, the OSGi r4 implementation from ObjectWeb (no release since almost 3 years ago, one commit 6 weeks ago after two years of inactivity), and in the management committe of the Felix project (the successor of Oscar, now under the Apache umbrella-ella-ella). That JSR was started 3 years ago, in June 2005. Status? An early draft, which seems after a quick reading well advanced, published in October 2006, nothing since then.

So? Only OSGi remains. The main problem is that OSGi, touted as "the dynamic module system for Java™", is in fact "a service-oriented, component-based environment": a runtime environment for executing component-based services. Here enters JSR 291, with the same Richard S. Hall on board; that JSR aims at putting OSGi under the JCP roof, and that one has achieved a final release status on August 2007. So we have a component based environment, but without the component packaging defined in JSR 277... They explain :

JSR 277 has been filed to examine changes to the static module definition to be used within the Java SE platform for Java 7 (Dolphin) and beyond. JSR 277 is targeted for specification delivery in 2H/2007 with RI/TCK delivery as an integral part of Dolphin in 2008.

This JSR aims to address the current needs for dynamic components based on existing Java SE platforms. When Dolphin becomes available, the specification lead of this JSR will either perform a maintenance release of this JSR or raise a follow on JSR to add Dolphin to the list of compatible supported platforms and to exploit Dolphin technology for static modules, as appropriate.

So for them, it's better to change the packaging format for a complex platform, than establishing the format first, which is a must simpler task and has a much bigger usefulness. But it's true that the timeline established for JSR 277 is indeed targeted at Java 1.7. The difference is that JSR 277 works on a 3 years calendar, whereas JSR 291 achieved the full cycle in less than a year and a half, with basically the same people in the expert group. It has to be noted that the final release of the JSR 291 specification makes no mention at all of the JSR 291, or its expert group, for one simple reason: it's the OSGi R4 specification, untouched. This is what is called "The JSR-291 Dynamic Component Support for Java SE, Version: 1.0 Specification (the ``Specification'') references the OSGi Service Platform Release 4 Core Specification". You knew Ctrl+P for Pasting, there is now an alias, Ctrl+R for Referencing.

7 months ago, Ryan Slobojan on InfoQ summarized the situation in relation to JSR 316 (Java EE 6), with the next level of dependency: 316 depends on 277 but not 291, whereas Java EE is a "service-oriented, component-based environment", and should be logically based on 291 (which would be an extremely major shift). In that article, Glen Normington, ex-Core Platform Expert Group at OSGi Alliance and ex-IBM, and now Spring Source (a company which not so long ago has based its strategy on OSGi), is deemed to have tried "to present a more measured opinion on the debate", let's look at it:

The dream solution is clear: JSR 277 should adopt JSR 291, underpinned by language and VM support in JSR 294, and add the JSR 277 repository architecture.

JSR 294 is JSR 277 little brother, which aims at adding a fifth notion of visibility in Java (the 4 existing are public, protected, package and private), and this indeed needs a modification in the JLS. As of now, JSR 294 has lost his initial initiator and spec lead almost two years ago, and the JSR page has not been updated. But suggesting that JSR 277 should just adopt directly the OSGi bundle format is just pure malice. Recently, Glyn Normington opened a bug to do just that, and excite the OSGi fanboyz base to vote for it. And it's working! Instead of voting for the original RFE #4648386 (which is a real Request For Enhancement), they vote for that 6650394, "look ma, OSGi rulezzz you suX0rzzz", and now it's only 23 votes behind. But all considered, 138 votes against 115, it's only shows that a very small number of Java developers are voting for bugs and RFE on Sun's site.

To conclude... nothing. It's just sad to have nothing usable out of the J2SE box with relation to RFE #4648386. Further reading (don't forget the comments):

Thursday 31 January 2008

Courier Authdaemon...

Et pourquoi cette saleté d'authvchkpw part dans /home/vpopmail/domains/cinemasie.com/vpasswd.cdb alors qu'on est configuré avec une base de données ? Pourquoi ?

Mise à jour 2008/01/02. Parce que courier-authlib-vchkpw de DotDeb est compilé sans le support MySQL évidemment...

Monday 21 January 2008

Talend Horrible Store

At Talend, they like acronyms; for instance they never say Talend Open Studio but instead, TOS. So let's speak about THS. You are welcomed by:

Welcome to Talend Store, the location for the online purchase of all Talend solutions. [...] Select a solution below to view its detail and price.

So, let's have a look:

Technical support, Product Training, Talend for SugarCRM
Ok
Professional Services
Starting from the "Talend Expert Program", no more prices (4 items over 6), not even a quotation overview.
Talend On Demand
You can sign up "for FREE" even with a monthly payment... but without a price, "for FREE".
Talend Integration Suite
You can inquire for product training, which is not in the "Product Training" section of course, but no price at all, neither for the product, nor for the training.

Basically, you can buy being fully informed: technical support, basic training, an extension, and 2 items over 6 for "Professional Services". What you can't buy being fully informed (starting from the price): a way to do teamwork (TOD or TIS is required), that is... to work in a professional way.

Friday 28 December 2007

OVH : On Vous Hemmerde

OVH, on a beau ne garder que le strict minimum chez eux, c'est encore trop. Exemple aujourd'hui, changement de NS d'un serveur :

Action
Changement avec les nouveaux NS
Réponse OVH
Ha ben non, votre serveur primaire n'a pas de "glue record"
Réflexion
Mais les glue record, c'est obligatoire uniquement dans le cas de références circulaires, ce qui n'est pas le cas ici !
Nouvelle action
Introduisons une référence circulaire, et créons donc un glue record.
Réponse OVH
Ha ben non, il n'y a pas d'enregistrement A pour le nom d'hôte choisit.
Réflexion
Mais si il y est, même les DNS de mon FAI le voient !
Action
Tu vas le voir ce A ?
Réponse OVH
DTC ! Ce n'est pas aujourd'hui que tu feras ta migration cinemasie.com ! Chez OVH on n'est pas cher, et on te le fait payer !

Bref... au prochain renouvellement de nom de domaine, on rompt définitivement les amarres...

Et en cadeau de Noël, pour savoir comment ça se passe quand on essaie de converser avec le support sur ces problèmes : c'est ici.

Mise à jour : après une nuit de réflexion, les serveurs d'OVH voit le A, wahou, quelle célérité.

Mise à jour 2 : c'est magique, quand on lui met une référence circulaire, il demande explicitement l'IP pour créer le glue record... alors qu'il a été créé par le MEME SYSTEME 2 heures avant.

Sunday 9 December 2007

Je suis fréquentable

Votre fiche de geek

Votre score est de : 1450

Vous faites partie des Reasonable Geeks

Pas mal... Un bon taux de geekitude coule dans vos veines, mais vous êtes encore trop sociable pour faire un bon geek. Débarrassez-vous des quelques amis qui ont l'outrecuidance de vous tirer hors de chez vous. :-p

A vot' tour ici (en même temps, un test de geek sur un site en ASP, c'est un peu la honte).

Friday 7 December 2007

L'information, ça n'est plus pour nous

On constate un changement récent chez nos amis de chez Google quand on cherche une image. Avant, quand on clique sur une vignette, on arrivait sur un page d'aperçu, avec en haut, la vignette et les informations sur l'image, et en bas, la page dans laquelle Google a récolté l'image. Et en plus, en haut à droite, on avait un petit lien "Retour à la liste des résultats".

Et ce petit lien a aujourd'hui disparu, et avec lui, une autre information importante. Il faut comprendre que quand une page est appelée sur le serveur, un navigateur internet (Microsoft Internet Ехрlояея, Opera, Firefox...), il envoie l'adresse de la page sur laquelle l'utilisateur est lors de l'appel (appelé referer). En clair, quand la page sur laquelle Google a récolté l'image est affichée en bas, le serveur (vous, moi, n'importe quel schjplougueur) reçoit l'adresse de la page d'aperçu. Et donc, auparavant, dans cette adresse, il y avait de quoi constituer le petit lien "Retour à la liste des résultats", ce qui revient à connaître les mots-clef utilisés pour trouver l'image. Aujourd'hui, le lien a disparu, et cette information a été enlevé de l'adresse.

En résumé, avant, quand quelqu'un arrivait sur votre site par une recherche dans Google Images, vous pouviez savoir comment vous aviez été trouvé. Maintenant, cette information reste uniquement à disposition de Google : Google vend de la pub en utilisant votre contenu et le comportement de vos visiteurs, mais il vous donne de moins en moins en échange. Google, Don't Be Honest.

Mise à jour 7 décembre 2007 : et le lendemain où je poste le constat, les liens sont revenus... y'a pas de justice, c'est de la faute à Dati.

Saturday 10 November 2007

Deal with it

Via avi :

You are "Ando Masahashi"!

You have no super powers at all. Really, none. You're normal. Deal with it. But you make a really great sidekick. You should probably play this game again and change your answers.

Pour faire le test, il semblerait que donner son âme à FesseBouc soit la seule possibilité (et en plus l'éditeur a blindé le test de publicités, c'est très 2.0).

Il faut savoir jeter

Alerte famille : pas la peine de lire le texte ci-après.

Après moultes essais et attermoiments, une conclusion s'impose : un Apache-SSL en reverse proxy sur un Apache 2, ça ne marche pas. Quoiqu'on y fasse, Apache-SSL se vautre dans un :

[warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

Ce qui n'a évidemment pas de sens vu qu'en 1.3 mod_proxy n'a pas de sous-module.

Pourquoi Apache 2 ? Parce que SVN. Pourquoi Apache-SSL ? Parce que AlternC. Au final, la reconfiguration de Apache 2 pour servir l'interface d'administration d'AlternC aura pris 10 minutes, même si en faisant cela on casse la partie installation d'un certain nombre de plugins. Ce qui n'est pas grave en soit, vu qu'en l'état actuel des choses, il n'y a plus de plugins packagés pour AlternC. Vivement AlternD.

Thursday 8 November 2007

La pourriture se répand...

Amateur de guitare, sache qu'en achetant sur certains sites en ligne, tu soutiens l'épandage de Microsoft Windows sur nos beaux serveurs internet. Alors choisi avec soin.

Server Error in '/' Application.

Les données chaîne ou binaires seront tronquées.
L'instruction a été arrêtée.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Les données chaîne ou binaires seront tronquées.
L'instruction a été arrêtée.

Source Error:


Line 23: 
Line 24:         dbConnection.Open
Line 25:         Dim dataReader As System.Data.IDataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)

Line 26: 
Line 27:         Return dataReader

Source File: D:\www\guitarstore.fr\website\includes\Fonctions.aspx.vb    Line: 25

Stack Trace:


[SqlException (0x80131904): Les données chaîne ou binaires seront tronquées.
L'instruction a été arrêtée.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +862234
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +739110
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1956
   System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +31
   System.Data.SqlClient.SqlDataReader.get_MetaData() +62
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +903
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
   System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +7
   DotNetCreateurDe.Fonctions.SQL_update(String update_id) in D:\www\guitarstore.fr\website\includes\Fonctions.aspx.vb:25
   ASP.includes_tracking_ascx.SGBD_Search() in D:\www\guitarstore.fr\website\includes\tracking.ascx:116
   ASP.includes_tracking_ascx.Page_Load(Object sender, EventArgs e) in D:\www\guitarstore.fr\website\includes\tracking.ascx:8
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061



Version Information: Microsoft .NET Framework Version:2.0.50727.832; ASP.NET Version:2.0.50727.832

Monday 8 October 2007

Nouvelle Tarification SNCF : ce qui ne change pas

Attention ! Une erreur s'est produite

Une erreur technique est survenue. Nous vous prions de bien vouloir nous en excuser.

Au passage, on passera toute l'étendue des réductions du nouveau tarif innovant Loisir (anciennement Découverte) comparé au nouveau tarif innovant Pro (anciennement Normal) :

Nouvelle Tarification SNCF

Une économie d'un euro et cinquante centimes, et une perte de 173 points de fidélité : merci la SNCF.

Thursday 20 September 2007

Spolsky, GWT: it's already answered dude!

Joel Spolsky writes in Strategy Letter VI

The winners are going to do what worked at Bell Labs in 1978: build a programming language, like C, that’s portable and efficient. It should compile down to “native” code (native code being JavaScript and DOMs) with different backends for different target platforms, where the compiler writers obsess about performance so you don’t have to. It’ll have all the same performance as native JavaScript with full access to the DOM in a consistent fashion, and it’ll compile down to IE native and Firefox native portably and automatically. And, yes, it’ll go into your CSS and muck around with it in some frightening but provably-correct way so you never have to think about CSS incompatibilities ever again. Ever.

To that, Didier Girard replies : what about GWT?

But the answer was right there: it’ll go into your CSS and muck around with it in some frightening but provably-correct way. Compiling Java syntax to Javascript, taking care of the subtle differences between the browsers in the DOM or event handling is relatively easy compared to providing a high-level developper interface for styling while keeping the full power of CSS. And the full power means cascading, and cascading means knowledge of the DOM structure. That, is a hard problem to solve, and there is still nothing promising above the horizon for that problem.

Wednesday 5 September 2007

1997 - 2007

1997, le temps des CPGE est fini, et c'est la découverte de la nouvelle vie (forcément innovante) de la glande. Qui dit glande dit études supérieures, et qui dit études supérieures dit rapports, et qui dit rapports dit Microsoft Office Word ('97 pour bien faire). En '97, il fallait configurer Word comme suit :

  • sauvegarde automatique toutes les 5 minutes
  • création automatique d'une copie de sauvegarde

Et en plus, à chaque heure de travail, il fallait créer un nouveau document et copier l'intégralité du document de travail dedans, et travailler sur le nouveau document. Si on ne procédait pas à cette manipulation pour le moins moyen-âgeuse, le risque était de se retrouver avec un document de 10Mo pour 10 pages. Et malgré ça, le programme plantait fréquemment, surtout quand vous bougiez pour la 2793ème fois un trait dans un graphique, qui s'était incompréhensiblement déplacé lorsque vous aviez inséré un tableau 15 pages plus loin. Ou encore, plantage quand sur le 20ème document consécutif vous décidez d'abandonner la numérotation automatique vu qu'une fois de plus, Word insistait pour que la section suivant 1.2.7 soit la 1.2.10.

Dix ans ont passé (et je hais toujours autant les rapports). Aujourd'hui on travaille sous Microsoft Office Word 2007, pas parce qu'il n'y a toujours pas de concurrence, mais parce que c'est corporate. En dix ans, Microsoft a réussi à faire un compteur qui fonctionne pour la numérotation (oooOOOh). Microsoft a réussi à faire des traits qui ne bougent plus quand on insère du contenu dix pages plus loin (aaaAAAaah). Microsoft a presque réussi à sauver des documents sans avoir la moitié de l'espace utilisé dans le fichier par un blob inutile mais qui se trouve là à cause des "optimisations en vitesse" du programme. (La question demeure : est-ce qu'il est important qu'un programme qui vous force à refaire 4 fois le même travail soit optimisé en vitesse ?) Tout cela est positivement impressionant : Microsoft, 50 000 développeurs à votre service, et en dix ans, ils ont réussi à corriger trois anomalies. Et grâce aux nouvelles barres d'outils (alias "le bandeau"), vous êtes obligé d'utiliser l'aide, vu que "le bandeau" est inutilisable pour chercher rapidement une fonction. Ils méritent le prix Nobel de la paix, même si tout le monde n'est pas de cet avis.

Et autre avancée magnifique en dix ans, regardez-vous même :

Microsoft Word 2007 Screenshot new features

Une annonce de plantage customisée ! Si ça n'est pas merveilleux ! Heureusement qu'on a gardé les habitudes de '97, parce qu'avec tout ce 2.0, on risquerait de perdre le fruit de son labeur.

Tuesday 14 August 2007

Ce n'est pas tous les jours la fête...

... quand on fait des audits de code.

111325 warnings

Sunday 12 August 2007

Le retour de la bête qui chauffe

Opération nettoyage du G5 en cours... sous l'oeil de la webcam.

Bon, pas de tube de pâte thermique sous la main, ce sera pour la prochaine fois.

Mises à jour :

130Mo, houlà

Et "y'a plus qu'à" trouver un meilleur agencement (je sais, trop de DELL, j'ai honte, mais c'est le boulot qui veut ça) :

C'est serré

Thursday 9 August 2007

Communauté 2.0 : cachez ces encodeurs que je ne saurais voir

Radio.blog.club est un service de partage de fichiers musicaux, basé sur un principe simple : le site vous donne les utilitaires pour convertir vos podcasts pirates (oui, on ne dit plus MP3, ça fait vieux jeu) en de beaux fichiers lisibles par le lecteur en Flash, qui est lui même fourni. En deux coups de cuillers à pot, vous voilà avec votre sélection musicale sur votre blog / myspace (ah non, ils ont leur propre lecteur de podcast) / skytruc et j'en passe. Là où est la magie, c'est qu'avec la version 2.0, vous pouviez choisir dans un grand élan de générosité de partager ces morceaux sur lesquels vous n'avez aucun droit : de là est formée la base de morceaux de radio.blog.club. Et de là aussi la source du contentieux avec la SACEM... car il faut dire qu'après une année et quelques de diffusions pirates, les responsables de la société derrière le site ont commencé à s'interroger du nappage légal à mettre sur leur activité. C'est l'histoire du mini Napster qui se répète. Aujourd'hui, Blogmusik le concurrent francophone de radio.blog.club, qui avait eu lui aussi des problèmes avec la SACEM a lui signé les accords et fonctionne dans la légalité, financé par la publicité. Comme quoi, quand la publicité veut, on y arrive.

En version 2.0 du lecteur radio.blog donc, les morceaux encodés par les utilisateurs pouvaient alimenter la base de données du site club. C'en est fini avec la version 3.0, première étape nécessaire vers une normalisation des relations avec les auteurs : connaître ce qu'on diffuse. Pandora, la radio web qui expose les morceaux issus de la classification générée par le Music Genome Project n'a pas le problème, vu que tous les morceaux sont encodés et classés par leurs soins. Mais ce n'est toujours pas le cas sur radio.blog.club. Il suffit d'écouter un peu et voir les jaquettes défiler par dessus les morceaux... jaquettes de CD qui souvent ne correspondent en rien au morceau, le rapprochement entre un morceau et un disque étant fait uniquement au niveau de l'intitulé du morceau, intitulé qui a été saisi par... l'utilisateur qui a encodé son podcast téléchargé on ne sait où.

Le problème est là : pour se refaire une fraîcheur et pouvoir passer à un mode plus légal, radio.blog.club part d'une base de morceaux nommés à la chinoise. Et renommer le tout, éliminer les doublons, tout cela demande un travail... de diffuseur :-)

En version 2, il était aussi extrêmement aisé de récupérer les morceaux pour les lire ailleurs que dans le lecteur flash (et heureusement). Les morceaux étaient lus directement depuis l'hébergement de l'utilisateur, qu'on récupère sa liste de titre depuis son site ou depuis radio.blog.club. C'est fini en version 3, les morceaux viennent "directement" du serveur, l'utilisateur encodeur est relégué dans les bas-fonds de son sweatshop, plus moyen de remonter à lui. C'est ce qu'on appelle de la production de contenu 2.0.

Monday 6 August 2007

De la difficulté de respecter les droits voisins

Grâce à Sun et Netbeans, vous allez pouvoir violer les Conditions d'utilisation de Dilbert.com grâce au plugin développé par l'évangéliste de Netbeans : Dilbert Plugin For Netbeans. C'est quand même malheureux de sombrer dans de tels bas-fonds. En-même temps, pour qu'il y ait des utilisateurs de Netbeans, c'est peut-être une solution ? Bientôt, les plugins SuprNova, BitTorrent et Ed2k pour Netbeans, fournis directement par Sun :-D

- page 4 of 15 -