Archivo del Autor: Ignacio Ortiz de Zúñiga

Acerca de Ignacio Ortiz de Zúñiga

Más software nuestro en: https://www.ozs.es

xaWeb

Tengo el gusto de anunciaros un nuevo proyecto de OZ Software para desarrollar páginas web con nuestro querido lenguaje Harbour utilizando la tecnología CGI. El slogan: ‘desarrollo web rápido y fácil‘ describe claramente los objetivos principales de la herramienta.

He preparado un importante documento de introducción a xaWeb (40 páginas) xaWeb, que os animo a leerlo con detenimiento y en su totalidad. Son muchos conceptos nuevos, pero de verdad que no es complicado y merece la pena. No obstante, os adelanto las características esenciales de xaWeb:

  • Desarrollo de ejecutables tipo CGI para Windows y Linux (64 bits)
  • Independiente de Xailer: Se puede utilizar cualquier editor y no usa ninguna librería de Xailer
  • Soporte de paquetes de contexto como Materialize, que permite tener un buen diseño visual sin esfuerzo
  • Funcionamiento como servicio web
  • Gestión de sesiones
  • Sistema de depuración de código
  • Sincronización automática de datos entre CGI y HTML
  • Mínimos conocimientos necesarios de HTML, CSS y JavaScript para usarlo
  • Soporte de toda la potencia HTML, CSS y JavaScript si se tienen los conocimientos necesarios
  • xaWeb es un producto comercial de OZ Software
  • Se abre un periodo Beta al cual se puede apuntar cualquier usuario que lo desee

Con Xailer 9 publicamos una importante mejora en Xailer que permite crear ejecutables tipo CGI o consola para Linux 64 bits. Este era una paso previo necesario para intentar abordar el desarrollo de xaWeb, pues somos conscientes que el 99,99% de los servidores de Internet son Linux. Con motivo de la la inclusión de esta importante funcionalidad en Xailer, publicamos en nuestro WIKI dos artículos en los cuales explicábamos como instalar WSL (Windows Linux subsystem) y como instalar el servidor web de Apache. Para poder crear ejecutables para Linux desde el IDE de Xailer es absolutamente necesario que se instale WSL al menos (el primer paso). Aunque el segundo paso es más que recomendable.

Hace unos meses, dimos un paso más para la creación de páginas Web para Linux, con la publicación de un nuevo ‘plugin‘ de despliegue de archivos. Este ‘plugin’ permite que cualquier archivo que publiquemos en la carpeta ‘www‘ automáticamente se despliegue en WSL y en cualquier servidor web vía FTP. De la misma forma, si creamos un archivo CGI para Linux, el plugin también realiza el despliegue del mismo tanto en WSL como en un servidor FTP que usted elija.

Con Xailer 9 también es posible crear CGIs para Windows. De hecho, puede tener dos proyectos que apunten al mismo código fuentes, cada una para su plataforma en particular. La ventaja de los CGIs para Windows es que se pueden depurar y ejecutar desde el IDE. No obstante, creemos que finalmente nuestros CGIs correrán en máquinas Linux y por lo tanto, es importante que desde el primer día, sea capaz de crear CGIs para esa plataforma.

En breve estará disponible xaWeb; pero me temo que no va a ser un recompilar la aplicación y listo. Lo que si os podemos asegurar es que os encontraréis rápidamente en casa y que el camino para hacer software web se despeja completamente y el resultado final es espectacular.

Somos conscientes de que hay importantes aspectos que ahuyentan a muchos potenciales usuarios de xaWeb, como son:

  • Uso de servidores Linux
  • Instalación WSL para trabajar en local con Linux
  • Aprendizaje de HTML, JavaScript y CSS

Los pilares de xaWeb ya están terminados, pero es más que probable que haya que realizar modificaciones a nivel estructural que puedan afectar incluso a los ejemplos que ya están realizados. Hemos esperado a tener un CRUD completo funcional con archivos DBF para hacer este anuncio. En el siguiente enlace podéis ver algunos ejemplos de lo hecho hasta ahora corriendo bajo servidor Linux 64 bits. Con todos los ejemplos se incluye el código fuente en xaWeb para que le echéis un ojo y os animéis a usarlo cuando esté disponible.

xaWeb: All samples

Comentarios abiertos para conocer vuestras opiniones y sugerencias. Gracias por vuestro tiempo.

Un cordial saludo

Plugin de despliegue de archivos

Os presento un nuevo plugin que puede ser muy útil para todos aquellos que os dedicáis a generar ejecutables tipo CGI que luego subís a un servidor web o cualquier otro tipo de archivo que querías desplegar un vuestros servidores de forma rápida.

