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/

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    Enviar artculo en formato PDF   
comments: 3 »
jun 13

¡Estreno! próximamente …

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

vamos, que me las quitan de las manos, …

sólo me quedan 3,

lleveselas y pague solo una.

¡¡¡tatatachan!!!

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en ¡Estreno! próximamente …
jun 7

RAD y ¡que sea lo que dios quiera!

Posted in analisis, off topic

Coincidiendo con la salida al blog del último articulo publicado por Jesús Arboleya: “Desarrollo rápido de aplicaciones” voy a hacer balance de lo que se nos pide, y sin querer desmerecer su artículo que es muy bueno y todo lo que comenta es cierto, voy a entrar en valorar otras cuestiones, que a veces parecen pasar desapercibidas, sobre todo para el cliente, que es a fin de cuentas, quien suelta la “pasta”.

Cuando hablamos de una herramienta de desarrollo rápido (R.A.D. para los geeks y “¡esto esta chupao pa ti!, en diez minutos lo tienes” para los clientes habituales) y me voy a centrar en este último comentario, el cliente final cree, o le interesa creer que en 10 min. vas a hacer lo mismo que otros programadores hacen en 3 semanas, y quizá sea cierto, o no, segun desde el angulo que se mire:

Miremoslo desde el ángulo “cliente/usuario final”:

Quiere que el trabajo este terminado en 10 min. por varias razones:

  1. La más importante, el coste, que ya cuando abre la boca, quiere que le cobres solo los 10 min. que vas a estar trabajando en los cambios que solicita el cliente.
  2. La urgencia, las prisas por tener realizado el trabajo en 10 min. que luego se va a quedar en un cajón durante 3 o 6 meses, y que al final se descubre el pastel cuando te llama (6 meses despues), ¿cómo funcionaba la opción que me pusiste para …? (ese es el momento en que te acuerdas de parte de su familia, aunque no tenga la culpa)
  3. La exclusividad, porque el cliente, no tiene en cuenta que no está solo, o le importa un pimiento. El quiere ser el primero porque tiene preferencia sobre los demás y además hay que hacerle ver, que cuando el silva, nosotros acudimos como perrillos falderos a ver dónde nos suelta la pelotita.
  4. La ignorancia, y no pretendo insultar al cliente, sino aclarar que no solemos conocer los métodos para realizar el trabajo de los demas, y aún asi, nos atrevemos a valorar su trabajo, quitando el mérito a esta labor siempre que sea posible. Porque si desmerecemos su trabajo, no lleva directamente al punto 1, que es a fin de cuentas, conseguir un precio más barato del producto o servicio.

Miremoslo desde el ángulo “empresario/jefe”:

Otro que tal baila, que lo quiere también en 10 min.

  1. Porque el cliente, le exige que sea rápido, y quiere tener contento al cliente, que es quién le paga. Aunque en realidad, es el empleado el que le permite conseguir esos ingresos por parte del cliente.
  2. Porque el comercial, que no tiene conocimientos técnicos, le ha vendido la moto al cliente, y el desarrollador tiene que comerse los marrones que le traen los comerciales, y como al jefe no le atañe, les pasa la pelota de unos a otros pero quiere el objetivo cumplido, y el cliente atendido para poder cobrar.
  3. Porque si hoy eres capaz de hacerlo en 10 min. mañana te enviaré el doble de trabajo y te pediré que lo tengas en 5 min. y si te ves muy apurado de tiempo, ¡no pestañees! y respira antes de entrar a trabajar, ¡ya volveras a respirar al salir! Y espabila, no sea que te lleves tarea para casa.

Miremoslo desde ¡MI! ángulo:

¿Es posible realizar el trabajo en 10 min?

Quizá, pero para empezar a trabajar a que poner en marcha las maquinas y eso tiene un coste.

  • La semana pasada me llamo un cliente para solucionar un problema en una aplicación que no modificaba desde hace 6 años. Para comprobar su error, en lo que realmente tarde 10 min., tuve que perder casi 1 hora y media en buscar la copia del programa que tenia instalada, porque no hablamos del mes pasado, hablamos de 6 años. Y considero que soy organizado y tarde muy poco en encontrarla e instalar de nuevo la aplicación para realizar las pruebas.

