<?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-9869078</id><updated>2011-11-28T01:00:02.993+01:00</updated><category term='linux'/><category term='compras'/><category term='maven'/><category term='anecdotas'/><category term='reflexiones'/><category term='diseño'/><category term='java'/><category term='blog'/><category term='curiosidades'/><category term='herramientas'/><category term='tutoriales'/><category term='bugzilla'/><title type='text'>Programación</title><subtitle type='html'>Cosillas de programación e informática en las que ando metido.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default?start-index=101&amp;max-results=100'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>320</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9869078.post-5234283686413083747</id><published>2006-12-15T20:51:00.000+01:00</published><updated>2006-12-15T20:53:22.803+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Continuará...</title><content type='html'>Este blog continúa en ....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;a href="http://blog.chuidiang.com/"&gt;http://blog.chuidiang.com&lt;/a&gt;&lt;br /&gt;&lt;br /&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/9869078-5234283686413083747?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/5234283686413083747/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=5234283686413083747' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/5234283686413083747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/5234283686413083747'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/continuar.html' title='Continuará...'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-2266388463708111730</id><published>2006-12-15T06:26:00.000+01:00</published><updated>2007-02-08T09:39:46.401+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anecdotas'/><title type='text'>Blogs varios</title><content type='html'>Por culpa de &lt;a href="http://blog.riolambre.com/"&gt;rfilgueiras&lt;/a&gt;, acabo de instalar wordpress en mi dominio. Ando con las dudas de si pasarme o no a ese blog y dejar este. Allí comento, aparte de las ventajas del nuevo blogger sobre el antiguo, las dudas y los no motivos para dejar este y pasarme a aquel.&lt;br /&gt;&lt;br /&gt;Ventajas de pasar el blog a mi dominio:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El "orgullo" de tener el blog en tu dominio&lt;/li&gt;&lt;/ul&gt;Pegas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El espacio en disco de mi dominio es limitado. Con el tiempo (este blog lleva ya dos años en marcha) seguro que lo acabo llenando y tengo que ampliar la cuenta.&lt;/li&gt;&lt;li&gt;En blogger no tengo problemas de mantenimiento. Alguien lo hace por mí.&lt;/li&gt;&lt;/ul&gt;Hala, rfilgueiras, te dejo que me convenzas...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-2266388463708111730?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/2266388463708111730/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=2266388463708111730' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2266388463708111730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2266388463708111730'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/blogs-varios.html' title='Blogs varios'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-2227542259685380017</id><published>2006-12-14T19:25:00.000+01:00</published><updated>2006-12-14T19:30:28.290+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curiosidades'/><title type='text'>Interface de usuario curiosa</title><content type='html'>En &lt;a href="http://www.minid.net/2004/02/18/interfaces-hechas-con-java/"&gt;Mind.net&lt;/a&gt; veo un post en el que hace referencia a una &lt;a href="http://acg.media.mit.edu/people/fry/zipdecode/"&gt;interface curiosa hecha con java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Básicamente es un mapa de estados unidos en el que al ir escribiendo el código postal deseado, va iluminando las zonas correspondientes a los posibles códigos postales que tenemos hasta el momento. Si pulsamos 1, ilumina, por ejemplo, uno de los estados. Al pulsar la siguiente cifra, va apagando zonas y así hasta llegar a la zona concreta del código postal entero.&lt;br /&gt;&lt;br /&gt;Es una idea bastante curiosa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-2227542259685380017?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/2227542259685380017/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=2227542259685380017' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2227542259685380017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2227542259685380017'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/interface-de-usuario-curiosa.html' title='Interface de usuario curiosa'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-12334304437023737</id><published>2006-12-14T06:59:00.000+01:00</published><updated>2006-12-14T07:03:54.910+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curiosidades'/><title type='text'>Ajedrez en javascript</title><content type='html'>Veo en &lt;a href="http://albertovilches.com/"&gt;Yo Programador&lt;/a&gt; un post sobre un juego de &lt;a href="http://albertovilches.com/algoritmo-de-ajedrez-en-solo-5kb"&gt;ajedrez en javascript&lt;/a&gt;. Ocupa sólo 5k y aunque no valida todas las jugadas como debiera, la verdad es que juega un poco y es asombroso lo que se hace con tan poco código.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-12334304437023737?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/12334304437023737/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=12334304437023737' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/12334304437023737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/12334304437023737'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/ajedrez-en-javascript.html' title='Ajedrez en javascript'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-867657844641083957</id><published>2006-12-13T19:30:00.000+01:00</published><updated>2008-12-09T23:45:50.099+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Una curiosidad de rmi</title><content type='html'>Una cosilla de rmi que está bien pensada, que ha probado un compañero de trabajo y le ha funcionado.&lt;br /&gt;&lt;br /&gt;Cuando un cliente de rmi pide un objeto remoto a un servidor de rmi, en realidad hay dos clases. Por un lado está el objeto real/remoto en el servidor. Por otro, el cliente tiene un objeto stub que representa al objeto real/remoto. Cuando se llama a un método del objeto stub, este llama a través de red al método del objeto real/remoto en el servidor, espera su resultado y lo devuelve.&lt;br /&gt;&lt;br /&gt;Pues bien, aquí la curiosidad. Si obtenemos dos veces el mismo objeto remoto, tendremos dos objetos stub distintos. Si el servidor recibe dos veces el mismo objeto parámetro remoto, tendrá dos objetos parámetro stub distintos. Sin embargo, le método equals de esos dos objetos stub, devuelve true. De alguna forma, el equals "sabe" que los dos objetos stub representan el mismo objeto remoto y devuelve true.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_RJl_J8Zl0PI/RYBKKl65pLI/AAAAAAAAABY/tqKDCC1pNF4/s1600-h/rmi_equals.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_RJl_J8Zl0PI/RYBKKl65pLI/AAAAAAAAABY/tqKDCC1pNF4/s400/rmi_equals.gif" border="0" alt="equals clases stub"id="BLOGGER_PHOTO_ID_5008084331474298034" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-867657844641083957?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/867657844641083957/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=867657844641083957' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/867657844641083957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/867657844641083957'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/una-curiosidad-de-rmi.html' title='Una curiosidad de rmi'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RJl_J8Zl0PI/RYBKKl65pLI/AAAAAAAAABY/tqKDCC1pNF4/s72-c/rmi_equals.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-512611377033660903</id><published>2006-12-13T18:03:00.000+01:00</published><updated>2006-12-13T18:05:36.885+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Compiz</title><content type='html'>Por casualidad he descubierto &lt;a href="http://es.opensuse.org/Compiz"&gt;Compiz&lt;/a&gt;. Aunque había oido hablar de ello, no lo había visto y la verdad es que es alucinante las cosas que se inventan.&lt;br /&gt;&lt;br /&gt;Compiz es una especie de añadido para el escritorio de linux-suse. Con él se pueden hacer cosas como esta:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/X8mhwwYWuUc"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/X8mhwwYWuUc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-512611377033660903?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://es.opensuse.org/Compiz' title='Compiz'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/512611377033660903/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=512611377033660903' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/512611377033660903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/512611377033660903'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/compiz.html' title='Compiz'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-2451515435270505418</id><published>2006-12-12T06:46:00.000+01:00</published><updated>2006-12-12T06:48:15.233+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compras'/><title type='text'>Ono sigue haciendo de las suyas</title><content type='html'>Esta mañana, nuevamente, sin internet. No sé cuánto tiempo llevaba desconectado, pero afortunadamente se restableció la conexión a los pocos minutos de encender el ordenador. Sigo esperando que estén haciendo algún tipo de mantenimiento y esto no sea la tónica habitual. Hasta ahora no pasaba, al menos con tanta frecuencia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-2451515435270505418?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/2451515435270505418/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=2451515435270505418' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2451515435270505418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2451515435270505418'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/ono-sigue-haciendo-de-las-suyas.html' title='Ono sigue haciendo de las suyas'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-3923358251078081124</id><published>2006-12-11T08:51:00.000+01:00</published><updated>2006-12-11T08:53:28.304+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compras'/><title type='text'>Más de ONO</title><content type='html'>Esta mañana otra vez sin internet, desde las seis de la madrugada, hora a la que encendí el ordnador, hasta las 7 y media, hora en que lo apagué. Este fin de semana largo ha habido, que yo sepa, tres cortes de internet con ONO a esas horas. Espero que sea puntual, porque tampoco ando muy convencido con el resto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-3923358251078081124?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/3923358251078081124/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=3923358251078081124' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/3923358251078081124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/3923358251078081124'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/ms-de-ono.html' title='Más de ONO'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-2012549116676043085</id><published>2006-12-08T11:02:00.000+01:00</published><updated>2006-12-08T11:11:40.786+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compras'/><title type='text'>ono</title><content type='html'>Los de ONO un pequeño desastre, al menos en la zona de Alcalá en la que yo vivo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Internet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En dos meses escasos que llevo con ellos, ya he tenido dos cortes largos. No sé exactamente cuánto tiempo, porque acabé apagando el ordenador y a otra cosa. El caso es que los cortes fueron a horas intempestivas de la madrugada, sobre las cinco, que quizas piensan es buena hora para labores de mantenimiento, pero a los que nos caemos de la cama habitualmente nos molestan un poco.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Televisión&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El 95% del tiempo va bien, pero hay ratos largos en que es imposible verla. Empiezan a dar problemas de falta de señal, pixelado de imagen, incluso pérdida total de imagen durante unos segundos y sonidos entrecortados. Cuando le da por esto, está así un buen rato, como una o dos horas. Aproximadamente le pasa una vez por semana, pero no en un horario ni día fijo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Teléfono&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bien, salvo que todavía no me han dado de baja de telefónica. Supuestamente se encargan ellos, pero llevo dos meses pagando dos teléfonos, el de ellos y el de telefónica. Unos quince días después de darme de alta con ellos llamé para ver cómo iba la baja con telefónica. Me preguntaron si había rellenado ya los papeles solicitando dicha baja. ¿Qué papeles?. No me dieron ni me dijeron nada en el momento de darme de alta, así que quince después y por haber llamado yo, me los mandaron por correo. Otra semana más de espera a que llegaran. Los reenvié por correo y tres semanas más tarde que todavía "dicen " que no los han recibido, que me envían otros. Estoy en espera de ellos y llevo dos meses pagando dos teléfonos.&lt;br /&gt;&lt;br /&gt;Comentando con otros vecinos y usuarios de ONO, todos han tenido este tipo de problemas. Mi vecino de arriba seis meses hasta que consiguió que le hicieran la baja de telefónica. Un compañero de trabajo de Alcalá me comenta sobre los cortes de internet. Un amigo del edificio de enfrente sobre los pixelados de televisión.&lt;br /&gt;&lt;br /&gt;En fin, se ve que ONO Alcalá no va demasiado bien...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-2012549116676043085?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/2012549116676043085/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=2012549116676043085' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2012549116676043085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2012549116676043085'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/ono.html' title='ono'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-2486659098702301101</id><published>2006-12-05T20:37:00.000+01:00</published><updated>2006-12-05T20:50:21.504+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diseño'/><title type='text'>Sin diseño</title><content type='html'>Ando ahora liado, empezando un nuevo proyecto en el trabajo, algo ambicioso porque pretendo hacer algo que sirva para varios proyectos.&lt;br /&gt;&lt;br /&gt;El tema del diseño me desborda y puedo pasarme pensando en UML y papeles un montón de tiempo para al final posiblemente llegar a un diseño más general y más complicado de la cuenta. También estoy bastante seguro de que ese diseño luego no sirve para nada o, al menos, cuanto más código se vaya haciendo, menos se parece al diseño.&lt;br /&gt;&lt;br /&gt;Así que he decidido no hacer grandes diseños. Voy a tratar de seguir algunas de las filosofías de las &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Metodolog%C3%ADas_%C3%A1giles"&gt;metodologías ágiles&lt;/a&gt;, &lt;a href="http://www.chuidiang.com/ood/metodologia/extrema.html"&gt;programación extrema&lt;/a&gt; y demás.&lt;br /&gt;&lt;br /&gt;Trataré de ponerme hitos (historias de usuario, casos de uso o cómo queramos llamarlos) cortos y trataré de con un diseño mínimo, resolver esos hitos de la forma más rápida y directa posible en el código. Eso sí, pensando en rehacer/modificar el código ya hecho a menudo, según se vayan añadiendo hitos, trataré también de hacer clases de test unitario, con JUnit o similar.&lt;br /&gt;&lt;br /&gt;Desde luego, será más divertido que el pasarse pensando en el diseño varios días, semanas o meses, con la duda continua de si se te olvida algo o no, si será lo suficientemente general o no.&lt;br /&gt;&lt;br /&gt;Me siguen quedando las dudas de si haciéndolo de esta manera obtendré algo lo suficientemente general para varios proyectos, pero al menos esa preocupación no será el agobio de pensar en abstracto, sino agobio de cosas por (re)hacer en el código. Si el rehacer código se hace desde el principio, poco a poco según se vayan planteando las necesidades con los nuevos hitos, espero que tampoco será demasiado gravoso.&lt;br /&gt;&lt;br /&gt;De todas formas, esto es lo que siempre acabamos haciendo, ya que los diseños que se hacen al principio no se siguen ni siquiera el primer día que se empiza a programar.&lt;br /&gt;&lt;br /&gt;Ya iré contando la experiencia....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-2486659098702301101?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/2486659098702301101/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=2486659098702301101' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2486659098702301101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/2486659098702301101'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/sin-diseo.html' title='Sin diseño'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-4648268052411090860</id><published>2006-12-03T06:20:00.000+01:00</published><updated>2006-12-03T06:26:23.180+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><title type='text'>Editor simple en java</title><content type='html'>En mis apuntes de programación acabo de publicar un tutorial para novatos sobre cómo hacer un &lt;a href="http://www.chuidiang.com/java/novatos/editor/editor.php"&gt;editor de textos simple en java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No es nada del otro mundo, sólo puede salvar y cargar de fichero y las opciones de buscar, &lt;span style="font-style: italic;"&gt;cortar&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;copiar &lt;/span&gt;y &lt;span style="font-style: italic;"&gt;pegar&lt;/span&gt;. En él simplemente se aprovecha para explicar algunos ejemplos de cómo leer y escribir ficheros, hacer &lt;span style="font-style: italic;"&gt;copy-paste&lt;/span&gt;, el &lt;span style="font-style: italic;"&gt;JFileChooser&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;JOptionPane&lt;/span&gt;, etc. Todos ellos con un ejemplo tonto de uso, sin meterse en profundidades.&lt;br /&gt;&lt;br /&gt;Si es que cuando uno se cae de la cama todos los días a las 5 de la madrugada, algo tiene que hacer para no aburrirse...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-4648268052411090860?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/java/novatos/editor/editor.php' title='Editor simple en java'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/4648268052411090860/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=4648268052411090860' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/4648268052411090860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/4648268052411090860'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/editor-simple-en-java.html' title='Editor simple en java'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-3482436298701095344</id><published>2006-12-01T11:15:00.000+01:00</published><updated>2006-12-03T06:43:01.862+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='anecdotas'/><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Bugzilla es divertido</title><content type='html'>Como comenté anteriormente, instalé bugzilla en el trabajo y lo hemos puesto en marcha. A la hora de repartir bugs, es entretenido en algunos casos ver cómo se lo toma la gente que resuelve las incidencias. Este es el comentario literal en uno de los bugs&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;te cambio 3 de complejidad ciclomatica por una de error de consola que la tengo repe.&lt;/blockquote&gt;&lt;br /&gt;Al final los bugs son como los cromos, se cambian los "repes" y si no me gusta el mio, te lo cambio por el tuyo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-3482436298701095344?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/3482436298701095344/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=3482436298701095344' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/3482436298701095344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/3482436298701095344'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/12/bugzilla-es-divertido.html' title='Bugzilla es divertido'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116473494988591674</id><published>2006-11-28T18:25:00.000+01:00</published><updated>2006-12-03T06:41:21.404+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><title type='text'>Colaboraciones en la Chuwiki</title><content type='html'>Quiero agradecer un par de colaboraciones interesantes en la &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Portada"&gt;Chuwiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Por un lado, Pete ha añadido un pequeño tutorial de &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Hola_Mundo_con_J2EE"&gt;Hola Mundo con J2EE y JBoss&lt;/a&gt;, aunque de momento está sin terminar, lleva buen ritmo.&lt;br /&gt;&lt;br /&gt;Por otro, Walter ha añadido la forma de inicializar los gráficos con &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Gr%C3%A1ficos_Usando_graphics.h"&gt;graphics.h de Borland C++&lt;/a&gt; y un resumen de las funciones gráficas que nos ofrece este compilador.&lt;br /&gt;&lt;br /&gt;Así que gracias a ambos, les animo a seguir metiendo más cosas y animo a cualquiera que quiera colaborar a seguir el ejemplo. Cuantas más cosas metamos entre todos, más gente podrá ver resueltas sus dudas y problemas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116473494988591674?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/chuwiki/index.php?title=Portada' title='Colaboraciones en la Chuwiki'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116473494988591674/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116473494988591674' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116473494988591674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116473494988591674'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/colaboraciones-en-la-chuwiki.html' title='Colaboraciones en la Chuwiki'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116441164593547164</id><published>2006-11-25T00:21:00.000+01:00</published><updated>2006-12-03T06:42:08.611+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Diseño del software</title><content type='html'>La verdad es que cada vez estoy más desilusionado con el diseño de software, el uml, metodologías de desarrollo y todo lo demás.&lt;br /&gt;&lt;br /&gt;Es cierto que se necesita pensar antes de ponerse a codificar, tener claro que se quiere hacer, pensar posibles soluciones y elegir la mejor. Lo que cada vez me parece perder más el tiempo es escribir todo eso en papel antes de codificar, hacer diagramas uml, de clases, de secuencia, etc.&lt;br /&gt;&lt;br /&gt;Ojo, sí es conveniente de vez en cuando hacer un diagrama, pero yo creo que basta con uno informal y con poco nivel de detalle, lo suficiente para que nos entendamos los programadores.&lt;br /&gt;&lt;br /&gt;Lo que no veo en absoluto es meterse a un diseño detallado, metiéndose a nivel de clases y métodos. El porqué es sencillo. Vamos a perder mucho tiempo y en cuanto llevemos un par de días tirando código, van a empezar a salir todas las cosas que no pensamos en el diseño y al final el código no se va a parecer en nada al diseño. Hasta que no hacemos el código, es bastante imposible prever todos los detalles, el diseño detallado sirve más bien de poco.&lt;br /&gt;&lt;br /&gt;También el cliente en general suele ayudar bastante a que hacer diseño detallado sea una pérdida de tiempo. Habitualmente el cliente no sabe lo que quiere y cambia de opinión sobre la marcha. Bastan un par de cambios de idea elegidos adecuadamente para que el diseño detallado (y el no tan detallado) se vaya a la porra.&lt;br /&gt;&lt;br /&gt;Lo que veo más útil con mis compañeros de trabajo es repartirnos el trabajo y dejar claras las interfaces entre nosotros, bien sean métodos de las clases, mensajes de sockets o como sea que se comunique el sofware que hacemos. A veces basta con decir los métodos o mensajes y que se espera que haga la clase cuando recibe el mensaje o la llamada al método. Otras veces es necesario un diagrama de secuencia para definir una interacción en el tiempo algo más compleja. Una vez hecho esto, que nos facilitará la integración, basta con que cada uno programe a su bola su trozo de código.&lt;br /&gt;&lt;br /&gt;Cada vez veo más útil el tema de &lt;a href="http://www.chuidiang.com/ood/refactoring/refactoring.html"&gt;refactorización de código&lt;/a&gt;. Al igual que es imposible diseñar con detalle, también es imposible hacer bien el código a la primera. Es importante tomarse con frecuencia pequeños periodos de tiempo para arreglar el código ya hecho, alternando código nuevo con arreglos de código existente. Además, los IDEs actuales, como eclipse, vienen con montones de opciones de refactorización de código. Basta seleccionar un trozo de código para separarlo en un método aparte, para llevarse un atributo o un  método de una clase a su clase padre, etc.&lt;br /&gt;&lt;br /&gt;En resumen, que la forma que veo más útil de desarrollo de software es pensar un poco y hacer los diagramas justos para que todos los programadores sepamos que se espera de nuestro código y cómo interactua con el de los demás. Luego cada uno piensa su código y se pone a hacerlo. Es importante arreglar el código sobre la marcha según se vaya embarullando.&lt;br /&gt;&lt;br /&gt;Me queda un tema que todavía no tengo claro, que es el de cómo conseguir que el código de una persona sea reutilizado por otra. No sirve poner documentación del código accesible ni comentar. La gente simplemente no busca ahí cuando necesita hacer algo, salvo que sea algo realmente complicado. Aunque todavía no hemos llegado a ello, cada vez me estoy conenciendo más de que la forma mejor para conseguir esto va a ser la programación en parejas típica de la &lt;a href="http://www.chuidiang.com/ood/metodologia/extrema.html"&gt;programación extrema&lt;/a&gt;. Quizás también las reuniones diarias de  unos minutos entre varios programadores para contarse qué están haciendo, qué problemas tienen, qué podrían hacer en común para ambos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116441164593547164?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116441164593547164/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116441164593547164' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116441164593547164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116441164593547164'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/diseo-del-software.html' title='Diseño del software'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116425906946914023</id><published>2006-11-23T06:11:00.000+01:00</published><updated>2006-12-03T06:42:40.531+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>syncback</title><content type='html'>Como siguiente paso a la compra del disco duro externo USB, me he bajado &lt;a href="http://syncback-freeware.softonic.com/ie/30596"&gt;syncbak&lt;/a&gt;. Es un programa de copias de seguridad con un montón de opciones, entre que se incluyen unas opciones interesantes de sincronización de directorios.&lt;br /&gt;&lt;br /&gt;Se le dicen los dos directorios, por supuesto en mi caso uno en el disco duro interno y otro en el externo, y se le dan las opciones de copia que se desea. Pueden ser cosas como esta:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lo que está en origen que no está en destino, copiarlo.&lt;/li&gt;&lt;li&gt;Lo que está en destino que no está en origen, copiarlo o ignorarlo. Si elegimos copiarlo, cada vez que borremos un fichero en origen y ejecutemos el programa, se nos restaurará.&lt;/li&gt;&lt;li&gt;Si el mismo fichero está modificado en ambos lados, quedarse con la versión más moderna.&lt;/li&gt;&lt;li&gt;etc&lt;/li&gt;&lt;/ul&gt;Se pueden crear varias tareas de este estilo con distintos directorios, por ejemplo, mi directorio de fotos de cámara digital, mi directorio con la página web, etc. Estas tareas se pueden lanzar a mano o programarlas para que se hagan a cierta hora.&lt;br /&gt;&lt;br /&gt;Resumiendo, una cosa útil para tener copias de seguridad en dos discos, poder restaurar, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116425906946914023?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://syncback-freeware.softonic.com/ie/30596' title='syncback'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116425906946914023/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116425906946914023' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116425906946914023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116425906946914023'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/syncback.html' title='syncback'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116414590698519109</id><published>2006-11-21T22:46:00.000+01:00</published><updated>2006-12-03T06:43:37.380+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Editor de textos</title><content type='html'>Estoy haciendo en plan de muestra para la página web un pequeño editor de textos en java. Simplemente una caja de texto para escribir y opciones de menú para salvar fichero, cargar fichero y buscar una cadena de caracteres en el texto escrito.&lt;br /&gt;&lt;br /&gt;Recuerdo hace muchos, muchos, muchos años, en los tiempos del basica (o gwbasic) que también hice en varias ocasiones un editor de textos. ¡Vaya diferencia!&lt;br /&gt;&lt;br /&gt;Antes, con el basica, me preocupaba yo de todo. Controlar la posicion x,y del cursor, capturar las teclas para escribirlas, capturar las teclas de borrado para borrar, las flechas para moverme, etc, etc. Manejaba arrays y arrays de caracteres y variables con posiciones dentro de esos arrays y me dedicaba a mover arrays de caracteres de un sitio a otro.&lt;br /&gt;&lt;br /&gt;Ahora, con java, no hay que preocuparse de cómo hacer las cosas. El problema principal con java es pelearse con la API, para encontrar el método o la clase que hace lo que tú quieres hacer, porque es seguro 100% que hay un método o una clase que hace lo que quieres hacer, pero no sabes cómo se llama. Es más, hay más métodos y clases que hacen más cosas que las que posiblemente quieras hacer o te imagines siquiera que puedes querer hacer en toda tu vida.&lt;br /&gt;&lt;br /&gt;Antes querías hacer poca cosa y con eso ya tenías trabajo para varios días, haciéndolo. Ahora quieres hacer muchas cosas y tienes trabajo para varios días, buscando quién lo hace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116414590698519109?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116414590698519109/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116414590698519109' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116414590698519109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116414590698519109'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/editor-de-textos.html' title='Editor de textos'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116406145497451426</id><published>2006-11-20T23:18:00.000+01:00</published><updated>2006-12-05T20:51:52.347+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anecdotas'/><category scheme='http://www.blogger.com/atom/ns#' term='compras'/><title type='text'>Mis cacharros y yo</title><content type='html'>Nada, que al final el disco duro externo que me compré un asquito. Seguía fallando, aunque parece que en el otro puerto USB se portaba algo mejor.&lt;br /&gt;&lt;br /&gt;Esta tarde fuí al Media Market a cambiarlo y por si acaso, cojí otro de otra marca. El primero era un iomega de 320 Gigas, 120 €. El que he cogido ahora es un LaCie de 250 Gigas, 100 € menos un céntimo. Este parece que va bien, al menos en dos horas dándole caña no ha fallado.&lt;br /&gt;&lt;br /&gt;Por cierto, que contándole mis penas con los cacharros a un compañero de trabajo, más o menos le dije: "este fin de semana me he comprado un móvil y un disco duro. El disco duro me falla y voy a cambiarlo esta tarde. El móvil bien, pero es porque no lo he mirado". Se lo paso para que lo vea, le echa un ojo, me mira luego a mi y dice -"Pone error en tarjeta". "No, si ya te dije que no lo había mirado", contesté.&lt;br /&gt;&lt;br /&gt;Menos mal que se arregló apagando y encendiendo...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116406145497451426?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116406145497451426/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116406145497451426' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116406145497451426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116406145497451426'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/mis-cacharros-y-yo.html' title='Mis cacharros y yo'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116400013241775182</id><published>2006-11-20T06:12:00.000+01:00</published><updated>2006-12-03T06:45:01.083+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anecdotas'/><title type='text'>La informática es un asco o yo soy un pupas</title><content type='html'>Mi historia con los cacharros, informáticos sobre todo, es una verdadera odisea.&lt;br /&gt;&lt;br /&gt;El primer ordenador que compré tuve que devolverlo porque no le iba el puerto serie. Me trajeron otro y era una tecla del teclado la que no iba. El siguiente no le funcionaba la toma del micrófono en la parte delantera. En otra ocasión se me fué al garete la placa madre y tuve que cambiarla.&lt;br /&gt;&lt;br /&gt;En cuanto a CD/DVD, ya se me han fastidiado un lector de DVD y un grabador de CD. Sé que tienen una vida limitada, pero en ambos casos me ha parecido más bien una escasez de vida.&lt;br /&gt;&lt;br /&gt;El nero se me queda colgado a veces cuando quiero grabar un DVD. Por supuesto, se carga el DVD. El Dreamweaver también da fallos de vez en cuando y hay que cerrarlo.&lt;br /&gt;&lt;br /&gt;Y lo que más me cabrea en estos momentos, el disco duro que compré ayer me ha dado unos problemas raros, estilo&lt;br /&gt;&lt;br /&gt;"Windows no pudo guardar todos los datos para el archivo D:\\$Mft. Se perdieron los datos La posible causa de este error puede ser un error en el hardware de su PC o en la conexión de red. Intente guardar este archivo en otro sitio.&lt;br /&gt;&lt;br /&gt;Lo de $Mtf puede cambiar por el fichero que esté intentando copiar en el momento.&lt;br /&gt;&lt;br /&gt;Mirando por internet veo que este problema pasa, no queda claro si es del disco duro o de windows, pero tiene pinta que es algún problema de tiempos con el que windows es muy exigente.&lt;br /&gt;&lt;br /&gt;De momento parece que se ha solucionado metiendo el disco en otro puerto USB, pero desde luego ya no lo uso tranquilo. Además ese aviso de "se perdieron los datos" no es como para dejar tranquilo a nadie.&lt;br /&gt;&lt;br /&gt;Hay ocasiones que me apetece tirar el ordenador por la ventana y dedicarme al pastoreo de ovejas. Aunque quizás tampoco sea buena idea, seguro que los pastores de ahora tienen móvil y palm contador de ovejas ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116400013241775182?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116400013241775182/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116400013241775182' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116400013241775182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116400013241775182'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/la-informtica-es-un-asco-o-yo-soy-un.html' title='La informática es un asco o yo soy un pupas'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116388319528058370</id><published>2006-11-18T21:47:00.000+01:00</published><updated>2006-12-05T20:52:27.022+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anecdotas'/><category scheme='http://www.blogger.com/atom/ns#' term='compras'/><title type='text'>La casa por la ventana</title><content type='html'>Esta mañana, de compras, la casa por la ventana. Un móvil entero para reemplazar la batería estropeada del móvil viejo. Un disco duro externo de 320 Gigas para hacer copias de mis fotos y videos del disco.&lt;br /&gt;&lt;br /&gt;En realidad el disco duro externo tenía ganas de él precisamente para copias de las fotos de la camara digital y de los vídeos VHS de los niños que estoy pasando a DVD. Me daba "cosa" tener una única copia en un disco duro. Las fotos no me dan para un DVD y los videos me ocuparían varios DVD. En fin, un pequeño rollo.&lt;br /&gt;&lt;br /&gt;Al instalar ubuntú, vi que iba bastante bien, aunque un pelín lento. Tenía una partición antigua de 2 Gigas en la que hace mucho instalé un linux antiguo. Al instalar ubuntú ese espacio se le queda chico y 256 megas de swat teniendo 256 megas de memoria también se me antoja poco.&lt;br /&gt;&lt;br /&gt;Ahora, con el disco externo y el principal en varias particiones, a ver si soy capaz de vaciar una de ellas, de 80 Gigas, para dejársela totalmente a ubuntú. Como dije en otra ocasión, soy nostálgico de unix y voy a intentar pasarme a él. Posiblemente tenga de dejar windows para ciertas cosas, pero trataré de usar linux y software gratuito lo más que pueda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116388319528058370?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116388319528058370/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116388319528058370' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116388319528058370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116388319528058370'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/la-casa-por-la-ventana.html' title='La casa por la ventana'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116383019430990900</id><published>2006-11-18T06:59:00.000+01:00</published><updated>2006-12-03T06:46:03.598+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anecdotas'/><title type='text'>Foro java de eMagister</title><content type='html'>Los de eMagister han contactado conmigo para hacerme "experto" de java en su &lt;a href="http://foros.emagister.com/foro-foro_de_java-13041.htm"&gt;foro de java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En principio yo no me comprometía a nada, simplemente a visitar y contetar en el foro cuando tuviera tiempo. Como eso es algo que hago habitualmente, no ese foro, pero sí en otros, pues no había problema por mi parte y dije que por mi parte.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/483/738/1600/serpi.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/483/738/320/serpi.gif" alt="Serpiente Chuidiang" border="0" /&gt;&lt;/a&gt; La primera pega se presenta cuando me piden una foto mía para poner allí. Les propuso poner un logo, este de la izquierda en concreto, pero me dijeron que no, que podían superponerlo encima de la foto, pero que mejor la foto.&lt;br /&gt;&lt;br /&gt;Como de todos es sabido que soy un poco feo, pues dije que no quería enviar foto. No pasó nada. Me hicieron experto igualmente y me pusieron en su lugar una silueta genérica.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/483/738/1600/caraTransparente.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/483/738/320/caraTransparente.gif" alt="careto chuidiang" border="0" /&gt;&lt;/a&gt;Vaya, eso es el segundo problema. Antes estaba dado de alta en ese foro como usuario normal y tenía puesto mi careto, el de la izquierda, que es parece más a mí que la silueta que ellos me han puesto. Al menos tengo ojos. Ahora tengo la silueta de ellos y no puedo cambiarla otra vez por esto (el enlace de "Datos personales" no funciona).&lt;br /&gt;&lt;br /&gt;Así que sigo visitando el foro y contestando, pero al ser "experto" no puedo poner la imagen que yo quiera mientras que los afortunados usuarios no expertos del foro sí pueden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116383019430990900?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://foros.emagister.com/foro-foro_de_java-13041.htm' title='Foro java de eMagister'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116383019430990900/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116383019430990900' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116383019430990900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116383019430990900'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/foro-java-de-emagister.html' title='Foro java de eMagister'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116370796794999772</id><published>2006-11-16T21:04:00.000+01:00</published><updated>2006-12-03T06:46:20.157+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Curiosidades de java</title><content type='html'>No hace mucho, viendo código java por internet, me encontré con una expresión como esta:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;if ( "".equals(variableString) )&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Lo primero me llamó la atención lo curioso de ella. Se puede poner una cadena entre comillas... y llamar a métodos de la clase String con ella.&lt;br /&gt;&lt;br /&gt;Luego, puestos a mirar el porqué se hace esa curiosa llamada cuando la forma aparentemente habitual es esta otra&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;if ( variableString.equals("") )&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;se me ocurrió el posible motivo. Muchas veces esa variableString nos viene como parámetro de un método o vete tú a saber de dónde, por lo que puede ser null. La llamada a equals() dará una excepción en ese caso. Para evitarlo, el if se hace más complejo&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;if ( (variableString != null) &amp;&amp;amp; (variableString.equals("")) )&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;debiendo, además, fiarnos de que el compilador va a ser listo y cuando comprueba que la primera condición no se cumple no se molesta en comprobar la segunda. Normalmente el compilador es listo y lo hace así. De todas formas, para no tener que fiarse, el if todavía es más peor&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;if (variableString != null)&lt;br /&gt;   if (variableString.equals(""))&lt;br /&gt;      ...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Sin embargo, haciéndolo con el &lt;span style="color: rgb(204, 0, 0);"&gt;"".equals(variableString)&lt;/span&gt;, se evita esa comprobación adicional de que no sea null y esa confianza ciega en el compilador.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116370796794999772?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116370796794999772/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116370796794999772' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116370796794999772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116370796794999772'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/curiosidades-de-java.html' title='Curiosidades de java'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116365535350965514</id><published>2006-11-16T06:30:00.000+01:00</published><updated>2006-12-03T06:46:41.325+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='anecdotas'/><title type='text'>El bazar de java</title><content type='html'>En el trabajo, en una parte de la aplicación, construimos un árbol (un JTree de java) de cosas muy serias e importantes consultando una base de datos y lo mostramos  en pantalla.&lt;br /&gt;&lt;br /&gt;Hace poco hicimos unas pequeñas modificaciones y en unas pruebas construimos un árbol grande, con muchos elementos. Las modificaciones hacían además que las consultas a base de datos fueran más lentas de lo normal. El caso es que el árbol tardaba unos quince segundos en cargarse.&lt;br /&gt;&lt;br /&gt;¡Sorpresa!. Mientras se carga el árbol de base de datos, el JTree en vez de vacío, mostraba esto&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/483/738/1600/arboljava.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/483/738/320/arboljava.png" alt="JTree por defecto de java" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Resulta que ese "hipermercado" de cosas es lo que muestran los JTree de java por defecto mientras nadie les diga lo contrario. En nuestras pruebas de la aplicación se mostraba eso durante unos quince segundos, hasta que era reemplazado por las cosas serias e interesantes de los jefes y clientes serios (con bigote).&lt;br /&gt;&lt;br /&gt;Por supuesto, el cabreo-cachondeo de los mismos fué mayúsculo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116365535350965514?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116365535350965514/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116365535350965514' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116365535350965514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116365535350965514'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/el-bazar-de-java.html' title='El bazar de java'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116325882765684923</id><published>2006-11-11T16:17:00.000+01:00</published><updated>2006-11-11T16:27:09.156+01:00</updated><title type='text'>Linux Ubuntu</title><content type='html'>Como siempre he trabajado en unix (solaris por más señas) y lo de windows es algo relativamente nuevo (ya unos años, pero no tantos como en solaris), soy un nostálgico de los sistemas unix.&lt;br /&gt;&lt;br /&gt;Siempre he tenido en casa instalada alguna versión de linux: red hat primero, mandrake después y finalmente suse. Sin embargo, nunca me habían satisfecho del todo. El "feeling" (que diria los ingleses) nunca era bueno del todo. El sistema de ventanas no era tan elaborado como windows o el de solaris. El movimiento de ratón no me convencía. La instalación de algo nuevo siempre me daba quebraderos de cabeza, siempre he sido programador, nunca administrador. A pesar de toda la fama de linux, tanto red hat, como madrake como suse se me quedaban colgados en ocasiones, posiblemente por culpa de algo de mi hardware.&lt;br /&gt;&lt;br /&gt;Sin embargo, sigo siendo nostálgico de los sistema unix y, fiel a mi nostalgia, acabo de instalar &lt;a href="http://www.ubuntu-es.org/"&gt;ubuntu.&lt;/a&gt; Lo primero que me ha maravillado es la facilidad de instalación. No me ha preguntado nada, salvo cuatro tonterías, como idioma, ciudad en la que estoy por aquello de la hora .... y las particiones del disco duro. Bueno, eso de las particiones no es ninguna tontería. O sabes lo que haces o puedes montar un buen estropicio. Afortunadamente, eso de las particiones es de lo poco que controlo en linux. Por no preguntar, no pregunta ni qué usuario quieres para root. Bueno, sí pregunta que usuario quieres y supongo que ese es el root, porque no hay otro.&lt;br /&gt;&lt;br /&gt;Listo, funciona todo a la primera y sin hacer nada: sonido, internet, los discos de windows ya montados, etc, etc. Además, el ratón y las fuentes de letras me parecen correctas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Seguiré una temporada con él a ver como va la cosa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116325882765684923?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ubuntu-es.org/' title='Linux Ubuntu'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116325882765684923/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116325882765684923' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116325882765684923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116325882765684923'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/linux-ubuntu.html' title='Linux Ubuntu'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116304954606175750</id><published>2006-11-09T06:07:00.000+01:00</published><updated>2006-11-09T06:32:02.996+01:00</updated><title type='text'>MiArroba</title><content type='html'>Navegando, he descubierto &lt;a href="http://miarroba.com/"&gt;http://miarroba.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Es este sitio te das de alta y te dan un montón de cosas: página web con 500 megas, transferencia ilimitada, php y mysql, blogs, foros para que crees y administres tú mismo, etc, etc.&lt;br /&gt;&lt;br /&gt;Eso es lo bueno. Lo malo es que va algo lento, tiene demasiada propaganda, aunque en tu foro y tu blog no meten más que un banner arriba del todo. La otra pega es que el firewall me avisa de vez en cuando que "ha prohibido acceder a mi ordenador desde el sitio miarroba.com". También te dan muchas cosas de publicidad, para que recogas direcciones de correo y se las mandes, etc, etc.&lt;br /&gt;&lt;br /&gt;En fin, dan mucho a cambio de publicidad. De todas formas y para probar qué tal he abierto un &lt;a href="http://chuidiang.blogcindario.com/"&gt;blog, por supuesto también de programaión&lt;/a&gt;  y un &lt;a href="http://miarroba.com/foros/ver.php?id=1129996"&gt;foro de java, C++ y php&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El blog no creo que crezca mucho, puesto que prefiero seguir escribiendo en este. En cuanto al foro, lo visitaré de vez en cuando para ver cómo va, pero tampoco pienso hacerle demasiada propaganda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116304954606175750?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://miarroba.com/' title='MiArroba'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116304954606175750/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116304954606175750' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116304954606175750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116304954606175750'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/miarroba.html' title='MiArroba'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116302302689249539</id><published>2006-11-08T22:48:00.000+01:00</published><updated>2006-12-03T06:47:13.071+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Continuum</title><content type='html'>&lt;a href="http://maven.apache.org/continuum/"&gt;Continuum&lt;/a&gt; es otra herramienta de gratis similar al &lt;a href="http://cruisecontrol.sourceforge.net/"&gt;CruiseControl&lt;/a&gt;, de esas que están pendientes en un proyecto de si alguien mete algo en CVS (o subversion o lo que tengamos) y lo saca, lo compila y envía un correo avisando automáticamente.&lt;br /&gt;&lt;br /&gt;Aunque no he hecho demasiadas pruebas, la he instalado para ver qué pinta tiene. Desde luego de aspecto me gusta más que CruiseControl.&lt;br /&gt;&lt;br /&gt;En primer lugar la instalación es mucho más sencilla. En CruiseControl tienes que andar copiando y creando directorios a mano, con lo que te lees el manual para ver qué es lo que tienes que hacer, o no hace nada. Continuum es simplemente desempaquetar en un sitio y ejecutar.&lt;br /&gt;&lt;br /&gt;Continuum crea un usuario administrador que desde el mismo navegador puede añadir nuevos proyectos, eliminarlos y demás. Los demás usuarios pueden ver los resultados de la compilación y hacer compilaciones. En CruiseControl toda la administración se hace desde un fichero .xml, en el que ahora tengo varios proyectos y en el que tengo varios bloques muy similares repetidos (una vez por proyecto). Unicamente cambia el directorio, el nombre del proyecto y poco más.&lt;br /&gt;&lt;br /&gt;Sin embargo hay una cosa que no me ha gustado de Continuum. Si el proyecto es maven, Continuum pide que en el pom.xml esté la información necesaria para extraer el proyecto de CVS. Eso quiere decir que en el pom.xml hay que meter un CVSROOT válido, con usuario y todo. ¿Por qué el pom.xml que está en CVS y supuestamente es compartido por todos los programadores del proyecto debe llevar un usuario de uno de ellos dentro?.&lt;br /&gt;&lt;br /&gt;Tampoco me ha funcionado a la primera el meter un proyecto maven con subproyectos. Como de momento tengo CruiseControl funcionando, tampoco me he preocupado de investigar cómo hacerlo y ese es el momento en que dejé las pruebas con Continuum.&lt;br /&gt;&lt;br /&gt;Sin embargo, la buena pinta que tiene, me hace pensar que en cualquier momento volveré a él para probar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116302302689249539?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://maven.apache.org/continuum/' title='Continuum'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116302302689249539/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116302302689249539' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116302302689249539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116302302689249539'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/continuum.html' title='Continuum'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116276344857461526</id><published>2006-11-05T22:46:00.000+01:00</published><updated>2006-11-05T22:50:48.876+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Maven otra vez</title><content type='html'>Como últimamente ando muy metido en maven, qué menos que hacer un pequeño &lt;a href="http://www.chuidiang.com/java/herramientas/maven.php"&gt;tutorial para iniciarse en maven&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;He puesto lo mínimo para hacerse una idea y empezar con un pequeño proyecto java, pero se me han quedado muchas cosas en el tintero. La verdad es que cuanto más me meto en maven, más cosas descubro y más me gusta el que todos los proyetos se hagan igual, que el script de compilado no sea distinto en cada sitio, no tener que revisar los antiguos scripts de otros proyectos para que el script del nuevo proyecto se parezca.&lt;br /&gt;&lt;br /&gt;Sin embargo, contar todo lo de maven, aparte de que yo no me lo sé, iba a ser demasiado extenso y rollo. Por eso prefiero un pequeño tutorial para enterarse de qué va y dar los primeros pasos, de forma que el que tenga interés tenga una base mínima para empezar a investigar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116276344857461526?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/java/herramientas/maven.php' title='Maven otra vez'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116276344857461526/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116276344857461526' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116276344857461526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116276344857461526'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/maven-otra-vez.html' title='Maven otra vez'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116268268345340191</id><published>2006-11-05T00:24:00.000+01:00</published><updated>2006-11-05T00:30:19.536+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>BorderLayout, FlowLayout y BoxLayout</title><content type='html'>Acabo de hacer un pequeño &lt;a href="http://www.chuidiang.com/java/layout/BorderLayout.php"&gt;ejemplo de cómo usar el BorderLayout, FlowLayout y BoxLayout&lt;/a&gt;. Estos Layouts de java se complementan bien para hacer la típica ventana principal de una aplicación, en la que hay una zona central grande y luego una serie de botonería en la parte superior y en el lado derecho o izquierdo.&lt;br /&gt;&lt;br /&gt;A ver si para la siguiente pongo un pequeño ejemplo de un JFrame en el que se use su zona de menús, una barra de herramientas y un JDesktopPane, para meter dentro JInternalFrame. Quizás también un hueco para poner en el lado derecho un pequeño menú/botonería.&lt;br /&gt;&lt;br /&gt;Por cierto, para este ejemplo tonto de una clase, pero para el que tenía que generar el jar para poner en el Applet de la página, me he creado un mini-proyecto con maven. Esta herramienta, una vez que se conoce, es tan simple y eficiente para estas tareas básicas que me la he instalado en casa y la estoy usando para mis pequeños programitas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116268268345340191?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/java/layout/BorderLayout.php' title='BorderLayout, FlowLayout y BoxLayout'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116268268345340191/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116268268345340191' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116268268345340191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116268268345340191'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/borderlayout-flowlayout-y-boxlayout.html' title='BorderLayout, FlowLayout y BoxLayout'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116244540304563353</id><published>2006-11-02T06:24:00.000+01:00</published><updated>2006-11-02T06:31:44.420+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Validar la entrada de un JTextField</title><content type='html'>Cuando queremos que un &lt;span style="font-weight: bold;"&gt;JTextField&lt;/span&gt; sólo se puedan admitir dígitos, o una longitud determinada o cualquier otra restricción, hay muchas posibles soluciones.&lt;br /&gt;&lt;br /&gt;He tratado o probado muchas de ellas.  En este blog,  en mi página de &lt;a href="http://www.chuidiang.com/java/"&gt;Tutoriales de Java&lt;/a&gt; y en varios foros he ido poniendo algunas de ellas.&lt;br /&gt;&lt;br /&gt;Al final, me he decidido a poner en la &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Portada"&gt;Chuwiki&lt;/a&gt; un artículo en que se recopilan todas ellas, con un pequeño ejemplo. Allí tienes un pequeño listado con ejemplos de cómo conseguir que un &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=JTextField_que_solo_admite_digitos"&gt;JTextField sólo admita núemeros&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para el caso concreto de números, a mi me gusta más la &lt;a href="http://www.chuidiang.com/java/ejemplos/JFormattedTextField/EjemplosJFormattedTextField.html"&gt;opción del JFormattedTextField&lt;/a&gt;, ya que es bastante tonta y nos ahorra convertir luego el String a un número y viceversa.&lt;br /&gt;&lt;br /&gt;En cuanto a limitar la longitud total, a mi me gusta más la de &lt;a href="http://www.chuidiang.com/java/ejemplos/JTextField/limita_caracteres.html"&gt;reemplazar el Document&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116244540304563353?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/chuwiki/index.php?title=JTextField_que_solo_admite_digitos' title='Validar la entrada de un JTextField'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116244540304563353/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116244540304563353' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116244540304563353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116244540304563353'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/validar-la-entrada-de-un-jtextfield.html' title='Validar la entrada de un JTextField'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116241972011733327</id><published>2006-11-01T23:11:00.000+01:00</published><updated>2006-11-01T23:22:00.506+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Plugins de Maven</title><content type='html'>Sigo investigando con maven.&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://java.freehep.org/"&gt;FreeHep&lt;/a&gt; he encontrado un pequeño "filón" de plugins para maven.&lt;br /&gt;&lt;br /&gt;Un tema que me preocupaba eran los objetos remotos de rmi en java. Para que funcionen, una vez compilados, hay que pasarles el compilador rmic. No tenía muy claro cómo se hacía esto con maven y creo que lo he encontrado. Hay un plugin de forma que poniendo en el pom.xml qué clases son las que necesitan pasar rmic, lo pasa. En la Chuwiki puedes ver qué es lo que hay que añadir al pom.xml para que &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Rmic"&gt;maven pase el rmic&lt;/a&gt; a las clases que lo necesitan.&lt;br /&gt;&lt;br /&gt;También había oido hablar de él, pero aquí lo he encontrado. Otro plugin de maven que desempaqueta las librerías externas que necesitamos (log4j.jar, ojdbc14.jar, etc) y empaqueta sus class junto con los nuestros en un único jar. De esta forma evitamos tener que distribuir nuestra aplicación con varios jars. En la Chuwiki puedes ver la configuración del &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Crear_un_solo_jar"&gt;plugin jarjar en el pom.xml&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Además de plugins, en &lt;a href="http://java.freehep.org/"&gt;FreeHep&lt;/a&gt; hay otras librerías java que pueden ser interesantes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116241972011733327?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116241972011733327/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116241972011733327' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116241972011733327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116241972011733327'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/11/plugins-de-maven.html' title='Plugins de Maven'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116231569122756806</id><published>2006-10-31T18:21:00.000+01:00</published><updated>2006-10-31T18:28:11.350+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>No es oro todo lo que reluce</title><content type='html'>Como ya he comentado, llevo varios días jugando y poniendo en marcha varias herramientas que se supone ayudan a las costumbres de buena programación: Cruise Control, Maven, Bugzilla, etc.&lt;br /&gt;&lt;br /&gt;En el caso concreto de Maven estoy contento y ahorra mucho trabajo. También hay muchas cosas que es capaz de hacer y que ayudan, pero....&lt;br /&gt;&lt;br /&gt;Maven es una herramienta gratuita desarrollada en plan libre y con montones de plug-ins propios o de terceros también en plan libre. El problema que tiene todo esto es que la documentación es escasa y dispersa por internet. El caso es que cuando quiero hacer algo, me puedo pasar unas cuantas horas buceando por google en busca de una respuesta.&lt;br /&gt;&lt;br /&gt;Por ejemplo, no me funciona el comando &lt;span style="font-weight: bold;"&gt;mvn site:stage&lt;/span&gt;, y por lo que veo en internet, simplemente no funciona bien.&lt;br /&gt;&lt;br /&gt;Tampoco acabo de encontrar cómo trata maven con las clases Remote de rmi y el rmic. Veo que había un plugin para maven 1, pero todavía estoy buscando a ver si encuentro algo para maven 2.&lt;br /&gt;&lt;br /&gt;El plugin de cobertura, que ya mencioné en alguna ocasión, se encuentra fácilmente en la página de maven para maven 1, pero no para maven 2. Hay que irse a la página oficial de cobertura para desde ahí llegar el plugin para maven 2.&lt;br /&gt;&lt;br /&gt;Algo similar me pasa con eclipse. Existen muchos plugins de terceros, pero algunos dan problemas o van retrasados respecto a las versiones nuevas. Me acabo de bajar eclipse 3.2 y el plugin de jalopy, para formatear código, me da problemas, a veces va, a veces no.&lt;br /&gt;&lt;br /&gt;De todas formas, sigue mereciendo la pena meterse en estas cosas, ahorran mucho trabajo y es mejor pelearse o no disponer de alguna de estas funcionalidades secundarias que andar haciendo todo desde cero y a pelo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116231569122756806?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116231569122756806/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116231569122756806' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116231569122756806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116231569122756806'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/no-es-oro-todo-lo-que-reluce.html' title='No es oro todo lo que reluce'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116189138181998736</id><published>2006-10-26T21:31:00.000+02:00</published><updated>2006-10-26T21:36:21.856+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>SimpleDateFormat y DecimalFormat</title><content type='html'>Últimamente me he tenido que pelear un poco con SimpleDateFormat y DecimalFormat.&lt;br /&gt;&lt;br /&gt;No es que me haya tendio que pelear, porque tampoco son clases tan dificiles de usar, pero por un lado me he visto en la necesidad de convertir fechas en formato &lt;span style="font-style: italic;"&gt;ddMMyy&lt;/span&gt; a formato &lt;span style="font-style: italic;"&gt;dd/MM/yyyy&lt;/span&gt; y viceversa (cosas del trabajo).&lt;br /&gt;&lt;br /&gt;Por otro lado, en algún foro y creo que ha sido a más de una persona, he contestado algunas dudas sobre el DecimalFormat. Además, según puse en un post anterior, me tropecé con una curiosidad que no sabía sobre los &lt;a href="http://chuidiang.blogspot.com/2006/10/decimalformat.html"&gt;porcentajes y DecimalFormat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En fin, que todo esto me ha animado a escribir en la &lt;a href="http://www.chuidiang.com/chuwiki"&gt;Chuwiki&lt;/a&gt; un pequeño ejemplo de &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=DecimalFormat"&gt;DecimalFormat&lt;/a&gt; comentando algunas de sus peculiaridades y otro con &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=SimpleDateFormat"&gt;SimpleDateFormat&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116189138181998736?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116189138181998736/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116189138181998736' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116189138181998736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116189138181998736'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/simpledateformat-y-decimalformat.html' title='SimpleDateFormat y DecimalFormat'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116178349107640558</id><published>2006-10-25T15:38:00.000+02:00</published><updated>2006-10-25T15:38:11.346+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Cobertura Plugin Usage</title><content type='html'>Comenté de un plugin para maven que permite sacar un informe en el que sale qué trozos de código se han recorrido en los test  unitarios y que trozos no se  han recorrido.&lt;br /&gt;&lt;br /&gt;Aquí está el cómo configurar maven para que coja ese pluging&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mojo.codehaus.org/cobertura-maven-plugin/usage.html"&gt;Cobertura Plugin Usage&lt;/a&gt;: "&lt;plugin&gt; &lt;groupid&gt;org.codehaus.mojo&lt;/groupid&gt; &lt;artifactid&gt;cobertura-maven-plugin&lt;/artifactid&gt; &lt;/plugin&gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116178349107640558?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://mojo.codehaus.org/cobertura-maven-plugin/usage.html' title='Cobertura Plugin Usage'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116178349107640558/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116178349107640558' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116178349107640558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116178349107640558'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/cobertura-plugin-usage.html' title='Cobertura Plugin Usage'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116174647935711478</id><published>2006-10-25T05:07:00.000+02:00</published><updated>2006-10-25T05:24:12.106+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Una sesión de herramientas</title><content type='html'>Ultimamente me he instalado casi todas las herramientas instalables. Lo siguiente viene a ser más o menos un día de trabajo entre herramientas.&lt;br /&gt;&lt;br /&gt;Cuando me pongo a trabajar, que no suele coincidir con el momento en el que llego al  trabajo, abro el &lt;a href="http://www.eclipse.org/"&gt;eclipse&lt;/a&gt;. Un plugin de eclipse, llamado &lt;a href="http://www.eclipse.org/mylar/"&gt;mylar&lt;/a&gt;, se va a revisar nuestra página de &lt;a href="http://www.bugzilla.org/"&gt;bugzilla&lt;/a&gt; y me trae a eclipse todos los errores que alguien ha levantado en el proyecto. Simultánemente, veo en el &lt;a href="http://www.mozilla-europe.org/es/products/thunderbird/"&gt;thunderbird&lt;/a&gt; que bugzilla me ha enviado correos con los mismos bugs que se han levantado y mylar me ha traido a eclipse.&lt;br /&gt;&lt;br /&gt;Reviso los errores y elijo uno para ponerme a trabajar. Con mylar lo marco como activo y en ese momento se pone en marcha automáticamente un cronómetro. Me dedico a revisar ficheros java, depurar y así hasta que encuentro el error. Desactivo (paro el cronómetro) del bug a la hora del café, cuando me interrumpen, etc y vuelvo a activarlo cuando sigo.&lt;br /&gt;&lt;br /&gt;Cuando encuentro el error y lo corrijo, le digo a mylar que meta en cvs todos los ficheros que he tocado. Automáticamente pone un comentario en CVS del estilo "progresando en el bug ###". Añado al comentario algo más específico de lo que he hecho.&lt;br /&gt;&lt;br /&gt;Le digo también a mylar que adjunte al bug de bugzilla mi contexto de eclipse. Esto guarda en bugzilla junto al bug un fichero xml en el que se dice qué ficheros he tocado para corregir el bug. Cualquier otro que tenga el mismo proyecto en eclipse con mylar, puede ver qué ficheros he tocado.&lt;br /&gt;&lt;br /&gt;Finalmente, con mylar en eclipse marco el bug como "resolved fixed" o como "no me da la gana corregirlo (wontfix que diría bugzilla)" y mylar se encarga de tocar la página de bugzilla. Este último envía un correo a la persona que ha levantado el bug. Me autocomplazco un rato mirando con mylar el histórico de bugs que he resuelto en los últimos días y viendo cuánto tiempo he tardado en cada uno de ellos. Otras veces hago lo mismo, pero tirándome de los pelos viendo que un pueñetero bug lleva un par de días abierto y todavía no tengo ni idea de por donde van los tiros.&lt;br /&gt;&lt;br /&gt;Un rato después, &lt;a href="http://cruisecontrol.sourceforge.net/"&gt;CruiseControl&lt;/a&gt; ve que he tocado ficheros en CVS del proyecto, así que automáticamente saca dichos ficheros y compila el proyecto entero desde cero. Cuando termina, me envía un correo diciéndome si los fuentes que he metido en CVS compilan o no correctamente.&lt;br /&gt;&lt;br /&gt;Y todo herramientas gratuitas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116174647935711478?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116174647935711478/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116174647935711478' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116174647935711478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116174647935711478'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/una-sesin-de-herramientas.html' title='Una sesión de herramientas'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116172489470538061</id><published>2006-10-24T23:08:00.000+02:00</published><updated>2006-10-24T23:21:34.880+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>jakarta commons io</title><content type='html'>Acabo de enterarme de otro proyecto de jakarta, el &lt;a href="http://jakarta.apache.org/commons/io/"&gt;commons io&lt;/a&gt;,  en el que hay montones de utilidades para java para el manejo de entradas/salidas. Entre otras, está por ejemplo la posibilidad de ver el espacio libre en disco duro, copia de ficheros, manejo de nombres de ficheros, manejo de ficheros de texto a base de leer líneas, etc, etc.&lt;br /&gt;&lt;br /&gt;Aparte de la posible utilidad de todo esto, lo que más me llama la atención, como ando metido con maven y con sus informes sobre el proyecto, son los &lt;a href="http://jakarta.apache.org/commons/io/maven-reports.html"&gt;informes maven&lt;/a&gt; que han metido en su documentación.&lt;br /&gt;&lt;br /&gt;El de &lt;a href="http://jakarta.apache.org/commons/io/checkstyle-report.html#org_apache_commons_io_FileUtils_java"&gt;checkstyle&lt;/a&gt; no lo conocía, pero parece que revisa las cosas típicas de estilo de java, como poner nombres de clases con mayúscula primero y minúscula después, métodos empiezan con minúscula, etc.&lt;br /&gt;&lt;br /&gt;Me ha llamado especialmente la atención el de &lt;a href="http://jakarta.apache.org/commons/io/cobertura/index.html"&gt;cobertura&lt;/a&gt;. Básicamente nos por qué partes de código han pasado nuestros test de JUnit y qué partes no han tocado. De esta forma sabemos lo completos que son nuestros test. Además, pinchando en las clases del informe, acabamos llegando al listado del fuente, en el que se marcan en verde y rojo las líneas por las que pasa o no pasa el test.&lt;br /&gt;&lt;br /&gt;También me ha llamado la atención &lt;a href="http://www.jdiff.org/"&gt;JDiff&lt;/a&gt;, que nos muestra las diferencias entre dos APIS de nuestro proyecto en distintas versiones, indicándonos qué clases se han añadido, borrado o modificado de una versión a otra, al igual que los métodos. Es curioso ver, por ejemplo, el JDiff aplicado a las &lt;a href="http://javadiff.sourceforge.net/jdiff/reports/j2se142_j2se150b1/changes.html"&gt;versiones 1.4.2 y 1.5.0 de java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Es increible la cantidad de cosas que hace la gente por el mundo, y lo más increible, gratis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116172489470538061?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jakarta.apache.org/commons/io/' title='jakarta commons io'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116172489470538061/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116172489470538061' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116172489470538061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116172489470538061'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/jakarta-commons-io.html' title='jakarta commons io'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116142948664888793</id><published>2006-10-21T13:03:00.000+02:00</published><updated>2006-10-21T13:18:06.663+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Math.pow()</title><content type='html'>Es curioso, pero en este post del &lt;a href="http://www.foroswebgratis.com/tema-roblema_con_clase_math-32132-481348.htm"&gt;foro de java&lt;/a&gt; comentan  que al hacer&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Math.pow(-3.0, 1.0/3.0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;que teóricamente es la raíz cúbica de -3, que debería dar -1.44 aproximadamente, lo haces en java y sale &lt;span style="color: rgb(153, 0, 0);"&gt;NaN&lt;/span&gt; (Not a Number).&lt;br /&gt;&lt;br /&gt;Revisando la &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29"&gt;API de Math.pow()&lt;/a&gt; vemos una cosa realmente curiosa, dice que ese es el comportamiento esperado&lt;br /&gt;&lt;blockquote style="background: rgb(200, 200, 200) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;ul&gt;&lt;li&gt;If the first argument is finite and &lt;span style="font-weight: bold;"&gt;less than zero&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;if the second argument is a finite even integer, the result is equal to the result of raising the absolute value of the first argument to the power of the second argument&lt;/li&gt;&lt;li&gt;if the second argument is a finite odd integer, the result is equal to the negative of the result of raising the absolute value of the first argument to the power of the second argument&lt;/li&gt;&lt;li&gt;if the second argument is &lt;span style="font-weight: bold;"&gt;finite and not an integer&lt;/span&gt;, then the result is &lt;span style="font-weight: bold;"&gt;NaN&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Bueno, pues no deja de ser curioso este comportamiento tan inesperado que impide echar ciertas cuentas. No el caso de la raíz cúbica, que se puede hacer con el método &lt;span style="color: rgb(102, 0, 0);"&gt;Math.cbrt()&lt;/span&gt; (CuBic RooT), pero sí el de las raices impares de más rango que la cúbica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116142948664888793?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116142948664888793/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116142948664888793' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116142948664888793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116142948664888793'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/mathpow.html' title='Math.pow()'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116129509013101881</id><published>2006-10-19T23:45:00.000+02:00</published><updated>2006-10-19T23:58:10.193+02:00</updated><title type='text'>Reconocedor de idiomas</title><content type='html'>Hace mucho, mucho tiempo leí en una revista "Scientific American" la forma de que un programa pueda reconocer un idioma o incluso generar un texto, por ejemplo en Alemán, de forma que aunque el texto no tenga sentido ninguno, una persona que no sepa Alemán lo identificaría inmediatamente como Alemán.&lt;br /&gt;&lt;br /&gt;El algoritmo es bien sencillo. Basta tener varios textos de muestra en varios idiomas y hacer unas estadísticas sobre el número de apariciones de las letras o de las parejas de letras o de trios de letras. Por ejemplo, "hola", tiene las parejas "ho", "ol" y "la".&lt;br /&gt;&lt;br /&gt;Cuando queramos saber un texto de qué idioma es, basta con comparar sus grupos de letras con los que tenemos en los distintos idiomas, para ver a cual se parece más.&lt;br /&gt;&lt;br /&gt;En cuanto a generar el texto, sólo hay que apuntar después de cada pareja de letras, qué letra suele seguir a esa pareja concreta, qué probabilidades tiene cada letra de seguir a una pareja. En inglés, por ejemplo, detrás de un "th" es bastante posible que vaya una vocal y casi imposible que vaya otra consonante. Para generar el texto basta con elegir la primera pareja de letras e ir generando las siguientes letras de acuerdo con esas probabilidades.&lt;br /&gt;&lt;br /&gt;Bien, pues al menos de la primera parte, la de reconocer el idioma, he hecho un pequeño &lt;a href="http://www.chuidiang.com/java/codigo_descargable/idiomas/idioma.php"&gt;programa de ejemplo en java&lt;/a&gt;, que por supuesto puedes probar en forma de Applet, bajarte los fuentes o el jar como aplicación independiente. Por supuesto, también, no garantizo en absoluto que funcione bien y sólo sirve para jugar un poco con él si te interesa el tema.&lt;br /&gt;&lt;br /&gt;Lo de generar el texto, seguramente lo añada dentro de poco.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116129509013101881?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/java/codigo_descargable/idiomas/idioma.php' title='Reconocedor de idiomas'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116129509013101881/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116129509013101881' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116129509013101881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116129509013101881'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/reconocedor-de-idiomas.html' title='Reconocedor de idiomas'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116123632825336801</id><published>2006-10-19T07:23:00.000+02:00</published><updated>2007-10-27T23:46:35.158+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Dreamweaver</title><content type='html'>La verdad es que soy un poco "rupestre".&lt;br /&gt;&lt;br /&gt;Empecé con la informática allá en los tiempos del sinclair zx81 (anterior al Spectrum). Luego seguí con los ordenadores de fósforo verde y aprendí a escribir a máquina antes de usarlos. En el trabajo caí en un cutre-empresa que trabajaba con estaciones de trabajo unix y no se gastaban un duro en entornos de desarrollo, así que pasé muchos años programando con el &lt;a href="http://www.chuidiang.com/clinux/herramientas/basico/hola_mundo.php"&gt;vi&lt;/a&gt; (uno de los mejores editores del mundo), pero que está muy orientado a comandos desde teclado.&lt;br /&gt;&lt;br /&gt;Todo esto hace que sea un usuario muy orientado a usar el teclado y que el ratón muchas veces sea más una molestia, algo que retarda el hacer las tareas, más que una ayuda.&lt;br /&gt;&lt;br /&gt;Por ello quizás, siempre me han gustado los programas simples, sin demasiadas ventanas y con posibilidad de hacer las cosas con teclas en vez de ir con el ratón a un menú y navegar entre submenus y submenus de submenus.&lt;br /&gt;&lt;br /&gt;Hasta no hace mucho, para mi página web, usaba el netscape composer. Una herramienta gratuita y simple, pero que permitía escribir fácilmente y tocar directamente el código html. Para mí siempre ha sido una de las herramientas más cómodas para trabajar con html. Probé por encima varias más avanzadas, como la de microsoft que venía con visual studio 6 (no recuerdo el nombre), dreamveaver, etc. Todas me parecieron muy engorrosas. Para hacer una simple página web pedían cosas como montar un sitio web, definir un montón de parámetros, si te descuidas te lo suben al servidor web, etc.&lt;br /&gt;&lt;br /&gt;Sin embargo, hace poco me puse Dreamveaver y me puse a mirarlo con un poco más de detalle. Sigue pareciendome una herramienta engorrosa. Nada más abrirla sale un "ventanón" con montones de subventanas que no sé para qué sirven (ni las he usado en el tiempo que llevo) y el espacio de trabajo (para escribir tu página) es más bien reducido.&lt;br /&gt;&lt;br /&gt;Pero he visto que tiene pequeñas maravillas. Todo lo que echaba en falta en una herramienta simple como netscape composer, lo tiene esta herramienta. Las cosas más útiles que he encontrado son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Revisa todos los vínculos de tu sitio, indicándote si hay alguno erroneo. Para un sitio como el mio tarda un rato, pero lo hace&lt;/li&gt;&lt;li&gt;Si cambias el nombre de una página o la mueves de directorio, arregla todos los links en las demás. Con netscape composer ese era el principal motivo para NO mover las cosas. netscape no hace eso. ¡¡La de horas que me he pasado cambiando y revisando links!!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Y lo mejor de todo, el tema de plantillas. Puedes hacer un esqueleto de página web con huecos para rellenar más adelante. Ese esqueleto se graba como plantilla. Cuando luego quieras crear la página, le dices que es según la plantilla y llisto. Te sale la página con su formato y los huecos para que pongas el texto. Si cambias la plantilla, se cambia automáticamente el formato de todas las páginas. ¡¡La de horas que me he pasado cambiando el aspecto de las páginas una a una!!&lt;/li&gt;&lt;/ul&gt;Modernizarse o morir...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116123632825336801?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116123632825336801/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116123632825336801' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116123632825336801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116123632825336801'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/dreamweaver.html' title='Dreamweaver'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116109684656907586</id><published>2006-10-17T16:45:00.000+02:00</published><updated>2006-10-17T17:05:01.023+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Jasper Report</title><content type='html'>Con un ejemplo tonto que me hizo un compañero de trabajo y el correo que me envió John, de Colombia, he hecho un &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Ejemplo_b%C3%A1sico_con_Jasper_Report"&gt;guia-burros de Jasper Report&lt;/a&gt;. No es más que una especie de "Hola mundo", pero por algo se empieza.&lt;br /&gt;&lt;br /&gt;Espero que algún &lt;a href="http://blog.riolambre.com/"&gt;Rodrigo de riolambre&lt;/a&gt;, que creo que un poquito de esto sabe, colabore y meta más cosas en la &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Portada"&gt;Chuwiki&lt;/a&gt; esa. Si no, cualquier otro que sepa un poco del tema está invitado a tocarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116109684656907586?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/chuwiki/index.php?title=Ejemplo_b%C3%A1sico_con_Jasper_Report' title='Jasper Report'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116109684656907586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116109684656907586' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116109684656907586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116109684656907586'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/jasper-report.html' title='Jasper Report'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116081607681595962</id><published>2006-10-14T10:45:00.000+02:00</published><updated>2006-10-14T10:56:01.603+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>DecimalFormat</title><content type='html'>Una pequeña estupidez, que está comentada, pero me he tropezado con ella, sobre la clase &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html"&gt;DecimalFormat &lt;/a&gt;de java.&lt;br /&gt;&lt;br /&gt;Resulta que si como formato de números ponemos "%" o algo con ese caracter, como "###.##%", la clase &lt;span style="font-weight: bold;"&gt;multiplica&lt;/span&gt; el número por 100 y lo pone en formato de tanto por ciento.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;DecimalFormat formateador = new DecimalFormat("%");&lt;br /&gt;System.out.println (formateador.format(0.344));&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;devuelve como salida&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;%34&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;Mientras que&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;DecimalFormat formateador = new DecimalFormat("###.## %");&lt;br /&gt;System.out.println (formateador.format(0.344));&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;devuelve como salida&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;34,4 %&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Es una buena forma de evitar ir multiplicando o dividiendo el número en código. Normalmente para cuentas con porcentajes suele venir mejor usar el tanto por uno. Lo del tanto por ciento normalmente es para mostrar en pantalla.&lt;br /&gt;&lt;br /&gt;Me explico:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Para calcular el 34% de un numero, lo más fácil es hacer &lt;span style="font-style: italic;"&gt;numero*0.34&lt;/span&gt; y no la cuenta habitual de &lt;span style="font-style: italic;"&gt;numero*34.0/100.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Para calcular qué porcentaje es un número a de un número b, lo fácil es hacer a/b que lo devuelve en tanto por uno, y no lo de a/b*100.0 que lo devolvería en tanto por ciento.&lt;/li&gt;&lt;li&gt;etc, etc.&lt;/li&gt;&lt;/ul&gt;Vaya, que nos ahorramos andar arrastrando por el código el dichoso 100...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116081607681595962?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html' title='DecimalFormat'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116081607681595962/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116081607681595962' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116081607681595962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116081607681595962'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/decimalformat.html' title='DecimalFormat'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116072715405648782</id><published>2006-10-13T09:57:00.000+02:00</published><updated>2006-10-13T10:12:34.070+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compras'/><title type='text'>ono</title><content type='html'>Me acabo de dar de alta en &lt;a href="http://www.ono.es/"&gt;ono&lt;/a&gt; y ya puestos a hacer gasto, lo he cogido todo: televisión, teléfono e internet.&lt;br /&gt;&lt;br /&gt;Me dí de alta por teléfono un martes. Ese mismo día me dijeron que el técnico vendría a ponerme los cables el siguiente martes sobre las cinco y media, hora que yo había solicitado. El técnico aparecio puntual y tardó casi dos horas en instalar todo. No es complejo, pero son tres cables que tiene que llevar por la casa y dos aparatos a instalar, el decodificador de tv y el cable modem para el internet. Cuando se fué sólo funcionaba internet. El decodificador que trajo estaba mal y el teléfono no lo probamos, poque me comentó que el cajetín de telefonos de la calle estaba mal y a mí no me llegaba señal.&lt;br /&gt;&lt;br /&gt;Volvió al día siguiente por la mañana, con un decodificador nuevo y habiendo arreglado lo del teléfono. Con ello ya tenía el decodificador de TV en condiciones y señal en el teléfono. Sin embargo, el teléfono iba a medias, podía hacer llamadas interprovinciales pero no locales. La tele seguía sin ir. El tema es que todavía no me habían dado de alta en el servicio.&lt;br /&gt;&lt;br /&gt;Esta mañana tempranito (Viernes después de un Jueves festivo) ya estaba todo funcionando. El internet funcionó desde el primer día. El teléfono y la televisión, desde que llamé para darme de alta hasta que lo he tenido en marcha, han pasado semana y media.&lt;br /&gt;&lt;br /&gt;En general, salvo esas pequeñas vicisitudes que se solucionaron rápido, el servicio ha ido bastante bien. El técnico puntual, venía cuando decía que iba a venir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116072715405648782?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ono.es/' title='ono'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116072715405648782/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116072715405648782' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116072715405648782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116072715405648782'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/ono.html' title='ono'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116064401121642861</id><published>2006-10-12T11:00:00.000+02:00</published><updated>2006-10-12T11:06:51.233+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Ares</title><content type='html'>En su día probé un poco con e-mule y con Kazaa.&lt;br /&gt;&lt;br /&gt;El primero me dejaba el ordenador colgado. Después de mucho mirar, buscar por los foros y demás vi que no era el único al que le pasaba y la conclusión a la que llegué al final es que era algún tipo de incompatibilidad con mi tarjeta de red, una D-Link Airplus DWL-520+&lt;br /&gt;&lt;br /&gt;El Kazaa no tenía ese problema, al menos con tanta frecuencia, aunque sí me dejaba colgado el ordenador de pascua en ramos.&lt;br /&gt;&lt;br /&gt;Ahora, aparte de que tengo otra tarjeta de red (no wi-fi), acabo de hacer unas pruebas con &lt;a href="http://ares.softonic.com/file.phtml?&amp;id_file=21824&amp;amp;action=view&amp;amp;view=downloads"&gt;Ares&lt;/a&gt;. Me ha dejado maravillado este programa, comparado con los otros dos. No hay tantísimos ficheros para descargar como había en e-mule, pero es miles de veces más rápido bajando cosas. Aparentemente no lleva ningún tipo de ad-ware como llevaba kazaa y no hay que andar configurando cosas raras como en e-mule. En fin, un programa sencillo de usar y muy veloz descargando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116064401121642861?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://ares.softonic.com/file.phtml?&amp;id_file=21824&amp;action=view&amp;view=downloads' title='Ares'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116064401121642861/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116064401121642861' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116064401121642861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116064401121642861'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/ares.html' title='Ares'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116051371233400851</id><published>2006-10-10T22:45:00.001+02:00</published><updated>2006-10-10T22:55:12.360+02:00</updated><title type='text'>Eclipse y CVS</title><content type='html'>Bueno, ahora que han pasado unas horas desde mi última experiencia de eclipse con cvs, creo que no voy a echar demasiados juramentos.&lt;br /&gt;&lt;br /&gt;Mi experiencia con el cvs de eclipse, "team" según el menú de eclipse, no es nada buena. Le veo muchas pegas que o bien no he sabido solucionar, o bien no se puede. Voy a enumerar algunas de las que menos me gustan:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;No puedes poner en eclipse un proyecto cvs que ya tengas fuera. Eclipse obliga a hacer él el checkout del proyecto. Al hacerlo así, mete además con los fuentes sus ficheros de proyecto .classpath y .project. No he conseguido hacer funcionar cvs sobre un proyecto de cvs que tuviera previamente sacado.&lt;/li&gt;&lt;li&gt;No consigo hacer updates recursivos por los directorios. Cuando alguien toca algo en cvs, debo irme desde línea de comandos de ms-dos o bash al directorio en cuestión y hacer el update a mano, o bien ir en eclipse, paquete por paquete, haciendo update.&lt;/li&gt;&lt;li&gt;Si cambio de nombre un paquete, con las opciones de refactor, eclipse "borra" el paquete viejo, pero no de cvs. Sin embargo, haciendo updates tampoco lo saca. Debe acordarse que ese paquete tiene ahora otro nombre. ¿Como borro el paquete de cvs?. Desde eclipse imposible, porque ni siquiera puedo verlo. Hay que irse nuevamente a una ventana de ms-dos o bash y hacerlo a mano.&lt;/li&gt;&lt;li&gt;De vez en cuando falla y marca paquetes como que los tengo editados, pero no muestra ningún fichero editado. Veo también que se "corrompe" el fichero Root de algunos directorios CVS, de forma que queda inutilizable y no me queda más remedio que repararlo a mano.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;En fin, Eclipse me parece maravilloso en muchos aspectos, como la cantidad de plug-ins gratuitos que tiene, muchos más que netbeans. También me parece maravilloso su forma de hacer código y las opciones de refactoring. Pero desde luego, con cvs es mejor no meterse si no quieres perder la ilusión por este IDE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116051371233400851?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116051371233400851/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116051371233400851' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116051371233400851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116051371233400851'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/eclipse-y-cvs_10.html' title='Eclipse y CVS'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-116051356756352742</id><published>2006-10-10T22:45:00.000+02:00</published><updated>2006-10-10T22:52:47.636+02:00</updated><title type='text'>Eclipse y CVS</title><content type='html'>Bueno, ahora que han pasado unas horas desde mi última experiencia de eclipse con cvs, creo que no voy a echar demasiados juramentos.&lt;br /&gt;&lt;br /&gt;Mi experiencia con el cvs de eclipse, "team" según el menú de eclipse, no es nada buena. Le veo muchas pegas que o bien no he sabido solucionar, o bien no se puede. Voy a enumerar algunas de las que menos me gustan:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;No puedes poner en eclipse un proyecto cvs que ya tengas fuera. Eclipse obliga a hacer él el checkout del proyecto. Al hacerlo así, mete además con los fuentes sus ficheros de proyecto .classpath y .project. No he conseguido hacer funcionar cvs sobre un proyecto de cvs que tuviera previamente sacado.&lt;/li&gt;&lt;li&gt;No consigo hacer updates recursivos por los directorios. Cuando alguien toca algo en cvs, debo irme desde línea de comandos de ms-dos o bash al directorio en cuestión y hacer el update a mano, o bien ir en eclipse, paquete por paquete, haciendo update.&lt;/li&gt;&lt;li&gt;Si cambio de nombre un paquete, con las opciones de refactor, eclipse "borra" el paquete viejo, pero no de cvs. Sin embargo, haciendo updates tampoco lo saca. Debe acordarse que ese paquete tiene ahora otro nombre. ¿Como borro el paquete de cvs?. Desde eclipse imposible, porque ni siquiera puedo verlo. Hay que irse nuevamente a una ventana de ms-dos o bash y hacerlo a mano.&lt;/li&gt;&lt;li&gt;De vez en cuando falla y marca paquetes como que los tengo editados, pero no muestra ningún fichero editado. Veo también que se "corrompe" el fichero Root de algunos directorios CVS, de forma que queda inutilizable y no me queda más remedio que repararlo a mano.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;En fin, Eclipse me parece maravilloso en muchos aspectos, como la cantidad de plug-ins gratuitos que tiene, muchos más que netbeans. También me parece maravilloso su forma de hacer código y las opciones de refactoring. Pero desde luego, con cvs es mejor no meterse si no quieres perder la ilusión por este IDE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-116051356756352742?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/116051356756352742/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=116051356756352742' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116051356756352742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/116051356756352742'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/eclipse-y-cvs.html' title='Eclipse y CVS'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115998359973253562</id><published>2006-10-04T19:33:00.000+02:00</published><updated>2006-10-04T20:13:56.293+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Cruise Control</title><content type='html'>Bueno, ya he estado jugando más y tengo más claro lo de Cruise Control.&lt;br /&gt;&lt;br /&gt;Una vez &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Instalaci%C3%B3n_de_Cruise_Control_en_Windows"&gt;instalado y configurado Cruise Control&lt;/a&gt;, tiene asignada un area de trabajo con los fuentes de los proyectos. Normalmente está dormido y espera cierto tiempo (el que le digamos en la configuración) para despertar. Cuando despierta, mira los proyectos (a través de CVS o el sistema de control de versiones que usemos) para ver si alguien ha cambiado algún fichero fuente. Si ve que ha habido cambios, puede o no traerse los nuevos fuentes (según le indiquemos en la configuración) y llama al script de compilado del proyecto. Se lleva bien con maven y con ant, por lo que nos vale perfectamente con el pom.xml (de maven) o el build.xml (de ant).&lt;br /&gt;&lt;br /&gt;Si la compilación es correcta, en http://localhost:8080 se puede ver que todo ha ido bien. Si falla, se ve el fallo en el mismo sitio y además puede incluso enviar un correo a la persona que indiquemos.&lt;br /&gt;&lt;br /&gt;Es curioso, pero en esa página de localhost se ve si ha ido bien o no la compilación y los fuentes que se han tocado y provocado la compilación.&lt;br /&gt;&lt;br /&gt;En fin, que lo tengo arrancado y en marcha con un par de proyectos y parece que funciona bien. En cuanto alguien mete algo en CVS que no compila, la herramienta se "chiva" al jefe de proyecto ;-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115998359973253562?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/chuwiki/index.php?title=Categor%C3%ADa:CruiseControl' title='Cruise Control'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115998359973253562/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115998359973253562' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115998359973253562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115998359973253562'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/cruise-control_04.html' title='Cruise Control'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115985985816769958</id><published>2006-10-03T09:07:00.000+02:00</published><updated>2006-10-03T09:17:38.193+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Cruise Control</title><content type='html'>Siguiendo, en el trabajo, con la manía de probar nuevas herramientas que se supone que nos pueden ayudar, ayer me bajé e instalé &lt;a href="http://cruisecontrol.sourceforge.net/"&gt;Cruise Control&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Es una herramienta, gratis por supesto para que se la pueda permitir mi cutre-empresa, que supuestamente compila los proyectos desde cero todos los días (o cada cierto tiempo que le indiquemos). Si el proyecto tiene test de JUnit o similar, también los ejecuta. Si algo falla, se puede configurar para que envíe un correo a la gente implicada, responsables del proyecto o lo que sea.&lt;br /&gt;&lt;br /&gt;La instalación para windows es fácil, simplemente se ejecuta el instalable y ya está. El tema de la configuración me ha parecido más complejo.&lt;br /&gt;&lt;br /&gt;En primer lugar, los resultados del compilado parece que se pueden ver en formato web con jsp. Eso parece indicar que es necesario instalar un Tomcat o similar, pero no. Cruise Control viene con una cosa (creo que se llama Jetty) que hace las veces.&lt;br /&gt;&lt;br /&gt;La documentación que da parece que está un poco obsoleta para la versión más moderna. En los ficheros de configuración de ejemplo que copie, tuve que descomentar algunas lineas que venían comentadas y comentar (eliminar) otras que estaban sin comentar. En fin, que a base de probar y de intuición "femenina" conseguí, en unos minutos que me compilara un proyecto y después de varias horas, ver los resultados en un navegador.&lt;br /&gt;&lt;br /&gt;Para que Cruise Control pueda compilar el proyecto, es necesario que haya un build.xml de ant o un pom.xml de maven que sea capaz de compilar el proyecto, puesto que Cruise Control lo unico que hace es llamar a uno de esos y recoger los resultados. Cruise Control también es capaz de detectar si ha cambiado algún fuente en cvs de forma que hace o no la compilación según lo considera necesario.&lt;br /&gt;&lt;br /&gt;Me queda configurar lo de que envíe correos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115985985816769958?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://cruisecontrol.sourceforge.net/' title='Cruise Control'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115985985816769958/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115985985816769958' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115985985816769958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115985985816769958'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/10/cruise-control.html' title='Cruise Control'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115882266309772551</id><published>2006-09-21T08:59:00.000+02:00</published><updated>2006-09-21T09:14:06.063+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Nuevamente Mylar</title><content type='html'>Esto es algo que me ha comentado un compañero de trabajo, pero que no he probado.&lt;br /&gt;&lt;br /&gt;En un post anterior comenté sobre &lt;a href="http://chuidiang.blogspot.com/2006/09/mylar.html"&gt;Mylar&lt;/a&gt;, un plug-in de eclipse que hace de programador de tareas y que permite recoger bugs desde &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Instalaci%C3%B3n_de_Bugzilla_en_windows"&gt;bugzilla&lt;/a&gt; o similar.&lt;br /&gt;&lt;br /&gt;Un compañero me ha comentado una nueva característica que parece muy útil de Mylar. Si un programador de un proyecto resuelve una incidencia con eclipse y mylar, cogiéndola de bugzilla, cuando termina puede marcarla como terminada desde el mismo eclipse-mylar. Mylar automáticamente añade un adjunto (attachment) propio a la incidencia. Ese adjunto no es más que un fichero propio de Mylar en el que se indican, de alguna forma, qué ficheros se han tocado para resolver esa incidencia y que son los que en eclipse se ven si filtramos con Mylar (como comenté en el post anterior).&lt;br /&gt;&lt;br /&gt;Si ahora ese compañero no está (ha encontrado un trabajo mejor en otro sitio, que suele ser lo habitual) y se reabre la incidencia (no había terminado de arreglarla correctamente, que también suele ser lo habitual), lo normal es que le caiga a otro pringado que todavía no ha encontrado trabajo en otro sitio.&lt;br /&gt;&lt;br /&gt;Con eclipse-mylar es muy fácil. El nuevo pringado abre eclipse, se conecta a bugzilla, se trae la incidencia y ¡¡maravilla!!, eclipse-mylar importa el fichero adjunto y le filtra automáticamente los ficheros java mostrándole sólo aquellos que se tocaron para resolver la incidencia. Este nuevo pringado no debe perder un par de horas rebuscando entre los tres mil ficheros java del proyecto grande cuáles demonios son los que tienen que ver con el fallo.&lt;br /&gt;&lt;br /&gt;Todavía no me he instalado Mylar. ¿Por qué?. El problema que tengo es que como instalo y desinstalo miles de plug-ins para probar en eclipse, ahora intento instalar mylar me da un error de eclipse y no se instala. Cualquier día tendré que reinstalar eclipse desde cero y poner el mylar este, que parece una pequeña maravilla para proyectos grandes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115882266309772551?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eclipse.org/mylar/' title='Nuevamente Mylar'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115882266309772551/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115882266309772551' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115882266309772551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115882266309772551'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/nuevamente-mylar.html' title='Nuevamente Mylar'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115848672172830574</id><published>2006-09-17T11:49:00.000+02:00</published><updated>2006-09-17T11:52:01.740+02:00</updated><title type='text'>Historieta en el Criptonomicón</title><content type='html'>Estoy leyendo la novela del criptonomicón (novela gorda, partida en tres libros). Hay una pequeña historia que me ha llamado la atención y por eso la escribo aquí.&lt;br /&gt;&lt;br /&gt; En la novela el protagonista tiene en su portatil un texto cifrado por los Japoneses (nipos) en la segunda guerra mundial. Ese texto ha estado oculto y nadie lo ha descifrado nunca. En el texto supuestamente está la localización de un depósito de oro que los japonenes tenían escondido durante la guerra.&lt;br /&gt;&lt;br /&gt; Los "malos" de la novela consiguen por malas artes meter al protagonista de la novela junto con su portatil en una carcel de Filipinas y consiguen hacerlo de tal manera que pueden ver la pantalla de su portatil, pero sólo la pantalla. Su intención es mantenerlo en la carcel hasta que descifre el código y ver el texto en claro con la ubicación del oro japones.&lt;br /&gt;&lt;br /&gt; El protagonista, que para eso es el protagonista y es muy listo, lo sabe, así que se propone descifrar el código, pero sin mostrarlo por pantalla y a su vez presentar un texto falso. Ahí viene lo interesante. ¿Como ver el código descifrado sin mostrarlo por pantalla? ¿Cómo escribir un texto falso sin que se vea en pantalla?&lt;br /&gt;&lt;br /&gt; Para la primera solución, nuestro protagonista aprovechó que sabía morse. Descifró el código con un programa que se hizo, de forma que lo volcara a un fichero, sin visualizarlo en pantalla. Con un segundo programa y usando la librería XLEDS, envió el fichero ... ¡a uno de los leds del teclado!, de forma que parpadeando en morse, le mostraba el contenido del fichero.&lt;br /&gt;&lt;br /&gt; En cuanto a generar el fichero falso para mostrar en pantalla, hizo un programa similar, pero con la barra de espacio. Luego se dedicó a ver ficheros largos con el comando "more" de unix. Pulsando la barra espaciadora rítmicamente, aparentemente estaba viend el fichero, pero en realidad estaba escribiendo en morse un fichero falso.&lt;br /&gt;&lt;br /&gt; No deja de ser una novela, pero desde luego la idea es original.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115848672172830574?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115848672172830574/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115848672172830574' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115848672172830574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115848672172830574'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/historieta-en-el-criptonomicn.html' title='Historieta en el Criptonomicón'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115839535102990976</id><published>2006-09-16T10:21:00.000+02:00</published><updated>2006-09-16T10:29:11.043+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compras'/><title type='text'>Monitor TFT</title><content type='html'>Acabo de comprarme un monitor TFT de 19" y marca "ni-su".&lt;br /&gt;&lt;br /&gt;Lo cogí en el &lt;a href="http://www.beep.es/"&gt;beep&lt;/a&gt; de debajo de casa, en una oferta baratita (el más barato que he encontrado de 19"). La marca es &lt;a href="http://www.hannsg.com/eu/en/"&gt;hannsg&lt;/a&gt; y el monitor es HC194DP.&lt;br /&gt;&lt;br /&gt;En principio estoy contento. No soy jugador empedernido del Quake ni un fan de ver películas divx. Soy más bien programador de ver pantallas de texto todo el rato, así que el monitor se comporta bastante bien. No sé que tal irán los refrescos con juegos de acción y películas de la guerra de las galaxias.&lt;br /&gt;&lt;br /&gt;Tiene un par de altavoces, que no son gran cosa ni de gran calidad. El ajuste de volumen es algo incómodo y no puedo bajarlo lo suficiente. El nivel más bajo es demasiadao alto para trabajar a altas horas de la madrugada con mujer y niños durmiendo en habitaciones cercanas. Aunque bien pensado, puedo jugar con el volumen de windows, ese altavocito que sale abajo a la derecha.&lt;br /&gt;&lt;br /&gt;También es el primer monitor TFT que tengo, así que no tengo nada con qué comparar. Antes en casa tenía uno de tubo de 14" o 15", así que 19" ahora me parecen una maravilla. En el trabajo tengo también uno de tubo de 17" (creo). Ya sabes, trabajo en una empresa de tecnología punta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115839535102990976?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115839535102990976/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115839535102990976' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115839535102990976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115839535102990976'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/monitor-tft.html' title='Monitor TFT'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115830776256166774</id><published>2006-09-15T09:54:00.000+02:00</published><updated>2006-09-17T11:55:08.880+02:00</updated><title type='text'>Joel on software</title><content type='html'>Ya lo mencioné en un post anterior, pero llevo varios días leyendo artículos de él y casi todos son geniales.&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://spanish.joelonsoftware.com/"&gt;Joel on software&lt;/a&gt; hay pequeños artículos en español (hay muchos más en inglés) sobre metodologías y formas de organizar y trabajar en los proyectos de software.&lt;br /&gt;&lt;br /&gt;En ellos se cuentan verdades como puños, se pone a parir a las metodologías serias, a los consultores, a la política de la mayoría de las empresas y a muchas de las cosas que se dan por supuestas. Básicamente defiende que para hacer buen software lo que necesitas son buenos programadores y un mínimo de organización/planificación.&lt;br /&gt;&lt;br /&gt;Las metodologías tradicionales no son más que un montón de reglas que tratan de hacer que los programadores mediocres llegen a un nivel mínimo, pero que atan y hacen sentirse incómodos a los buenos programadores.&lt;br /&gt;&lt;br /&gt;Aunque en tu proyecto no haya algunas buenas costumbres, puedes implantarlas tú mismo, aunque no seas jefe, símplmente dedicando un poco de tiempo cada día para irlo haciendo sólo para tí en tu pc. Poco a poco, cuando la gente vaya viendo la utilidad de ello, se irán metiendo, aunque no hay un "jefe" que diga que hay que hacerlo así. &lt;br /&gt;&lt;br /&gt;Esto es una de las cosas que he comprobado personalmente. En muchas ocasiones he hecho cosas para mí o como favor personal a un compañero, que me resultaban útiles a mí o a mi compañero, y he visto cómo se han "divulgado" incluso entre los "jefes" y lo han convertido en algo "importante" e "imprescindible". Recuerdo en concreto una interface gráfica para un equipo, que empecé a hacer por mi cuenta, como favor a un compañero. Cuando mi jefe me vio haciéndola, me prohibió seguir con ella, había otras cosas más importantes que hacer a las que dedicar mi tiempo. De todas formas, seguí haciéndola y cuando estuvo terminada, acabó en una feria en Paris para mostrar el equipo a los visitantes. Es más vistoso enseñar en una pantalla el equipo funcionando que enseñar el equipo apagado sobre una vitrina.&lt;br /&gt;&lt;br /&gt;Volviendo a Joel on software, en la página hay montones de artículos divertidos del estilo comentado y prácticamente ninguno de ellos tiene desperdicio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115830776256166774?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://spanish.joelonsoftware.com/' title='Joel on software'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115830776256166774/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115830776256166774' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115830776256166774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115830776256166774'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/joel-on-software.html' title='Joel on software'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115830686342603588</id><published>2006-09-15T09:25:00.000+02:00</published><updated>2006-09-15T09:54:23.570+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Primeros días con Bugzilla</title><content type='html'>Como comenté en un post anterior, acabo de instalar Bugzilla en el trabajo, en mi propio PC y para uso general.&lt;br /&gt;&lt;br /&gt;La herramienta en sí está muy bien. Es cómoda de usar, no requiere demasiado aprendizaje y funciona muy bien. Echo de menos alguna cosilla, como la posibilidad de poner más campos para exportar en el formato CSV (en concreto la descripción larga del bug). También el poder restringir permisos a los usuarios, como el de abrir o cerrar incidencias, etc. En principio cualquier usuario que puede modificar incidencias puede modificar CUALQUIER campo de la incidencia. Sería quizás interesante que sólo pudieran cerrar incidencias o cambirar prioridades los responsables de las pruebas. De todas formas, nada grave, siempre y cuando se establezcan unas normas generales y la gente del proyecto sea más o menos responsable. Y lo son, teniendo en cuenta que todo lo que hagan queda registrado con su usuario.&lt;br /&gt;&lt;br /&gt;De todas formas, quizá todo estos temas de permisos sean posibles y simplemente todavía no he encontrado dónde. Hay cosas, por ejemplo, como que cualquiera puede dar de alta un bug, pero queda en estado "sin confirmar", hasta que un usuario con permiso de confirmación lo confirme.&lt;br /&gt;&lt;br /&gt;Me ha llamado la atención la buena acogida que ha tenido entre la gente del trabajo. Se lo he enseñado primero a los más "allegados", pero rápidamente se ha corrido la voz e incluso se han registrado como usuarios algunos "jefes". Por supuesto, ellos le han encontrado otras utilidades a la herramienta. La más pérfida es ver si trabajamos o no y vamos resolviendo bugs. Encima, como todo queda registrado con quién hace qué, pueden incluso saber quién resuelve más y quién menos.&lt;br /&gt;&lt;br /&gt;La otra utilidad que le han visto los jefes es el de enseñársela a los clientes. Siempre han pedido que tengamos una herramienta de gestión de bugs interna. Siempre hemos dicho que la teníamos, pero ahora es la primera vez que podemos enseñar algo parecido. Creo que incluso lo quieren enseñar en las auditorías. También para preparar informes rápidamente que entregar a los clientes sobre el estado de nuestras incidencias internas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115830686342603588?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115830686342603588/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115830686342603588' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115830686342603588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115830686342603588'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/primeros-das-con-bugzilla.html' title='Primeros días con Bugzilla'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115806550025373516</id><published>2006-09-12T14:51:00.000+02:00</published><updated>2006-09-12T14:51:40.266+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Otros lenguajes que compilan a bytecodes</title><content type='html'>En &lt;a href="http://javahispano.org/news.item.action?id=927997864"&gt;lenguajes que compilan a bytecode&lt;/a&gt; hay una noticia que me ha llamado la atención. Por lo visto hay más lenguajes de programación, aparte de java, que compilan y generan bytecodes de java, de forma que se pueden ejecutar en una máquina virtual java. No deja de ser una opción interesante quizás para ciertas tareas, que resulten más fáciles de desarrollar en uno de estos lenguajes que en java.&lt;br /&gt;&lt;br /&gt;¿Se podrán mezclar los bytecodes de un lenguaje con los de otro?. Creo que sería una prueba interesante de hacer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115806550025373516?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://javahispano.org/news.item.action?id=927997864' title='Otros lenguajes que compilan a bytecodes'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115806550025373516/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115806550025373516' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115806550025373516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115806550025373516'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/otros-lenguajes-que-compilan-bytecodes.html' title='Otros lenguajes que compilan a bytecodes'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115746152947467197</id><published>2006-09-05T14:58:00.000+02:00</published><updated>2006-09-05T15:05:29.476+02:00</updated><title type='text'>Agregar meneame y del.icio.us a blog en blogger</title><content type='html'>Pues nada, en  &lt;a href="http://www.cristalab.com/tips/27832/agregar-meneame-y-delicious-a-blog-en-blogger"&gt;Agregar meneame y del.icio.us a blog en blogger&lt;/a&gt; tienes cómo hacerlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115746152947467197?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cristalab.com/tips/27832/agregar-meneame-y-delicious-a-blog-en-blogger' title='Agregar meneame y del.icio.us a blog en blogger'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115746152947467197/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115746152947467197' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115746152947467197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115746152947467197'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/agregar-meneame-y-delicious-blog-en.html' title='Agregar meneame y del.icio.us a blog en blogger'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115728255971716675</id><published>2006-09-03T12:53:00.000+02:00</published><updated>2006-09-03T13:22:40.260+02:00</updated><title type='text'>Meneando noticias</title><content type='html'>Me he dedicado un poco a navegar por internet, intentando enterarme de algunas cosas sobre los blogs, feeds y demás que no acabo de entender bien como van. Aquí van algunas pequeñas explicaciones de lo que creo que he entendido, que seguramente será inexacto y equívoco, y algunos enlaces.&lt;br /&gt;&lt;br /&gt;Resulta que los diarios (blogs), wikis, páginas de periódicos y muchas otras páginas tienen una cosa que llaman "feed". Esa cosa es una especie de página en un formato simple con las últimas noticias que se publican en ese blog, wiki y tal. El que hace el blog no tiene que preocuparse de ello, se hace automáticamente.&lt;br /&gt;&lt;br /&gt;Este, por ejemplo, es el &lt;a href="http://www.chuidiang.blogspot.com/atom.xml"&gt;feed de este blog&lt;/a&gt;. Si lo estás viendo con firefox, pincha en "ver", "estilo de página", "sin estilo" para verlo más mejor. El de este blog es un fichero "atom.xml" (el que ofrece blogger). También hay otros con "rss", que es más o menos lo mismo, un fichero resumen, pero de otra manera.&lt;br /&gt;&lt;br /&gt;Existen por otro lado montones de herramientas capaces de anotar estos feeds, de forma que un internauta pueda ver rápidamente los últimos añadidos a sus blogs favoritos. Por ejemplo, el mismo navegador firefox, se puede añadir como "favorito vivo" un "rss" de estos, de forma que en tus favoritos aparecerán automáticamente las, por ejemplo, 20 últimas publicaciones en ese blog. En &lt;a href="http://www.coseju.com/rss.php?PHPSESSID=cf6fdcce689002c950e1d7ace36f6cbf"&gt;http://www.coseju.com/rss.php?PHPSESSID=cf6fdcce689002c950e1d7ace36f6cbf&lt;/a&gt; tienes cómo hacerlo.&lt;br /&gt;&lt;br /&gt;En el &lt;a href="http://feeds.feedburner.com/Programacion"&gt;rss de este diario&lt;/a&gt;, tienes arriba a la derecha un "suscribe now". Ahí aparecen un montón de herramientas capaces de suscribirte a este diario. Debes elegir la que tengas. Por ejemplo, puedes, si tienes cuenta de gmail, ponerlo en tu página de búsqueda de google personalizada.&lt;br /&gt;&lt;br /&gt;Hay sitios, como &lt;a href="http://www.feedburner.com/fb/a/home"&gt;feedburner&lt;/a&gt;, que ofrecen a los que publican blogs la posibilidad de poner un icono &lt;img src="http://www.feedburner.com/fb/i/icn/feed-icon-16x16.gif" /&gt; en su sitio indicando que tienen "feed" y de alguna manera ellos lo ofrecen. La gente, pinchando el icono puede "suscribirse" a estas noticias con alguna de las herramientas comentadas antes, como el navegador firefox. La persona que publica el blog puede enterarse, a través de feedburner, cuantos navegantes hay suscritos a su "feed". En fin, algo complejo que todavía no acabo de entender bien y tengo que ver mejor como funciona esto.&lt;br /&gt;&lt;br /&gt;Finalmente, supongo que con un fin parecido pero de otra manera, me he tropezado con &lt;a href="http://meneame.net/"&gt;meneame&lt;/a&gt;, un sitio en el que la gente manda noticias que se encuentra en los blogs y demás. Los visitantes de meneame pueden ver las noticias que han enviado los demás y darles un voto ("menearla") si les gusta. Meneame muestra primero las noticias más votadas, de forma que de alguna manera tienes una página de noticias "favoritas" de la gente. Vaya, otra cosa a investigar.&lt;br /&gt;&lt;br /&gt;Supongo que la idea final de todo esto es que tú no tengas que revisar todos los blogs favoritos, sino tener las últimas noticias de todos ellos en un único sitio, el navegador firefox, la página de búsqueda de google u otras páginas (como &lt;a href="http://www.netvibes.com/"&gt;netvibes&lt;/a&gt;), de forma que simplemente entrando ahí, ves las últimas publicaciones de todos tus sitios favoritos.&lt;br /&gt;&lt;br /&gt;La verdad es que todas estas cosas avanzan muy rápido y me desbordan, sobre todo si tu actividad principal es otra, java en mi caso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115728255971716675?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115728255971716675/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115728255971716675' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115728255971716675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115728255971716675'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/meneando-noticias.html' title='Meneando noticias'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115710036551396349</id><published>2006-09-01T10:33:00.000+02:00</published><updated>2006-09-01T10:46:05.566+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Mylar</title><content type='html'>Un compañero de trabajo, aprovechando que he puesto bugzilla, a hecho unas pruebas con &lt;a href="http://www.eclipse.org/mylar/"&gt;Mylar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mylar es un plug-in para eclipse que permite gestionar nuestras tareas, poniendo tiempos de inicio, de fin, avisos, etc, etc. Vaya, un planificador de tareas integrado en eclipse.&lt;br /&gt;&lt;br /&gt;Una vez creada una tarea, cuando trabajamos en ella, hay dos cosas interesantes que hace Mylar. Por un lado lleva el tiempo que estamos trabajando en esta tarea. Por otra, y lo que es realmente interesante, es que podemos "filtrar" las clases que vemos en nuestro arbol de clases de forma que sólo se ven las que estamos usando. Esto es muy interesante en proyectos grandes. Cuando dentro del proyecto grande, de miles de clases, trabajamos en un tema concreto, sólo veremos un grupo reducido de clases, las que nos han ido haciendo falta. Se facilita un montón el tema de navegar entre clases.&lt;br /&gt;&lt;br /&gt;Mylar se integra además con bugzilla, trac y jira. Cuando creamos una nueva tarea, podemos poner la url de un bug que esté registrado por ejemplo, en bugzilla. Al hacerlo, el nombre de la tarea se pondrá automáticamente como el nombre del bug y además, permite abrir en una pestaña de eclipse un navegador en el que veremos el bug de bugzilla y podremos modificarlo.&lt;br /&gt;&lt;br /&gt;La parte de bugzilla es curiosa, pero no sé si merece la pena abrir una tarea por cada bug, sobre todo en proyectos grandes en los que hay miles y miles de bugs. Quizás sea interesante si la empresa (o uno personalmente) lleva una estadística del tiempo que tarda en resolver cada bug. Al crear una tarea por bug, Mylar lleva el tiempo que trabajas en esa tarea, así que cuando terminas de arreglar el bug, tienes el tiempo que has tardado en resolverlo.&lt;br /&gt;&lt;br /&gt;De todas formas, sólo por el filtro de clases en proyectos grandes, Mylar merece la pena.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115710036551396349?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eclipse.org/mylar/' title='Mylar'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115710036551396349/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115710036551396349' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115710036551396349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115710036551396349'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/09/mylar.html' title='Mylar'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115703354205704606</id><published>2006-08-31T16:00:00.000+02:00</published><updated>2006-08-31T16:12:22.176+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Bugzilla en los correos y windows</title><content type='html'>Al final he conseguido que bugzilla envie correos. Ha sido todo una historia.&lt;br /&gt;&lt;br /&gt;El primer problema es que el servidor de smtp (el que envía los correos) es el de la empresa, por lo que para enviar correos necesito identificarme con mi usuario y password.&lt;br /&gt;&lt;br /&gt;En bugzilla no encontré ningún sitio que permitiera configurar el usuario y password para el servidor smtp. Sí permitía poner el nombre/ip del servidor pero no usuario/password, al menos, yo no lo he encontrado.&lt;br /&gt;&lt;br /&gt;Al final me decidí a, en vez de usar directamente smtp, configurar bugzilla para que use la utilidad sendmail de unix (se hace directamente desde el navegador). Como estoy en windows, tuve que buscar un sendmail para windows. ¡Sorpresa!. Hay un &lt;a href="http://www.glob.com.au/sendmail/"&gt;sendmail para windows con instalador para bugzilla&lt;/a&gt;. Si no queremos tocar los ficheros de bugzilla, hay que instalar sendmail en C:\usr\lib. Lo instalé, lo configuré y seguía sin funcionar.&lt;br /&gt;&lt;br /&gt;Afortunadamente, sendmail tiene una salida de log para debug (hay que descomentar una línea en el fichero de configuración de sendmail.ini para que ese log salga). En ese log de debug veo toda la mensajería entre sendmail y mi servidor de smtp. En ese log veo que el servidor de smtp rechaza los envios de correo porque el campo "from" no coincide con mi dirección de correo real. En realidad esto se podría hacer, pueden ser distintas, pero el servidor de smtp de mi empresa no nos deja "inventarnos" otra personalidad para el "from".&lt;br /&gt;&lt;br /&gt;El campo "from" de bugzilla pone "bugzilla-admin-daemon" o "bugzilla-admin" según de dónde se envíe el correo. Así que tanto buscando en los ficheros de bugzilla como desde el navegador en la página de configuración de correo, cambio todos estos "bugzilla-admin*" por mi dirección real de correo. ¡Voila!, ¡ya funciona!. La única pega es que voy a ser yo el que envíe todos los correos de bugzilla a todo el mundo.&lt;br /&gt;&lt;br /&gt;Bueno, ahora a ver si convenzo a la gente para que lo use ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115703354205704606?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115703354205704606/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115703354205704606' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115703354205704606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115703354205704606'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/08/bugzilla-en-los-correos-y-windows.html' title='Bugzilla en los correos y windows'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115695157521676438</id><published>2006-08-30T16:33:00.000+02:00</published><updated>2006-08-30T17:26:15.303+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><title type='text'>Bugzilla</title><content type='html'>&lt;a href="http://www.bugzilla.org/"&gt;Bugzilla &lt;/a&gt;es  un conjunto de scripts cgi que con apache y una base de datos nos permite llevar desde el navegador una base de datos de errores/fallos/incidencias/"bugs" de nuestro proyecto.&lt;br /&gt;&lt;br /&gt;En otras palabras, una vez instalado y configurado, cuando pruebo el programa en el que estoy trabajando y encuentro un fallo, abro el navegador, me conecto a la página donde tengo instalado bugzilla y escribo la incidencia.&lt;br /&gt;&lt;br /&gt;Esto es útil para equipos de trabajo. Cada uno de los integrantes se da de alta en donde hemos instaldo nuestro bugzilla y da su correo electrónico. Cada vez que alguno encuentra un fallo en el programa, lo pone en bugzilla y da la dirección de correo del que se supone responsable del fallo. Bugzilla envía un correo con la incidencia a la persona indicada. Esta, cuando la mira, corrige o decide que no es de él, lo anota en bugzilla y correo al canto a la/s personas indicadas.&lt;br /&gt;&lt;br /&gt;De esta forma, queda una base de datos con todos los fallos, la historia de esos fallos, si se han corregido o no,  etc. La gente del navegador mozilla usa bugzilla y puedes verlo en marcha en &lt;a href="https://bugzilla.mozilla.org/"&gt;https://bugzilla.mozilla.org/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bueno, me he decidido a probarlo en el trabajo, así cuando los "jefes" prueben los programas, en vez de anotar los fallos en un papel guarro (no de marca "guarro", sino "papel cutre arrancado de libreta de espiral que se me ha caido al suelo y he pisado por el camino"), podrán escribirlos sobre la marcha con el navegador, nos enteraremos automáticamente con un correo y cuando los arreglemos, les llegará el correo correspondiente.&lt;br /&gt;&lt;br /&gt;He &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Instalaci%C3%B3n_de_Bugzilla_en_windows"&gt;instalado bugzilla en windows&lt;/a&gt;, y todavía estoy peleandome un poco con ello. En el trabajo tenemos proxy y un servidor smtp que requiere contraseña. Además, estoy dentro de una red local. El caso es que lo he puesto todo, pero todavía no consigo que bugzilla envíe los correos. Si es que todo esto está pensado para funcionar en unix...&lt;br /&gt;&lt;br /&gt;La instalación no es una instalación tonta, pero siguiendo &lt;a href="http://www.bugzilla.org/docs/win32install.html"&gt;las instrucciones&lt;/a&gt; y teniendo un poco de idea de qué va el tema, resulta más o menos asequible. Eso sí, hay que &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Instalaci%C3%B3n_de_ActivePerl"&gt;instalar perl para windows&lt;/a&gt;, una serie de módulos para perl que necesita bugzilla, el servidor apache y mysql si no están ya instalados, tocar la configuración de apache, etc, etc. Bueno, que me he tirado un par de horas consultando internet y demás para tenerlo más o menos en marcha.&lt;br /&gt;&lt;br /&gt;Igual que bugzilla, hay otros.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.atlassian.com/software/jira/"&gt;JIRA&lt;/a&gt;, que es de pago.&lt;/li&gt;&lt;li&gt;&lt;a href="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt;, que es gratis, pero me da la impresión de que está todavía un poco en pañales. Ellos mismos dicen que no ha sido probado suficientemente con MySQL y andan todavía por la versión 0.x&lt;/li&gt;&lt;/ul&gt;Otra cosa interesante de estos es que creo (no lo he leido todavía con atención) que se integran con CVS o subversion, usan diffs y demás, por lo que me da la impresión de que son capaces de marcar las versiones de los fuentes en los que está el bug y en la que se corrige o, al menos, tener en cuenta de alguna manera los fuentes del proyecto.&lt;br /&gt;&lt;br /&gt;Finalmente, está &lt;a href="http://www.eclipse.org/mylar/"&gt;Mylar&lt;/a&gt;, que tampoco he probado. Es un plug-in para eclipse que permite organizarte tareas. En cada tarea eclipse sólo muestra aquellos ficheros que son intersantes para la tarea, de forma que en un proyecto grande de miles de ficheros no se ven todos a la vez, sino sólo por tareas de pocos en pocos cada vez. Es decir, si para la &lt;span style="font-style: italic;"&gt;tarea1 &lt;/span&gt;necesito &lt;span style="font-style: italic;"&gt;fichero1.java&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;fichero2.java&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;fichero3.java&lt;/span&gt;, cuando seleccione la tarea1, eclipse sólo me mostrará esos ficheros y ocultará los demás. Lo que más me ha llamado la atención es que dice que es capaz de coger tareas de bugzilla, jira o trac. ¿Quiere esto decir que cojo un error/bug de bugzilla y lo puedo poner como tarea de mylar en eclipse?&lt;br /&gt;&lt;br /&gt;Bueno, el caso es que estoy con todo esto. Seguiré investigando...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115695157521676438?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.bugzilla.org/' title='Bugzilla'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115695157521676438/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115695157521676438' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115695157521676438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115695157521676438'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/08/bugzilla.html' title='Bugzilla'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115686003063169605</id><published>2006-08-29T15:58:00.000+02:00</published><updated>2006-08-29T16:00:30.646+02:00</updated><title type='text'>Joel on Software</title><content type='html'>En &lt;a href="http://spanish.joelonsoftware.com/index.html"&gt;Joel on Software&lt;/a&gt; hay un montón de artículos es español sobre temas de software.  Son sobre cosas que se hacen bien o mal en las empresas, a la hora de hacer software, qué tener en cuenta para diseñar buenas interfaces de usuario, etc.&lt;br /&gt;&lt;br /&gt;He leido varios de ellos y la verdad es que no tienen desperdicio. Dicen muchas verdades como puños y ponen en claro todas esas cosas que los desarrolladores sabemos que debemos hacer pero que no solemos hacer por pereza o por no saber hacer bien.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115686003063169605?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://spanish.joelonsoftware.com/index.html' title='Joel on Software'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115686003063169605/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115686003063169605' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115686003063169605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115686003063169605'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/08/joel-on-software.html' title='Joel on Software'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115675289203696546</id><published>2006-08-28T10:06:00.000+02:00</published><updated>2006-08-28T10:14:52.076+02:00</updated><title type='text'>Día Aciago</title><content type='html'>De vuelta al trabajo, después del mes de vacaciones. Un asquito.&lt;br /&gt;&lt;br /&gt;Bueno, ahí van cuatro tonterías que he encontrado/me han encontrado y que en algún momento habrá que mirar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java y Matlab: &lt;a href="http://www.held-mueller.de/JMatLink/"&gt;http://www.held-mueller.de/JMatLink/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Los de google tiene para dejar tus propios proyectos de software relativos a google: &lt;a href="http://code.google.com/"&gt;http://code.google.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Una pequeña herramienta de google para hacer modelado en 3d, gratuita por supuesto: &lt;a href="http://sketchup.google.com/"&gt;http://sketchup.google.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Para llevar tu propio calendario de citas/eventos/tareas en web, cortesía de google: &lt;a href="http://www.google.com/googlecalendar/overview.html"&gt;http://www.google.com/googlecalendar/overview.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115675289203696546?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115675289203696546/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115675289203696546' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115675289203696546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115675289203696546'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/08/da-aciago.html' title='Día Aciago'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115564394881074406</id><published>2006-08-15T14:09:00.000+02:00</published><updated>2006-08-15T14:13:45.310+02:00</updated><title type='text'>Acabo de encontrarme</title><content type='html'>Acabo de encontrarme en otra página. Resulta que en &lt;a href="http://www.granainfo.com/index.php"&gt;granainfo&lt;/a&gt;, en la parte de &lt;a href="http://www.granainfo.com/programacion.php"&gt;programación&lt;/a&gt;, está básicamente copiado este blog, manteniendo enlaces a la fuente original. No veo enlaces o artículos de otro sitio...&lt;br /&gt;&lt;br /&gt;Bueno, me alegra comprobar que lo que escribo le parece lo suficiemente bien a alguien como para reproducirlo. Además, manteniendo un &lt;a href="http://www.chuidiang.blogspot.com"&gt;enlace al original&lt;/a&gt;, es más mejor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115564394881074406?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115564394881074406/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115564394881074406' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115564394881074406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115564394881074406'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/08/acabo-de-encontrarme.html' title='Acabo de encontrarme'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115408365680363006</id><published>2006-07-28T12:39:00.000+02:00</published><updated>2006-07-28T12:47:36.933+02:00</updated><title type='text'>Mozilla SeaMonkey</title><content type='html'>Jugando con internet acabo de descubrir &lt;a href="http://www.mozilla.org/projects/seamonkey/"&gt;mozilla seamonkey&lt;/a&gt;.  Miré a ver que era y ponía que es una especie de navegador, correo y editor de html todo junto.&lt;br /&gt;&lt;br /&gt;Lo he instalado y me ha decepcionado un poco. Es casi exactamente lo que antes era netscape, que venía con navegador, composer, etc. No quiero decir que el programa esté mal, sino simplemente que es lo mismo que el antiguo netscape, pero con otro nombre.&lt;br /&gt;&lt;br /&gt;Seguiré con el firefox y el thunderbird, que me gustaron bastante más nada más instalarlos.&lt;br /&gt;&lt;br /&gt;En cuanto a editor de html, tradicionalmente he utilizado el netscape composer. Sin embargo, hace poco, que empecé a meter algun java script ajeno, me empezó a hacer cosas raras. Y desde luego, no he conseguido que se trague una página php sin descuajeringarla, a pesar del que el 90% de la página es html. Por eso me he acabado cambiando a dreamweaber y de momento estoy contento con él. No uso todo lo que tiene, puesto que mis páginas son muy sencillitas, sólo html y algo mínimo de php en alguna ocasión, y algún javascript ajeno que inserto (contadores de estadísticas, google adsense, etc), unas pruebas con css, pero me hace bien lo que quiero que haga. Sobre todo no me descuajeringa una página cuando su extensión es php.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115408365680363006?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.mozilla.org/projects/seamonkey/' title='Mozilla SeaMonkey'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115408365680363006/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115408365680363006' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115408365680363006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115408365680363006'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/mozilla-seamonkey.html' title='Mozilla SeaMonkey'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115407225825922048</id><published>2006-07-28T09:27:00.000+02:00</published><updated>2006-07-28T09:37:38.316+02:00</updated><title type='text'>Crear .exe de java</title><content type='html'>Aunque la forma normal de hacer un programa java es &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Ficheros_jar"&gt;generar un fichero jar&lt;/a&gt;, su ejecución puede ser compleja para un usuario que no conozca java. Por ello, entregar una aplicación java a un usuario normalito de ordenador suele requerir entregar también un .bat de arranque, que revise si existe máquina virtual, que ponga cosas como el classpath, etc, etc.&lt;br /&gt;&lt;br /&gt;Hay utilidades que permiten pasar nuestro .jar a un fichero .exe normal de windows, de forma que a un usuario no programador le resulte más fácil el arranque.&lt;br /&gt;&lt;br /&gt;Algunas de estas utilidades, como &lt;a href="http://jsmooth.sourceforge.net/"&gt;JSmooth&lt;/a&gt;, simplemente crean un pequeño exe que arranca la aplicación, pero necesitan que la máquina virtual esté instalada.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gcc.gnu.org/java/"&gt;gcj&lt;/a&gt; sí crea un verdadero ejecutable, pero gcj está pensado para el entorno de gnu, por lo que para ejecutarlo en windows es necesario instalar previamente el &lt;a href="http://www.cygwin.com/"&gt;cygwin&lt;/a&gt;. gcj venga mejor posiblemente para usuarios de linux/unix.&lt;br /&gt;&lt;br /&gt;java2exe (ahora &lt;a href="http://www.download.com/Java2exe/3000-2417_4-10074601.html"&gt;JexePack&lt;/a&gt;) también permite generar .exe, pero es una aplicación de pago.&lt;br /&gt;&lt;br /&gt;Algunos IDE, como &lt;a href="http://www.borland.com/us/products/jbuilder/index.html"&gt;JBuilder&lt;/a&gt;, también permiten generar el exe.&lt;br /&gt;&lt;br /&gt;De todas formas, no he probado ninguno de ellos. De momento no tengo ninguna necesidad especial de generar .exe. Además, pienso que se pierde un poco la filosofía de java, que es que el "ejecutable" se pueda ejecutar en cualquier sistema operativo. Tampoco suelo hacer aplicaciones para usuarios no programadores.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115407225825922048?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115407225825922048/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115407225825922048' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115407225825922048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115407225825922048'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/crear-exe-de-java.html' title='Crear .exe de java'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115398729199743051</id><published>2006-07-27T09:56:00.000+02:00</published><updated>2006-07-27T10:01:32.016+02:00</updated><title type='text'>Cambiar el icono de la taza de café en java</title><content type='html'>La forma normal de cambiar el icono de la taza de café en java en una aplicación consiste en llamar al método &lt;span style="font-style: italic;"&gt;setIconImage()&lt;/span&gt; del &lt;span style="font-style: italic;"&gt;JFrame&lt;/span&gt; principal de la aplicación. Luego, el resto de &lt;span style="font-style: italic;"&gt;JDialog&lt;/span&gt; de la aplicación deben ser hijos, nietos o biznietos de este JFrame, heredando así su icono. Puedes ver más detalles de este &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=JFrame_y_JDialog"&gt;cambio de icono&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sin embargo, ayer un compañero de trabajo encontró  una forma más bruta de hacerlo, de forma que queda cambiado para todas las aplicaciones java de nuestro ordenador (salvo que ellas lo cambien de forma expresa dentro).&lt;br /&gt;&lt;br /&gt;Este método de fuerza bruta consiste en buscar dentro de nuestra instalación de java los ficheros &lt;span style="font-weight: bold;"&gt;rt.jar&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;awt.dll&lt;/span&gt;, que contienen dentro dicho icono de la taza de café y cambiarlo por otro. En &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Icono_de_la_taza_de_caf%C3%A9"&gt;Cambiar el icono de la taza de café&lt;/a&gt; están los detalles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115398729199743051?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115398729199743051/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115398729199743051' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115398729199743051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115398729199743051'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/cambiar-el-icono-de-la-taza-de-caf-en.html' title='Cambiar el icono de la taza de café en java'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115381214659292346</id><published>2006-07-25T09:10:00.000+02:00</published><updated>2006-07-25T09:22:26.606+02:00</updated><title type='text'>Dos programas opuestos</title><content type='html'>Aquí un par de programitas para java que pueden ser más o menos útiles y que sirven para lo contrario.&lt;br /&gt;&lt;br /&gt;El primero es un "descompilador" de java. El &lt;a href="http://members.fortunecity.com/neshkov/dj.html"&gt;DJ Java Decompiler&lt;/a&gt; es un programita que dándole los ficheros .class es capaz de sacarnos los fuentes .java. Tiene interface gráfica y es gratis.&lt;br /&gt;&lt;br /&gt;El otro programa, en realidad son varios, son los ofuscadores de código java. Precisamente para evitar que nuestros programas java puedan ser "descompilados", existen estos ofuscadores. Básicamente lo que hacen es cambiar los nombres de clases, métodos y variables por nombres crípticos. El programa .class puedes descompilarse igualmente, pero no es lo mismo intuir que el método &lt;span style="font-style: italic;"&gt;setNombre(String nombre)&lt;/span&gt; de la clase &lt;span style="font-style: italic;"&gt;Persona &lt;/span&gt;mete el nombre de la persona en la clase Persona, que intuir qué demonios hace &lt;span style="font-style: italic;"&gt;afaewser(String afew)&lt;/span&gt; de la clase &lt;span style="font-style: italic;"&gt;Xdañsiñwe&lt;/span&gt;. Supuestamente, además de ofuscar y ya puestos a tocar el jar, la mayoría de ellos llevan a cabo labores de optimización, tratando de reducir el jar lo máximo posible, eliminando código innecesario, variables no usadas, métodos no usados, etc. De hecho, la ofuscación de código es más bien un "efecto secundario" de este proceso. Para reducir el tamaño del jar, no hay nada como llamar a las clases, métodos y variables con nombres lo más cortos posibles. No he probado ninguno, pero por lo que he leido es lo que intuyo que hacen...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://proguard.sourceforge.net/"&gt;ProGuard&lt;/a&gt; es un ofuscador gratuito y en la misma página tienes un listado de &lt;a href="http://proguard.sourceforge.net/alternatives.html"&gt;otros ofuscadores de código&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115381214659292346?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115381214659292346/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115381214659292346' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115381214659292346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115381214659292346'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/dos-programas-opuestos.html' title='Dos programas opuestos'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115347943192316938</id><published>2006-07-21T12:57:00.000+02:00</published><updated>2006-07-21T12:57:12.023+02:00</updated><title type='text'>Método toString() de Element de org.w3c.dom</title><content type='html'>Me he tropezado con un pequeño problemilla que cuento aquí por si a alguien más le pasa lo mismo.&lt;br /&gt;&lt;br /&gt;Resulta que trabajando con la versión 1.4 de java, cuando tengo un Document correspondiente a un fichero xml guardado en memoria, haciendo toString() del Element raiz del Document, me devuelve un String con el contenido del fichero xml.&lt;br /&gt;&lt;br /&gt;Sin embargo, ¡sorpresa!, en la versión 1.5 de java este método toString() ya no devuelve el String el formato xml, sino que devuelve una cosa rara, cortita, que no vale.&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6181019"&gt;Bug ID: 6181019 REGRESSION: org.w3c.dom.Element.toString() no longer returns the xml document&lt;/a&gt;: "toString" está comentado este problema con más detalle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115347943192316938?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6181019' title='Método toString() de Element de org.w3c.dom'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115347943192316938/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115347943192316938' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115347943192316938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115347943192316938'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/mtodo-tostring-de-element-de-orgw3cdom.html' title='Método toString() de Element de org.w3c.dom'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115346563018965780</id><published>2006-07-21T08:53:00.000+02:00</published><updated>2006-07-21T09:07:10.203+02:00</updated><title type='text'>Contar líneas de código</title><content type='html'>Hay una cosa que descubrí hace ya bastante tiempo, pero que me llamó mucho la atención por su simplicidad, y es el cómo se pueden contar las líneas de código de un programa de una forma simple.&lt;br /&gt;&lt;br /&gt;En su momento, cuando me ví en la necesidad de contar las líneas de código que habíamos hecho en el trabajo, y de esto hace mucho y no había las herramientas que hay ahora o, al menos, no se encontraban de forma gratuita en la red, me puse a pensar en ello y buscar por internet.&lt;br /&gt;&lt;br /&gt;Lo de contar líneas tal cual (contar retornos de carro) me parecía poco fiable. Si alguien deja muchas líneas en blanco, no hace muchas líneas de código, pero se cuentan como tales. Los comentarios también contarían como líneas de código. Si alguien abre las llaves "{" en una nueva línea&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;public void funcion ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;hace más líneas de código que uno que lo pone todo seguido&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;public void funcion () {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Investigando por internet, encontré la forma muy aproximada y sencilla de hacerlo. ¡¡Basta con contar los punto y coma ";" del código!!&lt;br /&gt;&lt;br /&gt;Como cada línea de código acaba en punto y coma (En C, C++, java y otros muchos lenguajes) esto nos da una aproximación muy buena y simple del número de líneas de código.&lt;br /&gt;&lt;br /&gt;Además, si alguien es vago como yo y no quiere demasiada precisión en la medida, basta con encadenar unos comandos de unix/linux para contar algo parecido al número de puntos y coma&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;$ cat `find . -name *.java` | egrep ";" | wc -l&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La primera parte saca un listado por pantalla (&lt;span style="color: rgb(153, 0, 0);"&gt;cat&lt;/span&gt;) de todos los ficheros .java que encuentre del directorio actual hacia abajo.&lt;br /&gt;&lt;br /&gt;La segunda parte, filtra (&lt;span style="color: rgb(153, 0, 0);"&gt;egrep&lt;/span&gt;) para que en el listado sólo salgan las líneas que contienen al menos un punto y coma.&lt;br /&gt;&lt;br /&gt;La tercera parte, cuenta (&lt;span style="color: rgb(153, 0, 0);"&gt;wc&lt;/span&gt;) las líneas del listado anterior.&lt;br /&gt;&lt;br /&gt;El resultado es el número total de líneas de los ficheros .java que contienen al menos un punto y coma, es decir, una aproximación más o menos buena del número de líneas de código.&lt;br /&gt;&lt;br /&gt;De todas formas, alguien que sepa un poco más de linux seguro que encuentra la forma de contar el número de ; de una forma también sencilla ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115346563018965780?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115346563018965780/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115346563018965780' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115346563018965780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115346563018965780'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/contar-lneas-de-cdigo.html' title='Contar líneas de código'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115345552509268520</id><published>2006-07-21T06:17:00.000+02:00</published><updated>2006-07-21T06:18:45.106+02:00</updated><title type='text'>Tutorial C y C++ , Programación de sockets con C y linux</title><content type='html'>Veo en &lt;a href="http://www.tutorial-enlace.net/tutorial-Programaci%F3n_de_sockets_con_C_y_linux-1841.html"&gt;Tutorial C y C++ , Programación de sockets con C y linux&lt;/a&gt; que han puesto uno de mis tutoriales en un marco y justo encima han puesto una cabecera de ellos.&lt;br /&gt;&lt;br /&gt;El marco es directamente mi página, no es una copia, y en la cabecera ponen la página original. En fin, me parece todo bien y correcto, pero me ha llamado mucho la atención el verlo ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115345552509268520?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.tutorial-enlace.net/tutorial-Programaci%F3n_de_sockets_con_C_y_linux-1841.html' title='Tutorial C y C++ , Programación de sockets con C y linux'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115345552509268520/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115345552509268520' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115345552509268520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115345552509268520'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/tutorial-c-y-c-programacin-de-sockets.html' title='Tutorial C y C++ , Programación de sockets con C y linux'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115314940932641995</id><published>2006-07-17T16:52:00.000+02:00</published><updated>2006-07-17T17:16:51.666+02:00</updated><title type='text'>El PageRank de google está cabra</title><content type='html'>Acabo de ver que después de cuatro meses de mis &lt;a href="http://www.chuidiang.com"&gt;apuntes de programación&lt;/a&gt;. por fin tiene un PageRank. Le dieron uno de cero al poco de crear la página/dominio. Ahora tiene uno de 4, que es más o menos lo que tenía mi antigua página &lt;a href="http://www.geocities.com/chuidiang"&gt;www.geocities.com/chuidiang&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sin embargo, veo que el page rank actual está un poco tonto.&lt;br /&gt;&lt;br /&gt;Mi &lt;a href="http://fjballena.blogspot.com/"&gt;diario de correr y bicicleta&lt;/a&gt; tiene un pagerank de 3. Si miro, según google, las páginas que enlazan a él, no hay ninguna. Tampoco tiene apenas visitas. Sin embargo, este &lt;a href="http://chuidiang.blogspot.com/"&gt;diario de programación&lt;/a&gt; tiene sólo un pagerank de 2. Hay varias páginas que enlazan a él (según google) aparte de la mía y además tiene unas cuantas visitas diarias.&lt;br /&gt;&lt;br /&gt;¿Cómo es posible esto?.&lt;br /&gt;&lt;br /&gt;También hay otro mito que no sé si es real. Supuestamente con un pagerank más elevado tus páginas salen más arriba en los buscadores. Sin embargo, desde que mis apuntes de programación han pasado de pagerank 0 a pakerank 4 (el viernes o el sábado pasado), no he notado ningún cambio en el número de visitas.&lt;br /&gt;&lt;br /&gt;Sin embargo, de vez en cuando sí noto cambios bruscos que duran temporadas largas de vez en cuando. Por ejemplo, el número de visitas se ha reducido casi a la mitad, de forma progresiva, desde mediados de Junio sin razón aparente (ver gráfico).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/483/738/1600/Dibujo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/483/738/400/Dibujo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115314940932641995?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115314940932641995/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115314940932641995' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115314940932641995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115314940932641995'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/el-pagerank-de-google-est-cabra.html' title='El PageRank de google está cabra'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115278635463334923</id><published>2006-07-13T12:20:00.000+02:00</published><updated>2006-07-13T12:25:54.656+02:00</updated><title type='text'>Ficheros KK</title><content type='html'>En todo proyecto informático que se precie hay uno o más ficheros "kk", que no sirven para nada, que nadie usa, pero que si se te ocurre borrar el proyecto deja de funcionar.&lt;br /&gt;&lt;br /&gt;También suele haber varias versiones de ejecutable, cuyos ficheros se llaman así ejecutable_bueno.exe, ejecutable_nuevo.exe, ejecutable_hoy.exe, ejecutable_ultimo.exe. Está claro que esta nomenclatura de nombres es la más adecuada para saber cual es el que hay que arrancar, en función de que se quiera el bueno, el nuevo, el de hoy o el último.&lt;br /&gt;&lt;br /&gt;También suele haber varias versiones antiguas, etiquetads ejecutable_antiguo.exe, ejecutable.exe.bak, ejecutable.exe.old, ejecutable_viejo.exe. De esta forma también es fácil saber qué se debe recuperar, según se quiera el old, el viejo, el bak o el antiguo.&lt;br /&gt;&lt;br /&gt;Rizando el rizo, a veces también hay líneas de código que nunca se llaman, ni poniendo un breakpoint con el debugger en ellas, ni System.out, ni printf, ni de ninguna manera, pero ¡Ay de tí como se te ocurra borrarlas!. El ejecutable dejará de funcionar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115278635463334923?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115278635463334923/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115278635463334923' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115278635463334923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115278635463334923'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/ficheros-kk.html' title='Ficheros KK'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115225397679365768</id><published>2006-07-07T08:27:00.000+02:00</published><updated>2006-07-07T08:32:56.816+02:00</updated><title type='text'>Más sobre el patrón Decorador</title><content type='html'>Acabo de terminar mi primer cacho de programa usando el patrón &lt;span style="font-weight: bold;"&gt;Decorador &lt;/span&gt;como comenté en el post anterior.&lt;br /&gt;&lt;br /&gt;Una primera ventaja que le veo, en mi caso concreto, es que puedo hacer todo el código sin necesidad de la base de datos y probarlo. Mi modelo de datos va en memoria implementando una interface, mis clases de ventanas y demás sólo ven la interface. Mis clases de mis librerías reutilizables sólo ven la interface, así que puedo usarlas tal cual sin tocar nada en ellas, sin necesidad de hererdar ni de configurarlas de ninguna manera.&lt;br /&gt;&lt;br /&gt;Luego, hago el decorador del modelo que se encarga de la base de datos. Dentro de él meto el modelo de datos e implemento todos los métodos simplemente para que se redirijan al modelo interno. Con esto todo sigue funcionando igual que antes, sin base de datos.&lt;br /&gt;&lt;br /&gt;Ahora sólo me queda, poco a poco, ir modificando los métodos del decorador para que hagan su trabajo en la base de datos.&lt;br /&gt;&lt;br /&gt;Otra ventaja adicional que le veo es que todo lo de base de datos (las sql, la conexion, etc, etc) queda encapsulado en una única clase.&lt;br /&gt;&lt;br /&gt;La verdad es que la experiencia me ha gustado bastante y pienso repetir en adelante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115225397679365768?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115225397679365768/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115225397679365768' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115225397679365768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115225397679365768'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/ms-sobre-el-patrn-decorador.html' title='Más sobre el patrón Decorador'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115208209610670500</id><published>2006-07-05T08:45:00.000+02:00</published><updated>2006-07-05T08:48:16.143+02:00</updated><title type='text'>Posibilidad para el patrón Decorador</title><content type='html'>Estoy experimentando con el patrón &lt;span style="font-weight: bold;"&gt;Decorador&lt;/span&gt; y de momento parece que tiene buena pinta.&lt;br /&gt;&lt;br /&gt;Me explico. Es bastante habitual que tenga que hacer alguna aplicación con unas ventanas para mostrar datos recogidos de una base de datos. Desde dichas ventanas debe además poder modificarse los datos en base de datos. Los típicos añadir, borrar y editar.&lt;br /&gt;&lt;br /&gt;Mi forma habitual de hacer esto era con el patrón &lt;span style="font-weight: bold;"&gt;Observador&lt;/span&gt;. Hago una clase que llamo &lt;span style="font-style: italic;"&gt;modelo de datos&lt;/span&gt; en la que guardo los datos de la base de datos después de haberlos leido. A esta clase le pongo un mecanismo de suscripción, de forma que otras clases puedan enterarse cuando se modifican los datos.&lt;br /&gt;&lt;br /&gt;Hago otra clase que se encarga de leer la base de datos y rellenar el modelo de datos. Tiene además los métodos para añadir, modificar y borrar elementos de base de datos.&lt;br /&gt;&lt;br /&gt;Las ventanas son clases que están suscritas al &lt;span style="font-style: italic;"&gt;modelo de datos&lt;/span&gt;, de forma que cuando el modelo de datos se rellena de datos, automáticamente las ventanas los muestran. Algo similar al DefaultTableModel de java y el JTable.&lt;br /&gt;&lt;br /&gt;Los botones de las ventanas que permiten modificar los datos los suelo hacer que actuen directamente con la clase que se encarga de la base de datos. Si unos de estos botones debe añadir, borrar o modificar algo, lo hace contra la clase de base de datos. Esta se encarga de hacer la modificación en base de datos y si tiene exito, refleja el cambio en el modelo. Este a su vez por medio del patrón observador avisa a la ventana para que refleje el cambio.&lt;br /&gt;&lt;br /&gt;Todo este es el mecanismo que uso habitualmente, pero no me acaba de convencer porque acaba todo entremezclado. Los botones, que son interface de usuario, deben ver a la clase de base de datos y esta a su vez ve al modelo de datos. Tengo botones ya hechos que hacen las tareas habituales de añadir, borrar y modificar elementos de una lista, pero siempre tengo que heredar de ellos o instanciarlos pasándoles la clase de base de datos y "capando" su comportamiento de actuar sobre le modelo directamente.&lt;br /&gt;&lt;br /&gt;Ahora estoy intentando aplicar el patrón &lt;span style="font-weight: bold;"&gt;Decorador&lt;/span&gt;. Consiste básicamente en hacer que la clase de modelo de datos y la clase de base de datos cumplan la misma interface y puedan intercambiarse. Ambas tienen métodos añade(), borra() y modifica(). La clase de base de datos además admite que se le pase el modelo de datos.&lt;br /&gt;&lt;br /&gt;El método añadir(), por ejemplo, en la clase de base de datos, inserta en base de datos y si la inserción tiene éxito, llama al añadir() del modelo de datos.&lt;br /&gt;&lt;br /&gt;Tanto el modelo de datos como la clase de base de datos implementan un patrón observador, para notificar cambios en los datos. La de modelo de datos es normal. La clase de base de datos se suscribe al modelo de datos y notifica cuando notifique este. De esta forma, cuando la clase de base de datos añade() un dato, lo mete en base de datos y luego en el modelo. El modelo avisa a la clase de base de datos y esta a sus suscriptores, que serán las ventanas.&lt;br /&gt;&lt;br /&gt;Al hacer que ambas clases implementen la misma interface, a las ventanas puedo pasarles indistintamente una u otra. Las ventanas y los botones actuarían directamente sobre la interface, con lo que no saben si lo están haciendo contra base de datos o contra el modelo de datos. Las ventanas se refrescarán también correctamente independientemente de qué modelo se les pase.&lt;br /&gt;&lt;br /&gt;Esto tiene otra ventaja adicional, y es en el borrado. Habitualmente los modelos de java como TableModel, avisan del borrado después de haber borrado. Con mi antiguo mecanismo de suscripción, no podía obtener el elemento borrado para borraren la base de datos, únicamente sabía qué fila se había borrado, pero no podía obtener el elemento borrado, ni su clave en la base de datos. Con este nuevo mecanismo de patrón Decorador, me avisan cuando se quiere borrar, con lo que puedo borrar de base de datos, luego del modelo y luego se refresca la vista.&lt;br /&gt;&lt;br /&gt;En fin, lo poco que voy probando va teniendo buena pinta y muchas ventajas respecto a mi antiguo mecanismo. En algún momento haré un pequeño tutorial para mi página en la que se haga una tabla con añadir, borrar y modificar de una base de datos usando este patrón.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115208209610670500?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115208209610670500/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115208209610670500' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115208209610670500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115208209610670500'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/07/posibilidad-para-el-patrn-decorador.html' title='Posibilidad para el patrón Decorador'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115158422825228677</id><published>2006-06-29T12:42:00.000+02:00</published><updated>2006-06-29T14:30:28.386+02:00</updated><title type='text'>Echo de menos programar mal</title><content type='html'>Últimamente ando un poco deprimido con esto de la programación. Llevo muchos años programando y mi forma de programar ha ido evolucionando mucho, se supone que para mejor.&lt;br /&gt;&lt;br /&gt;Al principio hacía mi código rápido. Mis clases eran gigantes y muy poco reutilizables. Apenas usaba herencias, prácticamente nunca el polimorfismo y nunca había oido hablar de patrones de diseño. Mi objetivo era hacer el código rápido y que funcionara.&lt;br /&gt;&lt;br /&gt;Luego aprendí a usar el polimorfismo, leí sobre patrones, las clases deben ser pequeñas, el código debe ser reutilizable, hay que comentar, etc, etc.&lt;br /&gt;&lt;br /&gt;Ahora programa tratando de seguir todas estas cosas. Cualquier programa que hago se llena de clases separaditas, algunas de ellas siempre acabo reusándolas en otro sitio. Me llevo clases de estas a "librerías" que clases para usar en otrs proyectos. Mi código tira mucho de esas "librerías" que me he ido haciendo con el tiempo. Uso los patrones, el polimorfismo. Supuestamente, todo lo más mejor que soy capaz de hacerlo.&lt;br /&gt;&lt;br /&gt;Sin embargo, hecho de menos los viejos tiempos. Antes programar era divertido. Ahora se convierte casi en una tortura. Cuando hago algo o modifico algo hecho, tengo que emepezar a revisar las clases de las librerías, soy incapaz de hacer algo una clase grande o un método largo, así que hago muchas clases y métodos. Cuando una cosa parece que puede ser reutilizable más adelante, la hago un poco mejor para llevármela a la librería, etc, etc.&lt;br /&gt;&lt;br /&gt;Para un mismo programa, ahora hago muchísmimas menos líneas de código, pero echo bastate tiempo en pensarlas, rebuscar por la librerías, por las clases ya hechas, pasando de una interface a la clase que la implementa que simplemente acaba llamando a un método de otra clase que a su vez...&lt;br /&gt;&lt;br /&gt;Echo de menos los tiempos en que programar era liarse a echar lineas de código sin más, aunque no fuera la forma más eficiente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115158422825228677?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115158422825228677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115158422825228677' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115158422825228677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115158422825228677'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/echo-de-menos-programar-mal.html' title='Echo de menos programar mal'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115149696147061951</id><published>2006-06-28T14:01:00.000+02:00</published><updated>2006-06-28T14:16:01.490+02:00</updated><title type='text'>maven</title><content type='html'>En el trabajo ya he metido un par de proyectos con &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Instalaci%C3%B3n_de_Maven_en_windows"&gt;maven&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Con el tiempo hemos desarrollado varias librerías en java. Una de comunicaciones (sockets y rmi), otra con algoritmos matemáticos, otra con componentes de interface de usuario, para ventanitas con acceso a base de datos, etc, etc.&lt;br /&gt;&lt;br /&gt;He creado proyectos maven para los fuentes de cada una de estas librerías. En un servidor he montado un repositorio de jar accesible para todo el mundo a través de ftp. Con maven, he compilado estas librerías y metido los jar en el respositorio común.&lt;br /&gt;&lt;br /&gt;En dos proyectos que están ahora en marcha, los he modificado para que funcionen con maven. He puesto las dependencias correspondientes a &lt;a href="http://logging.apache.org/log4j/docs/"&gt;log4j &lt;/a&gt;y demás librerías standard, además de las dependencias de nuestras librerías propias. Todo ha funcionado correctamente. Al compilar por primera vez estos proyectos con maven, se ha ido a internet y a mi repositorio de jars a buscar las librerías indicadas, se las ha descargado y todo bien.&lt;br /&gt;&lt;br /&gt;Me quedan sin embargo dos pequeñas pegas que solucionaré jugando un poco.&lt;br /&gt;&lt;br /&gt;Por un lado, si modifico un jar dentro del repositorio de jars, no sé si los proyectos que lo utilizan se enteran y se bajan la nueva versión (a la que no he numerado como nueva versión). Creo que poniendo lo que maven llama versión SNAPSHOT, sí lo haría. De todas formas, la primera prueba que he hecho con esto no me acaba de convencer.&lt;br /&gt;&lt;br /&gt;Por otro lado, todo el tema de integración con los IDE. Maven tiene estos comandos&lt;br /&gt;&lt;br /&gt;mvn idea:idea&lt;br /&gt;mvn eclipse:eclipse&lt;br /&gt;&lt;br /&gt;que generan los proyectos para &lt;a href="http://www.jetbrains.com/idea/"&gt;Idea&lt;/a&gt; y para &lt;a href="http://www.eclipse.org/"&gt;eclipse&lt;/a&gt;. Para el primero funciona todo perfecto. Sin embargo, para eclipse parace que el tema funciona peor. No me gusta cómo se monta el proyecto en eclipse, sobre todo si es un proyecto maven con subproyectos debajo.&lt;br /&gt;&lt;br /&gt;Hay además un &lt;a href="http://maven.apache.org/eclipse-plugin.html"&gt;plugin de eclipse&lt;/a&gt; para poder utilizar maven desde el ide. Lo he instalado una vez y me ha ido bien, pero ya no puedo tocar en dependencias el proyecto como a mi me gustaría. Un compañero mio ha instalado el mismo plugin y no ha podido volver a abrir eclipse. Le da un error en el inicio, antes de abrir nada y de ahí no sale, ni desinstalando el plugin a mano (borrándolo del directorio plugins).&lt;br /&gt;&lt;br /&gt;En fin, con eclipse parece que ese plugin no es buena cosa, aunque seguiré en ello.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115149696147061951?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/chuwiki/index.php?title=Instalaci%C3%B3n_de_Maven_en_windows' title='maven'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115149696147061951/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115149696147061951' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115149696147061951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115149696147061951'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/maven.html' title='maven'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115028159020887946</id><published>2006-06-14T12:39:00.000+02:00</published><updated>2006-06-14T12:39:50.310+02:00</updated><title type='text'>Foro de Java y C++ de Chuidiang</title><content type='html'>Tengo el foro &lt;a href="http://www.foroswebgratis.com/foro-Tema.php?id_foro=32132"&gt;Foro de Java y C++ de Chuidiang&lt;/a&gt; abandonado.&lt;br /&gt;&lt;br /&gt;En el trabajo, resulta que tenemos un corta fuegos que no permite acceso a través de un montón de puertos y además el proxy nos prohibe el acceso a determinadas páginas. ¡Sorpresa!. Desde este Lunes está prohibido el acceso al foro (supongo que la prohibición es a foroswebgratis).&lt;br /&gt;&lt;br /&gt;En casa, por problemas técnicos que no vienen al caso, estoy sin internet.&lt;br /&gt;&lt;br /&gt;Resultado: No puedo ni siquiera ver qué hay en mi propio foro y tampoco puedo actualizar mi página web.&lt;br /&gt;&lt;br /&gt;Espero que los problemas técnicos caseros se resulevan pronto....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115028159020887946?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.foroswebgratis.com/foro-Tema.php?id_foro=32132' title='Foro de Java y C++ de Chuidiang'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115028159020887946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115028159020887946' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115028159020887946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115028159020887946'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/foro-de-java-y-c-de-chuidiang.html' title='Foro de Java y C++ de Chuidiang'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115026892124015003</id><published>2006-06-14T09:03:00.000+02:00</published><updated>2006-06-14T09:08:41.256+02:00</updated><title type='text'>Problemas de refresco con internet explorer</title><content type='html'>Uno de los motivos de mi cabreo con css eran los problemas de refresco que se me plantean en mi página de &lt;a href="http://www.chuidiang.com"&gt;apuntes de programación&lt;/a&gt; cuando se mira con internet explorer.&lt;br /&gt;&lt;br /&gt;Si visualizamos la página y ponemos una ventana encima o jugamos con el scroll de una forma "brusca", desaparecen algunas letras o incluso se quedan a medio dibujar.&lt;br /&gt;&lt;br /&gt;Jugando ayer, ya tengo una pista del problema. Las líneas que desaparecen es justo encima de los anuncios de google o del buscador de google. Parece entonces que hay algo en los javascript de google que no le gusta al internet explorer. Todavía no he conseguido arreglarlo, pero teniendo la pista ya parece más fácil o, al menos, "ñapeable".&lt;br /&gt;&lt;br /&gt;Sin embargo es curioso porque sólo pasa en aquellas páginas que he "modernizado"  hace poco con css, dándoles el aspecto de libreta con papel rayado. En las antiguas páginas no pasa. Habrá que seguir investigando un poco.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115026892124015003?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115026892124015003/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115026892124015003' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115026892124015003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115026892124015003'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/problemas-de-refresco-con-internet.html' title='Problemas de refresco con internet explorer'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115018258743911226</id><published>2006-06-13T09:09:00.000+02:00</published><updated>2006-06-13T09:09:47.440+02:00</updated><title type='text'>Cascading Style Sheets, Level 2</title><content type='html'>Dados mis problemas con css, buscando, encotré esto &lt;a href="http://www.w3.org/TR/REC-CSS2/cover.html#minitoc"&gt;Cascading Style Sheets, Level 2&lt;/a&gt; que supongo que es donde tenía que haber ido desde el principio. Tiene buena pinta salvo que está en un idioma extraño.&lt;br /&gt;&lt;br /&gt;Curiosamente, es de la página que me aconsejaba JJR en un comentario de un post anterior.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115018258743911226?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.w3.org/TR/REC-CSS2/cover.html#minitoc' title='Cascading Style Sheets, Level 2'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115018258743911226/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115018258743911226' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115018258743911226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115018258743911226'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/cascading-style-sheets-level-2.html' title='Cascading Style Sheets, Level 2'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-115011790212859132</id><published>2006-06-12T15:11:00.000+02:00</published><updated>2006-06-12T15:11:42.353+02:00</updated><title type='text'>Free Java Books</title><content type='html'>Aunque estén en perfecto inglés, en &lt;a href="http://www.ooad.org/main/java_books.htm"&gt;Free Java Books&lt;/a&gt; hay un montón de libros gratis para bajarse sobre java. Están incluidos los de "thinking in java" y "thinking in patterns whith java".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-115011790212859132?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ooad.org/main/java_books.htm' title='Free Java Books'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/115011790212859132/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=115011790212859132' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115011790212859132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/115011790212859132'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/free-java-books.html' title='Free Java Books'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114995170501346284</id><published>2006-06-10T16:59:00.000+02:00</published><updated>2006-06-10T17:11:49.043+02:00</updated><title type='text'>Más css</title><content type='html'>Bueno, acabo de conseguir que se peguen los dos div. El truco es este:&lt;br /&gt;&lt;br /&gt;&amp;lt;div&amp;gt;cosas&amp;lt;div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;mas cosas&amp;lt;div&amp;gt;&lt;br /&gt;&lt;br /&gt;Si lo hacemos así, sí salen pegados, pero si se nos ocurre hacer esto&lt;br /&gt;&lt;br /&gt;&amp;lt;div&amp;gt;cosas&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;&amp;lt;p&amp;gt;mas cosas&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;entonces se separan. Si en vez de &amp;lt;p&amp;gt; es un &amp;lt;h1;&amp;gt; también se separan.&lt;br /&gt;&lt;br /&gt;Aparentemente p o h1 tienen un márgen. El div se queda pegadito a la etiqueta p o h1, pero el margen de esa etiqueta cae fuera del div y es lo que hace que se separe del div anterior.&lt;br /&gt;&lt;br /&gt;Los contenidos de cada "fila" de pixels serían esto...&lt;br /&gt;&lt;br /&gt;div&lt;br /&gt;margen superior de p o h1&lt;br /&gt;otro div y contenido de p o h1&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bueno, creo que voy entendiendo cómo va el asunto. A ver si encuentro algún tutorial en castellano que explique cómo son las cosas (la filosofía de css) en vez de limitarse a poner etiquetas explicadas una detrás de otra.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114995170501346284?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114995170501346284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114995170501346284' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114995170501346284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114995170501346284'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/ms-css.html' title='Más css'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114995080439778480</id><published>2006-06-10T16:34:00.000+02:00</published><updated>2006-06-10T16:46:44.420+02:00</updated><title type='text'>css, internet explorer y firefox una mierda</title><content type='html'>Bueno, estoy un poco cabreado, así que ahí voy a soltarlo todo.&lt;br /&gt;&lt;br /&gt;No tengo ni idea de css, estoy empezando, pero desde luego lo que veo no me gusta nada.&lt;br /&gt;&lt;br /&gt;En primer lugar, internet explorer y firefox no se comportan igual ante el mismo código, cada uno hace lo que le da la gana (se supone que firefox hace lo correcto), pero de todas formas hay que andar peleándose para ver si sale igual, o al menos decente, en ambos exploradores y andar "ñapeando" para que así sea.&lt;br /&gt;&lt;br /&gt;Luego, con firefox veo cosas que no me cuadran. Intento conseguir que dos div salgan pegados. No hay manera. En algunas de mis páginas sí salen pegados, en otras no y aparentenmente hay lo mismo (ambas incluyen el mismo fichero css y los div están colocados exactamente igual). Seguro que la diferencia es algo que hay dentro del div, pero no logro acertar con qué es. Sin embargo, en el que no lo cosigo, si al div de abajo le pongo un borde solid de 1px entonces misteriosamente se mueve y se pega. Si le pongo 0px vuelve a salir separado. ¿Será que el borde por defecto es de varios pixels? ¿Y si no quiero borde en absoluto? ¿Por qué en otras páginas me sale bien sin necesidad de poner el borde?.&lt;br /&gt;&lt;br /&gt;La última mierda: Mi página inicial, por ejemplo, sale bien en internet explorer y firefox, pero me da problemas de refresco en internet explorer. Si se abre una ventana encima y se cierra o se juega con el scroll, desaparecen letras o quedan incluso a medio pintar.&lt;br /&gt;&lt;br /&gt;No dudo que con esfuerzo y aprendiendo trucos se puede conseguir que salga bien en todos lados pero ... ¿qué interés tiene para mí echar horas y horas en eso para resolver problemas de los navegadores?.&lt;br /&gt;&lt;br /&gt;Voy a seguir un poco más, pero al final creo que pasaré de css y seguiré haciendo mis páginas cutre-simples html y ya. Al final, para poner tutoriales no necesito grandes presentaciones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114995080439778480?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114995080439778480/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114995080439778480' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114995080439778480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114995080439778480'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/css-internet-explorer-y-firefox-una.html' title='css, internet explorer y firefox una mierda'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114950107230743308</id><published>2006-06-05T11:42:00.000+02:00</published><updated>2006-06-05T11:51:12.326+02:00</updated><title type='text'>PMD y eclipse</title><content type='html'>PMD es un programa para revisar métricas de nuestro código. Puedes bajártelo como aplicación independiente en &lt;a href="http://pmd.sourceforge.net/"&gt;http://pmd.sourceforge.net/&lt;/a&gt; y tiene plugings para un montón de IDEs, incluido Maven.&lt;br /&gt;&lt;br /&gt;Me bajé la versión  3.1.5 y la instalé con eclipse 3.1.2, pero todo son problemas. Según le das la primera vez para que analize las métricas va bien y saca más métricas no adecuadas de las que me gustaría. &lt;br /&gt;&lt;br /&gt;Sin embargo, según voy trabajando y le doy a que repase las métricas, incluso de un sólo fichero, se me queda colgado, tarda un montón y me deja el eclipse más pallá que pacá.&lt;br /&gt;&lt;br /&gt;Al final, voy a desinstalar el plugin este y probaré con maven a ver qué tal va...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114950107230743308?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114950107230743308/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114950107230743308' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114950107230743308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114950107230743308'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/pmd-y-eclipse.html' title='PMD y eclipse'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114932196927965103</id><published>2006-06-03T10:06:00.000+02:00</published><updated>2006-06-03T10:06:09.293+02:00</updated><title type='text'>Guestbook</title><content type='html'>Cuando cogí el dominio y después de jugar un poco con las herramientas que me daban, instale un libro de visitas&lt;a href="http://www.chuidiang.com/libro/"&gt;Guestbook&lt;/a&gt;, el Viper GuestBook.&lt;br /&gt;&lt;br /&gt;Aunque la última versión parece que viene protegida para que no se pueda meter basura alegremente (mensajes de esos que sólo tienen links) y que suelen meter "robots", yo tengo anterior que no tiene esa protección.&lt;br /&gt;&lt;br /&gt;De momento lo he solucionado añadiendo un nuevo campo en el que pido una suma y restrinjo las posibles entradas del campo sólo al resultado correcto de esa suma. Aunque es un poco chapuza, de momento parece que funciona y no tengo más problemas.&lt;br /&gt;&lt;br /&gt;Tendré que escribir a los de hostito a ver si piensan actualizarlo, o bien descargarme la versión más moderna e instalármela yo por mi cuenta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114932196927965103?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/libro/' title='Guestbook'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114932196927965103/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114932196927965103' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114932196927965103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114932196927965103'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/guestbook.html' title='Guestbook'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114931041394416775</id><published>2006-06-03T06:45:00.000+02:00</published><updated>2006-06-03T06:53:33.960+02:00</updated><title type='text'>Más sobre apache y php</title><content type='html'>Como últimamente ando metiendo algo de &lt;span style="font-weight: bold;"&gt;php &lt;/span&gt;y jugando con &lt;span style="font-weight: bold;"&gt;css &lt;/span&gt;para mi página web, me he decido a instalar también en casa &lt;span style="font-weight: bold;"&gt;apache &lt;/span&gt;y &lt;span style="font-weight: bold;"&gt;php&lt;/span&gt;. De esta forma podré ver el resultado de mis páginas antes de subirlas al servidor.&lt;br /&gt;&lt;br /&gt;Me bajé la última de &lt;span style="font-weight: bold;"&gt;Apache (2.2.2)&lt;/span&gt; y la de &lt;span style="font-weight: bold;"&gt;PHP (5.1.4) &lt;/span&gt;y me puse a ello.  Igual que en el trabajo, tuve el problema de "&lt;span style="font-style: italic;"&gt;cannot load php5apache2.dll into server&lt;/span&gt;". Como en el trabajo, después de un día de pelearme con ello, conseguí arreglarlo &lt;a href="http://chuidiang.blogspot.com/2006/06/php5-y-apache2-en-windows.html"&gt;reemplazando la librería php5apache2.dll&lt;/a&gt; por otra, voy a ello directamente al grano.... ¡No funciona!. En casa esa solución no me vale.&lt;br /&gt;&lt;br /&gt;Vuelta a indagar por internet y al final seguí un sabio consejo que encontré por ahí. Instalar versiones más antiguas. Instalé dos versiones que tenía en el ordenador de otra vez que intenté todo esto: &lt;span style="font-weight: bold;"&gt;apache 2.0.53&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;php 5.0.3&lt;/span&gt;. Funcionó todo perfecto y a la primera.&lt;br /&gt;&lt;br /&gt;A veces no es bueno irse rápidamente a la última versión de algo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114931041394416775?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114931041394416775/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114931041394416775' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114931041394416775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114931041394416775'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/ms-sobre-apache-y-php.html' title='Más sobre apache y php'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114916436124398447</id><published>2006-06-01T14:19:00.000+02:00</published><updated>2006-06-01T14:19:21.413+02:00</updated><title type='text'>Javolution</title><content type='html'>Un compañero de trabajo ha encontrado esto &lt;a href="http://javolution.org/"&gt;Javolution&lt;/a&gt;. Una especie de añadido a java con clases muy rápidas para tiempo real.&lt;br /&gt;&lt;br /&gt;Bueno, es otra cosa  más que hay que probar un día de estos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114916436124398447?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://javolution.org/' title='Javolution'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114916436124398447/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114916436124398447' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114916436124398447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114916436124398447'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/javolution.html' title='Javolution'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114914957278412186</id><published>2006-06-01T10:12:00.000+02:00</published><updated>2006-06-01T10:12:52.800+02:00</updated><title type='text'>elmundo.es - Lo que Google sabe de mí</title><content type='html'>Un compañero de trabajo me ha mandado esta noticia &lt;a href="http://navegante2.elmundo.es/navegante/2006/06/01/gadgetoblog/1149145645.html"&gt;elmundo.es - Lo que Google sabe de mí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Realmente da qué pensar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114914957278412186?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://navegante2.elmundo.es/navegante/2006/06/01/gadgetoblog/1149145645.html' title='elmundo.es - Lo que Google sabe de mí'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114914957278412186/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114914957278412186' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114914957278412186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114914957278412186'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/elmundoes-lo-que-google-sabe-de-m.html' title='elmundo.es - Lo que Google sabe de mí'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114914782033559169</id><published>2006-06-01T09:38:00.000+02:00</published><updated>2006-06-01T09:43:40.350+02:00</updated><title type='text'>php5 y apache2 en windows</title><content type='html'>Después de la gracia de tener que reinstalar windows, me decidí a volver a poner apache/php/mysql en windows. Ya puestos, me bajé las últimas versiones de todo.&lt;br /&gt;&lt;br /&gt;Al instalar apache 2.2 con php 5.1.4 he tenido un problema: no había forma de que funcionara. Por más que revisé que todo estaba correcto, al arrancar el servidor apache siempre obtenía el error&lt;br /&gt;&lt;br /&gt;Cannot load c:/php/php5apache2.dll into server&lt;br /&gt;&lt;br /&gt;Buscando por internet, al final encontré que es un pequeño problema de compatibilidad entre apache 2.2 y php 5.1.4. Hay versiones de apache ya compiladas que no pueden cargar este modulo. Encontré esa información aquí &lt;a href="http://www.webestilo.com/foros/mensaje.phtml?foro=3&amp;msg=43520&amp;amp;pag="&gt;http://www.webestilo.com/foros/mensaje.phtml?foro=3&amp;msg=43520&amp;amp;pag=&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La solución que propnen ahí es bajarse una nueva php5apache2.dll de aquí &lt;a href="http://www.apachelounge.com/download/"&gt;http://www.apachelounge.com/download/&lt;/a&gt; y reemplazarla por la original.&lt;br /&gt;&lt;br /&gt;Lo he probado y efectivamente funciona.&lt;br /&gt;&lt;br /&gt;Bueno, ahora me queda la parte de mysql ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114914782033559169?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114914782033559169/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114914782033559169' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114914782033559169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114914782033559169'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/06/php5-y-apache2-en-windows.html' title='php5 y apache2 en windows'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114910326193285674</id><published>2006-05-31T21:12:00.000+02:00</published><updated>2006-05-31T21:21:01.950+02:00</updated><title type='text'>ResultSetMetaData</title><content type='html'>En su día, cuando me lie con java y base de datos, descubrí la clase &lt;span style="font-weight: bold;"&gt;ResultSetMetaData&lt;/span&gt;. Con esta clase podemos desde código conocer qué datos hay dentro de un &lt;span style="font-weight: bold;"&gt;ResultSet&lt;/span&gt;, sin necesidad de saberlo a priori en el momento de programar.&lt;br /&gt;&lt;br /&gt;Gracias a esta clase, podemos hacer código muy genérico para meter los datos de una consulta en un &lt;span style="font-weight: bold;"&gt;JTable&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Acabo de meter un pequeño tutorial para introducir al uso del &lt;span style="font-weight: bold;"&gt;ResultSetMetaData&lt;/span&gt;. De paso, en el código de ejemplo del tutorial, se hace una clase genérica que permite &lt;a href="http://www.chuidiang.com/java/mysql/resultset_jtable.php"&gt;meter cualquier &lt;span style="font-weight: bold;"&gt;ResultSet&lt;/span&gt; en un &lt;span style="font-weight: bold;"&gt;JTable&lt;/span&gt; usando el &lt;span style="font-weight: bold;"&gt;ResultSetMetaData&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;La única pega es que el nombre para la cabecera de la tabla es la etiqueta que se defina en la base de datos. Es posible que algunas bases de datos no permitan poner una etiqueta distinta del nombre del campo en la tabla. En estos casos es necesario hacer algún arreglo en la clase genérica para que admite qué textos se quiere mostrar al usuario como etiquetas de cabecera en la tabla.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114910326193285674?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/java/mysql/resultset_jtable.php' title='ResultSetMetaData'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114910326193285674/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114910326193285674' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114910326193285674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114910326193285674'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/resultsetmetadata.html' title='ResultSetMetaData'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114907987273542900</id><published>2006-05-31T14:51:00.000+02:00</published><updated>2006-05-31T14:57:56.906+02:00</updated><title type='text'>Websites as graphs - an HTML DOM Visualizer Applet</title><content type='html'>Otro invento curiosísimo que me acabo de encontrar: &lt;a href="http://www.aharef.info/static/htmlgraph/"&gt;Websites as graphs - an HTML DOM Visualizer Applet&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Metes una página web y te saca una especie de árbol en el que están los tags de esas páginas. Aparte de probar alguna, puedes ver fotos de flirck con algunos ejemplos que son realmente curiosos.&lt;br /&gt;&lt;br /&gt;No sé si tiene utilidad, pero al menos es entretenido. Se necesita tener instalado java.&lt;br /&gt;&lt;br /&gt;Hay más versiones de lo mismo:&lt;br /&gt;&lt;a href="http://www.texone.org/tree/tree.php?id=applet"&gt;http://www.texone.org/tree/tree.php?id=applet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://a.parsons.edu/%7Echristine/fall_03/organic_html/flash/main.html"&gt;http://a.parsons.edu/%7Echristine/fall_03/organic_html/flash/main.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114907987273542900?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.aharef.info/static/htmlgraph/' title='Websites as graphs - an HTML DOM Visualizer Applet'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114907987273542900/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114907987273542900' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114907987273542900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114907987273542900'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/websites-as-graphs-html-dom-visualizer.html' title='Websites as graphs - an HTML DOM Visualizer Applet'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114906544298336532</id><published>2006-05-31T10:50:00.000+02:00</published><updated>2006-05-31T10:50:43.606+02:00</updated><title type='text'>del.icio.us</title><content type='html'>Aunque hace tiempo que lo conozco, hasta hace poco no le había prestado atención. En &lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt; te puedes dar de alta y puedes añadir tus páginas favoritas. Tiene varias ventajas respecto a añadirlas directamente en el navegador:&lt;br /&gt;&lt;br /&gt;- Las tienes accesibles desde cualquier ordenador. Además, ahora que ando precisamente sufriendo windows, no tengo riesgo de perderelos.&lt;br /&gt;- Las organiza por etiquetas que tú pones, de forma que si yo busco por mi etiqueta "java", tendré todos los links que he añadido relativos a java.&lt;br /&gt;- Permite ver cuánta gente que está dada de alta ha añadido esa misma página a sus favoritos. A mí, que tengo una página web o incluso este diario, me viene bien porque me dice si hay gente que ha añadido mi página o mi diario a sus favoritos. Basta con que yo la añada para ver si otros también la han añadido.&lt;br /&gt;- Permite ver o compartir los links de otros usuarios, con lo que viendo usuarios con tus mismas aficiones, puedes ver sus links y descubrir páginas interesantes.&lt;br /&gt;&lt;br /&gt;Otra cosa interesante es que hay un plug-in para firefox que te pone unos botoncitos en la barra de herramientas y permite añadir o ver directamente los favoritos sin necesidad de navegar a esta página.&lt;br /&gt;&lt;br /&gt;Ahí teneis mis favoritos: &lt;a href="http://del.icio.us/chuidiang"&gt;http://del.icio.us/chuidiang&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114906544298336532?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://del.icio.us/' title='del.icio.us'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114906544298336532/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114906544298336532' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114906544298336532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114906544298336532'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/delicious.html' title='del.icio.us'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114900318455300985</id><published>2006-05-30T17:27:00.000+02:00</published><updated>2006-05-30T17:33:04.570+02:00</updated><title type='text'>Recuperar Windows</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/483/738/1600/macho_01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/483/738/320/macho_01.jpg" alt="" border="0" /&gt;&lt;/a&gt;Tengo dos ordenadores, uno en el trabajo y otro en casa, en el que en un momento dado he tenido problemas de arranque o de otras cosas. En ambos casos decidí coger el CD de windows 2000 y darle a la opción de "recuperar sistema" o de "reinstalar". En ambos casos respeta de alguna forma lo que hay y reinstala windows.&lt;br /&gt;&lt;br /&gt;El caso es que ahora tengo dos ordenadores que van bastante mal. En ninguno de ellos funciona el windows update, siempre acaba dando error. Los programas, aunque los reinstale, hace cosas raras. Por ejemplo, apache se queda colgado casi al final de la instalación. Firefox no puede meter favoritos en marcadores ni recuerda el tamaño de la última vez que se abrió. Y así infinidad de detalles.&lt;br /&gt;&lt;br /&gt;El caso es que la opción esta de recuperar-reinstalar parece que es una chapuza. Al final es mejor, si se tiene opción, hacer backup de todo lo que se tiene de interés e instalar windows formateando el disco duro. Si no se formatea, windows respeta lo existente y tenemos problemas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114900318455300985?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114900318455300985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114900318455300985' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114900318455300985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114900318455300985'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/recuperar-windows.html' title='Recuperar Windows'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114870531938983966</id><published>2006-05-27T06:47:00.000+02:00</published><updated>2006-05-27T06:48:39.406+02:00</updated><title type='text'>Es increible lo que nos depara el futuro</title><content type='html'>Hace tiempo que vi este video, pero ahora lo he encontrado en YouTube.&lt;br /&gt;&lt;br /&gt;Una pantalla táctil en la que se hacen verdaderas maravillas. A ver lo que falta para que lleguemos a tener eso en nuestras casas.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DtFLkA9zZtU"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DtFLkA9zZtU" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114870531938983966?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114870531938983966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114870531938983966' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114870531938983966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114870531938983966'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/es-increible-lo-que-nos-depara-el.html' title='Es increible lo que nos depara el futuro'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114866097516400494</id><published>2006-05-26T18:21:00.000+02:00</published><updated>2006-05-26T18:29:35.183+02:00</updated><title type='text'>Atender a varios clientes con hilos</title><content type='html'>Me puse con un tutorial para ver cómo &lt;a href="http://www.chuidiang.com/java/sockets/hilos/socket_hilos.php"&gt;atender varios clientes a la vez en java usando sockets e hilos&lt;/a&gt;. Como al final resulta que es una tontería, me decidí a hacer un ejemplo un poco más complejo de lo habitual, &lt;a href="http://www.chuidiang.com/java/sockets/hilos/socket_hilos_2.php"&gt;un chat en java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;   Bueno, el chat no es ninguna maravilla, pero el la base para un chat un poco mejor. Necesita cosas como:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Que el cliente busque al servidor en algún sitio que no sea el "localhost". Supongo que tendría que pedirlo al usuario antes de conectarse.&lt;/li&gt;&lt;li&gt;Debería pedir también un mote (nick dicen los ingleses) para identificar quién dice qué.&lt;/li&gt;&lt;li&gt;Según va apareciendo texto, la barra de scroll no se desplaza automáticamente para ver el nuevo texto. Habría que arreglarlo.&lt;/li&gt;&lt;li&gt;En el servidor habría que sincronizar el acceso a los datos. Aunque he puesto un synchronized, no me he preocupado de verificar si hace falta en más sitios.&lt;/li&gt;&lt;li&gt;No he controlado el tema de las desconexiones. Si un cliente cierra el programa, no he probado qué pasa en el servidor, pero posiblemente salte alguna excepción.&lt;/li&gt;&lt;/ul&gt;Bueno, si tengo tiempo lo acabaré arreglando. De hecho me interesa especialmente el tema de conseguir que el scroll se desplace automáticamente para mostrar la última línea que se añade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114866097516400494?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/java/sockets/hilos/socket_hilos.php' title='Atender a varios clientes con hilos'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114866097516400494/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114866097516400494' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114866097516400494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114866097516400494'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/atender-varios-clientes-con-hilos.html' title='Atender a varios clientes con hilos'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114865460705221572</id><published>2006-05-26T16:36:00.000+02:00</published><updated>2006-05-26T17:26:36.573+02:00</updated><title type='text'>Herramientas a mogollón</title><content type='html'>Como comentaba hoy con unos compañeros de trabajo, es una pena que tengamos que dedicarnos a los proyectos del cliente en vez de a investigar todo lo que hay por internet.&lt;br /&gt;&lt;br /&gt;Leyendo un diario  he descubierto que existe  &lt;a href="http://subversion.tigris.org/"&gt;subversion&lt;/a&gt;. Es como CVS, pero se supone que lo mejora y está empezando a oirse más de él. El servidor de subversion se integra además si se quiere con un servidor apache. También hay plug-ins para eclipse, el &lt;a href="http://subclipse.tigris.org/"&gt;subclipse&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;También acabo de descubrir &lt;a href="http://www.bugzilla.org/"&gt;bugzilla&lt;/a&gt;. Es una especie de cosa que a través del navegador y supongo que contra una base de datos permite que la gente meta incidencias (o bugs) y se lleva un registro de ellos. Se pueden corregir, etc, etc. Lo usan gente como los de &lt;a href="https://bugzilla.mozilla.org/"&gt;mozilla&lt;/a&gt; o &lt;a href="https://bugs.eclipse.org/bugs/"&gt;eclipse&lt;/a&gt;. Sin embargo, además de un uso web, le veo una buena aplicación en el trabajo. A veces los sitios donde se prueban los proyectos están dentro de la empresa y en red, pero alejados de lso puestos de trabajo. Es una forma de llevar las incidencias de una forma centralizada. Según se prueba el proyecto, se van escribiendo las incidencias.&lt;br /&gt;&lt;br /&gt;Otra del mismo estilo de bugzilla es &lt;a href="http://dev.mysql.com/downloads/other/eventum/"&gt;Eventum&lt;/a&gt;, de los mismos de MySQL.&lt;br /&gt;&lt;br /&gt;Tengo intención de probar Subersion y ver qué tal se integra con eclipse. En cuanto a las otras dos, les echaré un ojo a ver cual es más sencilla para los "usuarios". Si las veo demasiado completas, habrá que ir a algo más sencillo como &lt;a href="http://sourceforge.net/projects/ticket/"&gt;phpticket&lt;/a&gt;, que no sé si es lo mismo estrictamente hablando, pero seguro que sirve para lo mismo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114865460705221572?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114865460705221572/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114865460705221572' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114865460705221572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114865460705221572'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/herramientas-mogolln.html' title='Herramientas a mogollón'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114858437370131485</id><published>2006-05-25T20:57:00.000+02:00</published><updated>2006-05-25T21:22:05.973+02:00</updated><title type='text'>Maven</title><content type='html'>Hace tiempo, a petición del jefe, hice unos experimentos con &lt;a href="http://maven.apache.org/"&gt;maven&lt;/a&gt; para ver qué tal iba. En un par de días de prueba no me hice idea de si sirve para algo, pero creo que voy a ponerlo en algún proyecto para hacer una prueba más seria.&lt;br /&gt;&lt;br /&gt;Esta mañana lo instalé nuevamente en windows. En &lt;a href="http://www.chuidiang.com/chuwiki/index.php?title=Instalaci%C3%B3n_de_Maven_en_windows"&gt;instalación de maven&lt;/a&gt; hice un resumen de lo que fuí haciendo, aunque realmente no merece la pena porque es muy sencillo. Al hacerlo por segunda vez, lo hice más rápido y con menos problemas.&lt;br /&gt;&lt;br /&gt;La primera pega que se me presentó la otra vez era el proxy de la empresa. Maven accede a internet para bajarse módulos y fichero .jar según los vamos necesitando. Había que configurar maven para que supiera cómo acceder y facilitara el nombre de usuario (el mio) y password de acceso al proxy. Como ya me peleé con ello la otra vez, esta vez fué rápida la configuración. Puedes ver lo que hay que tocar en el resumen que hice.&lt;br /&gt;&lt;br /&gt;El siguiente problema que se me presentó al compilar con maven un proyecto grande de unas 3000 clases java, es que me daba un &lt;span style="font-weight: bold;"&gt;OutOfMemory&lt;/span&gt;. Buscando por internet encontré que poniendo la variable de entorno &lt;span style="font-weight: bold;"&gt;MAVEN_OPTS=-Xmx512m&lt;/span&gt; (opción para la máquina virtual de java) se arreglaba el problema y así fué.&lt;br /&gt;&lt;br /&gt;El problema que tengo ahora es que maven por defecto compila con la versión 1.3 de java, aunque tengo instalada la 1.5. He visto por ahí que en un fichero de propiedades con un nombre adecuado y colocado en un sitio estratégico, se puede decir a maven con qué versión de java debe compilar. Mañana lo probaré.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114858437370131485?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://maven.apache.org/' title='Maven'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114858437370131485/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114858437370131485' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114858437370131485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114858437370131485'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/maven.html' title='Maven'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114850547239302478</id><published>2006-05-24T23:17:00.000+02:00</published><updated>2006-05-24T23:17:52.503+02:00</updated><title type='text'>Applet de ejemplo de un paint en java</title><content type='html'>Una cosilla que hace tiempo que tenía ganas de hacer, una especie de paint brush estilo windows en java. Por supuesto, está algo más cutre, pero por fín lo he hecho.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.chuidiang.com/java/codigo_descargable/appletpaint.php"&gt;Applet de ejemplo de un paint en java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Me llama la atención lo fácilmente ampliables que se pueden hacer las cosas con la orientación a objetos. Sin preocuparme demasiado de ello, pero si de no repetir código, se llega a una cosa que con poco esfuerzo más se puede ampliar mucho más.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114850547239302478?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chuidiang.com/java/codigo_descargable/appletpaint.php' title='Applet de ejemplo de un paint en java'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114850547239302478/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114850547239302478' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114850547239302478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114850547239302478'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/applet-de-ejemplo-de-un-paint-en-java.html' title='Applet de ejemplo de un paint en java'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114848169815017253</id><published>2006-05-24T16:33:00.000+02:00</published><updated>2006-05-24T19:38:53.593+02:00</updated><title type='text'>Eufemismos cacofónicos</title><content type='html'>En mi empresa sueltan una especie de curso-charla-jornada de "&lt;span style="font-weight: bold;"&gt;Hacia la madurez en la organización de desarrollo&lt;/span&gt;". También se hacen "&lt;span style="font-weight: bold;"&gt;Evaluaciones del desarrollo del desempeño&lt;/span&gt;" y gracias a esasa cosas gana premios a la "&lt;span style="font-weight: bold;"&gt;excelencia empresarial&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Pero aquí seguimos currando todos apretados los unos con los otros, con cortes frecuentes de luz, ordenadores obsoletos que heredamos de los jefes que se compran portátiles nuevos para poder ver el word.doc que les manda la secretaria. Eso sí, todo de forma "&lt;span style="font-weight: bold;"&gt;excelente&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Al último curso al que me obligaron a ir, casi todo fuera de horario laboral por supuesto, era un módulo de "&lt;span style="font-weight: bold;"&gt;Programa de Gestión avanzada&lt;/span&gt;". Ahí, entre otros pasatiempos, hicimos grupos para hacer avioncitos de papel. Luego salimos al pasillo para probar cada grupo sus prototipos y finalmente una competición con el mejor prototipo de cada grupo para ver cuál llegaba más lejos.&lt;br /&gt;&lt;br /&gt;La última fue un cartón satinado y multicolorín con el que se pretendía que hicieramos una pajarita, a la que podiamos dedicar un tiempo de un cuarto de hora, y se repartio a todos los empleados. No servía para nada (era propaganda para otro curso de estos cacofónico) y nos la dieron justo unos días antes de comunicarnos nuestra mini-casi-negativa subida de sueldo.&lt;br /&gt;&lt;br /&gt;En fin, da gusto ver como hoy día a la gente se le llena la boca con palabras...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114848169815017253?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114848169815017253/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114848169815017253' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114848169815017253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114848169815017253'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/eufemismos-cacofnicos.html' title='Eufemismos cacofónicos'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114846879443037225</id><published>2006-05-24T13:03:00.000+02:00</published><updated>2006-05-24T14:30:15.040+02:00</updated><title type='text'>Otro fondo de escritorio</title><content type='html'>Esta otro es otro fondo de escritorio que me gustó mucho. Se llama "Barriendo el caos" y lo saqué de &lt;a href="http://www.20minutos.es/noticia/64188/0/escritorios/lectores/finalistas/#"&gt;20minutos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/483/738/1600/267496.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/483/738/400/267496.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114846879443037225?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114846879443037225/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114846879443037225' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114846879443037225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114846879443037225'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/otro-fondo-de-escritorio.html' title='Otro fondo de escritorio'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114845254712075173</id><published>2006-05-24T08:30:00.000+02:00</published><updated>2006-05-24T08:35:47.136+02:00</updated><title type='text'>Mi fondo de escritorio</title><content type='html'>Aquí si fondo de escritorio favorito. Me lo baje de &lt;a href="http://www.upseros.com/wallpapers.php"&gt;upseros&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/483/738/1600/linux_001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://photos1.blogger.com/blogger/483/738/400/linux_001.jpg" alt="linux y windows" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114845254712075173?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114845254712075173/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114845254712075173' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114845254712075173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114845254712075173'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/mi-fondo-de-escritorio.html' title='Mi fondo de escritorio'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114841838860516698</id><published>2006-05-23T23:04:00.000+02:00</published><updated>2006-05-23T23:06:28.620+02:00</updated><title type='text'>Visor de HTML en java</title><content type='html'>En mi página de &lt;a href="http://www.chuidiang.com"&gt;apuntes de programación&lt;/a&gt; acabo de añadir un pequeño componente java que permite visualizar ficheros html. En el applet de ejemplo correspondiente he puesto una especie de &lt;a href="http://www.chuidiang.com/java/codigo_descargable/appletpaneles.php"&gt;mini-navegador sencillo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Creo que lo próximo será un Canvas que haga de base para un paint estilo windows, que permita pintar lineas de colores arrastrando con el ratón...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114841838860516698?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114841838860516698/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114841838860516698' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114841838860516698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114841838860516698'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/visor-de-html-en-java.html' title='Visor de HTML en java'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114830443347739932</id><published>2006-05-22T15:27:00.000+02:00</published><updated>2006-05-22T15:27:16.740+02:00</updated><title type='text'>El test del disparate | Kriptópolis</title><content type='html'>Aquí hay una compartiva entre "delitos" de pirateo y "delitos" habituales &lt;a href="http://www.kriptopolis.org/node/915"&gt;El test del disparate | Kriptópolis&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Está claro que el que tiene "enchufe", tiene "enchufe" y le hacen las leyes a medida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114830443347739932?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.kriptopolis.org/node/915' title='El test del disparate | Kriptópolis'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114830443347739932/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114830443347739932' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114830443347739932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114830443347739932'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/el-test-del-disparate-kriptpolis.html' title='El test del disparate | Kriptópolis'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114814132731986932</id><published>2006-05-20T18:08:00.000+02:00</published><updated>2006-05-20T18:08:47.423+02:00</updated><title type='text'>Manual ejemplos sencillos de programación avanzada c/linux gratis online</title><content type='html'>Me hacen gracia los de e-magister, que anuncian mi página web como &lt;a href="http://www.emagister.com/ejemplos-sencillos-programacion-avanzada-c-linux-cursos-355150.htm"&gt;Manual ejemplos sencillos de programación avanzada c/linux gratis online&lt;/a&gt;, hay que suscribirse a ellos para que puedan acceder a través de ellos a &lt;a href="http://www.geocities.com/chuidiang"&gt;mi antigua página&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No recuerdo que hayan establecido contacto conmigo para comentármelo, ver si me parece bien, etc. Simplemente lo han hecho. Bueno, es otra forma más de que traigan visitas al sitio. También me sirve para ver opiniones de la gente sobre la página, aunque en alguna de ellas da la impresión de que la gente cree que la página es de e-magister.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114814132731986932?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.emagister.com/ejemplos-sencillos-programacion-avanzada-c-linux-cursos-355150.htm' title='Manual ejemplos sencillos de programación avanzada c/linux gratis online'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114814132731986932/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114814132731986932' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114814132731986932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114814132731986932'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/manual-ejemplos-sencillos-de.html' title='Manual ejemplos sencillos de programación avanzada c/linux gratis online'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9869078.post-114810435444286325</id><published>2006-05-20T07:52:00.000+02:00</published><updated>2006-05-20T07:52:34.540+02:00</updated><title type='text'>stu nicholls | CSS PLaY | experiments with cascading style sheets</title><content type='html'>Me he quedado alucinado con &lt;a href="http://www.cssplay.co.uk/"&gt;stu nicholls | CSS PLaY | experiments with cascading style sheets&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Antes pensaba que css era simplemente para cambiar los colorines y fuentes. Cuando me metí un poco más en serio, vi que era una potente herramienta para colocar las cosas en su sitio, hacer columnas, menús laterales, etc, etc. Además, se podía cambiar la posición fácilmente, por lo que dar distintos aspectos a la misma página es bastante fácil (es un decir, hay que currarselo).&lt;br /&gt;&lt;br /&gt;Sin embargo, esta página que menciono me ha dejado alucinado. Convierte a css casi en un lenguaje de programación con un montón de posibilidades. Echadle simplemente un ojo por ejemplo al "&lt;a href="http://www.cssplay.co.uk/menu/image_magnifier.html"&gt;gradient magnifier&lt;/a&gt;". Simplemente hay que pasar el ratón por la escala que hay encima de la foto.&lt;br /&gt;&lt;br /&gt;También llama la atención el "&lt;a href="http://www.cssplay.co.uk/menu/slide_show.html"&gt;css slide show&lt;/a&gt;". Basta con pasar el ratón por encima de "set 1", "set 2" o "set 3" y luego pinchar sobre una de las fotos que aparecen.&lt;br /&gt;&lt;br /&gt;Va a haber que tomarse esto de css más en serio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9869078-114810435444286325?l=chuidiang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cssplay.co.uk/' title='stu nicholls | CSS PLaY | experiments with cascading style sheets'/><link rel='replies' type='application/atom+xml' href='http://chuidiang.blogspot.com/feeds/114810435444286325/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9869078&amp;postID=114810435444286325' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114810435444286325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9869078/posts/default/114810435444286325'/><link rel='alternate' type='text/html' href='http://chuidiang.blogspot.com/2006/05/stu-nicholls-css-play-experiments-with.html' title='stu nicholls | CSS PLaY | experiments with cascading style sheets'/><author><name>chuidiang</name><uri>http://www.blogger.com/profile/11674487485368681264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.chuidiang.com/iconos/serpi.gif'/></author><thr:total>0</thr:total></entry></feed>
