jun 19

Oferta en funciones: 3 x 1

Estamos de oferta señoras y señores, …

vamos, que me las quitan de las manos, …

Ya solo me quedan 3, lleveselas y pague solo una.

Antes de comprar una oferta, deberiamos saber los que compramos, ¿no?

¿Qué es una función?

En la programación tradicional, en los lenguajes de 3 generación, una función es una porción de código que se separa del resto con el fin de abstraer la programación y evitar usar el mismo código de forma repetitiva. Es decir, si tengo que usar el mismo código en diferentes partes de una aplicación, creamos una función y llamamos a esa función cada vez que la necesitemos.

En Velneo V7, como en el resto de herramientas, tenemos 2 tipos de funciones:

  1. Funciones predefinidas, que son las que incluye la propia herramienta para las tareas más básicas:
    • round()
    • len()
    • choose()
    • currentDate()
    • etc…
  2. Funciones definidas por el usuario, que son aquellas que podemos definir nosotros mediante porciones de código o comandos de instrucción (igual que el usado en los procesos)
    • FUN_USER(param1,param2)

Y en este artículo nos centraremos en las funciones definidas por el usuario y debemos tener claras algunas consideraciones:

  • Las funciones hacen uso de los parámetros y podemos definir funciones que tengan hasta un máximo de 10 parámetros, aunque también podemos definir funciones que no necesitan ningún parámetro
  • El código de una función es el mismo que el usado en los procesos, y en algunos casos, seremos nosotros mismos, los que tengamos que decidir si realizamos una determinada tarea mediante una función o un proceso, ¿qué es mejor?
  • La función retorna un único valor, como resultado de ejecutar el código de la misma.

Ahora que ya hemos aclarado para que sirve una función y como debemos usarla, vamos a plantear el problema, o mejor dicho, los problemas que se nos presentan:

  1. Resulta que, con la salida de la versión 7.10 de Velneo V7, y la posibilidad de crear fórmulas y procesos JavaScript, he caido en la cuenta de que me falta algo, ¿dónde estan las funciones JavaScript?, tenemos fórmulas, tenemos procesos, pero no tenemos funciones.
    • El caso, es que despues de comentarlo con soporte, y de llegar a la conclusión de que no hay una solución clara a este problema que parece ser bastante complejo, y no tendrá solución viable a corto plazo, se me ocurre la siguiente solución, en la que afortunadamente, coindidimos con la respuesta de soporte:
    • No podemos crear funciones en JavaScript, pero hay que ser positivo y ver lo que si podemos hacer. Podemos crear un proceso JavaScript y llamar al proceso desde una función. No es la solución ideal, pero ¡es una solución!.
  2. Luego, de esta pequeña charla, cai en la cuenta de que podiamos llevar esta solución un poco mas alla, y de paso, solucionar el 2º problema. ¡No podemos ejecutar funciones en 3º plano!
    • ¿Cómo que no?, si ya hemos visto, que podemos llamar al proceso desde una función, esta misma solución nos vale para ejecutar las funciones en 3º plano. Para esto, solo hay que crear la función, y del mismo modo, llamamos a un proceso mediante el Manejador de objetos y disparamos el proceso en 3º plano. ¡Otro problema solucionado!
  3. Pero no acaba ahi la cosa, ya que uno de los problemas principales, para el cual se requeria el uso de funciones JavaScript, era poder usarlas desde contenidos iniciales en las fómulas de los campos.
    • Asi que, despues de lo dicho anteriormente, ya deberiais saber la solución. ¡Si!, crear una función que llame a un proceso en V7 o JavaScript, eso ahora da igual. Lo que importa es que con esta solución, en realidad, lo que hacemos es conseguir ejecutar procesos en los contenidos iniciales, que por definición, tampoco es posible. Te lo repito: “Si necesitas ejecutar un proceso desde un contenido inicial, ¡ya es posible!”

De esta forma, y con una única solución, estamos resolviendo 3 problemas que se nos pueden presentar con frecuencia.

Si necesitas ayuda para cualquier proyecto, seguro que podremos llegar a algún acuerdo. Aqui estan mis datos de contacto:

http://www.ascsl.com/about/

Create PDF    Enviar artculo en formato PDF   
comments: 2 »
jun 14

Consejos para mejorar el desarrollo en la nube

Posted in programacion, tutores

