Product Flavors de Gradle en Android Studio

jueves, 18 de diciembre de 2014


Con la llegada de Android Studio como IDE para desarrollar aplicaciones Android, se ha sustituido el sistema de compilación Ant que se utiliza en Eclipse por Gradle. Android Studio utiliza un plugin de Gradle para la compilación de aplicaciones Android. Gradle se basa en Groovy, en lugar de xml, para para los ficheros de configuración. Gradle aporta un mecanismo muy fexible permitiendo personalizar el proceso de compilación.

Mediante configuración de Gradle en Android Studio tenemos la posibilidad de utilizar product flavors, que nos van a permitir crear diferentes versiones de una misma aplicación Android de una forma muy sencilla. Por ejemplo mediante esta característica podemos tener versión gratuita y de pago con funcionalidad añadida en la versión de pago o tambien diferentes entornos como entorno de desarrollo y entorno de producción, este último ejemplo es el que vamos a ver en este artículo.

Cache en WebAPI con CacheCow

jueves, 11 de diciembre de 2014

WebAPI CacheCow

Cuando desarrollamos un servicio HTTP utilizando WebApi una de las características que se echan en falta es el soporte para cache como en Asp.net MVC pero por suerte existen librería de terceros que rellenan este hueco como CacheCow.

Pruebas funcionales en Android con Espresso

miércoles, 3 de diciembre de 2014



En el anterior artículo vimos como podemos hacer pruebas funcionales en Android con Robotium, en este artículo vamos a ver como podemos hacer lo mismo usando Espresso.

Pruebas funcionales en Android con Robotium

jueves, 27 de noviembre de 2014

Android Robotium


En el anterior artículo vimos como podemos hacer pruebas unitarias en Android con Mockito, en este artículo vamos a ver otro tipo de pruebas como son pruebas funcionales utilizando Robotium.

Pruebas unitarias en Android con Mockito

jueves, 20 de noviembre de 2014



Ya había escrito un artículo sobre pruebas unitarias con moq, que es una librería para .Net. En esta ocasión vamos a ver como podemos hacer lo mismo en Android utilizando Mockito.

Inyección de dependencias en Android con Dagger

jueves, 13 de noviembre de 2014



El anterior artículo Eligiendo IDE para trabajar con Android, fue el primero desde que estoy colaborando en mi empresa en un proyecto de Android. En este artículo vamos a ver como podemos llevar a cabo inyección de dependencias en Android utilizando Dagger.

Eligiendo IDE para trabajar con Android

jueves, 30 de octubre de 2014

IDE Eclipse


Los que habéis seguido alguno de mis artículos sabéis que este blog es predominantemente .Net, salvo algún artículo relacionado con Android hace un tiempo. Recientemente en mi empresa me han puesto a colaborar con un proyecto para la plataforma Android así que algún artículo relacionado con esta plataforma escribiré y este es el primero.

Lo que quiero compartir en este artículo es nuestra experiencia en la decisión del IDE con el que trabajar. Inevitablemente notaréis en mis artículos un punto de vista de un desarrollador .Net porque es lo que soy.

Cómo deserializar un objeto que tiene propiedades con set privados utilizando Json.Net

jueves, 23 de octubre de 2014



Json.Net es una de las librerías más utilizadas para tratar con serialización y deserialización en formato Json. Hay veces que necesitamos tener el set de una propiedad privado por el negocio de nuestra aplicación. Por defecto Json.Net va a serializar el objeto correctamente porque el objeto tiene la propiedad pública, pero al hacer la deserialización la propiedad que tiene el set privado no va a ser escrita porque por defecto deben ser los set públicos para poder escribirlas.

Gestión de la conexión a internet en una aplicación Windows 8.1

jueves, 16 de octubre de 2014

Logo No Internet Connection


En una aplicación móvil es importante gestionar la conectividad de la aplicación a intenet. Vamos a ver en este artículo de que forma podemos realizar esta gestión cuando desarrollamos una aplicación para la tienda de Windows, para la versión Windows 8.1.

Cómo adaptar una aplicación Windows 8.1 a diferentes tamaños y orientaciones de pantalla

