Recomendación: libro Android 2016

9788441536807

Desarrollo de aplicaciones para Android 2016

Hoy me gustaría recomendaros un libro muy bueno que compré en Amazon a finales del año pasado, un libro muy completo, bien explicado, y que te invitara a conocer el corazón del sistema operativo móvil  de moda. Además esta actualizado y muy enfocado a la versión 5.0 lollipop en adelante,  incluye contenido sobre wearables y material design.

Sin duda un pedazo de libro que merece ser tenido en cuenta, con él se logra comprender el funcionamiento de cosas que no se suelen tener en cuenta al aprender a desarrollar para Android, como por ejemplo puede ser la herramienta de automatización de tareas Gradle.

El autor es Joan Rivas Lequerica y  la editorial Anaya multimedia,  la cual tiene unos libros de programación que no tienen desperdicio (que por cierto son mis favoritos, esto podréis comprobarlo a lo largo del tiempo en esta sección del blog).

Próximamente recomendaré mas libros útiles en esta sección, así que permaneced atentos..

Arquitectura del Software: patrones de diseño

patrones.png

Patrones de diseño: que son y para que sirven

¿Que son?

según la wikipedia:

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Bien, dicho esto, podemos deducir que un patrón de diseño sera un cierto tipo de patron a seguir el cual nos servirá como la base a la solución de un problema, y que bien nos vendrá, pues ciertamente es a lo que nos dedicamos en el día a día, a resolver problemas.

En muchas ocasiones habrás oído la expresión “reinventar la rueda”, pues bien en este caso, no puede venir mas a cuenta, y es que cuando planteamos el diseño de la arquitectura de un software, a veces encontramos problemas de estructuración muy comunes, y si alguien ya encontró la solución, y ademas esta probadisimo que funcionó a lo largo del tiempo y vida del software y para colmo podemos acceder a la información de como implementarla en nuestro caso, pues seria contraproducente no aprovecharla. Ademas de esto nos servirá para “entendernos” con otros programadores al poder usar un lenguaje común a referirnos a ciertas estructuras entre clases.

Mas ventajas…

Además, seguir estos patrones al estructurar un software, nos va a garantizar, la estabilidad del software a nivel de estructuración, escabilidad y sobre todo mantenibilidad a lo largo de la vida del mismo. Lo que por ejemplo en el caso de una empresa ahorrará a la larga grandes cantidades de dinero y tiempo.

¡¡Mas detalles por favor!!

Principalmente los patrones de diseño se dividen en tres categorías y nos ayudaremos de ellas a la hora de seleccionar el que mas nos convenga en nuestro caso partiendo de saber que es lo que queremos hacer:

  • Patrones creacionales (diseñados para facilitar la creación de objetos):
  • Patrones de estructuración (nos facilitaran la estructuración entre clases)
  • Patrones de comportamiento (para estructuración de datos y los objetos, y distribuir el procesamiento y los algoritmos entre sí )

¿Y como seleccionamos e implementamos uno de ellos?

Pues bien llegado el caso, lo primero que deberíamos hacer seria, intentar investigarlos un poco e intentar comprender como funcionan, hay muchos libros e información sobre el tema, que ya os recomendare algun libro que yo tengo en otra sección.

  • Paso 1: primero decidir si realmente nuestro software necesitaría seguir un patrón o no, y es que si va a ser algo muy sencillo, pues tampoco es muy necesario.
  • Paso 2: seleccionar cual de las tres categorías podría estar mas acorde con la solución a nuestro problema.
  • Paso 3: leer la descripción de cada patrón de la categoría.
  • Paso 4: una vez tengamos es mas “cualificado para la tarea” lo estudiaremos y analizaremos bien, a nivel de diagramas Uml y de ejemplos de diferentes implementaciones.
  •  Paso 5: y aquí viene el reto, lograr adaptar la implementación del patrón a nuestro propio caso y necesidad.

 

