<?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>HIJO de la RED &#187; Programacion</title>
	<atom:link href="http://www.hijodelared.com.ar/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hijodelared.com.ar</link>
	<description>Web blog sobre tecnologia, diseï¿½o web, humor y actualidad</description>
	<lastBuildDate>Tue, 07 Sep 2010 14:23:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creación de prototipos de interfáz con iPlotz</title>
		<link>http://www.hijodelared.com.ar/creacion-de-prototipos-de-interfaz-con-iplotz/</link>
		<comments>http://www.hijodelared.com.ar/creacion-de-prototipos-de-interfaz-con-iplotz/#comments</comments>
		<pubDate>Fri, 08 May 2009 15:55:49 +0000</pubDate>
		<dc:creator>Hijo de la Red</dc:creator>
				<category><![CDATA[Análisis]]></category>
		<category><![CDATA[Interfaces]]></category>

		<guid isPermaLink="false">http://www.infocoder.com.ar/?p=770</guid>
		<description><![CDATA[<p style="text-align: justify;"><img class="alignright size-full wp-image-772" title="logo_iplotz" src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/logo_iplotz.png" alt="" width="174" height="67" />Muchas veces cuando tenemos un nuevo proyecto sea web o de escritorio, para empezar, necesitamos tener una idea de cómo va a ser interfaz antes de comenzar con el desarrollo en sí. A esto le llamamos prototipos, que serían interfaces no funcionales que sirven de referencia para el desarrollador. Lo más importante es lograr que la generación de estas interfaces sea lo más rápido posible, herramientas hay un montón pero hoy quiero hacer referencia a una en especial, <strong>iPloz</strong>. Se trata de una aplicación online gratuita que nos facilita la tarea de realizar interfaces.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-773" title="iPlotz" src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/captura_iplotz.png" alt="" width="500" height="266" /></p>
<p style="text-align: justify;">Trae una lista muy completa de componentes como acordeones, menú, botones, ventanas y reglas, también trae todos los elementos para crear interfaces para el iPhone (muy de moda por estos días). La generación de interfaces con iPloz es realmente rápida, basta con solo arrastrar el componente y adaptarlo a nuestra necesidad, luego, podemos exportar nuestra interfaz al formato de imagen que queramos. La versión gratuita nos limita a tener solo un proyecto con un máximo de 5 páginas o &#8216;pantallas&#8217;, también disponemos de una versión de escritorio  a 75 dólares.</p>
<p style="text-align: center;"><a href="http://www.hijodelared.com.ar/creacion-de-prototipos-de-interfaz-con-iplotz/"><em>Click here to view the embedded video.</em></a></p>
<p style="text-align: left;">Enlace: <a href="http://iplotz.com/">iPlotz</a></p>
<p style="text-align: center;">
<h3>No hay posts relacionados</h3>
<ul class="related_post">
<li><a href="http://www.hijodelared.com.ar/esto-si-es-una-consola/" title="Esto si es una consola!">Esto si es una consola!</a></li>
<li><a href="http://www.hijodelared.com.ar/chotmusic-wendy-la-trigresa-y-delfin-juntos/" title="ChotMusic: Wendy, La Trigresa y Delfín juntos">ChotMusic: Wendy, La Trigresa y Delfín juntos</a></li>
<li><a href="http://www.hijodelared.com.ar/google-quiere-llegar-a-la-luna/" title="Google quiere llegar a la luna">Google quiere llegar a la luna</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.hijodelared.com.ar/creacion-de-prototipos-de-interfaz-con-iplotz/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instalar Ruby on Rails en Windows</title>
		<link>http://www.hijodelared.com.ar/instalar-ruby-on-rails-en-windows/</link>
		<comments>http://www.hijodelared.com.ar/instalar-ruby-on-rails-en-windows/#comments</comments>
		<pubDate>Mon, 04 May 2009 15:54:00 +0000</pubDate>
		<dc:creator>Hijo de la Red</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.infocoder.com.ar/?p=749</guid>
		<description><![CDATA[<p>En estos días he estado leyendo sobre <strong>Ruby on Rails</strong> y sobre lo rápido que se pueden realizar aplicaciones.<br />
Hoy vamos a aprende como instalar <strong>Ruby</strong> y su framework llamado <strong>Rails</strong>.<br />
Primero vamos a introducirnos un poco en esta tecnología.</p>
<p><strong>Ruby</strong> es un lenguaje de scripts (interpretado) orientado a objetos, fue inventado por <strong>Yukihiro Matsumoto</strong> y liberado en <strong>1995</strong>, combina una sintaxis inspirada en <strong>Python</strong> y <strong>Perl</strong>. Entre las características del lenguaje se encuentran:</p>
<ul>
<li>No se necesita declarar las variables.</li>
<li>La sintaxis es simple y consistente.</li>
<li>Gestión de memoria automática.</li>
<li>Todo es un objeto.</li>
</ul>
<p><a href="http://es.wikipedia.org/wiki/Ruby">Más información sobre Ruby</a><br />
<strong>Rails</strong> es un framework de aplicaciones web de código abierto desarrollado en <strong>Ruby</strong>, siguiendo el paradigma de la arquitectura <strong>MCV</strong> (Modelo vista controlador, un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos).<br />
<a href="http://es.wikipedia.org/wiki/Ruby_on_rails">Más información sobre Rails</a></p>
<p>Ya introducidos en el tema ¡Comencemos con la instalación!</p>
<p>Lo primero que tenemos que hacer es <a href="http://rubyforge.org/frs/?group_id=167&amp;release_id=6163">bajar la última versión de Ruby</a>, es un instalador muy simple, con dejar todas las opciones por defecto basta.</p>
<p style="text-align: center;"><a class="lightbox" title="instalacion de Ruby" href="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/install_ruby_captura5.jpg"></a></p>
<div id="attachment_755" class="wp-caption aligncenter" style="width: 514px"><a><img class="size-full wp-image-755" title="instalacion de Ruby" src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/install_ruby_captura5.jpg" alt="La instalación de Ruby es muy simple" width="504" height="386" /></a><p class="wp-caption-text">La instalación de Ruby es muy simple</p></div>
<p>Una vez que tenemos instalado <strong>Ruby</strong> debemos incluir el framework <strong>Rails</strong>. Unos de los componentes que instala <strong>Ruby</strong> se llama <strong>RubyGems</strong>, este nos permite descargar e instalar componentes o ‘<em>gemas</em>&#8216; de internet con un simple comando.<br />
Para descargar e instalar Rails lo que tenemos que hacer es ejecutar una ventana de símbolo de sistemas de Windows (<em>Inicio&gt;Ejecutar&gt;cmd</em>) y poner el siguiente comando:</p>
<pre>gem install rails --include-dependencies</pre>
<p>Esto puede tardar unos minutos, ya que debe bajar los paquetes de internet antes de instalarlos.</p>
<div id="attachment_760" class="wp-caption aligncenter" style="width: 532px"><img class="size-full wp-image-760" title="Instalacion de Rails" src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/install_rails_captura2.jpg" alt="Instalacion de Rails" width="522" height="297" /><p class="wp-caption-text">Instalacion de Rails</p></div>
<p>¡Gualá! Ya tenemos instalado <strong>Ruby on Rails</strong>.<br />
También hay otra forma de instalar <strong>Ruby on Rails</strong>, mucho más simple y completa, ya que también nos instala <strong>Apache</strong> y <strong>MySQL</strong>. Se trata de <a href="http://rubyforge.org/projects/instantrails/">Instant Rails</a>, una aplicación basada en el famosos <strong>EasyPHP</strong> el cual con solo descomprimirlo y ejecutar un .exe nos monta todo, sin tener que instalar nada.</p>
<div id="attachment_761" class="wp-caption aligncenter" style="width: 441px"><img class="size-full wp-image-761" title="Instant Rails" src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/instanrails.jpg" alt="Instant Rails" width="431" height="185" /><p class="wp-caption-text">Instant Rails</p></div>
<p>Cualquiera de las dos formas que hallas elegido para instalar, ya estamos listo para hacer una prueba y comprobar que todo está funcionando.<br />
Por línea de comandos en la misma ventana de símbolo de sistemas hacemos lo siguiente.<br />
Primero crearemos una carpeta, por ejemplo &#8217;sample&#8217;. Por consola (cd sample) entramos a esa carpeta y creamos ahí nuestra primera aplicación, esto es muy fácil solo tenemos que escribir lo siguiente:</p>
<pre>rails [nombre de la aplicación]</pre>
<p>Donde <em>[nombre de la aplicación]</em> podría ser &#8216;<em>test</em>&#8216;</p>
<div id="attachment_762" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-762" title="Creando aplicacion Ruby" src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/test_ruby.jpg" alt="Lista de los directorios que se crean al ejecutar el comando" width="520" height="263" /><p class="wp-caption-text">Lista de los directorios que se crean al ejecutar el comando</p></div>
<p>Este comando nos generará una par de directorios que ahora no vienen al caso, lo veremos más adelante en otro post. Por último debemos entrar a la carpeta con el nombre de nuestra aplicación que acabamos de crear (cd test) y escribir el siguiente comando:</p>
<pre>ruby script/server</pre>
<div id="attachment_763" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-763" title="Comando " src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/test_ruby_captura2.jpg" alt="Este comando 'monta' nuestra aplicación en el server" width="520" height="259" /><p class="wp-caption-text">Este comando &#39;monta&#39; nuestra aplicación en el server</p></div>
<p>Si todo salió bien al poner en nuestro navegador la siguiente dirección: <strong>http://localhost:3000</strong> deberíamos ver algo como esto:</p>
<div id="attachment_764" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-764" title="pagina de prueba" src="http://www.hijodelared.com.ar/wp-content/uploads/2009/05/pagina_prueba.jpg" alt="Si logramos ver esto es poque Ruby on Rails esta funcionando" width="520" height="363" /><p class="wp-caption-text">Si logramos ver esto es poque Ruby on Rails esta funcionando</p></div>
<p>Ya tenemos instalado y funcionando <strong>Ruby on Rails</strong>, mas adelante veremos más sobre este interesante framework.<br />
<h3>Tal vez te interesen los siguientes post:</h3>
<ul class="related_post">
<li><a href="http://www.hijodelared.com.ar/buen-manejo-de-excepciones-en-java/" title="Buen manejo de excepciones en Java">Buen manejo de excepciones en Java</a></li>
<li><a href="http://www.hijodelared.com.ar/pentaho-business-intelligence/" title="Pentaho Business Intelligence">Pentaho Business Intelligence</a></li>
<li><a href="http://www.hijodelared.com.ar/manejar-archivos-csv-con-java/" title="Manejar archivos CSV con Java">Manejar archivos CSV con Java</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.hijodelared.com.ar/instalar-ruby-on-rails-en-windows/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Buen manejo de excepciones en Java</title>
		<link>http://www.hijodelared.com.ar/buen-manejo-de-excepciones-en-java/</link>
		<comments>http://www.hijodelared.com.ar/buen-manejo-de-excepciones-en-java/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 11:46:23 +0000</pubDate>
		<dc:creator>Hijo de la Red</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.hijodelared.com.ar/?p=737</guid>
		<description><![CDATA[<p>Es una mala práctica de los programadores (obviamente empiezo por mi) no escribir un código que maneje las excepciones correctamente, es por eso que quiero hacer mi humilde aporte que yo estoy implementando para obtener un código mas limpio y que depues otra persona lo pueda editar sin morir en el intento.</p>
<p>La estructura básica que deberia tener todo método (siempre y cuando no lanc e la excepcion con <em>throw</em>) es la siguiente:</p>
<pre lang="JAVA">public static void main(String[] args) {
		 try {
			// Código  que puede dar una excepción.
		    }
			catch (IOException  e) {
			// Capturamos la excepción del tipo Entrada/Salida,
                        // o la que nosotros creamos que es mas probable.
		    }
			catch (Exception e) {
			// Capturamos cualquier otra excepción.
			}
			finally {
		    // Código que se ejecuta con o sin excepción.
		    }
}</pre>
<p>Hay que considerar que las excepciones que lanza Java son una clase que contiene sus metodos, esto nos ayuda mucho para identificar el error y tratarlo de la forma que queramos.</p>
<p>El siguiente ejemplo lanza un excepción (a proposito) del tiepo Entrada/Salida (<a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html">IOException</a>) al intentar leer un archivo de texto inexistente.</p>
<pre lang="JAVA">import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ManejoDeExcepciones {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// Creamos un archivo inexistente.
		File f = new File("C:\\archivoInexistente.txt");
		BufferedReader entrada = null;
		try {
			// Intentamos leerlo.
			entrada = new BufferedReader(new FileReader(f));

		} catch (IOException e) {
			// Capturamos la excepción que sabemos que puede ocurrir.
			System.err.println("Ouch! IOException: " + e.toString());
		} catch (Exception e) {
			// Capturamos otra excepción, una nunca sabe :)
			System.err.println("Ouch! Error Desconocido: " + e.getMessage());
		}

		finally {
			System.out.println("Fin de la aplicación!");
		}

	}

}</pre>
<p>Esto sirve mucho cuando tenemos que hacer consultas a base de datos, la excepción que lanza cuando tenemos problemas es la <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/sql/SQLException.html">SQLException</a>, que contiene un metodo <em>getErrorCode()</em> que nos devuelve un <em>int</em> con  el código de error, dependiendo del motor de base de datos, podemos saber de que se trata el error y devolver un mensaje entendible para el usuario (por ejemplo cuando una tabla no existe o se quiere eliminar una  clave foranea). Por ejemplo,  <a href="http://www.orasite.com/errores_ORA_1.html">aquí</a> puedes ver todos los código de error del motor de base de datos Oracle.<br />
<h3>Tal vez te interesen los siguientes post:</h3>
<ul class="related_post">
<li><a href="http://www.hijodelared.com.ar/manejar-archivos-csv-con-java/" title="Manejar archivos CSV con Java">Manejar archivos CSV con Java</a></li>
<li><a href="http://www.hijodelared.com.ar/instalar-ruby-on-rails-en-windows/" title="Instalar Ruby on Rails en Windows">Instalar Ruby on Rails en Windows</a></li>
<li><a href="http://www.hijodelared.com.ar/leer-archivo-de-texto-linea-por-linea-en-java/" title="Leer archivo de texto linea por linea en Java">Leer archivo de texto linea por linea en Java</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.hijodelared.com.ar/buen-manejo-de-excepciones-en-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Leer archivo de texto linea por linea en Java</title>
		<link>http://www.hijodelared.com.ar/leer-archivo-de-texto-linea-por-linea-en-java/</link>
		<comments>http://www.hijodelared.com.ar/leer-archivo-de-texto-linea-por-linea-en-java/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 16:35:29 +0000</pubDate>
		<dc:creator>Hijo de la Red</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.hijodelared.com.ar/?p=651</guid>
		<description><![CDATA[<p>Este ejemplo no es para nada complicado, es una simple clase que lee un archivo de texto (.txt) y lo lee línea por línea, esto evita subir todo el contenido del archivo a memoria, si es muy grande el mismo es imposible hacerlo.</p>
<pre lang="JAVA">import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class readText {

/**
* @param args
*/
public static void main(String[] args) {
File f = new File( "C:\\texto.txt" );
BufferedReader entrada;
try {
entrada = new BufferedReader( new FileReader( f ) );
String linea;
while(entrada.ready()){
linea = entrada.readLine();
System.out.println(linea);
}
}catch (IOException e) {
e.printStackTrace();
}

}
}</pre>
<h3>Tal vez te interesen los siguientes post:</h3>
<ul class="related_post">
<li><a href="http://www.hijodelared.com.ar/buen-manejo-de-excepciones-en-java/" title="Buen manejo de excepciones en Java">Buen manejo de excepciones en Java</a></li>
<li><a href="http://www.hijodelared.com.ar/manejar-archivos-csv-con-java/" title="Manejar archivos CSV con Java">Manejar archivos CSV con Java</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.hijodelared.com.ar/leer-archivo-de-texto-linea-por-linea-en-java/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Pentaho Business Intelligence</title>
		<link>http://www.hijodelared.com.ar/pentaho-business-intelligence/</link>
		<comments>http://www.hijodelared.com.ar/pentaho-business-intelligence/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 20:35:18 +0000</pubDate>
		<dc:creator>Hijo de la Red</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.hijodelared.com.ar/?p=612</guid>
		<description><![CDATA[<p><span style="FLOAT: left"><br />
<img src="http://www.hijodelared.com.ar/wp-content/uploads/2008/10/de_logo.png" alt="" /><br />
</span></p>
<p style="text-align: justify;">En estos días estoy renegando con un proyecto que en una de sus etapas requiere procesos <a href="http://es.wikipedia.org/wiki/ETL">ETL</a>. Me fue encomendada la grata tarea de decidir con que software debíamos hacer esto, lo primero que se me vino a la mente fue <strong>Oracle Warehouse Builder</strong>, que nunca había usado pero si escuchado y como teníamos que integrar los datos a una <strong>BD Oracle</strong> me parecía la mejor solución, antes de hacer nada con esto me dijeron que pruebe con <a href="http://www.adobe.com/products/livecycle/">LiveCycle</a> (Software del cual seguramente voy a escribir más adelante) Pero después de renegar mucho y lograr poco se decidió no utilizar esta herramienta. La aparente solución (digo aparente porque todavía no se implemento) vino de la mano de uno de los productos de <a href="http://www.pentaho.org">Pentaho</a>, <a href="http://kettle.pentaho.org/">Kettle</a>.</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: center;"><img class="size-full wp-image-616 aligncenter" title="logo_kettle_lrg" src="http://www.hijodelared.com.ar/wp-content/uploads/2008/10/logo_kettle_lrg.png" alt="" width="257" height="91" /></p>
<p style="text-align: justify;"><strong>Pentaho </strong>es una plataforma que brinda distintas soluciones a nivel de inteligencia de negocios, y lo mejor de todo, es open source. Una de las herramientas de <strong>Pentaho </strong>es <strong>Kettle </strong>del cual voy a escribir.</p>
<p style="text-align: justify;"><a href="http://www.pentaho.com/download/">Bajarlo</a> es tan simple como hacer un clic y listo, la descarga contiene los archivos para ser ejecutado en <strong>Windows </strong>o <strong>Linux</strong>. En el caso de <strong>Windows</strong>, que es donde lo probé, solo tienes que descomprimir el paquete y ejecutar el archivo <em>Kettle.exe</em> y listo.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-617" title="build_vs_buy" src="http://www.hijodelared.com.ar/wp-content/uploads/2008/10/build_vs_buy.png" alt="" width="400" height="272" /></p>
<pre style="text-align: center;"><span style="color: #333333;"><em>Grafico costo/tiempo donde se compara</em></span></pre>
<pre style="text-align: center;"><span style="color: #333333;"><em>un ETL propietario, uno desarrollado </em></span></pre>
<pre style="text-align: center;"><span style="color: #333333;"><em>por nosostros y uno open source</em></span></pre>
<p style="text-align: justify;">Debo confesar que tenía miedo de  lo complicado que podría ser esta herramienta en su uso, me parece que es un fantasma que tienen los software open source, pero me equivoqué, tiene una interfaz realmente intuitiva, y pude desarrollar una transformación en unos minutos sin esforzarme demasiado.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-618" title="transformation_screenshot" src="http://www.hijodelared.com.ar/wp-content/uploads/2008/10/transformation_screenshot.png" alt="" width="500" height="341" /></p>
<p style="text-align: justify;">Las pruebas de concepto que realice fueron más que exitosas, por ejemplo, pasar un archivo de texto plano o csv a una tabla <strong>Oracle</strong>, me lo ejecuto en <strong>2.6</strong> segundos insertando <strong>11.975</strong> registros <img src='http://www.hijodelared.com.ar/wp-includes/images/smilies/Surprised.png' alt=':sorpresa:' class='wp-smiley' /> . El esquedulado (activar un proceso cada tanto tiempo) funciona perfecto, podemos activar un trabajo diariamente, mensualmente o anualmente. El único problema que estoy teniendo es el de hacer un proceso que &#8220;<em>vigile una carpeta</em>&#8221; esto quiere decir que cuando yo inserte un archivo en una carpeta, por ejemplo un .txt, el proceso lo tome y lo transforme, pero estoy cerca de lograrlo, cuando lo hago voy a subir un tutorial. En resumen, hay muchas herramientas para <strong>ETL</strong>, sin haber probado todas, mi humilde opinión es que <strong>Kettle</strong> es una muy buena con la que podremos obtener resultados muy rápidamente.</p>
<p style="text-align: justify;">
<h3>Tal vez te interesen los siguientes post:</h3>
<ul class="related_post">
<li><a href="http://www.hijodelared.com.ar/instalar-ruby-on-rails-en-windows/" title="Instalar Ruby on Rails en Windows">Instalar Ruby on Rails en Windows</a></li>
<li><a href="http://www.hijodelared.com.ar/buen-manejo-de-excepciones-en-java/" title="Buen manejo de excepciones en Java">Buen manejo de excepciones en Java</a></li>
<li><a href="http://www.hijodelared.com.ar/manejar-archivos-csv-con-java/" title="Manejar archivos CSV con Java">Manejar archivos CSV con Java</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.hijodelared.com.ar/pentaho-business-intelligence/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Manejar archivos CSV con Java</title>
		<link>http://www.hijodelared.com.ar/manejar-archivos-csv-con-java/</link>
		<comments>http://www.hijodelared.com.ar/manejar-archivos-csv-con-java/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 19:39:35 +0000</pubDate>
		<dc:creator>Hijo de la Red</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.hijodelared.com.ar/?p=595</guid>
		<description><![CDATA[<p>Para el que no sabe los archivos <strong>CSV </strong>son simples archivos de texto plano pero que respetan una estructura de tabla separando los valores con coma, de ahí el nombre (<em><strong>c</strong>omma <strong>s</strong>eparated <strong>v</strong>alues</em>). Estos archivos se usan mucho para exportar tablas como por ejemplo tablas <a href="http://es.wikipedia.org/wiki/Dbf">DBF</a> o archivos de Excel.<br />
El temas es cuando tenemos que procesarlos con Java para hacer lo que queramos con los datos, si estás en el tema de Java seguramente pensás solucionar este problema tomando el archivo como un <em>String </em>y hacer un <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String)">Split</a> de la coma y guala, no está mal pero se complica cuando el <strong>.csv</strong> tiene un peso de <strong>80 Mb</strong> <img src='http://www.hijodelared.com.ar/wp-includes/images/smilies/Surprised.png' alt=':sorpresa:' class='wp-smiley' /> . Investigando por internet me encontré con un jar llamada <strong>JavaCSV </strong>la cual puedes bajar de <a href="http://www.csvreader.com/java_csv.php">aquí</a>.<br />
Luego de bajarlo su uso es muy simple, tenemos dos métodos fundamentales <em>CsvReader </em>para leer y <em>CsvWriter</em> para escribir archivos <strong>csv</strong>, vamos a ver un ejemplo de los dos:</p>
<p><!--more--></p>
<p>Tomemos un archivo <strong>csv </strong>con la siguiente estructura:</p>
<pre lang="TEXTPLAIN">ID,PRODUCTO,STOCK,PRECIO
1,MESA,124,65
2,SILLA,20,25.80
3,LAMPARA,68,30</pre>
<p>Lo guardamos con el nombre &#8220;productos.csv&#8221; puedes usar un editor de CSV como  <a onclick="javascript:urchinTracker('/outgoing/killink');" href="http://get.esellerate.net/get/est.aspx?est=D0D40REXSWH&amp;at=">Killink CSV Editor</a>, <strong>Microsoft Excel </strong>o un simple editor de texto plano.</p>
<p>La forma de leerlo e imprimir cada campo por consola sería la siguiente clase:</p>
<pre lang="JAVA">import java.io.FileNotFoundException;
import java.io.IOException;

import com.csvreader.CsvReader;

public class leerCSV {

/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {

//Le pasamos la URL del archivo CSV a leer.
CsvReader reader = new CsvReader("C:\\productos.csv");
try {
while (reader.readRecord())
{
//reader.get(Integer) - devuelve el contenido del numero de columna que le pasamos.
String id = reader.get(0);
String producto = reader.get(1);
String stock = reader.get(2);
String precio = reader.get(3);
System.out.println("Filas: " + id + "-" + producto +
"-" + stock + "-" + precio);
}
} catch (IOException e) {
e.printStackTrace();
}

reader.close();

}

}</pre>
<p>Cabe destacar que el metodo <em>get();</em> puede recibir, tambien un <em>String </em>con el nombre de la columna que queremos recuperar, por  ejemplo <em>reader.get(&#8220;PRECIO&#8221;);</em> pero a mi no me funcionó, me devuelve un <em>null</em>.</p>
<p>Ya vimos como leer un csv, ahora vamos a ver como escribir uno:</p>
<pre lang="JAVA">import java.io.IOException;

import com.csvreader.CsvWriter;

public class escribirCSV {

/**
* @param args
*/
public static void main(String[] args) {
// Le pasamos el nombre del archivo CSV a generar.
CsvWriter writer = new CsvWriter ("C:\\productos.csv");

try {
//writer.write(String) - Escribe los campos separandolos con coma automaticamente.
writer.write("ID");

writer.write("PRODUCTO");

writer.write("STOCK");

writer.write("PRECIO");

//writer.endRecord() - Termina con la linea.
writer.endRecord();

writer.write ("1");

writer.write ("MESA");

writer.write ("124");

writer.write ("65");

writer.endRecord();

writer.write ("2");

writer.write ("SILLA");

writer.write ("20");

writer.write ("25.80");

writer.endRecord();

writer.write ("3");

writer.write ("LAMPARA");

writer.write ("68");

writer.write ("30");

writer.endRecord();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

writer.close();

}

}

}</pre>
<h3>Tal vez te interesen los siguientes post:</h3>
<ul class="related_post">
<li><a href="http://www.hijodelared.com.ar/buen-manejo-de-excepciones-en-java/" title="Buen manejo de excepciones en Java">Buen manejo de excepciones en Java</a></li>
<li><a href="http://www.hijodelared.com.ar/instalar-ruby-on-rails-en-windows/" title="Instalar Ruby on Rails en Windows">Instalar Ruby on Rails en Windows</a></li>
<li><a href="http://www.hijodelared.com.ar/leer-archivo-de-texto-linea-por-linea-en-java/" title="Leer archivo de texto linea por linea en Java">Leer archivo de texto linea por linea en Java</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.hijodelared.com.ar/manejar-archivos-csv-con-java/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>hijoDeLaRedCode = new HijoDeLaRedCode ();</title>
		<link>http://www.hijodelared.com.ar/hijodelaredcode-new-hijodelaredcode/</link>
		<comments>http://www.hijodelared.com.ar/hijodelaredcode-new-hijodelaredcode/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 02:22:19 +0000</pubDate>
		<dc:creator>Hijo de la Red</dc:creator>
				<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.hijodelared.com.ar/?p=581</guid>
		<description><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-582" title="logo_code" src="http://www.hijodelared.com.ar/wp-content/uploads/2008/10/logo_code.jpg" alt="" width="195" height="173" /></p>
<p style="text-align: justify;">Así, bien nerd <img src='http://www.hijodelared.com.ar/wp-includes/images/smilies/Geek.png' alt=':nerd:' class='wp-smiley' /> doy por inaugurada esta sección, la que he dado a llamar <strong>HIJO de la RED Code</strong>. Si sos asiduo lector de este blog, sabrás que trabajo en una empresa de desarrollo de software, esto más mi pación por la programación, me llevaron a la necesidad de tener un espacio dedicado solamente al código y a todo lo que tenga que ver con proyectos de software. Esta sección está en beta, supongo que va a evolucionar a medida que pase el tiempo, espero contar con tus criticas y sugerencias para seguir mejorando <img src='http://www.hijodelared.com.ar/wp-includes/images/smilies/Laugh.png' alt=':sonrisa:' class='wp-smiley' /> .</p>
<h3>No hay posts relacionados</h3>
<ul class="related_post">
<li><a href="http://www.hijodelared.com.ar/como-sacarce-de-ensima-a-un-pesado/" title="Humor: Como sacarse de encima a un pesado">Humor: Como sacarse de encima a un pesado</a></li>
<li><a href="http://www.hijodelared.com.ar/hijo-de-la-red-30/" title="HIJO de la RED 3.0">HIJO de la RED 3.0</a></li>
<li><a href="http://www.hijodelared.com.ar/apaga-tu-pc-con-la-impresora/" title="Apagá tu PC con la impresora">Apagá tu PC con la impresora</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.hijodelared.com.ar/hijodelaredcode-new-hijodelaredcode/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
