<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Desarrollando desde la trinchera.</title><link>http://ealmeida.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ealmeida" /><description>El blog de Enrique Almeida. Desarrollo de aplicaciones, GeneXus y otros divagues.</description><language>en</language><managingEditor>noreply@blogger.com (Enrique Almeida)</managingEditor><lastBuildDate>Fri, 20 Jan 2012 04:48:02 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">842</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="ealmeida" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>ealmeida</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Funcionalidades que me gustaría agregar al KBDoctor (continuación)</title><link>http://feedproxy.google.com/~r/ealmeida/~3/EWG_ptFe_Uk/funcionalidades-que-me-gustaria-agregar.html</link><category>KBDoctor</category><category>extensions</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Fri, 20 Jan 2012 04:48:02 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-2679898122938868146</guid><description>&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://lh4.ggpht.com/-m9Oelsr4uQc/Txlifw0vatI/AAAAAAAACOw/YStUCEnzeYU/s1600-h/otras2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 15px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="otras" border="0" alt="otras" align="left" src="http://lh3.ggpht.com/-KY2rxjD3RWc/TxligTAUH7I/AAAAAAAACO4/nUg4b0u_Lj0/otras_thumb.png?imgmax=800" width="244" height="197" /&gt;&lt;/a&gt;Search&amp;amp;Replace&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Poder poner un texto a buscar y otro a sustituir y cambiarlo en todos los objetos.    &lt;br /&gt;El cambio puede ser en el código, en las pantallas, en las propiedades.     &lt;br /&gt;Seria opcional buscar con el Indice que GeneXus ya posee, o que recorra todos los objetos, los distribuya y si el texto esta en dicho objeto, lo modifique y vuelva a consolidarlo. &lt;/p&gt;  &lt;p&gt;Seria muy util, para muchas situaciones, por ejemplo para eliminar el &amp;amp;Planilla.UseAutomation, que no se porque motivo el Search de Genexus no lo encuentra. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-2679898122938868146?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=EWG_ptFe_Uk:a5PQBPcbHyI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=EWG_ptFe_Uk:a5PQBPcbHyI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=EWG_ptFe_Uk:a5PQBPcbHyI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=EWG_ptFe_Uk:a5PQBPcbHyI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/EWG_ptFe_Uk" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T10:48:02.861-02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-KY2rxjD3RWc/TxligTAUH7I/AAAAAAAACO4/nUg4b0u_Lj0/s72-c/otras_thumb.png?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2012/01/funcionalidades-que-me-gustaria-agregar.html</feedburner:origLink></item><item><title>Funcionalidades que me gustaría agregarle al KBDoctor.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/LRzB2RajpcI/funcionalidades-que-me-gustaria.html</link><category>KBDoctor</category><category>extensions</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Wed, 18 Jan 2012 07:05:01 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-5446985388080983659</guid><description>&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-nKXKGrUuiqA/TxX5vzNUTsI/AAAAAAAACOg/HqvhJiu1EXY/s1600-h/KBDoctor%25255B2%25255D.jpg"&gt;&lt;img align="left" alt="KBDoctor" border="0" height="228" src="http://lh4.ggpht.com/-EnSLb8EVgP0/TxX5wYSparI/AAAAAAAACOo/pY-sNqjAq1k/KBDoctor_thumb.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: left; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="KBDoctor" width="229" /&gt;&lt;/a&gt;Hay un conjunto de funcionalidades que me gustaría agregarle al &lt;a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?KBDoctor,"&gt;KBdoctor&lt;/a&gt; y dado el ritmo de trabajo que preveo para este año no voy a poder encarar. &lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
TRNCleaner.&lt;/span&gt;&lt;/h3&gt;
Toma una transacción que no esta siendo usada (solo se usa para crear la tabla) y le saca todas las reglas, pantalla, documentación. Opcionalmente puede eliminar también formulas no redundantes o atributos que no pertenezcan a las tablas básicas de la transacción. También debería marcarla como no generable, para que no jorobe mas por un tiempo.&lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
ThemeCleaner. &lt;/span&gt;&lt;/h3&gt;
Dado un tema, borrar todas las clases no referenciadas por ningún objeto de la KB, tomando en cuenta la jerarquía lógica.&lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
ThemeFixer. &lt;/span&gt;&lt;/h3&gt;
Recorrer todos los objetos WEB y corregir todos aquellos controles que tengan clases que no existan en el tema asignado, poniéndole la clase por defecto para dicho control.&lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
SDTFixer. &lt;/span&gt;&lt;/h3&gt;
Dado un SDT, generar un proc que define una variable basado en dicho SDT, y lo genera forzado para todos los ambientes del modelo. Luego borra el procedimiento.&lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
ObjectState.&lt;/span&gt;&lt;/h3&gt;
Al especificar cada objeto, si el mismo tiene errores o warnings, almacenarlos en listas con los codigos de errores, de forma que sea facil saber cuantos objetos tienen un warning determinado y poder corrergirlo, sin tener que hacer un build all. &lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
ObjectNavigation. &lt;/span&gt;&lt;/h3&gt;
Es importante poder ver la navegación de un objeto, de forma rápida. Para esto, se podría agregar una parte a todos los objetos especificables y guardar en ella, la ultima navegación (o navegaciones si esta en mas de un ambiente). &lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
BuildEnvironment.&lt;/span&gt;&lt;/h3&gt;
Muchas veces nos interesa regenerar todo un ambiente pero no hacer un build all que demora horas. Poder largar una regeneración de todos los objetos que perteneces a un determinado ambiente. &lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
ForceAttDelete.&lt;/span&gt;&lt;/h3&gt;
Tengo un atributo y quiero borrarlo, porque no se debe usar mas. Si el atributo esta siendo usado en mas de un lugar, es bastante engorroso. Me gustaría poder cambiar todos los objetos que tengan variables basadas en dicho atributo y que la cambie por variables basadas en el tipo de datos del atributo. &lt;br /&gt;
Si hay índices con dicho atributo, debería eliminarlo del mismo.    &lt;br /&gt;
Si esta en la estructura de alguna transacción y en los formularios, también debería eliminarlo. En el código y en las reglas, es un poco mas difícil, pues no tenemos un parser del código que permita su manipulación en forma fácil y se podría dejar para hacerlo manualmente. &lt;br /&gt;
Por otro lado hay que hacerle muchas mejoras, pues con el paso del tiempo algunas funcionalidades han dejado de funcionar correctamente y por otro lado se han implementando funcionalidades adicionales que podrian aprovecharse mejor desde el KBDoctor. &lt;br /&gt;
Como dije antes, no creo que vaya a dedicarle muchas energias a esto, y comento mis ideas por si alguien quiere tomarlas e implementar alguna.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;ForceTheme.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Recuperar el Force Theme que habia en el Genexus 9.0, que recorre todos los controles de las pantallas web, y les asigna la clase por defecto a cada uno. Es util, para cuando traemos objetos desarrollados en otros sitemas con otros temas.&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-5446985388080983659?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=LRzB2RajpcI:dUkJJRr3ALE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=LRzB2RajpcI:dUkJJRr3ALE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=LRzB2RajpcI:dUkJJRr3ALE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=LRzB2RajpcI:dUkJJRr3ALE:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/LRzB2RajpcI" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-18T13:05:01.511-02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-EnSLb8EVgP0/TxX5wYSparI/AAAAAAAACOo/pY-sNqjAq1k/s72-c/KBDoctor_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2012/01/funcionalidades-que-me-gustaria.html</feedburner:origLink></item><item><title>PiensoPienso: Cómo implementar semáforos en GeneXus?</title><link>http://feedproxy.google.com/~r/ealmeida/~3/9ZdBZUYYDms/piensopienso-como-implementar-semaforos.html</link><category>PiensoPienso</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 12 Jan 2012 08:48:56 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-995164283724605782</guid><description>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-zD6D8pW3DHs/Tw8O9GFBG2I/AAAAAAAACOM/ap7Ly7pjaIA/s1600-h/semaforos%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="semaforos" border="0" alt="semaforos" align="left" src="http://lh3.ggpht.com/-aR7bok3MIJ4/Tw8O92o0TaI/AAAAAAAACOU/Z5Mr5-DC9qs/semaforos_thumb.jpg?imgmax=800" width="231" height="244" /&gt;&lt;/a&gt;Se tiene una aplicación que se ejecuta en muchas computadoras diferentes sobre la misma base de datos y comparten el file system. &lt;/p&gt;  &lt;p&gt;Hay un determinado proceso que por su consumo no puedo permitir mas que &lt;strong&gt;tres ejecuciones simultaneas&lt;/strong&gt; del mismo pues la performance de&amp;#160; toda la aplicación se degrada hasta niveles no aceptables.&amp;#160; &lt;/p&gt;  &lt;p&gt;Dicho proceso, puede tener cortes o caídas que hagan que no termine en forma correcta.&amp;#160; &lt;/p&gt;  &lt;p&gt;Cuales son las posibles implementaciones con GeneXus para lograr un máximo de tres ejecuciones simultaneas?&lt;/p&gt;  &lt;p&gt;Se valorarán las que maximicen la concurrencia y no provoquen bloqueos. &lt;/p&gt;  &lt;p&gt;Para los que quieran les dejo &lt;a href="http://en.wikipedia.org/wiki/Semaphore_(programming)"&gt;el link de wikipedia sobre el tema&lt;/a&gt; y otro sobre &lt;a href="http://en.wikipedia.org/wiki/Mutex"&gt;mutex&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-995164283724605782?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=9ZdBZUYYDms:w7L_1GnYCW4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=9ZdBZUYYDms:w7L_1GnYCW4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=9ZdBZUYYDms:w7L_1GnYCW4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=9ZdBZUYYDms:w7L_1GnYCW4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/9ZdBZUYYDms" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-12T14:48:56.447-02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-aR7bok3MIJ4/Tw8O92o0TaI/AAAAAAAACOU/Z5Mr5-DC9qs/s72-c/semaforos_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2012/01/piensopienso-como-implementar-semaforos.html</feedburner:origLink></item><item><title>PiensoPienso: Como mejorar la permformance de este programa?</title><link>http://feedproxy.google.com/~r/ealmeida/~3/TgOFVTxDuBg/piensopienso-como-mejorar-la.html</link><category>PiensoPienso</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Wed, 14 Dec 2011 05:47:33 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-7060602702438159484</guid><description>Tengo una tabla con millones de registros que son de la forma&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;*Clave&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Descripcion&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Fecha&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
y un webpanel &amp;nbsp;con una grilla que muestra los registros que cumplen la condicion:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Clave = &amp;amp;Clave when not &amp;amp;Clave.isEmpty();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Descripcion like &amp;amp;Descripcion when not &amp;amp;Clave.IsEmpty();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;amp;FechaInicial &amp;lt;= Fecha and Fecha &amp;lt;= &amp;amp;FechaFinal ;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
En la pantalla se muestran la cantidad de registros que tiene le grilla y en los eventos tengo:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;amp;TotPag = Grid.PageCount&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if Grid.Rows &amp;gt; 0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if Grid.PageCount &amp;lt;= 1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Paginado.Visible = 0 //Muestro botones de &amp;nbsp;paginado&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;else&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if &amp;amp;nroPag = 1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;anterior.Enabled = 0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;primero.Enabled = 0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;endif&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if &amp;amp;nroPag = Grid.PageCount&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;siguiente.Enabled = 0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;endif&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;endif&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;else&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Paginado.Visible = 0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;endif&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Como&amp;nbsp;mejorarían&amp;nbsp;la performance de este programa?&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-7060602702438159484?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=TgOFVTxDuBg:mdP1FvY75sw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=TgOFVTxDuBg:mdP1FvY75sw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=TgOFVTxDuBg:mdP1FvY75sw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=TgOFVTxDuBg:mdP1FvY75sw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/TgOFVTxDuBg" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-14T11:47:33.519-02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/12/piensopienso-como-mejorar-la.html</feedburner:origLink></item><item><title>Ventajas de programación basada en modelos : Cambios al migrar a GeneXus X ev2.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/qmvhcNVIXBs/ventajas-de-programacion-basada-en.html</link><category>Metodologia de Desarrollo</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Wed, 07 Dec 2011 12:44:03 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-43973764841675093</guid><description>&lt;p align="justify"&gt;Estaba revisando un tema de performance en la base de datos, de una aplicación generada con GeneXus 9.0. &lt;/p&gt; &lt;p align="justify"&gt;La misma no tenia problemas de performance grande, pero los administradores de la base de datos pedían que se utilizara BINDING para mejorar el ratio del cache de sentencias en la base de datos. &lt;/p&gt; &lt;p align="justify"&gt;Para hacer pruebas cree una KB en 9.0 con dos tablas (Clientes y Facturas) y un webpanel con una grilla de 10 renglones, que traia algunos datos de las tablas con un join, con condiciones con un when y ordenados&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;La misma generaba la sentencia:&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt; T1.[FactImporte], T1.[FactId], T1.[FacFecha], T2.[CliNom], T1.[CliId] &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt; ([FACTURA] T1 &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WITH&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WITH&lt;/a&gt; (FASTFIRSTROW NOLOCK) &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=INNER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;INNER&lt;/a&gt; &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=JOIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;JOIN&lt;/a&gt; [CLIENTE] T2 &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WITH&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WITH&lt;/a&gt; (NOLOCK) &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ON&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ON&lt;/a&gt; T2.[CliId] = T1.[CliId])&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  (T1.[FactImporte] &amp;gt;  100) &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ORDER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ORDER&lt;/a&gt; &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; T1.[FactImporte] &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DESC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DESC&lt;/a&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Para hacer pruebas, también la migre a la GeneXus X Evolution 2 y generó la sentencia.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt; * &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt; &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;(&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  T1.[FactImporte], T1.[FactId], T1.[FacFecha], T2.[CliNom], T1.[CliId], ROW_NUMBER() &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=OVER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;OVER&lt;/a&gt; ( &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ORDER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ORDER&lt;/a&gt; &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; T1.[FactImporte] &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DESC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DESC&lt;/a&gt; ) &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=AS&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;AS&lt;/a&gt; GX_ROW_NUMBER &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt; ([FACTURA] T1 &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WITH&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WITH&lt;/a&gt; (NOLOCK) &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=INNER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;INNER&lt;/a&gt; &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=JOIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;JOIN&lt;/a&gt; [CLIENTE] T2 &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WITH&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WITH&lt;/a&gt; (NOLOCK) &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ON&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ON&lt;/a&gt; T2.[CliId] = T1.[CliId]) &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  (T1.[FactImporte] &amp;gt; @AV6FactImporte)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;) &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=AS&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;AS&lt;/a&gt; GX_CTE &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt; GX_ROW_NUMBER &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BETWEEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BETWEEN&lt;/a&gt; @GXPagingFrom2 &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=AND&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;AND&lt;/a&gt; @GXPagingTo2 &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=OR&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;OR&lt;/a&gt; @GXPagingTo2 &amp;lt; @GXPagingFrom2 &lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=AND&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;AND&lt;/a&gt; GX_ROW_NUMBER &amp;gt;= @GXPagingFrom2 &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=OPTION&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;OPTION&lt;/a&gt; (FAST 11)&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p align="justify"&gt;Sin hacer ningún cambio en el objeto, la sentencia tiene muchas diferencias. En primer lugar, la primer sentencia trae todos los registros que cumplen la condición y la segunda solamente trae los registros que tiene que mostrar, mejorando mucho el trafico entre el servidor web y la base de datos. También baja mucho el uso de la CPU en el servidor WEB.&amp;nbsp; &lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;Otra diferencia, en la sentencia de GX 9.0 se generaba el SQL dinámico y se ponía el valor de las variables en la sentencia, lo que hacia que no se pudiera reutilizar los planes de ejecución en la base de datos y también tenia que recompilar la sentencia para cada valor diferente ingresado por el usuario. En el caso de la X Ev2, las variables figuran en la sentencia, dejando con esto contentos a los DBA y mejorando la performance si la consulta se realiza muchas veces. &lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;Esta es una de las ventajas de migrar de la 9.0 a la X, que mejorar la escalabilidad de las aplicaciones y posiblemente la performance (en algunos casos). Si pensamos que esta mejora se tiene para todas las grillas de la aplicación, sin mayor costo que el migrarse, se puede ver las ventajas de tener un modelo de nuestra aplicación y tener un generador que mejora con el tiempo. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-43973764841675093?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=qmvhcNVIXBs:RCr99Vqeua4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=qmvhcNVIXBs:RCr99Vqeua4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=qmvhcNVIXBs:RCr99Vqeua4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=qmvhcNVIXBs:RCr99Vqeua4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/qmvhcNVIXBs" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-07T18:44:03.855-02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/12/ventajas-de-programacion-basada-en.html</feedburner:origLink></item><item><title>KBModule 1.3 (beta) - Modularizando KB Grandes</title><link>http://feedproxy.google.com/~r/ealmeida/~3/mvtKSNbvuUk/kbmodule-13-beta-modularizando-kb.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 03 Nov 2011 16:24:20 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-2903700348719355533</guid><description>&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-kIdNVnD10mM/TrLuiaS6K0I/AAAAAAAAAEQ/naPzZGoDWIo/s1600/ChadoModulesCV.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="234" src="http://1.bp.blogspot.com/-kIdNVnD10mM/TrLuiaS6K0I/AAAAAAAAAEQ/naPzZGoDWIo/s320/ChadoModulesCV.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="background-color: transparent;"&gt;
Cuando una KB GeneXus crece, algunos problemas que son manejables cuando son chicas, se vuelven bien dificiles de manejar. &lt;br /&gt;
&lt;br /&gt;
Es comun, que en las KB grandes se tenga cierta especializacion en el area en que desarrolla cada uno de los programadores que trabajan en la misma KB, dividiendo los objetos en modulos. &lt;br /&gt;
&lt;br /&gt;
Una vez que uno adquiere cierta experiencia en dicho modulo, es bueno poder controlar como se comunica dicho modulo con el resto de los objetos de la KB. &lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Como “administrador del modulo”, me interesa asegurarme:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Que ningún objeto externo llame a algunos objetos internos de mi aplicacion.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Que no actualicen o borren las tablas con for eachs o new, sino que lo hagan con objetos pre-establecidos (son las API de mi modulo).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Si mi modulo necesita llamar a objetos externos (que no son de mi modulo), tener claro que dichos objetos no van a cambiar o que si cambian me van a avisar.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Conocer que modulos utilizan mi modulo y que modulos estoy utilizando.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="background-color: transparent; vertical-align: baseline;"&gt;&lt;/span&gt;Estos problemas son relativamente faciles de manejar en KB chicas, pero son muy dificiles de controlar, cuando las KB son grandes y el grupo de trabajo es numeroso. &lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Para poder hacer este chequeo en KB Grandes, estoy desarrollando una extensión que se llama &lt;a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?KBModule"&gt;KBModule.&lt;/a&gt; Aun no esta terminada, cuando lo este, voy a publicarla en el Marketplace y sera de codigo abierto para que los demas puedan adaptarla a su gusto.&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 11pt; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;
* Artech, está trabajando en incorporar modulos a GeneXus, pero tiene un alcance bastante mayor que esto. Posiblemente todo esta extension se vea incorporada a GeneXus, por lo que posiblemente todo el trabajo realizado con esta herramienta tenga que ser desechado. &lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 11pt; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 11pt; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: transparent; font-family: Arial; font-size: 11pt; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;b&gt;Cosas que faltan&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: transparent; font-family: Arial; font-size: 11pt; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Buena performance. &lt;br /&gt;
Mejores graficos. &lt;br /&gt;
Módulos como categorías&lt;br /&gt;
Inicializar en publico obj llamados por mas de un modulo.&lt;br /&gt;
Warnings al salvar si hay error.&lt;br /&gt;
Objeto Publico llamado solo desde mi modulo. (podria ser privado)&lt;/div&gt;
&lt;div style="background-color: transparent;"&gt;
Mas reportes. &lt;/div&gt;
&lt;div style="background-color: transparent;"&gt;
&lt;ul&gt;
&lt;li&gt;Tabla con trn en mas de un modulo.&lt;/li&gt;
&lt;li&gt;Publico no llamado&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Obj de un modulo que solo es llamado del otro.&lt;/li&gt;
&lt;li&gt;Privado llamado de otro modulo&lt;/li&gt;
&lt;/ul&gt;
Tablas&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;read, write, update, delete (controles independientes)&lt;/li&gt;
&lt;li&gt;Controlar objetos que hacen read de una tabla de otro modulo y no se tiene Public en Read. Igual con Update, Insert, Delete.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Si alguien tiene sugerencias para hacer, este es el momento. Pongan un comentario con como piensan que lo usarian y que es lo que quieren y vemos que es lo que se puede implementar.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Un video donde se ve la funcionalidad basica.&lt;/div&gt;
&lt;div&gt;
&lt;object class="embeddedObject" data="http://content.screencast.com/users/EAlmeida/folders/Jing/media/cdf71403-b9c3-4421-a30e-3d87dc764c5d/jingswfplayer.swf" height="785" id="scPlayer" type="application/x-shockwave-flash" width="1119"&gt;
 &lt;param name="movie" value="http://content.screencast.com/users/EAlmeida/folders/Jing/media/cdf71403-b9c3-4421-a30e-3d87dc764c5d/jingswfplayer.swf"&gt;

 &lt;param name="quality" value="high"&gt;

 &lt;param name="bgcolor" value="#FFFFFF"&gt;

 &lt;param name="flashVars" value="containerwidth=1119&amp;amp;containerheight=785&amp;amp;thumb=http://content.screencast.com/users/EAlmeida/folders/Jing/media/cdf71403-b9c3-4421-a30e-3d87dc764c5d/FirstFrame.jpg&amp;amp;content=http://content.screencast.com/users/EAlmeida/folders/Jing/media/cdf71403-b9c3-4421-a30e-3d87dc764c5d/KBModule%201.3%20(Beta).swf&amp;amp;blurover=false"&gt;

 &lt;param name="allowFullScreen" value="true"&gt;

 &lt;param name="scale" value="showall"&gt;

 &lt;param name="allowScriptAccess" value="always"&gt;

 &lt;param name="base" value="http://content.screencast.com/users/EAlmeida/folders/Jing/media/cdf71403-b9c3-4421-a30e-3d87dc764c5d/"&gt;