Antes de iniciar este artículo, quiero agradecer enormemente a Filipe sus aportaciones al foro, que sin duda, nunca pasan desapercibidas, como la de este hilo del foro:

http://velneo.es/foros/topic/lentitud-en-aplicaciones-cloud/

Asi pues, como se indica en el propio hilo, he pensado que hacer un recopilatorio de todas las buenas ideas que mejoran la experiencia de programación en la nube.

Y porque en la nube y no en local, si para Velneo V7, es igual, puede trabajar exactamente igual en local que en la nube.

Pero en realidad, ¡NO!, no es lo mismo:

  • Si la aplicacion la desarrollamos en local, y funciona bien. Es posible que cuando la instalemos en la nube, sea un petardo y vaya como el culo. Lo siento por la expresión “vaya como el culo” pero debes reconocer que es descriptiva del sentimiento que pretendo transmitir.
  • Sin embargo, si la aplicación la desarrollamos en la nube y funciona bien. Entonces, no de bemos preocuparnos, porque cuando la ejecutemos en local, funcionara “que te cagas” :) . Tambien siento esta expresión, pero a que también te has emocionado.

Partiendo de este, como primer consejo para empezar a desarrollar con Velneo V7 y conseguir un resultado decente, aqui dejo algunos consejos:

  1. Evita las funciones, si puedes usar un proceso lanzado desde un manejador de objetos, usa el manejador (También te permite enviar parámetros).
  2. Las tablas en memória son lentas comparadas con v6 (evitar siempre que se pueda). Como ejemplo te digo que en una de las pruebas que hice, en el on-init de un formulario llamava a una función, entre devolver un contenido estático y devolver un dato de una tabla en memória la diferencia es abismal.
  3. En la mayoria de los casos ganamos velocidad si las búsquedas y/o cargar listas las lanzamos con el manejador de objetos en el servidor (Hay que tener cuidado, para no saturar el servidor con demasiadas tareas, si es solo consulta en principio no hay problema).
  4. Evitar al máximo poner en las condiciones de activo y visibilidad de objectos, funciones. Estas condiciones se evaluan varias veces al iniciar el formulario, y siempre que se ejecuta un evento del formulario o que este se refresca.
  5. Evitar siempre que posible el uso de variables globales. Con la funcionalidad del manejador de objectos para pasar parametros a búsquedas, procesos, etc, ganamos mucha velocidad y no necesitamos para nada de las variables globales. Normalmente solo necesito de dos o tres variables globales por aplicación (EJ: Id de usuario logeado, etc.)
  6. En las rejillas por defecto no listar datos, solo cuando se pincha en buscar (personalmente a mi no me gusta demasiado, parece que no hay datos, pero siempre podremos cortar la lista para que solo nos devuelve un numero x de resultados, así no quedamos con la sensación de que no existen datos). Esto incrementa mucho la velocidad de la aplicación. Ten en cuenta que si abres un formularios con sub-formularios y cada sub-formulario tiene su rejilla, al abrir el formulario hay que cargar todos las listas de todos los subformularios. (Si no está visible la rejilla, los datos los siguen cargando)
  7. Limitar el uso de CSS. El uso excesivo de CSS en las aplicaciones, hacen que estas sean más lentas, principalmente si estos datos los recoje de una tabla o usa información de una tabla, dá igual que sea en memória o en disco.
  8. Evitar guardar en las tablas imagenes. Yo opté por guardar las imagenes externamente, y genero de forma automática una miniatura de la imagen de muy reducida dimensión solo para poder presentarlas en las rejillas, en los formularios las visualizo usando html.
  9. Cuidado con el tamaño de las imagenes que creamos de manera estática en el vdeveloper, intentar al maximo optimizar su tamaño.

Ahora que ya hemos descrito cada uno de ellos, y tenemos la teoría, nos queda la sensación de que nos falta algo. ¿Cómo poner en práctica estos consejos?

  • Para el punto nº 6, tenemos otro ejemplo perfecto y origen de una buena técnica de progamación en el blog de nuestro amigo Nacho: Optimizando rejillas