jueves, 9 de octubre de 2014


En Windows 8 una página tenía de forma predefinida 4 estados, uno por cada tamaño establecido que podía tener la ventana de una aplicación, Snapped, Filled, FullScreenPortrait y FullScreenLandscape, y estos tamaños eran fijos que no se podían redimensionar por el usuario. Los desarrolladores estabamos acostumbrados a no preocuparnos por la gestión de las diferentes resoluciones en nuestras aplicaciones, simplemete nos limitabamos a crear en nuestras páginas VisualStates para cada uno de estos 4 estados predefinidos y adaptar los controles que necesitaramos. Esto sucedía porque al usar las plantillas de proyecto para aplicaciones de la tienda de Windows con c# y xaml, venía una clase ya creada que era LayoutAwarePage, servía como clase base de las páginas en el proyecto. Esta clase entre otras cosas se encargaba de enterarse cuando el estado de una página cambiaba y realizar la transición al VisualState correspondiente.

Esto ha cambiado con Windows 8.1 ahora ya no hay estados predefinidos para una página, hay un nuevo modelo de tamaño de ventana, vamos a repasar en este artículo como podemos adaptar una aplicación de Windows 8.1 a diferentes tamaños y orientaciones. Primero vamos a ver cómo trabajaba la clase LayoutAwarePage con los estados predefinidos en la versión anterior y como debemos realizar ahora esta gestión.

Cómo añadir con WebApi un enpoint batch

jueves, 2 de octubre de 2014


Desde ASP.NET Web Api 2 tenemos la posibilidad de crear un endpoint batch en los servicios http que creamos. Esta característica nos da la posibilidad de agrupar en una sola petición http desde cliente múltiples peticiones http, de esta forma se reduce el tráfico desde cliente a servidor.

Introducción a Contenedor de Inversión de Control (IOC Container)

jueves, 18 de septiembre de 2014


En anteriores post vimos una introducción a inyección de dependencias y introducción a inversión de control , en este vamos a ver como podemos realizar inyección de dependencias utilizando un contenedor de inversión de control.

Introducción a Inversión de Control (IOC)

jueves, 11 de septiembre de 2014


En el anterior post vimos una introducción a inyección de dependencias, en este vamos a ver una introducción a inversión de control pero a nivel de concepto, vamos a hacer un paréntesis en lo relacionado a DI. Una cosa es el concepto de inversión de control que no tiene porque estar relacionado con inyección de dependencias y otra diferente es un contenedor de inversión de control que es el nombre que reciben los contenedores relacionados con inyección de dependencias.

Introducción a Inyección de Dependencias (DI)

viernes, 5 de septiembre de 2014

Logo de Inyección de Dependencias

La Inyección de Dependencias es un patrón de diseño que implementa uno de los principios SOLID, el Principio de Inversión de Dependencia, que dice que no se debería depender de concreciones sino de abstracciones.

Este es el primer post de una serie sobre inyección de dependencias (DI) e inversión de control (IOC), que normalmente se suelen mezclar y confundir, pero que son dos cosas totalmente diferentes.

De hecho en este primer post de la serie vamos a hacer una introducción a inyección de dependencias y veremos un ejemplo pero no vamos a utilizar, ni explicar, inversión de control. Vamos a realizar inyección de dependencias sin inversión de control, viendo así que son cosas diferentes.

IndexAttribute en Entity Famework 6.1

jueves, 28 de agosto de 2014

Logo Entity Framework

Con la versión 6.1 de Entity Framework se ha añadido un nuevo data annotation IndexAttibute, lo que nos va a permitir, al usar Code First, crear indices en la base de datos si se lo añadimos a propiedades del modelo de dominio.

Cómo solucionar error de debugger al depurar test unitario de Windows 8.1

jueves, 14 de agosto de 2014

Error unit test windows 8.1

En este post quiero compartir cómo he solucinado este error que se ve en la imagen y con el que he estado dos tardes liado.

Cómo alinear verticalmente una imagen respecto a su contenedor

jueves, 7 de agosto de 2014


