Plugin WordPress: Mail_Me_If_Link_Broken

En una tarde he escrito este pequeño plugin para WordPress. Tenía muchas ganas de ver el sistema de plugins de WordPress, y he quedado gratamente sorprendido :-), ha sido sencillo, hay bastante documentación de funciones, y mucha información en Google de gente que los ha trabajado previamente (con Coppermine Gallery no hay tanta información).

El plugin
Su funcionalidad es muy sencilla, se me ocurrió hace tiempo, que pensé que sería útil a la hora de gestionar un sitio Web con mucha cantidad de información, tener algún sistema que te permitiera identificar los enlaces rotos. Hace cosa de unas semanas en el trabajo se me presento precisamente esta necesidad, administrando un portal con una cantidad de contenido ingente, hay muchos enlaces que están rotos (especialmente los de los contenidos más antiguos) y era necesario poner a una persona a revisar los enlaces (absurdo, porque como digo la cantidad de contenido es ingente).

Lo primero que pensé fue algún tipo de mecanismo que automatice el proceso, de manera que se conecte a la URL del enlace, y si recibe un error (tipo mensaje 404, 500, y demás) pues me enviara un mail. Pero no me acababa de convencer esta idea, porque en el sistema donde lo pretendía aplicar, había enlaces que enlazaba a una página estática que si funcionaba, pero que lo que fallaba era el contenido que debía mostrar (vídeos flash) por lo tanto ese supuesto código pensaría que el enlace estaría correcto.

La solución que se me ocurrió después es que sea el usuario que está navegando por la Web el que avise; en realidad es el mismo mecanismo que se está utilizando ahora, es el usuario el que nos indica que un enlace está roto, enviandonos un mail y diciendonos que en "tal" página el enlace no vá. Pero esto lo usan poco usuarios, pues poca gente se toma la molestia de mandarte un correo para advertirte de algo que no va en tu Web.

Con el plugin se le simplifica la tarea al usuario, de manera que al pasar el ratón por encima de un enlace, sale al lado un minúsculo botón Botón enlace roto que permite al usuario avisar del comportamiento incorrecto de ese enlace. De manera que para el usuario no hay complicación ninguna. Por otra parte el plugin internamente calcula todos los datos del enlace que presuntamente no funciona y te manda un mail a la cuenta que este configurada en WordPress.

Aspectos a mejorar en futuras versiones:

  • Que la cuenta de correo sea configurable, por si el administrador prefiere recibir el mensaje en otro correo.
  • Preguntar al usuario un captcha o suma sencilla, de manera que se eviten falsos positivos (envíos por error).

Información útil para desarrolladores:

Es el primer plugin que desarrollo para WordPress, pero al final todos los plugins de todas las plataformas se parecen en algunos aspectos. Por ejemplo los plugins para aplicaciones Web, es muy común que tengan algun mecanismo que te permita procesar la llamada a un archivo del plugin, usualmente para procesar una petición AJAX. En este caso esta información no la encontré en la documentación oficial (aunque ahora sé que está, pero no lo vi) sino que la localicé en la página de este programador.

Resumiendolo un poco, para poder realizar una petición a un archivo de un plugin de WordPress, y que este archivo pueda hacer uso de las librerías de funciones y variables que ofrece WordPress, es necesario que la llamada pase por el Core de WordPress, ya que si le haces la llamada directamente a tu archivo, dichas funciones no estarán disponibles (no las habrá cargado).

Para realizar esto son necesarios dos pasos, primero crear (y enlazar a su handler respectivo) la función encargada de procesar la petición a tu archivo, bien sea un código PHP o cualquier otra cosa, en el siguiente ejemplo proceso dos peticiones diferentes, una a un código PHP y la otra para obtener una imagen:

Pero esto no es todo, Worpress por motivos de seguridad no permite el paso de ninguna petición a los plugins a menos que le identifiques claramente las peticiones que debe autorizar. Esto se realiza dando de alta en WordPress (en un array destinado a tal efecto) el nombre de la variable que identificará la petición de tu plugin:

