39

Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Embed Size (px)

Citation preview

Page 1: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple
Page 2: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Mon projet

Minitel

projetperso

jusqu’auMinitel 2

indépendantde l’OS

peu ou pasd’installation

éditeurde pages

rendufidèle

émuler un

Page 3: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Petite histoire

● Retard téléphonique 1960-1970Plusieurs mois pour obtenir une ligne, sketch du 22 à Asnières

● Rattrapage téléphoniquePTT 1er investisseur en 1972Réseau entièrement automatisé en 1978

● Après-rattrapageTranspac, Minitel, monétique

Fernand Raynaud, Le 22 à Asnières − 1966

Page 4: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Transpac / X.25

● Réseau publicpoint à point, commutation de paquets, circuits virtuels

● Multi-débitde 50 à 640000 bit/s

● Hétérogèneaccès direct, modem, telex

● Nouvelle tarificationindépendante de la distance, dépendante du débit et du temps

● Ouvert en 1978

Page 5: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

En 1981...

Page 6: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

... élections

Page 7: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Minitel?

Page 8: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Après-rattrapge

Page 9: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Un Minitel

● Terminal passifdistribué gratuitement, noir & blanc, coûtait 1000 F à fabriquer

● Norme Videotexutilisée aussi pour le télétexte

● 40×25 caractèresalphabétiques ou semi-graphiques,attributs

● 8 niveaux de grisréellement 8 couleurs

● 1200 bit/s120 caractères par seconde !

Page 10: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Schéma de principe

 300 - 4800 bps

75 bps

1200 bps

vidéoµc

modem

Minitel 14 ko

VRAM

4 koROM

128 oRAM

Page 11: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Semi-graphique ?

● Jeu de caractères spéciaux64 combinaisons de 2×3

● 2 couleurs maximumpar bloc de 2×3

● Pixels de tailles différentes2/3 des pixels ne sont pas carrés !

● Résolution : 80×72

3

3

4

44

10

8

Page 12: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Attributs

● Couleurs d’avant-plan, d’arrière-plannoir, bleu, rouge, magenta, vert, cyan, jaune, blanc

● Clignotementde l’avant-plan

● Inversion vidéoavant-plan ↔arrière-plan

● Soulignement● 4 tailles

1×/2× largeur/hauteur

● Attention aux contraintes !

hellohello

hellohello

AA→

Page 13: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Videotex

● Flux continuaucune contrainte de temporalité → automate !

