martes, 31 de octubre de 2006

Fondo pantalla Velneo 001

Hace tiempo publiqué unas fotos de dos azafatas de la Velneo Conference '06, una aquí y otra aquí.

Como ya ha pasado mucho desde entonces (ahora nuestra querida herramienta se llama Velneo), he decidido actualizar las imágenes de Velneo que tengo en marcha. Pronto publicaré un nuevo diseño de camiseta Velneo que tengo a medias, pero de momento, me decido a publicar una serie de fondos de pantalla para los que trabajais con Velneo.

Aquí está el primero de ellos.

En principio pensé, cómo no, en hacerlo con chicas, pero visto que en el foro de Velneo cada vez hay más chicas, y recientemente algún comentario machista, pero sin acritud, ha causado cierto revuelo, me dije "Por qué no lo hago con un chico?"

Pues bién, aquí teneis, para ellos y para ellas, el primer vChico Velneo-Life-is-Soft.



Que lo disfruteis.

lunes, 30 de octubre de 2006

El software más difícil del mundo

Yo tuve la suerte de que me presentara Velneo un experto en Velneo que casualmente pasaba por allí.

Conocí Velneo de primera mano y me enseñaron la verdadera filosofía de programación en Velneo desde las bases. Me leí y releí los dos tomos de manuales de cabo a rabo varias veces. Me bajé y ví todos los vídeo-tutoriales de Velneo una y otra vez. Hice los cursos presenciales básico y avanzado...

Además tuve la inmensa suerte de que en mi empresa se decidiera abandonarlo todo por Velneo y en tres meses habíamos rehecho todo nuestro software en Velneo.

Y tuve más suerte, si cabe, ya que yo no era programador exhaustivo de otras herramientas como Access o Visual Basic, de llegar "virgen" a Velneo, es decir, sin arrastrar "malas costumbres" de programación.

Todo esto hizo que tomase conciencia de Velneo rápidamente y empezase a producir de forma muy efectiva en poco tiempo.

Pero yo tuve mucha suerte.

Si en vez de ser esta mi historia con Velneo hubiese empezado bajándomelo de la web para probarlo, con los manuales, el foro y lo que ya sabía de otras plataformas de programación, hubiese pensado: "Pero si esto es lo más fácil del mundo!!!"

Y seguramente hubiese empezado a reproducir mi viejo software de otras plataformas en Velneo, cometiendo seguramente los mismos errores; un enfoque que no es y miles de líneas de código para solucionar problemas que no lo son, todo por no haber cambiado el chip.

Y seguramente mis compañeros que no habrían cambiado de herramienta de desarrollo me dirían: "Pero si sólo es un RAD! Pero si es como Access! Pero si esto es lo más fácil del mundo!!!"

Cuesta, cuesta mucho al principio, pero hay que cambiar el chip.

Velneo no es un RAD, no es un Access, no es un Visual Basic, es mucho más que todo eso junto.

Velneo es la sinergía de una Base de datos potentísima con un entorno de desarrollo muy intuitivo.

Velneo es un modelo de base de datos con punteros de tipos desconocidos hasta ahora en cualquier otra base de datos.

Velneo es una estructura de tablas con actualizaciones, procesos de tablas, punteros a hermanos, punteros singular de plural por índice o posición, punteros indirectos virtuales o reales...

Velneo es otro mundo.

Velneo parece fácil, pero no lo es.

Velneo basa su potencia en las estructuras de la base de datos, las relaciones entre tablas y los eventos de tabla. Esto hace que Velneo no sea un entorno de desarrollo "pensado y hecho".

Velneo te da la libertad de pensar.

Cuanto más pienses la estructura de tablas y sus relaciones, más potente será tu solución, y mucho más fácil de desarrollar, mantener e implementar el resto de la aplicación.

Y como en esto de pensar no hay límites, porque el límite te lo pones tú, te puedo decir que Velneo es el software más difícil del mundo.

Velneo te hace libre para desarrollar e implementar a tus anchas, como tú quieras, y eso es difícil, a veces muy difícil.

Cuando estás acostumbrado a que las cosas se hacen de una forma, restringiendote a las posibilidades de unos objetos predefinidos con unos métodos determinados y sólo esos, es muy difícil que te digan "Olvida todo lo que sabes".

Cuando de repente te dan la libertad total lo normal es que te sientas perdido, como un niño delante de todo un universo nuevo y desconocido.

Pero tranquilo, no pasa nada, Velneo es el software más difícil del mundo, pero hacerlo fácil es cuestión tuya.

Así que ánimo! Estudia las bases, domina el fundamento y expandete más allá de los límites.

Life is soft!

RSS & Velneo