Eso es todo, este último paso por ejemplo no lo tiene Coppermine Gallery (y creo que debería). Por último, las llamadas a tu plugin las puedes realizar con llamadas del tipo:

A continuación se puede descargar el plugin y todo su código fuente, como siempre con licencia Creative Commons :-)

Plugin WordPress Mailme If Link Broken
Plugin WordPress Mailme If Link Broken
mailme_if_link_broken.zip
Version: 1.0
192.3 KiB
65 Downloads
Details...

Plugin Coppermine "Graphic_Keywords_Editor"

Me gusta mucho la galería de fotos Coppermine, considero que es una gran herramienta para poder gestionar todas las fotos que hago, tanto con la cámara como con el móvil. Lo genial de esta aplicación es que las fotos las tengo siempre disponibles en mi servidor, y no sólo eso, sino que familia y amigos también pueden acceder a las fotos, comentarlas y bajárselas si las desean usar; pero todo ello desde una plataforma que este controlada y donde la autoría y propiedad de las fotos siga siendo mía, al contrario que con Facebook que al subir las fotos, estas automáticamente les pasan a pertenecer a ellos. Quizás podría ser interesante utilizar herramientas tipo Flickr, DevianArt o Picasa, pero aunque algunas las he probado, me gusta más mi Coppermine ;-).
Con Coppermine, no pretendo evitar que me copien y/o utilicen las fotos sin consentimiento, simplemente me aseguro no estar "regalándoselas" a ninguna empresa. Además, el hecho es que las fotos en su mayoría, las tengo puestas en galerías de libre acceso, es decir que cualquier persona puede acceder y verlas o bajarlas (y por lo tanto usarlas). Eso no es algo que me preocupe, es más me alegraría saber que alguna persona le gustara tanto alguna de mis fotos que quiera utilizarla, si se da el caso estaría muy agradecido de que me dijera donde la ha utilizado para verlo.
Y por estos motivos, cuando veo algo que echo en falta en Coppermine, pienso si podría haberlo programado alguien, o si no, si podría hacerlo yo y colaborar de esa forma al crecimiento de la herramienta.
Este es uno de esos casos, a mi siempre me ha parecido genial la idea de etiquetar las fotos, porque facilita la tarea de encontrar luego fotos de personas, lugares o las fotos de un viaje concreto. Pero la forma de etiquetar en Coppermine es horrible, ya que hay que ir etiquetando las fotos de una en una, es tedioso, arduo y lo peor es que a menudo se comenten errores (unas veces utilizas una etiqueta con espacios para una persona, y otras veces sin espacios) y luego tienes varias fotos de una misma persona con varias etiquetas diferentes, por lo tanto pierdes la potencia de las etiquetas para localizar las fotos de esa persona.

Por estos motivos he implementado un pequeño plugin que me facilita la tarea de etiquetar mis fotos en Coppermine. Etiquetar las fotos en Coppermine ahora es más fácil y eficiente. Las características que cumple el plugin son las siguientes:

  • Se pueden seleccionar varias fotos simultáneamente para etiquetarlas.
  • Se pueden aplicar varias etiquetas simultáneamente a una o varias fotos.
  • La selección de fotos a etiquetar se realiza con el ratón y de manera similar a como se trabaja en un explorador de archivos en el PC; es decir se pueden seleccionar fotos pinchando y arrastrando, se pueden añadir fotos a la selección usando la tecla "control" (Ctrl), se puede de-seleccionar fotos haciendo clic nuevamente en ellas, etc. En cualquier caso aunque el funcionamiento se ha intentado que sea lo más similar posible al del explorador de archivos, hay algunas funcionalidades que no son iguales por limitaciones de la librería utilizada (JQuery v1.9)
  • Ver las etiquetas de cada foto al pasar el ratón por encima de la misma.
  • Ofrecer una lista de las etiquetas utilizadas anteriormente al escribir la etiqueta (el típico autocompletar).
  • Permitir operaciones de añadir etiquetas a una foto, eliminar etiquetas a la foto y reemplazar las etiquetas de una foto (esta última operación sustituye todas las etiquetas de golpe, quizás para una próxima versión mejore esta operación).
  • Cada usuario sólo puede editar las etiquetas de sus fotos; con excepción de administrador que puede etiquetar lo que quiera.
  • Permitir localizar todas las fotos SIN etiquetas; esto lo hace buscando todas las fotos con el campo de etiquetas vacio, y acto seguido les pone una etiqueta especial "_noKeywords_" de manera que se puedan localizar mediante la búsqueda normal de Coppermine.
  • Multilenguaje (actualmente español e inglés).

