El cómputo en la nube en el ámbito educativo y laboral

¿Qué es la nube?

A definición del autor Óscar Ávila Mejía del artículo Computación en la nube, esta se define como…

…servicios ofrecidos a través de la red tales como correo electrónico, almacenamiento, uso de aplicaciones, etc., los cuales son normalmente accesibles mediante un navegador web. Al utilizar estos servicios, la información utilizada y almacenada, así como la mayoría de las aplicaciones requeridas, son procesadas y ejecutadas por un servidor en Internet.

Dicho lo anterior, podemos afirmar que la computación en la nube abre puertas para la colaboración en tiempo real a nivel global, pasando de un ámbito en donde el trabajo solía realizarse de manera aislada a un entorno en donde el trabajo grupal, sin fronteras, es más que posible.

El cómputo en la nube suele confundirse con almacenamiento masivo en la nube, del cual podemos nombrar ejemplos de servicios como Dropbox, Google Drive, SugarSync, Azure Storage, Amazon Cloud Storage, entre otros. Si bien esto permite compartir archivos digitales de manera rápida y sencilla, no engloba el concepto de computación en la nube en sí.

Específicamente hablando, la computación en la nube se divide en tres modelos de distribución:

  • SAAS (Software As A Service)
    • Permite a los usuarios ejecutar aplicaciones ya existentes en línea.
  • PAAS (Platform As A Service)
    • Permite a los usuarios crear sus propias aplicaciones en línea utilizando herramientas y lenguajes de programación otorgados y permitidos por el proveedor del servicio.
  • IAAS (Infrastructure As A Service)
    • Permite a los usuarios ejecutar cualquier aplicación que deseen en hardware a elección del mismo, otorgado por el proveedor.

Ventajas y desventajas del uso del cómputo en la nube en el ámbito educativo y laboral

Ventajas

  • Gratis o pago vía suscripción: Debido a la naturaleza de ejecución del mismo, el modelo de negocio del cómputo en la nube como SAAS permite a las instituciones educativas, organizaciones gubernamentales o empresas ahorrar costos en licencias mediante el pago de una suscripción mensual/anual o inclusive utilizar el servicio sin ningún costo con ciertas limitaciones. Ejemplos como Github donde en su suscripción gratuita permite la creación de repositorios ilimitados con la condición de ser públicos, mientras que en la suscripción de pago permite la creación de repositorios privados sin ningún límite.
  • Accesible desde cualquier computadora: Utilizar los servicios que ofrece la nube solo requiere de tener instalado un solo programa (en esencia), basta contar con un navegador web moderno para acceder a las diferentes aplicaciones web en línea que se ofrecen hoy en día. Son considerados “navegadores web modernos” aquellos que siguen mayormente los estándares web actuales, ejemplos como Google Chrome, Firefox, Microsoft Edge, entre otros.
  • Facilita el trabajo colaborativo: Las instituciones educativas y empresas pueden beneficiarse del cómputo en la nube debido a la rapidez de disponibilidad de material y recursos en línea. Diseño de productos o proyectos de investigación han aumentado considerablemente el tiempo de finalización debido a la rápida respuesta de los mismos miembros de equipo, otorgado gracias a Internet.
  • Rápido desarrollo a bajo costo: Para una empresa, implementar un sistema en línea puede llegar a ser altamente costoso, no tanto por el costo del desarrollo del mismo sino por la infraestructura detrás. Un sistema en línea requiere de servidores alojados en un lugar físico con condiciones totalmente controladas y monitoreo del estado de las mismos las 24hrs del día los 365 días del año, sin mencionar los protocolos de seguridad que deben de implementarse, tanto físicos como virtuales. El cómputo en la nube permite rentar los servicios a un costo acccesible para instituciones y empresas, dejando la tarea de la implementación y mantenimiento de los servidores al proveedor del servicio.
Desventajas
  • Límite de uso impuesto por el proveedor: Al ser una plataforma/software/servicio externo, el uso del mismo conlleva a la aceptación de términos y condiciones establecidos por el proveedor del mismo. Esto puede ser una limitante para las empresas o instituciones al momento de desarrollar proyectos, especialmente cuando el proveedor de cómputo en la nube decide realizar cambios en el uso de su servicio y estos no se alinean con los objetivos de las empresas u organizaciones.
  • Riesgo de pérdida de datos: Con esto se hace referencia al riesgo de robo de datos o inclusive pérdida por diferentes causas. Dado que las condiciones no están controladas por la organización o empresa, proyectos de investigación o recursos se ven totalmente dependientes de las medidas de seguridad y respaldo que haya implementado el proveedor de cómputo en la nube.

