Auteur/autrice : Éric

  • Spam en ROT13

    On dira ce qu’on veut mais pour le coup ÇA c’est du marke­ting cible (pour les geeks). Même si c’est du spam, c’est telle­ment unique que je ne peux pas m’em­pê­cher de le parta­ger :

    To: « Get Vigara-Today » <A5BA548@xxxxxx.xxx>
    Subject: Re: SALE!
    From: rot13@­rot13.com

    Arj fnyr cevprf:
    —————-

    Yrig­ven … 1.25$

    Pvynvf … 1.14$

    Ivtnen … 0.21$

    Srznyr Cnpx … 1.20$

    Snzvyl Cnpx … 2.12$

    Cebsrffv­bany Cnpx … 3.29$

    —————–

    Sbyybj fcrpvny yvax:

    uggc://sHP.hgvbazrqvp.eh/

    Pour ceux qui n’ont pas fait atten­tion à l’ex­pé­di­teur : ROT13. Le plus éton­nant est que s’ils passent du temps à envoyer ça, c’est que ça doit fonc­tion­ner.

  • X-UA-Compa­tible : IE=Edge

    Je rage devant tous ces affi­cio­na­dos qui veulent être à la pointe et qui tout en crachant sur les mode de compa­ti­bi­lité et doctype swit­ching, forcent les futurs navi­ga­teurs à repro­duire les mêmes problèmes.

    N’uti­li­sez pas « X-UA-Compa­tible : IE=Edge ». C’est inutile et contre-produc­tif.

    Un pari risqué sur l’ave­nir

    Avec cette entête, on déclare expli­ci­te­ment une compa­ti­bi­lité avec tout moteur Inter­net Explo­rer futur. Celui de dans deux ans ou celui de dans cinq ans.

    Avec le passé des navi­ga­teurs, l’his­toire du doctype swit­ching, les modes de compa­ti­bi­lité et les ruptures de compa­ti­bi­lité diverses, c’est quand même un pari qui semble perdu d’avance.

    La ques­tion n’est pas telle­ment de savoir si vous codez « stan­dard », mais que le stan­dard peut évoluer ou se préci­ser, que certaines fonc­tion­na­li­tés peuvent être aban­don­nées, ou que certains bugs peuvent être corri­gés en intro­dui­sant des effets de bords sur vos pages. Même ceux qui codent « stan­dard » jusqu’au bout des ongles choi­sissent en géné­ral tel ou tel montage pour contour­ner les manques ou diffé­rences des navi­ga­teurs et que ces manques et diffé­rences évoluent avec le temps.

    Le problème n’est pas vos pages ou votre code, c’est l’en­vi­ron­ne­ment autour.

    Et encore, je laisse de côté ceux qui s’at­tachent telle­ment fort aux stan­dards qu’ils finissent pas n’uti­li­ser que des fonc­tion­na­li­tés avant leur stabi­li­sa­tion voire avec préfixées dans des versions de test. Eux *vont* des problèmes, mais ils le méritent.

    … (le plus souvent) inutile

    Le système est fait pour trois cas :

    • Permettre à un site codé pour une ancienne version d’In­ter­net Explo­rer et non compa­tible avec les suivantes, de bloquer le moteur de rendu à cette version précise.
    • Permettre à un intra­net ou à un site autre­fois liste noire pour incom­pa­ti­bi­lité histo­rique, après une refonte et en atten­dant d’être retiré des listes noires, de décla­rer pouvoir/vouloir désor­mais utili­ser les versions récentes du moteur d’In­ter­net Explo­rer.
    • Permettre à un site incom­pa­tible avec les anciennes versions d’In­ter­net Explo­rer d’être embarqué via une iframe dans un site non compa­tible (soit sur liste noire, soit qui demande expli­ci­te­ment une ancienne version du moteur)

    Si vous n’êtes pas dans un de ces trois cas, il est très probable que vous n’ayez pas besoin d’une entête X-UA-Compa­tible. Pour utili­ser la dernière version respec­tueuse des normes du moteur d’In­ter­net Explo­rer, il vous suffit de coder des pages valides avec un doctype correct et sans prologue XML.

    Sauf à être dans un des cas précé­dents, le X-UA-Compa­tible n’ap­por­tera rien de plus à part les effets néga­tifs qui seront décrits plus haut.

    Mais si vous souhai­tez quand même un opt-in

    Même si vous vous retrou­vez dans un des trois cas décrits plus haut, ou si vous souhai­tez quand même être expli­cite, se décla­rer expli­ci­te­ment compa­tible avec de futures versions qui n’ont même pas commencé à voir le jour est toujours aussi risqué.

    Vous avez testé avec IE10 ? alors décla­rez IE=10. Vous n’au­rez rien de moins que prévu, même si un IE11 ou un IE12 sortent. Si ces prochains n’in­tro­duisent pas de problème de compa­ti­bi­lité, il est probable que vous béné­fi­cie­rez de toutes façons du nouveau moteur. À l’in­verse, s’il y a rupture de compa­ti­bi­lité majeure, vous aurez proba­ble­ment moins de problèmes avec un mode de compa­ti­bi­lité « IE=10 » qu’a­vec un nouveau moteur incom­pa­tible « IE=Edge ».

    Vous avez tout à gagner à être honnête et à décla­rer la compa­ti­bi­lité réelle de vos pages. Au pire le site déve­loppé pour IE10 conti­nuera d’être vu avec un moteur compa­tible avec ce que propo­sait IE10. Est-ce vrai­ment si peu souhai­table ?

    Si ces pages sont toujours en main­te­nance active lors d’une nouvelle version du moteur IE *et* que ce moteur est compa­tible avec la version précé­dente *et* pour­tant qu’il décide de passer en compa­ti­bi­lité quand vous préci­sez IE=[la_version_préce­dente] (vous remarque­rez que les deux dernières condi­tions sont assez inco­hé­rentes entre elles), alors il vous sera facile de mettre à jour la décla­ra­tion. L’avan­tage c’est que si une de ces hypo­thèses devient inva­lide à l’insu de votre plein gré, au moins ça conti­nuera à fonc­tion­ner comme avant et comme prévu.

    À quoi ça sert alors ?

    Le mode IE=Edge est utile à condi­tion que vous testiez toutes les pages diffé­rentes à chaque nouvelle beta d’In­ter­net Explo­rer, et ce tant qu’au moins une de vos pages est en ligne (chez vous ou chez un tiers).

    Ça peut être votre cas si vous avez un petit site et que vous avez du temps à y passer. C’est toute­fois un pari sur le fait que vous restiez en main­te­nance active et que vous aurez du temps à perdre à l’ave­nir. Je ne compte pas le nombre d’ap­pli­ca­tions ou de sites aban­don­nés qui sont en théo­rie en main­te­nance ou dont on pensait qu’ils seraient encore en main­te­nance.

    Le plus souvent IE=Edge c’est surtout pour les sites en déve­lop­pe­ment, et ça devrait y rester cantonné.

    Mon problème n’est pas tant que vous choi­sis­siez d’uti­li­ser une décla­ra­tion IE=Edge, à vrai dire vous faites ce que bon vous semble et comme je n’uti­lise pas IE je n’au­rai pas à en souf­frir. Mon problème c’est quand ça arrive en recom­man­da­tion ou en bonne pratique à desti­na­tion des déve­lop­peurs. Là désolé de vous le dire, mais vous avez fauté. Vous enga­gez forte­ment un tiers à quelque chose dont je doute qu’il ait saisi toutes les impli­ca­tions, et ce pour un béné­fice qui reste fran­che­ment à démon­trer.

    Petite pensée pour l’ave­nir

    Si trop de gens utilisent IE=Edge, et qu’In­ter­net Explo­rer se sent obligé d’in­tro­duire une rupture de compa­ti­bi­lité signi­fi­ca­tive, quelle(s) solu­tion(s) leur restera-t-il ?

    • Casser la compa­ti­bi­lité, mais ils ont prouvé que dans leur cas spéci­fique, sachant que leur moteur était forte­ment utilisé aussi pour les appli­ca­tions natives et pas que le Web, c’était fran­che­ment nocif
    • Intro­duire un nouveau méca­nisme d’auto-détec­tion bancal comme le doctype swit­ching et complexi­fier encore plus le déve­lop­pe­ment web qui est déjà bien tordu à ce niveau si on prend en compte tous les modes de compa­ti­bi­lité
    • Consi­dé­rer que IE=Edge corres­pond en fait à IE=13 (par exemple) et créer un nouveau mot clef pour le rempla­cer, ou ajou­ter un suffixe expli­cite ; ceux qui ont joué avec les User-Agent savent combien ce mode de fonc­tion­ne­ment a ses limites

    Même du point de vue du web, en trichant à ce niveau vous n’ai­dez pas le web à rester à jour, vous risquez surtout de le casser ou de le complexi­fier. À bon enten­deur…

  • J’ai tout compris, je quitte Free

    Je quitte Free.fr. Sans regrets.

    La qualité n’était simple­ment plus au rendez-vous puisque la box désyn­chro­nise plus de 20 fois par jour en ce moment. Ça dure depuis un bon mois à vue de nez et ça va cres­cendo.

    J’au­rai certes pu appe­ler le support tech­nique. Peut être que ça aurait résolu la situa­tion, peut être pas. Disons que j’au­rai pu tenter mais même si on me dit que ça vrai­ment changé, mes expé­riences passées sur le chat et la hotline étaient telle­ment mauvaises je suis peu attiré par l’idée.

    Ajouté à ça les problèmes récur­rents et assu­més par la direc­tion Free.fr de mauvais débit vers Youtube et quelques autres autres routes à fort trafic, l’ac­cu­mu­la­tion de frus­tra­tion deve­nait impor­tante ; assez impor­tante pour envi­sa­ger partir chez un concur­rent.

    L’herbe est rare­ment plus verte ailleurs mais je suis éligible depuis à la fibre SFR. Un vrai débit montant, plus de problèmes vers Youtube, et jamais plus de désy­chro­ni­sa­tions ADSL. Ça marche, je signe.

    Pour la petite histoire, mon FAI actuel n’au­rait pas eu un mauvais histo­rique de service client et aurait pris plus au sérieux son acti­vité prin­ci­pale qui est d’of­frir de la connec­ti­vité (et non des services annexes), je n’au­rai proba­ble­ment pas sauté le pas. À bon enten­deur…

  • Pas de moteur DOM en ruby ? vrai­ment ?

    Je trouve ça telle­ment étrange qu’à mon avis j’ai simple­ment des oeillères qui me masquent la bonne librai­rie de code.

    Je cherche un moteur DOM XML utili­sable en program­ma­tion ruby. J’ai trouvé des moteurs dits DOM-like, c’est à dire des TreeBuil­der avec des API plus ou moins heureuses, et dont le parcours est géné­ra­le­ment fran­che­ment pénible si on n’uti­lise pas XPath ou qu’on ne recherche pas quelques éléments parti­cu­lier via leur chemin. Hpri­cot, Noko­giri, REXML et même libxml font partie de cette caté­go­rie.

    Par contre je n’ai trouvé aucun moteur DOM qui cherche vrai­ment l’im­plé­men­ta­tion de la spéci­fi­ca­tion DOM. J’at­tends par exemple un attri­but docu­mentE­le­ment sur la classe DOMDo­cu­ment. J’au­rai compris sur Ruby avoir un attri­but docu­ment_element au lieu de docu­mentE­le­ment mais là c’est géné­ra­le­ment un root que je retrouve. Sur les inter­faces pour parcou­rir le XML les diffé­rences sont bien plus profondes et je me retrouve avec des APIs qui sont géné­ra­le­ment très diffé­rentes.

    Certes, je peux me passer de DOM mais ce serait quand même étrange que personne n’ait implé­menté en ruby ce stan­dard extrê­me­ment courant. Qu’ai-je manqué ?

  • Racisme ordi­naire, troi­sième prise

    Jamais deux sans trois : Michel a fait suivre en commen­taire un autre épisode de racisme ordi­naire. Avoir la peau de couleur, c’est subir des préju­gés de pauvreté et bas niveau social.

    Le pire c’est que c’est incons­cient et que les auteurs se défen­dront toujours (de bonne foi) d’avoir une atti­tude raciste. Ils ne se senti­ront pas concer­nés. Et comme nous ne nous sentons pas auteurs de tels compor­te­ments non plus, vu que c’est juste­ment un des symp­tômes, peut être sommes nous du lot. Faire atten­tion et renver­ser les pré-jugés, c’est le travail de tous.

  • Mise à jour vers Moun­tain Lion – clavier US

    Au cas où ça serve à d’autres, lors de la mise à jour Mac vers Moun­tain Lion :

    Il y a un redé­mar­rage préa­lable à l’ins­tal­la­tion et un redé­mar­rage après l’ins­tal­la­tion. Chacun vous demande de vous authen­ti­fier pour conti­nuer.

    Lors du premier, si vous avez chif­fré votre disque avec FileVault, il vous faudra saisir votre mot de passe comme si vous aviez un clavier améri­cain (lettre « a » et « q » inver­sées par exemple).

    Rien ne l’in­dique, si ce n’est que les invites sont en anglais, ce qui peut mettre la puce à l’oreille. Le savoir peut vous épar­gner la petite frayeur du mot de passe qui ne fonc­tionne plus, d’au­tant qu’a­vec un disque chif­fré la perte de mot de passe implique la perte des données et un refor­ma­tage complet néces­saire.

    Je plains les vrais infor­ma­ti­ciens qui auront mis des carac­tères spéciaux dans leurs mots de passe et qui devront retrou­ver la posi­tion sur un clavier US Mac. Je plains les non-infor­ma­ti­ciens qui n’au­ront fran­che­ment aucune chance de comprendre ce qui leur arrive et pour qui l’idée de taper avec un agen­ce­ment améri­cain sur un clavier français n’a aucun sens.

  • Jeune mariée, je découvre toutes ces petites humi­lia­tions racistes

    Pour faire suite au billet précé­dent sur le racisme au quoti­dien, deux anec­dotes valent mieux qu’une, et autant le précé­dent pouvait passer sous un auto­ma­tisme trop fort, autant celui là mérite repres­sion.

    Avec un compa­gnon de couleur, jeune mariée, elle découvre toutes ces petites humi­lia­tions racistes : On ne sort pas les appa­reils des vitrines, on présup­pose des paie­ments non hono­rés, on demande des justi­fi­ca­tifs super­flus… Si ces anec­dotes sont le quoti­dien, c’est une véri­table mis au banc.

  • Poli­ciers, un Roumain avec un iPhone ne l’a pas forcé­ment volé

    Scènes de racisme ordi­naire. En cas de doute le noir, l’arabe et le roumain ont forcé­ment volé leur smart­phone dernier cri et quand ils parlent d’études ou d’em­plois pres­ti­gieux c’est forcé­ment du faux.

    Poli­ciers, un Roumain avec un iPhone ne l’a pas forcé­ment volé. Pour­tant, tout en étant inac­cep­table, ce compor­te­ment n’est pas forcé­ment le signe d’une croyance raciste. C’est parfois simple­ment l’ha­bi­tude qui prend le pas sur la raison et chacun peut faire l’er­reur d’y succom­ber sous la pres­sion et l’épui­se­ment. Se conten­ter de condam­ner ne fera pas avan­cer les choses. Au risque de choquer, et sans caution­ner pour autant, pas mal de ces poli­ciers méritent plus une aide pour arri­ver à ne pas tomber dans cette faci­lité et cette assi­mi­la­tion qu’une lapi­da­tion publique.

    Ça me rappelle une anec­dote qu’on ma raconté il y a quelques années – où là je ne trouve aucune circons­tance atté­nuante même en cher­chant bien (je retrans­cris suivant mon souve­nir) : une chef de projet se présente à l’ac­cueil d’une grande société de télé­pho­nie, elle est en retard et l’an­nonce, l’ac­cueil la coupe et répond « on vous atten­dait, allez à la pièce XXX » et là après attente on lui colle un balais et on lui explique son rôle de femme de ménage. Si la chef de projet avait eu la peau blanche tout n’au­rait pas été si évident et la méprise aurait certai­ne­ment été évitée.

    Le racisme incons­cient est diffi­cile à combattre, juste­ment parce que personne ne croit en être l’au­teur avant de faire une énorme boulette.

  • Signa­ture des appli­ca­tions Android sur Google Play

    Je trouve très peu de conseil ou bonnes pratiques. Déve­lop­peurs Android qui avez de l’ex­pé­rience là dedans, j’ai besoin de vos lumières.

    Pour l’ins­tant j’ai lu Signing you appli­ca­tions. J’ai retenu que toutes les appli­ca­tions doivent être signées, et que pour pouvoir les mettre à jour il faut utili­ser exac­te­ment le même certi­fi­cat que l’ap­pli­ca­tion d’ori­gine. Pour signer on créé un keys­tore et un alias.

    Une ou plusieurs clefs

    La bonne pratique habi­tuelle côté sécu­rité c’est une clef par desti­na­tion, appli­ca­tion ou usage. Éven­tuel­le­ment une clef globale pour certi­fier les premières si on a besoin de s’as­su­rer de la pater­nité de toutes les clefs. Ça mili­te­rait pour signer chaque appli­ca­tion avec une clef diffé­rente et ça permet­trait de délé­guer la produc­tion d’une ou plusieurs appli­ca­tions à un tiers sans devoir lui donner la clef globale.

    Le problème c’est que le docu­ment sur la doc Android, ainsi que les quelques docu­ments trou­vés sur le web à propos de Google Play, conseillent plutôt d’uti­li­ser une clef globale. Le seul gain que j’y vois c’est que les appli­ca­tions pour­ront commu­niquer entre elles. Je n’en ai pas besoin pour l’ins­tant mais il est vrai que je ne connais pas le futur.

    Alors, une clef par appli­ca­tion ou une clef globale ?

    Notion de keys­tore et alias

    Tel que je le comprends le keys­tore n’est qu’un simple entre­pôt pour stocker des clefs. Mis à part que lui même peut être protégé par un mot de passe pour éviter de donner trop faci­le­ment accès aux clefs privées. Les clefs privés sont en fait ce qui est pointé par les « alias » dans la docu­men­ta­tion. On peut donc avoir plusieurs clefs par keys­tore.

    J’en déduis que la notion de keys­tore n’in­flue pas du tout sur Google Play. Je peux sortir ma clef d’un keys­tore, la mettre dans un autre keys­tore et signer une mise à jour avec. Tant que c’est la même clef, on se moque du keys­tore. Ai-je bon ?

    J’en déduis donc aussi que Google n’a aucune notion de mon keys­tore et que je peux y ajou­ter de nouvelles clefs quand je le souhaite pour de nouvelles appli­ca­tions. Je n’ai pas besoin de prépa­rer un keys­tore avec un jeu de clef qui ne bougera pas et que je ne pour­rai pas mettre à jour. Ai-je bon ?

    Voilà voilà, j’ai besoin de vos lumières et ayant peu d’édi­teurs d’ap­pli­ca­tions dans mon réseau, j’ap­pré­cie­rai beau­coup que vous fassiez suivre mes inter­ro­ga­tions à vos propres connais­sances.

    Comme j’ai eu quelques conseils de gens qui réflé­chissent à haute voix mais n’ont eux-même pas essayé ou pas d’ex­pé­rience dans tout ça : Si vous vous retrou­vez dans cette situa­tion, merci de le préci­ser pour que je fasse le tri entre les retours d’ex­pé­rience réels et les autres.

  • One Race, Every Meda­list Ever

    À part owni, j’ai l’im­pres­sion que nos sites de presse sont très loin de ce qu’il se fait chez nos voisins améri­cains en termes de présen­ta­tion des données.

    One Race, Every Meda­list Ever c’est la mise en pers­pec­tive des diffé­rents médaillés du 100 mètres année après année, placés sur une même ligne. On y voit l’évo­lu­tion des perfor­mances et ceux qui étaient vrai­ment au dessus de leur époque.

    Atten­tion toute­fois, le graphique est trom­peur car il zoome sur les derniers mètres. La diffé­rence entre Usain Bolt 2012 et Carl Lewis 1988 n’est que de 3 %.

    Deux notes person­nelles :

    • Avoir un accès ouvert aux données brutes permet­trait de vrai­ment faire fleu­rir ce genre d’uti­li­sa­tion. La réali­sa­tion ne demande pas vrai­ment d’in­ves­tis­se­ment, c’est unique­ment une ques­tion d’idée et de moti­va­tion.
    • Consi­dé­rant que les gagnants passés (ou une bonne partie d’entre eux) étaient dopés jusqu’à la moelle, le fait qu’on s’amé­liore autant avec le temps laisse songeur et fait un peu peur sur ce qu’on saura ou trou­vera dans dix ans