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.

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.

fuentes grandes en FWH

Una de las cosas que nos están pidiendo los usuarios de nuestros programas ultimamente es la posibilidad de modificar el tamaño de la fuente de los mismos. Con el aumento de tamaño de los monitores actuales es perfectamente posible tener una fuente grande para no tener que forzar la vista. Es posible definir en el programa una fuente y un tamaño, pero creo que la manera correcto de hacer esto es que el usuario defina en Windows que fuente y que tamaño quieren usar y que los programas tomen la fuente de la configuracíón de Windows. Además Windows permite usar el sistema de alisado de fuentes ClearType que permite tener una fuente muy nítida en monitores grandes.

Un formulario típico con fuentes pequeñas sería el siguiente:

Para pasar el programa a fuentes grandes, o mejor dicho, para que siempre coja las fuentes del sistema, tenemos que evitar usar tamaños de fuente fijas en nuestro programa y coger la del sistema. En FWH existe la función GetSysFont() que permite coger la fuente del sistema. Contando que al usar fuentes grandes el propio Windows se encarga de redimensionar los diálogos tenemos que nuestro anterior diálogo se ha trasformado en este:

Perfecto, ¿ no ?

Pues no. Usando GetSysFont() cogemos las fuentes del sistema, pero no se el motivo por el cual determinadas partes del formulario no usa el suavizado de fuentes cuando se le pide a Windows que lo haga. Así, si nos fijamos en la imagen de arriba vemos que realmente hay dos tipos de fuentes en el diálogo, una para los GET y otra para los SAY.

Fijándonos en el menú de la aplicación veremos que este sí que usa el suavizado de fuentes, tal como se aprecia en la siguiente imagen:

¿ Que hacer para que la aplicación tome la fuente de Windows con el suavizado ? La solución me la dió mi amigo Paco – gracias otra vez más – y consiste en usar las siguientes funciones:

//___ manejo de fuentes - Paco García 2006 ___________________________________//
#pragma BEGINDUMP
#include "Windows.h"
#include "hbapi.h"
HB_FUNC( GETDEFAULTFONTNAME )
{
LOGFONT lf;
GetObject( ( HFONT ) GetStockObject( DEFAULT_GUI_FONT )  , sizeof( LOGFONT ), &lf );
hb_retc( lf.lfFaceName );
}
HB_FUNC( GETDEFAULTFONTHEIGHT )
{
LOGFONT lf;
GetObject( ( HFONT ) GetStockObject( DEFAULT_GUI_FONT )  , sizeof( LOGFONT ), &lf );
hb_retni( lf.lfHeight );
}
#pragma ENDDUMP

y en el programa definir de esta manera la fuente de la ventana principal:

::oFont = TFont():New( GetDefaultFontName(), 0, GetDefaultFontHeight(),, )</p>

y luego heredar en las ventanas y dialogos del programa esta fuente. Con esto nuestro diálogo queda de esta manera:

donde se ve claramente que ya toma bien la fuente del sistema con el suavizado de bordes.

El último paso para que nuestra aplicación FWH tome bien las fuentes del sistema es modificar las clases de FWH que usan fuentes de paso fijo, como MsgBar, MsgItem y Ttabs para que cojan la fuente de nuestra ventana principal.

Las próximas versiones de nuestros programas ya funcionarán bien con fuentes grandes.

más sobre descargas y sobre Google

Llevo una temporada sin postear en el blog por varias razones. Una es porque el trabajo de día me absorbe ahora más dedicación y me queda menos tiempo para mi verdadera pasión, que no es otra que alanit. Otra es que me comprometí a hacer una web para unos amigos y estoy de pruebas de diseños y demás. Y la tercera es que Fátima no me deja tocar el ordenador cuando está conmigo y quiere que juege con ella, y ya se sabe quien manda en una casa donde hay un niño.

En un anterior post comentaba que estabamos aumentando significativamente el número de descargas de ediciones gratuitas de los programas. Ahora puedo decir que con la perspectiva de tres meses desde la puesta en circulación de las ediciones gratuitas el incremento de descargas es realmente importante, de tal manera que casi se puede decir que hemos multiplicado por 10 el número de descargas de los programas desde noviembre, que fue el último mes antes de poner en marcha las ediciones gratuitas. Los registros han crecido pero ni mucho menos en esta magnitud, que más quisieramos nosotros, pero si se nota más movimiento y mayores ingresos pese a la bajada de precios de los programas.

Pasando a otro tema, el pasado fin de semana encontré en el kiosko una revista que me llamó mucho la atención. Es un número dedicado a Google de la revista Pc Cuadernos. La he empezado a leer y me está gustando bastante, creo que cuenta bastantes cosas interesantes sobre la optimización de un sitio web para Google y que le voy a sacar bastante partido. El contenido de la revista se puede consultar aqui y creo que es una compra para cualquiera que mantenga su propio sitio web.

comenzando con .Net

Hace ya algún tiempo que dije que uno de mis objetivos para este año es aprender a programar en Mono y/o .Net. El motivo principal es conocer todos los entresijos que hay detrás de la plataforma .Net usando un lenguaje moderno como es C#.

