<?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>KodeGeek &#187; kodegeek</title>
	<atom:link href="http://kodegeek.com/blog/category/kodegeek/feed/" rel="self" type="application/rss+xml" />
	<link>http://kodegeek.com/blog</link>
	<description>Programación, fitness, interés geek</description>
	<lastBuildDate>Sun, 29 Apr 2012 17:29:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Terminado el entrenamiento para un medio maraton, con Hal Higdon</title>
		<link>http://kodegeek.com/blog/2012/04/14/terminado-el-entrenamiento-para-un-medio-maraton-con-hal-higdon/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=terminado-el-entrenamiento-para-un-medio-maraton-con-hal-higdon</link>
		<comments>http://kodegeek.com/blog/2012/04/14/terminado-el-entrenamiento-para-un-medio-maraton-con-hal-higdon/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 22:16:48 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3298</guid>
		<description><![CDATA[Parte del entrenamiento consistió en una carrera. En este caso yo hice 9.1 millas (Colon Cancer Challenge) en 1:12:47, http://web2.nyrrc.org/cgi-bin/htmlos.cgi/4430.1.4176275331617241034 La semana pasada terminé mi entrenamiento para un medio maratón (13.1 millas), usando el paquete para novicios de Hal Higdon. Debo decir que el programa funciona muy bien, no tengo lesiones y mi desempeño en [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/josevnz/6916579698/" title="Colon Cancer last push by josevnz, on Flickr"><img src="http://farm8.staticflickr.com/7268/6916579698_6165c9961e_c.jpg" width="531" height="800" alt="Colon Cancer last push"/></p>
<p>Parte del entrenamiento consistió en una carrera. En este caso yo hice 9.1 millas (Colon Cancer Challenge) en 1:12:47, http://web2.nyrrc.org/cgi-bin/htmlos.cgi/4430.1.4176275331617241034</a></p>
<p>La semana pasada terminé mi entrenamiento para un medio maratón (13.1 millas), usando el paquete para novicios de <a href="http://www.halhigdon.com/">Hal Higdon</a>. Debo decir que el programa funciona muy bien, no tengo lesiones y mi desempeño en distancias largas ha mejorado, hasta el punto de poder mantener 7&#8217;52&#8221; / milla de manera constante, lo cual me da esperanzas de poder terminar una carrera de medio maratón en menos de 1:47:52 el cual es el tiempo no oficial de mi primera carrera. </p>
<p><a href="http://www.flickr.com/photos/josevnz/6890209534/" title="DTag on Vibram by josevnz, on Flickr"><img src="http://farm8.staticflickr.com/7099/6890209534_b436b0a6f9.jpg" width="375" height="500" alt="DTag on Vibram"/><br />
Hasta ahora los Vibram me han servido bien. Ese fué el otro cambio que incluí en mi entrenamiento</a></p>
<p>Me decidí a bajar la aplicación del sitio de Apple.com y seguí el programa combinándolo con ejercicio de resistencia los días en los cuales correr no era obligatorio. En un principio pensé que iba a ser demasiado pero al la final pude manejar la carga, sin ningún efecto colateral.</p>
<p><a href="http://www.flickr.com/photos/josevnz/6911316116/" title="First Half Marathon! by josevnz, on Flickr"><img src="http://farm6.staticflickr.com/5079/6911316116_e03bb3db09.jpg" width="333" height="500" alt="First Half Marathon!"/><br />
Mi ritmo fué consistente. La aplicación también fué consistente, yo comparé los números con el sitio nikerunning.com y los tiempos y distancias fueron muy cercanos. Tengo dudas de quien es más preciso (yo medí los resultados de Nike usando el Nike watch + GPS).<br />
</a></p>
<p>Mi única crítica no tienen que ver con el programa sino con la aplicación misma. Tiene un par de cucarachas las cuales si bien no son severas hacen que la aplicación no esté a la par de NikeRunning.com por ejemplo.</p>
<p>Ahora ya tengo un plan concreto para atacar el próximo medio maratón; Por ahora pienso ponerle empeño para mejorar mi velocidad usando &#8216;Speed workouts&#8217;, &#8216;hills&#8217; y por supuesto la famosa carrera larga de los fines de semana (10 millas).</p>
<p><a href="http://www.flickr.com/photos/josevnz/6911315292/" title="Finally done with the Half Marathon program. by josevnz, on Flickr"><img src="http://farm6.staticflickr.com/5470/6911315292_1b09de85d6.jpg" width="333" height="500" alt="Finally done with the Half Marathon program."/><br />
¿Y ahora que viene?</a></p>
<p>Lo que viene: Me estoy preparando para mejorar mis tiempos en 5K y para hacer un medio maratón en un tiempo decente. Las cosas que vienen:</p>
<ul>
<li><a href="http://www.jpmorganchasecc.com/dates.php?city_id=6">JP Morgan Corporate Challenge</a>: Esta me tiene muy emocionado, ya que son apenas 3.5 millas en Central Park en la cual van a correr muchos de mis amigos, de varias compañias. ¿Quien dijo miedo? <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li><a href="http://www.hartfordmarathon.com/Events/ING_Hartford_Marathon/Registration/General_Registration.htm">ING Hartford Half Marathon:</a>Esta carrera se ve mundial y para ese entonces debo estar super listo para rendir al máximo</li>
</ul>
<p><a href="http://web2.nyrrc.org/cgi-bin/htmlos.cgi/9648.1.4133900669113459324">Aún no tengo listas mis 9 carreras + voluntariado</a> para el Maratón de Nueva York en el 2013; Sin embargo queda tiempo y me toca ponerle empeño <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2012/04/14/terminado-el-entrenamiento-para-un-medio-maraton-con-hal-higdon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven contra Ant: Migrar nunca ha sido fácil</title>
		<link>http://kodegeek.com/blog/2012/02/18/maven-contra-ant-migrar-nunca-ha-sido-facil/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=maven-contra-ant-migrar-nunca-ha-sido-facil</link>
		<comments>http://kodegeek.com/blog/2012/02/18/maven-contra-ant-migrar-nunca-ha-sido-facil/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 14:02:53 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3272</guid>
		<description><![CDATA[En estos momentos estoy comenzando un proyecto para la compañía en la cual trabajo el cual consiste en mejorar la forma en como liberamos el código de nuestra aplicación en producción; Sin entrar en muchos detalles les puedo decir que estoy re-escribiendo el sistema de compilación que fué creado con Ant + Make en Maven. [...]]]></description>
			<content:encoded><![CDATA[<p>En estos momentos estoy comenzando un proyecto para la compañía en la cual trabajo el cual consiste en mejorar la forma en como liberamos el código de nuestra aplicación en producción; Sin entrar en muchos detalles les puedo decir que estoy re-escribiendo el sistema de compilación que fué creado con <a href="http://ant.apache.org/">Ant</a> + <a href="http://www.gnu.org/software/make/manual/make.html">Make</a> en <a href="http://maven.apache.org/">Maven</a>.</p>
<p>El proyecto ha tenido sus dificultades (menores) y la curva de aprendizaje en mi caso no fué trivial ya que uno de los problemas que quería resolver es como compartir dependencias (archivos jar o &#8216;artefactos&#8217;) entre ellos:</p>
<ul>
<li>Ant es declarativo. En Ant todos las acciones se especifican con mucho nivel de detalle, pero esto se hace tedioso especialmente cuando los proyectos son grandes o hay muchos proyectos (repetir una y otra vez). Makefile fué usado para manejar las dependencias entre proyectos de código nativo en C y luego para unir llamadas a Ant. Un desastre</li>
<li>Soporte para Eclipse, InteliJ: Debido a la forma en la compilación con Ant fué escrita, no se puede compilar en Windows de la misma manera que Linux. Muerta la portabilidad, además de que cada desarollador tenia que aprender ciertos trucos para poder compilar la aplicación en Linux.</li>
</ul>
<p>Al principio traté de resolver el manejo de las dependencias en Ant usando <a href="http://ant.apache.org/ivy/">Ivy</a>. Pero la documentación de Ivy es espantosa y por irónico que parezca hace muchas referencias a <a href="http://ant.apache.org/ivy/history/latest-milestone/tutorial/build-repository.html">Maven</a>. Especialmente estoy último terminó por decidirme a usar Maven, convención sobre configuración, buen soporte especialmente en Eclipse e InteliJ.</p>
<p>No pienso escribir un tutorial sobre Ant contra Maven (Google les puede mostrar cientos de ellos), pero las comparaciones son obvias, miren por ejemplo como se compila a <a href="http://stupidzombie.com">StupidZombie.com</a>:</p>

<div class="wp_codebox"><table><tr id="p32723"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
</pre></td><td class="code" id="p3272code3"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;">&lt; ?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;StupidZombie&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;jar&quot;</span> <span style="color: #000066;">basedir</span>=<span style="color: #ff0000;">&quot;.&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
StupidZombie is a program that allows you to ping several of your favorite Blog directories. The
idea is to avoid fill the same information over and over again.
&nbsp;
StupidZombie es un programa el cual le permite hacer ping a varios de sus directorios de Blogs
favoritos. La idea es evitar rellenar la misma información una y otra vez.
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">file</span>=<span style="color: #ff0000;">&quot;build.properties&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;path.classpath&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.xmlrpc-client}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${ar.ws-commons-util}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.xmlrpc-common}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.codec}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.tidy}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.httpclient}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.net}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.log}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;path.test&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">refid</span>=<span style="color: #ff0000;">&quot;path.classpath&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${jar.junit}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pathelement</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;build&quot;</span> <span style="color: #000066;">depends</span>=<span style="color: #ff0000;">&quot;init&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Compile the source code&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;javac</span> <span style="color: #000066;">srcdir</span>=<span style="color: #ff0000;">&quot;${src}&quot;</span> <span style="color: #000066;">destdir</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span> <span style="color: #000066;">deprecation</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">optimize</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000066;">debug</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;**/*.java&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;classpath</span> <span style="color: #000066;">refid</span>=<span style="color: #ff0000;">&quot;path.classpath&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/javac<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;copy</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Copy the resourcebundles for all the classes&quot;</span> <span style="color: #000066;">todir</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span> <span style="color: #000066;">overwrite</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${src}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;**/*.xml&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/fileset<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${res}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;**/*.properties&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/fileset<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/copy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;init&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Pre compilation tasks&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dist}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;clean&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Artifact cleanup&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">includeEmptyDirs</span>=<span style="color: #ff0000;">&quot;yes&quot;</span> <span style="color: #000066;">failonerror</span>=<span style="color: #ff0000;">&quot;no&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dist}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/delete<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;jar&quot;</span></span>
<span style="color: #009900;">       <span style="color: #000000; font-weight: bold;">&lt;target</span></span>
<span style="color: #009900;">                <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;jar&quot;</span></span>
<span style="color: #009900;">                <span style="color: #000066;">depends</span>=<span style="color: #ff0000;">&quot;build&quot;</span></span>
<span style="color: #009900;">                <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Pack the project sources for distribution&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest</span> <span style="color: #000066;">file</span>=<span style="color: #ff0000;">&quot;${jar.file.manifest}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Main-class&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;com.stupidzombie.gui.StupidZombieGui&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;copy</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Copy the images for the app&quot;</span> <span style="color: #000066;">todir</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span> <span style="color: #000066;">overwrite</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${img}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;**/*&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/fileset<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/copy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unjar</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;${jar.xmlrpc-client}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unjar</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;${jar.ws-commons-util}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unjar</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;${jar.xmlrpc-common}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unjar</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;${jar.codec}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unjar</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;${jar.httpclient}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unjar</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;${jar.tidy}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unjar</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;${jar.log}&quot;</span> <span style="color: #000066;">dest</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;jar</span> <span style="color: #000066;">jarfile</span>=<span style="color: #ff0000;">&quot;${dist}/${jar.project}&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">basedir</span>=<span style="color: #ff0000;">&quot;${build}&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">manifest</span>=<span style="color: #ff0000;">&quot;${jar.file.manifest}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exclude</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;**/test/*&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/jar<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;signjar</span> <span style="color: #000066;">jar</span>=<span style="color: #ff0000;">&quot;${dist}/${jar.project}&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">alias</span>=<span style="color: #ff0000;">&quot;StupidZombie&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">keystore</span>=<span style="color: #ff0000;">&quot;StupidZombie.keystore&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">storepass</span>=<span style="color: #ff0000;">&quot;StupidZombie&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">verbose</span>=<span style="color: #ff0000;">&quot;false&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;test&quot;</span></span>
<span style="color: #009900;">                <span style="color: #000066;">depends</span>=<span style="color: #ff0000;">&quot;jar&quot;</span></span>
<span style="color: #009900;">                <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Unit tests&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Running unit tests<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;javac</span> <span style="color: #000066;">srcdir</span>=<span style="color: #ff0000;">&quot;${src}&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">destdir</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">includes</span>=<span style="color: #ff0000;">&quot;com/stupidzombie/ping/**/Test*&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">deprecation</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">optimize</span>=<span style="color: #ff0000;">&quot;false&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">debug</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;classpath</span> <span style="color: #000066;">refid</span>=<span style="color: #ff0000;">&quot;path.test&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/javac<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;junit</span> <span style="color: #000066;">fork</span>=<span style="color: #ff0000;">&quot;yes&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">printsummary</span>=<span style="color: #ff0000;">&quot;on&quot;</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">maxmemory</span>=<span style="color: #ff0000;">&quot;300m&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;classpath</span> <span style="color: #000066;">refid</span>=<span style="color: #ff0000;">&quot;path.test&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;formatter</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xml&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;formatter</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;plain&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sysproperty</span> <span style="color: #000066;">key</span>=<span style="color: #ff0000;">&quot;ping.blog.name&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;StupidZombie&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sysproperty</span> <span style="color: #000066;">key</span>=<span style="color: #ff0000;">&quot;ping.blog.url&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://stupidzombie.com/blog&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sysproperty</span> <span style="color: #000066;">key</span>=<span style="color: #ff0000;">&quot;ping.blog.directoryList&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;technorati&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;test</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;${testcase}&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">todir</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span></span>
<span style="color: #009900;">                                <span style="color: #000066;">if</span>=<span style="color: #ff0000;">&quot;testcase&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;batchtest</span> <span style="color: #000000; font-weight: bold;">&lt;/batchtest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/batchtest<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/junit<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;junitreport</span> <span style="color: #000066;">todir</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TEST-*.xml&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/fileset<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;report</span> <span style="color: #000066;">format</span>=<span style="color: #ff0000;">&quot;frames&quot;</span> <span style="color: #000066;">todir</span>=<span style="color: #ff0000;">&quot;${test}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/junitreport<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Además de tener que guardar los archivos Jar en SVN (mala practica) el archivo de compilación es grande.</p>
<p>Mientras que en Maven:</p>

<div class="wp_codebox"><table><tr id="p32724"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
</pre></td><td class="code" id="p3272code4"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;">&lt; ?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://maven.apache.org/POM/4.0.0&quot;</span> <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;parent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.stupidzombie<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>stupidzombie<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>20120206<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/parent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;modelversion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4.0.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/modelversion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ping<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jar<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ping<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.maven.plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-jar-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;archive<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifestfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>src/main/resources/META-INF/MANIFEST.MF<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifestfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/archive<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-assembly-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;descriptors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;descriptor<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>src/assemble/bigjar.xml<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/descriptor<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/descriptors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;archive<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifestfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>src/main/resources/META-INF/MANIFEST.MF<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifestfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/archive<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.xmlrpc<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>xmlrpc-client<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>3.1.2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ws-commons-util<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ws-commons-util<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.0.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>commons-codec<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>commons-codec<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>commons-httpclient<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>commons-httpclient<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>3.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>commons-net<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>commons-net<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jtidy<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jtidy<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4aug2000r7-dev<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Mi migración a Maven no estuvo libre de dolores:</p>
<li>En Eclipse existen <a href="http://maven.apache.org/plugins/maven-eclipse-plugin/">varios módulos con soporte</a> para Maven; con <a href="http://code.google.com/p/q4e/">IAM</a> y <a href="http://www.eclipse.org/m2e/">M2E</a>. IAM nunca me funcionó y M2E me dió problemas con <a href="http://subclipse.tigris.org/">SubClipse</a> por lo que tuve que desinstalarlo para usar <a href="http://www.eclipse.org/subversive/">Subversive</a>.</li>
<li>Usar Maven sin un controlador de artefactos como <a href="http://archiva.apache.org/">Archiva</a> no tiene sentido (archiva facilita muchas cosas, como el manejo de versiones). Eso significa que hay que aprender también a instalar y configurar archiva, en especial para controlar como los desarolladores liberan artefactos.</li>
<p>Aún tengo muchas preguntas en Maven, como por ejemplo el uso de <a href="http://maven.apache.org/guides/introduction/introduction-to-profiles.html">perfiles</a> y de &#8216;<a href="http://jlorenzen.blogspot.com/2007/09/how-to-effectively-use-snapshot.html">snapshots</a>&#8216;. Sin embargo ya logré colocar los artefactos de mis proyectos con buen manejo de versiones y para quienes lo desean en mi grupo, pueden trabajar con M2E en Eclipse.</p>
<p>Mucha gente habla maravillas de <a href="http://gradle.org/">Gradle</a>, sin embargo me parece que no tiene tanta tracción como Maven, soporte <a href="http://gradle.org/docs/current/userguide/eclipse_plugin.html">básico</a> para Eclipse, además de que hay que aprender algo de GROOVY (no es necesariamente algo malo). ¿Alguno de ustedes ha tenido experiencia real con este entorno?</p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2012/02/18/maven-contra-ant-migrar-nunca-ha-sido-facil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mis primeras 4 millas: NYRR Gridiron Classic (4M) / Longest Football Throw Competition</title>
		<link>http://kodegeek.com/blog/2012/02/05/mis-primeras-4-millas-nyrr-gridiron-classic-4m-longest-football-throw-competition/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mis-primeras-4-millas-nyrr-gridiron-classic-4m-longest-football-throw-competition</link>
		<comments>http://kodegeek.com/blog/2012/02/05/mis-primeras-4-millas-nyrr-gridiron-classic-4m-longest-football-throw-competition/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 19:12:12 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[correr]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[4miles]]></category>
		<category><![CDATA[beet juice]]></category>
		<category><![CDATA[carrera]]></category>
		<category><![CDATA[coffee]]></category>
		<category><![CDATA[jugo de remolacha]]></category>
		<category><![CDATA[patriots giants]]></category>
		<category><![CDATA[super bowl]]></category>
		<category><![CDATA[super tazón]]></category>
		<category><![CDATA[vibram]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3274</guid>
		<description><![CDATA[La calma antes de la tormenta Hoy es el domingo del Super Tazón aquí en los Estados Unidos y para celebrarlo me lancé una carrera de 4 millas; En esta ocasión me puse mi franela de la edición del torneo de este año: Giants contra Patriots. Realmente el foco de esta carrera no es correr [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Just before  the race by josevnz, on Flickr" href="http://www.flickr.com/photos/josevnz/6824222313/"><img src="http://farm8.staticflickr.com/7146/6824222313_08dc12666f_z.jpg" alt="Just before  the race" width="480" height="640" /><br />
La calma antes de la tormenta</a></p>
<p>Hoy es el domingo del Super Tazón aquí en los Estados Unidos y para celebrarlo me lancé una carrera de 4 millas; En esta ocasión me puse mi franela de la edición del torneo de este año: Giants contra Patriots.</p>
<p>Realmente el foco de esta carrera no es correr rápido sino constante, ya que es parte de mi entrenamiento para el medio maratón de este año. También me sirve como trampolín para el maratón de New York en el 2013 (esta es mi carrera #2 de las 9 que tengo que completar para tener mi entrada asegurada).</p>
<p><a title="Coffee way before the race by josevnz, on Flickr" href="http://www.flickr.com/photos/josevnz/6821874177/"><img src="http://farm8.staticflickr.com/7011/6821874177_a04f098599_z.jpg" alt="Coffee way before the race" width="480" height="640" /><br />
Una de las bebidas que siempre consumo antes de correr o levantar pesas es el café. Natural, con buenas propiedades curativas y sobre todo un excelente estimulante para rendir al máximo</a></p>
<p>El día de la carrera estuvo frio y con mucho viento; Yo decidí ponerme menos capas de ropa para evitar recalentarme (algo que pasa a menudo cuanto entreno). Además de eso he venido probando un par de cosas para mejorar mi rendimiento:</p>
<ul>
<li>Tomo jugo de remolacha antes de mi entrenamiento: Según varios articulos que leí por allí, dicen que ayuda a incrementar el oxido nítrico en la sangre, y demora la fatiga ya que los musculos consumen menos oxigeno. No puedo aseverar que produce resultados asombrosos pero no es tan costoso y cualquier cosa que pueda utilizar para mejorar mi desempeño (mientras que sea natural) sirve</li>
<li>Estrené todo el tiempo hasta esta carrera con mis Vibram 5 fingers. No he tenido problemas severos en las pantorillas como el año pasado y poco a poco he ido aumentando mis millas. Estoy siendo cuidadoso, pero hoy fué la prueba definitiva corriendo con ellos en una carrera de 4 millas y me siento super bien <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p><a title="They say that beet juice helps to improve endurance. Is all natural so why not? by josevnz, on Flickr" href="http://www.flickr.com/photos/josevnz/6821873869/"><img src="http://farm8.staticflickr.com/7001/6821873869_02499962d0_z.jpg" alt="They say that beet juice helps to improve endurance. Is all natural so why not?" width="480" height="640" /><br />
Tomando jugo de remolacha, ¿será que me ayudara aunque sea en %1 a mejorar mi desempeño? No pierdo nada con probar</a></p>
<p>Mi idea de la carrera era tomarme las cosas con calma, sin esforzarme ya que después de todo debía correr hoy 5 millas y no 4 para mi entrenamiento para el medio maratón (ya les contaré que plan estoy siguiendo). Así que lo que hice fué calentar corriendo una milla suave y el resto del recorrido oficial de la carrera.</p>
<p><a title="Tired but happy, did a PR today: AGE % = 58.09 (60% is local competition) by josevnz, on Flickr" href="http://www.flickr.com/photos/josevnz/6824226157/"><img src="http://farm8.staticflickr.com/7168/6824226157_311ebe851d_z.jpg" alt="Tired but happy, did a PR today: AGE % = 58.09 (60% is local competition)" width="480" height="640" /><br />
Cansado pero contento al final de la carrera. Tenía el presentimiento de que había hecho un tiempo decente</a></p>
<p>Al final logré un <a href="http://web2.nyrrc.org/cgi-bin/htmlos.cgi/0472.1.429468697048902013">pequeño récord</a> ya que en mi grupo de edad logré quedar en el renglón de 58% (%60 es competencia local. Tengo que seguir empujando para llegar allí):</p>
<table width="700" border="1" cellspacing="0">
<tbody>
<tr bgcolor="EEEEEE">
<td nowrap="nowrap"><a href="http://web2.nyrrc.org/cgi-bin/htmlos.cgi/0472.2.441348332048902013">Last Name</a></td>
<td nowrap="nowrap"><a href="http://web2.nyrrc.org/cgi-bin/htmlos.cgi/0472.2.530133786448902013">First Name</a></td>
<td nowrap="nowrap">Sex/<br />
Age</td>
<td nowrap="nowrap">Bib</td>
<td nowrap="nowrap">Team</td>
<td nowrap="nowrap">City</td>
<td nowrap="nowrap">State</td>
<td nowrap="nowrap">Country</td>
<td nowrap="nowrap"><a href="http://web2.nyrrc.org/cgi-bin/htmlos.cgi/0472.2.651751050248902013">Overall<br />
Place</a></td>
<td nowrap="nowrap"><a href="http://web2.nyrrc.org/cgi-bin/htmlos.cgi/0472.2.797402038248902013">Gender<br />
Place</a></td>
<td nowrap="nowrap">Age<br />
Place</td>
<td nowrap="nowrap">Net<br />
Time</td>
<td nowrap="nowrap">Pace/<br />
Mile</td>
<td nowrap="nowrap">AG<br />
Time</td>
<td nowrap="nowrap">AG<br />
Gender<br />
Place</td>
<td nowrap="nowrap">AG %</td>
</tr>
<tr>
<td nowrap="nowrap">Nunez Zuleta</td>
<td nowrap="nowrap">Jose V</td>
<td>M39</td>
<td>4631</td>
<td>0</td>
<td nowrap="nowrap">DARIEN</td>
<td>CT</td>
<td nowrap="nowrap">USA</td>
<td>1173</td>
<td>959</td>
<td>174</td>
<td>0:30:28</td>
<td>07:37</td>
<td>0:29:01</td>
<td>1097</td>
<td nowrap="nowrap">58.09</td>
</tr>
</tbody>
</table>
<table width="750" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td></td>
</tr>
</tbody>
</table>
<p>Vienen más carreras, poco a poco con un clima más cálido <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2012/02/05/mis-primeras-4-millas-nyrr-gridiron-classic-4m-longest-football-throw-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Cuanto esfuerzo poner al correr? Usando un monitor de pulsaciones</title>
		<link>http://kodegeek.com/blog/2011/12/25/cuanto-esfuerzo-poner-al-correr-usando-un-monitor-de-pulsaciones/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cuanto-esfuerzo-poner-al-correr-usando-un-monitor-de-pulsaciones</link>
		<comments>http://kodegeek.com/blog/2011/12/25/cuanto-esfuerzo-poner-al-correr-usando-un-monitor-de-pulsaciones/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 00:15:46 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[correr pulsaciones pulso fitness running heartrate]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3222</guid>
		<description><![CDATA[Primero que todo, ¡Feliz navidad!. Hoy me dieron de regalo un monitor de pulsaciones (Polar Link, compatible con Nike GPS awatch), la idea es mantener mis niveles de esfuerzo constantes y en niveles seguros. Así que hoy me decidí a probarlo con una carrera corta de sólo dos millas, ni tan rápido ni tan lento; [...]]]></description>
			<content:encoded><![CDATA[<p>Primero que todo, ¡Feliz navidad!. Hoy me dieron de regalo un monitor de pulsaciones (Polar Link, compatible con Nike GPS awatch), la idea es mantener mis niveles de esfuerzo constantes y en niveles seguros.</p>
<p>Así que hoy me decidí a probarlo con una carrera corta de sólo dos millas, ni tan rápido ni tan lento; La configuración del dispositivo fué trivial y aunque se sintió raro tener una cinta en el pecho durante los primeros 5 minutos luego la sensación se disipó y pude olvidarme por completo que el aparato estaba allí.</p>
<p>La teoría sobre cuales rangos son seguros la pueden encontrar en <a href="http://www.livestrong.com/article/179970-a-healthy-heart-rate-while-running/">este enlace</a>, pero si usted es un corcho como yo ya seguro tiene un script para hacer las conversiones:</p>

<div class="wp_codebox"><table><tr id="p32227"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code" id="p3222code7"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># Heart rate range calculator, for both aerobic and anaerobic ranges</span>
<span style="color: #808080; font-style: italic;"># http://kodegeek.com/blog</span>
<span style="color: #808080; font-style: italic;"># http://www.livestrong.com/article/179970-a-healthy-heart-rate-while-running/</span>
<span style="color: #ff7700;font-weight:bold;">def</span> heartRate<span style="color: black;">&#40;</span>age, anaerobic=<span style="color: #008000;">False</span><span style="color: black;">&#41;</span>:
        maxHearthRate = <span style="color: #ff4500;">220</span> - age
        bound = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> anaerobic:
                bound.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0.50</span> <span style="color: #66cc66;">*</span> maxHearthRate<span style="color: black;">&#41;</span>
                bound.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0.85</span> <span style="color: #66cc66;">*</span> maxHearthRate<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">else</span>:
                bound.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0.80</span> <span style="color: #66cc66;">*</span> maxHearthRate<span style="color: black;">&#41;</span>
                bound.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0.90</span> <span style="color: #66cc66;">*</span> maxHearthRate<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> bound
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
        args = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>args<span style="color: black;">&#41;</span> == <span style="color: #ff4500;">2</span>:
                res = heartRate<span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>args<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#123;</span><span style="color: #483d8b;">'true'</span>: <span style="color: #008000;">True</span>, <span style="color: #483d8b;">'false'</span>: <span style="color: #008000;">False</span><span style="color: black;">&#125;</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span>args<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>.<span style="color: black;">lower</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s,  %s &quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>res<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, res<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Por ejemplo, para alguien de mi edad estos deberian ser los rangos aeróbicos y anaeróbicos:</p>

<div class="wp_codebox"><table><tr id="p32228"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p3222code8"><pre class="bash" style="font-family:monospace;">&nbsp;
Macintosh:python josevnz$ python com<span style="color: #000000; font-weight: bold;">/</span>kodegeek<span style="color: #000000; font-weight: bold;">/</span>fitness<span style="color: #000000; font-weight: bold;">/</span>heartrate.py <span style="color: #000000;">38</span> <span style="color: #c20cb9; font-weight: bold;">false</span>
<span style="color: #000000;">91.0</span>,  <span style="color: #000000;">154.7</span> 
Macintosh:python josevnz$ python com<span style="color: #000000; font-weight: bold;">/</span>kodegeek<span style="color: #000000; font-weight: bold;">/</span>fitness<span style="color: #000000; font-weight: bold;">/</span>heartrate.py <span style="color: #000000;">38</span> <span style="color: #c20cb9; font-weight: bold;">true</span>
<span style="color: #000000;">145.6</span>,  <span style="color: #000000;">163.8</span> 
Macintosh:python josevnz$</pre></td></tr></table></div>

<p>Según el monitor, en promedio mis pulsaciones promedio estuvieron en 165, solamente estuve un %38 del tiempo dentro de mi rango aeróbico. Muy alto, al menos que este leyendo algo mal. <a href="http://www.livestrong.com/article/130246-average-heart-rate-running/">Ahora me sale hacer mi tarea</a> <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2011/12/25/cuanto-esfuerzo-poner-al-correr-usando-un-monitor-de-pulsaciones/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Corriendo descalzo (Barefoot running): ¿Moda o la mejor forma de correr?</title>
		<link>http://kodegeek.com/blog/2011/12/12/corriendo-descalzo-barefoot-running-%c2%bfmoda-o-la-mejor-forma-de-correr/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=corriendo-descalzo-barefoot-running-%25c2%25bfmoda-o-la-mejor-forma-de-correr</link>
		<comments>http://kodegeek.com/blog/2011/12/12/corriendo-descalzo-barefoot-running-%c2%bfmoda-o-la-mejor-forma-de-correr/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 02:47:42 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[correr]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[correr descalzo barefoot vff]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3198</guid>
		<description><![CDATA[Después de correr a cero grados centigrados con mis zapatos mínimos. Ningún problema, excepto la mascara congelada En mi caso no es la historia de un super atleta sino de un gocho el cual quiere entender porqué no puede correr sin dolor grandes distancias. Aquí les cuento como va: El drama Quienes siguen este blog [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Done running at 6:00 A.M., 32F. My mask froze by josevnz, on Flickr" href="http://www.flickr.com/photos/josevnz/6481305503/"><img src="http://farm8.staticflickr.com/7022/6481305503_4b2f5c44e7_z.jpg" alt="Done running at 6:00 A.M., 32F. My mask froze" width="480" height="640" /><br />
Después de correr a cero grados centigrados con mis zapatos mínimos. Ningún problema, excepto la mascara congelada <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
</a></p>
<p>En mi caso no es la historia de un super atleta sino de un gocho el cual quiere entender porqué no puede correr sin dolor grandes distancias. Aquí les cuento como va:</p>
<p><strong>El drama</strong><br />
Quienes siguen este blog saben que me gusta correr, y también saben que de unos meses para acá he estado sufriendo de &#8216;<a href="http://kodegeek.com/blog/2011/08/10/corriendo-con-dolor-recuperacion-y-cambio-de-tacticas/">shin splints</a>&#8216; de manera casi constante. Si bien los zapatos y el tratamiento médico que comencé me han ayudado de alguna manera no han podido curar mi aflicción del todo.</p>
<p>¿Soy demasiado atlético para mis pobres pies (no realmente)? Obviamente tengo un problema en la forma en que corro, pero los doctores no me han dado una forma precisa para corregir mi deficiencia. Quien terminó de darme un buen consejo fué el coordinador de las clases de velocidad del <a href="http://kodegeek.com/blog/2011/11/30/clases-de-velocidad-con-nyrr/">NYRR</a>, quien entre otras cosas me pregunto si corría de puntillas (yo le dije que no sólo eso sino que además caminaba así) y si tenía otros problemas como &#8216;algo&#8217; de pies planos. Sin embargo su recomendación (además de la visita al doctor) fué la misma: Aditamento ortopédico o plantillas para los zapatos, hielo y elevación, aspirina y zapatos con control de movimiento.</p>
<p>Todos paliativos, pero ¿hay alguna forma en la cual yo puedo mejorar la forma en la que corro?</p>
<p><strong>El primer paso hacia el cambio es la negación</strong></p>
<p>En la oficina tengo un compañero de trabajo el cual ya antes me habia mencionado como corría en Central Park con sus Vibran <a href="http://en.wikipedia.org/wiki/Vibram_FiveFingers">Five Fingers (VFF)</a>. Es muy inteligente, algo excéntrico, pero todo lo que hace sigue una linea racional. No corre descalzo pero si con zapatos mínimos ya que según el le ayudaron a corregir su forma de correr.</p>
<p>Como buen crítico dudé de su aviso; No podía creer que las extremidades del hombre <a href="http://naturalrunningcenter.com/2011/07/23/abcs-minimalism-reply-jeff-galloways-views-running-injury/">estuvieran adaptadas para soportar la tortura de correr sobre pavimento y concreto sin algo de amortiguamiento</a> (ningún hombre de las cavernas vivió más de 20 años en promedio). Para rematar, el doctor que vio mi pierna se refirió a correr descalzo como &#8216;una moda que va y viene cada 5 años&#8217;.</p>
<p>Sin embargo, aún seguía pensando que quizas toda esa gente que corría descalzo habían descubierto algo que yo no sabía.</p>
<p>Pero que carajo, yo tengo un problema al correr y que se la puede hacer, ¿verdad?</p>
<p><strong>Abre los ojos, o mejor aún, aprende a escuchar</strong></p>
<p>La revelación de como correr mejor <a href="http://kodegeek.com/blog/2011/11/05/euforia-antes-del-maraton-de-nyc-dash-to-the-finish-line/">me vino después de una carrera de 5K</a> que hice mi amigo Ricardo Pravia, el cual había abandonado el correr por varios meses, no por problemas de dolor sino por motivos personales (entre esos jugar Poker en línea <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). Sin animo de ofender, el no es precisamente el tipo atlético y sin embargo disfrutaba el correr cuando lo hacia (yo mientras tanto estaba más y más obsesionado por mi falta de éxito al eliminar el dolor constante en mi pierna), además de hacerlo sin dolor alguno.</p>
<p>Yo le pregunté como estaba entrenando; El me respondió más o menos lo habitual pero lo que me llamó la atención fué que en vez de usar unos zapatos con mucho refuerzo como yo el en cambio estaba usando unos zapatos con soporte mínimo, unos <a href="http://en.wikipedia.org/wiki/Nike_Free">Nike free</a>:</p>
<blockquote><p>Yo: Chamo, ¿esos zapatos de ofrecen protección? Parecen zapatos de gimnasio, te vas a joder las piernas, yo por ejemplo&#8230;<br />
El: (sonriendo) Son zapatos &#8216;barefoot&#8217;. Tienen soporte mínimo, son especiales para correr. Nunca he tenido problemas con ellos.<br />
Yo: ¿Y no te duele al pisar el pavimento?<br />
El: Los zapatos te enseñan a correr. Si pisas mal te duele de una vez y a juro tienes que corregir la forma. Corres de manera delicada</p></blockquote>
<p>Me quedé pensando por varios segundos. Ricardo siempre ha estado un paso adelante que yo en algunas cosas, por ejemplo reemplazando Linux o Windows con OSX, aprendiendo otros lenguajes de programación como Python. En cierta forma el es un alpha geek sin saberlo.</p>
<p>¡Coño!, eso es. Esa era la explicación de porqué había tanta gente corriendo con esos zapatos o sin zapatos. Tu cuerpo se encargaba de bajar el rito, o mejor, de ajustar el ritmo y la forma.</p>
<p>¿Pero y es verdad? ¿Qué pasa si corro descalzo y me clavo un vidrio o me fracturo el pié?</p>
<p>La respuesta vino unos días después de la carrera</p>
<p><strong>El día después</strong></p>
<p>Unos días después de la carrera Ricardo me regaló por Amazon Kindle, el libro &#8216;<a href="http://www.chrismcdougall.com/">Born To Run</a>&#8216;, de Christopher McDougall; El libro básicamente es la historia de la tribu &#8216;Tarahumara&#8217; de indios Mexicanos los cuales corren grandes distancias sin usar calzado.</p>
<p>Debo admitir que el libro comienza mal; Parece más un relato sensacionalista con ideas robadas de las películas de Indiana Jones (tiene todos los elementos, como tribu perdidas, peligros como el desierto o narcotraficantes y sobre todo personajes muy pero muy excéntricos como <a href="http://runningtimes.com/Article.aspx?ArticleID=18905">Caballo Blanco</a>).</p>
<p>Pero mi opinión del libro cambió rápidamente a medida que me adentraba más y más en el libro: McDougall también es un corredor, el cual tenia dolor constante. Los consejos tradicionales no lo ayudaron para nada y todo eso cambio cuando comenzó a correr descalzo; La historia de otros corredores excepcionales en el libro, también descalzos, además de explicaciones y referencias a trabajos de investigación científica me terminaron por convencer de que quizas esto era algo que debería probar con cautela.</p>
<p>¿Seria posible experimentar una sensación de gozo tan profunda al correr como la que experimentaban todos estos corredores en el libro? Después de todo, en el pasado <a href="http://discovermagazine.com/2006/may/tramps-like-us">nosotros cazábamos</a> a nuestras presas de esa manera.</p>
<p>Por cierto, la historia de la carrera en el libro es grandiosa, aún si usted no cree en el movimiento de correr descalzo.</p>
<p><strong>Investigación, investigación: Barefoot Bob y otras cosas</strong></p>
<p>Muy bien, otra gente lo hace pero ¿como lo hacen? Decidí buscar entonces la biblia de los corredores descalzos y me encontré que casi todas las referencias caían en Ken Bob Saxton (uno de los personajes del libro &#8216;Born to Run&#8217;). Me compre su libro &#8216;Barefoot Running Step By Step&#8217; y allí comenzó mi investigación.</p>
<p>Debo comenzar diciendo que usted deberá suprimir su primera impresión de Bob; Es se ve como el típico hippie de California, con pelo y barba blancas largas además de algo de sobrepeso. No es la típica figura atlética de corredores de largas distancias además de que su libro está cargado de demasiadas referencias a si mismo. Tampoco creo que usted quiera leer sobre &#8216;barefoot running&#8217;  como si este fuera religión (por ejemplo el se refiere a quienes usan VFF como &#8216;fake barefoot runners&#8217;).</p>
<p>Y sin embargo hay mucho de valor en su libro: Técnicas detalladas y anécdotas (de él y otros corredores) sobre como abordar esta nueva forma de correr sin lesionarse y sobre todo disfrutándolo. Si bien Bob es un &#8216;barefoot runner&#8217; puro (por ejemplo el sostiene que los zapatos mínimos como VFF lo que hacen en más mal que bien), también comparte experiencias sobre corredores que usan modo mixto como por ejemplo zapatos normales, VFF y correr descalzo como parte de su entrenamiento.</p>
<p>Y es esta última parte la que me terminó de convencer: No hace falta correr descalzo todo el tiempo pero si debe ser parte importante del entrenamiento. De esa forma se pueden corregir problemas como dolor al correr, una forma de transición segura.</p>
<p>La única forma de saber era dejar los libros en el sofá y salir a correr. Para ello me compré mi par de VFF en una tienda especializada. Los zapatos se sentían cómodos, pero me tomo 15 minutos ponérmelos la primera vez. Lo otro es que yo lucia como un gorila con mis nuevos zapatos, no podía dejar de pensar lo curioso que me veía con ellos.</p>
<p>Y sin embargo, salí con mis nuevos zapatos puestos y dispuesto a probar mis nuevas teorías sobre como correr mejor.</p>
<p><strong>Mis primeros pasos, mis primeros carajazos y lo que viene</strong></p>
<p><a title="barefoot running by josevnz, on Flickr" href="http://www.flickr.com/photos/josevnz/6410987053/"><img src="http://farm8.staticflickr.com/7143/6410987053_9fd6a7d818_z.jpg" alt="barefoot running" width="640" height="480" /><br />
Mis dedos se congelaron después de una carrera de una milla alrededor de un parque, después de llover</a></p>
<p>Comencé suave, nada de salir a correr con ellos. Por dos semanas me los puse para ir al gimnasio y para correr en la máquina caminadora por no más de una milla. La sensación era distinta, contacto completo con el piso pero sin ninguna incomodidad. En la caminadora me vi obligado a correr distinto, nada de aplastar el frente de mis dedos contra el piso como estaba acostumbrado y con menor velocidad que antes (poco a poco la fui incrementando).</p>
<p>A la tercera semana me decidí a correr una milla en la grama, para ello me busque la cancha de un colegio que queda cerca de donde vivo. Hubo cierta incomodidad al comenzar a correr y al día siguiente me molestaban las pantorrillas y los tobillos, pero no mucho.</p>
<p>Mas caminadora durante la semana y el siguiente sábado corrí una milla en la grama; Ese día la temperatura estaba a -1C y habia llovido el día anterior por lo que la grama estaba mojada. Cuando llevaba dos vueltas alrededor de la cancha me tuve que detener de pronto debido a un intenso dolor en todos los dedos de mis pies, se me habían congelado por el agua ya que estos no son a prueba de agua.</p>
<p>Cojeando hasta la casa tomé la determinación de que la siguiente carrera sería es asfalto, una milla. No más dedos congelados, no señor.</p>
<p>La siguiente vez corrí 2.3 millas en asfalto, sin ninguna novedad. Luego 3 millas. Nada de dolor, con una velocidad comparable a la obtenida usando mis zapatos con &#8216;stability control&#8217; de Nike, según el GPS.</p>
<p>Pienso seguir mejorando sólo 3 millas a la vez o mientras hago &#8216;speed work&#8217; mientras entreno para mi primer 10K el año que viene y después de allí voy a incrementar mis millas en los VFF.</p>
<p><strong>¿Que viene ahora?</strong></p>
<p>Pienso ir con cuidado. La otra vez corriendo en NYC, le camine por completo a un montón de vidrio molido que alguien dejó por allí, en plena tormenta, y si no es por los zapatos bueno&#8230;; También está mi anécdota de los dedos congelados y definitivamente no quiero llegar a la historia <a href="http://naturalrunningcenter.com/2011/08/09/minimalist-shoes-barefoot-running-metatarsal-stress-fractures/">de las fracturas estructurales</a>.</p>
<p>Así que poco a poco, mejorando la condición y ya les contaré si esta forma de atacar mis entrenamiento mejora o no mi problemas en las piernas.</p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2011/12/12/corriendo-descalzo-barefoot-running-%c2%bfmoda-o-la-mejor-forma-de-correr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¡Llevo recorridos 200 millas (o 321.8688 kilómetros)!</title>
		<link>http://kodegeek.com/blog/2011/10/22/%c2%a1llevo-recorridos-200-millas-o-321-8688-kilometros/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25c2%25a1llevo-recorridos-200-millas-o-321-8688-kilometros</link>
		<comments>http://kodegeek.com/blog/2011/10/22/%c2%a1llevo-recorridos-200-millas-o-321-8688-kilometros/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 07:00:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[200 millas]]></category>
		<category><![CDATA[321.86 kilómetros]]></category>
		<category><![CDATA[correr]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3145</guid>
		<description><![CDATA[Desde que comencé a correr en 1ero de Mayo de este año hasta la fecha he recorrido 200 millas o 312.8688 kilómetros. Para darles una idea de cuanto es eso: La distancia entre las ciudades de Mérida y Trujillo es de 203 kilómetros La distancia entre las ciudades de Mérida y San Antonio es de [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que comencé a correr en 1ero de Mayo de este año hasta la fecha he recorrido 200 millas o 312.8688 kilómetros. Para darles una idea de cuanto es eso:</p>
<ul>
<li>La distancia entre las ciudades de Mérida y Trujillo es de 203 kilómetros</li>
<li>La distancia entre las ciudades de Mérida y San Antonio es de 298 kilómetros</li>
<li>La distancia entre las ciudades de Caracas y Puerto La Cruz es de 320 kilómetros</li>
<li>La distancia entre Darien, CT y Manhattan, New York (Central Park) es de 38 millas (llevo aproximadamente 5 viajes a pié)</li>
</ul>
<p>Rompí la marca de las 200 millas con una carrera con velocidad 8&#8217;20 millas / mi minuto, antes de hacer ejercicio de resistencia. Mañana me toca una carrera un poco más larga (y lenta) de 6 millas, estoy intentando mis primeros 10K <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Y ya paré de contar. Actualizaré el blog con una entrada como esta cuando llegue a 500 millas.</p>
<p>&#8211;José</p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2011/10/22/%c2%a1llevo-recorridos-200-millas-o-321-8688-kilometros/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hackeando mis datos en NikeRunning.com</title>
		<link>http://kodegeek.com/blog/2011/10/12/hackeando-mis-datos-en-nikerunning-com/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hackeando-mis-datos-en-nikerunning-com</link>
		<comments>http://kodegeek.com/blog/2011/10/12/hackeando-mis-datos-en-nikerunning-com/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 02:30:19 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[nikerunning xml webservices hacking javafx java]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3123</guid>
		<description><![CDATA[Tipos de terreno para todas mis carreras, desde NikeRunning, mostrado con JavaFX Desde que comencé a correr he utilizado a NikeRunning.com de una u otra manera; Primero comencé con mi Itouch y ahora lo utilizó con el NikeWatch. Sin embargo, el sitio de Nike es un poco fastidioso; El sitio web está escrito en Flash [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://kodegeek.com/blog/wp-content/uploads/2011/10/Screen-Shot-2011-10-12-at-10.22.43-PM.png"><img src="http://kodegeek.com/blog/wp-content/uploads/2011/10/Screen-Shot-2011-10-12-at-10.22.43-PM.png" alt="" title="KodeGeek - Tipos de terreno para todas mis carreras, desde NikeRunning" width="502" height="500" class="alignnone size-full wp-image-3132" /><br />
Tipos de terreno para todas mis carreras, desde NikeRunning, mostrado con JavaFX</a></p>
<p>Desde que comencé a correr he utilizado a NikeRunning.com de una u otra manera; Primero comencé con mi Itouch y ahora lo utilizó con el NikeWatch.</p>
<p>Sin embargo, el sitio de Nike es un poco fastidioso; El sitio web está escrito en Flash (lo cual lo hace pesado), tiene gráficos limitados pero lo mas inconveniente es que mis datos están cautivos en el sitio web. Según ellos ya llevan tiempo trabajando en una migración que eliminará Flash:</p>
<blockquote><p>Hello Everyone,</p>
<p>Thank you all for your feedback.</p>
<p>To let everyone know, we are in the process of revamping our website. We are in transition to move away from flash to HTML. The goal is to be faster and more efficient.</p>
<p>We thank you for your patience as we update our sites. There is not an estimated time of when the transition will be fixed, but I can assure you that I&#8217;ve seen parts of the site and it&#8217;s looks and feels amazing.</p>
<p>Stay tuned! </p></blockquote>
<p>Buscando un poco en Google me conseguí conque se puede obtener toda la información de las carreras (siempre y cuando estas esten marcadas como públicas) usando el siguiente URL:</p>

<div class="wp_codebox"><table><tr id="p312314"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p3123code14"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>nikerunning.nike.com<span style="color: #000000; font-weight: bold;">/</span>nikeplus<span style="color: #000000; font-weight: bold;">/</span>v1<span style="color: #000000; font-weight: bold;">/</span>services<span style="color: #000000; font-weight: bold;">/</span>widget<span style="color: #000000; font-weight: bold;">/</span>get_public_run_list.jsp?<span style="color: #007800;">userID</span>=IDENTIFICADOR_DE_USUARIO</pre></td></tr></table></div>

<p>El archivo resultante está en formato XML.</p>
<p>Pero, ¿y de donde obtenemos el identificador del usuario? Es sencillo, simplemente vaya a nikerunning.nike.com y una vez que entre con su usuario y clave al sitio web haga click sobre una de sus corridas. El URL resultante se verá como esto:</p>

<div class="wp_codebox"><table><tr id="p312315"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p3123code15"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>nikerunning.nike.com<span style="color: #000000; font-weight: bold;">/</span>nikeos<span style="color: #000000; font-weight: bold;">/</span>p<span style="color: #000000; font-weight: bold;">/</span>nikeplus<span style="color: #000000; font-weight: bold;">/</span>en_US<span style="color: #000000; font-weight: bold;">/</span>plus<span style="color: #000000; font-weight: bold;">/</span><span style="color: #666666; font-style: italic;">#//runs/gps/IDENTIFICADOR_DE_USUARIO/299193444/</span></pre></td></tr></table></div>

<p>En donde IDENTIFICADOR_DE_USUARIO es el número mágico que queremos usar.</p>
<p>Se me ocurrió por ejemplo escribir un pequeño programa en Jython y JavaFX el cual muestra la distribución de tipos de terreno encontrados mientras corrí:</p>

<div class="wp_codebox"><table><tr id="p312316"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</pre></td><td class="code" id="p3123code16"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env jython</span>
<span style="color: #808080; font-style: italic;"># Author: Jose Vicente Nunez Zuleta, josevnz@kodegeek.com</span>
<span style="color: #808080; font-style: italic;"># This script parses the user run data and creates a simple distribtion by terrain types</span>
<span style="color: #808080; font-style: italic;"># See: http://nikerunning.nike.com/nikeos/p/nikeplus/en_EMEA/plus/#//dashboard/</span>
<span style="color: #808080; font-style: italic;"># Nike and Nikeplus/Nike+ are trademarks owned by Nike.</span>
<span style="color: #808080; font-style: italic;"># License: BSD</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">from</span> javafx.<span style="color: black;">application</span> <span style="color: #ff7700;font-weight:bold;">import</span> Application
<span style="color: #ff7700;font-weight:bold;">from</span> javafx.<span style="color: #dc143c;">collections</span> <span style="color: #ff7700;font-weight:bold;">import</span> FXCollections
<span style="color: #ff7700;font-weight:bold;">from</span> javafx.<span style="color: #dc143c;">collections</span> <span style="color: #ff7700;font-weight:bold;">import</span> ObservableList
<span style="color: #ff7700;font-weight:bold;">from</span> javafx.<span style="color: black;">scene</span> <span style="color: #ff7700;font-weight:bold;">import</span> Scene
<span style="color: #ff7700;font-weight:bold;">from</span> javafx.<span style="color: black;">stage</span> <span style="color: #ff7700;font-weight:bold;">import</span> Stage
<span style="color: #ff7700;font-weight:bold;">from</span> javafx.<span style="color: black;">scene</span>.<span style="color: black;">chart</span> <span style="color: #ff7700;font-weight:bold;">import</span> PieChart
<span style="color: #ff7700;font-weight:bold;">from</span> javafx.<span style="color: black;">scene</span> <span style="color: #ff7700;font-weight:bold;">import</span> Group
<span style="color: #ff7700;font-weight:bold;">from</span> com.<span style="color: black;">kodegeek</span>.<span style="color: black;">fitness</span>.<span style="color: black;">nikerun</span>.<span style="color: black;">query</span> <span style="color: #ff7700;font-weight:bold;">import</span> CannedQuery
<span style="color: #ff7700;font-weight:bold;">from</span> com.<span style="color: black;">kodegeek</span>.<span style="color: black;">fitness</span>.<span style="color: black;">nikerun</span>.<span style="color: black;">public</span> <span style="color: #ff7700;font-weight:bold;">import</span> PlusPublicService
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> TerrainTypesChart<span style="color: black;">&#40;</span>Application<span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> __getData__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        args = <span style="color: #008000;">self</span>.<span style="color: black;">getParameters</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">getRaw</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        pServ = PlusPublicService<span style="color: black;">&#40;</span>args<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        data = pServ.<span style="color: black;">getUserData</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        dp = CannedQuery<span style="color: black;">&#40;</span><span style="color: #483d8b;">'string'</span>, data<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> dp.<span style="color: black;">getTypesOfTerrain</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> start<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, stage<span style="color: black;">&#41;</span>:
        scene = Scene<span style="color: black;">&#40;</span>Group<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        stage.<span style="color: black;">setTitle</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Terrain types found in all races&quot;</span><span style="color: black;">&#41;</span>
        stage.<span style="color: black;">setWidth</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
        stage.<span style="color: black;">setHeight</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
&nbsp;
        count = <span style="color: #008000;">self</span>.__getData__<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        data = <span style="color: black;">&#91;</span>PieChart.<span style="color: black;">Data</span><span style="color: black;">&#40;</span>key, value<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#40;</span>key, value<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">in</span> count.<span style="color: black;">iteritems</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
        pieChartData = FXCollections.<span style="color: black;">observableArrayList</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>
        chart = PieChart<span style="color: black;">&#40;</span>pieChartData<span style="color: black;">&#41;</span>
        chart.<span style="color: black;">setTitle</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Terrain types found&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
        scene.<span style="color: black;">getRoot</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">getChildren</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">add</span><span style="color: black;">&#40;</span>chart<span style="color: black;">&#41;</span>
        stage.<span style="color: black;">setScene</span><span style="color: black;">&#40;</span>scene<span style="color: black;">&#41;</span>
        stage.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
        Application.<span style="color: black;">launch</span><span style="color: black;">&#40;</span>TerrainTypesChart<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: #ff7700;font-weight:bold;">class</span>, <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>La clase &#8216;PlusPublicService&#8217; no es más que un simple cliente GET el cual se baja los datos del sitio de Nike:</p>

<div class="wp_codebox"><table><tr id="p312317"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code" id="p3123code17"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">!</span>/usr/bin/env jython
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Author: Jose Vicente Nunez Zuleta, josevnz@kodegeek.com</span>
<span style="color: #808080; font-style: italic;"># See: http://nikerunning.nike.com/nikeos/p/nikeplus/en_EMEA/plus/#//dashboard/</span>
<span style="color: #808080; font-style: italic;"># Nike and Nikeplus/Nike+ are trademarks owned by Nike.</span>
<span style="color: #808080; font-style: italic;"># License: BSD</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">httplib</span> <span style="color: #ff7700;font-weight:bold;">import</span> HTTPConnection, HTTP_PORT
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
__URL__ = <span style="color: #483d8b;">'nikerunning.nike.com'</span>
__SERVICE__ = <span style="color: #483d8b;">'/nikeplus/v1/services/widget/get_public_run_list.jsp?userID='</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> PlusPublicService:
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, userId, port = HTTP_PORT<span style="color: black;">&#41;</span>:
                <span style="color: #008000;">self</span>.<span style="color: black;">service</span> = __SERVICE__ + userId
                <span style="color: #008000;">self</span>.<span style="color: black;">userId</span> = userId
                <span style="color: #008000;">self</span>.<span style="color: black;">port</span> = port
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> getUserData<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, debug=<span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:
                data = <span style="color: #008000;">None</span>
                con = HTTPConnection<span style="color: black;">&#40;</span>__URL__, <span style="color: #008000;">self</span>.<span style="color: black;">port</span><span style="color: black;">&#41;</span>
                con.<span style="color: black;">set_debuglevel</span><span style="color: black;">&#40;</span>debug<span style="color: black;">&#41;</span>
                con.<span style="color: black;">request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'GET'</span>, <span style="color: #008000;">self</span>.<span style="color: black;">service</span><span style="color: black;">&#41;</span>
                response = con.<span style="color: black;">getresponse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">if</span> response.<span style="color: black;">status</span> == <span style="color: #ff4500;">200</span>:
                        data = response.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">else</span>:
                        <span style="color: #ff7700;font-weight:bold;">raise</span> <span style="color: #008000;">Exception</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Error. Status = %s, reason = %s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>response.<span style="color: black;">status</span>, response.<span style="color: black;">reason</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
                con.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">return</span> data
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
        argv = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>argv<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">0</span>:
                pServ = PlusPublicService<span style="color: black;">&#40;</span>argv<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s&quot;</span> <span style="color: #66cc66;">%</span> pServ.<span style="color: black;">getUserData</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">8</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;NikeRunning user id is required!&quot;</span>
                <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">192</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Y para procesar mis datos utilizo un poco de XPATH en la clase &#8216;CannedQuery&#8217; la cual tiene un método el cual se encarga de crear la distribución para los distintos tipos de terreno:</p>

<div class="wp_codebox"><table><tr id="p312318"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</pre></td><td class="code" id="p3123code18"><pre class="python" style="font-family:monospace;">/usr/bin/env jython
<span style="color: #808080; font-style: italic;"># Author: Jose Vicente Nunez Zuleta, josevnz@kodegeek.com</span>
<span style="color: #808080; font-style: italic;"># See: http://nikerunning.nike.com/nikeos/p/nikeplus/en_EMEA/plus/#//dashboard/</span>
<span style="color: #808080; font-style: italic;"># Nike and Nikeplus/Nike+ are trademarks owned by Nike.</span>
<span style="color: #808080; font-style: italic;"># License: BSD</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">xml</span>.<span style="color: black;">dom</span>.<span style="color: black;">minidom</span> <span style="color: #ff7700;font-weight:bold;">import</span> parse, parseString
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">xml</span>.<span style="color: black;">etree</span> <span style="color: #ff7700;font-weight:bold;">import</span> ElementTree
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> DataParser<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #008000;">type</span>=<span style="color: #483d8b;">'string'</span><span style="color: black;">&#41;</span>:
                <span style="color: #008000;">self</span>.<span style="color: #008000;">type</span> = <span style="color: #008000;">type</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> __parseDomFile__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #008000;">file</span><span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">return</span> parse<span style="color: black;">&#40;</span><span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span>, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> __parseDomString__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #dc143c;">string</span><span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">return</span> parseString<span style="color: black;">&#40;</span><span style="color: #dc143c;">string</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> __parseXpathFile__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #008000;">file</span><span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">return</span> ElementTree.<span style="color: black;">parse</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> __parseXpathString__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #dc143c;">string</span><span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">return</span> ElementTree.<span style="color: black;">fromstring</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">string</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> __getDom__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, source<span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">self</span>.<span style="color: #008000;">type</span> == <span style="color: #483d8b;">'string'</span>:
                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__parseDomString__<span style="color: black;">&#40;</span>source<span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">else</span>:
                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__parseDomFile__<span style="color: black;">&#40;</span>source<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> __getTree__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, source<span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">self</span>.<span style="color: #008000;">type</span> == <span style="color: #483d8b;">'string'</span>:
                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__parseXpathString__<span style="color: black;">&#40;</span>source<span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">else</span>:
                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__parseXpathFile__<span style="color: black;">&#40;</span>source<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> CannedQuery<span style="color: black;">&#40;</span>DataParser<span style="color: black;">&#41;</span>:
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #008000;">type</span>, source<span style="color: black;">&#41;</span>:
                <span style="color: #008000;">super</span><span style="color: black;">&#40;</span>CannedQuery, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">type</span><span style="color: black;">&#41;</span>
                <span style="color: #008000;">self</span>.<span style="color: black;">source</span> = source
                <span style="color: #008000;">self</span>.<span style="color: black;">terrainMap</span> = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'0'</span>: <span style="color: #483d8b;">'Not defined'</span>, <span style="color: #483d8b;">'1'</span>: <span style="color: #483d8b;">'Road'</span>, <span style="color: #483d8b;">'2'</span>: <span style="color: #483d8b;">'Trail'</span>, <span style="color: #483d8b;">'3'</span>: <span style="color: #483d8b;">'Treadmill'</span>, <span style="color: #483d8b;">'4'</span>: <span style="color: #483d8b;">'Track'</span> <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> getTypesOfTerrain<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
                tree = <span style="color: #008000;">self</span>.__getTree__<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">source</span><span style="color: black;">&#41;</span>
                count = <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
                <span style="color: #ff7700;font-weight:bold;">for</span> elem <span style="color: #ff7700;font-weight:bold;">in</span> tree.<span style="color: black;">findall</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;.//terrain&quot;</span><span style="color: black;">&#41;</span>:
                        key = <span style="color: #483d8b;">'Never collected'</span>
                        <span style="color: #ff7700;font-weight:bold;">if</span> elem.<span style="color: black;">text</span> <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">self</span>.<span style="color: black;">terrainMap</span>:
                                key = <span style="color: #008000;">self</span>.<span style="color: black;">terrainMap</span><span style="color: black;">&#91;</span>elem.<span style="color: black;">text</span><span style="color: black;">&#93;</span>
                        <span style="color: #ff7700;font-weight:bold;">if</span> key <span style="color: #ff7700;font-weight:bold;">in</span> count:
                                count<span style="color: black;">&#91;</span>key<span style="color: black;">&#93;</span> += <span style="color: #ff4500;">1</span>
                        <span style="color: #ff7700;font-weight:bold;">else</span>:
                                count<span style="color: black;">&#91;</span>key<span style="color: black;">&#93;</span> = <span style="color: #ff4500;">1</span>
                <span style="color: #ff7700;font-weight:bold;">return</span> count
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
        argv = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>argv<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">0</span>:
                dp = CannedQuery<span style="color: black;">&#40;</span><span style="color: #483d8b;">'file'</span>, argv<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
                count = dp.<span style="color: black;">getTypesOfTerrain</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s&quot;</span> <span style="color: #66cc66;">%</span> count</pre></td></tr></table></div>

<p>Pienso abrir un proyecto con todas estas clases de Python (Jython) en unos pocos días. Quiero agregarle un par de cosas más antes de soltarlas al aire libre <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2011/10/12/hackeando-mis-datos-en-nikerunning-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opinión de libros: The Long Run (O como Matt Long nos muestra que si se puede)</title>
		<link>http://kodegeek.com/blog/2011/10/02/opinion-de-libros-the-long-run-o-como-matt-long-nos-muestra-que-si-se-puede/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=opinion-de-libros-the-long-run-o-como-matt-long-nos-muestra-que-si-se-puede</link>
		<comments>http://kodegeek.com/blog/2011/10/02/opinion-de-libros-the-long-run-o-como-matt-long-nos-muestra-que-si-se-puede/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 00:16:37 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[athlete]]></category>
		<category><![CDATA[atleta]]></category>
		<category><![CDATA[marathon]]></category>
		<category><![CDATA[maraton]]></category>
		<category><![CDATA[matt long]]></category>
		<category><![CDATA[survive]]></category>
		<category><![CDATA[the long run]]></category>
		<category><![CDATA[tiriatlon]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3082</guid>
		<description><![CDATA[Normalmente no leo biografías de nadie; No me malentiendan, la historia de individuos que resaltan por haber hecho cosas extraordinarias es algo que debería motivarnos a ser mejores a todos. Simplemente no es lo mio. Pero la historia del bombero y atleta Matt Long es digna de una película de super heroes. Este libro es [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente no leo biografías de nadie; No me malentiendan, la historia de individuos que resaltan por haber hecho cosas extraordinarias es algo que debería motivarnos a ser mejores a todos. </p>
<p>Simplemente no es lo mio. <a href="http://www.mattslongrun.com/">Pero la historia del bombero y atleta </a><a href="http://youtu.be/yn2KjO5zrBo">Matt Long</a> es digna de una película de super heroes.</p>
<p>Este libro es especial dado lo inusual de su personaje; Imagínese que usted es un corredor / atleta que se hizo desde cero, comenzando primero a pujar para poder correr hasta lograr conquistar varias metas: <a href="http://www.nycmarathon.org/">El maratón ING de New York</a> (el más famoso del mundo), <strike><a href="http://www.chicagomarathon.com">el de Chicago</a> </strike><a href="http://www.baa.org/">Boston</a> (con su fama de invitar sólo a los más rápidos) y luego el <a href="http://ironman.com">triatlón Iron Man</a> (si nadar, montar bicicleta y correr por varias millas no lo intimidan entonces usted seguro no es normal).</p>
<p>Todo va muy bien hasta un fatídico día en el cual en vez de entrenar con sus amigos es atropellado por un autobús el cual casi lo deja muerto, todo gracias <a href="http://en.wikipedia.org/wiki/2005_New_York_City_transit_strike">a un paro de transporte en la gran manzana</a> y a un conductor descuidado.</p>
<p>Pero Matt no se rindió. Peleó por recuperarse y al final logró volver a correr el maratón de New York y no sólo eso, logró hacer otro Iron Man.</p>
<p>Su lucha no fué fácil, ya que le dieron sólo %5 de posibilidades de éxito; Leer sus dudas y dolor físico es angustiante pero lo que realmente lo que cautiva de este libro es que aún con sus dudas el pudo salir a adelante y cambiar su suerte.</p>
<p>Mucha gente se ríe cuando les digo que me levanto a las 4:00 de la mañana 3 veces a la semana para entrenar en el gimnasio. Yo les digo que eso no es nada, no es un esfuerzo de verdad. Si no lean la historia de Matt Long para que vean que si se puede; Si eso no los inspira a ser mejores entonces no se que pueda <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2011/10/02/opinion-de-libros-the-long-run-o-como-matt-long-nos-muestra-que-si-se-puede/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Es el tiempo de recuperación, idiota</title>
		<link>http://kodegeek.com/blog/2011/09/29/es-el-tiempo-de-recuperacion-idiota/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=es-el-tiempo-de-recuperacion-idiota</link>
		<comments>http://kodegeek.com/blog/2011/09/29/es-el-tiempo-de-recuperacion-idiota/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 10:32:51 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[correr carera 5k recuperacion recovery race]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3072</guid>
		<description><![CDATA[O algo así es como dice el articulo que apareció en la revista del mes de Octubre del 2011 &#8216;Running Times&#8217;, del atleta y escritor Peter Magil;. Allí el nos muestra como calcular cuanto descansar después de un entrenamiento usando las tablas creadas por el científico Tom Schwarts. Mi implementación en Python a continuación: 1 [...]]]></description>
			<content:encoded><![CDATA[<p>O algo así es como dice el articulo que apareció en la revista del mes de Octubre del 2011 &#8216;Running Times&#8217;, del atleta y escritor Peter Magil;. Allí el nos muestra como calcular cuanto descansar después de un entrenamiento usando las tablas creadas por el científico Tom Schwarts.</p>
<p>Mi implementación en Python a continuación:</p>

<div class="wp_codebox"><table><tr id="p307222"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
</pre></td><td class="code" id="p3072code22"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># Calculate days of recovery after a race. Based on the article appeared on the Running times magazine </span>
<span style="color: #808080; font-style: italic;"># &quot;It's the Recovery Stupid&quot; by Pete Magill, using Tom Schwartz tables</span>
<span style="color: #808080; font-style: italic;"># author: josevnz@kodegeek.com</span>
<span style="color: #808080; font-style: italic;"># http://kodegeek.com/blog</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Recovery:
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
                <span style="color: #008000;">self</span>.__ages = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'20'</span>:<span style="color: #ff4500;">0</span>, <span style="color: #483d8b;">'30'</span>:<span style="color: #ff4500;">1</span>, <span style="color: #483d8b;">'40'</span>:<span style="color: #ff4500;">2</span>, <span style="color: #483d8b;">'50'</span>:<span style="color: #ff4500;">3</span>, <span style="color: #483d8b;">'60'</span>:<span style="color: #ff4500;">4</span>, <span style="color: #483d8b;">'70'</span>:<span style="color: #ff4500;">5</span>, <span style="color: #483d8b;">'80'</span>:<span style="color: #ff4500;">6</span> <span style="color: black;">&#125;</span>
                <span style="color: #008000;">self</span>.__fitnessLevel = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'LOW'</span>:<span style="color: #ff4500;">0</span>, <span style="color: #483d8b;">'MEDIUM'</span>:<span style="color: #ff4500;">1</span>, <span style="color: #483d8b;">'HIGH'</span>:<span style="color: #ff4500;">2</span> <span style="color: black;">&#125;</span>
                <span style="color: #008000;">self</span>.__daysBetweenWorkouts = <span style="color: black;">&#91;</span>
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">4.0</span>, <span style="color: #ff4500;">3.0</span>, <span style="color: #ff4500;">2.5</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">5.0</span>, <span style="color: #ff4500;">4.0</span>, <span style="color: #ff4500;">3.0</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">6.0</span>, <span style="color: #ff4500;">4.5</span>, <span style="color: #ff4500;">3.5</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">7.0</span>, <span style="color: #ff4500;">5.0</span>, <span style="color: #ff4500;">4.0</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">7.5</span>, <span style="color: #ff4500;">6.0</span>, <span style="color: #ff4500;">4.5</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">8.0</span>, <span style="color: #ff4500;">6.5</span>, <span style="color: #ff4500;">5.0</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">9.0</span>, <span style="color: #ff4500;">7.0</span>, <span style="color: #ff4500;">5.5</span> <span style="color: black;">&#93;</span>
                <span style="color: black;">&#93;</span>
                <span style="color: #008000;">self</span>.__races = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'5K'</span>:<span style="color: #ff4500;">0</span>, <span style="color: #483d8b;">'8K'</span>:<span style="color: #ff4500;">1</span>, <span style="color: #483d8b;">'10K'</span>:<span style="color: #ff4500;">2</span>, <span style="color: #483d8b;">'15K'</span>:<span style="color: #ff4500;">3</span>, <span style="color: #483d8b;">'1/2 Mar'</span>:<span style="color: #ff4500;">4</span>, <span style="color: #483d8b;">'Mar'</span>:<span style="color: #ff4500;">5</span> <span style="color: black;">&#125;</span>
                <span style="color: #008000;">self</span>.__intensityWorkout = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'EASY'</span>:<span style="color: #ff4500;">0</span>, <span style="color: #483d8b;">'MEDIUM'</span>:<span style="color: #ff4500;">1</span>, <span style="color: #483d8b;">'HARD'</span>:<span style="color: #ff4500;">2</span> <span style="color: black;">&#125;</span>
                <span style="color: #008000;">self</span>.__recoveryDaysAfterRace = <span style="color: black;">&#91;</span>
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">3</span>, <span style="color: #ff4500;">5</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">3</span>, <span style="color: #ff4500;">5</span>, <span style="color: #ff4500;">8</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">3.5</span>, <span style="color: #ff4500;">6</span>, <span style="color: #ff4500;">9</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">4</span>, <span style="color: #ff4500;">7</span>, <span style="color: #ff4500;">11</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">5.5</span>, <span style="color: #ff4500;">9</span>, <span style="color: #ff4500;">14</span> <span style="color: black;">&#93;</span>,
                        <span style="color: black;">&#91;</span> <span style="color: #ff4500;">9</span>, <span style="color: #ff4500;">17</span>, <span style="color: #ff4500;">26</span> <span style="color: black;">&#93;</span>
                <span style="color: black;">&#93;</span>
                <span style="color: #008000;">self</span>.__adjustment = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'20'</span>:<span style="color: #ff4500;">1.0</span>, <span style="color: #483d8b;">'30'</span>:<span style="color: #ff4500;">1.1</span>, <span style="color: #483d8b;">'40'</span>:<span style="color: #ff4500;">1.2</span> , <span style="color: #483d8b;">'50'</span>:<span style="color: #ff4500;">1.3</span>, <span style="color: #483d8b;">'60'</span>:<span style="color: #ff4500;">1.4</span>, <span style="color: #483d8b;">'70'</span>:<span style="color: #ff4500;">1.5</span>, <span style="color: #483d8b;">'80'</span>:<span style="color: #ff4500;">1.6</span> <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> getAgeBracket<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, age<span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">try</span>:
                        dAge = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>age<span style="color: black;">&#41;</span>
                        <span style="color: #ff7700;font-weight:bold;">if</span> dAge <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">0</span>:
                                <span style="color: #ff7700;font-weight:bold;">raise</span> <span style="color: #008000;">Exception</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Invalid age value: %s&quot;</span> <span style="color: #66cc66;">%</span> age<span style="color: black;">&#41;</span>
                        <span style="color: #ff7700;font-weight:bold;">for</span> bracket <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#91;</span> <span style="color: #ff4500;">20</span>, <span style="color: #ff4500;">30</span>, <span style="color: #ff4500;">40</span>, <span style="color: #ff4500;">40</span>, <span style="color: #ff4500;">50</span>, <span style="color: #ff4500;">70</span>, <span style="color: #ff4500;">80</span> <span style="color: black;">&#93;</span>:
                                <span style="color: #ff7700;font-weight:bold;">if</span> dAge <span style="color: #66cc66;">&gt;</span>= bracket <span style="color: #ff7700;font-weight:bold;">and</span> dAge <span style="color: #66cc66;">&lt;</span> = <span style="color: black;">&#40;</span>bracket + <span style="color: #ff4500;">9</span><span style="color: black;">&#41;</span>:
                                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>bracket<span style="color: black;">&#41;</span>
                        <span style="color: #808080; font-style: italic;"># &gt; 80 years</span>
                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">80</span>
                <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: black;">&#40;</span><span style="color: #008000;">Exception</span><span style="color: black;">&#41;</span>, exp:
                        <span style="color: #ff7700;font-weight:bold;">raise</span> <span style="color: #008000;">Exception</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Invalid age: %s&quot;</span> <span style="color: #66cc66;">%</span> age<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> getDaysBetweenWorkouts<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, age, level<span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">try</span>:
                        bracket = <span style="color: #008000;">self</span>.<span style="color: black;">getAgeBracket</span><span style="color: black;">&#40;</span>age<span style="color: black;">&#41;</span>
                        dBracket = <span style="color: #008000;">self</span>.__ages<span style="color: black;">&#91;</span>bracket<span style="color: black;">&#93;</span>
                        intensity = <span style="color: #008000;">self</span>.__fitnessLevel<span style="color: black;">&#91;</span>level<span style="color: black;">&#93;</span>
                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__daysBetweenWorkouts<span style="color: black;">&#91;</span>dBracket<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>intensity<span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> <span style="color: #008000;">self</span>.__adjustment<span style="color: black;">&#91;</span>bracket<span style="color: black;">&#93;</span>
                <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: black;">&#40;</span><span style="color: #008000;">Exception</span><span style="color: black;">&#41;</span>, exp:
                        <span style="color: #ff7700;font-weight:bold;">raise</span> <span style="color: #008000;">Exception</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Invalid age or level: age=%s, level=%s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>age, level<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> getDaysAfterRace<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, age, race, level<span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">try</span>:
                        bracket = <span style="color: #008000;">self</span>.<span style="color: black;">getAgeBracket</span><span style="color: black;">&#40;</span>age<span style="color: black;">&#41;</span>
                        dBracket = <span style="color: #008000;">self</span>.__races<span style="color: black;">&#91;</span>race<span style="color: black;">&#93;</span>
                        intensity = <span style="color: #008000;">self</span>.__intensityWorkout<span style="color: black;">&#91;</span>level<span style="color: black;">&#93;</span>
                        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__recoveryDaysAfterRace<span style="color: black;">&#91;</span>dBracket<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>intensity<span style="color: black;">&#93;</span> <span style="color: #66cc66;">*</span> <span style="color: #008000;">self</span>.__adjustment<span style="color: black;">&#91;</span>bracket<span style="color: black;">&#93;</span>
                <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: black;">&#40;</span><span style="color: #008000;">Exception</span><span style="color: black;">&#41;</span>, exp:
                        <span style="color: #ff7700;font-weight:bold;">raise</span> <span style="color: #008000;">Exception</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Invalid age race type or level: age=%s, race=%s, level=%s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>age, race, level<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
        recovery = Recovery<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        arg = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>
        days = <span style="color: #ff4500;">0</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#41;</span> == <span style="color: #ff4500;">2</span>:
                days = recovery.<span style="color: black;">getDaysBetweenWorkouts</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Days: %2.2f, for age: '%s' and level: '%s'&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>days, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#41;</span> == <span style="color: #ff4500;">3</span>:
                days = recovery.<span style="color: black;">getDaysAfterRace</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Days: %2.2f, for age: '%s' and level: '%s', race=%s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>days, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>, arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
                <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">192</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># &quot;com/kodegeek/fitness/recoveryrun.py&quot; 76L, 2539C written</span></pre></td></tr></table></div>

<p>Así que por ejemplo, si corremos una carrera de 5K con todo y tenemos 35 años de edad:</p>

<div class="wp_codebox"><table><tr id="p307223"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p3072code23"><pre class="bash" style="font-family:monospace;">Macintosh:python josevnz$ .<span style="color: #000000; font-weight: bold;">/</span>com<span style="color: #000000; font-weight: bold;">/</span>kodegeek<span style="color: #000000; font-weight: bold;">/</span>fitness<span style="color: #000000; font-weight: bold;">/</span>recoveryrun.py <span style="color: #000000;">35</span> 5K HARD
Days: <span style="color: #000000;">5.50</span>, <span style="color: #000000; font-weight: bold;">for</span> age: <span style="color: #ff0000;">'35'</span> and level: <span style="color: #ff0000;">'HARD'</span>, <span style="color: #007800;">race</span>=5K
Macintosh:python josevnz$</pre></td></tr></table></div>

<p>¿Y si no es una carrera, pero un entrenamiento fuerte y soy medianamente resistente?</p>

<div class="wp_codebox"><table><tr id="p307224"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p3072code24"><pre class="bash" style="font-family:monospace;">Macintosh:python josevnz$ .<span style="color: #000000; font-weight: bold;">/</span>com<span style="color: #000000; font-weight: bold;">/</span>kodegeek<span style="color: #000000; font-weight: bold;">/</span>fitness<span style="color: #000000; font-weight: bold;">/</span>recoveryrun.py <span style="color: #000000;">35</span> MEDIUM
Days: <span style="color: #000000;">4.40</span>, <span style="color: #000000; font-weight: bold;">for</span> age: <span style="color: #ff0000;">'35'</span> and level: <span style="color: #ff0000;">'MEDIUM'</span>
Macintosh:python josevnz$</pre></td></tr></table></div>

<p>Por cierto, hoy es mi día de descanso entre entrenamientos. Así que es hora de ejercitar el lado Geek un poquito. Estoy pensando en abrir un nuevo proyecto de código abierto para ir dejando estos pedazos de código relacionados con correr y ejercicios de resistencia. ¿Les suena buena idea?</p>
<p>Bueno, hasta la próxima entrega.</p>
<p>&#8211;José</p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2011/09/29/es-el-tiempo-de-recuperacion-idiota/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Race for the cure Susan Komen Greater NYC: ¡Toda una sorpresa!</title>
		<link>http://kodegeek.com/blog/2011/09/18/race-for-the-cure-susan-komen-greater-nyc-%c2%a1toda-una-sorpresa/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=race-for-the-cure-susan-komen-greater-nyc-%25c2%25a1toda-una-sorpresa</link>
		<comments>http://kodegeek.com/blog/2011/09/18/race-for-the-cure-susan-komen-greater-nyc-%c2%a1toda-una-sorpresa/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 20:35:26 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[vida sana]]></category>
		<category><![CDATA[komengreaternyc 5k kodegeek correr race 3.1miles]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=3048</guid>
		<description><![CDATA[El comienzo Hice el recorrido en 25:10 Después de ir al doctor y comenzar a recuperarme, decidí hacer esta carrera; La idea es celebrar el esfuerzo de las mujeres y hombres que han sobrevivido a un cáncer de seno, a la vez que se recaudan fondos para pelear contra esta variedad de la enfermedad. Ya [...]]]></description>
			<content:encoded><![CDATA[<h2>El comienzo</h2>
<p><a href="http://www.flickr.com/photos/josevnz/6159673417/" title="Race for the cure map by josevnz, on Flickr"><img src="http://farm7.static.flickr.com/6065/6159673417_71f91ccb7a.jpg" width="500" height="325" alt="Race for the cure map"/><br />
Hice el recorrido en 25:10</a></p>
<p>Después de <a href="http://kodegeek.com/blog/2011/08/10/corriendo-con-dolor-recuperacion-y-cambio-de-tacticas/">ir al doctor y comenzar a recuperarme</a>, decidí hacer esta carrera; La idea es celebrar el esfuerzo de las mujeres y hombres que han sobrevivido a un cáncer de seno, a la vez que se recaudan fondos para pelear contra esta variedad de la enfermedad.</p>
<p>Ya mi amigo Hengel (otro corredor Venezolano amigo mio) se habia inscrito, así que yo no tenia ninguna excusa para no correr. Además, después de eso el plan era hacer un almuerzo al aire libre en Central Park, al comienzo de Otoño cuando aún no es muy frío.</p>
<p>Nunca puedo dormir antes de una carrera; Esta no fué la excepción y después de comer mi desayuno (una buena mezcla de proteína y carbohidratos lentos) escribí lo siguiente en Facebook y Google+:</p>
<blockquote><p>Race for the cure schedule so far:</p>
<p>- 5:00 AM: Breakfast and prepare race items<br />
- 6:30 AM: Wake up Veronica and Sebastian<br />
- Registration will open at 7:00 Am at 71 Street West in Central park. We will be there around 8:30 AM, no rush (I already got by BIB# 16539. How many people is in there?)<br />
- 9:20 AM: Race starts for elite female runners and survivors only (yeah, males like me will have to suck it until 9:25 AM).<br />
- 10:30 Runners award ceremony begins in Bandshell. Based on my previous two races I should not take more than 30 minutes to complete this one.</p>
<p>This year I&#8217;ll record some video (wait for the Flickr invite) and some photos as things develop. This race doesn&#8217;t have an official time, so unless I win (JAJAJA) I will have no way to know on which position I finish (so my new GPS time will have to be enough for my poor ego).</p>
<p>I&#8217;ll keep you guys posted!</p>
<p>Hengel Zambrano: I&#8217;ll call you to see where are we meeting before the race.</p>
<p>&#8211;José</p></blockquote>
<p>Nada sabia yo que esta carrera iba a tener sorpresas preparadas.</p>
<h2>Antes de la carrera</h2>
<p><object type="application/x-shockwave-flash" width="640" height="360" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=d9f3e7062b&#038;photo_id=6160149372&#038;flickr_show_info_box=true"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=d9f3e7062b&#038;photo_id=6160149372&#038;flickr_show_info_box=true" height="360" width="640"></embed></object></p>
<p>Llegamos a las 8:40 A.M. a Central Park, calle 71 oeste; Una ves entrados allí recordamos que había que estar a esa altura en el lado Este.</p>
<p>Había que atravesar un pedazo completo del parque <a href="http://www.komennyc.org/site/PageServer?pagename=TR2011_race_map">para llegar allí</a>.</p>
<p>¿Qué tan lejos puede ser? No es lo lejos sino lo complicado cuando tu hijo de 4 años está disfrutando del parque, jugando con los perros, recogiendo hojas; Después de hacer una parada obligatoria en el baño (más nervios que otra cosa) y de tomarnos un café caminamos a la salida.</p>
<p>Allí la realidad se encargo de recordarme lo descuidado que había sido, la salida de los corredores acababa de comenzar a las 9:20 A.M. y la mia era la siguiente en 5 minutos.</p>
<p>El problema era pasarle por encima a las 500 personas que tenia por delante de mi para llegar a la salida de la carrera, nunca habia visto tanta gente (vestida de rosado) en mi vida.</p>
<h2>Inicio de la carrera</h2>
<p><a href="http://www.flickr.com/photos/josevnz/6160253506/" title="16539 by josevnz, on Flickr"><img src="http://farm7.static.flickr.com/6190/6160253506_2c16cc9e79.jpg" width="375" height="500" alt="16539"/><br />
Nunca subestime los imprevistos de una carrera</a></p>
<p>Comencé a trotar hacia la salida, luego a correr para luego detenerme abruptamente porque no se podía avanzar. Luego entro el pánico cuando el anunciador dijo lo siguiente:</p>
<blockquote><p>Siento una lastima por los corredores que no salieron a tiempo ya que ahora ahora van a tener que lanzarse entre los que sólo vienen a caminar los 5 kilómetros</p></blockquote>
<p>Coño, ¡Coño!, ¡están hablando de mi!.</p>
<p>Mi carrera anterior en el Yankee Stadium había sido un desastre y ahora esta estaba a punto de ser algo peor. Sin tiempo oficial y comenzando tarde con obstáculos, mi tiempo prometía ser el peor de todos.</p>
<p>Sin exagerar, me paralice por 5 segundos pensando que hacer después&#8230;</p>
<p>Mis piernas decidieron por mí; Comencé a correr lo más rápido que podía, empujando a quienes estaban adelante, rozándome de manera incomoda mientras trataba de buscar un espacio por donde pasar, pidiendo disculpas entre empujón y empujón mientras le rogaba a Dios que no me volaran la cara de un merecido golpe por no haber estado donde tenía que haber estado 10 minutos atrás.</p>
<p>Cuando ya llevaba apenas 0.80 millas (ni siquiera una milla) ya estaba jadeando del cansancio y mis cuádriceps me pedían a gritos que parara el abuso de correr &#8211; parar de golpe &#8211; correr. Estaba empapado de sudor y aún tenia un mar de gente por delante (<a href="http://nikerunning.nike.com/nikeos/p/nikeplus/en_US/plus/#//runs/gps/1612591530/165307450/" target="_blank">viendo el gráfico en NikePlus</a> se puede ver me mi ritmo era de 4:40 minutos por milla a la milla 0:84, muy rápido).</p>
<p>No estaba viendo el recorrido sino a quien tenia al frente, buscando huecos para poder pasar.</p>
<p>¿Como me las había arreglado para dañar mi carrera de ese modo?</p>
<h2>La pelea sólo se hace peleando</h2>
<p>No me detuve a descansar ni un momento; Ya sabía que la carrera iba a ser difícil por lo tarde de mi salida y la cantidad de gente en el recorrido tan estrecho, así que sólo me concentré en seguir pujando.</p>
<p>Después de la primera milla y media me dí cuenta que tenia que estabilizar el ritmo, de lo contrario no iba a llegar a la meta en buen estado; Mirando alrededor me conseguí con un muchachito de 25 años (o algo así) que tenia buen ritmo y pasaba a la gente cuando tenia una oportunidad.</p>
<p>Esa era nueva meta, pegarmele atrás y seguirlo. El me iba a abrir el paso por la siguiente milla o más.</p>
<p>El plan funcionó ya que cuando ibamos por la milla 2.60 me sentía con más energía que al principio y aún seguía pasando gente por delante; Cuando llegamos a la milla 2.80 llegó el momento de desprenderme e iniciar la carrera con todo.</p>
<p>Mira de nuevo mi reloj y me dí cuenta que mi tiempo no era fatal, por lo que aprete el pedal y corrí con todo, tan rápido que pase a muchos corredores que ya estaban en pleno &#8216;surge&#8217;. Cuando llegué a la meta, lo hice volando y estrellandome contra los corredores que ya habían bajado la velocidad al cruzar la meta antes que yo.</p>
<p>Mi tiempo &#8216;no oficial&#8217;: 25:20, Mejor que en el <a href="http://kodegeek.com/blog/2011/08/07/segunda-carrera-de-5k-esta-vez-en-el-yankee-stadium/">Yankee Stadium</a> pero peor que la carrera de <a href="http://kodegeek.com/blog/2011/06/04/%c2%a1mi-primera-carrera-de-5-kilometros-o-como-no-morirse-en-el-intento/">Yai</a>.</p>
<h2>Después de la tormenta viene la calma</h2>
<p><a href="http://www.flickr.com/photos/josevnz/6159877545/" title="IMG_9567 by josevnz, on Flickr"><img src="http://farm7.static.flickr.com/6177/6159877545_cd77ab09c1.jpg" width="333" height="500" alt="IMG_9567"/><br />
La pasamos muy bien durante y después de la carrera</a></p>
<p>La carrera fué interesante; En particular celebro el coraje de quienes nunca se rindieron cuando la enfermedad los atacó y lograron salir adelante. </p>
<p>Lo único negativo: Para mi fué decepcionante el hecho de que no se midan los tiempos oficiales, aunque los organizadores de la carrera son MUY claros diciendo que es una carrera por diversión no competitiva, no creo que tomar los tiempos afecte el espíritu de camaradería que caracterizo al evento.</p>
<p>De cualquier forma la pasé genial, en especial con la comida al aire libre con Verónica y Sebastian. Esta es una excelente excusa para hacer más carreras <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>¿Queda alguna carrera interesante para el 2011? Hay un par que me llaman la atención, queda ver como me va adaptándome a correr en el frio de Noviembre / Diciembre.</p>
<p>NOTA: Hay fotos que me faltan por subir, en especial las del día de la carrera. Cuando salgan las pongo en este artículo.</p>
<p>&#8211;José</p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2011/09/18/race-for-the-cure-susan-komen-greater-nyc-%c2%a1toda-una-sorpresa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