Su funcionamiento es muy sencillo: el plugin detecta cuando se realiza una compilación y enlazado correcto de un archivo CGI y lo sube a Internet utilizando los servicios de CURL. En Xailer 9 existe una carpeta especial para los proyectos tipo Web de nombre ‘www’. Cuando el plugin detecta que se ha realizado un salvado de algún archivo en esa carpeta, hace automáticamente el despliegue.

Es más que probable que no queramos que esté realizando el despliegue constantemente, por lo que se ha incluido una opción de menú para activarlo o desactivarlo.

Este plugin es capar de realizar un despliegue múltiple si detecta que estamos utilizando WSL para la generación de los archivos CGI para el entorno Linux (nueva función de Xailer 9). En dicho caso no sólo despliega en nuestro servidor en Internet, sino que también despliega en WSL

Este sería un ejemplo de despliegue:

Su configuración es bastante sencilla. Tan sólo hay que indicar las direcciones URL donde queremos que despliegue y nuestras credenciales.

Estas son la propiedades que hay que configurar y viendo su nombre espero que se auto-expliquen, así mismas:

  • URL donde se despliegan los archivos tipo CGI
  • URL donde se despliegan el resto de archivos
  • Path donde se copian el resto de archivos en entornos WSL
  • Extensión de archivos CGI que se reconocen
  • Directorio donde se ubicarán los archivos JavaScript
  • Directorio donde se ubicarán los archivos CSS
  • Directorio donde se ubicarán el resto de archivos
  • Nombre de usuario de la conexión FTP
  • Contraseña de la conexión FTP

El plugin es susceptible de importantes mejoras. Como por ejemplo, poder establecer distintas URL y credenciales dependiendo del proyecto. Hemos decidido no incluir esa funcionalidad porque cada usuario tendrá su propia preferencia. No obstante, si alguien se anima a hacerlo, encantado de echarle una mano para cualquier duda que pueda tener.

Os adelanto que sólo funciona con Xailer 9 ya que se apoya en alguna función que no existe más que en Xailer 9.

Podéis descargar el plugin de este enlace.

Un saludo y hasta pronto

Ignacio Ortiz de Zúñiga
[Equipo de Xailer]

Xailer y Linux: Instalación de WSL

Como os comentamos en nuestro último artículo, uno de nuestros objetivos para las futuras versiones de Xailer era la posibilidad de crear ejecutables y librerías para Linux en 64 bits. No se trataría de ejecutables con su propio entorno gráfico al estilo de Windows, sino que se trataría de aplicaciones que principalmente estarían pensadas para ser utilizadas como CGIs . Es decir, para ser utilizadas desde entornos Web principalmente.

Básicamente en la web y desde el lado del servidor hay dos formas de realizar aplicaciones (back-end): Utilizando guiones / scripts que se ejecutan en lenguajes como PHP, Python o Node.js o utilizando ejecutables cerrados que pueden ser elaborados en cualquier lenguaje que cree ejecutables para el sistema operativo anfitrión del servidor web. Ambos sistemas, tienen sus ventajas y sus inconvenientes.

Los guiones o scripts tienen la gran ventaja de que son tremendamente sencillos de crear y modificar ya que sólo hace falta un simple editor de texto para trabajar. Cualquier modificación que realice en el guion, después de ser grabado, ya se puede observar en la página Web. No hay compilación, ni enlazado y aunque su velocidad de ejecución es muy baja con respecto a un ejecutable, el hecho de tener cargado en memoria del servidor todo el motor de ejecución del script hace que los tiempos de ejecución sean muy asumibles. Las aplicaciones tipo CGI son muy rápidas en su ejecución comparadas con los guiones , pero están penalizadas por su tiempo de carga, que lógicamente es mayor que el de un guion cuyo motor de ejecución está siempre cargado en memoria. No obstante, este problema se ha solucionado gracias a la aparición de FastCGI. Tanto es así, que incluso motores como el de PHP, se pueden ejecutar en modo FastCGI para evitar los problemas que pudieran surgir por guiones maliciosos o mal realizados, sin que ello suponga una perdida de velocidad.