Hace tiempo tuve que comunicar una aplicación Velneo con terceros para pasarles información acerca de la cartelera de los cines que usan reservaentradas.com (1ª aplicación de ticketing multicanal íntegramente desarrollada en Velneo).

Cada medio de comunicación que se iba a conectar a reservaentradas.com para recopilar información usaba una aplicación diferente, desarrollada con lenguajes y plataformas muy dispares.

La única solución que ví era servir esos datos en XML, un estandard.

Así pues, decidimos que reservaentradas.com publicaría periódicamente en una carpeta un archivo xml donde iría la cartelera de todos los cines del periodo de tiempo determinado, los medios de comunciación autorizados accederían a la carpeta y obtendrían su información en formato XML.

Perfecto, un sólo proceso (que además se programa para que se ejecute automáticamente en el servidor Velneo cada cierto tiempo) que sirve datos a cualquier aplicación externa en formato estandard XML.

Esto que en principio parece una aplicación muy concreta para una necesidad única no lo es.

Esto es RSS.

RSS consiste en la publicación de archivos XML en una carpeta específica con las novedades publicadas en una web. Estas novedades pueden ser anotaciones de un blog, posts de un foro, artículos de un catálogo, películas de un cine, etc.

Así pues, siguiendo la "Teoría del Kiwi" de Velneo, sean cuales sean tus novedades, las puedes publicar en formato XML en tu web de forma accesible.

Un lector de feeds es como un navegador web restringido que almacena las direcciones de esas carpetas, accede a esos ficheros XML, los interpreta y te informa acerca de las novedades publicadas en esas webs.

Si te interesa ver cómo generar los ficheros XML desde Velneo puedes consultar esta otra anotación donde se explica el cómo.

Si quieres leer y validar XML de forma cómoda y rápida, consulta el proceso Parseador XML en el almacén de objetos de Velneo en Objetos visuales - Procesos.

Si quieres hacer un lector de feeds en Velneo, lo tienes todo.

La próxima vez que tenga un rato libre me pondré con ello, a ver si en dos o tres horas lo tengo funcionando.

Life is soft!

miércoles, 25 de octubre de 2006

PERDIDOS

Ahora mismo me encuentro traspasando datos de una vieja, muy vieja, aplicación de Access97 a Velneo.

Ya no es simplemente el traspaso de datos, que como sabéis es muy fácil; declaras la base de datos externa en el mapa Velneo y a través de tubos de importación que tiran de las consultas Access pasas los datos a tablas Velneo, es además, la revisión y depuración de datos introducidos.

Y aquí es donde me encuentro, intentando dar sentido a miles y miles de datos: Cómo 4 usuarios pueden escribir 67 conceptos de 2.472 formas diferentes????

Cuando conocimos Velneo tardamos tres meses en abandonar Access y Visual Basic, y ahora, 4 años después, todas esas aplicaciones parecen dinosaurios fosilizados. No sé cómo podíamos funcionar con esos engendros..., bueno sí lo sé, lo que pasa es que ahora mi perspectiva ha cambiado ya que miro hacia atrás con los ojos de Velneo y realmente me sorprende lo que veo.

Ufff!!! Parece que han pasado siglos desde que desarrollábamos en Access y Visual Basic, pero no ha pasado tanto, y aún hay gente que sigue en ese mundo; PERDIDOS.

lunes, 16 de octubre de 2006

Velneo & París

Como ya sabreis programo con Velneo y por eso ahora tengo más tiempo libre.

Tanto es así que me estoy haciendo a ratos una maqueta de París.

Aquí teneis un trocito

Función remota, esa gran desconocida

Una de las herramientas más potentes de Velneo son las funciones remotas.

Una función remota es, como su nombre indica, una función que puede ser ejecutada de forma remota.

Una función remota reside dentro de un mapa de Velneo, este mapa es el mapa de la aplicación alias_aplicacion, que está siendo servida por un servidor Velneo.

Supongamos una función normal y corriente de Velneo marcada con el flag Accesible VRPC, y que recibe dos parámetros; parametro_1 y parametro_2. Esta función hará lo que tenga que hacer y devolverá un resultado ( Set retorno función ).

Por tener marcado el flag Accesible VRPC, esta función ya es remota, es decir, ya puede ser ejecutada desde otras aplicaciones Velneo.

Veamos cómo puede ser llamada esta función de forma remota.

Dentro de otra aplicación Velneo, por ejemplo, en un proceso cualquiera hacemos lo siguiente:

Set ejecuta_fr, fEjecutarFuncionRemota( ip_servidor_Velneo, alias_aplicacion, nombre_funcion_remota, contraseña_funciones_remotas, parametro_1, parametro_2 )

