03 diciembre 2010

Recorridos Octubre y Noviembre


De vez en cuando me gusta cargar todos los recorridos que voy haciendo en Google Earth y ver cómo quedan. Esto me hace pensar que si hago siempre el mismo recorrido quedaría un poco monótono, mientras que ir variando me hace ir cambiando de ritmo, de paisaje, y al final queda una cosa hasta chula.
Posted by Picasa

12 octubre 2010

Bucarest

Este puente del Pilar hemos disfrutado de un viaje a Bucarest.

Ciudad con grandes avenidas

La idea que me llevo de la ciudad es que se hizo en unos años buenos, económicamente hablando, y después se dejó de mantener. Eso hace que el aspecto de la misma sea deplorable. Eso sí, unos cuantos miles de millones de euros para rehabilitar la ciudad, y se conseguirían muchos puestos de trabajo en la reconstrucción, y después de reconvertir esos reconstructores en gente dedicada al turismo, se podría disponer de un nuevo centro turístico en toda regla. No en vano dicen que es el París del Este.

Algo que llama la atención al que llega son los perros sueltos. Es chocante. En otros sitios eso no pasa. Algún servicio municipal, los recoge y los aparta de la circulación, pues pueden ser un foco de enfermedades, y en caso extremo de falta de alimentos, pueden ser un peligro para la gente. Aquí supongo que no hay ese servicio, y campan por la ciudad a sus anchas. No es que haya muchos, pero haberlos haylos. Algún control ha de haber sobre ellos, pues hay algunos que llevan en la oreja una etiqueta plástica amarilla.

Otra cosa que llama la atención, al menos saliendo de BCN: no hay inmigrantes. Supongo que es una perogrullada, pero después de estar el año pasado en Berlín y en Londres, donde hay de todo menos alemanes e ingleses, llama la atención que no haya, por ejemplo, chinos. Ni restaurantes, ni bazares, ni nada relacionado. No hay. Ni pakistaníes. Ni negros subsaharianos. Ni sudamericanos. Los pueblos que hemos tenido que emigrar, y hay que recordar el éxodo de españoles a Europa en los años sesenta del pasado siglo, hemos ido a sitios donde había riqueza y trabajo. Aquí se nota que no hay dinero, o si lo hay, que seguro que alguno o alguna acumula, éste no se mueve con la suficiente velocidad.
Lo viejo y lo nuevo

Más cositas, al menos en la zona que hemos recorrido, no hemos visto supermercados al estilo español, ni tampoco tiendas de comestibles. Bares, restaurantes, etc. si. Pero si quieres entrar en un sitio a por un agua, ha de ser un bar. Diferencias. Aquí, aún no ha llegado el consumismo. Al menos a lo bestia.
Precios. Son similares a los españoles. La comida, quizá un poco más barata. La gasolina, tanto o más cara que en España. El transporte un poco más barato. Lo cierto es que nos hemos movido en taxi, y salvo la noche de llegada, que nos clavaron 200 RON, al cambio unos 50EUR, por un viaje desde el aeropuerto hasta el palacio del parlamento, el resto ha sido a muy buen precio. Desde el hotel al centro aprox. 5 RON (poco más de 1 EUR). Eso sí, por la noche se confunden y multiplican por mucho la tarifa. Mucho.

La sensación que tengo es que es una ciudad más que menos segura. No como BCN para los “guiris”, que es una ciudad en que hay zonas que impera la ley del más listo. Aquí puedes pasear por la zona del barrio de Lipscani, que es el centro de la ciudad y que no está iluminado en exceso, y no sientes que te vayan a atracar. La gente pasea tranquila. Eso sí, mejoraría la sensación de seguridad el hecho de aumentar (doblar o triplicar, como mínimo) la cantidad de farolas.

