Javatadas
Blog de Alvaro Zabala

Sunday January 29, 2006
Año y medio despues....
...pues volvemos por aquí.
La verdad es que no hay que tener ninguna excusa para no escribir en un weblog, todo el mundo antes o después atraviesa periodos de sequía creativa.
La verdad es que durante todo este tiempo me he desligado bastante del mundo javahispano (ultimamente me limito a ver las noticias por encima) pero como me apetece volver a escribir, y tampoco tiene mucho sentido abrir un nuevo blog en blogspot, he decidido "desempolvar" este viejo.
Intentaré hablar de mis intereses: la programación en Java, el software geo-espacial, etc. y de vez en cuando también caerá alguna rajada.
Saludos de nuevo.
(2006-01-29 18:14:23.0)
Permalink

Friday August 06, 2004
De vuelta por estos lares...
Pues sí, tras dos posts en cinco meses, una estancia en Madrid de dos meses haciendo el curso de formación del M.A.P, un premio en la lotería (no exactamente, simplemente he conseguido una plaza en Sevilla, con lo que no me tengo que desplazar), estamos por aquí otra vez.
Ahora trabajo en la Confederación Hidrográfica del Guadalquivir, Plaza de España, Sevilla. Un sitio precioso:
Y la verdad es que trabajar en la Administración, para alguien que tenga ganas de trabajar puede ser muy ilusionante, porque hay mucho que hacer y pocas manos...
(2004-08-06 08:51:30.0)
Permalink

Friday May 07, 2004
AGIL: Asociación para la promoción del GIS Libre.
Nos ha costado mucho trabajo (a mí, por ejemplo, no escribir por aquí en mucho
tiempo), pero lo hemos conseguido.
Hemos creado una asociación para promover el empleo de soluciones GIS de carácter
Open Source: AGIL.
La idea es por un lado trabajar en la elaboración de documentación sobre los productos existentes,
tanto desde el punto de vista de usuarios como del de desarrolladores, y por otro lado iniciar
desarrollos (primando la plataforma J2EE por nuestra experiencia y por el hecho de que permite
tanto Linux como Windows sin problemas) que cubran funcionalidades no ofrecidas por los desarrollos Open Source.
En estos desarrollos pretendemos potenciar la integración de sistemas. Un ejemplo excelente ha sido el de la impresión. La herramienta GIS JUMP (Java Unified Mapping Platform) carecía de módulo de impresión.
Todavía se encuentra en un estado de poca madurez. Desarrollar un módulo que hiciese uso de JFreeReport fue relativamente sencillo, y JFreeReport ya ofrecía características como previsualización, paginación, formatos, etc.
La parte visible de la asociación es el portal:http://www.agiles.org.
Este portal contiene artículos, descargas, tutoriales, foros y enlaces que
pretenden alcanzar varios objetivos:
- Presentar las posibilidades reales, con sus ventajas e inconvenientes,
que ofrecen los productos y proyectos GIS con filosofía de software libre.
- Crear una comunidad tanto de usuarios como de desarrolladores de software
GIS libre, favoreciendo el intercambio de conocimiento a través de los
foros, manuales, descargas, ...
- Realizar desarrollos que proporcionen nuevas funcionalidades y productos
GIS libres de interés general.
- Proporcionar credibilidad a las soluciones y productos GIS libres
mediante ejemplos y descargas.
- A través de las noticias, mantener a la comunidad informada de las
novedades que se producen relativas al GIS libre, y al software libre en
general.
Han sido meses de duro trabajo, pero creo que ha merecido la pena.
Espero sugerencias!!
(2004-05-07 13:24:25.0)
Permalink

