Journal De tout, de rien, des bookmarks, du bla bla 42

Posté par (page perso) . Licence CC by-sa
22
18
oct.
2013

Sommaire

Pfiou, ça fait longtemps que je n'avais pas repris ma veille. Et en plus vous verrez il n'y a pas des tonnes de lien mais bon, spa grave. En cause, changement (encore) de boulot, boulot loin de chez moi et pas de net (ni vraiment de réseau) là où je vis, des vacances assez loin du net aussi, etc. Bref, je reprend tranquillement.

Pendant ce temps, j'apprends Ada et Clojure, ça ouvre petit à petit de nouveaux horizons et probablement de nouveaux types de liens pour les prochaines fois. A ce propos, et surtout si vous avez l'habitude de coder avec des langages classiques, je vous conseil de tester ces langages. Ada est assez particulier mais vraiment puissant, par exemple concernant tout ce qui est exécution concurrente c'est vraiment bien fait. Clojure, c'est pas mal, moi qui n'avait jamais fait de fonctionnel ça change vraiment.

Un peu de contenu

Développement

Voici un livre qui, si j'ai bien compris, est un grand classique de l'enseignement de l'informatique aux USA, au MIT notamment : « Structure and Interpretation of Computer Programs ». Je pense que c'est un livre que je vais lire bientôt. On m'en a dit pas mal de bien. L'avez-vous lu ? Si oui, quelqu'un peu en faire une critique ?

De manière plus informative, voici un document retraçant l'histoire de Smalltalk.

Souvent lorsque quelqu'un se lance dans du développement javascript, l'une des difficultés recontrée est que ce n'est pas un langage à classe, comme beaucoup d'autres, mais un langage à prototype. Voici un article (de plus) présentant ce principe : « How Javascript Prototype Really Works » qui pourra peut-être aider un peu plus les nouveaux développeurs javascript.

Lorsqu'on est développeur, on a souvent besoin d'avoir accès à de la documentation. Mais par contre, cela nécessite d'avoir un navigateur, de changer d'outil, souvent quitter son éditeur de texte. Et la recherche n'est pas toujours facile, pratique. Dash est une application (pour mac uniquement malheureusement) qui regroupe en un même endroit de très nombreuses documentations de programmation. Et elle se lie à différents éditeurs, ou même permet de réaliser une recherche basée sur la sélection courante, depuis un raccourcis clavier, ce qui permet de ne pas quitter son éditeur pour chercher la documentation. Plutôt pratique, je ne sais pas si des équivalents existent sous linux, mais si ce n'est pas le cas ça serait une bonne idée je pense.

Si vous souhaitez vous mettre à Clojure, voici un lien regroupant de nombreuses ressources sur le langage : Learn Clojure. Et pour s'entrainer à Clojure, vous pouvez aussi regarder du côté de Labrepl. Il s'agit d'un environnement permettant d'explorer le langage entre autre en présentant des exercices étapes par étapes. C'est plutôt sympa, et c'est open source sous Eclipse Public License 1.0.

Misc

Il existe de très nombreux logiciels de gestion de calendrier, permettant de représenter par exemple divers projets et les personnes travaillant dessus. Il existe aussi beaucoup de moyens plus physiques, par exemple à base de postits, tableaux, etc. Mais histoire de varier un peu, voici le résultat du travail d'un studio londonien, Vitamins : le Lego Calendar. Je ne sais pas si c'est réellement pratique et utilisable, mais j'adore l'idée ! Par certains côtés ça me fait penser aussi aux carnets moleskine qui intègrent une brique lego dans la couverture.

Graphisme, design & co

Si vous aimez la typographie, voici quelques illustrations vraiment sympa. J'aime particulièrement les rouges, où les lettres sont rendues visibles par leur absence.

Quelle est la taille d'un écran ? Taille en px, taille physique ? Sur un iPhone, sur un Galaxy SIII, sur MacBook Pro, etc ? Screen Siz.es vous présente de manière assez lisible l'ensemble des informations de taille d'écran de la majorité des produits du marché. Vraiment pratique pour faire un design propre en fonction des produits ciblés.

Je pense que vous l'avez probablement tous déjà vu, mais c'est toujours un bon moment :-) « Mon maçon était illustrateur »

Voici un projet graphique vraiment sympa : The Zoomquilt. C'est un mélange entre un dessin (une peinture ?) et une animation qui nous plonge réellement au cœur du projet. Allez bien jusqu'au bout si on peut dire ;-)

Liste des liens présentés

Développement

Misc

