<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9206497193519505916</id><updated>2012-02-16T07:42:49.995-08:00</updated><category term='ensamblador'/><category term='java web start'/><category term='programación'/><category term='vacaciones'/><category term='java'/><category term='cygwin'/><category term='php'/><category term='jetty'/><category term='software'/><category term='ms-dos'/><category term='tutoriales'/><category term='noticias'/><category term='myeclipse'/><category term='appfuse'/><category term='.net'/><category term='maven'/><category term='how to'/><category term='jnlp'/><category term='prácticas'/><category term='eclipse'/><category term='console2'/><category term='ide'/><category term='dante gebel'/><category term='netbeans'/><title type='text'>Punto de partida</title><subtitle type='html'>Un blog personal, de tecnología y más...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-6458885362584066999</id><published>2012-01-10T19:26:00.000-08:00</published><updated>2012-01-10T19:37:42.487-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jetty'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Depurar codigo desde Eclipse usando el plugin de Jetty para Maven</title><content type='html'>&lt;div&gt;&lt;span&gt;Hace ya un tiempo estuve desarrollando una aplicación usando Maven como sistema de building. Pero llegué al punto de  que cuando quería depurar la aplicación desde Eclipse, simplemente por la forma en la que funciona el plugin de Jetty para Maven, no me redirigía al código fuente cuando se detenía en un breakpoint, sino en el .class, claro, eso es un problema cuando necesitas ver las líneas de código. Pues bien, luego de un poco de búsqueda, encontré que en la documentación del plugin de Jetty explican cómo lograr depurar el código fuente.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;Simplemente es necesario seguir el tutorial que está disponible en &lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;a href="http://docs.codehaus.org/display/JETTY/Debugging+with+the+Maven+Jetty+Plugin+inside+Eclipse"&gt;http://docs.codehaus.org/&lt;wbr&gt;display/JETTY/Debugging+with+&lt;wbr&gt;the+Maven+Jetty+Plugin+inside+&lt;wbr&gt;Eclipse&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span&gt;Con esos dos pasos se puede comenzar a depurar el código usando Eclipse, un poco tedioso pero muy rápido de configurar y funciona muy bien.&lt;/span&gt;&lt;/span&gt;&lt;br clear="all" style="font-family: arial; text-align: -webkit-auto; font-size: small; "&gt;&lt;br class="Apple-interchange-newline"&gt;&lt;/div&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-6458885362584066999?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/6458885362584066999/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=6458885362584066999' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/6458885362584066999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/6458885362584066999'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2012/01/hace-ya-un-tiempo-estuve-desarrollando.html' title='Depurar codigo desde Eclipse usando el plugin de Jetty para Maven'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-286657846380808255</id><published>2012-01-01T20:50:00.000-08:00</published><updated>2012-01-01T21:04:13.151-08:00</updated><title type='text'>Files are locked on Windows and can't be replaced</title><content type='html'>&lt;span style="font-family: arial; text-align: -webkit-auto; font-size: small; "&gt;Existe un problema al estar usando el plugin de Jetty para Maven, y es que el plugin bloquea (lock) los archivos de contenido estáticos como .html, .css, .js e imágenes y los usa en memoria (algo de un conector NIO). Por tal razón, si se está ejecutando un comando como mvn jetty:run, y se intenta editar este tipo de archivos, entonces aparece este error.&lt;/span&gt;&lt;div style="font-family: arial; text-align: -webkit-auto; font-size: small; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: arial; text-align: -webkit-auto; font-size: small; "&gt;&lt;img src="https://mail.google.com/mail/?ui=2&amp;amp;ik=4863bf06e3&amp;amp;view=att&amp;amp;th=1341e6967c2cbe13&amp;amp;attid=0.2&amp;amp;disp=safe&amp;amp;realattid=ii_1341e5436ce8524c&amp;amp;zw" alt="image.png" title="image.png" /&gt;&lt;/div&gt;&lt;div style="font-family: arial; text-align: -webkit-auto; font-size: small; "&gt;Para solucionar este problema, en la página del plugin tienen documentado este problema, que sucede solo con Windows. (&lt;span style="font-family: Arial, Helvetica, FreeSans, sans-serif; line-height: 52px; text-align: left; background-color: rgb(255, 255, 255); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; border-bottom-color: rgb(51, 0, 153); "&gt;&lt;span style="font-weight: bold; "&gt;&lt;a href="http://docs.codehaus.org/display/JETTY/Files+locked+on+Windows"&gt;Files locked on Windows&lt;/a&gt;&lt;/span&gt;)&lt;/span&gt;&lt;div&gt;Para solucionarlo se debe hacer lo siguiente:&lt;/div&gt;&lt;div&gt;1. Deshabilitar el uso de archivos mapeados en memoria. Para hacer esto, se debe extraer el archivo &lt;span style="font-family: monospace; font-size: 13px; line-height: 17px; background-color: rgb(255, 255, 255); "&gt;org/mortbay/jetty/&lt;wbr&gt;webapp/webdefault.xml&lt;/span&gt; &lt;wbr&gt;localizado en el JAR de Jetty (&lt;span style="font-size: 13px; font-family: monospace; line-height: 17px; background-color: rgb(255, 255, 255); "&gt;lib/jetty.jar&lt;/span&gt;) y &lt;span style="font-family: monospace; font-size: 13px; line-height: 17px; background-color: rgb(255, 255, 255); "&gt;cambiar la siguiente configuración a FALSE:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;tt style="font-size: 13px; line-height: 17px; text-align: left; background-color: rgb(255, 255, 255); "&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote style="font-family: arial; text-align: -webkit-auto; font-size: small; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;div&gt;&lt;div&gt;&lt;tt style="font-size: 13px; line-height: 17px; text-align: left; background-color: rgb(255, 255, 255); "&gt;&lt;div style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 15px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; min-height: inherit !important; white-space: pre-wrap; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;init-param&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;tt style="font-size: 13px; line-height: 17px; text-align: left; background-color: rgb(255, 255, 255); "&gt;&lt;div style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 15px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; min-height: inherit !important; white-space: pre-wrap; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;param-name&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;gt;&lt;wbr&gt;useFileMappedBuffer&lt;!--&lt;/code--&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;param-&lt;wbr&gt;name&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;tt style="font-size: 13px; line-height: 17px; text-align: left; background-color: rgb(255, 255, 255); "&gt;&lt;div style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 15px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; min-height: inherit !important; white-space: pre-wrap; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;param-value&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;gt;true&lt;!--&lt;/code--&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;param-&lt;wbr&gt;value&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;gt; &lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; color: rgb(0, 130, 0) !important; "&gt;&lt;!-- change to false --&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/tt&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;tt style="font-size: 13px; line-height: 17px; text-align: left; background-color: rgb(255, 255, 255); "&gt;&lt;div style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 15px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; min-height: inherit !important; white-space: pre-wrap; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;!--&lt;/code--&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;init-param&lt;/code&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/tt&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: arial; text-align: -webkit-auto; font-size: small; "&gt;&lt;div&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;2. Asegurarse que esta configuración se aplica a todas las webapps. Para hacerlo, la siguiente configuración en &lt;span style="font-family: monospace; font-size: 13px; line-height: 17px; background-color: rgb(255, 255, 255); "&gt;etc/jetty.xml&lt;/span&gt; debe apuntar hacia nuestro archivo&lt;span style="font-size: 13px; font-family: monospace; line-height: 17px; background-color: rgb(255, 255, 255); "&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-size: 13px; line-height: 1.2em !important; color: rgb(0, 0, 0); clear: left; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: rgb(255, 255, 255); border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; text-align: left; vertical-align: baseline !important; width: 1182px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;tbody style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;tr style="font-size: 1em !important; line-height: 1.2em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; min-height: inherit !important; "&gt;&lt;td style="font: normal normal normal small/normal arial; font-size: 1em !important; line-height: 1.2em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; background-color: initial !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-style: initial !important; border-color: initial !important; float: none !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: 1182px; min-height: inherit !important; "&gt;&lt;div title="Hint: double-click to select code" style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; white-space: pre-wrap !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;    &amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Call&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"addLifeCycle"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;      &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Arg&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;        &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;New&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;class&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"org.mortbay.jetty.&lt;wbr&gt;deployer.WebAppDeployer"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;          &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"contexts"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Ref&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;id&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"Contexts"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;/&amp;gt;&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;          &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"webAppDir"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;SystemProper&lt;wbr&gt;ty&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"jetty.home"&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;default&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"."&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;/&amp;gt;/webapps&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;          &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"parentLoaderPriority"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;wbr&gt;false&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;          &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"extract"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;true&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;          &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"allowDuplicates"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;false&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;&lt;wbr&gt;Set&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;          &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;lt;&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(128, 128, 128) !important; "&gt;name&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;=&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 51, 102) !important; "&gt;"defaultsDescriptor"&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;/&lt;wbr&gt;jesfre/jetty/mywebdefaults.&lt;wbr&gt;xml&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Set&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt; &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 130, 0) !important; "&gt;&lt;!-- Aquí es donde se apunta a nuestro archivo --&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;        &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;New&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;      &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Arg&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt; &lt;/span&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt; &lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;    &lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;!--&lt;/code--&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(51, 102, 153) !important; "&gt;Call&lt;/code&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 1em !important; padding-bottom: 0px !important; padding-left: 0em !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span &gt;Espero les sirva y puedan seguir codificando a gusto.&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;code style="text-align: -webkit-auto; white-space: normal; font-size: 1em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: inherit !important; "&gt;&lt;code style="border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; background-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; float: none !important; line-height: 1.2em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; vertical-align: baseline !important; width: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important; "&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-286657846380808255?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/286657846380808255/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=286657846380808255' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/286657846380808255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/286657846380808255'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2012/01/files-are-locked-on-windows-and-cant-be.html' title='Files are locked on Windows and can&apos;t be replaced'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-1086056993655994380</id><published>2011-03-13T11:41:00.000-07:00</published><updated>2011-03-14T16:15:32.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='console2'/><category scheme='http://www.blogger.com/atom/ns#' term='ms-dos'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>Configurar Cygwin + Console2</title><content type='html'>Esta vez hablaré de cómo configurar Console2 para que funcione con Cygwin. Cygwin es un emulador de comandos Linux sobre Windows. Console es una herramienta para Windows que no hace que MS-DOS funcione mejor pero si que se vea más chido. Y me di a la tarea de investigar cómo integrar estas dos herramientas para trabajar con comandos similares a las de Linux desde Windows usando el command.com pero con una mejor presentación que la que presenta MS-DOS.&lt;br /&gt;&lt;br /&gt;En este tutorial veremos cómo instalar cada una de estas herramientas y cómo integrarlas para tener una experiencia bastante distinta al usar una consola en Windows. Además, veremos cómo configurar Cygwin para que al estar integrado con Console2 nos presente el prompt en una carpeta de nuestra preferencia en lugar de la carpeta por defecto.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalar Cygwin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Entra a &lt;a href="http://cygwin.com/install.html"&gt;http://cygwin.com/install.html&lt;/a&gt;, descarga y ejecuta el instalador setup.exe&lt;br /&gt;2. O directamente desde esta liga &lt;a href="http://cygwin.com/setup.exe"&gt;setup.exe&lt;/a&gt;&lt;br /&gt;3. En la primera pantalla de la instalación de Cygwin, clic en Siguiente.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-dIAyFki_QFY/TX6dnKmPk2I/AAAAAAAAAcU/zmA0SVEn1xE/s1600/c1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/-dIAyFki_QFY/TX6dnKmPk2I/AAAAAAAAAcU/zmA0SVEn1xE/s320/c1.png" alt="" id="BLOGGER_PHOTO_ID_5584073884171211618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. Seleccionar el tipo de instalación. Yo lo haré directo de Internet, pero también puedes descargar todas las bibliotecas para posteriormente instalarlo desde un directorio local.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-tLhQfh_f3tM/TX6dnfgarcI/AAAAAAAAAcc/62bvLqE09SE/s1600/c2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/-tLhQfh_f3tM/TX6dnfgarcI/AAAAAAAAAcc/62bvLqE09SE/s320/c2.png" alt="" id="BLOGGER_PHOTO_ID_5584073889783918018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5. Selecciona el directorio de instalación.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-r-m84IO7TUU/TX6dnnI7aaI/AAAAAAAAAck/CQrHGvft98E/s1600/c3.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://2.bp.blogspot.com/-r-m84IO7TUU/TX6dnnI7aaI/AAAAAAAAAck/CQrHGvft98E/s320/c3.png" alt="" id="BLOGGER_PHOTO_ID_5584073891832883618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6. Ahora selecciona una carpeta donde se almacenarán los archivos de instalación de Cygwin.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-DtkiSDzrr5c/TX6doAOfGmI/AAAAAAAAAcs/_qsY3KSPFfM/s1600/c4.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/-DtkiSDzrr5c/TX6doAOfGmI/AAAAAAAAAcs/_qsY3KSPFfM/s320/c4.png" alt="" id="BLOGGER_PHOTO_ID_5584073898567080546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;7. Si estás tras un servidor proxy, es hora de configurarlo.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-qHYOZFeORzg/TX6dofn3vhI/AAAAAAAAAc0/iEUYMGhJVjY/s1600/c5.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://1.bp.blogspot.com/-qHYOZFeORzg/TX6dofn3vhI/AAAAAAAAAc0/iEUYMGhJVjY/s320/c5.png" alt="" id="BLOGGER_PHOTO_ID_5584073906995052050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8. En la siguiente pantalla selecciona un mirror de descarga, aqui realmente no se cuál sea el más apropiado, así que yo selecciono el que sea mientras no encuentre un &lt;span style="font-style: italic;"&gt;ibiblio&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-UpmCMxddGmc/TX6ein8MFoI/AAAAAAAAAdE/IzG8qcU-_hA/s1600/c6.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://3.bp.blogspot.com/-UpmCMxddGmc/TX6ein8MFoI/AAAAAAAAAdE/IzG8qcU-_hA/s320/c6.png" alt="" id="BLOGGER_PHOTO_ID_5584074905660167810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;9. Ahora comienza a descargar la información de los archivos de instalación.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-b1LK41wpKwg/TX6ei4amFwI/AAAAAAAAAdM/92EoEThl1so/s1600/c7.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://2.bp.blogspot.com/-b1LK41wpKwg/TX6ei4amFwI/AAAAAAAAAdM/92EoEThl1so/s320/c7.png" alt="" id="BLOGGER_PHOTO_ID_5584074910082668290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;10. La siguiente pantalla muestra todos los paquetes que se instalarán. Haz clic en siguiente a menos que seas más curioso y quieras ver de qué se tratan todos los paquetes.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-epgfqXBs2hI/TX6ejF5wg0I/AAAAAAAAAdU/F7-zng7FZyM/s1600/c8.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://1.bp.blogspot.com/-epgfqXBs2hI/TX6ejF5wg0I/AAAAAAAAAdU/F7-zng7FZyM/s320/c8.png" alt="" id="BLOGGER_PHOTO_ID_5584074913703035714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;11. Comienza ahora la instalación de Cygwin.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-MU2gY2CVwq8/TX6ejkZKnKI/AAAAAAAAAdc/AGoX-fhWFZg/s1600/c9.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://1.bp.blogspot.com/-MU2gY2CVwq8/TX6ejkZKnKI/AAAAAAAAAdc/AGoX-fhWFZg/s320/c9.png" alt="" id="BLOGGER_PHOTO_ID_5584074921887833250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;12. Finalmente escoge las opciones finales de instalación.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-6fXCF369ONE/TX6fLGY5YBI/AAAAAAAAAdk/0LIfK42nnWI/s1600/c10.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://2.bp.blogspot.com/-6fXCF369ONE/TX6fLGY5YBI/AAAAAAAAAdk/0LIfK42nnWI/s320/c10.png" alt="" id="BLOGGER_PHOTO_ID_5584075601028407314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;13. Clic en Finish y ya tienes instalado Cygwin listo para trabajar pensando que usas Linux.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalar Console2&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Accede a esta dirección del proyecto Console, http://sourceforge.net/projects/console/ para descargarlo&lt;/li&gt;&lt;li&gt;El archivo descargado será un .zip que deberás descomprimir en el directorio de tu preferencia. A mi me gusta tener una carpeta de herramientas de desarrollo (../dev/tools/)&lt;/li&gt;&lt;li&gt;Una vez hecho esto, puedes entrar a la carpeta Console2 que descomprimiste y correr el archivo ejecutable Console.exe. Ya tienes Console2 listo para usarse.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Integrar Cygwin con Console2&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Abre Console2 &lt;a href="http://3.bp.blogspot.com/-nXZWsZO6s-I/TX6fLRZ5RqI/AAAAAAAAAds/CU7yiVPG2yo/s1600/con1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://3.bp.blogspot.com/-nXZWsZO6s-I/TX6fLRZ5RqI/AAAAAAAAAds/CU7yiVPG2yo/s320/con1.png" alt="" id="BLOGGER_PHOTO_ID_5584075603985385122" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Abre la ventana de configuración en el menú Edit-&gt;Settings...&lt;a href="http://4.bp.blogspot.com/-8HicJbuzejA/TX6fLmWlLWI/AAAAAAAAAd0/65ZyZPK7VkY/s1600/con2.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;En la ficha Tabs, clic en Add para agregar una nueva ficha&lt;/li&gt;&lt;li&gt;Agrega la siguiente configuración a la nueva ficha&lt;a href="http://4.bp.blogspot.com/-8HicJbuzejA/TX6fLmWlLWI/AAAAAAAAAd0/65ZyZPK7VkY/s1600/con2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 313px; height: 320px;" src="http://4.bp.blogspot.com/-8HicJbuzejA/TX6fLmWlLWI/AAAAAAAAAd0/65ZyZPK7VkY/s320/con2.png" alt="" id="BLOGGER_PHOTO_ID_5584075609608629602" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Ahora puedes agregar la nueva ficha que has creado y poder ver Cygwin en acción desde Console2.&lt;/li&gt;&lt;/ol&gt;Pero normalmente quiero designar la carpeta en la cual aparezca inicialmente el prompt de la línea de comandos. Console2 provee esa opción (Startup dir:) en su configuración como podrás ver en la ventana donde configuraste la nueva ficha; pero no funciona con Cygwin. Para solucioar esto deberás editar el archivo por lotes en C:\cygwin\Cygwin.bat:&lt;br /&gt;&lt;br /&gt;Cambia esto:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;bash --login -i&lt;/blockquote&gt;&lt;br /&gt;por esto:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;bash --login -i -c 'cd tu_directorio_de_preferencia; exec bash'&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Ten en cuenta el el path de tu directorio deberá estar separado por diagonales normales ( / ) como en Linux y no invertidas ( \ ) como en MS-DOS. Por ejemplo: C:/Users/Jesfre/core_documents&lt;br /&gt;&lt;br /&gt;Ahora cada vez que abras tu nueva ficha te posicionará automáticamente el prompt en el directorio que has coonfigurado.&lt;br /&gt;&lt;br /&gt;Disfruta del seudo-bash en Windows.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-1086056993655994380?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/1086056993655994380/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=1086056993655994380' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/1086056993655994380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/1086056993655994380'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2011/03/configurar-cygwin-console2.html' title='Configurar Cygwin + Console2'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dIAyFki_QFY/TX6dnKmPk2I/AAAAAAAAAcU/zmA0SVEn1xE/s72-c/c1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-5111216490422973997</id><published>2010-07-14T07:30:00.000-07:00</published><updated>2010-07-14T07:40:47.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jnlp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='java web start'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Primeros pasos con Java Web Start (2): La consola de Java</title><content type='html'>En un post anterior hacía una &lt;a href="http://jesfre.blogspot.com/2010/04/primeros-pasos-con-java-web-start.html"&gt;introducción a Java Web Start&lt;/a&gt;. Ahora quiero comentar acerca de una característica que proporciona Java, y esta es su consola. La consola de Java viene con la instalación del JRE. De acuerdo al &lt;a href="http://www.java.com/es/download/help/javaconsole.xml"&gt;sitio ayuda de Java&lt;/a&gt;,&lt;br /&gt;&lt;span class="bodytext"&gt;&lt;span class="bodytext"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="bodytext"&gt;&lt;span class="bodytext"&gt;La consola de Java ofrece información acerca de la versión del entorno de ejecución de Java (JRE), el directorio de inicio del usuario y los mensajes de error que aparezcan durante la ejecución de un applet o una aplicación.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Pues bien, lo que nos interesa en este momento de la consola es la posibilidad de mostrar los mensajes de error que se lanzan durante la ejecución de una aplicación; para este caso nos será de mucha ayuda al momento de probar y depurar nuestras aplicaciones Java Web Start ya que podremos ver con más detalle los errores que sucedan durante la ejecución de nuestras aplicaciones.&lt;br /&gt;Por defecto la consola de Java no se muestra, por lo tanto habrá que habilitarla siguiendo los pasos que se describen en la misma página y que a continuación presento.&lt;br /&gt;&lt;span class="bodytext"&gt;&lt;span class="bodytext"&gt;&lt;star:answer-text star="http://schemas.sun.com/star-ns/"&gt;&lt;/star:answer-text&gt;&lt;/span&gt;&lt;h5  style="font-weight: normal;font-family:georgia;"&gt;&lt;span class="bodytext"&gt;&lt;span style="font-size:100%;"&gt;Habilitación de la Consola de Java para la plataforma Windows, para las versiones de Java 6.0, 1.5.0&lt;/span&gt;&lt;/span&gt;&lt;/h5&gt;&lt;span class="bodytext"&gt; &lt;ol&gt;&lt;li&gt;Haga clic en &lt;b&gt;Inicio&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Seleccione &lt;b&gt;Configuración&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Seleccione &lt;b&gt;Panel de control&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Haga doble clic en el icono de &lt;b&gt;Java&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Haga clic en la ficha &lt;b&gt;Avanzado&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Haga clic en el signo &lt;img alt="+" src="http://www.java.com/en/img/download/plus.gif" /&gt; situado junto a &lt;span style="font-weight: bold;"&gt;Consola de Java&lt;/span&gt;. (Img. 1)&lt;/li&gt;&lt;li&gt;Seleccione &lt;b&gt;Ver consola&lt;/b&gt; y haga clic en &lt;b&gt;Aplicar&lt;/b&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_g4nBGD_OZCc/TD2HYoJYZyI/AAAAAAAAAbw/zhURKVFv6IE/s1600/habilitar-consola-java.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 261px; height: 320px;" src="http://2.bp.blogspot.com/_g4nBGD_OZCc/TD2HYoJYZyI/AAAAAAAAAbw/zhURKVFv6IE/s320/habilitar-consola-java.png" alt="" id="BLOGGER_PHOTO_ID_5493695977625249570" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Img. 1. La Ventana de configuración&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Una vez hecho esto, si ejecutamos nuestra aplicación Java Web Start o cualquier otra podremos ver una ventana como la mostrada abajo en la que veremos los errores que lance la aplicación.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/TD2HyoD5W8I/AAAAAAAAAb4/UnSo5f1YENI/s1600/consola-java.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 282px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/TD2HyoD5W8I/AAAAAAAAAb4/UnSo5f1YENI/s320/consola-java.png" alt="" id="BLOGGER_PHOTO_ID_5493696424278842306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para otras versiones de Java o la visualización de la consola en navegadores como Firefox y otros pueden ver la &lt;a href="http://www.java.com/es/download/help/javaconsole.xml"&gt;página de ayuda de Java&lt;/a&gt; donde se explica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-5111216490422973997?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/5111216490422973997/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=5111216490422973997' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5111216490422973997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5111216490422973997'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/07/primeros-pasos-con-java-web-start-2-la.html' title='Primeros pasos con Java Web Start (2): La consola de Java'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_g4nBGD_OZCc/TD2HYoJYZyI/AAAAAAAAAbw/zhURKVFv6IE/s72-c/habilitar-consola-java.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-5904674103979852174</id><published>2010-07-11T10:03:00.000-07:00</published><updated>2010-07-11T21:10:04.630-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='appfuse'/><title type='text'>Illegal character in path at index 18: file: ~/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar</title><content type='html'>Hace unos días mientras generaba mis &lt;a href="http://es.wikipedia.org/wiki/CRUD"&gt;CRUD&lt;/a&gt; usando la herramienta &lt;span style="font-family:courier new;"&gt;appfuse:gen&lt;/span&gt; de &lt;a href="http://appfuse.org/display/APF/Home"&gt;Appfuse&lt;/a&gt; me mostró el siguiente error extraño:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;[INFO] null&lt;br /&gt;Illegal character in path at index 18: file:/~/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Trace&lt;br /&gt;java.lang.IllegalArgumentException&lt;/blockquote&gt;Después de buscar pocos minutos, enseguida encontré cuál era el problema. El problema es que &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; tiene ciertos conflictos al intentar parsear la ubicación del repositorio si tal ubicación contiene espacios en blanco. Y este es un error ya muy conocido que me había tocado ver antes, pero lo había olvidado (algo muy común).&lt;br /&gt;Como en mi caso, que por estar usando un Windows XP en español, por defecto Maven genera el repositorio en "&lt;span style="font-style: italic;"&gt;C:/Documents and Settings/&amp;lt;usuario&amp;gt;/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar&lt;/usuario&gt;&lt;/span&gt;", por lo tanto generará este error en alguna ejecución. Los pasos para corregir el error fue:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Mover el repositorio que Maven genera, que por defecto se encuentra en "&lt;span style="font-style: italic;font-family:georgia;" &gt;C:/Documents and Settings/&amp;lt;usuario&amp;gt;/.m2/&lt;/usuario&gt;&lt;/span&gt;" a una que no contenga espacios como "&lt;span style="font-style: italic;font-family:georgia;" &gt;C:\.m2&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;Editar el archivo de configuración de Maven que se encuentra en&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;&amp;lt;MAVEN_HOME&amp;gt;\conf\settings.xml&lt;/maven_home&gt;&lt;/span&gt;&lt;/span&gt;. Descomentar y actualizar la directiva que apunta al repositorio local en &lt;localrepository&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;!-- localRepository    | The path to the local repository maven will use to store artifacts.    |    | Default: ~/.m2/repository   --&gt;&lt;br /&gt;&lt;localrepository&gt;c:\.m2\repository&lt;/localrepository&gt;&lt;/blockquote&gt;&lt;/localrepository&gt;&lt;/li&gt;&lt;li&gt;y &lt;span style="font-family:courier new;"&gt;BUILD SUCCESSFUL&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Espero les sirva para cualquier ejecución de Maven con el mismo problema.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-5904674103979852174?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/5904674103979852174/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=5904674103979852174' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5904674103979852174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5904674103979852174'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/07/illegal-character-in-path-at-index-18.html' title='Illegal character in path at index 18: file: ~/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-434949769349859788</id><published>2010-07-07T15:42:00.000-07:00</published><updated>2010-07-07T16:02:47.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='appfuse'/><title type='text'>SAXNotRecognizedException: Property 'http://apache.org/xml/features/nonvalidating/load-external-dtd' is not recognized</title><content type='html'>Actualmente estoy desarrollando una pequeña aplicación usando &lt;a href="http://appfuse.org"&gt;Appfuse&lt;/a&gt; 2.0.2. Appfuse cuenta con una herramienta de generación de código muy potente que usa &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;mvn appfuse:gen -Dentity=NombrePojo&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Pues bien, al momento de intentar generar mis &lt;a href="http://es.wikipedia.org/wiki/CRUD"&gt;CRUD&lt;/a&gt; (Create, Retrieve, Update y Delete) me marcó el error:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;org.xml.sax.SAXNotRecognizedException: Property 'http://apache.org/xml/features/nonvalidating/load-external-dtd'&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Después de buscar un rato en la lista de correo de Appfuse encontré que es una funcionalidad no probada aún con Java 6 y recomiendan solucionarlo apuntando a otra URL, pero había que hacer algunos cambios muy drásticos, pero lo que quería era solamente solucionar ese error y no tenía inconvenientes en cambiar de versión de Java, así que&lt;br /&gt;&lt;ol&gt;&lt;li&gt;instalé la versión 5 de Java, &lt;/li&gt;&lt;li&gt;cambié el valor de&lt;a href="http://jesfre.blogspot.com/2010/03/comendando-con-java-3-la-variable.html"&gt; la variable de entorno JAVA_HOME&lt;/a&gt; a la ubicación del JDK5 en vez de la 6, &lt;/li&gt;&lt;li&gt;abrí una nueva ventana de comandos, &lt;/li&gt;&lt;li&gt;ejecuté nuevamente la instrucción &lt;span style="font-family: courier new;"&gt;mvn appfuse:gen -Dentity=NombrePojo&lt;/span&gt; y &lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;vualá&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;BUILD SUCCESSFUL&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;Espero que les sirva si están usando Appfuse&lt;br /&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-434949769349859788?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/434949769349859788/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=434949769349859788' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/434949769349859788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/434949769349859788'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/07/saxnotrecognizedexception-property.html' title='SAXNotRecognizedException: Property &apos;http://apache.org/xml/features/nonvalidating/load-external-dtd&apos; is not recognized'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-5847054131332433192</id><published>2010-04-25T10:22:00.000-07:00</published><updated>2010-04-25T12:46:28.578-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jnlp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='java web start'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><title type='text'>Primeros pasos con Java Web Start</title><content type='html'>&lt;span style="font-size:100%;"&gt;Hace algún tiempo tuve que aprender a usar esta definición de la plataforma Java para desarrollar una pequeña aplicación Swing que se ejecutaría vía &lt;a href="http://es.wikipedia.org/wiki/Java_Web_Start"&gt;Java Web Start&lt;/a&gt; desde un link en una aplicación Web. Para usar Java Web Start se requiere más que nada realizar varias configuraciones, nada de programación.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Para hacer esto seguí estos sencillos pasos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Pasos para habilitar la ejecución de JavaWebStart desde una aplicación Web&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Empaquetar la aplicación&lt;/span&gt;&lt;br /&gt;Lo primero que deberemos hacer será empaquetar nuestra aplicación en un archivo &lt;a href="http://es.wikipedia.org/wiki/Java_Archive"&gt;JAR&lt;/a&gt;. Además, para poder ejecutar nuestra aplicación desde una aplicación de JavaWebStart deberemos firmar el JAR digitalmente, pero esto se explicará más adelante. Para empaquetar nuestra aplicación usamos la herramienta de línea de comandos de Java. Aunque en todo caso, puede usarse cualquier herramienta disponible en nuestro IDE, si se dispone de uno.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;#60;MIAPLICACION_DIR&amp;#62;.jar –cf &amp;#60;nombre-archivo-jar&amp;#62;.jar &amp;#60;clase-java1&amp;#62;.class &amp;#60;clase-java2&amp;#62;.class &amp;#60;clase-javaN&amp;#62;.class&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Firma digital&lt;/span&gt;&lt;br /&gt;Ya tenemos casi listo nuestro JAR, ahora solo deberemos firmarlo. Esta firma digital es importante ya que todas las aplicaciones se ejecutan dentro de un &lt;a href="http://es.wikipedia.org/wiki/Aislamiento_de_procesos_%28inform%C3%A1tica%29"&gt;sandbox&lt;/a&gt;, que es un espacio de seguridad del cliente donde se ejecutará la aplicación. Los pasos son los siguientes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a)&lt;/span&gt; Generar el Keystore: Desde línea de comandos entrar al direcotorio bin de nuestra instalación de Java (el &lt;span style="font-style: italic;"&gt;JAVA_HOME&lt;/span&gt;).&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;#60;JAVA_HOME&amp;#62;\bin&amp;#62;keytool -genkey -alias test –keyalg RSA -keystore test.jks&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Luego se habrá generado el archivo &lt;span style="font-style: italic;"&gt;test.jks&lt;/span&gt; en el directorio &lt;span style="font-style: italic;"&gt;bin &lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;b)&lt;/span&gt; Lo siguiente será firmar el JAR con la herramienta &lt;span style="font-style: italic;"&gt;KeyTool IUI&lt;/span&gt; disponible en &lt;a href="http://www.4shared.com/file/LcbR54vk/keytoolIUI-241.html"&gt;KeyTool IUI 2.4.1&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/S9SUYp_vTiI/AAAAAAAAAbM/wr1WpvxT_bI/s1600/keytoolIUI.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 238px;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/S9SUYp_vTiI/AAAAAAAAAbM/wr1WpvxT_bI/s320/keytoolIUI.png" alt="" id="BLOGGER_PHOTO_ID_5464155399218220578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Con estos pasos tendremos una aplicación empaquetada y firmada que podrá ejecutarse en el cliente. Para más información al respecto de firma digital escuche el podcast de &lt;a href="http://www.javahispano.org/contenidos/es/javahispano_podcast__080__criptografia_y_firma_digital/"&gt;Javahispano no. 080 - Criptografia y Firma Digital&lt;/a&gt;.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Archivo de configuración de Java Web Start&lt;/span&gt;&lt;br /&gt;Ahora crearemos el archivo de configuración de nuestra aplicación Java Web Start en nuestro editor de texto preferido. El archivo de configuración tendrá el nombre que deseemos y con la extensión .jnlp (&lt;span style="font-style: italic;"&gt;holaMundo.jnlp&lt;/span&gt;). Se puede encontrar más información sobre cómo crearlo y más opciones de configuración en el siguiente enlace &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html"&gt;JNLP File Syntax&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;#60;?xml version="1.0" encoding="UTF-8"?&amp;#62;&lt;br /&gt;&amp;#60;jnlp spec="1.0+"&lt;br /&gt;  codebase="http://localhost:8080/micontextoweb/javaws"&lt;br /&gt;  href="TheTime.jnlp"&lt;br /&gt;&amp;#62;&lt;br /&gt;&amp;#60;!-- Informaci&amp;#243;n general de nuestra aplicaci&amp;#243;n --&amp;#62;&lt;br /&gt;&amp;#60;information&amp;#62;&lt;br /&gt;  &amp;#60;title&amp;#62;Hola Mundo&amp;#60;/title&amp;#62;&lt;br /&gt;  &amp;#60;vendor&amp;#62;Jorge Ruiz Aquino&amp;#60;/vendor&amp;#62;&lt;br /&gt;  &amp;#60;homepage href="/micontextoweb" /&amp;#62;&lt;br /&gt;  &amp;#60;description&amp;#62;Archivo de ejemplo&amp;#60;/description&amp;#62;&lt;br /&gt;&amp;#60;/information&amp;#62;&lt;br /&gt;&amp;#60;offline-allowed/&amp;#62;&lt;br /&gt;&amp;#60;!-- Se establecen los permisos para la aplicaci&amp;#243;n dentro del sandbox --&amp;#62;&lt;br /&gt;&amp;#60;security&amp;#62;&lt;br /&gt;  &amp;#60;all-permissions/&amp;#62;&lt;br /&gt;&amp;#60;/security&amp;#62;&lt;br /&gt;&amp;#60;!--&lt;br /&gt;Se listan los recursos necesarios para la ejecuci&amp;#243;n de la aplicaci&amp;#243;n,&lt;br /&gt;como la versi&amp;#243;n  m&amp;#237;nima de Java requerida, la ubicaci&amp;#243;n del JAR de nuestra aplicaci&amp;#243;n,&lt;br /&gt;adem&amp;#225;s de las librer&amp;#237;as externas que se usar&amp;#225;n.&lt;br /&gt;--&amp;#62;&lt;br /&gt;&amp;#60;resources&amp;#62;&lt;br /&gt;  &amp;#60;j2se version="1.5+" /&amp;#62;&lt;br /&gt;  &amp;#60;jar href="http://localhost:8080/micontextoweb/javaws/AplicacionFirmada.jar"/&amp;#62;&lt;br /&gt;&amp;#60;/resources&amp;#62;&lt;br /&gt;&amp;#60;!-- Se establece el nombre de la clase que contiene el m&amp;#233;todo main() --&amp;#62;&lt;br /&gt;&amp;#60;application-desc main-class="ClaseMain" /&amp;#62;&lt;br /&gt;&amp;#60;/jnlp&amp;#62;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Los permisos en nuestra configuración anterior son necesarios además de la firma digital que hemos agregado al JAR en el paso anterior.&lt;br /&gt;&lt;br /&gt;Ahora que tenemos nuestro archivo &lt;span style="font-style: italic;"&gt;AplicacionFirmada.jar&lt;/span&gt; y nuestra configuración JavaWebStart &lt;span style="font-style: italic;"&gt;holaMundo.jnlp&lt;/span&gt;; pondremos estos archivos y las librerías necesarias en donde corresponda dentro de nuestro servidor Web. En mi caso, será en mi servidor Web Apache Tomcat &lt;span style="font-style: italic;"&gt;&lt;catalina_home&gt;&lt;/catalina_home&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;catalina_home&gt;&lt;/catalina_home&gt;&lt;/span&gt;&lt;catalina_home&gt;&lt;span style="font-style: italic;"&gt;/micontextoweb/javaws/&lt;/span&gt;, tal como está configurado en el archivo .jnlp, en el apartado &lt;/catalina_home&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Soporte de JNLP en el servidor Web&lt;/span&gt;&lt;br /&gt;Lo siguiente será asegurarse que el servidor Web soporta archivos de tipo JNLP, que es la extensión de las aplicaciones Java Web Start. Para esto se debe habilitar el soporte del tipo MIME en la configuración del servidor, por ejemplo, en el servidor Web Tomcat se puede habilitar en la configuración del archivo &lt;span style="font-style: italic;"&gt;&lt;catalina_home&gt;&lt;/catalina_home&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;catalina_home&gt;&lt;/catalina_home&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;catalina_home&gt;&lt;/catalina_home&gt;&lt;/span&gt;&lt;catalina_home&gt;/conf/web.xml agregando un nuevo mapping para el tipo MIME. Por defecto Tomcat ya lo tiene habilitado.&lt;/catalina_home&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;#60;mime-mapping&amp;#62;&lt;br /&gt;   &amp;#60;extension&amp;#62;jnlp&amp;#60;/extension&amp;#62;&lt;br /&gt;   &amp;#60;mime-type&amp;#62;application/x-java-jnlp-file&amp;#60;/mime-type&amp;#62;&lt;br /&gt;&amp;#60;/mime-mapping&amp;#62;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;5. Soporte de JNLP en el navegador Web&lt;/span&gt;&lt;br /&gt;&lt;catalina_home&gt;Posteriormente, en nuestra aplicación Web agregaremos una porción de código Javascript para verificar que el navegador soporta el tipo MIME. Aunque, actualmente la mayoría de los navegadores soporta este tipo de archivos.&lt;br /&gt;&lt;pre class="brush: javascript"&gt;&lt;br /&gt;function mimetypeCheck() {&lt;br /&gt; // First, determine if Webstart is available&lt;br /&gt; if (navigator.mimeTypes['application/x-java-jnlp-file']) {&lt;br /&gt;  plugin = navigator.mimeTypes['application/x-java-jnlp-file'];&lt;br /&gt; } else {&lt;br /&gt;  document.write ("no jnlp file association&lt;br/&gt;");&lt;br /&gt; }&lt;br /&gt; // Next, check for appropriate version family&lt;br /&gt; for (var i = 0; i &lt; navigator.mimeTypes.length; i++) {&lt;br /&gt;  plugin = navigator.mimeTypes[i];&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;mimetypeCheck();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Enlace a la aplicación Java Web Start en la aplicación Web&lt;/span&gt;&lt;br /&gt;Finalmente, agregamos un enlace en nuestra aplicación Web para poder descargar la aplicación JNLP.&lt;br /&gt;&lt;pre class="brush: javascript"&gt;&lt;br /&gt;&amp;#60;a href="http://localhost:8080/micontextoweb/javaws/archivo.jnlp"&amp;#62;Descargar JNLP&amp;#60;/a&amp;#62;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahora estamos listo para arrancar el servidor Web y probar la ejecución de nuestra primera aplicación Java Web Start.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Suerte con su primera taza de Java Web Start.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-5847054131332433192?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/5847054131332433192/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=5847054131332433192' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5847054131332433192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5847054131332433192'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/04/primeros-pasos-con-java-web-start.html' title='Primeros pasos con Java Web Start'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_g4nBGD_OZCc/S9SUYp_vTiI/AAAAAAAAAbM/wr1WpvxT_bI/s72-c/keytoolIUI.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-4557995627667291268</id><published>2010-03-21T09:40:00.000-07:00</published><updated>2010-07-19T12:24:10.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Comenzando con Java (3) - La variable JAVA_HOME (Windows)</title><content type='html'>Normalmente cuando estamos comenzando a usar Java nos encontramos con que tenemos que agregar el JAVA_HOME (el directorio de instalación de Java) a las variables de entorno de Windows. Pues bien, para esa "primera vez" me he dado a la tarea de escribir este pequeño tutorial. Para este tutorial debemos tener presentes los siguientes conceptos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Variable_de_entorno"&gt;&lt;span style="font-style: italic;"&gt;Variables de entorno&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Autoexec.bat"&gt;&lt;span style="font-style: italic;"&gt;Autoexec.bat&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PATH&lt;/span&gt;: Que es donde el intérprete de comandos buscará los comandos de ejecución que escribamos en la consola, siempre y cuando no usemos una ruta específica para llamar al comando.&lt;br /&gt;&lt;br /&gt;La idea del &lt;span style="font-style: italic;"&gt;JAVA_H&lt;/span&gt;&lt;span style="font-style: italic;"&gt;OME&lt;/span&gt; es que agreguemos una nueva variable de entorno a nuestro sistema. En este caso &lt;span style="font-style: italic;"&gt;JAVA_HOME&lt;/span&gt; es el nombre de facto, aunque podría ser cualquier otro, lo importante es que además lo agreguemos al &lt;span style="font-style: italic;"&gt;PATH &lt;/span&gt;para que Windows pueda reconocer los comandos de Java. Incluso podríamos no definir la variable JAVA_HOME y hacerlo todo directamente sobre la variable PATH, pero por convención y practicidad es mejor definirla, esto te será más claro conforme sigas usando Java.&lt;br /&gt;Para agregar la nueva variable de entorno hay dos caminos a seguir.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;El primero es usando la ventana de Propiedades del sistema de Windows.&lt;/span&gt;&lt;br /&gt;(La forma en que siempre lo hago)&lt;br /&gt;&lt;br /&gt;1. Hacer la combinación de teclas &lt;span style="font-weight: bold;"&gt;Inicio&lt;/span&gt;(la tecla de la ventanita) &lt;span style="font-weight: bold;"&gt;+ Pausa&lt;/span&gt; para abrir la ventana de &lt;span style="font-style: italic;"&gt;Propiedades del sistema&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/S5_UfEvVdWI/AAAAAAAAAZ0/UEOpZpt4Hps/s1600-h/propiedades_del_sistema.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 320px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/S5_UfEvVdWI/AAAAAAAAAZ0/UEOpZpt4Hps/s320/propiedades_del_sistema.png" alt="" id="BLOGGER_PHOTO_ID_5449307704454903138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;2. Dentro de la ficha &lt;span style="font-weight: bold;"&gt;Opciones avanzadas&lt;/span&gt;, oprimir el botón &lt;span style="font-weight: bold;"&gt;Variables de entorno&lt;/span&gt;, lo que abrirá una nueva ventana titulada &lt;span style="font-style: italic;"&gt;Variables de entorno&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/S5_UPG634uI/AAAAAAAAAZs/RirCl1XXe0U/s1600-h/veriables_de_entorno.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 290px; height: 320px;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/S5_UPG634uI/AAAAAAAAAZs/RirCl1XXe0U/s320/veriables_de_entorno.png" alt="" id="BLOGGER_PHOTO_ID_5449307430162260706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Nota: Dentro de las variables de entorno tenemos las &lt;span style="font-style: italic;"&gt;Variables de usuario&lt;/span&gt; y las &lt;span style="font-style: italic;"&gt;Variables del sistema&lt;/span&gt;, las primeras funcionan mientras la sesión del usuario para la cuál está definida está abierta, las otras funcionan para todos los usuarios y se necesitan permisos de administrador para definirlas. Preferentemente yo siempre uso las &lt;span style="font-style: italic;"&gt;Variables de sistema&lt;/span&gt;, a menos que haya una situación particular que requiera que use las variables de usuario.&lt;br /&gt;&lt;br /&gt;3. En la sección de las &lt;span style="font-style: italic;"&gt;Variables del sistema&lt;/span&gt; haremos clic sobre el botón &lt;span style="font-style: italic;"&gt;Nueva&lt;/span&gt;, esto nos abrirá un pequeño cuadro de diálogo donde agregaremos los siguientes valores:&lt;br /&gt;* en la caja Nombre de variable: &lt;span style="font-style: italic;"&gt;JAVA_HOME&lt;/span&gt;&lt;br /&gt;* en la caja Valor de variable: la ubicación donde hayas instalado el JDK, en mi caso &lt;span style="font-style: italic;"&gt;C:\Archivos de programa\Java\jdk1.6.0_18&lt;/span&gt; y hacer clic en Aceptar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/S5_Wgolrp9I/AAAAAAAAAZ8/mB9cCvWNBME/s1600-h/nueva_variable.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 121px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/S5_Wgolrp9I/AAAAAAAAAZ8/mB9cCvWNBME/s320/nueva_variable.png" alt="" id="BLOGGER_PHOTO_ID_5449309930281215954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. Buscar la varibla de sistema llamada Path y hacer clic en  Modificar.&lt;br /&gt;5. En el campo &lt;span style="font-style: italic;"&gt;Valor de variable&lt;/span&gt; de la ventana de diálogo &lt;span style="font-style: italic;"&gt;Modificar variable de sistema&lt;/span&gt; agregaremos nuestra nueva variable de entorno al final del valor existente separándolo por un punto y coma (;) de la siguiente forma: &lt;span style="font-weight: bold;"&gt;;%JAVA_HOME%\bin;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/S5_XS_9GhDI/AAAAAAAAAaE/i29mh1OFpZ4/s1600-h/modificar_variable.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 121px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/S5_XS_9GhDI/AAAAAAAAAaE/i29mh1OFpZ4/s320/modificar_variable.png" alt="" id="BLOGGER_PHOTO_ID_5449310795546919986" border="0" /&gt;&lt;/a&gt;De esta forma estamos haciendo referencia a la carpeta &lt;span style="font-weight: bold;"&gt;bin&lt;/span&gt; (donde están los comandos de ejecución) de la instalación de Java usando la variable JAVA_HOME que hemos creado en los pasos anteriores. También podríamos haber escrito directamente la ruta de la instalación del JDK en el Path, pero como lo he dicho antes, es preferible hacerlo de esta forma.&lt;br /&gt;&lt;br /&gt;Después de estos pasos simplemente deberemos hacer clic en el botón Aceptar de cada ventana y tendremos agregada nuestra nueva variable de entorno.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Otra forma es haciéndolo directamente desde la ventana de linea de comandos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Hacer la combinación de teclas &lt;span style="font-weight: bold;"&gt;Inicio + R&lt;/span&gt; para abrir la ventana Ejecutar, y escribir &lt;span style="font-weight: bold;"&gt;cmd&lt;/span&gt; y hacer clic en Aceptar. Esto abrirá una ventana de linea de comandos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/S5_aiRZ6-EI/AAAAAAAAAaM/W1F77LZkltI/s1600-h/ejecutar.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 165px;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/S5_aiRZ6-EI/AAAAAAAAAaM/W1F77LZkltI/s320/ejecutar.png" alt="" id="BLOGGER_PHOTO_ID_5449314356464121922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2. En la ventana de linea de comandos escribir: &lt;span style="font-style: italic;"&gt;set JAVA_HOME=&lt;ruta_de_instalación_ style="font-style: italic;" del_jdk=""&gt;&lt;/ruta_de_instalación_&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;ruta_al_jdk&gt;&lt;/ruta_al_jdk&gt;&lt;/span&gt;, nuevamente, en mi caso la ruta de instalación es &lt;span style="font-style: italic;"&gt;"C:\Archivos de programa\Java\jdk1.6.0_18"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota&lt;/span&gt;&lt;/span&gt;: Las comillas no son necesarias a menos que tengamos espacios en blanco en nuestra ruta, como en este caso.&lt;br /&gt;&lt;br /&gt;3. Posteriormente, en la misma ventana, habrá que agregar esta variable al Path de esta forma: &lt;span style="font-style: italic;"&gt;set Path=%Path%;%JAVA_HOME%\bin;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/S6AJD1jheoI/AAAAAAAAAac/QgoUEj_ZMdo/s1600-h/comandos2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 96px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/S6AJD1jheoI/AAAAAAAAAac/QgoUEj_ZMdo/s400/comandos2.png" alt="" id="BLOGGER_PHOTO_ID_5449365510638631554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Con esto habremos agregado la nueva variable de entorno, &lt;span style="font-style: italic;"&gt;pero solo estará disponible mientras permanezca abierta la sesión de la linea de comandos&lt;/span&gt;. Para hacer permanente nuestras variables de otra forma, podemos agragarlas al Autoexec.bat para que se carguen siempre que arranque el sistema.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Agregar las variables de entorno en el Autoexec.bat&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Abrimos una ventana de Ejecutar como en el paso uno de la sección anterior y escribimos &lt;span style="font-weight: bold;"&gt;sysedit&lt;/span&gt; y hacemos clic en Aceptar.&lt;br /&gt;2. En la ventana de AUTOEXEC.BAT agregamos las lineas&lt;br /&gt;@echo off&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;span style="font-style: italic;"&gt;JAVA_HOME=&lt;ruta_de_instalación_ del_jdk=""&gt;&lt;/ruta_de_instalación_&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;"C:\Archivos de programa\Java\jdk1.6.0_18"&lt;br /&gt;&lt;/span&gt;Path=%Path%;&lt;span style="font-style: italic;"&gt;%JAVA_HOME%\bin;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/S6AUWopkhMI/AAAAAAAAAbE/OiDkfmHmDC8/s1600-h/autoexec.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 228px;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/S6AUWopkhMI/AAAAAAAAAbE/OiDkfmHmDC8/s400/autoexec.png" alt="" id="BLOGGER_PHOTO_ID_5449377928219755714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Y después de guardar el archivo, preferentemente, reinicia el sistema.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Nota&lt;/span&gt;: Gracias a un comentario, debo remarcar que en versiones posteriores a Windows ME las variables de entorno se deben agregar por medio de la ventana de Propiedades del sistema y no por la modificación del archivo &lt;span style="font-style: italic;"&gt;autoexec.bat&lt;/span&gt;, aunque aun es posible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;La prueba&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para comprobar que verdaderamente se ha agregado la nueva variable de entorno abre una ventana de línea de comandos y escribe &lt;span style="font-weight: bold;"&gt;java -version&lt;/span&gt;, y el resultado de ejecutar esta línea deberá ser algo similar a esto:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_g4nBGD_OZCc/S6ASiA179EI/AAAAAAAAAa0/jrxOh9-d2BM/s1600-h/java_version.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 116px;" src="http://2.bp.blogspot.com/_g4nBGD_OZCc/S6ASiA179EI/AAAAAAAAAa0/jrxOh9-d2BM/s400/java_version.png" alt="" id="BLOGGER_PHOTO_ID_5449375924669379650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para más inromación sobre comandos del DOS, el Autoexec.bat y en general sobre las variables de entorno, dejo estos enlaces:&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Variable_de_entorno"&gt;Variables de entorno&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1envvars.htm"&gt;Environment variables&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/AUTOEXEC.BAT"&gt;Autoexec.bat (inglés) &lt;/a&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Autoexec.bat"&gt;Autoexec.bat (español)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tutorial-administraciondearchivos.blogspot.com/2009/03/13-configsys-y-autoexecbat.html"&gt;Config.sys y Autoexec.bat&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.com/en/download/help/path.xml"&gt;How do I set or change the PATH system variable?&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-4557995627667291268?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/4557995627667291268/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=4557995627667291268' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/4557995627667291268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/4557995627667291268'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/03/comendando-con-java-3-la-variable.html' title='Comenzando con Java (3) - La variable JAVA_HOME (Windows)'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_g4nBGD_OZCc/S5_UfEvVdWI/AAAAAAAAAZ0/UEOpZpt4Hps/s72-c/propiedades_del_sistema.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-646277231289393328</id><published>2010-03-16T16:27:00.000-07:00</published><updated>2010-03-16T17:19:33.580-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Comenzando con Java (2) - El IDE</title><content type='html'>En la sección anterior de esta serie de Comenzando con Java vimos cómo comenzar apoyándonos en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;tutoriales&lt;/span&gt; y les dejé algunos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;videotutoriales&lt;/span&gt; muy buenos que me he encontrado en la red. Ahora toca seleccionar nuestro editor de desarrollo.&lt;br /&gt;&lt;br /&gt;La selección de nuestro primer &lt;a href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IDE&lt;/span&gt;&lt;/a&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Integrated&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Development&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Environment&lt;/span&gt;, Entorno Integrado de Desarrollo) es muy importante pues nos ayudará a resolver problemas comunes, acelerar nuestro aprendizaje y adaptarnos poco a poco a una forma particular de trabajo.&lt;br /&gt;&lt;br /&gt;Debemos seleccionar el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;IDE&lt;/span&gt; de acuerdo a nuestras necesidades, por ejemplo, si lo necesitamos solo para el uso académico, aprendizaje de ciertas herramientas y/o tecnologías del mundo Java, si lo necesitamos para uso profesional, ya que en ciertas empresas dicen al desarrollador cuál &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;IDE&lt;/span&gt; usar, etc.&lt;br /&gt;&lt;br /&gt;Como este &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;tutorial&lt;/span&gt; lo he escrito para quienes aun están aprendiendo a programar en Java, les recomiendo usar un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;IDE&lt;/span&gt;&lt;br /&gt;Lo que yo recomiendo es verificar que el IDE:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sea intuitivo&lt;/li&gt;&lt;li&gt;tenga resaltador de código&lt;/li&gt;&lt;li&gt;tenga depurador&lt;/li&gt;&lt;li&gt;tenga autocompletado (no indispensable si estás aprendiendo)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Aunque llegarás a usar otras herramientas muy prácticas y otras muy complejas conforme avances en tu aprendizaje.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Por ejemplo, yo aprendí usando un editor muy simple: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;TextPad&lt;/span&gt;, y también vi a compañeros aprendiendo con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;JPadPro&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Uno muy utilizado en la academia para la enseñanza de la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;programación&lt;/span&gt; en Java es &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;BlueJ&lt;/span&gt;, la cual también recomiendo mucho.&lt;br /&gt;&lt;br /&gt;También puedes aprender con uno más profesional como &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Netbeans&lt;/span&gt; (comentarios a parte) que es un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;IDE&lt;/span&gt; muy completo y ampliamente usado en entornos profesionales. Es gratuito y puedes descargarlo en su versión más &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;ligera&lt;/span&gt; para comenzar a programar. También puede usar la versión &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Classic&lt;/span&gt; de Eclipse. Consulta sus páginas respectivas o la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Wikipedia&lt;/span&gt; para leer más al respecto y decidir por un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;IDE&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Pero existen muchos más en el mundo Java, para todos los gustos, solo he comentado los más comunes.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enlaces:&lt;br /&gt;&lt;a href="http://www.netbeans.org/index.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Netbeans&lt;/span&gt;&lt;/a&gt; (&lt;a href="http://es.wikipedia.org/wiki/NetBeans"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;| &lt;a href="http://netbeans.org/downloads/index.html"&gt;descarga&lt;/a&gt;)&lt;br /&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; (&lt;a href="http://es.wikipedia.org/wiki/Eclipse_%28software%29"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;| &lt;a href="http://www.eclipse.org/downloads/"&gt;descarga&lt;/a&gt;)&lt;br /&gt;&lt;a href="http://www.bluej.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;BlueJ&lt;/span&gt;&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/BlueJ"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;| &lt;a href="http://www.bluej.org/download/download.html"&gt;descarga&lt;/a&gt;)&lt;br /&gt;&lt;a href="http://www.textpad.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;TextPad&lt;/span&gt;&lt;/a&gt; (&lt;a href="http://es.wikipedia.org/wiki/TextPad"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;)&lt;br /&gt;&lt;a href="http://www.modelworks.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;JPadPro&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-646277231289393328?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/646277231289393328/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=646277231289393328' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/646277231289393328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/646277231289393328'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/03/comenzando-con-java-2-el-ide.html' title='Comenzando con Java (2) - El IDE'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-7865987748672532586</id><published>2010-03-08T18:50:00.000-08:00</published><updated>2010-03-09T15:17:01.345-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>"An instance of the program seems to be already running" en Netbeans</title><content type='html'>Actualmente estoy usando Netbeans 6.7.1 para desarrollar una aplicación Swing ya que me gusta el Matisse que viene con este IDE. Pero ya han sido varias ocasiones en las que la computadora se ha apagado abruptamente, lo que ha causado que Netbeans no se cierre correctamente; y después de reiniciar e intentar abrir nuevamente el IDE me muestra una ventana de alerta con el siguiente mensaje:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/S5bV26l5PkI/AAAAAAAAAZU/yZiv5HD2We8/s1600-h/warning-netbeans.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 150px;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/S5bV26l5PkI/AAAAAAAAAZU/yZiv5HD2We8/s400/warning-netbeans.png" alt="" id="BLOGGER_PHOTO_ID_5446775938769043010" border="0" /&gt;&lt;/a&gt;"An instance of the program seems to be already running with your user directory. Either a previous session of the program did not exit correctly, or another instance of the program is running on a different computer and using the same user directory.&lt;br /&gt;&lt;br /&gt;"If another session of the program is running with the same user directory, please click Cancel to prevent the corruption of the user directory. If you are sure that no other instances of the program are running with your user directory, click OK to continue."&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Para solucionar este problema debemos tener presente que Netbeans guarda distintas carpetas de configuración, estas son el Directorio de instalación, Directorio de usuario y Directorio de proyectos. Pues bien, &lt;span style="font-weight: bold;"&gt;para solucionar este problema &lt;/span&gt;en particular lo único que he hecho ha sido borrar el archivo &lt;span style="font-style: italic;"&gt;lock&lt;/span&gt; que se encuentra en el directorio de usuario; en mi caso &lt;span style="font-style: italic; font-weight: bold;"&gt;C:\Documents and Settings\Jorge Ruiz\.netbeans\6.7\lock&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Las carpetas comentadas se crean durante la instalación de Netbeans y el usuario puede modificarlas, por lo tanto, es importante leer bien los diálogos antes de hacer clic en el botón Next de la instalación. Para más información sobre estas carpetas puedes leer &lt;a href="http://blogs.sun.com/NetBeansSupport/entry/directories_in_netbeans_install_user"&gt;el blog de soporte de Netbeans&lt;/a&gt;. Espero que la solución de mi caso les sirva...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-7865987748672532586?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/7865987748672532586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=7865987748672532586' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/7865987748672532586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/7865987748672532586'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/03/instance-of-program-seems-to-be-already.html' title='&quot;An instance of the program seems to be already running&quot; en Netbeans'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_g4nBGD_OZCc/S5bV26l5PkI/AAAAAAAAAZU/yZiv5HD2We8/s72-c/warning-netbeans.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-1315335793318878640</id><published>2010-01-27T08:24:00.000-08:00</published><updated>2010-03-16T17:10:00.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='ensamblador'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Invocar programas ASM desde Java paso a paso</title><content type='html'>Hace ya varios meses envié un tutorial al portal de JavaHispano donde explicaba cómo hacer para invocar funciones escritas en lenguaje ensamblador desde Java. Y como ya pasaron más de tres meses desde entonces, ya puedo usarlo en mi blog :D.&lt;br /&gt;Aquí les dejo el Contenido y las dos primeras partes para que se den una idea; también les dejo el código fuente y el documento PDF del tutorial.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Contenido&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Introducción&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;¿Cuándo usar JNI?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Requerimientos de software&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Configuración del ambiente de trabajo&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;La programación&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;La ejecución&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Conclusión&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Referencias y lecturas&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;1. Introducción&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;En el sitio de java.net existe un pequeño tutorial titulado Invoking Assembly Language Programs from Java&lt;span style="font-size:78%;"&gt;1&lt;/span&gt; pero está en inglés y no es muy sencillo para algunos nuevos programadores Java o ensamblador. En java.net explican cómo funciona la invocación de un programa ASM desde Java y qué hacer para lograrlo, pero no explican cómo hacer cada paso. Por lo tanto me he dado a la tarea de facilitar la comprensión de estas técnicas para los hispanohablantes que dan sus primeros pasos con JNI; ya que conocer un poco del funcionamiento de JNI y la invocación de aplicaciones en ensamblador es fundamental cuando se tienen aplicaciones que necesiten operaciones que consuman mucho proceso del servidor y se necesite implementar un pequeño programa a bajo nivel para ejecutar tales operaciones, y de esta manera disminuir el tiempo de espera que a veces suele ser crítico.&lt;br /&gt;También con JNI tenemos la capacidad de invocar funciones y procedimientos escritos en otros lenguajes, como C/C++ o en nuestro caso ASM, por ejemplo, cuando se tienen sistemas legados y se necesite utilizar alguna función del código legado será necesario desarrollar aplicaciones que puedan ejecutar estas funciones. Para más información de JNI y sus capacidades se puede consultar el manual para programadores disponible en el sitio de Sun&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;.&lt;br /&gt;Cabe señalar que este no es un tutorial introductorio a JNI o al API, por lo tanto se limitará a mencionar solo algunos conceptos necesarios. De forma rápida, comenzaremos con determinar el software que usaremos y de dónde obtenerlo, pero no nos detendremos a aprender el funcionamiento de ellos. Posteriormente agregaremos algunas variables de entorno y comenzaremos con la programación. Para esto, se presentan los programas y cómo compilarlos, sin embargo estará disponible el código fuente usado en el tutorial. Al finalizar el tutorial el lector deberá ser capaz de cargar una librería DLL en cualquier aplicación Java y usar los procedimientos de cualquier librería nativa.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;2. ¿Cuándo usar JNI?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;En algunas ocasiones, a algunos desarrolladores les tocará encontrarse en situaciones en las que una aplicación hecha completamente en Java no cubrirá todos los requerimientos para tal. Algunos ejemplos de estas situaciones pueden ser:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cuando a pesar de querer escribir toda la aplicación en Java para permitir la compatibilidad entre plataformas, exiten características de la plataforma que son necesarias para la aplicación y no son soportadas por la librería estándar de Java. Esto es referido como dependencia de la plataforma.&lt;/li&gt;&lt;li&gt;Cuando ya se tiene una librería escrita en algún otro lenguaje y se desea hacerla accesible a nuestro código Java, por ejemplo, al tener que trabajar con código legacy. en estos casos las librerías se cargan dentro del mismo proceso de la apliación por medio de JNI, aunque existen otros mecanismos más eficientes que funcionan en procesos separados.&lt;/li&gt;&lt;li&gt;Si se quiere implementar porciones de código en un lenguaje de bajo nivel como ensamblador para disminuir el tiempo de procesamiento. Por ejemplo, en aplicaciones que necesiten renderizar gráficos 3D que requieren más tiempo de procesamiento, habrá que escribir una librería para gráficos en lenguaje ensamblador para tener un mejor rendimiento&lt;span style="font-size:78%;"&gt;3&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;En casos en los que quiera cargar una librería nativa en un proceso existente para evitar el costo de iniciar un nuevo proceso y cargar la librería en el mismo&lt;span style="font-size:78%;"&gt;4&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;También será oportuno usar JNI cuando se quiera utilizar algunas funcionalidades de un programa Java desde un código nativo.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://groups.google.com.mx/group/simplegdc/web/INVOCAR_PROGRAMAS_ASM_DESDE_JAVA_PASO_A_PASO.pdf?hl=es"&gt;Documento Invocar programas ASM dese Java paso a paso&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com.mx/group/simplegdc/web/InvocarASMCodigofuente.zip?hl=es"&gt;Código fuente&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.javahispano.org/contenidos/es/tutorial_invocar_asm_desde_java_paso_a_paso_por_jorge_ruiz_aquino/?menuId=TUTORIALS"&gt;El tutorial en Javahispano&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-1315335793318878640?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/1315335793318878640/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=1315335793318878640' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/1315335793318878640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/1315335793318878640'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2010/01/invocar-programas-asm-desde-java-paso.html' title='Invocar programas ASM desde Java paso a paso'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-3494390605919223722</id><published>2009-12-12T20:13:00.000-08:00</published><updated>2010-02-23T20:36:12.240-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Convirtiendo fechas entre zonas horarias (2)</title><content type='html'>En mi anterior post titulado &lt;a href="http://jesfre.blogspot.com/2009/12/convirtiendo-fechas-entre-zonas.html"&gt;Convirtiendo fechas entre zonas horarias&lt;/a&gt; puse un ejemplo de cómo poder convertir una fecha/hora de una zona horaria local a una distinta. Pero trabajando con el mismo proyecto encontré que debía convertir una fecha de la zona horaria UTC a la local, y entonces mi líder técnico me dió una solución sencilla cambiando solo una línea del código de ejemplo del post anterior, justo para hacer lo que necesitaba en ese momento:&lt;br /&gt;&lt;br /&gt;En la tarea que estaba realizando leía un archivo de texto con el dato "fecha" como una serie de números: "20090921"+"1230", que representa el 21 de Septiembre de 2009 a las 12:30; por lo que tuve que usar el formato de fecha "yyyyMMddkkmm". Esta fecha que recibía del archivo representaba una fecha/hora en el horario &lt;a href="http://es.wikipedia.org/wiki/GMT"&gt;GMT&lt;/a&gt;. Y esta hora la debía pasar a mi zona horaria local que es &lt;a href="http://es.wikipedia.org/wiki/Tiempo_del_Centro"&gt;CST o UTC-6 (Tiempo del centro)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;public void cambiarZonaHoraria( String fecha, String patron, String tz ) {&lt;br /&gt;         SimpleDateFormat format = new SimpleDateFormat( patron );&lt;br /&gt;              format.setTimeZone(TimeZone.getTimeZone( tz ));&lt;br /&gt;              try {&lt;br /&gt;                            System.out.println( format.parse( fecha ) );&lt;br /&gt;              } catch (ParseException pe) {&lt;br /&gt;                            pe.printStackTrace();&lt;br /&gt;              }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Lo que hace es muy sencillo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Primero crea una nueva instancia de SimpleDateFormat con el parámetro "patron" que le dice a la instancia que el texto que se le va a enviar está en ese formato, en mi caso "yyyyMMddkkmm".&lt;/li&gt;&lt;li&gt;Luego, lo más importante de lo que intentamos hacer, le asignaremos a nuestro objeto &lt;span style="font-style: italic;"&gt;format&lt;/span&gt; el TimeZone en el que está la hora que queremos convertir, en mi caso era GMT.&lt;/li&gt;&lt;li&gt;Posteriormente, simplemente usamos el método &lt;span style="font-style: italic;"&gt;parse(String)&lt;/span&gt; para convertir nuestro texto a un Date en la zona horaria local, en mi caso CST; por lo que el resultado final de este ejemplo es que el texto "200909211230" con el formato "yyyyMMddkkmm"lo cual representa "2oo9/09/21 &lt;span style="font-weight: bold;"&gt;12:30&lt;/span&gt;" en GMT pasa a ser "2009/09/21 &lt;span style="font-weight: bold;"&gt;6:30&lt;/span&gt;" en CST ya que son 6 horas menos a la referencia del &lt;a href="http://es.wikipedia.org/wiki/Tiempo_Universal_Coordinado"&gt;Tiempo Universal Coordinado o UTC&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Solo debemos recordar cachar las excepciones o hacer un throw de ellas.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-3494390605919223722?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/3494390605919223722/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=3494390605919223722' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/3494390605919223722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/3494390605919223722'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/12/convirtiendo-fechas-entre-zonas_12.html' title='Convirtiendo fechas entre zonas horarias (2)'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-5184514175594220723</id><published>2009-12-06T10:08:00.000-08:00</published><updated>2010-02-22T05:24:44.725-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Convirtiendo fechas entre zonas horarias</title><content type='html'>En cierto proyecto en el que estoy involucrado tuve que convertir algunas fechas en el huso horario &lt;a href="http://es.wikipedia.org/wiki/Tiempo_universal_coordinado"&gt;UTC&lt;/a&gt; (GMT) a la zona horaria &lt;a href="http://es.wikipedia.org/wiki/Tiempo_del_Centro"&gt;CST&lt;/a&gt; (Tiempo del centro) que es el que usa la mayoría de los estados en México. Como el proyecto está enteramente basado en tecnología Java, me di a la tarea de encontrar formas de hacer esto con librerías para Java.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Encontré que hay algunas librerías, como las de Quartz, implementan alguna clase para la conversión de zonas horarias. Pero en mi caso, necesitaba no depender tanto de librerías de terceros o fuera del API de Java.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Encontré que con las clases TimeZone y DateFormat puedo hacer la conversión usando las siguientes sentencias.&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;public void cambiarZonaHoraria(Date fecha, String to) {&lt;br /&gt;DateFormat dateFormat = new SimpleDateFormat();&lt;br /&gt;TimeZone tz = TimeZone.getTimeZone(to);&lt;br /&gt;dateFormat .setTimeZone(tz);&lt;br /&gt;System.out.println(dateFormat.format(fecha));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: georgia;font-family:georgia;" &gt;&lt;br /&gt;Lo que se hace básicamente es&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: georgia;"&gt;&lt;li&gt;crear una instancia de SimpleDateFormat con el formato de fecha local&lt;/li&gt;&lt;li&gt;crear una instancia del TimeZone con el nombre corto de la zona horaria que se especifique por el parámetro "to"&lt;/li&gt;&lt;li&gt;se asigna la nueva zona horaria al objeto dateFormat &lt;/li&gt;&lt;li&gt;haciendo uso del método format() del objeto dateFormat se hace la conversión de nuestra fecha a una cadena que representa la nueva fecha en la zona horaria que hemos creado, y esta fecha se imprime en pantalla.&lt;/li&gt;&lt;/ul&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: georgia;"&gt; De la misma forma se pueden hacer conversiones entre distintos husos y zonas horarias.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Ahora, cabe señalar que para crear un TimeZone se usa el nombre corto de la zona horaria. Aquí dejo un &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://docs.google.com/Doc?docid=0AQOX8lWd7OHvZGM0OHY5OGtfNDVjc3NrZ3ZkbQ&amp;amp;hl=en"&gt;listado de zonas horarias&lt;/a&gt;&lt;span style="font-family: georgia;"&gt; con sus nombres e IDs que he obtenido ejecutando este pequeño programa que encontré en &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.exampledepot.com/egs/java.util/GetAllZones.html"&gt;Java Developers Almanac&lt;/a&gt;&lt;span style="font-family: georgia;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;import java.util.Date;&lt;br /&gt;import java.util.TimeZone;&lt;br /&gt;&lt;br /&gt;public class ListadoZonasHorarias {&lt;br /&gt;&lt;br /&gt;public static void main( String[] args ) {&lt;br /&gt;Date fecha = new Date();&lt;br /&gt;// Obtiene el ID de todas las zonas horarias&lt;br /&gt;String[] zoneIds = TimeZone.getAvailableIDs();&lt;br /&gt;&lt;br /&gt;System.out.println("    ID    | Nombre corto    | Nombre largo            |Diferencia horaria    \n");&lt;br /&gt;for (int i=0; i&amp;lt;zoneIds.length; i++) {&lt;br /&gt;   // Ontiene el TimeZone dependiendo del ID e imprime el ID&lt;br /&gt;   TimeZone tz = TimeZone.getTimeZone(zoneIds[i]);&lt;br /&gt;   System.out.print(tz.getID() + "\t|");&lt;br /&gt;&lt;br /&gt;   // Obtiene e imprime el nombre corto y largo de la zona horaria&lt;br /&gt;   String shortName = tz.getDisplayName(tz.inDaylightTime(fecha), TimeZone.SHORT);&lt;br /&gt;   String longName = tz.getDisplayName(tz.inDaylightTime(fecha), TimeZone.LONG);&lt;br /&gt;   System.out.print(shortName + "\t\t|");&lt;br /&gt;   System.out.print(longName + "\t|");&lt;br /&gt;&lt;br /&gt;   // Obtiene e imprime la cantidad de horas de diferencia al huso GMT&lt;br /&gt;   int ro = tz.getRawOffset();&lt;br /&gt;   int horas = ro / (60*60*1000);&lt;br /&gt;   int minutos = Math.abs(ro / (60*1000)) % 60;&lt;br /&gt;   System.out.print(horas + ":" + minutos);&lt;br /&gt;   System.out.println();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;zoneids.length; ontiene="" dependiendo="" del="" id="" timezone="" tz="TimeZone.getTimeZone(zoneIds[i]);" el="" nombre="" corto="" y="" largo="" zona="" horaria="" string="" shortname="tz.getDisplayName(tz.inDaylightTime(fecha)," longname="tz.getDisplayName(tz.inDaylightTime(fecha)," obtiene="" e="" imprime="" la="" cantidad="" de="" diferencia="" al="" huso="" gmt="" ro="tz.getRawOffset();" int="" minutos="Math.abs(ro" horas=""&gt;&lt;zoneids.length; ontiene="" dependiendo="" del="" id="" timezone="" tz="TimeZone.getTimeZone(zoneIds[i]);" el="" nombre="" corto="" y="" largo="" zona="" horaria="" string="" shortname="tz.getDisplayName(tz.inDaylightTime(fecha)," longname="tz.getDisplayName(tz.inDaylightTime(fecha)," obtiene="" e="" imprime="" la="" cantidad="" de="" diferencia="" al="" huso="" gmt="" ro="tz.getRawOffset();" int="" minutos="Math.abs(ro" horas=""&gt;&lt;/zoneids.length;&gt;&lt;/zoneids.length;&gt;Espero que les pueda servir como a mí. Saludos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-5184514175594220723?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/5184514175594220723/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=5184514175594220723' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5184514175594220723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/5184514175594220723'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/12/convirtiendo-fechas-entre-zonas.html' title='Convirtiendo fechas entre zonas horarias'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-2774594264568589384</id><published>2009-08-31T14:57:00.000-07:00</published><updated>2009-08-31T15:29:42.455-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='myeclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>An internal error occurred during: "JSP Content Validator".</title><content type='html'>En la oficina en donde trabajo usamos Myeclipse como IDE y constantemente cuando editamos archivos XML o JSP en algunos proyectos, usando MyEclipse  6.0.1 GA, comunmente nos lanza una ventana emergente cada vez que intentamos guardar este tipo de archivos con los siguientes errores:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/SpxNr3T1vVI/AAAAAAAAAXo/Sq79O5MuQKk/s1600-h/errorValitationMyEclipse.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 269px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/SpxNr3T1vVI/AAAAAAAAAXo/Sq79O5MuQKk/s320/errorValitationMyEclipse.png" alt="" id="BLOGGER_PHOTO_ID_5376257471150406994" border="0" /&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;An internal error occurred during: "JSP Content Validator".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidationHelper&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;An internal error occurred during: "JSP Semantics Validator (JSF)".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidationHelper&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;An internal error occurred during: "JSP Syntax Validator".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidationHelper&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;Y como ya se me acabó la paciencia, estuve investigando y al parecer son muchos los que tienen el mismo problema, sin embargo encontré una solución rápida pero nada atractiva, la cual es desactivar las validaciones de JSP y JSF.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/SpxN3HGIm0I/AAAAAAAAAXw/ji_YlOz9OMY/s1600-h/desactivarValidaciones.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 238px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/SpxN3HGIm0I/AAAAAAAAAXw/ji_YlOz9OMY/s320/desactivarValidaciones.png" alt="" id="BLOGGER_PHOTO_ID_5376257664366451522" border="0" /&gt;&lt;/a&gt;Para hacer esto debemos abrir la ventana de preferencias que está en el menú &lt;span style="font-style: italic;"&gt;MyEclipse--&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Preferences&lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Y desactivar las casillas para&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/SpxIW3W5S4I/AAAAAAAAAXQ/0R6UabJCJws/s1600-h/desactivarValidaciones.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;JSF&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Application&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Configuration&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Validator&lt;/span&gt;, &lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;JSP&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Content&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Validator&lt;/span&gt;, &lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;JSP&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Semantics&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Validator&lt;/span&gt;, &lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;JSP&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Syntax&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Validator&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Con esto tendremos solucionado &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;provisionalmente&lt;/span&gt; el error de las &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;validaciones&lt;/span&gt; que muestran esas molestas ventanas emergentes cada vez que queremos guardar una archivo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;JSP&lt;/span&gt; o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;XML&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-2774594264568589384?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/2774594264568589384/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=2774594264568589384' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2774594264568589384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2774594264568589384'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/08/internal-error-occurred-during-jsp.html' title='An internal error occurred during: &quot;JSP Content Validator&quot;.'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_g4nBGD_OZCc/SpxNr3T1vVI/AAAAAAAAAXo/Sq79O5MuQKk/s72-c/errorValitationMyEclipse.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-2170857315726339896</id><published>2009-08-31T00:00:00.000-07:00</published><updated>2009-08-31T15:13:30.945-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Comenzando con Java (1)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/SpxK51xOiyI/AAAAAAAAAXg/yDKSN30fZyg/s1600-h/baby-programmer.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 212px;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/SpxK51xOiyI/AAAAAAAAAXg/yDKSN30fZyg/s320/baby-programmer.jpg" alt="" id="BLOGGER_PHOTO_ID_5376254412720081698" border="0" /&gt;&lt;/a&gt;Como lo prometido es deuda, y para no reinventar la rueda, decidí que en vez de grabar un video tutorial y aburrirlos con mi voz, mejor les daré acceso a algunos videos que otros ya han hecho de manera muy profesional.&lt;div class="entry"&gt; &lt;p&gt;1. Los primeros videos son unos que me encontré mientras buscaba cómo poder ayudar a unos compañeros a los que les dí tutorías. Son unos videos que comienzan desde los aspectos básicos de Java pasando por el IDE, conceptos, bifurcaciones, iteraciones, vectores y algunos ejemplos.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.videoaprendizaje.com/index.php?topic=536.0"&gt;http://www.videoaprendizaje.com/index.php?topic=536.0&lt;/a&gt;&lt;/p&gt; &lt;p&gt;2. Los siguientes son una serie de videos muy profesionales con el propósito de ser un curso hacia la certificación SCJP del Ing. Julio César Fuenes Ochoa liberado bajo licecia Creative Commons. Se pueden descargar dos versiones del mismo autor, de dos sitios distintos.&lt;/p&gt; &lt;p&gt;&lt;a href="http://locx24.wordpress.com/2009/02/23/curso-en-videotutoriales-de-java-se-50/"&gt;http://locx24.wordpress.com/2009/02/23/curso-en-videotutoriales-de-java-se-50/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.kootbox.com/component/option,com_remository/Itemid,27/func,select/id,6/orderby,2/page,1/"&gt;http://www.kootbox.com/component/option,com_remository/Itemid,27/func,select/id,6/orderby,2/page,1/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;En fin, espero que disfruten de estos videotutoriales y les sea de mucho provecho. Sigan visitándonos, pronto pondremos videos con propósitos más específicos. Si tienen peticiones puden enviarlas o seguirnos vía &lt;a title="Jesfre" href="http://twitter.com/Jesfre"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Publicado originalmente en &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://swcoders.com/"&gt;http://swcoders.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;       &lt;/div&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-2170857315726339896?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/2170857315726339896/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=2170857315726339896' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2170857315726339896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2170857315726339896'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/08/comenzando-con-java-1.html' title='Comenzando con Java (1)'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_g4nBGD_OZCc/SpxK51xOiyI/AAAAAAAAAXg/yDKSN30fZyg/s72-c/baby-programmer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-3022135067196874097</id><published>2009-08-23T10:24:00.000-07:00</published><updated>2009-08-23T14:50:21.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>¿PHP o Java?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/SpG5kRmXyaI/AAAAAAAAAXA/NcvvC91nE3M/s1600-h/javavsphp.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/SpG5kRmXyaI/AAAAAAAAAXA/NcvvC91nE3M/s320/javavsphp.png" alt="" id="BLOGGER_PHOTO_ID_5373279863280486818" border="0" /&gt;&lt;/a&gt;&lt;div class="entry"&gt;A veces algunos amigos me preguntan qué lenguaje de programación deberían aprender, y yo les digo -el que quieras-. Pero sinceramente es un poco más complicado, porque les debería preguntar primero -Bueno, ¿qué es lo que quieres hacer?-&lt;br /&gt;&lt;br /&gt;Pero tal vez la pregunta debería redefinirse y ahora explico porqué…&lt;br /&gt;&lt;br /&gt;Porque recuerdo que en una clase nos dejaron la tarea de comparar las tecnologías PHP, Java y .NET. Sin embargo yo creo que ambas tecnologías, PHP y Java, no pueden compararse, y no quiero decir que PHP no le llegue a los talones a Java, no me malinterpreten.&lt;br /&gt;&lt;br /&gt;Debemos tener presente qué es PHP. PHP es una tecnología de programación para Web; para eso fue creado. Sin embargo Java es una plataforma tecnológica con el que se pueden hacer aplicaciones Web, de escritorio, móviles, y un largo etcétera. Tal vez, la comparación que debería hacerse es “¿Qué necesito para lo que quiero hacer, PHP o JSP/Servlets?”. Ya que los JSP y Servlets son un conjunto de APIs de Java que permiten programar aplicaciones para Web. Además de estos, Java cuenta con decenas de otras definiciones con los que se pueden hacer infinidad de cosas.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Por eso, si me preguntan -¿Qué lenguaje de programación deberían aprender?-, yo podría preguntarles -¿Qué es lo que necesitas hacer?- Porque con JSP y Servlets puedes hacer lo que harías con PHP y mucho más.&lt;br /&gt;&lt;br /&gt;Ahora, no quiero caer en que se puede programar en Java igual que se haría con PHP, porque también hay que reconocer que existe una curva de aprendizaje mayor en el lenguaje Java que en PHP. Y sin mencionar que cuando uno quiere hacer cosas más complejas y robustas tendrá que aprender a usar algún framework para lograr su trabajo.&lt;br /&gt;&lt;br /&gt;Por fuera de todo eso, lo que siempre recomiendo es, aprende Java, ya que los programadores Java tienen una gran demanda en México y muchos países y son muy bien pagados. Hay mucha documentación gratuita y profesionales dispuestos a ayudar.&lt;br /&gt;&lt;br /&gt;Por eso, únete a nosotros y síguenos constantemente para ir aprendiendo Java. Próximamente comenzaremos con los videos…&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Publicado originalmente en &lt;a href="http://www.swcoders.com/"&gt;http://www.swcoders.com&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-3022135067196874097?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/3022135067196874097/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=3022135067196874097' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/3022135067196874097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/3022135067196874097'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/08/php-o-java.html' title='¿PHP o Java?'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_g4nBGD_OZCc/SpG5kRmXyaI/AAAAAAAAAXA/NcvvC91nE3M/s72-c/javavsphp.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-8619073932145929628</id><published>2009-08-13T09:33:00.000-07:00</published><updated>2009-08-14T16:48:32.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>¿Cómo puedo aprender Java?</title><content type='html'>&lt;div class="entry"&gt;        &lt;p&gt;En el blog de &lt;a href="http://www.swcoders.com/"&gt;http://www.swcoders.com&lt;/a&gt; hace algún rato publiqué un post donde explico cinco sugerencias sobre cómo aprender a programar en Java, y para cualquier lenguaje de programación funciona igualmente. Pues este es un copy&amp;amp;paste del mismo:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;En varias ocasiones mis amigos me han preguntado sobre cómo podrían comenzar a aprender a programar en Java. Pues lo que siempre les he respondido es “&lt;strong&gt;leyendo y haciendo&lt;/strong&gt;“. Cuando aprendí a programar en Java fue gracias a unos amigos que me decían lo mismo, pero ¿de dónde leer?, lo que estos amigos me decían, y lo que yo respondo ahora a los que me hacen la pregunta es que “&lt;strong&gt;Google tiene todas las respuestas&lt;/strong&gt;“, bueno, aveces no todas.&lt;/p&gt; &lt;p&gt;Es que para aprender a programar en &lt;strong&gt;cualquier lenguaje &lt;/strong&gt;y para ser aficionado a la programación, la persona debe ser un investigador nato. Y si has llegado aquí es porque estás buscando aprender, y estamos para facilitarte el aprendizaje.&lt;/p&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Leyendo&lt;/strong&gt;. Hay muchos tutoriales esparcidos por toda la Web, solo es cosa de saber buscar. Pues si pones “tutorial OR manual Java” en cualquier buscador obtendrás cientos de guías de aprendizaje de Java. Solo es cosa de que te sientes un fin de semana con café y frituras frente a la computadora. Si eres más tradicional, pues hay cientos de libros muy baratos en mercadolibre.com, aunque también los hay en formato electrónico. Un lugar al que siempre voy es a www.g2p.org que te ayuda con los hacks de google para buscar en los índices de servidores buscando lo que tú quieras.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Haciendo&lt;/strong&gt;. Muchos tutoriales tienen ejemplos de práctica básicos con los que puedes comenzar a jugar. En los mismos tutoriales te explican cómo configurar tu ambiente en Windows o Linux para poder programar en Java.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;No temerle al inglés&lt;/strong&gt;. Un factor de miedo que veo en muchas ocasiones en algunos amigos que quieren aprender a programar es que muchos libros y tutoriales que consiguen están en inglés. Pero para ser aficionado a la informática en general, debes aprender a no temerle a los idiomas, y no me refiero a que seas políglota; pero como mínimo, deberás estar aprendiendo a leer el inglés mientras aprendes a programar. Pero no temas, actualmente hay muchísima información y tutoriales en Español muy profesionales y sencillos con los que puedes aprender.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Foros&lt;/strong&gt;. También puedes suscribirte a foros donde puedes hacer preguntas respecto de tus dudas y te aseguro que más de un programador Java estará dispuesto y tendrá la respuesta que buscas. Algunos son: &lt;a title="Foros FIT" href="http://fit.um.edu.mx/foros/index.php?board=5.0" target="_blank"&gt;Foros FIT&lt;/a&gt;, &lt;a title="javahispano.org" href="http://javahispano.org/forum/" target="_blank"&gt;javahispano.org&lt;/a&gt;, &lt;a title="programacion.com" href="http://www.programacion.com/java/foros/6/" target="_blank"&gt;programacion.com&lt;/a&gt;, &lt;a title="programacionweb.net" href="http://www.programacionweb.net/foros/foro/Java/" target="_blank"&gt;programacionweb.net&lt;/a&gt;, &lt;a title="forodejava.com" href="http://forodejava.com/foro/index.php" target="_blank"&gt;forodejava.com&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Podcasts&lt;/strong&gt;. Los podcast son un medio con el cuál puedes mantenerte actualizado sobre las últimas noticias y nuevas herramientas acerca de Java. Esto te ayudará a abrirte la mente a muchas cosas que existen en el mundo Java que tal vez desconozcas. El podcast que escucho con más frecuencia es el de &lt;a title="javahispano.org" href="http://javahispano.org/" target="_blank"&gt;javahispano.org&lt;/a&gt;, y el de &lt;a href="http://www.javaposse.com/index.php?post_category=podcasts" target="_blank"&gt;javaposse.com&lt;/a&gt;, en inglés.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;La nota original esta &lt;a href="http://www.swcoders.com/?p=6"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Te invito a darte una vuelta por &lt;a href="http://www.swcoders.com/"&gt;SWCODERS&lt;/a&gt; y ver el material y tutoriales que hay.&lt;br /&gt;&lt;/p&gt;       &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-8619073932145929628?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/8619073932145929628/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=8619073932145929628' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/8619073932145929628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/8619073932145929628'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/08/como-puedo-aprender-java.html' title='¿Cómo puedo aprender Java?'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-2568868184991404792</id><published>2009-07-23T09:22:00.000-07:00</published><updated>2009-08-13T10:16:39.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><title type='text'>Software Gurú 09 Conferencia y Expo en Monterrey</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sg.com.mx/sg09/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 62px;" src="http://2.bp.blogspot.com/_g4nBGD_OZCc/SmiS9gU9njI/AAAAAAAAAWw/b94x8-9A72w/s400/ban_sg09_520X80.jpg" alt="" id="BLOGGER_PHOTO_ID_5361696941732109874" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;Hace ya unos meses se anunció que el magno evento de software en México se realizaría en la ciudad de Monterrey, del 27 al 30 de Septiembre. Pues bien, a los que gustan de aprender nuevas tecnologías y las mejores prácticas del sector laboral los invito a asistir.&lt;br /&gt;Lo mejor es aprovechar los descuentos de la &lt;a href="http://www.sg.com.mx/sg09/content/view/8/52/"&gt;tarifa temprana&lt;/a&gt;, y por si no se enteraron, hubo también una promoción (competencia) en la que podías ganarte un pase a las conferencias si eras el que mayor cantidad de herramientas registrase en &lt;a href="http://www.sg.com.mx/sg09/content/view/8/52/"&gt;SGguía&lt;/a&gt;, bueno, pues el pase me lo gané yo.... XD&lt;br /&gt;Si se animan, ahí nos vemos.&lt;br /&gt;&lt;br /&gt;Enlace: &lt;a href="http://www.sg.com.mx/sg09/"&gt;http://www.sg.com.mx/sg09/&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-2568868184991404792?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/2568868184991404792/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=2568868184991404792' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2568868184991404792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2568868184991404792'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/07/software-guru-09-conferencia-y-expo-en.html' title='Software Gurú 09 Conferencia y Expo en Monterrey'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_g4nBGD_OZCc/SmiS9gU9njI/AAAAAAAAAWw/b94x8-9A72w/s72-c/ban_sg09_520X80.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-1596585599828643832</id><published>2009-06-09T14:06:00.000-07:00</published><updated>2009-08-13T10:20:25.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><category scheme='http://www.blogger.com/atom/ns#' term='dante gebel'/><title type='text'>Super Clásico Chihuahua 2009</title><content type='html'>Estamos pensando ir nuevamente al Superclásico Chihuahua, nuevamente con Dante Gebel e invitados especiales. La promo está lista en la página de la Iglesia Amistad Cristiana de Chihuahua.&lt;br /&gt;&lt;br /&gt;La promo&lt;br /&gt;&lt;a href="http://www.amistad.com.mx/superclasico/html/pr09.html"&gt;http://www.amistad.com.mx/superclasico/html/pr09.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La primera versión fue imperdible, esta no será la excepción.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-1596585599828643832?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/1596585599828643832/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=1596585599828643832' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/1596585599828643832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/1596585599828643832'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/06/superclasico-chihuahua-2009.html' title='Super Clásico Chihuahua 2009'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-75619426092389616</id><published>2009-03-26T10:08:00.000-07:00</published><updated>2009-08-13T10:15:49.632-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><title type='text'>Visita swcoders.com</title><content type='html'>Después de mucho tiempo, y de verdad fue mucho tiempo, sin escribir en mi blog, quiero invitarlos a visitar el blog &lt;a href="http://swcoders.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;swcoders&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;com&lt;/span&gt;.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Estuve ausente porque unos compañeros y yo estábamos preparando un proyecto y también habíamos pensado tener un blog en colaboración. Pues bien, aunque tardamos mucho por varias razones, finalmente nació &lt;a href="http://swcoders.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;swcoders&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;com&lt;/span&gt;&lt;/a&gt;. Aquí hablaremos de varias tecnologías de programación como son Java, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;PHP&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Extjs&lt;/span&gt;, Linux, etc.&lt;br /&gt;&lt;br /&gt;Mi nombre de usuario es &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Jesfre&lt;/span&gt;, y también pueden seguirme vía &lt;a href="http://twitter.com/Jesfre"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Twitter&lt;/span&gt;&lt;/a&gt;. Estoy a cargo junto a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;hnao&lt;/span&gt; de la sección Java. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Visítanos&lt;/span&gt; y comparte con nosotros tus dudas y comentarios.&lt;br /&gt;Muchas gracias por haber visitado mi antiguo blog.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-75619426092389616?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/75619426092389616/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=75619426092389616' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/75619426092389616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/75619426092389616'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2009/03/visita-swcoderscom.html' title='Visita swcoders.com'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-3526639148242364805</id><published>2008-08-22T02:19:00.000-07:00</published><updated>2009-08-13T10:16:10.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Ya está lista la nueva versión de SimpleGDC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/SJQpOjHCteI/AAAAAAAAAU0/m0Yz_70Hias/s1600-h/Sum.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/SJQpOjHCteI/AAAAAAAAAU0/m0Yz_70Hias/s400/Sum.PNG" alt="" id="BLOGGER_PHOTO_ID_5229850397203674594" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Seguramente no conocen SimpleGDC, por supuesto. Es una nueva aplicación para generar documentos contables, tales como la Hoja de rayado diario, Esquemas de mayor, Balanza de comprobación y el Balance general. Actualmente en la versión 2.0.0.1 con muchas mejoras respecto a la primera versión.&lt;br /&gt;La generación de estos documentos los realiza SimpleGDC después de haber creado una hoja de asientos de diario, y los exporta a Excel para su mejor uso. &lt;a href="http://simplegdc.wikispaces.com/space/showimage/Imagen60.png"&gt;Screenshot&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pueden encontrar la descarga y el tutorial de uso en &lt;a href="http://simplegdc.wikispaces.com/"&gt;http://simplegdc.wikispaces.com&lt;/a&gt; y apoyar con sugerencias, ideas e informe de errores en el &lt;a href="http://groups.google.com/group/simplegdc?hl=es"&gt;grupo de discusión de Google&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Muchas gracias a la profra. Araceli Susunaga por la idea de la realización de esta aplicación.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-3526639148242364805?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/3526639148242364805/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=3526639148242364805' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/3526639148242364805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/3526639148242364805'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2008/08/ya-est-lista-la-nueva-versin-de.html' title='Ya está lista la nueva versión de SimpleGDC'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_g4nBGD_OZCc/SJQpOjHCteI/AAAAAAAAAU0/m0Yz_70Hias/s72-c/Sum.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-7491867008750852298</id><published>2008-08-11T18:51:00.000-07:00</published><updated>2009-08-13T10:18:08.688-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prácticas'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Cómo catalogar a un desarrollador de software</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;15 consejos para obtener el ascenso que quieres, e incrementar el salario que te mereces&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;¿Cómo catalogas a un desarrollador de software? Es una pregunta fantástica. Hay muchas teorías por allí, y hay muchas formas en las que los equipos de Recursos Humanos lo hacen y te ayudarán a dirigir el estudio de rendimiento. Sin embargo, ¿qué hace realmente a un gran desarrollador? Y si eres un Desarrollador de Software, ¡cómo puedes mejorar hoy tu carrera! Abajo les presento mi biblia para catalogar a los desarrolladores en mi equipo. Siguiendo estos consejos e ideas, &lt;span style="font-weight: bold;"&gt;podrás mejorar tu estado de "buen desarrollador", a "gran desarrollador"&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Tiempo que invierte escribiendo código grandioso.&lt;/span&gt;&lt;br /&gt;¡No me refiero a la cantidad, sino a la &lt;span style="font-weight: bold;"&gt;calidad&lt;/span&gt;! Sin embargo un giro a esto es: Me refiero a la cantidad, &lt;span style="font-weight: bold;"&gt;y&lt;/span&gt; la calidad. Muchísimas veces encontrarás uno de estos dos escenarios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;En el escenario A&lt;/span&gt;, tienes a un desarrollador que escribe código como loco, y las cosas parecen funcionar... entonces comienzan a suceder errores, y tú no sabes porqué, parece que llevará toda la vida arreglarlos. ¡O ellos arreglan 10 y causan 5 más! Pero obtuviste bastante código...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;En el escenario B&lt;/span&gt;, tienes a un desarrollador que parece inteligente. Lo entrevistas y él lo sabe todo de todo, puede hablar teóricamente de arriba a abajo. Pero por alguna razón, tú le has asignado tres tareas, y tres semanas después, ¡él aun está trabajando en algo que debió haber terminado en 3 días! Y estás confundido. ¡Él es tan inteligente! Conoce todo acerca de generics, multi/threading, ¡y puede explicarle de punteros a tu abuela y hacer que ella se emocione y quiera codificar! ¿Por qué no esté terminado nada?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¡En el escenario de tus sueños, obtienes código grandioso!&lt;/span&gt; El código grandioso está hecho por un gran desarrollador que es súper inteligente, conoce lo que es código de calidad, y escribe código como Tony Hanks maneja su patineta. ¡Se ve tan natural! Es muy entretenido verlo/a. Además, lo consiguen a una velocidad cegadora. Saben cuánto tomará cada problema, y no se detendrán por buscar cuál es la mejor solución del mundo con múltiples threads y capas para escribir un juego de pong. Lo errores no existen porque ellos escriben pruebas unitarias para ellos mismos, y solo codifican en sus sueños. Estos chicos valen lo que pesan en ORO.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Interpretación del problema.&lt;/span&gt;&lt;br /&gt;Hay un problema con millones de formas de resolverlo. Algunas personas son solamente pensadores rápidos y pueden salir con múltiples soluciones instantáneamente. Sin embargo, lo que un gran desarrollador haría es &lt;span style="font-weight: bold;"&gt;definir totalmente el problema antes de hacer cualquier cosa&lt;/span&gt;. Un gran desarrollador escribirá un documento o pizarra con el problema. Ellos enviarían un correo electrónico a su gerente y dirían cosas como "¿Podemos tener una junta para que le pueda explicar cómo entiendo yo el problema?" Luego ellos comienzan dando varias soluciones, etc.&lt;br /&gt;&lt;br /&gt;Vea, un gran desarrollador conoce que la forma en la que ellos ven e interpretan el problema, probablemente no es la forma en la que el creador del problema quiso que fuese entendido. Este es un punto importante, ten eso en mente. Un gran desarrollador buscará entender completamente el problema antes de intentar proponer una solución. ¿Entiendes el problema al 100%? ¿no? ¿99%? ¡Ve, haz más preguntas y asegúrate que está 100% claro!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Cómo se aborda el problema&lt;/span&gt;&lt;br /&gt;¿Una vez que tengas claramente definido el problema, solo comienzas a codificar? ¡Error! Un gran desarrollador mirará la disposición, y comenzará a pensar en varias opciones, y basado en el problema, pensará en el mejor enfoque para resolver el problema. Yo veo esto como un juego de ajedrez; puedes saber cómo se mueven todas las piezas, conocer todas las reglas del juego, ¿pero sólo comenzarás a mover las piezas? ¡Claro que no! Debes analizar el tablero, crear tu plan de juego, mirar a tu oponente, y ver qué es lo que él o ella hace usualmente. Es el mismo caso cuando abordas un problema.&lt;br /&gt;&lt;br /&gt;Observa el problema, imagínate cómo necesita ser el resultado, el tiempo del que dispones, la calidad que se espera, las herramientas de las que dispones para trabajar, etc. Entonces, comienzas a resolver el problema.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. La confianza en el código&lt;/span&gt;&lt;br /&gt;Como gerente, cuán confiado puede estar en sus códigos. Puede decirle a algunos desarrolladores "Necesito esto completamente para el Viernes" y llega el viernes, recibe un email diciendo "He revisado el código en el branch y está listo para las pruebas" y tú sabes que el equipo de aseguramiento de la calidad encontrará muy pocos errores, o ninguno. Por otra parte, hay algunos desarrolladores que en lugar de eso le enviarán un email diciendo "Aún no he terminado, estará listo para el Lunes a primera hora en la mañana." Y estás 95% seguro que estará plagado de errores, y que no será utilizable durante días, sino es que semanas, hasta que los errores sean eliminados completamente del código.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resumiendo: ¡La más alta fiabilidad que puedes tener de los desarrolladores, es que están muy cerca de ser grandes desarrolladores!&lt;/span&gt; Imagínate siendo tu manager, y el peso que quitas de su hombro si no tiene porqué preocuparse por tu código.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;5. Confianza en la solución&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Una cosa es sentirte confiado en el código. Si tienes a un gran desarrollador en tus manos, estás confiado en la solución. Los grandes desarrolladores serán grandes arquitectos. Ellos son capaces de analizar el problema entero, e imaginarse cómo necesita ser solucionado el problema. Ten en cuenta que no es solo codificar con código grandioso, !se trata también y principalmente de  la arquitectura que le das a la solución! Este es un punto importante, y que realmente separa a los buenos desarrolladores de los grandes en el mundo del software.&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Satisfacer los requerimientos del usuario&lt;/span&gt;&lt;br /&gt;Al final del día, puedes tener el mejor código, y la mejor solución posible, con toda la mejor arquitectura, ¿pero logra satisfacer los requerimientos del usuario? ¡Posiblemente no! Y has fallado completamente. Ahora, hay varios grados de falla, pero un gran desarrollador dará en el blanco consistentemente. Ellos encuentran lo que el usuario necesita exactamente, crean una propuesta, le muestran al usuario lo que obtendrán paso a paso durante la marcha con ediciones semanales sin errores, y seguirán la construcción desde la última versión. ¡Los requerimientos están justo como deben estar y el usuario baila de contento!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Mantenerse actualizado&lt;/span&gt;&lt;br /&gt;Los grandes desarrolladores están actualizando constantemente sus habilidades independiente y proactivamente! Tienen sed de nuevos conocimientos y perfección como un gato con la leche. No esperan a que su director venga a darles tareas, les ofrezcan tomar cursos, o les den libros para ser más eficientes. ¡Ellos van y consiguen esas cosas por sí mismos!&lt;br /&gt;&lt;br /&gt;Encuentran las conferencias a los que quieren asistir, y envían correos electrónicos como "Estaría encantado de ir al Tech-Ed este año. Aprenderé [insertar razones aquí], y estaré capacitado para contribuir a [insertar proyectos aquí]. He hecho provisión para ahorrarles [dinero/razones métricas aquí]. ¿Si fuera posible, la empresa me ayudaría a pagar el viaje?" Si alguien me enviara esto, no solo le podría ayudar a pagar, ¡sino que le pagaría el viaje entero!&lt;br /&gt;&lt;br /&gt;Los grandes desarrolladores acuden siempre a los grupos de usuarios, como un grupo de usuarios .net por ejemplo, o un grupo de usuarios Java. Asisten a los encuentros locales, y hacen lo que sea para alimentar su cerebro. ¿Has leído todos los últimos blogs y revistas? Haz una lista con tus 5 blogs de desarrollo favoritos. ¿Puedes hacerlo? ¡Deberías poder hacerlo como si fueran actividades de un club de boy scouts! Actualízate, esto abrirá tu mente, tendrás la siguiente gran idea y serás recompensado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. Contribuye al equipo&lt;/span&gt;&lt;br /&gt;Puedes ser uno de los mejores, o aún el mejor programador, arquitecto y más brillante chico en el equipo, pero en lo que a mí respecta, sino estás dispuesto a compartir y contribuir con tu equipo, estás perdiendo la mitad de tu valor, sino es que más. Un gran desarrollador hace grandes a los otros alrededor de él. fíjate, un buen desarrollador consigue ser cada vez mejor, pero no comparte el conocimiento que obtiene, o cómo lo obtiene.&lt;br /&gt;&lt;br /&gt;Aprende nuevas cosas, aprende acerca de las nuevas tecnologías, pero no deja que otros sepan de ellas. Un buen desarrollador termina sus proyectos a tiempo, pero cuando la presión es mucha, no está allí para su equipo. Un gran desarrollador está en contacto con todos los proyectos que tiene el equipo y está listo para ayudar cuando se necesite. Ellos dirán cosas como "Me enteré que el equipo A está trabajando en [proyecto], y creo que puedo ayudar, ¿no crees?"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9. Hace grandiosas actas de juntas&lt;/span&gt;&lt;br /&gt;Esto es increíblemente importante! No hay peor cosa que llamar a una reunión, tomar tiempo para explicar nuevos conceptos, nuevas ideas, lluvia de ideas, venir con grandes diseños, y no tener nadie que tome notas de las reuniones. Incluso si tienes a alguien designado para esto, quisiera ver a &lt;span style="font-weight: bold;"&gt;todos &lt;/span&gt;con pluma y papel (de preferencia la notebook del desarrollador). Un gran desarrollador hace grandiosas actas en las reuniones; escribe todos los acuerdos de la reunión, y al final de los encuentros puedes escucharlo decir "Entonces solo para confirmar, mis tareas son: . ¿Me falta algo?"&lt;br /&gt;&lt;br /&gt;Luego, un gran desarrollador enviará el acta a su manager, listando la fecha de la reunión, el tema, y quién lo atendió. Siguiendo esto, tendrás las tareas en la parte superior, con el abanderado de la tarea. Bajo eso, encontrarás las notas detalladas de la reunión. Un buen desarrollador no toma notas de las reuniones, dice 'Si' cada vez que agregas una tarea a su lista... y espera que su memoria le funcione bien. Luego te envía un email para revisar sus cambios, y te molestas cuando ves que se le olvidaron algunas cosas, pero obtuvo el 90% si está bien. ¡Este es un &lt;span style="font-weight: bold;"&gt;enorme desperdicio &lt;/span&gt;de tiempo! Y sin ninguna razón. &lt;span style="font-weight: bold;"&gt;Toma grandiosas actas de reuniones.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10. Esté dispuesto a aprender y aceptar críticas constructivas&lt;/span&gt;&lt;br /&gt;Si has leído esto, entonces estarás tomándolo todo e intentarás implementar alguna de mis sugerencias en tus labores de desarrollo diarias. Mira, otra área importante es la habilidad del desarrollador para aprender de otros, y aceptar críticas. Sé una persona dispuesta a aprender, debes ser como una esponja, y absorber enormes cantidades de conocimiento rápidamente! Tu jefe está allí por alguna razón. Seguro, ellos pueden ser unos programadores a la antigua, pero también estuvieron en las trincheras, y han estado en cientos de batallas, y tienen heridas y miedos. Ellos tienen el instinto para hacer grandes decisiones, y hacerte grande. Están en la posición en la que están porque quieren verte tener éxito, y &lt;span style="font-weight: bold;"&gt;desean &lt;/span&gt;hacerte crecer.&lt;br /&gt;&lt;br /&gt;Por supuesto, este es el entorno de trabajo ideal, pero eso puede pasar donde tú quieras si eres un gran desarrollador. &lt;span style="font-weight: bold;"&gt;Te garantizo absolutamente, y te prometo, que lo mejor es cultivar esta habilidad&lt;/span&gt;, hacerte extremadamente enseñable, tomar notas de las sugerencias y críticas, y ponerte el objetivo de mejorar, y &lt;span style="font-weight: bold;"&gt;es la mejor oportunidad para convertirte en más de lo que te hayas imaginado posible&lt;/span&gt;. Si por otra parte, escoges pensar de tí mismo como "la élite", y que no tienes más que aprender, siempre estarás estancado en donde estás. Si no estás creciendo, ni siquiera estás en el status quo, estás muriendo! Crece!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;11. Siempre disponible cuando se necesite.&lt;/span&gt;&lt;br /&gt;Esto es dar y recibir. Si trabajas para una gran empresa, ellos serán flexibles contigo. Nunca deberían preguntarte acerca de las horas de cita con el doctor que no pudiste programar después de las horas de trabajo, por la hora de entrada o de salida, o tu hora de comida. Ellos deberían animarte a ir al gimnasio a la hora del almuerzo, pagar por las comidas cuando sales con el equipo, etc. Deberían darte algunos días libres después de algún día o proyecto pesado. Y la lista sigue y sigue.&lt;br /&gt;&lt;br /&gt;Sin embargo, con todas esas ventajas, vienen responsabilidades, inexcusablemente! En momentos difíciles, un gran desarrollador&lt;span style="font-weight: bold;"&gt; te sugerirá&lt;/span&gt; que el vendrá el fin de semana si se necesita. Se queda hasta muy tarde como sea posible y tan tarde como se necesite para &lt;span style="font-weight: bold;"&gt;asegurar que el trabajo se termine&lt;/span&gt;. Escucha, los grandes desarrolladores toman responsabilidad de sus creaciones. Ahora, claro que esto no es necesario, pero esta es la marca de un gran desarrollador. Algunas personas solo quieren trabajar sus 8 horas diarias, y ser buenos desarrolladores, pero ellos nunca serán grandes. Los grandes desarrolladores están con los jugadores del equipo hasta el final, y ven su trabajo como un arte, y a su equipo como una familia.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;12. Vestir profesionalmente a diario&lt;/span&gt;&lt;br /&gt;Nunca sabes cuándo puede venir un cliente a una visita. Nunca sabes cuándo serás llamado a una junta, ya que no todo es planeado. Y cuando ese momento llegue, debes estar listo para el baile! Un buen desarrollador viste ropa normal de lunes a viernes, incluso con jeans negros, y tenis que parecen zapatos de vestir. Un viernes casual lleva shorts, tenis, y una playera. Cuando la visita llega el viernes con una nueva cuenta enorme, no puedes llamarlo para ir a una comida porque él no está vestido apropiadamente.&lt;br /&gt;&lt;br /&gt;Un gran desarrollador viste ropa de negocios de lunes a viernes. Ellos visten para tener éxito. Claro, si no tienes habilidades, no serás ascendido a manager o líder de equipo solo porque vistas muy bien. Pero si tienes grandes habilidades, y vistes de traje y corbata, entonces te has catapultado de rango, no se puede negar. Los 400 dólares que gastaste en un conjunto decente y corbata te será devuelto con los años. ¡Te lo prometo!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;13. Habilidad de comunicación&lt;/span&gt;&lt;br /&gt;Esta es otra categoría crítica! Hay muchos buenos desarrolladores allí afuera, pero no hay muchos grandes desarrolladores, ¿Por qué? Porque todos los buenos desarrolladores son terribles comunicadores. Hay varios niveles de comunicación, desde un correo electrónico hasta encuentros SCRUM, todas las formas de reuniones ejecutivas y tu habilidad para contribuir en un nivel ejecutivo. Tú llegas a ser "El show" cuando te presentas a cientos de personas para mostrarles el nuevo software. Si bien no es necesario llegar a las etapas finales, debes al menos estar dispuesto a comunicar tus ideas clara y efectivamente en las reuniones. Mientras mejor sea tu comunicación, más lejos llegarás.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resumiendo: Si quieres ser un ejecutivo, debes tener un 9 o 10 en comunicación. &lt;/span&gt;Aun cuando tomes notas de las reuniones, o envíes reportes de estado, necesitas comunicarte extremadamente bien. No digas solo "Arreglé el error 1371" en tu reporte diario. &lt;span style="font-weight: bold;"&gt;Expláyate; explica cuán complicado fue resolver el problema&lt;/span&gt;, cuánto tiempo te tomó, o cómo lo resolviste rápidamente. Explica la tecnología que usaste, y porqué estás seguro que el problema no volverá a suceder. Tus reportes de estado no deberían ser algo malo que no te guste hacer. Los reportes deben ser una parte emocionante de la semana donde consigues mostrarle todo a tu manager.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;14. Objetivos en cuanto a habilidades&lt;/span&gt;&lt;br /&gt;Los buenos desarrolladores pueden hacer las cosas e ir haciendo diariamente lo que les digas que hagan. Realmente no ven a futuro y tampoco saben lo que quieren estar haciendo dentro de uno, cinco o 10 años. Algunos buenos desarrolladores saben lo que quieren... pero no tienen un plan real para conseguirlo. Un gran desarrollador tiene sus metas fijadas para un año, los siguientes cinco años, y sabe también dónde estará en 10 años.&lt;br /&gt;&lt;br /&gt;Los grandes desarrolladores además lo llevan a otros nivel, no solo piensan en sus objetivos, sino que también los visualiza. Pueden ver &lt;span style="font-weight: bold;"&gt;exactamente &lt;/span&gt;lo que estarán haciendo dentro de cinco años, y el nivel en el que lo estará haciendo. Y todavía más, un gran desarrollador crea un plan detallado para su siguiente año, lo completa con cursos que tomará, proyectos que completará, y relaciones que construirá.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;15. Habilidades organizacionales&lt;/span&gt;&lt;br /&gt;El componente final que realmente conjunta todo es la organización. Puedes ser el mejor desarrollador en el mundo, pero si no eres organizado, caerás y te hundirás. Eventualmente te abrumarás y finalmente te hastiarás. Los grandes desarrolladores mantienen un escritorio extremádamente limpio, cuidan sus laptops y escriben claramente. Anotan constantemente en su calendario de Outlook sus tareas y reuniones. Tiene un apartado en la bandeja de entrada para acordar con mensajes de correo a reuniones y nuevas asignaciones. Mantienen carpetas de archivos y pueden sacar instantáneamente proyectos, notas de reuniones y otros detalles cuando se les pida que lo saque.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bonus Tip: Pasión!&lt;/span&gt;&lt;br /&gt;Uno de los miembros de mi equipo leyó la entrada y me recordó algunas cosas que todas las personas simples en mi equipo tienen. Pasión! Sin pasión en los que haces a diario, no serás un gran desarrollador, o grande en niguna cosa. Esto es también la principal razón por la que las personas no tienen éxito. Un desarrollador apasionado superará al mejor desarrollador técnico si éste no se apasiona por su trabajo, su rol, y su proyecto. Piensa en esto, si has leido hasta aquí, ¿estarás haciendo un esfuerzo para hacer los cambios que he listado? Parece simple, pero sin la pasión para hacer esas cosas, realmente te comprometerás hoy y tendrás éxito?&lt;br /&gt;&lt;br /&gt;¡Entonces ahí lo tienes! Esos son los punos principales con los cuales evalúo a mi equipo de desarrollo durante las revisiones de los procesos. Pon atención, proveo a los miembros de mi equipo del mejor entorno como me es posible, y por lo tanto espero que sean grandes desarrolladores, o si tú mismo eres un desarrollador, por favor usa esta lista para hacer los cambios que sean necesarios, y catapulta tu carrera y la de tus compañeros.&lt;br /&gt;Sigue estos consejos, y obtendrás el escenso que buscas, el aumento de salario que estabas esperando, y sobre todo estarás feliz con tus logros. Inténtalo y cuéntanos de tus resultados en los comentarios de abajo. Me agradará escuchar de tí. ¡También si tienes otros puntos que creas que deberían ser agregados, hazmelo saber!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Traducido del original en &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.realsoftwaredevelopment.com/2007/08/how-to-rate-a-s.html"&gt;Real World Software Development&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Después de haber leído esto, me puse a reflexionar seriamente sobre mi estado actual como desarrollador de software. Soy fuerte en algunos puntos, pero muy débil en otros.&lt;br /&gt;En cualquier área de desarrollo de software en la que te encuentres, ¿cómo te catalogas? ¿Te has propuesto mejorar?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-7491867008750852298?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/7491867008750852298/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=7491867008750852298' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/7491867008750852298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/7491867008750852298'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2008/08/cmo-catalogar-un-desarrollador-de_11.html' title='Cómo catalogar a un desarrollador de software'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-6168945775486452604</id><published>2008-07-30T10:48:00.000-07:00</published><updated>2009-08-13T10:18:08.689-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Devolver el orgullo al nombre de "programador" para solucionar el déficit de programadores</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;Hace unas semanas atrás discutíamos en el &lt;a href="http://fit.um.edu.mx/foros/index.php?topic=1949.0"&gt;foro de mi facultad&lt;/a&gt;  acerca de las diferencias entre los títulos de "programador" y "desarrollador". En este foro comentaban maestros y alumnos acerca de esta distinción, entre los comentarios más frecuentes se encontraban que el programador simplemente codifica y el 'desarrollador' analiza, planifica, codifica y muchas otras cosas más. Esto me hace recordar la etapa del desarrollo de software de manera artesanal que tomó fuerza a finales de los 60's. Sin embargo, desde ese entonces, el desarrollo de software ha avanzado, aunque a pasos lentos que actualmente aun se sigue produciendo software a manos de técnicos y programadores artesanos.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Enrique Dans menciona el problema de la desvalorización de los programadores en su primer artículo referente al tema en &lt;a href="http://www.libertaddigital.com:6681/opiniones/opinion_38393.html"&gt;Libertad Digital&lt;/a&gt;:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:arial;"&gt;&lt;span style="font-style: italic; font-weight: bold;font-size:100%;" &gt;...el programador&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; es considerado una especie de "obrero especializado"&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, y sometido a una economía de salarios bajos, inestabilidad laboral, elevada rotación y fuerte incidencia de estrés.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Esta es la consideración que se tiene, cuando debería ser otra muy distinta.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 51);font-size:100%;" &gt;Ser programador es un trabajo creativo, un papel indispensable en la economía de hoy que merece muchísimo respeto y que genera un elevado valor.&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-size:100%;" &gt; Sin embargo, ¿dónde están los programadores? ¿Por qué no salen de las universidades, dispuestos a convertir esa hiperabundancia actual de ideas en código y a participar en esa revolución consistente en crear tantas actividades en el seno de la red? ¿Qué profesionales están generando las carreras de Informática o algunas Ingenierías, y &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 51);font-size:100%;" &gt;por qué tienden a rechazar la idea de programar como si fuera un estigma o algo típico de obreros especializados&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-size:100%;" &gt;? &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;En España, a este lado del túnel, se necesitan programadores. Y los programadores necesitan una reivindicación urgente de su profesión, que recupere el legítimo orgullo de quien crea, de quien desarrolla, de quien se responsabiliza de un todo, de quien se enamora de un proyecto y no se limita a ser un obrero en el mismo, sino un verdadero arquitecto. &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Se buscan programadores con orgullo y capacidad para serlo.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Pero por lo que se ve, habrá que mirar debajo de las piedras.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Y México no escapa de este problema.&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:100%;"  &gt; Sumado a esto está la deserción de los estudiantes en las carreras de informática y sistemas computacionales, y las matrículas se reducen cada vez más. &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Como señala Emilio Osorio en la revista &lt;a href="http://www.sg.com.mx/content/view/321/"&gt;Software Gurú&lt;/a&gt;:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;El desarrollo de software atrae cada vez a menos jóvenes, y muchos de estos cambian de carrera antes de graduarse... Mucho se ha hablado de las causas de esta crisis, algunos culpan a la falta de profesionalismo y experiencia real de los maestros, otros, al mal ejemplo que damos los que somos parte de esta industria: nuestras jornadas de trabajo, niveles de estrés y costumbres geeks no son muy atractivas para jóvenes de 18 años que sólo se quieren divertir.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Leyendo más acerca de porqué se ha infravalorado el título de programador he encontrado varias perspectivas. Una de estas alude a la poca importancia que le dan las empresas y casas de software a los programadores, viendo en ellos a simples máquinas mecánicas a los cuales se les dan unos planos de la construcción de un determinado software y produce código que hace lo que el analista le ha planteado. Tal como lo menciona Enrique Dans hablando acerca de la concepción común de un programador en la publicación de &lt;a href="http://www.altia.es/opencms/opencms/altia/_galeria/documentos/altianews/200710_altianews_20.pdf"&gt;altianews&lt;/a&gt; de septiembre de 2007:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt; ...mientras en nuestro entorno, la palabra “programador” define un trabajo de baja cualificación, casi mecánico, asociado al traslado de las especificaciones de un analista en líneas de código ejecutables por un ordenador, lo que las empresas necesitan no es eso, sino una noción más moderna del término: la de un profesional mucho más autosuficiente, con conocimientos de ingeniería del software, teoría de la computación, matemática, algorítmica e incluso nociones de estrategia de negocio, que desempeña una actividad de elevada cualificación y responsabilidad. &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;Enrique Dans: “Programadores: cuando falla la base”&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Otra de las rezones se da en el artículo mencionado son las instituciones académicas, ya que los profesores influyen en gran manera en los alumnos a despreciar el puesto de programador. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;...mientras los profesores en las Escuelas Técnicas, insistiendo en el error y manifestando una clara incapacidad para formar a ese tipo de profesionales, se afanan en convencer a sus alumnos para que huyan de la programación como de la peste.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Ricardo Galli, creador de Menéame, también menciona este problema en su &lt;a href="http://mnm.uib.es/gallir/posts/2007/07/12/1129/"&gt;antiguo blog&lt;/a&gt;:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:arial;"&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;...&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;más del 70% de los alumnos de las ingenierías informáticas están completamente desmotivados y/o desinteresados por su carrera, especialmente la programación.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;Quizás se debe a que durante muchos años de habló que era la “carrera del futuro”. Quizás también se deba a que ser un buen programador es cada vez más difícil y que obliga a un esfuerzo intelectual muy importante. Quizás también se deba a la “falta de perspectiva” de cómo es la profesión en los centros importantes: mucho esfuerzo pero a la vez mucha autoconfianza y coraje.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Seguramente los profesores tenemos parte de esas culpas. Conozco a muchos que piensan que un “ingeniero no necesita programar”,&lt;/span&gt;&lt;span style="font-size:100%;"&gt; conozco también a muchos que ya no se acuerdan de cómo se programa. Pero también conozco a muchos profesores que son unos monstruos programando y dando clases, pero esos justamente son los más “odiados” o ignorados por esa gran mayoría de alumnos que sólo desean aprobar las asignaturas de la forma más sencilla, segura y sin liarse demasiado el coco. Así muchas veces terminan festejando al profesor que les cuenta batallitas &lt;em&gt;por que así sí que aprenden “cosas prácticas” y útiles&lt;/em&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Pero sí, los profesores –incluido yo–, somos parte importante del problema&lt;/span&gt;&lt;/p&gt;  &lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Aunque los artículos hablan acerca del problema en España, en México he visto el mismo problema en mi propia universidad, tal vez no de forma tan extrema, pero si intentando convencer a los estudiantes de buscar un "nivel más alto" como lo es el Ingeniero de Software o "Desarrollador", los cuales según la concepción generalizada, programan menos y están más arriba en la escala jerárquica empresarial.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Otro problema son los sueldos de los programadores, que como ya he mencionado antes, las empresas desvalorizan la labor del programador, así que pagan bajos sueldos. Sin embargo, a estos mismos les urgen programadores. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:arial;"&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;...la empresa&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;img src="file:///F:/DOCUME%7E1/ADMINI%7E1/CONFIG%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;cree que necesita programadores a la vieja usanza, y pretende pagar dos duros a quienes son, en realidad, profesionales capaces de destilar ideas en código y convertir el proyecto en realidad. Y ante semejante estímulo, los profesionales simplemente rehuyen la confrontación y buscan otras metas. Y es que pasar de obrero a arquitecto no sólo requiere un nivel superior de cualificación. Supone, además, que existan incentivos para ello.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;A diferencia, otros se arriesgan a opinar que no es que falten programadores, los hay, lo que hace falta es motivación. Se refieren a la motivación del programador, pero esto no es sino un reflejo de lo que tales programadores han aprendido durante su carrera y de la manera en la que ven el puesto de programador. Aunque lo que menciona Jordi Abad en su &lt;a href="http://www.unblogmas.com/posts/%c2%bfalguien-ha-visto-un-buen-programador-motivado/"&gt;blog &lt;/a&gt;es muy cierto:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="font-family:arial;"&gt;&lt;span style="color: rgb(51, 51, 51);font-family:times new roman;font-size:100%;"  &gt;...e&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 51);font-family:times new roman;font-size:100%;"  &gt;l trabajo de programador está asociado a la base de la estructura jerárquica de una empresa&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-family:times new roman;font-size:100%;"  &gt;. Esto implica: bajos salarios, mala reputación y comerse muchos marrones de las capas superiores de la pirámide. Es un trabajo muy poco agradecido. &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 51);font-family:times new roman;font-size:100%;"  &gt;A pesar de ello se trata de un trabajo necesario e imprescindible por parte de una empresa&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 51);font-family:times new roman;" &gt; que se dedica a programar software.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Ricardo Galli propone además sus propios puntos de vista referentes a las causas que generan estos problemas:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:times new roman;"&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Las empresas grandes que pueden pagar bien a los buenos programadores tienen obsoletas estructuras piramidales que lo único que logran es quemar a los buenos programadores en menos de un año.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Las puntas de esas pirámides suelen ser aquellos que no quieren saber nada de programación y se dedican a ascender, delegando toda responsabilidad a los “analistas senior”, que a su vez delegan y culpan a los “analistas junior” y así abajo en la cadena hasta llegar al buen programador que está a punto de dejar porque ya está quemado.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Empresas grandes que venden carne de ingenieros al kilogramo pagando salarios de becarios y haciendo verdaderas chapuzas porque al final nadie es el responsable. ¿Alguien recuerda al web del Congreso y tantas otras administraciones por ejemplo?.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Las administraciones y grandes empresas, como tienen problemas en mantener a sus buenos programadores (por 1 y 2), contratan ingenieros al kilogramo a las que se dedican a venderlos.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Las empresas pequeñas buscan programadores “básicos”, que sepan un poco de Visual Basic, con suerte Java, y montón de otras cosas como instalar MS Office o “un servidor Linux”.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Muy pocas empresas tienen asumido que sus programadores requieren un entrenamiento inicial especializado en lo que va a hacer –que no puede brindarle ninguna universidad o ciclo formativo– y que esos programadores también necesitan una formación continua –vía cursos específicos o tiempo y tranquilidad necesario para trabajar en proyectos con técnicas y métodos más modernos y diferentes–.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;El problema de la &lt;a href="http://mnm.uib.es/gallir/posts/2005/09/28/444/"&gt;disfunción metacognitiva&lt;/a&gt;, muy generalizada entre los informáticos.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Existe una especie de presión a las universidades para que “formen profesionales adecuados al mercado del trabajo”. Ese mensaje ha calado profundo en muchos profesores, pero aún más entre los alumnos que exigen que se les enseñe Java desde primero –y nada más que Java– porque es lo que demanda el “mercado laboral” y que hace que pasen olímpicamente de otras asignaturas que marcan diferencias, por ejemplo álgebras o conceptos complejos de la “ciencia de la computación”.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Quizás por #6, muy pocos programadores dedican tiempo a leer, aprender y navegar mucho por Internet, que se ha convertido en la fuente principal y fundamental para aprender las nuevas técnicas, tendencias y formas de llevar adelante proyectos. Existe una especie de sentimiento generalizado –que todavía no puedo comprender, con lo guapa y divertida que es la informática y programación– de “en mi poco tiempo libre me olvido del ordenador”…&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Como bien lo ha dicho, he visto mucho de esto con mis compañeros de clases y colegas de trabajo. A muy pocos de ellos les llama verdaderamente la programación y muy pocos leen y se mantienen actualizados. En la región sur de México existen muy pocas empresas especializadas en desarrollo de software, y los que están, ofrecen bajos salarios y no tienen mejores prácticas de desarrollo. A esto también me quiero referir, a la centralización de las empresas en el Edo. de México, Monterrey y Guadalajara. Esto provoca que muchos jóvenes con deseos de superación y con grandes capacidades pierdan de la oportunidad de poder desarrollarse profesionalmente ya que vivien en otros estados.&lt;br /&gt;&lt;br /&gt;También quiero citar a una publicación de &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="font-family: arial;" href="http://www.businessweek.com/magazine/content/07_34/b4047406.htm?chan=search"&gt;BusinessWeek&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; en donde señala una importante consultora acerca del déficit de talentos en la India para el 2010.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="font-family:arial;"&gt;&lt;span class="text"  style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 51);font-family:times new roman;" &gt;Building showpiece campuses the size of many U.S. colleges is just one way big Indian employers are battling to hold on to budding engineers, designers, and finance specialists... Today, companies face high turnover, escalating salaries, and shortages of qualified workers and managers. Less than a quarter of companies surveyed in 2006 in India by McKinsey &amp;amp; Co. said they were meeting recruiting needs. By 2010, McKinsey predicts, India will face a shortfall of 500,000 staff capable of doing work for multinationals.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Con este problema en puertas, las empresas Indias están necesitando trabajadores para las &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/SJEDs_tCcaI/AAAAAAAAAUs/PNvOIsjhuCg/s1600-h/productos_7.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/SJEDs_tCcaI/AAAAAAAAAUs/PNvOIsjhuCg/s400/productos_7.gif" alt="" id="BLOGGER_PHOTO_ID_5228964713903321506" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;multinacionales y atrayendo mano de obra de los países vecinos y de América Latina, con lo que deberemos afrontar más rápidamente este problema. Menciono esto porque, debido a los sueldos de un programador en México en comparativa con otros países, parece ser que hace falta concientizar de la importancia del programador, el cuál es la parte más activa e importante de una&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; empresa. Como bien dos programadores crearon Google, Microsoft y Apple. En salarios, los programadores mexicanos se encuentran en el lugar 20 de los países con mejores sueldos (&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="font-family: arial;" href="http://www.sg.com.mx/content/view/486/"&gt;tabla&lt;/a&gt;&lt;a style="font-family: arial;" href="http://www.sg.com.mx/content/view/486/"&gt;s&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; de salarios en México), justo debajo de España y Corea, ocupando Hong Kong y Suiza los pirmeros puestos.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Parte de la solución reside en el cambio de mentalidad del profesorado y del gobierno. Por ejemplo, en Argentina, según el periódico &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="font-family: arial;" href="http://www.lagaceta.com.ar/nota/282644/Informacion_General/Quieren_fomentar_matriculade_ingenierias.html"&gt;La Gaceta&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;, se está diseñando un programa de becas para las carreras de TI y así poder incrementar el número de matrículas y reducir las bajas para lograr afrontar los nuevos programas económicos del país.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:times new roman;"&gt;&lt;span id="cuerpo"  style="font-size:100%;"&gt;El flamante programa contempla la entrega de 6700 becas, con una inversión total de 52 millones de pesos para el período 2009-2013 que serán destinadas a jóvenes de todo el país que estudien en universidades nacionales.&lt;br /&gt;Las becas serán destinadas a quienes estudien las carreras de Ingeniería Electrónica, Ingeniería en Telecomunicaciones, Ingeniería en Computación, Ingeniería Informática, Ingeniería en Sistemas de Información, Licenciatura en Informática, Licenciatura en Análisis de Sistemas, en Sistemas y en Ciencias de la Computación.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="font-weight: bold;"&gt;Cambiando la mentalidad de los empresarios (los de más alto nivel jerárquico) , la academia, y estrechando la brecha academia-sector productivo es como se logrará incrementar nuevamente las matrículas en las carreras de TI y mejorar la economía nacional con base en el conocimiento.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para finalizar quiero recomendar y citar una &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="font-family: arial;" href="http://www.sg.com.mx/content/view/485/"&gt;entrevista &lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;al Dr. Carlos Montes de Oca en Software Gurú:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;...el dueño de una fábrica de coches sale a las 6 de la tarde, y ahí tiene su fábrica, con su valor intacto; puede venderla y recuperar su inversión. En cambio, el dueño de una fábrica de software, a las 8 de la noche que sus empleados ya se fueron a su casa, está descapitalizado. Lo único que tiene son escritorios y unas máquinas depreciadas.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:100%;"  &gt;No perdamos el orgullo de ser programadores, las empresas están cambiando a darnos mayor importancia porque nos necesitan.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:100%;"  &gt;Y no pretendamos llamarnos Desarrolladores (Developers) solo porque la gente que no programa crea que es un nivel más alto.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-6168945775486452604?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/6168945775486452604/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=6168945775486452604' title='11 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/6168945775486452604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/6168945775486452604'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2008/07/devolver-el-orgullo-al-nombre-de.html' title='Devolver el orgullo al nombre de &quot;programador&quot; para solucionar el déficit de programadores'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_g4nBGD_OZCc/SJEDs_tCcaI/AAAAAAAAAUs/PNvOIsjhuCg/s72-c/productos_7.gif' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-2016016241636276863</id><published>2008-07-06T14:48:00.000-07:00</published><updated>2009-08-13T10:18:08.689-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Creando un User Control con VB.NET 2005</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;Actualmente estoy mejorando una aplicación de escritorio que hice para los chic&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;os de las materias de Contabilidad I y II de las carreras de Contaduaría y Administración. Esta aplicación usa una ventana para crear asientos de diario, creando y quitando registros, cuentas y asientos. Al final, con un solo clic generan los esquem&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;as de mayor, balanza de comprobación, balance general y rayado diario y se exportan a Excel.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Pues durante el upgrade me encontré nuevament&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;e con la dificultad de dar al usuario la facilidad de agregar y quitar registros visualmente, porque en la primera versión estuve modificando manualmente todos los tamaños y posiciones de decenas de controles que tenía en la ventana de trabajo. Lo que hice en esta segunda versión fue diseñar un control personalizado (User Control) llamado ControlAsiento.vb que contiene a otro User Control llamado ControlReg&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;istro.vb, los cuales me facilitaron la vida.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;Para este pequeño tutorial estaremos consider&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;ando Visual Studio 2005, usando VB.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¿Qué es un UserContr&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:100%;"  &gt;ol y para &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:100%;"  &gt;qué sirve?&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Un &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;User Control &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;no es&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; más que una clase común .vb que también provee las referencias para poder trabajar con las clases dentro del espacio de nombres &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;System.Wi&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;ndows.Forms, a diferencia de los Class Library, que es buen tema para otro post.&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; Con los &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;User Control &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;podemos crear controles más complejos o avanzados derivados de los controles que ya nos proporciona el IDE, tal como veremos más ade&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;lante con un ejemplo.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Aquí les muestro paso a paso cómo crearlos y usarlos.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;En el siguiente ejemplo haremos una pequeñísima parte de &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;lo que tuve que hacer para la aplicación que estaba desarrollando, esto es poder generar en tiempo de ejecución nuevas instanacias de los control&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;es que vamos a&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; diseñar y programar.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="fullpost"  style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¿Cómo se hace?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_g4nBGD_OZCc/SH5-451mc6I/AAAAAAAAASU/hqOg3rjl2yM/s1600-h/Imagen1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 250px; height: 151px;" src="http://2.bp.blogspot.com/_g4nBGD_OZCc/SH5-451mc6I/AAAAAAAAASU/hqOg3rjl2yM/s320/Imagen1.png" alt="" id="BLOGGER_PHOTO_ID_5223752133859767202" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;1. Después de abrir el IDE de Microsoft Visual Studio 2005 y empleando el lenguaje Visual Basic, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;creamos una nueva Aplicación de Windows como comunmente. Yo h&lt;/span&gt;&lt;span style="font-family:arial;"&gt;e llamado "Ejemplo1" a mi proyecto.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH5-5IW__2I/AAAAAAAAASk/EQuJTycKp8k/s1600-h/Imagen3.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 182px; height: 194px;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH5-5IW__2I/AAAAAAAAASk/EQuJTycKp8k/s320/Imagen3.png" alt="" id="BLOGGER_PHOTO_ID_5223752137757949794" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;2. Cuando se crea nuestro proyecto nos presenta &lt;/span&gt;&lt;span style="font-family:arial;"&gt;un nuevo formulario vació para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;com&lt;/span&gt;&lt;span style="font-family:arial;"&gt;enzar a trabajar. Pues bien, lo que haremo&lt;/span&gt;&lt;span style="font-family:arial;"&gt;s será agregar un &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;User Control &lt;/span&gt;&lt;span class="fullpost"  style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;a nuestra aplicación. En el explorador de soluciones (Solution Explorer) desplegaremos con un clic derecho sobre el nombre de nuestra aplicación una  ventana&lt;/span&gt;&lt;span style="font-family:arial;"&gt; emergente donde&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;seleccionaremos la opción &lt;span style="font-style: italic;"&gt;Add &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt; User Control.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/SH5-5adHkTI/AAAAAAAAASs/sYeZxMAK2SM/s1600-h/Imagen4.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 244px; height: 148px;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/SH5-5adHkTI/AAAAAAAAASs/sYeZxMAK2SM/s320/Imagen4.png" alt="" id="BLOGGER_PHOTO_ID_5223752142615449906" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;3. Nota que al abrir la ventana de diálogo está seleccionado el tipo de control User Control. Le daremos un nombre a nuestro nuevo control, en nuestro caso será ControlRegistro.vb. Este será el control de más bajo nivel, es decir, el último que solo contendrá a controles predefinidos por Visual Studio.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/SH5-5ocYr3I/AAAAAAAAAS0/jIcA-gNUNxU/s1600-h/Imagen5.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 250px; height: 143px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/SH5-5ocYr3I/AAAAAAAAAS0/jIcA-gNUNxU/s320/Imagen5.png" alt="" id="BLOGGER_PHOTO_ID_5223752146370473842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;4. Podremos ver un nuevo lienzo que no contiene barras de título ni bordes, en el cual comenzaremos a diseñar nuestro control.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/SH6Fofh3AQI/AAAAAAAAATk/Vz5LaA2cbXE/s1600-h/Imagen6.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 250px; height: 116px;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/SH6Fofh3AQI/AAAAAAAAATk/Vz5LaA2cbXE/s320/Imagen6.png" alt="" id="BLOGGER_PHOTO_ID_5223759548501131522" border="0" /&gt;&lt;/a&gt; &lt;span style="font-family:arial;"&gt;5. Para el ejemplo solo programaremos un botón en cada &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;User Control&lt;/span&gt;&lt;span class="fullpost"  style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;aunque esto vendrá después de haber diseñado todo lo demás.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Habiendo temrinado con el diseño de ControlRegistro, crearemos &lt;/span&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6FooalOcI/AAAAAAAAATs/xDP2kL9BFj0/s1600-h/Imagen7.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 250px; height: 97px;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6FooalOcI/AAAAAAAAATs/xDP2kL9BFj0/s320/Imagen7.png" alt="" id="BLOGGER_PHOTO_ID_5223759550886525378" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;entonces ControlAsiento, que contendrá una cantidad indeterminada de registros. Para esto procederemos de la misma forma en la que creamos ControlRegistro. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;En el explorador de la solución (Solution Explorer) desplegaremos con un clic derecho &lt;/span&gt;&lt;span style="font-family:arial;"&gt;sobre el nombre de nuestra aplicación una ventana&lt;/span&gt;&lt;span style="font-family:arial;"&gt; emergente &lt;/span&gt;&lt;span style="font-family:arial;"&gt;en la que seleccionaremos la opción &lt;span style="font-style: italic;"&gt;Add &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-style: italic;"&gt; User Control &lt;/span&gt;y lo nombramos ControlAsiento.vb, y p&lt;/span&gt;&lt;span style="font-family:arial;"&gt;rocederemos a hacer el diseño de la interfaz. Para esta interfaz necesitaremos agregar al menos un &lt;/span&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6Fo8P4RII/AAAAAAAAAT0/AMZozJyHUfQ/s1600-h/Imagen8.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 142px; height: 208px;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6Fo8P4RII/AAAAAAAAAT0/AMZozJyHUfQ/s320/Imagen8.png" alt="" id="BLOGGER_PHOTO_ID_5223759556210345090" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;control del tipo ControlRegistro que hemos creado, sin embargo no podremos acceder a &lt;/span&gt;&lt;span style="font-family:arial;"&gt;este control en la Caja de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;herramientas mientras no hayamos reconstruido la aplicación para que las modificaciones en ControlRegistro tomen efecto en los lugares en los cuales se haya usado. Hasta ahora no lo hemos usa&lt;/span&gt;&lt;span style="font-family:arial;"&gt;do y para esto también necesitaremos reconstruir. Seleccionamos en el menú principal &lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;Build &gt; Rebuild Ejemplo1&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/SH6FpB8mA2I/AAAAAAAAAT8/mMDgstWWCWA/s1600-h/Imagen9.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 256px; height: 140px;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/SH6FpB8mA2I/AAAAAAAAAT8/mMDgstWWCWA/s320/Imagen9.png" alt="" id="BLOGGER_PHOTO_ID_5223759557740069730" border="0" /&gt;&lt;/a&gt; &lt;span style="font-family:arial;"&gt;7. ControlAsiento tendrá el siguiente &lt;/span&gt;&lt;span style="font-family:arial;"&gt;aspecto.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6FpXnOSgI/AAAAAAAAAUE/gRYOSKpExxg/s1600-h/Imagen10.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 254px; height: 167px;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6FpXnOSgI/AAAAAAAAAUE/gRYOSKpExxg/s320/Imagen10.png" alt="" id="BLOGGER_PHOTO_ID_5223759563556014594" border="0" /&gt;&lt;/a&gt; &lt;span style="font-family:arial;"&gt;8. Al temrinar el diseño debemos reconstruir nuevamente la aplicación de la forma que ya hemos mencionado, entonces podremos ver nuestro control en la caja&lt;/span&gt;&lt;span style="font-family:arial;"&gt; de herramientas. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;9. Finalmente tendremos el siguiente aspecto en nuestro formulario principal Form1.&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/SH6QSh_CMmI/AAAAAAAAAUM/EclASyMKmZA/s1600-h/Imagen11.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/SH6QSh_CMmI/AAAAAAAAAUM/EclASyMKmZA/s320/Imagen11.png" alt="" id="BLOGGER_PHOTO_ID_5223771265831154274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;Pues bien, ya hemos diseñado nuestros controles, solo falta darles vida, para esto pondremos fragmentos de código en ControlRegistro, ControlAsiento y Form1.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;*** Form1 ***&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote style="color: rgb(0, 0, 102);"&gt;Public Class Form1&lt;br /&gt; Dim asiento As ControlAsiento&lt;br /&gt;&lt;br /&gt; Sub crearAsiento(ByVal asientoAnterior As ControlAsiento)&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;' Calculamos la posición del nuevo asiento a partir del asiento anterior, el cual hizo la llamada&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;' y agregamos el nuevo ControlAsiento al formulario&lt;/span&gt;&lt;br /&gt;     asiento = New ControlAsiento&lt;br /&gt;     asiento.Location = New Point(asientoAnterior.Location.X, asientoAnterior.Location.X + asientoAnterior.Height + 5)&lt;br /&gt;     asiento.Label1.Text = asientoAnterior.Label1.Text + 1&lt;br /&gt;     With GroupBox1&lt;br /&gt;         .Size = New Size(.Width, .Height + asientoAnterior.Height + 5)&lt;br /&gt;         .Controls.Add(asiento)&lt;br /&gt;     End With&lt;br /&gt; End Sub&lt;br /&gt;End Class&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;*** ControlAsiento ***&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote style="color: rgb(0, 0, 102);"&gt;Public Class ControlAsiento&lt;br /&gt; Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;' Llamamos al método crearAsiento() del formulario que contiene a este asiento.&lt;/span&gt;&lt;br /&gt;     CType(Me.&lt;span style="font-weight: bold;"&gt;FindForm&lt;/span&gt;, Form1).crearAsiento(Me)&lt;br /&gt; End Sub&lt;br /&gt;&lt;br /&gt; Private Sub ControlAsiento_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;' Es solo un ejemplo de cómo se puede agregar un manejador de eventos a un control, &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        ' ya que en micaso he usado mucho este tipo de manejadores al momento de crear controles dinámicamente&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        ' y tener varias formas de acceder a un mismo evento&lt;/span&gt;&lt;br /&gt;     &lt;span style="font-weight: bold;"&gt;AddHandler &lt;/span&gt;Button1.Click, AddressOf Button1_Click&lt;br /&gt; End Sub&lt;br /&gt;&lt;br /&gt; Sub crearRegistro(ByVal sender As ControlRegistro)&lt;br /&gt;     Dim reg As New ControlRegistro&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;' La separación que agregaremos a la posición del registro y demás controles, y la cantidad que agregaremos al tamaño del GroupBox1&lt;/span&gt;&lt;br /&gt;     Dim y = sender.Height + 3&lt;br /&gt;     reg.Location = New Point(sender.Location.X, sender.Location.Y + y)&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt; ' Bajamos también la caja de texto multilinea y los botones del ControlAsiento&lt;/span&gt;&lt;br /&gt;     redaccion.Location = New Point(redaccion.Location.X, redaccion.Location.Y + y)&lt;br /&gt;     Button1.Location = New Point(Button1.Location.X, Button1.Location.Y + y)&lt;br /&gt;     Button2.Location = New Point(Button2.Location.X, Button2.Location.Y + y)&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt; ' Con Me.ParentForm obtenemos el formuylario que contiene a este control y lo convertimos al tipo Form1, que es la clase que tenemos&lt;/span&gt;&lt;br /&gt;     With CType(Me.&lt;span style="font-weight: bold;"&gt;ParentForm&lt;/span&gt;, Form1).GroupBox1&lt;br /&gt;         .Size = New Size(.Width, .Height + y)&lt;br /&gt;     End With&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt; ' Agregamos el nuevo control al contenedor correspondiente, en este caso ControlAsiento que contiene al botón que hemos presionado&lt;/span&gt;&lt;br /&gt;     Me.Controls.Add(reg)&lt;br /&gt; End Sub&lt;br /&gt;End Class&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;*** ControlRegistro ***&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote style="color: rgb(0, 0, 102);"&gt;Public Class ControlRegistro&lt;br /&gt; Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click&lt;br /&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;  ' Obtenemos el ControlAsiento que contiene a este ControlRegistro &lt;/span&gt;&lt;br /&gt;     Dim asiento As ControlAsiento = Me.&lt;span style="font-weight: bold;"&gt;Parent&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;' Llamamos a la subrutina que hicimos en ControlAsiento para generar nuevos registros&lt;/span&gt;&lt;br /&gt;     asiento.crearRegistro(Me)&lt;br /&gt; End Sub&lt;br /&gt;End Class&lt;/blockquote&gt;&lt;span style="font-family:arial;"&gt;He resaltado en negritas algunas funciones que son de mucha utilidad para poder acceder a los controles que contienen a nuestros &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;User Control&lt;/span&gt;&lt;span class="fullpost"  style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;, y así poder usar propiedades y métodos de estos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Lo que el código anterior hará será generar un nuevo asiento debajo del asiento que contiene al botón '+' en donde se hizo clic. Y generará un nuevo registro debajo del registro en el que se encuentra el botón '+' en el que se hizo clic.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6Um_0wjcI/AAAAAAAAAUc/nw6BPmYUHGg/s1600-h/Imagen12.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_g4nBGD_OZCc/SH6Um_0wjcI/AAAAAAAAAUc/nw6BPmYUHGg/s320/Imagen12.png" alt="" id="BLOGGER_PHOTO_ID_5223776015485013442" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Como hemos visto, podemos usar &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;User Control &lt;/span&gt;&lt;span class="fullpost"  style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;no solo para aquellos casos en los que tendremos que usar un control complejo en varias partes de nuestra aplicación, sino también en casos en los que sea necesario crear dinámicamente algunos controles complejos sin necesidad de rompernos tanto la cabeza, como a mí me pasó&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Espero que les sirva de algo este breve tutorial.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-2016016241636276863?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/2016016241636276863/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=2016016241636276863' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2016016241636276863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/2016016241636276863'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2008/07/creando-un-user-control-con-vbnet-2005.html' title='Creando un User Control con VB.NET 2005'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_g4nBGD_OZCc/SH5-451mc6I/AAAAAAAAASU/hqOg3rjl2yM/s72-c/Imagen1.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206497193519505916.post-7844864163386248629</id><published>2008-06-12T17:34:00.000-07:00</published><updated>2008-08-04T23:17:35.397-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vacaciones'/><category scheme='http://www.blogger.com/atom/ns#' term='dante gebel'/><title type='text'>Super Clásico Chihuahua 2008</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;    El 7 de junio pasado fue de grandes bendiciones para mi novia y para mí; estuvimos en el primer Super Clásico en México realizado en el Estadio Olímpico Universitario de la UACH. Con la participación de Indira Lazo, Veronica Leal con música norteña, Pedro Ochoa con música country, Santo Remedio con un poco de rock pop, y coronando con Tercer Cielo y María del Sol, antes de comenzar con Dante Gebel. Al finalizar se presentó John Schlitt vocalista de la legendaria banda de rock cristiano Petra. Fue maravilloso, estuvo extraarchirrequetecontrabendecido. Alrededor de 28 mil jovenes abarrotaron el estadio, aproximadamente 18mil en las gradas y 10 mil saltando,&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; cantando y gritando frente al escenario.&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;    Al llegar a Chihuahua no sabíamos si buscar primero un hotel o ir por nuestros boletos al estadio, acepté la sugerencia de Jazmin de ir primero al estadio para hacer tiempo antes de buscar un hotel. &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Fuimos los primeros en llegar esa mañana al estadio, y ahí nos encontramos a la hermana Licha, que nos ofreció su casa, bueno la de su hija, pero terminamos en su casa, jeje. &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;El cuarto tenía dos camas, televisión, cable, comida con los hermanos, puras bendiciones. &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Los hermanos nos transportaron durante nuestra estacia en Chihuahua. &lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;    El día anterior al evento, el viernes 6,  no hubo ni una sola nube en el cielo, y el Sábado por la tarde antes del evento el cielo se comenzó a nublar impidiendo el temible calor de Chihuahua, especialmente una gran nube se posó sobre el estadio; y después de finalizar el evento comenzó a lloviznar. La gente estaba haciendo fila desde las 8 de la mañana solo para obtener los mejores lugares, nosotros teníamos lugares VIP que nos regalaron, jejeje, más bendiciones, aunque&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; preferimos irnos hasta abajo en la cancha, al frente del escenario.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; Muchas gracias a los organizadores de este gran evento, y a los hermanos Licha y Chuy de la iglesia Amistad Cristiana por darnos hospedaje, tmbn a Miguel por apoyarnos.  Aquí algunas fotos del evento...&lt;/span&gt;  &lt;div style="text-align: center;"&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/SFFjWns_yPI/AAAAAAAAAP4/48dfoX_IviY/s1600-h/super+clasico+DG+005.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/SFFjWns_yPI/AAAAAAAAAP4/48dfoX_IviY/s320/super+clasico+DG+005.JPG" alt="" id="BLOGGER_PHOTO_ID_5211055484110358770" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Jazmín atendiendo la taquilla del estadio&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;div style="text-align: left;"&gt;&lt;div style="text-align: center;"&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4nBGD_OZCc/SFFkohZlIkI/AAAAAAAAAQA/pMJiiyX8Kq8/s1600-h/super+clasico+DG+014.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_g4nBGD_OZCc/SFFkohZlIkI/AAAAAAAAAQA/pMJiiyX8Kq8/s320/super+clasico+DG+014.JPG" alt="" id="BLOGGER_PHOTO_ID_5211056891167580738" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;La gente animándose iniciándose el evento&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_g4nBGD_OZCc/SFFl0pjU3lI/AAAAAAAAAQI/fGgq9EW86QY/s1600-h/super+clasico+DG+016.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_g4nBGD_OZCc/SFFl0pjU3lI/AAAAAAAAAQI/fGgq9EW86QY/s320/super+clasico+DG+016.JPG" alt="" id="BLOGGER_PHOTO_ID_5211058199025999442" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Verónica Leal&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/SFFn-CFhOCI/AAAAAAAAAQQ/SuJHDEUh5YQ/s1600-h/super+clasico+DG+037.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/SFFn-CFhOCI/AAAAAAAAAQQ/SuJHDEUh5YQ/s320/super+clasico+DG+037.JPG" alt="" id="BLOGGER_PHOTO_ID_5211060559253944354" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Los chicos de Tercer Cielo cantando Enamorados&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_g4nBGD_OZCc/SFFpM_KqSLI/AAAAAAAAAQY/CtCYK6qF6B8/s1600-h/super+clasico+DG+064.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_g4nBGD_OZCc/SFFpM_KqSLI/AAAAAAAAAQY/CtCYK6qF6B8/s320/super+clasico+DG+064.JPG" alt="" id="BLOGGER_PHOTO_ID_5211061915679869106" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;John Schlitt a los 56? años cantando y saltando&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_g4nBGD_OZCc/SFG1uZ29gdI/AAAAAAAAAQg/0sr3qgSnwkY/s1600-h/super+clasico+DG+051.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_g4nBGD_OZCc/SFG1uZ29gdI/AAAAAAAAAQg/0sr3qgSnwkY/s320/super+clasico+DG+051.JPG" alt="" id="BLOGGER_PHOTO_ID_5211146052664394194" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_g4nBGD_OZCc/SFG5MYiRjiI/AAAAAAAAAQo/OQYlKkv5cJ8/s1600-h/dante133613.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_g4nBGD_OZCc/SFG5MYiRjiI/AAAAAAAAAQo/OQYlKkv5cJ8/s320/dante133613.jpg" alt="" id="BLOGGER_PHOTO_ID_5211149866240151074" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Dante en el tema de Linaje sanguineo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206497193519505916-7844864163386248629?l=jesfre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jesfre.blogspot.com/feeds/7844864163386248629/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206497193519505916&amp;postID=7844864163386248629' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/7844864163386248629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206497193519505916/posts/default/7844864163386248629'/><link rel='alternate' type='text/html' href='http://jesfre.blogspot.com/2008/06/super-clsico-chihuahua-2008.html' title='Super Clásico Chihuahua 2008'/><author><name>Jesfre</name><uri>http://www.blogger.com/profile/01718298321211814592</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_g4nBGD_OZCc/SFHgZ0FvfxI/AAAAAAAAAQ0/NIdo4j1X4WE/S220/yo5.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_g4nBGD_OZCc/SFFjWns_yPI/AAAAAAAAAP4/48dfoX_IviY/s72-c/super+clasico+DG+005.JPG' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