&lt;/object&gt;

&lt;/div&gt;
&lt;div dir="ltr" style="margin-bottom: 0pt; margin-left: 11pt; margin-right: 11pt; margin-top: 0pt;"&gt;
&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="margin-bottom: 0pt; margin-left: 11pt; margin-right: 11pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Articulos de este blog que hablan de temas similares. &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="margin-bottom: 0pt; margin-left: 11pt; margin-right: 11pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: transparent;"&gt;
&lt;br /&gt;
&lt;a href="http://ealmeida.blogspot.com/2007/09/genexus-extensions-diagrama-de-modulos.html" id="internal-source-marker_0.049522256944328547"&gt;&lt;span style="background-color: transparent; color: #000099; font-size: 11pt; vertical-align: baseline;"&gt;http://ealmeida.blogspot.com/2007/09/genexus-extensions-diagrama-de-modulos.html&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://ealmeida.blogspot.com/2008/07/falta-de-mdulos-buenos-son-los-folders.html"&gt;&lt;span style="background-color: transparent; color: #000099; font-size: 11pt; vertical-align: baseline;"&gt;http://ealmeida.blogspot.com/2008/07/falta-de-mdulos-buenos-son-los-folders.html&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://ealmeida.blogspot.com/2008/07/modularizando-una-knowledge-base.html"&gt;&lt;span style="background-color: transparent; color: #000099; font-size: 11pt; vertical-align: baseline;"&gt;http://ealmeida.blogspot.com/2008/07/modularizando-una-knowledge-base.html&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://ealmeida.blogspot.com/2008/08/falta-de-mdulos-buenos-son-los-folders.html"&gt;&lt;span style="background-color: transparent; color: #000099; font-size: 11pt; vertical-align: baseline;"&gt;http://ealmeida.blogspot.com/2008/08/falta-de-mdulos-buenos-son-los-folders.html&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://ealmeida.blogspot.com/2010/04/modulos-en-genexus-x.html"&gt;&lt;span style="background-color: transparent; color: #000099; font-size: 11pt; vertical-align: baseline;"&gt;http://ealmeida.blogspot.com/2010/04/modulos-en-genexus-x.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-2903700348719355533?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=mvtKSNbvuUk:5jkSQTUX0Yo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=mvtKSNbvuUk:5jkSQTUX0Yo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=mvtKSNbvuUk:5jkSQTUX0Yo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=mvtKSNbvuUk:5jkSQTUX0Yo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/mvtKSNbvuUk" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-03T21:24:20.936-02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-kIdNVnD10mM/TrLuiaS6K0I/AAAAAAAAAEQ/naPzZGoDWIo/s72-c/ChadoModulesCV.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/11/kbmodule-13-beta-modularizando-kb.html</feedburner:origLink></item><item><title>Reunion por KB Grandes.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/68tTjTJrMYY/reunion-por-kb-grandes.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Fri, 16 Sep 2011 05:13:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-1073645502203899971</guid><description>&lt;a href="http://4.bp.blogspot.com/-o79XH_yrM1w/TnM9IFVIFXI/AAAAAAAAADo/paHQOUf3WVQ/s1600/p1070992.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="213" src="http://4.bp.blogspot.com/-o79XH_yrM1w/TnM9IFVIFXI/AAAAAAAAADo/paHQOUf3WVQ/s320/p1070992.jpg" width="320" /&gt;&lt;/a&gt;Luego de varias idas y vueltas, logramos organizar la&amp;nbsp;reunión&amp;nbsp;para conversar sobre KB Grandes. Fue mas gente de la que pensaba.&amp;nbsp;Había&amp;nbsp;gente con KB de 2000 objetos hasta algunos con 25.000 objetos.&lt;br /&gt;
&lt;br /&gt;
Los temas que conversamos&lt;br /&gt;
&lt;br /&gt;
1)&amp;nbsp;Metodología&amp;nbsp;de desarrollo&lt;br /&gt;
Algunos contaron sobre como pasar de desarrollar en GX 9.0 varios desarrolladores en una misma KB a hacer lo mismo en la GX X. Se contaron algunas estrategias para lograr una productividad aceptable.&lt;br /&gt;
Se converso sobre el uso de GX Server.&lt;br /&gt;
&lt;br /&gt;
2) Lentitud en algunas operaciones.&lt;br /&gt;
La gente de Artech&amp;nbsp;pidió&amp;nbsp;que reportaran casos de lentitud para poder atacarlos y no tomarlos como forma normal de desarrollo.&lt;br /&gt;
&lt;br /&gt;
3) Patterns en KBGrandes.&lt;br /&gt;
La&amp;nbsp;aplicación&amp;nbsp;de patterns en KB de muchos objetos, puede multiplicar la cantidad de los mismos y hacer mas evidentes algunos problemas. Si un&amp;nbsp;patrón&amp;nbsp;desarrollado por la empresa demora mucho, conviene estudiar la forma en que el mismo esta programado.&lt;br /&gt;
&lt;br /&gt;
4) Varios otros temas interesantes relacionados.&lt;br /&gt;
&lt;br /&gt;
Creo que amerita para el&amp;nbsp;próximo&amp;nbsp;evento organizar algo mas formal, para que alguno de los que trabaja con KB monstruosas cuente la forma en que realiza su trabajo, de forma que todos podamos aprender.&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-1073645502203899971?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=68tTjTJrMYY:7_cjZiv4ijo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=68tTjTJrMYY:7_cjZiv4ijo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=68tTjTJrMYY:7_cjZiv4ijo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=68tTjTJrMYY:7_cjZiv4ijo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/68tTjTJrMYY" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-16T09:13:00.212-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-o79XH_yrM1w/TnM9IFVIFXI/AAAAAAAAADo/paHQOUf3WVQ/s72-c/p1070992.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/09/reunion-por-kb-grandes.html</feedburner:origLink></item><item><title>Charlas de Concepto en el XXI Encuentro GeneXus</title><link>http://feedproxy.google.com/~r/ealmeida/~3/4q9deCNiLOM/charlas-de-concepto-en-el-xxi-encuentro.html</link><category>Concepto</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 15 Sep 2011 12:14:07 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-2797073152362591573</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-fd8klK6WfnE/TnI-6fRdEFI/AAAAAAAAADg/E4jFktv9PzI/s1600/mvinolo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-fd8klK6WfnE/TnI-6fRdEFI/AAAAAAAAADg/E4jFktv9PzI/s1600/mvinolo.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Marcelo Viñolo expuso por parte de Concepto en la charla "&lt;b&gt;Uruguay: Pais de transito seguro Control satelital al servicio de la carga aduanera.&lt;/b&gt;" la experiencia de desarrollar aplicaciones en conjunto entre Concepto e ICA, donde cada una de las empresas brindo su conocimiento en un&amp;nbsp;área&amp;nbsp;especifica y logramos desarrollar un sistema de seguimiento satelital de camiones, que va a permitir controlar el movimiento de&amp;nbsp;mercaderías&amp;nbsp;entre&amp;nbsp;depósitos&amp;nbsp;aduaneros.&lt;br /&gt;
Una linda experiencia de integracion de mapas, webservices, alto volumen de datos y Genexus.&lt;br /&gt;
&lt;br /&gt;
Se puede ver &lt;a href="http://www3.gxtechnical.com/main22/EvViewSessionMaterial.aspx?S%3b178%3b25%3b282%3b1%3b1%3bO%3b,43,60,2423"&gt;aqui&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-x6kpptbv5J8/TnI_BFeB-vI/AAAAAAAAADk/Sg8PJxnte74/s1600/Testing.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="151" src="http://1.bp.blogspot.com/-x6kpptbv5J8/TnI_BFeB-vI/AAAAAAAAADk/Sg8PJxnte74/s320/Testing.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
Federico Alvarez y Martin Anolles, presentaron la charla "&lt;b&gt;Automatizando Test - Un año de experiencias con GXTest&lt;/b&gt;".&amp;nbsp;También&amp;nbsp;se&amp;nbsp;podría&amp;nbsp;haber llamado, "&lt;b&gt;Sangre, sudor y testing&lt;/b&gt;".&lt;br /&gt;
&lt;div&gt;
Contaron como les fue creando una&amp;nbsp;sección&amp;nbsp;de testeo y automatizacion de pruebas con GXTest.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Mi sensación en todo este proceso, es que hay que tenemos que trabajar mucho para lograr que el testing de aplicaciones sea mas sencillo, porque los resultados son buenos, pero aun cuesta mucho organizarse. Tenemos que conseguir herramientas mas sencillas para la&amp;nbsp;generación&amp;nbsp;de los casos de prueba, para la&amp;nbsp;generación&amp;nbsp;de los datos de prueba y&amp;nbsp;también&amp;nbsp;contar con herramientas de&amp;nbsp;regresión&amp;nbsp;mas sencillas de utilizar. Una linda oportunidad.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Se puede ver la charla y las ppt &lt;a href="http://www3.gxtechnical.com/main22/EvViewSessionMaterial.aspx?S%3b178%3b25%3b282%3b1%3b1%3bO%3b,43,60,2424"&gt;aqui&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-2797073152362591573?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=4q9deCNiLOM:U6mlQ-vfWbU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=4q9deCNiLOM:U6mlQ-vfWbU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=4q9deCNiLOM:U6mlQ-vfWbU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=4q9deCNiLOM:U6mlQ-vfWbU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/4q9deCNiLOM" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T16:14:07.973-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-fd8klK6WfnE/TnI-6fRdEFI/AAAAAAAAADg/E4jFktv9PzI/s72-c/mvinolo.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/09/charlas-de-concepto-en-el-xxi-encuentro.html</feedburner:origLink></item><item><title>Wish list Genexus</title><link>http://feedproxy.google.com/~r/ealmeida/~3/UVo8OB7YKB4/wish-list-genexus.html</link><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 15 Sep 2011 09:06:05 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-362092396413865612</guid><description>Mañana temprano es la charla con el grupo de desarrollo en el XXI Encuentro GeneXus.&lt;br /&gt;
&lt;br /&gt;
Este año somos muchos y no creo que pueda pedir todo lo que tengo en la lista, por lo que lo escribo acá, para que conste en actas.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Regiones de código.&lt;/b&gt;&lt;br /&gt;
Cada día mas basamos nuestros desarrollo en modelos (o patrones). algunos de estos patrones utilizan regiones de código separadas por comentarios. Seria bueno que genexus brinde un soporte mas robusto para esta problemática.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conocer el estado de los objetos&lt;/b&gt;&lt;br /&gt;
Se torna cada vez mas necesario conocer en todo momento si tengo algún error o advertencias en mis objetos, las cuales solo pueden consultarse luego de una especificación. Es necesario algún mecanismo para guardar dichos errores asociados al objeto.&lt;br /&gt;
Incluyo en estos los errores de compilación.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Deployment de aplicaciones.&lt;/b&gt;&lt;br /&gt;
Al elevar el nivel de abstraccion de nuestro desarrollo, cada día estamos mas lejos de los detalles de implementación  de las mismas. El momento de la puesta en producción nos chocamos de forma cruel con dichos detalles y eso duele.&lt;br /&gt;
Seria bueno contar con una herramienta unificada que ayude con el deployment de aplicaciones genexus.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solo RUN&lt;/b&gt;&lt;br /&gt;
En la 9.0, podíamos ejecutar algo sin salvar, especificar, compilar lo pendiente. No es difícil de implementar esto en la X y seria muy útil, por ejemplo para ejecutar una parte de la aplicaciones mientras espero que termine el build all.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Output menos bobo.&lt;/b&gt;&lt;br /&gt;
Me gustaría contar con un output que permita filtrar los errores y warnings y no tener que buscar en el mismo o paginar en el mismo.&lt;br /&gt;
También seria bueno tener la historia de los diferentes outputs.&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-362092396413865612?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=UVo8OB7YKB4:L3Ylja2Y3wg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=UVo8OB7YKB4:L3Ylja2Y3wg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=UVo8OB7YKB4:L3Ylja2Y3wg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=UVo8OB7YKB4:L3Ylja2Y3wg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/UVo8OB7YKB4" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T13:06:05.345-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/09/wish-list-genexus.html</feedburner:origLink></item><item><title>KB grandes</title><link>http://feedproxy.google.com/~r/ealmeida/~3/C8C2vlxAAQE/kb-grandes.html</link><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 12 Jan 2012 05:55:49 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-2990273071958773612</guid><description>Update: A pedido de Artech pasó para las 11:00 en la sala Picasso.&lt;br /&gt;
&lt;br /&gt;
A pedido del publico * vamos a juntarnos a charlar sobre Kb grandes en el tercer piso mañana miércoles a las 11:30 en la sala de sofás.&lt;br /&gt;
&lt;br /&gt;
No quiero que la charla se convierta en una sesión de catarsis de quejas, por lo que les pido que vengan con propuestas para los problemas de formase poder formalizar los pedidos a  Artech o a empresas que desarrollen herramientas.&lt;br /&gt;
&lt;br /&gt;
* siempre quise usar la expresión "a pedido del publico".&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://lh5.googleusercontent.com/-uN4DxCLqEcM/Tm8_xRy01EI/AAAAAAAAADc/9UVhSSnqcI4/s640/blogger-image-1948780396.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="https://lh5.googleusercontent.com/-uN4DxCLqEcM/Tm8_xRy01EI/AAAAAAAAADc/9UVhSSnqcI4/s320/blogger-image-1948780396.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-2990273071958773612?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=C8C2vlxAAQE:ZgCzm0DG0QI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=C8C2vlxAAQE:ZgCzm0DG0QI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=C8C2vlxAAQE:ZgCzm0DG0QI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=C8C2vlxAAQE:ZgCzm0DG0QI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/C8C2vlxAAQE" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-12T11:55:49.876-02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-uN4DxCLqEcM/Tm8_xRy01EI/AAAAAAAAADc/9UVhSSnqcI4/s72-c/blogger-image-1948780396.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/09/kb-grandes.html</feedburner:origLink></item><item><title>ColeBus - Parada suspendida.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/vHzr1XUup48/colebus-parada-suspendida.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Fri, 09 Sep 2011 05:49:14 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-2439931291789649549</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-KGUhFWiSZn0/TmoJacmv54I/AAAAAAAAADU/d7mYfEG4ASc/s1600/bus-stop-sign-blue-md.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-KGUhFWiSZn0/TmoJacmv54I/AAAAAAAAADU/d7mYfEG4ASc/s1600/bus-stop-sign-blue-md.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Al final no presentamos el proyecto COLEBus al GeneXus Challenge. Por falta de tiempo no llegamos a programar todo lo que&amp;nbsp;queríamos&amp;nbsp;y el concurso no se&amp;nbsp;merecía&amp;nbsp;que&amp;nbsp;presentáramos&amp;nbsp;algo que no estaba terminado. Nos faltan aun las notificaciones y poder mejorar la forma de mostrar los mapas.&lt;br /&gt;
&lt;br /&gt;
Aprendimos bastante en camino sobre GAM, Android, iOS y el paradigma de desarrollo de GX para Smart Devices. Por otro lado se nos hizo&amp;nbsp;difícil&amp;nbsp;seguirle el ritmo a los cambios de los Night Build y sus naturales inestabilidades, pues&amp;nbsp;hacíamos&amp;nbsp;el proyecto fuera de las horas laborales.&lt;br /&gt;
&lt;br /&gt;
Quedará para la próxima .&lt;br /&gt;
&lt;br /&gt;
Felicito a los organizadores y a los ganadores del concurso!.&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-2439931291789649549?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=vHzr1XUup48:4Pen3mdADRQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=vHzr1XUup48:4Pen3mdADRQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=vHzr1XUup48:4Pen3mdADRQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=vHzr1XUup48:4Pen3mdADRQ:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/vHzr1XUup48" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-09T09:49:14.464-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-KGUhFWiSZn0/TmoJacmv54I/AAAAAAAAADU/d7mYfEG4ASc/s72-c/bus-stop-sign-blue-md.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/09/colebus-parada-suspendida.html</feedburner:origLink></item><item><title>Building a Hacker Culture in Uruguay</title><link>http://feedproxy.google.com/~r/ealmeida/~3/HEfgY9XMuUs/building-hacker-culture-in-uruguay.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Sat, 20 Aug 2011 18:03:45 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-7552970888433161038</guid><description>&lt;a href="http://twitter.com/rabble"&gt;@rabble&lt;/a&gt;&amp;nbsp;hizo una presentacion que me gusto mucho&lt;br /&gt;
&lt;div id="__ss_8833685" style="width: 425px;"&gt;
&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/rabble/building-a-hacker-culture-in-uruguay-oscon-2011" target="_blank" title="Building a Hacker Culture in Uruguay - OSCON 2011"&gt;Building a Hacker Culture in Uruguay - OSCON 2011&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/8833685" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;
&lt;div style="padding: 5px 0 12px;"&gt;
View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/rabble" target="_blank"&gt;Rabble .&lt;/a&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-7552970888433161038?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=HEfgY9XMuUs:ET3sR5uO2FE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=HEfgY9XMuUs:ET3sR5uO2FE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=HEfgY9XMuUs:ET3sR5uO2FE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=HEfgY9XMuUs:ET3sR5uO2FE:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/HEfgY9XMuUs" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-20T22:03:45.943-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/08/building-hacker-culture-in-uruguay.html</feedburner:origLink></item><item><title>Usabilizando Genexus: Guardar historia de outputs</title><link>http://feedproxy.google.com/~r/ealmeida/~3/m_mHcRFJLrU/usabilizando-genexus-guardar-historia.html</link><category>Usabilizando Genexus</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Mon, 15 Aug 2011 15:02:32 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-8535331376645371909</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-MYIi-gc08_k/TkmU0vX5OuI/AAAAAAAAADM/35nPKGCTk68/s1600/usability-myth.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="159" src="http://2.bp.blogspot.com/-MYIi-gc08_k/TkmU0vX5OuI/AAAAAAAAADM/35nPKGCTk68/s320/usability-myth.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
Hay una cosa que no me resulta practica cuando trabajo con GeneXus X en KB grandes: &lt;b&gt;pierdo el resultado de los build all.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Mi forma de trabajo es la siguiente, hago&amp;nbsp;algún&amp;nbsp;cambio, hago un build all y luego miro si hay errores en la&amp;nbsp;especificación,&amp;nbsp;generación&amp;nbsp;o&amp;nbsp;compilación. &amp;nbsp;El build all, cuando se trabaja con una KB grande puede demorar mucho.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Si hay errores, tomo el primero y lo soluciono, modificando el objeto y&amp;nbsp;mandándolo&amp;nbsp;especificar solo. Esto hace que pierda el log de errores anteriores, si no me acuerdo de salvarlo (nunca me acuerdo). Esto me hace perder mucho tiempo, pues tengo que lanzar nuevamente un build all.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Solo el calcular cuales son los objetos modificados, demora varios minutos, aunque no haya modificado solo un objeto, con lo que el proceso se hace bastante engorroso.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Estaría&amp;nbsp;bueno que pudiese tener los logs de las ultimas 10 especificaciones/generaciones/compilaciones y poder consultarlas todas. &amp;nbsp;Creo que con esto, se podria mejorar el ciclo de desarrollo en KB grandes.&lt;br /&gt;
&lt;br /&gt;
Otra opcion, es poder "marcar" algunas salidas como que no son desechables, permitiendo de esta forma guardar esa corrida, para que la siguiente no la pase por arriba.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-8535331376645371909?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=m_mHcRFJLrU:DUizhtq40sE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=m_mHcRFJLrU:DUizhtq40sE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=m_mHcRFJLrU:DUizhtq40sE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=m_mHcRFJLrU:DUizhtq40sE:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/m_mHcRFJLrU" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-15T19:02:32.576-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-MYIi-gc08_k/TkmU0vX5OuI/AAAAAAAAADM/35nPKGCTk68/s72-c/usability-myth.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/08/usabilizando-genexus-guardar-historia.html</feedburner:origLink></item><item><title>KB Grandes en el Encuentro GeneXus</title><link>http://feedproxy.google.com/~r/ealmeida/~3/RvLmfAXFQiE/kb-grandes-en-el-evneto-genexus.html</link><category>Encuentro</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 11 Aug 2011 08:04:17 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-8420300247249987754</guid><description>&lt;a href="http://3.bp.blogspot.com/-_Pd4n5iH838/TkPHQkWKchI/AAAAAAAAACk/OBbREIBE6hk/s1600/CargaPesada.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="261" src="http://3.bp.blogspot.com/-_Pd4n5iH838/TkPHQkWKchI/AAAAAAAAACk/OBbREIBE6hk/s320/CargaPesada.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
Se aproxima el Encuentro Internacional GeneXus y me&amp;nbsp;gustaría&amp;nbsp;conocer si alguien está interesado en reunirse para conversar sobre el manejo de KB grandes con GeneXus X.&lt;br /&gt;
&lt;div&gt;
&lt;a href="http://3.bp.blogspot.com/-_Pd4n5iH838/TkPHQkWKchI/AAAAAAAAACk/OBbREIBE6hk/s1600/CargaPesada.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Mi idea es compartir estrategias de desarrollo con KB grandes como para tener buena productividad en grupos de trabajos numerosos y muchos objetos.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Si estas interesado, deja un comentario y plantea cuales serian los temas que te interesa&amp;nbsp;abordar&amp;nbsp;o dudas que te&amp;nbsp;gustaría&amp;nbsp;que alguna persona responda.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Posibles temas:&lt;/div&gt;
&lt;div&gt;
* Como armar el ambiente de desarrollo para un equipo de mas de 10 desarrolladores?&lt;/div&gt;
&lt;div&gt;
*&amp;nbsp;Metodología&amp;nbsp;de trabajo con GX Server&lt;/div&gt;
&lt;div&gt;
* Como integro al equipo de testing?&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
* Como armar el ambiente de testeo con GXTest?&lt;/div&gt;
&lt;div&gt;
* Estrategias de deployment en aplicaciones grandes&lt;/div&gt;
&lt;div&gt;
* Es&amp;nbsp;posible&amp;nbsp;la intergracion continua con Genexus?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
No conozco las charlas del encuentro y puede ser que alguno de estos temas ya esten contemplados en ellas.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Si hay mas de 10 interesados (en presentar o en escuchar) hacemos las gestiones para una sala en el Encuentro a alguna hora que no&amp;nbsp;interfiera&amp;nbsp;demasiado.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-8420300247249987754?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=RvLmfAXFQiE:24HU4pPrGLg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=RvLmfAXFQiE:24HU4pPrGLg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=RvLmfAXFQiE:24HU4pPrGLg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=RvLmfAXFQiE:24HU4pPrGLg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/RvLmfAXFQiE" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-11T12:04:17.239-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-_Pd4n5iH838/TkPHQkWKchI/AAAAAAAAACk/OBbREIBE6hk/s72-c/CargaPesada.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><georss:featurename xmlns:georss="http://www.georss.org/georss">Montevideo, Uruguay</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">-34.8836111 -56.1819444</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">-35.0919876 -56.4978014 -34.6752346 -55.8660874</georss:box><feedburner:origLink>http://ealmeida.blogspot.com/2011/08/kb-grandes-en-el-evneto-genexus.html</feedburner:origLink></item><item><title>COLEbus - Avances semanales</title><link>http://feedproxy.google.com/~r/ealmeida/~3/QT0f4STq8V0/colebus-avances-semanales.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Mon, 08 Aug 2011 05:44:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-6279287182188411412</guid><description>&lt;a href="http://1.bp.blogspot.com/-p_hW-5d1xiE/Tj_YEUI97GI/AAAAAAAAACc/NAeImgiTlmU/s1600/SD1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-p_hW-5d1xiE/Tj_YEUI97GI/AAAAAAAAACc/NAeImgiTlmU/s320/SD1.png" width="214" /&gt;&lt;/a&gt;&lt;a href="http://www.facebook.com/COLEBus"&gt;COLEbus&lt;/a&gt; es una aplicación que estamos desarrollando para dispositivos&amp;nbsp;móviles (Android, iPad, Blackberry) y que participa en el &lt;a href="http://www.genexus.com/smart-challenge-ec"&gt;Smart Challenge&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Elegimos esa&amp;nbsp;aplicación, pues nos&amp;nbsp;permitía&amp;nbsp;utilizar GPS y algunos elementos de geolocalización, mapas y probar bastantes de las funcionalidades de los generadores&amp;nbsp;móviles, lo cual nos va a permitir aprender mucho (objetivo primario de participar en el concurso).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La funcionalidad que va a tener sera la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Padre/Madre&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Definir lugar de levante y bajada del niño en el viaje de mañana.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Recibir notificaciones al momento de levante/bajada del niño en la camioneta&lt;/li&gt;
&lt;li&gt;Recibir notificaciones cuando la camioneta esta&amp;nbsp;próxima&amp;nbsp;al lugar de levante&lt;/li&gt;
&lt;li&gt;Consulta del estado del viaje (duración, donde esta, etc).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Donde esta mi hijo?&lt;/li&gt;
&lt;li&gt;Configuracion de notificaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Chofer de la camioneta&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Mapa con los lugares donde levantar pasajeros&lt;/li&gt;
&lt;li&gt;Lista de lugares donde levantar pasajeros (ordenados para trayecto&amp;nbsp;mínimo)&lt;/li&gt;
&lt;li&gt;Inicio del viaje&lt;/li&gt;
&lt;li&gt;Fin del viaje&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Acompañante de la camioneta&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Registro de subida y bajada de pasajero&lt;/li&gt;
&lt;li&gt;Mapa con los pasajeros que hay que levantar&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Consultas&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Estado de un viaje&lt;/li&gt;
&lt;li&gt;Estadísticas&amp;nbsp;de viaje&lt;/li&gt;
&lt;li&gt;Gráficas&amp;nbsp;de los datos&amp;nbsp;estadísticos.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;Otros&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Configuración&amp;nbsp;de seguridad/GAM&lt;/li&gt;
&lt;li&gt;Mantenimiento de datos&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Carga de datos inicial (para pruebas).&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-URGghllF81k/Tj_ZVpKbNHI/AAAAAAAAACg/4JqLL8g7BZc/s1600/SD2.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-URGghllF81k/Tj_ZVpKbNHI/AAAAAAAAACg/4JqLL8g7BZc/s320/SD2.png" width="220" /&gt;&lt;/a&gt;&lt;/div&gt;
Un problema&amp;nbsp;interesante&amp;nbsp;que nos encontramos es uno de optimización. Si se tienen varias camionetas, y varios lugares para levantar pasajeros, determinar como dividir dichos lugares, de forma de hacer&amp;nbsp;mínimo&amp;nbsp;el trayecto de ambas camionetas. Si el problema de determinar el camino&amp;nbsp;mínimo&amp;nbsp;de un conjunto de puntos, es NP-completo, el de determinar conjuntos de puntos para hacer dos caminos&amp;nbsp;mínimos, parece ser de una complejidad bastante mayor, pero pueden&amp;nbsp;existir&amp;nbsp;algunas heuristicas que ayuden.&lt;br /&gt;
&lt;br /&gt;
Al terminar el proyecto, la KB quedara disponible en el GXServer publico para el que la quiera consultar o usar.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Si queres ayudar a este proyecto, podes apretar el boton de &lt;b&gt;Me Gusta o Like &lt;/b&gt;en el cuadro de abaj&lt;b&gt;o&lt;/b&gt;, y nos ayudas con un voto para no pasar vergüenza con los otros participantes que usan mucho mas facebook que nosotros :)&lt;/div&gt;
&lt;br /&gt;
&lt;div id="fb-root"&gt;
&lt;/div&gt;
&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;
&lt;/script&gt;&lt;fb:like-box border_color="" header="true" href="http://www.facebook.com/COLEBus" show_faces="true" stream="true" width="292"&gt;&lt;/fb:like-box&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-6279287182188411412?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=QT0f4STq8V0:Y3s1jH2xhyA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=QT0f4STq8V0:Y3s1jH2xhyA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=QT0f4STq8V0:Y3s1jH2xhyA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=QT0f4STq8V0:Y3s1jH2xhyA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/QT0f4STq8V0" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-08T09:44:39.877-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-p_hW-5d1xiE/Tj_YEUI97GI/AAAAAAAAACc/NAeImgiTlmU/s72-c/SD1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/08/colebus-avances-semanales.html</feedburner:origLink></item><item><title>COLEBus  - Genexus Smart Devices  Challenge</title><link>http://feedproxy.google.com/~r/ealmeida/~3/u4aYobzYGsE/colebus-genexus-smart-devices-challenge.html</link><category>GXChallenge</category><category>COLEBus</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Sun, 31 Jul 2011 15:06:33 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-7155299886976714482</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-kfIZeRuNQ-M/TigkDm4vaMI/AAAAAAAAACU/Ni1y-6_K7V8/s1600/otto-simpsons-280351.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-kfIZeRuNQ-M/TigkDm4vaMI/AAAAAAAAACU/Ni1y-6_K7V8/s320/otto-simpsons-280351.jpeg" width="254" /&gt;&lt;/a&gt;&lt;/div&gt;Artech organizó &lt;a href="http://www.genexus.com/smart-challenge-ec"&gt;una competencia&lt;/a&gt; para quienes quisieran probar la&amp;nbsp;&lt;a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?GeneXus+X+Evolution+2+Night+Builds,"&gt;versión&amp;nbsp;GX Evolution II&lt;/a&gt; desarrollando una&amp;nbsp;aplicación&amp;nbsp;para dispositivos móviles (iPad, iPhone, celulares/tabletas Android, Blackberry) .&lt;br /&gt;
&lt;br /&gt;
En &lt;a href="http://www.concepto.com.uy/"&gt;Concepto&lt;/a&gt;, decidimos participar, para competir, que siempre es lindo y ademas para sacarnos de la zona de confort de desarrollo y forzarnos un poco en el&amp;nbsp;área&amp;nbsp;del desarrollo para plataformas&amp;nbsp;móviles&amp;nbsp;que no es nuestro fuerte y que vamos a tener que usar en el futuro.&lt;br /&gt;
&lt;br /&gt;
Hay mucha gente que esta mas avanzada que nosotros en el desarrollo de este tipo de aplicaciones, por lo que no &amp;nbsp;tengo demasiadas esperanzas de ganar, pero creo igual que la experiencia va a ser muy positiva, como lo ha sido en otras oportunidades.&lt;br /&gt;
&lt;br /&gt;
Teníamos&amp;nbsp;que elegir una idea para implementar y&amp;nbsp;queríamos&amp;nbsp;que fuera algo que nos permitiera utilizar la&amp;nbsp;mayoría&amp;nbsp;de las funcionalidades de las plataformas&amp;nbsp;móviles&amp;nbsp;(GPS, tomar fotos, notificaciones, SMS, twitts, etc).&lt;br /&gt;
Manejamos varias opciones, algunas relacionadas con proyectos reales de clientes y otras mas alejadas de la realidad.&lt;br /&gt;
&lt;br /&gt;
Alejandro propuso hacer un software para el manejo de omnibus de transporte escolar y elegimos esa. Tiene de bueno que como no es algo relacionado con nuestro trabajo, va a permitir hacerla publica y ademas contar un poco el proceso de desarrollo.&lt;br /&gt;
&lt;br /&gt;
Ahi&amp;nbsp;nació&amp;nbsp;el proyecto COLEBus. El objetivo del mismo es brindar un sistema para que sea usado por Choferes/Acompañantes de&amp;nbsp;ómnibus&amp;nbsp;escolares, para el armado de viajes, registro de subidas/bajadas de pasajeros y por los Padres de los niños, que indican donde deben ser recogidos y entregados los niños, teniendo&amp;nbsp;notificación&amp;nbsp;cuando fueron entregados (o poco antes que sean pasados a buscar).&lt;br /&gt;
La idea es manejar que puedan existir cambios en los trayectos, cuando un niño no vuelve a su lugar habitual, sino que se va a la casa de otro amigo o cosas del estilo.&lt;br /&gt;
&lt;br /&gt;
También&amp;nbsp;vamos a investigar un poco sobre la&amp;nbsp;determinación&amp;nbsp;de camino mas corto entre varios puntos (el famoso problema &lt;a href="http://en.wikipedia.org/wiki/Travelling_salesman_problem"&gt;NP completo del Travelling Salesman&lt;/a&gt;), aunque no creo que lleguemos a demasiado porque hay poco tiempo para su implementación. Nos&amp;nbsp;debería&amp;nbsp;permitir investigar algo mas sobre algoritmos&amp;nbsp;genéticos&amp;nbsp;y&amp;nbsp;también&amp;nbsp;en calculo de distancias en rutas (que son diferentes a las distancias en planos).&lt;br /&gt;
&lt;br /&gt;
Mi experiencia desarrollando con Genexus para Smart Devices no&amp;nbsp;había&amp;nbsp;sido demasiado satisfactoria, pues en la Beta1&amp;nbsp;probé&amp;nbsp;con Android sin mucha suerte, y en la Beta2 hice pruebas con iPad, pero tuve problemas para conectarme al dispositivos.&lt;br /&gt;
&lt;br /&gt;
En la Beta3, intenté nuevamente con Android, y&lt;b&gt; funcionó todo de primera.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;En que estamos?&lt;/b&gt;&lt;br /&gt;
Por ahora tenemos una pagina del proyecto &lt;b&gt;&lt;a href="http://www.facebook.com/pages/ColeBus/121103861315474"&gt;COLEBus en Facebook&lt;/a&gt;.&lt;/b&gt; Necesitamos llegar a los 25 ME GUSTA, para poder pasar a otra etapa.&lt;br /&gt;
&lt;br /&gt;
Para sacarnos aun mas de la zona de confort, vamos a desarrollar con ruby/sqlserver, haciendo paginas en Facebook y usando el GXServer publico (para que todo el mundo pueda ver la KB generada) y ejercitar el trabajo en grupo a distancia con Alexander y Alejandro.&lt;br /&gt;
&lt;br /&gt;
En fin, resulta interesante toda la experiencia y me&amp;nbsp;gustaría&amp;nbsp;tener mas tiempo para dedicarle.&lt;br /&gt;
&lt;br /&gt;
El modelo de datos va quedando de la siguiente forma (era indispensable la utilizacion de los &lt;a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Category%3ADomains+with+Special+Semantics,"&gt;nuevos dominios con sus nuevas funcionalidades&lt;/a&gt;) :&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LFF0cjr8uh4/Tigj75zkmYI/AAAAAAAAACQ/61ICD_oGUYc/s1600/ColeBusDiagram.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="277" src="http://4.bp.blogspot.com/-LFF0cjr8uh4/Tigj75zkmYI/AAAAAAAAACQ/61ICD_oGUYc/s320/ColeBusDiagram.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;La aplicación ejecutando en el emulador Android (aun sin ningun "desarrollo"). Realmente muy poco esfuerzo para llega a tener esto funcionando.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/-9pzWKr-ZHdE/Tigk81Li-0I/AAAAAAAAACY/Ac9REWfaHfk/s1600/ColeBus1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-9pzWKr-ZHdE/Tigk81Li-0I/AAAAAAAAACY/Ac9REWfaHfk/s320/ColeBus1.png" width="221" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Aun falta bastante, pero me quede contento que con poco esfuerzo ya tengamos un primer prototipo. Contare los avances en&amp;nbsp;próximos&amp;nbsp;post.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPDATE&lt;/b&gt;: Como ya superamos sobrados los 25 Likes, pudimos pedir el nombre de pagina mas amigable&lt;br /&gt;
&lt;a href="http://www.facebook.com/COLEBus"&gt;http://www.facebook.com/COLEBus&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like-box href="http://www.facebook.com/COLEBus" width="292" show_faces="true" border_color="" stream="true" header="true"&gt;&lt;/fb:like-box&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-7155299886976714482?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=u4aYobzYGsE:pKLX72LldSQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=u4aYobzYGsE:pKLX72LldSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=u4aYobzYGsE:pKLX72LldSQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=u4aYobzYGsE:pKLX72LldSQ:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/u4aYobzYGsE" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-31T19:06:33.561-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-kfIZeRuNQ-M/TigkDm4vaMI/AAAAAAAAACU/Ni1y-6_K7V8/s72-c/otto-simpsons-280351.jpeg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/07/colebus-genexus-smart-devices-challenge.html</feedburner:origLink></item><item><title>Curriculum Vitae</title><link>http://feedproxy.google.com/~r/ealmeida/~3/1iSocJzbIMA/curriculum-vitae.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 30 Jun 2011 09:41:54 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-5289713159848710950</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-eCEpgHUAo3w/Tgym5ua_XwI/AAAAAAAAACA/OwYM8ZJ6x08/s1600/curriculum.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-eCEpgHUAo3w/Tgym5ua_XwI/AAAAAAAAACA/OwYM8ZJ6x08/s1600/curriculum.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;En varias oportunidades me ha tocado hacer&amp;nbsp;selección&amp;nbsp;de personas para trabajar en Concepto y&amp;nbsp;también&amp;nbsp;me han pedido sugerencias o referencias para trabajar en otras empresas del rubro&amp;nbsp;informático.&lt;br /&gt;
&lt;br /&gt;
Lo que cada integrante dice que hizo, es importante, pero tambien se toma mucho en cuenta, la participacion de las personas en redes sociales, proyectos open source, foros de discusion y demas.&lt;br /&gt;
&lt;br /&gt;
Porque digo esto? Por que algunas oportunidades, he visto a personas que son muy capaces&amp;nbsp;técnicamente&amp;nbsp;comportarse como inadaptados en los medios. Esto puede perjudicarlos en el futuro, cuando intenten conseguir trabajo en otras empresas.&lt;br /&gt;
&lt;br /&gt;
Si estoy eligiendo una persona que va a estar en contacto con clientes, no quiero a alguien que pueda dejar una mala &amp;nbsp;imagen de la empresa, por lo que posiblemente no contrate a las personas que no saben expresarse correctamente o &amp;nbsp;insultan cuando se comunican con otros.&lt;br /&gt;
&lt;br /&gt;
Por eso, como&amp;nbsp;recomendación&amp;nbsp;a todos los que trabajan en&amp;nbsp;informática, es que cuiden su imagen publica, moderando lo que comparten y como se comunican, &amp;nbsp;El Curriculum es cada vez menos la hoja impresa donde uno cuenta lo que hizo y cuando lo hizo, sino que es la suma de todos los registros y perfiles que quedan &amp;nbsp;en Internet.&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-5289713159848710950?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=1iSocJzbIMA:HmiU9YCChFg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=1iSocJzbIMA:HmiU9YCChFg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=1iSocJzbIMA:HmiU9YCChFg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=1iSocJzbIMA:HmiU9YCChFg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/1iSocJzbIMA" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-30T13:41:54.069-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-eCEpgHUAo3w/Tgym5ua_XwI/AAAAAAAAACA/OwYM8ZJ6x08/s72-c/curriculum.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">10</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/06/curriculum-vitae.html</feedburner:origLink></item><item><title>De programador a habil declarante.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/5w4soFALpCs/de-programador-habil-declarante.html</link><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Sat, 25 Jun 2011 16:51:41 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-2427910621082389625</guid><description>Dentro del desarrollo de aplicaciones, las herramientas utilizadas&amp;nbsp;están&amp;nbsp;en permanente&amp;nbsp;evolución. Todos tratan de crear herramientas que hagan mas&amp;nbsp;fácil&amp;nbsp;crear programas mas&amp;nbsp;rápido&amp;nbsp;y mejor, de forma de hacer mas productivos a quienes desarrollamos aplicaciones.&amp;nbsp;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;En dicha tendencia, se destacan las que permiten trabajar con &lt;b&gt;modelos&lt;/b&gt; donde la realidad se modela (valga la redundancia) declarando parte de la misma con un lenguaje especifico para dicha realidad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Tomando por ejemplo GeneXus que es la herramienta que utilizo, en la misma se esta viendo clara esta evolucion. Lo que sigue son algunos ejemplos de dichos modelos a traves de las diferentes versiones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Al principio, se&amp;nbsp;tenían&amp;nbsp;Transacciones. En las mismas se modela varias cosas, pues tiene por un lado &lt;b&gt;estructuras&lt;/b&gt; (que definen a traves de un proceso de normalizacion, la estructura de la base las tablas de la base &amp;nbsp;de datos), &lt;b&gt;pantallas&lt;/b&gt; (donde se dice como se va a mostrar estos datos al usuario), &lt;b&gt;reglas&lt;/b&gt; (donde se declaran que validaciones hay que realizar cuando el usuario ingresa datos) y &lt;b&gt;propiedades&lt;/b&gt; (donde se declara modela comportamientos diferentes que se quieren dar a dicho ingreso de datos).&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Pasaron los años y se inventaron los &lt;b&gt;GeneXus Pattern&lt;/b&gt;s (el nombre es malo, pero es una herramienta que genera programas GeneXus, a partir de modelos, que implementan un&amp;nbsp;patrón&amp;nbsp;de diseño y/o comportamiento).&lt;/div&gt;&lt;div&gt;El mas conocido de los patrones implementados era el &lt;b&gt;WorkWith&lt;/b&gt;, que&amp;nbsp;permite&amp;nbsp;generar un programa de alta/baja/modificación/listado de datos, basados en&amp;nbsp;transacciones.&amp;nbsp;&lt;/div&gt;&lt;div&gt;La forma de desarrollar cambio radicalmente, pues se generan en forma facil una parte importante de los sistemas. En este momento, los desarrolladores pasamos de programar (cambiando&amp;nbsp;código) a editar archivos XML (instancias de los patterns) con editores&amp;nbsp;específicos&amp;nbsp;y a partir de ellos se generan los programas.&amp;nbsp;&lt;/div&gt;&lt;div&gt;El nivel de&amp;nbsp;abstracción&amp;nbsp;se eleva, pero&amp;nbsp;también&amp;nbsp;la productividad,&amp;nbsp;perdiéndose&amp;nbsp;parte de la flexibilidad.&lt;/div&gt;&lt;div&gt;Aparecieron en el mercado nuevos patrones mas&amp;nbsp;sofisticados&amp;nbsp;o que resuelven otros problemas mas especificos.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Pasa el tiempo, y aumentan las necesidades de mantener cada vez aplicaciones mas grandes.&amp;nbsp;También&amp;nbsp;aparecen nuevos dispositivos en el mercado y con ellos la necesidad de generar para dichos dispositivos.&lt;/div&gt;&lt;div&gt;Con esta necesidad, aparecen patrones especificos para la generacion de dispositivos moviles, que hacen posible que a partir de un mismo modelo, se pueda generar para plataformas bien diversas.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Esto hace que el nivel de abstraccion vuelva a elevarse, y tambien se pierde otro poco de flexibilidad, pero se gana en productividad para varias plataformas.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Otro aspecto en lo que hemos ido avanzando en la tendencia de declarar en vez de programar es en el diseño de las pantallas. En vez de dibujar una pantalla en un editor wysiwyg, se declara cuales son los campos que se quieren en la pantalla, en que orden, como se pueden separar en columnas, que descripciones se quieren y la pantalla se genera a partir de dichas declaraciones. Este enfoque tiene la ventaja que permite regenerar todas las pantallas en forma facil cuando se produce algun cambio en las especificaciones de diseño o tambien cuando se quiere generar para otra plataforma. Ya hay varios patrones que implementan esto y parece una tendencia que va a seguir.&amp;nbsp;&lt;/div&gt;&lt;div&gt;En vez de diseñar, declaramos.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Lo mismo pasa con los procedures que&amp;nbsp;usábamos&amp;nbsp;para recuperar determinados datos, ahora se hacen a&amp;nbsp;través&amp;nbsp;de un lenguaje declarativo de los Data Providers. Los mismos tienen propiedades que permiten que el mismo data provider tenga salida en diferentes formatos (soap, json, xml, etc).&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Un tema importante de esta forma de trabajar es que hay que conocer muy bien las posibilidades de las herramientas, pues el cambio de una propiedad puede hacer que se generen programas bien distintos.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Todo esto, hace que cada vez "programemos" menos y "declaremos" mas, con un aumento de productividad y un aumento en el nivel de&amp;nbsp;abstracción&amp;nbsp;y algo de perdida de flexibilidad.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-2427910621082389625?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5w4soFALpCs:SAPAmpt8ZPE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5w4soFALpCs:SAPAmpt8ZPE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5w4soFALpCs:SAPAmpt8ZPE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5w4soFALpCs:SAPAmpt8ZPE:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/5w4soFALpCs" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-25T20:51:41.368-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">10</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/06/de-programador-habil-declarante.html</feedburner:origLink></item><item><title>La productividad en tiempos de Twitter.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/p72BwZezN3c/la-productividad-en-tiempos-de-twitter.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Fri, 24 Jun 2011 05:54:38 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-5291897364119979820</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-RZYHOXqPopA/TgSFIkxtdpI/AAAAAAAAAB8/j4bJ6w0MeGE/s1600/graph-down.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://1.bp.blogspot.com/-RZYHOXqPopA/TgSFIkxtdpI/AAAAAAAAAB8/j4bJ6w0MeGE/s320/graph-down.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Si bien soy usuario de varias redes sociales (Facebook, Linkedin, etc) la&amp;nbsp;única&amp;nbsp;que uso en forma consistente es Twitter.&lt;br /&gt;
&lt;br /&gt;
Lo empece a usar en Abril del 2007 (soy el usuario &lt;b&gt;&lt;a href="http://twitter.com/#!/ealmeida"&gt;@ealmeida&lt;/a&gt; &lt;/b&gt;&amp;nbsp;#&lt;span class="Apple-style-span" style="background-color: white; font-family: 'Lucida Grande', sans-serif; font-size: 14px;"&gt;3.248.201)&amp;nbsp;&lt;/span&gt;y en el primer momento si bien me&amp;nbsp;pareció&amp;nbsp;una idea interesante, no logre encontrarle utilidad. &amp;nbsp;En ese &amp;nbsp;momento no&amp;nbsp;había&amp;nbsp;demasiada gente de mi entorno y mi comunidades para seguir por lo que lo que se&amp;nbsp;podía&amp;nbsp;consumir eran contenidos bastante&amp;nbsp;genéricos. Ademas me&amp;nbsp;parecía&amp;nbsp;que tener mensajes cortos de 140 caracteres que uno&amp;nbsp;leía&amp;nbsp;en forma aislada, carente de contexto, no resultaban&amp;nbsp;fáciles&amp;nbsp;de interpretar.&lt;br /&gt;
&lt;br /&gt;
Con el correr del tiempo empezaron a aparecer mas personas que usan Twitter y entonces la cosa&amp;nbsp;empezó&amp;nbsp;a tener mas sentido y se&amp;nbsp;volvió&amp;nbsp;mas&amp;nbsp;útil. Al tener una red amplia de gente que le interesan temas similares, cuando alguien detecta una noticia interesante se la muestra al resto, haciendo que todos estemos mas informados. Emulando al cuerpo humano, &lt;a href="http://www.evoluzination.com/2011/05/twitter-is-closer-to-emulate-neural.html"&gt;twitter seria como el cerebro&lt;/a&gt;, y al &amp;nbsp;agregarle fotos, links y audio estos&amp;nbsp;emularían&amp;nbsp;los sentidos, haciendo de todos&amp;nbsp;nosotros&amp;nbsp;un 'organismo inteligente'.&lt;br /&gt;
Esto permite por ejemplo evaluar conferencias a las que no pude asistir y enterarme cuales charlas estuvieron buenas y cuales no tanto.&amp;nbsp;También&amp;nbsp;permiten detectar en forma temprana tendencias de mercado, lo cual es maravilloso.&lt;br /&gt;
&lt;br /&gt;
Otra de las ventajas que tiene seguir personas conocidas, es que en la misma herramienta se pueden tener mensajes de humor,&amp;nbsp;artículos&amp;nbsp;técnicos, ideas para el futuro, insultos y alientos futboleros y twits&amp;nbsp;temáticos&amp;nbsp;sobre conferencias o temas&amp;nbsp;específicos. Esto crea un ecosistema divertido y&amp;nbsp;útil. Ademas el intercambio de ideas permite que las mejores se distingan y otros puedan mejorar las mismas.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cual es la contra de Twitter?&lt;/b&gt; Que para que sea util hay que estar conectado y leer algunos mensajes. A mi me resulta bastante adictivo y si no los leo pienso que me puedo perder algo.&lt;br /&gt;
&lt;br /&gt;
A medida que estoy siguiendo a mas personas interesantes, se ha producido una&amp;nbsp;caída&amp;nbsp;en mi productividad, pues paso mucho tiempo leyendo twits y menos produciendo. Para mi es un medio nuevo de&amp;nbsp;comunicación, por lo que si bien tengo que mantener leyendo mails y blogs le agrego el tiempo de lectura y&amp;nbsp;clasificación&amp;nbsp;de los mensajes de Twitter. No puedo predecir los efectos a largo plazo, pero a corto plazo son bastante desastrosos.&lt;br /&gt;
&lt;br /&gt;
Como medidas&amp;nbsp;básicas, saque todo tipo de notificaciones en las herramientas de twitter y limitando el horario en que me conecto, pero no se si esto sera suficiente.&lt;br /&gt;
&lt;br /&gt;
Me&amp;nbsp;encantaría&amp;nbsp;conocer si otros&amp;nbsp;están&amp;nbsp;con los mismos problemas y como los encararon.&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-5291897364119979820?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=p72BwZezN3c:4M7FkP6ADps:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=p72BwZezN3c:4M7FkP6ADps:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=p72BwZezN3c:4M7FkP6ADps:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=p72BwZezN3c:4M7FkP6ADps:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/p72BwZezN3c" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-24T09:54:38.912-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-RZYHOXqPopA/TgSFIkxtdpI/AAAAAAAAAB8/j4bJ6w0MeGE/s72-c/graph-down.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/06/la-productividad-en-tiempos-de-twitter.html</feedburner:origLink></item><item><title>Por que no hay betatesting de GXServer?</title><link>http://feedproxy.google.com/~r/ealmeida/~3/pWVCuJeHTJY/porque-no-hay-betatesting-de-gxserver.html</link><category>GeneXus Server</category><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Tue, 17 May 2011 07:14:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-9062975153694782171</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://1.bp.blogspot.com/-L4MgthTJ2hA/TdEfuq8dC_I/AAAAAAAAAB4/vzp5JlENk0E/s1600/GeneXusServer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-L4MgthTJ2hA/TdEfuq8dC_I/AAAAAAAAAB4/vzp5JlENk0E/s1600/GeneXusServer.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,28,363,O,E,0,MNU;E;92;1;MNU&amp;amp;gclid=CLeexKPA7KgCFdI32godQAhCCA"&gt;GeneXus Server&lt;/a&gt; es un producto que facilita el desarrollo de aplicaciones grandes en grupos de desarrollo numerosos con GeneXus.&lt;br /&gt;
Con estas&amp;nbsp;características, es un producto que va a ser cada&amp;nbsp;día&amp;nbsp;mas critico en el desarrollo para empresas grandes.&lt;br /&gt;
Por todo esto, me llama la&amp;nbsp;atención, que Artech no habilite en paralelo con la&amp;nbsp;versión&amp;nbsp;GeneXus X Evolution 2, una&amp;nbsp;versión&amp;nbsp;de GeneXus Server como beta.&lt;br /&gt;
&lt;br /&gt;
Hoy no se puede desarrollar con GeneXus Evolution 2 y subir a GeneXus Server, pues da errores por diferencias en las versiones. Por lo tanto, cuando este pronta dicha&amp;nbsp;versión, creo que GeneXus Server va a estar bastante menos testeado.&lt;br /&gt;
&lt;br /&gt;
No seria bueno tener una&amp;nbsp;versión&amp;nbsp;GeneXus Server en Beta?. Es todo una&amp;nbsp;cuestión&amp;nbsp;de costos/beneficios, pero desde mi punto de vista,&amp;nbsp;estaría&amp;nbsp;bueno tenerlo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Manejo de Versiones en el servidor.&lt;/b&gt;&lt;br /&gt;
En otro tema, creo que seria muy deseable poder tener diferentes versiones de GeneXus en el servidor.&lt;br /&gt;
Es&amp;nbsp;común&amp;nbsp;que las empresas de software, tengan aplicaciones en diferentes versiones de GeneXus. Por ejemplo ahora nosotros tenemos aplicaciones en GeneXus 9.0, GeneXus X Ev1 y algunas en GeneXus Ev2.&lt;br /&gt;
&lt;br /&gt;
Creo que tener una&amp;nbsp;versión&amp;nbsp;diferente del GeneXus Server para cada&amp;nbsp;instalación, es poco manejable. Creo que cada KB&amp;nbsp;debería&amp;nbsp;tener&amp;nbsp;asociada una&amp;nbsp;versión&amp;nbsp;y&amp;nbsp;debería&amp;nbsp;poder mantenerse en dicha&amp;nbsp;versión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-9062975153694782171?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=pWVCuJeHTJY:VMdNXips0cg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=pWVCuJeHTJY:VMdNXips0cg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=pWVCuJeHTJY:VMdNXips0cg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=pWVCuJeHTJY:VMdNXips0cg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/pWVCuJeHTJY" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-17T11:14:39.825-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-L4MgthTJ2hA/TdEfuq8dC_I/AAAAAAAAAB4/vzp5JlENk0E/s72-c/GeneXusServer.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/05/porque-no-hay-betatesting-de-gxserver.html</feedburner:origLink></item><item><title>GeneXus - Salvar reorganizaciones para posterior ejecución.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/5Kvvs_NJbpI/genexus-salvar-reorganizaciones-para.html</link><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Mon, 16 May 2011 05:01:14 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-8822376891333959862</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-XFSx-oYSmlA/TdER59zzd0I/AAAAAAAAAB0/EhQ4CPcV3tU/s1600/savetask.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-XFSx-oYSmlA/TdER59zzd0I/AAAAAAAAAB0/EhQ4CPcV3tU/s1600/savetask.png" /&gt;&lt;/a&gt;&lt;/div&gt;Una cosa que creo que le esta faltando a GeneXus, es una&amp;nbsp;&lt;a href="http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?3908"&gt;MSBuild Task&lt;/a&gt; para salvar todo (y solo) lo necesario para ejecutar una&amp;nbsp;reorganización&amp;nbsp;en las diferentes plataformas para los que genera GeneXus.&amp;nbsp;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;A mi me&amp;nbsp;gustaría&amp;nbsp;que se pudiera crear un directorio con la fecha y hora de la&amp;nbsp;reorganización&amp;nbsp;y que en el mismo se salven todos los programas, bibliotecas, drivers, archivos de&amp;nbsp;configuración&amp;nbsp;necesarios para poder ejecutar dicha&amp;nbsp;reorganización.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Si bien ya hay algunos utilitarios para algunas plataformas (por ejemplo para .NET ya existe el &lt;a href="http://marketplace.genexus.com/viewproduct.aspx?71"&gt;Csharp xcopy Deployment&lt;/a&gt;&amp;nbsp;que es muy bueno), creo que&amp;nbsp;debería&amp;nbsp;generalizarse. De esta forma, aunque no conozca como funciona java o ruby,&amp;nbsp;también&amp;nbsp;pueda hacer un export de dichas reorganizaciones.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Ademas&amp;nbsp;podría&amp;nbsp;ser el primer paso para tener mas herramientas de deployment, que le&amp;nbsp;están&amp;nbsp;faltando a GeneXus.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-8822376891333959862?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5Kvvs_NJbpI:YRE4tG_pk-s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5Kvvs_NJbpI:YRE4tG_pk-s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5Kvvs_NJbpI:YRE4tG_pk-s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=5Kvvs_NJbpI:YRE4tG_pk-s:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/5Kvvs_NJbpI" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-16T09:01:14.333-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-XFSx-oYSmlA/TdER59zzd0I/AAAAAAAAAB0/EhQ4CPcV3tU/s72-c/savetask.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/05/genexus-salvar-reorganizaciones-para.html</feedburner:origLink></item><item><title>Xcopy con exclude.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/lY4hC1f12TI/xcopy-con-exclude.html</link><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Fri, 13 May 2011 13:31:41 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-8815011970812689285</guid><description>&lt;div&gt;El comando xcopy tiene una opcion EXCLUDE, que permite excluir los archivos que no se quieren copiar. Lo que no es intuitivo es la forma en que lo resolvieron, pues lo que hay que ponerle es un archivo que contenga los archivos que no hay que copiar. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por ejemplo para hacer un xcopy deployment de una aplicacion generada con GeneXus hago:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;set curndate=%date% &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;set dd=%curndate:~0,2%&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;set mm=%curndate:~3,2%&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;set aaaa=%curndate:~6,4%&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;xcopy web\*.* /s /d /i /y /c /EXCLUDE:NOCOPIAR.TXT web%aaaa%%mm%%dd% &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;xcopy  web%aaaa%%mm%%dd%\*.* /s /d /i /y  /c //webserver/DirVirtual  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;pause&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Y en el archivo NOCOPIAR.TXT, tiene como contenido:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.cs&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.rsp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.002&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.bld&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.config &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.ver&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.web&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.xsl&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.rsp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.log  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.XPZ&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.GEN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.VER&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.xml&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;.bat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;que son las extensiones de archivos que no quiero copiar. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;PD: Este es un post para que me sirva de recordatorio, pues es algo que siempre me olvido. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-8815011970812689285?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=lY4hC1f12TI:MhGJrlufky8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=lY4hC1f12TI:MhGJrlufky8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=lY4hC1f12TI:MhGJrlufky8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=lY4hC1f12TI:MhGJrlufky8:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/lY4hC1f12TI" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-13T17:31:41.256-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/05/xcopy-con-exclude.html</feedburner:origLink></item><item><title>Agenda Digital Uruguay 2011-2015</title><link>http://feedproxy.google.com/~r/ealmeida/~3/-9GUfxVj-3k/agenda-digital-2011-2015.html</link><category>Uruguay</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Wed, 30 Nov 2011 03:11:26 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-1816220127284441498</guid><description>&lt;a href="http://www.agesic.gub.uy/"&gt;AGESIC&lt;/a&gt; publico la &lt;a href="http://www.agesic.gub.uy/innovaportal/file/447/1/agesic_agendadigital_2011_2015_v_final.pdf"&gt;Agenda Digital del Uruguay para los años 2011 y 2015&lt;/a&gt;. &lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Creo que si se logra alcanzar los 15 objetivos, podemos posicionarnos bastante mejor para crear una sociedad mas informatizadas y tener todos mejores servicios por parte del gobierno. &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
En particular a Concepto nos tocara ayudar en el &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Objetivo 11 &lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;b) Contar con la Ventanilla Única de Comercio Exterior en funcionamiento&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
y también en &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Objetivo 10&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;c) Contar para el 2012 con la infraestructura de claves públicas nacionales (PKI) en &lt;/b&gt;&lt;b&gt;funcionamiento, compatible con las normas establecidas a nivel del Mercosur&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;La Lista completa de objetivos es:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Objetivo 1: Internet para todos&lt;/li&gt;
&lt;li&gt;Objetivo 2 : Despliegue&amp;nbsp;nacional de la Televisión Digital&amp;nbsp;e interactiva&lt;/li&gt;
&lt;li&gt;Objetivo 3: TIC para la&amp;nbsp;Educación&lt;/li&gt;
&lt;li&gt;Objetivo 4: Educación en TIC&lt;/li&gt;
&lt;li&gt;Objetivo 5: Habilidades para una&amp;nbsp;ciudadanía digital&lt;/li&gt;
&lt;li&gt;Objetivo 6: Preservar el acervo&amp;nbsp;cultural en una nación diversa&amp;nbsp;en el marco del Bicentenario&lt;/li&gt;
&lt;li&gt;Objetivo 7: Modernización de la&amp;nbsp;gestión pública&lt;/li&gt;
&lt;li&gt;Objetivo 8: Acceso electrónico a&amp;nbsp;la Administración Pública como&amp;nbsp;derecho ciudadano&lt;/li&gt;
&lt;li&gt;Objetivo 9: Un Estado integrado&lt;/li&gt;
&lt;li&gt;Objetivo 10: Una Administración Pública&amp;nbsp;eficiente y confiable en el uso de las TIC&lt;/li&gt;
&lt;li&gt;Objetivo 11: Desarrollo del Comercio&amp;nbsp;Electrónico y de iniciativas que&amp;nbsp;promuevan la inclusión financiera&lt;/li&gt;
&lt;li&gt;Objetivo 12: Promover el desarrollo de&amp;nbsp;las industrias de software y contenidos&amp;nbsp;digitales&lt;/li&gt;
&lt;li&gt;Objetivo 13: Agregando valor a la&amp;nbsp;cadena agropecuaria&lt;/li&gt;
&lt;li&gt;Objetivo 14: Redes avanzadas para&amp;nbsp;la salud e historia clínica electrónica&amp;nbsp;integrada a nivel nacional&lt;/li&gt;
&lt;li&gt;Objetivo 15: Uso responsable de las&amp;nbsp;TIC para el cuidado del Medio Ambiente&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-1816220127284441498?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=-9GUfxVj-3k:q6ncUqWa2Ms:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=-9GUfxVj-3k:q6ncUqWa2Ms:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=-9GUfxVj-3k:q6ncUqWa2Ms:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=-9GUfxVj-3k:q6ncUqWa2Ms:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/-9GUfxVj-3k" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T09:11:26.369-02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/05/agenda-digital-2011-2015.html</feedburner:origLink></item><item><title>Algunas cosas que me enojan de GeneXus.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/KVu9pUl3qaY/algunas-cosas-que-me-enojan-de-genexus.html</link><category>Genexus</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Tue, 03 May 2011 11:55:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-3003313567906341525</guid><description>&lt;a href="http://2.bp.blogspot.com/-mJLsShbDGL4/TcBM6_p8hRI/AAAAAAAAABs/zkiGdOKXfCo/s1600/Amazingly-Creative-Photos-048.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 311px; height: 320px;" src="http://2.bp.blogspot.com/-mJLsShbDGL4/TcBM6_p8hRI/AAAAAAAAABs/zkiGdOKXfCo/s320/Amazingly-Creative-Photos-048.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5602562512852387090" /&gt;&lt;/a&gt;&lt;br /&gt;Cuando programo con GeneXus hay algunas cosas que me hacen sacar canas verdes. *&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1) Punto y coma al final de las reglas.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Muchos objetos que solo tienen una rule parm() y de cualquier forma me pide que ponga un &lt;b&gt;";"&lt;/b&gt; al final. Siempre, siempre, siempre me olvido de ponerlo y creo que a esta altura, podríamos lograr separar los renglones de otra forma. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cuando me olvido de poner el ; me sale el mensaje &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;error: Missed ';' at the end of the rule. (Rules, Line: 8, Char: 1)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si GeneXus sabe que falta un ; al final de la linea 8, no puede agregarlo en forma automática?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2) where Att = &amp;amp;Var when not &amp;amp;Var.IsEmpty()&lt;/b&gt;&lt;/div&gt;&lt;div&gt; Me gustaria poder escribir esto en menos letras, pues es muy comun. &lt;/div&gt;&lt;div&gt;Algo asi como &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Att ~= &amp;amp;Var  o WhereEqual(Att,&amp;amp;Var) que significa lo mismo que lo anterior. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3) Not &amp;amp;Attribute.IsEmpty()&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Las dobles negaciones siempre me complican la logica. Me gustaria mas un &amp;amp;Att.NotEmpty()&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;4) &amp;amp;FechaInicial &amp;lt;= Fecha AND Fecha &amp;lt;= &amp;amp;FechaFinal&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Me gustaría mucho mas escribir&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fecha BETWEEN &amp;amp;FechaInicial and &amp;amp;FechaFinal&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;como en SQL. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5) &amp;amp;Control.Visible = 1 &lt;/b&gt;&lt;/div&gt;&lt;div&gt;No me gusta escribirlo asi, pero no encuentro otra mejor. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se les ocurre alguna mas?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Las canas verdes en mi abundante cabellera no son un problema demasiado grave. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-3003313567906341525?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=KVu9pUl3qaY:gkrvK2evnFA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=KVu9pUl3qaY:gkrvK2evnFA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=KVu9pUl3qaY:gkrvK2evnFA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=KVu9pUl3qaY:gkrvK2evnFA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/KVu9pUl3qaY" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-03T15:55:39.365-03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-mJLsShbDGL4/TcBM6_p8hRI/AAAAAAAAABs/zkiGdOKXfCo/s72-c/Amazingly-Creative-Photos-048.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/05/algunas-cosas-que-me-enojan-de-genexus.html</feedburner:origLink></item><item><title>Firma Digital: Certificados empresariales en Uruguay.</title><link>http://feedproxy.google.com/~r/ealmeida/~3/Q_4or-z7Hnw/firma-digital-primero-certificados.html</link><category>Uruguay</category><category>software</category><author>noreply@blogger.com (Enrique Almeida)</author><pubDate>Thu, 28 Apr 2011 14:55:12 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5980598.post-1769744489579640800</guid><description>&lt;div&gt;Empiezo con una anécdota.&lt;/div&gt;Era el fin del año 2000, veníamos de migrar un sistema grande de Visual FoxPro a GeneXus en los años anteriores. Si la memoria no me engaña, trabajábamos con GeneXus 7.0.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En ese momento, nos habían pedido empezar a usar firma digital. La idea era poder asegurar que un envío electrónico era de una empresa y que no había sido modificado. Y tambien que cuando hubiera un jucio poderle explicar al juez que lo que se firmaba electronicamente valia igual que una firma en papel. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hicimos el desarrollo y la parte que me toco a mi era programar con la &lt;a href="http://en.wikipedia.org/wiki/Microsoft_CryptoAPI"&gt;CryptoAPI de C++&lt;/a&gt; para poder firmar y verificar firmas con certificados digitales X.509. &lt;/div&gt;&lt;div&gt;No soy bueno programando en C++ por lo que me dio bastante laburo llegar a usar la CryptoAPI, que no era de las cosas mas amigables que Microsoft ha diseñado. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cuando teníamos todo el desarrollo terminado, habíamos realizado prototipos, llegamos a la etapa de puesta en producción. En ese momento, los certificados que emitían las autoridades certificadoras uruguayas (en Correo en particular) eran personales.  Empezamos las charlas con los abogados, para ver como lograr asegurarnos que lo firmado por una persona correspondía a una empresa. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En ese momento fue que se empantano todo el proyecto. Los abogados querían certificados empresariales, la CA no lo emitía y no logramos convencerlos que se podía realizar algun registro de PERSONA-EMPRESA en el sistema, de forma de hacer posible (o darle valor legal) a todo el proceso. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se llamo a consultores externos y a un conocido bufete de abogados, pero igual el proyecto no logro ver la luz. La mezcla de asuntos legales con tecnologías de la información no siempre es la mejor mezcla. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mas de 10 años despues, se empieza a retomar el tema. Con la &lt;a href="http://www.agesic.gub.uy/innovaportal/v/1409/1/agesic/convenio_y_acuerdo_entre_dna_y_agesic.html"&gt;ayuda de AGESIC&lt;/a&gt; y nuevamente con el correo estamos en un proyecto muy similar. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La novedad es que ahora el &lt;a href="http://www.correo.com.uy/index.asp?g=1,16&amp;amp;seccion=383"&gt;Correo de Uruguay si emite certificados empresariales&lt;/a&gt;. Espero tener mayor suerte en este segundo intento. Tanto la infraestructura de PKI, como las herramientas de programacion han avanzado mucho. Tambien el concepto de firma digital es manejado por un conjunto mayor de gente, lo que facilita mucho la "venta" del proyecto.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Publicado en http://ealmeida.blogspot.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5980598-1769744489579640800?l=ealmeida.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=Q_4or-z7Hnw:eWBQi4pEFR4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=Q_4or-z7Hnw:eWBQi4pEFR4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=Q_4or-z7Hnw:eWBQi4pEFR4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ealmeida?a=Q_4or-z7Hnw:eWBQi4pEFR4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ealmeida?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ealmeida/~4/Q_4or-z7Hnw" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-28T18:55:12.702-03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://ealmeida.blogspot.com/2011/04/firma-digital-primero-certificados.html</feedburner:origLink></item></channel></rss>