Las aplicaciones tipo CGI han de ser compiladas y enlazadas creando un ejecutable que puede ser autónomo o dependiente de librerías externas. Y esto que puede parecer una desventaja con respecto a los guiones o scripts, pero es en realidad su mayor ventaja, por varios motivos:

  • Propiedad intelectual: Nuestra propiedad intelectual del código incluido en las aplicaciones queda asegurado al no estar los fuentes del mismo disponibles en el servidor. No sólo la propiedad intelectual está en peligro cuando todo el código está disponible en el servidor , si los scripts se ejecutan en un servidor que tiene acceso nuestro cliente es imposible controlar su buen uso o por ejemplo establecer un sistema de licencias por uso del mismo.
  • Seguridad: Es infinitamente más sencillo ‘hackear‘ un servidor web que utilice motores de scripting como PHP a uno que no lo utilice. Un ‘hacker‘ que consiga subir un archivo al servidor con código malicioso, que es sencillamente, texto plano, puede llegar a conseguir que dicho archivo sea ejecutado por el motor PHP (por ejemplo) y se apoderé completamente de la máquina. Los agujeros de seguridad existentes en todo el software de gestión de contenidos que se basan en dicho motores de script tienen que estar constantemente actualizándose para contrarrestar todas las amenazas que reciben. Este problema no existe con los CGIs.
  • Depuración: La depuración de aplicaciones basadas en scripts son realmente una pesadilla ya que ni siquiera existe un corrector sintáctico del código. Es decir, si hace falta un ‘;’ para indicar fin de instrucción y no lo ponemos, no nos enteraremos hasta que se ejecute en el servidor y normalmente lo único que recibiremos de respuesta es una página en blanco y poco más. Si llamamos a una función que no existe o nos olvidamos de cerrar un bloque IF..ENDIF, exactamente igual. En las aplicaciones CGIs nos aseguramos que el código ha sido compilado y enlazado sin problemas y por lo tanto los errores que podamos tener son sólo errores de ejecución. En la mayoría de los lenguajes de programación que realizan CGIs es necesario utilizar un sistema de ‘Logs‘ para poder depurar las aplicaciones y saber hasta que punto se han ejecutado correctamente o conocer valores de variables internas. En Xailer hemos conseguido depurar cualquier aplicación CGI de la misma forma que se depura cualquier otro tipo de aplicación de escritorio y todo sin salir del IDE. Xailer es capaz de ejecutar cualquier CGI y mostrarlo en su navegador interno, pudiendo poner puntos de ruptura, ejecución paso a paso e inspección de variables. Esto sólo es posible realizarlo creando CGIs tipo Windows. Los CGIs que cree tipo Linux se mostrarán en el IDE pero no tendrán las ventajas de depuración de los CGIs de Windows.

El proyecto está bastante avanzado y en la versión Beta actual de Xailer ya es posible crear aplicaciones para Linux en 64 bits directamente desde el IDE de Xailer y sin tener que salir de nuestro cómodo sistema operativo Windows para nada. No obstante, necesitaremos poder compilar y enlazar nuestros programas en Linux y para ello habrá que instalar algún software adicional (gratuito), que a continuación os explico.

En este primer artículo os vamos a explicar como instalar lo estrictamente necesario para poder crear y ejecutar nuestros CGIs creados para Linux en nuestra propia maquina sin tener que depender de servidores en la nube. Para ello deberemos instalar WSL (Subsistema de Windows para Linux). Necesitareis Windows 10 o Windows 11 y os adelanto que no es nada exigente con los requisitos de máquina por lo que os animo a instalarlo aunque vuestro hardware no sea muy potente. Igualmente, es muy poco exigente en cuanto a los recursos que usa. WSL es realmente un gran acierto por parte de Microsoft. En este enlace de nuestro Wiki tenéis toda la información necesaria para instalar WSL.

El siguiente artículo os mostraremos lo fácil que es crear un CGI desde el propio IDE de Xailer. ¡Estad atentos!

Un saludo

20 aniversario de Xailer

En breve Xailer cumplirá 20 años y queremos celebrarlo por todo lo alto con vosotros presentando una oferta muy especial que va a estar disponible durante todo el mes de junio próximo. Para cualquier versión de Xailer ofrecemos esta oferta:

  • 20% de descuento en actualizaciones
  • 40% de descuento en nuevas compras

Estos descuentos no son acumulables con otros descuentos que pudiera tener.

La presentación se realizó en Madrid aprovechando una reunión de programadores xBase del Grupo Olivares 2000, muchos de cuyos miembros son desde hace años usuarios avanzados de Xailer.

Me he tomado la libertad de publicar las fotos de esa reunión, en las que seguro os reconocéis más de uno (con algo menos de pelo 😉 ) . Si alguno de los presentes prefiere no salir, que lo deje en comentarios y eliminamos la foto enseguida. De la misma forma, si alguno tiene fotos de aquel día, me encantará incluirlas.

