<?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/"
	>

<channel>
	<title>IPCorp Blog &#187; Java</title>
	<atom:link href="http://www.ipcorp.com.ar/blog/category/temas/lenguajes-de-programacion/java-lenguajes-de-programacion-temas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ipcorp.com.ar/blog</link>
	<description>#pg_dump ideas &#62; blog.log</description>
	<lastBuildDate>Fri, 11 Nov 2011 20:18:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Jornada de Charlas de la Facultad de Ciencias Exactas de la UNNE</title>
		<link>http://www.ipcorp.com.ar/blog/2010/09/30/jornada-de-charlas-de-la-facultad-de-ciencias-exactas-de-la-unne/</link>
		<comments>http://www.ipcorp.com.ar/blog/2010/09/30/jornada-de-charlas-de-la-facultad-de-ciencias-exactas-de-la-unne/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 21:44:25 +0000</pubDate>
		<dc:creator>marcelo</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Ingeniería de Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=915</guid>
		<description><![CDATA[Jornada de Charlas de la Facultad de Ciencias Exactas &#8211; Universidad Nacional del Nordeste.
Fecha : 02 de Octubre de 2010
Lugar : Edificio 9 de julio . 9 de Julio 1449  - Corrientes -Cap-
Dirigido a estudiantes de la carrera de sistemas y pùblico en general. Las acreditaciones se realizan el mismo dìa, se entregaran certificados.
Cronograma de [...]]]></description>
			<content:encoded><![CDATA[<p>Jornada de Charlas de la Facultad de Ciencias Exactas &#8211; Universidad Nacional del Nordeste.</p>
<p>Fecha : 02 de Octubre de 2010</p>
<p>Lugar : Edificio 9 de julio . 9 de Julio 1449  - Corrientes -Cap-</p>
<p>Dirigido a estudiantes de la carrera de sistemas y pùblico en general. Las acreditaciones se realizan el mismo dìa, se entregaran certificados.</p>
<p style="text-align: center;"><strong><span style="text-decoration: underline;">Cronograma de charlas</span></strong></p>
<table style="cursor: default; page-break-before: always;" border="1" cellspacing="0" cellpadding="7" width="100%">
<colgroup>
<col width="48*"></col>
<col width="58*"></col>
<col width="73*"></col>
<col width="77*"></col>
</colgroup>
<tbody>
<tr valign="TOP">
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;"><strong>Horario</strong></span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;"><strong>Título</strong></span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;"><strong>Disertante</strong></span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;"><strong>Contenido</strong></span></span></span></p>
</td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%" height="82" bgcolor="#d3dfee">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">9 – 10 hs</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%" bgcolor="#d3dfee">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Struts, una aplicación del Patrón ‘Modelo Vista Controlador</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%" bgcolor="#d3dfee">
<p align="CENTER"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Lic. Edgar Alberto Gómez</span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP" bgcolor="#d3dfee"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">¿Qué es un Patrón de Diseño? – Descripción breve del Patrón Modelo Vista Controlador (MVC).</span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;"> </span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Elementos del framework ‘Struts’: Archivos XML de configuración (web.xml, struts-config.xml), Actions, ActionForms, ActionErrors, Tags de Struts para utilizar en código HTML.</span></span></span></td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%" height="61">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">10 – 10,30 hs.</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Acreditación de la LSI</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Mgter. Gladys Dapozo</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Acreditación de carreras de Informática. CONEAU. Res. 786/09 Ministerio de Educación. Evaluación de calidad.</span></span></span></td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%" bgcolor="#d3dfee">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">10.30 – 11,30 hs</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%" bgcolor="#d3dfee">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Persistencia de Objetos en Bases de Datos Orientado a Objetos.</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%" bgcolor="#d3dfee">
<p align="CENTER"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Expto. Mario Augusto Arqueros</span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP" bgcolor="#d3dfee"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Origen y concepto del motor de bases de datos orientado a objetos. Comunicación y manejo de la persistencia en la base de datos orientada a objetos. Tipos y complejidades de consulta y recupero de los objetos. Bondades del motor de bases de datos orientadas a objetos DB4o. Principales diferencias entre las BDR y las BDOO. Ejemplo práctico métodos de persistencia y búsqueda de objetos en una BDOO.</span></span></td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">11,30 – 13,30 hs</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%">
<p style="margin-bottom: 0cm;" align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Diseño de Interfaces de usuario en Aplicaciones Web</span></span></span></p>
<p align="CENTER">
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Lic Carlos Barbiero (IPCorp)</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Introducción, ¿qué es una interfaz de usuario?. – Definiciones. Pequeña referencia histórica. &#8211; Arquitectura de la información. Fenómeno Web 2.0. Definiciones y conceptos. Tecnologías influyentes. Descripción de patrones de diseño. Ejemplos y Tips de diseño</span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">. </span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Sitios y aplicaciones de ejemplo. Tips de diseño en aplicaciones Web.</span></span></span></td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%" bgcolor="#d3dfee">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">15 – 16hs</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%" bgcolor="#d3dfee">
<p style="margin-bottom: 0cm;" align="CENTER"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Reutilización de decisiones de diseño mediante patrones</span></span></p>
<p align="CENTER">
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%" bgcolor="#d3dfee">
<p style="margin-bottom: 0cm;" align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Lic. Vanesa Morand</span></span></span></p>
<p align="CENTER">
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP" bgcolor="#d3dfee">
<p style="margin-bottom: 0cm;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Definición de patrones. Clasificación de patrones. Importancia de la aplicación de patrones.</span></span></p>
<p><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Descripción y análisis de algunos patrones (State, Strategy, Decorator, Adapter). Cuándo definir un patrón? Ejemplos del uso de los mismos. Ejemplos de código con la implementación de patrones.</span></span></td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%">
<p style="margin-bottom: 0cm;" align="CENTER">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">16 </span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">- 17hs.</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%">
<p style="margin-bottom: 0cm;" align="CENTER">
<p style="margin-bottom: 0cm;" align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">e principiante a Desarrollador Web</span></span></span></p>
<p align="CENTER">
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%">
<p style="margin-bottom: 0cm;" align="CENTER">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Ing. Agustín Casiva</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP">
<p style="margin-bottom: 0cm;">
<p><span style="font-family: 'Courier New', monospace;"><span style="font-size: x-small;"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Abstract: Panorama general del desarrollo web en la actualidad, desde tecnologías del lado del cliente, por ejemplo HTML, CSS, JavaScript, Flash, JQuery, ExtJS; hasta procesamiento del lado del Servidor con PHP, Java, .NET, Python, Ruby; involucrando todo el proceso de desarrollo, desde la solicitud del cliente hasta su publicación en la web.</span></span></span></span></span></td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%" bgcolor="#d3dfee">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">17-18 hs.</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%" bgcolor="#d3dfee">
<p style="margin-bottom: 0cm;" align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Calidad de Productos Software</span></span></span></p>
<p align="CENTER">
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%" bgcolor="#d3dfee">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">María Clara Sánchez Vallduvi</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP" bgcolor="#d3dfee"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Concepto de calidad. Medición de software. Normas ISO sobre calidad de Productos Software. ISO 9126 y 14598. Descripción. Relaciones. ISO 25000. Unificación de estándares. Conclusiones.</span></span></span></td>
</tr>
<tr>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="19%">
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">18 – 19 hs.</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="23%">
<p style="margin-bottom: 0cm;" align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Características avanzadas de Entornos Integrados de Desarrollo (IDE´s) para Java</span></span></span></p>
<p align="CENTER">
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="29%">
<p style="margin-bottom: 0cm;" align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Ramón Oscar Fernández</span></span></span></p>
<p align="CENTER"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Carlos Alberto Romero</span></span></span></p>
</td>
<td style="color: #000000; font-size: 11px; cursor: text; margin: 8px;" width="30%" valign="TOP"><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Desarrollo con reutilización. Creando objetos a partir de clases de biblioteca. Pasando objetos como parámetros. Utilizando la zona de código. Depuración [Debugging]: Estableciendo puntos de ruptura [Breakpoints]. Avanzando paso a paso por el código.</span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;"> </span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Inspeccionando variables. Detener y terminar.</span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;"> </span></span></span><span style="color: #2a2a2a;"><span style="font-family: 'Arial Unicode MS', sans-serif;"><span style="font-size: x-small;">Otras operaciones. Abriendo paquetes no-BlueJ con BlueJ. Interaccion entre IDE&#8217;s. Novedades del nuevo BlueJ.</span></span></span></td>
</tr>
</tbody>
</table>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">TEMA: “Strust, una aplicación del Patrón ‘Modelo Vista Controlador”</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Disertante: Edgar Alberto Gómez</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">A partir de las 9hs a 10hs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Introducción: ¿Qué es un Patrón de Diseño? – Descripción breve del Patrón Modelo Vista Controlador (MVC).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Desarrollo: Elementos del framework ‘Struts’: Archivos XML de configuración (web.xml, struts-config.xml), Actions, ActionForms, ActionErrors, Tags de Struts para utilizar en código HTML.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Mostrar un Proyecto Web  en Eclipse utilizando  este Framework</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Duración: 1 hora</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Charla de Acreditacion de la Carrera</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Disertante: Profesora Magíster Gladys Noemí Dapozo</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">A partir de las 10hs a las 10.30hs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Tema: Persistencia de Objetos en Bases de Datos Orientado a Objetos.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Disertante:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Mario Augusto Arqueros</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Larga a las 10.30hs hasta las 11.30hs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Contenido.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Origen y concepto del motor de bases de datos orientado a objetos.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Relación con las clases diseñadas en el diagrama de Clases.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Comunicación y manejo de la persistencia en la base de datos orientada a objetos.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Tipos y complejidades de consulta y recupero de los objetos.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bondades del motor de bases de datos orientadas a objetos DB4o.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Principales diferencias entre las BDR y las BDOO.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Ejemplo práctico entre el diagrama de clases, definición de las clases, diseño de BDR y mapeo del mismo.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Ejemplo práctico de métodos de persistencia y búsqueda de objetos en una BDOO.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Areas de aplicación.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Tiempo de dictado: 1 hora reloj.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">TEMA: “Diseño de Interfaces de usuario en Aplicaciones Web&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Disertante Lic Carlos Barbiero,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">duracion: Aproximada de 1:30</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">desde las 11.30hs hasta las 13.30hs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bosquejo</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1) Introducción, ¿que es una interfaz de usuario?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Definiciones</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Pequeña referencia histórica</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Arquitectura de la información</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2) Fenómeno Web 2.0</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Definiciones y conceptos</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Tecnologías influyentes</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Patrones de diseño</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">3) HTML, Javascript y CSS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Introducción</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Frameworks JS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># Prototype</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># Mootools</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># Scriptaculous</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># Jquery</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Jquery y Jquery UI</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Ejemplos, plugins y código</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">4) Ejemplos y Tips de diseño</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Sitios y aplicaciones de ejemplo</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Tips de diseño en aplicaciones Web</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5) Espacio para Preguntas</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">TEMA: Reutilización de decisiones de diseño mediante patrones</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Disertante: licenciada Vanesa Moran</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">A partir de las 15hs a 16hs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Temario</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Definición de patrones. Clasificación de patrones. Importancia de la aplicación de patrones.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Descripción y análisis de algunos patrones (State, Strategy, Decorator, Adapter). Cuándo definir un patrón? Ejemplos del uso de los mismos. Ejemplos de código con la implementación de patrones.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">TEMA: De principiante a Desarrollador Web</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Disertante: Agustín Casiva</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">a partir de las 16hs a las 17hs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Abstract: Panorama general del desarrollo</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2010/09/30/jornada-de-charlas-de-la-facultad-de-ciencias-exactas-de-la-unne/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Barcode4J en JRuby y Rails</title>
		<link>http://www.ipcorp.com.ar/blog/2010/08/13/barcode4j-en-jruby-y-rails/</link>
		<comments>http://www.ipcorp.com.ar/blog/2010/08/13/barcode4j-en-jruby-y-rails/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 12:18:45 +0000</pubDate>
		<dc:creator>Carlos Barbiero</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[barcode4j]]></category>
		<category><![CDATA[barcodes]]></category>
		<category><![CDATA[codigos de barras]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=844</guid>
		<description><![CDATA[En el post anterior había explicado el uso de Gbarcode, una librería para generación de códigos de barras con Ruby. El problema es que esta librería no se puede utilizar en Jruby ya que tiene extensiones nativas en C, cosa que Jruby aún no soporta.
Después de investigar alternativas de generación de codigos de barras para [...]]]></description>
			<content:encoded><![CDATA[<p>En el <a href="http://www.ipcorp.com.ar/blog/2010/03/16/gbarcode-codigos-de-barra-con-ruby/">post anterior</a> había explicado el uso de Gbarcode, una librería para generación de códigos de barras con Ruby. El problema es que esta librería no se puede utilizar en Jruby ya que tiene extensiones nativas en C, cosa que Jruby aún no soporta.<br />
Después de investigar alternativas de generación de codigos de barras para java como <a href="http://code.google.com/p/zxing/">Zxing</a> y <a href="http://sourceforge.net/projects/barbecue/">Barbecue</a>. Me quedé con <a href="http://barcode4j.sourceforge.net/">Barcode4j</a> por facilidad de implementación, documentación (la cual es muy completa) y sobre todo estabilidad.<br />
A continuación paso a comentarles como utilizar esta librería en JRuby.<br/><br />
1) Lo primero es descargarse en paquete binario del sitio o bien de este <a href="http://downloads.sourceforge.net/project/barcode4j/barcode4j/Barcode4J%202.0/barcode4j-2.0-bin.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fbarcode4j%2Ffiles%2F&#038;ts=1281700033&#038;mirror=ufpr">enlace directo</a>.<br />
2) Al descomprimir el Zip, copiamos el contenido del directorio <b>Build</b> al directorio /lib de nuestra instalación de JRuby</p>
<p>3) Ahora vamos al código:</p>
<pre name="code" class="ruby">

require 'java'

#Importamos algunas librerías que vamos a utilizar
import 'java.awt.image.BufferedImage'
import 'java.io.OutputStream'
import 'java.io.FileOutputStream'

#Importamos las librerías de los códigos de barras (Barcode4j) que necesitamos
import 'org.krysalis.barcode4j.impl.code39.Code39Bean'
import 'org.krysalis.barcode4j.impl.code128.Code128Bean'
import 'org.krysalis.barcode4j.impl.int2of5.Interleaved2Of5Bean'
import 'org.krysalis.barcode4j.impl.codabar.CodabarBean'
import 'org.krysalis.barcode4j.impl.code128.EAN128Bean'
import 'org.krysalis.barcode4j.impl.pdf417.PDF417Bean'
import 'org.krysalis.barcode4j.impl.upcean.EAN13Bean'
import 'org.krysalis.barcode4j.impl.upcean.EAN8Bean'
import 'org.krysalis.barcode4j.impl.upcean.UPCABean'
import 'org.krysalis.barcode4j.impl.datamatrix.DataMatrixBean'
import 'org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider'
import 'org.krysalis.barcode4j.tools.UnitConv'

#Creamos el Bean y establecemos los dpi y wide_factor
bean = Interleaved2Of5Bean.new()
dpi = 150
bean.wide_factor = 3

#Creamos la imagen
ofile = java.io.File.new('/home/laptop/barcodes/barcode.png')
out = FileOutputStream.new(ofile)
canvas = BitmapCanvasProvider.new(out,"image/x-png", dpi, BufferedImage::TYPE_BYTE_BINARY, false, 0)

#Generamos el código de barras
#El segundo parámetro que pasamos es el número del que deseamos generar el codigo de barras
bean.generate_barcode(canvas, '1234567890');
canvas.finish
out.close
</pre>
<p>Con esto, generamos una imagen con nuestro codigo de barras en <b>/home/laptop/barcodes/barcode.png</b> la cual se puede incluir en cualquier pdf/html/odf, etc.</p>
<p>Espero les sea útil. Cualquier duda, no duden en comentar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2010/08/13/barcode4j-en-jruby-y-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JasperReports con Jruby y Rails</title>
		<link>http://www.ipcorp.com.ar/blog/2010/07/29/jasperreports-con-jruby-y-rails/</link>
		<comments>http://www.ipcorp.com.ar/blog/2010/07/29/jasperreports-con-jruby-y-rails/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 23:34:44 +0000</pubDate>
		<dc:creator>Carlos Barbiero</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[datasource]]></category>
		<category><![CDATA[i-report]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=716</guid>
		<description><![CDATA[Uno de los grandes problemas en el desarrollo con Ruby on Rails son los reportes multipágina. Debido a que el HTML (inclusive HTML 5) no soporta multipágina, si utilizamos Jruby tenemos la posibilidad de usar cualquier librería Java en nuestro desarrollo.
Afortunadamente en Java tenemos JasperReports (http://jasperforge.org/), una excelente solución al problema antes mencionado.
Para poder incluir [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los grandes problemas en el desarrollo con Ruby on Rails son los reportes multipágina. Debido a que el HTML (inclusive HTML 5) no soporta multipágina, si utilizamos Jruby tenemos la posibilidad de usar cualquier librería Java en nuestro desarrollo.<br />
Afortunadamente en Java tenemos JasperReports (http://jasperforge.org/), una excelente solución al problema antes mencionado.</p>
<p>Para poder incluir un reporte realizado con JasperReports en nuestra aplicación Jruby necesitamos:</p>
<p>1) Descargar I-Report, la herramienta de administracion de reportes de JasperReports. <a href="http://jasperforge.org/projects/ireport">http://jasperforge.org/projects/ireport</a> y descomprimirlo.</p>
<p>2) Dentro del directorio del i-report, ir a modules/ext/ y copiar todos los archivos .jar (si, todos <img src='http://www.ipcorp.com.ar/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) al directorio lib de la instalación de JRuby. De esta manera, ya incluimos las librerías necesarias y tenemos preparado nuestro JRuby para utilizar JasperReports.</p>
<p>3) Nos resta crear un reporte para prueba, si nunca hiciste un reporte con i-report: <a href="http://jasperforge.org//website/ireportwebsite/IR%20Website/ir_design_a_report.html?header=project&amp;target=ireport">http://jasperforge.org//website/ireportwebsite/IR%20Website/ir_design_a_report.html?header=project&amp;target=ireport</a></p>
<p>4) Finalmente el código para correr nuestro reporte es el siguiente:</p>
<pre name="code" class="ruby">require 'java'
import 'oracle.jdbc.OracleDriver' #Aqui necesitas Utilizar el Driver de la Base de datos que estas usando, en mi caso es oracle
import 'net.sf.jasperreports.engine.JasperCompileManager'
import 'org.apache.commons.dbcp.BasicDataSource'
import'java.util.HashMap'
import'net.sf.jasperreports.engine.JasperFillManager'
import'net.sf.jasperreports.engine.JasperExportManager'                                                                             

#Creo el datasource
basicdatasource = BasicDataSource.new
basicdatasource.driver_class_name = 'oracle.jdbc.OracleDriver'
basicdatasource.username = 'usuario'
basicdatasource.password = 'password'
basicdatasource.url = 'jdbc:oracle:thin:@localhost:1521:XE'
basicdatasource.connection
conexion = basicdatasource.connection

#Compilamos el reporte
jasperReport = JasperCompileManager.compile_report('/url_de_tu_archivo_jrxml/reporte.jrxml')
#Para pasar los parámetros, definimos un objeto HashMap
m = HashMap.new
m.put('parametro_1','valor_parametro_1')
m.put('parametro_2','valor_parametro_2')
m.put('parametro_n','valor_parametro_n')

#Genero el reporte
jasperPrint = JasperFillManager.fill_report(jasperReport, m,conexion)                           

#Exporto el PDF
JasperExportManager.export_report_to_pdf_file(jasperprint, 'path_al_archivo_PDF.pdf')</pre>
<p>Si deseamos generar reportes en Rails, podemos por ejemplo ubicar los reportes en el directorio public/reportes y utilizar  send_file para enviarlos, por ejemplo:</p>
<pre name="code" class="ruby">
JasperExportManager.export_report_to_pdf_file(jasperprint, RAILS_ROOT+"/public/reportes/reporte.pdf")
send_file RAILS_ROOT+"/public/reportes/reporte.pdf"
</pre>
<p>Espero les sea de utilidad, cualquier cosa comenten y trataré de despejar dudas <img src='http://www.ipcorp.com.ar/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2010/07/29/jasperreports-con-jruby-y-rails/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Spring. Decisiones de Control de Acceso</title>
		<link>http://www.ipcorp.com.ar/blog/2010/03/11/spring-decisiones-de-control-de-acceso/</link>
		<comments>http://www.ipcorp.com.ar/blog/2010/03/11/spring-decisiones-de-control-de-acceso/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 14:00:15 +0000</pubDate>
		<dc:creator>gerardo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Acceso]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=619</guid>
		<description><![CDATA[En el proceso de autenticación, una aplicación permitirá a usuarios autenticados una serie de servicios permitidos. Cuando este usuario intenta acceder a un recurso en la aplicacion, tiene que tomar la decisión sobre qué recursos son accesibles con los permisos que tiene asignados o con otras características.
La decisión si a determinado usuario se le permite [...]]]></description>
			<content:encoded><![CDATA[<p>En el proceso de autenticación, una aplicación permitirá a usuarios autenticados una serie de servicios permitidos. Cuando este usuario intenta acceder a un recurso en la aplicacion, tiene que tomar la decisión sobre qué recursos son accesibles con los permisos que tiene asignados o con otras características.</p>
<p>La decisión si a determinado usuario se le permite acceder a un recurso dentro de la aplicación se llama <em>&#8220;decisión de control de acceso&#8221;</em>. Se basa en el estado de la autenticación del usuario, y de la naturaleza de los recursos y los atributos de acceso. En Spring security, las decisiones de control de acceso son llevados a cabo por los managers de decisión de acceso, los cuales deben implementar la interfaz <em>AccessDecisionManager</em>. Cada uno es libre de crear su propio manager de decisión de acceso implementando esta interfaz, de todas maneras Spring Security viene con tres managers que implementan esta interfaz basado en el método de votos.</p>
<p><span id="more-619"></span></p>
<table border="0">
<tbody>
<tr>
<th><strong>Método de Manager de Decisión de Acceso</strong></th>
<th><strong>Cuando conceder acceso</strong></th>
</tr>
<tr>
<td>AffirmativeBased</td>
<td>Al menos un votante vota para conceder acceso</td>
</tr>
<tr>
<td>ConsensusBased</td>
<td>Un concenso de vontantes para conceder acceso</td>
</tr>
<tr>
<td>UnanimousBased</td>
<td>Todos los votantes votan o se abstienen para conceder acceso, ninguno vota por denegar el accesos</td>
</tr>
</tbody>
</table>
<p>Todos estos managers de decision requieren un grupo de vontantes que se configuran para la votación sobre las decisiones de control de acceso. Cada votante debe implementar la interfaz AccessDecisionVoter. Un votante puede votar para garantizar el acceso, puede abstenerse de votar o puede denegar un recurso. Los resultados se representan por las constantes<em> ACCESS_GRANTED, ACCESS_DENIED, y ACCESS_ABSTAIN</em> que son definidos en la interfaz<em> AccessDecisionVoter</em>.<br />
Por defecto si no se especifica ningún manager de decision de acceso entonces Spring va a configurar automaticamente un manager con el método AffirmativeBased con los dos siguientes votantes:</p>
<ul>
<li> <strong>RoleVoter</strong>: vota por una decision de control de accesos basando en el rol del usuario. Solamente procesará los atributos de acceso que                                 contengan el prefijo ROLE_, pero este prefijo se puede configurar. Vota por garantizar el acceso si el usuario tiene el mismo rol que el requerido para accedejor al recurso. vota por denegar el acceso si el usuario carece del rol requerido. Si el recurso no tiene un atributo de acceso que comienza con el prefijo ROLE_, el vontante se abstendra de emitir su voto.</li>
<li><strong> AuthenticatedVoter</strong>: vota por una decision de control de acceso basado en niveles de autenticación de usuario. solamente procesará si el atributo de acceso es <em>IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, and IS_AUTHENTICATED_ANONYMOUSLY</em>. Votará afirmativamente si el nivel de autenticacion es superior que el atributo requerido. De arriba para abajo los niveles de autenticacion son: “fully authenticated,” “authentication remembered,” y “anonymously authenticated.”</li>
</ul>
<p>Por defecto, Spring security configurará un manager de decisión de acceso si no se especifica alguno. Este managaer de decision de acceso por defecto es equivalente al definido en la siguiente configuración:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;_accessManager&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;decisionVoters&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">class</span>=org.springframework.security.vote.RoleVoter<span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">class</span>=org.springframework.security.vote.AuthenticatedVoter<span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/property<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Este manager de decision de acceso y su s votantes deberian satisfacer los requerimientos tipicos de autenticacion. No obstante, si no satisface alguno específico, se puede crear uno propio. En la mayoria de los casos, se necesitará crear un votante customizado. Por ejemplo, se puede crear un votante que tome decision en base a la direccion IP del usuario:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.apress.springrecipes.board.security</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.security.Authentication</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.security.ConfigAttribute</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.security.ConfigAttributeDefinition</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.security.ui.WebAuthenticationDetails</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> IpAddressVoter <span style="color: #000000; font-weight: bold;">implements</span> AccessDecisionVoter <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> IP_PREFIX <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;IP_&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> IP_LOCAL_HOST <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;IP_LOCAL_HOST&quot;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> supports<span style="color: #009900;">&#40;</span>ConfigAttribute attribute<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     <span style="color: #000000; font-weight: bold;">return</span> attribute.<span style="color: #006633;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span>
     <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> attribute.<span style="color: #006633;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">startsWith</span><span style="color: #009900;">&#40;</span>IP_PREFIX<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> supports<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Class</span> clazz<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> vote<span style="color: #009900;">&#40;</span>Authentication authentication, <span style="color: #003399;">Object</span> object,
   ConfigAttributeDefinition config<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>authentication.<span style="color: #006633;">getDetails</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">instanceof</span> WebAuthenticationDetails<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">return</span> ACCESS_DENIED<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
WebAuthenticationDetails details <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>WebAuthenticationDetails<span style="color: #009900;">&#41;</span> authentication.<span style="color: #006633;">getDetails</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">String</span> address <span style="color: #339933;">=</span> details.<span style="color: #006633;">getRemoteAddress</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> result <span style="color: #339933;">=</span> ACCESS_ABSTAIN<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Object</span> element <span style="color: #339933;">:</span> config.<span style="color: #006633;">getConfigAttributes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  ConfigAttribute attribute <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>ConfigAttribute<span style="color: #009900;">&#41;</span> element<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">supports</span><span style="color: #009900;">&#40;</span>attribute<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    result <span style="color: #339933;">=</span> ACCESS_DENIED<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>IP_LOCAL_HOST.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>attribute.<span style="color: #006633;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>address.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;127.0.0.1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> ACCESS_GRANTED<span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">return</span> result<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Notar que este vontante procesará los atrbutos de acceso que comienzan con el prefijo IP_. Por el momento, solamente soporta el atributo IP_LOCAL_HOST. Su el usuario es un cliente web cuya direcciones IP es iguial a 127.0.0.1, votará por un acceso permitido. De otra forma, votará por denmegar el acceso. Si el recurso no tiene un atributo que comienza con IP_, entonces se abstine de votar.<br />
A continuación habra que definir un manager de decision de acceso personalizado  que incluya este votante:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans:bean</span> <span style="color: #000066;">id</span>=”accessDecisionManager” <span style="color: #000066;">class</span>=”org.springframework.security.vote.AffirmativeBased”<span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans:property</span> <span style="color: #000066;">name</span>=”decisionVoters”<span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans:list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans:bean</span> <span style="color: #000066;">class</span>=”org.springframework.security.vote.RoleVoter” <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans:bean</span> <span style="color: #000066;">class</span>=”org.springframework.security.vote.AuthenticatedVoter” <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans:bean</span> <span style="color: #000066;">class</span>=”com.apress.springrecipes.board.security.IpAddressVoter” <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/beans:list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/beans:property<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/beans:bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><span style="font-family: Verdana; line-height: normal;">Ahora supongamos que nos gustaría permitir usuarios de maquinas que corren un container WEB. Habra que hacer referencia a este manager de decision de acceso desde el elemento de configuracion  &lt;http&gt; para agregar el atributo de acceso IP_LOCAL_HOST a la url  /messageDelete-htm*:</span></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http</span> <span style="color: #000066;">access-decision-manager-ref</span>=”accessDecisionManager”<span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intercept-url</span> <span style="color: #000066;">pattern</span>=”/messageList.htm*” <span style="color: #000066;">access</span>=”ROLE_USER,ROLE_GUEST” <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intercept-url</span> <span style="color: #000066;">pattern</span>=”/messagePost.htm*” <span style="color: #000066;">access</span>=”ROLE_USER” <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intercept-url</span> <span style="color: #000066;">pattern</span>=”/messageDelete.htm*” <span style="color: #000066;">access</span>=”ROLE_ADMIN,IP_LOCAL_HOST” <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
…
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/http<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><span style="font-weight: normal;">Entonces si se quiere acceder a la aplicacion board message desde localhost, no se necesitará loguearse como administrador para ejecutar la acción.</span></p>
<p><span style="font-family: Verdana; line-height: normal;"><em>Traducido de Apress Spring Recipes A Problem-Solution Approach (2008) - Gary Mak </em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2010/03/11/spring-decisiones-de-control-de-acceso/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Findbugs: una aplicación para encontrar bugs potenciales en Java</title>
		<link>http://www.ipcorp.com.ar/blog/2009/09/10/findbugs-un-programa-para-encontrar-bugs-potenciales-en-java/</link>
		<comments>http://www.ipcorp.com.ar/blog/2009/09/10/findbugs-un-programa-para-encontrar-bugs-potenciales-en-java/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 20:52:22 +0000</pubDate>
		<dc:creator>alfredo</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[findbugs]]></category>
		<category><![CDATA[jdk]]></category>

		<guid isPermaLink="false">http://ipcorp.com.ar/blog/?p=206</guid>
		<description><![CDATA[
FindBugs es una aplicación desarrollada por la Universidad de Maryland cuyo objetivo es buscar bugs en programas Java. Está basado en el concepto de patrones de bug. Un patrón de bug es un idioma de código que a menudo es un error. Los patrones de bugs aparecen por una variedad de razones:

Dificultad de algunas características [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-207" src="http://ipcorp.com.ar/blog/wp-content/uploads/2009/09/buggy-sm.png" alt="buggy-sm" width="120" height="92" /><br />
<a href="http://findbugs.sourceforge.net" target="_blank">FindBugs</a> es una aplicación desarrollada por la <a href="http://www.umd.edu/" target="_blank">Universidad de Maryland</a> cuyo objetivo es buscar bugs en programas Java. Está basado en el concepto de patrones de bug. Un patrón de bug es un idioma de código que a menudo es un error. Los patrones de bugs aparecen por una variedad de razones:</p>
<ul>
<li><span style="background-color: #ffffff">Dificultad de algunas características del lenguaje.</span></li>
<li><span style="background-color: #ffffff">Falta de comprensión de los métodos de la API.</span></li>
<li><span style="background-color: #ffffff">Errores de variación cuando el código es modificado durante el mantenimiento.</span></li>
<li><span style="background-color: #ffffff">Una variedad de errores: errores de tipeo, uso incorrecto de los operadores booleanos, etc.</span></li>
</ul>
<p>FindBugs usa análisis estático para inspeccionar el bytecode de Java en busca de patrones de bugs. Con análisis estático nos referimos a que puede encontrar errores simplemente inspeccionando el código de un programa: ejecutarlo no es necesario. Esto hace a FindBugs muy fácil de usar. En la práctica, la tasa de falsas advertencias reportadas por FindBugs es menor al 50%.</p>
<h2>Instalación y ejecución</h2>
<p>La manera más fácil de instalar FindBugs es bajar la distribución binaria que viene empaquetada en forma de archivo <a href="http://prdownloads.sourceforge.net/findbugs/findbugs-1.3.9.tar.gz?download" target="_blank">tar.gz</a> o <a href="http://prdownloads.sourceforge.net/findbugs/findbugs-1.3.9.zip?download" target="_blank">zip</a>. FindBugs requiere JRE (or JDK) 1.5.0 o posterior para poder ejecutarse. Sin embargo puede analizar programas compilados en cualquier versión de Java. Un vez que lo bajamos lo descomprimimos de la siguiente manera:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xvf</span> findbugs-1.3.9.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> findbugs-1.3.9<span style="color: #000000; font-weight: bold;">/</span>
java <span style="color: #660033;">-jar</span> lib<span style="color: #000000; font-weight: bold;">/</span>findbugs.jar</pre></div></div>

<p>FindBugs clasifica los bugs en las siguientes categorías</p>
<ul>
<li><span style="background-color: #ffffff"><strong>Correcto pero probable bug</strong>: un error de codificación aparente  resultando en código que probablemente no era lo que el programador tenía en mente.</span></li>
<li><span style="background-color: #ffffff"><strong>Mala Prácticas</strong>: violaciones a las prácticas de codificación esenciales y recomendadas, por ejemplo: uso incorrecto del finalize.</span></li>
<li><span style="background-color: #ffffff"><strong>Código Dudoso</strong>: esto es código confuso, anómalo, o escrito de una manera que lleva a si mismo a errores, por ejemplo: casts sin confirmar, chequeos de nulos redundantes, etc.</span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2009/09/10/findbugs-un-programa-para-encontrar-bugs-potenciales-en-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