Caso de uso de cómputo en la nube en una institución educativa.

En el siguiente video podemos observar el uso de cómputo en la nube (Google Classroom) mediante la plataforma educativa Google for Education.
Existen muchos casos de éxito de instituciones educativas implementando dicha plataforma. Como ejemplo práctico y cercano, en el Instituto Tecnológico Superior de Múzquiz se implementó dicha plataforma, teniendo como resultado la eliminación del 85% de formatos en papel, así mismo, el desarrollo de la aplicación móvil oficial para Android, coordinado y realizado por un servidor (Abraham Chacón Landois) aprovechando la existente plataforma educativa de Google, pemitiendo la colaboración y retroalimentación en tiempo real entre maestros y alumnos.

Fuentes:

Resolver “The application could not be started. Ensure that the application has been installed to the target device and has a launchable activity (MainLauncher = true).” en Xamarin

Recientemente me encontraba trabajando en un proyecto de Xamarin.Forms en el cual seguía este modelo de ramificación en git. Si bien git es una excelente herramienta de colaboración cuando trabajas en un equipo de desarrollo, las cosas pueden tornarse un poco feas si no hay un debido control y sobretodo disciplina al hacer commits; al ser un sistema de control de versiones descentralizado, se evita que el código fuente pierda su calidad, siempre y cuando se maneje con responsabilidad.

onedoesnotsimply_git

Dicho esto, git pasa de una excelente herramienta de colaboración, a una herramienta de respaldo cuando se trabaja en un equipo de una sola persona (yo). Como no hay trabajo paralelo, básicamente lo que hacía era crear ramas por cada requerimiento principal y programaba las funciones de una por una, luego me pasaba a otra rama y así sucesivamente.

Terminando precisamente la primera rama y una vez que las pruebas de UI pasaron correctamente, decidí entrarle al siguiente requerimiento; creas la rama correspondiente, commit inicial, agregas los archivos necesarios, commits aquí y allá, compilas correctamente, deployment y… oh oh…

The application could not be started. Ensure that the application has been installed to the target device and has a launchable activity (MainLauncher = true).

Additionally, check Build->Configuration Manager to ensure this project is set to Deploy for this configuration.

Ya antes había tenido problemas con versiones de anteriores aplicaciones instaladas en el emulador/dispositivo, lo cual resolvía desinstalándolas y volviendo a instalarlas y todo quedaba listo, pero en este caso particular, ni volteando a San Tadeo. Lo curioso es que al hacer checkout a la rama anterior, todo funcionaba perfecto, pero una vez cambiaba a la actual y compilaba correctamente pero nada de nada en el emulador/dispositivo.

Lo primero que pensé es que posiblemente algunos archivos se habían quedado “colgados” en el directorio donde se generan al momento de compilar el proyecto, pero buscando algún conflicto no encontré absolutamente nada que estuviera fuera de lugar, así que ni limpiando y recompilando se ejecutaba la aplicación.

¿La solución?, trasteando un poco con el proyecto .Droid, bastó simplemente con cambiar el nombre de la aplicación en AndroidManifest.xml a uno diferente, compilar y depurar para posteriormente cambiarlo al nombre original y listo, el proyecto quedó funcional de nuevo, sin necesidad de hacer malabares con git y seguir con las buenas prácticas a pesar de tener la tentación de dejarlas 😉 .

ejemplo1

Cómo resolver el error de “java.lang.IllegalStateException: Activity has been destroyed” en Xamarin.Forms

Xamarin.Forms se caracteriza por ser una excelente solución para desarrollar aplicaciones móviles multiplataforma (Android, iOS y Windows) a partir de un código base, especialmente en lo que respecta con la interfaz de usuario; sin embargo, una amplia compatibilidad entre diferentes plataformas conlleva a un riesgo de encontrar bugs tanto por aquí como por allá.

Uno con los que me topé recientemente es cuando la página principal (MainPage) de una aplicación en Xamarin.Forms es un MasterDetailPage y el usuario presiona el botón “Atrás” de Android. Naturalmente, en Android, toda aplicación se cierra cuando el usuario presiona dicho botón, pero en este caso, además de cerrarse, muestra una excepción la cual es un “java.lang.IllegalStateException“.

Esta excepción solamente se dispara cuando el MainPage es un MasterDetailPage; si la página principal es cualquier otro tipo de página, todo se cierra normalmente.

El único fix hasta el momento es actualizar el paquete NuGet de Xamarin.Forms a la versión 2.3.4-pre1; de igual manera esta corrección estará en la próxima versión estable.