Archive for the ‘Basico’ Category

Nueva versión Velneo 7.3

Hoy ha salido a la luz la nueva versión 7.3 de Velneo V7. Trae multitud de novedades.

Puedes descargar la nueva versión y ver la lista de novedades.

Mantener una aplicación en producción y no morir en el intento

Al hilo de lo que comentaba en mi anterior post sobre mis experiencias en mi antiguo trabajo con Java y MySQL, os cuento la parte relativa al mantenimiento de la aplicación en producción.

Aplicación en producción

Los que nos dedicamos al desarrollo de software conocemos las dificultades que implica mantener una aplicación que ya está en producción, o sea, el clientes ya está trabajando con ella.

Si sólo se trata de una actualización a nivel visual o de código no es significativo. El problema viene cuando cambia la estructura de la base de datos.

En otros entornos

Cuando la actualización de una aplicación incluye cambios en la estructura de datos normalmente recurrimos a scripts SQL que se encargan de realizar el cambio estructural y de algunos procesos si tuviéramos que realizar alguna actualización a nivel de datos.

Esto, queramos o no, es un proceso manual, aunque nos podamos ayudar de herramientas que permitan la sincronización entre dos bases de datos.

En Velneo

Afortunadamente los que desarrollamos con Velneo estamos de enhorabuena y la plataforma de desarrollo se encarga automáticamente de realizar la actualización/conversión de la base de datos antigua a la nueva versión. Además crea copia de seguridad de todas las tablas que “sufren” cambios.

Y cuando hablo de conversión me refiero a que si p.e. he cambiado el tipo de un dato en una tabla Velneo se encarga de realizar la conversión (siempre que sea posible).

De verdad que os animo a que probéis esta herramienta de desarrollo porque vale la pena.

Hasta el próximo artículo!!

Las comparaciones son odiosas

No, no vamos a comparar a Velneo con otras herramientas. En este artículo vamos a comentar los operadores de comparación que tiene Velneo:

  • Igual a: =
  • Distinto de: !
  • Mayor que: >
  • Menor que: <

Lo primero que echamos en falta son los operadores Menor igual y Mayor igual. Efectivamente estos dos operadores no son incluidos en Velneo, pero ¿eso es un problema? Vamos a ver que no.

Lógica inversa

Supongamos que tenemos un if donde queremos comparar si una variable es mayor o igual que cero. La lógica nos dice que si queremos que sea mayor o igual que cero es lo mismo que “no sea menor que cero”. Eso es lo que se conoce como lógica inversa. Podemos ver otro ejemplo en el foro de Velneo.

Ejemplo

No lo veo claro

Cuando anidamos varios comparadores puede llegar a liar tanta lógica inversa en la misma operación. Una solución es crearnos nuestras propias funciones para representar los operadores de Menor igual y Mayor igual.

Menor o igual Mayor o igual

De esta manera el ejemplo anterior quedaría así:

Ejemplo

Precedencia de operadores

Cuando utilizamos los operadores lógicos AND (&) y OR (|), hay que tener en cuenta lo que se conoce como precedencia de operadores. En Velneo, los operadores se evalúan de izquierda a derecha y hay que hacer uso en muchas ocasiones de los paréntesis.

Por ejemplo, si queremos construir una expresión que evalúe si a es menor que 2 y b es menor que 6, haríamos:

‘a’ < 2 & ‘b’ <6

La precedencia de operadores hace que se evalúe cada operador de izquierda a derecha a medida que se encuentran, esto es, primero el menor, después el Y lógico y por último otro menor. O sea, no está bien construida la expresión.
Para que funcione tendríamos que utilizar los paréntesis de tal manera que lo que está entre paréntesis se evalúe como un todo:

(‘a’ < 2) & (‘b’ < 6)

Y podríamos hacerlo mucho más complicado, haciendo uso intensivo de los paréntesis:

( (‘a’ < ‘b’) & (‘b’ < ‘c’) ) | (‘b’ < ‘d’)

Casting en Velneo

Como comenté en el artículo “null, ese gran desconocido, Velneo hereda características de la herramienta que se usa para su desarrollo, el lenguaje C.

Otra de esas características heredadas es el casting implícito entre distintos tipos de variables. Para ilustrar que significa esto veamos un ejemplo:

Ejemplo

Al ejecutar este código esperaríamos que el mensaje por pantalla fuera “4 facturas”, pero de forma sorprendente o no, la salida por pantalla es “4”.

¿Por qué sucede esto?

Casting implícito

En Velneo tenemos tipos de datos como en cualquier otro lenguaje: int, float, string, pero con la salvedad de que no tenemos que declararlos de forma explícita.

Por ello cuando realizamos operaciones con los datos Velneo utiliza el casting implícito para hacer las conversiones entre tipos de datos. El casting implícito se explica de forma breve en este artículo.

El casting implícito evita al desarrollador, en muchos casos, preocuparse por funciones de conversión entre tipos, aunque también implica estar más atento a las comparaciones y las operaciones entre datos.

Ejemplo

Supongamos que tenemos una cadena que representa un entero y queremos sumarle otro entero.

ejemplo

El resultado del código anterior es “43”. ¿Por qué? Velneo, ante la concatenación de datos, realiza un casting implícito en función al tipo de dato del primer componente de la concatenación, en este caso una cadena, o sea, antes de realizar la concatenación convierte el resto de los componentes a string.

¿Entonces como lo hacemos?

Pues tenemos varias opciones:

  1. Utilizamos la función fValor, que tal como dice la ayuda de Velneo Convierte una cadena alfabética en su valor numérico, haríamos Mensaje -> ‘a’ + fValor( ‘b’)
  2. Forzamos a que el primer componente sea del tipo que nos interesa. Hacemos Mensaje -> ‘b’ + ‘a’

Truco

Y el primer ejemplo, ¿cómo lo podemos resolver?. Una astucia a utilizar cuando usamos la función Mensaje, es siempre hacer que el parámetro se inicie con una cadena, en nuestro caso haríamos Mensaje -> “” + ‘a’ + ‘b’ y el resultado es el esperado: “4 facturas”.

Null, ese gran desconocido

Como todos saben y si no se los cuento, la plataforma Velneo está internamente desarrollada en el lenguaje de programación C, y como es lógico hereda alguna de sus características. Una de ellas es el valor null. En Velneo se conoce como “campo vacío”.

Básicamente consiste en que una variable, local o global, o el valor de un campo de una tabla puede estar vacío, o sea, no tener valor.

¿Y esto que significa?, veamos un ejemplo para comprenderlo.

Ejemplo valor null

A primera vista podríamos pensar que la variable a y la variable null son lo mismo, al fin y al cabo su contenido “no tiene nada”. Pues no, este código entra por el else. Ahí es donde entra el concepto de valor vacío.

Por lo tanto, debemos tener en cuenta que a la hora de realizar comparaciones dentro de un if, por ejemplo, con una cadena vacía (como el código de ejemplo anterior), tenemos tres posibilidades: que no sea “”, que sea “” o que sea vacío, tal como se puede apreciar en el siguiente código.

Hay contenido

fCampoVacío

¿Como hacemos en Velneo para saber si un valor es vacío? Disponemos de la función fCampoVacio que nos devuelve un 1 si el dato pasado por parámetro es vacío.

fCampoVacio

Conclusión

Espero que con esta pequeña explicación evitemos algún quebradero de cabeza sobre todo a los que se inician en esta maravillosa herramienta.