/
Appunti.txt
60 lines (49 loc) · 3.38 KB
/
Appunti.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Obittivo generale:
Framework per costruire extensions n per Scratch 2.0. Di base fornisce un web server che sulle porte
di interfaccia (esempio 80) fornisce la possibilità di scaricare la definizione JSON dell'estensione
e poi rimane come webservice per i servizi delle le estensioni.
Le estensioni in un primo momento saranno realizzate con il metodo dei webservice, successivamente
si potranno scarcare anche le estensioni javascript che accederanno sempre al webservice.
Il caso d'uso standard è quello di accedere al webserver e richiedere una estensione che verrà data
sotto forma di file JSON da caricare su Scratch. Una richiesta impegna il servizio (verrà data una
porta ad hoc che verrà liberata dopo un timeout di non accesso). In seguito la persistenza nel tempo
potrà essere migliorata. Il backend implementa una serie di classi per rendere semplice scrivere una
estensione lasciando al motore sotto tutta la parte di protocollo e l'implementatatore si dovrà
preccupare solo di implementare i metodi astratti per i comandi e le letture.
Le tappe sono le seguenti:
- Oggetti estensione e sensore:
-- Sensore: classe python che implemnta il sensore
-- Esetnsione: registrabile su un manager e composta di uno o più sensori
L'estensione ha un metodo che rende una istanza del servizio la quale ha i metodi start, stop
e get_description() che rende il dizionario di descrizzione (quello che poi viene trasformato
in JSON per caricarlo su Scratch)
- Convertitore Scratch 1.4 a Estensioni Scratch 2.0: Usando il parser per estensioni 1.4 costruire
Estensioni e registrarle sul manager
- Webserver delle estensioni registrate e richiesta di una istanza: Mostra le estensioni presenti,
quelle già associate all'indirizzo IP del client (in seguito utenti), permette di eliminare quelle
vecchie
- Introduzione dei vari oggetti previsti dalle estensioni Scratch 2.0 (sincroni e asincroni)
- Esempio applicazione di messaging e multiplayer
- Wrapper javascript che chiama i metodi sul server
Bisogna rivedere la struttura delle extension:
- Factory: si occupano di costruire le extension con il metodo create() che puo tornare o una
extension o una lista di extension. Possono essere temporanee o stabili e quindi esistono i
metodi register(), deregister() e registered() per registrare, deregistrare e avere un dizzionario
con i registarti.
- Definizioni: servono per costruire le factory aggiungendo le descrizioni dei componenti e
metacomponenti (and esempio i bridge). Ogni descrizione ha i metodi per aggiungere i componenti
e metacomponenti. E' possibilie costruire le prorie definizioni usando i MixIn per i componenti
che si vuole e aggiungere i propri.
- ExtensionService: Sono quelle che fanno i lavoro. Nel caso l'estensione da scrivere non usa solo
componenti base (con opportune implementazioni) ma ha anche una logica di alto livello e' necessario
sovrascrivere questa classe o implementare una logica che la pilota.
Aprire i ticket su scratch
1) Due richieste di reporter bloccanti -> dead lock
2) Sostenere i booleani bloccanti #575
3) Proporre implementazione hat come booleani bloccanti (#233)
4) Forum http://scratch.mit.edu/discuss/32/
TODO LIST:
- Risposta home servizio con json della descrizione
- supporto per i valori di default da comunicare nella desc (dovrebbero restare nella factory)
- Minisito (Flask?) con link dei servizi registrati: i servizi si registrano via web
- Fixare il microsito Flask