En muchas ocasiones necesitamos probar diferentes algoritmos para una misma aplicación o reutilizar el código para hacer una app parecida. Muchas soluciones consistente en crear un proyecto nuevo, ir cambiando las llamadas a las diferentes funciones para cada versión y modificar las variables de entorno cada vez (application id, content provider, assets, etc). Utilizando estos metodos el código se vuelve dificil de mantener, de entender y de actualizar. Cada versión de nuestra aplicación puede tener diferentes características o requerimientos para diferentes dispositivos. Además los flavors se pueden combinar con diferentes tipos compilación (build types). Cada combinación de productFlavor y buildType constituyen una variante de compilación. En función… Continuar leyendo


Antes de comenzar me gustaría darles la defición de JSON: Es un formato de intercambio de información que está basado en estructuras de pares clave-valor. Puede darse la situación de que en nuestra aplicación Android, necesitemos atender peticiones representadas en JSON, transformarlas a Java, tratar los datos y devolver una respuesta en JSON. Los WebServices REST son un buen ejemplo de esto. Para resolver este problema podemos implementar de forma manual la lógica de negocio para serializar y deserializar nuestro JSON, lo que supodrá un esfuerzo considerable. O bien podríamos hacer uso de alguna libería diseñada para este propósito como puede ser… Continuar leyendo


Butter Knife es una librería que nos facilitará la tarea de relacionar los elementos de las vistas con el código en nuestras aplicaciones Android. Nos evitará tener que utilizar findViewById y simplificará el código. Lo vemos más fácil con un ejemplo. Tenemos un layout llamado activity.xml con la siguiente estructura: <?xml version=”1.0″ encoding=”utf-8″?> <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_width=”match_parent” android:layout_height=”match_parent” android:orientation=”vertical”> <TextView android:id=”@+id/textview” android:layout_width=”wrap_content” android:layout_height=”wrap_content” /> </LinearLayout> En nuestro código, podremos utilizar la librería Butter Knife de esta forma para inyectar el TextView: public class MainActivity extends Activity{ @BindView(R.id.textview) TextView myTextview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); ButterKnife.bind(this); myTextview.setText(“Hello”); } }… Continuar leyendo


Para poder utilizar un servidor a través de HTPPS, el certificado digital SSL del servidor debe ser reconocido como un certificado “de confianza” por Android. Podemos comprobar los certificados reconocidos en una instalación de Android en las opciones de seguridad del dispositivo. Si intentamos conectarnos a un servidor mediante https y Android no reconoce el certificado como confiable obtendremos la siguiente excepción: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. Para solucionar este problema y realizar la conexión tenemos tres alternativas: Instalar “manualmente” el certificado en Android. Obligar al usuario a realizar esta instalación no parece una buena idea. Aceptar cualquier… Continuar leyendo


React es una librería para crear aplicaciones web, con Javascript del lado del cliente y del lado del servidor. Esa definición hace hincapié en una dualidad (cliente + servidor) que resulta una de las principales características de la librería, de las que ya hemos hablado anteriormente, en el artículo de Qué es React. Aunque volveremos sobre ese punto, ahora vamos a conocer otros datos de interés. Composición de componentes Así como en programación funcional se pasan funciones como parámetros para resolver problemas más complejos, creando lo que se conoce como composición funcional, en ReactJS podemos aplicar este mismo patrón mediante… Continuar leyendo


¿Qué es React? React es una librería Javascript focalizada en el desarrollo de interfaces de usuario. Esa es su principal área de trabajo, pero lo cierto es que con todo el ecosistema de aplicaciones y herramientas y componentes, con React encontramos un excelente aliado para hacer todo tipo de aplicaciones web, SPA (Single Page Application) o incluso aplicaciones para móviles. Es por tanto una base sobre la cual se puede construir casi cualquier cosa con Javascript y que nos facilita mucho el desarrollo, ya que nos ofrece muchas cosas ya listas, en las que no necesitamos invertir tiempo para desarrollar.… Continuar leyendo


¿Qué es un certificado SSL? Un certificado SSL sirve para brindar seguridad al visitante de su página web, una manera de decirles a sus clientes que el sitio es auténtico, real y confiable para ingresar datos personales. Las siglas SSL responden a los términos en inglés (Secure Socket Layer), el cual es un protocolo de seguridad que hace que sus datos viajen de manera íntegra y segura, es decir, la transmisión de los datos entre un servidor y usuario web, y en retroalimentación, es totalmente cifrada o encriptada. El que los datos viajen cifrados, nos referimos a que se emplean… Continuar leyendo


Una aplicación web progresiva o PWA (Progressive Web Apps ) usa capacidades web modernas para ofrecer una experiencias para usuario similar a la de una aplicación móvil. La idea que transmite esta definición es que los objetivos que debemos buscar al crear una PWA son: Que tenga el mayor rendimiento posible en móviles y que cargue de manera casi instantánea Una buena interfaz que se parezca lo máximo posible a una nativa La posibilidad de trabajar sin conexión Poder enviar notificaciones a los usuarios, como una app nativa Tecnologías que aprovechan las PWA Las PWAs se basan en unos conceptos bastante simples: Responsive… Continuar leyendo


El objetivo de este tutorial es utilizar passport para autenticar usuarios en una aplicación web utilizando MongoDB + Express + Node. Estructura del proyecto — models —- user.js — routes —- index.js — passport.js — views —- index.jade — server.js — package.json Instalamos las dependencias que vamos a utilizar con el comando npm install. Creamos un modelo user /models/user.js donde indicaremos que datos vamos a querer almacenar en la base de datos para nuestros usuarios: var mongoose = require(‘mongoose’); var Schema = mongoose.Schema; module.exports = mongoose.model(‘User’, new Schema({ name: String, provider: String, provider_id: {type: String, unique: true}, createdAt: {type: Date, default: Date.now} })); Configuramos… Continuar leyendo


La autenticación es una de las grandes partes de cada aplicación y la seguridad es siempre algo que está cambiando y evolucionando. En la actualidad, una de las formas más utilizada para añadir seguridad a un API es utilizando JSON Web Tokens. El objetivo de este tutorial es implementar la autenticación por token para una aplicación web basada en: MongoDB + Express + Node. Antes de empezar con este tutorial te recomiendo que primeramente empieces con este: Tutorial: Crear API RESTful utilizando Node.js + Express.js + MongoDB Estructura del proyecto —- models/ ——– user.js – config.js – package.json – server.js – middleware.js -… Continuar leyendo