No quiero terminar este artículo sin hablar un poco del futuro de Xailer y cuales son nuestros objetivos a corto y medio plazo, que son principalmente dos, pero que suponen un gran esfuerzo y que estamos seguros serán muy bien recibidos por toda la comunidad:

  • Desarrollo de CGIs para Linux 64 bits utilizando toda la tecnología de DataControls de Xailer (integración con Nefele)
  • Nueva versión de Xailer de 64 bits y soporte de Unicode

¡¡¡ Estén atentos a próximas publicaciones !!!

Xailer 8.1 – Servidor Web

Xailer 8.1 incorpora un potente y probado servidor Web. Esta funcionalidad ya se introdujo en versiones anteriores de Xailer, pero ahora podemos asegurar es completamente operativa.

Ha sido probada de forma exhaustiva por el grupo de Nefele for Harbour, a los cuales les agradecemos todo el trabajo de test que han realizado.

El servidor web incorporado en Xailer no pretende competir con Apache o IIS, porque entre otras cosas, no incluye soporte de PHP, por ejemplo. Está pensado principalmente para ser usado en todo el proceso de compilación, enlazado y ejecución de archivos CGI en su fase de desarrollo.

Para probar nuestro servidor tan sólo tiene que elegir como tipo de aplicación, el tipo CGI:

Y hacer una pequeña aplicación como esta:

FUNCTION Main()

   LOCAL cHtml

   TEXT INTO cHtml
   <html>

   <head>
   <meta http-equiv="Content-Language" content="es">
   <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
   <title>Xailer first CGI</title>
   </head>

   <body style="background:#6699cc">

   <p><b><font size="7">Hello World!</font></b></p>

   </body>

   </html>
   ENDTEXT

   StdOut( cHtml )


RETURN NIL

Cuyo resultado es:

Futuras versiones de Xailer van a sacar auténtico partido de esta nueva funcionalidad y las grandes oportunidades que nos ofrecen los archivos CGI para desarrollar software web.

Un cordial saludo

Xailer 8.1 – Generador de ayudas

La nueva versión incorpora un completo generador de ayudas en formato HTML que permite crear las ayudas de cualquier aplicación de gestión de una forma muy sencilla y potente.

A partir de la versión 8.1 el control TForm (formulario) incluye una nueva propiedad de nombre XHtmlHelp. Cuando pulse sobre el botón de edición en el inspector de propiedades se le mostrará esta pantalla de edición HTML:

El ID se corresponde con el identificador de la página de ayuda para ese formulario y el título, es el texto que se mostrará en la parte superior de la pagina. Es obligatorio introducir algún ID, sin embargo, no es obligatorio el título. Si lo deja en blanco, simplemente esa página no tendrá título y el área que ocupa el título desaparecerá.

Por cada ayuda que usted cree, Xailer creará un archivo con el mismo nombre que el fuente, pero de extensión .XHH en el directorio ‘source‘ con el contenido HTML del documento recién creado, que incluye todas las imágenes que haya incorporado.

Nuestro sistema de control versiones XVC gestiona de forma automática la existencia de estos archivos y los incluye en el repositorio, sin que tenga que hacer nada más. Si utiliza SVN, deberá añadir los archivos de forma manual a través Tortoise SVN o por línea de comando.

Pulsando la opción de menú Proyecto->Ayudas del proyecto se nos mostrará el gestor de ayudas, que tiene el siguiente aspecto:

En el lado derecho se muestran inicialmente todas las ayudas asignadas a cada uno de los formularios y es su responsabilidad el moverlas al lado izquierdo para construir la tabla de contenidos. Una vez movida a la tabla de contenidos (lado izquierdo), podrá utilizar los botones de dirección para subir, bajar o cambiar su anidación de una forma sencilla. No es necesario que todas las páginas de ayuda que usted cree, aparezcan en la tabla de contenidos.

Observe que existe un botón con unos engranajes que permite compilar las ayudas en un único archivo de extensión .XHLP. Lógicamente, dicho archivo deberá incorporarse como un archivo más de la aplicación que desea distribuir o entregar a su cliente. Xailer crea con todas las ayudas un único archivo comprimido, con un formato propietario, sólo accesible a través de nuestro gestor de ayudas.

En el editor puede incluir todo el texto de se ayuda. Es posible incorporar imágenes, tablas, estilos de texto y enlaces a páginas Web o cualquier otra página de ayuda. Para esto último deberá utilizar como protocolo la palabra ‘help://‘. Por ejemplo si quisiese poner un enlace a la página ‘NuevoCliente’, escribiría el enlace como: ‘help://Nuevocliente‘. Eso es todo.