Sobre los cables. Esto ya es una deformación profesional, pero yo me fijo en los cables en las ciudades. Si los veo destartalados me da la sensación de desorden, de caos. Aquí están así. Las cabinas de teléfono de algunas compañías están como colladas a la pared y de ellas sale un cable, mondo y lirondo, y se conecta a una caja terminal, sin protección alguna. Ni un triste tubo que salve al cable de las inclemencias meteorológicas, ni de los gamberros borrachos. De los segundos, debe ser que no hay; de las primeras, seguro que sí. Algunas de las fotos dan la sensación de ese caos, de esa falta de mantenimiento que sufre casi toda la ciudad.

Y sobre el mantenimiento de los edificios se da el caso de que hay algunos que sí, que lo hay, y los ves lozanos, limpios, inmaculados, al lado de otros que en otro lugar estarían cerrados por peligrosos. En una esquina nos encontramos el yin y el yang. Uno era la biblioteca nacional, o quizá provincial, vamos pero una biblioteca importante. El edificio mugriento a un paso de estar apuntalado. El otro el edificio del Banco Nacional de Rumanía, impoluto. ¿Dónde está el dinero?

Sobre el idioma. Evidentemente no hemos recibido un curso acelerado de rumano, y eso que la lengua no es complicada, así que hemos tirado de nuestro más o menos limitado inglés. Y esto es una grata sorpresa: los camarer@s y la gente que atiende en tiendas lo entiende, y lo habla, y muy bien. Al menos es la experiencia que hemos tenido. Igualito que en España, donde estos ojitos han visto atender a extranjeros a gritos, como si gritando lo suficiente se fuera a traducir aquello que se le quiere decir al “guiri”.

Agujeros por doquier en las calles
Capítulo aparte merece el aeropuerto de Baneasa. Bucarest es la capital de Rumanía, país que está dentro de la UE. Entiendes que es la puerta de entrada de muchos de los turistas extranjeros es el aeropuerto, y que éste debe dar una buena imagen del país. Bien pues eso no es del todo así en el de Baneasa. Será porque éste es el segundo aeropuerto y el primero (no recuerdo el nombre) sea la caña de Rumanía, pero éste es cutre.

La palabra es la correcta.

El día de llegada, entre que eran las 12 de la noche, las ganas de coger un taxi, que nos llevasen al hotel y ponernos a dormir, no nos percatamos de la magnitud de la tragedia. Las cintas de las maletas eran minúsculas y no cabían muchas. En la tercera oleada de maletas llegó la nuestra sana y salva. Al salir había un gentío enorme, como para recibir una decena de aviones, aunque por la hora dudo que ese fuera el caso. Chocante.

A la vuelta te das cuenta de cómo es. Es pequeño, viejo (que no antiguo) y descuidado. Las salas de espera (tiene dos) son muy limitadas y mucho del personal ha de esperar de pie. No creo que tenga asientos para los pasajeros de un vuelo, por lo que tienes que buscar una postura cómoda de espera. En nuestro caso había tres vuelos con pocos minutos de diferencia. Todos los pasajeros estábamos allí. El aire funcionaba, a Dios gracias, pues de lo contrario aquello sería un infierno. Cerca de 700 pares de pulmones expulsando CO2 a razón de muchos litros por minuto. Impresionante. Alguna foto tengo, pues aunque estaba prohibido, el espectáculo merecía ser recordado. Al final un sujeto de seguridad ha cumplido su labor y me ha amonestado, merecidamente, por mi incumplimiento.

Todo reducidito, chiquitín. Y si a eso le añades que falta un poco de limpieza, pues la sensación es que es un aeropuerto cutre. Si estuviera limpio y lustroso dirías que es simplemente pequeño. No es así.
Lo bueno del aeropuerto, que está cerca de la ciudad, y por cerca entiendo que no es para ir andando, pero casi, y eso es una ventaja.


Restaurante Caru cu Bere
La comida. Con cinco sentadas en la mesa, y dos obligadas en el Pizza Hut, pues Sara también opina, no se puede hacer uno una idea de cómo es la comida rumana. Ahora, lo que probamos estaba muy bueno. El restaurante al que fuimos se llama Caru cu Bere, y está de lujo. Buena comida, buen servicio y buen precio.






