Giter Site home page Giter Site logo

thom4parisot / nodebook Goto Github PK

View Code? Open in Web Editor NEW
304.0 16.0 73.0 31.01 MB

📖 Livre publié aux Éditions Eyrolles • Première édition : Node.js v10 et npm v6.

Home Page: https://apprendre-nodejs.fr/v1/

License: Other

JavaScript 96.65% Makefile 0.07% HTML 0.33% CSS 2.80% Dockerfile 0.02% Less 0.02% EJS 0.02% Handlebars 0.01% Pug 0.01% SCSS 0.03% Nunjucks 0.04%
javascript nodejs frontend book francais learning-by-doing learn-to-code learning-js learning-exercise asciidoctor

nodebook's Issues

Handling CodeBlocks

 <style:style style:name="P144" style:family="paragraph" style:parent-style-name="Preformatted_20_Text">
<text:p text:style-name="P140">Array.some</text:p>

Chapitre 1, SemVer

Dans la brève description de SemVer j'ajouterais que le numéro d'une version majeure égale à 0 est considérée comme étant en dev, non stable, et par conséquent ne suit pas la règle de versionning précitée (MAJEUR.MINEUR.CORRECTIF).

Cf. http://semver.org/lang/fr/#spec-item-4

Chapitre 3 : double appel à `uppercaseAsync` ?

