Presentación Final CUSL (Sevilla)

Sevilla será el epicentro de la fase final del CUSL

Todo listo para presentar a Qdemos en la final del Concurso Universitario de Software Libre que tendrá lugar en Sevilla los días 15 y 16 de Mayo. Concretamente seré el primero en exponer en el grupo de la tarde… o sea después de comer y reposar :).

Si quieres saber más acerca del evento, así como el programa entero, podeis visitar el siguiente link: http://www.concursosoftwarelibre.org/1314/fase-final

Además, os adelanto en primicia la presentación que llevaré preparada. Podeis verla en:

http://cryptull.webs.ull.es/qdemos.htm

La presentación está hecha a base de CSS3, HTML5 y  JavaScript EveryWhere. Podeis ver el código de la misma en el repositorio de Qdemos, que cree una nueva rama con el código fuente de la presentación para que podais hacer con ella lo que os plazca ;-). https://github.com/Qdemos/qdemosapp/tree/presentacionCUSL/presentacionCUSL

Para la presentación hice uso de Impres.js, un framework JS que te permite crear unas presentaciones muy chulas. Os aconsejo que le echeis un vistazo: http://bartaz.github.io/impress.js/#/bored

Además de que existen diversos editores gráficos para utilizar Impress.js (tu creas de forma muy sencillita tu presentación, y te genera todos los ficheros necesarios :)). Os aconsejo en gran medida que echeis un vistazo a Strut.io (Aquí directamente el editor), seguro que lo usareis más de una vez de aquí en adelante. ¡El efecto 3D de transiciones que se consigue gracias a CSS3, mola mucho!.

Y como siempre… ¡Gracias por leer el blog!

¡Sed Felices!

 

¡Qdemos en Google Play!

Ya puedes descargar Qdemos, directamente, desde Google Play. Tras evaluar la aplicación en beta cerrada entre un grupo de gente, creo que ya está disponible (con un par de retoques que he llevado a cabo), para su lanzamiento en fase Beta en la Store de Android.

 

Click en el enalce de la imagen de Google Play para acceder a la app en el Market

 

Así que ya puedes descargarla y empezarla a usar. ¡Esperamos tu FeedBack!

 

 

 

¡2º Puesto Local y Finalista Nacional!

Así de Feliz está el Androide de Qdemos!

Pues eso… que Qdemos ha quedado en el 2º Puesto del Concurso Local de la Universidad de La Laguna del CUSL… Una fase final llena de auténticos proyectazos, en el que cualqueira podría haber sido justo vencedor. Qdemos tuvo la suerte de quedar 2º. Felicitar aquí a todos los participantes por su labor.

Pero es que además… ¡Qdemos se va a Sevilla!. Ha sido seleccionado para participar en la fase final a nivel nacional del Concurso Universitario de Software Libre. Así que a intentar hacerlo lo mejor posible, y sobre todo a colaborar para que esa fase final sea un auténtico eventazo (más allá de quienes sean los ganadores finales).

Ver el resto de finalistas de la Fase Nacional aquí.

¡Allá vamos!

Qdemos es finalista de la Fase Local del CUSL

Pues eso… ¡que el Miercoles presentaré Qdemos en la final de la fase loca del CUSL de la Laguna. Aquí está toda la info así como el resto de finalistas. ¡Nos vemos el Miercoles!

Info sacada de: http://osl.ull.es/content/fase-final-del-iv-premio-local-universidad-de-la-laguna-de-viii-concurso-universitario-de?utm_source=dlvr.it&utm_medium=twitter

INFORMACIÓN

El próximo 30 de abril a las 18:00 (en Google Calendar) tendrá lugar en el Salón de Grados de la Escuela Técnica Superior de Ingeniería Informática la fase final del IV Premio Local Universidad de La Laguna del VIII Concurso Universitario de Software Libre.

En esta fase los finalistas presentarán durante 10 minutos sus proyectos en un acto público ante el comité de evaluación. Dicha presentación versará sobre sobre los objetivos, motivaciones, experiencias y curiosidades que les ha proporcionado el desarrollo del proyecto. Al final de las mismas el comité hará públicos los proyectos ganadores.

Para no extender demasiado esta fase y después de una primera evaluación, el comité local del CUSL —formado por profesores y personal de la ETSII, personal de STIC y empresas vinculadas con el software libre— ha decidido designar como finalistas a los siguientes proyectos, de entre los 18 inscritos en el concurso.

