Category Archives: Tecnología

Búsquedas booleanas con PHP y MySQL

Hace unos dias necesitaba unas funciones para poder implementar un búscador que aceptase terminos booleanos, es decir, que se pudiesen buscar cosas como: “linux AND gimp”, “gaim OR gaim-vv”, “linux + torvalds”….

En primer lugar descubrí que a partir de MySQL 4 se podian hacer consulta sobre campos FULLTEXT en lo que se denomina “IN BOOLEAN MODE”. Con esto podiamos buscar “linux +torvalds” y la propia MySQL se encarga de interpretar los operadores booleanos. Esto es fantástico pq te hace todo el trabajo sucio automáticamente, pero el inconveniente es que es necesario la versión 4 y los campos FULLTEXT no estan soportados en tablas INNODB.

Así que seguí buscando y encontre unas fantásticas funciones en esta web, las cuales interpretan los terminos booleanos para contruir una sentencia SQL. El único problema es que utilizaba campos FULLTEXT, así que tuve que adaptar las funciones para que buscase con el LIKE de toda la vida, cuando puera pegare por aqui las modificaciones 🙂

Código VBA para fusionar MS Access con MySQL

El código que viene a continuación puede servir de ejemplo para pasar datos de una base de datos MS Access a una MySQL utilizando el driver ODBC de MySQL. La idea seria crear una tercera BD Access con una tabla linkada a la BD Access original y otra tabla linkada con el servidor MySQL usando ODBC. Esto demuestra que es posible realizar una migración de MS Access a MySQL, la cual podria ir acompañada del fantástico front-end MySQL Control Center.

El código esta escrito en VBA y se debe ejecutar desde MS Access. Hay muchas zonas cortadas ya que son repetitivas, estan señaladas con “[…]”:

Continue reading Código VBA para fusionar MS Access con MySQL

Lenguajes C, C++ y Fortran para Mono

Se esta implementando un interesante traductor llamado whirl2il, actualmente esta muy verde pero su objetivo es conseguir un traductor de whirl a IL.

Whirl es el lenguaje intermedio que genera el compilador Open64, por lo visto es un compilador libre (GPL) de SGI que permite compilar C, C++ y Fortran 90/95. IL es el código intermedio de la plataforma .NET de MS o lo que es lo mismo, es el código intermedio de la plataforma libre Mono.

Seria fantastico poder aprovechar todo el código que hay ya escrito en C o C++ e integrarlo en la plataforma Mono 🙂

Fork de GNOME

Ali Akcaagac, ex-miembro de la GNOME Foundation y colaborador durante muchos años ha decidido iniciar un fork de GNOME llamado GoneME. Por lo visto esta en desacuerdo en como esta evolucionando el escritorio y quiere tomar una nueva dirección, cosas que le desagradan:

  • Características que se han implementado solo para parecerse a MacOSX sin buenos argumentos.
  • Spatial Nautilus, la última versión del navegador de disco nautilus tiene unas características no muy cómodas como que por cada directorio que abres aparece una nueva ventana.
  • GConf, herramienta utilizada para guardar la configuración de las aplicaciones de gnome. Es muy similar al registro de MS Windows, pero en este caso se utiliza XML. Dificulta la edición de la configuración a mano.
  • Ausencia de panel de control

Estoy de acuerdo en muchos de los puntos de los que se queja. El fork pretende ser progresivo, inicialmente solo se iran haciendo parches que se podran aplicar a la versión de CVS de GNOME y con el tiempo, si la comunidad crece lo suficiente y se tiene suficientes modificaciones hechas, se hara el fork definitivo. Me gustaria que la idea siguiese adelante para que nos pusieramos las pilas en el ámbito del escritorio por fin, actualmente de los escritorios existente con el que más cómodo me siento es GNOME pero se que le faltan muchas cosas y espero que se consigan con el tiempo 🙂

Color transparente con Gimp

Hoy he descubierto como poder usar el color transparente con Gimp 2.0.

Si abrimos por ejemplo un archivo jpg que contenga una manzana rodeada de un fondo blanco (por decir un color), quizas queramos cambiar ese fondo blanco por el color transparente de forma que cuando pongamos nuestra imagen en una web se vea el color de fondo de la web. Para hacer esto hay que ir al dialogo de las capas (boton derecho sobre la imagen -> dialogos -> capas). En principio solo existirá una capa, damos con el botón derecho sobre esta y seleccionamos “Añadir canal alfa”, a continuación podemos seleccionar la herramienta goma de borrar y arrastrar el raton por cualquier zona de la imagen, se mostrarán unos cuadrados que corresponden al color transparente.

A la hora de guardar el archivo siempre hay que tener presente que hay que seleccionar un formato que permita tener transparencias como PNG o GIFs, los JPEG por ejemplo no lo permiten. Lo mejor es guardar siempre el archivo original en el formato Gimp XCF, ya que este conservará todo… transparencias, capas, etc…

