jueves, mayo 25, 2006

XML y Velneo

Últimamente me he encontrado con la necesidad de comunicar mis aplicaciones Velneo con terceros a través de ficheros de intercambio en XML.

Un fichero XML en principio no es más que un fichero de texto plano con una estructura jerárquica estricta definida por etiquetas con apertura y cierre, dentro de cada etiqueta van los datos.

Un ejemplo sencillo puede ser;

[?xml version=" 1.0 " encoding=" UTF-8 " standalone= " yes "?]
[ficha]
[nombre] Angel [/nombre]
[apellido] Barbero [/apellido]
[direccion] c/Ulises, 36 [/direccion]
[/ficha]

Lleva una cabecera que define la versión de xml del documento, la forma en que se ha codificado el documento y si el documento va acompañado de un DTD (Declaración de Tipo de Documento ) o no.

Un DTD define la estructura y semántica del XML, pero en eso no vamos a entrar ahora.

Veamos otro ejemplo un poquito más complejo;

[?xml version=" 1.0 " encoding=" UTF-8 " standalone= " yes "?]
[movies]
[movie]
[title]Raising Arizona[/title]
[writer]Ethan Coen[/writer]
[writer]Joel Coen[/writer]
[producer]Ethan Coen[/producer]
[director]Joel Coen[/director]
[actor]Nicolas Cage[/actor]
[actor]Holly Hunter[/actor]
[actor]John Goodman[/actor]
[comments]A classic one-of-a-kind screwball love story.[/comments]
[/movie]
[movie]
[title]Midnight Run[/title]
[writer]George Gallo[/writer]
[producer]Martin Brest[/producer]
[director]Martin Brest[/director]
[actor]Robert De Niro[/actor]
[actor]Charles Grodin[/actor]
[comments]The quintessential road comedy.[/comments]
[/movie]
[/movies]

La cabecera, un elemento padre "" englobando a todo lo demás, y una serie de tags anidados de forma correcta que contienen información.

Si lo analizamos un poco podemos ver cierto parecido con la manera que tenemos de tratar la información en Velneo, una tabla maestra de películas y por ejemplo las tablas escritores, productores, directores y actores relacionadas con esta mediante históricas ( escritores-películas, productores-películas, etc... ).

Generar este XML desde Velneo es algo tan fácil como:

Fichero: Abrir -] xml, d + "\\xml\\nombre_fichero.xml", Lectura/escritura. Crea o Limpia
Fichero: Grabar línea -] xml, "[?xml version=\c1.0\c encoding=\cUTF-8\c standalone=\cyes\c?]"
Fichero: Grabar línea -] xml, "[movies]"
Búsqueda -] PELICULAS
if -] n ! 0
Ordenar Lista -] %TITULO%
Recorrer lista sólo lectura
Fichero: Grabar línea -] xml, "[movie]"
Fichero: Grabar línea -] xml, "[title]" + %TITULO% + "[/title]"
Cargar histórico -] ESCRITORES-PELICULAS, CODPELI
Recorrer lista sólo lectura
Fichero: Grabar línea -] xml, "[writer]" + %NOMBRE% + "[/writer]"
etc...

Hay que ser estricto a la hora de cerrar todos los tags que abrimos y que la anidación sea correcta y ya está.

Esto puede complicarse mucho más pero, básicamente, cargando lista, recorriendola, multipartiendola, cargando históricos, tenemos solucionado en cuatro pasos la generación de ficheros XML bién formados, que en la gran mayoría de los casos satisfacen la demanda de datos de terceros.

Como complemento a esto os diré que en el almacén de objetos hay una utilidad lista para su uso llamada parseador XML que con pocas modificaciones sirve para almacenar ficheros XML en tablas nativas Velneo.

Yo además la he utilizado para comprobar que el documento XML almacenado está bién formado y que los datos almacenados son consistentes.

Todo ello en un par de horas, utilizando las plantillas y el amacén de objetos.

Ahora sigo preguntándome; qué problema de tratamiento de información se me puede plantear que no pueda resolver con Velneo?

