Gnuget http://gnuget.underlife.org/ Gnuget Creative Commons Atribución-Licenciamiento Recíproco 2.5 México Fri, 31 Oct 2008 11:33:39 -0700 http://www.textmotion.org Photo meme http://gnuget.underlife.org/blog/view/197/photo-meme http://gnuget.underlife.org/blog/view/197/photo-meme <!--begin photo--><div class="photo block-center"> <a href="http://gnuget.underlife.org/data/uploads/gnuget.png"><img class="picbox-photo" src="http://gnuget.underlife.org/data/thumbs/202_6c55de32e8272a13712d9c5a05b28850_gnuget.png" width="200" height="202" /></a> </div><!--end photo--><p>1. Take a picture of yourself right now.</p> <p>2. Don’t change your clothes, don’t fix your hair…just take a picture.</p> <p>3. Post that picture with NO editing.</p> <p>4. Post these instructions with your picture.</p> david.valdez210@gmail.com (David Valdez) Fri, 31 Oct 2008 11:33:39 -0700 Proyecto pepon http://gnuget.underlife.org/blog/view/196/proyecto-pepon http://gnuget.underlife.org/blog/view/196/proyecto-pepon <p>Desde hace una semana a la fecha he venido trabajando en un pequeño proyecto  al cual he bautizado pepon, pepon nace de la necesidad de tener acceso a un traductor   y evitarme la pereza de ir a abrir  el traductor de google cada vez que lo necesite, la idea inicial era crear un pequeño script para usarlo en la terminal pero esa idea fue evolucionando hasta convertirse en lo que hoy es pepon.</p> <p>Pepon es un pequeño (si es pequeño por que aun no sabe hacer muchas cosas)  robot de gtalk escrito en python que actualmente sabe hacer lo siguiente:</p> <p><ul><li>Generar la tinyUrl de una dirección  web  ( tinyurl http://gnuget.org)</li><li>Generar el md5 hash de una cadena  (md5 cadena_De_Texto)</li><li>Trata de descifrar la cadena  de un hash previamente dado (unmd5 d8578edf8458ce06fbc5bb76a58c5ca4 ) </li><li>Traducir en todos los lenguajes que traduce translate.google.com  (translate en-es  hello world)</li></ul></p> <p>Actualmente algunos amigos y yo estamos trabajando en implementarle mas cosas a  este pequeño robot así que con el tiempo ira creciendo, si quieres tener a este robot en tu lista de contactos de google talk su dirección es esta:</p> <!--begin photo--><div class="photo block-center"> <a href="http://gnuget.underlife.org/data/uploads/pepon.png"><img class="picbox-photo" src="http://gnuget.underlife.org/data/thumbs/305_fb33d597aaa870ef133fe0759b2ca5b6_pepon.png" width="305" height="55" /></a> </div><!--end photo--><p></p> <p>Si tienes  alguna sugerencia de alguna buena característica que te gustaría que pepon aprendiera a hacer deja un comentario  e intentaremos implementarla.</p> <p>Igualmente nos gustaría que pepon tuviera  un nombre mas acorde  a lo que es (un acronimo relacionado con un robot quizá)  así que igual  cualquier sugerencia es bien recibida.</p> david.valdez210@gmail.com (David Valdez) Wed, 29 Oct 2008 19:24:49 -0700 Nuevo tema en el blog http://gnuget.underlife.org/blog/view/195/nuevo-tema-en-el-blog http://gnuget.underlife.org/blog/view/195/nuevo-tema-en-el-blog <!--begin photo--><div class="photo block-center"> <a href="http://gnuget.underlife.org/data/uploads/new_theme.png"><img alt="280_7c117bfc871f02f28bd2f0a6172ad373_new_theme.png" src="http://gnuget.underlife.org/data/thumbs/280_7c117bfc871f02f28bd2f0a6172ad373_new_theme.png" width="280" height="175" /></a> </div><!--end photo--><p>Cortesía de  <a href="http://blacknash.com.mx/">Blacknash</a></p> david.valdez210@gmail.com (David Valdez) Mon, 20 Oct 2008 23:02:15 -0700 Caso de estudio: Galaxia Linux y por que no basar un rank en impresiones. http://gnuget.underlife.org/blog/view/193/caso-de-estudio-galaxia-linux-y-por-que-no-basar-un-rank-en-impresiones http://gnuget.underlife.org/blog/view/193/caso-de-estudio-galaxia-linux-y-por-que-no-basar-un-rank-en-impresiones <p>Si leyeron el post anterior vieron el conflicto que causo <a href="http://www.tecnologiaslibres.net/">Eduardo</a> por  que <a href="http://log.damog.net/">damog</a>  rompió la credibilidad del rank de  Galaxia Linux.</p> <p>Después de esa gran tragedia yo tuve la oportunidad de tener una “lluvia de ideas” para mejorar galaxia linux,  bien,  en lugar de ser una lluvia de ideas vimos a un Programador defendiendo su trabajo  convencido que la forma en que hace las cosas es fiable.</p> <p>El nos cuenta que por ahora están afinando el método y están en beta a lo que yo conteste que  el script de damog demostró que tal cosa no va a ser viable y que tendría que replantear la forma en que rankea los sitios; Eduardo en ese momento me reto a que probara el script de damog para demostrar que tal  script ya no funciona y que él en cuanto detecte  nuevas formas de <b><i>“meter gol”</i></b>  les iba a programar filtros para que no puedan quitarle fidelidad al rank.</p> <p>La conclusión al final  de la conversación era que si me daba tiempo iba a extender el ejemplo de David Moreno a algo que no se pudiera filtrar  y que mostraría que  usar impresiones para armar el rank era algo inviable.</p> <p>Así que hoy deje de ver mi episodio Sara Connors Chronicles  y prepare  un pequeño caso de estudio.</p> <p>Primero,  pensemos un poco acerca de como funciona  su sistema de ranking  de galaxialinux.com</p> <p>1. Crear un script que genere una imagen que a la vez cuente como impresión la pagina del blog que ha sido visitado. (osea este: http://www.galaxialinux.com/rank/banners/banner.php)</p> <p>2. Contar  estas impresiones, pero para darle mas fidelidad tenemos que considerar algunas cosas:</p> <p>-  La ip del visitante no puede ser repetida una cantidad excesiva de veces por que querría decir que el usuario esta apretando repetidamente el botón refresh con tal de subir rank</p> <p>-  Tampoco podemos  meter su IP a una black list permanente por que quizá este usuario gusta de visitar este blog mas de una vez al díá por que este se  actualiza en mas de una ocasión diariamente</p> <p></p> <p>Oks ahora describamos un poco de lo que vamos a escribir:</p> <p>Lo primero,  La ip del visitante no puede ser repetida una cantidad excesiva de veces aquí es donde  actualmente YA falla el script de Damog  (antes no hacían esta revisión) vamos a ver,  la forma mas viable de nunca ser la misma ip sería usando un proxy ¿no? oks, aquí hay un pequeño problema,  muchas paginas de proxies tiene pequeños “hacks” para que alguien no pueda usar curl  y parsear las ips, vi un caso donde  generaban el puerto con javascript y otro donde te exigian javascript “encendido” para poder acceder a la lista, y mejor aun uno hasta tenia un pequeño captcha.</p> <p>Oks lo mas sano  (para mi)  fue buscar unos minutos en google  y  cualquier cosa que tuviera forma de una lista de proxies pegarla en un archivo de texto (aunque esta lista se pegara con pedazos de html o de la pagina no importa realmente, solo importa tener los proxies juntos en un solo texto), rápidamente tenia en un archivo de texto mucha basura junto con  proxies revueltos así que parte del script iba a ser obtener esta lista de proxies.</p> <p>Una vez  teniendo mi lista de proxies escribí el siguiente script:</p> <p><span class="code"><div class="python"> <span style="color: #808080; font-style: italic;">#! /usr/bin/evn python</span><br /> <span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span><br /> <br /> <span style="color: #808080; font-style: italic;">#Caso de Estudio &nbsp;Galaxia Linux</span><br /> <span style="color: #808080; font-style: italic;">#Autor David Valdez </span><br /> <br /> <br /> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span><br /> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span><br /> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span><br /> <br /> <br /> <br /> <span style="color: #ff7700;font-weight:bold;">class</span> anti_rank:<br /> &nbsp; &nbsp; <span style="color: #483d8b;">&quot;&quot;</span><span style="color: #483d8b;">&quot;testing&quot;</span><span style="color: #483d8b;">&quot;&quot;</span><br /> &nbsp; &nbsp; <br /> &nbsp; &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>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">pass</span><br /> <br /> <br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#request (aquí podemos meter diferentes combinaciones de headers e irlas intercambiando)</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#además podemos poner la pagina que queremos que suba en el rank</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; headers = <span style="color: black;">&#123;</span><span style="color: #483d8b;">'User-Agent'</span>:<span style="color: #483d8b;">'Firefox'</span>,<span style="color: #483d8b;">'Referer'</span>:<span style="color: #483d8b;">'http://www.tecnologiaslibres.net/'</span><span style="color: black;">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#esta función devuelve una lista de proxies</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; ips = <span style="color: #008000;">self</span>.<span style="color: black;">get_ips</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> &nbsp; &nbsp; &nbsp; &nbsp;<br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#por cada proxy intentamos hacer una petición</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> ip <span style="color: #ff7700;font-weight:bold;">in</span> ips:<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">try</span>: <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">ProxyHandler</span><span style="color: black;">&#40;</span><span style="color: black;">&#123;</span><span style="color: #483d8b;">'http'</span>: ip<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; opener = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">build_opener</span><span style="color: black;">&#40;</span>proxy,<span style="color: #dc143c;">urllib2</span>.<span style="color: black;">HTTPHandler</span><span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">install_opener</span><span style="color: black;">&#40;</span>opener<span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">Request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;http://www.galaxialinux.com/rank/banners/banner.php&quot;</span>,<span style="color: #008000;">None</span>,headers<span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>response<span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#un poco de verbose</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Visitado con la siguiente ip: &quot;</span>+ ip + <span style="color: #483d8b;">&quot; al sitio:tecnologiaslibres.net&quot;</span> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">except</span>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error usando este proxy: &quot;</span>+ ip<br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;numero de visitas realizadas: %d&quot;</span> % visitas<br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#lista de proxies &nbsp; &nbsp;</span><br /> &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> get_ips<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#lo único que necesitamos esa esta expresión regular que extrae las puras ips </span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">#de toda la basura que tenemos de texto</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; get_ip &nbsp;= <span style="color: #dc143c;">re</span>.<span style="color: #008000;">compile</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\d</span>{1,3}<span style="color: #000099; font-weight: bold;">\.</span><span style="color: #000099; font-weight: bold;">\d</span>{1,3}<span style="color: #000099; font-weight: bold;">\.</span><span style="color: #000099; font-weight: bold;">\d</span>{1,3}<span style="color: #000099; font-weight: bold;">\.</span><span style="color: #000099; font-weight: bold;">\d</span>{1,3}<span style="color: #000099; font-weight: bold;">\:</span><span style="color: #000099; font-weight: bold;">\d</span>{0,4}&quot;</span><span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">file</span> = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;proxies.txt&quot;</span>,<span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; cadena = <span style="color: #483d8b;">&quot;&quot;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">file</span>.<span style="color: black;">readlines</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cadena = &nbsp;cadena + line<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; ips = get_ip.<span style="color: black;">findall</span><span style="color: black;">&#40;</span>cadena<span style="color: black;">&#41;</span> &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">file</span>.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> ips <span style="color: #808080; font-style: italic;">#regresamos una gran lista de &nbsp;direcciones de proxies</span><br /> <br /> <br /> <span style="color: #ff7700;font-weight:bold;">if</span> __name__ == &nbsp;<span style="color: #483d8b;">&quot;__main__&quot;</span>:<br /> &nbsp; &nbsp; text = &nbsp;anti_rank<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br /> &nbsp; &nbsp; text.<span style="color: black;">main</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></span></p> <p>EN base a esto, poniéndome en los zapatos de Eduardo, consideraría lo siguiente:</p> <p>- Siempre cada petición será  una ip diferente.</p> <p>- Suponiendo que los filtros revisen cualquier otra cosa en el header (como user Agent)  puede ser fácilmente fálsificable así que no es una solución validar por alguna otra cosa del header.</p> <p>- Además, banear impresiones por user Agent  aumentaría dramáticamente el caso de falsos positivos y muchas impresiones genuinas  serían tomados como negativos.</p> <p>- Quizá  banear si dos peticiones pasan muy juntas,  tampoco es viable, los primeros lugares en el rank tiene muchisimas impresiones,  limitar por tiempo las peticiones  afectaría directamente a estos primeros lugares (además que podríamos aleatoreamente “pausar” nuestro script para que tampoco tenga peticiones juntas.</p> <p>Concluyendo,  <b>NO</b> hay forma de saber si una impresión es real o es generada por un script como el arriba escrito entonces <b>TAMPOCO</b> hay forma de Programar un  filtro para evitar las impresiones falsas.  así que la única forma de tener un rank viable es <b>REPLANTEAR</b> la forma de generar el rank que este no se base en vistas. <img src="http://gnuget.underlife.org/media/emoticons/ichat/happy.png" width="18" height="18" /></p> <p>[UPDATE] SI no alcanzan a apreciar el código, <a href="http://gnuget.mechulk.com/devel/ejemplos/galaxialinux.html">aquí se ve mucho mas claro </a></p> david.valdez210@gmail.com (David Valdez) Sat, 04 Oct 2008 00:11:00 -0700 Paste.py subiendo tu código al paste desde la terminal http://gnuget.underlife.org/blog/view/187/paste-py-subiendo-tu-codigo-al-paste-desde-la-terminal http://gnuget.underlife.org/blog/view/187/paste-py-subiendo-tu-codigo-al-paste-desde-la-terminal <p>Hace tiempo  <a href="http://hunk.com.mx">hunk</a> se dio a la tarea de crear un pequeño  “paste” Este es un servicio que te permite  subir tu código  para mostrárselo al mundo.</p> <p>Cabe destacar que es una herramienta muchas veces imprescindible para los programadores que apenas están aprendiendo o aquellos que dan asesoría vía irc.</p> <p>La dirección de paste es  <a href="http://paste.ideaslabs.com"><a href="http://paste.ideaslabs.com">http://paste.ideaslabs.com</a></a>  algunos días después de que  fue terminado  <a href="http://xiam.menteslibres.org">xiam</a>  dio la idea de que sería útil  hacer un script para poder subír código directamente desde nuestra terminal, para así poder agilizar la subida del mismo, así que hunk y un servidor  nos pusimos manos a la obra.</p> <p>La forma de uso es sencillo, aquí unos ejemplos:</p> <p><span class="code"><div class="bash">gnuget@box~/$ ./paste.py &nbsp;-f mycode.ext &nbsp;</div></span></p> <p>Con esto el script subirá  nuestro  archivo  y  nos regresará una url donde ha sido publicado, el contenido del archivo va a ser mostrado en el navegador  como  texto plano pero si queremos que no sea así es decir, si queremos que  paste.ideaslabs.com nos muestre el código pintado podemos hacer:</p> <p><span class="code"><div class="bash">gnuget@box~/$ ./paste.py &nbsp;-f holamundo.php &nbsp; -l php</div></span></p> <p>(Por ahora el script solo permite los lenguajes: python,php,javascript y css  que son los que usamos nosotros cotidianamente)</p> <p>De esta forma el código estará pintado  al mirarlo en el navegador.</p> <p>otra forma útil de usar el script es usando el entubamiento de bash es decir:</p> <p><span class="code"><div class="bash">gnuget@box~/$ <span style="color: #c20cb9; font-weight: bold;">cat</span> miarchivo.ext | python paste.py</div></span></p> <p></p> <h3>Llevándolo al siguiente nivel:</h3> <p>Bueno, esta herramienta es algo que  podría ser útil de manera muy continua, por eso podemos crear una pequeña carpeta llamada  <i><b>~/.scripts  </b></i>donde meteremos todos nuestros programillas mas útiles como por ejemplo este script,    y para que bash nos lo reconozca como una aplicación mas  hay que  agregar la siguiente linea al bashrc</p> <p><span class="code">export PATH=$PATH:/home/gnuget/.scripts/</span></p> <p>Así  el uso  se simplifica a:</p> <p><span class="code"><div class="bash">gnuget@box~/$ <span style="color: #c20cb9; font-weight: bold;">cat</span> miarchivo.ext | paste.py</div></span></p> <p></p> <p><span class="code"><div class="bash">gnuget@box~/$ paste.py -f myfile</div></span></p> <p>Por último,  podemos pasarle un poco mas de información al script, podemos decirle cuanto tiempo nos gustaría que estuviera en el servidor nuestro archivo (por defecto es una hora)   podemos hacer que sea un día, una semana o un mes, de la siguiente forma</p> <p><span class="code"><div class="bash">gnuget@box~/$ paste.py -f myfile &nbsp;-t hour</div></span></p> <p><span class="code"><div class="bash">gnuget@box~/$ paste.py -f myfile &nbsp;-t week</div></span></p> <p><span class="code"><div class="bash">gnuget@box~/$ paste.py -f myfile &nbsp;-t day</div></span></p> <p><span class="code"><div class="bash">gnuget@box~/$ <span style="color: #c20cb9; font-weight: bold;">cat</span> &nbsp;/etc/<span style="color: #c20cb9; font-weight: bold;">passwd</span> &nbsp;| &nbsp;paste.py -t month</div></span></p> <p></p> <p></p> <p>El código esta bajo licencia MIT por si lo quieren tocar y hacer un poco de feedback esta aqui:</p> <p><a href="http://gnuget.mechulk.com/devel/paste/paste.html">http://gnuget.mechulk.com/devel/paste/paste.html</a></p> <p>Acá esta el tarball  para descargarse:</p> <p><a href="http://gnuget.mechulk.com/devel/paste/pasteil.tar.gz">http://gnuget.mechulk.com/devel/paste/pasteil.tar.gz</a></p> <p>Disfruten <img src="http://gnuget.underlife.org/media/emoticons/ichat/happy.png" width="18" height="18" /></p> <p>Por cierto,  gracias  a <a href="http://mechulk.com/">Mauro Parra</a> por darme un espacio para poner ahí mi repositorio de código <img src="http://gnuget.underlife.org/media/emoticons/ichat/happy.png" width="18" height="18" /></p> david.valdez210@gmail.com (David Valdez) Fri, 12 Sep 2008 00:34:00 -0700 He cumplido 22 años http://gnuget.underlife.org/blog/view/184/he-cumplido-22-anos http://gnuget.underlife.org/blog/view/184/he-cumplido-22-anos <p>Hoy cumplo 22 años, muchas gracias a todos los que me han felicitado.</p> <p><img src="http://gnuget.underlife.org/media/emoticons/ichat/laughing.png" width="18" height="18" /></p> david.valdez210@gmail.com (David Valdez) Tue, 02 Sep 2008 10:43:48 -0700 gnuget.org http://gnuget.underlife.org/blog/view/175/gnuget-org http://gnuget.underlife.org/blog/view/175/gnuget-org <p>Ando, estrenando dominio, si me tienes en tus boorkmarks sería bueno que  actualizaras la url a este blog <img src="http://gnuget.underlife.org/media/emoticons/ichat/happy.png" width="18" height="18" /> ahora es:</p> <p><p style="text-align: center"></p><h3><a href="http://gnuget.org"><span><a href="http://gnuget.org">http://gnuget.org</a></span></a></h3></p> <p><span></span></p> david.valdez210@gmail.com (David Valdez) Sun, 06 Jul 2008 22:42:00 -0700 Anuncio http://gnuget.underlife.org/blog/view/172/anuncio http://gnuget.underlife.org/blog/view/172/anuncio <h2><p style="text-align: center"><span style="font-weight: bold"> Hoy cumplo un año de casado <img src="http://gnuget.underlife.org/media/emoticons/ichat/happy.png" width="18" height="18" /> </span></p></h2> david.valdez210@gmail.com (David Valdez) Tue, 01 Jul 2008 10:32:13 -0700 David Segundo http://gnuget.underlife.org/blog/view/151/david-segundo http://gnuget.underlife.org/blog/view/151/david-segundo <p><center><a href="http://www.flickr.com/photos/david_valdez/2338646083/" title="David abrazando su mamila por David Valdez, en Flickr"><img src="http://farm3.static.flickr.com/2074/2338646083_199a6573dc.jpg" width="500" height="375" alt="David abrazando su mamila" /></a></p> <p><strong>Mi hijo</strong></center></p> david.valdez210@gmail.com (David Valdez) Wed, 19 Mar 2008 00:32:00 -0700 Gnuget jr ha nacido! http://gnuget.underlife.org/blog/view/148/gnuget-jr-ha-nacido http://gnuget.underlife.org/blog/view/148/gnuget-jr-ha-nacido <p>Hace aproximadamente 3hrs ha nacido mi  primogénito, un varón de 3.5 kilos, aun no hay fotos por que la visita es dentro de unas horas mas pero todo ha salido de Maravilla.</p> <p></p> <p>Necesito dar las gracias,  gracias a los que todos los días me preguntaban si tenia noticias del niño, los que hicieron mas llevadera la incertidumbre  que hubo en la parte final del embarazo de mi mujer, a  los que me estuvieron mandando mensajes a lo largo de la espera nocturna en el hospital y en particular a  <a href="http://monlieu.net/"> alguien </a>   que me marco  desde tierras lejanas  para darme ánimos.</p> <p></p> <p>En fin:</p> <p><h5></p> <p></h5> <h5> </h5> <span style="font-weight: bold"> Gracias a todos los que me ofrecieron su apoyo, muchas gracias!!!!! </span></p> david.valdez210@gmail.com (David Valdez) Thu, 31 Jan 2008 07:22:07 -0800 primer twitteo http://gnuget.underlife.org/blog/view/145/primer-twitteo http://gnuget.underlife.org/blog/view/145/primer-twitteo <p>Ya me pasaron este meme hace muuuuucho tiempo,  bueno acá esta:</p> <p></p> <p><div style="text-align: center" class="block-center"> <div class="photo"> <a href="http://gnuget.underlife.org/data/uploads/twitterazo.png"> <img style="width: 510px; height: 141px" src="http://gnuget.underlife.org/data/uploads/twitterazo.png" alt="twitterazo.png" height="159" width="575" /> <span class="photo-description"> primer twitterazo</p> <p></span> </a> </div> </div></p> david.valdez210@gmail.com (David Valdez) Tue, 15 Jan 2008 19:14:39 -0800 Y mi hijo va a ser varón http://gnuget.underlife.org/blog/view/130/y-mi-hijo-va-a-ser-varon http://gnuget.underlife.org/blog/view/130/y-mi-hijo-va-a-ser-varon <p>Después de 6 meses de espera  al fin salio  en el ultrasonido el  sexo de mi hijo.</p> <p>Va a ser hombre,  y ya estoy pensando en comprarle  esta playera (a sugerencia de <a href="http://www.maggit.com.mx/">maggit</a>)</p> <p><div style="text-align: center"><a href="http://gnuget.underlife.org/data/files/uploads/newbie.jpg"><img class="photo" src="http://gnuget.underlife.org/data/thumbs/_newbie.jpg" style="margin: 3px; width: 384px; height: 368px" alt="_newbie.jpg" height="575" width="600" /></a></p> <p>Se aceptan sugerencias de nombres para el retoño <img src="http://gnuget.underlife.org/media/emoticons/ichat/laughing.png" width="18" height="18" /> </div></p> david.valdez210@gmail.com (David Valdez) Wed, 10 Oct 2007 13:02:47 -0700 He cumplido 21 años http://gnuget.underlife.org/blog/view/126/he-cumplido-21-anos http://gnuget.underlife.org/blog/view/126/he-cumplido-21-anos <p>Hoy es mi cumpleaños, gracias a todos los que me felicitaron.</p> <p><img src="http://gnuget.underlife.org/media/emoticons/ichat/laughing.png" width="18" height="18" /></p> david.valdez210@gmail.com (David Valdez) Sun, 02 Sep 2007 20:59:11 -0700 Breves personales http://gnuget.underlife.org/blog/view/119/breves-personales http://gnuget.underlife.org/blog/view/119/breves-personales <p>Bueno, he dejado un poco abandonado el blog pero ya espero irme recuperando,  y como la idea de este blog es que no sea personal este sera un post breve.</p> <p>Que ha pasado conmigo:</p> <p>1. Abandone la vida de soltero</p> <p>2. Me mude de cuidad ahora vivo en Gdl.</p> <p>3. Se tardaron dos semanas en ponerme el internet.</p> <p>Y ya <img src="http://gnuget.underlife.org/media/emoticons/ichat/laughing.png" width="18" height="18" /></p> <p>Un saludo</p> david.valdez210@gmail.com (David Valdez) Wed, 18 Jul 2007 16:08:49 -0700 Ultimas notas http://gnuget.underlife.org/blog/view/118/ultimas-notas http://gnuget.underlife.org/blog/view/118/ultimas-notas <p>Bueno, bueno he descuidado mi blog últimamente,  pero pues he tenido grandes experiencias en los  últimos días/semanas, espero ir agarrando ritmo de nuevo.</p> <p>En detalles: <a href="http://xiam.be/">Xiam</a> nos explica como hizo el reto de mononeurona (este post no tiene pierde, hasta  alguno de los comentarios son graciosos)</p> <p>Nace <a href="http://gears.google.com/">Google Gears</a> y <a href="http://www.rememberthemilk.com/">rememberthemilk</a> ya lo esta implementando (al igual que google reader)</p> <p><a href="http://flickr.com/">Flickr</a> ahora ya tiene disponible en  otros 7 idiomas entre ellos el español.</p> <p>Hace 15 días  hicimos una visita fugaz xiam,blacknash y yo a Guadalajara para conocer a <a href="http://h1pp1e.net/">h1pp1e</a>  y a <a href="http://log.cagadaga.com/">xanatos</a> la visita fue genial, mas detalles en <a href="http://blacknash.com.mx/blog/view/Semana?id=248">esta entrada en el blog de blacknash</a></p> <p>Guadalajara me gusto tanto que pues pienso volver.</p> <p>Mi vida esta apunto de comenzar una nueva etapa, gracias a todos los que me hay apoyado <img src="http://gnuget.underlife.org/media/emoticons/ichat/happy.png" width="18" height="18" /> significa mucho para mi.</p> david.valdez210@gmail.com (David Valdez) Sat, 16 Jun 2007 10:47:18 -0700