Antes de CSS3 no existía ninguna propiedad donde explícitamente indicáramos alineación vertical para el contenido de un contenedor. Se podía conseguir combinando una serie de propiedades utilizando css, vamos a repasar algunas de la posibilidades que teníamos para alinear una imagen verticalment respecto a su contenedor antes de CSS3 y como hacerlo con CSS3.

Prototipos en Javascript

jueves, 3 de julio de 2014

Logo JavaScript

En lenguajes orientados a objetos tenemos herencia basada en clases y en JavaScript tenemos herencia basada en prototipos. De esta forma vamos a poder escribir código más reutilizable y más escalable.

Todos los objetos en JavaScript descienden de Object y tienen un prototipo asociado, todos los objetos que compartan un mismo prototipo van a heredar sus propiedades y métodos.

Vamos a ver algunas de las opciones que tenemos para prototipos según de la forma como creamos un objeto.

La palabra clave this en JavaScript

viernes, 27 de junio de 2014

Logo JavaScript

La palabra clave this es diferente respecto a otros lenguajes como puede ser C# o Java. En estos lenguages this hace referencia al objeto que contiene el método o función desde donde accedemos a this y siempre tiene la misma identidad.

En javascript es un poco más complejo el significado de this, y a los desarrolladores como yo que venimos de lenguajes orientados a objetos, es normal que tengamos momentos frustrantes de no saber que esta pasando.

Buenas prácticas aplicando MVVM: Converters (parte 2)

jueves, 19 de junio de 2014

Buenas prácticas MVVM

En este post continuamos con los converters, vamos a ver casos más concretos que en el post anterior, donde podemos utilizar converters que nos ayuden a liberar al view model de conocer como se representan los datos en la vista.

Buenas prácticas aplicando MVVM: Converters (parte 1)

jueves, 12 de junio de 2014

Buenas prácticas MVVM

Seguimos con las buenas prácticas aplicando MVVM, como ya vimos en el primer post de la serie es importante tener muy claro las responsabilidades de cada componente que interviene en MVVM, en esta entrega vamos a ver cómo nos pueden ayudar los converters a esta separación de responsabilidades.

Buenas prácticas aplicando MVVM: crear un framework propio

jueves, 5 de junio de 2014


Ya hemos visto una introducción a buenas prácticas aplicando MVVM, también veíamos cuando podía ser un buen momento para crearnos un framework propio sencillo. Yo comentaba que cuando nos estamos introduciendo en el patrón o cuando estamos afrontando un escenario sencillo sin páginas entre las que haya que navegar pueden ser buenos momentos porque el framework que necesitamos es más sencillo y manejable, de lo contrario yo particularmente utilizaría un framework existente.

Crearnos un framework propio en algún momento considero que es una buena práctica para sentar unas buenas bases de conocimiento sobre el patrón MVVM y si encima desarrollamos habitualmente aplicaciones sencillas, vamos a reutilizar mucho código repetitivo que hay que escribir si no utilizamos un framework de los que hay.

Vamos a ver lo básico que debe tener un framework MVVM.

Buenas prácticas aplicando MVVM: Introducción

jueves, 29 de mayo de 2014


Voy a escribir una serie de post donde no me quiero centrar demasiado en la explicación del patrón,  lo que quiero es compartir mis reflexiones sobre buenas prácticas utilizando el patrón, o por lo menos lo que yo considero que son buenas prácticas.

Estas buenas prácticas las he ido aprendiendo muchas veces de mis propios errores y aprendiendo de ellos,
y otras veces gracias a compañeros de trabajo con más experiencia que yo aplicando este patrón de diseño, con los que he tenido la oportunidad de trabajar y con los que he tenido charlas extendidas donde a veces se puede aprender más que en cualquier curso.

Nuevo control CommandBar en Windows 8.1 y Windows Phone 8.1

jueves, 22 de mayo de 2014

Windows 8.1 y Windows Phone 8.1

Introducción 

