9 de abril de 2015

Probando Power Query con SmartSantander

Power Query es un complemento de Excel que nos permite gestionar y automatizar todo lo que tiene que ver con búsqueda de información online, limpieza y carga de ficheros de datos, mezcla de datos… Se descarga desde la web de Microsoft, asegurándonos de elegir la versión correcta para nuestra instalación de office, tanto por idioma como por versión (32 o 64 bits).

Su primer uso es facilitarnos encontrar información en internet, a partir de fuentes de datos como Wikipedia, censo y gobierno USA (recordar buscad en inglés)… La herramienta localiza tablas de información en páginas web (en este caso, introducimos una url directamente). En ambos casos, los datos quedan vinculados con el origen, por lo que si estos cambian, se consiguen los datos nuevos al refrescar la conexión.

img1

Su otro modo de funcionamiento es la carga de datos desde ficheros de texto, Excel, al estilo del importador de ficheros csv, delimitados o de ancho fijo.

img2

La herramienta funciona como un asistente por pasos, en los que vamos ejecutando operaciones para ir modificando y limpiando los datos de la forma deseada. Tenemos herramientas para:

  • Dividir campos en varias columnas, a partir de delimitadores o de anchos
  • Unir columnas
  • Hacer conversiones complejas de tipos, fechas…
  • Limpiar datos que no cumplen un determinado criterio
  • Mezclar varios ficheros
  • Relacionar datos de varios ficheros, para crear un único fichero con datos de ambos
  • Realizar cálculos, fórmulas

La potencia de Power Query se pone de manifiesto en su capacidad de repetir las operaciones que realizamos en un fichero sobre otros similares, ya que todas las operaciones que realizamos en los menús generan unas acciones en un lenguaje de programación de la propia herramienta. De esta forma, podemos replicar las operaciones en otros ficheros, o si tenemos necesidades especiales, programar una operación.

Vamos a probarlo con un ejemplo de datos reales, tomados de SmartSantander. La dirección http://maps.smartsantander.eu/getdata.php nos ofrece datos en tiempo real del estado de numerosos sensores, en forma de fichero json.

Desde la pestaña de PowerQuery, seleccionamos la opción ‘De Web’ e introducimos la url anterior. Se cargaran los datos, inicialmente en un único bloque. Usaremos la capacidad de expandir tablas para, en dos pasos, extraer todos los campos del json.

image     image

A partir de aquí, hay que analizar los datos y ver cómo prepararlos para el análisis posterior. Hacemos reemplazo de . por , y conversión numérica para los datos de longitud/latitud, cambiamos de nombre columnas….

El paso más importante es extraer la información del estado de los sensores, que aparece en formato texto dentro de una celda que contiene información en HTML. La alternativa que he seguido es crear una nueva columna con fórmulas las que, usando patrones de texto, extraigan cada dato. Por ejemplo, para la fecha de última actualización:

if Text.PositionOf([content], "Last update") = -1 then Date.FromText("01/01/1900") else Date.FromText(Text.Range([content], Text.PositionOf([content], "Last update")+12, 11))

Tras realizar todos los pasos, conseguimos una tabla de datos lista para analizar, con la ventaja de estar conectada al origen de datos. Si pulsamos la opción ‘Datos –> Actualizar’ se cargarán los datos de origen, se procesarán con nuestras reglas y se actualizarán en la tabla.

image

Ahora, usando tablas dinámicas, podemos hacer diferentes análisis.

Fecha de última actualización de los sensores que parece que actualizan este dato. Parece que bastantes dispositivos están ‘muertos’ o han sido reemplazados.

image

Situación de batería de los elementos que la actualizan en 2015 (los buses no informan de esto):

datos batería

Rizando el rizo, si tenemos acceso a Power Map for Excel (disponible con Office 365 o ‘puede que’ con el nuevo PowerBI gratuito), podemos usar los datos de longitud y latitud para mostrar datos en un mapa.

Por ejemplo, un mapa de calor con los datos de temperatura (que por cierto, son muy extremos Smile). En el mapa están todos los datos, no solo los dispositivos vivos, probablemente esos datos extremos sean de dispositivos que no funcionan correctamente o que fallecieron.

image

En este enlace podéis consultar y descargar el fichero Excel: http://1drv.ms/1Czi0kf. Para que funcione la actualización de datos es necesario tener PowerQuery instalado, si no, se trabajará con la última versión guardada. Con Excel Online se puede jugar con la tabla dinámica creada.

29 de octubre de 2013

Consolidación de logs con LogFaces

