El método de desarrollo de software ágil intenta reducir la complejidad de los proyectos de software actuales e incrementar su flexibilidad. El desarrollo de software ágil tiene muy en cuenta los cambios solicitados y responde de manera flexible a los nuevos requisitos surgidos durante el transcurso del proyecto.
Los pasos del proceso Agile son los siguientes:
Diagnóstico (Product Owner, StakeHolders, Agile Manager): Incluye el análisis de los requerimientos y la tormenta de ideas.
Diseño(Product Owner, StakeHolders, Scrum Master): Incluye la documentación del diseño y el prototipado.
Desarrollo (Scrum Master, Team Members): Incluye la construcción, las pruebas, la revisión y la clarificación. Es un proceso iterativo.
Aseguramiento de Calidad(Scrum Master, Team Members): Incluye la identificación y la resolución de defectos.
Despliegue(Team Members, Product Owner): Incluye la puesta en producción y el soporte post-venta.
Al momento de desarrollar aplicaciones, casi siempre el punto de partida es la creacion del modelo de datos (y la base de datos). Una vez que tenemos un hogar para nuestras data, el siguiente paso natural es querer generar servicios RESTful para que sean consumidos por nuestras aplicaciones clientes; bien sea un website o un app móvil.
Es entonces cuando nos encontramos con muchísimas opciones para el desarrollo de nuestros servicios. Plataformas, tecnologías, lenguajes de programación, entre otros. Sin duda alguna, puede ser complicado y tardado el comenzar a desarrollar nuestras API’s. En este post trato de comentar mi experiencia con diferentes servicios de generación automática de servicios REST.
Pero primero un disclaimer: Ningún generador nos va a proveer de servicios perfectamente personalizado y según las necesidades particulares. La idea es darnos un comienzo rápido con las conexiones a la BD, el manejo de rutas y la selección de datos de nuestras tablas. Esto quiere decir que las uniones y transformaciones de datos quedan de nuestra parte.
Sin mas preambulos, les dejo las opciones que he probado:
Apiplug: Apiplug es un SAAS (Software Como Servicio) que ofrece la generacion de API’s partiendo de un esquema definido o una BD existente, por un precio. Las opciones de tecnologías justo ahora varían entre PHP5+Laravel5.1, PHP7+Laravel5.2, NodeJS+Express y Python3+Django. Tambien ofrecen ayuda para desplegar los proyectos y como extra, puedes generar un proyecto Android que haga uso de tu recién generado API.
Apigility: Apigility es un proyecto de Zend Framework que debes correr en una intancia de WAMP/XAMPP antes de que puedas llegar a las pantallas de generacion. Una vez allí, ofrece exactamente lo requerido con muy buenas posibilidades de personalización. EL detalle: Naturalmente, el proyecto generado es exclusivamente en PHP.
En futuras actualizaciones, agregare un par de opciones mas a la lista.
Es bien sabido que en la actualidad, cuando hablamos de Big Data, no nos referimos a una sola herramienta (aunque a muchos nos venga el nombre ‘Hadoop’ a la mente). En este corto post, listo algunas de las herramientas mas básicas y comunes en despliegues empresariales de soluciones Big Data:
El ecosistema básico
Hadoop: La herramienta base de cualquier solución Big Data. Fundamentado en el procesamiento paralelo usando una tecnica llamada ‘Map-Reduce’ y un sistema de archivos distribuidos denominado ‘Hadoop File-System (HDFS)’. El origen de su nombre es todo un misterio…
Hive: Desarrollado en Facebook para facilitar la tarea de programar tareas Map-Reduce para hacer consultas en Hadoop. Permite consultar la data usando HQL (ANSI SQL con algunas modificaciones). De esta manera, se disminuye la dificultad al obtener resultados de la data.
Sqoop: Permite realizar tareas de importación de datos desde diversas bases de datos relacionales, encargándose de la conversión tipos de datos y de las transformaciones que sean necesarias.
Spark: Desarrollado para superar las deficiencias de Map-Reduce, Spark ofrece resultados mucho mas rápidos usando el mismo cluster que Hadoop. Su mayor ventaja es que el procesamiento es en la memoria y no en el disco. Ademas, tiene sus propios módulos de SQL e Inteligencia Artificial.
Si pronto tienes una entrevista o sesión de programación en vivo, aquí hay algunas herramientas básicas que todo programador debe tener en su arsenal a la hora de una entrevista que involucre programación en vivo:
Recientemente, durante un conversación sobre Big Data, Hadoop y el análisis de data, surgió el tema de los lenguajes funcionales en los mismos. Es bien sabido que los lenguajes funcionales son ideales para Big Data, pero no nos quedaba claro porqué. Buscando un poco, ésta respuesta de SO nos dió más luces al respecto:
As a consequence, a purely functional program always yields the same value for an input, and the order of evaluation is not well-defined; which means that uncertain values like user input or random values are hard to model in purely functional languages.
Podemos resumir en que: Los lenguajes funcionales siempre arrojarán un valor para determinada entrada (La orden de evaluación no está bien definida). Ésto es totalmente deseable para la computación distribuida y el Big Data, puesto que la idea es asegurar una salida consistente en todos los nodos donde se procese.
Para saber un poco más al respecto, les recomiendo ésta lectura.
Firebase es una plataforma para el desarrollo de aplicaciones web y aplicaciones móviles adquirida por Google en 2014. En este Post realizaremos algunas un tutorial para hacer uso de los beneficios de FireBase.
Aplicación de registro y lectura de mensajes desde el servidor.
Una aplicación Android puede operar perfectamente sin acceso a información a través de internet. Éste tipo de aplicaciones se conocen como aplicaciones “Autónomas” o “Standalone”. Ejemplos de éste tipo de aplicaciones hay muchos: Calculadoras, Alarmas, Editores, Juegos. Sin embargo, muchas de las aplicaciones requieren de algún tipo de acceso a internet (bien sea para realizar alguna conexión a bases de datos, o consumir un servicio web). En esta guía veremos cómo realizar (y hospedar en la nube) nuestro desarrollo a nivel de servidor (backend) en Firebase.
El tutorial completo se encuentra en el documento drive adjunto!.
Postman es una excelente aplicación/extensión de navegador gratuita, que permite realizar consultas a servicios REST desde una agradable (y muy personalizable) interfaz gráfica.
Su headline es:
Postman helps you develop APIs faster.
La verdad es invaluable a la hora de desarrollar API’s, pues facilita las actividades de probar endpoints, cambiar parámetros, seleccionar métodos, configurar tipos de contenido (Content-Type's) y realizar pruebas automatizadas en base a la respuesta del backend.
Una funcionalidad que me ha resultado imprescindible al momento de desarrollar API’s en equipos de desarrollo extendidos, es la capacidad de Postman de guardar y compartir las «Colecciones» (Agrupaciones de consultas, incluyendo rutas, métodos y contenido) con nuestros colaboradores. Acá les dejo los pasos para realizarlo:
Iniciar sesión en Postman Web. https://app.getpostman.com/dashboard
Guardar las consultas en colecciones (y opcionalmente, en carpetas)
Ubicar la colección deseada, hacer click en el menú de puntos al lado
En la lista desplegable, seleccionar «Share»
Seleccionar «Run in Postman Button»
Compartir el botón en nuestro site o Wiki corporativo.
Taiga.io es una herramienta SAAS para la gestión Ágil de proyectos. Permite trabajar con Scrum o con Kanban. La recomiendo ampliamente para equipos de desarrollo de software, ya que permite optimizar las comunicaciones, las interacciones y entregas rápidas.
Lo mejor: Es gratis para proyectos públicos. Si deseas proyectos privados, tienen diversos planes según conveniencia…
Android Studio 2.0 ya está disponible, y ahora que es estable, se puede actualizar de manera segura a la nueva versión. Tiene algunas características interesantes, pero la más importante es que ahora los emuladores son mucho más rápidos de usar cuando corremos nuestras aplicaciones.
Aquí está el proceso para actualizar:
1. Inicia Android Studio. Debes ver una ventana emergente explicando que existe una versión nueva. Haz click y deberías ver esta pantalla:
2. Durante la actualización, es posible que veas la siguiente ventana:
3. Android studio comenzará a Descargarse.
4. Deberías ver esta ventana emergente la primera vez que abras Android Studio después de actualizar:
8. Por cada proyecto existente que abras luego de actualizar, verás esta ventana emergente aparecer:
9. Eventualmente verás esto en pantalla:
10. Aunque no es absolutamente necesario, sugiero borrar y crear nuevamente cualquier emulador AVD (Android Virtual Devices) que tengas configurado. De ésta manera nos aseguramos de contar con los beneficios de emulación añadidos.