SlideShare une entreprise Scribd logo
@Xebiconfr #Xebicon18 @_maxpch @modulom
Build the future
Deno, le nouveau Node.js qui inverse la tendance ?
Maxime Pichou, développeur Back/Cloud
Antoine Le Taxin, développeur full stack JS
@Xebiconfr #Xebicon18 @_maxpch @modulom
Qui sommes-nous ?
Maxime Pichou
Développeur Back/Cloud
Antoine Le Taxin
Développeur full stack JS
@modulom@_maxpch
@Xebiconfr #Xebicon18 @_maxpch @modulom
De quoi allons nous parler ?
1. NodeJS et son créateur
2. Les erreurs de NodeJS
3. Les promesses de Deno
4. Quelques exemples
5. Conclusion
@Xebiconfr #Xebicon18 @_maxpch @modulom
NodeJS et son créateur
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les origines de Deno
● Ryan Dahl
● Créateur de Node.js
● Conférence de JS Conf Berlin en Juin 2018
En résumé :
● NodeJS
● Deno
@Xebiconfr #Xebicon18 @_maxpch @modulom
V8
engine
fs http
os
path
● Première version en 2009
● Écrit en C++
● Environnement exécutable pour JavaScript
● Utilisation de NPM pour la gestion des
dépendances
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les erreurs de NodeJS
« node_modules are heaviest objects in the universe »
Ryan Dalh
@Xebiconfr #Xebicon18 @_maxpch @modulom
Gestion des dépendances
● Seulement un repository centralisé pour les modules (qui est privé)
● Trop de dépendances vers les modules :
■ Le fichier javascript
■ Le package.json
■ Le dossier node_modules local
■ Le module dans la BDD de NPM
● Trop de boilerplate pour gérer les dépendances
@Xebiconfr #Xebicon18 @_maxpch @modulom
Build System
● Depuis 2012, NodeJS utilise GYP (Generate Your Project)
● GYP créé par Chromium Project et utilisé pour V8 engine
● En 2016, Google passe à GN (Generate Ninja)
● NodeJS décide de rester sur GYP à tort
@Xebiconfr #Xebicon18 @_maxpch @modulom
Et d’autres regrets
● Le fichier index.js
● Le require sans extension
● Ne meurt jamais sur les « uncaught errors »
● Les applications ne sont pas sécurisées
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les ambitions de Deno
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les promesses de Deno
● Support natif de TypeScript 3.0
● Sécurité en mode sandbox d’une application
● Embarquement du moteur V8 7.0 de Chrome
● Gestion des dépendances simplifiées
● Support de await au plus haut niveau
● Compatibilité avec les navigateurs (browser)
● Meurt sur les « uncaught errors »
@Xebiconfr #Xebicon18 @_maxpch @modulom
● Typescript : gestion de la public API
● Rust : partie bas niveau de Deno
● C++ : pour le binding avec V8
● Python : pour de l’utilitaire, du testing ...
Langages utilisés
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno, où ça en est ?
@Xebiconfr #Xebicon18 @_maxpch @modulom
Avancement de Deno
Lorsque notre présentation a été retenue pour la Xebicon
@Xebiconfr #Xebicon18 @_maxpch @modulom
Avancement de Deno
Lorsque nous nous sommes plongés dans la documentation et
vu l’état d’avancement du projet
@Xebiconfr #Xebicon18 @_maxpch @modulom
Avancement de Deno
● Deno est très jeune (à peine 6 mois)
● Pas beaucoup de fonctionnalités finies
● Cependant très actif (une release toutes les semaines environ)
● Pas encore de date de sortie officielle
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et la sécurité - Allow write
import { mkdir, args } from "deno";
const directoryName = args[1];
createDirectory(directoryName)
.then(() => console.log("done"))
.catch(error => console.error(error));
async function createDirectory(path : string) {
await mkdir(path);
}
deno --allow-write mkdir_example.ts xebicon
PermissionDenied: permission denied
at maybeError (deno/js/errors.ts:25:12)
at handleAsyncMsgFromRust
(deno/js/dispatch.ts:19:15)
Sans --allow-write
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et la sécurité - Allow network
async function main() {
const response = await fetch("https://xebicon.fr/");
console.log(`status = ${response.status}`);
}
main();
PermissionDenied: permission denied
at maybeError (deno/js/errors.ts:25:12)
at handleAsyncMsgFromRust
(deno/js/dispatch.ts:19:15)
Sans --allow-net
deno --allow-net fetch_response.ts
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et les modules
● Système d’import par URL
● Incompatible avec CommonJs
● Compatible avec l’import ESM ou AMD
import { someModule } from "https://unpkg.com/somemodule@2.1.3/somemodule.ts";
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et await
● Objectif de supporter await au plus haut niveau
● Difficulté pour trouver une solution en accord avec TS
import { mkdir, args } from "deno";
const directoryName : string = args[1];
await mkdir(directoryName);
@Xebiconfr #Xebicon18 @_maxpch @modulom
C’est quoi la suite ?
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno demain
Roadmap :
● TCP Server
● Lister les dépendances
● Public API (I/O, setTimeout etc)
● Binding infrastructure entre V8 et libdeno
● Await au plus haut niveau
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno inverse-t-il vraiment la tendance face à NodeJS ?
● Beaucoup plus sécurisé
● Typescript natif
● Gestion des dépendances simplifiée
● Utilisation du build system GN
● Promesse de compatibilité avec les browsers
Point positif :
Point d’attention :
● Incompatible avec NodeJS
● La gestion des dépendances est elle adaptée sur de gros projet ?
● Gestion des droits trop binaire
@Xebiconfr #Xebicon18 @_maxpch @modulom
Merci !

Contenu connexe

Similaire à XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?

HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
CARA_Lyon
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
CARA_Lyon
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
Christophe Villeneuve
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
davrous
 
Hands on drone challenge - xebicon'18
Hands on  drone challenge - xebicon'18Hands on  drone challenge - xebicon'18
Hands on drone challenge - xebicon'18
Jean-Baptiste Claramonte
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
SQLI DIGITAL EXPERIENCE
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
Valtech
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Publicis Sapient Engineering
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
Christophe Villeneuve
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
Microsoft
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Publicis Sapient Engineering
 
Dotnet j2 ee
Dotnet j2 eeDotnet j2 ee
Dotnet j2 eechdalel
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
matparisot
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
Mathieu Parisot
 
Rouabhi algiers meetup
Rouabhi algiers meetupRouabhi algiers meetup
Rouabhi algiers meetup
Samir Rouabhi
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
Vincent Composieux
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveAlexandre Morgaut
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
Christophe Villeneuve
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
davrous
 
XebiCon'16 : React Native et Redux, une complémentarité hors du commun. Par ...
XebiCon'16 : React Native et Redux, une complémentarité hors du commun.  Par ...XebiCon'16 : React Native et Redux, une complémentarité hors du commun.  Par ...
XebiCon'16 : React Native et Redux, une complémentarité hors du commun. Par ...
Publicis Sapient Engineering
 

Similaire à XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ? (20)

HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Hands on drone challenge - xebicon'18
Hands on  drone challenge - xebicon'18Hands on  drone challenge - xebicon'18
Hands on drone challenge - xebicon'18
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
 
Dotnet j2 ee
Dotnet j2 eeDotnet j2 ee
Dotnet j2 ee
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Rouabhi algiers meetup
Rouabhi algiers meetupRouabhi algiers meetup
Rouabhi algiers meetup
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS Geneve
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
XebiCon'16 : React Native et Redux, une complémentarité hors du commun. Par ...
XebiCon'16 : React Native et Redux, une complémentarité hors du commun.  Par ...XebiCon'16 : React Native et Redux, une complémentarité hors du commun.  Par ...
XebiCon'16 : React Native et Redux, une complémentarité hors du commun. Par ...
 

Plus de Publicis Sapient Engineering

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
Publicis Sapient Engineering
 
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to Cloud
Publicis Sapient Engineering
 
XebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern Infrastructure
Publicis Sapient Engineering
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
Publicis Sapient Engineering
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
Publicis Sapient Engineering
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
Publicis Sapient Engineering
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
Publicis Sapient Engineering
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
Publicis Sapient Engineering
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
Publicis Sapient Engineering
 
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture
Publicis Sapient Engineering
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID Connect
Publicis Sapient Engineering
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
Publicis Sapient Engineering
 
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an aprèsXebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an après
Publicis Sapient Engineering
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
Publicis Sapient Engineering
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
Publicis Sapient Engineering
 
XebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - La guerre des Frameworks n'aura pas lieuXebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - La guerre des Frameworks n'aura pas lieu
Publicis Sapient Engineering
 
XebiCon'18 - Orchestration : Conteneurs vs Musique
XebiCon'18 - Orchestration : Conteneurs vs MusiqueXebiCon'18 - Orchestration : Conteneurs vs Musique
XebiCon'18 - Orchestration : Conteneurs vs Musique
Publicis Sapient Engineering
 
XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-StreamsXebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
Publicis Sapient Engineering
 
XebiCon'18 - Data Science Done Wrong
XebiCon'18 - Data Science Done WrongXebiCon'18 - Data Science Done Wrong
XebiCon'18 - Data Science Done Wrong
Publicis Sapient Engineering
 
TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...
TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...
TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...
Publicis Sapient Engineering
 

Plus de Publicis Sapient Engineering (20)

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
 
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to Cloud
 
XebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern Infrastructure
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
 
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID Connect
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
 
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an aprèsXebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an après
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
 
XebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - La guerre des Frameworks n'aura pas lieuXebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - La guerre des Frameworks n'aura pas lieu
 
XebiCon'18 - Orchestration : Conteneurs vs Musique
XebiCon'18 - Orchestration : Conteneurs vs MusiqueXebiCon'18 - Orchestration : Conteneurs vs Musique
XebiCon'18 - Orchestration : Conteneurs vs Musique
 
XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-StreamsXebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
 
XebiCon'18 - Data Science Done Wrong
XebiCon'18 - Data Science Done WrongXebiCon'18 - Data Science Done Wrong
XebiCon'18 - Data Science Done Wrong
 
TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...
TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...
TEch4Exec - OUI.sncf propose des voyages moins chers grâce au Big Data et au ...
 

Dernier

Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO Technology
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 

Dernier (6)

Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 

XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?

  • 1. @Xebiconfr #Xebicon18 @_maxpch @modulom Build the future Deno, le nouveau Node.js qui inverse la tendance ? Maxime Pichou, développeur Back/Cloud Antoine Le Taxin, développeur full stack JS
  • 2. @Xebiconfr #Xebicon18 @_maxpch @modulom Qui sommes-nous ? Maxime Pichou Développeur Back/Cloud Antoine Le Taxin Développeur full stack JS @modulom@_maxpch
  • 3. @Xebiconfr #Xebicon18 @_maxpch @modulom De quoi allons nous parler ? 1. NodeJS et son créateur 2. Les erreurs de NodeJS 3. Les promesses de Deno 4. Quelques exemples 5. Conclusion
  • 4. @Xebiconfr #Xebicon18 @_maxpch @modulom NodeJS et son créateur
  • 5. @Xebiconfr #Xebicon18 @_maxpch @modulom Les origines de Deno ● Ryan Dahl ● Créateur de Node.js ● Conférence de JS Conf Berlin en Juin 2018 En résumé : ● NodeJS ● Deno
  • 6. @Xebiconfr #Xebicon18 @_maxpch @modulom V8 engine fs http os path ● Première version en 2009 ● Écrit en C++ ● Environnement exécutable pour JavaScript ● Utilisation de NPM pour la gestion des dépendances
  • 7. @Xebiconfr #Xebicon18 @_maxpch @modulom Les erreurs de NodeJS « node_modules are heaviest objects in the universe » Ryan Dalh
  • 8. @Xebiconfr #Xebicon18 @_maxpch @modulom Gestion des dépendances ● Seulement un repository centralisé pour les modules (qui est privé) ● Trop de dépendances vers les modules : ■ Le fichier javascript ■ Le package.json ■ Le dossier node_modules local ■ Le module dans la BDD de NPM ● Trop de boilerplate pour gérer les dépendances
  • 9. @Xebiconfr #Xebicon18 @_maxpch @modulom Build System ● Depuis 2012, NodeJS utilise GYP (Generate Your Project) ● GYP créé par Chromium Project et utilisé pour V8 engine ● En 2016, Google passe à GN (Generate Ninja) ● NodeJS décide de rester sur GYP à tort
  • 10. @Xebiconfr #Xebicon18 @_maxpch @modulom Et d’autres regrets ● Le fichier index.js ● Le require sans extension ● Ne meurt jamais sur les « uncaught errors » ● Les applications ne sont pas sécurisées
  • 11. @Xebiconfr #Xebicon18 @_maxpch @modulom Les ambitions de Deno
  • 12. @Xebiconfr #Xebicon18 @_maxpch @modulom Les promesses de Deno ● Support natif de TypeScript 3.0 ● Sécurité en mode sandbox d’une application ● Embarquement du moteur V8 7.0 de Chrome ● Gestion des dépendances simplifiées ● Support de await au plus haut niveau ● Compatibilité avec les navigateurs (browser) ● Meurt sur les « uncaught errors »
  • 13. @Xebiconfr #Xebicon18 @_maxpch @modulom ● Typescript : gestion de la public API ● Rust : partie bas niveau de Deno ● C++ : pour le binding avec V8 ● Python : pour de l’utilitaire, du testing ... Langages utilisés
  • 14. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno, où ça en est ?
  • 15. @Xebiconfr #Xebicon18 @_maxpch @modulom Avancement de Deno Lorsque notre présentation a été retenue pour la Xebicon
  • 16. @Xebiconfr #Xebicon18 @_maxpch @modulom Avancement de Deno Lorsque nous nous sommes plongés dans la documentation et vu l’état d’avancement du projet
  • 17. @Xebiconfr #Xebicon18 @_maxpch @modulom Avancement de Deno ● Deno est très jeune (à peine 6 mois) ● Pas beaucoup de fonctionnalités finies ● Cependant très actif (une release toutes les semaines environ) ● Pas encore de date de sortie officielle
  • 18. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et la sécurité - Allow write import { mkdir, args } from "deno"; const directoryName = args[1]; createDirectory(directoryName) .then(() => console.log("done")) .catch(error => console.error(error)); async function createDirectory(path : string) { await mkdir(path); } deno --allow-write mkdir_example.ts xebicon PermissionDenied: permission denied at maybeError (deno/js/errors.ts:25:12) at handleAsyncMsgFromRust (deno/js/dispatch.ts:19:15) Sans --allow-write
  • 19. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et la sécurité - Allow network async function main() { const response = await fetch("https://xebicon.fr/"); console.log(`status = ${response.status}`); } main(); PermissionDenied: permission denied at maybeError (deno/js/errors.ts:25:12) at handleAsyncMsgFromRust (deno/js/dispatch.ts:19:15) Sans --allow-net deno --allow-net fetch_response.ts
  • 20. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et les modules ● Système d’import par URL ● Incompatible avec CommonJs ● Compatible avec l’import ESM ou AMD import { someModule } from "https://unpkg.com/somemodule@2.1.3/somemodule.ts";
  • 21. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et await ● Objectif de supporter await au plus haut niveau ● Difficulté pour trouver une solution en accord avec TS import { mkdir, args } from "deno"; const directoryName : string = args[1]; await mkdir(directoryName);
  • 22. @Xebiconfr #Xebicon18 @_maxpch @modulom C’est quoi la suite ?
  • 23. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno demain Roadmap : ● TCP Server ● Lister les dépendances ● Public API (I/O, setTimeout etc) ● Binding infrastructure entre V8 et libdeno ● Await au plus haut niveau
  • 24. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno inverse-t-il vraiment la tendance face à NodeJS ? ● Beaucoup plus sécurisé ● Typescript natif ● Gestion des dépendances simplifiée ● Utilisation du build system GN ● Promesse de compatibilité avec les browsers Point positif : Point d’attention : ● Incompatible avec NodeJS ● La gestion des dépendances est elle adaptée sur de gros projet ? ● Gestion des droits trop binaire
  • 25. @Xebiconfr #Xebicon18 @_maxpch @modulom Merci !