Anotaciones al margen del desarrollo con GeneXus
Al trabajar con la GeneXus X Ev1 U1, hice la siguiente lista de algunas cosas que me gustaria encontrarle alguna solucion mas prolija.
Poder correr algo con una reorganizacion pendiente.
Poder correr algo con una reorganizacion pendiente.
Estoy trabjando en una reorganizacion que va a tener varias cambios y me interesa ejecutar un programa con la estructura vieja de la base. No logre como se hace.
Solo correr un programa
Me interesa ejecutar un programa como esta, sin especificar, generar y especificar lo pendiente.
Funciones para comprimir y descomprimir archivos y strings.
Estaría bueno contar con funciones de ZIP y de UNZIP para archivos y también para strings.
Funciones de hash para guardar contraseñas
Estaria bueno contar con funciones de hash, tipo MD5 o alguno similar, para el almacenamiento del hash de la pareja usuario/contraseñas.
Dificultades varias con los Data Provider
Me resultan demasiado abstracto.
Pienso primero la sentencia SQL que quiero lograr y luego trato de reproducirla con el DP.
Mensajes de error que no tienen código de error.
Seria bueno que todos los mensajes tuvieran códigos de error, de forma de poder inhabilitarlos y habilitarlos desde las propiedades del modelo.
Por ejemplo, el mensaje
"deletefile is a deprecated function"
es bueno poder ignorarla al principio, mientras hago la migración, luego realizar las correcciones para eliminarla y despues ponerla como error, para que nadie mas la utilice.
GXSearch y el wiki de la comunidad con problemas.
El GXSearch y el wiki de la comunidad estuvieron con problemas durante la semana. Pude apreciar lo críticos que se han vuelto estos dos sitios web para el desarrollo con GeneXus, por lo que debería contemplarse el tener alguna forma de redundancia o algún plan de contingencia para poder contar con los servicios en forma permanente.
Patterns encontrados
En varios codigos procedural, encontre varias veces este patron para el manejo de acumulados.
new
Clave
Datos
when duplicate
for each
where Clave = &Clave
Datos =+ &Datos
endfor
endnew
o
for each
where Clave = &Clave
Datos = &Datos
when none
new
Clave = &Clave
Datos = &Datos
endnew
endfor
Podría tenerse una función que lo hiciera o una forma mas prolija de escribirlo.
View Navigation.
View navigation vuelve a especificar el objeto aunque el mismo no tenga cambios.
Variables.
Las variables no se pueden borrar solo con el mouse, La unica forma que encontre es con la tecla delete.
Quise poner el botón derecho y elegir delete, pero no aparece esa opción en el menú contextual.
Seria bueno tener una forma de borrar solamente las variables definidas y no referenciadas.
Pasaje de Parametros entre objetos con Popup.
Los parámetros hay que pasarlos a través de variables de sesión, seria bueno encontrarle alguna solucion mejor.
Enrique, algunos comentarios que capaz te sirvan:
ResponderBorrar* Poder correr algo con una reorganizacion pendiente: ¿No te serviria abrirlo en versiones distintas de la kb? De esta manera, seguis trabajando en una version mientras en el trunk principal vas incorporando los cambios al modelo.
* View Navigation: Podes abrir el listado de navegacion, y arrastrar un objeto a la lista. Esto te muestra la ultima navegacion del objeto.
* Pasaje de Parametros entre objetos con Popup: esta no la entendi. Los popup reciben parametros.
Creo que Enrique se refiere al paso de variables, ya que los atributos no tienen problema. También me resulta molesto tener que usar el Session.
ResponderBorrarGonzalo:
ResponderBorrarCon respecto a la reorganización, me gustaría poder correrlo en la misma KB, como lo hacia antes.
Si, se que se puede arrastrar el objeto a la lista, pero no me resulta muy practico.
Los Popup pueden recibir parámetros, pero no pueden devolverlos en forma correcta.
Oscar:
Tal como dices, para el manejo de popups hay que usar variables de sesión y son bastante incomodo y producen una cantidad de código repetitivo que aburre. Seria bueno encontrarle una solución mas elegante.
Gracias por los comentarios
Yo para empezar lo que pediria es que se mejore el editor de webforms. Que se podría mejorar mucho, pero que mucho. Y ya que se utiliza el framework ExtJs tener un editor como el ExtJs Designer para diseño de los interfaces de las aplicaciones web:
ResponderBorrarhttp://www.extjs.com/blog/2009/10/08/ext-js-designer-preview/
También hay otras cosas como:
- el poder aplicar una MasterPage en Run-time a un webpanel(que creo que a partir del Framework 2.0 de .Net se puede con la propiedad "MasterPageFile" creo)
- poder anidar MasterPages
- solucionar el tema de los temporales de los campos blob(no se si se ha solucionado)
- poder aplicar estilos, masterpages, templates en win.
- Poder modificar un Pattern de forma sencilla o que venga ya una serie de Patterns con un look&feel moderno y atractivo para los usuarios
- no abandonar los generadores WIN(no se ha implementado nuevas funcionalidades en cuanto a diseño de interfaces desde hace algunas versiones de Genexus)
- Parametros de salida en los Popups
- y algunas cosillas mas ...
Por pedir que no quede!!
Mikel:
ResponderBorrarGracias por los aportes.
Lo de la masterPage dinamica, creo que es algo en lo que Artech esta trabajando, a mi en algunos casos me seria muy util.
Lo de MasterPage anidadas, no lo he necesitado, en que caso lo usarias?
Los campos blobs, lo que tiene solucion (no demasiado elegante) es que se borren los archivos temporales de los directorios de trabajo. Es a eso lo que te referis?
Los pedidos para win, creo que no van a tener demasiada suerte, pues el mercado no demanda aplicaciones win, por el momento. Como todo esto puede cambiar.
En cuando a patterns con mejor look & feel, es algo en lo que si se podria trabajar, pero hay algunos en el mercado (hay que comprarlos) que estan buenos.
Lo de modificar en forma facil los patterns, es algo en lo que creo hay que trabajar fuertemente, pues es donde se van a ver las ventajas de GeneXus como generador de codigo. No es algo facil, pues se trabajar a un nivel de abstraccion alto, pero poder modificar un template/generador de codigo, para otro generador de codigo (GeneXus) de forma facil, nos daria una potencia que pocas herramientas de desarrollo la tienen.
Te leo siempre Enrique, tal vez me desvie del tema, pero dime, como hago para poder cambiar el nombre de un Knowledge Base, dice: gx debe decir: gx_ev1. Te agradezco
ResponderBorrarTe leo siempre Enrique, tal vez me desvie del tema, pero dime, como hago para poder cambiar el nombre de un Knowledge Base, dice: gx.gxw debe decir: gx_ev1.gxw
ResponderBorrarAl parecer no tengo la opcion de poder cambiarlo.
Sucede que he migrado de 9 a X evolution y como es bien grande la migracion, no deseo hacerlo nuevamente, solo para ponerle otro nombre.
Te agradezco
Hermanos Puchuri:
ResponderBorrarMe alegro que te guste el blog.
Nunca renombre una KB en la GX X, pero creo que alcanzaria con detacharla en SQLServer y volver a atacharla con el nuevo nombre y luego cambiar el archivo knowledgebase.connection y poner ahi el nuevo nombre.
No se si es necesario renombrar el archivo GXW.
Como te dije, no lo hice nunca, por lo que no el metodo no esta garantido.
Gracias por el comentario.
Coincido en:
ResponderBorrarLas variables globales son incordiosas para definirlas en cada objeto. Quizá deberían estar guardadas en un solo lugar y accesibles para cualquier objeto. Se supone que eso es exactamente la definición de "variable global".
Las variables no se pueden borrar de una forma fácil, como existía en la versión 9 (remove y se iban). Esto es molesto cuando se copian objetos y uno es un poco maniático.
Además la edición de campos no funciona como en win. Puntos, comas y fechas funciona pero un campo editado como 999-99-99-999999/9 funcionaba en gx9-win pero no en gxx-web. Es pesado hacerlo a mano y más cuando se migra algo grande.
Un hash MD5 nativo (como función o algo así) sería genial.
No encontré una forma simple de hacer un backup del modelo completo para pasar de mi PC a mi notebook para trabajar el fin de semana. Sería bueno tener algo que baje un zip con todo lo necesario sin hacerlo a mano.
Los webforms podrían ser más simples de hacer, la mayoría son copias de copias que uno hace.
Tandil:
ResponderBorrarPara el tema de la copia de trabajo, una forma facil de copiar un modelo, es bajar SQL Server, copiar el directorio y el *.MDF y LDF de la base de datos y attacharla en tu maquina.
De esa forma se puede trabajar en ambos lugares.
Gracias por el comentario.