clip_image001Desde hace un tiempo, estamos utilizando LogFaces para centralizar y analizar las trazas generadas por aplicaciones diversas. Los resultados están siendo excelentes, al tratarse de una herramienta flexible y potente, con un coste de licencia muy razonable.

LogFaces es un servicio capaz de recibir eventos generados por aplicaciones diversas y consolidarlos en una base de datos. Desde ella, y con la aplicación LogFaces Client, los supervisores disponen de una consola en la que analizar en tiempo real el estado de las aplicaciones y realizar potentes búsquedas sobre los avisos generados.

clip_image002

El servicio

El servicio puede correr en cualquier equipo Linux o Windows, la instalación predeterminada es muy sencilla y prepara un servicio totalmente operativo, sobre una base de datos embebida basada en Apache Derby. Con un poco más de trabajo se puede conectar contra otras bases de datos relacionales, o usar MongoDB.

Tiene muchas opciones de configuración, pero repasaré solo las que hemos modificado para nuestro entorno.

Se puede integrar con un directorio activo para que se usen usuarios y grupos de directorio activo (y de otros proveedores, porque tira de LDAP) para identificar a los usuarios que acceden a consultar los logs.

La base de datos permite controlar la capacidad en días para los que se guardarán los logs, de forma que se eliminen automáticamente. También es posible configurar qué eventos se consolidan en la base de datos y qué eventos solo se retransmiten a los clientes. En nuestro caso, usamos la configuración por defecto, sólo se guardan los eventos de nivel INFO, y si alguna aplicación genera eventos DEBUG, estos se reenviarán a cualquier cliente que esté conectado. Si nadie está conectado, se perderán.

Podemos ampliar el esquema de información que se guarda utilizando MDC de log4j, unos parámetros que se pueden añadir a las trazas para enriquecerlas. En nuestro caso, hemos añadido dos parámetros, user y sessionID, que nuestra librería de trazas rellena para poder seguir todas las operaciones de una sesión de usuario en una aplicación web dentro de una granja de servidores.

clip_image003

En la gestión de notificaciones, tenemos dos opciones, los informes, que permiten una ejecución periódica (basada en cron) de una determinada consulta sobre la base de datos de LogFaces, que será enviada por correo electrónico a las direcciones indicadas. En nuestro caso, lo usamos para tener un resumen cada hora de determinado tipo de errores en algunas aplicaciones.

clip_image005

Por otra parte, tenemos la posibilidad de definir avisos en tiempo real: definimos una consulta y unos umbrales de eventos en un periodo. Por ejemplo, si en 5 minutos se producen más de 10 warnings o excepciones, se enviará un correo electrónico.

clip_image007

clip_image009

clip_image011

En cuanto a requerimientos de hardware, son bajos. En nuestro entorno, una máquina virtual con un procesador y 2 GB de RAM está consolidando eventos de unos 100 clientes, un cluster web y otras aplicaciones y servicios diversos, sin ninguna penalización ni pérdida de mensajes, mientras 5-8 personas tienen abierto el cliente de consulta.

Las aplicaciones

La integración entra las aplicaciones y LogFaces se realiza generalmente a través de log4j, log4net o log4php, aunque existe soporte para otras librerías de traceo o se puede hacer algún tipo de desarrollo propio.

En nuestro caso, adaptamos nuestra librería de traceo para utilizar log4net, además de mejorarla para guardar la información de sesión en aplicaciones web y configurar la información de algunas trazas especiales (todo esto es transparente a LogFaces).

Además, hemos hecho algún script para analizar otro tipo de logs tradicionales generados por aplicaciones para su envío a LogFaces, utilizando un script php en un servidor Linux y log4php.

El cliente de consulta

La aplicación cliente de consulta de logs es muy completa, permite definir ‘workspaces’, escritorios de trabajo en los que personalizar cómo queremos ver los logs, en caso de que queramos tener entornos diferentes para cada aplicación.

image

Permite dos modos de trabajo:

  • Consultas sobre la base de datos, cualquier consulta que se realice sobre la base de datos, por nivel de error, tipo de aplicación, fecha y hora, severidad…. puede ser consultada y refrescada automáticamente cada cierto tiempo.
  • Perspectivas: básicamente, son consultas que se ejecutan en tiempo real, mostrándonos los eventos a medida que se reciben.

Generalmente, trabajaremos con una perspectiva de problemas, que nos dice qué errores se están produciendo en tiempo real, y que recoge trazas de nivel WARN o excepciones.

clip_image013

