<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Juanmi Rodriguez &#187; programación</title>
	<atom:link href="http://juanmirodriguez.es/tag/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://juanmirodriguez.es</link>
	<description>Algo más que un programador web</description>
	<lastBuildDate>Sun, 22 Jan 2012 15:57:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Entrenando para programar mejor</title>
		<link>http://juanmirodriguez.es/2011/02/entrenando-para-programar-mejor/</link>
		<comments>http://juanmirodriguez.es/2011/02/entrenando-para-programar-mejor/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 22:58:47 +0000</pubDate>
		<dc:creator>Juanmi</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[recursos gratis]]></category>

		<guid isPermaLink="false">http://poramoralcodigo.juanmirodriguez.es/?p=119</guid>
		<description><![CDATA[Programar es una actividad creativa, que necesita de ingenio, razonamiento, orden y disciplina para llegar a buen puerto. Pero, como todos los trabajos, hay periodos de tiempo en los que podemos estar haciendo la misma tarea, o el mismo tipo &#8230; <a href="http://juanmirodriguez.es/2011/02/entrenando-para-programar-mejor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Programar es una actividad creativa, que necesita de ingenio, razonamiento, orden y disciplina para llegar a buen puerto. Pero, como todos los trabajos, hay periodos de tiempo en los que podemos estar haciendo la misma tarea, o el mismo tipo de tareas, de forma repetida durante mucho tiempo. Esto hace que programar deje de ser ese reto diario, estimulante para nuestra mente curiosa, y se convierta en una cuestión de perseverancia y pulsaciones por minuto.</p>
<p>Hay días que echo de menos los ejercicios de la facultad, los descubrimientos de algunas clases, las demostraciones ingeniosas y las soluciones inesperadas a problemas que parecían imposibles. La realidad es que esos problemas no suelen darse en el día a día. En la facultad se tiran años machacándote con problemas que cuesta tan siquiera entender cuando luego la mayor parte del trabajo que harás consistirá en mostrar formularios, recoger datos, guardarlos, mostrarlos y vuelta a empezar.</p>
<p>Para los que ahora mismo estéis asintiendo con la cabeza con los ojillos tristes, tengo buenas noticias: ¡Ejercicios! Esta semana he encontrado un par de páginas de ejercicios de programación, y me he decidido a practicar en casa con problemas que me parezcan más estimulantes y más difíciles para mantener esa chispa y mejorar como programador. Y también me he comprometido a tratar de que este blog tenga vida gracias a eso. Intentaré postear lo más a menudo posible con ejercicios o retos de programación intentando a la vez que sean útiles de alguna forma.El blog lleva un tiempo parado porque no sabía que rumbo darle y creo que por fin lo he encontrado.</p>
<p>Mientras, dejo una página que me ha encantado sobre ejercicios. No son de los útiles, son matemáticos <img src="http://juanmirodriguez.es/wp-content/themes/grey-opaque/images/smilies/icon_razz.gif" alt="Smilie: :P" title="Smilie: :P" /> Pero sí que sirven para mantener la mente despierta y para sorprendernos con las distintas soluciones posibles al mismo problema:</p>
<p><a href="http://projecteuler.net " target="_blank">ProjectEuler</a></p>
<p>En la página hay más de 300 problemas ordenados por dificultad. Una vez registrado se desbloquea gran parte de la web y puedes ver estadísticas y un historial de tu progreso. Además, cuando resuelves un problema puedes ver su hilo en el foro donde los usuarios comentan las posibles soluciones. Desde luego mucho mejor que hacer sudocus <img src="http://juanmirodriguez.es/wp-content/themes/grey-opaque/images/smilies/icon_wink.gif" alt="Smilie: ;)" title="Smilie: ;)" /></p>
]]></content:encoded>
			<wfw:commentRss>http://juanmirodriguez.es/2011/02/entrenando-para-programar-mejor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El futuro de la web</title>
		<link>http://juanmirodriguez.es/2010/05/el-futuro-de-la-web/</link>
		<comments>http://juanmirodriguez.es/2010/05/el-futuro-de-la-web/#comments</comments>
		<pubDate>Sat, 29 May 2010 20:06:27 +0000</pubDate>
		<dc:creator>Juanmi</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://poramoralcodigo.juanmirodriguez.es/?p=88</guid>
		<description><![CDATA[La tecnología sigue avanzando. Cada vez la gente está más informatizada, hay más programadores y diseñadores que viven de internet y van siendo minoría aquellos que no saben usar un ordenador, no se interesan por la tecnología o no tienen &#8230; <a href="http://juanmirodriguez.es/2010/05/el-futuro-de-la-web/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>La tecnología sigue avanzando. Cada vez la gente está más informatizada, hay más programadores y diseñadores que viven de internet y van siendo minoría aquellos que no saben usar un ordenador, no se interesan por la tecnología o no tienen correo electrónico. La web avanza también, google revolucionó el acceso a la información,  la wikipedia clavó una bandera por la cultura libre, la web 2.0 le dio el poder de expresión a la gente con los blogs, youtube y la posibilidad de comentar y opinar sobre todo lo que leemos y la red social ha irrumpido con fuerza cambiando casi el concepto de amistad (a veces creemos saber más de aquellos amigos que actualizan a menudo en facebook que de aquellos que vemos a diario&#8230<img src="http://juanmirodriguez.es/wp-content/themes/grey-opaque/images/smilies/icon_wink.gif" alt="Smilie: ;)" title="Smilie: ;)" />.</p>
<p>Es cierto que aun hay páginas que parecen salidas de principios de los 90, llanas, sin posibilidad de interactuar con ellas, solo leer y ver unas imágenes que no sabemos ni de donde vienen&#8230; Pero aún así, la gente con conocimientos e iniciativa sigue buscando nuevas formas de mejorar la web, de hacerla más interactiva, más amena y más dinámica de lo que ya es. Y poco a poco vamos oyendo hablar de HTML5, CSS3, javascript y demás palabrejos. Con <a href="http://www.apple.com/hotnews/thoughts-on-flash/" target="_blank">Steve Jobs cavando una fosa para flash</a>, <a href="http://www.chromeexperiments.com/" target="_blank">Google apostando fuerte</a> por todas estas nuevas tecnologías y <a href="http://caniuse.com/" target="_blank">Microsoft cazando moscas</a> parece evidente que en el futuro habrá muchos cambios en la web, que será más interactiva, libre y accesible. Estaremos pendientes porque parece <a href="http://spielzeugz.de/html5/liquid-particles.html" target="_blank">divertido</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://juanmirodriguez.es/2010/05/el-futuro-de-la-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Si solo tienes un martillo&#8230;</title>
		<link>http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/</link>
		<comments>http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 19:19:01 +0000</pubDate>
		<dc:creator>Juanmi</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[consejos]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://poramoralcodigo.juanmirodriguez.es/?p=82</guid>
		<description><![CDATA[&#8230; Al final todo acaba pareciéndote un clavo. He leído este refrán en alguna ocasión en artículos técnicos y creo que tiene mucha razón. No voy a escribir mucho sobre él, mis retinas no lo soportarían, pero creo que es &#8230; <a href="http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&#8230; Al final todo acaba pareciéndote un clavo. He leído este refrán en alguna ocasión en artículos técnicos y creo que tiene mucha razón. No voy a escribir mucho sobre él, mis retinas no lo soportarían, pero creo que es bastante claro.</p>
<p>Yo estoy totalmente de acuerdo, es necesario conocer y aprender a utilizar otras herramientas, lenguajes de programación, técnicas, APIs&#8230; Hay un mundo enorme ahí fuera que puede facilitarnos mucho la vida si buscamos un poco. Tal vez nuestro entorno de programación no sea el mejor, tal vez haya un framework o una API que hace lo que estamos programando de forma mucho más eficiente, limpia y reutilizable.</p>
<p>¿Alguna vez habéis pensado: &#8220;Sé hacerlo, pero voy a mirar si podría hacerlo mucho mejor o en menos tiempo de otra forma&#8230;.&#8221; ?</p>
]]></content:encoded>
			<wfw:commentRss>http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estudiar tiene sus recompensas</title>
		<link>http://juanmirodriguez.es/2010/01/estudiar-tiene-sus-recompensas/</link>
		<comments>http://juanmirodriguez.es/2010/01/estudiar-tiene-sus-recompensas/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 15:53:33 +0000</pubDate>
		<dc:creator>Juanmi</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://poramoralcodigo.juanmirodriguez.es/?p=70</guid>
		<description><![CDATA[&#60;div class=&#8221;modolunniesON&#8221;&#62; ¡¡Si, chicos y chicas, estudiar sirve para algo más que para que los profes disfruten con vuestro sufrimiento!! Estudiando se puede incluso aprender y eso nos dará poder para saber hacer más cosas y con mejor criterio&#8230; Cooff, &#8230; <a href="http://juanmirodriguez.es/2010/01/estudiar-tiene-sus-recompensas/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&lt;div class=&#8221;modolunniesON&#8221;&gt; ¡¡Si, chicos y chicas, estudiar sirve para algo más que para que los profes disfruten con vuestro sufrimiento!! Estudiando se puede incluso aprender y eso nos dará poder para saber hacer más cosas y con mejor criterio&#8230;</p>
<p>Cooff, &lt;/div&gt; Cooff, perdón&#8230;</p>
<p>Este es el problema de levantarse temprano en domingo.</p>
<p>Bueno, a lo que iba, después de aprender cositas de PHP, javascript, DOM, CSS, XHTML, AJAX, etc. y una vez me voy haciendo una idea de como funciona el tema, están llegando las cosas interesantes. Acabo de echarle un ojo a <a href="http://jquery.com/" target="_blank">jQuery</a>, <a href="http://www.prototypejs.org/" target="_blank">prototype </a>y <a href="http://mootools.net/" target="_blank">Moo Tools</a>, viendo un poco la página principal trantando de decidir a qué documentación le meto mano y me ha sorprendido de nuevo lo que se puede conseguir en la web hoy día.</p>
<p>Merece la pena echar un ojo a la de monerías que hay ahí fuera (y mientras nosotros no hacemos más que mirar el facebook como tontos&#8230<img src="http://juanmirodriguez.es/wp-content/themes/grey-opaque/images/smilies/icon_wink.gif" alt="Smilie: ;)" title="Smilie: ;)" />. Y me ha llamado especialmente la atención <a href="http://www.ape-project.org/home.html" target="_blank">APE</a>. APE es una API  para construir aplicaciones web con recepción y puclicación de datos en tiempo real. Es decir, con APE puedes hacer un MMO en tiempo real en el browser todo basado en javascript, sin instalar nada en el cliente. Menús animados, botones, previews, diapositivas, todas esas monadas de la web actual están ahí esperando ser usadas <img src="http://juanmirodriguez.es/wp-content/themes/grey-opaque/images/smilies/icon_wink.gif" alt="Smilie: ;)" title="Smilie: ;)" /></p>
<p>Viendo todas estas APIs me siento como un niño pequeño con juguetes nuevos. Pero ¿Cuál elegiré para empezar? ¿Vosotros conocéis y utilizáis alguna? ¿Qué podéis recomendarme?</p>
]]></content:encoded>
			<wfw:commentRss>http://juanmirodriguez.es/2010/01/estudiar-tiene-sus-recompensas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La documentación, esa gran desconocida. I</title>
		<link>http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/</link>
		<comments>http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 18:02:45 +0000</pubDate>
		<dc:creator>Juanmi</dc:creator>
				<category><![CDATA[Consejos de programación]]></category>
		<category><![CDATA[consejos]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[documentación]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[quicksort]]></category>

		<guid isPermaLink="false">http://poramoralcodigo.juanmirodriguez.es/?p=19</guid>
		<description><![CDATA[Cuando trabajas en un grupo de desarrollo en un proyecto largo te empiezas a dar cuenta de algunas cosas. Recuerdas esas clases en las que los profesores te decían que era importante documentar el código. Te acuerdas de sus consejos sobre mantener el código ordenado y utilizar nombres de variables legibles. Y con más frecuencia de la que quisieras, te acuerdas de la madre de Mengano.

El otro día leí una máxima para programadores que me encantó:

Write your code as if the next guy to maintain it is a homicidal maniac who knows where you live
(by Kathy Sierra and Bert Bates) <a href="http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Cuando trabajas en un grupo de desarrollo en un proyecto largo te empiezas a dar cuenta de algunas cosas. Recuerdas esas clases en las que los profesores te decían que era importante documentar el código. Te acuerdas de sus consejos sobre mantener el código ordenado y utilizar nombres de variables legibles. Y con más frecuencia de la que quisieras, te acuerdas de la madre de Mengano.</p>
<p>El otro día leí una máxima para programadores que me encantó:</p>
<blockquote>
<h3 style="font-size: 13px; color: #333333; font-weight: normal; overflow-x: hidden; overflow-y: hidden; padding: 0px; margin: 0px;"><span>Write your code as if the next guy to maintain it is a homicidal maniac who knows where you live </span></h3>
<p><span>(by Kathy Sierra and Bert Bates)</span></p></blockquote>
<p>Me parece un gran consejo y es que parece que nadie piensa jamas que la documentación y el código correcto sea una prioridad. Hasta que le toca a él mantener el código de otro.</p>
<p>Como ejemplo veremos una pequeña porción de código. Es un algoritmo que me encanta y que ilustra muy bien lo que quiero decir:</p>
<pre>void quicksort(int array[M], int in, int f){
	int pv, i, j, m;
	bool hc;

	if(in &lt; f){
		pv = array[in];
		i = in+1;
		j = f;
		hc= true;
		while(hc){
			while((array[i] &gt;= pv)&amp;&amp;(i &lt; f )) i++;
			while((array[j] &lt; pv)&amp;&amp;(j &gt; im)) j–-;

			if(i &lt; j) interc(array[i], array[j]);
			else hc= false;
		}         

		if(array[j][0] &gt; pv) interc(array[j], array[in])

		quicksort(array, in, j-1);
		quicksort(array, j+1, f);
	}
}</pre>
<p>Eso de ahí arriba es el <a href="http://es.wikipedia.org/wiki/Quicksort" target="_blank">Quick Sort</a>. Desde luego no se entiende nada. No hay comentarios, las variables estan nombradas con una o dos letras, está pobremente sangrado&#8230; En definitiva, e programador no se molestó mas que en que funcionara, cuanto tenga que corregir errores o cuando alguien tenga que analizar éste código su madre será recordada junto a esquinas y callejones oscuros&#8230; Sin embargo, esto puede evitarse, este código puede mejorarse de forma que todo el mundo entienda qué es lo que el programador quería hacer:</p>
<pre>/* Quicksort: El algoritmo quicksort consiste en ordenar
un array mediante recursividad. Esta versión del algoritmo toma como pivote el dato en la
primera posición del array y luego lo coloca en su sitio.
Argumentos:
int individuos[M] -&gt; el array a ordenar
int inicio -&gt; primera posición de la parte del array a ordenar
int fin -&gt; última posición de la parte del array a ordenar */
void quicksort(int individuos[M], int inicio, int fin){
	int pivote, i, j, mitad;
	bool hayCambio;

	//caso base: si inicio&gt;=fin hemos terminado con esta sección, no hacemos nada
	if(inicio &lt; fin){
		pivote = individuos[inicio];
		i = inicio+1;
		j = fin;
		hayCambio = true;

		while(hayCambio){

                        //busca un elemento mayor que el pivote por debajo de él
			while((individuos[i] &gt;= pivote)&amp;&amp;(i &lt; fin )) i++;

                        //busca un elemento menor que el pivote por encima de él
			while((individuos[j] &lt; pivote)&amp;&amp;(j &gt; inicio)) j–-;

			if(i &lt; j){ //intercambiamos las casillas
				intercambia(individuos[i], individuos[j]);
			}else{
				hayCambio = false;
			}
		}         

		//ponemos el pivote en su posición
		if(individuos[j][0] &gt; pivote){
			intercambia(individuos[j], individuos[inicio])
		}

		//llamadas recursivas para las dos mitades
		quicksort(individuos, inicio, j-1);
		quicksort(individuos, j+1, fin);
	}
}</pre>
<p>Puede que sigáis sin comprender por qué funciona el quicksort: no os preocupéis, es normal. Lo importante es que aun así, ahora habréis podido comprender que pretende hacer cada parte del código, para que sirve esta función y que significa cada variable. La diferencia creo que es bastante sustancial, pero pronto veremos más ejemplos de por qué documentar ^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