Ademas de todos estos consejos de Filipe, voy a recordar algunos consejos que muchos conocemos pero que son importantes para todos los que llegan a V7 .

  1. Si puedes hacerlo en el proyecto de datos, y concretamente en la estructura de tablas, hazlo. Asi es, cualquier cosa que puedas hacer en la estructura de la base de datos, siempre mejora el rendimiento y ahorra muchas horas de programación, por ejemplo: contenidos iniciales en los campos, actualizaciones, eventos de tabla.
  2. Parece muy obvio, pero a veces olvidamos que los “Filtros” están para no usarlos. Evitalos siempre que puedas, y cuando no tengas mas remedio que usarlos, evitalos también.
  3. Usa siempre el “Alternador de listas” siempre que sea posible, ya que tiene muchas ventajas y pocos inconvenientes, que también los tiene. Aqui tienes más información sobre el Alternador.
  4. Ahora tenemos “Constantes”, usalas porque permiten una programación limpia y abstracta. Aqui explico algunas de mis razones: ¡Ser constante es bueno!
  5. vDiseño es una buena base para adoptar en las aplicaciones, principalmente por una razón: es mas fácil de entender el código cuando trabajas con aplicaciones de otros desarrolladores.
  6. Siguiendo un consejo de un amigo, “la simplicidad, es la complejidad absoluta“. Hazle caso, la vida ya es bastante complicada, no la compliques más todavia. Las cosas sencillas funcionan mejor, y es cierto, son mas dificiles de programar, pero el resultado es optimo para el usuario.
  7. Un consejo mio: “pierde unas horas o dias en analizar la aplicación y ahorrarás dias o meses en soporte y correción de errores”. Un buen análisis es tan importante o más, que la estética de la interfaz. La interfaz vende, pero es el chasis de nuestra aplicación quien soportará todos los golpes.
  8. No tengas miedo al fracaso. Para estar seguro de habler logrado un éxito, debes haber fracasado en varias ocasiones. Imagina que en tu primer intento, logras que todo funcione correctamente, si te das por satisfecho, nunca podrás estar seguro de haber conseguido el resultado ideal. Seguramente ese resultado podría mejorarse.
  9. QML y vJavaScript son la caña, pero no son la solución a todos los problemas. No abuses de estas herramientas, porque son para lo que son, para sacarnos de los apuros, no para convertirlas en el pan nuestro de cada dia.
  10. Si no tienes experiencia con una herramienta de desarrollo, la solución no esta en correr para adquirirla. Tomalo con calma, y externaliza tus proyectos mientras adquieres dicha experiencia. Despues de haber colaborado con muchos desarrolladores que usan Velneo para sus desarrollos, sólo espero que hayan quedado satisfechos con el trabajo realizado.

Y desde aqui, tambien quiero decir que estoy totalmente de acuerdo con Filipe, Roberto Blasco, Adelo Herrero y otros en algunas cuestiones. Por mas que nos empeñemos, Velneo V7 no es la solución para todo, y si probamos a unir V7 con otras herramientas, la potencia que adquirimos en los resultados es inmejorable.

  • Para la web, nada como Velneo V7 + vModApache + PHP
  • Para mobilidad, Velneo V7 + Android / iOS

Aunque algunas veces, también hay que reinventar la rueda 😉

P.D. Se agradece cualquier aportación que pueda ayudarnos a mejorar, estas invitado a compartir tus experiencias.

PDF Download    Enviar artculo en formato PDF   
comments: 3 »
may 30

Herramientas y servicios asociados

Una buena aplicación no es solo un programa que funciona bien.

Para tener una buena aplicación hay que rodearla de un conjunto de herramientas y servicios para dar valor añadido, porque a fin de cuentas, lo que deseamos conseguir, no es que se hable bien de nuestro programa, lo que deberiamos conseguir es que se hable bien de nuestra empresa y el programa sea solo una de sus estrellas destacadas.

Para ello, si observamos a los mejores, necesitamos:

  • un buen manual, es imprescindible para el aprendizaje de las aplicaciones, y si es posible, complementarlo con videos de aprendizaje
  • una web, organizada y seria, pero no aburrida.
  • un blog, donde poder comunicar las noticias mas destacadas y mantener una información actualizada.
  • una buena base de conocimiento, donde solucionar las dudas mas frecuentes.
  • un foro, donde permitir el intercambio de opiniones entre los usuarios de nuestras aplicaciones.
  • una herramienta de control de bugs e incidencias, para solucionar los problemas conocidos y reportados.
  • una herramienta de soporte, donde recibir las dudas y comunicados de los usuarios.
  • un foro de ideas, tambien nos ayudará a saber directamente cuales son las necesidades mas demandadas por nuestros usuarios.
  • un roadmap, dónde los usuarios puedan estar informados de las próximas novedades, evitando duplicidades con el foro de ideas.
  • y formación y talleres adicionales.

