Me ha comentado aqui un compañero del curro que en telefonica estan haciendo pruebas de rendimiento con los ultimos procesadores de intel y linux y que va como un tiro (el esta involucrado en las pruebas).
Intel tras desligarse totalmente de microsoft parece que quiere meterse en el mercado de las workstation.
Y a telefonica esto le viene tb. que ni pintando, ya que puede montar sus sistemas en maquinas que con un coste 10 veces inferior estan dando mas rendimiento.
Por lo visto andan por aqui (en telefonica) peces gordos de intel. Incluso uno de los creadores del compilador de intel.
Parece que se avecinan tiempos borrascosos para los fabricantes de workstations si intel empieza a ganar mercado. Osea, tb. para Sun.
Y esta claro que a Intel le interesa meter cabeza en un pez tan gordito como telefonica.
Son rumores, rumores...
viernes, diciembre 12, 2003
martes, diciembre 02, 2003
jueves, noviembre 27, 2003
Intercambio de Referencias CORBA
En los peque?os detalles siempre esta lo mejor. Estaba Miguel con un pete. Se le estaba cayendo un servidor CORBA y me consulto que podr?a estar pasando.
As? a bote pronto, y con la memoria tan prodigiosa que tengo, no pude ayudarle, ya que yo también lo dudaba. En mi opini?n lo que deber?a hacer era hacer un _duplicate en el servidor. Y como posteriormente pude comprobar en este articulo, tenia raz?n.
El motivo es que si en el servidor estas almacenando la referencia (en un _var) para evitar que el ORB te libere dicha referencia tienes que hacer el _duplicate. Esto pasa tanto para referencias que se devuelven como retorno, como para las que se devuelven como argumentos out o inout. En el caso de inout, si la referencia pasada no es nula, hay que liberarla antes de asignarle el nuevo valor.
En el cliente al recibir el ptr, habr? que liberar la referencia cuando se deje de usar.
En un metodo que recibe un ptr como argumento no hay que hacer nada, a no ser que nos queramos quedar con ella. Entonces si habr? que hacer un _duplicate.
Bueno, con esto creo que se cubren todos los casos. Si se me ha pasado alguno ah? est? el link.
Cambiando de tema. Hoy en Barrapunto ha salido una noticia de un chaval de 14 a?os que ha publicado una guia sobre el kernel de Linux.
Ahi esta su reciente blog.
La verdad es que como empiecen a pulular por ah? cerebritos como este, a los que estamos viviendo todavia de este sector no nos quedan ni dos telediarios.
Ya para acabar...
El anterior articulo del intercambio de referencias, es de OCI. He visto que ahora dan soporte a un ORB Java.
Sin conocerlo un punto a su favor es al darle OCI soporte al igual que TAO, por lo que me imagino que la interoperabilidad entre ambos ORBs será buena.
El ORB se puede conseguir aqui.
lunes, noviembre 10, 2003
Virtual constructors
Hoy he leido un articulo en que te explican con un ejemplo como funcionan los 'virtual constructors'.
Creo que el creador de esta técnica fue Coplien, el cual la llamaba 'envelope and letter classes'. Ver: James O. Coplien, Advanced C++ Programming Styles and Idioms , Addison-Wesley, 1992.
O esta pagina web.
No mas
martes, septiembre 16, 2003
Hacia mucho tiempo que no entraba en Blogger ha escribir algo. Tanto, que el look de edicion de Blogger ha cambiado totalmente. Que no asi la funcionalidad.
Hoy simplemente queria dejar constancia de lo pobre que el el mapping a C++ de CORBA, ya que las estructuras definidas en el idl son mapeadas como structs. ¿Que mal hay en ello? Todo, que los atributos no se inicializan. Lo suyo es que (aunque se definan como estructuras) se tenga un constructor por defecto que inicialice los valores.
Ya que estamos con CORBA, el que no se use la std::string es otra cagada.
Bueno, estoy hablando del mapping 2.2, precisemos.
Y por hoy nada mas.
Hoy simplemente queria dejar constancia de lo pobre que el el mapping a C++ de CORBA, ya que las estructuras definidas en el idl son mapeadas como structs. ¿Que mal hay en ello? Todo, que los atributos no se inicializan. Lo suyo es que (aunque se definan como estructuras) se tenga un constructor por defecto que inicialice los valores.
Ya que estamos con CORBA, el que no se use la std::string es otra cagada.
Bueno, estoy hablando del mapping 2.2, precisemos.
Y por hoy nada mas.
martes, mayo 20, 2003
domingo, mayo 18, 2003
Rational Rose y XDE
Cuando estuve buscando para poder generar codigo a partir de un diagrma de estados me mencionarón a Rational XDE. Nunca habia oido hablar de él.
Parece ser una nueva version totalmente integrada con la plataforma .NET de microsoft. Creo que tb. va bien con J2EE.
Unos links sobre ella:
Mirando sobre XDE y sobre la generación de codigo para un diagrama de estados, tb. me encontré con el concepto MDA de la OMG. Se trata de la "OMG Model Driven Architecture".
Java para Sun
un post de mi colega Javi, experto en Java.
Pues mi recomentacion depende mucho de la familia de JVM que se pretenda utilizar, aqui te paso un pequeño apunte del tema:
Linux:
-------
1.1 - GNU Kafe sencilla y rapida, la de IBM que hasta la 1.1.8 era muy buena, o GNU guac que compila Java a C y luego el gcc hace el resto, y como tu sabes lo hace como nadie.
1.2 - En principio da un poco igual, tanto la de Sun como la de Blackdown eran bastante competentes, aqui tambien estaba IBM pero llego tarde.
1.3 - Aqui esta la movida, para mi la mejor SDK es la de blackdown, ahora si hablamos solo de JRE entonces hay que tirar del jikes de IBM, es un compilador just in time y va bastante bien, ademas lo unico que necesita es un runtime o developmetime con las librerias mas las nativas y va que te cagas, pues lo puedes combinar con las de Sun, las de blackdow, etc, pero es complejo de instalar, asi que Blackdown. Tb Borland tiene un compilador just in time que va muy bien, el jcomp.
1.4 - Para esta familia las de Blackdown sin dudas.
Windows:
-----------
Aqui ya no depende de la familia de la JVM en absoluto, pero tambien hay mucha mas oferta a parte de la de Sun, esta va bien, pero la de IBM de nuevo parte la pana, o la jrockit de BEA, que esta diseñada para alto rendimiento. Aunque con las pruebas que estoy mas familiarizado son sobre Unix, estas las he probado a titulo personal solo.
Como puedes ver no todo es Sun en el mundillo de java, eso si, la inmensa mayoria de la gente no tiene ni idea de que existen otras opciones muy validas, pero claro eso es que no han tenido que evaluar software sobre distintas plataformas como me ha tocado a mi en eresMas.
File sharing
¿Quien hoy en dia no ha usado una red P2P?
Por problemas en mi ordenador habitual de salida a internet (el de mi hermano) no he podido probar ddonkey o emule. Por lo que habitualmente utilizo Kazaa, estando contento con él.
Imesh no me ha gustado ni limewire. No he han dado buenos resultados cuando los he probado.
Cosas recientes que han surgido y no he progado son: peerbuddy y el proyecto JXTA.
De momento simplemente meter un par de links que me envio en su dia un colega.
Title: Education : Tutorials - Java programming for C/C++ developers
This tutorial introduces the Java programming language to C and C++ developers.
Because you already know how to program in C/C++, we'll approach many Java
programming concepts by comparison. You will learn a great deal about Java
programming by learning how the Java language is similar to, and different from, C and
C++. Overall, the purpose of this tutorial is to teach you the fundamentals of
the Java language and get you programming quickly.
Learn more:
http://www-105.ibm.com/developerworks/education.nsf/java-onlinecourse-bytitle/E7C083852DDDBF3A86256BC3003EF0AB?OpenDocument
Tutorials on Java, Linux, XML, Web Services, and more are published every week
on developerWorks. See a complete list at:
http://www.ibm.com/developerworks/training
Y para acabar una cita: "Lo quiero todo, ahora, para siempre y que nunca nada me de problemas".
Title: Education : Tutorials - Java programming for C/C++ developers
This tutorial introduces the Java programming language to C and C++ developers.
Because you already know how to program in C/C++, we'll approach many Java
programming concepts by comparison. You will learn a great deal about Java
programming by learning how the Java language is similar to, and different from, C and
C++. Overall, the purpose of this tutorial is to teach you the fundamentals of
the Java language and get you programming quickly.
Learn more:
http://www-105.ibm.com/developerworks/education.nsf/java-onlinecourse-bytitle/E7C083852DDDBF3A86256BC3003EF0AB?OpenDocument
Tutorials on Java, Linux, XML, Web Services, and more are published every week
on developerWorks. See a complete list at:
http://www.ibm.com/developerworks/training
Y para acabar una cita: "Lo quiero todo, ahora, para siempre y que nunca nada me de problemas".
jueves, mayo 08, 2003
Sobre diagramas de estados
Tengo una entrada pendiente de meter en este weblog. No lo hago ahora ya que lo tengo escrito, pero no a mano.
Me ha sorprendido que Rational Rose no sea capaz de generar codigo a partir de un diagrama de estados. Hice una consulta a la lista y me han comentado una serie de herramientas que si lo hacen:
La unica que he investigado es Kabira. Las otras no les he echado un vistazo, pero ahi quedan como referencias para un futuro.
Sobre este tema, como ya he comentado ya escribiré otro dia.
Sobre hacer pantallas
He tenido que hacer (bueno realmente estoy en ello) una serie de pantallas de usuario. Realmente prototipos de como deverán ser esas pantallas.
El primer paso fue hacerlas en papel, que siempre es lo mas rapido y socorrido, pero llegado el momento de pasarlas a formato electrónico ya se me planteó la duda de como hacerlo. Inmediatamente vinieron a la memoria 2 herramientas: Visual Basic, y Visio.
Para hacer unas pantallas sencillas me parecia un poco fuerte usar Visual Basic y Visio no estaba disponible en mi empresa. Solución: Buscar un poco por la web.
Tras una pequeña busqueda encontré:
El primero es GPL y aparte de tener version para Linux la hay para Windows y el segundo es una herramienta comercial que permite descargar una versión de evaluación. SmartDraw no me ha gustado, visualmente los 'stencils' eran muy casposos y para hacer GUIs era muy malo.
DIA directamente no te permitia hacer GUIS. Entre Visio, SmartDraw y DIA, parece quizás la menos potente a priori. Habría que echarle un vistazo en mas profundidad. Tecnologicamente no la valoro, solo valoro lo que parece tenga a priori.
Al final resulto que pude usar Visio, pero no logre hacer lo que quería, por lo que al final acabe usando Visual Basic. La ultima vez que me vi en la misma tesitura hice lo mismo. Eso si, las pantallas de la vez anterior eran mucho mas complicadas.
Moraleja: Visual Basic todavia sigue vivo.
Una ultima nota sobre SmartDraw. Cuando exportas los dibujos, les sobreescribe un logo.
viernes, abril 25, 2003
El proyecto
Varias veces ya he hablado del proyecto en el que estoy actualmente trabajando. Pues bien, ha llegado el momento de introducirlo un poco en profundidad.
Su nombre es Geiser y es un proyecto que esta realizando TID para Telefonica de España.
El proyecto tiene como objetivo realizar una gestion integrada de la Red de Transporte.
Tecnologicamente es un tema muy amplio. Por lo que no me voy a meter en ello. La biblia de todos estos temas son las normas de la ITU-T, pero buscando en la gueb por algunos de los terminos clase, algo se puede encotrar: SDH, PDH, DWDM.
El proyecto surge porque en telefonica trabajan con 3 fabricantes: Alcatel, Lucent y XXXX (vaya!!, ahora no me acuerdo del tercero). Lo cual tiene sus problemas. Logico!, no hay una red integrada, sino que se tiene gestores de red de diferentes fabricantes.
Por debajo de los gestores de red, hay gestores de elemento (no tiene vision de red) y son los encargados de gestionar los diferentes elementos que hay en la red.
El macro proyecto, esta dividido en varios subproyectos (modulos, o proyectos verticales):
Horizontalmente, hay bastantes subproyectos mas, y unos cuantos mas verticales asociados.
Mi suybproyecto es bastante complejo. No porque tecnicamente sea algo especialmente dificil de desarrollar, sino porque la forma de crear las cosas, y el como esta muy oscuro.
La creacion de entidades conlleva basicamente el analizar las ordenes de creacion, el planificar el como hacer la creacion, el realizar el registro en inventario y el crear lo necesario en planta a traves de los gestores de elemento.
Lo que si me agrada (pero por otro lado va a ser necesario, por lo oscuro que estan muchas cosas) es que vamos a tener un periodo de prueba muy amplio.
Ya para acabar, decir que el proyecto es realmente grande. En presupuesto es el mas grande que tiene contratado TID para el 2003 (osea hay muchos ojos mirandonos :( ), y en numero de personas involucradas actualmente ronda las 130.
Rational Rose y su generacion ANSI -C++
Cuando he usado anteriormente Rational Rose use la generacion C++. Mi opinion sobre la herramienta no era muy buena ya que la curva de aprendizaje me parecia muy alta. Ademas de eso, para mi tenia las siguientes desventajas:
Por todo ello, nunca me gusto y preferia la forma de funcionar de Together. Together no mete comentarios en los ficheros, los parsea y sincroniza los modelos con el codigo. Si haces cambios en el codigo, el modelo se refresca automaticamente.
El problema de Together es que es muy cara, y por ello no he tenido la oportunidad de usarla profesionalmente.
Por otro lado esta hecha en Java, por lo que es portable, pero a cambio consume muchos recursos.
Sin embargo ahora algo ha cambiado. En Rational parece que por fin se han dado cuenta de que su forma de trabajar no era muy buena y han incorporado el mapping a ANSI-C++. Las primeras pruebas realizadas han sido positivas, por lo siguiente:
Por todo ello, espero que usemos este nuevo mapping de RR 2000 en el proyecto.
lunes, abril 21, 2003
Sobre sniffers (y 2)
He visto que hay una version de tcpdump para windows, windump. Para obtenerla con una busqueda en google, vale, :).
Tras echar un vistazo a un README (por que no los mirare siempre....) he visto que la instalacion de ngrep no es tan sencilla. Previamente hay que instalar winpcap, que se define como 'the Free Packet Capture Architecture for Windows'. Que no es mas que el porting a windows de libpcap.
Tras probar la version que me baje antes, y tras compilar el codigo fuente de ngrep me sigue dando el mismo error: 'Error opening adapter: No error'. Habra que ver el porque. Pero no ahora que ya he perdido mucho tiempo con esto.
Ya para acabar. He visto un libro que parece muy interesante, Practical TCP/IP. Designing, Using, and Troubleshooting TCP/IP Networks on Linux and Windows by Niall Mansfield.
Sobre sniffers
Cada dia sale una cosa nueva. Nunca sabes que va a surgir. Esta vez ha venido por JJ. Como siempre, enredando en mil movidas. Va de ngrep.
Simplemente con hacer una busqueda en google ya te salen varios enlaces sobre dicho programita, 'network grep'.
Aqui se puede obtener, incluso para Windows. Y aqui hay bastante info.
Aparte de ngrep existen mas sniffers: tcpdump, dsniff (que puede sacar de otros protocolos aparte de tcp: imap, pop, telnet), snoop (o nett1 en HP-UX). Bueno seguro que hay muchisimos mas.
Por cierto, no esta disponible para cygwin. Habría que probar compilando el codigo fuente. Supongo que lo hará sin problemas.
En Windows 2000, el EXE del primer enlace me pide la DLL packet.dll que no esta disponible. Hay otro enlace para bajarte un proyecto Visual C++.
Ya para acabar..., ayer probé Knoppix 3.X. La caña. Metes el CD y tras indicarle en el prompt de boot que inicie con el idioma Español, te detecta todo, arranca y a funcionar con el KDE. ¡Impresionante!. Detectó la tarjeta de sonido y todo.
domingo, abril 20, 2003
KDE o GNOME
Actualmente tengo una distribucion Red Hat con los dos escritorios montados (ahora mismo no se la version exacta) y la verdad es que a pesar de que Gnome tiene un gran numero de 'seguidores' a mi a primera vista (tampoco se mucho de sus interioridades) me ha gustado mas la apariencia de KDE.
Otra cosa que me ha gustado mucho mas es la distribucion inicial de aplicaciones en el menu inicio.
Pero bueno, para que puedas decidir por ti mismo, aparte de echarles un vistazo, ahi va un link a un articulo comparandolas. Aunque parece que esta todavia en construccion. Habra que volverlo a echar un vistazo dentro de un tiempo...
miércoles, abril 16, 2003
Pasar en Corba informacion de usuario del cliente al servidor de manera transparente
En la aplicación que estamos haciendo hay que registrar en base de datos que usuario y con que role hace unas determinadas operaciones. La aplicacion es cliente/servidor.
Se tiene un Servicio CORBA de Seguridad que mantiene informacion sobre las sesiones que mantiene un usuario (claro, con un role determinado). El alta de la sesion se hace desde el cliente y el servicio es accesible tanto desde el cliente como desde el servidor. Pero para obtener información en el proceso servidor, se deberá tener algo que identifique la sesión. Aqui surge el problema que comento hoy.
Como al final lo que tengo que hacer, es almacenar un usuario y su role en una tabla de la BD, lo mas facil es pasarlo como un argumento mas. Pero esta solución no me gustaba nada, ya que se mezclan los datos de la operación con datos, llamemosles, administrativos. Además se tienen mucha operaciones de este tipo.
Se me ocurrió que en CORBA debería haber algun mecanismo para pasar este tipo de información. Y efectivamente asi es. Pero es una pena que no lo pueda usar, ya que el ORB que usamos es propietario y no lo soporta. Lo podrían implementar, pero no nos podemos permitir esperar ese tiempo. Por lo tanto usare la opción de pasar la información del usuario en todas las llamadas que lo necesiten. Eso si, en un struct :).
Ahora a lio, a la investigacion realizada al respecto....
Lo primero que hice fue buscar en el estándar sobre el objeto Context, ya que me sonaba de que por ahi podrían ir los tiros. Tras mirarlo (rapidamente) y no quedarme muy claro, hice una busqueda en el grupo adecuado, comp.object.corba y según lei, es un mecanismo que no merece la pena usar. Al final, y mas importante, por no ser un mecanismo trasparente y por ser bastante inseguro (se pasan cadenas)
Por lo tanto puse un mensaje, al cual me respondieron indicandome que la manera de hacerlo es usando los siguiente mecanismos:
En el cliente el PI añade los tokens al ServiceContext y en el servidor el PI comprueba los tokens y realiza las acciones pertientes.
Los Portable Interceptores, como su nombre ya indica lo que hacen es interceptar la llamada entre el cliente y el servidor, para poder realizar acciones de manera transparente. Hay servicios estandares que hacen uso de ellos, como el de seguridad.
El cliente hace la llamada y antes de enviar los datos por la red, se ejecuta el codigo en el interceptor cliente. Una vez llegan los datos al servidor se ejecuta el interceptor servidor y despues se pasa ya al codigo del servidor.
Tras la llamada al metodo del servidor se vuelven a ejecutar los interceptores asociados al retorno, primero el PI del servidor y despues el PI del cliente.
En TAO si estan implementados. Hay informacion sobre el tema en este paper.
martes, abril 15, 2003
ESTA VEZ VA DE RATIONAL ROSE.
En el proyecto que estoy actualmente, tenemos como en el 99% de los proyectos TI un Modelo de Datos (BD relacional). El nucleo de la aplicación y por lo tanto los objetos de negocio con C++ y además hay Interfaces CORBA. Entre las interfaces CORBA, hay interfaces para dar de alta Objetos de Negocio.
Para modelar tanto los Objetos de Negocio como los interfaces CORBA se esta usando Rational Rose. Para realizar el modelo de datos, se esta usando Oracle Designer (¿adivinas cual es la BD?). Aunque también se podría haber utilizado el Rose.
El problema que tenemos actualmente es que tenemos entidades equivalentes en CORBA y en C++, con lo cual hay duplicidad de trabajo realizado. Pero lo mas grave será cuando estemos en fases mas adelantadas y haya que hacer cambios. Dichos cambios habrá que realizarlos en 3 sitios. Osea, ¡UN INFIERNO!.
Lo ideal sería realizar dichos cambios en un sitio y que estos se propagasen.
Olvidemos lo ideal y centremosnos en lo que tenemos en RR. Ahi van las acciones realizadas:
+ La primera prueba realizada fue el generar una clase en dos componentes. RR no lo permite.
+ He preguntado a gente que pilota de RR y no me han podido ayudar. JJ me comentó que con Together tuvo alguna movida similar pero que le sonaba que Paradign Plus si era capaz de hacerlo. De todas formas por lo que tengo oido Paradign no es una herramienta 'user friendly'.
+ La siguiente y estupida prueba consistió en heredar 2 clases de una de analisis y asociarla a cada una de las hijas un componente diferente. Tampoco es la forma.
+ Como somos tan inteligentes no se nos ha ocurrido ninguna otra manera, por lo que me he dado de alta en un grupo de www.rational.com y he puesto un post. Haber si es posible realizarlo...
Ahora solo me queda esperar... y mientras tanto investigare otras herramientas. Me gustaría ver si alguna de las que hay por ahí Open Source maneja esta situación.
Ya para acabar... Hay una forma de solo tener que hacer los cambios en un sitio. Pero no me gusta nada. La solución consistiría en:
+ Hacer las modificaciones en el objeto CORBA
+ Tener el objeto C++ que herede de un Objeto Base (particular para el). Añadirá funcionalidad de la capa de negocio.
+ La implementación del Objeto Base será un typedef al objeto C++ generado por el compilador de idl.
Esta solución aunque solventa el problema de tener que hacer cambios en más de un sitio tiene como problemas:
+ Se arrastran los tipos del mapping de CORBA a C++, y procesos que no tendrían por que saber nada de CORBA, van a tener que. Además obliga a linkar/compilar con codigo CORBA.
+ Los objetos C++ no van a tener atributos, por lo que en ningun momento se podrá hacer referencia a ellos.
En el proyecto que estoy actualmente, tenemos como en el 99% de los proyectos TI un Modelo de Datos (BD relacional). El nucleo de la aplicación y por lo tanto los objetos de negocio con C++ y además hay Interfaces CORBA. Entre las interfaces CORBA, hay interfaces para dar de alta Objetos de Negocio.
Para modelar tanto los Objetos de Negocio como los interfaces CORBA se esta usando Rational Rose. Para realizar el modelo de datos, se esta usando Oracle Designer (¿adivinas cual es la BD?). Aunque también se podría haber utilizado el Rose.
El problema que tenemos actualmente es que tenemos entidades equivalentes en CORBA y en C++, con lo cual hay duplicidad de trabajo realizado. Pero lo mas grave será cuando estemos en fases mas adelantadas y haya que hacer cambios. Dichos cambios habrá que realizarlos en 3 sitios. Osea, ¡UN INFIERNO!.
Lo ideal sería realizar dichos cambios en un sitio y que estos se propagasen.
Olvidemos lo ideal y centremosnos en lo que tenemos en RR. Ahi van las acciones realizadas:
+ La primera prueba realizada fue el generar una clase en dos componentes. RR no lo permite.
+ He preguntado a gente que pilota de RR y no me han podido ayudar. JJ me comentó que con Together tuvo alguna movida similar pero que le sonaba que Paradign Plus si era capaz de hacerlo. De todas formas por lo que tengo oido Paradign no es una herramienta 'user friendly'.
+ La siguiente y estupida prueba consistió en heredar 2 clases de una de analisis y asociarla a cada una de las hijas un componente diferente. Tampoco es la forma.
+ Como somos tan inteligentes no se nos ha ocurrido ninguna otra manera, por lo que me he dado de alta en un grupo de www.rational.com y he puesto un post. Haber si es posible realizarlo...
Ahora solo me queda esperar... y mientras tanto investigare otras herramientas. Me gustaría ver si alguna de las que hay por ahí Open Source maneja esta situación.
Ya para acabar... Hay una forma de solo tener que hacer los cambios en un sitio. Pero no me gusta nada. La solución consistiría en:
+ Hacer las modificaciones en el objeto CORBA
+ Tener el objeto C++ que herede de un Objeto Base (particular para el). Añadirá funcionalidad de la capa de negocio.
+ La implementación del Objeto Base será un typedef al objeto C++ generado por el compilador de idl.
Esta solución aunque solventa el problema de tener que hacer cambios en más de un sitio tiene como problemas:
+ Se arrastran los tipos del mapping de CORBA a C++, y procesos que no tendrían por que saber nada de CORBA, van a tener que. Además obliga a linkar/compilar con codigo CORBA.
+ Los objetos C++ no van a tener atributos, por lo que en ningun momento se podrá hacer referencia a ellos.
jueves, abril 03, 2003
Estuve echando un vistazo a un paper del sitio que comente en la entrada anterior: Object/Relational Access Layers. A Roadmap, Missing Links and More Patterns. Dicho documento es una introduccion, que puede ser profundizada con el resto del documentación del site.
A priori según me comentó Miguel, y en esto coincico con él, no parece interesante el montarnos un mecanismo de persistencia complicado, ya que tenemos que hacer algo muy concreto y no nos va a sobrar el tiempo (como siempre), pero lo que si necesitamos es la definición de como pasar la información de los objetos de negocio a la Base de Datos.
A priori a mi se me ocurrieron 3 posibilidades:
Por herencia (la clase que lo hace, hereradia de un interfaz y de la clase de negocio)
a través de un 'Broker'
o a través de un 'Broker Global'
Curiosamente, en el articulo mencionado aparecen justo estas tres opciones, en el apartado 'Moving Attributes to and from the Tuple Layer'.
De todas formas tenía en mente el echar un vistazo al libro 'UML Y PATRONES. Introducción al análisis y diseño orientado a objetos. Craig Larman. Prentice Hall. ISBN 970-17-0261-1'. Ya que recordaba que hay un capitulo que trata la problematica de los objetos persistentes. La verdad es que el 'Framework' que plantea esta muy bien, pero demasiado complejo para lo que nosotros queremos hacer. Ha estado bien echarle un vistazo, pero al final nos quedaremos con algo mas sencillo. Ya comentaré cual será la decisión final.
Aprovecho para comentar que dicho libro esta muy bien. Describe un proceso de modelado usando UML y Patrones de Modelado. El proceso es sencillo. No conozco en profundidaz el Proceso de Modelado de Rational, pero este es muy sencillo. Es un libro muy recomendable de leer.
A priori según me comentó Miguel, y en esto coincico con él, no parece interesante el montarnos un mecanismo de persistencia complicado, ya que tenemos que hacer algo muy concreto y no nos va a sobrar el tiempo (como siempre), pero lo que si necesitamos es la definición de como pasar la información de los objetos de negocio a la Base de Datos.
A priori a mi se me ocurrieron 3 posibilidades:
Curiosamente, en el articulo mencionado aparecen justo estas tres opciones, en el apartado 'Moving Attributes to and from the Tuple Layer'.
De todas formas tenía en mente el echar un vistazo al libro 'UML Y PATRONES. Introducción al análisis y diseño orientado a objetos. Craig Larman. Prentice Hall. ISBN 970-17-0261-1'. Ya que recordaba que hay un capitulo que trata la problematica de los objetos persistentes. La verdad es que el 'Framework' que plantea esta muy bien, pero demasiado complejo para lo que nosotros queremos hacer. Ha estado bien echarle un vistazo, pero al final nos quedaremos con algo mas sencillo. Ya comentaré cual será la decisión final.
Aprovecho para comentar que dicho libro esta muy bien. Describe un proceso de modelado usando UML y Patrones de Modelado. El proceso es sencillo. No conozco en profundidaz el Proceso de Modelado de Rational, pero este es muy sencillo. Es un libro muy recomendable de leer.
lunes, marzo 31, 2003
Sobre el subsistema de persistencia
Ufff! de vuelta al curro. Tras dos meses sin currar, se hace realmente duro...
El viernes pasado fue la toma de contacto. Un dia relajado. Mucha lectura de correo.
Hoy he empezado con un tema que me han encasquetado. Ahora he pasado a definir la capa entre el interfaz de usuario y el proyecto que estamos realizando, ya que durante mi ausencia un nuevo componente del grupo ha retomado mis tareas y el que se encargaba de esta parte ya no esta.
Y aqui estaba yo dandome cabezados con la soporifera documentacion, cuando ha venido mi compi Miguel para comentarme algo de la arquitectura que todavia no esta
pensado. La capa entre los objetos de negocio y el API que se esta definiendo (funciones) para realizar operaciones elementales.
Tengo que revisar un poco de documentación antes de aportar mi granito de arena. Tengo un libro en casa que quiero echar un vistazo, pero lo mas interesante es este sitio que he visto. Voy a ver si veo algo de interés.
domingo, marzo 30, 2003
Hoy he visto un blog que me ha encantado, el de Rusell. El disenio es fantastico. Me gustaria saber como esta montado tecnicamente. El contenido podria ser interesante, ya que ha veces comenta cosas sobre Espania desde el punto de vista de un americano, pero eso si un americano que lleva ya 3 anios en este pais, casado y con un hijo. Tecnicamente no tocamos los mismos instrumentos, por lo que sus articulos tecnicos no tienen mucho interes para mi.
He llegado a el a traves de un uno sobre una propuesta para controlar en Espania la criptografia. Espero que algo asi no llegue jamas a aprovarse.
Ah! esto por si alguien lee estas notas que estoy escribiendo. El que escriba como un nisio, en parte es porque estoy con un teclado ingles y el OS tb. configurado para dicho idioma. Vale confieso que soy un poco patan escribiendo, pero el mayor motivo es el del teclado...
He llegado a el a traves de un uno sobre una propuesta para controlar en Espania la criptografia. Espero que algo asi no llegue jamas a aprovarse.
Ah! esto por si alguien lee estas notas que estoy escribiendo. El que escriba como un nisio, en parte es porque estoy con un teclado ingles y el OS tb. configurado para dicho idioma. Vale confieso que soy un poco patan escribiendo, pero el mayor motivo es el del teclado...
miércoles, marzo 26, 2003
Ultimamente he estado currando en mi pagina personal. Ha quedado super chula.
Me ha servido para refrescar conocimientos de HTML y disenio web, ya que hacia mucho que no trasteaba un poco en serio con dichos temas.
En la cuestion del disenio he usado el tag IFRAME, que desconocia ya que pertenece a HTML 4.0. Es muy util para meter contenidos dinamicos.
Antes de meterme en faena he estado mirando un poco de DHTML (osea CSS + HTML + DOM + Javascript), PHP, SSI y alguna cosilla mas, y me he dado cuenta como cambia todo en poco tiempo. Cosas que en 1998 (fecha de edicion de los libros consultados) era ciertas, ahora ya no lo son. Moraleja: los libros sobre WWW son totalmente perecederos.
Al final el disenio ha quedado supersencillo: HTML 4.0, CSS y un pelin de javascript. Eso si bastantes tablas.
Como herramientas he usado principalmente Ultraedit, mi editor favorito en Windows. Tambien he probado HomeSite (de Macromedia) que es un editor web mucho mas potente que ultraedit (lo cual es normal, ya que mientras que uno es especifico el otro es generico). Lo que pasa es que es bastante mas pesado que el anterior y como he estado trabajando en una maquina con pocos recursos me he decantado mas por Ultraedit. Osea que me a tocado picar muchos tags, pero al menos tenia la sintaxis coloreada.
Como herramientas graficas he usado Adobe Photoshop y Macromedia Fireworks. Esta ultima no la conocia, pero como estaba instalada en la maquina en la que he estado trabajando la he usado para editar imagenes PNG ya que es su formato nativo.
Me ha sorprendido Macromedia, ya que nunca habia probado productos suyos y la verdad es que en lo que es desarrollo web, parece que estan en la cabeza en cuanto a herramientas se refiere.Tengo ganas de echar un vistazo a Dreamweaver, la cual ya si que es una herramienta de disenio web potente.
Lo siguintes trabajos web seran el actualizar mi pagina profesional que es un poco cutre y el realizar otro disenio para un site que voy a realizar junto a unos amigos.
Para acabar. Un link sobre los tags de HTML 4.0.
Me ha servido para refrescar conocimientos de HTML y disenio web, ya que hacia mucho que no trasteaba un poco en serio con dichos temas.
En la cuestion del disenio he usado el tag IFRAME, que desconocia ya que pertenece a HTML 4.0. Es muy util para meter contenidos dinamicos.
Antes de meterme en faena he estado mirando un poco de DHTML (osea CSS + HTML + DOM + Javascript), PHP, SSI y alguna cosilla mas, y me he dado cuenta como cambia todo en poco tiempo. Cosas que en 1998 (fecha de edicion de los libros consultados) era ciertas, ahora ya no lo son. Moraleja: los libros sobre WWW son totalmente perecederos.
Al final el disenio ha quedado supersencillo: HTML 4.0, CSS y un pelin de javascript. Eso si bastantes tablas.
Como herramientas he usado principalmente Ultraedit, mi editor favorito en Windows. Tambien he probado HomeSite (de Macromedia) que es un editor web mucho mas potente que ultraedit (lo cual es normal, ya que mientras que uno es especifico el otro es generico). Lo que pasa es que es bastante mas pesado que el anterior y como he estado trabajando en una maquina con pocos recursos me he decantado mas por Ultraedit. Osea que me a tocado picar muchos tags, pero al menos tenia la sintaxis coloreada.
Como herramientas graficas he usado Adobe Photoshop y Macromedia Fireworks. Esta ultima no la conocia, pero como estaba instalada en la maquina en la que he estado trabajando la he usado para editar imagenes PNG ya que es su formato nativo.
Me ha sorprendido Macromedia, ya que nunca habia probado productos suyos y la verdad es que en lo que es desarrollo web, parece que estan en la cabeza en cuanto a herramientas se refiere.Tengo ganas de echar un vistazo a Dreamweaver, la cual ya si que es una herramienta de disenio web potente.
Lo siguintes trabajos web seran el actualizar mi pagina profesional que es un poco cutre y el realizar otro disenio para un site que voy a realizar junto a unos amigos.
Para acabar. Un link sobre los tags de HTML 4.0.
lunes, marzo 24, 2003
En 'Negocios de el Pais' de este finde, comentaban las empresas que más cuidaban a sus empleados, según la consultora Great Place To Work (GPTW).
La empresa ganadora es Caja Madrid.
Entre las 25 primeras aparecían las siguientes relacionas con las Tecnologías de la Información (en el listado, a continuación del listado aparece el sector.
Accenture - Consultoria
Computer Associates - Informática
Cad Tech Ibérica - Servicios de Ingeniería
Grupo Novasoft - Tecnolof'ias de la Información
Hewlett-Packard - Informatica
Information Builders Ibérica - Tecnología de la Información
Sadiel -Tecnologías de la Información
Strategy Consultors - Consultoria
Aparte de Caja Madrid habia alguna más entre las 25 primeras del sector financiero.
La empresa ganadora es Caja Madrid.
Entre las 25 primeras aparecían las siguientes relacionas con las Tecnologías de la Información (en el listado, a continuación del listado aparece el sector.
Aparte de Caja Madrid habia alguna más entre las 25 primeras del sector financiero.
miércoles, marzo 19, 2003
MI EXPERIENCIA INSTALANDO WOODY (DEBIAN)
Hoy me he puesto a comentar lo que ha sido mi experiencia instalando la distribucion de debian woody. El articulo al respecto esta en www.cesar.ortiz.name.
Puedo decir que a fecha de hoy no he visto en nada que me decida a instalarla antes que Red Hat cuando me vea en la tesitura de ello.
La gente que la ha usado presume de su estabilidad. Los creo, pero para el uso que yo de momento he dado a Linux, no he tenido ningun problema de estabilidad con Red Hat (si bien es cierto que siempre he procurado usar versiones ya con cierta fama de estables). Y por el contrario la instalacion de Red Hat es bastante mas sencilla. Basicamente te limitas a dar unas cuantas veces al retorno y la tienes funcionando con X y todo.
Concluyendo, de momento (yo) me quedo con Red Hat por su sencillez.
Si eres un novato con Linux, desde luego esta es tu elecci'on.
Si te gustan las cosas sencillas, empaquetadas y listas para usar, tu elecci'on debe ser RH.
Eso si, el conjunto de aplicaciones que te trae woody (mas de 8.700) es impresionante. Por lo que si eres un usuario avanzado y no tienes facilidad de acceder a internet para conseguir software desde luego que tu elecci'on deberia ser woody.
Hoy me he puesto a comentar lo que ha sido mi experiencia instalando la distribucion de debian woody. El articulo al respecto esta en www.cesar.ortiz.name.
Puedo decir que a fecha de hoy no he visto en nada que me decida a instalarla antes que Red Hat cuando me vea en la tesitura de ello.
La gente que la ha usado presume de su estabilidad. Los creo, pero para el uso que yo de momento he dado a Linux, no he tenido ningun problema de estabilidad con Red Hat (si bien es cierto que siempre he procurado usar versiones ya con cierta fama de estables). Y por el contrario la instalacion de Red Hat es bastante mas sencilla. Basicamente te limitas a dar unas cuantas veces al retorno y la tienes funcionando con X y todo.
Concluyendo, de momento (yo) me quedo con Red Hat por su sencillez.
Si eres un novato con Linux, desde luego esta es tu elecci'on.
Si te gustan las cosas sencillas, empaquetadas y listas para usar, tu elecci'on debe ser RH.
Eso si, el conjunto de aplicaciones que te trae woody (mas de 8.700) es impresionante. Por lo que si eres un usuario avanzado y no tienes facilidad de acceder a internet para conseguir software desde luego que tu elecci'on deberia ser woody.
martes, marzo 18, 2003
Ultimamente uno de los temas que mas me preocupan, y que creo que es dificil de de hacer bien, es el reporte de errores, y como en C++ el mecanismo estandar de hacerlo son las excepciones, pues esa preocupaci'on se traslada al correcto uso de las excepciones.
La ventaja de las excepciones sobre otros mecanismos es que es un mecanismo consistente y fiable. Consistente porque los errores se reportan de la misma manera y fiable porque todos los errores son detectados, no se deja esa responsabilidad al programador. El mecanismo en si mismo es capaz de atrapar los errores no tratados.
Visto esto, esta claro que la soluci'on m'as simple es lanzar excepciones con todos los errores. Pero en la practica, sobre todo cuando realizas tratamiento de ellas, no consigues realizar una de las cosas que intentas evitar, la limpieza del codigo mediante la separacion de la logica del tratamiento de los errores; sino que incluso lo empeoras, ya que los bloques try-catch hacen el codigo mas oscuro que los tradicionales if's.
Jack W. Reeves aborda este tema en The (B)Leading Edge: Revisiting Exception Handling.
Al final del articulo el autor da una serie de recomendaciones concluyendo que lo mejor es no especificar las excepciones.
Exactamente esa es mi opini'on. Aunque yo recomiendo el incluir la especificaci'on, pero comentada.
Ya para acabar, solo comentar que Jack W. Reeves, siene su site, The Bleading Edge.
La ventaja de las excepciones sobre otros mecanismos es que es un mecanismo consistente y fiable. Consistente porque los errores se reportan de la misma manera y fiable porque todos los errores son detectados, no se deja esa responsabilidad al programador. El mecanismo en si mismo es capaz de atrapar los errores no tratados.
Visto esto, esta claro que la soluci'on m'as simple es lanzar excepciones con todos los errores. Pero en la practica, sobre todo cuando realizas tratamiento de ellas, no consigues realizar una de las cosas que intentas evitar, la limpieza del codigo mediante la separacion de la logica del tratamiento de los errores; sino que incluso lo empeoras, ya que los bloques try-catch hacen el codigo mas oscuro que los tradicionales if's.
Jack W. Reeves aborda este tema en The (B)Leading Edge: Revisiting Exception Handling.
Al final del articulo el autor da una serie de recomendaciones concluyendo que lo mejor es no especificar las excepciones.
Exactamente esa es mi opini'on. Aunque yo recomiendo el incluir la especificaci'on, pero comentada.
Ya para acabar, solo comentar que Jack W. Reeves, siene su site, The Bleading Edge.
En Conversations: Once Is Not Enough Jim Hyslop and Herb Sutter mantienen una conversacion sobre Singletons y su abuso. En el mismo articulo se hace mencion al termino Mock Object.
Estos objetos son utiles para realizar unit testing. Otros nombres para este patr'on son: ShuntPattern, StubObject.
En el link anterior se pueden encontrar diferentes referencias sobre el tema, asi como testing frameworks y tools.
Y no menos importante... dicho articulo me ha llevado a site de Cunninghan & Cunninghan Inc. una pequenia consultora especializada en programaci'on orientada a objeto.
En su site puedes acceder a:
Portland Pattern Repository's Wiki.
Extreme Programming Roadmap .
Por supuesto tambi'en proporcionan informaci'on sobre WikiWeb.
Estos objetos son utiles para realizar unit testing. Otros nombres para este patr'on son: ShuntPattern, StubObject.
En el link anterior se pueden encontrar diferentes referencias sobre el tema, asi como testing frameworks y tools.
Y no menos importante... dicho articulo me ha llevado a site de Cunninghan & Cunninghan Inc. una pequenia consultora especializada en programaci'on orientada a objeto.
En su site puedes acceder a:
Por supuesto tambi'en proporcionan informaci'on sobre WikiWeb.
lunes, marzo 17, 2003
Hoy en la newsletter de Telepolis (estan geniales para estar informado) ha salido un articulo (de IBLNEWS) sobre las 'confidenciales o weblogs en versi'on espaniola' como dicen ellos.Craso error. No son los mismo.
Se mencionan las siguientes:
http://www.elconfidencialdigital.com que va de politica.
http://www.hispanidad.com. Uno de los pioneros.
http://www.elsemanaldigital.com
http://www.prnoticias.com
http://www.periodistadigital.com
http://www.estrelladigital.es
http://www.madridpress.com
http://www.libertaddigital.com
http://www.elconfidencial.com
http://www.diariodirecto.com
Realmente, mas que menos tienen el formato de diario digital.
Que por cierto iblnews tambi'en lo es.
Y para acabar, el link original.
Se mencionan las siguientes:
Realmente, mas que menos tienen el formato de diario digital.
Que por cierto iblnews tambi'en lo es.
Y para acabar, el link original.
sábado, marzo 15, 2003
En el 98 (si, ya ha llovido un poco de eso) James O. Coplien publico un 'paper', C++ Idioms , con unos cuantos patrones que son evoluciones de algunos de sus 'Idioms' de su libro 'Advanced C++ Programming Styles and Idioms' . Addison-Wesley, 1992..
En el 'paper' se describen los siguientes patterns:
En el 'paper' se describen los siguientes patterns:
- Handle/Body
- Counted Body
- Detached Counted Body
- Handle/Body Hierarchy
- Envelope/Letter
- Virtual Constructor
- Concrete Data Type
- Algebraic Hierarchy
- Homogeneous Addition
- Promote And Add
- Promotion Ladder
- Non-Hierarchical Addition
- Type Promotion
viernes, marzo 14, 2003
jueves, marzo 13, 2003
En http://www.cesar.ortiz.name he publicado un documento sobre el manejo de sockets en la libreria JIC.
miércoles, marzo 12, 2003
Vaya! esto de Blogger funciona realmente bien...
Hoy en www.cesar.ortiz.name he subido unas anotaciones sobre excepciones en C++. Concisamente muestran lo que hay que saber.
Hoy en www.cesar.ortiz.name he subido unas anotaciones sobre excepciones en C++. Concisamente muestran lo que hay que saber.
martes, marzo 11, 2003
Suscribirse a:
Comentarios (Atom)