Auteur/autrice : Éric

  • People have name (ou pas)

    Et si vous arrê­tiez de deman­der mon nom et prénom ?

    À quoi cela vous sert-il ? Le plus souvent vous avez besoin du nom complet, et basta.

    Envoyer un email avec « Bonjour Nico­las » ? Avez-vous pris en compte que dans certaines cultures ça peut appa­raitre impoli ou même supé­rieur ?

    Et quand vous aurez besoin d’un nom complet, dans quel ordre asso­cie­rez-vous nom et prénom sachant que l’ordre dépend là aussi de la culture ? Ne pas inclure les titres peut aussi appa­raître comme une faute là où en France ou aux États-Unis c’est plutôt la règle.

    Vous aviez besoin du nom de famille pour trier ? Mais qu’a­vez vous prévu pour les « von », « mc », « de », « l’ » et autres préfixes ? Comment triez-vous 小林康宏 ? Et puis pourquoi triez-vous par nom de famille alors que certaines cultures trient par prénom ? Quel nom utili­sez-vous quand il y en a plusieurs alors que certains s’at­tendent à utili­ser le nom prin­ci­pal comme clef et que ce nom n’est pas le premier ?

    Je ne fais état là que de certaines problé­ma­tiques, il y en a bien d’autres. le W3C a une bonne docu­men­ta­tion liée à la gestion des noms en contexte inter­na­tio­nal et ainsi que quelques commen­taires et exemples sur une page distincte. Ne croyez pas que vous pouvez vous en passer en France, les fron­tières ne sont plus étanches depuis long­temps, surtout sur le web.

    Le plus souvent vous pouvez me deman­der mon nom complet, simple­ment. Éven­tuel­le­ment un champ pour le nom lorsque vous vous adres­sez à moi et un champ pour le nom que je souhaite affi­cher publique­ment dans votre service (et il est facile de pré-remplir le second à partir du premier pour que je n’ai à le modi­fier qu’en cas de besoin). Le reste est rare­ment vrai­ment néces­saire, juste une mauvaise habi­tude.

    Allons plus loin, quels sont vos pré-jugés sur les noms ?

    1. People have exactly one cano­ni­cal full name.
    2. People have exactly one full name which they go by.
    3. People have, at this point in time, exactly one cano­ni­cal full name.
    4. People have, at this point in time, one full name which they go by.
    5. People have exactly N names, for any value of N.
    6. People’s names fit within a certain defi­ned amount of space.
    7. People’s names do not change.
    8. People’s names change, but only at a certain enume­ra­ted set of events.
    9. People’s names are writ­ten in ASCII.
    10. People’s names are writ­ten in any single charac­ter set.
    11. People’s names are all mapped in Unicode code points.
    12. People’s names are case sensi­tive.
    13. People’s names are case insen­si­tive.
    14. People’s names some­times have prefixes or suffixes, but you can safely ignore those.
    15. People’s names do not contain numbers.
    16. People’s names are not writ­ten in ALL CAPS.
    17. People’s names are not writ­ten in all lower case letter

    ça conti­nue sur d’autres erreurs courantes (parce que oui, chacune de ces affir­ma­tions est fausse) en termi­nant par …

    1. People have names.

    Alors certes vous pouvez faire des raccour­cis, et vous y êtes bien obli­gés, mais 99% du temps vous allez contraindre voir reje­ter quelqu’un. Les geeks qui se font reje­ter leur adresse email valide parce qu’elle contient un « + » savent de quoi je parle, idem pour ceux qui s’as­treignent à reti­rer leurs accents ou carac­tères non ascii « au cas où ». Réali­sons que, à côté d’autres, nos compro­mis sont quasi­ment inexis­tants.

    Et d’ailleurs, pourquoi un nom ?

    Et si vous ne deman­diez rien fina­le­ment ?
    Avez-vous vrai­ment *besoin* de mon nom ? Vrai­ment ? Vous ne pour­riez rien faire sans ? Pourquoi le rendre obli­ga­toire alors ?

    Je n’ai jamais eu besoin de décli­ner mon iden­tité pour ache­ter du pain ou une paire de chaus­sette au super­mar­ché, pourquoi serait-ce le cas sur Inter­net ?

  • Finis­sons-en avec le 3D Secure actuel

    Vous avez forcé­ment déjà utilisé le 3D Secure lors d’un paie­ment en ligne. C’est le méca­nisme qui, après la saisie des infor­ma­tions de la carte, vous demande un code reçu par mail ou sms, voire un code dans une grille envoyée par la poste ou votre date de nais­sance.

    Côté commerçant ça permet de limi­ter la fraude mais ça augmente aussi drama­tique­ment les aban­dons lors du paie­ment. C’est au point où sauf si vous êtes une cible parti­cu­lière pour la fraude en ligne, les commerçants ont géné­ra­le­ment inté­rêt à désac­ti­ver la fonc­tion­na­lité.

    Bon, et puis sérieu­se­ment, si on vole votre sac, le télé­phone est proba­ble­ment à côté de la carte bancaire et le voleur pourra récu­pé­rer le code mail ou sms. Je ne parle même pas des banques qui demandent la date de nais­sance.

    Il existe pour­tant des solu­tions, des bonnes, avec des jetons tempo­raires direc­te­ment géné­rés par la carte bancaire. Pourquoi n’avons-nous pas ça ? Ça ne coûte­rait pas si cher à produire en plus.

    CodeSe­cure with Dot Matrix LCD (vidéo, commu­niqué de presse Visa, commu­niqué de presse MasterCard).

    Il serait temps de faire arri­ver ça concrè­te­ment sur nos cartes, c’est bien plus perti­nent que leur volonté de nous rajou­ter le paie­ment sans contact troué dont personne ne veut. Quand vous en parlez à votre banque, elle vous dit quoi ?

  • Acces­seurs

    Je déteste avoir à program­mer ou utili­ser des acces­seurs. Voilà, c’est dit.

    Sérieu­se­ment, qui a eu l’idée de faire des méthodes getX() et setX() ? Dans le meilleur des cas c’est pénible a écrire et diffi­cile à lire.

    Qu’on ne me parle pas d’en­cap­su­la­tion, ces méthodes arti­fi­cielles sont tout sauf un besoin d’en­cap­su­la­tion. C’est même exac­te­ment le contraire de l’en­cap­su­la­tion : C’est parce que je n’ai pas à savoir si un attri­but est en accès direct ou non que je n’ai pas à utili­ser d’ac­ces­seurs.

    Il n’est pas besoin d’im­pac­ter la manière dont on appelle les attri­buts d’un objet pour diffé­ren­cier l’in­ter­face publique et les données internes. De nombreux langages on trouvé une manière élégante de gérer les acces­seurs au niveau du langage au lieu de faire faire des pirouettes à l’uti­li­sa­teur. Un des gros avan­tages c’est qu’on ne commence à défi­nir des méthodes d’ac­ces­seur que quand on en a vrai­ment l’uti­lité, pas « partout, au cas où pour plus tard ».

    Donc, quand il s’agit de migrer un attri­but autre­fois en accès direct, en Javas­cript :

    A = { 
      get b() { return this._b; },
      set b(val) { return this._b = val;} 
    };
    // ou 
    
    A.__defineGetter__("b", function() { return this._b; };
    A.__defineSetter__("b", function(val) { return this._b = val; };

    en Ruby :

    class A
      def b
        @b
      end
      def b=(val)
        @b = val
      end
    end

    en Python :

    class X(object):
      def getb(self):
        return self._b
      def setb(self, val):
        self._b = val
      b = property(getb, setb)
    
    # ou mieux :
    
    class X(object):
      @property
      def b(self):
        return self._b
      @b.setter
      def b(self, val):
        self._b = val

    Sérieu­se­ment, c’est moins de complexité pour démar­rer du code (pas besoin de déve­lop­per des acces­seurs passe-plat au cas où on en aurait besoin plus tard, on peut s’en occu­per unique­ment quand le besoin arrive), et c’est plus de clarté pour tout ce qui utilise notre code (et là le gain est immense même si ça semble juste quelques carac­tères). Je n’ima­gine pas de m’en passer dans les langages où ça existe.

    Si vous utili­sez des getter et setter passes-plat, c’est soit votre code qui est mauvais, soit votre langage qui est bridé (soit que vous utili­sez consciem­ment un langage bas niveau). Dans les deux premiers cas il y a quelque chose à repen­ser.

    Bien entendu PHP reste à la traine, sous prétexte de simpli­cité (allez comprendre).

  • Évolu­tion de PHP – acces­seurs

    Il y a matière à se réjouir : Le déve­lop­pe­ment et l’évo­lu­tion du langage PHP a repris. Nous avons eu les fonc­tions anonymes, les espaces de nom, et quelques nouveau­tés bien­ve­nues, souvent atten­dues de trèèèèès longue date.

    Bref, ça bouge, bien. Nous avons  cepen­dant encore deux courants très oppo­sés au niveau du langage : L’un qui souhaite le garder simple et « comme il est », avec souvent un histo­rique quick’n dirty, et qui au final freine quasi­ment toutes les évolu­tions. L’autre qui souhaite le voir profon­dé­ment changé, et reprendre les bonnes idées des autres langages, au risque de trop vouloir copier ces autres langages.

    Si je devais cari­ca­tu­rer je dirai qu’une majo­rité des déve­lop­peurs de PHP (surtout les histo­riques) sont ceux qui freinent, et qu’une majo­rité des utili­sa­teurs actifs de PHP sont ceux qui poussent. Si ça bouge depuis PHP 5.3, c’est que l’ex­cès du « on ne touche rien » a provoqué un trop grand ras-le-bol, et les déve­lop­peurs de PHP ont été forcés de mettre de l’eau dans leur vin.

    Malheu­reu­se­ment les deux courants existent toujours et rien n’a été tran­ché. On le voit très bien sur la RFC concer­nant les acces­seurs : Une bonne partie des « contre » sont ceux que je quali­fie de « déve­lop­peurs histo­riques du langage », et une partie des « pour » sont ceux que je quali­fie de « utili­sa­teurs actifs dans le langage ».

    Il est plus que temps de déci­der où l’on va, sinon nous allons conti­nuer à avoir un Fran­ken­stein.

  • Des « entar­teurs » encourent jusqu’à 9 ans de prison

    Entar­ter est désor­mais assi­milé à un atten­tat en Espagne. […] Ils sont accu­sés d’ « atten­tat contre une personne dépo­si­taire de l’au­to­rité publique », avec des demandes du procu­reur allant de 4 à 9 années de prison. […] La juri­dic­tion dépêche égale­ment une commis­sion roga­toire auprès de la France pour qu’elle trans­fère les résul­tats de la recherche d’em­preintes et d’ADN sur les embal­lages des tartes.

    Le problème avec les lois d’ex­cep­tion, c’est qu’elles permettent juste­ment des choses qu’on juge norma­le­ment inac­cep­tables. Nous avons renié beau­coup de nos prin­cipes depuis une quin­zaine d’an­nées.

  • Une minute et trente cinq secondes pour résu­mer le copy­right

    Trop dense pour préci­ser, mais c’est assez court pour que ça vaille le coup de regar­der:

  • Post­mark

    Dans le même esprit que Logen­tries, je tombe sur Post­mark avec des prix rela­ti­ve­ment honnêtes (1,5$ les 1000 mails). Si cela permet de soula­ger le serveur d’un service et d’évi­ter les boites à SPAM, peut être que…

    Vous utili­sez quoi pour envoyer vos mails appli­ca­tifs ?

  • Logen­tries

    Quand je regarde Logen­tries, leurs tarifs, je me dis qu’ils ont trouvé un filon.

    Et vous, vous utili­sez quoi pour analy­ser vos logs ?

  • Élabo­ra­toire sur la docu­men­ta­tion des perfor­mances web

    Il y a quelques temps j’ai relâ­ché publique­ment mon travail initial sur un livre en français dédié à la perfor­mance des sites web. Relâ­cher en public ne suffit pas et pour voir appa­raitre une docu­men­ta­tion utile qui devient pas obso­lète il faut créer une vraie dyna­mique de mise à jour et de comple­tion. Le besoin d’une vraie réfé­rence en français (et même en anglais) est là, et il n’y a pas besoin que d’ex­perts pour y arri­ver.

    Sudweb arrive et j’y anime­rai un élabo­ra­toire. Je vous propose d’y travailler ensemble à la docu­men­ta­tion des pratiques et des problé­ma­tiques de perfor­mance. L’objec­tif est de réamor­cer une dyna­mique qui permette d’ar­ri­ver à un contenu utile et mis à jour.

    Pour que la session soit effi­cace il faut prépa­rer un peu :

    En préa­lable il faut réus­sir à poin­ter un maxi­mum le contenu manquant ou à réécrire. Si vous avez peu de temps, choi­sis­sez un sujet qui vous semble perti­nent. Ce peut être une problé­ma­tique croi­sée récem­ment, un sujet abordé dans un billet de blog ou un point tech­nique plus géné­ral. Ce peut être un sujet bateau, une problé­ma­tique très poin­tue ou un point de détail (même très en détail, n’ayez pas peur). Peu importe en fait, si le contenu est manquant ou à mettre à jour : Créez un ticket sur github pour le signa­ler.

    C’est là que vous pouvez aider, et c’est ça qui peut nous permettre d’avoir un contenu de réfé­rence utile et perti­nent au sujet de la perfor­mance web. Je répète : *Vous* pouvez aider. Oui, *vous* aussi, même si vous ne venez pas (mais je vous encou­rage à venir).

    Tout le monde peut parti­ci­per et y inves­tir le temps qu’il peut, même 10 minutes, quel que soit le niveau tech­nique. Si vous ne savez pas par quoi commen­cer regar­der vos dix lectures précé­dentes côté perfor­mance web et véri­fiez que tout ce qui vous semble utile est présent dans le contenu actuel. Mieux : À partir de main­te­nant faites un tour à chaque fois que vous lisez quelque chose sur la perfor­mance pour véri­fier si c’est déjà dans le livre.

    En avril nous ferons un second travail de quali­fi­ca­tion et de regrou­pe­ment pour tenter de consti­tuer des groupes de tâches avec des objec­tifs précis et réali­sables pour Sudweb.

    Merci de votre aide et n’hé­si­tez pas à relayer ce billet.

  • Support EPUB 3

    Si vous voulez une grille complète de support EPUB 3 dans les lecteurs : Le Book Indus­try Stan­dard Group (BISG) a ça.