iOS 7 – NSUserDefault

En iOS cada aplicación tiene un sistema de almacenamiento por defecto para cada usuario llamado User Default System (UDS), el cual está compuesto por una base de datos en la que, a través de unos parámetros y métodos, podemos almacenar y recuperar ciertos valores, que suelen ser pequeñas cantidades de datos que usamos comúnmente en nuestra aplicación. Estos datos suelen ser el usuario o las preferencias del propio usuario, como por ejemplo, la configuración de pantalla, el intervalo de tiempo con el que quiere que se guarden los datos o que se descarguen del servidor, registro de fechas en las que se ejecutaron algunas acciones, etcétera.

¿Qué vamos a ver en este post? Primero lo sencillo que es guardar variables básicas. A continuación veremos cómo guardar algo más complicado, como un objeto.  Continúa leyendo


El Product Owner en proyectos ágiles

Hoy me he encontrado con un vídeo en el Henrik Kniberg, autor de libros como Scrum and XP from the Trenches, nos proporciona una visión muy esquemática de las tareas de un Product Owner como parte de un proyecto ágil. Es muy claro y sencillo para que el concepto llegue tanto a personas experimentadas como a noveles en metodologías ágiles.

Quiero añadir que he llegado a este video a través del blog de Javier Garzás (http://www.javiergarzas.com), muy recomendable para todos los interesados en profundizar sobre el desarrollo ágil.

El vídeo está en inglés con subtítulos en castellano para que lo podáis disfrutar todos.

 


iOS – UIWebView – Creando nuestro propio Browser

webview14

Algunas aplicaciones necesitan mostrar un sitio web o cargar algunos datos html.  UIWebView despliega información web embebida en nuestra aplicación sin necesidad de salir de la misma, es decir, el usuario puede ver contenidos web en la aplicación sin abrir Safari en el dispositivo. En este tutorial, vamos a ver cómo crear y utilizar el UIWebView, y asumo que tienes conceptos básicos de Xcode y de ObjectiveC.

La implementación es muy sencilla. Sólo se debe crear un objeto UIWebView y utilizar sus métodos delegados para cargar el contenido web. También se puede agregar la opción de avanzar o retroceder en el historial de navegación. Continúa leyendo


Node.js, MongoDB y redis – carrito de la compra

shoppingcart

En este tutorial vamos a ver como implementar un carrito de la compra. Para ello utilizaremos:

  • un servidor node.js con Express
  • una base de datos no-relacional de tipo clave-valor como es redis, para almacenar el carrito de forma termporal con tiempo de expiración y varias líneas de pedido (más info sobre redis)
  • una base de datos no relacional como es MongoDB para guardar el carrito una vez se realice la compra (más info sobre MongoDB) y mongoose

Partimos de una API RESTful que implementa los casos CRUD para una tienda de camisetas y que ya vimos en entradas anteriores. También podemos partir de la misma aplicación a la que añadimos el servicio “what’s hot now”

Lo que haremos será lo siguiente:

  • Crear un modelo carrito
  • Crear los servicios para:
    • añadir producto al carrito; el carrito se almacena en un hash en redis; en dicho hash habrá muchos productos (líneas de pedido); tiene tiempo de expiración de 5 minutos
    • ver el carrito; básicamente es ver los productos (líneas de pedido) que hay el el hash; las líneas de pedido tienen la id del producto y una cantidad
    • eliminar un producto del carrito; es eliminar una línea de pedido del hash
    • realizar compra; guarda el carrito con sus líneas de pedido en mongo
    • ver carritos que ya se hayan completado y estén en mongo Continúa leyendo

Node.js +Cluster

macCluster

Durante las últimas semanas, he estado jugando con Node.js, MongoDB y Redis. Con el fin de seguir mejorando mis capacidades en BackEnd, en los últimos días también he estado trasteando con el módulo Cluster de Node.js.  Este módulo realmente mejora la cantidad de carga que Express pueden manejar. Los resultados han sido asombrosos.

El módulo Cluster es bastante fácil de utilizar si estás acostumbrado a trabajar con el Node, pero me gustaría compartir mi experiencia a través de un sencillo tutorial esperando que pueda ser de ayuda a la comunidad.

Vale… pero… ¿Qué hace un Cluster?

Node.js corre en un solo hilo. Aunque es muy rápido en la mayoría de los casos, es inútil no utilizar el resto de procesadores si estos  están disponibles. El módulo Cluster permite crear una pequeña red de procesos separados que pueden compartir los puertos del servidor, con lo que podemos aprovechar toda la potencia de nuestro servidor. Dicho de otra forma, es muy útil para aprovechar las ventajas de los sistemas multi-core, ya que podremos poner en marcha un conjunto de procesos de Node para manejar la carga.

¿Cómo funciona?

Uno de los secretos a voces de node.js es que adopta muchos principios de Unix, llevándolos a su propio terreno. En este caso la creación de procesos es muy similar al modelo de Unix: un sencillo fork() crea una copia del proceso actual. A partir de ese momento el primer proceso se convierte en maestro o master, y la copia en un trabajador o worker. Es similar a cómo funcionan nginx o Apache, y a otros programas multi-proceso Linux.

Untitled drawing Continúa leyendo


Node.js Async

why

Ultimamente he estado desarrollando backend en Node.js y he encontrado algunos problemas, sobretodo al hacer llamadas a la base de datos dentro de un loop. De hecho he tenido que utilizarlo al montar un servicio “what’s hot” con node.js y redis.

Node.js se ejecuta en un solo ciclo, donde hay eventos en bucle, y aprovecha las llamadas asincrónicas para hacer varias cosas, como las operaciones de E/S. Mientras que otros lenguajes envían una consulta a la base de datos y esperan hasta recibir el resultado, Node.js no. Cuando se envía una consulta de base de datos, Node.js continuará ejecutando el código que viene después, y luego salta hacia atrás cuando el resultado está disponible.

Continúa leyendo


Node.js + redis. Implementando un “what’s hot” con tiempo de expiración

node_redis

 

En este tutorial vamos a ver como implementar un servicio “what’s hot” utilizando un servidor node.js y una base de datos no-relacional de tipo clave-valor como es redis. ¿Qué hace este servicio? Simplemente nos devuelve las camisetas más vistas durante el último día.

Partimos de una API RESTful que implementa los casos CRUD para una tienda de camisetas y que ya vimos en entradas anteriores. Lo que haremos será lo siguiente:

  • Accedemos a ver una camiseta GET /tshirt/:id
  • Al acceder, guardaremos en una BD redis una clave cuyo valor será el número de accesos que ha tenido la camiseta. La clave tendrá la siguiente forma: hot.id => 4. Además, la clave tendrá un tiempo de expiración de 86400 segundos, es decir, de un día.
  • Si queremos conocer las camisetas más vistas en el último día, accederemos a /hots con el método GET, y obtendremos las “camisetas calientes”.

Si queréis podéis consultar en SpeakinBytes información sobre redis.

Continúa leyendo


Noob, te presento a redis

redis

Actualmente estamos acostumbrados a hacer peticiones y a querer resultados lo más pronto posible. Con el auge de Internet y de los smartphones, las aplicaciones  cada vez tienen que dar servicio a un mayor número de usuarios y las antiguas arquitecturas Cliente-Servidor o las Bases de Datos Relacionales no son suficientes para soportar cientos de millones de usuarios, por lo que ha sido necesario  re-inventarse. Ya en una entrada anterior os hablamos sobre una base de datos no-relacional como es MongoDB.

En esta entrada hablaremos de redis de forma teórico-práctica, aunque más bien teórica. En futuras entradas veremos cómo utilizarlo junto con node.js y MongoDB. ¿Qué vamos a ver entonces?

  • ¿Qué es redis?
  • Tipos de estructura de datos que soporta
  • Instalación
  • Algunos parámetros de configuración
  • Comandos y operaciones básicas
  • Transacciones Continúa leyendo

API REST con Node.Js, Express, MongoDB y moongose.js

RESTfulAPI

En este artículo/tutorial  explicaremos como construir una API REST usando para ello Node.js y Express.js, junto con  MongoDB y el plugin para conectarnos a ella y mapear los modelos Mongoose.js.

El ejemplo en el que trabajaremos será el de una tienda online de camisetas. En principio, vamos a crear una aplicación que cumpla los casos CRUD (Create/Read/Update/Delete) para ver/crear/editar/borrar las camisetas de la tienda.

El proceso será el siguiente:

  • Montar el servidor Node.js junto con Express
  • Crear el modelo de las camisetas en MongoDB
  • Conectarnos a la base de datos
  • Construir la RESTful API implementando los casos CRUD
  • Probar que todo sirve utilizando Postman

En una futura entrega veremos algunos extras, como son:

  • Error handling
  • Buenas prácticas en nuestro código
  • Búsquedas con filtros

Continúa leyendo


Noob, te presento a Mongo

“The database market is in need of a big change. The technology that people typically use, the database layer, was designed in 1970 with a very different set of requirements in mind [...] It’s common to have applications for all your customers, your partners, your prospects, all interacting over the internet. It just wasn’t in mind when the relational database was built.” Max Schireson

Cuando uno se inicia en una base de datos no relacional como MonboDB se siente realmente perdido. No hay tablas, no hay registros, no hay SQL y NO HAY RELACIONES. Entonces… ¿Por dónde empiezo?

A lo largo de este artículo vamos a pasar a través de conceptos teóricos hasta llegar a un uso práctico:

  • ¿Qué es MongoDB y Cómo funciona?
  • ¿Cuándo usarlo y cuándo no?
  • ¿Cómo lo instalo?
  • Terminología, y formato de los documentos e ideas para la organización de datos
  • Comandos útiles en la consola de MongoDB
  • ¿Cómo consulto los datos?
  • ¿Cómo inserto los datos?
  • ¿Cómo hago un update? Parámetros especiales de update
  • ¿Cómo hago un delete?
  • Operaciones avanzadas de consulta

Continúa leyendo


Páginas:1234