Bilbao Blogs & Beers
Esta tarde nos vemos en BBB, es mi primera vez así que hoy toca conocer gente nueva.
Estoy que tiro la casa por la ventana 2 posts en 2 días
Esta tarde nos vemos en BBB, es mi primera vez así que hoy toca conocer gente nueva.
Estoy que tiro la casa por la ventana 2 posts en 2 días
Mira que llevo tiempo sin escribir… uff mejor no mirar la fecha del anterior post. ¿Y que me ha hecho volver? pues un meme que me ha pasado Aitor desde Linked, nunca había recibido ninguno, y como me encantan los cacharros que mejor excusa para hacer inventario
Ahí voy a enumerar todos los trastos:
Bueno creo que ya están todos aunque con la memoria que tengo algo seguro que me dejo y si, soy geek!!!! :D. Ahora me toca pasar el meme a alguien pero si que me lo han puesto difícil, pero bueno elegiré un par de compañeros de weblogs para que continúen. Os toca lasterra y mondelo.
Llevo un tiempo usando las versiones beta de Java SE 6 como java por defecto y la verdad que problemas no he encontrado ninguno grave, salvo algún applet que se le atraganta. La verdad es que si he visto algunas mejoras sobre todo me he dado cuenta de que las aplicaciones swing dan la impresión de ir más “sueltas”, y que el suavizado de las fuentas mejora bastante. Pero en ningún momento me preocupe de si el resto de aplicaciones también se veían mejoradas, o al menos no lo habia apreciado. Hasta ayer.Ya conocía la aplicación Sunflow, un motor de “renderizado” hecho en java, pero no lo había probado. Aprovechando que el día 16 sacaron una nueva versión, desde el 2003 no habían puesto nada descargable, decidí probar a ver que tal iba. Baje el código y como decía en el README compilé y ejecute con la versión 5 de java (si también la tengo instalada y la 1.4.2 y otra 1.3, supongo que como todos los desarrolladores). Como indican en su página, no está hecho en java por su velocidad sino por el lenguaje que les facilita el desarrollo, y comentan que en C sería de 1,5 a 2 veces más rápido. Así que no me sorprendí cuando tardo 11 minutos en “renderizar” una escena llena de teteras. En ese momento se me ocurrió probar a compilarlo con la versión 6 (b66), solo por curiosidad, y ahí vino mi sorpresa 3 minutos y medio!!!!!. Vaya, 3 veces más rápido, mejor que lo que apuntan con C :). Lo repetí un par de veces por si había algún error y lo mismo, pues si que ha mejorado. Ya se que esto no es una aplicación estandar, y no sirve de medida, pero en aplicaciones de cálculo matemático intensivo (los 2 nucleos de la CPU al 100% durante todo el proceso) si se puede predecir que habrá una mejora.Ya que estaba en ello decidí probar un poco más y lo ejecuté con diferentes configuraciones 5, 5 server, 6 y 6 server y estos fueron los resultados:
Se puede apreciar que la diferencia más notable está en la versión “HotSpot Client” de la 6, que llega a superar a las 2 server.Conclusión, parece que Sun se ha puesto las pilas en el rendimiento, pero ¿cuanto tardaremos en aprovecharlo si aún se desarrolla con la 1.4?
Después de mucho esperar, de que lasterra comprase todos los altavoces disponibles, y tuviese que volver a hacer el pedido, de que organizase a los transportistas para que hiciesen una huelga (menos mal que se ha adelantado la entrega, uff) y que hasta se inventase la fiesta nacional de ayer (si, si es idea de lasterra seguro ;D). Por fin… ha llegado un nuevo miembro de la familia, pero este me ha salido cabezón, como 20″ de cabeza :D.
Aquí está una foto del nuevo juguete…

Otra en más detalle del PC…

Y un detalle de su cabecita
no esta mal esto de 1680×1050 jeje…

y para muestra de lo que cabe aquí, javaHispano y los weblogs lado a lado… (pedazo barra de tareas)