GO Engine
Daniel Herzog, Laura Fariña Rodríguez y Eliasib Jesús García Martín
Un motor gráfico multiplataforma para poder utilizar como base a la hora de realizar videojuegos. El nombre proviene de la orientación del proyecto (GameObject Engine), basado en entidades y componentes.

LockedShield
Moisés Lodeiro Santiago
Es una aplicación tanto vía web como móvil que permite guardar de un modo seguro tus contraseñas según el nivel de seguridad que tengan.

Qdemos
Paco Martín Fernández
Aplicación Android para la creación y gestión de quedadas entre amigos, permitiendo seleccionar la mejor fecha posible acorde a todos los asistentes.

R-squared
Eduardo Nacimiento García y Andres Nacimiento
Interfaz gráfica de usuario para R orientada a facilitar la docencia de Estadística en la Universidad.

Visual Assembler Machine Simulator (VAMS)
Sergio Medina Toledo, Juan Espinosa González y Daniel García García
Aplicación web para la enseñanza de arquitecturas de computadores básicas de forma gráfica y simple.

Sin duda queremos dar la enhorabuena a los participantes que por su constancia y buen hacer han sabido llegar hasta aquí.

También queremos animar a todo el personal, estudiantes de la ETSII y amigos, así como a toda la comunidad de software libre de la Universidad de La Laguna, a participar en este acto. Tanto para arropar a los finalistas en esta última fase como para conocer de primera mano en que han estado trabajando desde que el concurso se puso en marcha en el mes de octubre.

Sin duda podemos afirmar que hay mucho potencial en lo que han hecho.

Todo listo para la Valoración en el CUSL

Pues tras estar las últimas semanas liado con cosas varias, múltiples proyectos han salido en los que estoy inmerso, participé en la II Startup Weekend Tenerife en el equipo Seiku (www.seikutales.com) con el que conseguimos 3 de los 6 premios que daban (los tres premios especiales), etc. también he dedicado huequecitos a Qdemos para afinarla y dejarla lista para la valoración por parte del jurado del Concurso Universitario de Software Libre de este año.

Finalizando la fase de desarrollo del CUSL… pero empezando la fase de lanzamiento de la Beta de Qdemos!

 

He añadido el .apk en Github: Descargar App Android para que quien quiera la pueda descargar y probar. Faltan pequeños detallitos, pero a grosso modo funciona todo. No la he publicado en Google Play (Tengo cuenta como desarrollador desde hace varios años) porque primero la quiero probar en beta cerrada (También podría haber optado por la publicaciones de betas de Google Play), antes de lanzarla al market y distribuirla oficialmente.

Como el cometido del concurso, bajo mi punto de vista, es crear código que sea reutilizable por terceros para sus proyectos propios, o mejorar este proyecto, pues me he centrado más en dejar maquetado un código ‘decente’ que en preocuparme en lanzarla en Google Play y ver la repercusión que pudiera tener. Aún así eso se hará en el futuro.

Supuestamente el Jurado del CUSL, empieza a partir del día 1 de Abril a valorar los proyectos, así que dejo todo cerrado para que valoren Qdemos!, aunque seguiré trabajando en él mientras el tiempo que me dejen libre me lo permita :). Como comentaba, lo único que le falta es probarla con personas ajenas a mí, y que empiecen a utilizarla para hacerle todas las perrerías que deseen y empezar a recibir bugs que hasta ahora no había detectado (sobre todo de interfaz de usuario e interacción).

Para la beta, que podéis descargar de aquí, he levantado mi servidor Node.js en una microinstancia de Amazon de su capa gratuita AWS. El tiempo de respuesta es realmente espectacular (el que da el servicio de Amazon), ahí tengo otros servidores míos de otras apps. Aconsejo a quién dude donde montar su servidor dedicado gratuito para probar sus ‘juguetitos’ que le echeis un ojo a AWS (que durante un año te da un servicio gratuito muy notable).

Así que podéis probar entre varios amigos la app (notar que si un amigo al que invitéis no tiene instalada la App y se ha logueado en ella, lógicamente no va a recibir la notificación push con la invitación, pero si que aparecerá como invitado) y hacerme llegar todos los fallitos con los que os encontréis, o al correo, o comentando en el blog, o lo que sería ya la repanocha, abriendo issues en GitHub.

Como siempre os dejo con un commit, en este caso el último COMMIT que he realizado preparando todo el README.md para poner el link de descarga de la versión Beta.

Esto es todo, y hasta la próxima.

Fusionando Ramas

Tras hacer un par de arreglos a algunas funcionalidades de la app (Como que no actualizaba bien en el servidor la fecha ganadora de una Qdada tras la actualización de una elección por parte de cualquier usuario de esa Qdada), me dispuse a hacer un ‘merge’ de las ramas WebServices y AppWeb.

Aspecto visual de como se trabaja con Ramas

Recordemos que la rama WebServices la cree en su momento para desarrollar toda la infraestructura del servidor y su comunicación, mediante APIs, con el cliente (en este caso la app Android). Más adelante, cree la rama de AppWeb para crear una simple Landing Page, que en un futuro sirva como página inicial de la app web de Qdemos. Hecho esto, el siguiente paso es fusionar ambas ramas, para no ir dejando funcionalidades acabadas desperdigadas por github xDD. Así que iba a fusionar ambas ramas, dejando sólo la rama de WebServices (a parte de la rama MASTER que de momento no la iba a fusionar). Hacer esta acción, es bastante sencillo con Git, quién tenga dudas puede mirar el siguiente enlace, donde lo explcian muy bien: Enlace Merge Ramas Git. Y también aquí: Ramificaciones GIT.

Pero básicamente lo que se debe hacer es:

  1. Situarse en la rama final (la que va a quedar ‘viva’, en mi caso webservices)
    • > git checkout webservices
  2. Mezclar la otra rama con esta (appweb con webservices)
    • > git merge appweb
  3. Hacer notables los cambios en GitHub (si no hay conflictos, si hay, resolverlos y seguir)
    • > git push origin webservices (Subir cambios local a GitHub)
    • > git push origin :appweb (Hacer notar a GitHub que la rama appweb ha sido eliminada)

Y ya está, con esto tenemos fusionadas ambas ramas en una sóla y podemos seguir con nuestro desarrollo.

Finalmente, como en cada post, os dejo con el commit más adelantado hasta el momento y que incluye en una sóla rama, las dos ramas que había: COMMIT

¡¡Qdemos para Android Wear!!

Pues el título lo dice todo… si ayer salía Android Wear, la API para dispositivos wearables que sacaba Google para complementar a Android en la gama de SmartWatch (en principio), pero ampliable a pulseras, etc. hoy el proyecto Qdemos participante en el concurso universitario de software libre 2014, por la Universidad de La Laguna, ya implementa la compatibilidad de las notificaciones en Android Wear. =D. Para ello, explicaremos en este post los pasados llevados a cabo y mostraremos capturas de pantalla de las notificaciones de Qdemos funcionando en ¡un smartwatch con Android Wear! (emulador). Empecemos por el principio, que este post es CANELA FINA y de elaboración 100% propia :))))). Lo primero que tuve que hacer, es que ayer mismo cuando vi la noticia de Android Wear, fui una de las primeras personas que pidió acceso a la API (de momento no es totalmente pública, están dándola poco a poco a desarrolladores… pero con el tiempo será pública), para jugar con ella y ver que se puede hacer ;-). Para pedir acceso a poder ‘jugar’ con ella tuve que solicitar permisos como Desarrollador Preview con mi cuenta de Google (la misma que tengo configurada en mi Smartphone Android como principal, ¡MUY IMPORTANTE!). Para ello tuve que rellenar el formulario siguiente: http://developer.android.com/wear/preview/signup.html En este formulario te piden pocas cosas (que no creo que de momento ni siquiera miren… ¿o sí?).

What is your Gmail or Google account email address? *
What is your name? (Optional)
What is your company name? (Optional)
If you’ve published any apps to the Google Play Store, please provide package name(s). (Optional)
e.g. com.google.test
I have read and agree to the Terms and Conditions. *

Yes, I agree

