compatibilidad entre xHarbour y FWH

Esta semana ha habido un post en las news de FWH que me ha llamado poderosamente la atención. Es este post se preguntaba por la incompatibilidad entre xHarbour y versiones de FWH previas a la 2.5 y Walter Negro, componente del equipo de xHarbour al que nunca le agradeceremos las explicaciones que nos dá, aclaraba:

Es verdad, xHarbour es compatible con FWH 2.4 hasta la Beta 1.1 que acaba desalir, pero ya no con el último CVS.

Sin embargo haciendo unas pequeñas modificaciones y recompilando el xHarbour por completo, es posible mantener la compatibilidad con FWH 2.4 y anteriores.

El que xHarbour no sea compatible, no es un problema de xHarbour.
A decir verdad, la causa de esta incompatibilidad surge de una necesidad y
de una propuesta hecha por el equipo de desarrollo de xHarbour.
Esta propuesta se comunicó al equipo de desarrollo de Harbour junto con la
propuesta de como mantener la compatibilidad, al menos durante un tiempo
necesario para que Antonio pudiera brindar las actualizaciones necesarias al
código, actualizaciones que prometió tener prontamente.
El equipo de desarrollo de Harbour no quiso mantener la compatibilidad con
FWH e hizo el cambio directamente y es así que FWH 2.4 solo es compatible
hasta la versión 0.43 y de la misma forma, FWH 2.5 sólo es compatible con
0.44.

Lo que se hizo en xHarbour ahora, es ser compatible con Harbour y con FWH
2.5, aunque sigue existiendo la posibilidad de recompilarlo para mantener la
compatibilidad con FWH 2.4 Dejan de ser compatibles por la misma razón que lo fué Harbour. Esto es, se pasó de SHORT a LONG el registro que indica la cantidad de referencias que existe sobre un array u objeto.

De momento, la manera de solucionar esta incompatibilidad es esta – GRACIAS WALTER -:

Para poder seguir usando el xHarbour actual con FWH 2.4, hay que restaurar
los archivo hbvmpub.h y hbdefs.h anteriores al cambio.

Una forma sencilla de conseguirlo, es en SourceForge.

http://cvs.sourceforge.net/viewcvs.py/*checkout*/xharbour/xharbour/include/hbvmpub.h?rev=1.31

http://cvs.sourceforge.net/viewcvs.py/*checkout*/xharbour/xharbour/include/hbdefs.h?rev=1.55

En este otro link, se puede apreciar en colores las líneas eliminadas

http://cvs.sourceforge.net/viewcvs.py/xharbour/xharbour/include/hbvmpub.h?r1=1.31&r2=1.32

http://cvs.sourceforge.net/viewcvs.py/xharbour/xharbour/include/hbdefs.h?r1=1.55&r2=1.56

Pero yo creo que el tema no es que cada uno se monte de nuevo xHarbour para mantener la compatibilidad. Como decía TheFull en el mismo hilo, no es cosa de que un compilador sea compatible con una librería, sino al revés. No se en que medida estos cambios afectan a FWH, pero creo que sería un detallazo que FiveTechSoft publicase los parches adecuados para que FWH mantuviera la compatibilidad con xHarbour.

nuevo motor de informes

Una de las novedades destacadas de las nuevas versiones de Cuaderno de Bitácora y el Puchero va a ser nuestro nuevo motor de informes. Es un motor de informes a lo Calero, ya que fue en su GST+ donde lo ví por primera vez. Nos ha costado bastante ponerlo en marcha, pero el resultado es muy bueno.

El formulario de selección de informes se compone de tres pestañas. En la primera se elige el tipo de listado que se quiere, contando que los datos vienen con la ordenación seleccionada en el mantenimiento del fichero de que se trate.

En la segunda pestaña se eligen las columnas del listado, el orden en que van a salir, la anchura de la columna y si se quiere totalizar, para los casos en que sean datos numéricos.

Y, por último, en la tercera pestaña se eligen los encabezados del informe y los tipos de letra de todos los elementos: títulos, encabezados de columnas y datos.

Además, el motor de informes recuerda el último informe realizado y lo presenta la siguiente vez que se accede a él.

estoy aquí…

El verano está siendo largo en muchos sentidos. Desde que nos fuimos a vivir al campo una de mis mayores preocupaciones es la conexión a internet. Parece que a Telefónica no le sale rentable instalar lineas de teléfono fuera de los cascos urbanos de las localidades y las compañías eléctricas no acaban de despegar con el acceso por red eléctrica. El resultado es que ni tengo teléfono ni conexión a internet, y no se cuando lo voy a tener. Un profesor mio decía siempre que hambre que espera comer no es hambre, pero yo no se cuando comeré.

La versión 4 de el Puchero está casi lista. Vamos por la 10ª beta y falta afinar unas cosas de la clasificación francesa, pero creo que este mes tendré ya una beta pública. Jaime también va bien con la versión 6 de Cuaderno de Bitácora y creo que para mediados de octubre tengamos en la calle las nuevas versiones. Esto de no tener internet está bien porque no te despistas y cuando te sientas a programar programas y no haces el indio, pero llevo un lio de narices con el correo, que leo cuando puedo y contesto cuando me dejan.

