A través de ¿El fin de los programadores? he llegado a UML: Tres modos para tres objetivos de 'Más que codigo', que finalmente me ha dirigido a UmlMode de Martin Flower. El cual es un articulo en el que se mencionan 3 modos de usar UML.
Lo mas interesante de todo ello es el pillar la referencia al sitio de Martin Flower.
lunes, enero 19, 2004
miércoles, enero 14, 2004
Modern cpp design
No se si he comentado algo antes sobre este libro. Pero por si acaso.
Es de lo mejorcito que se ha publicado recientemente sobre este lenguaje. Es una vuelta de tuerca adicional sobre todo lo publicado anteriormente ya que versa sobre todo sobre templates.
Para poderlo leer hay que tener ya bastante soltura con el lenguaje.
Yo lo estoy leyendo poco a poco, un poco cada dia y la verdad es que sin probar los ejemplos y mirar el codigo con mucho detenimiento alguna cosa se te escapa.
Pero creo que lo importante es coger las ideas que plantea en él el autor, Andrei Alexandescu, para poder usarlas.
Me gustaria echarle un vistazo mas profundo a la librería resultado del libro, Loki.
El libro se divide en dos partes, una de tecnicas y otra de componentes. La segunda sin duda la mas interesante. Pero que se basa en conceptos y utilidadas presentadas en la primera.
La primera es durilla de leer.
Por ahora estoy por el capitulo 5 (según parte ya), por los 'Generalized Functors'.
El capitulo anterior me ha gustado mucho 'Small Object Allocation', ya que implementa un gestor de memoria para pequeños objetos. Estoy deseando tener un poco de tiempo para probarlo. Un capitulo 10.
Bueno para ir acabando un link: http://www.moderncppdesign.com/
Y otro: http://sourceforge.net/projects/loki-lib/
No se si he comentado algo antes sobre este libro. Pero por si acaso.
Es de lo mejorcito que se ha publicado recientemente sobre este lenguaje. Es una vuelta de tuerca adicional sobre todo lo publicado anteriormente ya que versa sobre todo sobre templates.
Para poderlo leer hay que tener ya bastante soltura con el lenguaje.
Yo lo estoy leyendo poco a poco, un poco cada dia y la verdad es que sin probar los ejemplos y mirar el codigo con mucho detenimiento alguna cosa se te escapa.
Pero creo que lo importante es coger las ideas que plantea en él el autor, Andrei Alexandescu, para poder usarlas.
Me gustaria echarle un vistazo mas profundo a la librería resultado del libro, Loki.
El libro se divide en dos partes, una de tecnicas y otra de componentes. La segunda sin duda la mas interesante. Pero que se basa en conceptos y utilidadas presentadas en la primera.
La primera es durilla de leer.
Por ahora estoy por el capitulo 5 (según parte ya), por los 'Generalized Functors'.
El capitulo anterior me ha gustado mucho 'Small Object Allocation', ya que implementa un gestor de memoria para pequeños objetos. Estoy deseando tener un poco de tiempo para probarlo. Un capitulo 10.
Bueno para ir acabando un link: http://www.moderncppdesign.com/
Y otro: http://sourceforge.net/projects/loki-lib/
martes, enero 13, 2004
Bueno esto no tiene mucho que ver con los temas habituales pero es interesante. Y sobre todo me interesa el tenerlo aqui reflejado:
Para grabar archivos de más de 700 megas con NERO.
1. Entra en el Nero.
2. Archivo/Preferencias
3. Pincha en la ficha "Carácteristicas Avanzadas"
4. Selecciona la opción "Permitir Grabación disc-at-once de tamaño extra..."
5. En los "min" pon 99 y acepta.
Nota: Según he comprobado, lo máximo son entre 720 y 730 megas, dependendiendo
del archivos o archivos a grabar, en cuarquier caso, siempre esta la opción del
Winrar (uno de los mejores compresores que hay) con el que comprimes,
apropximadamente a la mitad del tamaño real.
Para grabar archivos de más de 700 megas con NERO.
1. Entra en el Nero.
2. Archivo/Preferencias
3. Pincha en la ficha "Carácteristicas Avanzadas"
4. Selecciona la opción "Permitir Grabación disc-at-once de tamaño extra..."
5. En los "min" pon 99 y acepta.
Nota: Según he comprobado, lo máximo son entre 720 y 730 megas, dependendiendo
del archivos o archivos a grabar, en cuarquier caso, siempre esta la opción del
Winrar (uno de los mejores compresores que hay) con el que comprimes,
apropximadamente a la mitad del tamaño real.
viernes, diciembre 12, 2003
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...
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...
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.
Suscribirse a:
Entradas (Atom)