En versiones anteriores, desarrollar una aplicación en Windows 8 o en Windows Phone no era lo mismo, ya que no compartían APIs prácticamente. Ahora la versión de Windows Phone 8.1 converge con la plataforma de Windows Store compartiendo las mayoría de las APIs de Windows RT con lo que tenemos el mismo XAML para las dos plataformas, comparten la mayoría de los controles y tienen los mimos namespaces. Hay algunas particularidades para cosas que solo tienen sentido en tablet, pc o móvil.

HTML and CSS: Design and Build Websites [Tapa Dura] de Jon Duckett

viernes, 16 de mayo de 2014


Ya había excrito un post sobre HTML and CSS: Design and Build Websites de Jon Duckett, pero en esta ocasión quiero compartir una experiencia más personal en la decisión de comprar este libro en formato tapa dura, por qué decidí comprar este formato ,el proceso que seguí  y por qué lo compré en Amazon.com y no en Amazon.es.

Cómo crear un paquete NuGet y publicarlo en un repositorio local

jueves, 8 de mayo de 2014

NuGet logo

Introducción

En ocasiones puede resultar interesante para compartir librerías reutilizables entre aplicaciones y tener un repositorio local de paquetes NuGet. Vamos a ver un ejemplo de como podemos hacerlo.

Vamos a crear un paquete sobre converters para XAML, nos crearemos dos proyectos uno para WPF y otro para Windows 8 y así vemos como podemos publicar un solo paquete donde se incluye una librería para cada Target Framework.

Cómo iniciar Storyboards desde XAML con Behaviors SDK en Windows 8.1

sábado, 3 de mayo de 2014

Windows 8.1

Introducción

En Windows 8.1 la forma de iniciar las animaciones Storyboard se ha visto restringida con respecto a Silverlight y WPF.

Vamos a realizar un ejemplo de tener una imagen y cuando el ratón pasa por encima, deslizamos un panel hacia abajo con información de la imagen. Vamos a ver como haríamos esto con WPF y luego con Windows 8.1 tanto desde Code-Behind como desde XAML.


Cypher - Cómo recuperar datos

jueves, 17 de abril de 2014

En anteriores post ya hemos visto una introducción a Neo4jla instalación y un primer vistazo a Neo4j Browser y cómo crear datos con Chyper. En esta ocasión vamos a ver cómo podemos recuperar datos con Cypher.

Cypher lenguaje de Neo4j - cómo crear datos

viernes, 11 de abril de 2014

En anteriores post ya hemos visto una introducción a Neo4j y en otro la instalación y un primer vistazo a Neo4j Browser. En esta ocasión vamos a ver una introducción a Cypher que es un lenguaje para queries propio que tiene Neo4j y después empezaremos a ver la clausula Create y para que se utiliza.

Instalación de Neo4j y un primer vistazo al Neo4j Browser

viernes, 4 de abril de 2014

Neo4j logo
En el anterior post vimos una introducción a Neo4j, en esta ocasión vamos a ver como se realiza la instalación y veremos el nuevo Browser de Neo4j a partir de la versión 2.0 desde donde podremos gestionar nuestra base de datos.

Neo4j una base de datos NoSQL orientada a grafos.

domingo, 30 de marzo de 2014

Neo4j

Neo4j es una base de datos open-source orientada a grafos, esta escrita en java y pertenece a este tipo de base de datos NOSQL que últimamente están tan en auge.

Cómo invocar comandos de un ViewModel en Windows 8.1 con Behaviors SDK

domingo, 23 de marzo de 2014

Con la llegada de windows 8.1 tenemos una librería para soporte nativo de behaviors. Vamos a ver unos ejemplos de como podemos invocar comandos que están en el viewmodel enlazado .

Cómo cambiar el lenguaje de una aplicación Windows 8.1 en tiempo de ejecución

domingo, 16 de marzo de 2014

Una aplicación para la Windows Store puede estar localizada en varios lenguajes utilizando ficheros de recursos, imágenes localizadas ubicadas en su carpeta de lenguaje correspondiente. Vamos a ver como podemos conseguir sobrescribir el lenguaje actual de una aplicación en tiempo de ejecución.

Scroll Infinito en Windows 8.1 con XAML y C#

viernes, 7 de marzo de 2014


