<?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>KodeGeek &#187; perl</title>
	<atom:link href="http://kodegeek.com/blog/tag/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://kodegeek.com/blog</link>
	<description>Programación, fitness, interés geek</description>
	<lastBuildDate>Sun, 29 Apr 2012 17:29:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Yo adoro Perl, pero&#8230;</title>
		<link>http://kodegeek.com/blog/2008/10/19/yo-adoro-perl-pero/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=yo-adoro-perl-pero</link>
		<comments>http://kodegeek.com/blog/2008/10/19/yo-adoro-perl-pero/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 13:30:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[cgi]]></category>
		<category><![CDATA[obsolete]]></category>
		<category><![CDATA[parrot]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1290</guid>
		<description><![CDATA[Perl nos tiene esperando por una versión nueva desde hace tiempo. Pero de allí a que un blogger en O&#8217;Reilly salga diciendo que Perl + CGI es todavía una alternativa viable para hacer aplicaciones web hay mucho trecho. ¿Donde estás Perl, que no te vemos? Mientras tanto, Java Servlets 3.0 promete cosas interesantes. Buscar en [...]]]></description>
			<content:encoded><![CDATA[<p>Perl <a href="http://kodegeek.com/2005/08/el-futuro-de-perl-es-questionable.shtml">nos tiene esperando por una versión nueva</a> desde hace tiempo. Pero de allí a que un blogger en O&#8217;Reilly salga diciendo que<a href="http://broadcast.oreilly.com/2008/09/a-beginners-introduction-to-pe.html"> Perl + CGI es todavía una alternativa viable</a> para hacer aplicaciones web hay mucho trecho.</p>
<p>¿Donde estás Perl, que no te vemos? Mientras tanto, <a href="http://today.java.net/pub/a/today/2008/10/14/introduction-to-servlet-3.html">Java Servlets 3.0</a> promete cosas interesantes.</p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/perl" rel="tag">perl</a>, <a href="http://www.blogalaxia.com/tags/cgi" rel="tag">cgi</a>, <a href="http://www.blogalaxia.com/tags/obsolete" rel="tag">obsolete</a>, <a href="http://www.blogalaxia.com/tags/parrot" rel="tag">parrot</a><br />Technorati:<a href="http://technorati.com/tag/perl" rel="tag">perl</a>, <a href="http://technorati.com/tag/cgi" rel="tag">cgi</a>, <a href="http://technorati.com/tag/obsolete" rel="tag">obsolete</a>, <a href="http://technorati.com/tag/parrot" rel="tag">parrot</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/perl" rel="tag">perl</a>, <a href="http://www.to2blogs.com/tag/cgi" rel="tag">cgi</a>, <a href="http://www.to2blogs.com/tag/obsolete" rel="tag">obsolete</a>, <a href="http://www.to2blogs.com/tag/parrot" rel="tag">parrot</a><br />Del.icio.us:<a href="http://del.icio.us/tag/perl" rel="tag">perl</a>, <a href="http://del.icio.us/tag/cgi" rel="tag">cgi</a>, <a href="http://del.icio.us/tag/obsolete" rel="tag">obsolete</a>, <a href="http://del.icio.us/tag/parrot" rel="tag">parrot</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/10/19/yo-adoro-perl-pero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sentilla tiene soporte para OSX y Linux Ubuntu</title>
		<link>http://kodegeek.com/blog/2008/06/06/sentilla-tiene-soporte-para-osx-y-linux-ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sentilla-tiene-soporte-para-osx-y-linux-ubuntu</link>
		<comments>http://kodegeek.com/blog/2008/06/06/sentilla-tiene-soporte-para-osx-y-linux-ubuntu/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 09:57:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[sentilla]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1263</guid>
		<description><![CDATA[Ya sacaron el beta. Del foro oficial de Sentilla: NEW! Sentilla Work (Beta) for Mac and Linux Downloads of the Beta release of Sentilla Work for both Mac OS X and Ubuntu Linux are now available for current Perk customers at the following URLs: Sentilla Work (Beta) for Linux Sentilla Work (Beta) for Mac OS [...]]]></description>
			<content:encoded><![CDATA[<p>Ya sacaron el beta. Del foro oficial de <a href="http://sentilla.com/">Sentilla</a>:</p>
<p>
<blockquote>NEW! Sentilla Work (Beta) for Mac and Linux  </p>
<p>Downloads of the Beta release of Sentilla Work for both Mac OS X and Ubuntu Linux are now available for current Perk customers at the following URLs:</p>
<ul>
<li>Sentilla Work (Beta) for Linux</li>
<li>Sentilla Work (Beta) for Mac OS X</li>
</ul>
<p>Go to the URL for your OS of choice and login as</p>
<p>XXXXXX</p>
<p>and use the password</p>
<p>ZZZZZZZZ</p>
<p>After you download the release to your computer and expand the files, refer to the Release Notes included with the builds for installation instructions (page 10) and important notices. You do not need to reinstall mote firmware for this release; your current Perk firmware will work on both the Mac OS X and Linux platforms.</p>
<p>Note that you cannot install firmware with the Mac OS X release.
<div id="sig323" class="signature">Christine at Sentilla</div>
</blockquote>
<div id="sig323" class="signature"></div>
<p>   Los instalaré en algún momento el fin de semana, <a href="http://kodegeek.com/2008/05/como-medir-temperatura-desde-java.shtml">vamos a ver que tal se porta</a>.</p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/sentilla" rel="tag">sentilla</a>, <a href="http://www.blogalaxia.com/tags/perl" rel="tag">perl</a>, <a href="http://www.blogalaxia.com/tags/kodegeek" rel="tag">kodegeek</a>, <a href="http://www.blogalaxia.com/tags/mac+osx" rel="tag">mac osx</a>, <a href="http://www.blogalaxia.com/tags/ubuntu" rel="tag">ubuntu</a><br />Technorati:<a href="http://technorati.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://technorati.com/tag/perl" rel="tag">perl</a>, <a href="http://technorati.com/tag/kodegeek" rel="tag">kodegeek</a>, <a href="http://technorati.com/tag/mac+osx" rel="tag">mac osx</a>, <a href="http://technorati.com/tag/ubuntu" rel="tag">ubuntu</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://www.to2blogs.com/tag/perl" rel="tag">perl</a>, <a href="http://www.to2blogs.com/tag/kodegeek" rel="tag">kodegeek</a>, <a href="http://www.to2blogs.com/tag/mac+osx" rel="tag">mac osx</a>, <a href="http://www.to2blogs.com/tag/ubuntu" rel="tag">ubuntu</a><br />Del.icio.us:<a href="http://del.icio.us/tag/sentilla" rel="tag">sentilla</a>, <a href="http://del.icio.us/tag/perl" rel="tag">perl</a>, <a href="http://del.icio.us/tag/kodegeek" rel="tag">kodegeek</a>, <a href="http://del.icio.us/tag/mac+osx" rel="tag">mac osx</a>, <a href="http://del.icio.us/tag/ubuntu" rel="tag">ubuntu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/06/06/sentilla-tiene-soporte-para-osx-y-linux-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS de Globovision está roto II: Java al rescate</title>
		<link>http://kodegeek.com/blog/2008/03/09/rss-de-globovision-esta-roto-ii-java-al-rescate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss-de-globovision-esta-roto-ii-java-al-rescate</link>
		<comments>http://kodegeek.com/blog/2008/03/09/rss-de-globovision-esta-roto-ii-java-al-rescate/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 02:00:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[HTMLEditorKit]]></category>
		<category><![CDATA[Lunar Pages]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[XML::RSS]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1235</guid>
		<description><![CDATA[Bueno, varias horas después y sin respuesta de Lunar Pages, me decidí a reescribir el programa usando Java. Lo primero que intenté fue tratar de procesar la página de noticias de Globovision.com, pero quienes hicieron el código del sitio Web simplemente no saben de programación HTML, y el daño es demasiado para el ya sensible [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, <a href="http://kodegeek.com/2008/03/rss-de-globovision-est-roto-i.shtml">varias horas después y sin respuesta de Lunar Pages</a>, me decidí a reescribir el programa usando Java. Lo primero que intenté fue tratar de procesar la página de noticias de Globovision.com, pero quienes hicieron el código del sitio Web simplemente no saben de programación <span style="font-style: italic;">HTML</span>, y el daño es demasiado para el ya sensible JTidy:</p>
<pre>line 15 column 1 - Warning: unexpected &lt;/head&gt; in &lt;link&gt;line 20 column 165 - Warning: unexpected &lt;/a&gt; in &lt;img&gt;line 20 column 169 - Warning: unexpected &lt;/td&gt; in &lt;img&gt;line 23 column 97 - Warning: unexpected &lt;/td&gt; in &lt;img&gt;line 24 column 5 - Warning: unexpected &lt;/tr&gt; in &lt;img&gt;line 26 column 93 - Warning: unexpected &lt;/a&gt; in &lt;img&gt;line 26 column 97 - Warning: unexpected &lt;/td&gt; in &lt;img&gt;This document has errors that must be fixed beforeusing HTML Tidy to generate a tidied up version.</pre>
<p>Asi que, ¿como procesar un documento que está así de roto en Java?</p>
<p>Bueno, el sitio de Java tiene mucha documentación y una de las cosas interesantes que muestran es como usar el parser que tiene Swing <a href="http://java.sun.com/products/jfc/tsc/articles/bookmarks/">pero afuera de sus componentes gráficos</a>. Esto resolvió perfectamente como obtener e iterar un documento roto, ahora sólo quedaba resolver el problema de escribir el RSS lo más fácil posible.</p>
<p>Después de buscar un poco me decidí a usar <a href="https://rome.dev.java.net/">la librería Rome</a>. No es pesada, lo único fastidioso es que requiere JDOM. Bueno, antes tuve que pedir que instalarn Expat para Perl, asi que mejor no me quejo <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://elangelnegro.cvs.sourceforge.net/elangelnegro/src/java/main/com/kodegeek/blog/rss/GlobovisionHtml2Rss.java?view=markup">El código</a> como siempre está en Source Forge, en el sitio de KodeGeek. Se los pongo aquí por comodidad:</p>
<pre><a name="line1">  1</a> <span style="color: rgb(0, 0, 255);"><strong>package com.kodegeek.blog.rss;</strong></span><a name="line2">  2</a><a name="line3">  3</a> <span style="color: rgb(0, 0, 255);"><strong>import java.io.BufferedReader;</strong></span><a name="line4">  4</a> <span style="color: rgb(0, 0, 255);"><strong>import java.io.FileWriter;</strong></span><a name="line5">  5</a> <span style="color: rgb(0, 0, 255);"><strong>import java.io.InputStreamReader;</strong></span><a name="line6">  6</a> <span style="color: rgb(0, 0, 255);"><strong>import java.io.Reader;</strong></span><a name="line7">  7</a> <span style="color: rgb(0, 0, 255);"><strong>import java.io.Writer;</strong></span><a name="line8">  8</a> <span style="color: rgb(0, 0, 255);"><strong>import java.net.URL;</strong></span><a name="line9">  9</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.ArrayList;</strong></span><a name="line10"> 10</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.Date;</strong></span><a name="line11"> 11</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.List;</strong></span><a name="line12"> 12</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.logging.Level;</strong></span><a name="line13"> 13</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.logging.Logger;</strong></span><a name="line14"> 14</a><a name="line15"> 15</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.swing.text.AttributeSet;</strong></span><a name="line16"> 16</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.swing.text.MutableAttributeSet;</strong></span><a name="line17"> 17</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.swing.text.html.HTML;</strong></span><a name="line18"> 18</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.swing.text.html.HTML.Tag;</strong></span><a name="line19"> 19</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.swing.text.html.HTMLEditorKit.ParserCallback;</strong></span><a name="line20"> 20</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.swing.text.html.parser.ParserDelegator;</strong></span><a name="line21"> 21</a><a name="line22"> 22</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sun.syndication.feed.synd.SyndEntry;</strong></span><a name="line23"> 23</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sun.syndication.feed.synd.SyndEntryImpl;</strong></span><a name="line24"> 24</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sun.syndication.feed.synd.SyndFeed;</strong></span><a name="line25"> 25</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sun.syndication.feed.synd.SyndFeedImpl;</strong></span><a name="line26"> 26</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sun.syndication.io.SyndFeedOutput;</strong></span><a name="line27"> 27</a><a name="line28"> 28</a><a name="line29"> 29</a> <span style="color: rgb(68, 68, 68);"><i>/**<a name="line30"> 30</a>  * Program that converts the main summary news from Globovision.comto RSS format.<a name="line31"> 31</a>  * @author josevnz at kodeeek.com<a name="line32"> 32</a>  *

License: GPL

<a name="line33"> 33</a>  * I use a combination of Yahoo Pipes and Google Reader to keep meupdated about news of any kind. However, some websites like<a name="line34"> 34</a>  * Globovision.com still don't have a proper RSS feed,so one day Idecided to create my own mashup <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<a name="line35"> 35</a>  * It worked for a while until my Blog hosting providerdecided toremove the XML::RSS Perl module I asked to install for me.Because of that,<a name="line36"> 36</a>  * this Java version was born.<a name="line37"> 37</a>  */</i></span><a name="line38"> 38</a> <strong>public</strong> <strong>final</strong> <strong>class</strong> <span style="color: rgb(32, 64, 160);">GlobovisionHtml2Rss</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line39"> 39</a><a name="line40"> 40</a>  <strong>public</strong> <strong>static</strong> <strong>final</strong> <span style="color: rgb(32, 64, 160);">String</span><span style="color: rgb(32, 64, 160);">GLOBOVISION_URL</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(0, 128, 0);">"http://globovision.com"</span><span style="color: rgb(68, 68, 255);">;</span><a name="line41"> 41</a>  <strong>public</strong> <strong>static</strong> <strong>final</strong> <span style="color: rgb(32, 64, 160);">String</span> <span style="color: rgb(32, 64, 160);">NEWS_URL</span> <span style="color: rgb(68, 68, 255);">=</span><span style="color: rgb(32, 64, 160);">GLOBOVISION_URL</span> <span style="color: rgb(68, 68, 255);">+</span> <span style="color: rgb(0, 128, 0);">"/history.php?cha=1&amp;pag=1"</span><span style="color: rgb(68, 68, 255);">;</span><a name="line42"> 42</a><a name="line43"> 43</a>  <strong>private</strong> <strong>static</strong> <span style="color: rgb(32, 64, 160);">Logger</span> <span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);">;</span><a name="line44"> 44</a>  <strong>private</strong> <strong>static</strong> <strong>final</strong> <strong>long</strong> <span style="color: rgb(32, 64, 160);">DEFAULT_WAIT</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">1000L</span><span style="color: rgb(68, 68, 255);">*</span><span style="color: rgb(255, 0, 0);">60L</span><span style="color: rgb(68, 68, 255);">*</span><span style="color: rgb(255, 0, 0);">5L</span><span style="color: rgb(68, 68, 255);">;</span><a name="line45"> 45</a><a name="line46"> 46</a>  <span style="color: rgb(68, 68, 68);">// Do not alow instances of this class to be created</span><a name="line47"> 47</a>  <strong>private</strong> <span style="color: rgb(32, 64, 160);">GlobovisionHtml2Rss</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line48"> 48</a>   <span style="color: rgb(68, 68, 68);">// Empty</span><a name="line49"> 49</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line50"> 50</a><a name="line51"> 51</a>  <strong>static</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line52"> 52</a><a name="line53"> 53</a>   <span style="color: rgb(32, 64, 160);">log</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">Logger</span>.<span style="color: rgb(32, 64, 160);">getLogger</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">GlobovisionHtml2Rss</span>.<strong>class</strong>.<span style="color: rgb(32, 64, 160);">getName</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line54"> 54</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line55"> 55</a><a name="line56"> 56</a>  <span style="color: rgb(68, 68, 68);"><i>/**<a name="line57"> 57</a>   * @param args<a name="line58"> 58</a>   */</i></span><a name="line59"> 59</a>  <strong>public</strong> <strong>static</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">main</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">String</span><span style="color: rgb(68, 68, 255);"><strong>[</strong></span><span style="color: rgb(68, 68, 255);"><strong>]</strong></span> <span style="color: rgb(32, 64, 160);">args</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <strong>throws</strong> <span style="color: rgb(32, 64, 160);">Exception</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line60"> 60</a><a name="line61"> 61</a>   <strong>try</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line62"> 62</a>    <span style="color: rgb(32, 64, 160);">fetch</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">NEWS_URL</span>, <span style="color: rgb(32, 64, 160);">args</span><span style="color: rgb(68, 68, 255);"><strong>[</strong></span><span style="color: rgb(255, 0, 0);">0</span><span style="color: rgb(68, 68, 255);"><strong>]</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line63"> 63</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>catch</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Exception</span> <span style="color: rgb(32, 64, 160);">exp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line64"> 64</a>    <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">SEVERE</span>, <span style="color: rgb(0, 128, 0);">"Cannot recover from thisexception"</span>, <span style="color: rgb(32, 64, 160);">exp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line65"> 65</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line66"> 66</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line67"> 67</a><a name="line68"> 68</a>  <span style="color: rgb(68, 68, 68);"><i>/**<a name="line69"> 69</a>   * Try to fetch the URL and convert it to a Document<a name="line70"> 70</a>   * @param url<a name="line71"> 71</a>   * @param outfile<a name="line72"> 72</a>   * @return<a name="line73"> 73</a>   * @throws Exception<a name="line74"> 74</a>   */</i></span><a name="line75"> 75</a>  <strong>private</strong> <strong>static</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">fetch</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">String</span> <span style="color: rgb(32, 64, 160);">url</span>, <span style="color: rgb(32, 64, 160);">String</span> <span style="color: rgb(32, 64, 160);">outfile</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <strong>throws</strong> <span style="color: rgb(32, 64, 160);">Exception</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line76"> 76</a>   <span style="color: rgb(32, 64, 160);">Reader</span> <span style="color: rgb(32, 64, 160);">reader</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>null</strong><span style="color: rgb(68, 68, 255);">;</span><a name="line77"> 77</a>   <span style="color: rgb(32, 64, 160);">Writer</span> <span style="color: rgb(32, 64, 160);">writer</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>null</strong><span style="color: rgb(68, 68, 255);">;</span><a name="line78"> 78</a>   <span style="color: rgb(32, 64, 160);">SyndFeed</span> <span style="color: rgb(32, 64, 160);">feed</span><span style="color: rgb(68, 68, 255);">;</span><a name="line79"> 79</a>   <span style="color: rgb(32, 64, 160);">List</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">SyndEntry</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">news</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">ArrayList</span><span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">SyndEntry</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line80"> 80</a>   <strong>try</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line81"> 81</a>    <span style="color: rgb(32, 64, 160);">feed</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">SyndFeedImpl</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line82"> 82</a>    <span style="color: rgb(32, 64, 160);">feed</span>.<span style="color: rgb(32, 64, 160);">setAuthor</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"Jose Nunez, josevnz at kodegeek.com"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line83"> 83</a>    <span style="color: rgb(32, 64, 160);">feed</span>.<span style="color: rgb(32, 64, 160);">setDescription</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"Globovision.com news - Brough toyou by http://KodeGeek.com"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line84"> 84</a>    <span style="color: rgb(32, 64, 160);">feed</span>.<span style="color: rgb(32, 64, 160);">setFeedType</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"rss_1.0"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line85"> 85</a>    <span style="color: rgb(32, 64, 160);">feed</span>.<span style="color: rgb(32, 64, 160);">setLink</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"http://www.kodegeek.com/rss/globovision.rss"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line86"> 86</a>    <span style="color: rgb(32, 64, 160);">feed</span>.<span style="color: rgb(32, 64, 160);">setTitle</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"Globovision.com Venezuelan News"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line87"> 87</a>    <span style="color: rgb(32, 64, 160);">URL</span> <span style="color: rgb(32, 64, 160);">globovisionURL</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">URL</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">url</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line88"> 88</a>    <span style="color: rgb(32, 64, 160);">reader</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">BufferedReader</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>new</strong> <span style="color: rgb(32, 64, 160);">InputStreamReader</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">globovisionURL</span>.<span style="color: rgb(32, 64, 160);">openStream</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line89"> 89</a>    <span style="color: rgb(32, 64, 160);">ParserDelegator</span> <span style="color: rgb(32, 64, 160);">parser</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">ParserDelegator</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line90"> 90</a>    <span style="color: rgb(32, 64, 160);">parser</span>.<span style="color: rgb(32, 64, 160);">parse</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">reader</span>, <strong>new</strong> <span style="color: rgb(32, 64, 160);">GlobovisionHtml2Rss</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<strong>new</strong> <span style="color: rgb(32, 64, 160);">GlobovisionParser</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">news</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>, <strong>false</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line91"> 91</a>    <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">news</span>.<span style="color: rgb(32, 64, 160);">size</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);">></span> <span style="color: rgb(255, 0, 0);">0</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line92"> 92</a>     <span style="color: rgb(32, 64, 160);">feed</span>.<span style="color: rgb(32, 64, 160);">setEntries</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">news</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line93"> 93</a>     <span style="color: rgb(32, 64, 160);">writer</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">FileWriter</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">outfile</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line94"> 94</a>     <span style="color: rgb(32, 64, 160);">SyndFeedOutput</span> <span style="color: rgb(32, 64, 160);">feedOut</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">SyndFeedOutput</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line95"> 95</a>     <span style="color: rgb(32, 64, 160);">feedOut</span>.<span style="color: rgb(32, 64, 160);">output</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">feed</span>, <span style="color: rgb(32, 64, 160);">writer</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line96"> 96</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line97"> 97</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>catch</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Exception</span> <span style="color: rgb(32, 64, 160);">exp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line98"> 98</a>    <strong>throw</strong> <strong>new</strong> <span style="color: rgb(32, 64, 160);">Exception</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"Unexpected problem"</span>, <span style="color: rgb(32, 64, 160);">exp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line99"> 99</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>finally</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line100">100</a><a name="line101">101</a>    <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">reader</span> <span style="color: rgb(68, 68, 255);">!</span><span style="color: rgb(68, 68, 255);">=</span> <strong>null</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line102">102</a>     <span style="color: rgb(32, 64, 160);">reader</span>.<span style="color: rgb(32, 64, 160);">close</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line103">103</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line104">104</a><a name="line105">105</a>    <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">writer</span> <span style="color: rgb(68, 68, 255);">!</span><span style="color: rgb(68, 68, 255);">=</span> <strong>null</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line106">106</a>     <span style="color: rgb(32, 64, 160);">writer</span>.<span style="color: rgb(32, 64, 160);">close</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line107">107</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line108">108</a>    <span style="color: rgb(32, 64, 160);">news</span>.<span style="color: rgb(32, 64, 160);">clear</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line109">109</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line110">110</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line111">111</a><a name="line112">112</a>  <span style="color: rgb(68, 68, 68);"><i>/**<a name="line113">113</a>   * Helper class used to parse Globovision news website<a name="line114">114</a>   * @author josevnz<a name="line115">115</a>   */</i></span><a name="line116">116</a>  <strong>class</strong> <span style="color: rgb(32, 64, 160);">GlobovisionParser</span> <strong>extends</strong> <span style="color: rgb(32, 64, 160);">ParserCallback</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line117">117</a><a name="line118">118</a>   <strong>private</strong> <strong>boolean</strong> <span style="color: rgb(32, 64, 160);">getHeadline</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>false</strong><span style="color: rgb(68, 68, 255);">;</span><a name="line119">119</a>   <strong>private</strong> <span style="color: rgb(32, 64, 160);">AttributeSet</span> <span style="color: rgb(32, 64, 160);">attribute</span><span style="color: rgb(68, 68, 255);">;</span><a name="line120">120</a>   <strong>private</strong> <span style="color: rgb(32, 64, 160);">List</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">SyndEntry</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">entries</span><span style="color: rgb(68, 68, 255);">;</span><a name="line121">121</a><a name="line122">122</a>   <strong>public</strong> <span style="color: rgb(32, 64, 160);">GlobovisionParser</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">List</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">SyndEntry</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">entries</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line123">123</a>    <strong>this</strong>.<span style="color: rgb(32, 64, 160);">entries</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">entries</span><span style="color: rgb(68, 68, 255);">;</span><a name="line124">124</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line125">125</a><a name="line126">126</a>   <span style="color: rgb(68, 68, 68);"><i>/**<a name="line127">127</a>    * Globovision HTML is so broken than we will ignore the errorssilently.<a name="line128">128</a>    * Increase the logger verbosity to see the errors<a name="line129">129</a>    */</i></span><a name="line130">130</a>   <strong>public</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">handleError</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">String</span> <span style="color: rgb(32, 64, 160);">errorMsg</span>, <strong>int</strong> <span style="color: rgb(32, 64, 160);">pos</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line131">131</a>    <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">FINE</span>, <span style="color: rgb(32, 64, 160);">String</span>.<span style="color: rgb(32, 64, 160);">format</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"%s, %d"</span>, <span style="color: rgb(32, 64, 160);">errorMsg</span>, <span style="color: rgb(32, 64, 160);">pos</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line132">132</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line133">133</a><a name="line134">134</a>   <span style="color: rgb(68, 68, 68);"><i>/**<a name="line135">135</a>    * Looking for:  tag = "a" and  attr{href} =~ /news.php?nid=\d+/<a name="line136">136</a>    * @param t Tag<a name="line137">137</a>    * @param a Attribute set<a name="line138">138</a>    * @param pos position<a name="line139">139</a>    */</i></span><a name="line140">140</a>   <strong>public</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">handleStartTag</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Tag</span> <span style="color: rgb(32, 64, 160);">t</span>, <span style="color: rgb(32, 64, 160);">MutableAttributeSet</span> <span style="color: rgb(32, 64, 160);">a</span>, <strong>int</strong> <span style="color: rgb(32, 64, 160);">pos</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line141">141</a>    <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><a name="line142">142</a>      <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">t</span> <span style="color: rgb(68, 68, 255);">=</span><span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">Tag</span>.<span style="color: rgb(32, 64, 160);">A</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);">&amp;</span><span style="color: rgb(68, 68, 255);">&amp;</span><a name="line143">143</a>      <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">a</span>.<span style="color: rgb(32, 64, 160);">getAttribute</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">HTML</span>.<span style="color: rgb(32, 64, 160);">Attribute</span>.<span style="color: rgb(32, 64, 160);">HREF</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);">!</span><span style="color: rgb(68, 68, 255);">=</span> <strong>null</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">&amp;</span><span style="color: rgb(68, 68, 255);">&amp;</span><a name="line144">144</a>      <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">a</span>.<span style="color: rgb(32, 64, 160);">getAttribute</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">HTML</span>.<span style="color: rgb(32, 64, 160);">Attribute</span>.<span style="color: rgb(32, 64, 160);">HREF</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">toString</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">matches</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"news<span style="color: rgb(119, 221, 119);">\\</span>.php<span style="color: rgb(119, 221, 119);">\\</span>?nid=<span style="color: rgb(119, 221, 119);">\\</span>d+"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><a name="line145">145</a>    <span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line146">146</a>      <span style="color: rgb(32, 64, 160);">attribute</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">a</span>.<span style="color: rgb(32, 64, 160);">copyAttributes</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line147">147</a>      <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">FINE</span>,<span style="color: rgb(32, 64, 160);">String</span>.<span style="color: rgb(32, 64, 160);">format</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"Tag: %s, attributes: %s"</span>, <span style="color: rgb(32, 64, 160);">t</span>, <span style="color: rgb(32, 64, 160);">a</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line148">148</a>      <span style="color: rgb(32, 64, 160);">getHeadline</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>true</strong><span style="color: rgb(68, 68, 255);">;</span><a name="line149">149</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line150">150</a><a name="line151">151</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line152">152</a><a name="line153">153</a>   <span style="color: rgb(68, 68, 68);"><i>/**<a name="line154">154</a>    * Get the headline and also write the RSS entry<a name="line155">155</a>    * @param data Text next to the headline<a name="line156">156</a>    * @param pos position<a name="line157">157</a>    */</i></span><a name="line158">158</a>   <strong>public</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">handleText</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>char</strong><span style="color: rgb(68, 68, 255);"><strong>[</strong></span><span style="color: rgb(68, 68, 255);"><strong>]</strong></span> <span style="color: rgb(32, 64, 160);">data</span>, <strong>int</strong> <span style="color: rgb(32, 64, 160);">pos</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line159">159</a>    <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">getHeadline</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line160">160</a>     <span style="color: rgb(32, 64, 160);">SyndEntry</span> <span style="color: rgb(32, 64, 160);">entry</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">SyndEntryImpl</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line161">161</a>     <span style="color: rgb(32, 64, 160);">entry</span>.<span style="color: rgb(32, 64, 160);">setLink</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">String</span>.<span style="color: rgb(32, 64, 160);">format</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"%s/%s"</span>,<span style="color: rgb(32, 64, 160);">GLOBOVISION_URL</span>, <span style="color: rgb(32, 64, 160);">attribute</span>.<span style="color: rgb(32, 64, 160);">getAttribute</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">HTML</span>.<span style="color: rgb(32, 64, 160);">Attribute</span>.<span style="color: rgb(32, 64, 160);">HREF</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">toString</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line162">162</a>     <span style="color: rgb(32, 64, 160);">entry</span>.<span style="color: rgb(32, 64, 160);">setPublishedDate</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>new</strong> <span style="color: rgb(32, 64, 160);">Date</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line163">163</a>     <span style="color: rgb(32, 64, 160);">entry</span>.<span style="color: rgb(32, 64, 160);">setTitle</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>new</strong> <span style="color: rgb(32, 64, 160);">String</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">data</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line164">164</a>     <span style="color: rgb(32, 64, 160);">entries</span>.<span style="color: rgb(32, 64, 160);">add</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">entry</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line165">165</a>     <span style="color: rgb(32, 64, 160);">getHeadline</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>false</strong><span style="color: rgb(68, 68, 255);">;</span><a name="line166">166</a>     <span style="color: rgb(32, 64, 160);">attribute</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>null</strong><span style="color: rgb(68, 68, 255);">;</span><a name="line167">167</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line168">168</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line169">169</a><a name="line170">170</a><a name="line171">171</a><a name="line172">172</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line173">173</a><a name="line174">174</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span>
</pre>
<p>Debo admitir que el proceso para volver a crear el RSS de Globovision desde Java fué más complejo y requirió más código que el de Perl (aunque terminé mi nueva versión antes que Lunar Pages reemplazara el modulo perdido, unas cuantas horas después) . Pero por otro lado, aprendí más trucos con este y al menos ya no tengo que preocuparme por pedirles que instalen módulos no estandares.</p>
<p>Nota a los subscriptores del la fuente de Globovision en RSS: La versión vieja ya funciona de nuevo. Pienso montar la nueva dentro de poco con nuevas mejoras. Una de ellas es que este tipo de error no afectará el programa (aunque no doy ningún tipo de garantias por soporte gratis <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p><span style="font-weight: bold;">To Lunar Pages</span>: Response to this issue was kind of slow, thanks for fixing the issue on my account anyways.</p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/perl" rel="tag">perl</a>, <a href="http://www.blogalaxia.com/tags/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://www.blogalaxia.com/tags/HTMLEditorKit" rel="tag">HTMLEditorKit</a>, <a href="http://www.blogalaxia.com/tags/Lunar+Pages" rel="tag">Lunar Pages</a><br />Technorati:<a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/perl" rel="tag">perl</a>, <a href="http://technorati.com/tag/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://technorati.com/tag/HTMLEditorKit" rel="tag">HTMLEditorKit</a>, <a href="http://technorati.com/tag/Lunar+Pages" rel="tag">Lunar Pages</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/perl" rel="tag">perl</a>, <a href="http://www.to2blogs.com/tag/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://www.to2blogs.com/tag/HTMLEditorKit" rel="tag">HTMLEditorKit</a>, <a href="http://www.to2blogs.com/tag/Lunar+Pages" rel="tag">Lunar Pages</a><br />Del.icio.us:<a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/perl" rel="tag">perl</a>, <a href="http://del.icio.us/tag/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://del.icio.us/tag/HTMLEditorKit" rel="tag">HTMLEditorKit</a>, <a href="http://del.icio.us/tag/Lunar+Pages" rel="tag">Lunar Pages</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/03/09/rss-de-globovision-esta-roto-ii-java-al-rescate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS de Globovision está roto I</title>
		<link>http://kodegeek.com/blog/2008/03/09/rss-de-globovision-esta-roto-i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss-de-globovision-esta-roto-i</link>
		<comments>http://kodegeek.com/blog/2008/03/09/rss-de-globovision-esta-roto-i/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 00:03:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Lunar Pages]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[XML::RSS]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1234</guid>
		<description><![CDATA[Creo que mi proveedor de hospedaje decidió remover el modulo de Perl XML::RSS que utilizo para crear el RSS de Globovisión el día de hoy: Can't locate XML/RSS.pm in @INC (@INC contains:/usr/lib/perl5/5.8.5/i386-linux-thread-multi/usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4/usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2/usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0/usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4/usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2/usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0/usr/lib/perl5/vendor_perl .) at/home/kodeg2/scripts/GlobovisionHtml2Rss.pl line 6.BEGIN failed--compilation aborted at/home/XXXX/scripts/GlobovisionHtml2Rss.pl line 6. Esta es una de las pocas [...]]]></description>
			<content:encoded><![CDATA[<p>Creo que mi proveedor de hospedaje decidió remover el modulo de Perl XML::RSS que utilizo para crear <a href="http://kodegeek.com/2007/10/convertidor-de-html-rss-para-las.shtml">el RSS de Globovisión</a> el día de hoy:</p>
<pre><span style="color: rgb(255, 0, 0);">Can't locate XML/RSS.pm</span> in @INC (@INC contains:/usr/lib/perl5/5.8.5/i386-linux-thread-multi/usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4/usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2/usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0/usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4/usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2/usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0/usr/lib/perl5/vendor_perl .) at/home/kodeg2/scripts/GlobovisionHtml2Rss.pl line 6.<span style="color: rgb(255, 0, 0);">BEGIN failed--compilation aborted at</span><span style="color: rgb(255, 0, 0);">/home/XXXX/scripts/GlobovisionHtml2Rss.pl</span> line 6.</pre>
<p>Esta <span style="font-style: italic;">es una de las pocas cosas que odio de Perl</span>; Montar módulos en ubicaciones alternativas ES UN FASTIDIO (si no tienes ROOT). En mi caso no tengo accesso a shell para hacerlo yo, así que dependo de la bondad de los administradores de <a href="http://lunarpages.com/">Lunar Pages</a> para que ellos lo hagan.</p>
<p>¿Que hacer? Bueno, o pedirles que lo monten en mi directorio (y yo agrego la ruta de busqueda usando &#8220;use lib&#8221;) o lo hago en otro lenguaje como Java (en cuyo caso copio mis Jar en donde me de la gana).</p>
<p>Voy a pensarlo un poco, vamos a ver que tanto tiempo toma escribir el mismo código en otro lenguaje.</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://www.blogalaxia.com/tags/perl" rel="tag">perl</a>, <a href="http://www.blogalaxia.com/tags/Java" rel="tag">Java</a><br />Technorati:<a href="http://technorati.com/tag/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://technorati.com/tag/perl" rel="tag">perl</a>, <a href="http://technorati.com/tag/Java" rel="tag">Java</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://www.to2blogs.com/tag/perl" rel="tag">perl</a>, <a href="http://www.to2blogs.com/tag/Java" rel="tag">Java</a><br />Del.icio.us:<a href="http://del.icio.us/tag/XML%3A%3ARSS" rel="tag">XML::RSS</a>, <a href="http://del.icio.us/tag/perl" rel="tag">perl</a>, <a href="http://del.icio.us/tag/Java" rel="tag">Java</a></p>
<p>Buscar en otros sitios:</p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/03/09/rss-de-globovision-esta-roto-i/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Appleworks 6.2 sucks: Unable to import a simple CVS file?</title>
		<link>http://kodegeek.com/blog/2007/11/19/appleworks-62-sucks-unable-to-import-a-simple-cvs-file/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=appleworks-62-sucks-unable-to-import-a-simple-cvs-file</link>
		<comments>http://kodegeek.com/blog/2007/11/19/appleworks-62-sucks-unable-to-import-a-simple-cvs-file/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 13:35:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[appleworks]]></category>
		<category><![CDATA[import csv]]></category>
		<category><![CDATA[microsoft office]]></category>
		<category><![CDATA[open office]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[sucks]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1201</guid>
		<description><![CDATA[I decided to buy Appleworks when I got my Apple Quad machine as OpenOffice support seemed to be weak on OSX and I was not going to give $500+ dollars to Microsoft to use a 2004 version of Office. So I was somehow happy with Appleworks until I decided to do something simple as to [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to buy Appleworks when I got my Apple Quad machine as OpenOffice support seemed to be weak on OSX and I was not going to give $500+ dollars to Microsoft to use a 2004 version of Office.</p>
<p>So I was somehow happy with Appleworks until I decided to do something simple as to import a CSV file created with Google Finance portfolio application.</p>
<p>It didn&#8217;t work. Fustrated I asked for help on the Apple support forum (the Appleworks FAQ is just useless at least with this particular issue) and luckly for me <a href="http://discussions.apple.com/thread.jspa?messageID=5899587#5899587">I got my answer in a couple of hours</a>.</p>
<p>At the end I rolled out a savy one Perl liner that solved my problem:</p>
<blockquote><p>auyan:~/Desktop josevnz$ <span style="color: rgb(255, 0, 0);">perl -p -i -e &#8216;s#,#\t#g; s#\n#\rn#;&#8217;</span> 401k-funds-appleworks.csv</p></blockquote>
<p>I guess I will try OpenOffice again or will buy Office for OSX and byte the bullet. But my advice is to stay away from a product that cannot deal with a simple conversions like this <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Correction: Is CSV file not CVS. Too lazy to republish the whole thing again <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/appleworks" rel="tag">appleworks</a>, <a href="http://www.blogalaxia.com/tags/sucks" rel="tag">sucks</a>, <a href="http://www.blogalaxia.com/tags/import+csv" rel="tag">import csv</a>, <a href="http://www.blogalaxia.com/tags/open+office" rel="tag">open office</a>, <a href="http://www.blogalaxia.com/tags/microsoft+office" rel="tag">microsoft office</a>, <a href="http://www.blogalaxia.com/tags/perl" rel="tag">perl</a><br />Technorati:<a href="http://technorati.com/tag/appleworks" rel="tag">appleworks</a>, <a href="http://technorati.com/tag/sucks" rel="tag">sucks</a>, <a href="http://technorati.com/tag/import+csv" rel="tag">import csv</a>, <a href="http://technorati.com/tag/open+office" rel="tag">open office</a>, <a href="http://technorati.com/tag/microsoft+office" rel="tag">microsoft office</a>, <a href="http://technorati.com/tag/perl" rel="tag">perl</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/appleworks" rel="tag">appleworks</a>, <a href="http://www.to2blogs.com/tag/sucks" rel="tag">sucks</a>, <a href="http://www.to2blogs.com/tag/import+csv" rel="tag">import csv</a>, <a href="http://www.to2blogs.com/tag/open+office" rel="tag">open office</a>, <a href="http://www.to2blogs.com/tag/microsoft+office" rel="tag">microsoft office</a>, <a href="http://www.to2blogs.com/tag/perl" rel="tag">perl</a><br />Del.icio.us:<a href="http://del.icio.us/tag/appleworks" rel="tag">appleworks</a>, <a href="http://del.icio.us/tag/sucks" rel="tag">sucks</a>, <a href="http://del.icio.us/tag/import+csv" rel="tag">import csv</a>, <a href="http://del.icio.us/tag/open+office" rel="tag">open office</a>, <a href="http://del.icio.us/tag/microsoft+office" rel="tag">microsoft office</a>, <a href="http://del.icio.us/tag/perl" rel="tag">perl</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2007/11/19/appleworks-62-sucks-unable-to-import-a-simple-cvs-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertidor de HTML a RSS para las noticias de Globovisión.</title>
		<link>http://kodegeek.com/blog/2007/10/14/convertidor-de-html-a-rss-para-las-noticias-de-globovision/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=convertidor-de-html-a-rss-para-las-noticias-de-globovision</link>
		<comments>http://kodegeek.com/blog/2007/10/14/convertidor-de-html-a-rss-para-las-noticias-de-globovision/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 02:55:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[globovision]]></category>
		<category><![CDATA[html to rss]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1190</guid>
		<description><![CDATA[Siguiendo con la fiebre de los Mashups hechos con Yahoo Pipes, llegué al punto en que decidí escribir un convertidor de HTML a RSS para Globovision. Como recordaran, Globovision no ofrece un feed RSS de sus noticias nacionales, lo cual es una verdadera lastima. Asi que con un poco de imaginación decidí escribir este programa [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con la fiebre de los<a href="http://kodegeek.com/labels/google%20reader.shtml"> Mashups hechos con Yahoo Pipes</a>, llegué al punto en que decidí escribir un convertidor de HTML a RSS para <a href="http://www.globovision.com/index.php">Globovision</a>. Como recordaran, <a href="http://www.globovision.com/index.php">Globovision</a> no ofrece un feed RSS de sus noticias nacionales, lo cual es una verdadera lastima.</p>
<p>Asi que con un poco de imaginación decidí escribir este programa en Perl:</p>
<pre><a name="line1"> 1</a> <span style="color: rgb(68, 68, 68);">#!/usr/bin/perl<a name="line2"> 2</a><a name="line3"> 3</a> </span><strong>use</strong> strict;<a name="line4"> 4</a> <strong>use</strong> LWP::UserAgent;<a name="line5"> 5</a> <strong>use</strong> HTML::Parser;<a name="line6"> 6</a> <strong>use</strong> XML::RSS;<a name="line7"> 7</a><a name="line8"> 8</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$rss</span> = XML::RSS-><strong>new</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span> version => <span style="color: rgb(0, 128, 0);">'0.9'</span> <span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line9"> 9</a><a name="line10">10</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$rssFile</span> = <span style="color: rgb(0, 128, 0);">"<span style="color: rgb(32, 64, 160);">$ENV</span>{HOME}/globovision.rss"</span>;<a name="line11">11</a><a name="line12">12</a> <span style="color: rgb(32, 64, 160);">$rss</span>->channel<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><a name="line13">13</a>  title        => <span style="color: rgb(0, 128, 0);">"Globovision.com Venezuelan News"</span>,<a name="line14">14</a>  <span style="color: rgb(165, 42, 42);"><strong>link</strong></span>         => <span style="color: rgb(0, 128, 0);">"http://globovision.com/"</span>,<a name="line15">15</a>  description  => <span style="color: rgb(0, 128, 0);">"Globovision.com news -Brough to you by http://KodeGeek.com"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line16">16</a><a name="line17">17</a> <span style="color: rgb(68, 68, 68);"># Be carefull with this one as nested elements can be ignored and<a name="line18">18</a> # HTML normally is not well formed!<a name="line19">19</a> </span><strong>my</strong> <span style="color: rgb(32, 64, 160);">@ignore_tags</span> = <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><a name="line20">20</a>  <span style="color: rgb(0, 128, 0);">"head"</span>,<a name="line21">21</a>  <span style="color: rgb(0, 128, 0);">"h1"</span>,<a name="line22">22</a>  <span style="color: rgb(0, 128, 0);">"strong"</span>,<a name="line23">23</a>  <span style="color: rgb(0, 128, 0);">"form"</span><a name="line24">24</a>    <span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line25">25</a><a name="line26">26</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$baseUrl</span> = <span style="color: rgb(0, 128, 0);">"http://globovision.com/"</span>;<a name="line27">27</a><a name="line28">28</a> <span style="color: rgb(68, 68, 68);"># We are only interested on the news from the first page,as more news come up it will push older news<a name="line29">29</a> </span><strong>my</strong> <span style="color: rgb(32, 64, 160);">$newsUrl</span> = <span style="color: rgb(0, 128, 0);">"<span style="color: rgb(32, 64, 160);">$baseUrl</span>"</span> . <span style="color: rgb(0, 128, 0);">"history.php?cha=1&amp;pag=1"</span>;<a name="line30">30</a><a name="line31">31</a> <strong>use</strong> constant DEFAULT_TIMEOUT<a name="line32">32</a>  => 180;<a name="line33">33</a><a name="line34">34</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$agent</span> = LWP::UserAgent-><strong>new</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line35">35</a>   agent => <span style="color: rgb(0, 128, 0);">'GlobovisionHtml2Rss.pl/kodegeek 0.1'</span>,<a name="line36">36</a>   timeout => DEFAULT_TIMEOUT<a name="line37">37</a>      <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line38">38</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$response</span> = <span style="color: rgb(32, 64, 160);">$agent</span>->get<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$newsUrl</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line39">39</a> <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span>! <span style="color: rgb(32, 64, 160);">$response</span>->is_success<span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line40">40</a>  <strong>die</strong>  <span style="color: rgb(165, 42, 42);"><strong>sprintf</strong></span> <span style="color: rgb(0, 128, 0);">"[ERROR]: Unable to retrieve the HTMLfrom '<span style="color: rgb(32, 64, 160);">%s</span>', Status: '<span style="color: rgb(32, 64, 160);">%s</span>'"</span>, <span style="color: rgb(32, 64, 160);">$newsUrl</span>, <span style="color: rgb(32, 64, 160);">$response</span>->status_line;<a name="line41">41</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line42">42</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$parser</span> = HTML::Parser-><strong>new</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><a name="line43">43</a>                         api_version => 3,<a name="line44">44</a>    start_h => <span style="color: rgb(68, 68, 255);"><strong>[</strong></span> \&amp;start_a, <span style="color: rgb(0, 128, 0);">"tagname, attr"</span> <span style="color: rgb(68, 68, 255);"><strong>]</strong></span>,<a name="line45">45</a>    text_h => <span style="color: rgb(68, 68, 255);"><strong>[</strong></span> \&amp;get_headline, <span style="color: rgb(0, 128, 0);">"dtext"</span> <span style="color: rgb(68, 68, 255);"><strong>]</strong></span><a name="line46">46</a>    <span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line47">47</a> <span style="color: rgb(32, 64, 160);">$parser</span>->ignore_tags<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">@ignore_tags</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line48">48</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$headlineFlag</span>=0;<a name="line49">49</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$currUrl</span>=<span style="color: rgb(165, 42, 42);"><strong>undef</strong></span>;<a name="line50">50</a> <span style="color: rgb(32, 64, 160);">$parser</span>->parse<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$response</span>->decoded_content<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line51">51</a><a name="line52">52</a> <span style="color: rgb(32, 64, 160);">$rss</span>->save<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$rssFile</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line53">53</a><a name="line54">54</a> <span style="color: rgb(68, 68, 68);"># ****** Functions used on the script *******<a name="line55">55</a><a name="line56">56</a> # Get the headline<a name="line57">57</a> </span><strong>sub<span style="color: rgb(255, 0, 0);"> get_headline</span> {</strong><a name="line58">58</a>  <strong>my</strong> <span style="color: rgb(32, 64, 160);">$headline</span> = <span style="color: rgb(32, 64, 160);">$_</span><span style="color: rgb(68, 68, 255);"><strong>[</strong></span>0<span style="color: rgb(68, 68, 255);"><strong>]</strong></span>;<a name="line59">59</a>  <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$headlineFlag</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line60">60</a>   <span style="color: rgb(32, 64, 160);">$rss</span>->add_item<span style="color: rgb(68, 68, 255);"><strong>(</strong></span> title => <span style="color: rgb(32, 64, 160);">$headline</span>, <span style="color: rgb(165, 42, 42);"><strong>link</strong></span> => <span style="color: rgb(32, 64, 160);">$currUrl</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line61">61</a>   <span style="color: rgb(32, 64, 160);">$headlineFlag</span> = 0;<a name="line62">62</a>   <span style="color: rgb(32, 64, 160);">$currUrl</span>=<span style="color: rgb(165, 42, 42);"><strong>undef</strong></span>;<a name="line63">63</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line64">64</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line65">65</a><a name="line66">66</a> <span style="color: rgb(68, 68, 68);"># Identify news items<a name="line67">67</a> </span><strong>sub<span style="color: rgb(255, 0, 0);"> start_a</span> {</strong><a name="line68">68</a>  <strong>my</strong> <span style="color: rgb(32, 64, 160);">$tagname</span> = <span style="color: rgb(32, 64, 160);">$_</span><span style="color: rgb(68, 68, 255);"><strong>[</strong></span>0<span style="color: rgb(68, 68, 255);"><strong>]</strong></span>;<a name="line69">69</a>  <strong>my</strong> <span style="color: rgb(32, 64, 160);">%attr</span> = <span style="color: rgb(32, 64, 160);">%{$_[1]}</span>;<a name="line70">70</a>  <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$tagname</span> <strong>eq</strong> <span style="color: rgb(0, 128, 0);">"a"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> &amp;&amp; <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$attr</span><span style="color: rgb(68, 68, 255);"><strong>{</strong></span>href<span style="color: rgb(68, 68, 255);"><strong>}</strong></span> =~<span style="color: rgb(176, 0, 208);"> /^news.php?.nid=\d+/</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line71">71</a>   <strong>my</strong> <span style="color: rgb(32, 64, 160);">$url</span> = <span style="color: rgb(32, 64, 160);">$baseUrl</span> . <span style="color: rgb(0, 128, 0);">"/"</span> . <span style="color: rgb(32, 64, 160);">$attr</span><span style="color: rgb(68, 68, 255);"><strong>{</strong></span>href<span style="color: rgb(68, 68, 255);"><strong>}</strong></span>;<a name="line72">72</a>   <span style="color: rgb(32, 64, 160);">$url</span> =~<span style="color: rgb(176, 0, 208);"> s/&amp;/&amp;/g</span>;<a name="line73">73</a>   <span style="color: rgb(32, 64, 160);">$currUrl</span> = <span style="color: rgb(32, 64, 160);">$url</span>;<a name="line74">74</a>   <span style="color: rgb(32, 64, 160);">$headlineFlag</span>=1;<a name="line75">75</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line76">76</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line77">77</a> __END__<a name="line78">78</a> =head1 NAME<a name="line79">79</a><a name="line80">80</a> GlobovisionHtml2Rs<span style="color: rgb(176, 0, 208);">s.pl - Script to convert Globovision.com Venezuelalocal news from HTML to RSS.</span><a name="line81">81</a><a name="line82">82</a> =head1 DESCRIPTION<a name="line83">83</a><a name="line84">84</a> I <strong>use</strong> a combination of Yahoo Pipes <strong>and</strong> Google Reader to keep meupdated about news of any kind. However, some websites like<a name="line85">85</a> Globovision.com still don't have a proper RSS feed, so one dayI decided to create <strong>my</strong> own mashup :<span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<a name="line86">86</a><a name="line87">87</a> =head1 AUTHOR<a name="line88">88</a><a name="line89">89</a> Jose Vicente Nunez Zuleta <span style="color: rgb(68, 68, 255);"><strong>(</strong></span>josevnz<span style="color: rgb(32, 64, 160);">@kodegeek</span>.com<span style="color: rgb(68, 68, 255);"><strong>)</strong></span><a name="line90">90</a><a name="line91">91</a> =head1 BLOG<a name="line92">92</a><a name="line93">93</a> KodeGeek - http:<span style="color: rgb(176, 0, 208);">//</span>kodegeek.com<a name="line94">94</a><a name="line95">95</a> =head1 LICENSE<a name="line96">96</a><a name="line97">97</a> GPL<a name="line98">98</a><a name="line99">99</a> cut
</pre>
<p>Lo más fastidioso de este ejercicio fué instalar <a href="http://sourceforge.net/projects/expat">EXPAT</a> (para el procesamiento del XML del feed RSS) y el módulo parta crear el archivo RSS (me da un fastidio enorme aprender como es el formato resultante).</p>
<p>Mi proveedor de hosting gustosamente instaló el módulo <a href="http://perl-rss.sourceforge.net/">XML::RSS</a>. Después de probarlo un poco aquí les dejo las noticias de <a href="http://www.kodegeek.com/rss/globovision.rss">Globovisión para que la disfruten</a> (planeo actualizar el lector de noticias cada 10 minutos para no matar a mi servidor).</p>
<p>Blogalaxia.com:<a href="http://www.blogalaxia.com/tags/globovision">globovision</a>, <a href="http://www.blogalaxia.com/tags/rss">rss</a>, <a href="http://www.blogalaxia.com/tags/html+to+rss">html to rss</a>, <a href="http://www.blogalaxia.com/tags/perl">perl</a>, <a href="http://www.blogalaxia.com/tags/open+source">open source</a><br />Technorati.com:<a href="http://technorati.com/tag/globovision">globovision</a>, <a href="http://technorati.com/tag/rss">rss</a>, <a href="http://technorati.com/tag/html+to+rss">html to rss</a>, <a href="http://technorati.com/tag/perl">perl</a>, <a href="http://technorati.com/tag/open+source">open source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2007/10/14/convertidor-de-html-a-rss-para-las-noticias-de-globovision/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nuevo grupo de fotos en Flickr: Venezuela Open Source</title>
		<link>http://kodegeek.com/blog/2007/07/15/nuevo-grupo-de-fotos-en-flickr-venezuela-open-source/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nuevo-grupo-de-fotos-en-flickr-venezuela-open-source</link>
		<comments>http://kodegeek.com/blog/2007/07/15/nuevo-grupo-de-fotos-en-flickr-venezuela-open-source/#comments</comments>
		<pubDate>Sun, 15 Jul 2007 10:00:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[discusion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[venezuela]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1166</guid>
		<description><![CDATA[Richard Stallman en Walc 2005, cortesía de Jorge Camargo. Me parece curioso que habiendo tanta actividad del movimiento Open Source en Venezuela, no haya un grupo en Flickr en el cual se puedan compartir esos momentos capturados en una fotografía. Por eso me decidí a crear un grupo, llamado Venezuela Open Source. El grupo está [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/josevnz/31689724/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/23/31689724_2eea70d3bf.jpg" alt="Walc2005 Mérida, Richard Stallman" height="375" width="500" /><br />Richard Stallman en Walc 2005, cortesía de Jorge Camargo.</a></p>
<p>Me parece curioso que habiendo tanta actividad del movimiento Open Source en Venezuela, no haya un grupo en <span style="font-style: italic;">Flickr</span> en el cual se puedan compartir esos momentos capturados en una fotografía.</p>
<p>Por eso me decidí a crear un grupo, llamado <a href="http://www.flickr.com/groups/venezuelaopensource/">Venezuela Open Source</a>. El grupo está abierto a la discusión del acontecer Open Source en el país y no está limitado a fotos, sino tambien a captura de programas que ustedes conozcan.</p>
<p>Asi que les pido el favor y que rieguen la voz para que todos los interesados nos beneficiemos.</p>
<p>Blogalaxia.com:<a href="http://www.blogalaxia.com/tags/venezuela">venezuela</a>, <a href="http://www.blogalaxia.com/tags/open+source">open source</a>, <a href="http://www.blogalaxia.com/tags/linux">linux</a>, <a href="http://www.blogalaxia.com/tags/java">java</a>, <a href="http://www.blogalaxia.com/tags/gnu">gnu</a>, <a href="http://www.blogalaxia.com/tags/perl">perl</a>, <a href="http://www.blogalaxia.com/tags/discusion">discusion</a><br />Technorati.com:<a href="http://technorati.com/tag/venezuela">venezuela</a>, <a href="http://technorati.com/tag/open+source">open source</a>, <a href="http://technorati.com/tag/linux">linux</a>, <a href="http://technorati.com/tag/java">java</a>, <a href="http://technorati.com/tag/gnu">gnu</a>, <a href="http://technorati.com/tag/perl">perl</a>, <a href="http://technorati.com/tag/discusion">discusion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2007/07/15/nuevo-grupo-de-fotos-en-flickr-venezuela-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Como contar el espacio usado en un directorio usando Perl?</title>
		<link>http://kodegeek.com/blog/2007/04/02/%c2%bfcomo-contar-el-espacio-usado-en-un-directorio-usando-perl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25c2%25bfcomo-contar-el-espacio-usado-en-un-directorio-usando-perl</link>
		<comments>http://kodegeek.com/blog/2007/04/02/%c2%bfcomo-contar-el-espacio-usado-en-un-directorio-usando-perl/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 02:54:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[du]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1144</guid>
		<description><![CDATA[Una de esas tantas ociosidades que a la final resultan útiles si lo que se quiere es un programa que funcione igual bajo Windows, Linux o Solaris: #!/usr/bin/perluse File::Find;use Getopt::Long;use strict; my $func;my $unit;my @dirs;my %units = ( kb => [ 1024.0, "KB"], mb => [ 1024.0* 1024.0, "MB"], gb => [ 1024.0 * 1024.0 [...]]]></description>
			<content:encoded><![CDATA[<p>Una de esas tantas ociosidades que a la final resultan útiles si lo que se quiere es un programa que funcione igual bajo Windows, Linux o Solaris:</p>
<pre>#!/usr/bin/perluse File::Find;use Getopt::Long;use strict;

my $func;my $unit;my @dirs;my %units = (      kb => [ 1024.0,  "KB"],      mb => [ 1024.0* 1024.0, "MB"],      gb => [ 1024.0 * 1024.0 * 1024.0, "GB" ]);

GetOptions("dirs=s" => \@dirs, "unit=s" => \$unit);die "Define the directories to measure" if (scalar(@dirs) == 0);$unit = "gb" if not defined $unit;$unit = "gb" if not defined $units{$unit};

{      my $tsize = 0;      $func = sub {              my (                      $dev,                      $ino,                      $mode,                      $nlink,                      $uid,                      $gid,                      $rdev,                      $size,                      $atime,                      $mtime,                      $ctime,                      $blksize,                      $blocks) = stat($File::Find::name);              if ( -f ($File::Find::name)) {                      $tsize += $size;              }              return $tsize;      }}

printf "Scanning directories: %s\n", join(',', @dirs);foreach my $dir (@dirs) {      find({ wanted => $func, follow => 0 }, $dir);}

printf "Total size of all combined directories: %.2f %s\n",      (&#038;$func) / $units{$unit}[0], $units{$unit}[1];</pre>
<p>La salida de ejemplo seria la siguiente:
<pre>auyan:~/src/perl/blog josevnz$ ./du.pl -dir /Users/josevnz -dir /tmp -unit ppScanning directories: /Users/josevnz,/tmpTotal size of all combined directories: 31.05 GB</pre>
<p>Una belleza por lo simple <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Blogalaxia.com:<a href="http://www.blogalaxia.com/tags/du">du</a>, <a href="http://www.blogalaxia.com/tags/perl">perl</a><br />Technorati.com:<a href="http://technorati.com/tag/du">du</a>, <a href="http://technorati.com/tag/perl">perl</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2007/04/02/%c2%bfcomo-contar-el-espacio-usado-en-un-directorio-usando-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