A continuación dejo un vídeo donde se ve el funcionamiento y la idea:

Limitaciones actuales:

  • Sólo funciona con el tema por defecto ("curve") de Coppermine; esto de debe a problemas con el hook para añadir botones.
  • En algunas tablet/móviles no funciona bien el autocompletar.

Comentarios útiles para desarrolladores:
La idea inicial del plugin era que simplemente permitiera seleccionar varias fotos con el ratón pinchando y arrastrando, esto fue más o menos sencillo de implementar con la funcionalidad "selectable" de JQuery UI; el problema vino al intentar utilizar la librería JQuery en Coppermine porque ya tiene una versión de la misma, pero es antigua (1.3 creo) y para usar el "selectable" necesitaba la 1.9 (la que había usado en las pruebas), tras investigar me encontré que una posible solución era cambiar el nombre de la función JQuery, el conocido "dollar" $(' ... '); para ello utilicé la función "noConflict":

Mediante "noConflict", podemos utilizar varias versiones de JQuery en una misma aplicación sin que se estorben unas a otras, básicamente lo que hace es que a cada versión de JQuery a utilizar le asigna un nombre diferente, en mi caso utilicé "jQuery19" como puedes ver. Esa línea la tienes que poner al final de la declaración de la librería de JQuery; y cada vez que en tu código quieras utilizar esa versión de JQuery simplemente llamas a JQuery con el nombre en cuestión en lugar del dollar, como puedes ver en el siguiente ejemplo:

Una vez que logré hacer funcionar la selección de imágenes en Coppermine sin problemas de conflictos entre versiones de JQuery, tenía otro problema, que fue el CSS necesario para que las fotos seleccionadas se vieran destacadas. El problema era que las etiquetas CSS que yo daba a las imágenes destacadas se veían sobrescritas por el CSS propio del Coppermine, por lo que no tenían efecto. Esta tontería me costo unas pocas horas de repaso de teoría del HTML, HTML5 y de las Hojas de Estilo en Cascada (no hay mal que por bien no venga) hasta que recordé que en CSS para conseguir sobrescribir una propiedad que está declarada después de la tuya, lo que puedes hacer es ser más específico en el selector. Resumiendo, que tenía que utilizar "td.ui-selected" en vez de ".ui-selected" en el selector para darle las propiedades a la foto seleccionada (si te quedan dudas, ya sabes, a recordar la teoría del CSS ;-)). Y por fin fui capaz de seleccionar fotos...

Selección de fotos con el mi plugin para Coppermine

Selección de fotos con mi plugin para Coppermine

Después implementé las funciones que añadían o eliminaban etiquetas en el servidor. No fue complicado pues hay bastante documentación para conocer el funcionamiento de los plugins en Coppermine, su BD, tablas y la forma de acceder y tocar en la BD.

Llegado a este punto tenía una primera versión funcional, pero al utilizarla me di cuenta que carecía de cosas importantes para que me fuera realmente útil, entre ellas:

  • La posibilidad de ver las etiquetas que tenía cada foto que estaba etiquetando
  • Ver las etiquetas previas que había utilizado con anterioridad en otras fotos (autocompletar).