Cuando se trabaja con grandes cantidades de datos y se tiene que mostrar elementos en cualquier tipo de listado, es muy útil mostrarlos de forma paginada. Un scroll infinito es una solución bastante útil, donde a medida que el usuario se acerca al final del scroll se carga la página siguiente.

Vamos a ver como podemos hacer scroll infinito en windows 8.1.

Personalizar colores por defecto del nuevo control SearchBox en Windows 8.1

viernes, 28 de febrero de 2014

Con la nueva versión de Windows 8.1, para desarollar una aplicación para la Tienda de Windows en XAML, tenemos el nuevo control SearchBox para poder realizar búsquedas dentro de nuestra aplicación.

Este control dispone de funcionalidad de historial de búsquedas y posibilidad de textos sugeridos mediante autocompletado.

Si no te convencen los colores por defecto que trae este control se pueden personalizar, vamos a ver como podemos realizar esta personalización de los colores.

Patrones de diseño en DDD: Objetos-Valor

jueves, 20 de febrero de 2014


En anteriores post he hablado de las Entidades

Patrones de diseño en DDD: Entidades
Patrones de diseño en DDD: Validación en las entidades

Ahora toca el turno a otro patrón de diseño habitual en DDD como son los Objetos-Valor.

Patrones de diseño en DDD: Validación en las entidades

viernes, 14 de febrero de 2014


Unos de los patrones más habituales en DDD son las entidades, ya escribí un post sobre este patrón. Ahora me quiero centrar más en la validación de la entidades y donde debería estar esta lógica, es una decisión que tarde o temprano se tiene que tomar.

Patrones de diseño en DDD: Entidades

viernes, 7 de febrero de 2014


En el diseño orientado al dominio es habitual utilizar una serie de patrones, voy a escribir una seria de post relacionados con estos patrones. En esta primera entrega vamos a ver las entidades.

Las entidades es un tipo de clase dedicada a representar un modelo de dominio con una serie de características:

Implementing Domain-Driven Design: Vaughn Vernon

sábado, 25 de enero de 2014


Hace un par de semanas me compre este libro de Vaughn Vernon ya que todavía no tenía un libro sobre DDD y la arquitectura de software es un tema que me gusta bastante.

Estuve mirando libros y después de estar investigando por Internet, las dos opciones estaban claras, me compraba Domain-Driven Design: Tackling Complexity in the Heart of Software de Eric Evans o me compraba Implementing Domain-Driven Design de Vaughn Vernon.

El libro de Eric Evans fue el primero que salio sobre Diseño Orientado al Dominio hace ya 10 años y el de Vaughn Vernon todavía no ha hecho apenas un año desde que salió, por este motivo y pensando que el libro se adaptaría a tecnologías actuales, fue el que me decidí a comprar finalmente.

La verdad es que después de leerlo casi por completo no me arrepiento de la compra y recomiendo este libro encarecidamente.

Voy a hacer un breve de resumen del libro:

Como mapear los Objetos-Valor de Dominio (DDD) en Sql Server con Entity Framework

miércoles, 22 de enero de 2014

Logo Entity Framework

Cuando diseñamos entidades siguiendo un modelo orientado al dominio (DDD) es frecuente que nos encontremos la circunstancia de crear Aggregate Roots como puede ser una entidad User que contiene otros tipos de objetos como pueden ser Entidades o ValueObjects, un ejemplo de Value Object bastante frecuente es el de un objeto dirección.

Normalmente un Object Value se persiste en base datos como campos en la tabla de su entidad padre.

Vamos a ver de que forma podemos hacer esto con Entity Framework para SQL Server.

DDD - El Dominio es el Corazón de una Aplicación

domingo, 12 de enero de 2014



En una aplicación donde el diseño esta orientado al dominio (Domain design Driven o DDD), termino que introdujo Eric Evans en su libro, el dominio debe ser lo más importante de una aplicación, es su corazón.

Cómo crear objetos en JavaScript

sábado, 4 de enero de 2014

Logo JavaScript

Los objetos en javascript son colecciones de pares clave-valor y tenemos varias formas de crearlos.