Entradas

Error raro en .NET - Multiplica importes por 100 en llamada a SOAP

Imagen
Tenemos una aplicación funcionando en .NET con GeneXus 15 Upgrade 9. Nos pasamos al Upgrade 11 y todo parecía funciona correctamente. En las pruebas realizadas en las maquinas de desarrollo y testeo, todo funciono bien. Cuando pusimos en producción, empezamos a notar que luego de llamar a un servicio SOAP, los parámetros que nos volvían en SDT, con decimales, quedaban multiplicados por 100. Las maquinas en las cuales habíamos probado, tenian Windows en ingles, con formato en ingles. El servidor de producción, tenia Windows en ingles, pero el formato de fechas e importe, estaban en español.  Esta diferencia, era la que hacia que al ejecutar los mismos assemblies en dos maquinas diferentes, con los mismos archivos de configuración, dieran resultados diferentes. El problema fue rápidamente diagnosticado por Javier Larrosa y agregando la linea   <globalization culture="en-US" uiCulture="en-US" />  a nivel del system.web del web.config, pudimos solu...

Atributos basados en dominios y variables basadas en atributos (2da. Parte)

Imagen
En el post anterior, comentaba la importancia de usar dominios con significado, para facilitar la propagación de cambios desde el modelo de datos a los programas. Otra ventaja de tener bien definidos los dominios, es el de poder agrupar todas las cosas que son de la misma categoría, facilitando la identificación de los objetos que tengo que cambiar. Por otro lado, al tener tanto variables como atributos con dominios, podemos hacer validaciones mas estrictas de lo que hoy permite Genexus. Supongamos que tenemos los atributos (*) MovimientoPeso - Domino PesoKG N(10,2) CamionPeso - Dominio PesoToneladas N(10,2) Si en un programa tenemos una operacion que haga una asignacion de MovimientoPeso = CamionPeso + &Carga muy posiblemente estemos introduciendo un error, al sumar pesos en diferentes unidades, aunque los ambos sean numéricos. Lo mismo sucede si pasamos de variables que tienen mas decimales a otra que tenga menos decimales, podemos estar perdiendo precisión c...

Atributos basados en dominios y variables basadas en atributos

Imagen
Hace unos dias, me preguntaron el motivo por el cual KBDoctor chequeaba que los todos los atributos estuvieran basados en dominios y también sugiere que todas las variables estén basadas en atributos (o dominios) El motivo es bastante sencillo, para hacer que la KB sea mas fácil de mantener en el futuro.  Pongo un ejemplo bien sencillo, con el cual, puede quedar un poco mas claro. Tengo tres atributos, que son N(8) y guardo en ellos números telefónicos.  Ninguno de estos atributos tiene dominio. Luego tengo 4 programas que usan estos atributos y tienen variables que tambien contienen numeros telefonicos, tambien definidas como N(8). Por el aumento de la cantidad de teléfonos, las compañías telefónicas se ponen de acuerdo y deciden pasar sus números de 8 a 10 dígitos.  Para adaptar mi aplicacion, tengo que cambiar, 3 atributos, mas 4 programas los cuales tengo que detectar  y cambiar manualmente. Estas tareas (sobre todo la de encontrar donde s...

Las aplicaciones del futuro y las herramientas necesarias.

Imagen
Como serán las aplicaciones del futuro? Me encantaría poder contestar esa preguntas sin dudar, pero hacer futurología no es algo que me salga bien.  Lo que si puedo contestar, es como son las aplicaciones que tendremos que hacer en los próximos meses, porque son las que estamos programando ahora. Si bien no todas las aplicaciones son iguales, muchas de estas características se repiten en varias, por lo que es fácil detectar patrones repetidos. Opino hoy de las aplicaciones hechas con Genexus. Distribuidas Las aplicaciones tienen que estar distribuidas en varios nodos. Esta división sera por performance, escalabilidad, modularidad, seguridad, ejecutar en dispositivos específicos o algún otro criterio pero es algo con lo cual vamos a tener que lidiar. Nuestra aplicación va a tener que ejecutar en diferentes computadoras (por ej. microservicios). Múltiples fuentes de datos o bases de datos.  Cada vez es mas común que las aplicaciones necesiten leer/grabar de diversas...

Como afectara la inteligencia artificial al desarrollo de software

Imagen
En este   informe de Forrester   (es del 2016, pero creo que tiene vigencia)  explican cómo puede afectar el uso de herramientas con algoritmos de  inteligencia artificial el desarrollo de software y aplicaciones. Conviene leerlo todo, pues está interesante.  En la comunidad Genexus, tenemos avances en varios frentes. Identifican que el area de test es una de la que primero se va a favorecer del uso de inteligencia artificial.

Nueva version de KBDoctor (v10.18)

Imagen
Publiqué en el GeneXus Marketplace una versión nueva de KBDoctor. Es la primera en la que cuento con ayuda de Nicolas para programar y hay muchas cosas que mejoraron. Tiene varios arreglos, y nuevas opciones, para el manejo de módulos y también una opción para revision de objetos. Esta disponible para Evo3, GX15 y GX16. También se pueden empezar a ejecutar las opciones de limpieza de la KB como tareas MSBUILD. Si alguien lo usa y tiene algun comentario, es bienvenido.

Se viene "Object Review" en KBDoctor

Imagen
Estamos programando una opción en KBDoctor, que va a hacer un Object Review, de forma de hacer una analisis y revision del objeto y detectar posibles errores, antes de subir dicho objeto a GXServer. La idea es que aparezca en el dialogo del Commit, permitiendo revisar todos los objetos que van a ser subidos al server. Es una herramienta que ayuda a realizar una revision del objeto, para liberar al revisor de los controles rutinarios y que pueden automatizarse. Ademas unifica algunos criterios en todo el grupo de desarrollo, de forma de hacer mas predecible como seran los objetos. Que hace el Object Review? Hace algo mas que un review, pues por ejemplo, borra todas las variables no usadas y si el objeto es una transaccion y no esta siendo referenciada por nadie, le borra las reglas, los eventos, le saca la masterpage y vuelve los forms a default. Tambien avisa cuando: Hay parametros tenga IN/OUT/INOUT Tiene mas de N1 parametros Tiene mas de un parametro de salida Tiene...