Ah, se me olvidaba que esto tiene más que un monitor, el cacharrillo es un Pentium D 2.8Ghz con 1Gb de RAM y algún detallito más ![]()
Bueno por alguna razón (supongo que por “Me buscan por”) google a decidido que mi weblog aparezca de los primeros cuando se busca como quitar cosas como el Cool WWW Search. Yo la verdad es que no he tenido la desgracia de sufrir ese tipo de spyware, quizás linux tenga algo que ver ;), pero dado el número de visitas y de mails que he me han llegado preguntando como se quita pues aquí van unos consejos:
Espero que le sirva a alguien.
A aquellos que ya conoceis Cáñamo sin duda os sonará OREO, su motor de persistencia, basado en módelos dinámicos. Si quereis saber más sobre ellos no dudeis en preguntar a Al, sin duda os dará una charla sobre sus bondades :). Y gracias a él ahora tenemos otro motor de persistencia, Licurgo, también basado en modelos dinámicos pero esta vez con el objetivo de ser una implementación de Service Data Objects (SDO, JSR 235).
¿Y a qué viene todo esto? Bueno como me han pedido un pequeño manual de como se pasa de OREO a Licurgo que mejor sitio para ponerlo que en mi “concurrido” weblog :D.
El paso es muy sencillo, ya que no requiere cambios en el código de nuestras aplicaciones, solo en los ficheros de configuración.
Lo primero que tenemos que hacer es cambiar el servicio de persistencia. Este se encuentra en “WEB-INF/conf/services.xml”. Tendremos algo como esto:
<!-- Servicio de persistencia -->
<service name="persistence"
class="org.javahispano.canyamo.services.persistence.oreo.OreoDataSource">
</service>
Que tendremos que sustituir por:
<!-- Servicio de persistencia -->
<service name="persistence"
class="org.javahispano.canyamo.services.persistence.licurgo.LicurgoService“>
</service>
De esta forma indicamos a Cáñamo que use Licurgo en vez de OREO.
El fichero que indica la BD a utilizar, “datasources.xml” también a cambiado un poco. Ahora su nombre es “licurgo-datasources.xml” aunque se encuentra en el mismo lugar “WEB-INF/conf”. Y el formato pasa de:
<?xml version="1.0"?>
<!DOCTYPE DATASOURCES SYSTEM "classpath:/org/oreodata/metadata/datasources.dtd">
<DATASOURCES>
<DATASOURCE CLASS="org.javahispano.canyamo.services.persistence.oreo.CanyamoRecordSet" NAME="canyamo" >
<PROPERTY KEY="JDBC_DRIVER_CLASS" VALUE="@JDBC_DRIVER@" />
<PROPERTY KEY="JDBC_URL" VALUE="@JDBC_URL@" />
<PROPERTY KEY="USER" VALUE="@JDBC_USER@" />
<PROPERTY KEY="PASSWORD" VALUE="@JDBC_PASSWORD@" />
<PROPERTY KEY="MAX_CACHE_SIZE" VALUE="0" />
<PROPERTY KEY="DOUBLE_QUOTE_LITERAL" VALUE="N" />
<PROPERTY KEY="CONNECTION_POOL_MINIMUM" VALUE="3" />
<PROPERTY KEY="CONNECTION_POOL_MAXIMUM" VALUE="15" />
</DATASOURCE>
</DATASOURCES>
a:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<datasource name="canyamo" class="org.licurgo.jdbc.JDBCDataSource">
<pool class="org.licurgo.jdbc.pools.ProxoolPool">
<property name="min-size" value="3"/>
<property name="max-size" value="15"/>
</pool>
<connection>
<property name="driver" value="@JDBC_DRIVER@"/>
<property name="url" value="@JDBC_URL@"/>
<property name="username" value="@JDBC_USER@"/>
<property name="password" value="@JDBC_PASSWORD@"/>
</connection>
</datasource>
</datasources>
Este es el paso que más tiempo lleva, aunque no es complejo. Hay que ir modificando todos los ficheros de persistencia de nuestra aplicación. Así que directorio a directorio dentro de “WEB-INF/conf” abrimos los persistence.xml y hacemos los siguientes cambios:
No hay que olvidarse del fichero “canyamo-defs.xml” que contiene la definición del usuario y que ahora pasa a llamarse “licurgo-tables.xml”. Es el que usaré de ejemplo, este tiene 2 tablas definidas (users,role)
<?xml version="1.0"?>
<!DOCTYPE RECORDDEFS SYSTEM "classpath:/org/oreodata/metadata/recorddefs.dtd">
<RECORDDEFS>
<RECORD TYPE="users"
PRIMARY_KEY="login"
DATASOURCE="canyamo"
TABLE_NAME="users">
<FIELD NAME="name" CLASS="&STRING;" REQUIRED="Y" >
<PROPERTY KEY="MAX_LENGTH" VALUE="30" />
</FIELD>
<FIELD NAME="login" CLASS="&STRING;" REQUIRED="Y" >
<PROPERTY KEY="MAX_LENGTH" VALUE="12" />
</FIELD>
<FIELD NAME="password" CLASS="&STRING;" >
<PROPERTY KEY="MAX_LENGTH" VALUE="25" />
</FIELD>
<FIELD NAME="email" CLASS="&STRING;">
<PROPERTY KEY="MAX_LENGTH" VALUE="50" />
</FIELD>
<FIELD NAME="lang" CLASS="&STRING;">
<PROPERTY KEY="MAX_LENGTH" VALUE="5" />
</FIELD>
<FIELD NAME="roles" CLASS="&STRING;">
<PROPERTY KEY="MAX_LENGTH" VALUE="100" />
</FIELD>
<FIELD NAME="date" CLASS="&DATE;" />
<FIELD NAME="lastlogin" CLASS="&DATE;" />
<FIELD NAME="active" CLASS="&STRING;">
<PROPERTY KEY="MAX_LENGTH" VALUE="1" />
</FIELD>
<FIELD NAME="online" CLASS="&STRING;">
<PROPERTY KEY="MAX_LENGTH" VALUE="1" />
</FIELD>
<!--
The SQL_TYPE="TEXT" is probably specific to MySQL. In MySQL, the maximum
length of VARCHAR is 255 characters. For other DBMS's, you
may need to replace or simply delete that attribute
-->
<!--
<FIELD NAME="columns_content" CLASS="&STRING;" SQL_TYPE="TEXT" REQUIRED="N" >
<PROPERTY KEY="MAX_LENGTH" VALUE="8000" />
</FIELD>
<FIELD NAME="columns_width" CLASS="&STRING;">
<PROPERTY KEY="MAX_LENGTH" VALUE="20" />
</FIELD>
-->
</RECORD>
<RECORD TYPE="role"
PRIMARY_KEY="id"
DATASOURCE="canyamo"
TABLE_NAME="roles">
<FIELD NAME="id" CLASS="&STRING;" REQUIRED="Y" >
<PROPERTY KEY="MAX_LENGTH" VALUE="12" />
</FIELD>
<FIELD NAME="text" CLASS="&STRING;" REQUIRED="Y" >
<PROPERTY KEY="MAX_LENGTH" VALUE="25" />
</FIELD>
<FIELD NAME="systemrole" CLASS="&STRING;" REQUIRED="Y" >
<PROPERTY KEY="MAX_LENGTH" VALUE="1" />
</FIELD>
</RECORD>
</RECORDDEFS>
Lo convertimos en:
<?xml version="1.0" encoding="UTF-8"?>
<dataobjects>
<dataobject name="users"
datasource="canyamo"
primary-key="login"
>
</dataobject>
<dataobject name="role"
datasource="canyamo"
primary-key="id"
/>
</dataobjects>
¿Sencillo, no?. Esta simplificación se debe a que Licurgo se encarga de descubrir los campos de las tablas en el arranque de Cáñamo, se acabó el “me equivoqué en una letra, mira que no poner la s, ay! se me olvido cambiar el persistence,…” y demás escusas que ponemos por ser humanos ;).
Otra de las cosas que hay que modificar es si tenemos autonuméricos en este caso añadiremos:
<uid-generator class="org.licurgo.jdbc.uid.SequenceUIDGenerator"
type="java.lang.Integer"
/>
dentro del “dataobject” correspondiente.
Bueno ya está bien por hoy, seguro que me dejo cosas pero para comenzar debería valer y además así tengo algo de lo que volver a escribir ;).
Pues eso, que hoy es mi cumpleaños y ya he terminado con todos los veinti…, ahora es cuando uno tiene las crisis y esas cosas, no? Bueno intentaré olvidarme de ellas comiendo pasteles y pintxos con mis compis de curro ![]()
Esta vez me he superado solo unas horas y ya he subido las fotos de mondelo aquí, estarás contento, ¿eh? :D. Bueno a algunas las he tenido que ajustar el brillo y esas cosas para ver algo más, bueno o lo he intentado. Vaya aquí tampoco aparece mariscal ¿seguro que estaba? jeje
Lo mio es poner las fotos tarde
si lo hice en el anterior congreso (un par de post más abajo, joe que poco publico) por que no en este.
Esta vez hay menos, eso de andar de un lado para otro con las pistolitas no me dejo sacar muchas fotos, pero bueno menos es nada. Pues aquí las teneis para ver como algún presidente de alguna asociación, que no voy a nombrar, de esas de java, se quedaba dormido en una charla
Y yo que pensaba que no era una víctima del spam, solo me llegaban unos pocos (1 o 2) mensajes a la semana y solo a mi cuenta de hotmail. Pero algo ocurrió el jueves, empece a recibir spam muuuuuuucho spam en casi todas las cuentas. He debido hacer algo muy malo la semana pasada a alguien
Visto que continuaba el viernes pues decidí buscar alguna solución y encontré SpamPal, fácil de instalar y de integrar con los clientes de correo y se puede ampliar mediante plug-ins. Solo necesitas indicarle a tu programa de correo que use localhost como servidor, cambiar el usuario a usuario@servidor_original, crear una regla de correo para los mensajes cuyo asunto contenga **SPAM** y ya está funcionando. Por ahora, parece efectivo ha identificado todos los que me han llegado a ver que tal los próximos días….
PD: Yo no sabía de donde venía la palabra “SPAM” hasta que me lo contó Aitor, procede de un Sketch de los Monty Python ![]()