La primera cuestión se solucionó más o menos rápido, pero para la segunda, después de investigar, encontré la librería "select2" basada en JQuery, pero no se puede decir que tenga mucha documentación (a día de hoy poco más de 3 ejemplos), y me costo lo suyo hacer que funcionara (mucho buscar en Internet y prueba y error). Cuando conseguí que funcionaran las pruebas, resultó que al añadir el código al plugin del Coppermine no funcionaba nada, tras más quebraderos de cabeza, resultó que me estaba pillando (lógicamente) la JQuery del Coppermine en vez de la mía (la 1.9); tenía que modificar la librería para que usara la versión nueva, para ello sustituí todas las llamadas a la función JQuery en la librería Select2 por la llamada a la mía ("jQuery19"); esto implicaba sustituir todos los "dollar", todas las definiciones de nuevas funciones y todas las llamadas (así dicho parece fácil, que lo es, pero la dificultad estuvo en darse cuenta del fallo y después en encontrar todas esas llamadas). Cuando todo funcionó ya tenía el autocompletar de las etiquetas, y al utilizarlo, ya sí empezaba a resultarme un plugin útil.

Muestra del autocompletar del plugin para Coppermine

Muestra del autocompletar del plugin para Coppermine

Con esta versión he organizado bien mis fotos, he realizado pruebas en la tablet y también funciona, pero con el uso, me han surgido nuevas necesidades. Concretamente la de localizar todas las fotos SIN etiquetas. Esto ha sido fácil de implementar, apenas me ha llevado una tarde. De esta forma ya puedo localizar rápidamente todas las fotos que aún no les he dado una etiqueta.

También comentar que NO he podido hacer que el botón que activa/desactiva la edición de las etiquetas se ponga mediante el uso del hook que Coopermine tiene para ello, el "sys_menu" ni con el "sub_menu". Desconozco porqué, pero cuando he tratado de buscar solución, toda la referencia que encuentro es para la creación de temas. En un futuro tengo que tratar de arreglar esto, porque tal y como está montado, el plugin sólo funciona con el Coppermine con el tema por defecto "curve"; si está usando otro tema, el botón de activar/desactivar no sale.

Después de todo esto, comentar que estoy abierto a nuevas ideas que puedan hacer de Coppermine un herramienta más útil aún :-).

Graphic Keywords Editor plugin for Coppermine
Graphic Keywords Editor plugin for Coppermine
graphic_keywords_editor.zip
Version: 1.0
244.9 KiB
41 Downloads
Details...

Ideas are just a multiplier of execution | Derek Sivers

Me ha encantado este artículo, que habla de la importancia de llevar a cabo nuestras ideas, aunque a veces (más de la cuenta en algunos casos) pensemos que no sirven o que el esfuerzo puede que no merezca la pena. Por poco que hagamos, si la idea es buena, será un factor que multiplique nuestras posibilidades de tener éxito y verla crecer. Por otra parte todas esas personas que tienen ideas y que no las comparten por miedo a que se las quiten o roben, pero que además no llegan a realizarlas nunca (porque no saben cómo o porque no pueden, por tiempo u otros motivos) simplemente lo que han tenido ha sido una oportunidad que han desaprovechado. Quizás si la hubieran compartido, se hubieran visto apoyados o incentivados a llevar a cabo algo; de manera que habrían salido beneficiados con su idea, mientras que de otra manera nada de nada.

http://sivers.org/multiply

Plugin MultiPicFilmStrip para Coppermine Photo Gallery

En mi galería de fotos montada con Coppermine he realizado varios cambios y modificaciones, pero siempre me quedo con el amargo regusto de hacerlo deprisa y corriendo, sin dedicarle el tiempo que se merece, por ello hace un par de semanas me mire el sistema de plugins de esta galería de fotos. Me sorprendio, es fácil y sencillo, en escasos minutos tienes tu primer plugin de pruebas instalado, configurado y funcionando. Después de esa grata sorpresa monte un plugin que modifica ligeramente el comportamiento de la tira de fotos que sale debajo de la vista de imágenes.

