Journal De tout, de rien, des bookmarks, du bla bla #41

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
47
11
oct.
2012

Sommaire

Introduction

Bon, j’ai zappé encore une fois quelques numéros, mais c’était, entre autres, parce que j’ai créé Sleipnir, et ça m’a pris un peu de temps. Et je sais que vous l’attendiez tous impatiemment !

Pour cette fois, comme d’habitude, pas mal de dev’ Web, surtout autour de JavaScript.

Allez, assez de bla bla, place aux liens.

Un peu de contenu

Développement

Tout d’abord, une n‐ième surcouche à JavaSript, cette fois‐ci, en provenance Mozilla, Sweet.js. Je ne l’ai pas encore testée, mais je n’ai pas vraiment saisi l’intérêt. L’un d’entre vous a‐t‐il déjà essayé ?

Encore en lien avec Mozilla, voici LLJS. Il s’agit, d’après la doc, d’une surcouche à JavaScript orientée bas niveau, avec un système de typage à la C et une gestion manuelle de la mémoire. Idem, je ne sais pas quel est vraiment le but recherché, c’est intéressant sur le principe, mais je vois pas bien l’intérêt. En revanche, ça peut être assez marrant, et il serait intéressant de voir si l’absence de ramasse‐miettes peut avoir un intérêt quelconque (performances, par exemple).

Bon, je ne parlerai pas vraiment de TypeScript, allez juste un petit peu. Beaucoup de personnes l’ont comparé à Dart. Mais je pense que ce n’est comparable qu’en apparence. TypeScript tente de corriger des problèmes du genre typage, modèle objet. Le but est, il me semble, d’avoir un langage plus robuste, le plus propre pour aider au développement, et ensuite de l’exécuter une fois compilé en JavaScript. Dart part d’un tout autre constat : on s’approche des limites d’optimisation de JavaScript. En gros, par conception, JavaScript est complexe à optimiser et chaque amélioration coûte assez cher. L’objectif est donc de remplacer JavaScript par un langage qui peut être mieux optimisé, qui, par conception, pourra mieux répondre aux attentes de performances. Évidemment, le tout en améliorant le langage, mais sans non plus tout changer. En attendant, Dart peut tout de même être compilé en JavaScript, ce qui, pour le coup, les met un peu à égalité dans les faits.

Toujours en parlant de Dart, voici des conventions d’organisation de paquets. Même si les choses s’améliorent, c’est un point qui est souvent négligé dans le Web. Probablement parce qu’initialement il n’y avait pas besoin d’empaqueter grand chose. Mais maintenant que tout (ou presque) passe par des préprocesseurs ou compilateurs (que ce soit les feuilles de style, les modèles, les Dart, TypeScript, CoffeeScript…) les choses deviennent un peu plus complexes. Avoir une bonne structure à ce niveau est plutôt intéressant.

Et en parlant de CoffeeScript, v’la t’y pas que Dropbox migre sous Coffee pour son code client. Un retour d’expérience plutôt intéressant, sur un ensemble de code de taille correcte (environ 20 000 lignes). Je vous laisse aller voir leurs arguments et quelques exemples, mais ce qui est clair, c’est qu’ils sont plutôt tombés sous le charme. D’ailleurs, tout le nouveau code est en Coffee.

Pour rester un peu dans le Web, je ne sais pas si vous avez vu passer les nouvelles en provenance du W3C : après avoir fait de HTML 5 une version « rolling release », puis séparé HTML 5 en HTML 5 et HTML 5 (bon OK, un truc plutôt stable et un truc plutôt mobile), voici qu’ils planifient HTML 5.1. Franchement, j’ai un peu de mal à voir l’intérêt. On va en fait revenir à la même situation qu’avant, les navigateurs qui supportent des versions différentes, et un bordel sans nom pour gérer ça. Et je ne parle même pas du fait d’utiliser rapidement des nouveautés…

Je ne rentre pas dans le détail, mais voici une plutôt bonne explication des websockets.