Graphisme, design & co

  • # Commentaire supprimé

    Posté par . Évalué à 10.

    Ce commentaire a été supprimé par l'équipe de modération.

    • [^] # Re: Lisp

      Posté par (page perso) . Évalué à 3. Dernière modification le 18/10/13 à 10:59.

      J'ai commencé à lire le livre "Land of Lisp". Il traite de l'usage de Lisp en général en proposant de créer différents jeux. C'est orienté pratique, tout peut se faire dans un REPL en construisant le jeu petit à petit. La différence avec les autres bouquins sur le sujet, c'est que l'auteur présente les concepts avec des exemples et un humour pas mal déjanté.

      Rien que pour les illustrations, je vous le conseille ! D'ailleurs la bande dessinée du site vaut clairement le détour, et vous pouvez lire gratuitement le chapitre 8 pour vous faire une idée de la folie de l'auteur :)

      Edit : Les exemples sont en Common Lisp

      • [^] # Commentaire supprimé

        Posté par . Évalué à 3.

        Ce commentaire a été supprimé par l'équipe de modération.

        • [^] # Re: Lisp

          Posté par (page perso) . Évalué à 2.

          Ah non, je suis pas d'accord. J'ai eu cette impression avec le guide de Why mais pas du tout avec Land of Lisp. D'ailleurs c'est pas le même public qui est cible.
          Regarde le chapitre gratuit, le coté délirant est une façon de donner un contexte au jeu à développer et illustrer certains concepts du langage. Même sans les illustrations ça reste un bouquin technique intéressant.
          Et surtout il est vraiment orienté pratique, là où les autres livres que j'ai lu sur le sujet était plutôt centrés sur la théorie.

    • [^] # Re: Lisp

      Posté par . Évalué à 5.

      C'est pas vraiment une introduction au lisp. C'est plus une introduction aux langages en général et ca prend le lisp comme exemple parce que c'est plus simple pour expliquer vu que la structure d'ast est directement visible.
      Moi j'ai trouvé ca intéressant comme livre, mais faut aimer lire de la théorie sur l'informatique.
      Sinon pour les livres sur lisp, moi je conseille Practical common lisp de Peter Seibel.

      • [^] # Commentaire supprimé

        Posté par . Évalué à 1.

        Ce commentaire a été supprimé par l'équipe de modération.

        • [^] # Re: Lisp

          Posté par . Évalué à 4.

          Extrait du livre:

          If Lisp is not a mainstream language, why are we using it as the framework for our discussion of
          programming? Because the language possesses unique features that make it an excellent medium for
          studying important programming constructs and data structures and for relating them to the linguistic
          features that support them.

          Ce qu'on peut traduire par:

          Si lisp n'est pas un langage très répandu, pourquoi s'en servir comme base pour notre exposé sur la programmation? Parce que ce langage possède des propriétés uniques qui font qu'il est un excellent support pour étuder les constructions de programmation importante et les structures de données et pour les mettre en relation avec les capacités linguistique qui les soutiennent.

          Donc c'est vrai que ca parle que de lisp dans le bouquin, mais à la fin tu sais pas programmer en lisp (comme tu l'as dis on voit pas les macros ou CLOS), par contre tu sais ce qu'est un REPL ce que tu retrouves dans tout langage interpreéé et dans une certaine mesure dans les langages compilés. Et pour moi, c'est le but du livre, de comprendre le REPL.

          Après ca fait longtemps que je l'ai lu, donc j'ai peut être oublié des bouts mais je rapproche plus ca à un bouquin théorique comme un bouquin d'algorithmique en C pourrait l'être que à un bouquin d'apprentissage du lisp.

    • [^] # Re: Lisp

      Posté par . Évalué à 1.

      Tiens, c'est marrant je viens juste d'acheter (d'occasion) la version française du SICP, qui s'appelle "Structure et Interprétation des programmes informatiques". Trop tôt pour en faire une revue, je n'en suis qu'au début. J'ai aussi le Land of Lisp, ainsi que 2 livres universitaires: Débuter la programmation avec Scheme de JC Routier et E. Wegrzynowski; et aussi le Premier cours de programmation avec Scheme de JP Roy ( revue du livre sur linuxfr )
      Pour le SICP, tu peux trouver les solutions ici ou ici. Et les vidéos associés (avec transcripts texte du cours) ici.

  • # Clojure

    Posté par (page perso) . Évalué à 3. Dernière modification le 18/10/13 à 11:25.

    Pour mettre le pied à l'étrier (installer un environnement, créer un premier projet, tout câbler, utiliser le REPL, exécuter/ tester, compiler, chercher de la doc, etc.) il y a mon journal Clojurer des regexps avec Java, en Lisp :).

  • # Qt Assistant

    Posté par . Évalué à 1. Dernière modification le 18/10/13 à 13:41.

    Bonjour, le logiciel Dash me fait sérieusement penser à Qt Assistant.
    Il est tout a fait possible de lancer Qt Assistant avec des documentations autre que celles de Qt.
    Pour cela il suffit de générer les documentations au bon format (si les documentations sont basées sur doxygen ou sphinx c'est direct). Pour un simple "browser" de documentation il n'y a aucune difficulté technique, mais ça prend du temps à faire : téléchargement des sources de la doc, installation/config des plugins nécessaires, compilation doxygen/sphinx, …
    Après il semblerait que Dash propose des fonctionnalités supplémentaires, pour ces points je n'ai pas d'équivalent pour l'instant.

  • # Clojure & Scala

    Posté par . Évalué à 3.

    J'entends beaucoup parler de Clojure ces derniers temps. Qu'apporte il fasse à Scala ? (vice versa)

    De ce que je crois comprendre Clojure est fonctionnel alors que Scala est multi-paradigme, fonctionnel/objet, mais à part ça ?

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Clojure & Scala

      Posté par . Évalué à 3.

      J'ai utilisé les 2 langages à titre personnel et j'ai préféré utiliser clojure.
      Ce que j'ai préféré :

      • un développement centré autour de la repl.
      • la communauté clojure d'un excellent niveau (et moins académique que celle de scala).
      • code très lisible et simple.
        • lisible grâce à sa syntaxe lisp boosté aux accolade et dé constructeurs
        • simple car la communauté est très branché anti objet (c'est à dire pas d'état interne mutable indépendant des uns des autres), ce qui se traduit dans le code par des deftype + prototype (histoire d'avoir du polymorphisme convenable) ou par le passage dans chaque fonction d'une variable agissant en tant que contexte.

      Autre différence notable :

      • Les séquences sont paresseuse ce qui permet de chaîne un maximum de fonctions traversant la séquence sans avoir a utiliser un "if (condition) { break my-loop }".
      • Clojure à clojurescript qui est production ready.
      • Scala possède un mot clés implicit qui permet de rajouter une méthode polymorphe à une classe que ne la possède pas et dont vous ne maîtriser pas la définition monkey patching.
      • Scala a probablement un typage plus poussé que typed clojure.

      On peut remarqué que je n'ai fait aucunes référence au parallélisme et à la concurrence, je me concentre uniquement sur mon expérience de développement sur des projets 1000 entre 2000 lignes.

      • [^] # Re: Clojure & Scala

        Posté par . Évalué à 2.

        Merci pour ta réponse sans troll (ou alors ça se voit pas).

        • un développement centré autour de la repl.

        J'ai jamais trop eu d'intérêt pour ça. À part pour expérimenter vraiment des choses simples.

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Clojure & Scala

          Posté par (page perso) . Évalué à 2.

          Je saurais pas trop expliquer précisément (je débute en clojure), mais repl je m'en sert tous les jours. C'est super pratique pour tester un code, une lib. Pouvoir exécuter directement ton code sans se prendre la tête, sans avoir à coder dans un fichier, sortir, lancer une compil, exécuter, voir le résultat, etc c'est cool.

          Et beaucoup de doc/tuto l'utilisent vraiment beaucoup.

        • [^] # Re: Clojure & Scala

          Posté par (page perso) . Évalué à 5.

          Certains langages te proposent de sauvegarder ta session REPL dans un binaire. Tu peux donc faire bien plus que des choses simples: tu codes, tu charges dans la REPL, tu corriges en patchant dynamiquement, et tu sauvegardes ta REPL. Pouf, t'as un binaire qui fait ce que tu veux.

        • [^] # Re: Clojure & Scala

          Posté par (page perso) . Évalué à 1.

          J'arrive un peu après la bataille, mais la REPL te permets de coder ton programme alors qu'il est déjà lancé. Tu peux alors faire de la compilation incrémentale et c'est super pratique!
          Voir ici et par exemple.

      • [^] # Re: Clojure & Scala

        Posté par (page perso) . Évalué à 1.

        D'ailleurs est-ce que t'as de l'expérience avec Clojurescript ?
        Le concept me plaît beaucoup, mais j'ai pas encore pris le temps de jouer avec.

  • # Dash, mais oui !

    Posté par . Évalué à 2. Dernière modification le 18/10/13 à 21:33.

    Alors là merci, tu documentes le petit secret que j'ai la flemme de documenter depuis que j'ai découvert ça il y a quelques semaines.

    Tu m'ôtes les mots de la bouche

    Lorsqu'on est développeur, on a souvent besoin d'avoir accès à de la documentation. Mais par contre, cela nécessite d'avoir un navigateur, de changer d'outil, souvent quitter son éditeur de texte. Et la recherche n'est pas toujours facile, pratique. Dash est une application (pour mac uniquement malheureusement) qui regroupe en un même endroit de très nombreuses documentations de programmation. Et elle se lie à différents éditeurs, ou même permet de réaliser une recherche basée sur la sélection courante, depuis un raccourcis clavier, ce qui permet de ne pas quitter son éditeur pour chercher la documentation. Plutôt pratique, je ne sais pas si des équivalents existent sous linux, mais si ce n'est pas le cas ça serait une bonne idée je pense.

    Je m'étais contenté d'écrire un petit mail à mon ancienne boite, où 2 religions (les pro-Apple et les anti-Apple) coexistaient de manière rigolote, en écrivant ceci.

    Pour rajouter de l'huile de le feu dans cette guère de religions, voici une petite application géniale et modeste nommée Dash.app (pour mac donc) qui devrait à mon avis réjouir les pro-Apple (en plus de leur être immensément utile) et rendre jaloux les anti-Apple (même si bien évidemment, on ne leur en voudra pas s'ils ne l'avouent pas explicitement. On ferait évidemment pareil à leur place :D )

    Dash

    Blague à part, Dash c'est exactement le genre de design que j'apprécie, à savoir quelqu'un qui s'est penché avec attention sur les réels problèmes qu'ont les gens (les développeurs en l'occurence). Par conséquent, extrêmement pratique.

    Allons plus loin dans la publicité gratuite

    Snippet manager (Don't Repeat Yourself)

    L'utilité de la fonction "accès trivial à la documentation là où on en a besoin quand on en a besoin" est évidente.

    Sauf que Dash est aussi, et c'est moins évident, un snippets manager très pratique.

    Pour les programmeurs évidemment. C'est clair que ça fait gagner du temps de taper
    singleton`
    plutôt que le boilerplate stupide qu'on est obligé de répéter à chaque fois.

    Mais même pour les non-développeurs, puisqu'il est tout à fait raisonnable quand on écrit beaucoup de mails de taper
    politesse`
    plutôt que de taper à chaque fois
    Je vous prie d'agréer, __Name__, l'expression de ma considération distinguée.

    Réduire le nombre d'onglets

    Avec un peu de chances, je vais bientôt terminer un article où entre autres je suggère de se limiter à maximum 15 onglets (et en général nettement moins).

    Bon, c'est quoi le secret quand on est habitués à surfer sur plein d'onglets à la fois pour perdre cette mauvaise habitude ?

    Et bien entre autres Dash : très souvent, vous avez autant d'onglets ouverts uniquement parce que l'information dont vous avez besoin est dispersée dans plein de pages. Donc mieux vous résoudre le problème à la source : créer une note correspondant au mini-projet que vous êtes en train de faire, extraire la substantifique moelle de chacun des onglets, les fermer. Goodby insanity.

    Ceci nécessite d'avoir une application légère et toujours ouverte, donc moi j'utilise Dash pour ça.

    Défauts connus de Dash :

    • il faudrait que les notes qu'on crée dans Dash soient au format Markdown par défaut, ça serait beaucoup plus pratique.

    Il faut que je m'occupe de remonter cette suggestion au développeur, très sympa puisu'il m'a filé les sources d'un de ses autres projets qu'il avait abandonné alors qu'on pouvait en faire quelque-chose de très bien, avec autorisation de faire ce que je veux avec. (un projet de plus à lancer…)

    • personne ne s'est occupé pour l'instant à ma connaissance de faire aussi bien en libre et sur d'autres plate-formes
  • # Equivalent de Dash pour Linux

    Posté par (page perso) . Évalué à 4.

    Il y a Zeal

    http://zealdocs.org/

    ça se compile avec QtCreator [http://qt-project.org/downloads]

    • [^] # Re: Equivalent de Dash pour Linux

      Posté par . Évalué à -5.

      Ah excellent ! J'adore quand on me démontre que mon opinion du moment est incorrecte :)

      la méthode scientifique

      Par contre, il n'y a pas encore les fonctionnalités secondaires mais extrêmement pratiques que j'évoquais plus haut, github est down right now, et je n'ai pas le courage de traduire ma prose. Donc si quelqu'un pense que ça a un intérêt d'envoyer des suggestions basées sur elle, il est chaleureusement invité à le faire.

Suivre le flux des commentaires

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