De cada mensaje, tenemos acceso a un montón de información (condicionada por lo que estemos mandando en la traza):

  • Fecha y hora
  • Nivel de severidad
  • Dominio: es una etiqueta que podemos usar para hacer referencia a la aplicación que genera el error
  • Host: el equipo que genera el error
  • Logger: el logger de log4j/log4net
  • Clase y método que generan el error
  • Fichero y línea que genera el error, si tenemos información de depuración en los compilados

El cliente de Logfaces tiene muchas características interesantes, pero una es realmente útil. Sobre un error concreto, podemos recuperar rápidamente eventos anteriores relacionados con error, por dominio, máquina, sesión, usuario…. Realmente útil!!

clip_image014

El soporte y las actualizaciones

LogFaces es un producto vivo, con actualizaciones frecuentes con nuevas características y resolución de problemas. El soporte técnico es rápido y directo, muy efectivo.

En resumen, un producto totalmente recomendable!!!

http://www.moonlit-software.com/

16 de agosto de 2013

Bloquear ‘cookies de terceros’

Las cookies son pequeños bloques de información enviados por las páginas web que los navegadores guardan, para conocer la actividad previa de un usuario. Son útiles porque facilitan nuestro uso de los sitios más habituales. Casi todos los sitios web las utilizan y podemos considerar en general que sus ventajas superan posibles inconvenientes.

Sin embargo, cuando accedemos a un sitio como ‘elpais.com’, aparte del contenido del sitio y sus cookies, estamos cargando información de otros sitios, anuncios, Facebook y sus ‘Me gusta’, Twitter. Por defecto, los navegadores permiten que estos sitios de gestionen además sus propias cookies. Esto sirve, por ejemplo, para que al acceder a ‘elpais.com’, el elemento de Facebook, si hemos hecho inicio de sesión previamente, sepa quién somos y nos permita compartir información fácilmente.

Esto tiene muy pocas ventajas (vale, salvo para fanáticos de lo social) y MUCHOS inconvenientes:

  • Las empresas de anuncios pueden hacer (y hacen) seguimiento de nuestra actividad en distintos sitios, facilitando la creación de perfiles completos de comportamiento
  • Para FaceBook, Twitter y otros, se está enviado de forma no segura información que permite acceder a nuestra cuenta. Especialmente problemático en wifis públicas

La mejor forma de comprobar nuestra configuración es usar este servicio: https://www.grc.com/cookies/forensics.htm. Hace una comprobación de nuestro navegador y nos avisa de nuestra situación. GRC tiene un enlace corto para acceder http://bit.ly/checkcookie

En un Chrome bien configurado, esta es la situación ideal. Aceptamos todas las cookies ‘first party’, las que proporciona el sitio al que estamos accediendo:

image

Y bloqueamos todas las cookies de terceros:

image

Dependiendo de nuestra configuración, podemos ver si estamos aceptando cookies de terceros:

image

O perdiendo algo de información por fallos de nuestro navegador (menos grave y poco podemos hacer):

image

O por tener cookies previas (naranja). Esto es divertido, se configura los navegadores para que no acepten cookies de terceros, pero estos seguirán enviando las que ya tengan previamente. Vamos, que hay que borrar las cookies.

image

Veamos como evitarlas:

Safari

Bien por Apple, las nuevas versiones de Safari en Mac e IOS bloquean por defecto las cookies de terceros. Se puede desactivar en sus opciones.

Internet Explorer

Ir a Opciones, Privacidad, Configuración Avanzada y bloquear las cookies de terceros (la configuración de IE es ridículamente compleja y con todas sus aparentes capacidades, no protege frente a esto)

image

Chrome

Configuración, Opciones Avanzadas, Configuración de contenido:

image

FireFox

Opciones, Privacidad, Historial, Usar configuración personalizada para historial, y desactivar las cookies

image

Dispositivos móviles

Aquí la cosa se complica, en mis pruebas, pocos navegadores lo permiten, aunque las combinaciones de dispositivos y versiones es enorme.

  • iOS en sus últimas versiones lo hace por defecto.
  • Firefox en Android permite hacerlo en su configuración.
  • Chrome en Android no tiene esta opción.
  • iré actualizando la lista…

Resumiendo, si el tema te preocupa:

1) Comprueba con http://bit.ly/checkcookie

2) Cambia configuración y prueba de nuevo

3) Borra todas las cookies que ya tienes con las herramientas de vaciar historial de navegación

7 de abril de 2013

Mapas en Excel 2013

Un post rápido sobre las capacidades para hacer mapas en Excel 2013.

Con la aplicación Bing Maps es posible crear rápidamente mapas con datos. Se instala Office App del menú anterior y se inserta un nuevo gráfico desde

image