Con esta sentencia le estamos diciendo a la aplicación que conecte con el servidor Velneo (ip_servidor_Velneo) donde reside la aplicación (alias_aplicación) que está siendo servida y que ejecute la función (nombre_funcion_remota) con la contraseña (contraseña_funciones_remotas) que se ha definido en el servidor Velneo para poder ejecutar funciones remotas contra esa aplicación, pasandole los parámetros (parametro_1, parametro_2).

Dentro de ejecuta_fr tendremos la respuesta que ha devuelto la ejecución de la función remota (Set retorno función).

Yo acostumbro a hacer un Set retorno función 1, de forma que tras la ejecución de la función remota es inevitable el if ejecuta_fr (si se ha ejecutado la función remota hago una cosa y si no hago otra).

Las funciones remotas pueden ser ejecutadas desde aplicaciones que están siendo servidas por otros servidores Velneo o desde aplicaciones ejecutandose en monopuesto que tengan acceso a internet.

La potencia de las funciones remotas entre servidores Velneo permite hacer una replicación de datos en caliente entre servidores, una consolidación de datos entre servidores y aplicaciones, etc.

Lo más sorprendente de las funciones remotas es que se pueden ejecutar desde versiones monopuesto contra servidores Velneo, de forma que una aplicación monopuesto puede estar funcionando de forma local, y en el momento en que, por ejemplo se detecte conexión a internet, se proceda al envío de datos al servidor mediante funciones remotas para centralizar datos.

Algunas aplicaciones prácticas de las funciones remotas pueden ser por ejemplo, dentro de la suite de ticketing "reservaentradas", el poder realizar el cuadre de cajas cuando se realiza una venta cruzada, es decir cuando un cine vende una entrada de otro cine, o la replicación en caliente de datos entre servidores para copia de seguridad en tiempo real, o dentro de la suite "GestCem" para la gestión de cementerios, la comunicación de los datos de los difuntos a la web del cementerio.

Rápido, sencillo y potente, como casi todo en Velneo.

viernes, 13 de octubre de 2006

Musicasette Velneo

Vista la proliferación de empresas que están surgiendo alrededor de Velneo, léase empresas formadoras en Velneo, yo también me he decidido a lanzar un "Master en Velneo & Web", y como parte del merchandising del master he editado un interesantísimo material multimedia al respecto.



Los interesados pueden ponerse en contacto conmigo y por un módico precio les haré llegar un ejemplar.

* Hecho a partir de material encontrado en Microsiervos ( Juegos y Diversión )

miércoles, 4 de octubre de 2006

CSS para imprimir

Al respecto del artículo "Informes html en Velneo" han surgido ciertas dudas sobre el uso de css para controlar la impresión de documentos ( tamaño del papel, márgenes, cabecera, pie de página, etc...).

Con el uso de css podemos definir todo ello.

Cuando definimos el css para un sitio web normalmente ponemos

[link href="general.css" rel="stylesheet" type="text/css" /]

pero no olvidemos que existe el selector media.

Con este selector podemos definir el css de un sitio así

[link href="impresion.css" media="print" rel="stylesheet" type="text/css" /]
[link href="general.css" media="screen" rel="stylesheet" type="text/css" /]

con lo cual cuando nuestro documento se vea en pantalla se aplicará el estilo marcado como media="screen", y cuando estemos imprimiendo nuestro documento se estará aplicando el estilo media="print".

Definiendo nuestras reglas css así

@media print [
H1 [ font-size: 10pt ]
]
@media screen [
H1 [ font-size: 12pt ]
]

estamos definiendo un estilo para pantalla y otro para impresión, en este caso cambiando el tamaño de la fuente de los titulares de nivel 1.

Podemos ocultar elementos en cualquiera de los dos casos para que se muestren en la versión en pantalla pero no en la versión impresa y viceversa.

{ visibility: hidden }

Y por ejemplo si queremos insertar saltos depágina controlados en html podemos usar la propiedad page-break.

Si insertamos un

[div style="page-break-after:always"][/div]

en nuestro documento estaremos forzando un salto de página tras este elemento.

He comentado los media print y screen, pero existen muchos otros como aural ( para lectores de voz sintética que te leen la pantalla cuando tienes problemas para visualizarla ), o braille ( cuando lees la pantalla en braille ), handheld ( para dispositivos con pantallas pequeñas o limitaciones de color o ancho de banda ), projection, tty, tv, etc.

Si quereis profundizar más sobre el tema os recomiendo w3c, la página del World Wide Web Consortium en español donde podreis consultar y estudiar las recomendaciones, tendencias y estandares sobre la web que viene.

Tened en cuenta lo siguiente; las normas de cómo es la web no las dicta ningún fabricante de navegadores de internet, las dicta un consorcio internacional de expertos, w3c.

Los fabricantes de navegadores lo que deberían hacer es atenerse a las reglas y hacer que sus navegadores sigan los estándares de w3c, cosa que ninguno de ellos cumple al 100%, pero hacia ahí vamos.

