Presentación estetoscopio

26
Estetoscopio Envía mensajes de depuración a tu móvil desde tus aplicaciones Una aplicación nativa android desarrollada durante el curso Developing Android Apps - GDD Tenerife - 2015 https://www.udacity.com/course/developing-android-apps--ud853 Juan Ignacio Rodríguez de León @jileon en twitter

Transcript of Presentación estetoscopio

Page 1: Presentación estetoscopio

EstetoscopioEnvía mensajes de depuración a tu móvil desde tus aplicaciones Una aplicación nativa android desarrollada durante el curso Developing Android Apps - GDD Tenerife - 2015 https://www.udacity.com/course/developing-android-apps--ud853

Juan Ignacio Rodríguez de León@jileon en twitter

Page 2: Presentación estetoscopio

¿Qué hace?Muestra en pantalla mensajes enviados por UDP

Los mensajes tienes niveles, al estilo de los mensajes de Log

Los mensajes están pensados para ayudar en la depuración de código, cuando no puedes hacer un print (Por ejemplo, desarrollo en servidores)

Page 3: Presentación estetoscopio

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Page 4: Presentación estetoscopio

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Mensajes de aviso (WARNING) Nivel de amenaza indeterminado: Puede que sea un

problema para ti, o quizá no. Tranquilidad

Page 5: Presentación estetoscopio

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Mensajes de aviso (WARNING) Nivel de amenaza indeterminado: Puede que sea un

problema para ti, o quizá no. TranquilidadMensajes de error (ERROR)

La cosa pinta mal. Hay un problema y casi seguro que es culpa tuya.

Page 6: Presentación estetoscopio

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Mensajes de aviso (WARNING) Nivel de amenaza indeterminado: Puede que sea un

problema para ti, o quizá no. Sigamos tranquilosMensajes de error (ERROR)

La cosa pinta mal. Hay un problema y casi seguro que es culpa tuya.

Mensajes de pánico (PANIC) Problemón. Algo ha ido catastróficamente mal.

Ponte las pilas.

Page 7: Presentación estetoscopio

¿Cómo lo hace? (1/2)• Instala un servicio. El servicio usa un Thread

para oír datagramas UDP en el puerto 31416 • Cuando llega un mensaje el servidor lo

almacena en una base de datos SQLite • El servidor notifica a la actividad principal que

ha llegado un nuevo mensaje usando LocalBroadcast

Page 8: Presentación estetoscopio

¿Cómo lo hace? (2/2)• En la actividad principal hay un Adapter que vincula una ListView con la base de datos

• Hay un CustomView que muestra gráficamente la proporción entre los niveles de los mensajes que han llegado

Demasiado rojo mala señal

Page 9: Presentación estetoscopio

A la hora de vincular el socket UDP, Android te vincula a la dirección IP local, por lo que no acepta conexiones desde otras máquinas.

Problemas encontrados

Page 10: Presentación estetoscopio

A la hora de vincular el socket UDP, Android te vincula a la dirección IP local, por lo que no acepta conexiones desde otras máquinas.

Problemas encontrados

Solución: Hay que indicar la dirección 0.0.0.0 cuando vinculamos el socket, para que este oiga en cualquiera de las interfaces de red.

Page 11: Presentación estetoscopio

Pensaba que podía superarlo…

La verdad es que Odio a muerte no acabo de estar cómodo programando en Java. Es un inconveniente importante para desarrollar aplicaciones Android

El auténtico problema

Page 12: Presentación estetoscopio

… pero me equivocaba

Page 13: Presentación estetoscopio

No hay razones de peso para que no se pueda usar otros lenguajes que funcionen en la JVM.

Al principio probé con Scala como reemplazo. Es posible hacerlo pero resulta complicado. Conseguí compilar y ejecutar un “Hola, mundo”, pero acabé a la una de la mañana, no muy seguro de cómo lo había conseguido.*

La solución

* Estoy seguro de que personas más inteligentes que yo tendrán una experiencia diferente y podrán hacerlo con facilidad. Scala es un lenguaje excelente. No se le puede culpar por mi torpeza.

Page 14: Presentación estetoscopio

Con Groovy fue mucho más fácil. De hecho, la aplicación está desarrollada enteramente en Groovy.

Groovy es un lenguaje con capacidad funcional, dinámico y con muchísimas virtudes. Se integra muy bien con Java. Mucho más cercano a mi experiencia, que ahora mismo en un 90% de desarrollo en Python y un 10% en Javascript.

Como en todo, hay ventajas e inconvenientes.

Groovy

Page 15: Presentación estetoscopio

Ventajas de GroovyCasi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Page 16: Presentación estetoscopio

Ventajas de Groovy

Mucho más avanzado que Java: Clausuras, Intents, programación funcional, dinámico vs estático, metaclases, funciones virtuales y muchas cosas más

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Casi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

Page 17: Presentación estetoscopio

Ventajas de Groovy

Mucho más avanzado que Java: Clausuras, Intents, programación funcional, dinámico vs estático, metaclases, funciones virtuales y muchas cosas más

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Casi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

Relativamente fácil de conseguir que funcione con Android Studio. Solo hay que tocar un fichero .gradle

Page 18: Presentación estetoscopio

Ventajas de Groovy

Mucho más avanzado que Java: Clausuras, Intents, programación funcional, dinámico vs estático, metaclases, funciones virtuales y muchas cosas más

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Casi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

Relativamente fácil de conseguir que funcione con Android Studio. Solo hay que tocar un fichero .gradleMenos niveles de abstracción. Menos código. Menos objetos y clases. Más legibilidad.

Page 19: Presentación estetoscopio

Inconvenientes de GroovyHay un plugin de integración con Android Studio. Está bien pero con algún defecto. Nada importante.

Page 20: Presentación estetoscopio

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto.

Page 21: Presentación estetoscopio

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto en realidad tendría que ir en ventajas

Page 22: Presentación estetoscopio

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto eEl tipado dinámico puede ser una fuente de nuevos errores (Pero programas usando tests, ¿Verdad?)

Page 23: Presentación estetoscopio

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto eEl tipado dinámico puede ser una fuente de nuevos errores (Pero programas usando tests, ¿Verdad?)

El logo de Groovy es horrible. No, en serio. ¿En qué estaban pensando?

Page 24: Presentación estetoscopio

Inconvenientes de GroovyHay un plugin de integración con Android Studio. Está bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existe herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto eEl tipado dinámico puede ser una fuente de nuevos errores (Pero programas usando tests, ¿Verdad?)

El logo de Groovy es horrible. No, en serio. ¿En qué estaban pensando?

Page 25: Presentación estetoscopio

Qué he aprendidoGroovy Mola. Mucho.

Android (4%) (Antes: 2%)Groovy (33%) (Antes: 0%)El desarrollo en Android es muy lento, por culpa de tener que probar todo en un emulador.Todo lo que puedas desarrollar y testear fuera del emulador va en tu beneficio (Pero no es fácil)

Page 26: Presentación estetoscopio

Código fuente en:https://github.com/euribates/estetoscopio