Con ello, podemos hacer mapas como este, sin más que indicar el nombre de la ciudad y añadir el ‘,Spain’ para que la localice:

image

Además, aprovechando una nueva función ServicioWeb, es posible llamar al API de Bing o de Google para obtener más información sobre una dirección, calcular distancias, etc.

En este artículo se detalla cómo:http://cwebbbi.wordpress.com/2013/02/26/bringing-location-information-into-excel-2013-with-the-webservice-function/

Más detalles sobre la llamada a servicios web: http://cwebbbi.wordpress.com/2012/07/31/using-the-webservice-function-in-excel-2013/

PowerCfg en Windows 7/8

Windows 7 y 8 tienen un comando muy útil para conocer muchos detalles del consumo de energía y funcionamiento de la batería de un portátil. Para usarlo, es necesario abrir una ventana de ‘símbolo de sistema’ con privilegios de administrador.

Tiene un montón de opciones (usar /h para verlas todas) que permiten modificar los perfiles de energía, deshabilitar la hibernación… pero voy a centrarme solo en dos opciones.

Ambas generan un extenso fichero HTML con los detalles de su análisis.

powercfg /energy

Realiza un análisis del sistema durante 60 segundos, y nos informará de:

  • características de nuestro sistema, modos de ahorro de energía…
  • capacidades de la batería en caso de portátiles, la carga nominal y la última carga completa realizada
  • procesos o servicios que consumen demasiados recursos
  • drivers que plantean problemas de compatibilidad con la suspensión selectiva o ahorro de energía

image

 

powercfg /batteryreport (sólo en Windows 8)

Aparentemente, Windows 8 mantiene estadísticas de todos los procesos de carga y descarga de la batería, y a través de esta herramienta nos genera un informe muy interesante. Uso detallado de las últimas 72 horas, estadísticas de carga y duración de la batería, estudio de la capacidad máxima de carga y su evolución en el tiempo (bueno para ver si la batería tiene problemas)…

image

En el caso de mi equipo, se aprecia algo curioso: no está detectando bien la carga real de la batería, por lo que puedes trabajar con el un buen rato con la batería al 0%. Por eso, las estadísticas muestran porcentajes superiores al 100%

image

 

image

1 de abril de 2013

IIS y SSL: mejorando la seguridad de nuestras conexiones

El protocolo SSL y sus variantes, v2, v3, TLS ofrecen muchas combinaciones de protocolos de intercambio de claves, cifrado, etc. que han ido evolucionando en el tiempo para introducir mejoras y arreglar problemas de seguridad.
La configuración predeterminada de IIS (y de cualquier servidor Web) suele estar predefinida para ser compatible para una amplia gama de clientes, pero esto deja abiertos protocolos obsoletos o inseguros.
Una buena forma de comprobar nuestra calidad de seguridad es utilizar https://www.ssllabs.com/ssltest, para obtener un análisis exhaustivo de la calidad de certificados y CAs, protocolos soportados, etc. Es conveniente marcar la opción ‘Do not show..’ por si acabamos en la lista de la vergüenza.
Lo más básico es desactivar SSL2.0 y activar las opciones 1.1 y 1.2 de TLS. Hay recomendaciones de alteración del orden de los protocolos de cifrado para mitigar ataques BEAST, pero no parece tan grave y me entra la duda de los efectos secundarios en clientes antiguos.
Todo esto se puede hacer a través de cambios en el registro, pero hay una herramienta que nos lo facilita enormemente: IIS Crypto
Esta es la configuración que estoy usando para conseguir una B en el test anterior.
image
Cuidado… para soportar todos los protocolos, se necesita un Windows Server 2008 R2 o superior.
En esta página explican en detalle la configuración.

15 de abril de 2012

ifttt: put the internet to work

ifttt (if this then that) es un interesante servicio que permite automatizar tareas entre canales populares de servicios internet. Por ejemplo, actualizar Twitter cuando publicas algo en Blogger, recibir un aviso cuando haya una predicción de mal tiempo en un determinado sitio, sincronizar perfiles entre Instapaper y Readability…

Funciona a partir de canales, las piezas básicas que exponen operaciones. Algunos deben ser activados dando acceso a ifttt a ellos:

image

Tenemos recetas, plantillas de tareas que exponen otros usuarios, y tareas, las automatizaciones que definimos, y que se ejecutan cada 15 minutos.

Por ejemplo, jugando con el RSS de los 100 libros gratis de Amazon Kindle, podemos crear una tarea a partir del canal RSS (detecta cambios en un feed) para que nos mande un email con los libros actualizados.

 image

Merece la pena echarle un vistazo.