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

<channel>
	<title>Diario de Programación</title>
	<atom:link href="http://blog.chuidiang.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chuidiang.com</link>
	<description>Programación e informática en general</description>
	<pubDate>Tue, 06 May 2008 19:18:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Clase Desktop en Java 6</title>
		<link>http://blog.chuidiang.com/2008/05/06/clase-desktop-en-java-6/</link>
		<comments>http://blog.chuidiang.com/2008/05/06/clase-desktop-en-java-6/#comments</comments>
		<pubDate>Tue, 06 May 2008 19:15:52 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[Lenguajes de Programación]]></category>

		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=367</guid>
		<description><![CDATA[&#160;
Gracias a este tema del foro de java, he descubierto la clase Desktop de Java 6. Esta clase permite abrir e imprimir ficheros con la aplicaci&#243;n por defecto que indique el sistema operativo. Tambi&#233;n permite lanzar el navegador por defecto con una URI determinada o el cliente de correo.
Un c&#243;digo tan tonto como este

Desktop.getDesktop().open(new File(&#34;c:/pingucd/readme.txt&#34;));

en [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Clase Desktop en Java 6", url: "http://blog.chuidiang.com/2008/05/06/clase-desktop-en-java-6/" });</script>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Gracias a <a href="http://foro.chuidiang.com/index.php?topic=1265">este tema del foro de java</a>, he descubierto la clase <em>Desktop</em> de <em>Java 6</em>. Esta clase permite abrir e imprimir ficheros con la aplicaci&oacute;n por defecto que indique el sistema operativo. Tambi&eacute;n permite lanzar el navegador por defecto con una <em>URI </em>determinada o el cliente de correo.</p>
<p>Un c&oacute;digo tan tonto como este</p>
<blockquote>
<p>Desktop.getDesktop().open(new File(&quot;c:/pingucd/readme.txt&quot;));</p>
</blockquote>
<p>en windows abrir&aacute; el notepad<em> </em>con el fichero <em>readme.txt</em>. </p>
<p>Interesante y simplifica bastante algunas cosas.</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=Clase+Desktop+en+Java+6&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F05%2F06%2Fclase-desktop-en-java-6%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/05/06/clase-desktop-en-java-6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Python con MySQL</title>
		<link>http://blog.chuidiang.com/2008/05/01/python-con-mysql/</link>
		<comments>http://blog.chuidiang.com/2008/05/01/python-con-mysql/#comments</comments>
		<pubDate>Thu, 01 May 2008 05:01:49 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[Lenguajes de Programación]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[base de datos]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=366</guid>
		<description><![CDATA[&#160;
Hay una tonter&#237;a de la conexi&#243;n de python con MySQL que me ha llamado la atenci&#243;n y aprovecho para comentar aqu&#237;. El tema es que seg&#250;n obtengamos el cursor de la conexi&#243;n para hacer las consultas, podemos acceder a los resultados de una manera o de otra.
Si obtenemos el cursor de esta manera

conn = MySQLdb.connect [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Python con MySQL", url: "http://blog.chuidiang.com/2008/05/01/python-con-mysql/" });</script>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Hay una tonter&iacute;a de la conexi&oacute;n de <em>python </em>con <em>MySQL </em>que me ha llamado la atenci&oacute;n y aprovecho para comentar aqu&iacute;. El tema es que seg&uacute;n obtengamos el cursor de la conexi&oacute;n para hacer las consultas, podemos acceder a los resultados de una manera o de otra.</p>
<p>Si obtenemos el cursor de esta manera</p>
<blockquote>
<p>conn = MySQLdb.connect (&#8230;.)<br />
cursor = conn.cursor()</p>
</blockquote>
<p>una vez que hagamos una consulta y obtengamos una de las filas resultado, debemos acceder a cada uno de los campos usando un &iacute;ndice de un array</p>
<blockquote>
<p>cursor.execute (&quot;select * from tabla&quot;)<br />
fila = cursor.fetchone()<br />
# para acceder al primer campo<br />
print fila[0]&nbsp;&nbsp;</p>
</blockquote>
<p>Sin embargo, al obtener el cursor podemos decir que queremos que las filas sean <em>dictionaries</em>, en vez de <em>tuplas</em>, de manera que podemos acceder a los campos usando el nombre del campo, en vez de un &iacute;ndice. Para ello, basta con obtener el cursor de esta manera</p>
<blockquote>
<p>conn = MySQLdb.connect (&#8230;)<br />
cursor = conn.cursor(MySQLdb.cursor.DictCursor)</p>
</blockquote>
<p>y as&iacute; podemos acceder a los campos a trav&eacute;s de su nombre</p>
<blockquote>
<p>cursor.execute(&quot;select * from tabla&quot;)<br />
fila = cursor.fecthone()<br />
# para acceder a uno de los campos<br />
print fila[&quot;nombre_columna&quot;]</p>
</blockquote>
<blockquote></blockquote>
<p>Una tonter&iacute;a, pero estoy acostumbrado a java y a C++ y no a lenguajes tan flexibles.</p>
<p>
&nbsp;</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=Python+con+MySQL&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F05%2F01%2Fpython-con-mysql%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/05/01/python-con-mysql/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pequeño éxito &#8230; ¡Y más trabajo!</title>
		<link>http://blog.chuidiang.com/2008/04/30/pequeno-exito-%c2%a1y-mas-trabajo/</link>
		<comments>http://blog.chuidiang.com/2008/04/30/pequeno-exito-%c2%a1y-mas-trabajo/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 03:51:28 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[trabajo]]></category>

		<category><![CDATA[varios]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=365</guid>
		<description><![CDATA[Como coment&#233; hace unos d&#237;as, termin&#233; mi peque&#241;a aplicaci&#243;n en python que permite recoger de la gente los tiempos que han dedicado a cada uno de los proyectos y luego genera autom&#225;ticamente un Excel para entregar al encargado de guardar todo esto oportunamente.
Pues bien, esa aplicaci&#243;n tonta ahorra a mi jefa un trabajo de un [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Pequeño éxito &#8230; ¡Y más trabajo!", url: "http://blog.chuidiang.com/2008/04/30/pequeno-exito-%c2%a1y-mas-trabajo/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Como coment&eacute; hace unos d&iacute;as, <a href="http://blog.chuidiang.com/2008/04/23/python-una-de-cal-y-una-de-arena/">termin&eacute; mi peque&ntilde;a aplicaci&oacute;n en python</a> que permite recoger de la gente los tiempos que han dedicado a cada uno de los proyectos y luego genera autom&aacute;ticamente un Excel para entregar al encargado de guardar todo esto oportunamente.</p>
<p>Pues bien, esa aplicaci&oacute;n tonta ahorra a mi jefa un trabajo de un par de d&iacute;as de andar preguntando a cada uno a qu&eacute; se ha dedicado y generar el excel a mano, as&iacute; que le ha encantado. Tanto, que ha empezado a coment&aacute;rselo a los dem&aacute;s jefes con el mismo problema y tambi&eacute;n les ha encantado. &iexcl;&iexcl; Todos quieren !!.</p>
<p>Y claro, cada uno quiere mejoras, a&ntilde;adidos y cosas variadas. Lo que era una aplicaci&oacute;n cutre, que b&aacute;sicamente es un script capaz de admitir los datos de la gente desde el navegador y generar un excel, tiene pinta de que se va a convertir con el tiempo en una se&ntilde;ora aplicaci&oacute;n.</p>
<p>Los jefes que tienen gente, quieren usarla, as&iacute; que en principio les vale tal cual. La &uacute;nica pega es que cada uno luego querr&aacute; el excel de su gente en concreto y no un excel general con todos. Eso me har&aacute; meter una nueva columna en la tabla &quot;gente&quot;, para indicar qui&eacute;n es su jefe. Y me obligar&aacute; en la parte de obtener resultados a poner un peque&ntilde;o combobox que diga &quot;elige al jefe cuya gente quieres convertir en excel&quot;.</p>
<p>Por otra parte, est&aacute;n los jefes responsables de los proyectos, con poca gente a su cargo, pero si con un proyecto con muchas contrase&ntilde;as y muchos dineros. Para ellos el excel es lo de menos, pero lo que si est&aacute;n pidiendo es que quieren una forma de ver cu&aacute;nta gente carga a su proyecto e incluso un hist&oacute;rico, para saber en cada una de las contrase&ntilde;as del proyecto, cu&aacute;nto llevan gastado. Tendr&eacute; que poner una nueva consulta en la que seleccionando un proyecto salga un listado de toda la gente que se ha dedicado a &eacute;l.</p>
<p>En fin, tiene pinta de que va a ir creciendo. Lo que generaba un excel con unas veintitantas personas dedicadas a unos siete u otro proyectos, van a ser ahora cerca de sesenta personas dedicadas a una veintena de proyectos. Lo que era una consulta simple, se va a convertir en un par de consultas con cl&aacute;usula where pedida desde la web.</p>
<p>Y hablando de peque&ntilde;os &eacute;xitos por tareas hechas de motu propio. Hace ya un par de a&ntilde;os se me ocurri&oacute; que una wiki pod&iacute;a ser buena idea y la instal&eacute;. Dentro del departamento se va usando, como siempre, unos pocos m&aacute;s que otros muchos. Pero el caso es que se ha ido corriendo la voz por la empresa. El otro d&iacute;a tuve que mostrarle la wiki a uno de los jefazos (cosa que ha sido bastante comentada entre mis compa&ntilde;eros con su parte de co&ntilde;a <img src='http://blog.chuidiang.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ). Parece que quieren poner una a nivel de la empresa.</p>
<p>Todo esto me recuerda mucho al art&iacute;culo que le&iacute; de Joel Spolsky &quot;<a href="http://spanish.joelonsoftware.com/Articles/GettingThingsDoneWhenYour.html">Logrando resultados cuande se es un pe&oacute;n</a>&quot;. Cuando ves una necesidad que tus jefes no resuelven, una buena opci&oacute;n es perder un poco de tiempo en resolverla t&uacute; y si se hace bien, se acaba aceptando por todos. Tambi&eacute;n me da un poco de pena comprobar que muchos de los problemas se resuelven o algunas cosas salen adelante porque alg&uacute;n &quot;currito&quot; tiene la iniciativa de resolver el problema o tirar del carro, sin que nadie se lo pida y sin que ning&uacute;n jefe, te&oacute;ricamente responsable del tema, tome cartas en el asunto y organice o apoye la iniciativa desde el principio (y, por supuesto, ponga los medios).</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=Peque%C3%B1o+%C3%A9xito+%26%238230%3B+%C2%A1Y+m%C3%A1s+trabajo%21&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F30%2Fpequeno-exito-%25c2%25a1y-mas-trabajo%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/30/pequeno-exito-%c2%a1y-mas-trabajo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Equivalentes entre celebridades y lenguajes de programación</title>
		<link>http://blog.chuidiang.com/2008/04/29/equivalentes-entre-celbridades-y-lenguajes-de-programacion/</link>
		<comments>http://blog.chuidiang.com/2008/04/29/equivalentes-entre-celbridades-y-lenguajes-de-programacion/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 13:52:44 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[enlaces]]></category>

		<category><![CDATA[varios]]></category>

		<category><![CDATA[chistes]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=364</guid>
		<description><![CDATA[Pues eso, equivalentes entre celebridades y lenguajes de programaci&#243;n.
<script type="text/javascript">SHARETHIS.addEntry({ title: "Equivalentes entre celebridades y lenguajes de programación", url: "http://blog.chuidiang.com/2008/04/29/equivalentes-entre-celbridades-y-lenguajes-de-programacion/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Pues eso, <a href="http://www.aeromental.com/2008/04/29/equivalentes-entre-celebridades-con-lenguajes-de-programacion-y-frameworks/" target="_blank">equivalentes entre celebridades y lenguajes de programaci&oacute;n</a>.</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=Equivalentes+entre+celebridades+y+lenguajes+de+programaci%C3%B3n&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F29%2Fequivalentes-entre-celbridades-y-lenguajes-de-programacion%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/29/equivalentes-entre-celbridades-y-lenguajes-de-programacion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>sitemap para SMF</title>
		<link>http://blog.chuidiang.com/2008/04/25/sitemap-para-smf/</link>
		<comments>http://blog.chuidiang.com/2008/04/25/sitemap-para-smf/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 04:34:13 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[google]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[web]]></category>

		<category><![CDATA[foro]]></category>

		<category><![CDATA[seo]]></category>

		<category><![CDATA[sitemap]]></category>

		<category><![CDATA[smf]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2008/04/25/sitemap-para-smf/</guid>
		<description><![CDATA[Hace tiempo coment&#233; en un post que el foro SMF es un desastre para que lo indexe google y, de hecho, no aparec&#237;a en google ninguno de los temas de mi foro de java. Intent&#233; instalar el plugin seo4smf para tratar de arreglarlo, pero no consegu&#237; que me funcionara. Al final, como coment&#233; en aquel [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "sitemap para SMF", url: "http://blog.chuidiang.com/2008/04/25/sitemap-para-smf/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo coment&eacute; en un post que <a href="http://blog.chuidiang.com/2008/03/25/indexado-en-google-del-foro-smf/">el foro SMF es un desastre para que lo indexe google</a> y, de hecho, no aparec&iacute;a en google ninguno de los temas de mi <a href="http://foro.chuidiang.com">foro de java</a>. Intent&eacute; instalar el plugin <a href="http://custom.simplemachines.org/mods/index.php?mod=518">seo4smf</a> para tratar de arreglarlo, pero no consegu&iacute; que me funcionara. Al final, como coment&eacute; en aquel post, me hice un peque&ntilde;o programa java que generara un fichero sitemap.xml para colgarlo en el foro.</p>
<p>Esa opci&oacute;n no era buena del todo. Consegu&iacute; que google indexara los temas del foro, pero ten&iacute;a que actualizar el sitemap peri&oacute;dicamente a mano. As&iacute; que decid&iacute; hacerme un peque&ntilde;o script sitemap.php que hiciera de sitemap para google de forma autom&aacute;tica.</p>
<p>Este script, al llamarlo, consulta en la base de datos el campo id_topic de la tabla smf_topics. Es la &uacute;nica informaci&oacute;n que necesita para generar el fichero XML de sitemap. El script dice que devuelve un &quot;Content-Type : application/xml&quot; para que cuando google lo consulte piense que es un fichero XML, luego env&iacute;a los tags XML correspondientes al sitemap.</p>
<p>Adjunto el c&oacute;digo php por si a alguien le interesa</p>
<blockquote>
<p>&lt;?php<br />
header(&#8217;Content-Type: application/xml&#8217;);<br />
include (&#8217;Settings.php&#8217;);</p>
<p>print (&#8217;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#8217;);<br />
print (&#8217;&lt;urlset xmlns=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&gt;&#8217;);</p>
<p>$link = mysql_connect ($db_server, $db_user, $db_passwd) or die (&quot;&lt;center&gt;No se puede conectar con la base de datos\n&lt;/center&gt;\n&quot;);<br />
$query=&#8217;select id_topic from smf_topics&#8217;;<br />
$result=mysql_db_query ($db_name, $query, $link);</p>
<p>while ($row = mysql_fetch_array ($result))<br />
{<br />
&nbsp;&nbsp; print (&#8217;&lt;url&gt;&#8217;);<br />
&nbsp;&nbsp; print (&#8217;&lt;loc&gt;&#8217;);<br />
&nbsp;&nbsp; print (&#8217;http://foro.chuidiang.com/index.php?topic=&#8217;.$row[0]);<br />
&nbsp;&nbsp; print (&#8217;&lt;/loc&gt;&#8217;);<br />
&nbsp;&nbsp; print (&#8217;&lt;/url&gt;&#8217;);<br />
}<br />
mysql_free_result($result);<br />
print (&#8217;&lt;/urlset&gt;&#8217;);<br />
?&gt;
</p>
</blockquote>
<p>El include &quot;Settings.php&quot; &uacute;nicamente incluye un fichero de configuraci&oacute;n del foro, en el que est&aacute;n las variables con el nombre de la base de datos $db_name, el usuario $db_user y la password $db_passwd. Ojo, no le busqueis pegas, que las tiene. Yo no tengo ni idea de PHP.</p>
<p>&nbsp;</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=sitemap+para+SMF&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F25%2Fsitemap-para-smf%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/25/sitemap-para-smf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Python: Una de cal y una de arena</title>
		<link>http://blog.chuidiang.com/2008/04/23/python-una-de-cal-y-una-de-arena/</link>
		<comments>http://blog.chuidiang.com/2008/04/23/python-una-de-cal-y-una-de-arena/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 03:56:28 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[python]]></category>

		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2008/04/23/python-una-de-cal-y-una-de-arena/</guid>
		<description><![CDATA[S&#233; que &#34;una de cal y una de arena&#34; significa una cosa buena y una cosa mala. El problema es que nunca he sabido si la cal es la mala, la arena la buena o a la viceinversa.
Hace tiempo coment&#233; que iba a hacer una peque&#241;a aplicaci&#243;n web en python para pedirle a la gente [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Python: Una de cal y una de arena", url: "http://blog.chuidiang.com/2008/04/23/python-una-de-cal-y-una-de-arena/" });</script>]]></description>
			<content:encoded><![CDATA[<p>S&eacute; que &quot;una de cal y una de arena&quot; significa una cosa buena y una cosa mala. El problema es que nunca he sabido si la cal es la mala, la arena la buena o a la viceinversa.</p>
<p>Hace tiempo coment&eacute; que iba a hacer una <a href="http://blog.chuidiang.com/2008/02/04/pythoneando/">peque&ntilde;a aplicaci&oacute;n web en <em>python</em></a> para pedirle a la gente que metiera cada mes el tiempo que dedica a cada uno de los proyectos, de forma que luego sacara en excel una tabla con dichos tiempos. Pues bien, ya est&aacute; hecha (un poco de aquella manera) y funcionando. As&iacute; que tras esta m&iacute;nima experiencia con <em>python</em>, ah&iacute; van un par de impresiones, una buena y otra mala, una de cal y otra de arena.</p>
<p><strong>La cosa mala</strong>: Me da la impresi&oacute;n, al igual que casi todos los lenguajes de script en los que defines las cosas sobre la marcha, que <em>python </em>es un lenguaje muy dif&iacute;cil de mantener. Al no definirse claramente los tipos, cuando en una funci&oacute;n o m&eacute;todo recibes par&aacute;metros, no tienes ni idea de lo que recibes, salvo que lo pongas muy bien comentado. De hecho, en eclipse con el <a href="http://pydev.sourceforge.net/">plugin pydev</a> para programar en <em>python</em>, el autocompletar que te muestra los nombres de atributos y m&eacute;todos de las clases, eclipse s&oacute;lo te puede mostrar aquellos atributos y clases que hayas usado previamente en el c&oacute;digo.</p>
<p>En <em>java</em>, por ejemplo, hay que declararlo todo, por lo que en cualquier momento sabes cada variable de qu&eacute; tipo es y qu&eacute; cosas tiene o a las que puedes llamar. No dependes (salvo para entenderlo mejor) de que el programador se haya acordado de comentar adecuadamente el c&oacute;digo.
</p>
<p><strong>La cosa buena</strong>: Precisamente esta falta de tipado y el poder meter una manzana donde se espera un higo me da la impresi&oacute;n que hace de <em>python </em>un lenguaje muy flexible, y pongo un ejemplo. Puesto que mi aplicaci&oacute;n es web, en casi todos los m&eacute;todos/funciones que he hecho recibo de par&aacute;metro un <em>Request Object</em>, que el mismo servidor web se encarga de pasarme y con el que tengo acceso a los par&aacute;metros de la petici&oacute;n http, con el que puedo escribir los tag html que se ver&aacute;n en el navegador, etc. Pues bien, para mis pruebas sin servidor web desde eclipse, me hice una clase <em>MiClase </em>con un m&eacute;todo <em>write()</em> similar al de <em>Request Object</em>, lo instanci&eacute; y llam&eacute; a mis m&eacute;todos a pelo pas&aacute;ndoles una instancia de <em>MiClase</em>. El c&oacute;digo &quot;trag&oacute;&quot; con eso perfectamente, y la salida html sal&iacute;a por donde dec&iacute;a <em>MiClase</em>, es decir, por pantalla normal.</p>
<p>En otros lenguajes como <em>java </em>habr&iacute;a sido necesario heredar del objeto en cuesti&oacute;n y sobreescribir los m&eacute;todos necesarios, quiz&aacute;s incluso declarar un constructor obligatorio con los par&aacute;metros raros que tuviera la clase padre. En <em>java </em>es aconsejable el uso de interfaces precisamente por este motivo, para poder cambiar una cosa por otra sin &quot;cargar&quot; con la clase original heredando de ella. En <em>python </em>no hacen falta interfaces. Basta con que la clase sustituta tenga los m&eacute;todos que se usen de la clase original.</p>
<p>Todo esto me hace preguntarme si lo del desarrollo r&aacute;pido de lenguajes como <em>python</em> se refiere a que no es necesario declarar los tipos (desde luego, eso ahorra tiempo, pero me parece un tiempo m&iacute;nimo respecto a todo el proceso o el tiempo que puedes perder en depuraci&oacute;n mientras decides si una variable es de un tipo u otro), o bien se debe a esta flexibilidad del lenguaje, que permite mezclar churras con merinas y todo funciona como debe.</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=Python%3A+Una+de+cal+y+una+de+arena&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F23%2Fpython-una-de-cal-y-una-de-arena%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/23/python-una-de-cal-y-una-de-arena/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Más spam en la Chuwiki</title>
		<link>http://blog.chuidiang.com/2008/04/21/mas-spam-en-la-chuwiki/</link>
		<comments>http://blog.chuidiang.com/2008/04/21/mas-spam-en-la-chuwiki/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 19:27:05 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[web]]></category>

		<category><![CDATA[chuwiki]]></category>

		<category><![CDATA[mediawiki]]></category>

		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2008/04/21/mas-spam-en-la-chuwiki/</guid>
		<description><![CDATA[Llevo unos d&#237;as recibiendo spam en la Chuwiki. Varias veces al d&#237;a crean una p&#225;gina de nombre &#34;Titulo incorrecto&#34; con un mont&#243;n de enlaces de spam y desde IPs distintas.
Llevo varios d&#237;as borrando esa p&#225;gina. Al ver que el tema segu&#237;a, me decid&#237; a bloquear las IPs de donde proviene ese spam, pero parece que [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Más spam en la Chuwiki", url: "http://blog.chuidiang.com/2008/04/21/mas-spam-en-la-chuwiki/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Llevo unos d&iacute;as recibiendo spam en la <a href="http://www.chuidiang.com/chuwiki">Chuwiki</a>. Varias veces al d&iacute;a crean una p&aacute;gina de nombre &quot;Titulo incorrecto&quot; con un mont&oacute;n de enlaces de spam y desde IPs distintas.</p>
<p>Llevo varios d&iacute;as borrando esa p&aacute;gina. Al ver que el tema segu&iacute;a, me decid&iacute; a bloquear las IPs de donde proviene ese spam, pero parece que no se les acaban. Seguramente est&aacute;n usando un proxy de IP din&aacute;mica, de esos que sirven para ocultar la IP real.</p>
<p>Mirando en la documentaci&oacute;n de MediaWiki veo que existen cosas como Captchas estilo <a href="http://www.mediawiki.org/wiki/Extension:ConfirmEdit">ConfirmEdit</a>, pero no parece que sea de f&aacute;cil instalaci&oacute;n y sobre todo porque en los primeros p&aacute;rrafos empiezan a contar rollos de versiones que, por supuesto, yo no tengo.</p>
<p>As&iacute; que al final, encontr&eacute; c&oacute;mo hacer para que un usuario no registrado no pueda crear p&aacute;ginas, que b&aacute;sicamente consiste en editar el fichero LocalSettings.php y a&ntilde;adirle una l&iacute;nea como</p>
<blockquote>
<p>$wgGroupPermissions[&#8217;*'][&#8217;create&#8217;] = false;</p>
</blockquote>
<p>con lo que no permite a usuarios an&oacute;nimos (debe ser el *) crear (por lo de create) p&aacute;ginas nuevas.</p>
<p>Es una peque&ntilde;a limitaci&oacute;n, pero supongo que a alguien que quiera crear una p&aacute;gina y se vaya a poner a escribir algo en serio en ella, no le costar&aacute; mucho m&aacute;s esfuerzo registrarse y darse de alta.</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=M%C3%A1s+spam+en+la+Chuwiki&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F21%2Fmas-spam-en-la-chuwiki%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/21/mas-spam-en-la-chuwiki/feed/</wfw:commentRss>
		</item>
		<item>
		<title>En software &#8230;</title>
		<link>http://blog.chuidiang.com/2008/04/18/en-software/</link>
		<comments>http://blog.chuidiang.com/2008/04/18/en-software/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 14:22:37 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[varios]]></category>

		<category><![CDATA[chorradas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2008/04/18/en-software/</guid>
		<description><![CDATA[En software podemos hacer las cosas bien o como siempre.
<script type="text/javascript">SHARETHIS.addEntry({ title: "En software &#8230;", url: "http://blog.chuidiang.com/2008/04/18/en-software/" });</script>]]></description>
			<content:encoded><![CDATA[<p>En software podemos hacer las cosas bien o como siempre.</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=En+software+%26%238230%3B&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F18%2Fen-software%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/18/en-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Asquito de Windows Vista</title>
		<link>http://blog.chuidiang.com/2008/04/15/asquito-de-windows-vista/</link>
		<comments>http://blog.chuidiang.com/2008/04/15/asquito-de-windows-vista/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 20:53:32 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[varios]]></category>

		<category><![CDATA[vista]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2008/04/15/asquito-de-windows-vista/</guid>
		<description><![CDATA[Antes, con windows xp, ten&#237;a ciertos problemas con los puertos USB. De alguna forma, cuando conectas un determinado dispositivo a un puerto USB, digamos un pendrive, windows se acuerda, de forma que cuando otro d&#237;a vuelves a conectar el mismo pendrive, intenta asignarle la misma letra. Sin embargo, quiz&#225;s tambi&#233;n intenta algo parecido con el [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Asquito de Windows Vista", url: "http://blog.chuidiang.com/2008/04/15/asquito-de-windows-vista/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Antes, con windows xp, ten&iacute;a ciertos problemas con los puertos USB. De alguna forma, cuando conectas un determinado dispositivo a un puerto USB, digamos un pendrive, windows se acuerda, de forma que cuando otro d&iacute;a vuelves a conectar el mismo pendrive, intenta asignarle la misma letra. Sin embargo, quiz&aacute;s tambi&eacute;n intenta algo parecido con el puerto USB en s&iacute;. De esta forma, si conectas ahora al primer USB un disco duro, se le asigna a ese disco duro la misma letra que se hab&iacute;a asignado al pendrive. Si ahora enchufas el pendrive en otro puerto USB, windows se l&iacute;a y lo asigna a la misma letra. Los dos dispositivos, a la vez, con la misma letra.</p>
<p>Al menos antes, con windows xp, ten&iacute;as la opci&oacute;n de irte al administrador de discos y cambiar la letra, de forma que volv&iacute;as a ver ambos dispositivos.</p>
<p>Sin embargo, windows vista es peor en todo esto. Estas son algunas de las cosas que me han pasado con Windows Vista:</p>
<ul>
<li>Conectar un disco duro externo y montarse, pero no verse la letra de unidad. Los programas que lo usan si lo ven y pueden usarlo, pero desde el explorador de archivos no se ve siquiera la letra de la unidad.</li>
<li>Desconectar un pendrive de forma correcta y todo va bien&#8230;. excepto la que la letra de la unidad no desaparece del explorador de archivos, de ninguna manera.</li>
<li>Cuando hay problemas de este estilo, el administrador de discos no me hace ni pu&ntilde;etero caso a lo de cambiar la letra de unidad.</li>
</ul>
<p>S&iacute;, s&iacute;, ya se que linux es mejor, pero s&oacute;lo si sabes pelearte con cosas como ntfs-3g, y ponerlo para que &quot;salte&quot; seg&uacute;n enchufas un pendrive/disco externo, y sabes donde tocar y sabes los ficheros de configuraci&oacute;n correspondientes y sabes todo lo que tienes que saber y algo m&aacute;s.</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=Asquito+de+Windows+Vista&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F15%2Fasquito-de-windows-vista%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/15/asquito-de-windows-vista/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Porque no soy de agobiarme&#8230;</title>
		<link>http://blog.chuidiang.com/2008/04/14/porque-no-soy-de-agobiarme/</link>
		<comments>http://blog.chuidiang.com/2008/04/14/porque-no-soy-de-agobiarme/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 16:33:26 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
		
		<category><![CDATA[varios]]></category>

		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/2008/04/14/porque-no-soy-de-agobiarme/</guid>
		<description><![CDATA[No me agobio porque no soy de los que se agobia, pero deber&#237;a agobiarme con la situaci&#243;n que hay.
Me acaban de poner a llevar un grupo de gente de software que colabora en muchos proyectos y me encuentro con:

Un mont&#243;n de jefes de proyectos que quieren todo ya, para ayer.
Un mont&#243;n de c&#243;digo reci&#233;n hecho, [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Porque no soy de agobiarme&#8230;", url: "http://blog.chuidiang.com/2008/04/14/porque-no-soy-de-agobiarme/" });</script>]]></description>
			<content:encoded><![CDATA[<p>No me agobio porque no soy de los que se agobia, pero deber&iacute;a agobiarme con la situaci&oacute;n que hay.</p>
<p>Me acaban de poner a llevar un grupo de gente de software que colabora en muchos proyectos y me encuentro con:</p>
<ul>
<li>Un mont&oacute;n de jefes de proyectos que quieren todo ya, para ayer.</li>
<li>Un mont&oacute;n de c&oacute;digo reci&eacute;n hecho, sin probar y que no es lo suficientemente bueno como para aprovecharlo en otros proyectos sin unas grandes dosis de refactorizaci&oacute;n.</li>
<li>Un mont&oacute;n de jefes de proyectos que quieren todo ya, para ayer.</li>
<li>Otro mont&oacute;n de c&oacute;digo hecho de hace tiempo, probado, pero que tiene muchos parches poco elegantes por encima y que se hace duro de usar para alguien que no lo conoce.</li>
<li>Un mont&oacute;n de jefes de proyectos que quieren todo ya, para ayer.</li>
<li>Un mont&oacute;n de gente nueva con los conocimientos justos de java y escasos de los sistemas que hacen.</li>
<li>Un mont&oacute;n de jefes de proyectos que quieren todo ya, para ayer</li>
<li>Otro mont&oacute;n de gente nueva en la software factory, de los que no s&eacute; siquiera si saben java (algunos me consta que s&iacute; lo saben), pero desde luego, no conocen nuestros sistemas NADA.</li>
<li>y finalmente, un mont&oacute;n de jefes de proyecto que quieren todo ya, para ayer.</li>
</ul>
<p>Pues eso, que no me agobio porque no soy de agobiarme y como le&iacute; en cierto sitio, &quot;si todo es importante, es que nada lo es&quot;.</p>
<p><a href="http://sharethis.com/item?&wp=2.5&amp;publisher=50ad8d94-f314-4578-80ff-b48ea4bef211&amp;title=Porque+no+soy+de+agobiarme%26%238230%3B&amp;url=http%3A%2F%2Fblog.chuidiang.com%2F2008%2F04%2F14%2Fporque-no-soy-de-agobiarme%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/04/14/porque-no-soy-de-agobiarme/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
