<?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>Pharalax BlogPharalax Blog</title>
	<atom:link href="http://pharalax.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://pharalax.com/blog</link>
	<description>Programación, tecnología y mas</description>
	<lastBuildDate>Wed, 31 Oct 2012 20:49:13 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Estilo Windows 8 (metro) con css y jquery</title>
		<link>http://pharalax.com/blog/estilo-windows-8-metro-con-css-y-jquery/</link>
		<comments>http://pharalax.com/blog/estilo-windows-8-metro-con-css-y-jquery/#comments</comments>
		<pubDate>Wed, 31 Oct 2012 20:03:11 +0000</pubDate>
		<dc:creator>Alberto Sánchez</dc:creator>
				<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[movil]]></category>
		<category><![CDATA[diseño metro]]></category>
		<category><![CDATA[estilo metro]]></category>
		<category><![CDATA[estilo windows 8]]></category>
		<category><![CDATA[metro css]]></category>
		<category><![CDATA[metro design]]></category>
		<category><![CDATA[metro html5]]></category>
		<category><![CDATA[metro jquery]]></category>
		<category><![CDATA[theme metro]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1906</guid>
		<description><![CDATA[Con el reciente lanzamiento de Windows 8 podemos notar un gran cambio en la manera de manejar las aplicaciones, la interfaz ha cambiado completamente. La realidad es que es una interfaz limpia y sobria que muy probablemente será una tendencia en el mundo del desarrollo de software. Si estas pensando en incorporar ciertos elementos de [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/windows_8_metro_css_jquery.jpg"><img class="aligncenter size-full wp-image-1907" title="interfaz windows metro con css y jquery" src="http://pharalax.com/blog/wp-content/uploads/2012/10/windows_8_metro_css_jquery.jpg" alt="" width="616" height="328" /></a></p>
<p>Con el reciente lanzamiento de Windows 8 podemos notar un gran cambio en la manera de manejar las aplicaciones, la interfaz ha cambiado completamente. La realidad es que es una interfaz limpia y sobria que muy probablemente será una tendencia en el mundo del desarrollo de software.</p>
<p>Si estas pensando en incorporar ciertos elementos de la nueva interfaz de Windows en tus páginas o sistemas web aquí tienes un par de opciones por donde empezar:</p>
<p>&nbsp;</p>
<p><span id="more-1906"></span></p>
<h1></h1>
<h1>Metro UI CSS</h1>
<h1><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_css.jpg"><img class="aligncenter size-full wp-image-1911" title="metro css style windows 8" src="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_css.jpg" alt="" width="871" height="285" /></a></h1>
<p>El ucraniano Sergey Pimenov desarrolló <a title="estilo metro windows 8 css" href="http://metroui.org.ua" target="_blank"><strong>Metro UI CSS</strong></a> , un paquete de estilo que emula muy bien el Windows 8, pero no solo en su interfaz principal sino también ofrece componentes de formulario como etiquetas, campos de texto, botones, menús, etc.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/compoentes_w8.jpg"><img class="aligncenter size-full wp-image-1914" title="compoentes_w8" src="http://pharalax.com/blog/wp-content/uploads/2012/10/compoentes_w8.jpg" alt="" width="585" height="342" /></a></p>
<p>&nbsp;</p>
<p>Al probarlo en una tableta se puede apreciar una buena compatibilidad y manejo en ese dispositivo móvil.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_css_tablet2.jpg"><img class="aligncenter size-full wp-image-1915" title="metro_css_tablet2" src="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_css_tablet2.jpg" alt="" width="585" height="342" /></a></p>
<p>&nbsp;</p>
<h1>Droptiles</h1>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_jquery_css.jpg"><img class="aligncenter size-full wp-image-1917" title="metro_jquery_css" src="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_jquery_css.jpg" alt="" width="901" height="278" /></a></p>
<p>Este es un paquete de estilos mucho más elaborado que UI CSS, además de tener la interfaz principal  es posible acceder a las secciones dando clic sobre las imágenes. Todo está contenido en un escritorio principal. El manejo de la interfaz es más agradable y posee más animaciones.</p>
<p>Por defecto los archivos de ejemplo están creados en asp.net pero  con unos pequeños cambios es posible correrlo con cualquier lenguaje web.</p>
<p>Esta es su <a title="libreria metro css y jquery" href="http://droptiles.com/" target="_blank">dirección web</a></p>
<p>Un punto desfavorable de Droptiles fue que al correrlo en la tableta no tiene una buena compatibilidad con el dispositivo.</p>
<p>&nbsp;</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_css_tablet.jpg"><img class="aligncenter size-full wp-image-1918" title="metro_css_tablet" src="http://pharalax.com/blog/wp-content/uploads/2012/10/metro_css_tablet.jpg" alt="" width="585" height="342" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/estilo-windows-8-metro-con-css-y-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[.NET] Ingenieria Inversa con GrayWolf</title>
		<link>http://pharalax.com/blog/net-ingenieria-inversa-con-graywolf/</link>
		<comments>http://pharalax.com/blog/net-ingenieria-inversa-con-graywolf/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 09:01:19 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[graywolf]]></category>
		<category><![CDATA[graywolf c#]]></category>
		<category><![CDATA[graywolf inicio]]></category>
		<category><![CDATA[graywolf tutorial]]></category>
		<category><![CDATA[ingenieria inversa c#]]></category>
		<category><![CDATA[ingenieria inversa graywolf]]></category>
		<category><![CDATA[seguridad .net]]></category>
		<category><![CDATA[seguridad c#]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1890</guid>
		<description><![CDATA[Ultimamente estamos trabajando mucho con el .Net Framework el tesoro Microsoft, y tal vez haya muchas mas personas que tambien trabajen con el .Net sea en Visual C# o Visual Basic. En este post hablare de una interesante Aplicacion para hacer ingenieria Inversa a aplicaciones .Net. Se Trata de GrayWolf para C#. El objetivo de [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/GrayWolf.png"><img class="aligncenter size-full wp-image-1891" title="GrayWolf" src="http://pharalax.com/blog/wp-content/uploads/2012/10/GrayWolf.png" alt="" width="256" height="256" /></a></p>
<p>Ultimamente estamos trabajando mucho con el <strong>.Net Framework</strong> el tesoro Microsoft, y tal vez haya muchas mas personas que tambien trabajen con el <strong>.Net</strong> sea en <strong>Visual C#</strong> o <strong>Visual Basic</strong>. En este post hablare de una interesante Aplicacion para hacer ingenieria Inversa a aplicaciones<strong> .Net</strong>. Se Trata de <strong>GrayWolf</strong> para <strong>C#</strong>.</p>
<p>El objetivo de la <strong>ingeniería inversa</strong> es obtener información o un diseño a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado.</p>
<p><a href="http://es.wikipedia.org/wiki/Ingenier%C3%ADa_inversa">Wikipedia</a></p>
<p>La<strong> ingenieria Inversa</strong> es una espada de Doble filo que puede ayudarnos a explorar las estructuras de otro Software, y Aplicaciones como <strong>grayWolf</strong> nos pueden Ayudar a saber que tan Vulnerable es nuestro software ante ataques de <strong>Ingenieria Inversa</strong>.</p>
<p>Vamos a ver como trabaja <strong>grayWolf</strong> con fines puramente educativos <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<span id="more-1890"></span></p>
<p>Obteniendo El Arma</p>
<p><strong>GrayWolf</strong> es una aplicacion que nos permite aplicar ingenieria inversa a aplicaciones hechas con <strong>.NET</strong>, podremos conseguir una version de <strong>grayWolf</strong> directamente de su <a href="http://www.digitalbodyguard.com/DATA/GrayWolf%20v1.83.zip">pagina oficial aqui</a>, esta es la version 1.83 hasta la fecha de este post. hay una version 1.88 pero aun esta en fase Beta por lo tanto usaremos la 1.83.</p>
<p>Usando el Arma</p>
<p>En el siguiente video muestro como abrir una aplicacion C# con <strong>grayWolf.</strong><br />
<iframe src="http://www.youtube.com/embed/F2eHDRPX82E" frameborder="0" width="560" height="315"></iframe></p>
<p>Lo unico unico que tenemos que hacer para abrir una aplicacion/programa hecho en <strong>C#</strong> con <strong>GrayWolf</strong> es arrastrar el ejecutable(.exe) a el treeview de la izquierda del <strong>GrayWolf.</strong><br />
<a href="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw01.png"><img class="aligncenter size-medium wp-image-1894" title="grayw01" src="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw01-300x210.png" alt="" width="300" height="210" /></a></p>
<p>Una vez que hallamos arrastrado con exito nuestro programa, el <strong>Treeview</strong> de la izquierda se rellenara con la estructura del codigo de la aplicacion.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw02.png"><img class="aligncenter size-medium wp-image-1895" title="grayw02" src="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw02-300x210.png" alt="" width="300" height="210" /></a></p>
<p>y he aqui el poder de<strong> GrayWolf</strong>, podremos ver las clases y las funciones de la aplicacion. Todo apartir del solo ejecutable.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw03.png"><img class="aligncenter size-medium wp-image-1896" title="grayw03" src="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw03-300x210.png" alt="" width="300" height="210" /></a></p>
<p>Si seleccionamos una funcion podremos ver sus modificadores en la pesta~a<strong> Function</strong>, es decir veremos si la funcion en el supuesto codigo de la aplicacion es public, private, static, etc.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw04.png"><img class="aligncenter size-medium wp-image-1897" title="grayw04" src="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw04-300x210.png" alt="" width="300" height="210" /></a></p>
<p>Igualmente podremos ver el código de la función en la pesta~a  <strong>MethodEditor : IL</strong> , muy basico, pero suficiente :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw05.png"><img class="aligncenter size-medium wp-image-1898" title="grayw05" src="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw05-300x210.png" alt="" width="300" height="210" /></a></p>
<p>Podremos ver los valores hexadecimales en la pesta~a <strong>HEX</strong> :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw06.png"><img class="aligncenter size-medium wp-image-1899" title="grayw06" src="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw06-300x210.png" alt="" width="300" height="210" /></a></p>
<p>Y en <strong>Class View</strong> podremos ver la estructura de la clase que seleccionemos, con estructura me refiero a las variables y me todos de la clase como definicion, sin el codigo interno de las funciones&#8230;</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw07.png"><img class="aligncenter size-medium wp-image-1901" title="grayw07" src="http://pharalax.com/blog/wp-content/uploads/2012/10/grayw07-300x210.png" alt="" width="300" height="210" /></a></p>
<p>Asi que ya no hay excusa para empezar a &#8220;explorar&#8221; otras aplicaciones, y ver como estan constituidas, este es el primer post de muchos mas sobre seguridad e in-seguridad de software, saludos <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/net-ingenieria-inversa-con-graywolf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Google] Haciendo Graficas con la Visualization API</title>
		<link>http://pharalax.com/blog/google-haciendo-graficas-con-las-visualization-api/</link>
		<comments>http://pharalax.com/blog/google-haciendo-graficas-con-las-visualization-api/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 18:36:58 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[chart simple]]></category>
		<category><![CDATA[googl visualization api]]></category>
		<category><![CDATA[google charts]]></category>
		<category><![CDATA[google graficas]]></category>
		<category><![CDATA[google graficas de pastel]]></category>
		<category><![CDATA[google piechart]]></category>
		<category><![CDATA[graficas de google]]></category>
		<category><![CDATA[graficas rapidas]]></category>
		<category><![CDATA[graficas simples]]></category>
		<category><![CDATA[tutorial google]]></category>
		<category><![CDATA[tutorial visualization api]]></category>
		<category><![CDATA[visualization api]]></category>
		<category><![CDATA[visualization api tutorial]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1861</guid>
		<description><![CDATA[Una vez mas volveremos a tocar las tecnologias de Google, pues estas tecnologias nos traen muchas novedades y muchas simplificacion y desde la perspetiva de Google : las APIs de Google estan para no reiventar la rueda y enfocarnos en resolver otros problemas que requieren mas atencion. Esta vez haremos uso de la Visualization API, [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/googlechart.png"><img class="aligncenter size-full wp-image-1868" title="googlechart" src="http://pharalax.com/blog/wp-content/uploads/2012/10/googlechart.png" alt="" width="450" height="300" /></a></p>
<p>Una vez mas volveremos a tocar las tecnologias de <strong>Google,</strong> pues estas tecnologias nos traen muchas novedades y muchas simplificacion y desde la perspetiva de <strong>Google</strong> : las APIs de Google estan para no reiventar la rueda y enfocarnos en resolver otros problemas que requieren mas atencion.</p>
<p>Esta vez haremos uso de la <strong>Visualization API</strong>, esta API sirve en pocas palabras para hacer graficas con puro javascript gracias a las <strong>Google Chart Tools</strong>, de la forma mas facil, estas graficas estan muy bien dise~adas y rellenarlas es muy facil.</p>
<p><a href="http://www.pharalax.com/developers/downloads/grafica-simple01.html">Ejemplo Grafica PieChart Simple</a><br />
<a href="http://www.pharalax.com/developers/downloads/grafica-3d01.html">Ejemplo Grafica PieChart 3d</a><br />
&nbsp;</p>
<p><span id="more-1861"></span></p>
<p>Para no dar rodeos con teoria vamos a empezar, veamos el ejemplo paso a paso e iremos viendo la teoria paso a paso.</p>
<div style="background: #00aaff; border: 1px #0000ff solid; padding: 5px;">La grafica que haremos como ejemplo sera Las visitas de Pharalax, solo abarcaremos 7 dias &#8230; y talvez los datos sean ficticios <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , pero solo es un ejemplo.</div>
<p>&nbsp;</p>
<p>Lo primero que haremos sera cargar en nuestro documento HTML la JSAPI de Gooogle desde https://www.google.com/jsapi , con esta API podremos hacer uso de la <strong>Visualization API</strong>.</p>
<p>Esta APIS es de javascript,asi que la cargaremos con script.</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">&lt;script type="text/javascript" src="https://www.google.com/jsapi"&gt; &lt;/script&gt;</pre>
<p>Ahora empezaremos otro script donde iremos escribiendo las caracteristicas y datos con lo que contara nuestra Grafica, vamos paso a paso :</p>
<p>Ahora cargaremos la Visualization API , una vez cargada (load), podremos empezar :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">google.load('visualization', '1.0', {'packages':['corechart']});</pre>
<p>Vamos a hacer un callback, para que al momento de que la <strong>Visualization API</strong> este cargada llamemos a una funcion, esta funcion sera la que implementara la API y dibujara nuestra grafica.</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">google.setOnLoadCallback(dibujaGrafica);</pre>
<p>La funcion en cuestion sera<strong> dibujaGrafica,</strong> por lo tanto declararemos la funcion y dentro de ella ira el siguiente codigo.</p>
<p>La primera linea dentro de la funcion <strong>dibujaGrafica</strong>, es la creacion de una Tabla de datos (DataTable), despues apartir de ella construiremos la grafica :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">var data = new google.visualization.DataTable();</pre>
<p>Agregamos dos columnas a la tabla la sintaxis para agregar columnas es : data.addColumn(tipo, nombre) y como esta sera una<strong> PieChart</strong>(grafica de pastel, circular)solo necesitamos 2 columnas, la descripcion (en este caso los dias de la semana) y el valor ( el numero de visitas de pharalax en cada dia), el dia de la semana con tipo <strong>string</strong> y las visitas como <strong>number</strong>.</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">data.addColumn('string', 'Dia de la Semana');
data.addColumn('number', 'Visitas');</pre>
<p>Vamos a agregar valores(rows) a nuestra DataTable, de la manera siguiente :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">data.addRows([
['Lunes', 50],
['Martes', 61],
['Miercoles', 55],
['Jueves', 70],
['Viernes', 42],
['Sabado', 67],
['Domingo', 52]
]);</pre>
<p>Podemos ver que entre los corchetes conservamos la estructura que definimos en las columnas ['Dia de la Semana','Visitas'], sino conservamos esta estructura, nuestra grafica jamas se dibujara, y notar que los datos numericos van fuera de comillas.</p>
<p>Vamos a darle las opciones a la grafica , en este caso tendremos 3 caracteristicas : title, width y height ; el titulo , el largo y lo alto de la grafica respectivamente :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">var opciones = {'title':'Visitas de Pharalax en una Semana',
'width':800,
'height':600};</pre>
<p>Ahora definimos nuestra grafica y le decimos donde se va a dibujar, estamos hablando de una PieChart, en caso de que quisieramos una grafica tipica de barras, simplemente sustituimos <strong>PieChart</strong> por <strong>BarChart</strong> , nada mas :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">var chart = new google.visualization.<strong>PieChart</strong>(document.getElementById('chart_div'));</pre>
<p>Notamos que la grafica la vamos a dibijar en un componente (en este caso div) con el identificador &#8216;<strong>chart_div</strong>&#8216;.</p>
<p>Finalmente dibujamos nuestra grafica, con nuestros datos y nuestras opciones :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">chart.draw(data, opciones);</pre>
<p>Con esto termina la funcion <strong>dibujaGrafica</strong>, les dejo el codigo completo :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript" src="https://www.google.com/jsapi"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;

google.load('visualization', '1.0', {'packages':['corechart']});

google.setOnLoadCallback(dibujaGrafica);

function dibujaGrafica() {

var data = new google.visualization.DataTable();

data.addColumn('string', 'Dia de la Semanda');
data.addColumn('number', 'Visitas');
data.addRows([
['Lunes', 50],
['Martes', 61],
['Miercoles', 55],
['Jueves', 70],
['Viernes', 42],
['Sabado', 67],
['Domingo', 52]
]);

var opciones = {'title':'Visitas de Pharalax en una Semana',
'width':800,
'height':600};

var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, opciones);
}
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div id="chart_div"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Esto aun no estodo <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  si aun quisieramos ver la grafica en 3d, tendriamos que sustituir los datos que tenemos en opciones por los siguientes :</p>
<pre style="background: #434343; border-radius: 5px; color: white; border: 0; box-shadow: 0px 0px 8px #222;">var opciones = {'legend':'left',
'title':'Visitas de Pharalax en una Semana',
'is3D':true,
'width':800,
'height':600};</pre>
<p>y Asi tendremos nuestra grafica en 3d.</p>
<p><a href="http://www.pharalax.com/developers/downloads/grafica-simple01.html">Ejemplo Grafica PieChart Simple</a><br />
<a href="http://www.pharalax.com/developers/downloads/grafica-3d01.html">Ejemplo Grafica PieChart 3d</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/google-haciendo-graficas-con-las-visualization-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Google] Obteniendo la API KEY</title>
		<link>http://pharalax.com/blog/google-obteniendo-la-api-key/</link>
		<comments>http://pharalax.com/blog/google-obteniendo-la-api-key/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 07:48:27 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[api key]]></category>
		<category><![CDATA[google api key]]></category>
		<category><![CDATA[google apps]]></category>
		<category><![CDATA[google clave]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1852</guid>
		<description><![CDATA[Google, el gigante de internet, cuenta con servicios de primera calidad para los usuarios y lo mejor , gratis . Aplicaciones como Gmail, Google docs,Google Drive, Google Maps, Youtube y mucho mas entre su repertorio. Ademas Google provee a desarolladores un conjunto de APIs para poder extender los servicios de Google a las propias necesidades [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/google-api-logo.png"><img class="aligncenter size-full wp-image-1859" title="google-api-logo" src="http://pharalax.com/blog/wp-content/uploads/2012/10/google-api-logo.png" alt="" width="300" height="200" /></a></p>
<p><strong>Google</strong>, el gigante de internet, cuenta con servicios de primera calidad para los usuarios y lo mejor , gratis <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Aplicaciones como Gmail, Google docs,Google Drive, Google Maps, Youtube y mucho mas entre su repertorio.</p>
<p>Ademas Google provee a desarolladores un conjunto de APIs para poder extender los servicios de Google a las propias necesidades del desarrollador. Para hacer uso de estas APIs es necesario tener una <strong>Cuenta de Google</strong> (correo de Gmail&#8230;) y tener una <strong>API KEY.</strong>para que?<span id="more-1852"></span></p>
<p>La <strong>API KEY</strong> de Google es como tener permiso para usar la tecnologia de Google, este permiso es inmediato y ademas nos abrira muchas puertas mas. Una vez que tenemos nuestra Cuenta de Google solo vamos a la <a href="https://code.google.com/apis/console">Consola de Google</a> y ahi nos damos de alta facilmente.</p>
<p>Una vez que nos demos de alta veremos una pantalla como esta :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-021333.png"><img class="aligncenter size-large wp-image-1853" title="Screenshot from 2012-10-02 02:13:33" src="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-021333-1024x575.png" alt="" width="620" height="348" /></a>Donde podremos ver informacion detallada de las APIs que estamos usando en este Caso yo tengo 5 APIs Activas &#8230; Books, Calendar, Freebase, maps y Street view.</p>
<p>Si queremos seleccionar alguna otra APIs seleccionamos la opcion <strong>Services</strong> del menu de la Izquierda y nos aparecera la colosal lista de servicios de Google.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-021840.png"><img class="aligncenter size-large wp-image-1854" title="Screenshot from 2012-10-02 02:18:40" src="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-021840-1024x575.png" alt="" width="620" height="348" /></a></p>
<p>Son cerca de 50 APIs, dependiendo del servicio que vallamos a usar, la mayoria estan en off, si queremos activar una API para usarla, le damos click sobre off y se pondra en on, y viceversa.</p>
<p>La informacion que creo mas importante para este post esta en la opcion <strong>API Access</strong> en el menu de la izquierda, que es donde aparecera nuestra clave de desarrollador, en mi caso :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-022114.png"><img class="aligncenter size-large wp-image-1855" title="Screenshot from 2012-10-02 02:21:14" src="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-022114-1024x575.png" alt="" width="620" height="348" /></a>Donde veremos informacion especial, propia de nosotros como la <strong>API Key</strong> (que es el acceso a las APIs), la fecha de activacion. La clave de acceso es unica como desarrollador y cuando hacemos una aplicacion usando alguna API es necesario especificar la<strong> API KEY.</strong></p>
<p>Muchos pensaran copiar la API <strong>KEY</strong> de otros pero se perderan de algo especial <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Si tenemos una aplicacion usando APIs de google y quisieramos saber Estadisticas de uso de nuestra aplicacion, pues gracias a la <strong>API KEY</strong> tendremos actualizadas nuestras estadisticas seleccionando la opcion <strong>Reports</strong>.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-023016.png"><img class="aligncenter size-large wp-image-1856" title="Screenshot from 2012-10-02 02:30:16" src="http://pharalax.com/blog/wp-content/uploads/2012/10/Screenshot-from-2012-10-02-023016-1024x575.png" alt="" width="620" height="348" /></a>El servicio de APIs de Google es gratuito hasta cierto punto, te limita a 100000 o 25000 visitas por dia dependiendo del servicio.</p>
<p>Por ejemplo para la busqueda personalizada solo te permite 100 busquedas por dia, como usuario gratis.</p>
<p>Para sitios medianos creo que vale, pero para algo mas grande habra que pagarle a Google.</p>
<p><em>Este articulo sera usado para futuras referencias &#8230;</em></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/google-obteniendo-la-api-key/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[HTML5] Manejando el Elemento File</title>
		<link>http://pharalax.com/blog/html5-manejando-el-elemento-file/</link>
		<comments>http://pharalax.com/blog/html5-manejando-el-elemento-file/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 17:09:44 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Archivos]]></category>
		<category><![CDATA[file element html5]]></category>
		<category><![CDATA[files html5]]></category>
		<category><![CDATA[html5 archivos]]></category>
		<category><![CDATA[recorrido de archivos html5]]></category>
		<category><![CDATA[ver info archivos html5]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1840</guid>
		<description><![CDATA[HTML5 nos sigue sorprendiendo, cada vez se hace mas espectacular lo que podemos hacer con simple javascript, bueno bueno no tan simple, para el caso que nos ocupa en este post haremos uso del elemento &#60;input type=&#8221;file&#8221;&#62; para manejar las entradas de archivos. En la practica resulta muy interesante lo que podemos hacer, la primero [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/class-header-offline.jpg"><img class="aligncenter size-medium wp-image-1846" title="class-header-offline" src="http://pharalax.com/blog/wp-content/uploads/2012/09/class-header-offline-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p><strong>HTML5</strong> nos sigue sorprendiendo, cada vez se hace mas espectacular lo que podemos hacer con simple javascript, bueno bueno no tan simple, para el caso que nos ocupa en este post haremos uso del elemento <strong>&lt;input type=&#8221;file&#8221;&gt;</strong> para manejar las entradas de archivos.<span id="more-1840"></span></p>
<p>En la practica resulta muy interesante lo que podemos hacer, la primero que haremos sera iniciar la definicion de nuestro html y continuaremos explicando paso a paso lo que sucede en el javascript.</p>
<div style="color: blue; font-size: 20px; font-weight: bold;">El HTML</div>
<p>La primera fase de nuestro documento HTML quedara asi :</p>
<pre style="background: #434343; color: white; border-radius: 5px;">&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type="file" id="files" multiple&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>En esta parte no hay mucho que decir, si ya tenemos un grado de experiencia, podemos simplemente ver que todo es simple <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , hasta aqui, el elemento file es el mismo de siempre, le agregamos el parametro <strong>multiple</strong> para que al abrirse el selector de archivos podamos seleccionar varios archivos.</p>
<div style="color: blue; font-size: 20px; font-weight: bold;">EL Javascript</div>
<p>Al inciar nos llamara mucho la atencion la forma de trabajar de javascript con archivos, luego nos acostumbramos &#8230; empezaremos con esto :</p>
<pre style="background: #434343; color: white; border-radius: 5px;">file_in = document.querySelector("#files")
file_in.onchange = function(e){
    var files = e.target.files;
    for(var i=0,f;f= files[i];++i){
        console.log(f.name);
    }
}</pre>
<p>Para que algunos no se pierdan con el document.querySelector, es la sustitucion de document.getElementById, document.querySelector utiliza los selectores mas poderosos de CSS3, lo que hacemos es obtener el contexto del elemento file en la variable <strong>file_in</strong>.</p>
<p>Haremos uso del evento onchange del elemento file, este evento disparara la funcion dentro y nos mostrara los nombres de los archivos seleccionados en la consola de javascript.</p>
<p>Es importante observar que dentro de la funcion inline del evento onchange tenemos lo siguiente :</p>
<p><strong>var files = e.target.files;</strong></p>
<p>Lo que se hace aqui es obtener en la variable <strong>files</strong>, el contexto de<strong> e.target.files</strong>, que son los objetos de los archivos que vienen desde el elemento <strong>file</strong>, para luego hacer un recorrido de estos elementos con el <strong>for</strong>.</p>
<p>Vemos que en la declaracion del <strong>for</strong> hacemos :</p>
<p><strong>f = files[i]</strong></p>
<p>Aqui por cada iteracion del <strong>for,</strong> la variable<strong> f</strong>, tendra el contexto (valores de objetos) de la iteraccion<strong> files[i]</strong>, con<strong> f.name</strong>, indicamos que vamos a imprimir el nombre del archivo y dado que<strong> f</strong> tiene el contexto de<strong> f[i]</strong> , nos estamos cada archivo seleccionado.</p>
<div style="color: blue; font-size: 20px; font-weight: bold;">Terminando la tarea</div>
<p>Mostrar texto en la consola de javascript quizas no es la mejor idea dado que solo se usa para pruebas, lo mejor sera ir poniendo los archivos seleccionados en una lista. En el ejemplo anterior mostrabamos solamente el nombre del archivo, en este ejemplo mostraremos mas.</p>
<p><strong>f.name</strong> // muestra en nombre de archivo<br />
<strong>f.type</strong> // el tipo de archivo<br />
<strong>f.size</strong> // el tama~o del archivo</p>
<p>El ejemplo completo es :</p>
<p>&nbsp;</p>
<pre style="background: #434343; color: white; border-radius: 5px;">&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type="file" id="files" multiple&gt;

&lt;div id="archivos"&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;script&gt;

var insertar_en = document.querySelector("#archivos ul");
file_in = document.querySelector("#files")
file_in.onchange = function(e){
    var files = e.target.files;
    for(var i=0,f;f= files[i];++i){
        var archivo = document.createElement("li");
        archivo.innerHTML = f.name + " - (&lt;b&gt;" + f.type + "&lt;/b&gt;) -&gt;" + f.size;
        insertar_en.appendChild(archivo);
    }
}
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Ahora cada archivo seleccionado lo vamos insertando en una lista, ademas mostramos mas informacion referente al archivo.</p>
<p>Una muestra ya que hemos seleccionado archivos :<br />
<a href="http://pharalax.com/blog/wp-content/uploads/2012/09/ejemplo.png"><img class="aligncenter size-medium wp-image-1844" title="ejemplo" src="http://pharalax.com/blog/wp-content/uploads/2012/09/ejemplo-300x86.png" alt="" width="300" height="86" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/html5-manejando-el-elemento-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[HTML5] Implementando micras de Segundo</title>
		<link>http://pharalax.com/blog/html5-implementando-micras-de-segundo/</link>
		<comments>http://pharalax.com/blog/html5-implementando-micras-de-segundo/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 07:09:03 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[html5 medicion de tiempo]]></category>
		<category><![CDATA[html5 micras de segundo]]></category>
		<category><![CDATA[html5 performance]]></category>
		<category><![CDATA[html5 tiempo]]></category>
		<category><![CDATA[javascript micras de segundo]]></category>
		<category><![CDATA[javascript tiempo]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1828</guid>
		<description><![CDATA[Si estamos interesados en el desarrollo de animaciones, juegos o simplemente por pura obsecion de manejo del tiempo, HTML5 nos trae algo nuevo, sucede que por un buen tiempo a la hora de manejar intervalos de tiempo javascript solo permitia milisegundos y hasta la fecha es asi. Veremos : Midiendo Segundos Midiendo Micras Por la [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/timer-icon.png"><img class="aligncenter  wp-image-1829" title="timer-icon" src="http://pharalax.com/blog/wp-content/uploads/2012/09/timer-icon.png" alt="" width="256" height="256" /></a></p>
<p>Si estamos interesados en el desarrollo de animaciones, juegos o simplemente por pura obsecion de manejo del tiempo, <strong>HTML5</strong> nos trae algo nuevo, sucede que por un buen tiempo a la hora de manejar intervalos de tiempo <strong>javascript</strong> solo permitia milisegundos y hasta la fecha es asi.</p>
<p>Veremos :</p>
<ul>
<li>Midiendo Segundos</li>
<li>Midiendo Micras</li>
</ul>
<p>Por la obsecion de mejores animaciones y mejores frames ha surgido la necesidad de implementar micras de segundo, es decir dividir un segundo en un millon de partes, para obtener medidas de tiempo mucho mas precisas.<span id="more-1828"></span></p>
<div style="color: blue; font-weight: bold; font-size: 20px;">Midiendo Segundos con Date.now()</div>
<p>Vamos a partir de un ejemplo simple, la sumatoria de un numero de 1 hasta 1000000 (un millon), vamos a medir el tiempo en que ocurre :</p>
<pre style="color: white; background: #434343; border-radius: 5px;">var start = Date.now();
var sumatoria = 0
for(var i=0;i&lt;1000000;i++)
sumatoria = sumatoria + 1

if(window.console)
    window.console.log("duracion : " + (Date.now() - start));</pre>
<p>Esto imprimira en la consola<strong> javascript</strong> la duracion de la operacion en segundos.Aqui basicamente lo que hacemos es obtener la hora(var start = Date.now()) antes de iniciar la operacion y restarle la hora(Date.now()) a la que termina la operacion y asi obtenermos los segundos que tarda la operacion.</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/time-secs.png"><img class="aligncenter size-full wp-image-1831" title="time-secs" src="http://pharalax.com/blog/wp-content/uploads/2012/09/time-secs.png" alt="" width="240" height="179" /></a></p>
<div style="color: blue; font-weight: bold; font-size: 20px;">Midiendo Micras con performance.webkitNow()</div>
<p>Para navegadores webkit esto es lo nuevo, esta funcion nos da el tiempo con todo y micras de segundo, para aplicarlo solo sustituiremos <strong>Date.now()</strong> por <strong>performance.webkitNow()</strong>, el codigo nos quedata asi :</p>
<pre style="color: white; background: #434343; border-radius: 5px;">var start = performance.webkitNow();
var sumatoria = 0
for(var i=0;i&lt;1000000;i++)
sumatoria = sumatoria + 1

if(window.console)
    window.console.log("duracion : " + (performance.webkitNow() - start));</pre>
<p>Como resultado obtendremos :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/time-micras.png"><img class="aligncenter size-full wp-image-1836" title="time-micras" src="http://pharalax.com/blog/wp-content/uploads/2012/09/time-micras.png" alt="" width="235" height="256" /></a></p>
<p>&nbsp;</p>
<p>Y concluimos, nos podemos dar cuenta que mientras en en segundos nos muestra numeros enteros y por la parte de <strong>performance.webkitNow</strong> nos da una mayor exactitud.</p>
<p>Cuando se trata de caracteristicas del HTML5 cabe notar que el navegador Chrome es uno de los mejores en este aspecto, desde mi humilde punto de vista, aunque es de respetarse la intervencion de los demas navegadores tipo webkit.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/html5-implementando-micras-de-segundo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[HTML5] Empleando datalist en inputs de Formularios</title>
		<link>http://pharalax.com/blog/html5-empleando-datalist-en-inputs-de-formularios/</link>
		<comments>http://pharalax.com/blog/html5-empleando-datalist-en-inputs-de-formularios/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 05:54:20 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[datalist option]]></category>
		<category><![CDATA[html5 datalist]]></category>
		<category><![CDATA[input range datalist]]></category>
		<category><![CDATA[input text datalist]]></category>
		<category><![CDATA[sugerencias con datalist html5]]></category>
		<category><![CDATA[usando datalist]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1821</guid>
		<description><![CDATA[HTML5 viene con muchas mejoras y nuevos componentes, aun esta en previo desarrollo la nueva tecnologia de HTML5 y ya esta cobrando muchos votos a su favor. En esta ocasion daremos un paseo por el componente &#60;datalist&#62;&#60;/datalist&#62; que viene de la mano con los input, para este ejemplo usaremos: input[type=range] input[type=text] La funcion del elemento datalist [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/HTML5_Logo_256.png"><img class="aligncenter size-full wp-image-1823" title="HTML5_Logo_256" src="http://pharalax.com/blog/wp-content/uploads/2012/09/HTML5_Logo_256.png" alt="" width="256" height="256" /></a></p>
<p><strong>HTML5</strong> viene con muchas mejoras y nuevos componentes, aun esta en previo desarrollo la nueva tecnologia de <strong>HTML5</strong> y ya esta cobrando muchos votos a su favor.</p>
<p>En esta ocasion daremos un paseo por el componente <strong>&lt;datalist&gt;&lt;/datalist&gt;</strong> que viene de la mano con los input, para este ejemplo usaremos:</p>
<ul>
<li>input[type=range]</li>
<li>input[type=text]</li>
</ul>
<p>La funcion del elemento <strong>datalist</strong> es dar al <strong>input</strong> una serie de valores predefinidos, en el caso de que esto sea relevante.<span id="more-1821"></span></p>
<div style="font-size: 20px; color: blue; font-weight: bold;">input[type=range]</div>
<p>El primer ejemplo que haremos sera con el elemento <strong>range</strong> y apartir de ahi veremos como trabajar con <strong>datalist</strong>.</p>
<pre style="background: #ccc; color: maroon;">&lt;input type="range" value="0" min="0" max="400" list="numeros" /&gt;
&lt;datalist id="numeros"&gt;
    &lt;option&gt;20&lt;/option&gt;
    &lt;option&gt;40&lt;/option&gt;
    &lt;option&gt;80&lt;/option&gt;
    &lt;option&gt;160&lt;/option&gt;
    &lt;option&gt;320&lt;/option&gt;
&lt;/datalist&gt;</pre>
<p>y como resultado obtendremos un elemento <strong>range</strong>(rango) asi :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/range01.png"><img class="aligncenter size-full wp-image-1822" title="range01" src="http://pharalax.com/blog/wp-content/uploads/2012/09/range01.png" alt="" width="547" height="101" /></a></p>
<p>Lo que hemos hecho ha sido insertar un elemento range que : inicialmente apunte al valor 0 -&gt; value =&#8221;0&#8243;, que su valor minimo sea 0 -&gt; <strong>min=&#8221;0&#8243;</strong> ,  que su valor maximo sea 400 -&gt; <strong>max=&#8221;400&#8243;</strong>, y ademas lo hemos enlazado a una lista llamada numeros -&gt; <strong>list=&#8221;numeros&#8221;</strong>.</p>
<p>Esta lista de esta lista obtendremos los valores pre definidos, en este caso 20,40,80,160 , que tal como se muestra en la imagen, son las divisiones que estan en la parte inferior del elemento <strong>range</strong>.</p>
<p>En  cuanto a la declaracion de la lista se usa la etiqueta <strong>&lt;datalist&gt;</strong> y su correspondiente etiqueta de cierre <strong>&lt;/datalist&gt;</strong>, para crear el enlace entre el input y el <strong>datalist</strong> : el valor que hay en el parametro list del <strong>input</strong> debe ser el mismo valor en el id del <strong>datalist</strong>.</p>
<div style="font-size: 20px; color: blue; font-weight: bold;">input[type=text]</div>
<p>Ahora que hemos visto el funcionamiento del <strong>datalist</strong> en el elemento <strong>range</strong>, vamos a ver como funciona el <strong>datalist</strong> con elemento tipo texto, para ello usaremos la misma sintaxis que en el elemento range, solo omitiremos los datos de <strong>value,min </strong>y<strong> max</strong>, para este ejemplo usaremos :</p>
<pre style="background: #ccc; color: maroon;">&lt;input type="text" list="nombres"&gt;
&lt;datalist id="nombres"&gt;
    &lt;option value="abel"&gt;&lt;/option&gt;
    &lt;option value="abigail"&gt;&lt;/option&gt;
    &lt;option value="adrian"&gt;&lt;/option&gt;
    &lt;option value="airan"&gt;&lt;/option&gt;
    &lt;option value="alberto"&gt;&lt;/option&gt;
    &lt;option value="claudio"&gt;&lt;/option&gt;
    &lt;option value="clemente"&gt;&lt;/option&gt;
    &lt;option value="samuel"&gt;&lt;/option&gt;
    &lt;option value="sergio"&gt;&lt;/option&gt;
&lt;/datalist&gt;</pre>
<p>Y como resultado :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/input-text.png"><img class="aligncenter size-large wp-image-1824" title="input-text" src="http://pharalax.com/blog/wp-content/uploads/2012/09/input-text-1024x247.png" alt="" width="620" height="149" /></a></p>
<p>Apesar de que se puede escribir cualquier valor, hemos obtenido un eficiente sistema de sugerencias a puro HTML. Observar que en este caso usamos el parametro value=&#8221;valor&#8221; para especificar el valor que tendra la opcion del datalist, pero es irrelevante se puede hacer de esta forma o de la forma anterior, dara el mismo resultado.</p>
<p>Hasta la Proxima !!</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/html5-empleando-datalist-en-inputs-de-formularios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Python] Saber si un numero es primo</title>
		<link>http://pharalax.com/blog/python-saber-si-un-numero-es-primo/</link>
		<comments>http://pharalax.com/blog/python-saber-si-un-numero-es-primo/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 03:09:31 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[numeros primos]]></category>
		<category><![CDATA[obtener primos python]]></category>
		<category><![CDATA[python primos]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1803</guid>
		<description><![CDATA[En este articulo vamos a describir como resolver un problema que se nos suele presentar para desarrollar ciertas aplicaciones con python,pero el algoritmo se puede extrapolar a cualquier lenguaje, y es saber si un numero es primo, el articulo esta dividido en : El Problema La Solucion La Correccion Los numeros primos son numeros que [...]]]></description>
				<content:encoded><![CDATA[<p>En este articulo vamos a describir como resolver un problema que se nos suele presentar para desarrollar ciertas aplicaciones con <strong>python</strong>,pero el algoritmo se puede extrapolar a cualquier lenguaje, y es saber si un numero es primo, el articulo esta dividido en :</p>
<ul>
<li>El Problema</li>
<li>La Solucion</li>
<li>La Correccion</li>
</ul>
<p>Los numeros primos son numeros que solo son divisibles entre 1 y entre ellos mismos, sabiendo esto podemos llegar a varias conclusiones y llegar a una solucion que nos resolvera nuestro problema.<span id="more-1803"></span></p>
<p><strong>El Problema</strong></p>
<p>Saber si un numero es primo</p>
<p><strong>La Solucion</strong></p>
<p>Ser divisible entre un numero significa que al aplicar division entre ese numero el resto de la division debera ser 0 (cero). Para resolver este dilema haremos una serie de divisiones entre el numero en cuestion y todos los numeros antes de el incluyendolo a el mismo.</p>
<p>Entonces si para saber si el numero es primo solo deberemos poner un contador y se <strong>contador</strong> solo aumentara en caso de que la division entre cualquier numero de 0(cero), haciendo eso solo nos interesara que el resultado del contador sea 2. La division entre 1 y la division entre el mismo numero. siendo asi, el numero es primo, de lo contrario no lo es.</p>
<p>El codigo en python seria :</p>
<pre style="color: lime; background: black;">numero_leido = raw_input("inserta un numero &gt;&gt; ")
numero = int(numero_leido)
contador = 0
for i in range(1,numero+1):
    if (numero% i)==0:
        contador = contador + 1

if contador==2:
    print "el numero es primo"
else print "el numero no es primo"</pre>
<p>Hasta ahora se ha hecho todo un recorrido por todos los numeros desde 1 hasta el numero en cuestion, y se han hecho divisiones simultaneas hasta dar con el resultado.</p>
<p><strong>La Correccion</strong></p>
<p>Para corregir y hacer mas eficiente el algoritmo pues simplemente, si el numero es divisible tres 3 o mas veces el ciclo debe romperse y dar por hecho que el numero no es primo para verificar que hemos roto el ciclo declararemos una variable tipo Booleana la cual nos dira si es false, el numero es primo, y si es true el numero no es primo.</p>
<pre style="color: lime; background: black;">numero_leido = raw_input("inserta un numero &gt;&gt; ")
numero = int(numero_leido)
contador = 0
verificar= False
for i in range(1,numero+1):
    if (numero% i)==0:
       contador = contador + 1
    if contador &gt;= 3:
        verificar=True
        break

if contador==2 or verificar==False:
    print "el numero es primo"
else: print "el numero no es primo"</pre>
<p>Y siendo asi ya no haremos el recorrido de todos los numeros, solo bastara que el numero tenga tres divisores para concluir que no es primo.</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/python-saber-si-un-numero-es-primo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[MongoDB] MongoDB Primer Acercamiento, Instalacion y Comandos Basicos</title>
		<link>http://pharalax.com/blog/mongodb-mongodb-primer-acercamiento-instalacion-y-comandos-basicos/</link>
		<comments>http://pharalax.com/blog/mongodb-mongodb-primer-acercamiento-instalacion-y-comandos-basicos/#comments</comments>
		<pubDate>Thu, 06 Sep 2012 06:16:56 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[DBMS]]></category>
		<category><![CDATA[mongobd comandos]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[mongodb buscar]]></category>
		<category><![CDATA[mongodb eliminar]]></category>
		<category><![CDATA[mongodb find]]></category>
		<category><![CDATA[mongodb insertar]]></category>
		<category><![CDATA[mongodb instalacion]]></category>
		<category><![CDATA[mongodb remove]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1771</guid>
		<description><![CDATA[En un post anterior hablamos sobre las caracteristicas de MongoDB, esta vez nos toca instalarlo y empezar a &#8220;jugar&#8221; con el.  Antes que nada nos vamos a ir a la Pagina de Descargas de MongoDB, y nos descargaremos una version para empezar, para este post usare la version 2.2.0 que pesa mas o menos 55megas. MongoDB [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/08/logo-mongodb-onwhite.png"><img class="aligncenter size-medium wp-image-1695" title="logo-mongodb-onwhite" src="http://pharalax.com/blog/wp-content/uploads/2012/08/logo-mongodb-onwhite-300x100.png" alt="" width="300" height="100" /></a></p>
<p>En un<a href="http://pharalax.com/blog/mongodb-introduccion-a-mongodb-bases-de-datos-nosql"> post anterior hablamos sobre las caracteristicas de MongoDB</a>, esta vez nos toca instalarlo y empezar a &#8220;jugar&#8221; con el.  Antes que nada nos vamos a ir a la <a href="http://www.mongodb.org/downloads">Pagina de Descargas de MongoDB</a>, y nos descargaremos una version para empezar, para este post usare la <a href="http://downloads.mongodb.org/win32/mongodb-win32-i386-2.2.0.zip">version 2.2.0</a> que pesa mas o menos 55megas.</p>
<p>MongoDB es un sistema Gestor de Base de datos muy especial, y guarda los datos de una manera igualmente muy especial, por lo que ha ganado mucha aceptacion como un gestor de bd muy rapido y muy simple, aunque poderoso.<span id="more-1771"></span></p>
<p>MongoDB no requiere instalacion alguna, por lo que una vez descargado el archivo de MongoDB solo debemos seguir unos pasos y despues estaremos frente a la Terminal escribiendo comandos a MongoDB.</p>
<p>Una vez que tenemos descargado el mongoDB, procederemos a descomprimirlo y de haber descargado la version 2.2.0 que estamos usando aqui al descomprimir tendras una carpeta llamada <strong>mongodb-win32-i386-2.2.0</strong> que contendra estos archivos :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-archivos.png"><img class="aligncenter size-medium wp-image-1772" title="mongo-archivos" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-archivos-300x182.png" alt="" width="300" height="182" /></a></p>
<p>La carpeta que nos interesa es la bin, por lo que entramos en ella y nos encotramos con lo siguiente :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-archivos-bin.png"><img class="aligncenter size-medium wp-image-1773" title="mongo-archivos-bin" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-archivos-bin-300x182.png" alt="" width="300" height="182" /></a></p>
<p>Veremos un monton(en realidad son 13) de archivos .exe que son los que le dan vida al MongoDB.</p>
<p>Vamos a poner la carpeta de mongoDB en un lugar mas &#8220;accesible&#8221;, la pegaremos en la unidad C:\, nos vamos a la unidad C:\ , creamos una carpeta donde pondremos los archivos de MongoDB , a la carpeta le llamaremos mongodb y dentro pegaremos todos los archivos que veiamos en la imagen anterior.  Ahora tendremos algo asi :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-archivos-bin-c.png"><img class="aligncenter size-medium wp-image-1774" title="mongo-archivos-bin-c" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-archivos-bin-c-300x182.png" alt="" width="300" height="182" /></a></p>
<p>Podremos ver el texto remarcado en rojo la direccion en donde pusimos los archivos, hecho esto &#8230; manos a la obra &#8230; esa es la unica configuracion de instalacion de MongoDB, ahora procederemos a iniciar la Base de datos.</p>
<div style="color: blue; font-size: 20px; font-weight: bold;">Iniciando el Servicio mongod</div>
<p>Empezamos partiendo de que tenemos los archivos de MongoDB en C:\mongodb, como vimos en el   punto anterior &#8230; Ahora abrimos una Terminal , [Tecla Inicio] + R = Ejecutar , cmd.exe [ENTER].Esta sera la Terminal 1 :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-cmd.png"><img class="aligncenter size-medium wp-image-1775" title="mongo-cmd" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-cmd-300x153.png" alt="" width="300" height="153" /></a></p>
<p>Al dar enter en Aceptar tendremos nuestra Terminal :</p>
<p style="text-align: center;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/cmd1.png"><img class="aligncenter size-full wp-image-1777" title="cmd" src="http://pharalax.com/blog/wp-content/uploads/2012/09/cmd1.png" alt="" width="677" height="342" /></a></p>
<p style="text-align: left;">Si es la primera vez que vemos una terminal se nos puede parecer raro, pero con la practica uno se acostumbra. Dentro de ella escribiremos un par de comandos :</p>
<pre style="color: skyblue; background: white;">cd c:\mongodb</pre>
<p style="text-align: left;">Asi nos moveremos al directorio donde estan los ejecutables de mongoDB. una vez esto listo escribimos otro comando :</p>
<pre style="color: skyblue; background: white;">dir</pre>
<p style="text-align: left;">Con esto veremos los archivos que hay en la carpeta c:\mongodb.</p>
<p style="text-align: left;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/cmd-dir.png"><img class="aligncenter size-full wp-image-1778" title="cmd-dir" src="http://pharalax.com/blog/wp-content/uploads/2012/09/cmd-dir.png" alt="" width="677" height="354" /></a></p>
<p style="text-align: left;">Para este punto nos interesan 2 archivos de los 13 ejecutable, mongod.exe y mongo.exe, mongod.exe es el Daemon(Demonio) que corre el servicio de base de datos MongoDB y lo vamos a iniciar Ahora.</p>
<p style="text-align: left;">Si en la terminal solo escribimos mongod nos marcara error, esto es porque mongod necesita una carpeta para guardar sus datos, y esta debe ser agregada manualmente por lo tanto deberemos crear una carpeta casi siempre llamada data, aunque puede ser lo que sea.</p>
<p style="text-align: left;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/cmd-mongo-error.png"><img class="aligncenter size-full wp-image-1779" title="cmd-mongo-error" src="http://pharalax.com/blog/wp-content/uploads/2012/09/cmd-mongo-error.png" alt="" width="677" height="534" /></a></p>
<p style="text-align: left;">Si observamos con cuidado podremos ver la parte donde dice error, que la carpeta data no ha sido creada, pues la creamos y luego volvemos a ejecutar el mongod &#8230;</p>
<pre style="color: skyblue; background: white;">mkdir data</pre>
<p style="text-align: left;">Una vez creada la carpeta procedemos a ejecuar otra vez el mongod pero esta vez  los haremos asi :</p>
<pre style="color: skyblue; background: white;">mongod --dbpath data</pre>
<p style="text-align: left;">Con esto le indicamos a mongod que usaremos la carpeta data como almacenamiento&#8230; al ejecutar sto veremos algo parecido a esto :</p>
<p style="text-align: left;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-success.png"><img class="aligncenter size-full wp-image-1780" title="mongo-success" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-success.png" alt="" width="677" height="438" /></a></p>
<p style="text-align: left;">Ver algo asi, es simbolo de que todo nos ha salido bien hasta ahora <img src='http://pharalax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , entre las partes que estan remarcadas en rojo notamos que :</p>
<p style="text-align: left;">Hay un servidor de base de datos escuchando conexiones en el puerto 27017.</p>
<p style="text-align: left;">Hay una consola web en el puerto 28017 a la que podemos acceder mediante http://localhost:28017 . y veremos algo asi :</p>
<p style="text-align: left;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-web.png"><img class="aligncenter size-large wp-image-1781" title="mongo-web" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo-web-1024x617.png" alt="" width="620" height="373" /></a></p>
<p style="text-align: left;">Ahora no tacaremos eso, ahora veremos los comandos basicos de MongoDB.</p>
<p style="text-align: left;">Si hasta ahora todo nos ha salido bien estiempo de continuar, sino hay que verificar pasos y si no, hay tiempo para comentar errorcitos o detallitos.</p>
<div style="color: blue; font-size: 20px; font-weight: bold;">Iniciando Con Los Comandos de Mongo</div>
<p style="text-align: left;">Dejamos la terminal 1 Abrierta e iniciamos otra terminal, y nos pocisionamos en C:\mongodb, solo que ahora ejecutaremos el comando mongo. Y veremos algo asi :</p>
<p style="text-align: left;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo01.png"><img class="aligncenter size-full wp-image-1782" title="mongo01" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo01.png" alt="" width="677" height="342" /></a></p>
<div style="color: blue; font-size: 20px; font-weight: bold;">Mostrando las Base de Datos</div>
<p style="text-align: left;">Para ver las bases de datos en mongoDB el comando es :</p>
<pre style="color: skyblue; background: white;">show dbs</pre>
<p style="text-align: left;">Pero como en este caso el mongo esta recien instaladito no habra nada &#8230;</p>
<div style="color: blue; font-size: 20px; font-weight: bold;">Insertando Datos en MongoDB</div>
<p style="text-align: left;">En mongoDB la creacion de tablas y bases de datos no son muy estrictas, dado que mongoDB es un Gestor basado en Documentos, por lo tanto, bastara insertar un elemento en un documento(aun que no exista) para que este sea creado.</p>
<p style="text-align: left;">Vamos que lo unico muy necesario es declara db.eldocumento.insertar(json), eldocumento que se va a usar es algo parecido a las tablas en Mysql, entonces un documento valido en MongoDB seria :</p>
<pre style="color: skyblue; background: white;">db.peliculas</pre>
<p style="text-align: left;">El formato del documento, a diferencia de los sistemas SQL que se define el modelo de la tabla, las columnas, los tipos de datos ,etc, en MongoDB esto no se hace, simplemente se inserta el dato o conjunto de datos que se quieren guardar en la db, siempre y cuando se respete el formato de datos JSON que utiliza MongoDB.Ejemplo :</p>
<p style="text-align: left;">{nombre : &#8216;Samuel&#8217; , apellidopat : &#8216;Urrutia&#8217;, edad : 20, ciudad : &#8216;cunduacan&#8217; }</p>
<p style="text-align: left;">y si quisieramos insertar este dato en un documento llamado personas en mongo escribimos :</p>
<pre style="color: skyblue; background: white;">db.personas.insert({nombre : 'Samuel' , apellidopat : 'Urrutia', edad : 20, ciudad : 'cunduacan' })</pre>
<p style="text-align: left;">y podemos ver esto :</p>
<p style="text-align: left;"><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo02.png"><img class="aligncenter size-full wp-image-1783" title="mongo02" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo02.png" alt="" width="677" height="342" /></a></p>
<p style="text-align: left;">Al dar ENTER sobre el comando con sus respectivos datos no tuvimos errores, por lo que se ve limpio todo : Ahora agreguemos mas datos :</p>
<pre style="color: maroon;">db.personas.insert({nombre : 'Samuel' , apellidopat : 'Urrutia', edad : 20, ciudad : 'cunduacan' })
db.personas.insert({nombre : 'Alejandro' , apellidopat : 'Perez', edad : 15, ciudad : 'cardenas' })
db.personas.insert({nombre : 'Susana' , apellidopat : 'Alvarez', edad : 25, ciudad : 'villahermosa' })
db.personas.insert({nombre : 'Cristobal' , apellidopat : 'Jimenez', edad : 22, ciudad : 'cardenas' })
db.personas.insert({nombre : 'Juan' , apellidopat : 'Alavez', edad : 15, ciudad : 'cunduacan' })
db.personas.insert({nombre : 'Jose' , apellidopat : 'Palma', edad : 16, ciudad : 'comalcalco' })
db.personas.insert({nombre : 'Angel' , apellidopat : 'Alvarez', edad : 10, ciudad : 'comalcalco' })
db.personas.insert({nombre : 'Teresa' , apellidopat : 'Pulido', edad : 26, ciudad : 'comalcalco' })
db.personas.insert({nombre : 'Ana' , apellidopat : 'Ledezma', edad : 28, ciudad : 'cardenas' })
db.personas.insert({nombre : 'Rafael' , apellidopat : 'Perez', edad : 25, ciudad : 'cunduacan' })</pre>
<p style="text-align: left;">Nota : Nombres y datos ficticios</p>
<p>Podemos tomar todos lo datos y pegarlos en la Terminal 2, y se agregaran al documento personas :<a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo03.png"><img class="aligncenter size-full wp-image-1788" title="mongo03" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo03.png" alt="" width="677" height="426" /></a></p>
<div style="color: blue; font-size: 20px; font-weight: bold;">Viendo Los Resultados</div>
<p>Para ver los resultado usaremos db.eldocument.find() y si guiendo con nuestro ejemplo, una vez agregadas las personas al documento personas veremos todos los resultados con el comando : db.personas.find() , resultado :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo04.png"><img class="aligncenter size-full wp-image-1789" title="mongo04" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo04.png" alt="" width="677" height="402" /></a></p>
<p>En la imagen podemos ver todas las personas que agregamos, pero como no siempre los queremos ver todos, por ejemplo, para ver las personas que son de cardenas :</p>
<pre style="color: skyblue; background: white;">db.personas.find({ciudad : 'cardenas'})</pre>
<p>Resultado :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo05.png"><img class="aligncenter size-full wp-image-1791" title="mongo05" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo05.png" alt="" width="677" height="234" /></a></p>
<p>Si queremos ver loas que se Apellidan Alvarez :</p>
<pre style="color: skyblue; background: white;">db.personas.find({apellidopat : 'alvarez'})</pre>
<p>Resultado :</p>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo06.png"><img class="aligncenter size-full wp-image-1792" title="mongo06" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo06.png" alt="" width="677" height="234" /></a></p>
<p>Con el uso y la practica de MongoDB iremos aprendiendo consultas cadavez mas complejas, para este inicio basico con esto sera suficiente.</p>
<div style="color: blue; font-size: 20px; font-weight: bold;">Eliminando Elementos</div>
<p>Para eliminar elementos usamos remove() y funciona de la misma forma que find(), solo que remove() borrar los resultados que nos de la consulta. Borrar a las personas que sean de cardenas :</p>
<pre style="color: skyblue; background: white;">db.personas.remove({ciudad : 'cardenas'})</pre>
<p><a href="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo07.png"><img class="aligncenter size-full wp-image-1793" title="mongo07" src="http://pharalax.com/blog/wp-content/uploads/2012/09/mongo07.png" alt="" width="677" height="234" /></a></p>
<p>Eliminar a los que se apelliden Alvarez :</p>
<pre style="color: skyblue; background: white;">db.personas.remove({apellidopat : 'Alvarez'})</pre>
<p>y Para Borrar Todo :</p>
<pre style="color: skyblue; background: white;">db.personas.remove({})</pre>
<div style="color: blue; font-size: 20px; font-weight: bold;">Finalizando</div>
<p>Esta ha sido la primera session con el Gestor MongoDB, en el futuro cercano tendremos mas material para trabajar y divertirnos mas&#8230; saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/mongodb-mongodb-primer-acercamiento-instalacion-y-comandos-basicos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[.NET] Trabajando con Archivos en C#</title>
		<link>http://pharalax.com/blog/net-trabajando-con-archivos-en-c/</link>
		<comments>http://pharalax.com/blog/net-trabajando-con-archivos-en-c/#comments</comments>
		<pubDate>Thu, 06 Sep 2012 03:44:02 +0000</pubDate>
		<dc:creator>agustin</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[aprender archivos]]></category>
		<category><![CDATA[archivos c#]]></category>
		<category><![CDATA[escribir archivos]]></category>
		<category><![CDATA[file appendtext]]></category>
		<category><![CDATA[file exists]]></category>
		<category><![CDATA[leer archivos]]></category>
		<category><![CDATA[tutorial archivos]]></category>

		<guid isPermaLink="false">http://pharalax.com/blog/?p=1752</guid>
		<description><![CDATA[Video &#8211; Aplicacion con Archivos El trabajo con archivos muchas veces suele ser una buena solucion para ciertos problemas de almacenamiento de informacion en las aplicaciones, el lenguaje que tocaremos ahora sera C# .NET, menu del post : Clases : File , StramReader y StreamWriter Verificando Existencia Leyendo Archivos Escribiendo y Sobreescribiendo Archivos Terminando Entrando [...]]]></description>
				<content:encoded><![CDATA[<p><iframe src="https://www.youtube.com/embed/o49P0lzK0yY" frameborder="0" width="560" height="315"></iframe><br />
<a href="https://www.youtube.com/embed/o49P0lzK0yY">Video &#8211; Aplicacion con Archivos</a></p>
<p>El trabajo con archivos muchas veces suele ser una buena solucion para ciertos problemas de almacenamiento de informacion en las aplicaciones, el lenguaje que tocaremos ahora sera C# .NET, menu del post :</p>
<ul>
<li>Clases : File , StramReader y StreamWriter</li>
<li>Verificando Existencia</li>
<li>Leyendo Archivos</li>
<li>Escribiendo y Sobreescribiendo Archivos</li>
<li>Terminando</li>
</ul>
<div style="font-size: 20px; color: blue; font-weight: bold;">Entrando en Contacto</div>
<p>Para poder trabajar con los archivos, la declaracion de la referencia sera :</p>
<p>using System.IO;</p>
<p>Vamos a iniciar con este tema &#8230;<span id="more-1752"></span></p>
<div style="font-size: 20px; color: blue; font-weight: bold;">Clases : File ,StreamReader, StreamWriter</div>
<p>Dentro de la tarea que nos ocupa en este post, hay basicamente 3 clases ligadas al funcionamiento de los archivos, <strong>File, StreamReader, StreamWriter,</strong></p>
<p><strong>File</strong> : Contiene propiedad y metodos que tienen que ver con caracteristicas distintivas de los archivos, para este post usaremo la clase <strong>File</strong> para abrir un archivo para sobreescritura (<strong>Append</strong>) y para verificar la existencia de un archivo.</p>
<p><strong>StreamReader</strong> : Es la clase encargada de la lectura de los archivos.</p>
<p><strong>StreamWriter</strong> : Es la clase encargada de la escritura de los archivos.</p>
<div style="font-size: 20px; color: blue; font-weight: bold;">Verificando la Existencia</div>
<p>Dentro de la clase <strong>File</strong>, tenemos el metodo <strong>Exists(filename)</strong>, que lleva como parametro el nombre o ruta de un archivo, y como operacion revisa si este archivo existe. Para ilustrar un ejemplo usaremos el siguiente trozo de codigo :</p>
<pre style="color: maroon; background: white; border: 1px black solid;">if(File.Exists("archivo.txt")){
// el archivo existe
}
else {
// el archivo no extiste
}</pre>
<p>Dentro del if se verifica la existencia del <strong>archivo.txt</strong>, en caso de que el archivo exista se inicia el bloque que sigue del if, en caso contrario (que no exista el archivo) se ejecuta el bloque de codigo del <strong>else</strong>.</p>
<div style="font-size: 20px; color: blue; font-weight: bold;">Leyendo Archivos</div>
<p>Dicho en la seccion de clases, la clase que usaremos para leer archivos sera <strong>StreamReader</strong> veamos un ejemplo de lectura de archivo :</p>
<pre style="color: maroon; background: white; border: 1px black solid;">StreamReader reader = new StreamReander("archivo.txt"); <strong>//linea 1</strong>
string read = reader.ReadLine(); <strong>// linea 2</strong>
while(read!=null){            <strong>// linea 3</strong>
    Console.WriteLine(read);  <strong>// linea 4</strong>
    read = reader.ReadLine(); <strong>// linea 5</strong>
} <strong>// linea 6</strong>
reader.Close(); // <strong>linea 7</strong></pre>
<p>Este ejemplo de arriba es la clara seccion que lee un archivo llamado archivo.txt, veamos unas secciones importantes.<br />
<strong>Linea 1</strong> : He aqui la creacion de la instancia de la clase <strong>StreamReader</strong>, al hacer new StreamReader(filename) , donde filename es el nombre del archivo que deseamos abrir, en este caso archivo.txt.</p>
<p><strong>Linea 2</strong> : Aqui leemos la primera linea del archivo con reader.ReadLine() y guardamos lo leido en la variable read(string), recordando que reader es la variable de instancia de StreamReader y ReadLine es el metodo (funcion dentro de la clase StreamReader) para leer un linea del archivo.</p>
<p><strong>Linea 3</strong> : Este es el inicio de un ciclo, en el verificamos que la variable read(donde almacenamos los datos leidos del archivo) no sea null, sino es null el ciclo continuara leyendo el archivo, y si es null, es decir no hay datos, el ciclo de lectura terminara.</p>
<p><strong>Linea 4</strong> : Escribimos en Consola el contenido de la variable read, que con tiene lo leido del archivo y se actualiza con cada vuelta del ciclo.</p>
<p><strong>Linea 5</strong> : Aqui se actualiza la variable read y se verifica si el archivo continua o termina.</p>
<p><strong>Linea 6</strong> : Termina la llave del while.</p>
<p><strong>Linea 7</strong> : Cerramos el archivo, poner esta parte es muy importante, por que de lo contrario si queremos usar el archivo en otra ocacion nos puede marcar error.</p>
<p>Una version un poco mas efectiva del algoritmo de leer el archivo seria, agregandole un condicional inicial donde se verifique que el archivo en cuestion exista.</p>
<pre style="color: maroon; background: white; border: 1px black solid;">if(File.Exists("archivo.txt")){
    StreamReader reader = new StreamReander("archivo.txt");
    string read = reader.ReadLine();
    while(read!=null){
        Console.WriteLine(read);
        read = reader.ReadLine();
    }
    reader.Close();
}</pre>
<div style="font-size: 20px; color: blue; font-weight: bold;">Escribiendo y Sobreescribiendo Archivos</div>
<p><strong>*** Escribiendo ***</strong></p>
<p><strong></strong><br />
La parte de escritura de archvos se logra con la clase <strong>StreamWriter</strong>, la parte de escritura de un archivo borra la informacion anterior que habi en el archivo en caso de que el archivo exista y si el archivo no existe, sera creado. Veamos El codigo.</p>
<pre style="color: maroon; background: white; border: 1px black solid;">StreamWriter writer = new StreamWriter("archivo.txt"); // Linea 1
writer.WriteLine("Programando desde Pharalax.con"); // Linea2
writer.Write("Programando un Lector y escritor de Archivos\n"); // Linea 3
writer.Close(); // Linea 4</pre>
<p><strong>Linea 1</strong> : Declaracion de <strong>StreamWriter</strong>, el archivo sobre el que escribiremos sera archivo.txt, en este caso, writer es la variable que obtiene el identificador de ficheros a escribir y los metodos necesarios para escribir un archivo.</p>
<p><strong>Linea 2</strong> : En esta linea usamos el metodo <strong>WriteLine(datos)</strong> para agregar informacion al archivo, la informacion va en datos y debe ser string(texto), <strong>WriteLine</strong> escribe los datos en una linea de texto, y finaliza tal linea con el fin de que se continue escribiendo en la linea siguiente del archivo.</p>
<p><strong>Linea 3</strong> :<strong> Write</strong> hace la misma funcion que <strong>WriteLine</strong>, a diferencia de que <strong>Write</strong> no escribe un fin de linea especifico.</p>
<p><strong>Linea 4</strong> : La linea de cierre de archivo, aqui terminamos la tarea de escritura.</p>
<p><strong>*** Sobreescribiendo ***</strong></p>
<p>Como vimos anteriormente el simple uso de StreamWriter, una vez que cerramos el archivo y lo volvemos a abrir para escritura, este se iniciara a escribir de nuevo, el proceso de sobreescritura significa seguir escribiendo debajo de los datos previamente guardados.</p>
<pre style="color: maroon; background: white; border: 1px black solid;">StreamWriter writer = File.AppendText("archivo.txt"); // Linea 1
writer.WriteLine("Programando desde Pharalax.con"); // Linea2
writer.Write("Programando un Lector y escritor de Archivos\n"); // Linea 3
writer.Close(); // Linea 4</pre>
<p>En diferencia al codigo de escritura, aqui solo hay una diferencia, que no usamos la creacion de instancia para la clase StreamReader sino que usamos la clase File. File.AppendText(filename), en filename va el nombre del archivo al cual queremos sobreescribir&#8230;</p>
<p><strong>Terminando</strong></p>
<p>El almacenamiento en archivos aun es algo habitual y nos brinda muchas posibilidades, como la velocidad de lectura y escritura&#8230; y considero algo basico que v como programadores usemos este tipo de herramientas.</p>
]]></content:encoded>
			<wfw:commentRss>http://pharalax.com/blog/net-trabajando-con-archivos-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
