Sesión de Introducción a Big Data
El pasado 23/04/2013 asistí a un evento organizado por FORMAN en el PTA (Málaga) donde José Álvarez Gómez impartió una sesión introductoria a Big Data desde el punto de vista de Oracle: además de introducir el concepto general de Big Data, también informó sobre Oracle Big Data Appliance.
Comparto aquí algunas notas que tomé durante la sesión.
El concepto Big Data
Big Data (en Wikipedia)) se puede definir como un conjunto de técnicas y de tecnologías que permiten analizar eficazmente todos los datos disponibles, estructurados o no, obtenidos de diferentes recursos u orígenes. El uso de estas técnicas y tecnologías se reparte en cuatro fases del análisis:
- Adquirir.
- Organizar.
- Analizar.
- Decidir.
Los objetivos de captar toda la información posible deben ser (a) reaccionar a eventos y (b) poder cambiar por los resultados de forma proactiva.
Nos encontramos con grandes retos: enormes volúmenes de datos que se generan a gran velocidad. Pero, sobre todo, la necesidad de obtener los valores que interesan, a partir de estos grandes volúmenes de datos, en el tiempo adecuado.
En general, el término Big Data se aplica sobre todo a esos grandes volúmenes de datos no estructurados que se filtran, se procesan, se almacenan posteriormente en bases de datos estructuradas y se integran con mi aplicación.
Tecnologías y software para Big Data
Me permito poner aquí una diapositiva de la sesión que muestra una arquitectura para Big Data:
Destaco algo de tecnologías y software comentados en la sesión:
- Cloudera: una distribución de Apache Hadoop que se utiliza en las fases de adquisición y organización de datos no estructurados. De esto me llamó la atención el Hadoop Distributed File System (HDFS), un sistema de ficheros distribuido especialmente útil en este tipo de aplicaciones.
- Oracle NoSQL Database: base de datos distribuida basada en pares clave-valor, usada sobre todo en la fase de adquisición de datos no estructurados.
- Oracle Data Integrator: herramienta para integrar datos de diferentes fuentes que se utiliza en la fase de organización de datos junto con los conectores Oracle Loader for Hadoop y Oracle Direct Connector for HDFS.
- MapReduce: framework para computación distribuida diseñado para dar soporte a grandes cantidades de datos. Forma parte del sistema Hadoop y se utiliza en las fases de adquisición y organización de datos, pues opera con pares clave-valor.
- R: lenguaje de programación de código abierto diseñado para computación estadística y para generación de gráficas. Oracle también tiene su distribución que se puede utilizar en la fase de análisis de datos.
- Endeca Information Discovery: otro producto de Oracle que forma parte del Business Intelligence que se utiliza en las fases de análisis y decisión.
Para finalizar, podéis acceder a las diapositivas de la presentación aquí y aquí.
Enlaces rápidos
Una recopilación de enlaces que me han parecido interesantes en esta última semana:
- WordPress Performance Optimization: un completo artículo que orienta sobre los distintos aspectos a considerar cuando se quiere optimizar el rendimiento de WordPress.
- The Anatomy of a Perfect Web Page: muy buena guía sobre el proceso de diseño y desarrollo de un proyecto web.
- Custom Report Sharing for Google Analytics: espacio donde los apasionados de la analítica web pueden encontrar y compartir informes y paneles de mandos para Google Analytics.
Configurar WordPress para varios servidores con un único fichero wp-config.php

Es una práctica común entre los desarrolladores web el tener varias versiones de un mismo sitio WordPress: versión local, versión en desarrollo, versión de pruebas, versión en producción, etc.
En caso de que no utilices un sistema de control de versiones (SVN, Git, etc.), aquí tienes una manera fácil de mantener un único fichero de configuración wp-config.php que contenga las distintas conexiones a la base de datos, en función del servidor donde se encuentre el fichero.
Edita el fichero wp-config.php y, al principio del mismo, reemplaza los datos de conexión que suelen venir predeterminados por estas líneas (como en la imagen superior):
if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
// Entorno LOCAL
define('DB_NAME', 'nombreBDlocal');
define('DB_USER', 'nombreUSRlocal');
define('DB_PASSWORD', 'contraseñalocal');
define('DB_HOST', 'servidorlocal'); // normalmente, localhost
} else {
// Entorno PRODUCCION
define('DB_NAME', 'nombreBDpro');
define('DB_USER', 'nombreUSRpro');
define('DB_PASSWORD', 'contraseñapro');
define('DB_HOST', 'servidorpro');
}
En cada constante aquí definida, tendrás que escribir los valores correspondientes de las conexiones a tus bases de datos.
Como ves, los parámetros de conexión a la base de datos se definen en función de la IP del servidor donde esté alojado el fichero wp-config.php.
Jugando con $_SERVER['SERVER_ADDR'] y varios if...else if... (o case...switch...) podrás contemplar los distintos entornos en los que se ejecute tu sitio web con WordPress.
Actualización 19/05/2013
Otra manera muy práctica de mantener el mismo wp-config.php en distintos servidores (distintos entornos de ejecución de WordPress) es guardar los datos de conexión a la base de datos de cada entorno en un fichero distinto. En el siguiente ejemplo, se tiene un entorno local de desarrollo y un entorno real de producción:

