Archive for the 'Programación' Category

Primeros encuentros con MariaDB

Nada más sustituir mysql por MariaDB tuve el primer problema.  No podia activar el log de consultas lentas. Revise el fichero de configuración que es el que venía por defecto,  y parecia todo correcto

...
log_error               =/var/log/mysql/mysql.err
log_warnings            = 2
log_slow_file          = /var/log/mysql/mysql-slow.log
long_query_time = 5
...

Así que me puse a investigar para dar con la solución.  Busque y busque,  y todo paracia correcto, hasta que de casualidad me percate que la directiva a utilizar era log_slow_query,  y no log_slow_file. El problema fue que hay en algunos sitios que te recomiendan lo siguiente al utilizar log_slow_queries

'--log_slow_queries' is deprecated and will be removed in a future release.
Please use ''--slow_query_log'/'--log-slow-file'' instead.

Esta recomendación es erronea, ya que es la directiva log_slow_file la que esta obsoleta. Así que basto cambiar una directiva por la otra y todo se solucionó

...
log_error               =/var/log/mysql/mysql.err
log_warnings            = 2
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 5
...

Una vez solucionado esto,  fuí a crear unos índices en una tabla con un campo de tipo “date”, y me encontre con el segundo problema.  No me dejaba crear los indices porque decía que el valor por defecto del campo date no era válido

ERROR 1067 (42000): Invalid default value for 'nombre-campo'

El valor por defecto de este campo era “0000-00-00 00:00:00″ , así que lo único que hice fue cambiarlo a una fecha válida

alter table nombre-tabla change nombre-campo nombre-campo datetime NOT NULL DEFAULT '2000-01-01 01:01:01';

Espero que está información pueda serlé util a alguién y que no pierda la cantidad de tiempo que perdí yo para encontrar la solución.

Libreria javascript phototype

Como sabeis, no suelo escribir cosas de programación, pero esta vez haré una excepción, porque me he encontrado una librería para el tratamiento de imagenes desde javascript. Hasta aquí todo de lo más normal, pero lo importante, y es por eso que lo menciono aquí, es que estalibrería contiene una función imprescindible, y que debería estar en todas las librerías que se precien, e incluso, convertirla en un standard, o una ISO, o el palabro que se le quiera dar a esto.

Esta función no es más que unas lineas de código, que hacen que, por arte de magia, se añada a la imagen que tu quieras, ni más ni menos, que al grandioso Chuck Norris.

Yo, no he podido resistirme a modificar un poco la librería y añadir la función para poder hacer lo mismo, pero esta vez, con uno de los grandes de España. El tristemente fallecido, FARY. Y esto es el resultado, Chuck Norris, juanto al Fary, sobre la cabecera de mi blog.




La funcion que he añadido se llama addElFary y si quereis podeis descargaros todo el paquete aqui

Juego de mesa friki donde los haya

Me he encontrado en la web una de las cosas más frikis que os podais imaginar. El elemento en cuestion es un juego de mesa, como el parchis, la oca o el monopoly, pero tiene la peculiaridad de que te sirve para aprender los fundamentos de la programación, y encima en el lenguaje C.

Aqui teneis la imagen del juego y pinchando sobre ella, podeis ir a visitar la página

Mi primer plugin de wordpress

Cuando empece con el blog, decidí crear varias secciones para poder tener las cosas organizadas a mi gusto. En ese momento vi las alternativas que había y pensé que lo mejor sería hacerlo utilizando las ‘páginas’ de wordpress.

A medida que iba añadiendo cosas, vi necesario crear un índice, para poder acceder facilmente a cada una de las sub-páginas de cada sección o página. Fue entonces cuando busqué y encontré el plugin List Subpages With Descriptions que me creaba un listado de las sub-páginas de una página. Esto, me sirvió para salir del paso, pero todavía se quedaba algo corto para lo que yo quería.

Fue por ello que me decidí a crear un plugin que me permitiera tener un indice para las páginas ordenado por fecha, o por título, y además añadir una navegación entre las mismas.

Ahora, por fin, ya lo he terminado, y podéis verlo en funcionamiento en las secciones de Aplicaciones y El doctor Fecal, y bajarlo y leer su funcionamiento en la página del plugin

Trabajando con la nueva API de Youtube

No es mi costumbre poner artículos técnicos, pero aprovechando que tenía tiempo libre me puse a investigar un poco, para ver la manera de hacer un buscador de videos de youtube. Lo primero que vi en cuanto comence, es que habían sacado una nueva API (Si no me equivoco, lo hicieron en Agosto) basada en el estandar de Google Data (GDATA), que recomiendan utilizar en lugar de la anterior. Pero claro, te la recomiendan utilizar, mas no encuentras en ningun lado información en castellano para utilizarla. Esto ha hecho que me decida a hacer un pequeño tutorial de como utiilizar el API con el cliente PHP que ellos te ofrecen.

Lo primero que debemos hacer es descargarnos la ultima versión del cliente. Ahora mismo esta en desarrollo, por lo que la versión que nos bajemos no sera completamente estable, aunque a mi no me ha dado ningun problema. Yo estoy trabajando con la del día 9-10-07, pero os recomiendo que vayais a http://framework.zend.com/download/snapshot y os bajeis la última que haya.

Una vez descargada, la descomprimimos y subimos a nuestro servidor únicamente la carpeta Zend que se encuentra dentro de la carpeta library. El resto son ejemplos y documentación, que puede ser interesante que le echeis una ojeada.

Ahora ya estamos listos para empezar a trabajar.
- Primero cargamos la clase necesaria y la instanciamos


require_once './Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');
$yt = new Zend_Gdata_YouTube();

- Creamos la instancia de la consulta y la completamos


$query = $yt->newVideoQuery();
$buscar=$_GET['buscar'];
$query->videoQuery = $buscar;
$query->startIndex = 1;
$query->maxResults = 12;
$query->orderBy = 'updated';

Los parametros que se utilizan en la consulta son:
* videoQuery: la cadena de texto a buscar
* startIndex: desde que elemento, se comenzara la busqueda
* maxResult: numero de resultados máximo que contendra la búsqueda.
* orderBy: como se ordenarán los resultados (puede ser ‘updated’, ‘viewCount’ o ‘relevance’)

Para ver una explicación más extensa de los parametros ir a la guia de referencia (en inglés)

- Hacemos la petición


$videoFeed = $yt->getVideoFeed($query);
echo htmlBusqueda($videoFeed);

La llamada nos devuelve un array que tratamos en la funcion htmlBusqueda. Lo que yo he utilizado es


foreach ($videoFeed as $videoEntry) {
$url=$videoEntry->mediaGroup->player[0]->url;
$imagen=$videoEntry->mediaGroup->thumbnail[0]->url;
$titulo=$videoEntry->mediaGroup->title->text;
}

Luego ya depende de cada uno para dejarlo bonito. Yo como no soy diseñador no me lo he currado demasiado. Lo que si he hecho es aprovechar el script para bajar videos de youtube y hacer que los videos de los resultados se puedan bajar directamente. Lo podeis ver en la sección de Aplicaciones