Como tampoco es plan de dejarse los dientes en esto lo mejor es comenzar por .Net, leyendo cosas sobre el tema y adentrándose en la terminología del CLR, el MSIL y demás. En este primer propósito me ha servido bastante estos dos trabajos: Estudio de la plataforma .Net e Introducción al lenguaje de programación C#. También estoy leyendo Técnicas y herramientas de desarrollo ágil para .Net para conocer que posibilidades brinda .Net para hacer desarrollo ágil.

Para aprender C# tengo pedido el libro Como dominar C# desde el principio y sobre Mono he pedido Mono: A Developer’s Notebook.

Me he instalado el SDK de .Net 1.1 y también el IDE OpenSource SharpDevelop. A partir de aqui lo que toca es leer e ir haciendo pinitos. En fin, que aburrirme lo que es aburrirme no creo que me aburra mucho este año.

mymicroisv y la teoría de la larga cola

Hace pocos dias se ha puesto en marcha mymicroisv – el nuevo blog del autor del libro ‘Micro-ISV: From Vision to Reality‘. El sitio está muy bien, pues además de artículos de Bob Walsh tiene más cosas como artículos, entrevistas y ficheros de plantillas que comenta en el libro. No deja de sorprenderme la capacidad de los norteamericanos para exprimir hasta la última gota de cualquier cosa y la de vueltas que le dan a cualquier cosa.

En un post de este blog se refiere a la teoría de la larga cola, que aplicado al software viene a decir que el posible mercado de miro-isv es mayor que el de las grandes corporaciones de software. Una explicación de esta teoría se puede leen en castellano en véase además, aunque el comentario sobre ‘ascenso de los mediocres‘ creo que es bastante desafortunado. En merodeando también se comenta esta teoría, incidiendo en la existencia de micronichos de mercado.

sobre descargas y registros

Pasadas ya las fiestas, y de vuelta al trabajo es hora también de retomar el blog. El propósito para este año es dar el salto con los programas al mercado de lengua inglesa para ver si ahi tenemos un hueco. Esto, junto con la promoción de los programas, va a ser lo prioritario de este año. Durante el año anterior hemos incrementado notablemente el número de descargas de ediciones de evaluación de los programas, pero sin embargo el número de registros mensuales se ha mantenido practicamente constante.

¿?

Uno de los principios de la venta de productos por internet – y el software es un producto – es que hay una relación entre las visitas de la web y las ventas de este producto. A más visitas más ventas. En nuestro caso hay factores perturbadores, pues muchas descargas se producen desde sitios externos a nuestra web como portales de descargas, pero lo que es incuestionable es que a mayor número de descargas hay un mayor número de potenciales usuarios. Sin embargo no hay más usuarios que registren el programa. Quizás sea pronto para sacar conclusiones y a medio plazo haya un mayor número de registros debido al incremento de descargas, pero de momento la cosa no está funcionando como esperabamos. También es posible que las ediciones gratuitas vayan a restarnos registros pues haya muchos posibles usuarios que con esta edición vean cumplidas sus expectativas y decidan no pagar por la edición registrada.

El tiempo irá desvelando todo esto.

actualizaciones de programas

La semana pasada terminamos las actualizaciones de los programas y la web y subimos las nuevas versiones de Cuaderno de Bitácora y el Puchero a la web de alanit. Las principales novedades que traen las versiones son los nuevos bitmaps de los programas, que son los de iconexperience, y el tema de las altas dinámicas en tablas auxiliares. Además hemos corregido un montón de pequeños bugs y cosas que no estaban del todo bien hechas.

Pero quiza el cambio más importante, y lo que más nos ha costado decidir ha sido el cambio en el modo de distribución. A partir de estas versiones los programas de alanit se presentan en dos ediciones:

  • Una edición gratuita sin límite de registros a introducir ni límite de tiempo de uso, pero con algunas limitaciones en funcionalidad.
  • Una edición registrada con todas las funcionalidades del programa. El precio de esta edición es de 15 euros e incluye un año de actualizaciones gratuitas

¿ Que intentamos con este cambio de modo de vender los programas ? Pues principalmente ampliar el número de posibles usuarios en base a ofrecer ediciones gratuitas que haga más atractivo descargar el programa. Y por otra parte al bajar el precio lo dejamos a un precio que esperamos que los interesados en los programas ni se planteen buscar versiones P-) ni similares. Al ofrecer un año de actualizaciones gratuitas pensamos que damos un empujón más al interesado a decidir por el registro del programa al darle un margen grande para que su pago se amortice.

Los resultados de todos estos cambios son una incognita, pero el cambio de modo de licenciar los programas es firme y no hay vuelta atrás. Ahora nuestros pasos se encaminan a internacionalizar los programas y tener listas versiones en inglés en breve y a promocionar al máximo las versiones disponibles.

El primero en dar el salto de la i18n y el conejillo de indias para esto ha sido Colossus que ya funciona en español e inglés. Faltra traducir la ayuda, pero tampoco es mucha tela comparado con lo que puede ser traducir la ayuda de los otros programas.

Sobre la promoción de los programas queremos disparar a todo lo que tenga relación con nuestros programas desde sitios de descarga de programas hasta sitios web sobre cocina. Y dedicarle tiempo a esto, que es en lo que siempre pinchamos. Estamos convencidos de que vamos por el buen camino, que los programas tienen buen nivel pero hay que darlos a conocer más. De momento nos hemos llevado una alegría: el Puchero fue portada durante un par de dias en UptoDown y en una semana llevamos casi mil descargas de la edición gratuita.

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.