Tuesday March 30, 2004
Diseñadores Visuales....
Este es el código automático que me genera JBuilder9 cuando trato de añadir
un ActionListener a un JButton con el diseñador visual:
void jButton1_actionPerformed(ActionEvent e) {
//Aquí va el código que trata la pulsación del ratón
}
class AltaFeatureAlfanumericaDialog_jButton1_actionAdapter implements java.awt.event.ActionListener {
AltaFeatureAlfanumericaDialog adaptee;
AltaFeatureAlfanumericaDialog_jButton1_actionAdapter(AltaFeatureAlfanumericaDialog adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
Como diría Macario, que me lo pliquen...;)
(2004-03-30 13:01:33.0)
Permalink

Saturday March 27, 2004
Decisiones en el mundo Empresarial
Hace 2 posts comentaba que, de forma natural por otro lado, la gente que pasa de Orace Forms y PL/SQL al mundo Java tiende a seguir programando en PL/SQL haciendo sus Forms ahora en Swing. Es normal, porque esa es su forma de trabajar.
En otro post comenté las desventajas que para mí tienen centrar toda la lógica de un sistema en procedimientos almacenados. Además de casarte totalmente con la base de datos (lo cual no lo veo mal para los sistemas de una empresa, si esa es su decisión estratégica, pero en mi parecer sería un suicidio para hacer software comercial)creo que es una mala decisión de arquitectura de sistemas. Pero todo es matizable, claro. No es infrecunte ver configuraciones formadas por una misma base de datos empresarial (Oracle) que da servicio a varios servidores departamentales. Si ponemos toda la lógica en Oracle, los servidores departamentales (pongamos que son Servidores de Aplicaciones) ¿que harían? ¿estarían infrautilizados mientras Oracle está tostao?
Total, que empiezas hablando del tiempo y acabas hablando de política. Puse un ejemplo de un caso en el que la flexibilidad de no casarte con una bbdd (gracias al patrón DAO y a no meter lógica en la BBDD) permitió que un sistema que funciona con Oracle dando servicio a varios cientos de clientes pudiera ser portado a un entorno desktop con MySQL. Y ahí lancé un comentario para crear polémica: en ese entorno de "personal Database", y en nuestras pruebas MySQL y PostgreSQL estaban apalizando a Oracle.
Ahí van algunos comentarios que me parecen de interés:
¿que le sale más barato a tu empresa?, la licencia de una BD (o no!) + "pocas" horas de desarrollo, o la licencia de base dedatos (o no, como quieras) + "más" horas de programación. O que pasa si tu empresa "quiere" trabajar siempre con Oracle.
Claro. Al final depende un poco de la visión estratégica del director de Sistemas. Y, ¿por qué no? de la suerte. Por mucha visión de futuro que tengas, te pueden salir proyectos que, en función de las decisiones del pasado, estés bien posicionado o no para afrontarlos.
La JJAA se va a ahorrar un montón de millones en licencias, o sea que el principal condicionante parece ser el económico, no dudo que apoyen el Software Libre por otra parte y ese sea otro condicionante.
Pues no exactamente. El condicionante es dar servicio y cumplir con la legalidad y las directrices europeas. Pero si el sistema de apoyo hubiese estado hecho con tecnología Oracle, o se reescribe -no sería la primera vez que lo veo- o se compran licencias de Oracle LITE o Personal Oracle. No se cuanto cuesta, o si es gratis, pero un requisito es trabajar con datos espaciales (Oracle9i tiene la extensión Locator, LITE lo desconozco) cosa que hacen MySQL y PostGIS. En fin, no veo por qué tener que casarse de esta manera con una casa comercial.
En 'raw performance' MySQL apaliza a cualquiera, de eso no hay duda. Pero Oracle es mucho Oracle... si me dan a elegir entre cualquiera y Oracle, siempre elegiré a Oracle en casi todas las circunstancias si el presupuesto lo permite. Oracle es infinito...
No digo que no. En mi portatil recien instalado me pilla 100 Mb de RAM (la empresarial) y MySQL 8Mb. No he probado la versión Personal, pero MySQL es la misma para todos.
se supone que en la actualidad uno puede usar Java "dentro" de Oracle (y que hacerlo de esta forma es más rápido),
Si no me equivoco, es con la JVM 1.2.2. Tampoco le dediqué mas tiempo en su momento. Nuestra aplicación trabaja en entornos web, tcp/ip, aplicación de escritorio, etc. En ultima instancia, solo se harían procedimientos almacenados y relacionados con la lógica de datos -integridad, triggers, etc-
disculpa pero debo comentra que esa para nada es una prueba de desempeño. simplemente resulto que para tu tabla y tu consulta, la consulta fue mas rapida , pero eso no implica nada. creo en el opensource y pienso que tenemos excelentes bases de datos opensource (las que mencionas por ejemplo), pero respeto mucho la base de datos Oracle y es aun aplicable para muchisimas situaciones. saludos
Totalmente de acuerdo. Estaba medio en broma medio en serio. Es como si hubiera dicho "tantos millones de fumadores no pueden estar equivocados, fumar es bueno".
Realmente, la prueba la hemos hecho con todas las tablas con datos geométricos que teníamos. Hay que tener en cuenta lo que es un dato geométrico, y su problemática. Sólo quería crear un poco de polémica, porque en realidad pienso que el Open Source gana terreno a pasos agigantados. MySQL hace 2 años por no tener, no tenía ni transacciones ni integridad referencial. Ahora lo tiene, y estoy seguro de que con esta evolución pronto será un competidor muy serio para soluciones de empresa.
De hecho, la versión comercial de MySql no la he probado, pero ya digo que para determinados entornos (pymes, servidores con bajo número de transacciones, servidores de internet, etc.)yo sin duda es la solución que recomendaría. (a no ser que Oracle la hicieran GPL, claro ;) )
Es más, PostgreSQL me parece sensacional. Se trata de una base de datos con mas de 10 años de vida (yo diría que casi 20, pero no recuerdo exactamente), y tiene un monton de características, incluidos CURSORES, CURSORES BINARIOS, PGSQL (el equivalente de PL/SQL), etc.
¿Qué por qué la descartamos para el ejemplo de la JJAA? Postgre en Win2 solo funciona sobre una capa emuladora, CygWing, y requiere una extensión para trabajar con datos geométricos: PostGIS. El rendimiento general detectado es mayor en MySQL, así como su simplicidad.
Desgraciadamente, el análisis no parece profundo...¿verdad? pues no lo es. Así funcionan las cosas. Nuestro equipo estaba formado por 4 personas, y además de este proyecto teníamos otros 5 o 6, junto con el soporte y mantenimiento de todos los sistemas de producción. Uno puede tener muy buena voluntad de hacer las cosas bien, pero en las empresas, y más si no son de informática (la mía es Agrícola) parece que eso da igual. La de veces que he oído ante una queja...Es que esto no es una empresa de Informatica, ¿sabes?
(2004-03-27 10:24:33.0)
Permalink