Sara disfrutando de la comida

En el barrio de Lipscani


En resumen, un viaje que merece la pena, como todos pues en los buenos y en los malos siempre se aprende algo, siempre descubres una vista diferente y te das cuenta de que no todo es como te lo muestran en la tele o como te cuentan los que han viajado primero. Y siempre hay algo en lo que fijarnos para mejorar. Su inglés por ejemplo es algo que en España es poco usual en los servicios. Y una de las cosas por lo que es bueno es porque las películas no las doblan, sólo las subtitulan. Y la necesidad hace que espabiles.

07 septiembre 2010

Tomcat: errores en el despliegue

Se me ha dado el caso de desplegar una aplicación en Tomcat, hacer las pruebas correspondientes y replegarla. En el proceso hay veces que se quedan librerías .jar sin borrar. Normalmente las librerías están en el directorio WEB-INF/lib. Hasta ahora lo habitual era que se me quedasen en dicho directorio el mail-x.y.z.jar o el mysql-connector-java-x.y.z-bin.jar. No encontraba el motivo. El problema es que al re-desplegar la aplicación, por ejemplo desde Eclipse, no daba error, pero al ir al administrador de archivos, allí estaba todavía la versión antigua, y la nueva no se había desplegado.

Despúes de buscar durante tiempo, no debo ser lo suficientemente hábil, he conseguido entender que las librerías sólo deben estar en un sitio:
  • common/lib, o
  • webapps/[application]/WEB-INF/lib
Así que una vez localizada la duplicidad, hay que eliminarla. En mi caso particular, es necesario dejar las dos librerías en common/lib, ya que utilizo un pool de conexiones y en la configuración pide que esté en dicho directorio, y la librería mail-x.y.z.jar, por alguna razón similar y de la cual no me acuerdo (pero funciona!).

Utilizo Maven dentro de Eclipse desde hace un tiempo, por lo que para corregir la incidencia, me voy al fichero pom.xml y en las dependency que no quiero que se dupliquen utilizo la etiqueta scope:provided para que no se incluya en el fichero war de despliegue, y se utilice el que ya está en el servidor.



...

mysql
mysql-connector-java
5.1.13
provided



javax.mail
mail
1.4.1
provided

...


Y a funcionar!



03 julio 2010

Eclipse Helios y Ant

Si queremos desplegar un war en Tomcat desde Eclipse una de las opciones es hacerlo mediante Ant. Creamos un buildfile que compile, genere el .war y despliegue éste en el Tomcat. Para ello tenemos que hacer algún que otro cambio. Por partes:

1) Tenemos instalado ANT en el directorio que queramos, llamémosle ANT_HOME.
2) Nos vamos a Eclipse, Window, Preferences, Ant, Editor, Runtime y localizamos el directorio ANT_HOME mediante el botón "Ant Home...". Sellecionamos y le damos a OK.
3) En ANT_HOME/lib colocamos la librería catalina-ant.jar. Ésta la puedes encontrar en TOMCAT_HOME/server/lib, siendo TOMCAT_HOME el directorio donde tienes instalado Tomcat. Tenemos que decirle a Eclipse que la tenga en cuenta. Para ello vamos a Eclipse, Window, Preferences, Ant, Editor, Runtime y seleccionamos en el cuadro "Ant Home Entries". Pulsamos sobre el botón "Add External JARs..." y seleccionamos la librería ANT_HOME/lib/catalina-ant.jar
4) Creamos un archivo de texto que llamaremos tomcatTasks.properties y que situaremos en ANT_HOME. El archivo contendrá las siguientes líneas:

deploy=org.apache.catalina.ant.DeployTask
install=org.apache.catalina.ant.InstallTask
list=org.apache.catalina.ant.ListTask
reload=org.apache.catalina.ant.ReloadTask
remove=org.apache.catalina.ant.RemoveTask
resources=org.apache.catalina.ant.ResourcesTask
roles=org.apache.catalina.ant.RolesTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
undeploy=org.apache.catalina.ant.UndeployTask


