Auteur/autrice : Éric

  • Recom­mençons à zéro — Javas­cript 101

    PHP a été mon langage favori pendant presque 10 ans. Ruby l’a suivi pour à peu près la même durée. Javas­cript a été l’ou­til secon­daire pas très atti­rant pour quand il n’y a pas d’autre choix, c’est à dire sur navi­ga­teur.

    Avant-hier j’ai eu un petit pince­ment de frus­tra­tion en cher­chant à déstruc­tu­rer un diction­naire lors d’une affec­ta­tion. Ruby n’a toujours qu’une demie solu­tion pas très élégante. PHP et Javas­cript ont tous deux énor­mé­ment évolué entre temps, au point qu’on ne les recon­nait qu’à peine.

    Si Ruby garde des capa­ci­tés inéga­lées pour faire de la méta-program­ma­tion, 10 ans c’est peut être le bon moment pour reprendre un autre langage de zéro.

    Je fais du web, j’aime beau­coup l’idée de l’iso­mor­phisme, il me faudra donc quelque chose qui sache compi­ler en Javas­cript. Elm pour­rait me faire du pied vu sa gestion des types mais c’est un pari osé consi­dé­rant qu’il est encore absent côté serveur.

    Ça sera donc Javas­cript. D’abord pour quelques scripts en ligne de commande, puis peut-être des appli­ca­tions plus sérieuses.

    Reprendre de zéro c’est l’oc­ca­sion de lais­ser le passé derrière soi et recom­men­cer comme si c’était un nouveau langage. Je ne prends que les dernières versions et outils récents dans la chaîne, voire ce qui n’est pas encore sec mais qui arri­vera demain.

    Il s’agit aussi de reprendre de zéro, pour apprendre. Exit donc les boiler plate et autres kits de démar­rage rapide.


    Première étape : instal­la­tion de npm (3.10.3) et nodejs (6.3.1).

    # Sur Mac avec Homebrew (http://brew.sh/)
    brew install nodejs

    et initia­li­sa­tion du projet (un peu de doc si besoin pour aider à remplir)

    mkdir my-js-project
    cd my-js-project
    npm init

    Ensuite l’idée c’est d’uti­li­ser le nouveau Javas­cript moderne et ne cher­cher aucune compa­ti­bi­lité passée. Instal­la­tion de Babel pour gérer ES2015 et + :

    npm install --save-dev babel-cli

    La plupart des sites recom­mandent des preset pour ES2015 ou React mais visi­ble­ment Nodejs 6.x gère déjà l’es­sen­tiel des fonc­tions nati­ve­ment. Il existe au moins trois preset spéci­fiques pour Nodejs 6 mais la seule confi­gu­ra­tion commune aux trois est le plugin qui trans­forme les modules ES2015 en modules Commonjs. Je suis donc reparti de là :

    npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

    Puis l’édi­tion du .babelrc :

    {
      "presets": [ ],
      "plugins": [ "transform-es2015-modules-commonjs" ]
    }

    Si quelque chose manque à Nodejs 6, il faudra que j’ajoute le plugin corres­pon­dant. Voici les plugins sur lesquels mes trois presets étaient en désac­cord :

    • trans­form-es2015-func­tion-name,
    • syntax-trai­ling-func­tion-commas,
    • trans­form-es2015-destruc­tu­ring,
    • trans­form-es2015-para­me­ters,
    • trans­form-object-rest-spread,
    • trans­form-es2015-sticky-regex,
    • trans­form-es2015-unicode-regex,
    • trans­form-es2015-modules-commonjs,
    • et trans­form-class-proper­ties.

    Je n’ai pas pris le temps de les tester un par un pour voir lesquels étaient réel­le­ment néces­saires pour pas. Si quelqu’un a le courage de faire le travail…

    Reste à enfin permettre d’exé­cu­ter un premier script. J’ai tenté de suivre les usages en mettant les sources dans src/ et les fichiers compi­lés dans lib/ avec un index.js comme fichier prin­ci­pal.

    mkdir lib
    echo "Compiled files will go here." > lib/README.md
    echo "Leave these files untouched"  >> lib/README.md
    echo "and modify ../src/* instead." >> lib/README.md
    
    mkdir src
    echo "Source files will go here." > src/README.md
    echo "They should be compiled before any use." >> src/README.md
    touch src/index.js

    Et la confi­gu­ra­tion du package.json pour lancer tout ça (notez le main qui prend en compte notre nouveau chemin et le scripts qui liste nos deux nouvelles actions) :

    {
      "name": "my-project",
      "main": "./lib/index.js",
      "scripts": {
        "build": "babel src -d lib --source-maps",
        "watch": "babel src -d lib --watch --source-maps"
      },
      "devDependencies": {
        "babel-cli": "^6.11.4",
        "babel-plugin-transform-es2015-modules-commonjs": "^6.11.5"
      }
    }

    Un npm run build permet de compi­ler tous les fichiers, un npm run watch permet de surveiller en temps réel les modi­fi­ca­tions des fichiers sources pour mettre à jour les fichiers desti­na­tion corres­pon­dants.


    J’ai ajouté un README, le .giti­gnore proposé par Github pour un projet Nodejs, une licence, et ‘op, vous trou­ve­rez le tout sur Github.

    Ça fait déjà pas mal pour toujours aucune ligne de Javas­cript utile.

    Quelques feed­back après ce tout petit premier pas :

    1– C’est long et complexe

    Oui, j’ai cher­ché les ennuis, il existe des boiler plate tout faits, mais je ne crois pas avoir le même problème avec Python, Ruby, PHP ou d’autres.

    Le fait d’avoir une étape de compi­la­tion avec Babel n’aide pas mais Java pour­rait en dire tout autant. Pourquoi n’existe-t-il pas un babel init qui lit la version courante de Nodejs, m’ins­talle un .babelrc adapté à cette version et me modi­fie mon package.json pour m’ajou­ter les raccour­cis build et watch ?

    Oui, je pour­rais faire une pull-request, mais fallait-il m’at­tendre ?

    2– La doc aide peu

    Fran­che­ment c’est la plaie. Je ne dirais pas qu’il n’y a aucune doc, mais il y en a dans tous les sens. La plupart ne sont pas à jour, toutes semblent incom­plètes, et il est bien diffi­cile de savoir si telle ou telle a pris en compte les dernières évolu­tions.

    Peut-être n’ai-je pas trouvé la bonne réfé­rence ? Dites-moi.

    Rien que le npm init n’était indiqué sur aucune doc que j’ai croisé. Pire : si on l’ou­blie il n’y a pas de message rouge très expli­cite pour indiquer que les npm install –save-dev n’au­ront pas l’ef­fet demandé. Il a fallu comprendre qu’il fallait créer un package.json, puis décou­vrir qu’il n’était pas néces­saire de le faire à la main.

    Ce n’est que le début. Quand il va s’agir de choi­sir une biblio­thèque ou des outils, je sens que ça va être toute une histoire pour d’y retrou­ver. La doc de setup de Babel en donne un premier aperçu.

    J’ai l’im­pres­sion qu’à chaque étape la roue est en pleine recons­truc­tion, et qu’on en a fait plusieurs versions diffé­rentes en paral­lèle, pour tout.

    3– Qui a eu l’idée d’uti­li­ser des fichiers de config JSON ?

    Je suis aussi assez peu fana aussi des config dans des fichiers Json. J’ai l’im­pres­sion de retrou­ver les fichiers de confi­gu­ra­tion XML de Java. Je n’ai pas l’im­pres­sion que ce soit beau­coup plus lisible.

    La grosse diffé­rence c’est que Java a créé ces confi­gu­ra­tions avec tout un outillage autour. Le déve­lop­peur n’avait que rare­ment besoin d’y plon­ger manuel­le­ment. C’était géré auto­ma­tique­ment par les IDE et les scripts.

    J’ai ajouté un plugin au .babelrc décrit plus haut. Ce plugin a une option. Je me retrouve avec un Json de 7 lignes dont 4 qui contiennent autre chose que des crochets et acco­lades fermantes.… et déjà un diction­naire dans un tableau dans un tableau dans un diction­naire. Rien que ça.

    Même mon petit package.json me parait déli­cat à mani­pu­ler malgré l’in­den­ta­tion. Heureu­se­ment que les dépen­dances sont ajou­tées auto­ma­tique­ment par npm lors de leur instal­la­tion.

    Là, dès qu’on dépasse le simple clef valeur, j’ai l’im­pres­sion de me retrou­ver avec une double peine : Un fichier de confi­gu­ra­tion peu aisé à mani­pu­ler, mais pas pour autant d’ou­til pour le faire à ma place.

  • Et si on agençait des photos sur une page ?

    J’ai cher­ché à agen­cer des vignettes de photo de façon harmo­nieuse sur une page web. Le problème à l’air simple mais j’ai des photos de tous formats, dont certains vrai­ment atypiques.

    La grille

    La méthode la plus simple c’est de choi­sir un format d’images, choi­sir un nombre de colonnes, et de s’y tenir. Si une image n’a pas le bon ratio, il suffira de couper ce qui dépasse. 500px utilise encore ce système pour la plupart de ses vues.

    grillePour aller plus loin on peut mettre quelques photos en grande taille en prenant la place de plusieurs autres. On casse la mono­to­nie tout en permet­tant de mettre en avant les images les plus impor­tantes.

    En prévoyant plusieurs agen­ce­ments diffé­rents prédé­ter­mi­nés on peut réus­sir à caser des images en format diffé­rent, et ne pas trop déna­tu­rer  les formats portraits ou les images très étirées. On reste toute­fois fixés à des formats prédé­ter­mi­nés.

    Le système de grille est rapide et effi­cace. La seule contrainte est de choi­sir entre la capa­cité de respec­ter scru­pu­leu­se­ment l’ordre des photos et celle de choi­sir manuel­le­ment lesquelles seront mises en avant.

    L’al­go­rithme de Packery va encore plus loin sur ce chemin. À partir d’une grille fixée, il propose de défi­nir un nombre de lignes et de colonnes pour chaque image et de la placer à l’es­pace le plus adapté. L’ordre n’est alors qu’in­di­ca­tif et on doit toujours rogner les images pour les faire tenir sur un nombre fixe de lignes et colonnes, mais on y place des formats et des tailles très diffé­rentes. Pas de secret toute­fois, cet agen­ce­ment lais­sera forcé­ment des blancs. À vous de voir si c’est accep­table, quitte à tenter de les combler par quelques mots.

    Quel que soit le système de grille, le réel enjeu est de savoir ce qu’on peut couper ou pas dans chaque image pour qu’elle colle aux formats prévus. Certains algo­rithmes y arrivent main­te­nant assez bien, surtout quand il y a des visages.

    Même si mon cas d’usage me permet­trait de choi­sir manuel­le­ment comment décou­per chaque image au cas par cas, intel­lec­tuel­le­ment ça me gêne de couper des pixels que j’avais volon­tai­re­ment choisi de garder lors de la créa­tion initiale de l’image. Je crains aussi que le visi­teur s’en fasse une idée faus­sée et au final n’ouvre pas l’image dans son format voulu. C’est parti­cu­liè­re­ment vrai pour les images très en hauteur ou très en largeur, qui ne pour­ront jamais donner le même ressenti si elles sont tronquées.

    On empile

    L’autre méthode est d’em­pi­ler les photos par lignes ou par colonnes en respec­tant leur ratio.

    Tumblr le fait par colonnes en mettant chaque image sur la première place dispo­nible. On obtient une sensa­tion de vrac où l’ordre des images n’est qu’à moitié respecté mais le résul­tat est parfait pour leur cas d’usage. Toutes les images ne terminent pas à la même hauteur mais c’est là encore tout à fait légi­time pour le système de flux sans fin que repré­sente un Tumblr.

    On peut imagi­ner de mettre en avant des images en les passant sur deux colonnes mais, sauf à espé­rer un cas excep­tion­nel où les deux images du dessus s’ar­rêtent pile à la même hauteur, il faudra soit lais­ser du blanc soit couper un peu la plus longue des deux.

    Avec un algo­rithme un peu intel­li­gent on peut tenter de repé­rer quand deux images arrivent presque à la même hauteur et donc ne couper que quelques pixels qui ne se verront pas, mais ça veut aussi dire que l’image mise en avant est quasi­ment lais­sée au hasard. La proba­bi­lité d’en avoir une dépend direc­te­ment de la quan­tité de pixels qu’on accepte de rogner sur les images.

    Pour quelque chose de plus struc­turé Flickr a choisi une dispo­si­tion par lignes. On choi­sit une hauteur cible et on empile toutes les images une à une jusqu’à la fin de la ligne. Ça ne tombe jamais juste mais Flickr se permet alors de faire varier légè­re­ment la hauteur de la ligne à la hausse ou à la baisse. Si on respecte les ratios des images concer­nées, on finira forcé­ment par tomber sur la largeur de ligne souhai­tée. On peut choi­sir de garder la dernière image ou pas (respec­ti­ve­ment en dimi­nuant ou augmen­tant la hauteur de ligne) en fonc­tion de la dispo­si­tion la plus proche de la hauteur idéale.

    Avec un peu de complexité on doit pouvoir éviter les lignes incom­plètes en fin de page. Il suffit de tenter plusieurs combi­nai­sons sur les x dernières lignes puis voir laquelle respecte le mieux la hauteur cible pour chaque ligne parmi celles qui n’ont aucune ligne incom­plète. Je ne suis cepen­dant pas tota­le­ment certain que ça vaille le coup, et ça peut faire varier signi­fi­ca­ti­ve­ment la hauteur des dernières lignes.

    Ce système permet des mises en avant simples en mettant une image en pleine largeur de temps en temps. On peut même, si on le souhaite, avoir des mises en avant à largeur arbi­traire. Il suffit alors de mettre les mises en avant sur un des bord et de reprendre l’al­go­rithme stan­dard sur la largeur restante. Une fois arrivé proche du bas de l’image mis en avant, on la réduit ou l’agran­dit légè­re­ment (avec pour effet d’agran­dir ou de réduire propor­tion­nel­le­ment l’es­pace hori­zon­tal sur le côté, et donc la hauteur corres­pon­dante) jusqu’à ce que les deux corres­pondent.

    On peut aussi imagi­ner ne pas se limi­ter à une seule mise en avant par hauteur et les empi­ler sur un ou deux côtés, y compris sur des hauteurs diffé­rentes. La contrainte va être de toujours avoir les plus hautes à l’ex­té­rieur.

    Il reste que la dispo­si­tion en colonnes de Tumblr flatte les images verti­cales et vigné­tise à l’ex­cès des images orien­tées format paysage. La dispo­si­tion en lignes de Flickr fait l’op­posé et rend diffi­cile la lecture des images au format portrait.

    Si un format est très forte­ment majo­ri­taire, on peut imagi­ner utili­ser le système des mises en avant pour compen­ser.

    Je n’ai pas vu d’adap­ta­tion de l’al­go­rithme Flickr en ce sens. Il faut dire que ça complexi­fie­rait nette­ment un système qui est sinon rela­ti­ve­ment simple. Si j’ai un peu de temps, je vais peut-être tenter l’ex­pé­rience.


    Quelques liens si le sujet vous inté­resse :

  • [Posi­tif] Venti­la­teur silen­cieux

    Et si on disait du bien ?

    91LEjCQKCLL._SL1500_Une semaine sans clima­ti­sa­tion par forte chaleur, dix venti­la­teurs de comman­dés sur Amazon. La bonne surprise c’est qu’ils sont *vrai­ment* silen­cieux – silen­cieux, pas juste peu bruyant ou très lent – tout en ayant un bon débit d’air. On peut travailler ou même dormir à côté.

    Oui, c’est indiqué sur la boite, et le prix est en consé­quence, mais ma confiance dans les indi­ca­tions marke­ting est parfois réduite.

    Donc voilà, c’est le Rowenta VU2640F0 Turbo silence. 40 cm pour 85 € (oui, quand même).

  • Choi­sir notre monde

    Je vois les poli­tiques gesti­cu­ler dans une esca­lade à celui qui reniera le plus les valeurs qu’il prétend défendre, et la popu­la­tion qui cherche à qui la faute.

    J’ai mal, parce qu’a­voir arrêté un camion qui se lance sur la foule en tout juste deux minutes, c’est une sacré réus­site, un exploit même. Pas dit que le lance roquette de Henri Guaino aurait fait mieux.

    Oui, c’est une réus­site de nos services de police, malgré le lourd bilan.


    Bon, c’est aussi un énorme coup de chance mais quand l’au­teur prépare ça sur quelques jours sans histo­rique ni connexion avec le milieu terro­riste, il est illu­soire de penser faire mieux.

    Dès que quelqu’un est prêt à mourir, il pourra toujours faci­le­ment tuer des gens au hasard dans la rue, poten­tiel­le­ment beau­coup, quoi qu’on fasse.

    Nous pouvons mettre des check­points tous les deux kilo­mètres, des blocs de béton en zigzag sur tous les axes, des patrouilles mili­taires lour­de­ment armées en surnombre à tous les carre­fours, une surveillance totale sur toutes les commu­ni­ca­tions, des fouilles systé­ma­tiques à chaque bâti­ment, un empri­son­ne­ment préven­tif et sans procès, des recon­duites à la fron­tières en masse, un contrôle de la reli­gion et une inter­dic­tion de tout prosé­ly­tisme d’une opinion non caution­née par le pouvoir en place…

    Nous pouvons, mais ça ne chan­ge­rait rien. Si nous pouvions combattre le terro­risme ainsi, à voir les moyens déployés en ce sens du Moyen-Orient à l’Afrique du Nord, la paix aurait été obte­nue depuis long­temps. Au lieu de cela, nos morts sont presque anec­do­tiques face aux leurs.


    Ne rien faire n’est pas une solu­tion non plus, mais il y a un équi­libre à trou­ver. Aujourd’­hui j’ai l’im­pres­sion que nous l’avons large­ment dépassé.

    Il y a bien des causes en France qui provoquent plus de 300 drames par an et pour lesquelles on ne déploie même pas le dixième des moyens actuels. Des causes pour lesquelles nous n’au­rions même pas besoin de renier nos valeurs. Des causes pour aider et permettre plutôt que pour empê­cher et humi­lier.

    De quels moyens aurions-nous besoin pour accom­pa­gner ses parents isolés qui viennent de perdre leur conjoint et qui ne savent comment faire face aux besoins de la famille ? De quels moyens aurions-nous besoin pour éviter que 500 SDF meurent dans nos rues chaque année ? De quels moyens aurions-nous besoin pour accom­pa­gner quelques milliers de syriens qui fuient la guerre que nous menons chez eux plutôt que de les lais­ser se noyer ou mourir en chemin ? Certai­ne­ment beau­coup moins, autant au niveau finan­cier qu’au niveau symbo­lique.

    On me dira que ça n’a rien à voir. Je ne suis pas d’ac­cord. C’est un choix. À part que les gens qui prennent les déci­sions ne sont ni dans le besoin ni SDF ni syriens, il y a-t-il vrai­ment une bonne raison de plutôt conti­nuer d’in­ves­tir dans l’écra­se­ment inutile de nos valeurs et de nos liber­tés ?


    Mon fils a commencé à toucher au maté­riel élec­tro­nique à l’âge de deux ans. J’ai tenté de proté­ger en mettant des choses devant mais ça n’a été qu’une complexité à résoudre, rien qui n’a changé l’is­sue. J’ai surveillé le maté­riel en sa présence, évité qu’il n’ap­proche. Je me suis épuisé mais lui a conti­nué à profi­ter de chaque inat­ten­tion, et surtout il y a trouvé plein d’autres trucs que je ne voulais pas qu’il touche. Évidem­ment j’ai inter­dit mais à cet âge ça lui passe au-dessus. Quoique… au moins il savait quoi faire quand il avait envie de faire une bêtise. J’ai eu une période diffi­cile, avec oppo­si­tion systé­ma­tique. Je ne suis pas fier, j’ai même du crier trop fort ou punir quand je n’en pouvais plus.

    Il y avait d’autres solu­tions. Il y avait lui accor­der plus de temps, jouer avec lui plutôt que travailler à côté sur l’or­di­na­teur, lui donner à manger quand il a faim mais avant qu’il ne le demande lui-même, lui faire faire la sieste quand il a sommeil plutôt que de le lais­ser vaquer, lui ensei­gner des choses, éveiller son esprit, lui permettre et lui propo­ser de faire d’autres choses plutôt que de lui inter­dire de faire des bêtises, l’ac­com­pa­gner plutôt que de le sanc­tion­ner. La réus­site était d’au­tant plus écla­tante.

    Si vous avez eu un enfant, vous savez proba­ble­ment de quoi je parle. C’est évident pour tout le monde mais aussi telle­ment facile de se lais­ser entrai­ner dans la mauvaise boucle si on n’y prête pas garde. Parfois un peu de fatigue suffit.


    Non, ça n’a rien à voir.

    Ça n’a rien à voir mais je ne peux m’em­pê­cher de voir que toute une classe poli­tique inves­tit dans la réponse puni­tive, dans les mesures de protec­tion, de police et de contrôle.

    On s’étonne de géné­rer nos propres oppo­sants mais nous faisons tout pour éviter qu’ils aspirent à vivre ici et s’y sentent épau­lés.

    La défiance de la popu­la­tion envers la police est au plus haut depuis quelques mois. La défiance de l’ad­mi­nis­tra­tion envers les admi­nis­trés a atteint un point de non-sens total. La défiance des poli­tiques envers tout le monde et de tout le monde envers les poli­tiques ne date pas d’hier. Vu les décla­ra­tions de ces derniers après l’at­ten­tat de Nice, de l’aban­don assumé de l’État de droit à l’em­pri­son­ne­ment arbi­traire 24h/24 sans procès en passant par l’his­toire du lance-roquette, j’ai du mal à ne pas parti­ci­per moi-même à cette défiance géné­ra­li­sée.

    Certains diront que je vis chez les bisou­nours. Moi j’ai peur qu’ils veuillent faire ressem­bler notre monde à leurs peurs et leurs cauche­mars.


    AMENDEMENT N°17

    présenté par Mme Attard

    ———-

    ARTICLE PREMIER

    Suppri­mer cet article.

    EXPOSÉ SOMMAIRE

    Les chiffres du minis­tère de l’In­té­rieur et les rapports parle­men­taires ont démon­tré que l’état d’ur­gence n’a plus d’in­té­rêt au-delà des 15 jours initiaux déci­dés par le Président de la Répu­blique. De nombreuses audi­tions l’ont confirmé. Comme son nom l’in­dique, l’état d’ur­gence doit être réservé aux situa­tions d’ur­gence. C’est pourquoi il est néces­saire de suppri­mer cet article, afin de lutter effi­ca­ce­ment contre le terro­risme. Cette lutte doit passer par un accrois­se­ment des moyens finan­ciers et humains consa­crés à l’enquête de proxi­mité, à l’édu­ca­tion et à la justice. La suren­chère sécu­ri­taire et l’agi­ta­tion média­tique ne consti­tuent pas une poli­tique effi­cace.

    Merci. Merci d’es­sayer de faire vivre notre société, de la faire progres­ser, de penser au futur plutôt qu’au jeu média­tique.

  • Aldiko, Mantano, TEA, Bookeen et Pocket­book je vous propose un deal

    Aujourd’­hui encore, je ne peux pas char­ger un livre numé­rique sur une liseuse, lire un chapitre et espé­rer conti­nuer ma lecture sur smart­phone.

    Je ne demande même pas à envoyer mon livre dans un cloud ou à synchro­ni­ser des systèmes de lectures de vendeurs diffé­rents. Ce serait top mais je suis prêt à char­ger manuel­le­ment le livre sur tous les appa­reils avant de pouvoir en synchro­ni­ser les posi­tions de lecture, et je suis prêt à devoir télé­char­ger l’ap­pli­ca­tion asso­ciée à la liseuse.

    Visi­ble­ment, en 2016, rien que ça c’est encore de la science-fiction niveau inter­opé­ra­bi­lité.

    Certains écosys­tèmes savent bel et bien synchro­ni­ser les posi­tions de lecture entre diffé­rents appa­reils, mais unique­ment si vous ache­tez les livres chez eux. Côté inter­opé­ra­bi­lité c’est par contre service mini­mum.

    Les plus inter­opé­rables restent Apple et Amazon puisqu’à priori ils permettent de synchro­ni­ser les livres tiers et leurs posi­tions de lecture entre leurs diffé­rents appa­reils. Il faudra cepen­dant enle­ver les DRM au préa­lable, faire une conver­sion préa­lable sur Kindle et faire une croix sur la possi­bi­lité d’avoir une liseuse pour Apple (ouch). Apple et Kindle en exemple d’in­te­ro­pé­ra­bi­li­té… ça me fait mal quand même…

    Chez les autres, au mieux je peux char­ger manuel­le­ment mon livre sur chaque appa­reil indi­vi­duel­le­ment – et encore, parfois après conver­sion – mais certai­ne­ment pas profi­ter de la synchro­ni­sa­tion des posi­tions de lecture, et encore moins de la synchro­ni­sa­tion du livre lui-même.

    Et si on était sérieux cinq minutes ?


    Alors, Aldiko, Mantano, TEA, Bookeen et Pocket­book (*) je vous propose un deal.

    Je connais le sujet, les enjeux, les problé­ma­tiques, les fausses solu­tions, les parti­cu­la­ri­tés des diffé­rents maté­riels.

    Si au moins un éditeur de liseuse et un éditeur d’app mobile y sont prêts je veux bien défi­nir le proto­cole, aider à l’im­plé­men­ta­tion et même déve­lop­per la partie serveur sous licence ouverte. S’il y a deux inter­ve­nants diffé­rents je suis même prêt à monter une struc­ture asso­cia­tive pour que ce soit géré indé­pen­dam­ment d’un acteur parti­cu­lier.

    Ce peut tout à fait être un méca­nisme option­nel. L’in­te­ro­pé­ra­bi­lité est ma seule condi­tion.

    Tout est discu­table. Si nous en discu­tions ?

    L’ef­fort de déve­lop­pe­ment ne serait pas nul mais ce n’est pas non plus l’in­ves­tis­se­ment de l’an­née. Ce qui est certain c’est que sans un mini­mum de travail ensemble, ce sont toujours les mêmes qui vont conti­nuer à sortir leur épingle du jeu.


    Si, lecteur, vous soute­nez l’ini­tia­tive, lais­sez un commen­taire ici. Savoir qu’il y a une demande, même faible, peut toujours aider si des discus­sions s’en­gagent.

    (*) Je n’ai pas mis Kobo ou Google. Je n’ai ni les contacts ni l’es­poir qu’ils jouent le jeu. Si quelqu’un a des connais­sances là bas en réelle capa­cité d’au moins en discu­ter, qu’il n’hé­site pas à m’en parler pour voir ce qu’on peut imagi­ner.

  • Caméra partout, sécu­rité nulle part

    « Je l’avais vu un peu avant, il condui­sait bizar­re­ment. Il accé­lé­rait, frei­nait, re-accé­lé­rait, re-frei­nait… », a affirmé un témoin dans les colonnes de Nice-Matin. « Plusieurs personnes m’ont raconté la même histoire, s’agace un rive­rain auprès de Media­part. Les poids lourds sont inter­dits dans le centre-ville, il y a des camé­ras à chaque coin de rue et aucune d’entre elles ne réagit… Ça inter­roge sur les limites du système quand même… »— Media­part

    Oui il s’agit d’une formu­la­tion bancale mais elle est telle­ment révé­la­tri­ce…

    Non, une caméra ça ne réagit pas. Une caméra ça ne fait rien, ça n’em­pêche rien. Ça filme, et c’est tout. Au moins on aura de belles images (enfin si c’est une caméra correc­te­ment posi­tion­née, de bonne qualité, bran­chée et avec une main­te­nance régu­lière – malheu­reu­se­ment c’est loin d’être une évidence).

    Ce camion n’est qu’une illus­tra­tion du problème. Ce qui me gêne c’est que les gens ne se réveillent qu’à peine, et que main­te­nant.

    On a pris les caméra comme une solu­tion alors que ce n’est qu’un outil. Et si on arrê­tait avec ces camé­ras ?

  • [Commen­taire] Ils ont besoin de notre aide

    Pour que ce soit plus clair :

    Les popu­la­tions terro­ri­sées quoti­dien­ne­ment par l’EI n’ont pas besoin de notre vengeance, elles ont besoin de notre aide.

    Et nous de conti­nuer à rendre diffi­cile l’ac­cueil des syriens qui fuient nos bombar­de­ments.

  • Mon livre (numé­rique) est indis­po­nible !

    Oui, parfois le livre numé­rique est indis­po­nible à la vente. Parfois il est marqué comme tel sur la fiche du livre. Parfois il est marqué dispo­nible mais impos­sible à mettre au panier. Parfois le problème appa­rait plus loin lors de la vali­da­tion du panier ou lors du paie­ment.

    TL;DR: Oui, c’est nul, et quasi­ment toutes les raisons évoquées ci-dessous sont de mauvaises raisons, dues à la complexité de la chaîne du livre et au mauvais fonc­tion­ne­ment tech­nique ou contrac­tuel des diffé­rents maillons.

    Dans tous les cas c’est votre libraire qui peut vous donner des infor­ma­tions. Parfois le distri­bu­teur peut aider si vous dites chez quel libraire ça arrive, mais c’est loin d’être certain, et encore faut-il connaitre le distri­bu­teur en ques­tion. Sauf excep­tion, embê­ter l’édi­teur ne vous appor­tera pas de réponse.

    Si vous vous deman­dez pourquoi, voici quelques cas très probables :

    L’er­reur de synchro­ni­sa­tion : En réalité le livre est dispo­nible à la vente mais il y a une erreur de synchro­ni­sa­tion entre le libraire et le distri­bu­teur, peut-être un chan­ge­ment de prix qui a mal été pris en compte. Le libraire le marque comme indis­po­nible quand on tente de l’ajou­ter au panier. C’est habi­tuel­le­ment corrigé dès le lende­main matin (ou au pire quelques jours), surtout si c’est signalé au libraire.

    S’il est dispo­nible chez d’autres libraires à un autre prix, il y a toutes les chances que vous soyez dans ce cas.

    Le problème de terri­to­ria­lité : Le livre est bien dispo­nible mais vous tentez de l’ache­ter depuis une connexion iden­ti­fiée (à tort ou à raison) comme venant d’un autre pays que la France, ou avec une carte bancaire qui est iden­ti­fiée comme non française, ou avec une adresse de factu­ra­tion non française. Pour des raisons de droits et de terri­to­ria­lité, la vente est refu­sée.

    Ce cas arrive chez certains libraires indé­pen­dants. Norma­le­ment le site devrait vous expliquer quand ça vient de là, mais je ne mettrai pas ma main au feu que c’est toujours le cas.

    Le livre est à paraitre : Le libraire l’in­dique comme indis­po­nible. Il le sera proba­ble­ment plus tard. Parfois ce n’est pas clair chez le libraire, voire pas clair dans la base de données du libraire, ou même mal codé chez le distri­bu­teur. Bref, ça peut être ça même si le site ne l’in­dique pas expli­ci­te­ment.

    Si le livre est récent, si l’équi­valent papier (même éditeur, même édition) n’est pas encore en vente, vous êtes proba­ble­ment dans ce cas.

    Quelques cas moins probables mais pas si rares :

    Le chan­ge­ment de distri­bu­teur : L’édi­teur change de plate­forme ou de distri­bu­teur. Ça peut impliquer un chan­ge­ment d’iden­ti­fiant chez le libraire. Quand le chaî­nage n’est pas parfait, le libraire se retrouve avec un livre indis­po­nible (sous l’an­cien iden­ti­fiant) et un livre dispo­nible (sous le nouvel iden­ti­fiant).

    Si vous êtes dans ce cas, recher­cher le livre par son titre dans le moteur de recherche peut souvent permettre de tomber sur la bonne fiche avec le même livre en dispo­ni­bi­lité. Si ça le fait pour une part signi­fi­ca­tive des livres de l’édi­teur, vous pouvez être dans ce cas ou dans le suivant.

    Pour peu que le libraire n’ait pas encore connecté l’édi­teur sur sa nouvelle plate­forme ou son nouveau distri­bu­teur, le livre semblera indis­po­nible tout court, sans son double dispo­nible (mais pour peu que l’édi­teur génère un chiffre d’af­faire pour le libraire, ça devrait être résolu en quelques jours, quelques semaines au pire).

    L’ar­rêt du contrat de mandat : Pour vendre, le libraire contrac­tua­lise avec le diffu­seur du livre. Parfois les deux inter­lo­cu­teurs ne sont plus d’ac­cord sur les condi­tions. Dans ce cas là le livre ne peut plus être vendu par le libraire. Certains retirent le livre du site, d’autres laissent la page mais marquent le livre comme indis­po­nible (ça sert et pour le SEO et pour avoir des chiffres sur l’in­té­rêt des lecteurs, voire pour leur recom­man­der un autre livre proche)

    Si le problème appa­rait pour tous les livres de l’édi­teur d’un coup, il est bien possible que ce soit le problème. Signa­lez-le au libraire pour qu’il sache que l’édi­teur vous inté­resse mais ça risque de ne pas être résolu rapi­de­ment.

    Le passage en poche : Quand le livre sort en poche c’est souvent sous une autre marque voire un autre éditeur. La version numé­rique suit parfois le même parcours que le papier, même si c’est idiot. On arrête donc la commer­cia­li­sa­tion de l’an­cien livre numé­rique pour en créer un nouveau. Pour plein de raisons, la fiche du livre numé­rique « grand format » peut rester active chez le libraire, mais indis­po­nible à la vente.

    Si le livre existe en version poche mais que le livre numé­rique a la même couver­ture que la version grand format et un prix affreu­se­ment cher par rapport au poche papier, vous êtes proba­ble­ment dans ce cas.

    Avec un peu de chances il existe un second livre numé­rique du même titre sur le site du libraire – et moins cher en plus ! Véri­fiez sur le moteur de recherche.

    Le retrait de la vente : Ce peut être pour des raisons légales (rare mais ça arrive) ou simple­ment parce que l’édi­teur a acquis les droits pour une durée limi­tée. Dans ces cas l’édi­teur retire le livre numé­rique de la vente. Encore, parfois le libraire laisse la fiche sur son site mais marque le livre comme indis­po­nible à la vente.

    Si ni le livre numé­rique ni le livre papier ne sont dispo­nible chez aucun libraire, qu’ils l’ont été par le passé, alors vous êtes certai­ne­ment dans ce cas.

    L’er­reur tech­nique : Oui, parce que ça arrive. Il y a peut-être une erreur tech­nique quel­conque chez le libraire ou la plate­forme du distri­bu­teur. Le message d’er­reur n’est pas forcé­ment bien fait chez le libraire et le résul­tat c’est que le livre est indiqué comme indis­po­nible. Si c’est le cas c’est certai­ne­ment tempo­raire. Reve­nez dans quelques heures, puis dans quelques jours.

  • Député pour l’in­té­rêt géné­ral ?

    Ce gouver­ne­ment a des idées que je ne partage pas. Je critique, je milite, j’ex­plique. C’est le fonc­tion­ne­ment d’une démo­cra­tie, où tous les avis s’ex­priment et où le mien ne l’em­porte pas toujours.

    Ce que je n’ac­cepte pas c’est quand un député démis­sionne de son rôle et trahit son mandat.

    Ça n’a l’air de rien mais ils sont au moins trois dépu­tés à avoir envoyé la même chose cette même soirée. Au moins deux membres du bureau natio­nal du PS.

    Ils déclament trou­ver ça inac­cep­table mais ils l’ac­cep­te­ront quand même. Aucun d’eux n’aura utilisé l’arme en leur pouvoir pour bloquer l’inac­cep­table. Aucun d’eux n’a signé la motion de censure, pour­tant parfai­te­ment adap­tée quand un gouver­ne­ment n’a plus la confiance des dépu­tés.

    On perçoit mieux la trahi­son quand on sait qu’il n’aura manqué que de deux signa­tures pour procé­der au vote de cette motion de censure.

    Le débat se fera aux primaires ? mais… la loi sera passée. Nos dépu­tés ont préféré lâcher le pays pour sauve­gar­der et corri­ger le PS plutôt que l’in­verse.

    Ils ont simple­ment violé les deux premiers articles de leur code de déon­to­lo­gie. Le parti – et leur carrière – sont passés avant l’in­té­rêt géné­ral et leur rôle de député. Je pleure quand certains de mes inter­lo­cu­teurs sont rési­gnés au point de trou­ver ça normal et accep­table.

    La droite ne fait pas mieux. La motion n’est pas dépo­sée parce qu’elle obli­ge­rait les dépu­tés à rester jusqu’à 19h le jeudi soir au lieu d’être dans les fan zone de leur circons­crip­tion pour le match de foot… En pleine réforme sur le droit du travail je trouve l’image magni­fique.

    On arrive à un niveau de trahi­son fantas­tique où personne ne fait même plus semblant de travailler pour l’in­té­rêt géné­ral, de prendre les respon­sa­bi­li­tés allant avec son mandat.

    Même en cas de duel avec N. Sarkozy, il faudra argu­men­ter très dur pour me revoir voter PS. Le gouver­ne­ment Valls aura tout fait pour me dégou­ter mais c’est fina­le­ment acces­soire.

    Ce n’est même plus une ques­tion d’opi­nion poli­tique. C’est une ques­tion de valeurs et de confiance. Je vois que des dépu­tés PS cadres et membres du bureau natio­nal font passer le parti avant la nation, en dépit de ce qu’ils pensent, trahis­sant par là leur mandat natio­nal de repré­sen­tant du peuple. C’est l’or­ga­ni­sa­tion même qui est corrom­pue.

    Malheu­reu­se­ment je n’ai pas mieux en réserve. Ce n’est pas faute d’avoir essayé de m’im­pliquer ailleurs.

    Oui, je ne crois pas à l’homme ou la femme provi­den­tiels mais c’est un·e des seul·es que je vois droit·e dans ses bottes à toujours privi­lé­gier l’in­té­rêt géné­ral et respec­ter des valeurs huma­nistes. Je n’en demande pas beau­coup plus.

  • [vidéo] Non, le peuple n’a pas toujours raison

    Je suis gêné que quelqu’un comme Daniel Cohn-Bendit tombe dans de piège. La démo­cra­tie n’est pas de savoir si le peuple a raison, mais de donner le pouvoir au peuple.

    Parce que… il n’a pas toujours raison mais qui juge quand il a raison et quand il a tort ? Il y a quelqu’un qui a raison envers et contre tout ? Comment savoir ?

    Les poli­tiques parlent de prendre leurs respon­sa­bi­li­tés. Quand une personne décide seule à l’en­contre du peuple, moi j’ap­pelle ça prendre le pouvoir au peuple, donc une dicta­ture. Oui, même si l’his­toire révèle ensuite que cette personne aura eu « raison ». Au mieux c’est une dicta­ture éclai­rée, mais dès que le peuple ne décide plus, c’est une dicta­ture quand même. N’ayons pas peur des mots.

    On oublie telle­ment faci­le­ment que non l’his­toire ne donnera forcé­ment pas « raison », et que reti­rer le pouvoir au peuple est bien trop grave.

    En moins de deux minutes deman­der à la fois plus de repré­sen­ta­ti­vité à l’As­sem­blée Natio­nale et dire que le pouvoir n’a pas à respec­ter la déci­sion du peuple, c’est assez osé quand même. Daniel, tu me déçois.