[View] [Edit] [Lock] [References] [Attachments] [History] [Home] [Changes] [Search] [Help]
[coco8] ScanApp and U8 - Italian.scc
0:00:00.000,0:00:05.960
Salve! Come va? Oggi vogliamo presentarvi
0:00:04.020,0:00:09.139
un nuovo strumento
0:00:05.960,0:00:12.450
veramente interessante disponibile in coco8:
0:00:09.139,0:00:14.309
ScanApp. ScanApp è
0:00:12.450,0:00:16.760
un semplicissimo applicativo disponibile in coco8
0:00:14.309,0:00:19.800
che Vi permette di accedere al visore del cellulare
0:00:16.760,0:00:21.840
per scannerizzare codici QR
0:00:19.800,00:00:24.960
ed utilizzarne il contenuto
0:00:21.840,0:00:26.130
per realizzare varie funzioni.
0:00:24.960,0:00:27.840
Per chiarire
0:00:26.130,0:00:31.220
presenterò alcuni esempi. Primo:
0:00:27.840,0:00:33.070
la scannerizzazione di un'immagine pre-definita
0:00:31.220,0:00:35.829
per questo esempio
0:00:33.070,0:00:37.670
attraverso la quale sarà possibile controllare
0:00:35.829,0:00:43.000
l'apertura di un message box
0:00:37.670,0:00:46.050
che si confermerà dicendo #testOK. Apriamo
0:00:43.000,0:00:47.780
ScanApp semplicemente puntando l'immagine;
0:00:46.050,0:00:50.410
il telefono apre immediatamente un message box
0:00:47.780,0:00:53.199
dicendo #testOK. Un secondo caso:
0:00:50.410,0:00:55.670
scannerizziamo un'altra immagine il cui contenuto
0:00:53.199,0:00:58.039
apre il browser del
0:00:55.670,0:01:01.500
sito U8.
0:00:58.039,0:01:03.760
Come si può capire,
0:01:01.500,0:01:06.240
ScanApp può essere utilizzato in
0:01:03.760,0:01:07.520
diverse circostanze, ma oggi voglio parlarVi
0:01:06.240,0:01:10.260
di quella che è, secondo me,
0:01:07.520,00:01:13.070
la possibilità più interessante
0:01:10.260,0:01:15.580
che ci permette di condividere la nostra
00:01:13.070,00:01:19.130
applicazione o frameworks tra
0:01:15.580,0:01:21.439
utenti di coco8 in modo agile e
0:01:19.130,0:01:23.820
moderno. Come esempio,
0:01:21.439,0:01:26.659
vi presento un'applicazione ultra-semplice
0:01:23.820,0:01:28.200
da utilizzare come demo.
0:01:26.659,0:01:30.229
E' un'applicazione che Vi chiederà
0:01:28.200,0:01:33.150
numeri interi, verificando se si tratta di
0:01:30.229,00:01:35.409
numeri primi o composti. Fino a questo momento, l'applicazione
0:01:33.150,0:01:36.670
non è installata sul mio cellulare. L'ho scritta
0:01:35.409,0:01:38.950
e scaricata sul sito di U8
00:01:36.670,0:01:41.340
come contributo. Il sito U8 provvede
0:01:38.950,0:01:44.399
l'eseguibile di QR; quindi, quando
0:01:41.340,0:01:46.470
l'utente scannerizza QR
0:01:44.399,0:01:47.310
con ScanApp, questo verrà
0:01:46.470,0:01:48.630
installato sul cellulare
0:01:47.310,0:01:52.079
ed eseguito.
0:01:48.630,0:01:52.740
Verificate: basta puntare ed è installato
0:01:52.079,0:01:57.030
ed immediatamente eseguito.
0:01:52.740,0:01:58.590
Ora possiamo provare; scriviamo qualsiasi
0:01:57.030,0:02:02.259
numero intero
0:01:58.590,0:02:03.640
ed immediatamente
0:02:02.259,0:02:05.530
l'applicazione risponde
0:02:03.640,0:02:07.350
se ho inserito un numero primo
0:02:05.530,0:02:11.140
o composto.
0:02:07.350,0:02:13.670
Osservate che, durante la fase di scansione, l'applicazione
0:02:11.140,0:02:16.680
è stata selezionata
00:02:13.670,0:02:22.040
nel sito U8; è stata scaricata
0:02:16.680,0:02:26.480
ed eseguita. Ora, l'applicazione
0:02:22.040,0:02:35.680
si trova sul mio cellulare
0:02:26.480,0:02:37.890
e reperibile mediante l'icona "Smalltalk run".
0:02:35.680,0:02:45.910
L'applicazione è stata scaricata ed installata
00:02:37.890,0:02:48.569
nel cellulare come componente di coco8.
0:02:45.910,0:02:50.769
Ciò è particolarmente interessante perchè trasforma
00:02:48.569,0:02:53.489
il sito U8 in una specie di magazzino di
0:02:50.769,0:02:55.680
tutte le contribuzioni dove possono essere caricate
0:02:53.489,0:02:57.500
le applicazioni o i frameworks e ogni
0:02:55.680,0:03:00.790
utente di coco8 può scaricarle
0:02:57.500,0:03:04.989
semplicemente puntando
0:03:00.790,0:03:11.920
il codice QR con ScanApp.
0:03:04.989,0:03:15.780
Come potete vedere, U8 fornisce l'applicativo QR
0:03:11.920,00:03:19.250
per ogni contribuzione. Ora, faremo una brevissima
0:03:15.780,0:03:21.450
presentazione di come scrivere
0:03:19.250,0:03:24.579
l'esempio dell'applicazione demo e come pubblicarla
0:03:21.450,0:03:26.660
come contribuzione.
0:03:24.579,0:03:27.820
In questo caso, l'applicazione
0:03:26.660,0:03:29.640
è molto semplice da scrivere.
0:03:27.820,0:03:34.060
Diamo un'occhiata
0:03:29.640,0:03:36.620
al codice.
0:03:34.060,0:03:39.349
La classe principale della nostra
0:03:36.620,0:03:42.209
applicazione è PrimeViewController.
0:03:39.349,0:03:43.760
una sotto classe di UIViewController.
0:03:42.209,0:03:47.020
Per chi non abbia familiarità
0:03:43.760,0:03:49.569
con la programmazione iOS, diciamo
00:03:47.020,0:03:52.330
che UIViewController è un
0:03:49.569,0:03:56.330
MVC controller che funziona anche
0:03:52.330,0:03:59.370
come ViewManager. Osserviamo due
0:03:56.330,0:04:03.209
o tre metodi interessanti di questa classe.
0:03:59.370,0:04:06.160
Il primo è #viewDidLoad. Questo metodo è chiamato
0:04:03.209,0:04:08.810
quando l'applicazione sta per essere caricata
0:04:06.160,0:04:11.160
quindi questo è un buon punto
0:04:08.810,0:04:14.290
per definire widgets e layout.
0:04:11.160,0:04:16.410
Possiamo vedere
0:04:14.290,0:04:18.620
la definizione della label
0:04:16.410,0:04:21.489
dove viene richiesto
0:04:18.620,0:04:24.540
un numero intero. Un campo di testo
0:04:21.489,0:04:26.979
dove inseriremo il numero intero.
0:04:24.540,0:04:28.970
Un'altra label per
0:04:26.979,0:04:31.410
mostrare il risultato del test di primalità.
0:04:28.970,0:04:33.680
In altre parole, dove sarà mostrato
0:04:31.410,0:04:40.050
il messaggio che specifica
0:04:33.680,0:04:41.550
se si tratta di un numero intero o composto.
0:04:40.050,0:04:44.870
In questo metodo vengono configurati tutti i widget utilizzati.
0:04:41.550,0:04:49.860
Vediamo il dettaglio più importante
0:04:44.870,00:04:51.280
della configurazione del campo di testo.
0:04:49.860,0:04:52.020
Qui, viene usata una importante proprietà
0:04:51.280,0:04:56.789
che è
0:04:52.020,0:04:59.030
il tipo di keyboard.
0:04:56.789,0:05:01.850
In questo caso, utilizzando il tipo 4
0:04:59.030,0:05:04.050
corrisponde a richiedere
0:05:01.850,0:05:06.630
un tipo numerico. Ciò significa
0:05:04.050,0:05:09.800
che ogni volta che l'utente tocca
0:05:06.630,0:05:12.530
questo tipo di campo,
0:05:09.800,0:05:15.510
verrà presentata una tastiera numerica
0:05:12.530,0:05:17.570
evitando così che
0:05:15.510,0:05:20.289
l'utente fornisca valori non numerici
0:05:17.570,0:05:24.039
evitando in tal modo di dover
0:05:20.289,0:05:25.750
gestire le eccezioni relative.
0:05:24.039,0:05:29.490
Un altro dettaglio importante
0:05:25.750,0:05:31.810
nella configurazione è che
0:05:29.490,0:05:36.960
siamo automaticamente collegati
0:05:31.810,0:05:40.250
all'evento #editingChanged per ogni azione #inputTextoChanged:
0:05:36.960,0:05:44.419
Questo caso vuol dire? Significa
0:05:40.250,0:05:45.820
che ogni volta che il valore cambia,
0:05:44.419,0:05:50.930
per l'inserimento di dati o cancellazioni
0:05:45.820,0:05:54.070
di ogni carattere o numero
0:05:50.930,0:05:54.970
verrà attivato il messaggio
0:05:54.070,0:06:02.330
#inputTextChanged:
0:05:54.970,0:06:07.220
Vediamo ora cosa vuol dire #inputTextChanged:
0:06:02.330,0:06:10.110
Come abbiamo detto, il metodo viene attivato ogni volta
00:06:07.220,0:06:13.510
che il contenuto del campo fornito viene modificato.
0:06:10.110,0:06:19.660
Qui, come potete vedere,
0:06:13.510,0:06:22.290
l'input è testato per la sua propietà primale.
0:06:19.660,0:06:25.920
Il dato fornito è convertito
0:06:22.290,0:06:29.530
in numero e quindi
0:06:25.920,0:06:31.800
il metodo #testPrimality: è richiamato
0:06:29.530,0:06:36.450
verificando se il numero è primo
0:06:31.800,0:06:39.330
permettendo di fornire l'indicazione
0:06:36.450,0:06:43.030
che mostra se il numero è primo
0:06:39.330,0:06:44.310
o composto. Qui ci sono un'altro paio
0:06:43.030,0:06:46.570
di righe che vale la pena di guardare.
0:06:44.310,0:06:50.900
Qui, ad esempio, aggiungo
0:06:46.570,0:06:53.480
il metodo #isPrime della classe Number, che ritorna true o false
0:06:50.900,0:06:53.920
in funzione del fatto che
0:06:53.480,0:06:56.450
il numero sia primo o no.
0:06:53.920,0:06:59.300
Qui possiamo vedere due metodi
0:06:56.450,0:07:00.180
che offrono alternative
0:06:59.300,0:07:04.270
nell'esecuzione dell'applicazione
0:07:00.180,0:07:07.680
una volta installata in coco8.
0:07:04.270,0:07:11.660
Le ultime righe
0:07:07.680,0:07:15.920
dicono a coco8 di eseguire l'applicazione
0:07:11.660,0:07:16.920
una volta caricata
0:07:15.920,0:07:22.420
dai contributori U8.
0:07:16.920,0:07:24.360
Ok, questo è tuto per quanto riguarda la codifica
0:07:22.420,00:07:28.170
Ora dobbiamo semplicemente eseguire
0:07:24.360,0:07:33.360
la compilazione del codice S8
0:07:28.170,0:07:35.979
in Javascript.
0:07:33.360,0:07:41.680
L'ultimo passo è
0:07:35.979,0:07:54.240
caricare la contribuzione al sito U8; vediamo come.
0:07:41.680,0:08:00.580
Dobbiamo esserci loggati al sito U8.
0:07:54.240,0:08:03.139
Andiamo a Start Coding e clicchiamo la croce,
0:08:00.580,0:08:07.270
il segno più (+), senza cliccare sul bottone
0:08:03.139,0:08:09.439
Start Coding
0:08:07.270,0:08:11.039
in modo tale che sia presentato un menu
0:08:09.439,0:08:13.279
con diverse opzioni per iniziare la contribuzione;
0:08:11.039,0:08:17.930
in questo caso
0:08:13.279,0:08:20.169
scegliamo iOSApp. Questa opzione
0:08:17.930,0:08:22.389
crea una contribuzione
0:08:20.169,0:08:25.770
generando un
0:08:22.389,0:08:26.710
templete per la nostra
0:08:25.770,0:08:32.329
contribuzione.
0:08:26.710,0:08:34.829
Clicchiamo su edit
0:08:32.329,0:08:37.870
per modificare il titolo
0:08:34.829,00:08:41.240
selezioniamo un'immagine
0:08:37.870,0:08:42.969
per rappresentare l'applicazione e carichiamo
0:08:41.240,0:08:47.529
i files della nostra contribuzione.
0:08:42.969,0:08:53.070
E' importante dire
0:08:47.529,0:08:56.269
che ScanApp non accetta
0:08:53.070,0:09:00.760
files di caricamento generici. Accetta solo
0:08:56.269,0:09:07.390
files con nomi tipo index.app.st
0:09:00.760,0:09:13.820
o index.app.js o
0:09:07.390,0:09:15.649
index.app.st.js; quindi,
0:09:13.820,0:09:21.079
dobbiamo caricare qualcosa con questo
0:09:15.649,0:09:25.260
tipo di nomi. Se carichiamo un file .st
0:09:21.079,0:09:32.329
(un file Smalltalk), questo verrà compilato come javascript
0:09:25.260,0:09:37.470
nell'applicazione. Se caricate un file .js
0:09:32.329,0:09:39.630
questo verrà accettato come codice compilato.
0:09:37.470,00:09:41.500
Per far sì che i nomi siano conformi alle regole
0:09:39.630,0:09:43.550
possiamo creare uno script
0:09:41.500,0:09:46.920
per generare l'output
0:09:43.550,0:09:50.140
con nomi conformi alle regole; oppure una volta
0:09:46.920,0:09:54.090
generati files di tipo js (come nel mio caso)
0:09:50.140,0:10:00.180
sono stati generati prime.st.js,
0:09:54.090,0:10:03.310
prime8.st.js e
0:10:00.180,0:10:08.600
io li ho rinominati in index.app.st.js
0:10:03.310,0:10:10.670
Per caricarli
0:10:08.600,0:10:14.590
come contribuzione per far sì
0:10:10.670,0:10:20.250
che ScanApp li trovi e li possa eseguire.
0:10:14.590,0:10:24.620
Qui vediamo che U8
0:10:20.250,0:10:27.510
ha generato l'immagine di QR
0:10:24.620,0:10:31.350
e quindi ora si tratta solo di
0:10:27.510,0:10:33.000
salvare la contribuzione, pubblicarla
0:10:31.350,0:10:35.780
e diffonderla.
0:10:33.000,0:10:39.110
Bene, per oggi è finita;
0:10:35.780,0:10:41.800
per ogni dubbio non esitate
00:10:39.110,0:10:50.400
a contattarmi attraverso la lista smaltalking
0:10:41.800,0:10:50.400
Grazie: ci vediamo!