El comportamiento por defecto de la tira de imágenes de Coppermine es avanzar una imagen por cada vez que hacemos clic en la flecha de avanzar o retroceder, y resulta un poco molesto para mi gusto tener que estar haciendo clics uno tras otro para moverme por varias imágenes. Con el plugin que he creado, esa tira de imágenes mostrará seis nuevas imágenes cada vez que hagamos clic en la flecha correspondiente.

Para hacer funcionar el plugin únicamente necesitas descargar el archivo, descomprimirlo y subir la carpeta "moveMultiplePicsOnFilmstrip" a la carpeta plugins de tu Coppermine. Después lo activaremos desde la configuración de plugins de Coppermine, no hay que configurar nada, y desde ese momento, las fotos de la tira de imágenes avanzará seis fotos por cada clic que realicemos. He creado un pequeño vídeo para ver el comportamiento antes y después de la activación del plugin.

Información para desarrolladores:

Hacer un plugin para Coppermine es extremadamente sencillo, me ha sorprendido gratamente, y si sueles meterle mano a tus aplicaciones web para que se comporten exactamente como tu quieres, en el caso de esta galería de fotos creo que merece la pena dedicarle unos minutos para entender el funcionamiento de su sistema de plugins y hacer que tus modificaciones sean reutilizables.

En mi caso tuve un pequeño problema, y es que el código Javascript que hace funcionar el comportamiento de la tira de imágenes o filmstrip, es el archivo "displayImage.js", y por algún motivo, este archivo siempre es el último en añadirse al array de códigos Javascript de la galería. Ello me provocaba que los cambios que yo hacia en el comportamiento de código Javascript se machacaran con el comportamiento original. Una primera solución evidente es tocar el archivo Javascript original, pero eso es una solución que requería de acciones extra aparte de la simple instalación y activación del plugin. Es decir era una solución poco elegante y bastante chapucera, por ese motivo, tras pensarlo un poco más se me ocurrió una solución mejor; lo que necesitaba era desactivar el handler de JQuery al evento clic de la flecha, pero para eso tenía que ejecutar el "unbind" después de que Coppermine cargara todos los Javascript. Esto lo solucione haciendo uso de una llamada a mi función con un delay no bloqueante como puede verse a continuación.

La función "nextPic(false)" es una copia de la función original que se ejecutaba con el clic, solo que modificada para que pueda llamarse varias veces seguidas. Concretamente la función se auto-llama a si misma cinco veces (más la llamada original, seis) provocando el avance consecutivo de seis fotos.

En un futuro realizaré una segunda versión de este código que en la activación del plugin pregunte el número de fotos a avanzar, de forma que se pueda configurar fácilmente si se desea que avancen más o menos fotos.

Por último comentar que un buen inicio para trabajar los plugins es ver como están creados otros plugins, puedes consultar muchos aquí. Y para comenzar el desarrollo puedes empezar con la propia documentación que ofrece Coppermine aquí.

Plugin Coppermine MoveMultiplePicsOnFilmStrip
Plugin Coppermine MoveMultiplePicsOnFilmStrip
moveMultiplePicsOnFilmstrip.zip
Version: 0.1
6.1 KiB
79 Downloads
Details...

Breve script para eliminar paquetes

Hoy he tratado de instalar un programa en mi ubuntu del portátil, para poder instalarlo me requería una serie de dependencias, concretamente con librerías de KDE (bastantes librerías); el problema ha venido cuando después de instalar dichas dependencias, la instalación del programa (que por cierto era el KTechLab y [2]) seguía sin poder realizarse. No me supone mayor problema, porque mi interés era solo por probarlo (aún está en beta), pero ahora el sistema se ha quedado un un montón de paquetes instalados que no quiero para nada, y que me consumen recursos. Podría entretenerme en desinstalar uno a uno los que yo he instalado, pero posiblemente quedarían dependencias sueltas en el sistema; por no hablar de que quizás no me acuerde de todo lo que he instalado.

