Commit 68c4f498 authored by Éloïs's avatar Éloïs

diapo durs-rml12

parent c35cce54
language: node_js
node_js:
- 4
after_script:
- npm run build -- retire
This diff is collapsed.
{
"name": "reveal.js",
"version": "3.7.0",
"main": [
"js/reveal.js",
"css/reveal.css"
],
"homepage": "http://revealjs.com",
"license": "MIT",
"description": "The HTML Presentation Framework",
"authors": [
"Hakim El Hattab <hakim.elhattab@gmail.com>"
],
"dependencies": {
"headjs": "~1.0.3"
},
"repository": {
"type": "git",
"url": "git://github.com/hakimel/reveal.js.git"
},
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test"
]
}
\ No newline at end of file
[Dolphin]
PreviewsShown=true
Timestamp=2018,11,21,23,22,12
Version=3
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>reveal.js</title>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section>Slide 1</section>
<section>Slide 2</section>
</div>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Durs rml12</title>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match(/print-pdf/gi) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName('head')[0].appendChild(link);
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section>
<section data-markdown>
<textarea data-template>
## Durs (Duniter-Rust)
![duniter-rs-logo](./images/duniter-rs.png)
Une implémentation du protocole [Duniter](https://duniter.org) en [Rust](https://www.rust-lang.org).
Présentation du projet **Durs** par [librelois](https://librelois.fr) dans le cadre des [RML12](https://rml12.duniter.io/).
Retrouvez cette présentation sur `librelois.duniter.io/durs-rml12`
</textarea>
</section>
<section data-markdown>
<script type="text/template">
### Le language Rust
![rust-logo](./images/rust-logo-128x128.png)
- Issue de la fondation Mozilla, 9 ans de travail avant 1.0 (2006-2015) <!-- .element: class="fragment" data-fragment-index="1" -->
- Compilé et multi-paradigme. Croise impératif, objet, fonctionnel (Ocaml) et concurrent (Erlang) <!-- .element: class="fragment" data-fragment-index="1" -->
- Inspiré des recherches récentes en théories des langages <!-- .element: class="fragment" data-fragment-index="2" -->
- 3 objectifs : Sécurité, Concurrence et Performances. <!-- .element: class="fragment" data-fragment-index="2" -->
</script>
</section>
<section data-markdown>
<script type="text/template">
### Rust : Les avantages
![rust-logo](./images/rust-logo-128x128.png)
- [Stack Overflow's most loved language](https://insights.stackoverflow.com/survey/2017?utm_source=so-owned&utm_medium=hero&utm_campaign=dev-survey-2017&utm_content=hero-questions#most-loved-dreaded-and-wanted) !
- garantit la sûreté de la mémoire (no memory leaks) <!-- .element: class="fragment" data-fragment-index="1" -->
- garantit la sûreté entre threads (no data races) <!-- .element: class="fragment" data-fragment-index="1" -->
- ultra-rapide & abstractions sans coût (zero runtime) <!-- .element: class="fragment" data-fragment-index="2" -->
- inférence de type & généricité avec les "traits" <!-- .element: class="fragment" data-fragment-index="2" -->
- très expressif (pattern matching, iterators, ... ) <!-- .element: class="fragment" data-fragment-index="3" -->
- potentiel successeur du C++ (avec D) <!-- .element: class="fragment" data-fragment-index="3" -->
</script>
</section>
<section data-markdown>
<script type="text/template">
### Rust Front Web : l'Avenir
![wasm](./images/WebAssembly_Logo.png)
- Compilateur rust->webassembly depuis le 21/12/17<!-- .element: class="fragment" data-fragment-index="1" -->
- Intégration de webpack et npm depuis qq mois !! <!-- .element: class="fragment" data-fragment-index="2" -->
- Très facile a développer avec wasm-pack ! <!-- .element: class="fragment" data-fragment-index="3" -->
- On peut faire des jeux temps réel dans le navigateur <!-- .element: class="fragment" data-fragment-index="4" -->
> [Exemple de jeu en rust-wasm](https://aochagavia.github.io/blog/rocket---a-rust-game-running-on-wasm/) <!-- .element: class="fragment" data-fragment-index="4" -->
</script>
</section>
<section data-markdown>
<script type="text/template">
### Rust Front Web : wasm-pack
![wasm-pack](./images/wasm-pack-logo.png)
- Génération automatique du binding Rust/Js<!-- .element: class="fragment" data-fragment-index="1" -->
- Enrobage dans un module npm !! <!-- .element: class="fragment" data-fragment-index="2" -->
- Binding Typescript <!-- .element: class="fragment" data-fragment-index="3" -->
- Tests automatisés avec moteurs Firefox et Chrome <!-- .element: class="fragment" data-fragment-index="4" -->
- Passage en toolchain stable avec Rust 2018 edition <!-- .element: class="fragment" data-fragment-index="5" -->
</script>
</section>
<section data-markdown>
<textarea data-template>
### Pourquoi Durs ?
![duniter-rs-logo](./images/duniter-rs-128x128.png)
- Pour le plaisir de le faire <!-- .element: class="fragment" data-fragment-index="1" -->
- Sécurité par la diversité (pas les mêmes failles) <!-- .element: class="fragment" data-fragment-index="2" -->
- Haute dispo (relaye si bug critique sur l'autre implé) <!-- .element: class="fragment" data-fragment-index="2" -->
- Oblige des spec DUP plus détaillés (dc moins de bug) <!-- .element: class="fragment" data-fragment-index="3" -->
- 2 points de vues réduit drastiquement les oublis<!-- .element: class="fragment" data-fragment-index="3" -->
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Pourquoi Durs ?
![duniter-rs-logo](./images/duniter-rs-128x128.png)
- 2 fois plus de contributeurs touchables <!-- .element: class="fragment" data-fragment-index="1" -->
- Gains de Rust : <!-- .element: class="fragment" data-fragment-index="2" -->
- Passage a l'échelle (Language hautement scalable) <!-- .element: class="fragment" data-fragment-index="3" -->
- Fiabilité (memory leaks, data races) <!-- .element: class="fragment" data-fragment-index="3" -->
- Ultra-light (bien pour les nano-pc, raspi zéro, etc) <!-- .element: class="fragment" data-fragment-index="3" -->
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs actuellement
![durs-logo](./images/duniter-rs-128x128.png)
- Environ 19500 lignes de code : <!-- .element: class="fragment" data-fragment-index="1" -->
- elois ~ 15000
- nano ~ 4000
- inso ~ 500
- 16 crates (15 lib + 1 bin) <!-- .element: class="fragment" data-fragment-index="2" -->
- ~400h de travail sur 10 mois <!-- .element: class="fragment" data-fragment-index="3" -->
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs actuellement
![durs-logo](./images/duniter-rs-128x128.png)
- Synchronisation rapide depuis une BDD Duniter
- Un noeud miroir qui reste synchronisé sur le réseau
- une base de donnée indexant la blockchain
- WS2P Privé
- une interface graphique dans le terminal
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs depuis les rml11
![durs-logo](./images/duniter-rs-128x128.png)
- Ajout de la sync rapide depuis une BDD Duniter <!-- .element: class="fragment" data-fragment-index="1" -->
- Migration clap -> StructOpt & migration regex -> pest<!-- .element: class="fragment" data-fragment-index="2" -->
- Commencement de l'intégration de WS2Pv2 <!-- .element: class="fragment" data-fragment-index="3" -->
- Maturation du systèmes de modules (+ skeleton) <!-- .element: class="fragment" data-fragment-index="4" -->
- Ajout commande `keys` (inso) <!-- .element: class="fragment" data-fragment-index="5" -->
- Refonte de l'architecture du dépot <!-- .element: class="fragment" data-fragment-index="6" -->
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : ma roadmap
![durs-logo](./images/duniter-rs-128x128.png)
- Implémentation de WS2Pv2 (~printemps 2019) <!-- .element: class="fragment" data-fragment-index="1" -->
- Algo de résolution de forks (~printemps 2019) <!-- .element: class="fragment" data-fragment-index="2" -->
- Module DASA pour g1-monit v2 (~ rml13) <!-- .element: class="fragment" data-fragment-index="3" -->
- Sync cautious & export des index (~ automne 19) <!-- .element: class="fragment" data-fragment-index="4" -->
- Gui & release desktop via Azul (~rml14) <!-- .element: class="fragment" data-fragment-index="5" -->
- Maintenance du code de gestion modulaire (en continue) <!-- .element: class="fragment" data-fragment-index="6" -->
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : todo ouverts
![durs-logo](./images/duniter-rs-128x128.png)
- **Module GVA : nouvelle API Client GraphQL** <!-- .element: class="fragment" data-fragment-index="1" -->
- Module MemPool : piscine des documents <!-- .element: class="fragment" data-fragment-index="1" -->
- Module Pow : calcul des nouveaux blocs <!-- .element: class="fragment" data-fragment-index="2" -->
- Module RemoteControl : controler un noeud a distance <!-- .element: class="fragment" data-fragment-index="2" -->
- Tout autre Module que vous auriez envie de dev <!-- .element: class="fragment" data-fragment-index="3" -->
=> Vous n'êtes pas seul, transmission via framatalk. <!-- .element: class="fragment" data-fragment-index="4" -->
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : architecture dépôt
![durs-logo](./images/duniter-rs-128x128.png)
- Réorganisation des crates :
- bin/ : crates binaires (durs-server, durs-desktop)
- lib/ : crates bibliothèques (tools, core, modules)
- Création d'un module skeleton.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : le système de modules
![durs-modules-step-0](./images/durs-modules-step-0.png)
- Chaque module est cloisonné dans un thread dédié.
- Ils interagissent uniquement par channels rust.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : le système de modules
![durs-modules-step-1](./images/durs-modules-step-1.png)
- Le coeur lance les modules : ModName::start(..., ...)
- start() prend en param le RooterSender (+conf, etc)
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : le système de modules
![durs-modules-step-2](./images/durs-modules-step-2.png)
Chaque module s'enregistre auprès du router en transmettant une struct `ModuleRegistration`.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : le système de modules
![durs-modules-step-3](./images/durs-modules-step-3.png)
- Puis les modules transmettent leurs messages au router.
- 3 types de messages : Event, Request, Response.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : le système de modules
![durs-modules-step-4](./images/durs-modules-step-4.png)
- Le router filtre et relaie au(x) module(s) concernés.
- Destinataires ciblés via types de rôles et events.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs : la pratique
![durs-logo](./images/duniter-rs-128x128.png)
- Installez votre environnement de dev via [le tuto officiel](https://git.duniter.org/nodes/rust/duniter-rs/blob/dev/doc/fr/installer-son-environnement-de-dev.md) régulièrement mis a jours ([english version](https://git.duniter.org/nodes/rust/duniter-rs/blob/dev/doc/en/setup-your-dev-environment.md)).
- Développez votre module : [atelier au Média Lab](https://rml12.duniter.io/session_atelier_DURS.html) de 14h à 17h.
- Chez vous en suivant [le tuto sur les modules](https://git.duniter.org/nodes/rust/duniter-rs/blob/dev/doc/fr/developper-un-module-durs.md) en cours de rédaction.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Durs (Duniter-Rust)
![durs-logo](./images/duniter-rs-128x128.png)
Retrouvez ce diaporama sur
https://librelois.duniter.io/durs-rml12
**Merci de votre attention** <!-- .element: class="fragment" data-fragment-index="1" -->
**Place a vos questions** <!-- .element: class="fragment" data-fragment-index="2" -->
</textarea>
</section>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
dependencies: [
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },
{ src: 'plugin/notes/notes.js', async: true },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function () { hljs.initHighlightingOnLoad(); } }
],
slideNumber: true
});
</script>
</body>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
dependencies: [
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },
{ src: 'plugin/notes/notes.js', async: true },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
</html>
\ No newline at end of file
{
"name": "reveal.js",
"name": "durs-rml12",
"version": "3.7.0",
"description": "The HTML Presentation Framework",
"homepage": "http://revealjs.com",
"description": "The HTML Presentation of Durs for RML12 event.",
"homepage": "http://librelois.duniter.io/durs-rml12",
"subdomain": "revealjs",
"main": "js/reveal.js",
"scripts": {
......@@ -11,13 +11,13 @@
"build": "grunt"
},
"author": {
"name": "Hakim El Hattab",
"email": "hakim.elhattab@gmail.com",
"web": "http://hakim.se"
"name": "Elois",
"email": "elois@ifee.fr",
"web": "https://librelois.fr"
},
"repository": {
"type": "git",
"url": "git://github.com/hakimel/reveal.js.git"
"url": "https://git.duniter.org/librelois/durs-rml12"
},
"engines": {
"node": ">=4.0.0"
......@@ -39,5 +39,5 @@
"mustache": "^2.3.0",
"socket.io": "^1.7.3"
},
"license": "MIT"
"license": "AGPL-3.0"
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment