mysqlsla: analiza los logs de MySQL

mysqlsla es una aplicación que nos puede ayudar bastante en el desarrollo de nuestas aplicaciones web con MySQL. Se trata de una aplicación que analiza los logs de MySQL (ficheros slow y general).
Además analiza los ficheros de logs raw: ficheros planos que contienen sentencias SQL. Por cada tipo de log genera un informe ordenable por los valores de métricas calculadas desde las queries del log.
Gracias a los informes podremos mejorar nuestro rendimiento modificando las opciones que creamos convenientes.
mysqlsla

MooMonth: calendario para MooTools

MooMonth es un calendario para MooTools que nos permite ver en nuestra aplicación los meses y las tareas o anotaciones de cada día.
moomonth.png
Altamente configurable, tiene efectos curiosos como las transacciones entre meses o la ampliación de un día del mes. Aún está en fase alpha, pero por ahora tiene muy buena pinta.
MooMonth

links for 2007-11-01

TwitterPoster: la influencia de los usuarios en Twitter

TwitterPoster es una aplicación web que hemos desarrollado en Come’n’Click Networks que muestra visualmente la grado de influencia de los usuarios en Twitter.
twitterposter.png
Mediante unos thumbnails de tamaño 24×24, 48×48 o 72×72 se indica de los más influentes cuales son los que sobresalen. Estamos en fase beta y recopilando dinámicamente los datos desde Twitter, por lo que cuanto más tiempo pase mejores resultados mostraremos.
twitterposter2.png
Disponemos también de versiones locales, para lo cual habrá que esperar a que los datos vayan apareciendo, por ejemplo http://twitterposter.com/jp.
Y para variar, nuestro amigo el Internet Explorer nos está dando algún que otro problemita.
Por cierto, como si se tratara de Dónde está Wally, en la versión internacional (sin filtro de paises) podemos ver a Enrique Dans.
TwitterPoster

Laboratorio: rownum en MySQL

Una característica bastante útil de Oracle es el rownum, que es el valor del índice de la fíla en el resultado de la consulta. Esta característica no existe en MySQL pero se puede implementar de forma sencilla de la siguiente manera.

select @rownum:=@rownum+1 rownum, t.*
from tabla t, (SELECT @rownum:=0) r

Otra característica interesante de Oracle es rowid, un id que referencia de forma única una fila de una tabla. Por ahora en MySQL no existe, por lo que tendremos que buscar otras alternativas a su uso, dependiendo del problema que tengamos (en la mayoría de los casos se soluciona con un campo autoincremental).

links for 2007-10-31

Obtener una página con autenticación en PHP

Algo que normalmente es interesante hacer y que nos da muchos problemas es leer una página web desde un script PHP y que la página tenga autenticación.

La solución es sencilla, pero es necesario el uso de CURL:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'usuario:password'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // timeout 10 segs
$data = curl_exec($ch);

Vía / [no recuerdo de dónde lo copié]

|

Wapache: ejecuta tus aplicaciones web Windows

Si antes hablábamos sobre cómo ver aplicaciones web en el escritorio, ahora vamos a hablar sobre cómo ejecutar las aplicaciones web en el escritorio. ¿Qué diferencia hay entre una cosa y otra?, pues que en este caso el servidor se ejecuta en nuestra máquina. Se trata de Wapache, una aplicación que transforma nuestras aplicaciones web en un ejecutable de Windows, para lo cual hace uso de Apache e integra un navegador Internet Explorer en la ventana, el cual no tendrá menu, barra de herramientas o barra de direcciones.
wapache.png
Además permite tres tipos de ventanas, personalizar el drop-down, y el menú contextual. Integración con el System tray y es compatible con los módulos de Apache 2.
Wapache
Vía / Jaslabs: High performance Software

| |

Laboratorio: reconocimiento de un motor de búsqueda para navegadores