Para solventar este problemilla, si hemos utilizado el Synaptic para realizar la instalación de los paquetes, podemos acudir a su historial, donde cómodamente podemos ver todos los paquetes instalados y/o actualizados ordenados cronológicamente (los que han sido instalados/actualizados desde el Synaptic).

El único inconveniente es que este histórico de paquetes está en un formato poco (o nada) útil (ni práctico). Para ello me he creado un (mini)script en bash que me permite rápidamente ejecutar la desinstalación de los paquetes que no me interesan y dejar mi sistema limpio tal y como estaba antes de intentar probar el programilla de pruebas.

El uso del script es muy sencillo y simple, he grabado un pequeño vídeo donde se ve como lo utilizo yo.

Cambiar la codificación a UTF-8

Hoy me he encontrado con el problema siguiente, un cliente al que le tengo montada la tienda con OSCommerce me dice que los productos le salen con caracteres raros (típico rombito) en la vista de tienda, pero en la parte de administración todo sale OK.

Tras investigar un poco, por algún motivo, el navegador no coge bien el charset de la página, que OSCommerce monta para la tienda, y donde el charset está correctamente puesto a ISO-8859-1, y curiosamente, si le pido al navegador que me utilice la codificación de UTF-8 si me muestra correctamente los caracteres. ¿Pero qué está pasando aquí?

Hay que tener en cuenta que hay dos problemas, el primero es que OSCommerce me esta usando la codificación ISO, tanto en la interfaz de la administración, como en la propia tienda, podría intentar cambiar sólo uno de ellos (la tienda), pero es posible que me encuentre con otros problemas, de hecho lo he intentado pero entonces se mostraban bien los artículos antiguos, pero volvía a tener el problema con los artículos nuevos que creaba. Entonces he tenido que cambiar la codificación a utilizar para la interfaz de la administración de la tienda en un archivo, y después también la codificación para la interfaz "frontend" de la tienda en otro:

Como la solución pasa por utilizar la codificación UTF-8 (que por cierto es la que debería usarse, no sé porque motivo OSCommerce no la usa por defecto), me dispongo a configurar OSCommerce a UTF-8, pero no sólo hay que decírselo en los archivos mencionados, ¿qué pasa con todas las traducciones de los archivos de OSCommerce que están en ISO-8859-1? Y no son ni uno, ni dos archivos, son unos pocos, total que me he montado este pequeño script en Shell-Script para realizar la tarea:

 

Con dicho script transformo los archivos al UTF-8, pero además, habra que decirle en algún sitio al OSCommerce que el estilo de codificacion de caracteres a indicar en el HTML (el charset del HTML generado) es utf-8.
Los comandos "file" y "iconv" estan por defecto en la mayoría de sistemas Linux. Y para una explicación de los comandos puedes echar un vistazo por aquí.

El mismo comando, pero separando las ordenes en varias, para facilitar la comprensión:

Lo que yo he montado es un simple bucle "for" que para cada uno de los archivos "php" de la carpeta actual, si su codificación de caracteres es ISO-8859-1 la cambia a UTF-8.

Create PDF from an image on PHP

Recently a friend asked me to create a script to make a PDF document from a set of images. The initial idea was get a table of 3x3 images randomly from a bunch. He need to run it into his web server, for this reason I think PHP (language supported) is the best option. He has a lot of cards, for example (the full set is about 25-30 cards):

Image of exampleExample cardExample card

And he want to allow people to download random cards from Internet. This random characteristic is the key he wants to reach. The solution is very simple as you can see below.

Example of final image of random cards

Example of final image of random cards

First, as always, I look for information on the net and I get a couple pages of interest.

