GPF y WindowsUpdate

Este fin de semana estuve refactorizando código de el Puchero para presentarlo al XAAC. No es que piense entregar el código, pero como programador intento que el programa por dentro esté bonito. Resulta que al pulsar el botón salir el programa mostraba un formulario preguntando si se queria salir del programa, pero al dar en la X del cuadro de control de la ventana salía directamente. A medias de la refactorización me bajé a casa a recoger correo. Cuando terminé la refactorización recompilé y al salir del programa me daba un bonito GPF.

Hacia meses, desde la versión 0.90 de xHarbour que no tenía GPF’s en el Puchero. Me puse a mirar todo el código que habia tocado y no vi nada raro. Cogí una copia del código de la semana anterior y tampoco. Lo deje estar, pensando que al dia siguiente más despejado lo arreglaría.

Pero no. Ayer miré, remiré. Soy torpe, pero… joder que esto es una chorrada. Me acordé de que había aplicado un parche relacionado con el consumo de recursos de FWH. Conservaba la libreria previa al parche, las renombré, recompilé… el GPF seguía. ¿ Que había hecho desde el viernes, que el programa iba perfecto, hasta el sábado ? La refactorización, bajar el correo … y un WindowsUpdate. Fui al panel de control y desinstalé todos los parches que apliqué el día 17 y el GPF desapareció.

¿ Que bien verdad ? Pues no, desde mi punto de vista es una putada de narices. Si al hacer un WindowsUpdate mis programas van a dar GPF pues apaga y vamonos. Eso no es programar, eso es luchar contra los elementos. Que Dios nos pille confesados con el WindowsUpdate, el ServicePack 2 y la
política de Microsoft de pasar de compatibilidades hacía atrás. ¿ Que les digo a los usuarios, que no actualicen Windows ? Si un señor instala una demo de un programa y al salir le da un GPF he perdido un potencial cliente porque seguro que no registra el programa.

La verdad es que dan ganas de irse a Linux y dedicarse a hacer software libre.

numeración de versiones how to / 1

Una de las maneras habituales de numerar las versiones de los programas consiste en segmentar el número de versión en tres partes, de la manera 9.99.99:

  • El primer segmento es el número de versión propiamente dicho, que se cambia cuando se trata de una revisión en profundidad del programa.
  • El segundo segmento es el número de release, que cambia cuando se hace un cambio de funcionalidad importante en el programa, pero no tan importante como para que sea un cambio de versión. Además existe la costumbre de que las los números impares de release son inestables, mientras que cuando se llega a una versión estable se cambia a un número par.
  • El tercer segmento es el numero de build dentro de la release.

Hace unos dias, en uno de los grupos de news que visito – xHarbour o Fivetechsoft – alguien propuso una numeración en tres segmentos, pero de la sguiente manera:

  • El primer segmento igual que antes.
  • El segundo segmento de dos dígitos, el primero del año – en este caso 4 de 2004 – y el segundo del cuatrimestre – ahora sería también 4.
  • El tercer segmento de número de build dentro de la release.

La ventaja de este segundo métido de numerar versiones es que sabes que versión es y te haces una idea de cuando fue liberada. En aplicaciones o software en que se liberan versiones continuamente esta segunda notación te hace tener claro lo actualizado o no que tienes tu software.

¿ Opiniones ? ¿ Cual os parece mejor ?

nueva imagen de el Puchero

En el lanzamiento de las nuevas versiones de los programas estamos cuidando a tope los detalles. Una cosa que siempre me ha llamado mucho la atención de los programas es el icono. Estoy harto de ver programas buenos o muy buenos con un icono penoso y es un auténtico placer observar iconos bien hechos, como los de Firefox y Thunderbird. Un icono bonito es la guinda de un programa bien hecho.

Como no nos gustaban lo suficiente los iconos de el Puchero y Cuaderno de Bitácora que somos capaces de hacer decidimos encargarlos a Jono. Jaime y yo nos quedamos a cuadritos cuando nos envió su propuesta. La idea es la misma: un tenedor y una cuchara cruzados… pero bien hecho.

xHarbour Annual Application Competition

Se acaba de convocar la primera edición del Concurso anual de aplicaciones xHarbour, cuyas bases están en la web de xHarbour.com. Sinceramente me parece una excelente idea, porque cosas como estas son las que contribuyen a crear comunidad entre los programadores y a sentir que su herramienta está en la cresta de la ola. Recuerdo los años dorados de los lenguajes xBase, a mediados de los 90, en que los desrrolladores de UltimAde ganaron un par de veces el concurso de programación de la revista DataBased Advisor. Los programadores xBase eramos los reyes del mambo, luego vinieron los años oscuros y desde hace un par de años parece que hay luz al final del tunel.

En los hilos de news de xHarbour y FWH donde se anunció el concurso hubo muchas respuestas, alguna de ellas realmente interesante, como la de Sandro Freire – uno de los desarrolladores de HwGui – o la de TheFull. Si Rafa manda algo de su GUI multiplataforma basada en Gtk+ creo que tenemos un serio candidato a premio.

Jaime y yo vamos a competir con las nuevas versiones de el Puchero y Cuaderno de Bitácora. No se cual será el nivel de los programas que se presenten, pero tenemos claro que no tenemos que envidiar nada a nadie. Haremos campañas para que los lectores de nuestros blogs nos voten, a ver si pillamos alguno de los premios, que falta nos hace.

cultura hacker

¿ Quienes somos ? ¿ De donde venimos ? Quiza estos enlaces aporten algo de luz, son textos clásicos que hablan del origen de los programadores:

y si quieres saber más, puedes leer La ética del hacker y el espiritu de la era de la información, de Pekka Himanen, o La caza de hackers (Hacker crackdown) de Bruce Sterling. El primero está editado en papel por la Editorial Destino, ISBN 84-233-3390-6 y el segundo tienes que descargarlo en PDF, pues creo que no hay edición en papel.

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: