<?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; Ruby</title>
	<atom:link href="http://www.ipcorp.com.ar/blog/category/temas/lenguajes-de-programacion/ror/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>Cocinando la Receta RGM (Ruby-GTK-MongDB) en FACENA</title>
		<link>http://www.ipcorp.com.ar/blog/2011/09/20/cocinando-la-receta-rgm-ruby-gtk-mongdb-en-facena/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/09/20/cocinando-la-receta-rgm-ruby-gtk-mongdb-en-facena/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 23:21:02 +0000</pubDate>
		<dc:creator>Roxana Pintos</dc:creator>
				<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=1102</guid>
		<description><![CDATA[En el marco de las Jornadas de Presentación de Trabajos de Investigación y Desarrollo de Alumnos y Graduados L.S.I de FACENA, el día 24 de septiembre a las 11hs, Leandro Rodriguez y Carlos Mathiasen presentarán Cocinando la Receta RGM (Ruby-GTK-MongDB).
El objetivo de la charla es compartir la experiencia de utilizar la tecnología de:

Ruby: lenguaje de [...]]]></description>
			<content:encoded><![CDATA[<p>En el marco de las <em>Jornadas de Presentación de Trabajos de Investigación y Desarrollo de Alumnos y Graduados L.S.I de FACENA,</em> el día 24 de septiembre a las 11hs, Leandro Rodriguez y Carlos Mathiasen presentarán <em><strong>Cocinando la Receta RGM (Ruby-GTK-MongDB)</strong></em>.</p>
<p>El objetivo de la charla es compartir la experiencia de utilizar la tecnología de:</p>
<ul>
<li>Ruby: lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el japonés Yukihiro &#8220;Matz&#8221; Matsumoto. Combina una sintaxis inspirada en Python y Perl con características de programación orientada a objetos similares a Smalltalk.</li>
<li>GTK+ o The GIMP Toolkit: conjunto de bibliotecas multiplataforma para desarrollar interfaces gráficas de usuario (GUI). GTK+ se diseñó para permitir programar con lenguajes como C, C++, C#, Java, Ruby, Perl, PHP o Python.</li>
<li>MongoDB: sistema de base de datos multiplataforma orientado a documentos, de esquema libre. Se destaca su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base de datos.</li>
</ul>
<p>Los esperamos en el edificio de la FACENA ubicado por calle 9 de Julio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/09/20/cocinando-la-receta-rgm-ruby-gtk-mongdb-en-facena/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jornada de Integración, Extensión y Actualización de estudiantes de informática (JoInEA)</title>
		<link>http://www.ipcorp.com.ar/blog/2011/08/23/jornada-de-integracion-extension-y-actualizacion-de-estudiantes-de-informatica-joinea/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/08/23/jornada-de-integracion-extension-y-actualizacion-de-estudiantes-de-informatica-joinea/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 23:56:23 +0000</pubDate>
		<dc:creator>Carlos Mathiasen</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=1078</guid>
		<description><![CDATA[La Jornada de Integración, Extensión y Actualización de estudiantes de informática (JoInEA) es organizada por una comisión de alumnos de las carreras de informática de la Facultad de Ciencias Exactas, Químicas y Naturales de la Universidad Nacional de Misiones. El objetivo de la misma es efectivizar la logística de la actualización mediante la integración y [...]]]></description>
			<content:encoded><![CDATA[<p>La Jornada de Integración, Extensión y Actualización de estudiantes de informática (JoInEA) es organizada por una comisión de alumnos de las carreras de informática de la Facultad de Ciencias Exactas, Químicas y Naturales de la Universidad Nacional de Misiones. El objetivo de la misma es efectivizar la logística de la actualización mediante la integración y extensión, generando un espacio para los aportes, avances y reflexiones de estudiantes y profesionales del medio; así como también la promoción e inserción del personal y las herramientas informáticas en nuestra sociedad.<br />
La misma fu&eacute; declarada de inter&eacute;s provincial el pasado 9 de agosto.</p>
<p>Estar&eacute; presentando  la charla  “Interfaces de Usuario Con Ruby y GTK”  el viernes 02 de septiembre de 2011 a las 14:30 hs.</p>
<p>Si quer&eacute;s saber un poco m&aacute;s visit&aacute;: <a href="http://joinea2011.exactas-unam.dyndns.org/">JOINEA</a></p>
<p>Los espero</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/08/23/jornada-de-integracion-extension-y-actualizacion-de-estudiantes-de-informatica-joinea/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IPCorp en el 4to Festival Misionero de Software Libre.</title>
		<link>http://www.ipcorp.com.ar/blog/2011/05/16/ipcorp-en-el-4to-festival-misionero-de-software-libre/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/05/16/ipcorp-en-el-4to-festival-misionero-de-software-libre/#comments</comments>
		<pubDate>Mon, 16 May 2011 20:20:27 +0000</pubDate>
		<dc:creator>marcelo</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=1043</guid>
		<description><![CDATA[La comunidad MiSol invita a todos al “4to Festival Misionero de Software Libre” los días 20 y 21 de Mayo de 2011 próximos en la Fac. de ingeniería de la UNaM (Universidad Nacional de Misiones) en la ciudad de Oberá, Misiones, Argentina.
IPCorp S.R.L estara presente en el mismo presentando  la charla  sobre &#8220;Desarrollo con RubyOnRails y PostgreSQL&#8221;  la [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-top: 15px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; line-height: 19px; margin: 0px;">La comunidad MiSol invita a todos al <strong style="padding: 0px; margin: 0px;">“<a href="http://www.misol.org.ar/4to-festival-misionero-de-software-libre/" target="_blank">4to Festival Misionero de Software Libre</a>”</strong> los días <strong style="padding: 0px; margin: 0px;">20 y 21 de Mayo de 2011</strong> próximos en la Fac. de ingeniería de la UNaM (Universidad Nacional de Misiones) en la ciudad de <strong style="padding: 0px; margin: 0px;">Oberá</strong>, Misiones, Argentina.</p>
<p style="padding-top: 15px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; line-height: 19px; margin: 0px;">IPCorp S.R.L estara presente en el mismo presentando  la charla  sobre &#8220;Desarrollo con RubyOnRails y PostgreSQL&#8221;  la misma sera disertada por Carlos Mathiasen y Alfredo Ramirez el sabado 21 de mayo de 2011 a las 15:00 hs.</p>
<p style="padding-top: 15px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; line-height: 19px; margin: 0px;">Este evento tiene como objetivo fomentar las ventajas técnicas, sociales, políticas y filosóficas relacionadas a la utilización del software libre. En particular este año abordaremos 2 temáticas: <strong style="padding: 0px; margin: 0px;">“Hackers”</strong> y <strong style="padding: 0px; margin: 0px;">“Cultura Libre”</strong> para que podamos divertirnos entre todos de la diversidad de temas en nuestra comunidad.</p>
<p style="padding-top: 15px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; line-height: 19px; margin: 0px;">Este año nuevamente contaremos con la presencia de:</p>
<p style="padding-top: 15px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; line-height: 19px; margin: 0px;">- <strong style="padding: 0px; margin: 0px;">Mozilla Foundation</strong> que llevan adelante un modelo de negocio basado en software libre y conocimiento libre.<br style="padding: 0px; margin: 0px;" />- <strong style="padding: 0px; margin: 0px;">SoLAr (Software Libre Argentina)</strong> &#8211; Asociación civil sin fines de lucro dedicada a la promoción del Soft. libre en nuestro país.</p>
<p style="padding-top: 15px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; line-height: 19px; margin: 0px;">El evento constará de:<br style="padding: 0px; margin: 0px;" /><strong style="padding: 0px; margin: 0px;">Viernes 20: </strong>Charlas y ponencias en el auditorium de la <strong style="padding: 0px; margin: 0px;">Facultad de Ingeniería &#8211; Juan Manuel de Rosas 325</strong>. Acreditación 8:00 hs &#8211; Inicio 9:15hs<br style="padding: 0px; margin: 0px;" /><strong style="padding: 0px; margin: 0px;">Sábado 21: </strong>Charlas en las aulas<strong style="padding: 0px; margin: 0px;"> “Hackers” </strong>y<strong style="padding: 0px; margin: 0px;"> “Cultura Libre” </strong>(Facultad de Ingeniería). INICIO 9:00 hs<br style="padding: 0px; margin: 0px;" /><strong style="padding: 0px; margin: 0px;">Entrada Libre y Gratuita &#8211; CERTIFICADO IMPRESO $25</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/05/16/ipcorp-en-el-4to-festival-misionero-de-software-libre/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jquery Validation y formulario ajax en rails</title>
		<link>http://www.ipcorp.com.ar/blog/2011/05/13/jquery-validation-y-formulario-ajax-en-rails/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/05/13/jquery-validation-y-formulario-ajax-en-rails/#comments</comments>
		<pubDate>Sat, 14 May 2011 00:12:51 +0000</pubDate>
		<dc:creator>Carlos Mathiasen</dc:creator>
				<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[form_remote_for]]></category>
		<category><![CDATA[form_remote_tag]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails 2.3.5]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[validar]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=1035</guid>
		<description><![CDATA[Hola a todos. Hoy vengo con un pequeño tip que me hizo doler la cabeza por un rato.
El problema era el siguiente, ten&#237;a un formulario ajax y necesitaba hacer una validaci&#243;n del lado del cliente. Para realizar la validaci&#243;n utilizaba el plugin de  jquery validation, y para el formulario ajax usaba lo siguiente

&#60;% form_remote_for [...]]]></description>
			<content:encoded><![CDATA[<p>Hola a todos. Hoy vengo con un pequeño tip que me hizo doler la cabeza por un rato.<br />
El problema era el siguiente, ten&iacute;a un formulario ajax y necesitaba hacer una validaci&oacute;n del lado del cliente. Para realizar la validaci&oacute;n utilizaba el plugin de  <a href="http://docs.jquery.com/Plugins/validation">jquery validation</a>, y para el formulario ajax usaba lo siguiente</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#5A0A0A; font-weight:bold;">form_remote_for</span> <span style="color:#0066ff; font-weight:bold;">@personas</span>, <span style="color:#ff3333; font-weight:bold;">:url</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> crear_titulares_personas_path, <span style="color:#ff3333; font-weight:bold;">:method</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'POST'</span> , <span style="color:#ff3333; font-weight:bold;">:update</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'creado'</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span>= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:nombre</span>, <span style="color:#ff3333; font-weight:bold;">:class</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'required'</span><span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span>= f.<span style="color:#9900CC;">submit</span> <span style="color:#996600;">&quot;Guardar&quot;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
&nbsp;
&lt;script type=&quot;text/javascript&quot;&gt;
  $(document).ready(function(){
   $('#new_factor_variante').validate();
  });
&lt;/script&gt;</pre></div></div>

<p>Normalmente, al presionar el bot&oacute;n Guardar, el plugin me dice que ingrese un nombre (debido a que el campo es requerido) y no va al m&eacute;todo del controller hasta que lo ingrese. Sin embargo me mostraba el error, pero igual se iba hasta el controller, es decir, la acci&oacute;n se ejecutaba igual.<br />
Para resolver esto, despu&eacute;s de una ardua b&uacute;squeda en google, decid&iacute; consultar la <a href="http://replay.web.archive.org/20090228103110/http://api.rubyonrails.org//">api de rails 2.3.5</a>(es la versi&oacute;n que estoy usando) y encontre que podes agregar una condici&oacute;n en el form, para que se ejecute o no la acci&oacute;n y en esta condici&oacute;n puedo meter c&oacute;digo javascript.<br />
Lo que hice fue preguntar si el formulario era v&aacute;lido y el c&oacute;digo me qued&oacute; as&iacute;:</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#5A0A0A; font-weight:bold;">form_remote_for</span> <span style="color:#0066ff; font-weight:bold;">@persona</span>, <span style="color:#ff3333; font-weight:bold;">:url</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> crear_titulares_personas_path, <span style="color:#ff3333; font-weight:bold;">:method</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'POST'</span> , <span style="color:#ff3333; font-weight:bold;">:condition</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'$(this).valid()'</span>,  <span style="color:#ff3333; font-weight:bold;">:update</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'creado'</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span>= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:nombre</span>, <span style="color:#ff3333; font-weight:bold;">:class</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'required'</span><span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span>= f.<span style="color:#9900CC;">submit</span> <span style="color:#996600;">&quot;Guardar&quot;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
&lt;script type=&quot;text/javascript&quot;&gt;
  $(document).ready(function(){
   $('#new_factor_variante').validate();
  });</pre></div></div>

<p>.valid() es un m&eacute;todo del <a href="http://docs.jquery.com/Plugins/Validation/valid">jquery validation</a> que me devuelve un valor booleano seg&uacute;n el estado del formulario.<br />
Con esto ya pueden tener validaci&oacute;n del lado del cliente con un formulario ajax en rails.<br />
Espero les sirva, cualquier cosa pregunten nom&aacute;s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/05/13/jquery-validation-y-formulario-ajax-en-rails/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Haml: alternativa a ERb</title>
		<link>http://www.ipcorp.com.ar/blog/2011/02/08/haml-alternativa-a-erb/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/02/08/haml-alternativa-a-erb/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 19:36:12 +0000</pubDate>
		<dc:creator>Carlos Mathiasen</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=981</guid>
		<description><![CDATA[Si hay algo de bueno que tiene rails, es como podemos cambiar sus componentes. Por ejemplo,
podr&#237;amos instalar SimpleStored a nuestro proyecto y reemplazar ActiveRecord para poder
trabajar con CouchDb, con Jquery-Rails podemos cambiar las librer&#237;as de prototype
por las de jquery. Otra cosa interesante es poder cambiar el motor de las
plantillas HTML, de esto vamos a hablar [...]]]></description>
			<content:encoded><![CDATA[<p>Si hay algo de bueno que tiene rails, es como podemos cambiar sus componentes. Por ejemplo,<br />
podr&iacute;amos instalar SimpleStored a nuestro proyecto y reemplazar ActiveRecord para poder<br />
trabajar con CouchDb, con Jquery-Rails podemos cambiar las librer&iacute;as de prototype<br />
por las de jquery. Otra cosa interesante es poder cambiar el motor de las<br />
plantillas HTML, de esto vamos a hablar en este post.<br />
Por defecto rails trae ERb (Embedded Ruby), como su nombre lo dice son archivos html con<br />
condigo ruby embebido, son los archivos que todos los programadores de rails conocen, los rhtml.<br />
Aqu&iacute; la filosof&iacute;a es muy simple, es escribir en html y para poner nuestro c&oacute;digo<br />
basta con utilizar <% %> y <%= %>.<br />
Por ejemplo un listado de elementos ser&iacute;a as&iacute;:</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;">&lt;table&gt;
  &lt;tr&gt;
    &lt;th&gt;Raza&lt;/th&gt;
    &lt;th&gt;Nombre&lt;/th&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th&gt;&lt;/th&gt;
  &lt;/tr&gt;
&nbsp;
<span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#0066ff; font-weight:bold;">@perros</span>.<span style="color:#5A0A0A; font-weight:bold;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>perro<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
  &lt;tr&gt;
    &lt;td&gt;<span style="color:#006600; font-weight:bold;">&lt;%</span>= perro.<span style="color:#9900CC;">raza</span>.<span style="color:#9900CC;">descripcion</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>&lt;/td&gt;
    &lt;td&gt;<span style="color:#006600; font-weight:bold;">&lt;%</span>= vaca.<span style="color:#9900CC;">nombre</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>&lt;/td&gt;
    &lt;td&gt;<span style="color:#006600; font-weight:bold;">&lt;%</span>= <span style="color:#5A0A0A; font-weight:bold;">link_to</span> <span style="color:#996600;">'Show'</span>, perro <span style="color:#006600; font-weight:bold;">%&gt;</span>&lt;/td&gt;
    &lt;td&gt;<span style="color:#006600; font-weight:bold;">&lt;%</span>= <span style="color:#5A0A0A; font-weight:bold;">link_to</span> <span style="color:#996600;">'Edit'</span>, edit_perro_path<span style="color:#006600; font-weight:bold;">&#40;</span>perro<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>&lt;/td&gt;
    &lt;td&gt;<span style="color:#006600; font-weight:bold;">&lt;%</span>= <span style="color:#5A0A0A; font-weight:bold;">link_to</span> <span style="color:#996600;">'Destroy'</span>,perro,:confirm<span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">'Are you sure?'</span>,:method<span style="color:#006600; font-weight:bold;">=&gt;</span>:delete<span style="color:#006600; font-weight:bold;">%&gt;</span>&lt;/td&gt;
  &lt;/tr&gt;
<span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
&lt;/table&gt;</pre></div></div>

<p>Este c&oacute;digo no es dif&iacute;cil de entender. Se empieza a poner un poco m&aacute;s<br />
complicado cuando tenemos un c&oacute;digo mas largo y con m&aacute;s c&oacute;digo embebido,<br />
por m&aacute;s ordenados que seamos cuesta entenderlo.<br />
Para esto est&aacute; Haml, en su p&aacute;gina nos dice que &#8220;convierte nuestras horrorosas<br />
plantillas en un verdadero haiku&#8221;. ¿Ser&aacute; cierta esta afirmaci&oacute;n?, veamos como<br />
queda nuestro listado:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">%</span>table
  <span style="color:#006600; font-weight:bold;">%</span>tr
    <span style="color:#006600; font-weight:bold;">%</span>th Raza
    <span style="color:#006600; font-weight:bold;">%</span>th Nombre
    <span style="color:#006600; font-weight:bold;">%</span>th
    <span style="color:#006600; font-weight:bold;">%</span>th
    <span style="color:#006600; font-weight:bold;">%</span>th
<span style="color:#006600; font-weight:bold;">-</span> <span style="color:#0066ff; font-weight:bold;">@perros</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>perro<span style="color:#006600; font-weight:bold;">|</span>
    <span style="color:#006600; font-weight:bold;">%</span>tr
      <span style="color:#006600; font-weight:bold;">%</span>td=perro.<span style="color:#9900CC;">raza</span>.<span style="color:#9900CC;">descripcion</span>
      <span style="color:#006600; font-weight:bold;">%</span>td=perro.<span style="color:#9900CC;">nombre</span>
      <span style="color:#006600; font-weight:bold;">%</span>td=link_to <span style="color:#996600;">'Show'</span>, perro
      <span style="color:#006600; font-weight:bold;">%</span>td=link_to <span style="color:#996600;">'Edit'</span>, edit_perro_path<span style="color:#006600; font-weight:bold;">&#40;</span>perro<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#006600; font-weight:bold;">%</span>td=link_to <span style="color:#996600;">'Destroy'</span>, perro, <span style="color:#ff3333; font-weight:bold;">:confirm</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'Are you sure?'</span>, <span style="color:#ff3333; font-weight:bold;">:method</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:delete</span></pre></div></div>

<p>Es un c&oacute;digo mucho m&aacute;s limpio y ordenado, y sin dudas escribimos mucho menos</p>
<p>Seg&uacute;n el sitio oficial de Haml ,  est&aacute; basado en la idea de que el c&oacute;digo de<br />
descripci&oacute;n de p&aacute;ginas debe ser hermoso. Pensando en la simplicidad de Ruby y la<br />
elegancia de Rails,recordando el axioma de que &#8220;la perfecci&oacute;n se alcanza, no cuando ya<br />
no queda nada m&aacute;s por agregar, sino cuando no queda nada m&aacute;s por eliminar&#8221;.<br />
Como lenguaje de prop&oacute;sito espec&iacute;fico est&aacute; completamente dise&ntilde;ado para documentos XML,<br />
y no tiene ninguna caracter&iacute;stica fuera de este &aacute;mbito.</p>
<p>Para instalar Haml en nuestra aplicaci&oacute;n de rails 3, basta simplemente con editar el Gemfile<br />
y agregar</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">gem <span style="color:#996600;">'haml'</span></pre></div></div>

<p>luego en la consola ejecutamos</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">bundle install</pre></div></div>

<p>y ya tenemos Haml en nuestra aplicaci&oacute;n.<br />
A partir de ahora los nombres de archivos html ser&aacute;n de la siguiente<br />
manera index.html.haml.<br />
La forma b&aacute;sica de un elemento html, ser&iacute;a as&iacute;</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">%</span>tagname<span style="color:#006600; font-weight:bold;">&#123;</span>:attr1 <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'value1'</span>, <span style="color:#ff3333; font-weight:bold;">:attr2</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'value2'</span><span style="color:#006600; font-weight:bold;">&#125;</span> Contents</pre></div></div>

<p>Un p&aacute;rrafo nos quedar&iacute;a as&iacute;:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">%</span><span style="color:#CC0066; font-weight:bold;">p</span><span style="color:#006600; font-weight:bold;">&#123;</span>:datatype <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'lupita'</span><span style="color:#006600; font-weight:bold;">&#125;</span> Esto es un parrafo
&nbsp;
<span style="color:#008000; font-style:italic;">#nos devuelve</span>
<span style="color:#006600; font-weight:bold;">&lt;</span>p datatype=<span style="color:#996600;">&quot;lupita&quot;</span><span style="color:#006600; font-weight:bold;">&gt;</span> Esto es un parrafo <span style="color:#006600; font-weight:bold;">&lt;/</span>p<span style="color:#006600; font-weight:bold;">&gt;</span></pre></div></div>

<p>Para cuando queremos utilizar un div, por ser este un elemento muy com&uacute;n no<br />
necesita que pongamos %div. simplemente tenemos que poner el nombre del id (#) o<br />
de la clase (.).</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">#show Esto es un div
&nbsp;
<span style="color: #666666; font-style: italic;">//nos devuelve</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;show&quot;</span><span style="color: #339933;">&gt;</span>Esto es un div<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span></pre></div></div>

<p>De la misma manera si queremos agregar un id o una clase a cualqier tag, ser&iacute;a de esta<br />
forma</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">%</span>tagname<span style="color:#008000; font-style:italic;">#id.class</span></pre></div></div>

<p>En Haml no se cierran los tags, esto se hace autom&aacute;ticamente, gracias a que es muy estricto<br />
con la identaci&oacute;n. Genera todo el html siguiendo la estructura de nuestro c&oacute;digo</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">%</span>ul
  <span style="color:#006600; font-weight:bold;">%</span>li Perro
  <span style="color:#006600; font-weight:bold;">%</span>li Gato
&nbsp;
<span style="color:#008000; font-style:italic;">#nos devuelve</span>
<span style="color:#006600; font-weight:bold;">&lt;</span>ul<span style="color:#006600; font-weight:bold;">&gt;</span>
  <span style="color:#006600; font-weight:bold;">&lt;</span>li<span style="color:#006600; font-weight:bold;">&gt;</span>Perro<span style="color:#006600; font-weight:bold;">&lt;/</span>li<span style="color:#006600; font-weight:bold;">&gt;</span>
  <span style="color:#006600; font-weight:bold;">&lt;</span>li<span style="color:#006600; font-weight:bold;">&gt;</span>Gato<span style="color:#006600; font-weight:bold;">&lt;/</span>li<span style="color:#006600; font-weight:bold;">&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;/</span>ul<span style="color:#006600; font-weight:bold;">&gt;</span></pre></div></div>

<p>Y lo que m&aacute;s nos interesa. Si queremos embeber c&oacute;digo ruby tenemos dos s&iacute;mbolos.<br />
Si queremos mostrar algo usamos el igual (=), si no queremos que se vea usamos el gui&oacute;n medio(-).</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">%</span>h1= <span style="color:#0066ff; font-weight:bold;">@perro</span>.<span style="color:#9900CC;">nombre</span>
<span style="color:#006600; font-weight:bold;">-</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@perro</span>.<span style="color:#9900CC;">agresividad</span> <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#006666;">5</span>
  <span style="color:#006600; font-weight:bold;">%</span><span style="color:#CC0066; font-weight:bold;">p</span> Es muy agresivo</pre></div></div>

<p>Bueno, esto es una peque&ntilde;a introducci&oacute;n a todo lo que podemos llegar a hacer con<br />
haml. Y lo lindo que nos va a quedar nuestro c&oacute;digo escrito de esta forma. Y es una muy<br />
buena manera de aprender a indentar tambi&eacute;n. Para tener informaci&oacute;n un poco<br />
m&aacute;s completa, tenemos su <a href="http://haml-lang.com">p&aacute;gina oficial </a>y su  <a href="http://haml-lang.com/docs/yardoc/">api</a><br />
Espero que les guste y hasta la pr&oacute;xima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/02/08/haml-alternativa-a-erb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cursos de Verano 2011 Fa.C.E.N.A.</title>
		<link>http://www.ipcorp.com.ar/blog/2011/02/07/cursos-de-verano-2011-fa-c-e-n-a/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/02/07/cursos-de-verano-2011-fa-c-e-n-a/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 12:05:40 +0000</pubDate>
		<dc:creator>Carlos Barbiero</dc:creator>
				<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Ingeniería de Software]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=974</guid>
		<description><![CDATA[Al igual que en el 2010, este año se realizan los cursos de verano en la Facultad de Ciencias Exactas y Naturales y Agrimensura desde el 21/02/2011 hasta el 12/03/2011. Los cursos tienen como objetivo ofrecer a los profesionales y técnicos de la disciplina informática, la oportunidad de capacitación y actualización en herramientas orientadas al [...]]]></description>
			<content:encoded><![CDATA[<p>Al igual que en el 2010, este año se realizan los cursos de verano en la Facultad de Ciencias Exactas y Naturales y Agrimensura desde el 21/02/2011 hasta el 12/03/2011. Los cursos tienen como objetivo ofrecer a los profesionales y técnicos de la disciplina informática, la oportunidad de capacitación y actualización en herramientas orientadas al desarrollo de software. En esta oportunidad, <strong>IPCorp</strong> esta presente en el dictado de <strong>dos cursos</strong>. El primer curso es <strong>&#8220;Gestión de datos con PostgreSQL&#8221;</strong>, dictado por el <strong>Lic. Marcelo R. Diaz</strong> los días lunes, miércoles y viernes de 17 a 20 hs. y por otro lado, <strong>&#8220;Desarrollo Web Agil con Ruby on Rails&#8221;</strong>, desarrollado por el<strong> Lic. Carlos E. Barbiero</strong>, los martes y jueves de 18 a 22 hs.</p>
<p>Las inscripciones se realizan del 14 al 18 de febrero en el laboratorio de informática de 14 a 21 hs, o bien por correo electrónico a cursosveranofacena@gmail.com</p>
<p>Para más información de los contenidos de cada curso: <a href="http://exa.unne.edu.ar/docs/Informatica-Cursosdeverano2011-contenidos.pdf">http://exa.unne.edu.ar/docs/Informatica-Cursosdeverano2011-contenidos.pdf</a></p>
<p>Si querés obtener más información sobre los cursos dictados por el staff de IPCorp, podés enviar un email a contacto@ipcorp.com.ar, detallándonos tus consultas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/02/07/cursos-de-verano-2011-fa-c-e-n-a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listar todas las asociaciones de un modelo con Reflections</title>
		<link>http://www.ipcorp.com.ar/blog/2011/01/26/listar-todas-las-asociaciones-de-un-modelo-con-reflections/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/01/26/listar-todas-las-asociaciones-de-un-modelo-con-reflections/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 02:00:07 +0000</pubDate>
		<dc:creator>Carlos Mathiasen</dc:creator>
				<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ActiveRecord]]></category>
		<category><![CDATA[association]]></category>
		<category><![CDATA[AssociationReflection]]></category>
		<category><![CDATA[belongs_to]]></category>
		<category><![CDATA[has_many]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[reflections]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=958</guid>
		<description><![CDATA[En rails, hacer relaciones entre tablas es muy fácil, basta con agregar en el modelo un :has_many:belongs_to, :has_and_belongs_to_many entre otros. Se pueden hacer todos los tipos de relaciones, pero no voy a profundizar este tema, todo lo que se necesita saber está en el API de Rails.
El otro día necesitaba eliminar un registro de una [...]]]></description>
			<content:encoded><![CDATA[<p>En rails, hacer relaciones entre tablas es muy fácil, basta con agregar en el modelo un <strong>:has_many:belongs_to, :has_and_belongs_to_many</strong> entre otros. Se pueden hacer todos los tipos de relaciones, pero no voy a profundizar este tema, todo lo que se necesita saber está en el <a href="http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html">API de Rails</a>.</p>
<p>El otro día necesitaba eliminar un registro de una tabla, pero si este registro tenia algún registro asociado en otra tabla este no podía ser eliminado. La forma más fácil era hacer un <strong>NombreDeModelo.find()</strong> en todas las tablas asociadas y ver si existen registros. El problema es si esa tabla tiene asociadas muchas tablas y cada una de estas muchos registros, tomaría su tiempo.<br />
La solución que se me ocurrió fué saber cuales son las tablas asociadas e ir haciendo los <strong>NombreDeModelo.find()</strong> de a uno y si alguno encuentra algo que tire un mensaje.<br />
Rails tiene un método muy interesante que nos resuelve esto, se llama  <a href="http://api.rubyonrails.org/classes/ActiveRecord/Reflection/ClassMethods.html">reflections</a>.<br />
Lo que hace es devolvernos un hash con todas las relaciones definidas en el modelo, veamos un poco de código:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Departamento.<span style="color:#9900CC;">reflections</span>
&nbsp;
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:designaciones</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#008000; font-style:italic;">#&lt;ActiveRecord::Reflection::AssociationReflection:0x46c04fc1 @name=:designaciones, </span>
                                  <span style="color:#0066ff; font-weight:bold;">@active_record</span>=Departamento<span style="color:#006600; font-weight:bold;">&#40;</span>id: <span style="color:#CC0066; font-weight:bold;">integer</span>, descripcion:<span style="color:#CC0066; font-weight:bold;">string</span><span style="color:#006600; font-weight:bold;">&#41;</span>, 
                                  <span style="color:#0066ff; font-weight:bold;">@options</span>=<span style="color:#006600; font-weight:bold;">&#123;</span>:class_name<span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">&quot;Designacion&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span>, 
                                  <span style="color:#0066ff; font-weight:bold;">@macro</span>=:has_many<span style="color:#006600; font-weight:bold;">&gt;</span>, 
       <span style="color:#ff3333; font-weight:bold;">:localidades</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#008000; font-style:italic;">#&lt;ActiveRecord::Reflection::AssociationReflection:0x261c2628 </span>
                              <span style="color:#0066ff; font-weight:bold;">@name</span>=:localidades, 
                              <span style="color:#0066ff; font-weight:bold;">@active_record</span>=Departamento<span style="color:#006600; font-weight:bold;">&#40;</span>id: <span style="color:#CC0066; font-weight:bold;">integer</span>, descripcion: <span style="color:#CC0066; font-weight:bold;">string</span><span style="color:#006600; font-weight:bold;">&#41;</span>, 
                              <span style="color:#0066ff; font-weight:bold;">@options</span>=<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>, 
                              <span style="color:#0066ff; font-weight:bold;">@macro</span>=:has_many<span style="color:#006600; font-weight:bold;">&gt;</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>Como vemos nos devuelve un hash, donde el key esta dado por el nombre que le dimos en el modelo a la relación y el value<br />
es un objeto de la clase Reflection. Este objeto contiene 4 atributos:<br />
<em>@name:</em> Nombre de la relación<br />
<em>@active_record:</em> Este no entendí mucho, ya que no lo usé, si alguien me explica estaría bueno para agregarlo.<br />
<em>@options :</em> las opciones que definimos en las relaciones, como el :class_name, foreign_key, :through, etc.<br />
<em>@macro:</em> El tipo de relación</p>
<p>Con esto ya tenemos casi terminado el problema antes descripto, hacemos uso de un bloque y nos queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Departamento.<span style="color:#9900CC;">reflections</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>ref<span style="color:#006600; font-weight:bold;">|</span>   
      <span style="color:#9966CC; font-weight:bold;">if</span> ref<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">macro</span>.<span style="color:#9900CC;">to_s</span> == <span style="color:#996600;">'has_many'</span> 
        registro = <span style="color:#CC0066; font-weight:bold;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'@departamento.'</span> <span style="color:#006600; font-weight:bold;">+</span> ref<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">name</span>.<span style="color:#9900CC;">to_s</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'.first'</span><span style="color:#006600; font-weight:bold;">&#41;</span>     
      <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">unless</span> registro.<span style="color:#9900CC;">blank</span>?
        existe_registro = <span style="color:#006666;">1</span>
        <span style="color:#9966CC; font-weight:bold;">break</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Lo que hacemos es recorrer el hash hasta que encontramos un registro. Cuando encontramos uno cortamos la ejecución del bloque para que no siga buscando en la base de datos y problema resuelto.</p>
<p>Estoy seguro que debe haber miles de formas de hacer esto y quiza mucho más fácil, estaría bueno que comenten sus experiencias, siempre es bueno escuchar otra campana.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/01/26/listar-todas-las-asociaciones-de-un-modelo-con-reflections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Subir múltiples archivos con JQuery, Rails y almacenarlos en la Base de Datos</title>
		<link>http://www.ipcorp.com.ar/blog/2010/08/03/subir-multiples-archivos-con-jquery-rails-y-almacenarlos-en-la-base-de-datos/</link>
		<comments>http://www.ipcorp.com.ar/blog/2010/08/03/subir-multiples-archivos-con-jquery-rails-y-almacenarlos-en-la-base-de-datos/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 16:22:30 +0000</pubDate>
		<dc:creator>Carlos Mathiasen</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=726</guid>
		<description><![CDATA[Hay veces que el usuario necesita subir archivos, pero de una manera &#8220;masiva&#8221;, no guardando de a uno. Un claro ejemplo de esto es GoogleDocs,
que te deja subir varios documentos a la vez, antes de empezar a verlos.
Utilizando un plugin de jquery, en rails esto se hace de una manera muy transparente.
El plugin en cuestión [...]]]></description>
			<content:encoded><![CDATA[<p>Hay veces que el usuario necesita subir archivos, pero de una manera &#8220;masiva&#8221;, no guardando de a uno. Un claro ejemplo de esto es GoogleDocs,<br />
que te deja subir varios documentos a la vez, antes de empezar a verlos.<br />
Utilizando un plugin de jquery, en rails esto se hace de una manera muy transparente.<br />
El plugin en cuestión se llama <a href="http://www.fyneworks.com/jquery/multiple-file-upload/" target="_blank">MultiFileUpload</a>, en su página encontraremos una buena documentación de como usarlo correctamente<br />
Lo que nos interesa es como implementarlo en rails y que todos estos archivos que seleccionamos se almacenen en nuestra base de datos.</p>
<p>Para comenzar tenemos que incluir las librerias del plugin en el aplication.html.erb</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"> <span style="color:#006600; font-weight:bold;">&amp;</span>lt;<span style="color:#006600; font-weight:bold;">%</span> javascript_include_tag <span style="color:#ff3333; font-weight:bold;">:default</span>, <span style="color:#996600;">'multiple-file-upload/jquery.MultiFile.js'</span>, <span style="color:#996600;">'multiple-file-upload/jquery.MetaData.js'</span> <span style="color:#006600; font-weight:bold;">%&amp;</span>gt;</pre></div></div>

<p>En nuestra vista creamos el formulario, para subir los archivos</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&amp;</span>lt;<span style="color:#006600; font-weight:bold;">%</span> form_for<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:archivo_digital</span>, <span style="color:#ff3333; font-weight:bold;">:html</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#006600; font-weight:bold;">&#123;</span>:multipart =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#0000FF; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#125;</span>,:url =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; create_archivo_digital_path<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">%&amp;</span>gt;
<span style="color:#006600; font-weight:bold;">&lt;</span>ul id=<span style="color:#996600;">&quot;form&quot;</span><span style="color:#006600; font-weight:bold;">&gt;</span>
	    <span style="color:#006600; font-weight:bold;">&amp;</span>lt;<span style="color:#006600; font-weight:bold;">%</span>= file_field_tag <span style="color:#ff3333; font-weight:bold;">:files</span>, <span style="color:#ff3333; font-weight:bold;">:class</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#996600;">'multi file'</span>, <span style="color:#ff3333; font-weight:bold;">:name</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#996600;">'pdf_files[]'</span><span style="color:#006600; font-weight:bold;">%&amp;</span>gt;
	<span style="color:#006600; font-weight:bold;">&lt;</span>li<span style="color:#006600; font-weight:bold;">&gt;</span>
            <span style="color:#006600; font-weight:bold;">&amp;</span>lt;<span style="color:#006600; font-weight:bold;">%</span>= f.<span style="color:#9900CC;">submit</span> <span style="color:#996600;">'Subir'</span> <span style="color:#006600; font-weight:bold;">%&amp;</span>gt;
            <span style="color:#006600; font-weight:bold;">&amp;</span>lt;<span style="color:#006600; font-weight:bold;">%</span>= f.<span style="color:#9900CC;">submit</span> <span style="color:#996600;">'Cancelar'</span> <span style="color:#006600; font-weight:bold;">%&amp;</span>gt;<span style="color:#006600; font-weight:bold;">&lt;/</span>li<span style="color:#006600; font-weight:bold;">&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;/</span>ul<span style="color:#006600; font-weight:bold;">&gt;</span>
<span style="color:#006600; font-weight:bold;">&amp;</span>lt;<span style="color:#006600; font-weight:bold;">%</span> <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#006600; font-weight:bold;">%&amp;</span>gt;</pre></div></div>

<p>Expliquemos un poco el código:</p>
<p>En necesario establecer :multipart =&gt; true, para que el formulario admita la carga de archivos.<br />
file_field_tag nos crea el tag para poder abrir el cuadro de diálogo de carga de archivos de un navegador:<br />
:class =&gt; &#8216;multi file&#8217;, esta clase es la que utiliza MultiFileUpload para hacer la magia de subir varios archivos<br />
:name =&gt; &#8216;pdf_files[]&#8216; esto es muy necesario, porque el plugin crea un arreglo con todos los archivos, pero para que ruby sepa<br />
que nos referimos a un arreglo tenemos que poner [].<br />
Por último tenemos dos botones, el de Subir, que va a subir todos los archivos de una sola vez y el de Cancelar, que hará lo propio.</p>
<p>En nuestro controller vamos a tener</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#Renderiza el formulario para subir los archivos</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> new
    <span style="color:#0066ff; font-weight:bold;">@archivo_digital</span> = ArchivoDigital.<span style="color:#9900CC;">new</span>
    respond_to <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>format<span style="color:#006600; font-weight:bold;">|</span>
      <span style="color:#CC0066; font-weight:bold;">format</span>.<span style="color:#9900CC;">html</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> create
    respond_to <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>format<span style="color:#006600; font-weight:bold;">|</span>
      <span style="color:#9966CC; font-weight:bold;">if</span> params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:commit</span><span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#996600;">&quot;Subir&quot;</span>
        <span style="color:#9966CC; font-weight:bold;">unless</span> params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:pdf_files</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">blank</span>?
          params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:pdf_files</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>archivo<span style="color:#006600; font-weight:bold;">|</span>
            params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:archivo_digital</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:nombre_archivo</span><span style="color:#006600; font-weight:bold;">&#93;</span> = archivo
            params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:archivo_digital</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:archivo</span><span style="color:#006600; font-weight:bold;">&#93;</span> = archivo.<span style="color:#9900CC;">read</span>
            <span style="color:#0066ff; font-weight:bold;">@archivo_digital</span> = ArchivoDigital.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:archivo_digital</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
            <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@archivo_digital</span>.<span style="color:#9900CC;">save</span>
              flash<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:notice</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">'Archivo agregado'</span>
            <span style="color:#9966CC; font-weight:bold;">end</span>
          <span style="color:#9966CC; font-weight:bold;">end</span>
          <span style="color:#CC0066; font-weight:bold;">format</span>.<span style="color:#9900CC;">html</span><span style="color:#006600; font-weight:bold;">&#123;</span>redirect_to archivos_digitales_path<span style="color:#006600; font-weight:bold;">&#125;</span>
        <span style="color:#9966CC; font-weight:bold;">else</span>
          flash<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:error</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">'Debe seleccionar al menos un archivo'</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">else</span>
           <span style="color:#CC0066; font-weight:bold;">format</span>.<span style="color:#9900CC;">html</span><span style="color:#006600; font-weight:bold;">&#123;</span>redirect_to archivos_digitales_path<span style="color:#006600; font-weight:bold;">&#125;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Expliquemos un poco el código:<br />
Sobre el primer método no hay mucho que decir, solo nos renderiza el formulario que creamos en el paso anterior<br />
El método create es el que hace todo, para empezar tenemos una condición donde pregunta si params[:commit] == &#8220;Subir&#8221;<br />
esto es para que diferencie entre el botón subir y el cancelar. Cuando presionamos un botón, rails inmediatamente manda un parámetro, llamado<br />
commit con el nombre del botón. Con está condición lo que hacemos es darle tareas diferentes a cada botón.<br />
Si no se cumple la condición, es porque se presionó el botón &#8220;Cancelar&#8221; y nos redirigirá al listado de archivos.<br />
En caso de que la condición se cumpla, tenemos otro condicional: unless params[:pdf_files].blank?, esto es para saber si se seleccionó algun archivo_digital<br />
y caso contrario muestra un flash[:error]. Si se cumple la condición, recorremos el arreglo y vamos guardando en nuestra base de datos el nombre del<br />
archivo y el archivo en sí.</p>
<p>Bueno, esto es una manera sencilla de subir archivos de forma &#8220;masiva&#8221; con Jquery y Rails, cualquier cosa no duden en preguntar</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2010/08/03/subir-multiples-archivos-con-jquery-rails-y-almacenarlos-en-la-base-de-datos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

