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
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
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
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
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.
Etiquetas:
Inyección de Dependencias,
IOC,
Software Architecture
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
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.
Etiquetas:
Inyección de Dependencias,
Software Architecture
IndexAttribute en Entity Famework 6.1
jueves, 28 de agosto de 2014
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
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
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
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
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
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
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
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.
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
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 Neo4j, la 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
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 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.
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
Este blog no esta mantenido, suscribite a la newsletter del nuevo
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.
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
Este blog no esta mantenido, suscribite a la newsletter del nuevo
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.
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
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
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.
Etiquetas:
DDD,
Entity Framework,
Software Architecture
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
Suscribirse a:
Entradas (Atom)