Así que no desarrolleis webs para que se vea bién con este u otro navegador, desarrollad webs que cumplan los estándares y si no se ve bién con el navegador de turno, que se actualice o muera, porque yo personalmente me cambiaría a otro navegador que sí cumpla los estándares.

martes, 3 de octubre de 2006

Informes html en Velneo

En el foro de Velneo se ven muchas consultas acerca de cómo hacer informes complejos que muestren información de varias tablas, incluyendo fotos, textos largos que se partan por páginas, saltos de página controlados y multitud de cosas que con un informe tradicional de Velneo no se pueden hacer o si se pueden hacer es a base de "astucias".

Bién, yo siempre comento en esos hilos "Y por qué no haces un informe html?"

Veamos un ejemplo práctico y sencillo.

Supongamos que en una aplicación de gestión de clubes de campo tenemos un menú formulario con un selector de fecha, un casillero de secciones ( spa, gimnasio, piscina, bodega, etc... ), un casillero de instalaciones ( relax room, sun bed room, hydrobath, tenis1, tenis2, padel1, padel2, etc... ), un casillero con las horas del día en periodos de media hora, y otro casillero para mostrar el plannig ( ocupación de cada recurso por hora del día ).





La información de este planning se guarda en una sola tabla PLANNING, por ejemplo.

Al usuario de la aplicación le encanta este menú lleno de controles sincronizados que le muestra el planning de ocupación de sus instalaciones.

Le gusta tanto que pide "Ahora lo quiero imprimir".

Cómo hacemos un informe como este? O recurrimos a "astucias", tablas temporales en memoria que rellenamos para el caso, etc, o hacemos un informe html.

En este caso vamos a poner un hermoso botón "Imprimir" en el menú.

El botón ejecuta un proceso sin origen y accesible web que añade retorno url la dirección fGetWebAplicacion() + INFORME-WEB.PRO

El proceso INFORME-WEB monta el informe html en base a componentes html.

En el proceso necesitamos varios componentes html, veamos cuales:

1.- Un componente1 para inicializar la página con el IMPRESCINDIBLE doctype, la apertura del html, la apertura del head, los metas, el cierre del head, la apertura del body, y el inicio de una tabla 100% de ancho y alto que contrendrá el resto de la página.

2.- Un componente2 que muestra la fecha del plannig.

3.- Un componente3 que muestra la instalación.

4.- Un componente4 que muestra un tramo horario ( de 08:00 a 08:30, por ejemplo ).

5.- Un componente5 que muestra la ocupación ( cliente, motivo de la visita o servicio a prestar y empleado que lo realizará, por ejemplo ).

6.- Un componente6 para saltar a la siguiente fila de la tabla general.

7.- Un componente7 que cierre la tabla, el body y el html por este orden.

Ahora el proceso lo que va a hacer es lo siguiente:

1.- Inicializar las variables locales pagina y tramo a "". Estas variables las utilizaremos para ir componiendo la página de la siguiente forma, la ejecución de un componente html la guardamos en el tramo, y la pagina es la pagina más el tramo.

2.- Iniciamos la página ejecutando el componente1.

3.- Ejecutamos el componente2 al que le pasamos el parámetro fecha_del_plannig.

4.- Cargamos la lista PLANNING, ordenamos por el campo INSTALACION, multipartimos la lista por INSTALACION y ejecutamos el componente3. Esto nos genera la fila encabezado de la tabla con las diferentes instalaciones.

5.- Ejecutamos el componente6 para pasar a la siguiente fila.

6.- Cargamos la lista PLANNING, ordenamos por TRAMO-HORARIO, multipartimos la lista por TRAMO-HORARIO, ejecutamos el componente4, seleccionamos ficha por posición 1, la leemos y guardamos la HORA, cargamos la lista PLANNING por el índice HORA resolviendola, ordenamos por INSTALACION, multipartimos por INSTALACION, ejecutamos el componente5 y luego el componente6.

Así hemos compuesto una fila con el tramo horario y luego la ocupación en ese tramo horario por cada una de las instalaciones de la cabecera de la tabla.

Esta fila se repite por cada tramo horario.

7.- Ejecutamos el componente7.

8.- Añadimos retorno texto la variable local pagina.





Y con esto ya tenemos un informe html que siempre se previsualiza antes de imprimir aunque se lanza desde proceso.


El informe html como página web que es, no tiene longitud, es tan larga como queramos, y los saltos de página los gestiona al imprimir el navegador, aunque podemos forzarlos mediante css.

Si tu cliente tiene una aplicación Velneo, tiene un navegador de aplicaciones y conjuntamente un navegador web para ver e imprimir estos informes.

La desventaja de este tipo de informes: se ejecutan en C/S, porque son web.