<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6984762971826912125</id><updated>2011-12-23T16:57:57.322-08:00</updated><category term='programación'/><category term='Pensamientos'/><category term='Linux'/><title type='text'>Juan Reyes Blog</title><subtitle type='html'>Blog de programación</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-3395658075737141326</id><published>2011-12-09T16:50:00.000-08:00</published><updated>2011-12-09T16:50:44.143-08:00</updated><title type='text'>Tracking usando filtro de partículas en OpenCV</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/mSE4QaqAOx0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mSE4QaqAOx0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/mSE4QaqAOx0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Una implementación muy simple de un tracker que usa filtro de partículas en OpenCV. Las partículas se generan mediante números aleatorios que siguen una distribución Gaussiana, se les asigna peso según distancia de histogramas HSV y frame a frame se van actualizando, conservando sólo las mejores partículas.&lt;br /&gt;&lt;br /&gt;Puedes bajar el programa &lt;a href="http://code.google.com/p/smallprograms/downloads/detail?name=pftracker.tar.gz&amp;amp;can=2&amp;amp;q="&gt;aca&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-3395658075737141326?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/3395658075737141326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2011/12/tracking-usando-filtro-de-particulas-en.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3395658075737141326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3395658075737141326'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2011/12/tracking-usando-filtro-de-particulas-en.html' title='Tracking usando filtro de partículas en OpenCV'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-7649551624167518271</id><published>2011-04-29T05:17:00.000-07:00</published><updated>2011-04-29T05:23:10.678-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Octave plot custom grid</title><content type='html'>Necesitaba graficar algo, pero quería cambiar el &lt;b&gt;espaciado de la rejilla&lt;/b&gt; a 0.25&lt;br /&gt;&lt;br /&gt;&lt;pre class="py" name="code"&gt;P = dlmread("serial500.txt"," ");&lt;br /&gt;plot(P(:,1),P(:,2),"*")&lt;br /&gt;set(gca(),"xtick",[0:0.25:1])&lt;br /&gt;set(gca(),"ytick",[0:0.25:1])&lt;br /&gt;grid&lt;br /&gt;xlabel("x")&lt;br /&gt;ylabel("y")&lt;br /&gt;title("500 pares de nums")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-__D3kb7pmzY/TbqsRW8xlYI/AAAAAAAAADs/lv8YvQOQ6Hs/s1600/serial-500.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="259" src="http://4.bp.blogspot.com/-__D3kb7pmzY/TbqsRW8xlYI/AAAAAAAAADs/lv8YvQOQ6Hs/s320/serial-500.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-7649551624167518271?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/7649551624167518271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2011/04/octave-plot-grid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/7649551624167518271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/7649551624167518271'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2011/04/octave-plot-grid.html' title='Octave plot custom grid'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-__D3kb7pmzY/TbqsRW8xlYI/AAAAAAAAADs/lv8YvQOQ6Hs/s72-c/serial-500.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-1998354709254513406</id><published>2011-03-12T17:48:00.000-08:00</published><updated>2011-03-12T17:49:13.977-08:00</updated><title type='text'>Un problema interesante</title><content type='html'>El otro día me comentaron acerca de un problema muy interesante y quiero compartirlo con ustedes, por supuesto que no les daré el nombre del problema para que no lo busquen...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;  Hay &lt;span style="color: blue;"&gt;tres &lt;/span&gt;cajas, de las cuales sólo &lt;span style="color: blue;"&gt;una&lt;/span&gt; contiene un premio. Tú escoges una de estas cajas y luego se te muestra una de las cajas que no escogiste y no contiene premio. Se te da la posibilidad de cambiar la caja que escogiste por la que queda&lt;span style="color: blue;"&gt; ¿Qué te conviene hacer?&lt;/span&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-1998354709254513406?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/1998354709254513406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2011/03/un-problema-interesante.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/1998354709254513406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/1998354709254513406'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2011/03/un-problema-interesante.html' title='Un problema interesante'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-6224652409176074268</id><published>2011-02-22T18:39:00.000-08:00</published><updated>2011-02-26T07:33:21.878-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pensamientos'/><title type='text'>Reflexiones acerca de nuestra grandeza</title><content type='html'>La vida se agota, nada se puede hacer para evitarlo, nos parecen tan importantes y eternas ciertas cosas, como si nunca dejaremos de ver el sol llegar cada día, como si existiese alguna urgencia en este mundo. Cuando en realidad cada una de nuestras creaciones tiene como destino la destrucción, pero que más da, es preferible soñar con que tenemos asuntos muy importantes que atender, con que somos grandes y elocuentes, mucho mejores que aquellas rocas que agonizan en el espacio. Es preferible emitir un destello de luz antes de desaparecer, como intenando superar la inercia de lo interte, que no ha conseguido aún tener la más mínima inferencia en lo que le depara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-6224652409176074268?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/6224652409176074268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2011/02/reflexiones-acerca-de-nuestra-grandeza.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/6224652409176074268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/6224652409176074268'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2011/02/reflexiones-acerca-de-nuestra-grandeza.html' title='Reflexiones acerca de nuestra grandeza'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-2973627341962422924</id><published>2010-11-15T18:16:00.000-08:00</published><updated>2010-11-15T18:38:45.339-08:00</updated><title type='text'>La Identidad de Euler</title><content type='html'>Se dice que si se tuvieran que escoger los números más populares, sin duda alguna entre los primeros escogidos estarían&lt;span style="color: rgb(0, 0, 102);"&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;π&lt;/span&gt;, &lt;span style="color: rgb(0, 153, 0);"&gt;e&lt;/span&gt;, i, &lt;span style="color: rgb(0, 0, 153);"&gt;1&lt;/span&gt; y &lt;span style="color: rgb(102, 102, 204);"&gt;0&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;  Hay una bella identidad que los relaciona, seguramente conocida por más de alguno de ustedes, yo la ví en el documental universo matemático:&lt;br /&gt;   &lt;p style="font-weight: bold;" align="center"&gt;e&lt;sup&gt;&lt;i&gt;i&lt;/i&gt; π&lt;/sup&gt; + 1 = 0&lt;/p&gt;La identidad anterior es conocida como la Identidad de Euler.&lt;br /&gt;&lt;br /&gt;  Para corroborar su autenticidad sólo debemos recurrir a la famosa Fórmula de Euler:&lt;br /&gt;&lt;br /&gt;   &lt;p align="center"&gt; &lt;span style="font-weight: bold;"&gt;e&lt;/span&gt;&lt;sup style="font-weight: bold;"&gt;i θ &lt;/sup&gt;&lt;span style="font-weight: bold;"&gt; = cos (θ) + i sen(θ) &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;   Donde se verifica fácilmente que si&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;θ&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;π&lt;/span&gt;&lt;/span&gt; se obtiene:&lt;br /&gt;&lt;br /&gt;   &lt;p align="center"&gt;  &lt;span style="font-weight: bold;"&gt;e&lt;/span&gt;&lt;sup style="font-weight: bold;"&gt;i π &lt;/sup&gt;&lt;span style="font-weight: bold;"&gt; = cos (π) + i sen(π)  = -1 &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;    Pues&lt;span style="font-weight: bold;"&gt; cos(π) = -1&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;sin(π) = 0&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-2973627341962422924?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/2973627341962422924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/11/la-identidad-de-euler.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2973627341962422924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2973627341962422924'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/11/la-identidad-de-euler.html' title='La Identidad de Euler'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-3393748447360619657</id><published>2010-09-26T16:56:00.000-07:00</published><updated>2010-12-07T14:03:20.110-08:00</updated><title type='text'>Tip Octave</title><content type='html'>Cuando se carga una imagen en memoria usando imread se almacena como una matriz uint8, lo que significa que cada valor de la matriz es un número positivo de 1 byte, si se quiere trabajar con esos números hay que tener cuidado pues tomarán un valor máximo de 255.&lt;br /&gt;&lt;br /&gt;    &lt;pre name="code" class="py"&gt;&lt;br /&gt;     octave:&gt;  img = imread("imagen.jpg");&lt;br /&gt;     octave:&gt;  img(1,1)      &lt;br /&gt;     octave:&gt;  ans = 44&lt;br /&gt;     octave:&gt;  img(1,1)*1000&lt;br /&gt;     octave:&gt;  ans=255&lt;br /&gt;     octave:&gt;  %para evitar esto hay que hacer un casting&lt;br /&gt;     octave:&gt;  double(img(1,1))*1000&lt;br /&gt;     octave:&gt;  ans=44000&lt;br /&gt;     octave:&gt;   &lt;br /&gt;   &lt;/pre&gt;&lt;br /&gt;  &lt;br /&gt;  Escribí esto aquí para que no se me olvide, pues me causó un gran dolor de cabeza mientras estaba probando un algoritmo de interpolación para un trabajo de la universidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-3393748447360619657?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/3393748447360619657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/09/tip-octave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3393748447360619657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3393748447360619657'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/09/tip-octave.html' title='Tip Octave'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-8623680971799198247</id><published>2010-09-20T16:37:00.000-07:00</published><updated>2011-08-11T12:00:40.381-07:00</updated><title type='text'>Efecto para ser invisible, para variar en OpenCV</title><content type='html'>El efecto mostrado en el post anterior es muy fácil de programar:&lt;br /&gt;1.- Sacar una foto al fondo&lt;br /&gt;2.- Reemplazar todos los pixeles color piel por su pixel correspondiente en la imagen tomada en 1.&lt;br /&gt;Para detectar la piel humana en el espacio de colores RGB:&lt;br /&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;char isSkinPixel(IplImage *img, int x, int y) {&lt;br /&gt;unsigned char R,G,B;&lt;br /&gt;B = img-&amp;gt;imageData[y*img-&amp;gt;widthStep+x*img-&amp;gt;nChannels];&lt;br /&gt;G = img-&amp;gt;imageData[y*img-&amp;gt;widthStep+x*img-&amp;gt;nChannels+1];&lt;br /&gt;R = img-&amp;gt;imageData[y*img-&amp;gt;widthStep+x*img-&amp;gt;nChannels+2];&lt;br /&gt;if( R &amp;gt; 95 &amp;amp;&amp;amp; G &amp;gt; 40 &amp;amp;&amp;amp; B &amp;gt; 20 &amp;amp;&amp;amp; ( max(R,G,B) - min(R,G,B) ) &amp;gt; 15 &amp;amp;&amp;amp; abs( (int)(R-G) ) &amp;gt; 15 &amp;amp;&amp;amp; R&amp;gt;G &amp;amp;&amp;amp; R&amp;gt;B ) {&lt;br /&gt;return 1;&lt;br /&gt;}&lt;br /&gt;return 0; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;La condición que se usa para detectar el color piel la ví en un paper, pero no lo pude encontrar para dejarlo aquí.&lt;br /&gt;&lt;br /&gt;La detección de piel humana funciona bien sólo si estamos capturando imágenes en un lugar con la luminosidad adecuada, pues si esta muy oscuro o muy iluminado el color de la piel se pierde. Además hay falsos positivos si el fondo no es el adecuado.&lt;br /&gt;&lt;br /&gt;Código fuente del programa :&lt;a href="http://smallprograms.googlecode.com/files/invisible-2010.tar.gz"&gt; invisible&lt;/a&gt; (necesita la biblioteca OpenCV)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-8623680971799198247?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/8623680971799198247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/09/efecto-para-ser-invisible-para-variar.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/8623680971799198247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/8623680971799198247'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/09/efecto-para-ser-invisible-para-variar.html' title='Efecto para ser invisible, para variar en OpenCV'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-7042664577977703807</id><published>2010-08-24T14:28:00.000-07:00</published><updated>2010-08-24T14:57:47.940-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Pastilla para hacerse invisible</title><content type='html'>Hoy al fin probé la famosa pastilla para hacerse invisible, es impresionante la rapidez con que hace efecto. Os dejo un video, haber si alguien puede explicarme cómo es que funciona esta revolucionaria mezcla de ingredientes exóticos.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EO7i9Koet8k?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/EO7i9Koet8k?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-7042664577977703807?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/7042664577977703807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/08/pastilla-para-hacerse-invisible.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/7042664577977703807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/7042664577977703807'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/08/pastilla-para-hacerse-invisible.html' title='Pastilla para hacerse invisible'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-2464140173559037724</id><published>2010-08-02T11:17:00.000-07:00</published><updated>2010-12-07T14:20:07.782-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Implementación de k-means en OpenCV</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HYYNgjvfago/TFdH1wIZGhI/AAAAAAAAACk/RSbDTHI8FEA/s1600/kmeans.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;k-means&lt;/span&gt; o &lt;span style="font-weight: bold;"&gt;k-medias&lt;/span&gt; es un algoritmo de agrupamiento (clustering), lo que significa que es usado para &lt;span style="font-weight: bold;"&gt;dividir &lt;/span&gt;un conjunto de datos en grupos de tal forma que los datos pertenecientes a un grupo tengan &lt;span style="font-style: italic;"&gt;propiedades en común&lt;/span&gt;. También se dice que este algoritmo es de aprendizaje no supervisado, pues es capaz de clasificar datos sin tener un supervisor que durante la etapa de entrenamiento le indique la clase a la que pertenece cada dato.&lt;br /&gt;Se puede usar este algoritmo para segmentar una imagen por color, clasificando los pixeles que tienen colores parecidos en un mismo grupo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;k-means&lt;/span&gt; funciona de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Elige aleatoriamente k centros (uno por cada grupo)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Se etiqueta cada dato como perteneciente al grupo cuyo centro es más cercano&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Se calcula el centro promedio de cada grupo y se repite el paso anterior.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;El algoritmo se detiene cuando el promedio de cada centro de grupo no cambia o se alcanza el número máximo de iteraciones.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;El centro de cada grupo y las distancias quedan definidos por el problema.&lt;br /&gt;En el caso de las imagenes&lt;span style="color: rgb(255, 0, 0);"&gt; R&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;G&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;B&lt;/span&gt; se define el centro como una tripleta que contiene un valor para cada color:&lt;span style="color: rgb(255, 0, 0);"&gt;rojo&lt;/span&gt;, &lt;span style="color: rgb(51, 204, 0);"&gt;verde&lt;/span&gt; y &lt;span style="color: rgb(0, 0, 153);"&gt;azul&lt;/span&gt;. La distancia que se usará en este caso es la euclídea.&lt;br /&gt;Sólo hay que imaginar los colores como una &lt;span style="font-weight: bold;"&gt;coordenada&lt;/span&gt; en el espacio&lt;span style="font-weight: bold;"&gt; 3D&lt;/span&gt; y la distancia entre dos puntos como el &lt;span style="font-weight: bold;"&gt;largo&lt;/span&gt; de la &lt;span style="font-weight: bold;"&gt;recta&lt;/span&gt; que los une.&lt;br /&gt;&lt;br /&gt;El resultado del algoritmo dependerá de los centros iniciales, si estos son escogidos aleatoriamente probablemente se obtendrán resultados diferentes en cada ejecución.&lt;br /&gt;&lt;br /&gt;OpenCV trae implementado este algoritmo, sin embargo yo programé mi propia implementación porque el algoritmo es sencillo y me pareció interesante hacerlo.&lt;br /&gt;Un poco de código:&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;  //calculo de centroides y matriz de clasificacion&lt;br /&gt;for(it=0; it &amp;lt; iterations;it++) {&lt;br /&gt;    for(i=0;i&amp;lt;size;i++) {&lt;br /&gt;        red[i] = 0;&lt;br /&gt;        green[i] = 0;&lt;br /&gt;        blue[i] = 0;&lt;br /&gt;        count[i] = 0;&lt;br /&gt;    }&lt;br /&gt;    for(j=0; j &amp;lt; image-&gt;height; j++) {&lt;br /&gt;        for(i=0; i &amp;lt; image-&gt;width; i++) {&lt;br /&gt;            tcolor = getColor(image,i,j);            &lt;br /&gt;            dist = distance(centroid[0], tcolor );&lt;br /&gt;            label = 0;&lt;br /&gt;            for(k=1; k&amp;lt;size; k++) {&lt;br /&gt;                temp = distance(centroid[k], tcolor );&lt;br /&gt;                if( temp &amp;lt; dist) {&lt;br /&gt;                    dist = temp;&lt;br /&gt;                    label = k;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            ++count[label];&lt;br /&gt;            red[label]   += tcolor.r;&lt;br /&gt;            green[label] += tcolor.g;&lt;br /&gt;            blue[label]  += tcolor.b;&lt;br /&gt;            if(it == (iterations-1)) {&lt;br /&gt;                labeled[i][j] = (uchar)label;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    //actualizar centroides&lt;br /&gt;    for(i=0;i&amp;lt;size;i++) {&lt;br /&gt;        if(count[i]==0) continue; //no actualizar centroide si no se hay colores que promediar&lt;br /&gt;        centroid[i].r = (uchar)(red[i]/count[i]);&lt;br /&gt;        centroid[i].g = (uchar)(green[i]/count[i]);&lt;br /&gt;        centroid[i].b = (uchar)(blue[i]/count[i]);    &lt;br /&gt;    }&lt;br /&gt;                    &lt;br /&gt;}&lt;br /&gt;//dejar con color de centroide mas cercano a cada pixel de la imagen a mostrar&lt;br /&gt;for(i=0; i &amp;lt; image-&gt;width; i++) {&lt;br /&gt;    for(j=0; j &amp;lt; image-&gt;height; j++) {&lt;br /&gt;        image2-&gt;imageData[j*image-&gt;widthStep + i*image-&gt;nChannels + 2] = centroid[labeled[i][j]].r;&lt;br /&gt;        image2-&gt;imageData[j*image-&gt;widthStep + i*image-&gt;nChannels + 1] = centroid[labeled[i][j]].g;&lt;br /&gt;        image2-&gt;imageData[j*image-&gt;widthStep + i*image-&gt;nChannels ] = centroid[labeled[i][j]].b;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;centroid[] :&lt;/span&gt; contiene un color por cada clase&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;size:&lt;/span&gt; cantidad de clases&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;labeled[][]:&lt;/span&gt; almacena los resultados de la clasificación, un número de 0 a (size-1) que relaciona cada pixel con su clase.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;red[],green[],blue[],cout[]:&lt;/span&gt; variables usadas para calcular el color promedio&lt;br /&gt;&lt;br /&gt;En el código anterior, dados los centroides de cada clase se procede a identificar cada pixel con la clase cuyo color se encuentre más cercano a su color.&lt;br /&gt;Posteriormente se actualizan los centroides de cada clase, para ello se promedian los colores de los pixeles que fueron etiquetados como pertenecientes a la clase.&lt;br /&gt;El proceso se repite hasta completar la cantidad de iteraciones especificada en la variable iterations.&lt;br /&gt;Código fuente completo: &lt;a href="http://smallprograms.googlecode.com/files/kmeans-2010.tar.gz"&gt;kmeans-2010.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Resultados al aplicar a la imagen superior izquierda el algoritmo con 5 clases y 90 iteraciones:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HYYNgjvfago/TFdH1wIZGhI/AAAAAAAAACk/RSbDTHI8FEA/s1600/kmeans.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 290px; height: 320px;" src="http://2.bp.blogspot.com/_HYYNgjvfago/TFdH1wIZGhI/AAAAAAAAACk/RSbDTHI8FEA/s320/kmeans.jpg" alt="" id="BLOGGER_PHOTO_ID_5500944458635090450" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-2464140173559037724?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/2464140173559037724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/08/implementacion-de-k-means-en-opencv.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2464140173559037724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2464140173559037724'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/08/implementacion-de-k-means-en-opencv.html' title='Implementación de k-means en OpenCV'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HYYNgjvfago/TFdH1wIZGhI/AAAAAAAAACk/RSbDTHI8FEA/s72-c/kmeans.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-5862658344998651468</id><published>2010-05-18T09:20:00.000-07:00</published><updated>2010-12-07T14:27:31.149-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Filtro de Sobel en OpenCV</title><content type='html'>Una forma más elaborada de detectar bordes es el filtro de Sobel, dado que usa una mayor cantidad de píxeles de la vecindad para calcular el borde. &lt;br /&gt;  &lt;pre name="code" class="cpp"&gt;&lt;br /&gt;#include &amp;lt;opencv/highgui.h&gt;&lt;br /&gt;#include &amp;lt;opencv/cv.h&gt;&lt;br /&gt;&lt;br /&gt;void sobel(IplImage *img) {&lt;br /&gt;  int i,j,indice;&lt;br /&gt;  uchar *pixels = (uchar*)(img-&gt;imageData);&lt;br /&gt;  uchar *new_pixels = (uchar*)malloc(img-&gt;widthStep*img-&gt;height*img-&gt;nChannels*sizeof(uchar));&lt;br /&gt;&lt;br /&gt;    uchar sup;&lt;br /&gt;    uchar sup_izq;&lt;br /&gt;    uchar sup_der;&lt;br /&gt;    uchar inf;&lt;br /&gt;    uchar inf_izq;&lt;br /&gt;    uchar inf_der;&lt;br /&gt;    uchar izq;&lt;br /&gt;    uchar der;&lt;br /&gt;    int A;&lt;br /&gt;    int B;&lt;br /&gt;    double SUM;&lt;br /&gt;  //el origen esta en esquina superior izquierda del pantalla&lt;br /&gt; for( i=1 ; i &amp;lt; (img-&gt;width-1) ; i++) {&lt;br /&gt;   for( j=1 ; j &amp;lt; (img-&gt;height-1) ; j++) {&lt;br /&gt;         indice = j*img-&gt;widthStep + i*img-&gt;nChannels;&lt;br /&gt;         sup = pixels[indice - img-&gt;widthStep]; //pixel superior al actual&lt;br /&gt;            inf = pixels[indice + img-&gt;widthStep]; //pixel inferior al actual&lt;br /&gt;            izq = pixels[indice - img-&gt;nChannels]; //pixel izq al actual&lt;br /&gt;            der = pixels[indice + img-&gt;nChannels]; //pixel der al actual&lt;br /&gt;            sup_izq = pixels[indice -  img-&gt;nChannels - img-&gt;widthStep]; &lt;br /&gt;            sup_der = pixels[indice +  img-&gt;nChannels - img-&gt;widthStep];&lt;br /&gt;            inf_izq = pixels[indice -  img-&gt;nChannels + img-&gt;widthStep]; &lt;br /&gt;            inf_der = pixels[indice +  img-&gt;nChannels + img-&gt;widthStep];&lt;br /&gt;            A = sup_izq + 2*sup + sup_der - inf_izq - 2*inf - inf_der;&lt;br /&gt;            B = sup_izq + 2*izq + inf_izq - sup_der - 2*der - inf_der;&lt;br /&gt;            SUM = A*A + B*B;            &lt;br /&gt;            new_pixels[indice] = 255-(uchar)sqrt(SUM);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt; memcpy(pixels, new_pixels, img-&gt;widthStep*img-&gt;height*img-&gt;nChannels*sizeof(uchar));&lt;br /&gt; free(new_pixels);&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt; CvCapture *cap = cvCreateCameraCapture(0);&lt;br /&gt; IplImage  *img;&lt;br /&gt; IplImage  *imgGray;&lt;br /&gt; int notCreated=1;&lt;br /&gt; while(1) {&lt;br /&gt;  img = cvQueryFrame(cap);&lt;br /&gt;  cvNamedWindow("hahaha",CV_WINDOW_AUTOSIZE);&lt;br /&gt;  if(notCreated) {&lt;br /&gt;   imgGray    = cvCreateImage( cvSize(img-&gt;width,img-&gt;height), IPL_DEPTH_8U, 1 );&lt;br /&gt;   notCreated = 0;&lt;br /&gt;  }&lt;br /&gt;  cvCvtColor(img, imgGray, CV_RGB2GRAY);&lt;br /&gt;  sobel(imgGray);  &lt;br /&gt;  cvShowImage("hahaha",imgGray);&lt;br /&gt;  char key = cvWaitKey(40);&lt;br /&gt;  if(key == 27)&lt;br /&gt;   break;&lt;br /&gt; }&lt;br /&gt;    cvReleaseImage(&amp;img);&lt;br /&gt;    cvReleaseImage(&amp;imgGray);&lt;br /&gt; cvReleaseCapture(&amp;cap);&lt;br /&gt; cvDestroyWindow("hahaha");&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-5862658344998651468?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/5862658344998651468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/05/filtro-de-sobel-en-opencv.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5862658344998651468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5862658344998651468'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/05/filtro-de-sobel-en-opencv.html' title='Filtro de Sobel en OpenCV'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-849555147453669158</id><published>2010-04-18T19:03:00.000-07:00</published><updated>2010-12-07T14:52:29.971-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Efecto fotocopia en tiempo real</title><content type='html'>He estado jugando un poco con la librería de visión artificial de Intel, OpenCV. Programé el mismo efecto fotocopia que postie tiempo atrás, pero esta vez aplicandolo al video capturado por la webcam en tiempo real. &lt;br /&gt; Esto no es difícil de lograr, sin embargo es interesante ver los resultados.&lt;br /&gt;&lt;br /&gt;Aca el código:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;#include  &amp;lt;opencv/highgui.h&gt;&lt;br /&gt;#include  &amp;lt;opencv/cv.h&gt;&lt;br /&gt;&lt;br /&gt;void fotocopia(IplImage *img, int difMax) {&lt;br /&gt;    int i,j,difh,difw,indice;&lt;br /&gt;    for( i=0 ; i &amp;lt; (img-&gt;width-1) ; i++) {&lt;br /&gt;        for( j=0 ; j &amp;lt; (img-&gt;height-1) ; j++) {&lt;br /&gt;            indice = j*img-&gt;widthStep + i*img-&gt;nChannels;&lt;br /&gt;           /*diferencia brillo en pixeles de una misma columna&lt;br /&gt;            widthStep es el tamaño de una fila en bytes, &lt;br /&gt;             ya que la imagen esta en un arreglo unidimensional.&lt;br /&gt;              Al sumar widthStep estamos pasando a la siguiente fila&lt;br /&gt;            */&lt;br /&gt;            difh = ( (uchar*)(img-&gt;imageData) )[indice] - ( (uchar*)(img-&gt;imageData) )[indice+img-&gt;widthStep];&lt;br /&gt;            if( difh &amp;lt; 0) {&lt;br /&gt;                difh = difh * -1; &lt;br /&gt;            } &lt;br /&gt;        &lt;br /&gt;            //diferencia brillo en pixeles de una misma fila&lt;br /&gt;            &lt;br /&gt;            difw = ( (uchar*)(img-&gt;imageData) )[indice] - ( (uchar*)(img-&gt;imageData) )[indice+1];&lt;br /&gt;            if( difw &amp;lt; 0) {&lt;br /&gt;                difw = difw * -1;&lt;br /&gt;            }            &lt;br /&gt;     &lt;br /&gt;            //si hay mucha diferencia, es un contorno, hay que pintar el pixel negro&lt;br /&gt;            if ( (difh + difw) &gt; difMax) {        &lt;br /&gt;                ( (uchar*)(img-&gt;imageData) )[indice] = 0 ;&lt;br /&gt;            } else {&lt;br /&gt;                ( (uchar*)(img-&gt;imageData) )[indice] = 255 ;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }        &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;    CvCapture *cap = cvCreateCameraCapture(0);&lt;br /&gt;    IplImage  *img;&lt;br /&gt;    IplImage  *imgGray;&lt;br /&gt;    cvNamedWindow("hahaha",CV_WINDOW_AUTOSIZE);&lt;br /&gt;    img = cvQueryFrame(cap);&lt;br /&gt;    imgGray    = cvCreateImage( cvSize(img-&gt;width,img-&gt;height), IPL_DEPTH_8U, 1 );&lt;br /&gt;    while(1) {&lt;br /&gt;        img = cvQueryFrame(cap);&lt;br /&gt;        cvCvtColor(img, imgGray, CV_RGB2GRAY);&lt;br /&gt;        fotocopia(imgGray,5);        &lt;br /&gt;        cvShowImage("hahaha",imgGray);&lt;br /&gt;        char key = cvWaitKey(40);&lt;br /&gt;        if(key == 27)&lt;br /&gt;            break;&lt;br /&gt;    }&lt;br /&gt;    cvReleaseCapture(&amp;cap);&lt;br /&gt;    cvReleaseImage(&amp;img);&lt;br /&gt;    cvReleaseImage(&amp;imgGray);&lt;br /&gt;    cvDestroyWindow("hahaha");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;  Para compilar:&lt;br /&gt;&lt;br /&gt;  gcc `pkg-config --cflags opencv --libs opencv`  fotocopia.c -o fotocopia&lt;br /&gt;&lt;br /&gt;  Aca un video de cómo se queda el efecto:&lt;br /&gt;  &lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/s5GttZdaoMw&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/s5GttZdaoMw&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-849555147453669158?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/849555147453669158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/04/efecto-fotocopia-en-tiempo-real.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/849555147453669158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/849555147453669158'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/04/efecto-fotocopia-en-tiempo-real.html' title='Efecto fotocopia en tiempo real'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-8491999605551574585</id><published>2010-04-01T17:00:00.000-07:00</published><updated>2010-05-23T11:46:42.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>tarjeta de video Intel GMA X4500HD Ubuntu</title><content type='html'>&lt;span style="color: rgb(255, 0, 0);"&gt;Problema:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando abría alguna aplicación que hiciera uso de OpenGL esta veía con manchas negras o se pegaba y al ejecutar dmesg me aparecía lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);font-size:85%;" &gt;[  210.430986] [drm:i915_gem_object_pin_and_relocate] *ERROR* Relocation beyond target object bounds: obj f08cb9c0 target 23 delta 4096 size 4096.&lt;br /&gt;[  210.430992] [drm:i915_gem_execbuffer] *ERROR* Failed to pin buffers -22&lt;br /&gt;[  210.445817] [drm:i915_gem_object_pin_and_relocate] *ERROR* Relocation beyond target object bounds: obj f0a39180 target 23 delta 4096 size 4096.&lt;br /&gt;[  210.445827] [drm:i915_gem_execbuffer] *ERROR* Failed to pin buffers -22&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; ....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Usando Ubuntu 9.10 the Karmic Koala con el paquete xserver-xorg-video-intel versión:&lt;br /&gt;2:2.9.1~git-0ubuntu0tormod&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Solución :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;apt-get install libgl1-mesa-dri&lt;br /&gt;Con lo cual se actualizaron los siguientes paquetes:&lt;br /&gt;libdrm-intel1 a la versión 2.4.15~git-0ubuntu0tormod~jaunty&lt;br /&gt;libgl1-mesa-dri a la versión   7.7.0~git20091114.57f40b18-0ubuntu0sarvatt~jaunty&lt;br /&gt;&lt;br /&gt;La solución la encontré &lt;a href="https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/450901"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-8491999605551574585?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/8491999605551574585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/04/tarjeta-de-video-intel-gma-x4500hd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/8491999605551574585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/8491999605551574585'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/04/tarjeta-de-video-intel-gma-x4500hd.html' title='tarjeta de video Intel GMA X4500HD Ubuntu'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-1315325438489852738</id><published>2010-02-18T12:38:00.000-08:00</published><updated>2010-12-07T15:34:42.627-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Editando imagenes con Octave</title><content type='html'>Me encanta el filtro fotocopia que trae el Gimp para dejar una foto como un dibujo, me dí cuenta de que es muy intuitivo hacer este efecto en Octave. Para ello sólo hace falta usar la función gradiente que toma una matriz y calcula la diferencia que hay entre dos elementos contiguos en cada fila y en cada columna.&lt;br /&gt;Por ejemplo:&lt;br /&gt;&lt;br /&gt;M =&lt;br /&gt;1   2&lt;br /&gt;3   4&lt;br /&gt;&lt;br /&gt;[diffX, diffY] = gradient(M)&lt;br /&gt;&lt;br /&gt;diffX =&lt;br /&gt;1   1&lt;br /&gt;1   1&lt;br /&gt;&lt;br /&gt;diffY =&lt;br /&gt;2   2&lt;br /&gt;2   2&lt;br /&gt;&lt;br /&gt;Se aprecia que diffX es la diferencia entre los elementos de las filas y diffY es la diferencia entre los elementos de las columnas.&lt;br /&gt;&lt;br /&gt;Aplicando este concepto a las imagenes en escala de grises :&lt;br /&gt;&lt;pre name="code" class="py"&gt;&lt;br /&gt;function fotocopia(imagen, salida)&lt;br /&gt;im            = imread(imagen);&lt;br /&gt;[diffX,diffY] = gradient(im);&lt;br /&gt;fotocopia     = (diffX.^2 + diffY.^2).^(1/2);&lt;br /&gt;fotocopia     = fotocopia * 3;&lt;br /&gt;fotocopia     = 255 - fotocopia;&lt;br /&gt;imwrite(fotocopia,salida);&lt;br /&gt;endfunction&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El operador . es para que se haga la operación a cada elemento de la matriz (elevar al cuadrado elemento por elemento)&lt;br /&gt;La multiplicación por 3 es para realzar los bordes&lt;br /&gt;La resta es para que el fondo quede blanco y el contorno oscuro (255 = blanco, 0 = negro).&lt;br /&gt;&lt;pre name="code" class="py"&gt;&lt;br /&gt;fotocopia("plum.jpg","fotocopia.jpg");&lt;/pre&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_HYYNgjvfago/TP7DAwF5uOI/AAAAAAAAAC0/rH4QRIjRATc/s1600/plum.jpg"&gt;&lt;img style="cursor: pointer; width: 242px; height: 320px;" src="http://1.bp.blogspot.com/_HYYNgjvfago/TP7DAwF5uOI/AAAAAAAAAC0/rH4QRIjRATc/s320/plum.jpg" alt="" id="BLOGGER_PHOTO_ID_5548086208644102370" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_HYYNgjvfago/TP7EJnmG4rI/AAAAAAAAAC8/27g3MeLJS4E/s1600/fotocopia.jpg"&gt;&lt;img style="cursor: pointer; width: 242px; height: 331px;" src="http://1.bp.blogspot.com/_HYYNgjvfago/TP7EJnmG4rI/AAAAAAAAAC8/27g3MeLJS4E/s320/fotocopia.jpg" alt="" id="BLOGGER_PHOTO_ID_5548087460493714098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-1315325438489852738?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/1315325438489852738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/02/editando-imagenes-con-octave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/1315325438489852738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/1315325438489852738'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/02/editando-imagenes-con-octave.html' title='Editando imagenes con Octave'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HYYNgjvfago/TP7DAwF5uOI/AAAAAAAAAC0/rH4QRIjRATc/s72-c/plum.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-3770792620103299668</id><published>2010-02-16T17:34:00.001-08:00</published><updated>2011-08-11T12:05:12.669-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Recuerdo</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_HYYNgjvfago/S3tISHbv5DI/AAAAAAAAABs/ryByE6iMWaU/s1600-h/naves.gif"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5439020451050284082" src="http://1.bp.blogspot.com/_HYYNgjvfago/S3tISHbv5DI/AAAAAAAAABs/ryByE6iMWaU/s200/naves.gif" style="cursor: pointer; display: block; height: 222px; margin: 0px auto 10px; text-align: center; width: 336px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El año 2005 programé un juego de naves en C con la librería ncurses, usando caracteres ASCII.&lt;br /&gt;Aprendí muchas cosas y sentí gran satisfacción al ver mi jueguito terminado. No creo que el código sea un ejemplo,  pero fue para mí una pequeña victoria.&lt;br /&gt;Os dejo el&lt;a href="http://smallprograms.googlecode.com/files/naves-2005.tar.gz"&gt; link&lt;/a&gt; para descargar el código y el ejecutable.&lt;br /&gt;PD: Las balas no se veen porque estan mal programadas, su velocidad depende del procesador.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-3770792620103299668?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/3770792620103299668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/02/recuerdo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3770792620103299668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3770792620103299668'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/02/recuerdo.html' title='Recuerdo'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HYYNgjvfago/S3tISHbv5DI/AAAAAAAAABs/ryByE6iMWaU/s72-c/naves.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-8108926204117093854</id><published>2010-01-11T17:58:00.000-08:00</published><updated>2010-12-07T15:19:31.025-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Puntero void*</title><content type='html'>Un puntero void* es un puntero genérico que se puede usar para hacer funciones que pueden recibir y/o devolver distintos tipos de datos según sea el caso. O sea que usando este tipo de puntero puedes hacer por ejemplo una función que trabaje con enteros si se le pasan punteros a enteros o con una estructura si se le pasan punteros a la estructura.&lt;br /&gt;  En el siguiente ejemplo se hace un casting a otro tipo de puntero para que así el compilador sepa cuantos bytes debe sumar a la dirección base, en este caso el casting es a char* por lo tanto el compilador sumará tamElem*k*sizeof(char) bytes a la dirección base.&lt;br /&gt;  Esta función recibe de argumento la función de comparación y busca en un arreglo el argumento llamado valor, en caso de hallarlo retorna el indice del elemento en el arreglo, si no encuentra al elemento en el arreglo retorna -1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;int busquedaLineal(void *valor, void *dirBase, int tamElem, int cantElem, int (*comparacion) (void*,void*)) {&lt;br /&gt;    int k;&lt;br /&gt;    for(k=0; k &amp;lt;  cantElem; k++) {&lt;br /&gt;        void *elemActual = (char*)dirBase + tamElem*k;&lt;br /&gt;        if( comparacion(valor,elemActual) == 0 ) {&lt;br /&gt;            return k;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return -1;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-8108926204117093854?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/8108926204117093854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2010/01/puntero-void.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/8108926204117093854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/8108926204117093854'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2010/01/puntero-void.html' title='Puntero void*'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-2111790869653813897</id><published>2009-12-15T14:41:00.000-08:00</published><updated>2010-12-07T15:21:17.315-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Editando sonido con Octave</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;Octave es un software muy parecido a Matlab, pero libre.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Trae consigo un sin fin de funciones matemáticas, sobre todo para trabajar con matrices&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Una de las muchas cosas interesantes que se pueden hacer con este software es cargar un archivo de audio en una matriz y editarlo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Un archivo de audio tiene tres propiedades :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Muestras por segundo (Hz) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Número de bits por muestra&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Cantidad de canales. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Usando la función wavread se puede leer un archivo WAV. Un sonido monofónico se guardará en una matriz de una columna, un sonido stereo una matriz de dos columnas, etc. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Sonido original:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object style="color: rgb(0, 0, 102);" height="132" width="353"&gt;&lt;embed src="http://www.goear.com/files/external.swf?file=f64fd4a" type="application/x-shockwave-flash" wmode="transparent" quality="high" height="132" width="353"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Efecto de eco :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="py"&gt;&lt;br /&gt;#archivo entrada, archivo salida, sample rate(ej. 44100,22050,etc)&lt;br /&gt;function ecoAudio(nombre_wav, salida_wav, samplerate_hz)&lt;br /&gt; wav_matrix = wavread(nombre_wav); #leer wav&lt;br /&gt; desp = int32( size(wav_matrix)(1)/20 );&lt;br /&gt; m2         = shift(wav_matrix,desp);&lt;br /&gt; wav_matrix = wav_matrix + m2;&lt;br /&gt; wavwrite(wav_matrix,samplerate_hz,salida_wav);&lt;br /&gt;endfunction&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Aplicando efecto de eco:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="132" width="353"&gt;&lt;embed src="http://www.goear.com/files/external.swf?file=a5f9732" type="application/x-shockwave-flash" wmode="transparent" quality="high" height="132" width="353"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Cambio de rapidez :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="py"&gt;&lt;br /&gt;#archivo entrada, archivo salida,sample rate,rapidez&lt;br /&gt;function rapidezAudio(nombre_wav, salida_wav, samplerate_hz, rapidez)&lt;br /&gt; wav_matrix = wavread(nombre_wav);&lt;br /&gt; wavwrite(wav_matrix, samplerate_hz*rapidez, salida_wav);&lt;br /&gt;endfunction&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Reproduciendo a la mitad de su velocidad:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="132" width="353"&gt;&lt;embed src="http://www.goear.com/files/external.swf?file=a00608a" type="application/x-shockwave-flash" wmode="transparent" quality="high" height="132" width="353"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Reproduciendo al doble de su velocidad:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="132" width="353"&gt;&lt;embed src="http://www.goear.com/files/external.swf?file=b1138c0" type="application/x-shockwave-flash" wmode="transparent" quality="high" height="132" width="353"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Reproducir al revés :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="py"&gt;&lt;br /&gt;#archivo entrada, archivo salida, sample rate&lt;br /&gt;function revertirAudio(nombre_wav, salida_wav,samplerate_hz)&lt;br /&gt; wav_matrix = wavread(nombre_wav);&lt;br /&gt; wav_matrix = flipud(wav_matrix); #revertir filas&lt;br /&gt; wavwrite(wav_matrix,samplerate_hz,salida_wav);&lt;br /&gt;endfunction&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Reproduciendo al revés:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="132" width="353"&gt;&lt;embed src="http://www.goear.com/files/external.swf?file=2aa37f6" type="application/x-shockwave-flash" wmode="transparent" quality="high" height="132" width="353"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-2111790869653813897?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/2111790869653813897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/12/editando-sonido-con-octave.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2111790869653813897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2111790869653813897'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/12/editando-sonido-con-octave.html' title='Editando sonido con Octave'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-4212934728790872597</id><published>2009-12-02T20:12:00.000-08:00</published><updated>2010-12-07T15:22:53.754-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Usando un entero como un arreglo de caracteres</title><content type='html'>Si tenemos una variable de tipo int por lo general ocupará 4 bytes de memoria, los que podremos usar literalmente a nuestro antojo. Por ejemplo podemos usar este espacio como un arreglo de 4 elementos de 1 byte cada uno.&lt;br /&gt;&lt;br /&gt;Ejemplo uso de un entero como un arreglo de caracteres:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;&lt;br /&gt;#include &amp;#60;stdio.h&amp;#62; &lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;&lt;br /&gt;    int num;&lt;br /&gt;    num=0;&lt;br /&gt;    ( (char *)&amp;amp;num )[0] = 7;&lt;br /&gt;    ( (char *)&amp;amp;num )[1] = 3;&lt;br /&gt;    printf("%i %i\n",( (char*)&amp;amp;num )[0],( (char*)&amp;amp;num )[1]);&lt;br /&gt;    *( (char *)&amp;amp;num ) = 2;&lt;br /&gt;    *( (char *)&amp;amp;num + 1) = 4;&lt;br /&gt;    printf("%i %i\n",( (char*)&amp;amp;num )[0],( (char*)&amp;amp;num )[1]);&lt;br /&gt;    printf("%d\n",num);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Lo anterior imprime :&lt;br /&gt;&lt;br /&gt;7 3&lt;br /&gt;2 4&lt;br /&gt;1026&lt;br /&gt;&lt;br /&gt;La variable num queda como 1026 porque:&lt;br /&gt;| 0000 0000 |0000 0000 | 0000 0100 | 0000 0010 |&lt;br /&gt;|     0     |    0     |     4     |      2    |&lt;br /&gt;&lt;br /&gt;La idea de este ejemplo es comprender mejor cómo funciona el lenguaje porque en la práctica usar un entero como un arreglo de char no hace que el código sea más simple.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-4212934728790872597?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/4212934728790872597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/12/usando-un-entero-como-un-arreglo-de.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/4212934728790872597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/4212934728790872597'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/12/usando-un-entero-como-un-arreglo-de.html' title='Usando un entero como un arreglo de caracteres'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-7500135532078755030</id><published>2009-11-05T18:18:00.000-08:00</published><updated>2009-11-05T18:33:57.466-08:00</updated><title type='text'>Problema de ingenio</title><content type='html'>Vas por un camino en medio de la selva que luego se dividirá en dos caminos, uno lleva a una tribu amigable y el otro lleva a una tribu canibal. Te encuentras con dos aborígenes de los cuales uno es de la tribu canibal y el otro es de la tribu amigable. El canibal NUNCA dice la verdad y el amigable SIEMPRE dice la verdad, no sabes cual de los dos es el canibal y sólo puedes hacer una pregunta que será respondida por los dos aborígenes. &lt;br /&gt;     ¿Qué pregunta debes hacer para saber cuál es el camino que te conviene seguir?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-7500135532078755030?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/7500135532078755030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/11/problema-de-ingenio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/7500135532078755030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/7500135532078755030'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/11/problema-de-ingenio.html' title='Problema de ingenio'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-4206694895129394390</id><published>2009-10-11T19:39:00.000-07:00</published><updated>2010-12-07T15:23:59.226-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Programación y ajedrez</title><content type='html'>El verano del 2008 comencé a programar un motor de ajedrez en C, que probablemente será un chimpacé al lado de cualquier otro motor.  Aún no lo termino, pues le dedico tiempo solo los veranos y unos escazos días.&lt;br /&gt;   En los primeros programas de ajedrez el tablero se representaba usando un arreglo, luego se comenzó a usar una técnica que revolucionó el mundo del ajedrez, los bitboards.&lt;br /&gt;  Un bitboard es una representación del tablero usando un entero de 8 bytes, dado que cada byte tiene 8 bits se pueden representar los 64 casilleros del tablero con un bitboard.&lt;br /&gt;  La ventaja de esta representación es que los cálculos son mucho menos costosos en memoria y CPU porque un bitboard pesa mucho menos que un arreglo de 64 carácteres y se usan operaciones a nivel de bit como el AND,OR,XOR y shift para muchos de los cálculos.&lt;br /&gt;&lt;br /&gt; Verificar si un casillero del tablero se encuentra ocupado por una pieza usando bitboards:&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;typedef uint64_t bitboard;&lt;br /&gt;...&lt;br /&gt;/*  square number 0-63 (a1-h8) */ &lt;br /&gt;int isOccuped(bitboard board, int square) {&lt;br /&gt;    &lt;br /&gt;    if( board &amp; (1&amp;lt&amp;lt square) ) {&lt;br /&gt;        return 1;    &lt;br /&gt;    }&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;  Para revisar si una casilla del tablero esta ocupada usando un arreglo tendriamos que recorrer el arreglo e ir revisando casilla por casilla, lo cual resulta más costoso y menos elegante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-4206694895129394390?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/4206694895129394390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/10/programacion-y-ajedrez.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/4206694895129394390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/4206694895129394390'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/10/programacion-y-ajedrez.html' title='Programación y ajedrez'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-239700477402070678</id><published>2009-10-07T20:19:00.000-07:00</published><updated>2010-12-07T15:25:15.346-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Aritmética de punteros</title><content type='html'>Estaba indeciso acerca de que escribir en mi descuidado blog y decidí que a partir de hoy comenzaré a postear algunos fragmentos de código.&lt;br /&gt;   Sé que es muy fácil encontrar buenos ejemplos acerca del tema de hoy, pero más de alguno lo habrá olvidado y lo recordará por casualidad al llegar aquí.&lt;br /&gt;  C permite sumar o restar números enteros a un puntero, desplazando la dirección a la que este apunta la cantidad de bytes que ocupa el tipo de dato del puntero multiplicada por el número entero que se le ha sumado o restado. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;#include &amp;#60;stdio.h&amp;#62; &lt;br /&gt;#include &amp;#60;stdlib.h&amp;#62; &lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;&lt;br /&gt;    int* intArray;&lt;br /&gt; /*  (int *) indica al compilador que en la memoria reservada &lt;br /&gt;     se almacenaran enteros&lt;br /&gt;     malloc (memory allocate) reserva (sizeof(int)*3) bytes de memoria &lt;br /&gt;     sizeof(int) retorna la cantidad de bytes que ocupa un int &lt;br /&gt;     (en mi caso 4 bytes)&lt;br /&gt;     inicialmente intArray apunta al primer byte de memoria reservada&lt;br /&gt; */&lt;br /&gt;    intArray  = (int *) malloc(sizeof(int)*3); &lt;br /&gt;   *intArray = 1;  //equivalente a intArray[0] = 1&lt;br /&gt;//desplazar direccion apuntada por intArray sizeof(int) bytes&lt;br /&gt;    intArray  = intArray + 1; &lt;br /&gt;   *intArray = 2;  &lt;br /&gt;    intArray  = intArray +1; &lt;br /&gt;   *intArray = 3; &lt;br /&gt;    printf("%i %i %i\n",*(intArray - 2),*(intArray - 1),*intArray);&lt;br /&gt; /* si llamamos inmediatamente a free(intArray) obtendremos un error &lt;br /&gt;    en tiempo de ejecucion pues intArray ya no apunta al primer byte &lt;br /&gt;    de memoria reservada*/&lt;br /&gt;&lt;br /&gt; //intArray debe apuntar al 1er byte de la memoria reservada &lt;br /&gt;    intArray = intArray - 2; &lt;br /&gt;    free(intArray);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  Muestra en pantalla: &lt;br /&gt;  1 2 3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-239700477402070678?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/239700477402070678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/10/aritmetica-de-punteros.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/239700477402070678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/239700477402070678'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/10/aritmetica-de-punteros.html' title='Aritmética de punteros'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-528364932912935473</id><published>2009-02-27T07:31:00.000-08:00</published><updated>2009-02-27T07:58:25.628-08:00</updated><title type='text'>Almacenando tus imagenes en Flickr</title><content type='html'>Estoy usando Joomla y el componente Morfeoshow para referenciar a un album de Flickr desde otro sitio web, lo cual me evita usar el ancho de banda y espacio de hosting para mostrar una galería de imagenes, además de darme la comodidad de administrar las fotos en flickr, que tiene una interfaz muy comoda.&lt;br /&gt;  Me cree una cuenta en Flickr, cree un album, y llené un formulario para solicitar un application key que es una clave que tienes que poner en la aplicación que accederá a las fotos de un album flickr,  el uso de la API de Flickr es gratuito cuando no es con fines comerciales.&lt;br /&gt;    En cuanto al componente Morfeoshow, que sirve para hacer galerías fotográficas en Joomla, tuve un pequeño problema por un molesto boton "retroceder" que salía abajo de la galería. En mi caso no lo necesitaba asi que lo desactivé.&lt;br /&gt; Para desactivar el boton retroceder se debe cambiar la línea:&lt;br /&gt;      if ($params_morfeo['back'] == 0) por if ($params_morfeo['back'] == 1)&lt;br /&gt;  Que está en components/com_morfeoshow/morfeoshow.html.php  en la línea 552 (versión 1.2.0  de morfeoshow).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-528364932912935473?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/528364932912935473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/almacenando-tus-imagenes-en-flickr.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/528364932912935473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/528364932912935473'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/almacenando-tus-imagenes-en-flickr.html' title='Almacenando tus imagenes en Flickr'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-6701567136789537549</id><published>2009-02-21T19:08:00.000-08:00</published><updated>2009-02-21T19:22:21.562-08:00</updated><title type='text'>Virtualbox, que maravilla</title><content type='html'>Hoy probé virtualbox, un software de virtualización que te permite crear una maquina virtual para instalar algún sistema operativo y probarlo desde el sistema que estas usando sin necesidad de reiniciar ni finalizar ningún proceso.&lt;br /&gt;       Me impresionó su facilidad de uso,  tiene un asistente esplendido con el cual en menos de 2 minutos tienes una maquina virtual configurada, porque te pregunta cuanta memoria ram y disco le asignaras a la nueva maquina, sin entrar en mayores detalles. Luego puedes cargar el sistema operativo a instalar desde la unidad de dvd o una imagen ISO. &lt;br /&gt;   Yo le instalé windows xp profesional sin necesidad de salir de ubuntu, sin configurar nada pude navegar en internet explorer y escribir este artículo.&lt;br /&gt;   Hace años que no uso vmware, asi que no puedo comparar, pero si puedo recomendar esta fabulosa herramienta llamada virtualbox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-6701567136789537549?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/6701567136789537549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/virtualbox-que-maravilla.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/6701567136789537549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/6701567136789537549'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/virtualbox-que-maravilla.html' title='Virtualbox, que maravilla'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-369353767843337113</id><published>2009-02-11T15:01:00.000-08:00</published><updated>2009-02-11T15:07:22.513-08:00</updated><title type='text'>Notebook nuevo</title><content type='html'>Estoy posteando desde mi nuevo notebook. Un Lenovo N500, con un diseño parecido al de mi antiguo IBM t23 que me acompañó por 3 años.&lt;br /&gt;    Necesitaba con urgencia actualizarme, pues mi antiguo notebook me tenía muy limitado.&lt;br /&gt;    ¡Muy feliz con la compra!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-369353767843337113?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/369353767843337113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/notebook-nuevo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/369353767843337113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/369353767843337113'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/notebook-nuevo.html' title='Notebook nuevo'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-5501493292357666425</id><published>2009-02-09T18:55:00.000-08:00</published><updated>2009-02-09T19:27:57.143-08:00</updated><title type='text'>Palabras</title><content type='html'>&lt;span class="eLema"&gt;  Nuestra lengua es bella y abundante, he oído decir una y otra vez, es una afirmación atrevida para alguien que no habla más de dos idiomas, cuando en el mundo hay más de 6000.&lt;br /&gt;    Tal vez la belleza radica en nuestras ideas y por ende cada ser humano ama su idioma. Por mi parte no hablo ningún idioma a la perfección, pues desconozco una gran parte de los recursos disponibles y mal utilizo otros.&lt;br /&gt;  Que compleja, que deslumbrante y que útil es nuestra capacidad para comunicarnos. Aumentemos nuestro vocabulario, abramos nuevas puertas en el laberinto del lenguaje.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;profiláctico&lt;/b&gt;&lt;/span&gt;&lt;span class="eGenero"&gt;&lt;b&gt;, ca&lt;/b&gt;&lt;/span&gt;&lt;span class="eLema"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;span class="eEtimo"&gt; (&lt;a&gt;Del&lt;/a&gt; &lt;a title="griego o griega"&gt;gr.&lt;/a&gt; προφυλακτικός&lt;/span&gt;&lt;span class="eEtimo"&gt;; &lt;a&gt;de&lt;/a&gt; προφυλάσσειν, prevenir, precaver).&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_1"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 1.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt; &lt;span class="eAbrv" title="adjetivo"&gt;adj.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt;&lt;i&gt; &lt;span class="eAbrv" title="Medicina"&gt;Med.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Dicho de una persona o de una cosa: Que puede preservar de la enfermedad.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_2"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 2.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt; &lt;span class="eAbrv" title="nombre masculino"&gt;m.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; &lt;a href="http://buscon.rae.es/draeI/SrvltObtenerHtml?origen=RAE&amp;amp;LEMA=preservativo&amp;amp;SUPIND=0&amp;amp;CAREXT=10000&amp;amp;NEDIC=No"&gt;&lt;span class="eReferencia"&gt;&lt;b&gt;preservativo.&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_3"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 3.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt; &lt;span class="eAbrv" title="nombre femenino"&gt;f.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt;&lt;i&gt; &lt;span class="eAbrv" title="Medicina"&gt;Med.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Parte de la medicina que tiene por objeto la conservación de la salud y la preservación de la enfermedad.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;br /&gt;&lt;span class="eAcep"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 0em; margin-bottom: -0.5em;"&gt;&lt;span class="eLema"&gt;&lt;b&gt;moción&lt;/b&gt;&lt;/span&gt;&lt;span class="eLema"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;span class="eEtimo"&gt; (&lt;a&gt;Del&lt;/a&gt; &lt;a title="latín, latino o latina"&gt;lat.&lt;/a&gt; &lt;i&gt;motĭo, -ōnis&lt;/i&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_1"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 1.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt; &lt;span class="eAbrv" title="nombre femenino"&gt;f.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Acción y efecto de mover o ser movido.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_2"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 2.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrvNoEdit"&gt; &lt;span class="eAbrvNoEdit" title="nombre femenino"&gt;f.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Alteración del ánimo.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_3"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 3.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrvNoEdit"&gt; &lt;span class="eAbrvNoEdit" title="nombre femenino"&gt;f.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Inspiración interior que Dios ocasiona en el alma.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_4"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 4.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrvNoEdit"&gt; &lt;span class="eAbrvNoEdit" title="nombre femenino"&gt;f.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Proposición que se hace o sugiere en una junta que delibera.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_5"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 5.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrvNoEdit"&gt; &lt;span class="eAbrvNoEdit" title="nombre femenino"&gt;f.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; En las lenguas semíticas, nombre que se da a las vocales y a los signos que las representan.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;a name="0_6"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 6.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrvNoEdit"&gt; &lt;span class="eAbrvNoEdit" title="nombre femenino"&gt;f.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt;&lt;i&gt; &lt;span class="eAbrv" title="Gramática"&gt;Gram.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Expresión del género mediante un cambio de terminación.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;span class="eAcep"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 0em; margin-bottom: -0.5em;"&gt;&lt;span class="eLema"&gt;&lt;b&gt;díscolo&lt;/b&gt;&lt;/span&gt;&lt;span class="eGenero"&gt;&lt;b&gt;, la&lt;/b&gt;&lt;/span&gt;&lt;span class="eLema"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em;"&gt;&lt;span class="eEtimo"&gt; (&lt;a&gt;Del&lt;/a&gt; &lt;a title="latín, latino o latina"&gt;lat.&lt;/a&gt; &lt;i&gt;dyscŏlus,&lt;/i&gt;&lt;/span&gt;&lt;span class="eEtimo"&gt; y este &lt;a&gt;del&lt;/a&gt; &lt;a title="griego o griega"&gt;gr.&lt;/a&gt; δύσκολος).&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em; text-align: left;"&gt;&lt;a name="0_1"&gt;&lt;/a&gt;&lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 1.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt; &lt;span class="eAbrv" title="adjetivo"&gt;adj.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Desobediente, que no se comporta con docilidad. &lt;span class="eAbrv" title="Usado, usada o usadas también como sustantivo"&gt;U. t. c. s.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em; text-align: left;"&gt;&lt;br /&gt;&lt;span class="eAcep"&gt;&lt;span class="eAbrv" title="Usado, usada o usadas también como sustantivo"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 2em; margin-bottom: -0.5em; text-align: left;"&gt;&lt;span class="eAcep"&gt;&lt;span class="eAbrv" title="Usado, usada o usadas también como sustantivo"&gt;Fuente:  &lt;a href="http://www.rae.es/"&gt;www.rae.es&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-5501493292357666425?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/5501493292357666425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/palabras.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5501493292357666425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5501493292357666425'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/palabras.html' title='Palabras'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-909983404249908455</id><published>2009-02-04T07:31:00.000-08:00</published><updated>2009-02-09T17:43:28.493-08:00</updated><title type='text'>¿Cómo se impulsan los cohetes?</title><content type='html'>Los cohetes se impulsan gracias a la aplicación  de la tercera ley de Newton: Para cada acción ocurre siempre una reacción igual y opuesta (en cuanto a fuerza). Por ejemplo si tu ejerces un golpe fuerte sobre una pared, tu mano a su vez recibe un golpe de igual magnitud y de dirección opuesta al golpe recibido por la pared.&lt;br /&gt;      El ejemplo clásico para explicar como se impulsa un cohete es el de un globo que se desinfla. El aire que es expulsado del globo empuja  al aire que esta fuera del globo y el aire que esta fuera del globo empuja al globo hacia adelante.&lt;br /&gt;      En el caso de un cohete que va en el espacio, no tenemos aire que empujar, pues esta en el vacío, pero el cohete al quemar combustible produce gases que a su vez son empujados por los nuevos gases que van siendo producidos al instante, produciendo un par de acción reacción entre el gas que fue producido y el que está siendo producido.&lt;br /&gt;&lt;br /&gt;Referencias:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.selecciones.com/acercade/art.php?id=927"&gt;Artículo de www.selecciones.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://books.google.cl/books?id=KQz1mq-jfDEC&amp;amp;pg=PA192&amp;amp;lpg=PA192&amp;amp;dq=cohete+se+impulsa&amp;amp;source=web&amp;amp;ots=P87wpB-LnZ&amp;amp;sig=pqsBf6dCDChj3R-dB3yuCDTwGfY&amp;amp;hl=es&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;resnum=2&amp;amp;ct=result#PPA193,M1"&gt;Ebook de Paul A. Tipler&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-909983404249908455?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/909983404249908455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/como-se-impulsan-los-cohetes.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/909983404249908455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/909983404249908455'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/02/como-se-impulsan-los-cohetes.html' title='¿Cómo se impulsan los cohetes?'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-2716494792040922980</id><published>2009-01-18T19:29:00.000-08:00</published><updated>2009-01-18T19:47:06.527-08:00</updated><title type='text'>Mis refranes favoritos</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;  Ningún viento es favorable a quien no sabe donde va.&lt;/li&gt;&lt;li&gt;  Lo que no te mata, te hace más fuerte.&lt;/li&gt;&lt;li&gt;  Cuando realmente deseas algo, todo el universo conspira para que puedas conseguirlo.&lt;/li&gt;&lt;li&gt;   No hay mal que dure cien años.&lt;/li&gt;&lt;li&gt;   Todo tiene solución, menos la muerte.&lt;/li&gt;&lt;li&gt;   Al pobre no des el pescado. Enseñale a pescar.&lt;/li&gt;&lt;li&gt;   Dicen que la fe mueve montañas, pero la dinamita ha demostrado ser más efectiva.&lt;/li&gt;&lt;li&gt;   El mentiroso y el ladrón, siempre salen pillados.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-2716494792040922980?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/2716494792040922980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/mis-refranes-favoritos.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2716494792040922980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/2716494792040922980'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/mis-refranes-favoritos.html' title='Mis refranes favoritos'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-5405427440343057632</id><published>2009-01-15T09:31:00.000-08:00</published><updated>2009-01-15T09:44:07.008-08:00</updated><title type='text'>mysql error 1045</title><content type='html'>Hoy instalé mysql y obtuve un error al intentar acceder como root con los parametros -u root -p. La única forma de poder acceder a una base de datos era invocando mysql desde una consola con root.&lt;br /&gt;      Para solucionar el problema probe restablecer la contraseña de root, crear otro usuario, etc.&lt;br /&gt;       Sucedía una y otra vez lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;mysql -u root -p&lt;br /&gt;Enter password:&lt;br /&gt;ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Donde obviamente yo tipeaba la contraseña correcta.&lt;br /&gt;&lt;br /&gt;      Finalmente la forma de evitar el problema fue desinstalar mysql con la opción --purge para que remueva todos los ficheros de configuración, e instalarlo de nuevo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;     apt-get remove --purge mysql-server-5.0&lt;br /&gt;     apt-get install mysql-server-5.0&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-5405427440343057632?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/5405427440343057632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/mysql-error-1045.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5405427440343057632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5405427440343057632'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/mysql-error-1045.html' title='mysql error 1045'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-3186264655657112161</id><published>2009-01-06T07:23:00.000-08:00</published><updated>2009-01-06T10:07:16.243-08:00</updated><title type='text'>Diferencia entre Voltaje y Amperaje</title><content type='html'>La unidad de voltaje o potencial es el  [volt] y la unidad del amperaje es el amperio [A].&lt;br /&gt;   Un volt = J/C, Un Joule por cada Coulomb, donde Joule es energía y Coulomb es carga.&lt;br /&gt;   Un Amperio = C/s, Un Coulomb por cada segundo.&lt;br /&gt;  Sabemos que la electricidad es el flujo de electrones, donde cada electrón aporta con una porción diminuta de carga.&lt;br /&gt;    Luego podríamos hacer la siguiente analogía: Imaginemos un ejercito de soldados, donde cada uno lleva una mochila con energía en su espalda.&lt;br /&gt;    La cantidad de soldados que pasa por unidad de tiempo es equivalente a los amperios. La cantidad de energía que lleva cada soldado en su mochila es correspondiente al voltaje o potencial.&lt;br /&gt;  Cuando un soldado pasa por un pantano pierde energía, entonces se gasta el voltaje, luego el pantano sería una resistencia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-3186264655657112161?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/3186264655657112161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/diferencia-entre-voltaje-y-amperaje.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3186264655657112161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3186264655657112161'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/diferencia-entre-voltaje-y-amperaje.html' title='Diferencia entre Voltaje y Amperaje'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-6129292389240883676</id><published>2009-01-03T22:24:00.000-08:00</published><updated>2009-01-06T07:18:03.675-08:00</updated><title type='text'>pcmcia usb 2.0</title><content type='html'>Me han regalado un disco duro externo Simpletech de 500 GB , un regalo muy útil, pues con 30 GB de disco poco podía tener.&lt;br /&gt;      Al conectar el disco al pcmcia de 4 puertos usb 2.0 que tengo instalado en mi IBM t23, este no era detectado ni encendía su luz, buscando un poco me percate de que para los dispositivos que requieren mayor potencia debo conectar un transformador a la tarjeta pcmcia.&lt;br /&gt;     Dejé el transformador que venía con la pcmcia y que nunca usé en Valparaíso; Estoy a 10 horas de distancia de allí.&lt;br /&gt;   Googleando un poco me encontré con que la tarjeta pcmcia necesita una fuente de 5V y por lo menos 2A para poder alimentar dispositivos que gastan más energía. Entonces se me ocurrió la idea de usar una vieja fuente AT para resolver el problema. Pues dispone de una salida de 5V (cable rojo) y 12V (cable amarillo).&lt;br /&gt;  Con mis pobres conocimientos de electrónica me armé de un cable con un jack dc que saqué de un eliminador de pilas y lo conecté a los cables rojo y negro de la fuente (cables de los conectores que se usan para alimentar discos duros y lectores de dvd). Además cómo la fuente no tenía el interruptor, uní los cables negro con cafe y blanco con azul para que al enchufar la fuente encienda.&lt;br /&gt;   Gracias a lo anterior he podido usar mi disco externo y ahorrarme comprar un transformador de 5V.&lt;br /&gt;    Algunas moralejas que aprendí acerca de fuentes de alimentación:&lt;br /&gt;     El voltaje de la fuente debe ser el mismo que el requerido por el circuito a alimentar.&lt;br /&gt;    El amperaje de la fuente debe ser mayor o igual al requerido por el circuito a alimentar, entre más amperaje tenga la fuente más útil puede resultar, pues puede entregar una mayor potencia y alimentar una mayor gama de aparatos.&lt;br /&gt;   Recordando lo que aprendí en física:&lt;br /&gt;&lt;br /&gt;      V = R*I (V = Volts, R=Ohms I=Amperios)&lt;br /&gt;    Si despejamos la corriente tenemos que:&lt;br /&gt;        I = V/R&lt;br /&gt;        La resistencia depende del circuito que estamos alimentando y el voltaje depende de la fuente de alimentación. Luego la corriente requerida por el circuito se ajusta al voltaje de la fuente y a la resistencia del circuito, por lo tanto solo importa que el voltaje de la fuente sea igual al requerido. Pues el circuito pide los amperios que necesita a la fuente.&lt;br /&gt;       Si la fuente tiene menos amperios que los necesitados por el circuito, no sirve, pues se puede estropear la fuente y el circuito no obtendrá los amperios&lt;br /&gt;    necesarios para su correcto funcionamiento.&lt;br /&gt;P = V*I, viendo las unidades, se tienen J/c * c/s =J/s=Watts!&lt;br /&gt;La tarjeta pcmcia requiere 5V y 2A, por lo tanto gasta 10 Watts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-6129292389240883676?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/6129292389240883676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/pcmcia-usb-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/6129292389240883676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/6129292389240883676'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2009/01/pcmcia-usb-20.html' title='pcmcia usb 2.0'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-5304962674868994975</id><published>2008-12-26T03:35:00.000-08:00</published><updated>2008-12-26T03:43:44.863-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Apagar pc speaker</title><content type='html'>Para terminar para siempre con el beep en todas las aplicaciones!&lt;br /&gt;    Ese molesto sonido que se puede escuchar al apretar tab reiteradas veces en la consola o al intentar bajar cuando ya estas en la última linea de un documento en gedit.&lt;br /&gt;  &lt;br /&gt; Hay que descargar el modulo pcspkr.&lt;br /&gt;   &lt;br /&gt;  Como root tipear:&lt;br /&gt;  &lt;br /&gt;    &lt;span style="font-style: italic;"&gt;modprobe -r pcspkr&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt; Si se quiere que no se cargue más el modulo:&lt;br /&gt;&lt;br /&gt;añadir la siguiente linea  al fichero blacklist que esta en /etc/modprobe.d/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;blacklist pcspkr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   Un descanso para el oído.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-5304962674868994975?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/5304962674868994975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2008/12/apagar-pc-speaker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5304962674868994975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/5304962674868994975'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2008/12/apagar-pc-speaker.html' title='Apagar pc speaker'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6984762971826912125.post-3800856589998509492</id><published>2008-12-18T06:28:00.001-08:00</published><updated>2008-12-18T06:45:23.979-08:00</updated><title type='text'>De vuelta al mundo de los sueños</title><content type='html'>Hace mucho tiempo que dejé de escribir, hoy decidí comenzar de nuevo.&lt;br /&gt;    Muchas cosas bellas puede hacer un ser humano, mundos desbordantes de fantasía puede llevar en su interior, pero aparte de él nadie puede saberlo; A menos que sus creaciones  cobren vida a través de un hilo de palabras, cuan trozo de ADN da a un ser vivo sus cualidades, nuestras frases nos personifican en la mente de los demás.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6984762971826912125-3800856589998509492?l=reyesalfonso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reyesalfonso.blogspot.com/feeds/3800856589998509492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://reyesalfonso.blogspot.com/2008/12/de-vuelta-al-mundo-de-los-sueos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3800856589998509492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6984762971826912125/posts/default/3800856589998509492'/><link rel='alternate' type='text/html' href='http://reyesalfonso.blogspot.com/2008/12/de-vuelta-al-mundo-de-los-sueos.html' title='De vuelta al mundo de los sueños'/><author><name>Juan Reyes</name><uri>http://www.blogger.com/profile/08040840568149099982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