Here we can get basics functions to create simple images as rectangles or lines:
http://bulma.net/body.phtml?nIdNoticia=671
As you can see the simplest way is use "gd" library. This library is commonly installed on PHP web servers. I make a couple of test and everything works, so I'll develop the script with it. Another solution will be "ImageMagick" library, in my case I can use both, but if you are interested you must test wich one you can use.

On this other page I find some function to get my image on a PDF file.
http://blog.unijimpe.net/crear-pdf-con-imagenes-en-php
With R&OS library you get "ezImage" function that is your solution. I must dig in by source code to understand all parameters because I can't find good documentation, but after couple tests I get my script work!

This script can be configured with the number of images on columns and rows. You can select the distance between images in pixels too. It's easy, I left some comments along the code.

I hope it will be usefull, here you can get my final script.

The script must be located on a folder next to all cards and the PDF library. I put here a compressed file with all together.

I hope it will be usefull, here you can get my final script.

Cards maker in PHP
Cards maker in PHP
creadorCartas.tar.bz2
525.2 KiB
201 Downloads
Details...

Foto aleatoria en WordPress

Objetivo del proyecto:
Lograr que las imágenes de la cabecera de mi WordPress se tomen aleatoriamente de mi Coppermine.

Hoy he terminado de montar un pequeño script que comencé ayer. La idea era cambiar las imágenes que me muestra WordPress en la cabecera, que si bien son monas, pero me gustan más las que yo hago, concretamente quería que las imágenes se cargarán desde un Coppermine que tengo montado. Para ello he indagado un poco y he encontrado una referencia para hacer algo parecido:

Ese código PHP simplemente hace uso de una función ya implementada en el Coppermine que se llama "get_pic_data(...)", tras buscar información sobre la misma en la documentación del código de la aplicación, (concretamente la función se puede ver aquí) he podido comprender su funcionamiento, parámetros que recibe y como los utiliza (es lo maravilloso de Software Libre).

Yo tome ese código original y lo he adaptado para que me devuelva aleatoriamente una imagen de uno de mis álbumes de mi Coppermine, dicho álbum es expresamente para almacenar estas cabeceras; por último sólo necesito tocar en el WordPress para que muestre la imagen a partir del script en cuestión en lugar de las que el tiene.

El código final después de las modificaciones es el siguiente:

He dejado al final comentado las líneas necesarias para mostrar una o todas las imágenes del álbum seleccionado, quizás sea útil.

Como comentaba en el WordPress hay que tocar un último detalle para que en vez de tomar las fotos que tiene por defecto, llame a mi nuevo script. Esto es muy simple desde la propia interfaz del WordPress editando el archivo "header.php" para cambiar que en lugar de mostrar la imagen devuelta por la función "header_image()" muestre la imagen que devuelve mi Script.

Esto mismo se puede hacer (y más elegante/bonito) desde mi punto de vista, en vez de tocando el header.php, editando el archivo "wp-includes/theme.php" para hacer que la funcion "header_image()" devuelva la ruta que llama a mi Script, el único inconveniente de esta segunda opcion es que hay que tener acceso al archivo "wp-includes/theme.php" (normalmente por FTP).

Por ultimo añadir que yo también he tocado el CSS del WordPress para hacer que el título de la web y demás salga encima del banner, ya que no me gusta que se desaproveche tanto espacio en la pantalla, citando a Juande (un ex-jefe mio del que aprendí muchísimo) "la pantalla es un recurso más, y como tal debe ser gestionado eficientemente".

La solución creada cumple con el objetivo inicialmente planteado. Y de hecho está funcionando ahora mismo.

Posibles mejoras:

  1. Sería interesante modificar mi Script para que corrija el MIME type del archivo devuelto y sea acorde a la imagen que se envía, actualmente el MIME type está fijo a "image/png", y las imagenes almacenadas en el Coppermine no tienen siempre ese formato, aunque yo lo suelo utilizar.
  2. Resultaría interesante hacer una modificación al Coppermine, de manera que no sea necesario subir expresamente los banners ya editados desde el PC, sino que al subir cualquier foto, pregunte si quieres sacar un banner a partir de ella, y en caso afirmativo, te muestre una interfaz en la propia web que te permita recortar la imagen subida y el Coppermine se encargue de crear la imagen/banner y guardarlo en el álbum correspondiente de "banners" (además de la imagen original).