Dans message-abbr-promisified.js, il me semble que la fonction uppercaseAsync est appelé 2 fois (alors qu'une fois devrais suffire):

module.exports = function messageAbbr(message){
  return new Promise(function(resolve, reject){
    return uppercaseAsync(message)
      .then(uppercaseAsync)
      .then(splitWordsAsync)
      .then(abbreviateAsync)
      .then(resolve)
      .catch(reject);
  });
};

Parallélisme

Compliqué et limites par rapport à d'autres langages.

Bonnes pratiques pour des applications robustes

  • Gestion des erreurs
  • Erreurs courantes
  • Environnements de configuration
  • Sécurité
  • Logging
  • Débogage
    1. Prévenir les plantages
      1. Erreurs et exceptions
      2. Le problème des exceptions
      3. De l'utilisation des domains
      4. Écouter les évènements système
    2. Cas typiques de code à surveiller
      1. Erreurs de syntaxe
      2. Typage inattendu
      3. Valeurs nulles
      4. Upload de fichiers
      5. Évènements via .on('error')
      6. Callbacks
      7. Épuisement de mémoire
      8. Race condition
    3. Sécurité des données
      1. Données malicieuses
      2. Infiltration du système de fichier
      3. Échapper les données consommées par les utilisateurs
      4. RegExp
      5. CSRF
      6. XSS
      7. Attaques par injection
    4. Déboguer son code
      1. Node.js en mode debug avec node --debug
      2. Module node-debug
      3. Webstorm IDE
    5. Tester son code
      1. Configurer son package.json
      2. Écrire les tests
      3. Exécuter les tests
      4. Utilisation des espions, bouchons etc. avec Sinon.js
      5. Connaître sa couverture de code avec blanket
    6. Intégration et déploiement continu
    7. Principes
    8. Travis CI
    9. Coveralls
    10. Jenkins
    11. Strider
    12. Codeship
  • Node.js avancé
    1. De la bonne utilisation de package.json
    2. npm
      1. Dépendances optionnelles (optionalDependencies)
      2. Dépendances de pairs (peerDependencies)
      3. Variables d'environnement
      4. npm run-script
      5. Geler les versions avec npm shrinkwrap
      6. Développer son module Node.js avec npm link
    3. Node.js sans JavaScript
      1. ECMAScript 6 avec traceur
      2. TypeScript
    4. npm sans Node.js
      1. Composants Web
      2. Mozilla Jetpack
      3. libc
      4. Titanium
    5. node-gyp ou écrire en C++ pour libuv
    6. Flags avancés (node --v8-options)

Feedback chapitre 2

Globalement très bon chapitre, j'ai beaucoup appris en tant que débutant !

  • [1, 2, 3].join(', ')+'… soleil'; espaces manquantes autour du +
  • explication de every, some, map, reduce… : super bien
  • explication de defineProperty : l'exemple est le meilleur jamais vu de l'histoire des livres sur JS
  • defineProperty: quand on fait cssBook.EAN13 = '978-2212136401';, la méthode set est automatiquement appelée ? C'est quoi la magie ?
  • exec devrait être test dans :

    À la manière de exec, la méthode test se contente de renvoyer un booléen si un motif a été trouvé ou non :
    /(.+)(Script)/.exec('ECMAScript');

  • "Techniquement parlant, un module est fichier JavaScript" : manque "un" entre "est" et "fichier"
  • currency-main et currency-format m'ont vraiment aide a comprendre comment marchait bind, très bons exemples !
  • __filename et __dirname semblent être interprétés en tant que italique a certains endroits
  • Dans le CSV, "Javascript the Definitive Guide": le S de Javascript devrait être capitalisé
  • " _ Et ça tombe bien, " (y'a un underscore de trop non ?)

Chemin du fichier data/books.csv

$ node chapter-02/examples/src/print-csv.js
/Users/frank/github/nodebook/chapter-02/examples/src/print-csv.js:13
    throw err;
    ^

Error: ENOENT: no such file or directory, open '/Users/frank/code/nodebook/chapter-02/examples/src/data/books.csv'

Afin de permettre l'exécution du script print-csv.js, le dossier data devrait se trouver dans le répertoire src, or il est dans le répertoire parent.

  • soit on met le code du script à jour en construisant le chemin en ajoutant .. pour qu'il fonctionne,
  • soit on déplace le dossier data et cela demande aussi de modifier le code asciidoc.

on/off/emit

Ca peut valoir le coup de présenter l'API on/off/once/emit.
Peut-être parallèle avec l'API d'event DOM.

cc @DavidBruant

Feedback chapitre 1

Excellent chapitre, j'y ai beaucoup appris !

Voici quelques retours :

  • Historique du projet: "Alors qu’il cherche à effectuer des petits boulots, il y rencontre un autre Américain développant des sites web." : est-ce important de préciser qu'il rencontre un autre Américain ?
  • Typo sur Nginx (Ngninx)
  • JSLint prend un L majuscule
  • "Node utilise également V8 pour les mêmes raisons : parser et compiler JavaScript." est-ce possible que tu voulais dire "compiler et exécuter JavaScript" ?
  • "libuv a été créée pour les besoins propre de Node" : "propre" ne s'accorde-t-il pas ?
  • "libuv implémente notamment la fameuse boucle événementielle (voir ci-après), la file de priorité (priority queue)" : si "file de priorité" est traduit, alors "boucle événementielle" devrait l'être aussi, non ?

Chapitre 2, coquille

Cette variable magique contient systématiquement la résultat de la dernière évaluation de code.

Compléter le chapitre 2

Certaines parties sont encore manquantes :

  • script shell
  • SublimeText
  • Brackets
  • vim
  • Visual Studio
  • conclusion

Mots manquants dans le chapitre 3

Dans le chapitre 3:

Au lieu d’exécuter trois la fonction messageAbbr, nous voulons au contraire exécuter trois traitements différents sur le résultat.

Je pense que ça devrait être (au moins pour le sens):

Au lieu d’exécuter successivement les trois fonctions uppercaseAsync, splitWordsAsync et abbreviateAsync sur le résultat de la fonction précédente, nous voulons au contraire exécuter trois traitements différents sur le résultat.


Dans tous les cas, un grand merci pour ce livre très intéressant et bien écrit! (j'ai enfin vraiment compris ce qu'était Node grace à la phrase "Node est une API JavaScript pour manipuler des ressources système.")

Introduction à UNIX

Parce que ça permet de lier JavaScript + Node.js

  • argv
  • streams
  • long running process / thread / mémoire

Finaliser le chapitre 3

  • Gruntfile
  • Gulpfile
  • npm - request
  • introduire les streams par une requête HTTP écrivant vers fs
  • parler des streams Readable et Writable avant d'enchaîner sur les exemples existants, plus complexes
  • conclusion

vars argv = require('yargs').argv;

Dans vars argv = require('yargs').argv;

  • Que signifie vars, faute de frappe ?
  • Et que fait .argv? (je m'en doute mais ce n'est pas explicité dans l'exemple)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.