Una de las características más útiles que poseen actualmente los navegadores es la posibilidad de personalizar y añadir motores de búsqueda. Firefox lo dispone desde hace tiempo e Internet Explorer lo ha añadido en su última versión. Para poder tener un poco de orden en la creación de estos motores existe OpenSearch, que tal como dice la Wikipedia es:

es un conjunto de tecnologías que permiten publicar los resultados de una búsqueda en un formato adecuado para la sindicación y agregación. Es una forma para que las páginas web y los motores de búsqueda publiquen sus resultados de forma accesible

El proceso es sencillo, añades un XML en tu web y un acceso desde tus páginas para que el navegador lo reconozca y te avise de que existe para instalarlo directamente.

El XML sería el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>Sentido Web</ShortName>
<LongName>Sentido Web - Actualidad, productividad y desarrollo web...</LongName>
<Description>Encuentra todo lo que necesitas en tu día a día del desarrollo web.</Description>
<Tags>sentidoweb web internet blogs bitácoras weblogs web2.0 estándares css xhtml web-semántica php javascript</Tags>
<Contact>info@blogsmedia.com</Contact>
<Url type="text/html"     template="http://sentidoweb.com/bm/mt-search.cgi?IncludeBlogs=1&amp;search={searchTerms}&amp;submit.x=0&amp;submit.y=0&amp;submit=Buscar"/>
<Image height="16" width="16" type="image/vnd.microsoft.icon">http://sentidoweb.com/i/favicon.ico</Image>
<Query role="example" searchTerms="php" />
<Developer>Luis Sacristán Pascual</Developer>
<Attribution>BlogsMedia 2007, Creative Commons (Reconocimiento-NoComercial-SinObraDerivada 2.5)</Attribution>
<SyndicationRight>open</SyndicationRight>
<AdultContent>false</AdultContent>
<Language>es-es</Language>
<OutputEncoding>UTF-8</OutputEncoding>
<InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>

Y la línea que hay que añadir a nuestras páginas en el header es la siguiente:

<link rel="search" type="application/opensearchdescription+xml"
href="http://dominio/path/opensearch.xml" title="Nuestro buscador" />

El XML de arriba es el que usamos para Sentido Web y aunque su lectura es clara, explicaremos cada una de las etiquetas del XML:

  • OpenSearchDescription: es la cabecera del XML de OpenSearch.
  • ShortName: contiene el nombre corto que identifica al motor de búsqueda. Debe tener como máximo 16 caracteres.
  • LongName: contiene el nombre largo que identifica al motor de búsqueda. Debe tener como máximo 48 caracteres.
  • Description: descripción del motor de búsqueda. Debe tener un máximo de 1024 caracteres.
  • Tags: conjunto de palabras separadas por espacios que describen el tipo de contenido que nos encontraremos en las búsquedas. Debe tener un máximo de 256 caracteres.
  • Contact: e-mail de contacto.
  • Url: indica el interfaz que el cliente (navegador) podrá utilizar para realizar la búsqueda. Dispone de varios parámetros que nos permiten personalizar la búsqueda:
    • type: tipo MIME del resultado de la búsqueda. Puede ser por ejemplo application/rss+xml para RSS o application/xhtml+xml para XHTML.
    • template: la plantilla de la URL para indicar al cliente cómo realizar la búsqueda, usando esta sintaxis.
    • indexOffset: contiene el índice del primer resultado de búsqueda.
    • pageOffset: contiene el número de la primera página de resultados.
  • Image: URL de la imagen que se asocia al buscador.
  • Query: define una búsqueda pueden realizar los clientes, más información aquí.
  • Developer: creador del xml.
  • AttributionEntidades a las que se les asocia el motor de búsqueda.
  • SyndicationRight: el grado de resultados que provee el buscador que se pueden buscar, mostrar y redistribuir.
  • AdultContent: indica si hay contenido para adultos.
  • Language: idioma del resultado de la búsqueda.
  • OutputEncoding: codificación de los datos de salida.
  • InputEncoding: codificación de los datos de entrada.

Existen otras etiquetas y se le pueden añadir otras si se indica un xmlns en la etiqueta OpenSearchDescription.