Et également une présentation de la boucle d’évènement de node.js. Plutôt intéressant, si vous voulez vous y mettre, ou juste par curiosité.

Avant de clore la partie développement, voici un lien particulièrement instructif. Il s’agit d’un article sur le fait d’écrire de meilleures bibliothèques JavaScript. L’article commence, à raison, sur le fait qu’on passe beaucoup plus de temps à utiliser une bibliothèque qu’à l’écrire. S’il y a des choses plutôt intéressantes, je suis plutôt mitigé concernant certains points. Un exemple parmi d’autres : Generating accessors. Je vois bien leur problème de duplication de code, mais je trouve que l’usage de générateurs est quelque chose qu’il est souvent (pas forcément tout le temps) préférable d’éviter. Déjà, on commence à s’approcher de la méta‐programmation, et ce n’est malheureusement pas ce que beaucoup de développeurs (à tort) connaissent et utilisent. Ensuite, je trouve que la lecture du code de la bibliothèque en est très fortement perturbée. On ne voit plus vraiment les méthodes existantes, et ça en termes de maintenance, c’est plutôt mauvais. La documentation est également tout de suite plus complexe à réaliser (et pourtant, pour une bibliothèque, c’est quand même super important). En fait, j’utilise les principes de générateurs dans un tout autre contexte, qui, je trouve, est beaucoup plus pertinent : les méthodes cross navigateurs. Typiquement, les méthodes de gestion d’évènements. Beaucoup de méthodes du genre sont bourrées de tests, pour savoir si l’on a attachEvent ou addEventListener. Pour le coup, il est vraiment intéressant de créer, à l’exécution, la bonne méthode. L’avantage étant que le code exécuté sera plus simple, plus performant, car supprimant pas mal de tests. Juste pour représenter ce que je dis (grossièrement). En général, on a :

myCoolApi.addEvent = function(target, eventType, ...) {
  if ("attachEvent" in window) {
    // bla bla bla
  } else if ("addEventListener" in window) {
    // bla bla bla
  } else {
    throw new Error("unsupported")
  }
}

alors qu’on pourrait pour le coup avoir :

myCoolApi.addEvent = (function() {
  if ("attachEvent" in window) {
    return function(target, eventType, ...) {
      // do the ms way
    };
  } else if ("addEventListener" in window) {
    return function(target, eventType, ...) {
      // do the right way
    };
  } else {
    return function() {
      throw new Error("unsupported");
    }
  }
}()

Je trouve ça relativement clair, tout en étant meilleur à l’exécution. Et vous, vous en pensez quoi ?

Et pour terminer, je vous laisse sur une vidéo bien cool, présentant quelques subtilités de Ruby et JavaScript.

Misc

Voici une « petite » analyse très sympa sur les codes PIN. Allez vraiment la voir, ça pourra répondre par exemple à la question « pourquoi 2580 est en 22e position des codes les plus utilisés, alors que sur votre clavier ça ne ressemble pas à grand chose ? ».

Je me suis mis récemment à irssi (en fait, je suis même passé sous i3 mais c’est encore une autre histoire). Et de mes recherches, voici deux liens qui peuvent vous intéresser. Tout d’abord un thème sympa, solarized. Normal qu’avec ma CSS LinuxFr.org, je l’utilise. ;) Ensuite, voici un article sur l’utilisation de irssi et screen. Je ne l’ai pas encore complètement lu, mais il semble plutôt complet et intéressant.

Et vous, avez‐vous des ressources, astuces, etc., pour un débutant sous irssi (ou sous i3, d’ailleurs) ?

Graphisme & co

Si vous vous demandez quels sont les principes derrière l’interface de Firefox OS, en voici une présentation.

Un peu de graphisme dans ce monde de brutes ! Voici une série de logos plutôt intéressants par leur utilisation de l’espace négatif. On y pense malheureusement peu souvent, c’est pas toujours évident à manier mais c’est plutôt agréable et permet d’avoir des logos à deux lectures.

Liste des liens présentés

Introduction

Développement

Misc