Así que metiendo tu cuenta Google (vuelvo a repetir que debe ser la misma que se tenga configurada en el Smartphone, ya que al fin y al cabo es de donde tirará). Tu nombre, Tu compañia (si tuvieras) y algún paquete o paquetes completos de las apps que tengas publicadas en Google Play (si tuvieras). Esto junto al AGREE de aceptar los términos y condiciones de uso que aparecen más arriba, que suelen ser los típicos en estos casos, te bastan para solicitar el permiso a obtener la Preview de Android Wear. Durante el día de ayer no me llegó la respuesta, pero fue esta mañana cuando al levantarme y conectar el WiFi en el móvil a eso de las 07:00 de la mañana…. ¡Tachán! mi solicitud aceptada y lista para ser procesada por mis incesantes ganas de toquetearla y ver que se puede hacer con ella. El email que te llega es el siguiente:

Hello Developer,

Thank you for signing up for the Android Wear Developer Preview.

To begin developing on Android Wear, you’ll need the Preview Support library and the Android Wear Preview app for your mobile device. Follow these steps:

  • Download the Preview Support library and samples.

  • Opt-in to become a tester of the Android Wear Preview app in the Google Play Store. After opt-in, it could take up to 24 hours for the Android Wear Preview app to be accessible to you in Google Play. Make sure the opt-in user account is the same user signed in to Google Play.

Refer to the Android Wear Developer Get Started page for details. Since this is a preview release, please do not publicly distribute apps built with the Preview library. Also note that the APIs are potentially subject to change and you will need to modify your apps when they are released out of preview.

Share your experiences and ask questions by joining the Android Wear Developers Google+ Community. We look forward to seeing how your apps take advantage of these new APIs to provide innovative new user experiences!

— The Android Wear Team

Y adjunto a él un comprimido que contiene apps de ejemplos y la API de Android Wear. Este archivo también se puede descargar desde la dirección que linkan en la palabra Download, que yo he deslinkado en este post. El correo tiene referencias a links en algunas palabras (ayuda, documentación, etc.) que también he deslinkado en el post.

Una vez que nos llega esto, tendremos que configurarlo todo antes de ‘picar teclas’. En el siguiente enlace están los pasos descritos a la perfección en idioma anglosajón que yo en este post explicaré en castellano: http://developer.android.com/wear/preview/start.html

Partimos de la base que ya hemos trabajado con Android (o bien en Eclipse o en Android Studio) y lo tenemos todo configurado (IDE, SDK, ADT, etc.). También tenemos en cuenta que somos miembros de Android Wear Developer Preview, o sea solicitamos el permiso que he descrito antes y nos han aceptado a través del correo que también he mencionado.

A partir de aquí, explicaré todo lo que he realizado teniendo en cuenta que he utilizado Android Studio, que es la plataforma que utilizo para Qdemos. Pero si queremos hacerlo para Eclipse, es prácticamente similar, como digo está todo bien explicado en el link anterior (tanto para Eclipse como para Android Studio).

Configurando el entorno

  1. Deberemos verificar que tenemos instalada como mínimo (a día de hoy la más actual) Android SDK Tools revisión 22.6. Eso lo podemos observar (en Android Studio) en:  Tools > Android > SDK Manager. Si no fuera así, deberemos actualizar a esta versión o superior y reiniciar el Android Studio.
  2. Debemos verificar que tenemos instalado el SDK de Android 4.3 o superior (A día de hoy van por la versión 4.4.2), y que este esté en el terminal físico o virtual en el que depuramos nuestra app. Yo tengo en mi Samsung Galaxy S3 la versión 4.3.1 a través de CyanogenMod y me funciona sin problemas, así que en ROMs cocinadas es compatible.
  3. Tenemos que asegurarnos que tenemos actualizadas (lo máximo posible) Android Support Library y Android Support Repository (este último sólo es necesario para Android Studio, que es nuestro caso).
  4. En la pantalla de Android SDK Manager (Tools > Android > SDK Manager) tenemos que instalar un par de cosas más. Tenemos que instalar Android Wear ARM EABI v7a System Image, que será la imagen utilizada para el emulador del SmartWatch (Unico dispositivo presentado en el día de ayer con compatibilidad con Android Wear, tanto la version de Motorola como la de LG).