viernes, mayo 19, 2006

CSS y Velneo

Desde la explosión de los blogs en internet todo el mundo se está dando cuenta de hacia dónde va internet; hacia una web más semántica donde el contenido se separa de la estructura, y esto se puede hacer con XHTML y CSS.

Hay etiquetas HTML que las recomendaciones de W3C tienden a hacer desaparecer. Todas aquellas que se dedicaban a intentar "maquetar" el aspecto de la web dentro del propio código HTML; fuentes, colores, etc.

Actualmente se debe tender hacia una maquetación web basada en CSS, y si lo haces así, es un trabajo duro en principio, pero que posteriormente te permite cambiar cualquier aspecto de tu web prácticamente sin tocar código de las páginas, sólo modificando el CSS del sitio.

Cuando has elaborado un CSS completo para un sitio es bastante fustrante que sea accesible a los ojos ajenos para que por ejemplo te puedan "clonar" un trabajo que tus horas de trabajo te ha costado elaborar.

Si te fijas en una página cualquiera, puedes ver en el encabezado lo siguiente:

link href="css/estilo.css" type="text/css" rel="stylesheet"

Esto significa que el sitio web usa una hoja de estilo en cascada llamada estilo.css donde se define el aspecto de las fuentes, los párrafos, los enlaces y demás cosas. Al fín y al cabo, no es más que un fichero de texto plano.

Esto me hizo pensar un día; "Y si lo pongo en un proceso que me devuelva ese texto plano?"

Experimenté lo siguiente:

link href="CSS.PRO" type="text/css" rel="stylesheet"

donde CSS.PRO es un proceso de Velneo que lo único que hace es:

Set -> css, "aquí irá el contenido del archivo css"

Añadir retorno texto -> 'css'

y funcionó!!!

A partir de esto me dí cuenta de que no sólo mi CSS quedaba al resguardo de los ojos ajenos, sino que se me abría todo un mundo de posibilidades con el CSS del sitio, ya que al ser generado en un proceso, lo podía hacer dinámico.

Imagina que haces depender el CSS del sitio de una serie de variables que pueden ser elegidas por el usuario, o que en función de otras variables que el usuario no puede elegir configuras la apariencia de tu sitio con el CSS dinámico.

Imagina.

Sigue imaginando...

Parte web de una aplicación Velneo

Todos aquellos que desarrollais aplicaciones Velneo en entorno C/S disponeis de un Servidor Velneo que no sólo sirve aplicaciones, datos y disco. Disponeis por el "morro" de un servidor web que sirve páginas html puras y duras, y páginas dinámicas, es decir, procesos.

Muchos de vosotros pensareis; "Y yo para qué quiero servir web, si la aplicación de mi cliente es pura gestión y además, ya tienen web alojada en otro servidor externo?".

Hasta aquí, vale. Dejamos aparcada aquí la pregunta.

Por otra parte, una queja de muchísimos usuarios de Velneo son las carencias de los dichosos informes; partir esto en varias páginas de forma controlada, poder sacar en un mismo informe informaciones muy dispares provenientes de diferentes tablas, incrustar gráficos de columnas, y cuestiones más estéticas como fotografías o elementos decorativos.

En esta línea, un compañero me vino un día con lo siguiente; "Tengo un menú formulario con un mogollón de casilleros sincronizados que al cliente le encanta, pero ahora me ha pedido que le ponga un botón para imprimirlo... y esto no lo puedo meter en un informe".

Entonces me vino la inspiración, ya está!!; un informe web.

Y aquí es donde enlazo con la pregunta que teníamos aparcada, para qué el servidor web en aplicaciones de gestión puras y duras?

Para informes web.

Informes html tan bonitos como te permita tu nivel de diseño html y sin limitaciones de acceso a datos de cualquier tabla de la aplicación, tan rápidos de desarrollar o más que un informe, y con un resultado gráfico infinitamente más rico, personalizado y profesional.

