Une nouvelle aventure commence

Aujourd’hui le monde va changer. Aujourd’hui votre vie va être bouleversé. Aujourd’hui je déclare mon Codepen ouvert !
Alléluia.

L'importance des streams

L’api stream, bien que fondamentale, est souvent sous exploitée et méconnue. Pourtant c’est l’une des plus grandes forces de node, si ce n’est la plus grande.

Un stream est basiquement un objet tourné vers la réception, l’envoie et le traitement de données découpées en plusieurs morceaux généralement appelés chunks. Les méthodes et les fonctionnalités de cet objet seront déterminées par son type.

  • Ecriture (writable)
  • Lecture (readable)
  • Les deux (duplex)

L’interet d’un stream est de pouvoir traiter des données en même temps qu’on les recoit. Il y’a beaucoup d’avantages à un tel procédé. Déjà nous allons utiliser moins de mémoire puisqu’il nous est possible d’enoyer un chunk au garbage collector. De la même manière nous allons gagner en temps de traitement.

On peut se rendre compte du problème en émulant/imaginant deux api: l’une basique, l’autre à base de stream.

voie-normal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Création des données
function getDatasFromApi(cb) {
var datas = []
, i = 0;
// Pour l'exemple...
var _job = function() {
if(datas.length<5) {
setTimeout(_job, 1000);
} else {
cb(datas);
}
}
_job();
}
// Traitement des données
getDatasFromApi(function(datas){
datas.forEach(function(o){
console.log(o.line);
});
});

Ce même code en simulant un stream.

stream
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Création des données
function getDatasFromApi(stream) {
var datas = []
, i = 0;
var _job = function() {
stream.push('data', {line: "Line" + (i++)});
if(i<5) {
setTimeout(_job, 1000);
} else {
stream.push('end');
}
}
_job();
}
// Stream simulation
var stream = {
cbs: {},
on: function(type, cb){
this.cbs[type] = cb;
},
push: function(type, chunk){
if(this.cbs[type]) {
this.cbs[type](chunk);
}
}
};
// Traitement des données au vol
stream.on('data', function(chunk){
console.log(chunk.line);
});
getDatasFromApi(stream);

Lequel est le plus intéressant ? A vous de voir…

Créer une api avec node

Personnellement, j’ai toujours préféré réinventer la roue plutôt que d’utiliser un module déjà tout fait ou de copier/coller du code. L’intérêt est évidemment d’avoir quelque chose d’entièrement customisable, mais le but est aussi d’acquérir une connaissance pratique et une experience sur des systèmes qu’on sera ammené à utiliser tot ou tard (ici les apis).

Aujourd’hui, je vous propose donc d’implémenter les bases d’une api avec node, express et mongo. Let’s go !


Lire la suite »

Heroku, déploiement d'hexo

Heroku est connu pour faciliter le déploiement d’application. On peut désormais se concenter uniquement sur les choses qui nous intéressent au lieu d’avoir à configurer nos serveurs et d’en prévoir la scalabilité.

Aujourd’hui, nous allons voir comment déployer notre blog sans le moindre frais et de manière scalable en quelques secondes.


Lire la suite »

Hexo, un blog en markdown

Si comme moi vous êtes rebuté par les back offices et les usines à gaz facon wordpress alors Hexo est fait pour vous. Ici, pas de base de données, seulement du json et du markdown simple. Plus besoin de se connecter ou de lancer un serveur pour rédiger et formater son article. Le bloc note sera notre seul et unique outil. Besoin d’un exemple ? C’est partit.

mon-article
1
2
3
4
5
6
7
title: Hexo, un blog en markdown
date: 2015-02-22 18:29:50
tags:
- Hexo
---
Si vous êtes rebuté par les back offices et les ..

Génial non ? L’entête de notre article est délimité par les trois “-“ et le reste du contenu utilisera du mardown simple. Nous allons maintenant voir comment créer entièrement un blog sous hexo en moins de 5 minutes.

Lire la suite »

Un développeur sauvage apparaît

Il était une fois au pays du code binaire et des accolades, un petit développeur soucieux d’apprendre et de partager ses quelques connaissances. Ensemble nous allons partir à la conquête du javascript, go, git, mongo, node et bien d’autres choses.

N’hésitez pas à me suivre sur twitter si le coeur vous en dit. Hakuna matata à vous.