<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-14980572</id><updated>2008-05-05T06:30:01.187-04:00</updated><title type='text'>KodeGeeK</title><link rel='alternate' type='text/html' href='http://kodegeek.com/index.shtml'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kodegeek.com/atom.xml'/><author><name>KodeGeek</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>439</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14980572.post-7000847928026695678</id><published>2008-05-05T06:30:00.000-04:00</published><updated>2008-05-05T06:30:01.209-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='javaone2008'/><category scheme='http://www.blogger.com/atom/ns#' term='javaone'/><title type='text'>El lunes empieza JavaOne</title><content type='html'>Nos vemos  en &lt;a href="http://java.sun.com/javaone/sf/index.jsp"&gt;JavaOne&lt;/a&gt;. Una vez que me registre voy a estar por acá:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-Java University Course Location (9:00 am to 9:00 pm):&lt;br /&gt;InterContinental Hotel&lt;br /&gt;888 Howard Street (between 4th and 5th Streets)&lt;br /&gt;San Francisco, CA 94103 &lt;/blockquote&gt;Si por casualidad alguno de ustedes lee estoy y va a estar cerca, quizas nos podamos encontrar. No creo que me ponga a reportar nada del evento de una vez (después de todo también son mis vacaciones) pero si colocaré fotos en Flickr y algunas notas sobre el evento.&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/conference" rel="tag"&gt;conference&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/javaone2008" rel="tag"&gt;javaone2008&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/conference" rel="tag"&gt;conference&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://technorati.com/tag/javaone2008" rel="tag"&gt;javaone2008&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/conference" rel="tag"&gt;conference&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/javaone2008" rel="tag"&gt;javaone2008&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/conference" rel="tag"&gt;conference&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/javaone2008" rel="tag"&gt;javaone2008&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/05/el-lunes-empieza-javaone.shtml' title='El lunes empieza JavaOne'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=7000847928026695678&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7000847928026695678'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7000847928026695678'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-6568847561928625534</id><published>2008-05-03T05:00:00.000-04:00</published><updated>2008-05-03T05:00:00.676-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='servlets'/><title type='text'>Twitter se sacude a Ruby on Rails</title><content type='html'>La noticia está circulando Internet, &lt;a href="http://www.techcrunch.com/2008/05/01/twitter-said-to-be-abandoning-ruby-on-rails/"&gt;y es que Twitter tiene problemas de escalabilidad&lt;/a&gt;, muchos dicen que están relacionados con el uso de Ruby on Rails.&lt;br /&gt;&lt;br /&gt;Yo digo que se puede hacer mal software en cualquier plataforma, habría que trabajar de verdad en Twitter para saber cual es el verdadero problema. Lo cierto es que más correo de odio viene hacia Rails.&lt;br /&gt;&lt;br /&gt;¿Alguien se acuerda de cuando la gente hablaba mal de Java con Servlets? Vamos a ver cuanto dura esta tormenta en un baso con agua...&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/ruby" rel="tag"&gt;ruby&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/rails" rel="tag"&gt;rails&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/servlets" rel="tag"&gt;servlets&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/ruby" rel="tag"&gt;ruby&lt;/a&gt;, &lt;a href="http://technorati.com/tag/rails" rel="tag"&gt;rails&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/servlets" rel="tag"&gt;servlets&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/ruby" rel="tag"&gt;ruby&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/rails" rel="tag"&gt;rails&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/servlets" rel="tag"&gt;servlets&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/ruby" rel="tag"&gt;ruby&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/rails" rel="tag"&gt;rails&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/servlets" rel="tag"&gt;servlets&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/05/twitter-se-sacude-ruby-on-rails.shtml' title='Twitter se sacude a Ruby on Rails'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=6568847561928625534&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/6568847561928625534'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/6568847561928625534'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-7182986648752044763</id><published>2008-05-02T17:50:00.002-04:00</published><updated>2008-05-02T17:51:09.402-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='TIBCO'/><category scheme='http://www.blogger.com/atom/ns#' term='Rendezvous'/><category scheme='http://www.blogger.com/atom/ns#' term='viernes'/><title type='text'>Hoy es viernes de TIBCO :)</title><content type='html'>Esta semana fué dura, pero ya estoy casi listo con la primera ronda de ajusten en la compilación de nuestra aplicación.  Conflictos con Jars, errores misteriosos con versiones de las librerías y sobre todo mucha paciencia pero ya está quedó lista.&lt;br /&gt;&lt;br /&gt;Una semana larga y dura, pero el esfuerzo pagó sus frutos. No sólo ahora podemos recompilar la aplicación más fácilmente sino que además podemos migrar a otras herramientas como Maven, sin tanto problema.&lt;br /&gt;&lt;br /&gt;Lo otro es que ahora estamos con otro proyecto para hacer la aplicación más rápida; En mi grupo  tengo el dudoso honor de ser el experto en configurar componentes de TIBCO &lt;span style="font-style: italic;"&gt;Rendezvous&lt;/span&gt; (RVD, RVRD, etc) y por ende ando configurando un par de demonios RVRD para luego enviar entre ellos mensajes certificados usando Java.&lt;br /&gt;&lt;br /&gt;Entonación de TIBCO, el producto es poderoso pero para que vuele hay que sentarse a optimizar parámetros en el Kernel, darle recursos dedicados (sobre todo cuando se trata de suscripciones a datos del mercado).&lt;br /&gt;&lt;br /&gt;No hay almuerzo gratis, se paga simplicidad en un lado por complejidad en el otro :)&lt;br /&gt;&lt;br /&gt;Bueno, los dejo para seguir soñando "multicast groups, daemons and services"&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/TIBCO" rel="tag"&gt;TIBCO&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/viernes" rel="tag"&gt;viernes&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/Rendezvous" rel="tag"&gt;Rendezvous&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/TIBCO" rel="tag"&gt;TIBCO&lt;/a&gt;, &lt;a href="http://technorati.com/tag/viernes" rel="tag"&gt;viernes&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Rendezvous" rel="tag"&gt;Rendezvous&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/TIBCO" rel="tag"&gt;TIBCO&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/viernes" rel="tag"&gt;viernes&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/Rendezvous" rel="tag"&gt;Rendezvous&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/TIBCO" rel="tag"&gt;TIBCO&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/viernes" rel="tag"&gt;viernes&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/Rendezvous" rel="tag"&gt;Rendezvous&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/05/hoy-es-viernes-de-tibco.shtml' title='Hoy es viernes de TIBCO :)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=7182986648752044763&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7182986648752044763'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7182986648752044763'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-4481773219003584064</id><published>2008-04-30T00:42:00.002-04:00</published><updated>2008-04-30T00:44:40.947-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='mac osx'/><category scheme='http://www.blogger.com/atom/ns#' term='1.6'/><title type='text'>OSX y Java 6: ¡Al fin!</title><content type='html'>Bueno, al fin tengo &lt;a href="http://www.apple.com/support/downloads/javaformacosx105update1.html"&gt;una excusa para hacer la actualización&lt;/a&gt; a Leopard.&lt;br /&gt;&lt;br /&gt;¿Porqué diablos se tardaron tanto?&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/1.6" rel="tag"&gt;1.6&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://technorati.com/tag/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://technorati.com/tag/1.6" rel="tag"&gt;1.6&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/1.6" rel="tag"&gt;1.6&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/mac+osx" rel="tag"&gt;mac osx&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/1.6" rel="tag"&gt;1.6&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/osx-y-java-6-al-fin.shtml' title='OSX y Java 6: ¡Al fin!'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=4481773219003584064&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/4481773219003584064'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/4481773219003584064'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-4198340788537283986</id><published>2008-04-26T08:19:00.003-04:00</published><updated>2008-04-26T09:03:25.855-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='worldscollide'/><category scheme='http://www.blogger.com/atom/ns#' term='apocalyptica'/><category scheme='http://www.blogger.com/atom/ns#' term='worlds collide'/><title type='text'>Apocalyptica: Worlds collide</title><content type='html'>&lt;object height="267" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rbTozgoj9OQ&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/rbTozgoj9OQ&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="267" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Y es que los panas de &lt;a href="http://apocalyptica.com/"&gt;Apocalyptica&lt;/a&gt; no decepcionan, ya me bajé de Itunes "Worlds Collide" y debo decir que aunque no me encontré con sorpresas en su estilo esta entrega es sólida.&lt;br /&gt;&lt;br /&gt;Me encantó la selección de artistas invitados, entre ellos Dave Lombardo, el super mega baterista de Slayer.&lt;br /&gt;&lt;br /&gt;Los dejo con los &lt;a href="http://www.youtube.com/apocalypticavideos"&gt;videos en Youtube&lt;/a&gt; para que se den cabilla.&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/apocalyptica" rel="tag"&gt;apocalyptica&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/worlds+collide" rel="tag"&gt;worlds collide&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/apocalyptica" rel="tag"&gt;apocalyptica&lt;/a&gt;, &lt;a href="http://technorati.com/tag/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;, &lt;a href="http://technorati.com/tag/worlds+collide" rel="tag"&gt;worlds collide&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/apocalyptica" rel="tag"&gt;apocalyptica&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/worlds+collide" rel="tag"&gt;worlds collide&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/apocalyptica" rel="tag"&gt;apocalyptica&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/worlds+collide" rel="tag"&gt;worlds collide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/apocalyptica-worlds-collide.shtml' title='Apocalyptica: Worlds collide'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=4198340788537283986&amp;isPopup=true' title='1 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/4198340788537283986'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/4198340788537283986'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-4168853774817314691</id><published>2008-04-23T22:27:00.000-04:00</published><updated>2008-04-23T22:27:29.447-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javaone'/><category scheme='http://www.blogger.com/atom/ns#' term='vacaciones'/><title type='text'>Voy para JavaOne</title><content type='html'>Si, la familia y yo nos vamos de vacaciones por una semana. De esa semana me estoy tomando un día completo para asistir a la mega conferencia &lt;a href="http://java.sun.com/javaone/sf/"&gt;JavaOne&lt;/a&gt;, este año a celebrarse en San Francisco, California.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;JavaOne,&lt;/span&gt; señores, una de las conferencias más esperadas de este año. Sólo se me ocurre la de &lt;a href="http://developer.apple.com/wwdc/"&gt;Apple&lt;/a&gt; en magnitud (también en San Francisco pero en el mes de Junio).&lt;br /&gt;&lt;br /&gt;Lo siento, aún &lt;a href="https://en.oreilly.com/rails2008/public/register"&gt;RailsConf&lt;/a&gt; no genera tanto ruido como JavaOne :)&lt;br /&gt;&lt;br /&gt;Voy en plan de estudiante, &lt;span style="font-weight: bold; font-style: italic;"&gt;voy a aprender&lt;/span&gt;. Si bien no puedo darme el lujo de asistir toda la semana al menos pienso ir el Lunes para escuchar los anuncios de nuevas cosas además de recibir entrenamiento en &lt;a href="http://java.sun.com/javafx/"&gt;JavaFX&lt;/a&gt; y &lt;a href="http://filthyrichclients.org/"&gt;Filthy Rich Clients in Swing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;H-A-R-D-C-O-R-E!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Como dije antes no voy en calidad de reportero / blogger. No me gusta, no tengo tiempo, voy en plan de relajarme. No voy a tener tiempo para hacer &lt;span style="font-style: italic;"&gt;networking&lt;/span&gt; (al menos que haga milagros en un sólo día) pero en cambio voy a pasar el resto del tiempo con mi familia, haciendo un millón de cosas.&lt;br /&gt;&lt;br /&gt;Ahh San Francisco, que mejor manera de conocerte :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://del.icio.us/tag/vacaciones" rel="tag"&gt;&lt;/a&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/vacaciones" rel="tag"&gt;vacaciones&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/vacaciones" rel="tag"&gt;vacaciones&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/vacaciones" rel="tag"&gt;vacaciones&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/javaone" rel="tag"&gt;javaone&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/vacaciones" rel="tag"&gt;vacaciones&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/voy-para-javaone.shtml' title='Voy para JavaOne'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=4168853774817314691&amp;isPopup=true' title='1 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/4168853774817314691'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/4168853774817314691'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-7049920794585088356</id><published>2008-04-22T23:25:00.003-04:00</published><updated>2008-04-23T21:51:00.889-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ping'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidzombie.com'/><title type='text'>No tan estupido: StupidZombie.com</title><content type='html'>Vaya, hoy vengo de un día brutal en la oficina (&lt;span style="font-style: italic;"&gt;y una cena en grupo la cual consistió en una deliciosa cena con comida Griega y su respectivo café&lt;/span&gt;), trabajando en un proyecto delicado (estoy acomodando todo el framework de compilación en instalación del nuestra aplicación de &lt;span style="font-style: italic;"&gt;trading&lt;/span&gt;, un monstrico de 8 años de edad). No todo es aburrido, hoy por fin comienzo a trabajar en un proyecto directamente relacionado con la aplicación de trading, el la cual hay de todo: desde server side programming (sockets, threads y toda la parafernalia) hasta la interfaz gráfica en el lado del cliente.&lt;br /&gt;&lt;br /&gt;¡Wooohooooo!&lt;br /&gt;&lt;br /&gt;Pero no les quería hablar de eso, sino de como hace unos días escribí sobre la muerte de &lt;a href="http://kodegeek.com/2008/04/pingblog-qepd.shtml"&gt;PingBlog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;¿&lt;span style="font-style: italic;"&gt;Que significa dejar atrás PingBlog para mi&lt;/span&gt;? Varias cosas, entre ellas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://svnbook.red-bean.com/"&gt;Aprendiender Subversion&lt;/a&gt;: Si, después de usar CVS y Clearcase (este último abandonado por Rational e IBM), es hora de probar el siguiente sistema más popular. Este proyecto es la excusa perfecta para aprender Subversion.&lt;/li&gt;&lt;li&gt;&lt;a href="https://stupidzombie.dev.java.net/"&gt;Hospedar el proyecto en Java.net&lt;/a&gt;. Si, &lt;a href="http://sf.net/"&gt;Source Forge&lt;/a&gt; es quizas demasiado grande y este proyecto esta enfocado en el lenguaje Java. Quizas esta vez logre entusiasmar a alguien a trabajar conmigo en el proyecto sin necesidad de competir por tanta atención (además de que PingBlog estaba siendo manejado en CVS y una migración a Subversion no estaba en mis planes).&lt;/li&gt;&lt;li&gt;Mejor código: El tiempo ha pasado y tengo mejores ideas para esta versión. Además de que creo que mis trucos de programación han mejorado :)&lt;/li&gt;&lt;li&gt;Más código más rápido: Esta vez pienso pasar más tiempo escribiendo código perfecto y sólo voy a escribir código. Subversion me va a ayudar a echar para atrás esos errores :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Asi que como ya ven, cosas buenas vienen para StupidZombie.&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/stupidzombie.com" rel="tag"&gt;stupidzombie.com&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/ping" rel="tag"&gt;ping&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/blog" rel="tag"&gt;blog&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/open+source" rel="tag"&gt;open source&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/stupidzombie.com" rel="tag"&gt;stupidzombie.com&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ping" rel="tag"&gt;ping&lt;/a&gt;, &lt;a href="http://technorati.com/tag/blog" rel="tag"&gt;blog&lt;/a&gt;, &lt;a href="http://technorati.com/tag/open+source" rel="tag"&gt;open source&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/stupidzombie.com" rel="tag"&gt;stupidzombie.com&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/ping" rel="tag"&gt;ping&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/blog" rel="tag"&gt;blog&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/open+source" rel="tag"&gt;open source&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/stupidzombie.com" rel="tag"&gt;stupidzombie.com&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/ping" rel="tag"&gt;ping&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/blog" rel="tag"&gt;blog&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/open+source" rel="tag"&gt;open source&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/no-tan-estupido-stupidzombiecom.shtml' title='No tan estupido: StupidZombie.com'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=7049920794585088356&amp;isPopup=true' title='4 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7049920794585088356'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7049920794585088356'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-7064436442807091801</id><published>2008-04-20T20:10:00.004-04:00</published><updated>2008-04-20T20:31:13.929-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='pingblog'/><title type='text'>PingBlog: Q.E.P.D</title><content type='html'>Todas las cosas llegan a su fin y hoy, después de mucho tiempo me decidí a matar a &lt;a href="https://sourceforge.net/projects/pinblog"&gt;PingBlog&lt;/a&gt;. Cuando comencé a trabajar en el proyecto estaba tratando de aprender cosas nuevas y creo que es hora de mover esta idea en otra dirección completamente diferente.&lt;br /&gt;&lt;br /&gt;¿Esta realmente muerto o no?&lt;br /&gt;&lt;br /&gt;Bueno, en unos días haré un anuncio aquí en el blog. Pero por ahora &lt;span style="font-style: italic;"&gt;PingBlog&lt;/span&gt; está muerto de seguro :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/open+source" rel="tag"&gt;open source&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://technorati.com/tag/open+source" rel="tag"&gt;open source&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/open+source" rel="tag"&gt;open source&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/open+source" rel="tag"&gt;open source&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/pingblog-qepd.shtml' title='PingBlog: Q.E.P.D'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=7064436442807091801&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7064436442807091801'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7064436442807091801'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-8001025121393496767</id><published>2008-04-19T19:42:00.006-04:00</published><updated>2008-04-19T19:52:10.098-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mortal kombat'/><category scheme='http://www.blogger.com/atom/ns#' term='dc commics'/><category scheme='http://www.blogger.com/atom/ns#' term='subzero'/><category scheme='http://www.blogger.com/atom/ns#' term='worldscollide'/><category scheme='http://www.blogger.com/atom/ns#' term='batman'/><title type='text'>Mortal Kombat Vs DC Comics: Worlds collide</title><content type='html'>&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/PVwWaemMkCE"&gt;  &lt;embed src="http://www.youtube.com/v/PVwWaemMkCE" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y justo cuando yo creía que nunca más jugaría una versión de Mortal Kombat me consigo conque viene una en la cual Subzero, Scorpion, Superman y Batman &lt;a href="http://www.aintitcool.com/node/36454"&gt;pelean hasta la muerte&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ya estoy salivando, y mi dinero esta gastado: &lt;a href="http://www.worldscollide.com/"&gt;Worlds Collide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/mortal+kombat" rel="tag"&gt;mortal kombat&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/dc+commics" rel="tag"&gt;dc commics&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/subzero" rel="tag"&gt;subzero&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/batman" rel="tag"&gt;batman&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/mortal+kombat" rel="tag"&gt;mortal kombat&lt;/a&gt;, &lt;a href="http://technorati.com/tag/dc+commics" rel="tag"&gt;dc commics&lt;/a&gt;, &lt;a href="http://technorati.com/tag/subzero" rel="tag"&gt;subzero&lt;/a&gt;, &lt;a href="http://technorati.com/tag/batman" rel="tag"&gt;batman&lt;/a&gt;, &lt;a href="http://technorati.com/tag/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/mortal+kombat" rel="tag"&gt;mortal kombat&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/dc+commics" rel="tag"&gt;dc commics&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/subzero" rel="tag"&gt;subzero&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/batman" rel="tag"&gt;batman&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/mortal+kombat" rel="tag"&gt;mortal kombat&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/dc+commics" rel="tag"&gt;dc commics&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/subzero" rel="tag"&gt;subzero&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/batman" rel="tag"&gt;batman&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/worldscollide" rel="tag"&gt;worldscollide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/mortal-kombat-vs-dc-comics-worlds.shtml' title='Mortal Kombat Vs DC Comics: Worlds collide'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=8001025121393496767&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/8001025121393496767'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/8001025121393496767'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-7287231236558469475</id><published>2008-04-13T19:07:00.006-04:00</published><updated>2008-04-13T20:10:20.044-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jmx'/><category scheme='http://www.blogger.com/atom/ns#' term='pingblog'/><title type='text'>PingBlog: Agregandole soporte para JMX</title><content type='html'>Realmente el software no &lt;a href="http://java.sun.com/docs/books/tutorial/jmx/index.html"&gt;requiere JMX&lt;/a&gt;. Sin embargo yo estoy aprendiendo a usar el API para otros proyectos en mi trabajo, asi que me decidí a escribir un "hola mundo".&lt;br /&gt;&lt;br /&gt;En el caso de PingBlog yo queria monitorear lo que hace cada instancia de la clase abstracta Pinger, así que declare una interfaz en JMX con la cual:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Puedo ver el estado interno de cada Pinger&lt;/li&gt;&lt;li&gt;Puedo provocar un ping para ver como se porta&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;La interfaz es trivial:&lt;br /&gt;&lt;pre&gt;&lt;a name="line1"&gt; 1&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;package com.blogspot.elangelnegro.blog.pingblog.pinger;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line2"&gt; 2&lt;/a&gt;&lt;br /&gt;&lt;a name="line3"&gt; 3&lt;/a&gt; &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line4"&gt; 4&lt;/a&gt;  * JMX management interface for Ping implementations&lt;br /&gt;&lt;a name="line5"&gt; 5&lt;/a&gt;  * @author josevnz&lt;br /&gt;&lt;a name="line6"&gt; 6&lt;/a&gt;  *&lt;br /&gt;&lt;a name="line7"&gt; 7&lt;/a&gt;  */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line8"&gt; 8&lt;/a&gt; &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;interface&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;PingMBean&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line9"&gt; 9&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line10"&gt;10&lt;/a&gt;   * Ping a given Blog, based on the given settings.&lt;br /&gt;&lt;a name="line11"&gt;11&lt;/a&gt;   * Note than the implementation could fail if you try to ping too fast!&lt;br /&gt;&lt;a name="line12"&gt;12&lt;/a&gt;   * @return If managed to ping or not the remote resource&lt;br /&gt;&lt;a name="line13"&gt;13&lt;/a&gt;   * @throws PingException&lt;br /&gt;&lt;a name="line14"&gt;14&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line15"&gt;15&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;boolean&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;ping&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;throws&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;PingException&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line16"&gt;16&lt;/a&gt;&lt;br /&gt;&lt;a name="line17"&gt;17&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line18"&gt;18&lt;/a&gt;   * Get the message received from the server&lt;br /&gt;&lt;a name="line19"&gt;19&lt;/a&gt;   * @return The message returned from the remote server&lt;br /&gt;&lt;a name="line20"&gt;20&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line21"&gt;21&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;getMessage&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line22"&gt;22&lt;/a&gt;&lt;br /&gt;&lt;a name="line23"&gt;23&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line24"&gt;24&lt;/a&gt;   * Get the raw message received from the server&lt;br /&gt;&lt;a name="line25"&gt;25&lt;/a&gt;   * @return The message returned from the remote server&lt;br /&gt;&lt;a name="line26"&gt;26&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line27"&gt;27&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;abstract&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;getRawMessage&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line28"&gt;28&lt;/a&gt;&lt;br /&gt;&lt;a name="line29"&gt;29&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line30"&gt;30&lt;/a&gt;   * Get the name of the blog being advertised&lt;br /&gt;&lt;a name="line31"&gt;31&lt;/a&gt;   * @return Name of the directory&lt;br /&gt;&lt;a name="line32"&gt;32&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line33"&gt;33&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;getName&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line34"&gt;34&lt;/a&gt;&lt;br /&gt;&lt;a name="line35"&gt;35&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line36"&gt;36&lt;/a&gt;   * Get the URL of the blog being advertised&lt;br /&gt;&lt;a name="line37"&gt;37&lt;/a&gt;   * @return Name of the directory&lt;br /&gt;&lt;a name="line38"&gt;38&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line39"&gt;39&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;getUrl&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line40"&gt;40&lt;/a&gt;&lt;br /&gt;&lt;a name="line41"&gt;41&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line42"&gt;42&lt;/a&gt;   * Get the directory being ping&lt;br /&gt;&lt;a name="line43"&gt;43&lt;/a&gt;   * @return Name of the directory&lt;br /&gt;&lt;a name="line44"&gt;44&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line45"&gt;45&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;getDirectory&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line46"&gt;46&lt;/a&gt;&lt;br /&gt;&lt;a name="line47"&gt;47&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line48"&gt;48&lt;/a&gt;   * Get the status of the last ping operation&lt;br /&gt;&lt;a name="line49"&gt;49&lt;/a&gt;   * @return&lt;br /&gt;&lt;a name="line50"&gt;50&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line51"&gt;51&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;boolean&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;getStatus&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line52"&gt;52&lt;/a&gt;&lt;br /&gt;&lt;a name="line53"&gt;53&lt;/a&gt;&lt;br /&gt;&lt;a name="line54"&gt;54&lt;/a&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;La clase Ping sólo tiene que implementar la interfaz. Luego de esto lo que queda es registrar cada uno de los MBeans para que puedan ser utilizados desde Jconsole en :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;MBeanServer&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;mbs&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;br /&gt;ManagementFactory&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;getPlatformMBeanServer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;strong&gt;try&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(32, 64, 160);"&gt;ObjectName&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;mbeanName&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt;&lt;br /&gt;    &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;ObjectName&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;format&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"com.blogspot.&lt;br /&gt;elangelnegro.blog.pingblog.pinger:type=%s"&lt;/span&gt;,&lt;br /&gt;        &lt;span style="color: rgb(32, 64, 160);"&gt;ping&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;getInstanceName&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(32, 64, 160);"&gt;mbs&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;registerMBean&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;ping&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;mbeanName&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;MBeanRegistrationException&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;mre&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;   &lt;strong&gt;throw&lt;/strong&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;PingException&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;mre&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;NotCompliantMBeanException&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;nce&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;   &lt;strong&gt;throw&lt;/strong&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;PingException&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;nce&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;InstanceAlreadyExistsException&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;iaex&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;   &lt;strong&gt;throw&lt;/strong&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;PingException&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;iaex&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;MalformedObjectNameException&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;mne&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;   &lt;strong&gt;throw&lt;/strong&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;PingException&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;mne&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;PingException&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;pExp&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;strong&gt;throw&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;pExp&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;strong&gt;return&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;ping&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;También le agregué lo siguiente al Shell Script que llama a la clase de Java (cuando es usado desde la linea de comandos y no la interfaz gráfica):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;exec &lt;span style="color: rgb(32, 64, 160);"&gt;$J&lt;/span&gt;AVA_HOME/bin/java -cp &lt;span style="color: rgb(32, 64, 160);"&gt;$C&lt;/span&gt;LASSPATH&lt;br /&gt;-Dcom.sun.management.jmxremote&lt;br /&gt;com.blogspot.elangelnegro.blog.pingblog.pinger.PingController &lt;span style="color: rgb(64, 128, 255);"&gt;$*&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/jmx" rel="tag"&gt;jmx&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://technorati.com/tag/jmx" rel="tag"&gt;jmx&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/jmx" rel="tag"&gt;jmx&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/pingblog" rel="tag"&gt;pingblog&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/jmx" rel="tag"&gt;jmx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/pingblog-agregandole-soporte-para-jmx.shtml' title='PingBlog: Agregandole soporte para JMX'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=7287231236558469475&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7287231236558469475'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7287231236558469475'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-9073611003179683613</id><published>2008-04-11T17:12:00.004-04:00</published><updated>2008-04-11T17:28:19.255-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appleseed'/><category scheme='http://www.blogger.com/atom/ns#' term='ex machina'/><category scheme='http://www.blogger.com/atom/ns#' term='manga'/><title type='text'>Appleseed Ex Machina: Cuando la segunda parte es mejor que la primera</title><content type='html'>En el 2005 les comentaba &lt;a href="http://elangelnegro.blogspot.com/2005/01/opinin-de-pelicula-appleseed-el-futuro.html"&gt;sobre Appleseed, la pelicula&lt;/a&gt; y de como me impactaron sus gráficos por computadora, lo fluido de su acción y lo interesante de su trama.&lt;br /&gt;&lt;br /&gt;La pelicula del 2004 fué un exito y en mi opinión perfecta, así que cuando vi que Netflix ofrecía una versión nueva me entró panico:&lt;br /&gt;&lt;br /&gt;¿Seria una versión mal hecha como las múltiples versiones de Ghost in the Shell?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Appleseed_Ex_Machina"&gt;Applessed Ex Machina&lt;/a&gt; continua la historia de nuestros dos heroes, Briareos y  Deunan. De nuevo la trama no decepciona, los gráficos por computadora son mucho mejores que la primera pelicula (¿es eso posible?), la acción dirigida por John Woo tiene su firma.&lt;br /&gt;&lt;br /&gt;La pelicula es todo un espectaculo. Si tiene la oportunidad, trate de verla. Para aquellos que ya la vieron, los invito a discutir, hay muchisimos puntos interesantes y preguntas :)&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/appleseed" rel="tag"&gt;appleseed&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/ex+machina" rel="tag"&gt;ex machina&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/manga" rel="tag"&gt;manga&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/appleseed" rel="tag"&gt;appleseed&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ex+machina" rel="tag"&gt;ex machina&lt;/a&gt;, &lt;a href="http://technorati.com/tag/manga" rel="tag"&gt;manga&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/appleseed" rel="tag"&gt;appleseed&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/ex+machina" rel="tag"&gt;ex machina&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/manga" rel="tag"&gt;manga&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/appleseed" rel="tag"&gt;appleseed&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/ex+machina" rel="tag"&gt;ex machina&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/manga" rel="tag"&gt;manga&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/appleseed-ex-machina-cuando-la-segunda.shtml' title='Appleseed Ex Machina: Cuando la segunda parte es mejor que la primera'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=9073611003179683613&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/9073611003179683613'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/9073611003179683613'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-7865528670662001128</id><published>2008-04-10T06:54:00.008-04:00</published><updated>2008-04-10T07:20:28.683-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='job control'/><category scheme='http://www.blogger.com/atom/ns#' term='subshell'/><title type='text'>Cuando Shell no es suficiente: Subshell</title><content type='html'>OK, un pequeño ejercicio para el lector: Suponga que tenemos 5 tareas que toman bastante tiempo en completar:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;slowRubyScriptA&lt;/li&gt;&lt;li&gt;slowRubyScriptB&lt;/li&gt;&lt;li&gt;slowRubyScriptC&lt;/li&gt;&lt;li&gt;slowRubyScriptD&lt;/li&gt;&lt;li&gt;slowRubyScriptE&lt;/li&gt;&lt;li&gt;slowRubyScriptF&lt;/li&gt;&lt;/ol&gt;  &lt;br /&gt;Y deben correr en el siguiente orden:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;B,C dependende de A&lt;/li&gt;&lt;li&gt;D depende de C,B&lt;/li&gt;&lt;li&gt;E,F tardan mucho más que los demás y no dependen de nadie&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Una forma de hacerlo es:&lt;br /&gt;&lt;pre&gt;&lt;a name="line1"&gt; &lt;/a&gt;&lt;blockquote&gt;&lt;a name="line1"&gt;1&lt;/a&gt; #!/bin/bash&lt;br /&gt;&lt;a name="line2"&gt; 2&lt;/a&gt; (&lt;br /&gt;&lt;a name="line3"&gt; 3&lt;/a&gt; (&lt;br /&gt;&lt;a name="line4"&gt; 4&lt;/a&gt; slowRubyScriptA&lt;br /&gt;&lt;a name="line5"&gt; 5&lt;/a&gt; slowRubyScriptB &amp;amp;&lt;br /&gt;&lt;a name="line6"&gt; 6&lt;/a&gt; slowRubyScriptC &amp;amp;&lt;br /&gt;&lt;a name="line7"&gt; 7&lt;/a&gt; ) &amp;amp;&lt;br /&gt;&lt;a name="line8"&gt; 8&lt;/a&gt; wait&lt;br /&gt;&lt;a name="line9"&gt; 9&lt;/a&gt; slowRubyScriptD&lt;br /&gt;&lt;a name="line10"&gt;10&lt;/a&gt; ) &amp;amp;&lt;br /&gt;&lt;a name="line11"&gt;11&lt;/a&gt;&lt;br /&gt;&lt;a name="line12"&gt;12&lt;/a&gt; slowRubyScriptE &amp;amp;&lt;br /&gt;&lt;a name="line13"&gt;13&lt;/a&gt; slowRubyScriptF &amp;amp;&lt;br /&gt;&lt;a name="line14"&gt;14&lt;/a&gt; wait&lt;br /&gt;&lt;a name="line15"&gt;15&lt;/a&gt; echo "All done"&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si, el ejemplo no es muy útil pero muestra una caracteristica muy útil de Bash y otros Shell: El uso de &lt;span style="font-style: italic;"&gt;Subshells&lt;/span&gt;. Fijese como no hubo necesidad de escribir otro script adicional para arrancar nuestros comandos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/subshell" rel="tag"&gt;subshell&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/job+control" rel="tag"&gt;job control&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://technorati.com/tag/subshell" rel="tag"&gt;subshell&lt;/a&gt;, &lt;a href="http://technorati.com/tag/job+control" rel="tag"&gt;job control&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/subshell" rel="tag"&gt;subshell&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/job+control" rel="tag"&gt;job control&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/subshell" rel="tag"&gt;subshell&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/job+control" rel="tag"&gt;job control&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/cuando-shell-no-es-suficiente-subshell.shtml' title='Cuando Shell no es suficiente: Subshell'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=7865528670662001128&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7865528670662001128'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/7865528670662001128'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-1568200390599995751</id><published>2008-04-06T13:50:00.004-04:00</published><updated>2008-04-06T13:54:37.912-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go nagai'/><category scheme='http://www.blogger.com/atom/ns#' term='transor z'/><category scheme='http://www.blogger.com/atom/ns#' term='mazinger z'/><title type='text'>Mazinger Z en la red</title><content type='html'>&lt;a href="http://www.flickr.com/photos/josevnz/28642785/" title="Mazinger Z by josevnz, on Flickr"&gt;&lt;img src="http://farm1.static.flickr.com/21/28642785_8df667983e.jpg" alt="Mazinger Z" height="500" width="375" /&gt;&lt;br /&gt;Mazinger Z&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La fiebre de Mazinger Z no disminuye, sino al contrario sigue creciendo. Ahora con su grupo en &lt;a href="http://www.facebook.com/pages/Mazinger/10637918778"&gt;Facebook&lt;/a&gt; y el grupo de fotos en &lt;a href="http://www.flickr.com/groups/mazinger/"&gt;Flickr&lt;/a&gt;, tenemos un sitio en común en donde compartir acerca del iconico robot.&lt;br /&gt;&lt;br /&gt;Mazinger go!&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/mazinger+z" rel="tag"&gt;mazinger z&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/transor+z" rel="tag"&gt;transor z&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/go+nagai" rel="tag"&gt;go nagai&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/mazinger+z" rel="tag"&gt;mazinger z&lt;/a&gt;, &lt;a href="http://technorati.com/tag/transor+z" rel="tag"&gt;transor z&lt;/a&gt;, &lt;a href="http://technorati.com/tag/go+nagai" rel="tag"&gt;go nagai&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/mazinger+z" rel="tag"&gt;mazinger z&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/transor+z" rel="tag"&gt;transor z&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/go+nagai" rel="tag"&gt;go nagai&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/mazinger+z" rel="tag"&gt;mazinger z&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/transor+z" rel="tag"&gt;transor z&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/go+nagai" rel="tag"&gt;go nagai&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/04/mazinger-z-en-la-red.shtml' title='Mazinger Z en la red'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=1568200390599995751&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/1568200390599995751'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/1568200390599995751'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-3410421245148525821</id><published>2008-03-29T22:43:00.004-04:00</published><updated>2008-03-29T22:48:07.670-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='html to rss'/><category scheme='http://www.blogger.com/atom/ns#' term='rome'/><category scheme='http://www.blogger.com/atom/ns#' term='globovision'/><title type='text'>Mejoras al RSS de Globovision</title><content type='html'>Bueno, he estado MUY ocupado debido a lo movido que ha estado el mercado de opciones estas últimas 3 semanas (incluyendo la caida estrepitosa de Bearn Sterns). Sin embargo hoy corregí un par de errores en el archivo de Ant y al fin monté la primera versión en Java del convertido de HTML a RSS de Globovisión (en un &lt;a href="http://kodegeek.com/2009/03/rss-de-globovision-est-roto-ii-java-al.shtml"&gt;articulo anterior&lt;/a&gt; les mostraba el código y porqué me decidí a escribirlo).&lt;br /&gt;&lt;br /&gt;La versión de Perl quedará en la historia :)&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/globovision" rel="tag"&gt;globovision&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/html+to+rss" rel="tag"&gt;html to rss&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/rome" rel="tag"&gt;rome&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/globovision" rel="tag"&gt;globovision&lt;/a&gt;, &lt;a href="http://technorati.com/tag/html+to+rss" rel="tag"&gt;html to rss&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/rome" rel="tag"&gt;rome&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/globovision" rel="tag"&gt;globovision&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/html+to+rss" rel="tag"&gt;html to rss&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/rome" rel="tag"&gt;rome&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/globovision" rel="tag"&gt;globovision&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/html+to+rss" rel="tag"&gt;html to rss&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/rome" rel="tag"&gt;rome&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/03/mejoras-al-rss-de-globovision.shtml' title='Mejoras al RSS de Globovision'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=3410421245148525821&amp;isPopup=true' title='0 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/3410421245148525821'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/3410421245148525821'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-2572323722581851011</id><published>2008-03-15T10:19:00.003-04:00</published><updated>2008-03-15T20:50:30.706-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pkill'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='kill -9'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>Trucos UNIX: ¿Como matar todos los procesos de un usuario?</title><content type='html'>Bueno, si usted tiene un montón de servidores a los cuales se puede conectar con SSH y lo quiere es matar todos los procesos de un usuario en particular, entonces puede usar algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;a name="line1"&gt;1&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;#!/bin/bash&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line2"&gt;2&lt;/a&gt; for machine in `cat myhostfile`; do&lt;br /&gt;&lt;a name="line3"&gt;3&lt;/a&gt;     ssh -x -q -f &lt;span style="color: rgb(32, 64, 160);"&gt;$machine&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;"/usr/bin/pkill -9 -U myuser"&lt;/span&gt;&lt;br /&gt;&lt;a name="line4"&gt;4&lt;/a&gt; done&lt;br /&gt;&lt;/pre&gt;Funciona bajo Solaris 7 o superior y Linux. OS X por supuesto no lo tiene :(&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/pkill" rel="tag"&gt;pkill&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/ssh" rel="tag"&gt;ssh&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/kill+-9" rel="tag"&gt;kill -9&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/pkill" rel="tag"&gt;pkill&lt;/a&gt;, &lt;a href="http://technorati.com/tag/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ssh" rel="tag"&gt;ssh&lt;/a&gt;, &lt;a href="http://technorati.com/tag/kill+-9" rel="tag"&gt;kill -9&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/pkill" rel="tag"&gt;pkill&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/ssh" rel="tag"&gt;ssh&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/kill+-9" rel="tag"&gt;kill -9&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/pkill" rel="tag"&gt;pkill&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/bash" rel="tag"&gt;bash&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/ssh" rel="tag"&gt;ssh&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/kill+-9" rel="tag"&gt;kill -9&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/03/trucos-unix-como-matar-todos-los.shtml' title='Trucos UNIX: ¿Como matar todos los procesos de un usuario?'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=2572323722581851011&amp;isPopup=true' title='1 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/2572323722581851011'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/2572323722581851011'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-1331369638498146245</id><published>2008-03-12T10:37:00.000-04:00</published><updated>2008-03-12T22:40:15.348-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jruby'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='jperl'/><category scheme='http://www.blogger.com/atom/ns#' term='beanshell'/><title type='text'>¡Java es el nuevo Perl!</title><content type='html'>¿Java es el nuevo Perl?. ¿Será porque está muerto? No, todo lo contrario, gracias a &lt;strike&gt;scripting languajes&lt;/strike&gt; lenguajes interpretados Java sigue creciendo en direcciones muy diversas.&lt;br /&gt;&lt;br /&gt;Quiero empezar este pequeño análisis diciendo que &lt;span style="font-style: italic;"&gt;yo adoro Perl&lt;/span&gt;; Yo lo aprendí por mi cuenta (si, para ese entonces no habían cursos de Perl y quizas el único manual autorizado era el libro del camello de O'Reilly). La versatilidad del lenguaje, la cantidad de librerías en CPAN y la enorme cantidad de código y ejemplos de como resolver problemas en la Internet lo hicieron el favorito.&lt;br /&gt;&lt;br /&gt;Pero vamos a estar claros: Perl lleva años en el abandono. El modelo de "threads" es un fastidio, la orientación a objetos en Perl si bien no es difícil tiene varias diferencias comparada con otros lenguajes (y por ende es más difícil de aprender en mi opinión, al menos que a usted no le cause picazón el "bless") pero sobre todo, &lt;a href="http://www.parrotcode.org/"&gt;Parrot&lt;/a&gt; (el nuevo interprete de Perl 6) no termina de salir a la luz publica.&lt;br /&gt;&lt;br /&gt;Y entonces viene Java con su soporte a lenguajes interpretados como Python (&lt;a href="http://www.jython.org/Project/index.html"&gt;Jython&lt;/a&gt;), Ruby (&lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt;) y sus lenguajes con merito propio como &lt;a href="http://www.beanshell.org/"&gt;BeanShel&lt;/a&gt;l y&lt;a href="http://groovy.codehaus.org/"&gt; Groovy&lt;/a&gt;. Sin embargo nadie ha escrito un &lt;span style="font-style: italic;"&gt;JPerl&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Mi tiempo es muy limitado estos días (trabajo, un niño pequeño) como para ponerme a inventar a aprender un lenguaje exótico el cual nunca voy a utilizar o sacar algún provecho; Sin embargo (y gracias a Java) he podido jugar con Jython en mi trabajo aprovechando código que ya tenemos escrito en Java mientras hago las mismas cosas que hubiera hecho en Perl. Por otro lado, tenemos ya código escrito en BeanShell lo cual significa que yo no seré el único en mi grupo que puede mantener el código.&lt;br /&gt;&lt;br /&gt;Es muy interesante la experiencia, ya que por ejemplo aún sin saber la sintaxis completa de Python puedo resolver problemas ya que puedo importar clases de Java y utilizar sus funcionalidades. Si, es una muleta pero a la vez mantiene la productividad y me permite aprender el lenguaje al mismo tiempo. El mismo argumento va para JRuby.&lt;br /&gt;&lt;br /&gt;¿Jython vs. JRuby en mi oficina? Bueno, Python se ve interesante, pero como dijo un PHD de mi grupo, "a quien se le ocurre utilizar un lenguaje que utiliza identación para definir alcance". También tuve problemas cuando traté de importar el modulo de expresiones regulares (import re).&lt;br /&gt;&lt;br /&gt;¿Porque no un &lt;a href="http://www.ddj.com/windows/184410852"&gt;JPerl&lt;/a&gt; (no como el paquete JPerl, escrito en C++)? Quizas es la sintaxis, aunque &lt;a href="http://www.perl.org.il/pipermail/perl/2008-January/009361.html"&gt;no soy el primero&lt;/a&gt; que se hace la misma pregunta.&lt;br /&gt;&lt;br /&gt;En fin, parece ser que la decisión de que usar como scripting languages en Java se reduce en mi caso a:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Beanshell: No tiene curva de aprendizaje comparado con Jython, JRuby, además de que va a ser parte del JDK en un futuro no muy lejano (estandar de Java)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;JRuby: Más popular que Python (gracias a Rails). Y no usa identación como loco :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Lo siento Perl. Pero Parrot te mató y le mundo se sigue moviendo. Por ahora, tu futuro está en la misma liga que el Kernel de &lt;a href="http://www.gnu.org/software/hurd/hurd.html"&gt;GNU Hurd&lt;/a&gt; (el cual existe  y a nadie le vale un bledo :)).&lt;br /&gt;&lt;br /&gt;Buscar en otros sitios:&lt;br /&gt;&lt;br /&gt;Blogalaxia:&lt;a href="http://www.blogalaxia.com/tags/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/jperl" rel="tag"&gt;jperl&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/jruby" rel="tag"&gt;jruby&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/jython" rel="tag"&gt;jython&lt;/a&gt;, &lt;a href="http://www.blogalaxia.com/tags/beanshell" rel="tag"&gt;beanshell&lt;/a&gt;&lt;br /&gt;Technorati:&lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/jperl" rel="tag"&gt;jperl&lt;/a&gt;, &lt;a href="http://technorati.com/tag/jruby" rel="tag"&gt;jruby&lt;/a&gt;, &lt;a href="http://technorati.com/tag/jython" rel="tag"&gt;jython&lt;/a&gt;, &lt;a href="http://technorati.com/tag/beanshell" rel="tag"&gt;beanshell&lt;/a&gt;&lt;br /&gt;To2blogs:&lt;a href="http://www.to2blogs.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/jperl" rel="tag"&gt;jperl&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/jruby" rel="tag"&gt;jruby&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/jython" rel="tag"&gt;jython&lt;/a&gt;, &lt;a href="http://www.to2blogs.com/tag/beanshell" rel="tag"&gt;beanshell&lt;/a&gt;&lt;br /&gt;Del.icio.us:&lt;a href="http://del.icio.us/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/jperl" rel="tag"&gt;jperl&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/jruby" rel="tag"&gt;jruby&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/jython" rel="tag"&gt;jython&lt;/a&gt;, &lt;a href="http://del.icio.us/tag/beanshell" rel="tag"&gt;beanshell&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2735459391089659";
/* 468x15, created 3/2/08,aviso para articulos */
google_ad_slot = "5680598537";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://kodegeek.com/2008/03/java-es-el-nuevo-perl.shtml' title='¡Java es el nuevo Perl!'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14980572&amp;postID=1331369638498146245&amp;isPopup=true' title='2 comentarios'/><link rel='replies' type='application/atom+xml' href='http://kodegeek.com/atom.xml' title='Enviar comentarios'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/1331369638498146245'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14980572/posts/default/1331369638498146245'/><author><name>KodeGeek</name></author></entry><entry><id>tag:blogger.com,1999:blog-14980572.post-2939904100376376847</id><published>2008-03-09T22:00:00.000-04:00</published><updated>2008-03-13T07:10:10.089-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML::RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Lunar Pages'/><category scheme='http://www.blogger.com/atom/ns#' term='HTMLEditorKit'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>RSS de Globovision está roto II: Java al rescate</title><content type='html'>Bueno, &lt;a href="http://kodegeek.com/2008/03/rss-de-globovision-est-roto-i.shtml"&gt;varias horas después y sin respuesta de Lunar Pages&lt;/a&gt;, 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 &lt;span style="font-style: italic;"&gt;HTML&lt;/span&gt;, y el daño es demasiado para el ya sensible JTidy:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;line 15 column 1 - Warning: unexpected &amp;lt;/head&amp;gt; in &amp;lt;link&amp;gt;&lt;br /&gt;line 20 column 165 - Warning: unexpected &amp;lt;/a&amp;gt; in &amp;lt;img&amp;gt;&lt;br /&gt;line 20 column 169 - Warning: unexpected &amp;lt;/td&amp;gt; in &amp;lt;img&amp;gt;&lt;br /&gt;line 23 column 97 - Warning: unexpected &amp;lt;/td&amp;gt; in &amp;lt;img&amp;gt;&lt;br /&gt;line 24 column 5 - Warning: unexpected &amp;lt;/tr&amp;gt; in &amp;lt;img&amp;gt;&lt;br /&gt;line 26 column 93 - Warning: unexpected &amp;lt;/a&amp;gt; in &amp;lt;img&amp;gt;&lt;br /&gt;line 26 column 97 - Warning: unexpected &amp;lt;/td&amp;gt; in &amp;lt;img&amp;gt;&lt;br /&gt;This document has errors that must be fixed before&lt;br /&gt;using HTML Tidy to generate a tidied up version.&lt;br /&gt;&lt;/pre&gt;Asi que, ¿como procesar un documento que está así de roto en Java?&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://java.sun.com/products/jfc/tsc/articles/bookmarks/"&gt;pero afuera de sus componentes gráficos&lt;/a&gt;. 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.&lt;br /&gt;&lt;br /&gt;Después de buscar un poco me decidí a usar &lt;a href="https://rome.dev.java.net/"&gt;la librería Rome&lt;/a&gt;. 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 :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://elangelnegro.cvs.sourceforge.net/elangelnegro/src/java/main/com/kodegeek/blog/rss/GlobovisionHtml2Rss.java?view=markup"&gt;El código&lt;/a&gt; como siempre está en Source Forge, en el sitio de KodeGeek. Se los pongo aquí por comodidad:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;a name="line1"&gt;  1&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;package com.kodegeek.blog.rss;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line2"&gt;  2&lt;/a&gt;&lt;br /&gt;&lt;a name="line3"&gt;  3&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.io.BufferedReader;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line4"&gt;  4&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.io.FileWriter;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line5"&gt;  5&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.io.InputStreamReader;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line6"&gt;  6&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.io.Reader;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line7"&gt;  7&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.io.Writer;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line8"&gt;  8&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.net.URL;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line9"&gt;  9&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.util.ArrayList;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line10"&gt; 10&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.util.Date;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line11"&gt; 11&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.util.List;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line12"&gt; 12&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.util.logging.Level;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line13"&gt; 13&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import java.util.logging.Logger;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line14"&gt; 14&lt;/a&gt;&lt;br /&gt;&lt;a name="line15"&gt; 15&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import javax.swing.text.AttributeSet;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line16"&gt; 16&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import javax.swing.text.MutableAttributeSet;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line17"&gt; 17&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import javax.swing.text.html.HTML;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line18"&gt; 18&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import javax.swing.text.html.HTML.Tag;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line19"&gt; 19&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import javax.swing.text.html.HTMLEditorKit.ParserCallback;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line20"&gt; 20&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import javax.swing.text.html.parser.ParserDelegator;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line21"&gt; 21&lt;/a&gt;&lt;br /&gt;&lt;a name="line22"&gt; 22&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import com.sun.syndication.feed.synd.SyndEntry;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line23"&gt; 23&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import com.sun.syndication.feed.synd.SyndEntryImpl;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line24"&gt; 24&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import com.sun.syndication.feed.synd.SyndFeed;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line25"&gt; 25&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import com.sun.syndication.feed.synd.SyndFeedImpl;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line26"&gt; 26&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;import com.sun.syndication.io.SyndFeedOutput;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line27"&gt; 27&lt;/a&gt;&lt;br /&gt;&lt;a name="line28"&gt; 28&lt;/a&gt;&lt;br /&gt;&lt;a name="line29"&gt; 29&lt;/a&gt; &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line30"&gt; 30&lt;/a&gt;  * Program that converts the main summary news from Globovision.com&lt;br /&gt;to RSS format.&lt;br /&gt;&lt;a name="line31"&gt; 31&lt;/a&gt;  * @author josevnz at kodeeek.com&lt;br /&gt;&lt;a name="line32"&gt; 32&lt;/a&gt;  * &lt;p&gt;License: GPL&lt;/p&gt;&lt;br /&gt;&lt;a name="line33"&gt; 33&lt;/a&gt;  * I use a combination of Yahoo Pipes and Google Reader to keep me&lt;br /&gt;updated about news of any kind. However, some websites like&lt;br /&gt;&lt;a name="line34"&gt; 34&lt;/a&gt;  * Globovision.com still don't have a proper RSS feed,&lt;br /&gt;so one day I&lt;br /&gt;decided to create my own mashup :).&lt;br /&gt;&lt;a name="line35"&gt; 35&lt;/a&gt;  * It worked for a while until my Blog hosting provider&lt;br /&gt;decided to&lt;br /&gt;remove the XML::RSS Perl module I asked to install for me.&lt;br /&gt;Because of that,&lt;br /&gt;&lt;a name="line36"&gt; 36&lt;/a&gt;  * this Java version was born.&lt;br /&gt;&lt;a name="line37"&gt; 37&lt;/a&gt;  */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line38"&gt; 38&lt;/a&gt; &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;final&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;GlobovisionHtml2Rss&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line39"&gt; 39&lt;/a&gt;&lt;br /&gt;&lt;a name="line40"&gt; 40&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;final&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;GLOBOVISION_URL&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;"http://globovision.com"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line41"&gt; 41&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;final&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;NEWS_URL&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;GLOBOVISION_URL&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;"/history.php?cha=1&amp;amp;pag=1"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line42"&gt; 42&lt;/a&gt;&lt;br /&gt;&lt;a name="line43"&gt; 43&lt;/a&gt;  &lt;strong&gt;private&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Logger&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line44"&gt; 44&lt;/a&gt;  &lt;strong&gt;private&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;final&lt;/strong&gt; &lt;strong&gt;long&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;DEFAULT_WAIT&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;1000L&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;60L&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;5L&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line45"&gt; 45&lt;/a&gt;&lt;br /&gt;&lt;a name="line46"&gt; 46&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;// Do not alow instances of this class to be created&lt;/span&gt;&lt;br /&gt;&lt;a name="line47"&gt; 47&lt;/a&gt;  &lt;strong&gt;private&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;GlobovisionHtml2Rss&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line48"&gt; 48&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 68);"&gt;// Empty&lt;/span&gt;&lt;br /&gt;&lt;a name="line49"&gt; 49&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line50"&gt; 50&lt;/a&gt;&lt;br /&gt;&lt;a name="line51"&gt; 51&lt;/a&gt;  &lt;strong&gt;static&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line52"&gt; 52&lt;/a&gt;&lt;br /&gt;&lt;a name="line53"&gt; 53&lt;/a&gt;   &lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Logger&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;getLogger&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;GlobovisionHtml2Rss&lt;/span&gt;.&lt;strong&gt;class&lt;/strong&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;getName&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line54"&gt; 54&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line55"&gt; 55&lt;/a&gt;&lt;br /&gt;&lt;a name="line56"&gt; 56&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line57"&gt; 57&lt;/a&gt;   * @param args&lt;br /&gt;&lt;a name="line58"&gt; 58&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line59"&gt; 59&lt;/a&gt;  &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;main&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;args&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;throws&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Exception&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line60"&gt; 60&lt;/a&gt;&lt;br /&gt;&lt;a name="line61"&gt; 61&lt;/a&gt;   &lt;strong&gt;try&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line62"&gt; 62&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;fetch&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;NEWS_URL&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;args&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line63"&gt; 63&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;Exception&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;exp&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line64"&gt; 64&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;Level&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;SEVERE&lt;/span&gt;, &lt;span style="color: rgb(0, 128, 0);"&gt;"Cannot recover from this&lt;br /&gt;exception"&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;exp&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line65"&gt; 65&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line66"&gt; 66&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line67"&gt; 67&lt;/a&gt;&lt;br /&gt;&lt;a name="line68"&gt; 68&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line69"&gt; 69&lt;/a&gt;   * Try to fetch the URL and convert it to a Document&lt;br /&gt;&lt;a name="line70"&gt; 70&lt;/a&gt;   * @param url&lt;br /&gt;&lt;a name="line71"&gt; 71&lt;/a&gt;   * @param outfile&lt;br /&gt;&lt;a name="line72"&gt; 72&lt;/a&gt;   * @return&lt;br /&gt;&lt;a name="line73"&gt; 73&lt;/a&gt;   * @throws Exception&lt;br /&gt;&lt;a name="line74"&gt; 74&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line75"&gt; 75&lt;/a&gt;  &lt;strong&gt;private&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;fetch&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;url&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;outfile&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;&lt;br /&gt;throws&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Exception&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line76"&gt; 76&lt;/a&gt;   &lt;span style="color: rgb(32, 64, 160);"&gt;Reader&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;reader&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;null&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line77"&gt; 77&lt;/a&gt;   &lt;span style="color: rgb(32, 64, 160);"&gt;Writer&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;writer&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;null&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line78"&gt; 78&lt;/a&gt;   &lt;span style="color: rgb(32, 64, 160);"&gt;SyndFeed&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line79"&gt; 79&lt;/a&gt;   &lt;span style="color: rgb(32, 64, 160);"&gt;List&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;SyndEntry&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;news&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;ArrayList&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;SyndEntry&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line80"&gt; 80&lt;/a&gt;   &lt;strong&gt;try&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line81"&gt; 81&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;SyndFeedImpl&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line82"&gt; 82&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;setAuthor&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"Jose Nunez, josevnz at kodegeek.com"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line83"&gt; 83&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;setDescription&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"Globovision.com news - Brough to&lt;br /&gt;you by http://KodeGeek.com"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line84"&gt; 84&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;setFeedType&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"rss_1.0"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line85"&gt; 85&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;setLink&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"http://www.kodegeek.com/rss/globovision.rss"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line86"&gt; 86&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;setTitle&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"Globovision.com Venezuelan News"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line87"&gt; 87&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;URL&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;globovisionURL&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;URL&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;url&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line88"&gt; 88&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;reader&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;BufferedReader&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;InputStreamReader&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;globovisionURL&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;openStream&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line89"&gt; 89&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;ParserDelegator&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;parser&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;ParserDelegator&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line90"&gt; 90&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;parser&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;parse&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;reader&lt;/span&gt;, &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;GlobovisionHtml2Rss&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;.&lt;br /&gt;&lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;GlobovisionParser&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;news&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;, &lt;strong&gt;false&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line91"&gt; 91&lt;/a&gt;    &lt;strong&gt;if&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;news&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;size&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line92"&gt; 92&lt;/a&gt;     &lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;setEntries&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;news&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line93"&gt; 93&lt;/a&gt;     &lt;span style="color: rgb(32, 64, 160);"&gt;writer&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;FileWriter&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;outfile&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line94"&gt; 94&lt;/a&gt;     &lt;span style="color: rgb(32, 64, 160);"&gt;SyndFeedOutput&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;feedOut&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;SyndFeedOutput&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line95"&gt; 95&lt;/a&gt;     &lt;span style="color: rgb(32, 64, 160);"&gt;feedOut&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;output&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;feed&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;writer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line96"&gt; 96&lt;/a&gt;    &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line97"&gt; 97&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;Exception&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;exp&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line98"&gt; 98&lt;/a&gt;    &lt;strong&gt;throw&lt;/strong&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Exception&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"Unexpected problem"&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;exp&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line99"&gt; 99&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;finally&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line100"&gt;100&lt;/a&gt;&lt;br /&gt;&lt;a name="line101"&gt;101&lt;/a&gt;    &lt;strong&gt;if&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;reader&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;null&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line102"&gt;102&lt;/a&gt;     &lt;span style="color: rgb(32, 64, 160);"&gt;reader&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;close&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line103"&gt;103&lt;/a&gt;    &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line104"&gt;104&lt;/a&gt;&lt;br /&gt;&lt;a name="line105"&gt;105&lt;/a&gt;    &lt;strong&gt;if&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;writer&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;null&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line106"&gt;106&lt;/a&gt;     &lt;span style="color: rgb(32, 64, 160);"&gt;writer&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;close&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line107"&gt;107&lt;/a&gt;    &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line108"&gt;108&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;news&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;clear&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line109"&gt;109&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line110"&gt;110&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line111"&gt;111&lt;/a&gt;&lt;br /&gt;&lt;a name="line112"&gt;112&lt;/a&gt;  &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line113"&gt;113&lt;/a&gt;   * Helper class used to parse Globovision news website&lt;br /&gt;&lt;a name="line114"&gt;114&lt;/a&gt;   * @author josevnz&lt;br /&gt;&lt;a name="line115"&gt;115&lt;/a&gt;   */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line116"&gt;116&lt;/a&gt;  &lt;strong&gt;class&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;GlobovisionParser&lt;/span&gt; &lt;strong&gt;extends&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;ParserCallback&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line117"&gt;117&lt;/a&gt;&lt;br /&gt;&lt;a name="line118"&gt;118&lt;/a&gt;   &lt;strong&gt;private&lt;/strong&gt; &lt;strong&gt;boolean&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;getHeadline&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;false&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line119"&gt;119&lt;/a&gt;   &lt;strong&gt;private&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;AttributeSet&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;attribute&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line120"&gt;120&lt;/a&gt;   &lt;strong&gt;private&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;List&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;SyndEntry&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;entries&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line121"&gt;121&lt;/a&gt;&lt;br /&gt;&lt;a name="line122"&gt;122&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;GlobovisionParser&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;List&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;SyndEntry&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;entries&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line123"&gt;123&lt;/a&gt;    &lt;strong&gt;this&lt;/strong&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;entries&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;entries&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line124"&gt;124&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line125"&gt;125&lt;/a&gt;&lt;br /&gt;&lt;a name="line126"&gt;126&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line127"&gt;127&lt;/a&gt;    * Globovision HTML is so broken than we will ignore the errors&lt;br /&gt;silently.&lt;br /&gt;&lt;a name="line128"&gt;128&lt;/a&gt;    * Increase the logger verbosity to see the errors&lt;br /&gt;&lt;a name="line129"&gt;129&lt;/a&gt;    */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line130"&gt;130&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;handleError&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;errorMsg&lt;/span&gt;, &lt;strong&gt;int&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;pos&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line131"&gt;131&lt;/a&gt;    &lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;Level&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;FINE&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;format&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"%s, %d"&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;errorMsg&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;pos&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line132"&gt;132&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line133"&gt;133&lt;/a&gt;&lt;br /&gt;&lt;a name="line134"&gt;134&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line135"&gt;135&lt;/a&gt;    * Looking for:  tag = "a" and  attr{href} =~ /news.php?nid=\d+/&lt;br /&gt;&lt;a name="line136"&gt;136&lt;/a&gt;    * @param t Tag&lt;br /&gt;&lt;a name="line137"&gt;137&lt;/a&gt;    * @param a Attribute set&lt;br /&gt;&lt;a name="line138"&gt;138&lt;/a&gt;    * @param pos position&lt;br /&gt;&lt;a name="line139"&gt;139&lt;/a&gt;    */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line140"&gt;140&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;handleStartTag&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;Tag&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;t&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;MutableAttributeSet&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;a&lt;/span&gt;, &lt;strong&gt;int&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;pos&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line141"&gt;141&lt;/a&gt;    &lt;strong&gt;if&lt;/strong&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line142"&gt;142&lt;/a&gt;      &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;t&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Tag&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;A&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;a name="line143"&gt;143&lt;/a&gt;      &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;a&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;HTML&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;Attribute&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;HREF&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;null&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;a name="line144"&gt;144&lt;/a&gt;      &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;a&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;HTML&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;Attribute&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;HREF&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;br /&gt;toString&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;matches&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"news&lt;span style="color: rgb(119, 221, 119);"&gt;\\&lt;/span&gt;.php&lt;span style="color: rgb(119, 221, 119);"&gt;\\&lt;/span&gt;?nid=&lt;span style="color: rgb(119, 221, 119);"&gt;\\&lt;/span&gt;d+"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line145"&gt;145&lt;/a&gt;    &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line146"&gt;146&lt;/a&gt;      &lt;span style="color: rgb(32, 64, 160);"&gt;attribute&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;a&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;copyAttributes&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line147"&gt;147&lt;/a&gt;      &lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;log&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;Level&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;FINE&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;format&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"Tag: %s, attributes: %s"&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;t&lt;/span&gt;, &lt;span style="color: rgb(32, 64, 160);"&gt;a&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line148"&gt;148&lt;/a&gt;      &lt;span style="color: rgb(32, 64, 160);"&gt;getHeadline&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;=&lt;/span&gt; &lt;strong&gt;true&lt;/strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;a name="line149"&gt;149&lt;/a&gt;    &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line150"&gt;150&lt;/a&gt;&lt;br /&gt;&lt;a name="line151"&gt;151&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line152"&gt;152&lt;/a&gt;&lt;br /&gt;&lt;a name="line153"&gt;153&lt;/a&gt;   &lt;span style="color: rgb(68, 68, 68);"&gt;&lt;i&gt;/**&lt;br /&gt;&lt;a name="line154"&gt;154&lt;/a&gt;    * Get the headline and also write the RSS entry&lt;br /&gt;&lt;a name="line155"&gt;155&lt;/a&gt;    * @param data Text next to the headline&lt;br /&gt;&lt;a name="line156"&gt;156&lt;/a&gt;    * @param pos position&lt;br /&gt;&lt;a name="line157"&gt;157&lt;/a&gt;    */&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="line158"&gt;158&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;handleText&lt;/span&gt;&lt;span style="color: rgb(68, 68,