<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>RockDeveloper: Desarrollo Web y Programaci&#243;n &#187; Cesar Reyes</title>
	<atom:link href="http://blog.rockdeveloper.com/author/cesar/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rockdeveloper.com</link>
	<description>Articulos y noticias sobre desarrollo web, programaci&#243;n y sistemas</description>
	<lastBuildDate>Thu, 08 Jul 2010 16:47:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>2006-2007 </copyright>
		<managingEditor>info@rockdeveloper.com (Rock Developer)</managingEditor>
		<webMaster>info@rockdeveloper.com (Rock Developer)</webMaster>
		<category>posts</category>
		<ttl>1440</ttl>
		<itunes:keywords>desarollo, desarrollo web, java, .net, ruby, spring, hibernate</itunes:keywords>
		<itunes:subtitle>Expresion de las mejores formas de desarrollar software. Cause Software Matters</itunes:subtitle>
		<itunes:summary>Expresion de las mejores formas de desarrollar software. Cause Software Matters</itunes:summary>
		<itunes:author>Rock Developer</itunes:author>
		<itunes:category text="Technology"/>
		<itunes:owner>
			<itunes:name>Rock Developer</itunes:name>
			<itunes:email>info@rockdeveloper.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://blog.rockdeveloper.com/wp-content/uploads/2009/09/Picture_11.png" />
		<image>
			<url>http://blog.rockdeveloper.com/wp-content/uploads/2009/09/Picture_1.png</url>
			<title>RockDeveloper: Desarrollo Web y Programaci&#243;n</title>
			<link>http://blog.rockdeveloper.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Servicios Web</title>
		<link>http://blog.rockdeveloper.com/2010/05/10/servicios-web/</link>
		<comments>http://blog.rockdeveloper.com/2010/05/10/servicios-web/#comments</comments>
		<pubDate>Mon, 10 May 2010 12:43:54 +0000</pubDate>
		<dc:creator>Cesar Reyes</dc:creator>
				<category><![CDATA[Articulos y Noticias]]></category>

		<guid isPermaLink="false">http://blog.rockdeveloper.com/?p=342</guid>
		<description><![CDATA[
			
				
			
		
Esta vez en el podcast de rockdeveloper platicamos un poco acerca de los servicios web, que son muy importantes para la comunicacion de los tantos negocios que necesitan compartir información. Hoy en día hasta una herramienta tan común como Excel puede consumir servicios web. Hablamos un poco de SOAP y REST
Ligas
Spring Rest Template
Grails
OData
WCF
Saludos y esperamos [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2010%2F05%2F10%2Fservicios-web%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2010%2F05%2F10%2Fservicios-web%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Esta vez en el podcast de rockdeveloper platicamos un poco acerca de los servicios web, que son muy importantes para la comunicacion de los tantos negocios que necesitan compartir información. Hoy en día hasta una herramienta tan común como Excel puede consumir servicios web. Hablamos un poco de <a href="http://en.wikipedia.org/wiki/SOAP_(protocol)">SOAP</a> y <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a></p>
<p>Ligas<br />
<a href="http://blog.springsource.com/2009/03/27/rest-in-spring-3-resttemplate/">Spring Rest Template</a><br />
<a href="http://grails.org/doc/latest/guide/13.%20Web%20Services.html">Grails</a><br />
<a href="http://www.odata.org/">OData</a><br />
<a href="http://msdn.microsoft.com/en-us/netframework/wcf-getting-started.aspx">WCF</a></p>
<p>Saludos y esperamos sus comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rockdeveloper.com/2010/05/10/servicios-web/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<enclosure url="https://rockdeveloper.s3.amazonaws.com/podcast/rdd-t2-e4-servicios-web.mp3" length="1" type="audio/mpeg"/>
<itunes:duration>00:01:01</itunes:duration>
		<itunes:subtitle>Esta vez en el podcast de rockdeveloper platicamos un poco acerca de los servicios web, que son muy importantes para la comunicacion de los tantos ...</itunes:subtitle>
		<itunes:summary>Esta vez en el podcast de rockdeveloper platicamos un poco acerca de los servicios web, que son muy importantes para la comunicacion de los tantos negocios que necesitan compartir informacioacute;n. Hoy en diacute;a hasta una herramienta tan comuacute;n como Excel puede consumir servicios web. Hablamos un poco de SOAP y REST

Ligas
Spring Rest Template
Grails
OData
WCF

Saludos y esperamos sus comentarios.</itunes:summary>
		<itunes:keywords>Articulos,y,Noticias</itunes:keywords>
		<itunes:author>Rock Developer</itunes:author>
		<itunes:explicit>no</itunes:explicit>
		<itunes:block>No</itunes:block>
	</item>
		<item>
		<title>Mostrar información de la estructura de una tabla en postgresql</title>
		<link>http://blog.rockdeveloper.com/2010/02/19/mostrar-informacion-de-la-estructura-de-una-tabla-en-postgresql/</link>
		<comments>http://blog.rockdeveloper.com/2010/02/19/mostrar-informacion-de-la-estructura-de-una-tabla-en-postgresql/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 05:22:32 +0000</pubDate>
		<dc:creator>Cesar Reyes</dc:creator>
				<category><![CDATA[Articulos y Noticias]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://blog.rockdeveloper.com/?p=315</guid>
		<description><![CDATA[
			
				
			
		
No posteo demasiado, creo que pienso un post elaborado, lo dejo en draft y nunca lo publico, así que estaré posteando algunos fragmentos de código, comandos, tips cortos.
Simple comando en postgresql para mostrar informacion de la estructura de una tabla
Ya estando en la consola ejecutamos:

postgres=# \d nombre_tabla
         [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2010%2F02%2F19%2Fmostrar-informacion-de-la-estructura-de-una-tabla-en-postgresql%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2010%2F02%2F19%2Fmostrar-informacion-de-la-estructura-de-una-tabla-en-postgresql%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>No posteo demasiado, creo que pienso un post elaborado, lo dejo en draft y nunca lo publico, así que estaré posteando algunos fragmentos de código, comandos, tips cortos.</p>
<p>Simple comando en postgresql para mostrar informacion de la estructura de una tabla</p>
<p>Ya estando en la consola ejecutamos:</p>
<pre class="brush: plain;">
postgres=# \d nombre_tabla
                 Table &quot;public.nombre_tabla&quot;
     Column     |          Type           | Modifiers
----------------+-------------------------+-----------
 id             | bigint                  | not null
 version        | bigint                  | not null
 description    | character varying(1500) | not null
 name           | character varying(150)  | not null
 columna       | integer                 | not null
Indexes:
    &quot;nombre_tabla_pkey&quot; PRIMARY KEY, btree (id)
</pre>
<p>Para eliminar un constraint de &#8220;not null&#8221; a una columna:</p>
<pre class="brush: plain;">
postgres=# alter table nombre_tabla alter column columna drop not null;
ALTER TABLE
</pre>
<p>Saludos&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rockdeveloper.com/2010/02/19/mostrar-informacion-de-la-estructura-de-una-tabla-en-postgresql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No mas &#8220;redeploy&#8221; al estar desarrollando aplicaciones java</title>
		<link>http://blog.rockdeveloper.com/2009/09/25/no-mas-rdeploy-al-estar-desarrollando-aplicaciones-java/</link>
		<comments>http://blog.rockdeveloper.com/2009/09/25/no-mas-rdeploy-al-estar-desarrollando-aplicaciones-java/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 15:26:45 +0000</pubDate>
		<dc:creator>Cesar Reyes</dc:creator>
				<category><![CDATA[Articulos y Noticias]]></category>
		<category><![CDATA[intellijidea]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jrebel]]></category>
		<category><![CDATA[productividad]]></category>

		<guid isPermaLink="false">http://blog.rockdeveloper.com/?p=274</guid>
		<description><![CDATA[
			
				
			
		
Hace unos días leí un post del blog de IntelliJ IDEA sobre un producto que se llama JRebel y la liberación de una nueva versión de un plugin de JRebel para IDEA y pues lo estuve probando.
Sabemos que para los que desarrollamos aplicaciones web en java una de las cosas mas tardadas y frustrantes es [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F09%2F25%2Fno-mas-rdeploy-al-estar-desarrollando-aplicaciones-java%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F09%2F25%2Fno-mas-rdeploy-al-estar-desarrollando-aplicaciones-java%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hace unos días leí un <a href="http://blogs.jetbrains.com/idea/2009/09/intellij-idea-and-jrebel-better-together/">post </a>del blog de IntelliJ IDEA sobre un producto que se llama <a href="http://www.zeroturnaround.com/jrebel/">JRebel </a>y la liberación de una nueva versión de un <a href="http://plugins.intellij.net/plugin/?id=4441">plugin</a> de JRebel para IDEA y pues lo estuve probando.</p>
<p>Sabemos que para los que desarrollamos aplicaciones web en java una de las cosas mas tardadas y frustrantes es el tiempo que pasa uno re-desplegando nuestra aplicación al servidor de aplicaciones para probar los cambios hechos. Ahora con la ayuda de JRebel cuando hagamos un cambio a una clase o recurso dentro de IDEA el cambio es reflejado inmediatamente en la aplicación que se esta ejecutando, así que no tenemos que esperar los 1 &#8211; 3 minutos promedio que toma el arrancar el servidor de aplicaciones. Y pues esto genera un ahorro enorme de tiempo, dado el numero de veces que se re-despliega una aplicación durante el día. Segun una <a href="http://www.zeroturnaround.com/blog/java-ee-container-heaven-hell-survey-results/">encuesta</a> realizada por estos cuates que hacen JRebel (<a href="http://www.zeroturnaround.com/">ZeroTurnaround</a>) dicen que podemos pasar de 2 a 8 semanas re-desplegando aplicaciones.</p>
<p>Por cierto el producto JRebel no necesariamente se usa con IntelliJ IDEA, aunque la verdad yo no lo he usado fuera de IDEA.</p>
<p>Hay un trial del producto para que lo prueben y soliciten presupuesto para su compra, jejejeje.</p>
<p>Y aqui les pongo la liga para el tutorial de como echarlo a andar con IntellJ IDEA.</p>
<p><a href="http://www.zeroturnaround.com/intellij-idea-jrebel-tutorial-formerly-javarebel/">http://www.zeroturnaround.com/intellij-idea-jrebel-tutorial-formerly-javarebel/</a></p>
<p>Saludos&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rockdeveloper.com/2009/09/25/no-mas-rdeploy-al-estar-desarrollando-aplicaciones-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ejecutar una tarea asincrona en java con spring</title>
		<link>http://blog.rockdeveloper.com/2009/08/31/ejecutar-una-tarea-asincrona-en-java-con-spring/</link>
		<comments>http://blog.rockdeveloper.com/2009/08/31/ejecutar-una-tarea-asincrona-en-java-con-spring/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 00:02:31 +0000</pubDate>
		<dc:creator>Cesar Reyes</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[forza]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[tareas]]></category>

		<guid isPermaLink="false">http://blog.rockdeveloper.com/?p=207</guid>
		<description><![CDATA[
			
				
			
		
A veces necesitamos ejecutar una tarea que lleva un tiempo considerable y que el usuario no necesariamente necesita ser informado en el momento, por ejemplo el envío de un correo de notificación (en algunos casos), el hacer un proceso x que lleva tiempo, etc&#8230;
La clase TaskExecutor de spring abstrae la de java.concurrent.Executor de manera tal [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F08%2F31%2Fejecutar-una-tarea-asincrona-en-java-con-spring%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F08%2F31%2Fejecutar-una-tarea-asincrona-en-java-con-spring%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>A veces necesitamos ejecutar una tarea que lleva un tiempo considerable y que el usuario no necesariamente necesita ser informado en el momento, por ejemplo el envío de un correo de notificación (en algunos casos), el hacer un proceso x que lleva tiempo, etc&#8230;</p>
<p>La clase TaskExecutor de spring abstrae la de java.concurrent.Executor de manera tal que es mucho mas facil con spring, SimpleAsyncTaskExecutor (asincrono), SyncTaskExecutor (sincrono), SimpleThreadPoolTaskExecutor y otros mas.</p>
<p>Pongo un ejemplo del uso del SimpleAsyncTaskExecutor</p>
<pre class="brush: java;">
private TaskExecutor taskExecutor;

public void setTaskExecutor(TaskExecutor taskExecutor) {
    this.taskExecutor = taskExecutor;
}

taskExecutor.execute(new Runnable(){
    public void run() {
        ...
    }
});
</pre>
<p>Aquí mostramos la configuración de nuestra clase usando un TaskExecutor en spring.</p>
<pre class="brush: xml;">
&lt;bean id=&quot;taskExecutor&quot; class=&quot;org.springframework.core.task.SimpleAsyncTaskExecutor&quot;/&gt;

&lt;bean id=&quot;myBean&quot; class=&quot;org.myproject.MyBean&quot;&gt;
    &lt;property name=&quot;taskExecutor&quot; ref=&quot;taskExecutor&quot;/&gt;
&lt;/bean&gt;
</pre>
<p>Cuando usamos hibernate y tenemos relaciones &#8220;lazy&#8221; en nuestros objetos que son traidos con hibernate, esto nos puede traer problemas al usar simplemente el TaskExecutor, tenemos que hacer una especia de OpenSessionInThread para poder tener la session abierta y que se reutilice esa session a lo largo del codigo ejecutado.</p>
<p>Pongo un ejemplo de como seria esa implementación. El código es similar a la implementación del OpenSessionInViewFilter de spring.</p>
<pre class="brush: java;">
public abstract class OpenSessionInThreadTask implements Runnable{

    private ApplicationContext ctx;

    public OpenSessionInThreadTask(ApplicationContext ctx) {
        this.ctx = ctx;
    }

    protected abstract void runInternal();

    public final void run(){
        SessionFactory sessionFactory = lookupSessionFactory();
        boolean participate = false;

        // single session mode
        if (TransactionSynchronizationManager.hasResource(sessionFactory)) {
            // Do not modify the Session: just set the participate flag.
            participate = true;
        }
        else {
            Session session = getSession(sessionFactory);
            TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session));
        }

        try{
            runInternal();
        }

        finally {
            if (!participate) {
                // single session mode
                SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.unbindResource(sessionFactory);
                closeSession(sessionHolder.getSession(), sessionFactory);
            }
        }
    }

    protected SessionFactory lookupSessionFactory() {
        return ctx.getBean(&quot;sessionFactory&quot;, SessionFactory.class);
    }

    protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
        Session session = SessionFactoryUtils.getSession(sessionFactory, true);
        FlushMode flushMode = FlushMode.MANUAL;
        if (flushMode != null) {
            session.setFlushMode(flushMode);
        }
        return session;
    }

    protected void closeSession(Session session, SessionFactory sessionFactory) {
        SessionFactoryUtils.closeSession(session);
    }

}
</pre>
<p>Y por ultimo el uso de la clase OpenSessionInThreadTask, de hecho esta clase ya se encuentra en <a href="http://forzaframework.org">forza</a>.</p>
<pre class="brush: java;">
taskExecutor.execute(new OpenSessionInThreadTask(ctx){
    public void runInternal() {
        ....
    }
});
</pre>
<p>Bueno espero que haya sido de su ayuda, no olviden dejar en los comentarios cualquier duda o aporte.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rockdeveloper.com/2009/08/31/ejecutar-una-tarea-asincrona-en-java-con-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macosx y java como plataforma de desarrollo</title>
		<link>http://blog.rockdeveloper.com/2009/06/20/mac-os-x-y-java-como-plataforma-de-desarrollo/</link>
		<comments>http://blog.rockdeveloper.com/2009/06/20/mac-os-x-y-java-como-plataforma-de-desarrollo/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 23:36:58 +0000</pubDate>
		<dc:creator>Cesar Reyes</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[forzaframework]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://blog.rockdeveloper.com/?p=88</guid>
		<description><![CDATA[
			
				
			
		
Hoy me paso que tenia que hacer un demo de un proyecto, y no tenia acceso a mi computadora. Y le pedi prestada su mac a mi hermana para trabajar en ella.
Trabajo sobre java, así que la opción de sistemas operativos a escoger es amplia. Pero de preferencia uso mac. Y realmente resulta ser una [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F06%2F20%2Fmac-os-x-y-java-como-plataforma-de-desarrollo%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F06%2F20%2Fmac-os-x-y-java-como-plataforma-de-desarrollo%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hoy me paso que tenia que hacer un demo de un proyecto, y no tenia acceso a mi computadora. Y le pedi prestada su mac a mi hermana para trabajar en ella.</p>
<p>Trabajo sobre java, así que la opción de sistemas operativos a escoger es amplia. Pero de preferencia uso mac. Y realmente resulta ser una plataforma muy practica, les comento los pasos que realice para levantar mi entorno de trabajo.</p>
<ul>
<li>Actualizar Java 6 (158 MB)</li>
<li>Bajar un cliente de SVN, uso <a href="http://www.syntevo.com/smartsvn/index.html">SmartSVN</a> (6MB)</li>
<li>Bajar un IDE (<a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a>) (120MB)</li>
<li>Bajar fuente de <a href="http://code.google.com/p/forzaframework/source/checkout">forzaframework</a> (30MB)</li>
<li>Bajar <a href="http://tomcat.apache.org/">Apache Tomcat </a>(servidor de aplicaciones) (6MB)</li>
<li>Bajar <a href="http://www.postgresqlformac.com/">Postgresql</a> o cualquier otro motor de base de datos (30MB)</li>
<li>Apache <a href="http://ant.apache.org/">Ant</a> y <a href="http://maven.apache.org/">Maven</a> ya vienen preinstalados en Mac OS X</li>
<li>Crear el proyecto con las utilerias de forza</li>
<li>Y por ultimo abrir el proyecto en IDEA y empezar a hacer el prototipo</li>
</ul>
<p>Bueno, a no ser por mi conexión a internet que no era la mejor, me hubiera tardado unos <strong><em>40 minutos</em></strong>, en un viaje de negocios si me robaran mi mac, podría comprar otra y empezar a trabajar en <strong><em>40 minutos</em></strong>, jejeje esperemos que no pase.</p>
<p>Pero realmente es muy rapido poner un entorno Java sobre Mac OS X, y bueno tambien es facil en cualquier otro sistema operativo. No entiendo como Microsoft en cada release hace el Visual Studio mas pesado.</p>
<p>Espero haber explicado un poco la practicidad de la plataforma java y que no solo se usa la mac para diseño. Hay, creo que cada vez mas, desarrolladores con Mac OS X como plataforma.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rockdeveloper.com/2009/06/20/mac-os-x-y-java-como-plataforma-de-desarrollo/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Layouts de extjs con forzaframework</title>
		<link>http://blog.rockdeveloper.com/2009/05/29/layouts-de-extjs-con-forzaframework/</link>
		<comments>http://blog.rockdeveloper.com/2009/05/29/layouts-de-extjs-con-forzaframework/#comments</comments>
		<pubDate>Fri, 29 May 2009 07:05:33 +0000</pubDate>
		<dc:creator>Cesar Reyes</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[forzaframework]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsp]]></category>

		<guid isPermaLink="false">http://blog.rockdeveloper.com/?p=47</guid>
		<description><![CDATA[
			
				
			
		
Uno de los elementos de forzaframework es un taglib de jsp que genera codigo javascript/html. Principalmente es un wrapper para extjs. La idea de esto es que cualquier programador con experiencia en jsp pueda hacer mejores interfaces web aprovechando las excelentes librerias de javascript que existen ahora, en este caso extjs.
Aqui muestro un ejemplo de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F05%2F29%2Flayouts-de-extjs-con-forzaframework%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F05%2F29%2Flayouts-de-extjs-con-forzaframework%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Uno de los elementos de forzaframework es un taglib de jsp que genera codigo javascript/html. Principalmente es un wrapper para extjs. La idea de esto es que cualquier programador con experiencia en jsp pueda hacer mejores interfaces web aprovechando las excelentes librerias de javascript que existen ahora, en este caso extjs.</p>
<p>Aqui muestro un ejemplo de lo que se puede hacer.</p>
<pre class="brush: java;">
&lt;%@ taglib uri=&quot;http://forzaframework.org/tags/misc-tags&quot; prefix=&quot;n&quot; %&gt;
&lt;%@ taglib uri=&quot;http://forzaframework.org/tags/form-tags&quot; prefix=&quot;f&quot; %&gt;
&lt;%@ taglib uri=&quot;http://java.sun.com/jstl/core_rt&quot; prefix=&quot;c&quot; %&gt;
&lt;c:set var=&quot;ctx&quot; value=&quot;${pageContext.request.contextPath}&quot; /&gt;

&lt;n:panel layout=&quot;border&quot; title=&quot;Titulo principal del modulo&quot; replacePanel=&quot;System.getCenter()&quot;&gt;
&lt;n:toolbar type=&quot;top&quot;&gt;
&lt;n:button text=&quot;Abrir ventana&quot; handler=&quot;function(){ Ext.getCmp('window').show(); }&quot;/&gt;
&lt;/n:toolbar&gt;
&lt;n:panel region=&quot;west&quot; title=&quot;West&quot; width=&quot;200&quot;&gt;
&lt;/n:panel&gt;
&lt;n:panel region=&quot;center&quot; layout=&quot;row-fit&quot;&gt;
&lt;n:grid id=&quot;users-grid&quot; titleKey=&quot;user.list.title&quot; url=&quot;${ctx}/config/users/xml&quot;&gt;
&lt;n:toolbar type=&quot;top&quot;&gt;
&lt;n:button textKey=&quot;user.new&quot; handler=&quot;function(){
alert('Hola mundo')
}&quot; /&gt;
&lt;n:button text=&quot;Permisos&quot; handler=&quot;alert('Hola mundo');&quot; /&gt;
&lt;/n:toolbar&gt;

&lt;n:column field=&quot;id&quot; hidden=&quot;true&quot;/&gt;
&lt;n:column field=&quot;username&quot; titleKey=&quot;user.username&quot;/&gt;
&lt;n:column field=&quot;firstName&quot; titleKey=&quot;user.firstName&quot;/&gt;
&lt;n:column field=&quot;lastName&quot; titleKey=&quot;user.lastName&quot;/&gt;
&lt;n:column field=&quot;email&quot; titleKey=&quot;user.email&quot;/&gt;
&lt;n:column field=&quot;preferredLocale&quot; titleKey=&quot;user.preferredLocale&quot;/&gt;
&lt;/n:grid&gt;
&lt;n:panel title=&quot;Aqui puede ir un otro grid&quot;&gt;

&lt;/n:panel&gt;
&lt;/n:panel&gt;
&lt;/n:panel&gt;

&lt;n:window id=&quot;window&quot; title=&quot;Ventana&quot; width=&quot;400&quot; height=&quot;300&quot; show=&quot;false&quot;&gt;
&lt;n:panel&gt;
&lt;n:htmlContent&gt;
Este es contenido html
&lt;div style=&quot;background-color:red&quot;&gt;
Este es un texto en rojo
&lt;/div&gt;
&lt;/n:htmlContent&gt;
&lt;/n:panel&gt;
&lt;/n:window&gt;
</pre>
<pre><span style="font-family: Georgia; line-height: 19px; white-space: normal;">Aquí vemos que es lo que genera.</span></pre>
<p><img class="alignnone size-full wp-image-59" src="http://blog.rockdeveloper.com/wp-content/uploads/2009/05/imagen-41.png" alt="lo que se muestra" width="500" height="310" /></p>
<p>En resumen se muestra un ejemplo de un panel con layout &#8220;border&#8221;, este panel puede tener otros paneles como hijos cada uno especificando la región a la que pertenecen. Podemos poner también grids, forms, tabs, como paneles.</p>
<p>Se muestra también una ventana. El parámetro &#8221;show&#8221; es para mostrarse o no de inicio, por default es &#8220;true&#8221;.</p>
<p>Bueno, este fin de semana trabajaremos en la documentación y de presentar y explicar casos mas comunes de uso tanto para forza en general como para el taglib.</p>
<p>Bienvenidos sus dudas y comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rockdeveloper.com/2009/05/29/layouts-de-extjs-con-forzaframework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un rato con grails, gorm, groovy y forza</title>
		<link>http://blog.rockdeveloper.com/2009/04/14/un-rato-con-grails-gorm-groovy-y-forza/</link>
		<comments>http://blog.rockdeveloper.com/2009/04/14/un-rato-con-grails-gorm-groovy-y-forza/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 15:05:53 +0000</pubDate>
		<dc:creator>Cesar Reyes</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[forzaframework]]></category>
		<category><![CDATA[gorm]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://blog.rockdeveloper.com/?p=26</guid>
		<description><![CDATA[
			
				
			
		
El fin de semana estuve haciendo unas pruebas para ver que tecnología usare para un nuevo proyecto, sin alejarme mucho de lo que ya manejo habitualmente que es: spring, hibernate, forza.
Decidí probar un poco con gorm (Grails Object Relational Mapping) unos de los principales componentes de grails, groovy, el lenguaje que usa grails y spring mvc. Por que no [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F04%2F14%2Fun-rato-con-grails-gorm-groovy-y-forza%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rockdeveloper.com%2F2009%2F04%2F14%2Fun-rato-con-grails-gorm-groovy-y-forza%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>El fin de semana estuve haciendo unas pruebas para ver que tecnología usare para un nuevo proyecto, sin alejarme mucho de lo que ya manejo habitualmente que es: <a href="http://springframework.org">spring</a>, <a href="http://hibernate.org">hibernate</a>, <a href="http://forzaframework.org">forza</a>.</p>
<p>Decidí probar un poco con <a href="http://grails.org/GORM">gorm </a>(Grails Object Relational Mapping) unos de los principales componentes de <a href="http://grails.org">grails</a>, groovy, el lenguaje que usa grails y spring mvc. Por que no hacer toda la aplicación en grails? pues la idea es aumentar la productividad poco a poco, teniendo el mayor control posible sobre la aplicación, a que me refiero?, bueno, ya usando hibernate a veces hay cosas que parecen magia, pero a veces la magia falla, entonces tienes que leer, analizar, debugear y entender un poco el como esta hecha esa magia, asi que empezamos poco a poco a entender la magia de grails.</p>
<p>Empece por ver la aplicación de ejemplo que viene cuando bajas grails, samples/petstore-mvc, y se ve muy sencillo, se simplifica mucho el acceso a datos, algo que no debería ser la gran ciencia. La aplicación viene por default configurada para hacer uso de una base de datos en memoria, entonces la configuro para que apunte a un servidor postgresql local, y para mi sorpresa deja de funcionar, raro, no ejecuta los inserts/updates pero si los selects, bueno para no hacerla larga, resulta ser que es el manejo de transacciones.</p>
<p>Que sigue?,  sustituyo gorm por el EntityManager de forza, el cual es un &#8220;Dao&#8221; genérico para simplificar el acceso a datos, junto con otras utilerias. Esto porque tengo ya varios años usando forza, y dado que vamos poco a poco con la nueva tecnologia, dejaremos a gorm para despues.</p>
<p><a href="http://groovy.codehaus.org/">Groovy</a>? me pareció muy productivo, bastante simple, puedes usar clases de java en groovy y viceversa, de esa manera puedes ir tomando poco a poco lo que te sirve mas de groovy.</p>
<p>Entonces la arquitectura de la aplicacion queda: Capa de acceso a datos con forza/hibernate con clases en groovy, capa de servicios en groovy, controllers en groovy con spring mvc, y jsp para las vistas.</p>
<p>En otro post esta semana voy a detallar la arquitectura de la aplicación y mostrar algunos ejemplos en codigo.</p>
<p>Espero sus comentarios y experiencias, saludos&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rockdeveloper.com/2009/04/14/un-rato-con-grails-gorm-groovy-y-forza/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