¿Conoces Stackoverflow?

oURrw

Stackoverflow, el salvavidas de los desarrolladores

No se el tiempo que llevaras en este maravilloso mundo de la programación y el desarrollo de software, a veces tedioso, a veces horriblemente frustrante, pero a la larga, gratificante. Todo el que ha pasado del hola mundo sabrá que a veces podemos encontrarnos con alguna cosa que queremos hacer y al no saber o no no encontrar la manera, nos podemos pegar dándole vueltas a la solución de nuestro problema horas, días, o incluso semanas.

No me estoy refiriendo a errores en el código, ya que eso solo nos los podrá solucionar la experiencia, y cada vez tardaremos menos en encontrarlos, si no que me refiero a que a veces intentamos reinventar la rueda cuando otro ya la invento hace tiempo, y posiblemente ya dedico bastante tiempo a encontrar una solución al mismo problema que ahora tengas tu.

Bien, dicho esto os quiero compartir hoy sobre el sitio del que todo el mundo habla, el gran arma de los desarrolladores, y no es otro que Stackoverflow. En el que a dia de hoy hay mas de 4.7 millones de programadores creando una lluvia constante e incesante de preguntas y respuestas sobre multitud de lenguajes de programación, frameworks y tecnologías. Ademas cuenta con un sistema de puntuación basado en las mejores respuestas y la participación de los usuarios.

Y aquí el tip:

La próxima vez que te atasques con algo y parezca que no encuentras la solución por ti mismo, prueba a poner en el buscador de Google, el error que tengas al intentarlo o lo que intentas hacer (obviamente en ingles, como todo en esto), y seguidamente la palabra Stackoverflow.  Hecho esto te garantizo un 99% de posibilidades de que encuentres, o bien la solución o bien la base de la que partir hasta ella.

podéis encontrar el website aquí.

Visitar Stackoverflow

 

 

Una de layouts

layouts.png

Distintos layouts según la orientación del dispositivo

A veces cuando creamos una app, no estamos completamente contentos con la distribución de los componentes en la pantalla de cierta activity, por ejemplo al cambiar la orientación del dispositivo, y podemos sentir que no tenemos un control total sobre la organización de los componentes, widgets y demás dentro de nuestro layout, todos sabemos (o deberíamos) que un layout sirve justo para eso para la organización de los componentes.

Pero en el tutorial que he creado para hoy, veremos una cosa muy interesante, la cual nos permitirá tener un control total sobre la organización en cualquier estado relativo a la orientación en el que se encuentre nuestro dispositivo móvil , y será tener la capacidad de crear un layout exclusivamente para la orientación en portrait y otro para landscape.

Luces, cámara… ¡Acción!

 

 

Globalizar una app para Android

globalizacion

Globalización de idiomas y Strings dinámicas

Hoy veremos como globalizar una app al programar en Android Estudio 2.0, con lo que haremos posible tener una misma versión de nuestra app para un numero indefinido de países. Y no solo eso, si no que por el camino aprenderemos ha crear y manejar Strings dinámicas.

3, 2, 1…  !DENTRO VIDEO!:

Cursos certificados gratuitos

132

Realiza cursos certificados de forma gratuita

Hoy os quiero traer una recomendación sobre una pagina web llamada Activate que descubrí hace algun tiempo que, en conjunción con google  está ofreciendo cursos gratuitos, tanto online como presenciales, relacionados con la tecnología, marketing e internet.

¿Pero es cierto esto?

Pues por fortuna la respuesta es sí, yo mismo hice este año uno para probar la plataforma y la verdad es que ha sido muy satisfactorio para mi. Hice un curso de 40 horas de programación de aplicaciones móviles impartido y certificado por la Universidad Complutense de Madrid, y la verdad es que el contenido del curso es de muchísima calidad, aunque si es cierto que alguna cosilla estaba algo anticuada, como por ejemplo en el modulo de programación para dispositivos Apple, aún se da el lenguaje Objetive-C, el cual ya ha sido reemplazado por Swift.

