Là c'est pas node directement, mais npm.
./3419 : voilà l'article dont je parlais smile https://code.facebook.com/posts/1840075619545360
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Arvi: mais c'est révélateur du milieu... puis utiliser node sans npm comment dire... encore pire ? grin

Merci Zeph.

edit:
updating a minor version of babel generated an 800,000-line commit [...] and triggered lint rules for invalid utf8 byte sequences, windows line endings, non png-crushed images
trisotfl J'ai beau ne pas aimer facebook, là je compatis quand même grin
The React Native package.json currently lists just 68 dependencies, but after running npm install the node_modules directory contains 121,358 files.
C'est donc vrai trilove
Bien sur que c'est vrai!

Mon projet Crunchy: 27 fichiers dans src/
2376 fichier dans node_modules/

183 dépendances, je n'en tire que 8 pour le projet en lui meme et 3 pour la partie dev (typescript principalement)

Dans node_modules:
424 fichiers typescript (.ts)
1058 fichiers javascript (.js)
2 fichiers .css (Wut?)
18 fichiers .txt
8 fichier .html
3 fichier png (WUT WUT?)
221 ficher markdown (.md)
230 fichier JSON (.json)
35 fichier YAML (.yml)
le reste j'arrive pas trop a savoir ce qui prends le ~400 fichiers restant..

Sachant que tout ca sera installé par npm quand quelqu'un install la dite app sur sa propre machine..

Fichier transformé pour distribution vs modules utilisé:

~/Crunchy $ du -sh dist node_modules
244K dist
41M node_modules


et il y a des modules tres interessants genre
path-is-absolute
is-windows
is-absolute (hmmm ca ne fait pas la meme chose que le premier?!)
isobject
color-name
strip-eof

Biggre je m'attends presque a voir un is-true o_o
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
trilove

Et t'as essayé le machin de remplacement de npm développé par facebuk, la?
Nada, le code va etre remplacé a terme par du python, et tout ce truc partira a la poubelle
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
#pointsqualyl#
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Bah, c'est localhost, c'est pas grave embarrassed©
toggl-how-to-create-horse-with-programming.jpg
Imgur blacklisté au boulot, pour ça que je ne l'avais pas vu... grin