El código que ponemos en wp-config.php es este:
if ( file_exists( dirname( __FILE__ ) . '/local-config.php' ) ) {
// ENTORNO LOCAL - DESARROLLO
include( dirname( __FILE__ ) . '/local-config.php' );
} else {
// ENTORNO REMOTO - PRODUCCIÓN
define('DB_NAME', 'dbbd');
define('DB_USER', 'dbmy');
define('DB_PASSWORD', 'dbpw');
define('DB_HOST', 'localhost');
}
Y el contenido del fichero local-config.php es este:
<?php
/**
* Datos acceso a base de datos local (desarrollo).
*/
define('DB_NAME', 'localdb');
define('DB_USER', 'localdbusr');
define('DB_PASSWORD', 'localdbpwd');
define('DB_HOST', 'localhost');
Si estás utilizando un sistema de control de versiones para tus desarrollos en WordPress, asegúrate de excluir el fichero local-config.php.
Primeras impresiones del Congreso Web 2012 en Zaragoza

Apenas he podido asistir a dos sesiones del Congreso Web en el día de su inauguración, pero ya puedo decir que tengo buenas expectativas para lo que veremos el resto de las jornadas.
Con este artículo inauguro una serie que no pretende ser una crónica de estas jornadas, pero sí quiero dejar apuntadas algunas ideas que iré recopilando de mi experiencia durante el fin de semana en Zaragoza.
Un plan de Analítica Web, con Xavier Colomés
Se propone utilizar segmentos para identificar distintos tipos de usuario de un sitio web ya que, para cada tipo de usuario, son aplicables métricas diferentes que proporcionen una información útil para el negocio.
Entender el significado de los parámetros medium, campaign, source es clave para poder realizar una implementación de Google Analytics que realmente pueda ser útil. Por ejemplo, puede haber 2 medios distintos para un mismo origen. Otra aclaración: una visita desde una página de resultados de Google siempre es un origen, y esa visita puede ser considerada como orgánica o proveniente de CPC.
Podemos utilizar la técnica AIDA para decidir QUÉ analizar, fijándonos en analizar cosas que generan:
- Atención: visitas, top content, landing pages.
- Interés: rebote, tiempo en la página, engagement.
- Deseo: site search, top fichas, likes/tweets.
- Acción: entradas a carrito de compra, look to book, top fichas.
Elaborar un panel de control con información agregada de todo lo recopilado, en el cual es bueno incluir unas recomendaciones de acción.
Tras haber analizado la información recopilada, es hora de recomendar una serie de actuaciones que sirven para mejorar el sitio web. Es clave identificar y poner el foco en 2 áreas de mejora: un segmento y un proceso que ocurra en nuestra web. Esto nos llevará a hacer un cambio (uno solo) para que podamos volver a empezar el ciclo de la analítica.
Clínica de Usabilidad, con Daniel Torres Burriel
Hemos conocido una parte de la metodología de diseño de la experiencia de usuario de un sitio web, basada en el uso de una matriz Objetivo / Tarea / Interfaz según la cual, para cada objetivo, hay que proponer al usuario una forma de conseguirlo (la tarea), y para ello se le ofrecen en pantalla una serie de elementos en la interfaz de usuario.
Sobre los Objetivos: se refiere al objetivo que debe cumplir el sitio web de la empresa, y no debe confundirse con el objetivo de la propia empresa. Si cambia el objetivo, deberá por tanto cambiar algo en el sitio web.
Sobre las Tareas: debemos preguntarnos “para qué” hacen los usuarios tal cosa en el sitio web, qué consiguen si hacen click aquí o despliegan una ventana por allí. Este “para qué” debe estar alineado con los objetivos de la web porque, si no, ¿para qué le estás pidiendo al usuario que haga eso?
Sobre la Interfaz: cada pantalla de la web debe tener un foco, como mínimo un punto sobre el cual debe girar la atención del usuario. Todas las pantallas deben servir para algo.
Me ha parecido interesante y cómodo el uso de Lynx (navegador web en modo texto, que no soporta imágenes ni otros elementos visuales o multimedia) para comprobar, de un vistazo, cómo están estructurados los textos de la página web (disposición, jerarquía de contenidos, etc.). Por ejemplo, se puede detectar con facilidad cuándo hay enlaces que no tienen un contexto claro que los relacione entre sí o que indiquen qué ocurrirá cuando hagas click en ellos.
Ha habido mucho énfasis sobre la necesidad de conocer bien el lenguaje HTML porque “ahí están todos los secretos”. Concretamente, se ha mostrado la especificación del estándar HTML 4.01 que existe desde 1999.
Se ha llamado la atención sobre el uso de efectos “mouse over” ya que, en dispositivos táctiles, no tiene sentido y debería sustituirse por otra forma de interacción.
Me he dado cuenta en esta charla de una cosa: todos tendemos simplemente a “informar” en nuestros sitios web, esperando que la curiosidad del usuario y la calidad de nuestro producto sea suficiente para que haya una experiencia de usuario satisfactoria y, quizá, una conversión. Pues no, no sólo debemos informar.
Al final del día hemos disfrutado de unas cervezas y unos aperitivos saladitos al calor de Zaragoza, con ganas de que comience la siguiente jornada.
Enlaces rápidos
- Software open source para gestión de proyectos: Redmine y LibrePlan.
- HTML to JavaScript convertor: herramienta para transformar bloques de código HTML en sentencias Javascript.
- 25 Useful CSS/Wordpress Snippets: colección de útiles trozos de código para CSS y para WordPress.
- Tema WordPress basado en Skeleton: HTML5 responsive layout.
- Algunos ebooks gratuitos sobre experiencia de usuario.
- Curso básico de mapas mentales.
- Técnicas para optimizar el rendimiento de Apache y PHP: este, este y este.
- Documentación sobre el optimizador de Oracle: papers about Oracle CBO.
Seguimos…
Seguridad en la venta por Internet
El pasado 1 de diciembre de 2011 asistí a la jornada “Seguridad en la venta por Internet” organizada por la Cámara de Comercio de Granada, dentro del programa Feria del Conocimiento. Aparte de ser un evento puramente comercial para ofrecer diferentes servicios a las personas y empresas asistentes, anoté algunos detalles que me gustaría compartir.
- La seguridad de la información con la que trabaja cualquier organización debe ser valorada en dos ámbitos:
- El ámbito interno de la organización: funcionamiento interno, procesos de trabajo, comunicaciones internas, etc.
- El ámbito externo de la organización: imagen pública, lo que se percibe desde fuera, lo que transmite esa organización.
- Las características de una información segura son: disponibilidad, integridad, confidencialidad, autenticación y trazabilidad. La información segura es tratada/afectada/gestionada por personas, procesos y tecnología.

- Si guardamos información en países extranjeros, la legislación vigente de ambos países debe ser “compatible” para garantizar la seguridad de la información.
- En un formulario web en el que pidas cualquier dato personal, debes requerir expresamente el consentimiento de la persona para que esos datos personales sean tratados para llevar a cabo esa solicitud o servicio. Para ello lo habitual es colocar una casilla de verificación (checkbox) que la persona deba marcar obligatoriamente antes de enviar el formulario, indicando así que acepta nuestra política de privacidad de datos y que da su consentimiento. Si no marca esa casilla, el formulario no debería enviarse; dicho de otra manera, si no marca la casilla tú nunca deberías tener ninguno de sus datos personales.
- Si tienes pensado enviar comunicaciones comerciales a quien te dio un dato de contacto a través de un formulario web, es imprescindible que en ese formulario web también solicites el consentimiento de la persona para recibir publicidad. Esto puedes hacerlo mediante una casilla de verificación para que la persona la marque en caso de aceptar la recepción de publicidad. De esta manera, tendrás menos posibilidad de ser calificado como spam.
- Es posible que tengas acuerdos con alguna otra organización para pasarle datos de tus clientes o tus contactos. En ese caso, en el formulario web donde recabes datos personales también debes solicitar expresamente el consentimiento a la persona mediante una casilla de verificación, de forma que acepte la cesión de sus datos a terceros. Esto no es necesario si, para completar el servicio solicitado por la persona, es imprescindible que se utilicen sus datos. Por ejemplo, al comprar un producto en una tienda online es necesario que la empresa de logística conozca la dirección de la persona para poder entregar el paquete y así completar el servicio que solicitó y pagó.
A nivel técnico, cuando vas a tratar con información segura a través de Internet deberias conocer estos conceptos:- Certificado digital.
- Firma electrónica.
- Servidor seguro.
- Cuando una persona está navegando por un sitio web seguro (esto es, mediante HTTPS) y ese servidor web dispone de un certificado digital, resulta que toda la información que viaja desde el equipo de la persona (cliente) hacia el servidor va encriptada, pero la información que va desde el servidor hacia el cliente no va encriptada.
Para asegurar que la comunicación entre un equipo cliente y un servidor es segura, y que la información viaja encriptada en ambos sentidos, es necesario que tanto el servidor como el cliente dispongan de certificado digital.
Más información:
- Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.
- Ley 34/2002, de 11 de julio, de servicios de la sociedad de la información y de comercio electrónico.
- Web informativa sobre la Ley de Servicios de la Sociedad de la Información.
- Agencia Española de Protección de Datos.
- Área de Seguridad del Instituto Nacional de Tecnologías de la Comunicación (INTECO).
- CriptoRed: red temática de criptografía y seguridad de la información.
- Legislación de la Unión Europea para la Sociedad de la Información.
- Mis notas sobre LSSI y LOPD extraídas de otra jornada sobre el tema.