Dos cosas a destacar: en Noviembre reunión de Olivares2000, y si me dejan haré una ponencia sobre los primeros capítulos del libro ‘The pragmatic programmer’.

La otra: T-Gtk. Rafa Carmona, The Full, está construyendo una GUI sobre GTK+ para Harbour, usando además GCC. Quiero subirme a este tren, ponerme las pilas y colaborar. Creo que usar GTK+ es una excelente idea, y creo que la única de poder desarrollar para Windows y Linux al mismo tiempo, algo sencillamente genial. Espero que en la reunión de GO2000 Rafa nos cuente cosas de su criatura.

progressbar con FWH

Hasta ahora había usado los meter de CanalFive en mis aplicaciones, que eran a 16 bits. Sin embargo, con la modificación en la clase TBitmap de la versión 2.3 de FW los meter dejaron de funcionar, asi que comencé a usar la clase TMeter de FWH. Miré la clase TProgressBar de FWH pero, no se porqué, tenía en la cabeza que no funcionaba bien. Cuando cayó en mis manos xBackupLite una de las cosas que me llamó la atención era que usaba ProgressBar para indicar la realización de la copia de seguridad. Como el código fuente venía incluido fue fácil ver el comportamiento del control en vivo, tas lo cual me dispuse a usar este control en vez de los clásicos meter. El resultado es este:

xbackuplite

De vez en cuando das con un programa que te llama la atención y este es el caso de xBackupLite. No por lo que hace – genera copias de respaldo de archivos en un fichero ZIP y permite restaurarlos -, sino por cómo lo hace y por la herramienta con que está hecho. El programa es superelegante y está hecho con xHarbour y FWH.

Sus autores son Carlos Vargas y Kleyber Derick, habituales de los foros de Fivetech Software. Además trae el código fuente para poder estudiar en profundidad el manejo de archivos ZIP desde nuestras aplicaciones. Si Antonio Linares reinstaurara el cool tool of the month creo que xBackupLite sería un buen candidato a premio. Por gentileza de los autores, el progama completo se puede descargar desde este blog.

el oficio de programador

He comenzado a leer ‘the pragmatic programmer’ y la verdad es que me está gustando mucho. El libro se hace facil de leer pues está estructurado en puntos cortos, de 2 ó 3 páginas que puedes leer sin agobiarte. Cuando tengo delante un texto largo en inglés la cosa se me pone bastante cuesta arriba, pero la manera en que está estructurado el libro es ideal para gente como yo que tiene un nivel de inglés regular.

La primera reflexión que me ha gustado está en el prefacio del libro, donde se reivindica el oficio de programador. Los autores dicen que si bien el desarrollo de software debe ser abordado con técnicas de ingeniería, existe un oficio de programador que no debe ser minusvalorado. En el libro se hace una comparación entre la construcción de catedrales en la edad media, donde las técnicas de ingeniería eran muy limitadas, con la ingeniería civil de hoy en día. Está claro que esta disciplina ha avanzado enormemente, pero cuando se visita una catedral de la edad media no dejamos de sorprendernos de lo buenos artesanos que la construyeron y de como su excelente labor ha perdurado todo este tiempo, por ejemplo la de los maestros canteros o vidrieros. Lo mismo pasa ahora cuando te haces una casa: el arquitecto puede hacer un proyecto fantástico, pero cómo no des con un buen albañil, con un buen carpintero y con gente que conozca bien su oficio lo tienes claro.

En desarrollo de software pasa lo mismo. Puedes tener un diseño fantástico de una aplicación, pero necesitas un programador que te la haga. Y como en todos los oficios hay programadores buenos y malos, y muchas veces es el programador el que marca la diferencia pues, igual que el resto de oficios, un buen programador es capaz de encontrar soluciones a lo que se hizo mal en el diseño. Un programador pragmático es aquel que se preocupa de su oficio, de estar al día, de mejorar continuamente en todas sus facetas profesionales – que son muchas – y que piensa lo que está haciendo cuando programa y no trabaja con el piloto automático puesto.

Es curioso que haya mucha gente que piense que los programadores son la escala más baja dentro de la profesión informática, y que muchos programadores intentan ser otra cosa pues piensan que de esta manera avanzan en la profesión. Sin software un ordenador es un trasto totalmente inservible y sin embargo el trabajo de programador esté tan poco reconocido, incluso dentro de la profesión.

Una vez me llamaron de una tienda de ordenadores para comprarme un programa para un señor que les habia encargado un ordenador con uno de mis programas, pues este señor decía que lo que quería era mi programa. El de la tienda no sé que ganó con el ordenador, seguro que más que yo con el programa, pero aquello me llenó de satisfacción.

dbdesigner4 y sqlite