lovelovelovelovelovelove
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
rotfl
(c'est merveilleux les animes)
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
JavaScript = "This is civilization!"??? eek
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
J'ai vu ça, j'ai fait tourner à mes collègues :3
Montrer "JAVA---SCRIPT" avec un air si solennelle, j'aurais envie de remplacer par "DOUBLE---CLIC" pour les non-initiés.
avatar« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique
Il manque la suite qui est .... encore plus drôle grin
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
Il se passe quoi ? il se passe quoi ? ils hackent le site du FBI en éditant le code source de la page avec FIRE---BUG ?
avatar« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique
Non ils font leur site dans le plus pur style japonais
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
Bon bon.

Je sais qu'il y a des specialistes ici alors, comment on fait avec ce beau langage qu'est javascript pour faire ca:


'use strict'; import request = require('request'); function log_me_in(config: any) { let options = { headers: defaultHeaders, form: { 'login[name]': config.user, 'login[password]': config.pass, 'login_form[_token]': token }, jar: true, gzip: false, method: 'POST', url: 'https://www.foo.com/login' }; request.request(options, (err: Error, rep: string, body: string) => { { if (err) { log.warn("Err is here-->" + err); /* how to trigger a retry from here? */ return false; } /* Do something once logged */ }); }
Dans certains cas une erreur sur le serveur se produit ce qui fait que le chargement de la page ne se fait pas correctement et une erreur est retourné. C'est une erreur transitoire, et retester plusieurs fois corrige le probleme (je n'ai PAS le controle sur le serveur)

Comment quand on est dans le callback de request, peut-on retrigger une requete SANS avoir a imbriquer un callback en plus?

Je deteste VRAIMENT cette manie de tout vouloir faire en asynchrone, avec un language normal, meme python, une simple boucle avec verification du retour de request.request, et paf pasteque.

La je seche completement. (sans parler de l'impossibilité de faire proprement un simple "sleep" ou "delay" en JS sans passer par des callback. Bordel!
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
Tu peux simplement rappeler ta méthode log_me_in. Comme c'est asynchrone t'as pas vraiment de récursivité et c'est pas dangereux (du coup tu peux peut être structurer un poil différent pour tenir ça en compte). Note aussi qu'en Javascript un callback peut se référencer lui même.

let allowedRetries = 3;
const doRequest = () => {
  request.request(options, (err: Error, rep: string, body: string) => {
    if (err) {
      if (allowedRetries-- > 0) {
        doRequest();
      } else {
        // Definitive error
      }
      return;
    }

    // OK
  });
};
doRequest();
Ca reste moche, mais pour d'autres raisons. Mais le coup de la boucle c'est aussi qqch que tu ferais de nos jours avec async/await, et je ne vois pas d'ailleurs pourquoi tu ne ferais pas ça.
avatarHighway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741
parce que ca n'a aucun interet si ce n'est compliquer le code pour rien? (et le code ne fait pas 3 lignes ½, et rappeler la methode n'est pas aussi simple qu'il n'y parait.
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
Ben dans ton exemple il fait 3 lignes et demie, du coup je ne peux pas te dire pour ton cas précis quelle serait la meilleure solution. Async/await simplifie énormément plus qu'il ne complique quoi que ce soit.
avatarHighway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741
C'est vraiment pas un ton qui donne envie de te répondre, peut-être que ne pas avoir la réponse t'agace mais ça n'est pas la peine de cracher sur tout et n'importe quoi en réaction.

Pour la partie "pourquoi des callbacks", c'est parce que comme manifestement c'est du code prévu pour fonctionner dans un browser, il est mono-thread. Il fait des appels réseau, donc si tu écris tout en séquentiel il va bloquer cet unique thread et freezer la UI. C'est une bonne pratique dans tous les environnements qui te proposent de faire des UI pour éviter de construire des applications qui arrêtent de réagir à chaque fois qu'un appel réseau est un peu plus long que prévu, c'est pour ça que tous les langages modernes essaient de rendre la programmation asynchrone aussi lisible que possible (parce que forcément il y a un coût, c'est plus compliqué donc plus long à écrire).

Si tu veux que ton code soit compatible avec des vieux browsers qui n'ont pas encore de support pour async/await comme le suggère Brunni, tu as deux choix : soit tu utilises quand même async/await et tu passes ton code dans un "transpilateur" qui va le convertir vers une version moins récente de JavaScript (avec Babel par exemple), soit tu écris du code un peu moins récent mais qui passera partout. C'est ta version initiale et celle que propose Brunni avec des callbacks ; il n'y a pas 50 alternatives de toutes façons, si tu veux faire de l'asynchrone et que tu es dans un langage qui ne supporte pas async/await presque toutes les autres solutions sont encore pire au niveau lisibilité. Sa proposition est un bon compromis, si tu as besoin de faire ça assez souvent tu auras probablement envie de te créer un petit wrapper pour éviter d'avoir à écrire chaque fois cette unique callback qui contient grosso modo if (failure) { notifySomeError(); } else { processResponse(); } pour en faire 2 fonctions réellement séparées, mais le principe restera exactement le même.
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Je crois que je comprends mieux certains:

avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
c'est limite, mais lol quand même grin
Ah ben s'il n'y avait pas les sacs poubelle, ça me ferait voir le Java d'un meilleur jour cheeky

(et apparemment c'est elle-même sur la photo, donc elle a de l'humour ^^)
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
grin
Oui oui c'est de l'humour et oui c'est bien la fille qui a tweeté qui est sur la photo (et elle est dans le domaine info de ce que j'en sais)
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
[color=DAA5
Les relations amoureuses avec les filles de Java sont comment du coup ? je les imagine solides dans le temps, compatibles avec toutes sortes d'étrangers, mais assez prise de tête à mettre en route.
avatar« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique
Et puis vu le temps de démarrage, faut pas espérer qu'il se passe quoi que ce soit le premier soir embarrassed
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo