Oct 282015
 

Solr es un motor de búsqueda que permite realizar operaciones de búsqueda muy elaboradas sobre conjuntos de documentos. Cada documento de una colección solr es un conjunto de pares (campo,valor). Los documentos pueden ser de distintos tipos, y cada tipo de documento se define como el conjunto de campos que puede contener, y el tipo de datos de cada una de ellos.

Así, en una colección solr que almacenara información sobre libros publicados, cada documento recogería los datos de un determinado libro, y podría incluir campos ‘titulo’, ‘autor’, ‘fecha de publicación’, etc.

En las versiones de solr anteriores a la 4.3, al crear una colección para almacenar determinado tipo de documentos era necesario incluir un fichero de configuración ‘schema.xml’ en el que se definian los nombres de los campos y sus tipos de datos.

A partir de la versión 4.3 se introdujo la posibilidad de crear colecciones con esquema gestionado (“managed schema”), también conocidas como colecciones sin esquema (“schema-less”). En una colección de este tipo, cuando se insertan documentos en una colección, solr añade automáticamente a la configuración de la colección las definiciones de los campos que encuentra, determinando el tipo de datos que contienen a partir de los valores que encuentra en los primeros documentos en los que aparece el nuevo campo.

Esta funcionalidad hace muy sencillo crear una nueva colección a partir de un conjunto de datos de los que no se conoce con exactitud su contenido. Sin embargo, en ocasiones es necesario realizar ajustes a la configuración del esquema elaborado automáticamente. Para ello, hay que convertir la colección “schema-less” a una colección de “esquema clásico”, como se explica en este artículo.

Seguir leyendo »

 Publicado por en 9:00 am
Oct 262015
 

Instalación de SiLK

En primer lugar, para obtener el paquete de instalación debemos rellenar el formulario en la página http://lucidworks.com/products/silk/#download_form. Una vez enviado el formulario, recibiremos en la dirección de email que hemos introducido un mensaje con el enlace para la descarga.

El paquete descargado en nuestro caso se llama SiLK-1.5.zip y ocupa 290 Mb

Para realizar la instalación, basta con descomprimir el fichero zip en un directorio de nuestra elección. Una vez descomprimido, podemos ver que el paquete contiene tres directorios, para cada uno de los componentes principales de SiLK:

  • solr-4.10.3 – El motor de búsqueda solr
  • solrWriterForLogStash – Una versión de LogStash que procesa los ficheros de log de accesos del servidor web, y los almacena en un índice solr
  • banana – Es el front-end que presenta el resultado del proceso estadístico del los datos almacenados en solr en forma de gráficos y tablas en un navegador web

Instalación de Java

El motor de búsqueda solr utilizado por SiLK se ejecuta en una máquina virtual Java, por lo que debemos disponer de un entorno de ejecución de Java (JRE) previamente instalado y operativo. Alternativamente podemos instalar el kit de desarrollo de java (JDK), que además del JRE, contiene también un compilador y otras herramientas.

En un sistema Linux Debian, la instalación se puede realizar fácilmente con el comando apt-get:

A continuación comprobamos la versión de java instalada con la opción “-version”:

Configuración y ejecución de solr

El motor de búsqueda solr de ejemplo incluido en el paquete SiLK se ejecuta con los comandos:

Con esto, solr comienza a ejecutarse y queda a la espera de conexiones en el puerto 8983. Desde un navegador web, accedemos a la url “http://SERVIDOR:8983/solr”, y accedemos al frontend de solr:

SiLK-sample-collections

Como podemos ver, la instancia de solr ya contiene la definición de algunas colecciones de ejemplo. Entre ellas:

  • La colección “logstash_logs” es una colección vacía, preparada para que logstash almacene en ella los logs de acceso.
  • La colección “banana-int” es una colección vacía, preparada para almacenar en ella los paneles de control que se generen en banana.

Configuración y ejecución de LogStash

El componente LogStash de SiLK se encuentra en el directorio  “SiLK-1.5/solrWriterForLogStash/logstash_deploy”

Para ejecutar logstash, debemos preparar previamente un fichero de configuración “logstash_apache.conf” con tres secciones: input, filter y output.

Sección input

En esta sección se indican los ficheros de entrada a logstash.

Sección filter

Sección output

Con este fichero de configuración, podemos ejecutar logstash con los comandos:

Típicamente, el fichero que se especifica en la sección input del fichero de configuración es un fichero de log de accesos “vivo”, sobre el que apache está registrando las solicitudes de acceso que se van recibiendo. Cuando logstash termina de procesar el contenido del fichero, continúa ejecutándose, y va procesando los nuevos registros conforme apache los va escribiendo en el fichero.

Si lo que queremos es procesar un fichero de log y que logstash finalice su ejecución cuando termine de procesarlo, deberemos cambiar la configuración de la sección input para que los datos a procesar se lean desde stdin:

y ejecutar logstash de la siguiente forma:

Configuración de banana

Para acceder a banana, basta con visitar desde un navegador la url:

si todo funciona correctamente, veremos el panel de control por defecto “Basic Dashboard with Pointers”:

banana-basic-dashboard

Si estamos utilizando una instancia de solr que se ejecuta en otro servidor, o en un puerto distinto del puerto por defecto 8983, deberemos editar el fichero de configuración :

En dicho fichero, deberemos especificar la url de acceso a solr, incluyendo el nombre completo del servidor y el puerto en el que da servicio.

A continuación podemos comenzar a definir y configurar paneles en los que se presentarán de forma gráfica las estadísticas que nos interesa obtener. Para no partir de cero, podemos descargar de github algunos ejemplos.

 Publicado por en 11:20 am
Mar 042015
 

La información social de Facebook puede ser accedida por programa, utilizando el “Graph API”. Facebook ha desarrollado una librería en PHP que simplifica la programación de aplicaciones que desean hacer uso de esta información.

En este artículo se explica la manera de utilizar esta librería para obtener información de lugares, negocios, etc mediante un script escrito en lenguaje PHP.

Seguir leyendo »

 Publicado por en 8:33 am
Abr 072014
 

WordPress es un sistema de gestión de contenidos (CMS) muy flexible; aunque se utiliza principalmente para implementar blogs internet, es posible utilizarlo también para otro tipo de sitios. En estos casos, algunas de las funcionalidades que ofrece por defecto pueden no resultar adecuadas. Este es el caso de los tags del tipo <link rel=”*”> que aparecen en el interior de la sección <head> del código HTML de una página o artículo.

En este artículo explicamos la manera de eliminar estos tags.

Seguir leyendo »

 Publicado por en 6:35 pm
Mar 022014
 

Un tooltip es un pequeño texto que se puede asociar a determinados elementos de la página, ya sean enlaces, campos de un formulario, imágenes, etc… y que típicamente contiene una descripción del elemento, información adicional o consejos útiles sobre el mismo.

Un tooltip sólo se visualiza cuando el usuario coloca el cursor sobre el elemento  al que está asociado, y por ello constituye un recurso excelente para ofrecer al usuario información complementaria sobre el contenido de una página, sin recargar excesivamente el contenido visible.

En este artículos examinamos las distintas técnicas existentes para la incorporación de tooltips a una pagina web.

Seguir leyendo »

 Publicado por en 8:07 pm
Ene 252014
 

Geonames es una base de datos de información geográfica que contiene datos sobre más de 10 millones de topónimos de todo el mundo, incluyendo poblaciones, ríos, montañas, etc…, a los que asocia unas coordenadas, altitud, y otros datos.

Esta base de datos se alimenta de distintas fuentes oficiales, y de la información proporcionada por usuarios de todo el mundo, siguiendo el modelo de “crowdsourcing” que tan buenos resultados da en este tipo de proyectos.

Geonames se ofrece gratuitamente, y puede ser consultada a traves de una serie de webservices, para los cuales existen librerías de cliente en distintos lenguages de programacion. Además, es posible descargar un volcado de la base de datos completa que se genera diariamente.

En este artículo se explica la manera de cargar el volcado de Geonames en una base de datos MySQL, y se analiza la estructura y el contenido de esta interesante base de datos. Seguir leyendo »

 Publicado por en 9:17 pm
Nov 172013
 

RoundCube es un frontend para el acceso al servicio de correo electrónico a través de un navegador web.

RoundCube no es un servidor de correo, sino un cliente que se conecta mediante protocolo IMAP a un servidor de correo previamente existente. Por lo tanto, antes de intentar utilizarlo debemos disponer de un servidor de correo operativo que implemente dicho protocolo. En un sistema Unix, la instalación típica de un servidor de correo se realiza con Postfix, y el protocolo IMAP lo proporciona Dovecot.

Pero no es necesario instalar un servidor de correo para utilizar RoundCube. RoundCube se puede instalar por separado, para ser utilizado con cualquier servidor de correo que tenga soporte IMAP (como por ejemplo, GMail).

En este artículo vamos a comentar la manera de integrar el servicio RoundCube en un servidor, en el que  suponemos que ya se dispone de:

  • un servidor Postfix+Dovecot operativo
  • un servidor web Apache y una base de datos MySQL. Es habitual disponer de estos servicios en un servidor de correo Postfix, porque permiten la administración del mismo mediante el frontend Postfixadmin

Seguir leyendo »

 Publicado por en 11:06 am
Ago 082013
 

El compilador emscripten permite generar código javascript a partir de bytecodes LLVM.

Por otra parte, existen utilidades como llvm-gcc o clang, que convierten código C o C++ en bytecodes LLVM.

Esto permite realizar una conversión de código fuente C/C++ a código javascript.

En este artículo se explica el proceso a seguir para realizar esta conversión, mediante un ejemplo. Seguir leyendo »

 Publicado por en 12:04 pm