Catégorie : Développement informatique

  • Conver­gence web et appli­ca­tion – Stockage Safari mobil / iOS

    Les API qui arrivent sur nos navi­ga­teurs depuis quelques années commence à nous faire imagi­ner une vraie conver­gence entre les appli­ca­tions mobiles et le web.

    C’est déjà un premier pas énorme qu’on voit avec Chrome web store, Fire­fox Market­place, et autres Windows 8 : On commence à déve­lop­per direc­te­ment avec les tech­no­lo­gies web, éven­tuel­le­ment direc­te­ment avec le navi­ga­teur comme plate­forme.

    Main­te­nant pour moi ce n’est pas encore ça. J’ai quelques problèmes côté sécu­rité par exemple (théo­rique­ment entre l’at­tri­but sand­box, l’api postMes­sage et les décla­ra­tions CSP on devrait arri­ver à avoir une bonne base, mais ça n’a pas l’air de coller si faci­le­ment si ce n’est pas bien prévu dès le départ).

    Le butoir sérieux est côté iOS avec son stockage de 50 Mo maxi­mum. Ça peut sembler beau­coup mais c’est fina­le­ment très réduit dès qu’on y stocke autre chose que du pur texte à lire. J’ai réel­le­ment besoin de dépas­ser ce palier. Je paye une bière à celui qui me trouve un méca­nisme qui tourne effi­ca­ce­ment et qui permet de s’en affran­chir sur Safari mobile. Plusieurs bières même. Il peut même y avoir un job ou une mission à la clef pour des bon bidouilleurs javas­cript. Avis aux inté­res­sés.

  • Frame­work js pour appli­ca­tion web

    Je regarde un peu les frame­works JS pour « appli­ca­tions dans le navi­ga­teur ».

    Plus j’avance plus je me dis qu’a­vec l’ap­proche mobile et la gestion du offline, on aban­donne le web tel que je le connais­sais. Même avec une foul­ti­tude de javas­cript et d’ajax, nous avons long­temps gardé l’ap­proche « vue sur le client, appli­ca­tion sur le serveur », et j’en ai été un grand défen­seur. Aujourd’­hui l’idée c’est plutôt « appli­ca­tion sur le navi­ga­teur, API sur le serveur ».

    La démarche n’est pas neuve en infor­ma­tique et le milieu a déjà subit plusieurs aller-retour entre les modes « appli­ca­tion sur le client », « appli­ca­tion sur le client synchro­ni­sée avec un serveur », et « appli­ca­tion sur le serveur, vue sur le client ». Il s’agit juste d’un de ces mouve­ments mais côté appli­ca­tions web.

    J’ai regardé quelques frame­works, nommé­ment Back­bo­neJS, Angu­larJS et EmberJS, plus quelques compa­ra­tifs plus éten­dus. Pour l’ins­tant j’ai l’im­pres­sion qu’ils proposent surtout une notion de MVC, avec éven­tuel­le­ment un système de rendu avec liai­son directe entre la partie modèle et la partie contrô­leur.

    Je peux me leur­rer sur la complexité ou sur la valeur ajou­tée en main­te­nance mais j’ai l’im­pres­sion que ça ne sera pas mes points d’at­ten­tion. Orga­ni­ser mes classes je le ferai certai­ne­ment moins bien si je prends tout de zéro, mais ce ne sera pas ma diffi­culté prin­ci­pale. Les liai­sons directes entre vue et modèle ne me semblent pas non plus forcé­ment indis­pen­sable, ça peut même être contre­pro­duc­tif vue la perte de perfor­mance.

    Par contre j’ai besoin de quelque chose pour gérer le côté appli­ca­tif :

    1. M’abs­traire des diffé­rentes solu­tions de stockage client, si possible en gérant les quotas, en ayant un méca­nisme quand on se rend compte que ce stockage a été écrasé et néces­site d’être recréé, etc. Dans l’idéal quelque chose qui ne se contente pas d’être un simple wrap­per et qui sait faire la diffé­rence entre des préfé­rences et de gros conte­nus par exemple, en me propo­sant des solu­tions diffé­rentes pour les deux cas en fonc­tion de ce qui est dispo­nible sur le navi­ga­teur (on n’uti­lise pas les API File et le local storage dans les mêmes contextes)
    2. Avoir en ligne de vue le fonc­tion­ne­ment hors ligne, avec un vrai méca­nisme de mise à jour de l’ap­pli­ca­tion, un vrai méca­nisme de mise à jour des données (synchro­ni­ser dans les deux sens, un premier méca­nisme de conflit ou de prio­ri­sa­tion en cas de conflit), des notions de « à exécu­ter plus tard une fois en ligne », etc. La ques­tion du login est aussi impor­tante (jeton tempo­raire ou perma­nent, quelle sécu­rité, etc.)
    3. Un méca­nisme complet de gestion des URL à base de popS­tate et pushS­tate de façon à ne pas avoir qu’un seul lien vers la page d’ac­cueil mais pouvoir gérer le bouton retour arrière du navi­ga­teur, les favo­ris, les liens entrants, etc. Bref, si je regarde un contenu parti­cu­lier je dois avoir une URL spéci­fique, que je peux copier, trans­mettre, utili­ser. Et par pitié oubliez les #!. C’est aussi plus diffi­cile qu’il n’y parait dès qu’on fait inter­agir ça avec le mode offline.
    4. * Une gestion de base pour les conte­nus. Si on stocke hors ligne, j’ai­me­rai avoir à jouer le moins possible moi-même avec les data:uri, et pouvoir réfé­ren­cer des images ou des conte­nus dans mes vues, à partir de choses stockées hors ligne dans un local­sto­rage, indexdb ou équi­valent
    5. C’est annexe et peut être non relié, mais si possible un jeu de widget ou templates par défaut qui s’adaptent aux diffé­rents contextes de navi­ga­tion (android, ios, win8, la manière dont on présente les listes, les menus, les retours arrière, ne sont pas les mêmes)

    Vous avez quoi pour gérer ces aspects parti­cu­liers ? Parce que pour dessi­ner des pages à partir de modèles et vues OK, mais pour gérer une appli­ca­tion j’ai l’im­pres­sion d’être sans rien.

    Oh, et en plus vu qu’il s’agit d’être multi-device, je ne souhaite pas quelque chose qui rame sur smart­phone. Par contre j’ac­cepte de coder beau­coup de choses à la main, je ne cherche pas forcé­ment un truc qui fasse le café. Même 4 ou 5 petites lib qui s’oc­cupent de leur partie spéci­fique, ça me va.

  • Char­pen­tier infor­ma­tique

    Inter­vie­wer: So, you’re a carpen­ter, are you?
    Carpen­ter: That’s right, that’s what I do.

    […]

    Inter­vie­wer: First of all, we’re working in a subdi­vi­sion buil­ding a lot of brown houses. Have you built a lot of brown houses before?
    Carpen­ter: Well, I’m a carpen­ter, so I build houses, and people pretty much paint them the way they want.

    […]

    Carpen­ter: Really, is that it? So I lost the job because I didn’t have enough brown?
    Inter­vie­wer: Well, it was partly that, but partly we got the other fellow a lot chea­per.
    Carpen­ter: Really — how much expe­rience does he have?
    Inter­vie­wer: Well, he’s not really a carpen­ter, he’s a car sales­man — but he’s sold a lot of brown cars and he’s worked with walnut inter­iors.

    Ça me rappelle forte­ment une direc­tion qui à un moment pensait qu’il fallait segmen­ter les déve­lop­peur par domaine commer­cial, et que la valeur ajou­tée était moins dans la qualité tech­nique ou le recul du déve­lop­peur que dans le fait qu’il ait déjà travaillé dans le secteur de l’éner­gie (même si c’est pour coder un CMS ou un outil de réser­va­tion de salles de réunion) ou dans l’in­dus­trie du luxe (même si c’est pour coder un formu­laire d’ins­crip­tion à une news­let­ter).

    La petite histoire reste une petite fable forgée de toutes pièces, mais elle est amusante à lire, et parfois se révèle un peu trop proche de la vérité.

  • Tester, docu­men­ter et débo­guer une API REST

    Je découvre apiary.io. Il y a de quoi docu­men­ter, tester et débo­guer une API REST, avec des mocks et des proxy de débo­guage.

    Je ne sais pas si la valeur ajou­tée est suffi­sante pour imagi­ner utili­ser un service de ce type mais c’est bien foutu, simple, et assez clair. Je n’ai simple­ment pas compris quel est le modèle busi­ness (et ça c’est un gros point noir).

    Bref, à surveiller, le compte de test peut être créé en quelques secondes à partir d’un compte github.

  • Apprendre EPUB gratui­te­ment avec O’Reilly

    C’est peut être vieux mais aujourd’­hui je remarque que les titres « What is EPUB 3« , « Acces­sible EPUB 3 » et « HTML 5 for publi­shers » sont gratuits chez O’Reilly, en EPUB et PDF.

    Si la concep­tion de livres numé­riques vous inté­resse, ce serait dommage de se priver.

    Pour ceux qui sont un peu plus marke­ting, il y a aussi « The Global eBook Market: Current Condi­tions & Future Projec­tions » mais qui date un peu (octobre 2011)

  • Writing Web Apps Quickly With Mortar

    Les webapps sont pour moi défi­ni­ti­ve­ment la direc­tion vers laquelle aller. Mozilla pousse beau­coup via Fire­fox OS. Pour jouer avec eux, jetez un oeil à Mortar, qui permet d’ini­tia­li­ser tout le néces­saire. Il y a un joli billet de hacks.mozilla.org qui peut vous permettre de démar­rer.

  • Liga­tures privées et rempla­ce­ment de textes

    Pendant quelques années nous avons cher­ché le saint Graal pour rempla­cer du texte par des images dans les pages HTML. Il y a eu sIFR qui néces­si­tait le plugin Flash, des bidouilles à base d’in­den­ta­tion et marges CSS néga­tives qui risquaient de casser pour ceux qui n’af­fi­chaient pas les images, des trucs horribles à base de display:none qui empê­chaient le copier/coller, etc.

    J’avais pas mal laissé tombé quand j’ai vu que certains jouaient avec des polices de carac­tères à la wing­dings. Ça ne faisait pas de rempla­ce­ment et ça néces­si­tait d’ajou­ter des carac­tères arbi­traires qui risquaient de mal passer en cas d’ab­sence de la police choi­sie.

    Sauf que visi­ble­ment ils ont trouvé le saint Graal il y a un bon moment et personne ne m’a prévenu. Alors si vous aussi on ne vous a pas prévenu, regar­dez Symbol­set et Liga­ture Symbols.

    L’idée c’est d’uti­li­ser les liga­tures. Les liga­tures ce sont ces arte­facts qui permettent de rempla­cer certaines suites de carac­tères par un visuel spéci­fique afin d’en simpli­fier la lecture. On cite souvent « fl » et fi » comme exemple de liga­ture mais Wiki­pe­dia a une superbe illus­tra­tion.

    L’as­tuce est de décla­rer une police person­na­li­sée où « se connec­ter » est remplacé par une liga­ture qui contient l’icône corres­pon­dante. C’est vecto­riel, ça s’adapte en taille comme en couleur, ça se dégrade parfai­te­ment pour ceux qui ne savent pas relire la liga­ture ou la police de carac­tères, et pour le système ça reste encore le mot « se connec­ter » donc c’est tota­le­ment trans­pa­rent. Bref, comme en plus c’est léger en poids, on a presque trouvé le saint Graal. Pourquoi personne ne m’avais rien dit ? Comment ai-je pu passer à côté ?

    Vous avez même un outil en ligne qui fait tout ça : Icomoon

  • Quelques liens javas­cript

    Partagé sans commen­taires, mais vous pouvez faire les vôtres :

  • If-less program­ming

    Et si les « if » dans nos programmes infor­ma­tiques étaient une mauvaise pratique ?

    Je donne le lien sans trop de commen­taires car je ne sais qu’en penser, mais ça m’in­ter­pelle quand même. Effec­ti­ve­ment, les codes dont je suis le moins fier comportent beau­coup de condi­tions, et inver­se­ment. Je ne crois pas que le if soit mauvais en soi, mais ça vaut peut être le coup d’y regar­der de plus près comme un indi­ca­teur de mauvaise archi­tec­ture.

  • Quelques stages pour 2013

    J’avais relayé quelques offres de recru­te­ment ici par le passé. Je vous propose de regar­der quelques possi­bi­li­tés de stages. L’idée c’est de travailler sur des sujets sympa, dans une équipe qui l’est tout autant.

    Il y a un peu de tout, mais l’es­sen­tiel est bien sûr de l’in­no­va­tion et des sujets que vous n’au­rez pas forcé­ment ailleurs. Par contre s’il y a pas mal de sujets, nous n’ou­vri­rons que deux postes, afin de gérer correc­te­ment le volet enca­dre­ment et forma­tion.

    L’en­vi­ron­ne­ment c’est une star­tup sympa, avec un vrai projet, de l’in­no­va­tion, et une vision « ouverte » au coeur de son ADN. Pour ne rien gâcher c’est à Lyon et pas dans la grisaille pari­sienne.