Configurando el nuevo emulador

  1. Creamos un nuevo emulador (Tools > Android > AVD Manager)
  2. Le asignamos un Nombre (AVD Name)
  3. Seleccionamos el tipo de Dispositivo (Device) o bien Android Wear Square o Android Wear Round (Esto será para diferenciar que tipo de Smartwatch, si rectangular como el SmartWatch de LG o circular ¡Vayas quebraderos de cabeza traerá el diseño gráfico con este nuevo formato de pantalla!, como el Moto 360 de Motorola).
  4. En el campo Target, tenemos que indicar Android 4.4.2 – API Level 19 o superior (esto sólo indica el tipo de emulador, no tiene que corresponder con la versión que tengamos en nuestro smartphone)
  5. En el campo CPU/ABI, tenemos que indicar la arquitectura que descargamos e instalamos antes a través del SDK Manager, o sea: Android Wear ARM (armeabi-v7a).
  6. En el campo Skin, pues lo explicado en el punto 3, de nuevo: AndroidWearSquare o AndroidWearRound. Esto se verá repercutido en la interfaz visual, si mostrarla redonda o rectangular.
  7. Y listo, aceptamos y podemos arrancar (start) el emulador 🙂

NOTA: No intentemos instalar apps en este emulador, ya que no funcionarán y el comportamiento se desconoce… o eso nos indica Google ;). Instalando Android Wear Preview (app) Junto al permiso para poder utilizar la API, cuando aceptan nuestra solicitud, nos dan acceso para ser tester de la app Android Wear Preview, que se encarga de comunicar las notificaciones que le llegan al smartphone al emulador de nuestro Smartwatch. Esta app será indispensable instalarla en el Smartphone para jugar con la API, en su versión Preview. Por ello, el solicitar acceso a la API con la misma cuenta que tenemos configurada en el smartphone, para poder ser Tester de esta app y poder descargarla e instalarla desde Google Play. De manera, que una vez aceptado veremos que ¡ya somos testers oficiales!

¡Ya soy tester de Android Wear Preview!

¡Ya soy tester de Android Wear Preview!

Por lo que sólo nos falta instalar la app en nuestro smartphone, la encontraremos en Google Play (o en el link que nos proporciona el email de confirmación de antes). La app sólo es visible para los tester, o sea, si no lo seis no intenteis buscarla ;-). De todos modos, os dejo su aparición en Google Play para ver como la ven los que si somos tester.

Android Wear Preview en Google Play

Android Wear Preview en Google Play

Configurando la conexión entre SmartWatch (Emulador) y SmartPhone

  1. Tener ejecutado el emulador del SmartWatch. Como todavía no está sincronizado el smartphone con este, saldrá un icono (un smartphone con una raya que lo atraviesa en diagonal) en la parte superior derecha del emulador que indica que no hay ningún smartphone conectado a él. Esto lo podemos ver en la imagen siguiente:

    Smartwatch (Emulador) sin conexión con el Smartphone

    Smartwatch (Emulador) sin conexión con el Smartphone

  2. Tener arrancada en el Smartphone la app de Android Wear Preview. Debemos configurar el permiso de habilitación de escucha de notificaciones de terceros. Para que a la postre se pueda comunicar con el SmartWatch e informarle de las notificaciones Push que le van llegando. Para ello, la misma app, en su parte superior, nos lo indica si no lo tenemos configurado. Sólo habrá que configurarlo una única vez (hasta que no desisntalemos la app de Android Wear Preview). Para configurarlo, la propia app (si pulsamos donde nos indica) nos llevará al menú de ajustes de Android, donde tendremos que habilitar (tickar para habilitar y dar permisos) Android Wear Preview en la lista de apps del Smarpthone que pueden leer notificaciones de terceros.
  3. Tener conectado nuestro Smarpthone al PC en modo depuración (Como si fueramos a lanzar la app de Android Studio en el dispositivo físico).
  4. Abrir una consola, y navegar hasta el path de instalación del SDK de Android que usa Android Studio. Dentro de ahí acceder a la carpeta platform-tools/ y ejecutar bajo ese directorio en una consola:
    • adb -d forward tcp:5601 tcp:5601

En este momento ya tendremos sincronizado el emulador del SmartWatch con  nuestro SmartPhone físico. De manera que la imagen del emulador ahora no indica que no tiene conexión (icono de antes) sino que indica la tipica ‘g’ de Google que hace ver que todo está correctamente, como podemos ver en la imagen.

SmartWatch sincronizado con SmartPhone

SmartWatch sincronizado con SmartPhone

Notificaciones en el SmartWatch