Todo esto, nos da una información directa que debemos saber digerir para usar en nuestro favor y mejorar el producto en base a las decisiones tomadas analizando toda la información recibida.

Pero si sabemos leer los indicadores, hay mucha mas información que tambien podemos aprovechar para mejorar:

  • Aquellas preguntas que se repiten una y otra vez en soporte, nos indican donde debemos mejorar la documentación.
  • Cuando los errores que comenten los usuarios, son reincidentes, debemos tratar de mejorar esa funcionalidad para que no se produzcan o minimizar sus efectos.
  • Las opiniones de los comentarios del blog son buenos indicadores de como se realiza el trabajo, aunque siempre habra alguien que no esté de acuerdo, debemos tenerlos todos en cuenta, y los negativos, mucho más, pues nos ayudaran a mejorar.

Pero, y lo que no se dice, lo que no se pregunta, o lo que no se comenta, ¿qué pasa?

Esta información tambien es importante, porque cuando una funcionalidad de una aplicación, no se comenta o nadie pregunta, puede deberse a 2 motivos fundamentales:

  1. No se usa, y por tanto habria que decidir si realmente interesa mantenerla operativa o seria necesario prescindir de ella.
  2. Funciona, se usa y pasa desapercibida, precisamente gracias a su buen funcionamiento. En este caso, deberiamos tomar buena nota, pues quizá sea un buen argumento de venta de nuestra aplicación.

Ahora, solo nos quedaría tener una buena estrategia de precios, pero eso, no es un tema que debamos tocar hoy, 😉

PDF Download    Enviar artculo en formato PDF   
comments: 2 »
may 18

¿Funciones o procesos?

Hace algún tiempo que escribi un artículo, en principio, estaba destinado a eliminar lo que en apariencia era una limitación de las funciones en V7 (sólo permiten 10 parámetros máximo): Parámetros en funciones de V7

De paso, porque no decirlo, ya que habiamos eliminado la barrera de los 10 parámetros, y con la misma solución que se usaba para aumentar la entrada, podiamos aumentar la salida, que como sabemos, todas las funciones retornan unicamente un valor.

Pero cosas de la vida, cuando surge un problema, con paciencia y un poquito de estudio, tambien surge la solución. Y la solución tambien puede venir de mano de lo que se esta convirtiendo en la solución para todo, el manejador de objetos.

Para aquellos que aun no lo han utilizado, solo tengo que decir, que si bien puede generar algo más de trabajo de lo habitual al principio y quizá algo mas de complejidad por la falta de costumbre, en su favor, tiene solo una cosa: que sirve para todo.

Veamos un ejemplo:

Necesitamos una función para realizar una tarea, y debemos pasarle 15 o 20 parametros, y por si fuera poco, el resultado de la función, deberia retornar 3 valores diferentes.

Tal y como comentabamos en el articulo anterior, necesitariamos unir varios valores en una cadena y pasar las cadenas a la función, después, ya dentro de la función, parsear las cadenas para separar los parámetros y ejecutar el resto de la función, y al finalizar, volver a unir los resultados para retornar una cadena con todos los valores, y ya fuera de la función, volver a parsear la cadena para obtener cada uno de los resultados. Vamos, un pequeño lio, de hecho, no se si me he liado al explicarlo, espero no haberlo complicado demasiado.

Ahora veamos como resolverlo con el manejador de objetos:

Con el manejador de objetos, creamos un proceso, similar a la función, que realiza la misma tarea, y para ejecutar el proceso y enviar los parametros:

Crear manejador de objeto( hPro , PROCESO )

