Ir al contenido principal

Entradas

Mostrando las entradas con la etiqueta Minor tip

Resultado del build all

Estaba trabajando en una kb y me interesaba pasar los resultados del build all (qué objetos generaron, cuales no, etc) a otra persona. Luego de algunas vueltas y la ayuda de Pablo probé modificando el XML de la navegación y obtuve una preciosa tabla con filtros y todo, muy sencillo el mecanismo así que lo comparto por si a alguien le aporta. Sigue el paso a paso: 1. Hacer el build all (o el build que quieran) 2. Eso deja un nav_objs.XML con el resultado de los objetos especificados en el directorio de la KB. (Ej: c:\gc\kbs\AjaxSample\nav_objs.xml) 3. Se edita ese XML incluyendo un Tag de apertura y cierre, ejemplo: <objects> (contenido del XML original) </objects> Queda algo como: <Objects>   <Object>     <ObjCls>1</ObjCls>     <ObjId>2</ObjId>     <ObjName>IsAuthorized</ObjName>     <ObjStatus>genreq</ObjStatus>     <ObjNavig>GXSPC007\GEN15\NVG\IsAuthorized.xml</ObjNavig>   </Object> .... </ob...

Mejoras de performance en el U2 del IDE de la X

En el U2 de GeneXus X se incluyeron varias mejoras, algunas especificamente orientadas a mejorar la performance del IDE. Entre ellas se cambió el modo en el cual se carga el Winte y los generadores. En lugar de ser cargado cada vez, se deja residente en memoria (un demonio) de modo que la próxima vez que se especifique/genere un objeto o grupo de objetos, dicho proceso sea mucho más rápido. Para mí es un poco difícil (no imposible) hacer mediciones "científicas" sobre este punto porque no se trata de un build all o rebuild all o tareas de msbuilds que se puedan marcar con "timestamp" fácilmente sino es la propia utilización del IDE y la "sensación" más que una medición exacta. Mi sensación entonces es que realmente mucho más "ágil" el proceso de edición-especificación-prueba-edición... que en sus versiones anterior. Como dice un amigo: "es mucho más fácil hacer eficiente algo que es eficaz que hacer eficaz algo que es eficiente", en re...

¿Cómo tener más de un build de la X instalado en el mismo PC?

A veces es útil tener más de un “build” de la X instalado en el mismo PC, en mi caso por ejemplo tengo la versión “Release”, el U1 y ahora estoy instalando el Preview 1 del U2 . El problema es que como todas esas son el mismo producto/versión entonces la instalación de una significa la desinstalación de la anterior. Es decir, el setup comienza desinstalando la versión anterior. ¿Cómo resolverlo? En realidad la solución es bastante sencilla. Yo lo que hago es copiarme la instalación de GX a otro directorio y luego utilizo esa copia. Debo tener la precaución de ejecutarla con " /install " antes de utilizarla por las dudas que haya ejecutado otra versión la última vez. ¿Qué pasa con los UC y Extensions? Las extensions y UC no son instaladas por el SETUP de GX en si por lo cual en el "uninstall" no se remueven. De este modo si se instala una versión en el mismo directorio que la anterior, supongamos que se instala el U2 en el mismo directorio donde estaba el U1, las ext...

Tip básico: no podía crear una KB en la X

Intentando crear una KB en la X me dio el error: "Unable to open the physical file "C:\tmp\test.md" Operating system error 2: "2(El sistema no puede hallar el archivo especificado.)". Database 'Test' cannot be opened due to inaccessible files or insufficient memory or disk space.  See the SQL Server errorlog for details. File activation failure. The physical file name "Test.LDF" may be incorrect. El problema al final (luego de un rato) me di cuenta que era básico, hace tiempo había creado una KB llamada Test cuyo nombre de base de datos era "test" por lo cual quedó "atacheada" (¿como se dirá en español?) a la instancia de SQL Server. Pero como había borrado el directorio donde estaba la KB (eso incluir el MDF y el LDF) entonces no la podía abrir. Solucion: hacer un "detach" desde el Enterprise Manager o elegir otro nombre de DB. Más info sobre tips básicos, cómo hacer el detach, hacerlo por "command line...

Minor tip: expansión de código