¿Y el resultado?

En mi caso, después de hacer los 6 modulos de contenido útil y muy variado, y aprobar los exámenes, uno por cada modulo y uno final, recibí el siguiente certificado acreditativo de la Universidad Complutense:

Certificado

podéis registraros y realizar los cursos disponibles aquí:

http://www.google.es/landing/activate/formate/?gclid=CjwKEAjwxoG5BRCC7ezlzNmR8HUSJAAre36jXHrD3RdAmJpDYyRA1WPyDwyL-9dtZ-Y5TmELuRRW5RoCw_Pw_wcB

 

Android Estudio: Logcat y Android Monitor

androidLogCat

Dos grandes y útiles herramientas para desarrollar para Android

Hoy os traigo un tutorial en el que os hablaré sobre estas dos importantes herramientas para la programación en Android.
Por un lado Logcat, que nos servira para la depuración de nuestro código y por otro Android Monitor, un perfilador para monitorizar métricas que nos viene ya incluido en Android Estudio y totalmente integrado con el IDE.

Sin alargarme mas.. ¡dentro vídeo!

 

Inyección de dependencias en Java

Sin-título-1

Hoy veremos un patrón de diseño o arquitectura de software llamado Inyección de dependencias.

Lo vamos a hacer en Java, aunque es un patrón orientado a objetos así que nos servirá en cualquier lenguaje del mismo paradigma.

¿Y que es?

Según la wikipedia:

“Inyección de dependencias (en inglés Dependency Injection, DI) es un patrón de diseño orientado a objetos, en el que se suministran objetos a una clase en lugar de ser la propia clase quien cree el objeto.”

¿Como implementamos esto en java?

Ejemplo de uso:

Tenemos una clase main (InyeccionDeDependencias), que instancia dos clases, la ClaseA y la ClaseB, la ClaseA contiene una funcion llamada imprimir a la que la ClaseB quiere que llamar sin tener que instanciarla dentro de sí misma, ya que si lo hiciera estaría llamando al metodo imprimir de una nueva ClaseA. Y lo que pretendemos es comunicar nuestra ClaseB con la unica ClaseA que hay instanciada en la clase main.

¿Como logramos esto?, pues simplemente pasándole como parámetro al constructor de nuestra claseB una instancia de claseA.

Clase main (InyeccionDeDependencias.java)

Captura1

Clase A (ClaseA.java)

Captura2

Clase B (ClaseB.java)

Captura3

Videotutorial en mi canal de Youtube

 

Pruebas unitarias en Java

parajSmall2

Vemos las famosas pruebas unitarias en Java utilizando JUnit y NetBeans.

¿Que son?

El tema de las pruebas de software es muy extenso, pero nos centraremos en esas pequeñas pruebas a baja escala, que confirman que ciertas partes de una clase y funcionalidades individuales de nuestro software funcionen correctamente y como se espera que lo hagan.

¿Como funcionan?

Este tipo de pruebas se basan en dos parámetros, uno esperado y otro devuelto por la función a probar, si coinciden, ya sea de tipo booleano, numérico, etc, la prueba sera valida, de lo contrario fallará, indicándonos donde y como se produjo el fallo de calculo inesperado.

¿Para que nos sirven?

Además serán unas grandes aliadas a la hora de refactorizar partes de nuestro código, por ejemplo al dividir clases o métodos que se han hecho muy grandes o simplemente han perdido cohesión con sigo mismos a lo largo de su desarrollo, en otros mas pequeños. Pero hoy no vamos a hablar de refactoring, simplemente vamos a ver como podemos hacer las pruebas individuales, unitarias, o lo que es mismo “de un solo propósito”.

¿Como se hacen?

Pues he grabado este video y lo he colgado en dos partes en mi canal de youtube para que veais como las hago yo.

Parte 1

Parte 2