Y con esto ya podremos ver cualquier tipo de notificación Push en nuestro Smartwatch ¡e interactuar con ella!.

En el código, tenemos muchos ejemplos explicados fantásticamente en: http://developer.android.com/wear/notifications/creating.html, pero a grandes rasgos y para no aburrir, cualquier notificación push propia de la app (en este caso de Qdemos! cuando nos llega la solicitud de Qdada) por defecto no hay que hacer nada relativo al código, automáticamente con todas las configuraciones de antes, se mostrará en nuestro SmartWatch.

Dando más valor a las notificaciones

Si queremos que el comportamiento no sea simplemente ver las notificaciones en el smartwatch, sino poder interactuar con ellas, e incluso responder desde el Smartphone, tendremos que hacer uso de la API de Android Wear. Antes de nada, deberemos incluirla en nuestro proyecto en Android Studio. Para ello:

  1. Dentro de nuestra carpeta libs/, en Qdemos! ya la tenemos creada de antes (pero si fuera otro proyecto se crearía en el mismo directorio que esta el AndroidManifest.xml), colocamos la API de Android Wear, que es un .jar llamado wearable-preview-support.jar, que nos dieron en el fichero comprimido cuando aceptaron nuestra solicitud y nos lo comunicaron en aquel correo que os puse antes.
  2. En el fichero build.gradle de nuestro proyecto deberemos hacer referencia a dicha librería (como siempre que insertamos una nueva) y a la libreria de soporte (sino la tuvieramos referenciada, en Qdemos! si que estaba)
    • dependencies {
          compile "com.android.support:support-v4:18.0.+"
          compile files('../libs/wearable-preview-support.jar')
      }
  3. Sincronizamos los ficheros de Gradle, dándole al botón tan majo que es un flechita hacia abajo con un circulito en medio (Sync Project with Gradle Files), para refrescar Gradle y que pille dicha libreria que hemos añadido.
  4. Y ya está, ya podemos ver ejemplos de como contestar notificaciones con voz, o personalizar más las visualizaciones con textos grandes y demás: http://developer.android.com/wear/notifications/remote-input.html

En Qdemos!, como la notificacion push que está configurada está creada para que cuando clickemos sobre ella nos redirija al fragment de elección de fecha para la Qdada, pues eso se convierte en que la notificación que le lelga al SmartWatch, a parte de poder ver el texto en sí, hay una opción (a través de un icono) que es Open, que abriría dicho fragment en el smarpthone directamente.

En el futuro, podemos hacer incluso que la elección de la fecha de la Qdada, a raíz de recibir la notificación, pueda realizarse en el propio smartwatch (ya que es un simple click en SI o NO). Sería muy sencillito a través de la creación de varias páginas en la notificación del SmartWatch, cada página con su acción a través de botoncitos: http://developer.android.com/wear/notifications/pages.html

¿Cómo se ve una Notificación de Qdemos en un SmartWatch?

Pues una vez configurado todo, y personalizado las notificaciones del SmartWatch, en Qdemos la recepción de la notificación por parte del SmartWatch se vería como vemos en el carrusel (en orden) siguiente de imágenes:

A la Espera de Notificación

A la Espera de Notificación

Notificación de Qdemos recibida

Notificación de Qdemos recibida

Abriendo notificación con Swype vertical (de abajo hacia arriba)

Abriendo notificación con Swipe vertical (de abajo hacia arriba)

Notificación abierta. Primera página con la info de la Notificación

Notificación abierta. Primera página con la info de la Notificación

Pasando a la siguiente página de la Notificación, con Swype Horizontal de derecha a izquierda

Pasando a la siguiente página de la Notificación, con Swipe Horizontal de derecha a izquierda

Segunda pantalla de notificación con la opción de abrir la notificación (Ir a pantalla de eleccion de fechas para la Qdada en el Smartphone) a través del SmartWatch

Segunda pantalla de notificación con la opción de abrir la notificación (Ir a pantalla de eleccion de fechas para la Qdada en el Smartphone) a través del SmartWatch

Eliminar notificación con Swipe horizontal de izquierda a derecha (sentido contrario a pasar paginas en la notificacion)

Eliminar notificación con Swipe horizontal de izquierda a derecha (sentido contrario a pasar paginas en la notificacion)

Y esto es todo, como siempre aquí el commit con todo esto hablado para Qdemos!: COMMIT.