Set variable local de objeto ( hPro, VAR_1, #CAMPO_1 )

Set variable local de objeto ( hPro, VAR_2, #CAMPO_2 )

Set variable local de objeto ( hPro, VAR_3, #CAMPO_3 )

Set variable local de objeto ( hPro, VAR_4, #CAMPO_4 )

Set variable local de objeto ( hPro, VAR_5, #CAMPO_5 )

Disparar objeto ( hPro , 1º  2º o 3º plano a elegir )

Get variable local de objeto ( hPro , VALOR_1 , RET_1 )

Get variable local de objeto ( hPro , VALOR_2 , RET_2 )

Get variable local de objeto ( hPro , VALOR_3 , RET_3 )

Como podemos observar, podemos pasar tantos parámetros como lineas SET quieras incluir, y del mismo modo, podemos obtener tantos valores como sean necesarios, mediante la sentencia GET. Y sólo un detalle, no olvideis que la sentencia GET no debe ir anidada dentro de la sentencia “Disparar objeto”

Create PDF    Enviar artculo en formato PDF   
comments: 2 »
abr 26

Migración de V6 a V7

Posted in analisis, programacion

Otro de los problemas más importantes con los que se encuentran los desarrolladores que quieren adoptar la plataforma de Velneo V7 y tienen funcionando varias aplicaciones en la versión 6.x, es la migración.

Durante mucho tiempo hemos pedido a Velneo, que nos proporcionara una herramienta para migrar las aplicaciones de V6 a V7, de forma rápida, sencilla y eficiente, pero eso no ha sido posible ¡hasta ahora!.

Si, digo bién, ¡hasta ahora!

Porque durante mucho tiempo he estado preparando dicha herramienta, y a fecha de hoy, puedo asegurar que esta preparada y funciona.

Con ella podemos migrar estructuras de datos, procesos, formularios, rejillas, busquedas, y casi cualquier objeto existente en V6.

El resultado es impresionante, tras unos retoques estéticos, la aplicación esta migrada y lista para ejecutar.

Esta herramienta, en la que llevo trabajando ya casi 4 años, a visto la luz hace poco tiempo, y ya la hemos probado con 2 aplicaciones de V6 que han sido migradas con exito, sin tener en cuenta las pruebas realizadas internamente con nuestras aplicaciones anteriores.

La herramienta por supuesto, no está a la venta, ya que tanto esfuerzo, como podreis comprender, hay que amortizarlo, pero si que puedo ayudaros a migrar cualquiera de vuestras aplicaciones. ¡Solo teneis que pedir presupuesto, sin compromiso!

Si no lo crees, ponte en contacto:

  • email: jose@ascsl.com
  • skype: jose.luis634
  • móvil: 637.436.425

No olvideis, que a partir de aqui, vuestra aplicación tendrá toda la funcionalidad de V7:

  • Multiplataforma: Windows, Linux, Mac y Android
  • VServers locales o en cloud, y posibilidad de trabajar sin Terminal Server
  • Mejora de interfaz de usuario
  • Ejecución desde los principales navegadores web
  • vServer como servicio
  • y muchas mas …
Create PDF    Enviar artculo en formato PDF   
comments: 6 »
ene 22

Y que necesito para empezar?

Pues para empezar a programar con Velneo V7,

Puedes comprar este maravilloso libro :) y comenzar con el ejercicio que se plantea de inicio a fin: “Cambia el chip con Velneo V7“, es un buen comienzo, ya que en el se explican todos los pasos a seguir para desarrollar una sencilla aplicación desde cero.

También debes ayudarte con la documentación oficial que puedes descargar de la zona info, en Velneo.es. En esta página, también encontraras tutores y Open Apps (aplicaciones de código abierto) que podrás usar durante el aprendizaje.

Puedes asistir a los cursos oficiales de Velneo, que se realizan varias veces al año y en diferentes ciudades de España.

Y por supuesto, estamos a tu disposición para cualquier cosa que necesites:

  • Formación, como desarrollador certificado de Velneo V7, en la primera promoción (en nov-2011)
  • Consultoria, para el análisis de la aplicación.
  • Programación, para llevar a cabo el proyecto con el mejor resultado y en el menor tiempo posible.

Y si no te quieres complicar demasiado la vida, también tenemos la posibilidad de que empieces a trabajar desde el primer dia con aplicaciones en producción.

Asi que no lo dudes, realiza tu consulta, indicanos las necesidades que tienes y te ofreceremos el producto que mas te convenga en cada caso.

Sólo tienes que ponerte en contacto: jose@ascsl.com

PDF    Enviar artculo en formato PDF   
comments: 3 »
ene 19

Antes de correr, aprende a andar

Posted in programacion

Uno de los grandes problemas que veo en muchas ocasiones, es como se cometen atrocidades, y algún comentario del tipo:

Soy nuevo, tengo poca experiencia con la herramienta.

Y tras esa breve introducción/presentación, realiza una sencilla pregunta:

¿Como puedo enlazar una tabla maestra a otra tabla para llevar un histórico de operaciones?

Y hasta aqui todo es normal, son dudas razonables que pueden presentarse a cualquiera que se inicia con una herramienta de desarrollo que desconoce.

Pero luego aclara,

Es que me han encargado un proyecto para gestionar la torre de control de lanzamientos de la NASA en Cabo Cañaveral, y debo tenerlo acabado para el lanzamiento del transbordador previsto para el próximo Domingo a las 16:00 GMT+1

Y aqui es donde se me caen los palos del chozo, :(

Ante un mensaje de este tipo, la verdad, uno no sabe que responder.

Yo mismo, que no me considero torpe, pero tampoco me considero un “crack”, ya no recuerdo cuanto tardé en aprender a usar esto de Velneo (Velazquez Visual), no se, unas cuantas semanas, o quizá algunos meses, pero y cito textualmente, tras iniciarme en la herramienta (por mi cuenta, es cierto) y aprender a manejar y adquirir algo de soltura con el antiguo Editor de mapas, y comenzar a crear pequeños proyectos para familiarizarme con todo un sistema nuevo que nada tenia que ver con lo que hasta entonces habia usado (lenguajes de 3 generación), pues eso, tras varios meses no dudé en asistir a un curso de formación (impartido por el propio vArquitecto, :) )

En V7 es más complicado incluso, o al menos yo lo veo asi, será quizá porque venimos de V6 y el cambio es importante y más dificil de lo que en un principio parece.

Si bien el modelo (la estructura de la base de datos) no ha cambiado mucho, salvo por la nueva funcionalidad de la herencia que nos permite modularizar y reaprovechar gran parte de los proyectos para otras aplicaciónes, cuando inicias la aventura de los proyectos de aplicación, el mundo se te cae a los pies, cuando empiezas a ver como nada de lo que haces funciona, cosas que funcionaban perfectamente en V6, ahora no sirven para nada, y no es asi, no es que los procesos o los eventos no funcionen, es que V7 es diferente, y hay que volver a “Cambiar el chip” y hacer las cosas de otra forma.

Y esto no es una critica a V7, al compararla a V6, todo lo contrario, se trata de un elogio ya que a pesar de que ese cambio de chip merece un gran esfuerzo, todo sigue una lógica que convence cuando empiezas a entenderla.

Y a pesar de nuestro desconocimiento, nos metemos en berenjenales de los que luego nos cuesta salir airosos.

Creo pues que hay tener las cosas claras desde el principio y seguir un orden si queremos desarrollar una aplicación con éxito:

  1. Aprender a usar la herramienta, practicando con pequeños desarrollos orientados a nuestro principal objetivo.
  2. Formarse en profundidad realizando cursos y seminarios que puedan esclarecernos las ideas.
  3. Dedicación, prácticas y muchas horas de trabajo para consolidar los conocimientos y descubrir las posibilidades y carencias,
  4. Tener un poco de ayuda nunca viene mal, 😉
  5. Si has realizado un cálculo de 3 meses para acabar un proyecto, piensa que con un poco de suerte, quizá en 6 meses lo tengas realizado en un 90%, y el 10% restante, quizá en unos años.
  6. Y sobre todo, si vas a realizar una aplicación, no esta demás conocer el funcionamiento y la operativa del sector al que va destinada la aplicación.

Aunque el verdadero éxito solo podremos saborearlo cuando los usuarios finales decidan usar nuestras aplicaciones y valoren positivamente el resultado.

Si a pesar de no haber seguido estos consejos, has sido capaz de salir airoso de algún berenjenal similar al expuesto aquí, entonces,

¡¡¡Tú si que eres un CRACK!!!

Create PDF    Enviar artculo en formato PDF   
comments: 1 »
nov 11

Por fin: LIS2011!

Posted in programacion

Ha llegado el momento, y lo único que puedo decir es, que ahora mismo no estoy operativo, estoy en ¡Life is soft 2011!

Estoy aqui:

Si no has podido venir antes, ahora ya es tarde, pero siempre puedes intentarlo para el próximo año, pero no lo dejes todo para el último dia.

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Por fin: LIS2011!
oct 11

Prescindiendo de las variables globales

Posted in foro, programacion

Seguimos con la segunda parte de: ¡Las variables globales son prescindibles?

Claro que se podía mejorar el ejemplo: ¿cómo?

En V7 tenemos un nuevo subobjeto que no se valora lo suficiente, un objeto que dejamos marginado y que en ocasiones usamos, porque no queda mas remedio, la “Variable Local”.

Y es cierto, cuando creamos un Proceso, Evento o Función, no queda más remedio que usarlo, porque las “Variables locales” se van creando a medida que introducimos las sentencias. En condiciones normales, puede ser que incluso funcionen correctamente.

Pero ahora disponemos de “Variables locales” en objetos como la búsqueda, que pueden ser utilizadas en las Condiciones de los índices e incluso como Contenido para realizar la búsqueda por “Parte izquierda” o “Entre limites” de cada componente.

Asi pues, vamos a realizar el mismo ejemplo de ayer, pero esta vez, sin Variables globales:

Creamos una búsqueda, con los mismos componentes que en el ejemplo anterior, y usando los mismos índices: un componente EJE, usando el índice EJE (del campo #EJE de la tabla).

En la búsqueda creamos una variable EJER (numérica), y la utilizamos como Parte izquierda para la resolución del índice.

Y desde el proceso o evento que ejecuta la búsqueda, creamos un manejador de objeto con la búsqueda, asignamos el valor a la(s) variable(s) local(es) y finalizamos Disparando el manejador de objeto , obteniendo como resultado una lista de registros correspondiente a la tabla de la búsqueda.

El resultado debe ser, en el peor de los casos, el mismo que en el ejemplo anterior, con la variable global.

Pero he dicho, en el peor de los casos, porque aunque la lista de registros obtenida va a ser exactamente la misma, el tiempo empleado en realizar la consulta será considearblemente menor, claro dependiendo de cuantos registros tengamos almacenados en dicha tabla.

PDF Printer    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Prescindiendo de las variables globales
oct 10

¡Las variables globales son prescindibles?

¿Pregunta? o ¡Afirmación!, he ahí la cuestión …

Asi es, otra de tantas decisiones que hay que tomar, y que YO mismo, como muchos otros, sobre todo de los que aprendimos con versiones anteriores de Velneo, hemos usado (y abusado) de ellas.

V7 es otra cosa, y a veces, nos empeñamos en decir que algo no funciona cuando en realidad somos nosotros los que hacemos un mal uso, o uso incorrecto de los elementos que tenemos a nuestar disposición, y uno de ellos es la Variable global.

Y ya puestos, el título del post incita a cuestionar si el uso de las Variables globales es recomendable o no. Y cada uno tendrá su propia respuesta y estara en la certeza de que sus aplicaciones son las mejores que hay y que todo lo que hace lo hace bien, igual que yo, por supuesto. No estaba criticando a nadie, yo me incluyo en ese paquete.

Pero es bueno reconocer cuando uno se equivoca, porque ello nos permite mejorar y poner los medios para evitar esa y otras equivocaciones similares en el futuro.

La respuesta a esa Pregunta/Afirmación es, por mi parte, una rotunda ¡AFIRMACIÓN!, que voy a escenificar con un sencillo ejemplo, que me temo, somos muchos los que hemos abusado de el (aunque solo puedo confirmar mi experiencia).

Tenemos una variable global “$BC_EJERCICIO@proyecto.dat” y como era costumbre adquirida, al cambiar a V7, esa costumbre paso a ser “un vicio”, y lejos de preguntarnos si era la forma correcta de hacerlo, la usamos y nos autoconvencimos de que debia ser asi.

Tenemos una Búsqueda de la tabla “Facturas”, que es, multiejercico, para este ejemplo, y en la búsqueda usamos un Índice por el campo #BC_EJERCICIO (Ejercicio) para mostrar unicamente las facturas del ejercicio actual.

A la búsqueda le incluimos un componente por el Índice “BC_EJERCICIO”, correposdiente al campo #BC_EJERCICIO, con resolución de la “Parte izquierda” y en el contenido, le indicamos directamente la Variable global: $BC_EJERCICIO@proyecto.dat


Y como realizamos el ejemplo:

Desde un proceso o evento, asignamos el valor a la variable global, lanzamos la búsqueda y retornamos la lista a la salida.

Hasta aqui todo es correcto, y el ejemplo debe funcionar bien.

Pero, …. ¿se puede mejorar el ejemplo?

Pues claro que se puede, piensa en ello y mañana tendremos la solución …

PDF Creator    Enviar artculo en formato PDF   
comments: 1 »