● Basé sur la norme Ascii7 bits, différence code de contrôle vs donnéequelques différences (^, {, }, ~, `)

● Commandes = code de contrôleles paramètres des commandes sont obligatoirement des codes de données, espace = caractère spécial

● Caractères supplémentairesutilisés pour les caractères accentués/spéciaux

0123456789ABCDEF

0 1 2 3 4 5 6 7

codes de contrôlecodes de données

!!!!"#$%&'()*+,-.

!!!V>=<!!!Y!!!:9876543210 @

ABCDEFGHIJ

KLMNO

PQRSTUVWXYZ[

]↑

onmlkjihgfedcba

pqrstuvwxyz

Page 14: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Videotex, exemple

Codeurs en Seine

effacement de l’écranligne 12, colonne 5double tailleinversion vidéoavant-plan jaune

Page 15: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Mémoire de page

● Videotex est lié au processeur graphiquefamille EF934x, origine des contraintes

● Chaque élément est encodé sur 2 octets40×25×2 = 2000 octets

A

A

A

A

A

A A

A A1..3

1..3

0

numéro

numéro

numéro

numéro128

128

96

96

1

449 caractères affichables

Page 16: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple
Page 17: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Editeur de pages

ruban

émulateur rendu simultané

formulaire contextuel

arborescencedes éléments

Page 18: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Séparation

présentation − CSScontenu − texte + structure

imports

logique − JavaScript

Page 19: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Import HTML

Page 20: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Balise custom

● Balise personnalisée● Import côté client

fonctionne en local sous Firefox mais pas Chrome

● Chargement asynchrone / parallèle

Page 21: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Promesse

Toutes les promesses doivent être tenues

La promesse est tenue

La promesse n’est pas tenue

Appel asynchrone

Page 22: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Ruban

Page 23: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Fragments SVG

● Définition → SVG<view id="file-import" viewBox="96 -320 32 32" />⚠ Coordonnée Y inversée !

● Utilisation → HTML, CSS<img src="icon.svg#file-import" />

Page 24: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Callbacks

● Liaison GUI → application● Événements jsTree

déjà générés par jsTree

● Événements rubanentraîne généralement la création d’un élément

● Événements formulaireforce le rafraîchissement de la fenêtre d’émulation

clicmodification

glisser-déposersélectionsuppression

Page 25: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Attribut de donnée

● Script autocallback.jsapparie les événements d’un élément à une callback

● Définition<button data-call="onExport">Export</button>

● Utilisationclass MiEditPage { constructor() { ribbon.autocallback(this) }

onExport() { . }}

Page 26: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Editeur graphique

Page 27: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Calques

Calque de dessin

Calque de prévisualisation

Calque de recopie

Calque de grille

Calque des erreurs

Page 28: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Empilage

● Peu importe le type de balisecanvas, div…

● L’empilage simplifie la vie● 1 calque = 1 type d’objet● Empilage du navigateur très rapide● Vidage de calque très rapide

● Insensibiliser un calque aux événementsEn CSS : pointer-events: none

Page 29: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Générateur

● Suppression des forfor(let i = 0; i < this.grid.cols; i++) { /* . */}

● Remplacement par des rangerange(this.grid.cols).forEach(i = { /* . */})

● Différencegestion des sorties de boucle,code exécuté = un appel de fonction

Page 30: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Générateur

générateur

interruption

Page 31: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Web Storage

● Enregistrement dans le navigateur● à la session : sessionStorage● permanent : localStorage

● Clé-valeur● Éditable avec les outils de développement● API simple

Page 32: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Web Storage

Liste

Écriture

Suppression

Lecture

Page 33: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Web Socket

● Liaison full-duplexl’envoi des touches au serveur et l’envoi des pages du serveur au client sont asynchrones

● Client simplemais quelques soucis quand un proxy intervient…

● Serveur moins simpleApache requiert mod_wstunnel pour faire cohabiter le serveur web et les websockets

Page 34: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Client

connexion établie

message reçu

envoi d’un message

connexion sécurisée

création d’une WebSocket

Page 35: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Serveur

ouverture du port

envoi de donnéesréception de données

lancement du serveur

Page 36: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Son d'une touche

● Séparation en 2 partiesappui et relachement

● Nécessité d’une filePermet de jouer plusieurs sons simultanément

● Duplication d’un sonnode.cloneNode(true)

Page 37: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

EcmaScript 6

● Support largepubliée en juin 2015

● Plein de bons trucs !fonctions fléchées, modules, classes, portée lexicale au niveau des blocs, itérateurs et générateurs, promesses, patrons de décomposition, optimisation des appels terminaux, tableaux associatifs, ensembles, tableaux binaires, meilleur support Unicode, structures de données prédéfinies extensibles…

● Mais…implémentation des modules encore expérimentale,forEach non supporté par NodeList

Page 38: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple

Recette

● Utilisation du mode strictactivé automatiquement dans les class

● Abandon de varau profit de let et const, une seule déclaration par let/const

● Exécution asynchronene jamais bloquer l’exécution d’un script, utilisation des promesses

● Fonctions fléchéesune solution aux problèmes de this

● Abandon des points-virgules● No jQuery

sauf en cas de nécessité… jsTree

Page 39: Émuler un Minitel - Ouep.eu, le serveur de Zigazou · apparie les événements d’un élément à une callback Définition ... Éditable avec les outils de développement API simple