Graphisme & co

  • # Cooooommmm

    Posté par  (site web personnel) . Évalué à 6. Dernière modification le 11 octobre 2012 à 16:10.

    Pas beaucoup de commentaires, mais j’imagine que tout le monde est comme moi : en train de lire les liens que tu as postés, qui sont ultra intéressants (et y en a pour la journée) !

    • [^] # Re: Cooooommmm

      Posté par  (site web personnel) . Évalué à 3.

      et y en a pour la journée

      ça c'est pour ne pas perdre le rythme avec les dépêches kernel ;)

      sinon, merci :)

  • # Merci pour les liens

    Posté par  (site web personnel) . Évalué à 8.

    Et surtout merci pour le lien vers l'étude des code PIN, le blog tout entier est une mine d'information diverses de vulgarisation sur l'algorithmique, le datamining, les probabilités, les jeux…

  • # de tout de rien un commentaire parce que l'auteur le vaut bien deux fois plutôt qu'une

    Posté par  . Évalué à 1.

    super news comme d'hab. Particulièrement l'article sur les pins.

    Après, il me semble évident que la syntaxe que tu utilises pour ton évènement est plus propre, sans être beaucoup plus compliqué.
    Bref, un juste milieu ?
    Fallait il vraiment te le confirmer ;)

    Au sujet de l'article que tu pointes sur les générateurs en JS.
    Euh comment dire.
    Si on me livre ça je me pose un tas de questions, mais la première sera inévitablement, qu'est ce que tas d'immondices (ou plutôt en français dans le texte, mais qu'est que c'est que ce bordel… ?) pour accéder à une propriété name (cf dernier exemple avec le flexible machinchose).
    Bref, c'est probablement utile à une certaine catégorie d'humain, sauf moi, clairement.
    Je dois être complètement insensible aux exemples utilisés, ou bien ils sont très mal choisi.
    A chercher la petite bête je me demande pourquoi le premier exemple sur les dates n'est pas ré écrit avec un générateur.
    Peut être que ça fail leur démo pas convaincante à dryifer le code.

    Cependant, le sujet initial du texte est plus qu'utile et intéressant.

    • [^] # Re: de tout de rien un commentaire parce que l'auteur le vaut bien deux fois plutôt qu'une

      Posté par  (site web personnel) . Évalué à 3.

      Fallait il vraiment te le confirmer ;)

      La question portait surtout sur l'article et non sur mon code :)
      Mais vu que tu y répond juste derrière, c'est parfait.

      Si j'ai mis le lien vers cet article, c'est justement que je trouve qu'il n'est pas génial, alors que je l'ai vu cité à plusieurs endroits.
      En fait j'ai du mal à comprendre comment on peut écrire des choses comme ça et dire que c'est bien…

  • # Logo espace négatif

    Posté par  (site web personnel) . Évalué à 3.

    On en voit un assez souvent, le logo d'une grande surface relativement connue

    • [^] # Re: Logo espace négatif

      Posté par  (site web personnel) . Évalué à 2.

      Trop franco-français (l'auteur de l'article est québécois, il n'a sans doute jamais entendu parlé de la marque dont tu parles, on a tellement l'habitude de voir "nos" marques qu'on en oublierait que certes sont inconnues en dehors de la France)

      • [^] # Re: Logo espace négatif

        Posté par  (Mastodon) . Évalué à 2.

        Pour le coup, la marque en question est présente dans une bonne partie du monde (Amérique du Sud, Asie, Europe du sud) mais pas au Québec.

      • [^] # Re: Logo espace négatif

        Posté par  . Évalué à 4.

        C'est surtout qu'elle n'a pas de double lecture ; dans le lien c'est soit la première lettre de la marque mélangée à sa signification, soit les deux mots formant la marque qui sont mélangés.
        Dans notre cas, le C est visible en négatif, mais sans ça les deux formes ne représentent rien.

        En tout cas chapeau aux graphistes, c'est plaisant de rechercher les différentes lectures.

  • # irssi

    Posté par  (site web personnel) . Évalué à 3.

    Sérieusement ? Tu ne connaissais pas irssi ?

    Contrairement à xmpp qui prône visiblement la présence intermittente sur la messagerie instantanée (pour celui à qui on s'adresse visiblement…), d'où la notion de gestion de présence, omniprésente à xmpp, sans doute parce qu'il y a tant d'abonnés absents… Donc, contrairement à xmpp, irssi c'est la possibilité de gérer sa présence permanente sur les canaux de communication :

    • peu consommateur
    • facilité de backlog
    • notification facile
    • couplé à une connexion permanente (que tout le monde peut avoir à peu de frais)
    • avec l'indispensable screen, permettant de retrouver sa connexion par de multiples clients (ssh suffit : putty, ssh, Irssi ConnectBot…)

    bon, j'ai un mémento d'irssi vu que je passe mon temps à perdre ma conf' à chaque déconnexion (tous les 1 an et 1/2 quoi). En prime, les commandes pour gérer un canal via ChanServ et comment dialoguer avec son pote NickServ :)

    • [^] # Re: irssi

      Posté par  (site web personnel) . Évalué à 2.

      Ha mais je connais très bien irc (je pense que le début de ton message mélange un poil les deux)
      D'ailleurs je l'utilisais initialement pour papotter de calculatrices hp (le bon vieux temps) et sur #mandrakefr à l'époque ;)

      Merci pour le lien, je vais regarder ça.

      C'est vrai que je devrais mettre un screen, mais pour le moment j'ai une utilisation plutôt basique d'irc (juste un chan "interne" à ma boite) donc juste durant les heures de boulot :)

      • [^] # Re: irssi

        Posté par  (site web personnel) . Évalué à 3.

        je ne mélange pas irssi et irc, c'est screen + irssi qui permet d'être présent en permanence (tant qu'on n'a pas de reboot du serveur), suffit de backlogguer et on peut se connecter avec son fixe, son portable, son mobile, au pire avec un putty en environnement hostile…

        • [^] # Re: irssi

          Posté par  (site web personnel) . Évalué à 2.

          ok, en fait c'était surtout la comparaison xmpp (protocole) / irssi (client) qui m'a induit en erreur…

    • [^] # Re: irssi

      Posté par  (site web personnel) . Évalué à 3.

      d'ailleurs, à propos d'irssi :

      • quels plugins intéressants ?
        • par exemple pour des notifications osd
      • quels thèmes intéressants ?
      • tips divers et variés
      • [^] # Re: irssi

        Posté par  (site web personnel) . Évalué à 2.

        greffons : éventuellement un greffon pour psyc, ça permet a priori de récupérer du xmpp…

        des notifications osd : suffit de garder un terminal avec le ssh ouvert sur un des bureaux, quand on se fait HL sur un chan, il apparaît en couleur. Comme je me connecte en ssh à un serveur, je n'ai pas regardé ce qui pourrait être remonté sur le bureau autrement :)

        des thèmes ? doit bien yavoir possibilité d'avoir des couleurs pour les pseudos, je n'en ai pas vraiment l'utilité

        autres tips : jouer avec le fichier de config et sinon tout est dans http://www.irssi.org/documentation/
        Ce qui me sert : alt-shift + touche 5 va à l'onglet 5 (ça fonctionne jusque 9 et a priori alt + qwerty fonctionnerait aussi si les bindings de menu gnome-terminal ne les interceptaient pas :/).

        • [^] # Re: irssi

          Posté par  (site web personnel) . Évalué à 3.

          côté notif ça ne passe pas chez moi car j'ai juste un i3, et surtout aucun endroit où une fenêtre peut "notifier" une activité (pas de barre des tâches, pas de changement de couleur des fenêtres, etc)

          c'est vrai qu'il faudrait que je me farcisse la doc, ça serait plus efficace :)

    • [^] # Re: irssi

      Posté par  (site web personnel) . Évalué à 2.

      Par contre, ça ne vaut pas une bonne tribune!

      Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.