¿Cuando alguién te llama para que pulses un botón?

  • Si, asi es, hay veces que te llaman para pulsar un botón, porque el cliente no recuerda bien como funcionaba, y no quiere equivocarse (lo cual le honra), es preferible llamar para que seas tu el que te equivocas y echarte las culpas (lo cual no le honra). Pero sea cual sea el motivo, para pulsar el botón, has tenido que ir a su oficina (a 20 min. de distancia), tener la charla correspondiente con el encargado (15 min.), pulsar el botón (menos de 1), explicarles la operación y despedirte (30 min.) y volver a la oficina (otros 20 min.)

El caso, es que, como trabajamos con herramientas R.A.D. , ¡todo hay que hacerlo en 10!

La realidad es que hay muy pocos que saben entender lo que realmente vale este trabajo, y a esos pocos quiero agradecer desde aqui ese reconocimiento ;).

Porque lo que hay que empezar a entender, no es que Velneo V7 es muy rapido y hace las cosas en 10 min. , que es cierto y tiene mucho mérito, lo que debemos empezar a entender es que, para hacer un desarrollo robusto y fiable:

  1. Apago el ordenador.
  2. Libreta y boli en mano, empiezo a analizar y a esquematizar las necesidades.
  3. Dedicar horas solo a pensar cual es la mejor manera de conseguir el resultado.
  4. Encender el ordenador
  5. Programar durante 10 min.
  6. Y probar el resultado para que sea aceptable.

Todo esto sin tener en cuenta la de horas de formacion y tiempo dedicado a investigación que se han perdido por el camino para conseguir el conocimiento necesario.

Pero lamentablemente, de los “clientes/usuarios” y “empresarios”, solo estan dispuestos a pagar los 10 min. y asi nos va.

Para aquellos que no quieren tener el trabajo en 10 min., pero si quieran un trabajo de calidad:

Teneis todos los datos en el apartado de contacto, y se hará un presupuesto responsable, pero no en 10 min.

Porque dicho sea de paso, Velneo V7 es una herramienta muy buena, pero detrás hay personas que la utilizan, para bien o para mal.

Create PDF    Enviar artculo en formato PDF   
comments: 1 »
jun 5

Open Apps de pago

En los próximos post, presentaré posiblemente alguna nueva Open App, que ya esta saliendo del horno.

Pero a diferencia de las anteriores, esta será de pago, si, de pago.

El precio aun no esta fijado, y depende de muchas variables, unas Open Apps serán más baratas que otras, pero si puedo asegurar una cosa, ¡Todas estarán creadas con un solo espíritu! y unas intenciones muy claras:

  1. Que sean sencillas de entender
  2. Que sean sencillas de adaptar a nuestras aplicaciones
  3. Que prevalezca la calidad, pero sin perder la sencillez
  4. Que sean de utilidad, y sirvan para el aprendizaje
  5. Que esten bien documentadas, para evitar frustraciones

No obstante, se requiere de un mínimo de conocimientos de la herramienta de programación Velneo V7 para ponerlas en funcionamiento.

Las Open Apps, no prentenden resolver un problema concreto, sino que persiguen servir de tutor para que cada uno sea capaz de resolver sus propios problemas.

¿Son demasiado sencillas?

Eso he intentado, que lo sean, ya sera cada uno mayorcito y las complicará por si mismo.

¿Son de pago?

¡Si!, porque todo lo que requiere calidad lo es, y salvo que viva en “los mundos de yupi”, yo también debo pagar mis facturas, y por ende, mis acreedores desean cobrar.

¿Que precio tienen?

Pues eso dependera de cada una, pero intentare que sean econominas, para que nadie se pueda sentir engañado, ni en precio, ni en calidad.

Ademas, y puesto que al ser de pago, me siento obligado a aumentar la calidad de la misma, he intentado documentarlas correctamente para que todos puedan sacar el máximo jugo a cada recurso de la plantilla.

¿Y si no me gusta?

Pues sintiendolo mucho, el dinero no se devuelve, pero teniendo en cuenta el precio, y que con cada plantilla se especificará claramente lo que incluye, deberias decidir si el precio merece la pena antes de comprarla.

¿Y si hay actualizaciones?

Si hay actualizaciones, de aquellas plantillas que hayas comprado y por tanto, estarás el registro correspondiente, aprovecharé para enviar a cada uno la actualización de forma gratuita o previo pago de una cuota de mantenimiento, dependiendo de que tipo de plantilla o aplicación se trate.

Espero que sean de vuestro agrado.

PDF Printer    Enviar artculo en formato PDF   
comments: 2 »