Friday March 26, 2004
MySQL vs PostGreSQL vs Oracle
Y con este ya seguro que me gano abucheos, críticas, e incluso insultos de los más fanáticos de Oracle.
Sin entrar en la seguridad y estabilidad de Oracle, de sobra conocida por todos...(aunque tengo entendido que cuando Oracle se cae, se cae de verdad). ¿Alguien se atreve a decir algo sobre la performance de Orace?
En nuestro sistema hemos hecho una prueba muy simple. Una tabla con 3 millones de registros (catastro de rustica). Pido 500.000 (los quiero dibujar en un mapa). Lo hago con MySQL, PostGIS (extension de PostgreSQL con tipos espaciales) y Oracle. La consulta es la misma y todas las tablas tienen índices. MySQL y PostGIS apalizan a Oracle. Y Oracle está en modo "sin log de transacciones". Entre los dos primeros, gana MySQL también con cierta diferencia.Sí, ya sé, que haga tunning. Yo solo pongo ahí el dato (tampoco hice tunning de los otros dos).
Sí, ya sé. Oracle tiene tablas transaccionales. Las otras creo que ya también. Pero vamos, yo solo quería un mapa. Cuando alguna de las otras me pete en mita de una transacción supongo que me cagXXX en XXXX!&$·"!!
(2004-03-26 20:07:38.0)
Permalink
Programación Orientada a la Base de Datos (Matizando)
Por si de mi anterior post se deduce que menosprecio a los programadores de entornos Oracle/Forms, me gustaría hacer algunas matizaciones.
En primer lugar, decir que cada entorno tiene sus peculiaridades, y su forma de trabajar. Yo solo decía que los desarrolladores que cambiaban a entornos Java arrastraban muchísimos vícios.
Uno de estos vicios es desarrollar en Java sin utilizar una de las potencias del lenguaje: la orientación a objetos. Un error común es poner toda la lógica en la base de datos en forma de PL/SQL, y hacer las Widgets con Swing. Exactamente la forma de trabajar con Forms.
A continuación, y supongo que será solo una opinión, pienso que el núcleo de una aplicación empresarial debe ser desarrollado en un lenguaje de programación de propósito general.
En mi corta carrera profesional (solo llevo 4 años)he atravesado por migraciones de la base de datos en las dos. En una fue de Empress (os suena a alguno? es viejo, pero corre que se las pega) a Oracle. Ahora de Oracle a MySQL. Estas migraciones no se plantean porque sí. Surge la necesidad, y se hace. Se analizaron las ventajas de Java (en entornos multiplataforma, con estaciones de trabajo Sun pa qué decirlas). Es más, en algunos casos han dado servicio las dos bases de datos simultáneamente (un sistema viejo de captura de datos seguía en explotación y trabajaba con Empress, y un nuevo sistema que estaba en fase de implantación trabajaba con Oracle. Todos los días se hacían volcados de Empress a Oracle).
Tampoco es infrecuente ver ofertas pidiendo gente experta en Java y en Natural/Adabas (¿Los hay?) para trabajar en migraciones. Este no es mi ejemplo. Mi ejemplo es el de un sistema que siempre tiraba contra Oracle (muchos clientes / un servidor), bien de forma directa bien con Middleware, y por una necesidad puntual, el uso de MySQL en portatiles suponía un ahorro de licencias. MySQL no era el objetivo, ha sido una solución para un problema concreto. Pero no cargar la lógica en la BBDD permitió esta salida.
Esta opinión no quita que todo dependa de los cambios que se prevean, y de la flexibilidad que se desee obtener. Supongo que nadie se compra Oracle pensando que va a usar MySQL a los 6 meses. En el caso de un sistema GIS, nosotros pretendimos conseguir un producto genérico, soportado por un modelo de objetos que nos permitiese tener clientes Desktop y a la vez construir servidores de datos.
Uno de los objetivos era la total independencia del almacenamiento persistente de los datos. ¿Por qué? En el mundo GIS no es infrecuente que te llegue un fichero procedente de una toma de datos en campo, y que se te pida mostrarlo cartográficamente. Esto implica que el sistema lea datos lo mismo de un fichero que de una base de datos o de un servidor middleware.
Por ultimo, una opinión muy partidista (jeje, esto levantará ampollas): QUÉ FEO Y ANTIESTÉTICO ES EL CÓDIGO ESCRITO EN PL/SQL...;)
(2004-03-26 19:52:26.0)
Permalink
Programación Orientada a la Base de Datos vs JAVA y Sw Libre
No se trata de una evolución o revolución de la POO.
En mi empresa hay un gran capital humano que trabaja con Oracle, Forms, PL/SQL, etc.
Algunos están siendo reubicados,sin ningún tipo de formación :( ,a entornos Java. No es mi intención criticar uno u otro entorno. Muchos son excelentes profesionales, y ante el arte que tienen del SQL no puedo más que quitarme el sombrero -se las ingenian para hacer QUERYs asombrosas-.
El problema es que traen vicios heredados del entorno anterior, que no tiene nada que ver. Uno muy concreto es el de la programación orientada a BBDD. Todo lo quieren hacer con PL/SQL, y para ellos Java es un Front/End más dificil de usar que Forms.
A mí, particularmente, no me gusta meter logica en la base de datos. En nuestros sistemas la base de datos es un sitio donde guardamos y/o recuperamos objetos.
Podemos entrar en las ventajas o desventajas de esta política, pero yo prefiero dar algunos datos:
- La independencia de la plataforma de Java nos ha permitido desarrollar un mismo servidor de objetos del que tenemos dos instancias levantadas. Una en una maquina bajo Windows, porque tiene que servir imagenes raster de elevada compresión ECW. Este formato es propietario :( y solo se puede leer con una DLL que proporciona el propietario de la patente. Nuestro servidor la invoca vía JNI. El mismo servidor proporciona el resto de datos cartográficos en una máquina Solaris.
-
Nuestros sistemas de producción funcionan bajo Oracle. No obstante, son independientes de él: nuestras clases de negocio están separadas del acceso a datos mediante la aplícación del patrón DAO. Este año la JJAA va a lanzar una campaña de recogida de información de todos los propietarios agricultores -no puedo decir más- mediante visita puerta a puerta, con encuestadores provistos de portatiles con nuestro sistema GIS. ¿Sabeis lo que cuestan 100 o 200 licencias de Oracle? La solución estará basada en MySQL. Coste: analizar el soporte de datos espaciales de MySQL y hacer un DAO para nuestro sistema.
¿Os imaginais si nuestra aplicación hubiera estado hecha en PL/SQL?
La Junta se va a ahorrar cientos de millones en licencias gracias a Java , el Software Libre, y el patrón de diseño DAO que hace que un sistema no solo funcione en Oracle...
(2004-03-26 10:56:21.0)
Permalink

Thursday March 11, 2004
Sin Palabras
Pues eso. Sin Palabras. Pero no, es lo unico que nos dejan. Hablemos pues. Usemos nuestras armas.
Viví durante casi 3 años en Madrid, y dentro de 2 meses vuelvo allí. Sé lo que significa poner una bomba en la estación de Atocha. Han querido hacer una masacre, y lo han conseguido. Algún gilipollas fanático todavía se podía creer que estaban en guerra, y que tenían objetivos militares en los cuerpos de seguridad.
Los miembros de los cuerpos de seguridad son TRABAJADORES, como los que han masacrado vilmente hoy. Me entran ganas de llorar. Gente que se levanta a las 5h, porque vive a 50-100 km de Madrid y no se pueden pagar una vivienda digna allí. Gente que lo único que quiere es luchar, y con la fuerza de su trabajo y su honradez todos los días intentan hacer un mundo mejor. Todos, los felices, los descontentos, todos contribuimos con nuestro trabajo diario a que las cosas vayan para adelante, todos mejoramos el mundo todos los días al tragarnos las agobiantes colas del metro/cercanías. Todos menos los HIJOSDEPERRA estos. Muchos amigos míos pasan por Atocha a esas horas. Muchos amigos que lo único que quieren es progresar. Muchos que si el sistema está viciado, son las verdaderas víctimas de él. ¿ACASO UN TRABAJADOR TIENE LA CULPA DE VUESTRO PROBLEMA? IROS A CAGAR.
Eso, IROS A CAGAR!!!
(2004-03-11 09:27:56.0)
Permalink

Saturday February 21, 2004
Miguel de Icaza
Y por completar mi análisis sobre la Conferencia del SW Libre, no puedo dejar de comentar algunas cositas sobre Miguel de Icaza.
A mi me pareció un impresentable. Este no es que sea un gurú, es que se lo cree.
Yo no pude ir a su Workshop, en el que supongo que hablaría de lo maravilloso que es Mono, entre otras razones porque estaba dando mi ponencia. Pero voy el último día a la sesión plenaria en la que aparecía, lo que se vendió como "La Conferencia de los Gurús". Estaba con otra gente de Sun, Debian, etc. ¡Y el pollo habló 2 minutos! No se preparó la sesión. Dijo que básicamente tenía intención de hablar de lo que había contado en su Workshop y que, como no le gusta repetir las cosas, que la gente preguntase.
Menudo impresentable, y qué falta de respeto hacia gente que había hecho varios cientos -incluso miles- de kilometros para ver a los gurús.
Durante la sesión de preguntas surgió el tema Java, etc. y el pollo aprovechó para lanzar su mensaje: "Si quereis un Java libre, usad el mío". JUA, JUA, JUA!!! Yo es que flipo a veces. Su Java "libre" es Mono, que como todo el mundo sabe, es .NET para Linux. Pero claro, .NET == Microsoft, y Microsoft != Linux. Es decir, a Microsoft ahora mismo no le importará lo del Mono, e incluso lo fomentará. Razones: quire meter boca en Linux, y de paso, extender su comunidad de desarrolladores .NET.
Pero de lo que me juego lo que sea, es de que M$ no va a tardar en meter modificaciones que se vayan del estandar. En cuanto vean que la gente usa .NET en Linux, empezarán a meter añadidos para que vaya "follao" en Windows, incompatibilidades, y todo lo que se le ocurra.
Al final, me veré haciendo un servidor, y si quiero migrar de W2 a Linux, me veré tocando codigo. Y el pollo se reía publicamente de Stallman, diciendo que solo le interesaban licencias, mientras que él hacía Sw libre. Miguel de Icaza... ¿Tú con quien has empatado? Stallman será mas o menos radical, pero él ha hecho historia. No tú.
(2004-02-21 18:55:15.0)
Permalink
Open Source Conference...
A lo largo del miercoles, jueves y viernes de la semana pasada se celebró en Malaga la Conferencia Internacional del Software Libre.
Allí hubo de todo, la verdad. Mi impresión general, sin embargo, es de un poco de decepción.
Evidentemente el Software Libre tiene que acabar movilizando a las empresas. Gente como Stallman y tal son iconos románticos, pero lo mismo que el deporte amateur hace años que desapareció, al menos en un primer nivel, en el Free Software tarde o temprano deben aterrizar las empresas. Y estas han hecho cosas buenas. Eclipse, por ejemplo, y otros muchos.
Lo que me parece vergonzante, vergonzoso, y todos los xxxANTE y xxxZOSOS que se os pueda ocurrir es el mercadeo hipócrita que se vió por allí. Muchas empresas fueron allí a nada. No hacian software libre, ni lo usan, ni creen en él. A muchos los conocía, porque por aquí abajo -Andalucía- el sector informático no está tan extendido como, pongamos un caso, por Madrid. Son los de siempre. Ahora todo el mundo hace software libre. PUAGH!! ¿Consultoras tipo DMR, KMPG, Sadiel, etc. haciendo Sw Libre? JUA, JUA, JUA!!!
Frente a estos asquerosos (no me corto, y uso esos terminos, lo que no sé es como no les da verguenza. En muchos casos recibí tripticos iguales a los de siempre, con el único cambio de poner "Soluciones En Código Abierto") debo resaltar la excelente impresión que me causaron otros.
IGALIA, por ejemplo. Se trata de una empresa gallega, de Ingenieros en Informática que decidieron embarcarse en una aventura porque, sencillamente, no querían irse de su tierra. Ellos si que hacen software libre!! Ellos sí que trabajan con Linux, y liberan programas con licencia GPL!!
Desde aquí, chapó por IGALIA y otras empresas como esta, honradas, que no engañan a nadie, y que simplemente deciden vivir de su trabajo, sea Libre, Propietario o Servicios.
En cuanto a conferencias a destacar, no ví ningún conferenciante con la Performance de Ricardo Devis. Se puede compartir o no lo que decía, pero no se puede discutir que tiene un control del tiempo, la histrionía y el escenario sin parangón.
De JAVA se habló poco. La gente criticaba que Java no era libre. En ese sentido, la gente de JavaHispano fue con una argumentación excelente. La conferencia de Abraham Otero era: Realmente Java no es libre?
Desgraciadamente no pude asistir, pues solo fuí Jueves y Viernes. Pero comparto su línea argumental. Si Sun no hubiese licenciado Java, yo ahora no podría coger mi servidor de objetos hecho en Java, y pasarlo de una máquina Solaris/Sun Sparc a una máquina Windows, solo porque tengo una clase que tira vía JNI de una DLL W2, y que siga funcionando...
Un servidor habló de cómo se ha valido del Sw libre para la construcción de una solución GIS empresarial, y de cómo estamos planeando liberarla para uso de la comunidad. La idea principal es que el Sw libre genera Sw libre... (en nuestro caso no vivimos del Sw, y buscabamos cubrir una necesidad no cubierta por el Sw comercial)
(2004-02-21 18:34:38.0)
Permalink

Thursday February 12, 2004
He aprobado el FCGSIAGE!!!!!!!!
No, no es ninguna nueva certificación de Sun ni nada por el estilo.
He aprobado el ultimo examen de las pruebas de ingreso para ser Funcionario del Cuerpo de Gestión de Sistemas e Informatica de la Administración General del Estado.
Si, ya sé, funcionarios, no tienen muy buena imagen. Pero en defensa de ellos -pronto nosotros- decir que habrá de todo. Y en contra de la empresa privada, después de 4 años de desengaños y sinsabores, es lo que me provocan. Desde luego no tengo mentalidad de funcionario, y lo veo como un colchón de seguridad para abordar nuevos proyectos. Incluso estoy trabajando con un grupo de colegas en una asociación para promover desarrollos libres en el mundo GIS. Lo que sí sé es que allí como grupo B -ing. tecnico- y sin antiguedad voy a tener mejores condiciones laborales y económicos que en 4 años trabajando como ingeniero superior en empresas como SOLUZIONA -Grupo Unión Fenosa- o en una empresa pública.
Y tendré mas tiempo para cuidar un poco más este lugar!!!
;o)
(2004-02-13 00:31:06.0)
Permalink

Monday January 19, 2004
Hibernate y Dynamic-Class
Pese a que muchos lo consideren excentricidades de "friky", estoy empezando a alegrarme mucho de tener este weblog.
Grascias a él recibo muchos correos de gente interesada en los mismos campos que yo (GIS, Java, POO, etc), y en algunos casos les puedo ayudar, y en otros ellos me ayudan a mi.
Además, algunos amigos que habían pedido mi rastro han contactado conmigo por este medio.
Me gustaría dar las gracias a Rafael Muñoz. Tras leer mi post sobre como tener modelos dinámicos de clases con Hibernate (creando varios SessionFactory), muy amablemente me ha hecho llegar el siguiente link:
foro de hibernate
Es un mensaje del foro de desarrolladores de Hibernate en el que Gavin King indica que en la version 2.2 de Hibernate se creará un elemento , de forma que con un solo SessionFactory, podremos tener diferentes instancias de una misma clase mapeadas en diferentes tablas (entidades) del modelo.
Gracias Rafael!
Por cierto, ¿Por qué no funcionan las réplicas del BLOG?
(2004-01-19 11:47:56.0)
Permalink

Saturday January 17, 2004
JAVA.NIO ¿Lo usa alguien en un entorno de producción?
A mi me está deparando sorpresas con la ultima version de JDK.
Estoy haciendo un servidor orientado a conexion, de forma que cuando un cliente se conecta se le crea una conexion dedicada, y se le atiende por ésta de forma instantanea.
Sería algo así:
[SERVIDOR PRINCIPAL]
ServerSocket serverSocket;
//... codigo de inicializacion, etc etc
while(seguir){
Socket socket = serverSocket.accept();
ConexionCliente conexion = new ConexionCliente(socket);// implementa Runnable
Thread threadDedicado = new Thread(conexion);
threadDedicado.start();
}//while
En fin, un servidor de toda la vida. Pero mas refinado, (esto es solo un snippet) porque USA LOS PAQUETES DE NUESTRO FRAMEWORK MVC. Es decir, las Acciones no devuelven estados ni ActionFordward ni nada por el estilo. Por supuesto, la conexion no recibe el socket directamente. En su lugar tenemos clases que envuelven al socket y aportan semantica, tratamiento de errores, TIMEOUTS, etc
[CONEXION]
Sería algo parecido a:
public void run(){
while(seguir){
try{
String actionId = socket.readUtf();
Action action = Mappings.getActionPool().get(actionId);
Form actionForm = Mappings.getForm(actionId);
Request actionRequest = new Request(socket, actionForm);
ActionResult result = action.execute(actionRequest);
View view = Mappings.getView(actionId);
view.renderView(result);
}catch(IOException io){
seguir = false;
}
}//while
}
Mientras el socket.readUtf() no tenga datos (el cliente no ha pedido nada), la conexion esta
bloqueada. Cuando el cliente cierre su socket, se produce un IOException, se detiene el bucle y se liberan todos los recursos de la conexion.
El problema de todo esto es que creo un thread por socket, así que conforme crezcan los clientes los recursos de servidor se disparan. Solucion: Patrón de diseño THREADPOOL y lecturas no bloqueantes
O eso creia. La idea es tener un Pool de Threads, y que N threads den servicios a todas las conexiones físicas (sockets). Todos los threads van quitando las conexiones de una cola (si esta vacía se suspenden hasta que otro thread no añada otra conexion) mirá si hay peticion (String action = socket.readUtf()), y si no la hay, con sockets no bloqueantes readUtf() devuelve nada luego ponemos la conexion al final de la cola y miramos en otra. ESTA NO ES LA SOLUCION. Para entornos atomicos tipo SERVIDOR WEB seguramente si. En este tipo de entorno, SE GASTA CANTIDAD DE CPU NADA MAS QUE VIENDO SI HAY ALGO. Espera activa.
Total, que tras ver esto, quise configurar los sockets a bloqueantes, y me he encontrado un bug muy curioso. CON JAVA.NIO UN CHANNEL OBTENIDO DE UN SOCKET BLOQUEANTE SE CONVIERTE EN NO BLOQUEANTE TRANSCURRIDO UN TIEMPO DIOS SABE POR QUÉ. Esto hace que las conexiones recorran el ciclo de while(seguir) a lo bestia. Y esto es porque el readString() ya no bloquea.
SOLUCIONES:
- He quitado channels y todo lo que tenga que ver con NIO. He vuelto, para el modelo de 1 cliente 1 conexion - 1 thread al java.net y java.io de antes
- Voy a mirar lo de la multiplexacion. Es una caracteristica de NIO que ya existian en los programas en C.
¿Alguien se ha encontrado este problema?
(2004-01-17 08:55:24.0)
Permalink

Friday January 09, 2004
Hibernate Tricks II
Resumiendo el anterior post:
-
Podemos tener modelos dinamicos de objetos con Hibernate gracias a los <dynamic-component>.
Ejemplo:
class Entity{
Long id;
Map entityAttrs;
}
Su correspondiente mapeo en hibernate sería:
<class>
<dynamic-component>
< property name="field1" colum="FIELD1" >
Y para añadir propiedades dinamicamente, tan solo hay que añadir properties al mapeo. El contenido del campo de la tabla se volcara dentro del Map con los valores especificados.
-
Podemos mapear una misma clase en diferentes tablas utilizando varios SessionFactory. En nuestro ejemplo, una EntityCollection se encargaria de recuperar/guardar Entity, y cada instancia de EntityCollection tendria su propia SessionFactory.
(2004-01-10 00:54:09.0)
Permalink
|
Para saber mas...
alvaro_zabala@hotmail.com
Calendar
| « March 2010 | | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | | | | | | | Hoy |
Links
Navigation
Referers
Las visitas de hoy a la página: 59
|