<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IPCorp Blog &#187; Python</title>
	<atom:link href="http://www.ipcorp.com.ar/blog/category/temas/lenguajes-de-programacion/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ipcorp.com.ar/blog</link>
	<description>#pg_dump ideas &#62; blog.log</description>
	<lastBuildDate>Fri, 11 Nov 2011 20:18:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mi pequeño paso por python: RSS, HTML, Jquery</title>
		<link>http://www.ipcorp.com.ar/blog/2011/11/11/mi-pequeno-paso-por-python-rss-html-jquery/</link>
		<comments>http://www.ipcorp.com.ar/blog/2011/11/11/mi-pequeno-paso-por-python-rss-html-jquery/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 20:18:24 +0000</pubDate>
		<dc:creator>Carlos Mathiasen</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ipcorp.com.ar/blog/?p=1129</guid>
		<description><![CDATA[Hace no menos de un mes termin&#233; un proyecto que consist&#237;a en mostrar noticias de diarios argentinos de manera offline. Para ser implementado en muy poco espacio de disco, por lo que utilizar algun framework ser&#237;a un poco pesado.
El sistema ya se encontraba implementado con mod-python, la idea era seguir trabajando con eso y crear [...]]]></description>
			<content:encoded><![CDATA[<p>Hace no menos de un mes termin&eacute; un proyecto que consist&iacute;a en mostrar noticias de diarios argentinos de manera offline. Para ser implementado en muy poco espacio de disco, por lo que utilizar algun framework ser&iacute;a un poco pesado.<br />
El sistema ya se encontraba implementado con mod-python, la idea era seguir trabajando con eso y crear los scripts correspondientes en python.<br />
Desde un principio la idea era que un script traiga los feeds de noticias cada cierto tiempo (utilizando tareas cron) y generar un html el cual se pod&iacute;a ver de forma offline.<br />
Para ello en python existe una librer&iacute;a llamada feedparser, que nos trae en forma de diccionario todo lo que el servicio nos da.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> feedparser
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span> <span style="color: #808080; font-style: italic;">#lo utilizamos mas adelante</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span> <span style="color: #808080; font-style: italic;">#lo utilizamos mas adelante</span>
parse = feedparser.<span style="color: black;">parse</span><span style="color: black;">&#40;</span>url_de_rss<span style="color: black;">&#41;</span></pre></div></div>

<p>Si tenemos conexi&oacute;n a internet, esas l&iacute;neas nos deber&iacute;an bajar el feed completo que nos ofrece la p&aacute;gina con la que queremos trabajar. Solo queda sacar lo que nos importa, en este caso el t&iacute;tulo, la noticia y las fotos si las hubiera. Como trabajamos offline no tendr&iacute;n que haber links de ningun tipo</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">noticias = <span style="color: #483d8b;">'&lt;ol&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span>
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">10</span><span style="color: black;">&#41;</span>:
    titulo = parse.<span style="color: black;">entries</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.<span style="color: black;">title</span>
    resumen =  <span style="color: #dc143c;">re</span>.<span style="color: black;">sub</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'((&lt;a){1}(.)+(&lt;/a&gt;)?)|((&lt;img){1}(.)+(/img&gt;)?)|((&lt;table){1}(.)+(&lt;/table&gt;)?)'</span>, <span style="color: #483d8b;">''</span>,parse.<span style="color: black;">entries</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.<span style="color: black;">summary_detail</span>.<span style="color: black;">value</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">try</span>:
        img_url = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>parse.<span style="color: black;">entries</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.<span style="color: black;">enclosures</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: black;">href</span><span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        f = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;images/imagen_%s.jpg&quot;</span><span style="color: #66cc66;">%</span>i,<span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span>
        f.<span style="color: black;">write</span><span style="color: black;">&#40;</span>img_url<span style="color: black;">&#41;</span>
        imagen = <span style="color: #483d8b;">'&lt;img src=&quot;images/imagen_%s.jpg&quot; alt=&quot;&quot;/&gt;'</span><span style="color: #66cc66;">%</span>i
    <span style="color: #ff7700;font-weight:bold;">except</span>:
        imagen = <span style="color: #483d8b;">''</span>
    noticias += <span style="color: #483d8b;">'&lt;li&gt;%s&lt;br/&gt;%s&lt;br/&gt;%s&lt;/li&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span>titulo,resumen,imagen<span style="color: black;">&#41;</span>
&nbsp;
noticias += <span style="color: #483d8b;">'&lt;/ol&gt;'</span>
archivo_noticias = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;templates/_noticias.html&quot;</span>,<span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span>
archivo_noticias.<span style="color: black;">write</span><span style="color: black;">&#40;</span>noticias<span style="color: black;">&#41;</span></pre></div></div>

<p>En la l&iacute;nea 1 simplemente inicializamos la variable que luego pondremos en el html correspondiente, vamos a utilizar una lista ordenada.<br />
En la l&iacute;nea 2 empezamos nuestro bucle diciendo que s&oacute;lo vamos a querer 10 noticias. Con un simple for podemos hacerlo, debido a que vamos a trabajar con la clave entries del diccionario, esta clave contiene un array, donde cada elemento es otro diccionario con sus propias claves. Las que vamos a utilizar en esta ocasi&oacute;n son:<br />
<b>title:</b> Trae el t&iacute;tulo de la noticia.<br />
<b>summary_detail:</b> Es donde est&aacute; el res&uacute;men de la noticia, este tiene como valor otro diccionario, de donde utilizaremos la clave value, donde est&aacute; el res&uacute;men propiamente dicho.<br />
<b>enclosures:</b> es donde se guardan los adjuntos de la noticia, en este caso nos interesan las im&aacute;genes, pero como trabajamos offlines tenemos que descargarlas para ello utilizamos urllib2 asi la guardamos en nuestro sistema de archivos. A modo de ejemplo puse que la imagen tenga como nombre el indice de la noticia. Si s&oacute;lo trabajamos con un diario no ser&iacute;a inconveniente, para m&aacute;s de un diario puede haber problemas porque los archivos se sobreescribir&iacute;an y no se mostrariacutean las correctas. Esta parte pongo dentro de un try, porque no siempre traen im&aacute;genes y el parse nos tira una excepci&oacute;n, en caso de que pase cargamos la variable con nada, sino creamos el tag html de imágenes.<br />
En la l&iacute;nea 3 creamos una variable donde se guarda el t&iacute;tulo de nuestra noticia<br />
En la l&iacute;nea 4  guardamos el res&uacute;men en una variable, puede parecer un poco complejo el c&oacute;digo, pero es bastante f&aacute;cil. Utilizamos la librer&iacute;a re para poder trabajar con expreciones regulares y con el m&eacute;todo sub eliminamos del string las cosas que no queremos. A mi no me interesaba ning&uacute;n<br />
link:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;"> ((&lt;a){1}(.)+(&lt;/a&gt;)?)</pre></div></div>

<p>im&aacute;gen:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">((&lt;img){1}(.)+(/img&gt;)?)</pre></div></div>

<p>tabla:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">((&lt;table){1}(.)+(&lt;/table&gt;)?</pre></div></div>

<p>que haya en el res&uacute;men, entonces cuando encuentre algo de eso que simplemente lo reemplace por nada.<br />
Finalmente cerramos nuestra lista fuera del for y tendr&iacute;amos un resultado parecido a este:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>ol<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo1<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen1<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;images/imagen_1.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo2<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen2<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;images/imagen_2.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo3<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen3<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;images/imagen_3.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo4<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen4<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;images/imagen_4.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo5<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen5<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;images/imagen_5.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo6<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen6<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;images/imagen_6.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo7<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen7<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo8<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen8<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;images/imagen_8.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo9<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen9<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>li<span style="color: #339933;">&gt;</span>Titulo10<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;</span>Resumen10<span style="color: #339933;">&lt;</span>br<span style="color: #339933;">/&gt;&lt;/</span>li<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>ol<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Para poder guardarlo en el archivo _noticias.html<br />
Ya tenemos toda una lista de noticias lista para ser le&iacute;da offline, s&oacute;lo queda cargarlo en nuestro index y problema resulto, para eso podemos hacer uso de jquery (se puede hacer directamente con javascript, pero una p&aacute;gina web tiene bastante c&oacute;digo javascript hoy en d&iacute;a y jquery es un framework muy copadito<br />
para escribir poco <img src='http://www.ipcorp.com.ar/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>En el index.html tendr&iacute;amos:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">&lt;div id=&quot;#noticias&quot;&gt;&lt;/div&gt;
&nbsp;
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#noticias&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'_noticias.html'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Este fue mi pequeño paso por python, la verdad una experiencia muy linda, es un muy buen lenguaje. En realidad si  quer&eacute;s hacer un script de manera muy r&aacute;pida es una buena opci&oacute;n.<br />
Les dejo los links de feedparser y mod-python<br />
 <b>Feedparser: </b><a href="http://code.google.com/p/feedparser/">http://code.google.com/p/feedparser/</a><br />
 <b>Mod-Python: </b> <a href="http://www.modpython.org/">http://www.modpython.org/</a><br />
Bueno espero que les haya gustado y hasta la pr&oacute;xima <img src='http://www.ipcorp.com.ar/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2011/11/11/mi-pequeno-paso-por-python-rss-html-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relational Algebra</title>
		<link>http://www.ipcorp.com.ar/blog/2009/07/16/relational-algebra/</link>
		<comments>http://www.ipcorp.com.ar/blog/2009/07/16/relational-algebra/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 02:03:57 +0000</pubDate>
		<dc:creator>cecilia</dc:creator>
				<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ipcorp.com.ar/blog/?p=44</guid>
		<description><![CDATA[Relational es una herramienta educativa de Álgebra Relacional.
Ofrece una interfaz que permite cargar y almacenar relaciones, ejecutar consultas y ver el resultado de las mismas.
También provee un módulo con álgebra relacional para python, de manera que pueda agregarse esto a otros proyectos de software libre.
Puede descargar y encontrar más información en: http://galileo.dmi.unict.it/wiki/relational/doku.php
]]></description>
			<content:encoded><![CDATA[<p><strong>Relational</strong> es una herramienta educativa de Álgebra Relacional.</p>
<p>Ofrece una interfaz que permite cargar y almacenar relaciones, ejecutar consultas y ver el resultado de las mismas.</p>
<p>También provee un módulo con álgebra relacional para python, de manera que pueda agregarse esto a otros proyectos de software libre.</p>
<p>Puede descargar y encontrar más información en: <a href="http://galileo.dmi.unict.it/wiki/relational/doku.php">http://galileo.dmi.unict.it/wiki/relational/doku.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2009/07/16/relational-algebra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Operadores ternarios en python</title>
		<link>http://www.ipcorp.com.ar/blog/2008/12/11/operadores-ternarios-en-python/</link>
		<comments>http://www.ipcorp.com.ar/blog/2008/12/11/operadores-ternarios-en-python/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 18:34:25 +0000</pubDate>
		<dc:creator>gerardo</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ipcorp.com.ar/blog/?p=11</guid>
		<description><![CDATA[Si alguna vez escribimos algo en c o java seguramente conocemos el famoso operador ternario, si no basicamente es asignar un valor a una variable dependiendo de una condición en una línea, en otros lenguajes sería:
if a = b then    variable = x  else     variable = y end [...]]]></description>
			<content:encoded><![CDATA[<p>Si alguna vez escribimos algo en c o java seguramente conocemos el famoso operador ternario, si no basicamente es asignar un valor a una variable dependiendo de una condición en una línea, en otros lenguajes sería:</p>
<pre><code><code><code>if a = b then </code></code></code>   variable = x <code><code><code> </code></code>e</code>lse <code><code><code> </code></code> </code>  variable = y <code><code><code></code></code></code>end if</pre>
<p>Usando operador ternario en java o c tenemos:</p>
<pre><code><code>variable = (a==b): x ? y</code></code></pre>
<p>Como en python no hay tal expresión podemos usar una técnica bastante interesante:</p>
<pre><code><code>variable = (x , y)[a==b]</code></code></pre>
<p>Usamos una tupla con los valores que asignaremos y la expresión de comparación para obtener el índice para recuperar uno u otro valor según sea verdadero o falso. El primero valor es el falso, el segundo verdadero.</p>
<p>La forma normal de hacerlo sería:</p>
<pre><code>variable = x  if a == b else y</code></pre>
<p>No obstante me pareció curioso.</p>
<p><em>Articulo original: http://bricklay.wordpress.com/2008/02/06/el-operador-ternario-en-python/</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipcorp.com.ar/blog/2008/12/11/operadores-ternarios-en-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

