CrEv's blog

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - dart

Fil des billets

2012 oct. 11

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

Note : Comme d'habitude ce contenu est cross-posté sur linuxfr

Introduction

Bon, j'ai zapé encore une fois quelques numéros, mais c'était entre autre 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 nième surcouche à javascript. Cette fois ci en provenance mozilla, Sweet.js. Je ne l'ai pas encore testé 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, avec 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. Par contre, ça peut être assez marrant et il serait intéressant de voir si l'absence de garbage collector 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, 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 design, 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 design, pourra mieux répondre aux attentes de performances. Evidemment 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 mets un peu à égalité dans les faits.

Toujours en parlant de Dart, voici des conventions d'organisation de paquet. Même si les choses s'améliorent, c'est un point qui est souvent négligé dans le web. Probablement car 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 templates, 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 leur 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 allez voir leurs arguments et quelques exemples, mais ce qui est clair est qu'ils sont plutôt tombé 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 news en provenance du w3c : après avoir fait de html5 une version "rolling release", puis séparé html5 en html5 et html5 (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 meilleurs bibliothèques javascript. L'article commence, à raison, sur le fait qu'on passe beaucoup plus de temps à utiliser une bibliothèque qu'à l'écrire. Par contre, s'il y a des choses plutôt intéressantes, je suis mitigé par rapport à 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 c'est malheureusement pas ce que beaucoup de développeurs (à tord) 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 terme 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 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 :

javascript 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 :

javascript 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 22° 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 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, ... 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

2012 juil. 10

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

Introduction

Bon, je suis un peu en retard sur mon planing, mais c'est aussi car j'ai trouvé un peu moins de choses intéressantes ces derniers jour. Voici tout de même une petite compilation de liens de cette dernière semaine (et vous noterez que je n'ai même pas collé de troll dans l'introduction...).

edit : voici les épisodes précédents

Un peu de contenu

Développement

Histoire de commencer en douceur, voici une table unicode en site web. Ok, rien de bien nouveau dedans. Par contre, l'usage des caractères unicodes est de plus en plus utilisé dans le web car cela permet de remplacer pas mal d'icones et donc d'alléger les pages. Cela permet en outre de garder un côté vectoriel et stylable avec CSS, donc plutôt sympa.

Pour continuer avec un peu de "rien de bien nouveau", voici un article sur la programmation orientée aspect en PHP. Intéressant mais à creuser un peu plus. D'ailleurs l'article est plus sur de l'utilisation de reflexivité que réellement de la programmation par aspect.

Github continue d'avancer. Cette fois ils présentent un tutoriel git à utiliser dans votre navigateur. Une manière finalement assez sympa pour apprendre à utiliser cet outil.

Connaissez-vous git-flow ? Il s'agit de quelques extensions basées sur git permettant de facilité le travail en suivant un workflow assez intéressant. J'ai appris récemment qu'une variante existant pour mercurial, hg-flow. A noter que sourcetree permet d'utiliser ces deux outils directement depuis son interface (voir les notes de version).

Passons un instant du côté dart de la force (oui, je sais...) pour présenter ce port des classes crypto de Google Closure Library en dart.

Et restons chez Google (enfin presque) pour parler un peu de go. Voici en premier lieu un retour de cloudflare sur leur utilisation de go. Et ensuite une présentation de nono sur le monde merveilleux de Golang, présentation donnée au RMLL si je ne me trompe. Je n'y ait pas encore touché mais je trouve ça plutôt intéressant, et les différents articles (par exemple sur le blog d'af83 donnent envie d'essayer). Finalement peut-être un pont entre les langages classiques et bas niveaux tels que c/c++ et les langages plus haut niveaux comme python et ruby, tout en étant plus expressif que java. Bref ça me tente pas mal, mais j'ai déjà d'autres langages à (ré)apprendre donc ça passer après...

Pour clore cette partie développement un lien vers un livre blanc autour de la dette technique en informatique. Je n'ai pas encore eu le temps de le lire mais le début me semble intéressant. L'un d'entre vous l'a-t-il déjà lu ?

Misc

Mais que ce passe-t-il lorsqu'on exécute une recherche sur Google ? Cette infographie tente d'y répondre.

Graphisme & co

Si vous vous intéressez un peu à la typographie et au web, vous devez savoir qu'une des solution pour avoir une mise en page agréable est de se baser sur des grilles. Voici donc un petit outil fournissant des css de grilles a afficher dans vos pages, pour vous aider à les concevoir correctement.

D'ailleurs à ce propos il faudrait que je fasse un petit retour sur le livre webgrids que j'ai terminé et qui est plutôt intéressant.

Evidemment j'étais obligé de coller au moins une news sur les Lego ou quelque chose approchant. Donc voici une présentation sur le processus de design chez Lego.

Et pour rester dans les choses plutôt amusantes une petite vidéo qui vous expliquera comment réaliser une petite fusée à base d'allumette !

Liste des liens présentés

Développement

Misc

Graphisme & co

2012 juin 18

De tout, de rien, des liens, du dev

Pour bien commencer, rien de tel que CodeKit. Il s'agit juste une outil (éditeur ? IDE ?) orienté web, pas libre, sous mac. Parfait, pour mon bon public, non ?

Si vous avez étés déçus par le premier lien (mais je suis sur que ce n'est pas possible...) voici la sortie d'AngularJS 1.0. J'étais probablement à l'ouest ces derniers temps, mais je ne me souvenais pas que c'était passé chez Google. D'ailleurs j'ai pas tout compris, mon navigateur avait encore une partie du site en cache, de l'ancien site je veux dire. Ca faisait un mélange assez particulier.

Quoi qu'il en soit, j'ai commencé à m'y mettre ces derniers jours. Au début plus par curiosité qu'autre chose, et finalement j'ai trouvé ça plutôt bien. Assez simple d'utilisation, une documentation correcte, des possibilités intéressantes. Evidemment je suis tout de suite tombé dans des cas tordus : genre je veux exécuter une fonction JS lors de la compilation de la donnée, j'ai pas encore bien réussi à le faire malheureusement.

Pour l'histoire, le but est de recevoir une donnée en Markdown et de laisser le javascript l'afficher correctement. Pour ce faire j'utilise PageDown qui n'est ni plus ni moins que le js utilisé sur l'ensemble des sites Stack Exchange. Et ça fonctionne plutôt bien. Mais bon, c'est pas tout, faut que je me plonge dans AngularJS pour savoir comment appeler le formatteur au bon moment. Ca doit pas être si compliqué que ça, mais j'ai pas encore vraiment mis la main dessus.

Et une fois que mon applis ressemblera à quelque chose, je viendrai probablement en parler icitte, je sais que certains seraient intéressés (mais j'en dit pas plus sinon c'est pas drôle).

Ha oui, et Google utilise déjà AngularJS en production dans Places par exemple. Google ressemble malheureusement sur ce point à une entité sans direction réelle, entre closure, jquery, angular, gwt... c'est un beau bordel.

Allez, pour continuer dans le oueb, voici un article réellement intéressant concernant les performances CSS. C'est un point qu'on oublie souvent lorsqu'on parle de performances web, pourtant l'impact peut être important. Il est en effet intéressant de comprendre comment les navigateurs interprètent le CSS. L'impact n'est pas tout le temps en terme de performance pure, mais il l'est beaucoup en terme de ressenti. Ce qui est important si on veut que l'utilisateur ait une bonne impression c'est que ça ne flash par exemple pas partout, mais pour ça il faut comprendre l'ordre de chargement et d'exécution de l'html et du css. Certains navigateurs fonctionnent à l'envers les uns des autres par exemple (application du CSS pendant le rendu du DOM ou uniquement après par exemple). Bon, je vais pas beaucoup plus loin, le but étant surtout de vous intéresser au sujet, il faut parfois fouiller un peu mais il y a pas mal de ressources sur le sujet mine de rien.

Tant qu'on est à parler de navigateurs, parlons un peu de bouses. Certains sites se sont mis à appliquer des taxes pour les utilisateurs d'IE7. Justification : "faire un rendu propre pour IE7 ça prend du temps et coûte de l'argent". J'adore !

Un peu de sérieux quand même ! Revenons au CSS. Vous n'êtes pas sans savoir que, depuis quelques temps, des générateurs de CSS existent. Les plus connus étant {less} et Sass. Je suis plutôt fan il est vrai. J'aime particulièrement Closure Stylesheets mais c'est aussi parce que j'utilise toute la stack closure.

Quoi qu'il en soit, voici un article du train de 13h37 vous permettant de bien démarrer avec LESS au cas où ce ne serait déjà pas le cas. Entre autre découverte pour ma part, SimpleLESS qui est une petite application compilant vos fichiers .less à la volée. D'ailleurs cette application est disponible sous windows, linux et mac, et les sources sont sur Github sous licence CC by. Alors, pourquoi s'en priver ?

J'en profite égalemment, ceux qui ne le connaissent pas et qui pourtant s'intéressent au web pouront aller faire un tour du côté du train de 13h37. Assez sympa pour le moment.

Une petite apparté pour signaler à ceux qui l'auraient loupé que Github a désormais un client sous windows. Ça reste intéressant bien que je préfère l'ergonomie et le style du client mac (et que j'apprécie encore un peu plus SourceTree entre autre par la gestion de mercurial, j'aimerais vraiment que ce type d'application arrive sous linux, en open source si possible...).

Afin de rester sous windows (vous remarquez comment j'essai de lier mes news ? ;-) ) mais entre gens sérieux, voici de quoi avoir un petit shell sympathique : gow. Je ne l'ai pas encore testé parce que ma machine windows tourne avec un cygwin déjà configuré et que ça me gave de devoir tout changer, mais si je devais en réinstaller un aujourd'hui ce serait probablement celui-ci. Si vous avez de retours (bon ou mauvais) je suis preneur.

Hop, on revient un peu sur le dev web quand même. J'ai appris récemment l'existence de JSX : une alternative plus rapide, plus sûr, plus simple à JavaScript. En gros, un langage dont le but est d'être compilé en javascript, tout en étant fortement accès performances. L'objectif est donc de produire du code plus sûr, plus rapide, tout en étant plus lisible et plus maintenable. Une fonctionnalité intéressante (pour moi sans ça le projet perd réellement de son intérêt) qui est le support des sourcesmap permettant de debugger correctement son code.

Ce projet s'inscrit donc en partie en concurrence avec Dart. Enfin en partie seulement, car l'un des objectifs de Dart est d'être exécuté de manière native (ils pensent que c'est l'un des meilleurs moyens pour améliorer réellement les performances). La capacité de Dart à être traduite en JS est en quelque sorte un paliatif en attendant les VMs, alors que pour JSX ça semble être le but. Dans tous les cas quelque chose d'assez sympa.

Pour ceux qui en font (je sais qu'il y en a ici) écrire du coffeescript permet-il d'améliorer les perfs, ou est-ce plus lent, ou on en sait rien ?

Dans un précédent je parlais de l'attaque de CloudFlare. Un travail assez intéressant a été réalisé afin d'analyser les différents problèmes et de refaire la chronologie des évènements. C'est plutôt instructif.

Sinon, pour rester côté sécurité, une analyse du système de collision MD5 dans Flame a été réalisée. Le problème, ou au moins la surprise, est que l'attaque MD5 employée ne fait pas partie des versions qui étaient connues jusqu'à présent. Et il faut aussi avoir en tête que Flame date de 2010. C'est donc assez intriguant, et c'est quand même à se demander qui a écrit Flame. A priori seules des très très bons en crypto ont pu le réaliser. D'ailleurs, en 2008 casser du MD5 ça revenait à utiliser un cluster de 200 PS3 ou l'équivalent de $20 000 d'Amazon EC2... Assez impressionnant mine de rien.

Et si on s'éloignait un peu du développement et de la sécurité ?

Alors parlons, rapidement, un peu d'agilité. Pour ceux qui connaissent les méthodes agiles cet article ne va pas vraiment leur apprendre quelque chose. Par contre il tente, de manière certes un peu rapide et pas hyper approfondie, de répondre à la question de savoir si les méthodes agiles sont un effet de mode ou une révolution durable ? L'article est assez succinct et la conclusion est plutôt intéressante car résume bien le problème des méthodes traditionnelles en comparaison des méthodes agiles :

En définitive, ce qui différencie les deux approches (Cycle en V versus AGILE) est la réponse apportée à la question de la connaissance. D’un côté l’hypothèse qu’il est possible de connaître et de formaliser a priori (antérieurement à toute expérience) un système complexe. De l’autre, les méthodes AGILE qui réfutent implicitement cette hypothèse et proposent des pratiques intégrant une connaissance a posteriori des systèmes complexes.

Une assez bonne définition je trouve.

Et pour rester dans les méthodes, et vous, demandez-vous des M&M's dans votre cahier des charges ? Je ne me souvenais plus de cette histoire, mais sous ses allures de caprice se cache en réalité une vrai réflexion sur les cahiers des charges, leur lecture. Et mine de rien c'est une assez bonne option pour augmenter la sécurité.

Pour finir, et histoire de se détendre, voici quelques photos sympathiques. Il s'agit de scènes cultes de filmes réalisées à partir de lego. Bon je sais, c'est pas la première fois que certains réalisent des trucs en Lego mais c'est marrant.

2012 mai 20

Du retard dans les liens

Bon, ça fait un moment (un mois quoi...) que j'ai pas posté. Histoire de rattraper un peu, voici une liste de liens un peu en vrac, pas vraiment triés, mais il peut y avoir des choses intéressantes. Pour le moment j'ai un shaarli qui traine dans lequel je met pas mal de mes liens, et mon compte google synchronisé entre mes ordis et mon tél pour les liens que j'ai pas encore mis. Peut-être un jour j'ouvrirai l'url du shaarli, auquel cas ça remplacera ces posts.

Quoi qu'il en soit, voici un mois de liens divers et variés !

En voici un site Google Maps qui est 'achement bien ! Vraiment sympa, j'en dis pas plus, allez le voir, cliquez un peu partout dedans, c'est vraiment bien fait.

Voici les anales du concours Geipi Polytech. Et be, j'ai passé ce concours il y a plus de 10 ans, si je devais le repasser aujourd'hui ce ne serait pas si simple... mais c'est intéressant pour se rendre compte de ce qu'on demande, et de là où on en est plus de 10 ans après.

A l'heure où on utilise de plus en plus de js, où on mélange de plus en plus des codes divers, de provenance plus ou moins connues, il peut se poser régulièrement des questions de sécurités.

Voici un petit bout de programme, qui propose rien de moins que d'exécuter du js ... en js. Ou comment faire du sandboxing pour les scripts js. Intéressant, sauf que la question des performances est vraiment importante aujourd'hui.

Petite mise à jour des Terms of Service des API Google Maps

En voilà un code PHP intéressant ! Comment reprendre le téléchargement d'un fichier en PHP. C'est souvent quelque chose qui est décrié lorsqu'on parle de téléchargement en web. Mais peut-être est-ce juste qu'on ne fait pas bien / totalement les choses.

Petit article "guest" chez Atlassian sur Gliffy.

Gliffy, pour faire simple, est une sort de visio en ligne. Pour le moment il est réalisé en flash, mais ils sont en train de le passer en html5. Dans les phrases intéressantes, j'ai retenu la suivante : Flash helped make Gliffy successful, but has no future

Voici un bouquin qui me semble plutôt intéressant. La typographie a mine de rien un rôle très important dans le web. On s'en rend bien compte d'ailleurs si on regarde un peu l'évolution du design des sites web, après une période très "graphique", on en revient de plus en plus au texte car c'est au final le plus important. Bon, j'en parle pas plus, j'ai pas lu. Mais je pense que je vais l'acheter un de ces jours car ça m'intéresse vraiment beaucoup !

Photon est un framework PHP plutôt performant (même si je ne l'ai pas essayé, c'est ce qui en ressort) et il me semble assez bien foutu. Un jour je le testerai... En attendant voici un petit guide d'installation sous Mac.

Petite série d'icones vectorielles, orientées "réseaux sociaux"

Une présentation plutôt intéressante sur le développement dans chromium (la partie open source de chrome).

Comment dire... ce gars est un grand malade !! A partir de roues, suspension, moteur et bras oscillant (en gros) il a décidé de construire sa moto. Le boulot est réellement impressionnant. Si vous aimez la mécanique, allez lire ce sujet, ou regardez au moins les images !

Petit compte rendu de la remise en état d'un embrayage sur une R6. Je garde ça sous le coude au cas où je devrais un jour refaire celui de ma thundercat, ça doit être relativement proche.

Rien que pour cette présentation j'aurais bien aimé être au mix-it cette année. J'adhère vraiment au message. Vous êtes développeur ? Allez regarder / écouter cette présentation !

Manifeste pour de l'utf-8 partout !

Un article sur les performance en usage mobile de SPDY par rapport à HTTP.

Quelques petits trucs d'utilisation des tableaux en ruby

DevOps. En voici également une bonne voie dans le développement !

Une manière de "noter" des candidats lors d'une embauche. Pas a utiliser comme critère exclusif mais ça permet de donner une idée.

Présentation de kanban

Une manière sympa pour comprendre les différents codes HTTP (très important pour faire de REST correctement)

Voici une très bonne présentation des "green coordinates". Vraiment intéressant, instructif ! (c'est des histoires de transformation graphique, de formes, de dessin, etc)

Règles de style HTML / CSS par Google

Description de la recherche plain text avec Postgresql 8.3

Vous voulez faire vos propres "tuc" ? Voici la recette !

Comment faire des boites avec flèche (comme une info window sur une carte par exemple) en CSS

Un article très intéressant sur l'utilisation des divers caches HTTP. Très très important pour bien maitriser ses données et utiliser au mieux tous ces caches plutôt que de tenter de les supprimer par méconnaissance.

Responsive design cette fois dans un article de Google.

Nouvelle version du compilateur dart vers js

Petite explication des différents types de clustering sur le cartes, par Google Maps

Comment parser facilement une URL en javascript ? En utilisant la balise 'a' bien sur !