<?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: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" version="2.0">

<channel>
	<title>De la Programación y Otras Artes</title>
	
	<link>http://www.andreimosso.com</link>
	<description />
	<pubDate>Fri, 21 Nov 2008 12:01:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/veon" type="application/rss+xml" /><item>
		<title>Debuggeando un Servidor Weblogic Remotamente</title>
		<link>http://www.andreimosso.com/debuggeando-un-servidor-weblogic-remotamente/</link>
		<comments>http://www.andreimosso.com/debuggeando-un-servidor-weblogic-remotamente/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 12:01:26 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[programación]]></category>

		<category><![CDATA[webapps]]></category>

		<category><![CDATA[debug]]></category>

		<category><![CDATA[debugging]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=141</guid>
		<description><![CDATA[Rompiendo el silencio de más de 7 meses les traigo un tip muy útil cuando se requiere acceder a las bondades del debugger de Eclipse sobre una aplicación que no está ejecutándose localmente o que está corriendo de forma local pero que no podemos ejecutarla desde Eclipse.
Aunque esto aplica para todo tipo de aplicaciones Java, [...]]]></description>
			<content:encoded><![CDATA[<p>Rompiendo el silencio de más de 7 meses les traigo un tip muy útil cuando se requiere acceder a las bondades del <em>debugger</em> de Eclipse sobre una aplicación que no está ejecutándose localmente o que está corriendo de forma local pero que no podemos ejecutarla desde Eclipse.</p>
<p>Aunque esto aplica para todo tipo de aplicaciones Java, un buen ejemplo es un servidor de aplicaciones J2EE. En este caso usaré Weblogic.</p>
<p>La parte más &#8220;difícil&#8221; es agregar algunos argumentos al comando que inicia al Weblogic. Para ello hay que abrir la pantalla <em>Server Start</em> de la instancia de Weblogic que queremos <em>debuggear</em>. La ruta es Environment &gt;&gt; Servers &gt;&gt; <em>[servername]</em> &gt;&gt; Server Start.</p>
<p>En esta pantalla hay un campo <em>Arguments</em> que nos permite mandar parámetros a la máquina virtual al momento de iniciar la instancia de Weblogic. En este campo agregamos lo siguiente:</p>
<blockquote>
<pre>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n</pre>
</blockquote>
<p><br/>Hace falta reiniciar la instancia de Weblogic que afectamos para que los cambios surtan efecto.</p>
<p>Ahora solo hay que crear una nueva configuración de <em>Debug</em> para conectarse a la aplicación Java remota. Para ello haz clic sobre <em>Run</em> &gt;&gt; <em>Debug Configurations</em>. En seguida crea una nueva configuración bajo la categoría de <em>Remote Java Application</em> y usa los siguientes datos como referencia:</p>
<p align="center"><img class="aligncenter size-full wp-image-142" title="Eclipse Debug Configurations" src="http://www.andreimosso.com/wp-content/uploads/2008/11/screenshot-debug-configurations.png" alt="Eclipse Debug Configurations" width="640" /></p>
<p>Asegúrate de que el servidor Weblogic esté corriendo y que alguno de tus proyectos de Eclipse esté corriendo sobre el servidor. Ahora haz clic sobre el botón <em>Debug</em> para conectarse al servidor Weblogic y empezar a cachar las llamadas al <em>debugger</em>.</p>
<p>Eso fue todo. Es bastante sencillo pero muy útil cuando se requiere depurar una aplicación web que está un ambiente remoto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/debuggeando-un-servidor-weblogic-remotamente/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Modelado de BDs: MySQL Workbench</title>
		<link>http://www.andreimosso.com/modelado-de-bds-mysql-workbench/</link>
		<comments>http://www.andreimosso.com/modelado-de-bds-mysql-workbench/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 14:00:21 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=129</guid>
		<description><![CDATA[¡Al fin un modelador gratis más que decente! Mmh&#8230; creo que no hay mucho más que decir después de eso. Solo me queda listar algunas de las características de esta maravilla:


Diagramas E/R.
Modelado de tablas, índices, vistas, etc.
Modelado de stored procedures, triggers y funciones.
Generación de un script SQL.
Generación del modelo a partir de un script SQL.
Actualización [...]]]></description>
			<content:encoded><![CDATA[<p>¡Al fin un modelador gratis más que decente! Mmh&#8230; creo que no hay mucho más que decir después de eso. Solo me queda listar algunas de las características de esta maravilla:</p>
<p align="center"><a href="http://www.mysql.com/products/workbench/" title="MySQL Workbench" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mysql.com');"><img class="aligncenter size-full wp-image-130" style="vertical-align: middle;" title="MySQL Workbench" src="http://www.andreimosso.com/wp-content/uploads/2008/04/mysql_workbench.jpg" alt="MySQL Workbench" /></a></p>
<ul>
<li>Diagramas E/R.</li>
<li>Modelado de tablas, índices, vistas, etc.</li>
<li>Modelado de <em>stored procedures</em>, <em>triggers</em> y funciones.</li>
<li>Generación de un <em>script</em> SQL.</li>
<li>Generación del modelo a partir de un <em>script</em> SQL.</li>
<li>Actualización del modelo o del <em>script</em> en cualquier dirección.</li>
<li>Guarda el modelo como imagen o PDF.</li>
</ul>
<p>Bueno, esas son algunas de las características de la versión Community. La versión completa cuesta USD$99 al año y cuenta con algunas otras monerías, como interactuar con una base de datos real en lugar de un <em>script</em> SQL, generar documentación y algunas otras cosas más. Sin embargo, la versión gratuita está muy completa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/modelado-de-bds-mysql-workbench/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spring MVC Práctico I: Hola Mundo!</title>
		<link>http://www.andreimosso.com/spring-mvc-practico-i-hola-mundo/</link>
		<comments>http://www.andreimosso.com/spring-mvc-practico-i-hola-mundo/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 06:48:18 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[programación]]></category>

		<category><![CDATA[webapps]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=154</guid>
		<description><![CDATA[Spring MVC es un framework para desarrollar aplicaciones Java basadas en Web. Dos de los objetivos más importantes de Spring MVC es permitir que el desarrollo se concentre en la lógica del negocio y que se haga empleando buenos principios de diseño orientado a objetos.



Para lograrlo se utiliza un concepto muy interesante llamado Inversión del [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.springframework.org/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.springframework.org');">Spring</a> MVC es un <em>framework</em> para desarrollar aplicaciones Java basadas en Web. Dos de los objetivos más importantes de Spring MVC es permitir que el desarrollo se concentre en la lógica del negocio y que se haga empleando buenos principios de diseño orientado a objetos.</p>
<p align="center">
<a href="http://www.springframework.org/" title='Spring 2.5' onclick="javascript:pageTracker._trackPageview ('/outbound/www.springframework.org');"><img src='http://www.andreimosso.com/wp-content/uploads/2007/11/spring25.png' alt='Spring 2.5' /></a>
</p>
<p>Para lograrlo se utiliza un concepto muy interesante llamado Inversión del Control, también conocido como el principio Hollywood: &#8220;No nos llames, nosotros te llamaremos.&#8221; Esto permite que el código escrito por los desarrolladores para la lógica principal del sistema no tenga dependencias sobre las clases del <em>framework</em>; lo cual redunda en un código mucho más limpio y con la posibilidad de utilizar todas las ventajas de la programación orientada a objetos (específicamente la herencia).</p>
<p>Ya que tenemos una idea de la utilidad de Spring MVC, pongamos manos a la obra.</p>
<p><strong>Objetivos:</strong></p>
<ul>
<li>Configurar un ambiente de desarrollo con Eclipse, Tomcat y Spring MVC.</li>
<li>Escribir una aplicación básica para demostrar el funcionamiento del <em>framework</em>.</li>
</ul>
<p><strong>Prerequisitos:</strong></p>
<ul>
<li><a href="http://java.sun.com/javase/downloads/?intcmp=1281" onclick="javascript:pageTracker._trackPageview ('/outbound/java.sun.com');">Java 5 o superior</a></li>
<li><a href="http://tomcat.apache.org/download-60.cgi" onclick="javascript:pageTracker._trackPageview ('/outbound/tomcat.apache.org');">Apache Tomcat</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/20071103/eclipse-java-europa-fall2-win32.zip" onclick="javascript:pageTracker._trackPageview ('/outbound/www.eclipse.org');">Eclipse</a></li>
<li><a href="http://www.springframework.org/download" onclick="javascript:pageTracker._trackPageview ('/outbound/www.springframework.org');">Desacargar Spring</a> (con dependencias)</li>
</ul>
<p><span id="more-128"></span><br />
<strong>1. Instalando herramientas necesarias en Eclispe</strong></p>
<p>Para empezar hay que instalar las herramientas necesarias para desarrollar una aplicación Web con Eclipse. Primero abre la ventana de instalación de nuevos paquetes haciendo click en la ruta Help >> Software Updates >> Find and Install&#8230;<br />
Selecciona la opción <em>Search for new features to install</em> y haz click en <em>Next</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/2_search_for_new_features.png' alt='Search for New Features' />
</p>
<p>Selecciona Europa Discovery Site.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/3_select_sites.png' alt='Selected Sites' />
</p>
<p>Haz click en <em>Finish</em> y selecciona un <em>mirror</em>. En la pantalla siguiente selecciona Web and JEE Development, te marcará un error diciendo que las dependencias no están satisfechas, para lo cual presionamos el botón <em>Select Required</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/4_selected_packages.png' alt='Selected Packages' />
</p>
<p>Después haz click en <em>Next</em>, acepta las licencias, de nuevo click en <em>Next</em> y luego en <em>Finish</em>. El manejador de actualizaciones empezará a descargar los paquetes necesarios.</p>
<p><strong>2. Creando un proyecto Web</strong></p>
<p>Una vez terminada la descarga e instalación haz click en File >> New >> Project. Selecciona Web >> Dynamic Web Project y haz click en <em>Next</em>. Elige un nombre para el proyecto (este nombre formará parte del URL), yo llamaré a mi proyecto <strong>spring1</strong>. Por último haz click en <em>Finish</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/5_new_web_project.png' alt='New Web Project' />
</p>
<p>Ahora vamos a integrar nuestra instalación de Tomcat para controlarla desde Eclipse, para lo cual vamos a Window >> Show View >> Other. En esta ventana selecciona <em>Servers</em> y haz click en Ok.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/6_servers_view.png' alt='Servers View' />
</p>
<p>Para crear un nuevo servidor en Eclipse haz click derecho sobre el espacio blanco de la vista <em>Servers</em> y haz click en New >> Server. Elige el servidor que estarás usando (para efectos de este tutorial usaremos Tomcat, pero puede ser cuelquier otro contenedor de servlets, como JBoss o Weblogic).</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/7_new_server.png' alt='New Server' />
</p>
<p>Haz click en <em>Next</em>. En la siguiente pantalla selecciona la carpeta en la que se encuentra instalado Tomcat y haz click en <em>Finish</em>. Debe aparecer una nueva entrada en la vista <em>Servers</em> representando al servidor Tomcat que acabas de configurar.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/8_tomcat_server.png' alt='Tomcat Server' />
</p>
<p>Ahora agreguemos nuestro proyecto al Tomcat para que haga el <em>deploy</em> automáticamente, para lo cual hay que hacer click sobre el servidor Tomcat y luego en <em>Add and Remove Projects</em>. Aparecerá la siguiente ventana, donde hay que pasar el proyecto <strong>spring1</strong> de <em>Available Projects</em> a <em>Configured Projects</em> y luego haz click en <em>Finish</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/9_add_project_to_tomcat.png' alt='Add Project to Tomcat' />
</p>
<p>Es hora de probar que todo funcione hasta ahora. Haz click derecho sobre el del servidor que acabamos de configurar y luego en <em>Start</em>. A continuación se mostrará la consola del servidor, el cual debe arrancar sin problemas. Ahora abre tu navegador favorito y abre la dirección <a href="http://localhost:8080/spring1/" onclick="javascript:pageTracker._trackPageview ('/outbound/localhost:8080');">http://localhost:8080/spring1/</a>. Si se muestra un error 404 todo está bien (hasta ahora). El error es por que no hemos creado una página de inicio; según nuestro archivo WebContent/WEB-INF/web.xml se debe llamar index.jsp, por lo que procedemos a crearlo (en la carpeta WebContent):</p>
<blockquote>
<pre>
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
		pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
	&lt;head&gt;
		&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
		&lt;title&gt;Hola Mundo!&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		Hola Mundo!
	&lt;/body&gt;
&lt;/html&gt;
</pre>
</blockquote>
<p><br/></p>
<p>Si vuelves a checar <a href="http://localhost:8080/spring1/" onclick="javascript:pageTracker._trackPageview ('/outbound/localhost:8080');">http://localhost:8080/spring1/</a> te aparecerá el contenido de index.jsp.</p>
<p><strong>3. Spring MVC</strong></p>
<p>Por si no lo han notado aún, lo que hemos hecho hasta ahora no ha tenido mucho que ver con Spring. Esto se debe a que solo hemos configurado un ambiente para desarrollo de aplicaciones JEE, lo cual nos facilitará las cosas para crear nuestra aplicación Spring MVC.</p>
<p>Ahora viene lo bueno. A manera de resumen, para crear un proyecto (mínimo) Spring MVC hay que seguir los siguientes pasos:</p>
<ul>
<li>Colocar las <strong>librerías</strong> necesarias.</li>
<li>Configurar al <strong>DispatchServlet</strong> como FrontController.</li>
<li>Configurar un <em>View Resolver</em> para asociar las vistas a los controladores.</li>
<li>&lt;loop_begin&gt;</li>
<li>Escribir un controlador y agregarlo al contexto del DispatcherServlet.</li>
<li>Escribir una vista (JSP).</li>
<li>&lt;loop_end&gt;</li>
</ul>
<p>3.1 Colocar las librerías necesarias</p>
<p>Copia los siguientes archivos a la carpeta WebContent/WEB-INF/lib del proyecto:</p>
<ul>
<li>spring-framework-2.5/dist/spring.jar</li>
<li>spring-framework-2.5/dist/modules/spring-webmvc.jar</li>
<li>spring-framework-2.5/lib/jakarta-commons/commons-logging.jar</li>
<li>spring-framework-2.5/lib/j2ee/servlet-api.jar</li>
</ul>
<p>3.2 Configurar al DispatchServlet como FrontController</p>
<p>Agrega lo siguiente al archivo WebContent/WEB-INF/web.xml dentro del tag <code>web-app</code>. El nombre que le daremos a este Servlet también será muy importante, ya que formará parte del nombre de el(los) archivo(s) de configuración del contexto del FrontController, donde definiremos los Beans que formarán nuestra aplicación.</p>
<blockquote>
<pre>
&lt;servlet&gt;
	&lt;servlet-name&gt;spring1&lt;/servlet-name&gt;
	&lt;servlet-class&gt;
		org.springframework.web.servlet.DispatcherServlet
	&lt;/servlet-class&gt;
	&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
</pre>
</blockquote>
<p><br/></p>
<p>La anterior definición solo le dice a Tomcat que cargue al DispatcherServlet al iniciar. Ahora hay que decirle qué URLs serán procesadas por Spring. Como pueden ver, el <code>url-pattern</code> incluye todas las direcciones que terminan con .jsp, en realidad esta es una terminación arbitraria y podemos sustituirla por cualquier cosa.</p>
<blockquote>
<pre>
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;spring1&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
</pre>
</blockquote>
<p><br/></p>
<p>3.3 Configurar un <em>View Resolver</em> para asociar las vistas a los controladores</p>
<p>El <em>View Resolver</em> es un bean que se define en el contexto de la aplicación (del DispatcherServlet). Para lo cual debemos crear un archivo llamado spring1-servlet.xml en la carpeta WebContent/WEB-INF/. El archivo tiene el siguiente contenido:</p>
<blockquote>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;beans xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"&gt;

	&lt;bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;
		&lt;property name="prefix" value="/WEB-INF/jsp/" /&gt;
		&lt;property name="suffix" value=".jsp"/&gt;
	&lt;/bean&gt;
&lt;/beans&gt;
</pre>
</blockquote>
<p><br/></p>
<p>En el código anterior hay tres cosas que notar: 1) El <em>View Resolver</em> que se utiliza. InternalResourceViewResolver es uno de los más sencillos y fáciles de usar, pero existen otros con mayor flexibilidad. 2) La <em>property</em> &#8220;prefix&#8221; define la carpeta en donde se encuentran las vistas. 3) La <em>property</em> &#8220;suffix&#8221; define la extensión de los archivos de las vistas.</p>
<p>3.4 Escribir un controlador y agregarlo al contexto del DispatcherServlet</p>
<p>Spring MVC prevee varios tipos de controladores que tienen usos diferentes, por ejemplo:</p>
<ul>
<li>Los que manejan un simple <em>request</em>, pero que no tienen ningún tipo de workflow.</li>
<li>Los <em>form controllers</em> que manejan el ciclo de vida completo de una forma XHTML.</li>
<li>Los <em>wizard controllers</em> que pueden manejar múltiples flujos de trabajo.</li>
</ul>
<p>En este caso usaremos el más sencillo: AbstractController.</p>
<blockquote>
<pre>
package com.andreimosso.spring1.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class HomeController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		return new ModelAndView("home");
	}
}
</pre>
</blockquote>
<p><br/></p>
<p>Aquí debemos considerar un par de cosas importantes: 1) Los controladores deben implementar el método handleRequestInternal, que recibe un <em>request</em> y un <em>response</em>, y que también debe regresar un objeto de tipo ModelAndView. Este último objeto, como su nombre indica, contiene la información necesaria para representar al modelo y a la vista asociadas a un controlador. En este caso vemos que en el constructor del objeto ModelAndView se para una cadena: &#8220;home&#8221;. Esta cadena será utilizada por el <em>View Resolver</em> para generar el <em>path</em> para localizar al archivo de la vista (ejemplo: WebContent/WEB-INF/jsp/home.jsp).</p>
<p>Lo único que resta con el controlador es agregarlo al contexto de la aplicación. Agregaremos un <em>bean</em> más al archivo spring1-servlet.xml que haga referencia al controlador que recien creamos.</p>
<blockquote>
<pre>
&lt;bean name="/home.htm" class="com.andreimosso.spring1.controller.HomeController"/&gt;
</pre>
</blockquote>
<p><br/></p>
<p>3.5 Escribir una vista (JSP)</p>
<p>Crea un archivo llamado home.jsp en la carpeta WebContent/WEB-INF/jsp/ con el siguiente contenido.</p>
<blockquote>
<pre>
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
		pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
	&lt;head&gt;
		&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
		&lt;title&gt;Insert title here&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		Hola Mundo!
	&lt;/body&gt;
&lt;/html&gt;
</pre>
</blockquote>
<p><br/></p>
<p>Finalmente podremos ver los resultados de todo este trabajo. Abre la siguiente dirección en tu navegador <a href="http://localhost:8080/spring1/home.htm" onclick="javascript:pageTracker._trackPageview ('/outbound/localhost:8080');">http://localhost:8080/spring1/home.htm</a> y verifica que se despliegue el contenido que definiste en la vista home.jsp.</p>
<p>Con esto concluye el ejercicio más simple que hay en Spring MVC. Sin embargo, a veces lo más difícil es ponernos sobre los pies y dar el primer paso. Espero pronto publicar una secuela a este post para manejar información enviada en una forma y tal vez un tercer post para acceso a bases de datos.</p>
<p>Espero que este tutorial haya sido de utilidad. Hasta la próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/spring-mvc-practico-i-hola-mundo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Libro Gratis: Starting Struts 2</title>
		<link>http://www.andreimosso.com/libro-gratis-starting-struts-2/</link>
		<comments>http://www.andreimosso.com/libro-gratis-starting-struts-2/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 05:57:15 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[literatura]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=170</guid>
		<description><![CDATA[Con el pretexto de no dejar que enero se quede sin posts decidí que publicaría este recurso para que quien quiera dejar la obsolesencia y comenzar a escribir aplicaciones Web con uno de los mejores frameworks Java que existen, estoy hablando de Struts 2. Este framework mejora y reemplaza muchas de las prácticas que se [...]]]></description>
			<content:encoded><![CDATA[<p>Con el pretexto de no dejar que enero se quede sin posts decidí que publicaría este recurso para que quien quiera dejar la obsolesencia y comenzar a escribir aplicaciones Web con uno de los mejores frameworks Java que existen, estoy hablando de Struts 2. Este framework mejora y reemplaza muchas de las prácticas que se tenían en la versión 1 de Struts y no me sorprendería que llegue a tener la misma aceptación que su antecesor en un futuro cercano; ya que a diferencia de Struts 1, esta versión no apesta.</p>
<p align="center">
<a href="http://www.infoq.com/minibooks/starting-struts2" title='Starting Struts 2' onclick="javascript:pageTracker._trackPageview ('/outbound/www.infoq.com');"><img src='http://www.andreimosso.com/wp-content/uploads/2008/02/starting_struts_2.jpg' alt='Starting Struts 2' /></a>
</p>
<p>La única condición para hacerse de una copia digital de este libro es registrarse a InfoQ, que por cierto yo recomendaría que se registren aunque no quieran el libro. Bueno, ya basta de preámbulos y <a href="http://www.infoq.com/minibooks/starting-struts2" onclick="javascript:pageTracker._trackPageview ('/outbound/www.infoq.com');">vayan por su copia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/libro-gratis-starting-struts-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tutorial: Diseñando una Tarjeta de Presentación con Photoshop</title>
		<link>http://www.andreimosso.com/tutorial-disenando-una-tarjeta-de-presentacion-con-photoshop/</link>
		<comments>http://www.andreimosso.com/tutorial-disenando-una-tarjeta-de-presentacion-con-photoshop/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 20:07:29 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[diseño]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=167</guid>
		<description><![CDATA[No hace mucho que comencé a interesarme (otra vez) por el diseño gráfico y comencé a buscar algunos tutoriales. Todo esto a pesar de que generalmente la información en Internet es prácticamente inútil al respecto. Pero esta vez tuve un poco de suerte al encontrarme con PSDTUTS. Es de los pocos sitios de tutoriales que [...]]]></description>
			<content:encoded><![CDATA[<p>No hace mucho que comencé a interesarme (otra vez) por el diseño gráfico y comencé a buscar algunos tutoriales. Todo esto a pesar de que generalmente la información en Internet es prácticamente inútil al respecto. Pero esta vez tuve un poco de suerte al encontrarme con <a href="http://psdtuts.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/psdtuts.com');">PSDTUTS</a>. Es de los pocos sitios de tutoriales que conozco que no solo ayudan a lograr un resultado final, sino que te permite comprender como funcionan las cosas; lo cual es una gran diferencia, ya que esa comprensión libera al aprendiz del caso específico del tutorial para poder crear sus propios diseños.</p>
<p>Esta vez recomiendo el tutorial de la tarjeta de presentación que aunque ya lo había visto hace un tiempo, no tiene mucho que me animé a seguirlo; sorprendentemente con muy buenos resultados. He aquí lo que obtuve siguiendo el tutorial:</p>
<p align="center">
<a href="http://www.andreimosso.com/wp-content/uploads/2007/12/business_card_back.jpg" title='Tarjeta Posterior'><img src='http://bak.andreimosso.com/wp-content/uploads/2007/12/business_card_back-150x150.jpg' alt='Tarjeta Posterior' /></a> <a href="http://www.andreimosso.com/wp-content/uploads/2007/12/business_card_front-copy.jpg" title='Tarjeta Frente'><img src='http://bak.andreimosso.com/wp-content/uploads/2007/12/business_card_front-copy-150x150.jpg' alt='Tarjeta Frente' /></a>
</p>
<p>Aunque a los autores les toma un par de días actualizar la página, vale la pena visitarla periódicamente. Para comenzar de inmediato visita el <a href="http://psdtuts.com/designing-tutorials/making-a-print-ready-business-card-using-only-photoshop/" onclick="javascript:pageTracker._trackPageview ('/outbound/psdtuts.com');">tutorial original</a> (en inglés) o la <a href="http://www.leemiblog.com/Articulos/Diseo/Creando-una-Tarjeta-de-Visita-lista-para-imprimir-usando-slo-Photoshop.html" onclick="javascript:pageTracker._trackPageview ('/outbound/www.leemiblog.com');">traducción a español</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/tutorial-disenando-una-tarjeta-de-presentacion-con-photoshop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Juego: Escapa!</title>
		<link>http://www.andreimosso.com/juego-escapa/</link>
		<comments>http://www.andreimosso.com/juego-escapa/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 21:46:14 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[juegos]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=164</guid>
		<description><![CDATA[Este juego, aunque ya tiene un par de años, está muy bueno. Según la descripción que lo acompaña, si llegas a durar más de 18 segundos eres un fenómeno.
Las reglas son muy sencillas: solo hay que arrastrar el cuadro rojo sin tocar a los bordes y evitando el contacto con los cuadros azules.



Ahora mis sospechas [...]]]></description>
			<content:encoded><![CDATA[<p>Este juego, aunque ya tiene un par de años, está muy bueno. Según la descripción que lo acompaña, si llegas a durar más de 18 segundos eres un fenómeno.<br />
Las reglas son muy sencillas: solo hay que arrastrar el cuadro rojo sin tocar a los bordes y evitando el contacto con los cuadros azules.</p>
<p align="center">
<a href="http://www.andreimosso.com/?p=164" title='Escapa!'><img src='http://www.andreimosso.com/wp-content/uploads/2007/12/escapa.jpg' alt='Escapa!' /></a>
</p>
<p>Ahora mis sospechas quedan fundamentadas: ¡soy un freak! Lo más que pude hacer fueron 23.8 segundos.</p>
<p>(Haz click en la imagen para jugar)</p>
<p>Gracias al Mosh, por mandarlo.<br />
<span id="more-122"></span></p>
<p align="center">
<iframe frameborder="0" style="width: 800px; height: 500px;" src="/wp-content/uploads/2007/12/aguanta18segundos.htm"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/juego-escapa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conociendo a Flex</title>
		<link>http://www.andreimosso.com/conociendo-a-flex/</link>
		<comments>http://www.andreimosso.com/conociendo-a-flex/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 23:09:01 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[webapps]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=142</guid>
		<description><![CDATA[Hace unos días, después de leer algunos artículos de Matt Raible, comencé a darle una oportunidad a Flex. Desde que Adobe lo anunció, yo no había hecho más que hartarme de todo el hype que ha levantado, pues sigo pensando que es una reacción a OpenLaszlo. A pesar de ese hecho y de que Flex [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días, después de leer algunos artículos de <a href="http://raibledesigns.com/resume.jsp" onclick="javascript:pageTracker._trackPageview ('/outbound/raibledesigns.com');">Matt Raible</a>, comencé a darle una oportunidad a <a href="http://www.adobe.com/products/flex/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">Flex</a>. Desde que Adobe lo anunció, yo no había hecho más que hartarme de todo el <em>hype</em> que ha levantado, pues sigo pensando que es una reacción a <a href="http://www.openlaszlo.org/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.openlaszlo.org');">OpenLaszlo</a>. A pesar de ese hecho y de que Flex Builder no es gratis, decidí descargar la versión <em>trial</em> y asegurarme de una vez de qué se trata todo el entusiasmo al rededor de Flex.<br />
Para no seguir con esta larga historia, les diré lo que más me gustó de Flex. Primero, y puede que para muchos no sea importante, pero para mi si: Flex Builder está basado en Eclipse, por lo que puedo hacer todos mis desarrollos en una sola herramienta. Bueno esa razón es un tanto una manía que tengo con Eclipse. Las demás si son razones de verdad y aprovechando mi experiencia con OpenLaslo, intentaré hacer un par de comparaciones:</p>
<ul>
<li>El compilador está integrado a Flex Builder, por lo que el desarrollo se vuelve muy ágil. En OpenLaszlo hay que tener un contenedor de JSPs para que funcione el asunto y después de un rato el desempeño se degrada mucho</li>
<li>El <em>debugger</em> funciona de maravilla.</li>
<li>El lenguaje de etiquetas me parece más consistente que Laszlo.</li>
<li>Existe la posibilidad de programarlo todo en clases con ActionScript. Creo que esta opción es de gran utilidad para manejar mejor la complejidad con desarrollos más complicados que el &#8220;Hello World&#8221;.</li>
<li>Hay diseñadores en Adobe, por lo que los diseños por defecto en Flex están muy bonitos. Pero más allá de eso, es muy fácil aplicar un <em>look</em> personalizado a los componentes con CSS. En OpenLaslo la personalización de los componentes gráficos es una pesadilla.</li>
<li>La documentación (al estilo Javadoc!) es abundante y en la Interner hay ejemplos para casi todo.</li>
</ul>
<p>Bien, pues fue todo por hoy. Solo me queda decir que ya comienzo a superar los sentimientos encontrados, ya que por un lado me duele un poco dejar a OpenLaslo (la alternativa origina y abierta) por Flex. Pero por otro lado me alegro de haberme animado a probar Flex, que ha hecho el desarrollo de RIAs un poco más sencillo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/conociendo-a-flex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Code for Educators</title>
		<link>http://www.andreimosso.com/google-code-for-educators/</link>
		<comments>http://www.andreimosso.com/google-code-for-educators/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 18:44:05 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[literatura]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=139</guid>
		<description><![CDATA[Nuevamente Google incursiona en el área de la educación. Habíamos visto Scholar y Book Search, pero esta vez se trata de un proyecto más completo y orientado a profesores y estudiantes de Ciencias Computacionales. Se trata de una plataforma educativa en la que se pueden encontrar múltiples recursos para mantener a la academia actualizada con [...]]]></description>
			<content:encoded><![CDATA[<p>Nuevamente Google incursiona en el área de la educación. Habíamos visto <a href="http://scholar.google.com/schhp?hl=en" onclick="javascript:pageTracker._trackPageview ('/outbound/scholar.google.com');">Scholar</a> y <a href="http://scholar.google.com/books?hl=en" onclick="javascript:pageTracker._trackPageview ('/outbound/scholar.google.com');">Book Search</a>, pero esta vez se trata de un proyecto más completo y orientado a profesores y estudiantes de Ciencias Computacionales. Se trata de una plataforma educativa en la que se pueden encontrar múltiples recursos para mantener a la academia actualizada con la más reciente tecnología. Actualmente cuenta con las siguientes secciones:</p>
<p align="center">
<a href="http://code.google.com/edu/" rel='external' style="#float: left; margin: 3px 10px 10px 0;" title='Google Code for Educators' onclick="javascript:pageTracker._trackPageview ('/outbound/code.google.com');"><img src='http://www.andreimosso.com/wp-content/uploads/2007/11/google_code_for_educators.png' alt='Google Code for Educators' /></a>
</p>
<ul>
<li><strong>Tutoriales</strong>: Documentos cortos pero muy concisos y de mucha ayuda para temas muy específicos.</li>
<li><strong>Cursos</strong>: Tienen una extensión mayor y viene material de clase junto con ejercicios prácticos.</li>
<li><strong>Herramientas</strong>: Recursos (programas, bases de datos) de apoyo para los cursos y tutoriales.</li>
<li><strong>Videos</strong>: Conferencias o seminarios grabados, aprende directamente de los pioneros de las nuevas tectologías.</li>
<li><strong>Curriculum Search</strong>: Un buscador de material educativo que se enfoca en lo que producen los departamentos de Ciencias Computacionales de todo el mundo.</li>
<li><strong>Foro</strong>: Para aclarar dudas o hacer sugerencias. Si tienes material o cursos que aportar este es el lugar para hacerlo.</li>
</ul>
<p>Por el momento se ven pocos recursos y temas, pero a juzgar por la calidad del contenido me parece que este sitio será una excelente fuente para aprender tecnologías muy actuales e interesantes que difícilmente se logran cubrir en un curso universitario (al menos aquí en México).<br />
El curso que me llamó la atención de inmediato fue el de sistemas distribuidos de la Universidad de Washington, parece muy completo y en la parte práctica requiere el uso de <a href="http://lucene.apache.org/hadoop/" onclick="javascript:pageTracker._trackPageview ('/outbound/lucene.apache.org');">Hadoop</a> (una plataforma para programar en clusters); incluso trae una imagen lista para usarse en VMWare Player.</p>
<p>Si el uso de este proyecto se difunde como suelen hacerlo las aplicaciones de Google, ya no habrá necesidad de ir a la Universidad :). Estaría chido que en el futuro Google (o la Universidad publica el curso) expida Diplomas o Certificados.</p>
<p>Visita el sitio para empezar a sacar provecho de <a href="http://code.google.com/edu/" onclick="javascript:pageTracker._trackPageview ('/outbound/code.google.com');">Google Code for Educators</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/google-code-for-educators/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Unbuntu 7.10 Disponible</title>
		<link>http://www.andreimosso.com/unbuntu-710-disponible/</link>
		<comments>http://www.andreimosso.com/unbuntu-710-disponible/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 12:00:39 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=136</guid>
		<description><![CDATA[Hoy se cumple un ciclo más de desarrollo de Ubuntu, una de las distribuciones que más se ha preocupado por llevar la Linux a los usuarios de PC.



Esta nueva versión cuenta con algunas notables mejoras con respecto a la anterior:

Compiz Fusion viene instalado por defecto. Esperemos que esta vez los usuarios de ATI no tengamos [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy se cumple un ciclo más de desarrollo de Ubuntu, una de las distribuciones que más se ha preocupado por llevar la Linux a los usuarios de PC.</p>
<p align="center">
<a href="http://www.ubuntu.com/getubuntu/download" title='Ubuntu 7.10' onclick="javascript:pageTracker._trackPageview ('/outbound/www.ubuntu.com');"><img src='http://www.andreimosso.com/wp-content/uploads/2007/10/710countdown_0days.png' alt='Ubuntu 7.10' /></a>
</p>
<p>Esta nueva versión cuenta con algunas notables mejoras con respecto a la anterior:</p>
<ul>
<li><strong>Compiz Fusion</strong> viene instalado por defecto. Esperemos que esta vez los usuarios de ATI no tengamos los mismos problemas.</li>
<li>Búsqueda de escritorio: Deskbar viene instalado por defecto.</li>
<li>Mejoras en el manejo de hardware: Ahora las impresoras y muchos dispositivos inalámbricos serán instalados automáticamente.</li>
<li>Soporte mejorado para pantallas adicionales: Para usuarios de laptops, la configuración es más sencilla y para usuarios avanzados, soporta <strong>múltiples monitores</strong>.</li>
<li>Soporte de lectura y <strong>escritura</strong> en particiones NTFS por defecto.</li>
<li>Cambio rápido de usuario: Ahora se puede cambiar de usuario sin tener que cerrar la sesión y entrar de nuevo.</li>
<li><strong>Cifrado de particiones</strong>: Con la versión alterna de intalación se pueden cifrar particiones completas para mayor seguridad.</li>
</ul>
<p>Para obtener la última versión de Ubuntu hay que ir a la página de <a href="http://www.ubuntu.com/getubuntu/download" onclick="javascript:pageTracker._trackPageview ('/outbound/www.ubuntu.com');">descargas</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/unbuntu-710-disponible/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Revolution OS</title>
		<link>http://www.andreimosso.com/revolution-os/</link>
		<comments>http://www.andreimosso.com/revolution-os/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 21:10:11 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=123</guid>
		<description><![CDATA[Siempre es interesante conocer un poco de los orígenes de un proyecto masivamente exitoso. Tal es el caso de la historia de la Free Software Foundation, el proyecto GNU, Linux y el movimiento Open Source.
Revolution OS es un documental de J.T.S. Moore de 2001. Probablemente muchos ya lo han visto antes, pero nunca está de [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre es interesante conocer un poco de los orígenes de un proyecto masivamente exitoso. Tal es el caso de la historia de la <em>Free Software Foundation</em>, el proyecto GNU, Linux y el movimiento <em>Open Source</em>.<br />
Revolution OS es un documental de J.T.S. Moore de 2001. Probablemente muchos ya lo han visto antes, pero nunca está de más recordar y reevaluar lo importante que han sido estos movimientos sociales y tecnológicos para el desarrollo de mundo de la informática.</p>
<p align="center">
<object codebase="http://go.divx.com/plugin/DivXBrowserPlugin.cab" height="384" width="512" classid="clsid:67DABFBF-D0AB-41fa-9C46-CC0F21721616"><param name="autoplay" value="false"><param name="src" value="http://video.stage6.com/1303994/.divx" /><param name="custommode" value="Stage6" /><param name="showpostplaybackad" value="false" /><embed type="video/divx" src="http://video.stage6.com/1303994/.divx" pluginspage="http://go.divx.com/plugin/download/" showpostplaybackad="false" custommode="Stage6" autoplay="false" height="384" width="512" /></object>
</p>
<p>Aprovecho este post para ampliar un poco la perspectiva sobre lo que pasó justo antes de este periodo, se trata de la historia de Unix y algunas de sus vertientes. Fue parte de un examen parcial de Sistemas Operativos II. Creo que a los fans de los sistemas abiertos les interesará un poco. Les dejo la liga a mi artículo:</p>
<p align="center">
<a href="http://www.andreimosso.com/wp-content/uploads/2007/10/unix.pdf" title='Historia de Unix'><img src='http://www.andreimosso.com/wp-content/uploads/2007/10/pdf_icon2.png' alt='Historia de Unix' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/revolution-os/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