Hace un par de semanas comencé a buscar una herramienta visual para implementar los modelos E/R de mis programas. Primero probé DIA, una herramienta open source para crear diagramas que sólo sirve para eso: crear diagramas. Después vi en un foro sobre xbase que alguien preguntaba por Dezign for databases. Me bajé la demo y estuve trasteando con el programa, pero se quedaba corto en el tema de los listados ya que la documentación que permite generar es muy escasa. Luego vi el post de Abel y la referencia a DbDesigner4 en un comentario. Me bajé el programa y me sorprendió. Es sencillo de usar y bastante potente, permite crear modelos lógicos de BB.DD. relacionales definiendo tablas, atributos y relaciones, generando luego los esquem
as para crear la base de datos. También permite hacer ingeniería inversa, creando un modelo a partir de una base de datos. La información que almacena el programa se guarda en ficheros XML, cosa también a tener en cuenta y es un programa con licencia GPL. Tremendo.

El programa rebosa elegancia, es uno de esos programas en los que te fijas cuando te planteas tus aplicaciones. Para muestra, el acerca de…

Me llama mucho la atención que el programa use SqLite. Esto es algo sobre lo que tengo que investigar, y ver si lo puedo usar con Xailer y sus DataControls.

PD: ¿ Alguien me dice como evitar que me llenen de basura los comentarios a los posts ?

reunión xbase

El próximo día 10 de Julio tenemos prevista una reunión de programadores xBase en Murcia. Seguramente vendrá José F. Giménez a contarnos cosas de Xailer y seguro que hay alguna novedad más.

Si estás interesado en asistir deja un comentario indicando la manera de contactar contigo.

paradigmas y comunidades de desarrolladores

Estos días Jaime y Rafa han publicado post sobre Xailer, José Alfonso le ha hecho una entrevista a Paco sobre vCode y se respira aire fresco dentro de la comunidad xBase. Desde mi punto de vista Xailer lo tiene complicado pues supone un cambio total de paradigma para los programadores xbase.

Un paradigma, de acuerdo a Thomas Kuhn, es la teoría o idea que es compartida por una comunidad científica y que nadie cuestiona. Ahora mismo está claro que el paradigma para programar en Windows es Fivewin/FivewinHarbour pero existen
anomalías dentro del paradigma que pueden hacer que haya una revolución por parte de la comunidad de programadores y esta decida abandonar el paradigma para abrazar otro. Esto se debe sobre todo – sigo con la teoría de Kuhn – a un sentimiento profundo de los miembros de la comunidad de que el paradigma no es el correcto y que deben buscar otro paraguas donde cobijarse. En las teorías de Kuhn el concepto de comunidad científica como ente social es fundamental y viene definido como un grupo de individuos que comparten un paradigma y que tienen lazos de conocimientos comunes.

Hace poco un amigo me dijo una frase que se me ha quedado grabada y que indica claramente que es uno de los progradores xbase en busca de otro paradigma. La frase fue: ‘Estoy harto de esperar tecnologías que nunca llegarán a xbase‘. Uno que se va. ¿ A donde ? Sólo él lo sabe, pero esa duda trascendental es la que indica que va a buscarse otro paraguas.

Si Xailer, o el entorno que sea, quiere triunfar debe hacerse atractivo para la comunidad, debe crear comunidad, de manera que haga que la comunidad de programadores xbase se replanteen lo bueno del paradigma actual y entren en crisis. ¿ Como se consigue esto ? Pues principalmente dando a conocer su herramienta y ofreciendo motivos para cambiar.

José, Ignacio: ¿ Que tal un blog donde nos tengais al día sobre Xailer ?

colores de Windows

Un error que se suele cometer cuando se programa es usar colores fijos en determinados controles que se quiere resaltar. Por ejemplo, que la fila iluminada en una rejilla de datos sea de color azul intenso, o un determinado
panel de un beige muy clarito. El programador se siente Van Gogh por un día y lo que acaba de hacer realmente es meter la pata hasta la rodilla. ¿ Que pasa si el usuario cambia sus colores de Windows ? Pues que el azul intenso puede quedar como una patada en la espinilla y lo del beige mejor dejarlo. El programador queda como un daltónico, cuando realmente es un chapuzas.

La solución es usar siempre los colores del propio Windows, de manera que sea cual sea la combinación de colores del usuario, nuestros programas entonen con ellos. Fivewin permite acceder a los colores de Windows a través de la función GetSysColor() y es muy sencillo hacer un pequeño programa que nos muestre los distintos colores del sistema, de manera que podamos elegir en cada momento cual usamos, pero siempre referido a la combinación de colores que tenga definida el usuario. Quiza perdamos un poco de vistosidad, pero ganaremos mucho en elegancia.

Fijandonos bién y ejecutando este programa con diversas combinaciones de colores veremos que Windows utiliza siempre pocos colores y juega con mucho cuidado con tonalidades de los mismos. Dejo el código fuente y el ejecutable de esta utilidad para descargar.