Arduino - Comunicacion serie con Java y salida a LCD y LED bicolor

A principios de año aproveche la oportunidad de asistir a un curso de Arduino que se realizó en el IES los Viveros de Sevilla.
El curso fue muy productivo e interesante, lástima que en aquellos días yo estaba también preparando la oposición y no pude sacar todo el provecho al curso como me habría gustado, en cualquier caso aprendí mucho y más tarde, cuando me he visto liberado de ciertas obligaciones he continuado aprendiendo y avanzando con Arduino.
Este proyecto los realicé en dicho curso, no es un proyecto final, sino una pruebas para comprobar funcionamiento y costes.

La idea que se pretendía era comunicar una aplicación realizada en Java (con su interfaz gráfica) con un Arduino, este ultimo mostraría información en una pantalla LCD y modificaría los valores de un LED bicolor.

Imagen de la interfaz gráfica desarrollada en JAVA para comunicarme con el Arduino

Imagen de la interfaz gráfica desarrollada en JAVA para comunicarme con el Arduino

Una de las características que eche en falta en el curso fue la falta de reconocimiento que aprecie (por algunos comentarios) hacia los estándares, y en mi camino he aprendido que los estándares (y especialmente los desarrollados por organizaciones tan importantes como la W3C, IEEE, ISO, ANSI, ...) son de una importancia enorme, ya que nos permiten avanzar mucho más rápido gracias a que "no hay que reinventar la rueda". Por este motivo, uno de los requisitos que yo quería que cumpliera este pequeño proyecto era lograr que la comunicación entre el PC y el Arduino se realizará en XML (lo cual se logró, y de manera satisfactoria).

Arduino - Comunicacion serie con Java y salida a LCD y LED bicolor - YouTube.

Respecto a la aplicación en JAVA hay poco que comentar, simplemente es una pequeña interfaz gráfica, a mi me gusta el IDE NetBeans y es el que utilicé, respecto a las librerías para comunicarme por el puerto serie con el Arduino, usé las mismas que utiliza el IDE Arduino 1.0, estas se encuentran en la carpeta "/lib" de dicho IDE.
Por otra parte el XML lo genero con la librería XStream que es una maravilla, muy cómoda, rápida y flexible (no es la primera vez que la uso en mis proyectos ;-)).

El hardware montado es sencillo, en el siguiente esquema de conexiones (creado con Fritzing) faltarían indicar que la comunicación serie se realiza por el propio USB del Arduino.

Esquema del montaje y conexiones del proyecto

Esquema del montaje y conexiones del proyecto

Respecto al código fuente del Arduino, estuve buscando previamente si alguien habia realizado alguna librería o conjunto de funciones que me permitieran trabajar el XML, lo que encontré fue una función que posteriormente edité y modifique para que funcionara como yo quería. Concretamente lo que cambié fue para que detectara correctamente los cierres de las etiquetas XML.

A continuación se puede descargar todo el proyecto bajo licencia Creative Commons.

Creative Commons LicenseEsta obra de Alejandro Lorente está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported.

Esquema de conexiones
Esquema de conexiones
led_PC_y_LCD_con_arduino.fzz
Version: alpha1
7.7 KiB
623 Downloads
Details...
Codigo fuente del proyecto para el Arduino
Codigo fuente del proyecto para el Arduino
mensajePCarduinoLCD.ino
Version: alpha1
6.4 KiB
611 Downloads
Details...
Codigo fuente Java del proyecto
Codigo fuente Java del proyecto
arduinoVentanasXML.tar.bz2
Version: alpha1
78.2 KiB
338 Downloads
Details...