martes, 6 de julio de 2010

Openoffice y MySQL

Hace un par de años, decidí crear un programa sobre base de datos que funcionase para realizar ofertas en mi empresa.
El objetivo era fácil una herramienta de creación y seguimiento de ofertas con otras posibilidades. Sí, hay muchos sistemas en el mercado, pero el hecho de hacer el mío propio, me iba a dar independencia, me iba a permitir personalizar mis ofertas y hacerlo libre, por si a alguien le puede ser útil.
No tenía experiencia con OpenOffice Base y mi experiencia con MySQL era bastante antigua. No obstante, después de hacer unas pruebas con Base, y descargar una base de datos de prueba de oooforum.org, me pareció que el sistema podía valerme. El problema era la base de datos de Base, no demasiado robusta y con algunas deficiencias importantes.
Pero me gustó la posibilidad de conectar con MySQL, así que me puse manos a la obra.
Voy a explicar aquí como realizar una conexión de OpenOffice y MySQL.
Es muy sencillo, pero seguro que hay más de un usuario al que le apetecería mirar un poco como funciona esto, pero no lo hace por pereza. Veamos.

Openoffice anterior a 3.1

1- Instalación de Mysql. En Windows, descargamos el paquete essentials de la página web de mysql (por ejemplo http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-essential-5.1.48-win32.msi/from/http://mirrors.ircam.fr/pub/mysql/ ) ahora mismo, pero recomiendo ir a la página web, seleccionar downloads, community server y la versión de windows. Seguimos el instalador y debemos dar una contraseña al administrador de mysql (a gusto del usuario, pero recordadla).
En linux, vamos por ejemplo a synaptic, y seleccionamos openoffice.org-base, y mysql-server, automáticamente nos instalará otros paquetes como el client. Además, no olvidéis el libmysql-java, ya que con esta versión de openoffice, tendremos que conectar con JDBC.

2- Creación de una base de datos en mysql:
Creamos un fichero de texto (notepad en windows, gedit en linux) con el siguiente contenido:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `comercial` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `comercial`;

GRANT USAGE ON *.* TO comercial, comercial@localhost, comercial1, comercial1@localhost;
DROP USER comercial;
DROP USER comercial1;
DROP USER comercial@localhost;
DROP USER comercial1@localhost;
CREATE USER comercial;
CREATE USER comercial1;
CREATE USER comercial@localhost;
CREATE USER comercial1@localhost;
GRANT USAGE ON *.* TO comercial, comercial@localhost, comercial1, comercial1@localhost;
GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE,LOCK TABLES,SHOW VIEW ON comercial.* TO comercial IDENTIFIED BY '1234',
comercial1 IDENTIFIED BY '1234',
comercial@localhost IDENTIFIED BY '1234',
comercial1@localhost IDENTIFIED BY '1234';
FLUSH PRIVILEGES;

Bien, ya tenemos el fichero creado, y le llamamos por ejemplo crearbd.sql
Ahora, desde línea de comando (en windows inicio -> ejecutar -> cmd, en Linux, un terminal), escribimos: mysql -h localhost -u root -p < /lugardondeseencuentre_crearbd.sql Nos pedirá la contraseña de root de mysql que introducimos al instalar. Esto creará una base de datos de nombre comercial con dos usuarios llamados comercial y comercial1 y contraseñas 1234 que pueden realizar varias funciones en la base de datos (no crear tablas, pero ya iremos a esto). Ahora que ya tenemos base de datos, podemos conectar: 3- Usuarios windows, descarga del java mysql connector. Vamos a http://dev.mysql.com/downloads/connector/j/ y descargamos el fichero .zip. Lo descomprimimos y lo dejamos en algún lugar dónde nadie lo vaya a borrar (C: por ejemplo). 4- Abrimos cualquier aplicación de openoffice (preferiblemente writer, para no tener problemas), Herramientas -> Opciones. Seleccionamos Java, si no aparece nada (Windows), tendremos que instalar el java runtime environment (se puede descargar de aquí por ejemplo: http://www.java.com/en/download/manual.jsp )
una vez descargado e instalado, reiniciamos openoffice (cuidado usuarios de windows, hay que cerrar el icono de inicio rápido que se pone en la bandeja de aplicaciones junto al reloj). Ahora sí, aparecerá Sun Microsystems Inc. versión 1.6XXX, la marcamos, y pinchamos en classpath, buscamos el driver mysql-java. Los usuarios de windows, es uno de los ficheros de la carpeta descargada en el paso 3. Usuarios de linux, suele estar en /usr/share/java y tener un nombre original como mysql-connector-java.jar.

5- Ya estamos listos para probar. Abrimos openoffice base, seleccionamos conectar con una base de datos existente, y ponemos mysql, siguiente:


A continuación, seleccionamos jdbc:


Y configuramos:
Nombre de la base de datos: comercial (la que hemos creado antes con el fichero)
Dirección URL del Servidor: De momento, y si estamos probando en nuestro ordenador, localhost
y no tocamos lo demás. Presionamos clase de prueba, para comprobar que el driver java se carga correctamente. Presionamos siguiente, y escribimos nombre de usuario (comercial, o comercial1 que son los dos usuarios que hemos creado), y ponemos que requiere contraseña. Presionamos en conexión de prueba para ver que funciona.
Ponemos la contraseña (1234) y listo.
Ya hemos conectado. Próximamente seguiré con la conexión nativa que es más sencilla.

viernes, 2 de julio de 2010

La batalla de Cartagena

Hola, comienzo la nueva etapa del blog con una de batallitas del abuelo.
En realidad, voy a contar algo que leí hace unos pocos meses, y que me pareció impactante. No porque me gusten las batallas ni nada por el estilo, sino por lo curioso que me parece que todo el mundo haya oído hablar de Nelson y de la batalla de Trafalgar en España (y eso que perdimos), y sin embargo casi nadie haya oído hablar de esta batalla de Cartagena y de Blas de Lezo.
Yo era uno de esos que nunca había oído esta parcela de la historia. De hecho, se enmarca dentro de una guerra muy curiosa llamada la guerra de la oreja de Jenkins.
Hay que ver si tiene nombre literario, y sin embargo, nada, esto no lo cuentan en las escuelas...
El tal Jenkins era un contrabandista inglés, interceptado por los españoles y al que al parecer se cortó una oreja como castigo. El bando belicista inglés, lo utilizó en la cámara de los comunes para conseguir la declaración de guerra.
Inglaterra disponía desde el final de la guerra de sucesión española, del "navío de permiso", al que se permitía comerciar con las colonias españolas (antes de eso, el comercio era un privilegio exclusivo de la metrópoli a través de la casa de contratación), pero por insuficiente, los ingleses seguían recurriendo al contrabando. Realmente el poderío comercial inglés, había llegado a un punto, dónde podían aspirar al dominio de todo el continente americano, y es lo que intentaron en esta guerra.

Su plan era acabar con el dominio español, a través de la conquista de los principales puertos de la América española, La Habana, Portobelo, Veracruz y Cartagena.
En la acción contra Cartagena, se encontrarían un escollo tan grande, que se verían obligados a terminar la guerra (bueno, se enmarcó dentro de la guerra de sucesión austriaca, terminando las hostilidades en América).
Los números son increíbles, unos 27000 ingleses, distribuidos en 186 buques de diverso tipo, frente a 3600 en el bando español y 6 buques de línea, más por supuesto las magníficas defensas de Cartagena.
Fue el mayor ataque anfibio de la historia antes del siglo XX (Normandía), y sin embargo como digo, nadie lo conoce. El caso es que sorprendentemente, los ingleses no consiguieron su objetivo, lo que causó la caída del primer ministro inglés Walpole.
¿Quien consiguió semejante azaña? Pues el almirante español, Blas de Lezo y Olabarrieta, de Pasajes para más señas, y por tanto vasco ;)


Genial militar y un tipo peculiar desde luego, su apodo era patapalo (oneleg para los ingleses). La batalla de Cartagena es su última acción bélica, ya que muere por enfermedad al acabar, pero el hombre estaba hecho un cromo, sin un ojo, una pierna, y con el brazo derecho inutilizado (no de esta batalla, sino de las que había combatido durante toda su vida). Vamos que hombres como los de antes... :D
En fin, semejante victoria sobre los ingleses, y no se menciona en España, ni la batalla ni a su artífice. Desde luego, tenemos que aprender un par de cosas de marketing de los ingleses...
Espero que os haya gustado la historia. Para más información:

http://es.wikipedia.org/wiki/Guerra_de_la_oreja_de_Jenkins
http://es.wikipedia.org/wiki/Blas_de_Lezo