También me he dado cuenta que puedo crear brochas más grandes en el diálogo de brochas, cosa que va fantástico cuando tratas imagenes de alta resolución 🙂

Autopackage, futuro sistema de instalación

AutoPackage es un sistema de instalación de aplicaciones para GNU/Linux, pretende ser compatible con cualquier distribución y tener resolución de dependencias. El objetivo que persiguen es muy complejo debido a las variadas diferencias que existen entre distribuciones, si consiguen hacerlo realidad puede ser un gran paso para GNU/Linux ya que falicitaria la instalación de programas para los usuarios noveles.

Actualmente existen sistemas de instalación muy sencillos como el apt-get de Debian o emerge de Gentoo, pero estos dependen de las propias distribuciones y solo sirven para estas, es decir, estamos atados a la política de versiones de cada distribución y si somos desarrolladores no podemos hacer facilmente un “ejecutable” que se pueda instalar en cualquier distribución. Personalmente no tengo ninguna necesidad utilizando Gentoo, las versiones de los programas són muy actuales y es sencillo realizar instalaciones/desinstalaciones, pero si pienso en conjunto en todas las diferentes distribuciones me encantaria que este proyecto llegase a buen puerto 🙂

PhoneGaim

La empresa lindows ha realizado modificaciones al cliente de mensajería instantanea Gaim para añadir la posibilidad de realizar llamadas por Internet, entre diferentes Gaims a coste 0 o desde un Gaim a un telefono real. El proyecto se llama PhoneGaim, me he bajado el código fuente pero no he conseguido compilarlo con éxito… aunque acabo de encontrar un post en el foro de gentoo que indican como hacerlo.

Parece prometedora la idea, aunque no se que ocurrira con proyectos como Gaim VV que consiste en un fork amigable del Gaim para añadir videoconferencia (voz y video) al Gaim. Incluso no se como afectará al propio proyecto Gaim la aparición de PhoneGaim. Un futuro misterioso.

Mldonkey y cliente gráfico Sancho

Acabo de descubrir el mejor front-end para acceder a mldonkey. Ya he hablado de mldonkey por aqui anteriormente, pero para refrescar la memoria dire que es un programa P2P (Peer 2 peer) que permite compartir archivos a la vez que bajar lo que lo demas comparten, se puede encontrar muy material ilegal (peliculas, musica…) pero también hay disponible muchas otras cosas legales como documentación, CDs de Linux, etc…

Concretamente mldonkey tiene las siguientes caracteristicas:
Continue reading Mldonkey y cliente gráfico Sancho

Envio de backups por mail II

Como ya comente hace tiempo, monté un método para que el servidor donde esta alojado este blog me enviase un backup de la base de datos por email cada cierto tiempo. Aprovechando que hoy ha petado por culpa de la desaparición de las cuentas de correo de iespana, he decidido mejorar el sistema.

He instalado gnupg en el servidor (emerge gnupg) y he importado mi clave:

$ gpg --keyserver pgp.escomposlinux.org --search-keys 0x0ED2CF9D

Y he modificado el sendbackup.sh:

#/bin/bash
FECHA=`date +%d%m%Y`
mysqldump --password=[PASSWORD] -u user basedatos > /home/user/basedatos-$FECHA.sql
/usr/bin/gpg -r 0x0ED2CF9D --trust-model always -e /home/user/basedatos-$FECHA.sql
/home/user/bin/sendfile.pl /home/user/basedatos-$FECHA.sql.gpg
rm -f /home/user/basedatos-$FECHA.sql
rm -f /home/user/basedatos-$FECHA.sql.gpg

El contenido de sendfile.pl lo podeis encontrar en el antiguo “>post.

¿Qué conseguimos con los nuevos cambios? Ahora ya no copio a saco el directorio donde se encuentra la base de datos, ahora hago un volcado de esta en SQL a un archivo. Esto nos asegura que toda la información se enviará correctamente, el metodo de copiar todo el directorio era muy chapucero y podria dar problema en cambios de versión de MySQL. Otra ventaja es que con esto ya no es necesario ser root para ejecutar el cron, por tanto la ejecución del script de forma periodica se debe indicar en el cron del usuario (además es este usuario el que tiene la clave pública con la que encriptar y no root).

Además esta vez utilizo gnupg para encriptar dicho archivo sql, asi de esta forma si alguien intercepta el mail no podra acceder al contenido de mi base de datos. Como ya dije en el antiguo post, tampoco es algo que me preocupe en exceso ya que poca cosa privada hay… pero siempre es preferible hacer las cosas bien hecas 🙂 Además, este ejemplo nos puede servir para hacer backups de cosas mas sensibles (por ejemplo archivos de configuración).

Cuando recibo el mail, guardo el archivo adjunto (e.g. marble-17072004.sql.gpg) y lo descomprimo con:

gpg -o marble.sql -d marble-17072004.sql.gpg

Lo que me crea el archivo marble.sql desencriptado. Para entender el funcionamiento de este sistema es necesario que se entienda como funciona GnuPG o PGP.