Los informes web, como página web que son, pueden ( deben ) utilizar un CSS y así ya tienes todos los informes web de tu aplicación compartiendo una misma imagen corporativa sin tener que definirla en cada informe.

Así pues, recomiendo a los que os dedicais a programas de gestión pura y dura que no dejeis de lado la parte web ya que no sólo puede sacaros de algún apuro, sino realmente enriquecer enormemente vuestras aplicaciones.

Quieres ir al cine?

Es viernes 19 de mayo de 2006, y son las 15:46h.

Hoy estrenan el Código Da Vinci.

Quieres comprar entradas por internet para ver la peli?

Prueba a comprar las entradas en cualquier web especializada del ramo.





Uy!!! Pero si no va ninguna...

Ahora prueba en reservaentradas.com

Ah! Así da gusto.

jueves, mayo 18, 2006

VelneoLatino

Ha nacido un nuevo portal dedicado al mundo Velneo; VelneoLatino

Vaya desde aquí la enhorabuena al amigo ofsantana por tan buena iniciativa y los mejores deseos para el portal.

Keep it SIMPLE

Tras varios años programando en VV ( de ahora en adelante Velneo ) por fín se está produciendo la expansión de la herramienta a nivel global, al menos en el mundo de habla hispana.

Hasta ahora los programadores de Velneo quizás podíamos sentir una extraña sensación, algo así como "Estaré equivocandome? Por qué no lo ven todos? Qué pasa con esta herramienta que es tan buena? Por qué no la usan todos los programadores masivamente? Será esto una secta y estaré sofronizado?".

Pues bién, ahora ya ha ocurrido. Ya no estamos solos, ya no somos bichos raros.

Se está incorporando a la herramienta toda una comunidad de desarrolladores del mundo de habla hispana, muchos de ellos provenientes de otros lenguajes y herramientas de programación como VisualBasic o .Net

Y con ellos están viniendo también las malas costumbres heredadas de esos otros mundos de programación.

En el foro de Velneo ( en permanente ebullición ) te encuentras a diario cientos de consultas y respuestas acerca de cómo hacer esto y lo otro; "pues para eso te montas un proceso que haga tal y cual, y lo pones en el botón de..."

Procesos, procesos y más procesos.

Keep it SIMPLE.

Cuando empecé con VV me dijeron: "Tú tienes suerte, eres virgen, no estás contaminado por otros lenguajes de programación", y era verdad. Es más fácil aprender Velneo si no sabes nada que si crees que sabes algo.

Si provienes de otros lenguajes de programación, olvida todos los artificios que te enseñaron.

Velneo es simple y ahí reside su potencia.

Puedes liarte con procesos inmensos que carguen listas para tener origen, que recorran la lista, que carguen históricos y los modifiquen, o que suban a los maestros para hacer lo que sea, que guarden valores en variables globales o locales para luego ser utilizadas, puedes hacer prácticamente lo que quieras, pero... para qué?

Supongo que eso será una costumbre heredada de otras herramientas donde la gente acostumbraba a teclear cientos o miles de líneas de código.

En Velneo no es así.

Velneo no es un lenguaje de programación, es una base de datos real, y como tal, tienes a tu disposición la estructura de base de datos donde no sólo se definen las tablas y los campos, sino también las relaciones entre ellas mediante punteros de tipos que hasta ahora desconocías que pudiesen existir, con actualizaciones automáticas sobre campos de otras tablas, con procesos de tabla para comprobación, modificación de datos o lo que se te pueda ocurrir, todo ello al vuelo y sin programar ni un sólo proceso.

Velneo es así, simple y potente.

Así pués, mantengamoslo simple y disfrutemos de su potencia.

Para ello debemos retroceder a los orígenes, bajar a las bases, conocer su esencia y utilizarla.

Cuesta al principio, pero como ya he dicho alguna vez, cuando ves la luz, el cielo se despeja y puedes ver un amplísimo panorama lleno de posibilidades que antes no te dejaban ver las líneas de código.

Keep it SIMPLE.