crisis, what crisis ?

El blog está en crisis, llevo un montón de dias sin publicar nada. Bueno, realmente el que está en crisis soy yo. No se si esto será la crisis de los 40, pero a mi me ha cogido con 41, y creo que si estoy en una cierta crisis. Una crisis que precede a una revolución, al estilo de lo que otras veces he comentado.

Lo cierto es que de un tiempo a esta parte estoy un poco desencantado con todo esto. Siempre fuí un apasionado de la informática y sobre todo del software, para mi desarrollar software era casi un fin en si mismo y ahora ha pasado a ser un medio. Ha bajado escalones en mi lista de prioridades y eso se ha notado sobre todo en el blog. Quiza el futuro sea unicamente desarrollar para mi mismo o al menos unicamente de acuerdo a mis necesidades. ¿ Software libre ? Pues no lo descarto, pero si lo hago me gustaría hacerlo en una plataforma libre.

Lo pienso y no se cuando comenzó todo, pero desde luego ha sido este año. El tema de las ventas del software no acaba de despegar, el nivel de colaboración también ha bajado y otros temas me llaman más. Antes compraba 3 revistas de PC todos los meses, ahora compro una y es la que mas tardo en leer, y desde luego no la leo en casa sino en horas de trabajo.

Con la llegada del buen tiempo no apetece quedarse sentado delante del ordenador. Apetece pasear y tomar el fresco por la noche., además de que hay más cosas que hacer. Fátima cada vez reclama más atención y más dedicación, y ella es la primera en recibirla.

Al mismo tiempo, el convencimiento de que tengo que ir abandonando el entorno de programación que he usado durante mucho tiempo es cada vez más firme. Sigo aprendiendo .Net y C#. Ahora se ha unido el interés por Joomla! como gestor de contenidos para usar en algún proyecto personal de web que tengo en la cabeza. Además el año que viene cambio de asignaturas en la UA. Por fin voy a dar una asignatura de programación y eso refuerza mi interés en el lenguaje C en todas sus variantes.

Seguiremos informando.

fsdi2006

Desde hace bastante tiempo vengo usando en mis programas una clase llamada FSDI que pretende emular un interfaz de documento único a ventana completa. El primer post donde hablaba de esto se llamaba Full Document Single Interfaz y estaba en Software* que fue mi primer blog. Luego hubo modificaciones de la clase, primero con su adaptación a xHarbour, luego el diálogo contenedor pasó a ser no modal, y hace poco conseguí que el diálogo contenedor se redimensionara al redimensionar la ventana principal de la aplicación gracias al uso del método SetSize().

Ahora publico como ha quedado la clase FSDI con todas estas características, así como un pequeño ejemplo de como montar la ventana principal y un diálogo FSDI sobre ella. El código que acompaña al ejemplo es el siguiente:

  • main.prg – punto de entrada de la aplicación y construcción de la ventana principal. El redimensionamiento de esta se hace en la función ResizeWndMain(). Está incluido el soporte de fuentes grandes en caso de que el usuario de la aplicación las tenga seleccionadas.
  • tfsdi.prg – la clase FSDI.
  • pcustomer.prg – construcción de un diálogo FSDI con la TaskBar de Canalfive a la izquierda y una rejilla de datos a la derecha.
  • tabs.prg – las tab que uso para la parte inferior del diálogo fsdi.

Aquí está el ejemplo para descargar: FSDI2006

azeta 2.0 rc-1

Por fin tengo terminada la primera beta pública de Azeta, el que es mi nuevo programa de gestión de documentos. Antes de publicar el programa en la web lo publico como primicia en mi blog. Cualquier cometario o sugerencia será bienvenido.

