[View] [Edit] [Lock] [References] [Attachments] [History] [Home] [Changes] [Search] [Help]
[coco8] ScanApp and U8 - Spanish.scc
0:00:00.000,0:00:05.960
hola cómo están hoy les quiero mostrar
0:00:04.020,0:00:09.139
una nueva característica o capacidad que
0:00:05.960,0:00:12.450
agregamos en coco8 y que esta buenísima
0:00:09.139,0:00:14.309
se trata de ScanApp. ScannApp es una
0:00:12.450,0:00:16.760
aplicación sencilla incluida coco8
0:00:14.309,0:00:19.800
que nos permite accediendo a la cámara de
0:00:16.760,0:00:21.840
nuestro teléfono escanear códigos QR y
0:00:19.800,00:00:24.960
según el contenido que estos códigos QR
0:00:21.840,0:00:26.130
tengan, actuar en consecuencia.
0:00:24.960,0:00:27.840
Para que se entienda de qué estoy hablando
0:00:26.130,0:00:31.220
voy a mostrar un par de ejemplos. Primero
0:00:27.840,0:00:33.070
vamos a escanear una imagen preparada
0:00:31.220,0:00:35.829
especialmente para este test, cuyo
0:00:33.070,0:00:37.670
contenido va a determinar que se abra un
0:00:35.829,0:00:43.000
cartelito en nuestro teléfono que diga que
0:00:37.670,0:00:46.050
el test estuvo ok. Vamos a probar, abrimos
0:00:43.000,0:00:47.780
ScanApp apuntamos a la imagen y nuestro
0:00:46.050,0:00:50.410
teléfono inmediatamente abre el cartelito
0:00:47.780,0:00:53.199
que les comentaba. Como segundo ejemplo
0:00:50.410,0:00:55.670
vamos a escanear otra imagen cuyo contenido va
0:00:53.199,0:00:58.039
a determinar que nuestro teléfono vaya
0:00:55.670,0:01:01.500
al sitio web de U8,
0:00:58.039,0:01:03.760
aquí está. Bueno como se deben estar
0:01:01.500,0:01:06.240
imaginando ScanApp tiene múltiples
0:01:03.760,0:01:07.520
posibilidades de uso, pero hoy voy a hablar
0:01:06.240,0:01:10.260
de la que a mí me parece la más
0:01:07.520,00:01:13.070
interesante de todas que es la capacidad
0:01:10.260,0:01:15.580
que nos brinda de distribuir nuestras
00:01:13.070,00:01:19.130
aplicaciones o frameworks entre los usuarios
0:01:15.580,0:01:21.439
de coco8 de un modo simple ágil y
0:01:19.130,0:01:23.820
moderno. Como ejemplo de esto les voy a
0:01:21.439,0:01:26.659
mostrar una mini aplicación súper
0:01:23.820,0:01:28.200
simple que hice como demo. Se trata de
0:01:26.659,0:01:30.229
una aplicación que nos pide números
0:01:28.200,0:01:33.150
enteros y nos dice si son primos o
0:01:30.229,00:01:35.409
compuestos. Esta app no esta en este momento
0:01:33.150,0:01:36.670
instalada en mi telefono. La escribí, la
0:01:35.409,0:01:38.950
subí al sitio U8 como
00:01:36.670,0:01:41.340
contribución. U8 me provee de la
0:01:38.950,0:01:44.399
imagen con el código qr y bastará que
0:01:41.340,0:01:46.470
un usuario de coco8 escanee esta imagen
0:01:44.399,0:01:47.310
con ScanApp para que mi aplicacion se
0:01:46.470,0:01:48.630
instale en su teléfono y
0:01:47.310,0:01:52.079
automáticamente se ejecute.
0:01:48.630,0:01:52.740
Fíjense, apunto, se instaló y se
0:01:52.079,0:01:57.030
ejecutó.
0:01:52.740,0:01:58.590
Acá podemos probarla, escribimos algún
0:01:57.030,0:02:02.259
numero entero
0:01:58.590,0:02:03.640
y a medida que vamos escribiendo la
0:02:02.259,0:02:05.530
aplicación me va diciendo si el
0:02:03.640,0:02:07.350
número que estoy escribiendo es primo o
0:02:05.530,0:02:11.140
compuesto.
0:02:07.350,0:02:13.670
Fíjese que al escanear la aplicación
0:02:11.140,0:02:16.680
se buscó entre las contribuciones
00:02:13.670,0:02:22.040
que estan en U8. Se bajó al teléfono
0:02:16.680,0:02:26.480
y se ejecutó. Ahora la aplicación ya está
0:02:22.040,0:02:35.680
en mi telefono y la puedo encontrar por
0:02:26.480,0:02:37.890
ejemplo entrando en Smalltalk, si, la
0:02:35.680,0:02:45.910
aplicación ya se bajo y quedó en mi
00:02:37.890,0:02:48.569
teléfono como parte de cococ8.
0:02:45.910,0:02:50.769
Esto es sumamente interesante pues transforma
00:02:48.569,0:02:53.489
a U8 en una especie de store
0:02:50.769,0:02:55.680
contribuciones que podemos subir
0:02:53.489,0:02:57.500
nuestras apps o frameworks y cualquiera
0:02:55.680,0:03:00.790
podrá bajarselas, cualquiera que tenga
0:02:57.500,0:03:04.989
coco8, simplemente apuntándole al
0:03:00.790,0:03:11.920
código qr con el ScanApp.
0:03:04.989,0:03:15.780
Como podemos ver U8 provee el código qr para cada
0:03:11.920,00:03:19.250
contribución. Ahora le voy a resumir un
0:03:15.780,0:03:21.450
paso a paso de cómo escribir una app como
0:03:19.250,0:03:24.579
ésta que hice de demo y publicarla
0:03:21.450,0:03:26.660
como contribución. En el caso de esta
0:03:24.579,0:03:27.820
aplicación se trata de algo muy simple
0:03:26.660,0:03:29.640
para programar.
0:03:27.820,0:03:34.060
Vamos a dar una mirada rápida al
0:03:29.640,0:03:36.620
código.
0:03:34.060,0:03:39.349
La clase principal de nuestra
0:03:36.620,0:03:42.209
aplicación es PrimeViewController
0:03:39.349,0:03:43.760
una subclase de UIViewController
0:03:42.209,0:03:47.020
para los que no estén familiarizados
0:03:43.760,0:03:49.569
con la programación iOS les cuento que
00:03:47.020,0:03:52.330
UIViewController es básicamente un
0:03:49.569,0:03:56.330
controller de MVC, que además funciona
0:03:52.330,0:03:59.370
como ViewManager. Tengo en esta clase 2
0:03:56.330,0:04:03.209
ó 3 métodos que vale la pena mostrarles.
0:03:59.370,0:04:06.160
primero es #viewDidLoad este método es invocado
0:04:03.209,0:04:08.810
cuando la vista está recién cargada
0:04:06.160,0:04:11.160
por lo que vamos a aprovechar aquí para
0:04:08.810,0:04:14.290
definir los widgets que tendrá y el layout
0:04:11.160,0:04:16.410
que tendrá. Podemos ver la
0:04:14.290,0:04:18.620
definición de un label que nos pedirá
0:04:16.410,0:04:21.489
que ingresemos un
0:04:18.620,0:04:24.540
numero entero, la definición de un text field
0:04:21.489,0:04:26.979
en donde ingresaremos el número entero y
0:04:24.540,0:04:28.970
la de otro label donde se
0:04:26.979,0:04:31.410
presentará resultado del test de
0:04:28.970,0:04:33.680
primalidad, es decir donde aparecerá el
0:04:31.410,0:04:40.050
cartel que dirá primo o compuesto, o
0:04:33.680,0:04:41.550
prime y composite.
0:04:40.050,0:04:44.870
En este método configuramos cada widget.
0:04:41.550,0:04:49.860
Veamos los detalles más importantes de
0:04:44.870,00:04:51.280
la configuración del text field.
0:04:49.860,0:04:52.020
Una property importante que seteamos
0:04:51.280,0:04:56.789
acá es
0:04:52.020,0:04:59.030
keyboard type, o sea tipo de teclado.
0:04:56.789,0:05:01.850
En este caso estamos seteando tipo 4
0:04:59.030,0:05:04.050
esto significa que esté campo nos va a
0:05:01.850,0:05:06.630
presentar un teclado numérico. Quiere
0:05:04.050,0:05:09.800
decir que cada vez que el usuario toque
0:05:06.630,0:05:12.530
este campo de texto, este text field el
0:05:09.800,0:05:15.510
teclado que aparecerá será solo numérico
0:05:12.530,0:05:17.570
evitandonos la posibilidad
0:05:15.510,0:05:20.289
que el usuario ingrese un texto que no
0:05:17.570,0:05:24.039
sean numérico y tengamos que manejar
0:05:20.289,0:05:25.750
las excepciones correspondientes.
0:05:24.039,0:05:29.490
Otro detalle importante en esta
0:05:25.750,0:05:31.810
configuración es que acá estamos
0:05:29.490,0:05:36.960
asociando al evento
0:05:31.810,0:05:40.250
#editingChanged la acción #inputTextoChanged.
0:05:36.960,0:05:44.419
¿Qué significa esto? significa que cada
0:05:40.250,0:05:45.820
vez que cambie el texto del campo, o sea
0:05:44.419,0:05:50.930
que el usuario ingrese o borre
0:05:45.820,0:05:54.070
algún carácter, algún numero, se
0:05:50.930,0:05:54.970
invocará al método
0:05:54.070,0:06:02.330
#inputTextChanged.
0:05:54.970,0:06:07.220
Veamos entonces el metodo #inputTextChanged,
0:06:02.330,0:06:10.110
este método, como dijimos, se invoca cada vez que se
00:06:07.220,0:06:13.510
modifica el contenido del text field
0:06:10.110,0:06:19.660
acá lo que hacemos entonces es, como ven,
0:06:13.510,0:06:22.290
testear la primalidad de lo que se ingresó.
0:06:19.660,0:06:25.920
Se convierte texto ingresado a
0:06:22.290,0:06:29.530
numeros y luego se invoca el método
0:06:25.920,0:06:31.800
#testPrimality: este método
0:06:29.530,0:06:36.450
le pregunta al number si es primo
0:06:31.800,0:06:39.330
y según la respuesta muestra en el label de
0:06:36.450,0:06:43.030
resultado la palabra prime o la
0:06:39.330,0:06:44.310
palabra composite. Acá hay algunas
0:06:43.030,0:06:46.570
líneas más que vale la pena mostrar
0:06:44.310,0:06:50.900
aquí por ejemplo agregue en la clase
0:06:46.570,0:06:53.480
Number el método #isPrime que responde true o false
0:06:50.900,0:06:53.920
según si el receptor es o no un número
0:06:53.480,0:06:56.450
primo.
0:06:53.920,0:06:59.300
Acá podemos ver estos dos otros dos
0:06:56.450,0:07:00.180
métodos que me proveen distintas formas de
0:06:59.300,0:07:04.270
ejecutar la app
0:07:00.180,0:07:07.680
una vez que está instalada de coco8 y
0:07:04.270,0:07:11.660
estas líneas del final son para
0:07:07.680,0:07:15.920
instruir a coco8 para que ejecute la app
0:07:11.660,0:07:16.920
una vez que es cargada desde la
0:07:15.920,0:07:22.420
contribución.
0:07:16.920,0:07:24.360
Bueno esto ha sido todo en cuanto al
0:07:22.420,00:07:28.170
código. Ahora lo que queda es
0:07:24.360,0:07:33.360
hacer el build para compilar nuestro código
0:07:28.170,0:07:35.979
a javascript
0:07:33.360,0:07:41.680
Nos queda ahora el último paso que es
0:07:35.979,0:07:54.240
el de subir la contribución a U8, veamos como.
0:07:41.680,0:08:00.580
entramos a U8 nos logueamos.
0:07:54.240,0:08:03.139
Vamos a Start Coding elegimos de la cruz, o sea
0:08:00.580,0:08:07.270
el signo +, ojo no elijan el botón
0:08:03.139,0:08:09.439
Start Coding sino el signo + de este
0:08:07.270,0:08:11.039
modo nos aparece un menu con distintas
0:08:09.439,0:08:13.279
opciones para iniciar una contribución
0:08:11.039,0:08:17.930
en nuestro caso
0:08:13.279,0:08:20.169
elegiremos iOSApp. Esta opción lo
0:08:17.930,0:08:22.389
que hace es crear una contribución como
0:08:20.169,0:08:25.770
fork de una que toma como plantilla
0:08:22.389,0:08:26.710
como template base para nuestra
0:08:25.770,0:08:32.329
contribución
0:08:26.710,0:08:34.829
acá hacemos clic en edit y entonces
0:08:32.329,0:08:37.870
podemos editar el título la
0:08:34.829,00:08:41.240
descripción, elegir una imagen que
0:08:37.870,0:08:42.969
represente a nuestra app y subir los
0:08:41.240,0:08:47.529
archivos que conforman nuestra
0:08:42.969,0:08:53.070
contribución. Es importante comentarles
0:08:47.529,0:08:56.269
que es ScanApp no va a tomar cualquier
0:08:53.070,0:09:00.760
archivo subamos aca sino que busca un
0:08:56.269,0:09:07.390
archivo que tenga el nombre 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, por lo que
0:09:13.820,0:09:21.079
debemos subir algo con alguno de esos
0:09:15.649,0:09:25.260
nombres. Si subimos un st o sea un archivo
0:09:21.079,0:09:32.329
Smalltalk se compilará a javascript
0:09:25.260,0:09:37.470
en nuestro dispositivo. Si subimos un js ya lo
0:09:32.329,0:09:39.630
tomará como código compilado.
0:09:37.470,00:09:41.500
Para que los nombres sean los correctos
0:09:39.630,0:09:43.550
podemos preparar los scripts que hacen el
0:09:41.500,0:09:46.920
build de forma que generen la salida con
0:09:43.550,0:09:50.140
esos a nombres, o bien una vez generado
0:09:46.920,0:09:54.090
el punto js, como en mi caso por ejemplo se
0:09:50.140,0:10:00.180
generó prime.st.js,
0:09:54.090,0:10:03.310
prime8.st.js lo
0:10:00.180,0:10:08.600
renombré index.app.st.js
0:10:03.310,0:10:10.670
para poder subirlo
0:10:08.600,0:10:14.590
como contribución de forma tal
0:10:10.670,0:10:20.250
que ScanApp lo encuentre y lo ejecute.
0:10:14.590,0:10:24.620
acá podemos ver que U8 nos
0:10:20.250,0:10:27.510
género la imagen con el código QR
0:10:24.620,0:10:31.350
así que todo listo es cuestión
0:10:27.510,0:10:33.000
de salvar la contribución, publicarla
0:10:31.350,0:10:35.780
difundirla
0:10:33.000,0:10:39.110
bueno esto ha sido todo por hoy
0:10:35.780,0:10:41.800
cualquier duda que tengan no duden
00:10:39.110,0:10:50.400
en consultar a través de la lista de smalltalking
0:10:41.800,0:10:50.400
muchas gracias y hasta la próxima.