Estaba jugando con la Rocha y encontré un diálogo de esos que nunca uso que son las "opciones", eso donde podes configurar el tamaño del tab (cuantos caracteres se mueve el cursor cuando apretás tab, más o menos sería eso). También podés definir cada cuanto milisegundos titilan los dos puntitos de tu reloj digital y cosas así super útiles :) Alguien decía que esas opciones (o similares) son las dudas que el programador trasmite a sus usuarios (o algo así). No importa, en este caso encontré una que me pareció por lo menos divertida y talvez útil. En realidad la había visto en la demo que hizo Milano con Nicolás en el evento 2006 si no estoy mal. Claro en ese momento la Rocha andaba en ESA máquina y no mucho más, hoy anda en MI máquina así que mejor que mejor. ¿Cuál es? Tools/Options y aparece: Lo que hago es definir un "mapping" de sustitución en los editores, fácil de entender. En el ejemplo built-in: si alguien escribe "foreach" cuando da separador (espac...

Mini debug

Estaba haciendo unos procesos que consumen unos WS en la Rocha. Basicamente quería ver sin andaban sin complicarme mucho así que lo que hice fue que el procedure que los consumía tuviera: 1. Ser main 2. Call protocol=command line 3. Un msg(...., status) De este modo el procedure que consume el WS, en este caso de paises, era: &Xml=&GetAllCountries.Execute() // este es el WS que consumo como external object &Countries.FromXml(&Xml) for &Country in &Countries    msg(&Country.CountryName,status) endfor luego usé "Run with this only" y en la salida (en java en el ejemplo) aparece: ========== Execution started ========== "C:\Archivos de programa\Java\jdk1.6.0_05\bin\java.exe" aprocessallcountries Uruguay Argentina Brasil Chile Execution Success En .NET la salida es similar. La verdad que no lo tenía el "mini tip" así que por si a alguien le sirve lo publico. Gracias Javier :) NOTA: lo probé en la Rocha, capaz en la 9.0 funcionaba, ni...

Tip menor: Lios con los browsers

Uso IE, FF y Avant, indistintamente, a veces dejo uno como "default", a veces ninguno, a veces otro, en fin. Ahora bien, no se bien que hice con la instalación que actualmente tengo el IE como "default" y sin embargo muchas veces no logro abrir un link dando "click" sobre el. Un ejemplo, recibo un mail (HTML) que tiene un link y si le doy "click" al link en lugar de levantarme "alguno" de los browser me aparece el siguiente diálogo: Si ejecuto desde GX Rocha (Beta 1 al menos) me dice: Execution System.ComponentModel.Win32Exception: No se ha encontrado la aplicación en System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) en System.Diagnostics.Process.Start() en Artech.Packages.Genexus.BL.Services.RunService.BrowseUrl(String url) en Artech.Packages.Genexus.BL.Services.RunService.ExecuteCommand(IDictionary`2 tokens, String command) en Artech.Packages.Genexus.BL.Services.RunService.Execute(KBModel model, EntityKey ...

Tip menor: Lios con los browsers

Uso IE, FF y Avant, indistintamente, a veces dejo uno como "default", a veces ninguno, a veces otro, en fin. Ahora bien, no se bien que hice con la instalación que actualmente tengo el IE como "default" y sin embargo muchas veces no logro abrir un link dando "click" sobre el.

Tip Menor: ¿cómo editar una instancia de pattern sin abrir la transacción?

Bueno, va otro tip "menor", de esos que aprendo al ir usando la Rocha (tanto que ya hasta cree una categoría ;)) Hace tiempo que uso los patterns, especialmente el "work with pattern", que vengan "built-in" la versión Rocha tiene N ventajas (más fáciles de aplicar, la instancia más "a mano", dinamismo con la TRN de modo que se modifico algo de la misma se "refresca" lo generado por el pattern, etc). Uno de los "detalles" importantes es que los objetos creados por el pattern los deja bajo la propia transacción en el "folder view". Eso hace más práctico el manejo de los mismos, en particular he tenido que borrarlos varias veces y en la 9.0 era bastante dificil "sacarle" el pattern. No es exactamente un "undo" pero se aproxima mucho. En fin, lo que no es tan obvio, al menos no lo fue para mi, es que además de los objetos queda creada la propia instancia como un "objeto" en si, por lo cual ...

Tip Menor: ¿cómo editar una instancia de pattern sin abrir la transacción?

Bueno, va otro tip "menor", de esos que aprendo al ir usando la Rocha (tanto que ya hasta cree una categoría ;)) Hace tiempo que uso los patterns, especialmente el "work with pattern", que vengan "built-in" la versión Rocha tiene N ventajas (más fáciles de aplicar, la instancia más "a mano", dinamismo con la TRN de modo que se modifico algo de la misma se "refresca" lo generado por el pattern, etc). Uno de los "detalles" importantes es que los objetos creados por el pattern los deja bajo la propia transacción en el "folder view". Eso hace más práctico el manejo de los mismos, en particular he tenido que borrarlos varias veces y en la 9.0 era bastante dificil "sacarle" el pattern. No es exactamente un "undo" pero se aproxima mucho.

Un tip super menor y una curiosidad

Si se están definiendo atributos en la estructura de una transacción y se digita "." (punto) entonces pone el nombre del nivel como "prefijo". De este modo si estoy en el primer nivel de la transacción: "Cliente" cuando en el nombre del atributo a ingresar escribo "." lo sustituye por "Cliente". Así si quiero definir los atributos "ClienteNombre", "ClienteApellido", "ClienteSaldo", etc es más sencillo. ¿obvio? ¿al menos conocido? Está bien.... es conocido. Incluso muchos saben que el "." si estoy en un subnivel de la Transacción entonces toma como prefijo el nombre del nivel no en nombre de la transacción. ¡Todos somos super listos! se terminó el post acá... o... en realidad iba a otro punto no tan conocido (creo). Si en lugar de querer prefijar con el nombre del nivel o de la transacción quiero prefijar con la "raiz" del atributo anterior ¿cómo hago? Por ejemplo, estoy en la transacción...

Un tip super menor y una curiosidad

Si se están definiendo atributos en la estructura de una transacción y se digita "." (punto) entonces pone el nombre del nivel como "prefijo". De este modo si estoy en el primer nivel de la transacción: "Cliente" cuando en el nombre del atributo a ingresar escribo "." lo sustituye por "Cliente". Así si quiero definir los atributos "ClienteNombre", "ClienteApellido", "ClienteSaldo", etc es más sencillo. ¿obvio? ¿al menos conocido? Está bien.... es conocido. Incluso muchos saben que el "." si estoy en un subnivel de la Transacción entonces toma como prefijo el nombre del nivel no en nombre de la transacción. ¡Todos somos super listos! se terminó el post acá... o...