Para que todo nuestro sistema de ayudas funcione sólo hay que añadir una línea de código al inicio de nuestra aplicación que es:

Application:oHelp := THelp():New( "MiFichero.XHLP" )

Cuando el usuario pulse la tecla F1 en cualquier formulario, se le mostrará la ayuda de ese formulario en concreto. Por ejemplo:

Ya no hay escusas para hacer aplicaciones 100% profesionales. Espero que os haya gustado.

Un saludo

Xailer 8.1 – Control editor de HTML

Este nuevo control permite editar documentos HTML de forma completamente visual y con cierta complejidad ya que permite incluir tablas e imágenes.

El control está basado en el control Summernote, que es un simple editor realizado en JavaScript, que es especialmente liviano, apenas consume recursos y cuya licencia nos permite el uso comercial.

Este control hereda del control TWebView que es un control navegador Web basado en Microsoft Edge que únicamente está disponible para Xailer Enterprise.

No es necesario incluir ningún código fuente de SummerNote, todo está autocontenido. Su comportamiento es exactamente igual que cualquier otro control de Xailer.

Nota importante: las imágenes se guardan dentro del documento

Más en breve.

Un cordial saludo

Xailer 8.1 – Nuevo control TAnimatedGif

Este control permite mostrar GIFs animados sin absolutamente ningún tipo de retrasos o trompicones. Y esto es debido a que el pintado se hace absolutamente en bajo nivel y en un segundo hilo, lo cual tiene un grado de complejidad muy alto.

Con este control de GIF animado no es necesario llamar a ProcessMessages() para que el control se siga pintando correctamente.

Está disponible para cualquier versión de Xailer, incluso la personal.

Más en breve.

Un cordial saludo

Xailer 8.1 – Soporte High DPI Desktop Application Development

Xailer 8.1 incluye soporte de High DPI lo que permite sacar la máxima resolución de los potentes monitores 4K. Para activarlo tan sólo que poner la propiedad Appliction:lDpiAware a verdadero al principio de ejecución de su aplicación. Eso es todo. Realmente esta propiedad lo que hace es que su programa reconozca la verdadera resolución del monitor.

Cuando windows se ejecuta en un monitor de alta resolución y se establece una escala distinta del 100%, los programas reciben una información «ajustada» de la resolución, no la resolución real. De igual forma, cuando un programa establece unas coordenadas determinadas en una ventana, windows reajusta esas coordenadas según el valor de la escala que tenga establecida. P.ej., si windows está configurado con una escala del 150%, cuando un programa establece unas dimensiones de 400×400 pixels en una ventana, windows lo reajusta a un tamaño real de 600×600 pixels, incluidos todos los controles que contenga.

Esto hace que no tengamos que preocuparnos por la escala que tenga windows configurada, pero tiene el inconveniente de que los textos y las imágenes se ven difuminados. Cuando establecemos Application:lDpiAware a .T., nuestro programa trabajará con coordenadas reales, sin ajustes por parte de windows. Las imágenes y textos se verán perfectamente nítidos y en su tamaño original, aunque esto suponga que se verán más pequeños de lo esperado. En estos casos, podemos usar la propiedad Application:nScale para ajustar nosotros la escala deseada sin perder la nitidez de imágenes y textos.

Más sobre Xailer 8.1 en breve.

Un saludo

Xailer 8.1 – Mejoras en el generador de informes

En Xailer 8.1 hemos introducidos dos mejoras en nuestro generador de informes que han sido largamente solicitadas, que son:

  1. El envío directo de los informes a archivos PDF
  2. La posibilidad de anidar múltiples informes en uno solo

Para la primera opción se ha creado una nueva cláusula en el comando REPORT con el nombre TO PDF <cPdfFilename>. Para que está cláusula funcione correctamente el usuario debe de estar utilizando Windows 10 o posterior.

Para la segunda opción hemos creado la cláusula KEEP también para el comando REPORT. Y su uso es muy sencillo: Cuando cree un informe con esta cláusula, éste no se mostrará y se acumulará internamente. Puede apilar todos los informes que desee, incluso con distinta orientación de páginas. Para forzar la terminación del informe no tiene más que quitar la cláusula KEEP en el último informe que realice. Esta cláusula está pensada para ser utilizada conjuntamente con la cláusula PREVIEW o TO PDF en el último informe que se genera.

Más novedades sobre Xailer 8.1 en breve.

Un saludo