Azeta es un programa de gestión de documentos. Permite almacenar información sobre documentos en papel o formato electrónico clasificandolos por materias y palabras clave e introduciendo los datos de autores, publicación, tipo de documento, soporte y ubicación física o electrónica. Las palabras clave a introducir dependen de la materia, en una relación arborescente, y el resto de los autores, publicaciones, tipos de documento y ubicaciones físicas se gestionan en tablas auxiliares, lo que permite homogeneizar facilmente las entradas y mantener la integridad de los datos. El programa permite acceder a una dirección web o a un fichero electrónico que contenga el documento en un solo click, y consultar los documentos de cualquier registro de una tabla auxiliar, por ejemplo un autor, también en un sólo clik. El programa se completa con un generador de listados completamente configurable.

Una de las novedades que trae el programa es el redimensionamiento de los dialogos dentro de la ventana principal al redimensionarse esta, tal como comentaba en un post anterior.

Como ya es habitual, existen dos ediciones del programa: una gratuita y otra registrada. En la ayuda del programa están explicadas las diferencias.

Descargar Azeta 2.0 RC-1 edición gratuita

clipxnet

En mi trabajo de día se me ha planteado la necesidad de hacer una aplicación web como complemento a una aplicación de escritorio. Esta aplicación soporta acceso en red y está hecha con xHarbour + FWH, y los datos almacenados con en ficheros DBF con índices CDX. El caso es que necesitaba acceder a estos mismos datos a través de un navegador, y estuve viendo las distintas alternativas para ello. Entre las distintas alternativas, al final me quedé con clipxnet.

Clipxnet permite usar xHarbour como CGI que interpreta código xbase para generar páginas dinámicas. Permite acceder a ficheros DBF con índices CDX y tiene todas las funcionalidades para desarrollar aplicaciones web. Permite hacer muchísimas cosas, apenas estoy comenzando a usarlo y la verdad es que los resultados son espectaculares. Clipxnet cuenta con un foro de soporte desde el cual se puede descargar el paquete, que es totalmente gratuito. En la web se pueden encontrar sitios web completos cuyo soporte de acceso a datos está hecho con xlipxnet, como por ejemplo la web de Tecnimap 2006. No hay más que pasar el ratón por los enlaces y ver lo que aparece en la barra de estado para comprobar que son llamadas a clipxnet.

responsabilidad civil en fallos informáticos

La semana pasada se publicó en Ciberpaís una noticia referida a la demanda de responsabilidad civil en fallos informáticos. Todos los aspectos relacionados con el ejercicio de una profesión suelen ser vistos desde un punto de vista totalmente subjetivo ya que cada uno cuenta de la fiesta como le va en ella, pero creo que sería bueno para la profesión en su conjunto que los proyectos informáticos estuvieran sujetos a responsabilidad civil, y que los distintos colectivos que integramos la profesión nos organizaramos para defender todos nuestros intereses, ofreciendo una imagen de profesión madura ante la sociedad.

humanidades versus tecnología

La pasada Semana Santa estuve con amigo Paco en Granada. Paco es de Granada, aunque vive en Córdoba, y nos hizo de guia durante nuestra estancia en la ciudad. Quedamos impresionados por los conocimientos de la cuidad, de su historia, sus vivencias y costumbres de que hizo gala Paco. Mi amigo es Licenciado en Física, pero trabaja en Informática casí desde que dejó la Universidad. El caso es que le pregunté si le gustaba estudiar Historia y me hizo la siguiente reflexión:

José Luis, no hay nada más agradecido que estudiar cosas de humanidades, ni nada más desagradecido que estudiar temas de tecnología. La Historia de una ciudad o de un país o de una determinada época es la que es, y una vez la medio aprendes ya te sirve para siempre. La tecnología es al revés: aprendes algo y cuando lo dominas casi ni te vale, porque ha quedado obsoleto y te toca aprender otra cosa. Y fijate en lo que llevamos entre manos en los últimos 15 años en el trabajo: primero los minis, luego los primeros PC con MS-DOS, a continuación Windows, redes Novell, intranets,… Y haz programas para cada plataforma: primero aprende la plataforma, luego el lenguaje que toque y dale soporte. Hay para cansarse. Yo aprendí una vez la historia de Granada, la de los Nazaris y los Reyes Católicos, y no me la han cambiado. Para mi aprender Historia es lo más agradecido del mundo.