Espero que sirva de ayuda.

Eclipse Helios y el Charset en Windows

Llegó la hora de probar el nuevo Eclipse Helios. La instalación en Windows es trivial, y sólo hay que descomprimir el ficherito de 204 MBytes y a "fluzear".

La primera prueba es importar un proyecto que gestiono desde el Eclipse Galileo, y todo parece correcto hasta que intento compilarlo. En ese momento aparece el error:

warning: unmappable character for encoding Cp1252

Vaya! El proyecto está en UTF-8, pero al importarlo, Eclipse lo pasa a su codificación por defecto que en Windows XP parece ser Cp1252. Un poco de Google nos da la solución, en concreto en:

http://colab.mpdl.mpg.de/mediawiki/CharsetEncoding#Eclipse

donde nos dan la solución para que compile sin errores de codificación de caracteres.

En Eclipse Helios vamos a
Window | Preferences | General | Workspace | Text file encoding
y ponemos como Text file encoding a UTF-8.

21 junio 2010

Clase CDATA en JDOM

Importante: para evitar errores, es recomendable utilizar en los campos que contengan texto en un documento XML la clase CDATA para incorporar texto a dichos campos. Por ejemplo:

...
Element el= new Element("noticia");

el.addContent(new Element("observaciones").addContent(new CDATA("Noticia ya publicada")));
...


quedará en el documento XML como:

<noticia>
<observaciones><![CDATA[# Noticia ya publicada]]></observaciones>
</noticia>




06 mayo 2010

Hacer un TRANSFORM con MySQL

Tenemos una tabla que contendrá las claves que queremos totalizar:

CREATE TABLE tCodApi (
CodApi VARCHAR(25) NOT NULL,
PRIMARY KEY(CodApi)
);

La llenamos con las claves que necesitamos.

INSERT INTO tCodApi
SELECT CodApi
FROM tramApis
GROUP BY CodApi;

Ahora generamos una consulta de la siguiente manera, con el select más externo, recorremos la tabla de claves, y el GROUP_CONCAT va generando una única cadena que contendrá todos los valores del grupo. El concat más externo nos facilitará la tarea de generar la cadena final.

select
concat (
"SELECT t.FechaPeticion ",
group_concat(
concat(
", SUM(IF(.tCodApi = '", api.CodApi, "', 1, 0)) as '", api.CodApi, "'"
)
order by api.CodApi
separator " "
),
" FROM TramitacionAPIS t ",
" GROUP BY FechaPeticion ",
" ORDER BY FechaPeticion DESC ",
" LIMIT 0,20; "

) as pepe
FROM tCodApi api
where api.CodApi<>"--"
order by api.CodApi;

27 abril 2010

Acceso desde Tomcat a ficheros en discos externos

Problema: Apache Tomcat en Windows, dentro de un servlet se ha de hacer una operación de lectura sobre un fichero alojado en un disco externo, llamémosle Z:. Para acceder a dicho disco hay que determinar la ruta UNC, es decir:

Z:\carpeta1\carpeta2\fichero.txt

hay que transformarlo en

\\servidor\carpetaCompartida\carpeta1\carpeta2\fichero.txt

Esto por una parte, pero otra tanto otra fundamental es que el usuario sobre el que corre el servicio Tomcat, tenga permisos de lectura/escritura sobre la carpeta compartida, es decir, tenga acceso a

\\servidor\carpetaCompartida\carpeta1\carpeta2\fichero.txt

La prueba del 9 es la siguiente: si desde un programa hecho en java, puedes acceder a dicho fichero sin problemas, pero desde dentro del servlet no, entonces estamos en el caso de problemas de permisos.

Solución: (En Windows XP) Vamos a Panel de Control, Herramientas administrativas, y hacemos que el servicio se ejecute con el usuario que sí tiene acceso a dicho recurso compartido.

Espero que sea de utilidad.