La reflexión es totalmente cierta, y creo que todos los que trabajamos en esto lo hemos pensado más de una vez. Trabajar en Tecnología de la Información es desagradecido, pero es apasionante, con el acicate de que la evolución de la tecnología es una de las mayores causas de evolución social conocidas. Estamos inmersos en una profesión en que el aprendizaje de por vida es obligatorio y por eso los que trabajamos en esto tenemos siempre interés en aprender cosas nuevas, aunque no sean de tecnología.

completando FSDI: un método llamado SetSize()

Una de las cosas de las que carecía nuestro interfaz TFSDI era del ajuste a la ventana principal de la aplicación al redimensionar esta. En el post anterior se ve en una de las capturas que se publicaron en el artículo de PcActual como queda un trozo de ventana sin el diálogo FSDI encima. Esto es debido a que al crear el diálogo FSDI calculamos las coordenadas que debe tener este y lo ponemos en la zona cliente de la ventana principal de la aplicación, pero al cambiar el tamaño de esta no sabiamos como ajustar el diálogo FSDI con sus controles.

La verdad es que la cosa parecía difícil de resolver. Habiamos hecho varios intentos sin resultado, y en la última reunión de GO2000 José Luis Capel nos enseñó una aplicación con un aspecto similar a las nuestras pero con el ajuste a la ventana perfectamente conseguido. La manera de hacer esto por parte de José Luis era usando paneles, y estuve preguntándole varias cosas pero sin resultado. Lo de los paneles era un auténtico lio, o eso me parecía. El caso es que buscando la manera de ajustar di con un ejemplo en la carpeta SAMPLES de FWH en el que nunca había reparado: fwbios.prg. En este ejemplo se hace un ajuste de un listbox definido por código a una ventana mediante el método SetSize() de aquel, invocado al redimensionar la ventana. El caso es que el método SetSize() pertenece a la clase Window y lo heredan todas las clases que derivan de ella, o sea
todos los controles. Este método permite ajustar el tamaño de cualquier control que haya sido definido por código, como por ejemplo el taskbar, xbrowse y tabs que uso en mis diálogos FSDI además del propio diálogo. Y yo sin enterarme ni de que existía este método.

Lo único que he tenido que hacer es que los objetos taskbar, xbrowse y tabs que aparecen el cada diálogo FSDI sean datas de mi clase TApplication que es la que controla la ventana principal, de manera que al redimensionar la ventana pueda acceder a estos controles para ajustarles el tamaño mediante el método SetSize(). En breve publicaré la edición gratuita de Azeta que es el primer programa donde implemento esto.

sistema de búsquedas

Hasta ahora en mis programas la búsqueda de registros era mediante SEEK. Esto quiere decir que al buscar un término, por ejemplo ‘software’ en un fichero de libros, la búsqueda devolvía como resultado el primer registro que empezase por ese término. Si el título del libro era Ingeniería de software la búsqueda anterior ni le rozaba.

A partir de ahora las búsquedas no van a ser por SEEK sino que van a permitir realizar búsquedas en cualquier parte del campo por el que se quiera buscar. Asi ya podré encontrar mis libros de Ingeniería de software al introducir software en el formulario de búsqueda de Cuaderno de Bitácora. El resultado es este:

El mayor problema que he tenido para implementar este tipo de búsquedas no ha sido la manera de hacer la búsqueda sino como presentar el resultado. Al final la decisíón ha sido mostrar un formulario con la relación de ejemplares que cumplen la condición para ahi hacer la selección definitiva del ejemplar a consultar. Una lista sobre otra lista, como dice mi amigo Manuel, pero creo que es la mejor manera de hacerlo.

jonathan strange y el señor norrell

Hacía tiempo que no disfrutaba tanto con un libro como lo he hecho con este. En la web de la editorial hay una reseña donde evidentemente lo ponen muy bien. Es mucho mejor de lo que dice ahí. Es uno de esos libros que te atrapa, que te persigue cuando estás en casa, que hace que te quedes por la noche leyendo mientras en casa todos duermen.

alanit
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.