<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6670905892285365702</atom:id><lastBuildDate>Thu, 16 Feb 2012 15:39:25 +0000</lastBuildDate><category>linux</category><category>facebook</category><category>inauguracion</category><category>blog nuevo</category><category>newton</category><category>downloader</category><category>triangulo</category><category>bonimio</category><category>vulnerabilidad</category><category>pascal</category><category>regla falsa</category><category>aplicacion</category><category>amarok2</category><category>java6</category><category>goear</category><category>debian/ubuntu</category><category>emesene</category><category>python</category><category>pseudocodigo</category><category>punto fijo</category><category>qt4</category><category>clase</category><category>amarok</category><category>cpp</category><category>vector</category><category>re-apertura</category><category>current song</category><title>Blog del Camaleon</title><description /><link>http://blogdelcamaleon.blogspot.com/</link><managingEditor>noreply@blogger.com (Juan Fernando Hernandez)</managingEditor><generator>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogdelcamaleonx" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogdelcamaleonx" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-2305891348840560290</guid><pubDate>Tue, 31 Jan 2012 01:06:00 +0000</pubDate><atom:updated>2012-01-30T20:06:14.416-05:00</atom:updated><title>TIP: Error con dependencias Matlab y ubuntu 64</title><description>Luego de instalar el Matlab, me&amp;nbsp;sorprendió&amp;nbsp;un error de dependencias, que aunque el programa en&amp;nbsp;cuestión&amp;nbsp;funcionó bien hasta donde lo testié, no está demás solucionar todos estos fallos.&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
sudo ln -s /lib/x86_64-linux-gnu/libc.so.6 /lib64/libc.so.6&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Solo es eso , un link&amp;nbsp;simbólico&amp;nbsp;ya que al parecer Matlab no revisa el directorio donde tenemos nuestro libc por defecto.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-2305891348840560290?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2012/01/tip-error-con-dependencias-matlab-y.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-7470124498181824518</guid><pubDate>Wed, 08 Apr 2009 00:17:00 +0000</pubDate><atom:updated>2009-04-07T19:47:02.191-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">regla falsa</category><category domain="http://www.blogger.com/atom/ns#">punto fijo</category><category domain="http://www.blogger.com/atom/ns#">pseudocodigo</category><title>funciones de busqueda de raices PSEUDOCODIGO</title><description>&lt;p&gt;A continuacion voy a colocar 2 metodos de busqueda de raices en PSEUDOCODIGO, si quieres mas informacion y profundidad puedes consultar en libros de metodos numericos como el de Burden.&lt;/p&gt;&lt;br /&gt;Los siguientes algoritmos son para buscar raices(soluciones) a algoritmos de grado &lt;=3 , es decir, de la forma a*x^3+b*x^2+c*x+d  &lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FUNCIONES&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;abs: devuelve el valor absoluto de un numero.&lt;/li&gt;&lt;li&gt;Regla_Falsa: Busca soluciones para la ecuacion f(x)=0 dada una funcion f continua en [p0,p1] donde f(p0) y f(p1) tienen sifnos opuestos.&lt;/li&gt;&lt;li&gt;Regla_Falsa: Busca soluciones para la ecuacion f(x)=0 dada una funcion f continua en [p0,p1] donde f(p0) y f(p1) tienen sifnos opuestos.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;VALOR ABSOLUTO&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;FUNCION abs (n:real):real&lt;br /&gt;SI (n&amp;lt;0) HAGA&lt;br /&gt;n = n * (-1.0)&lt;br /&gt;FIN_SI&lt;br /&gt;RETORNE n&lt;br /&gt;FIN_FUNCION&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;REGLA FALSA&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;FUNCION Regla_Falsa (a:real, b:real, c:real, d:real, P0:real, P1:real, TOL:real, N0:entero):real&lt;br /&gt;q0, q1, p, q : real&lt;br /&gt;i:entero&lt;br /&gt;i = 2&lt;br /&gt;q0 = a*(p0^3.0)+b*(p0^2.0)+c*p0+d&lt;br /&gt;q1 = a*(p1^3.0)+b*(p1^2.0)+c*p0+d&lt;br /&gt;MIENTRAS (i&amp;lt;=N0) HAGA&lt;br /&gt;p = p1-q1(p1-p0)/(q1-q0)&lt;br /&gt;SI (abs(p-p1)&amp;lt;TOL) HAGA&lt;br /&gt; RETORNE p&lt;br /&gt;FIN_SI&lt;br /&gt;i = i+1&lt;br /&gt;q = a*(p^3.0)+b*(p^2.0)+c*p+d&lt;br /&gt;SI ((q*q1)&amp;lt;0.0) HAGA&lt;br /&gt; p0 = p1&lt;br /&gt; q0 = q1&lt;br /&gt;FIN_SI&lt;br /&gt;p1 = p&lt;br /&gt;q1 = q&lt;br /&gt;FIN_MIENTRAS&lt;br /&gt;RETORNE TOL&lt;br /&gt;FIN_FUNCION&lt;/pre&gt;&lt;br /&gt;PUNTO FIJO&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;FUNCION Punto_Fijo(a:real, b:real, c:real, d:real, P0:real, TOL:real, N0:entero):real&lt;br /&gt;p:real&lt;br /&gt;i:entero&lt;br /&gt;i = 1&lt;br /&gt;MIENTRAS (i&amp;lt;=N0) HAGA&lt;br /&gt;p = a*(p0^3.0)+b*(p0^2.0)+c*p0+d&lt;br /&gt;SI (abs(p-p1)&amp;lt;TOL) HAGA&lt;br /&gt; RETORNE p&lt;br /&gt;FIN_SI&lt;br /&gt;i = i+1&lt;br /&gt;p0 = p&lt;br /&gt;FIN_MIENTRAS&lt;br /&gt;RETORNE TOL&lt;br /&gt;FIN_FUNCION&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-7470124498181824518?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/04/funciones-de-busqueda-de-raices.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-5185236952181413171</guid><pubDate>Mon, 06 Apr 2009 20:12:00 +0000</pubDate><atom:updated>2009-04-06T15:24:56.062-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">emesene</category><category domain="http://www.blogger.com/atom/ns#">amarok2</category><category domain="http://www.blogger.com/atom/ns#">current song</category><title>emesene current song &amp; amarok 2</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://amarok.kde.org/sites/default/themes/amarok/logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 262px; height: 72px;" src="http://amarok.kde.org/sites/default/themes/amarok/logo.png" alt="" border="0" /&gt;&lt;/a&gt;Sabiendo que se lanzo hace poco el release de amarok2 y muchos lectores utilizan emesene como su cliente de mensajería instantánea, quice crear un plugin o modificar el actual ya que obviamente no funcionaba, así que me puse a mirar si ya lo habían hecho (PARA NO REINVENTAR LA RUEDA) y menos mal alguien me ahorra trabajo creando una especie de parche para el plugin.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;La comunicación anteriormente con el emesene se realizaba mediante python-dcop, por lo que solo bastaba instalar el paquete y reiniciar el emesene, pero ahora parece que han cambiado la vía de comunicación, no me atrevo a decir como lo hacen pues no me gusta especular, así que cuando tenga algo mas claro colocare la información.&lt;br /&gt;&lt;br /&gt;Por el momento, solo debes ejecutar lo siguiente en Debian como ROOT si no perteneces al grupo de sudoers, si no lo sabes, simplemente ejecutalo como root; para debian y otras distros el proceso es muy similar y fácilmente deducible.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;wget http://www.emesene.org/trac/raw-attachment/ticket/1955/pluginamarok2 &amp;amp;&amp;amp; sudo sh pluginamarok2 &amp;amp;&amp;amp; rm pluginamarok2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Usuarios de debian deben hacerlo como root.&lt;br /&gt;&lt;br /&gt;En resumen, El comando anterior descarga, ejecuta y luego borra el plugin ya innecesario.. Si quieres ejecutar cada comando por separado, simplemente fijate que se separan por doble ‘&amp;amp;’&lt;br /&gt;&lt;br /&gt;Luego abres tu emesene y en el plugin “current song”, seleccionas “amarok2″ y ya esta&lt;br /&gt;&lt;br /&gt;Ahora pueden mostrarle a sus amigos su musica preferida, tambien es buena alternativa cuando se te acabo la creatividad para el mensaje personal ..&lt;br /&gt;&lt;br /&gt;NOTA: si no funciona prueba&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;apt-get install python-dcop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;reinicia emesene.&lt;br /&gt;&lt;br /&gt;Si usas la version 1 de amarok, puedes encontrar como hacerlo en &lt;a href="http://blogdelcamaleon.blogspot.com/2009/04/emesene-current-song-amarok.html"&gt;ESTA ENTRADA ANTIGUA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-5185236952181413171?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/04/emesene-current-song-amarok-2.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-8002432431821439745</guid><pubDate>Sun, 05 Apr 2009 16:54:00 +0000</pubDate><atom:updated>2009-04-05T12:03:43.956-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">amarok</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">emesene</category><title>emesene current song &amp; amarok</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3178/2743743294_87a506027b.jpg?v=0"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 150px; height: 150px;" src="http://farm4.static.flickr.com/3178/2743743294_87a506027b.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;Resulta que amarok es mi reproductor de medios preferido, y hoy al instalarlo me lleve la sorpresa de que no mostraba en el emesene la canción que estaba reproduciendo.&lt;br /&gt;&lt;br /&gt;Lo primero es ver que en los plugins de emesene tengamos activado current song, ademas, que en sus propiedades este amarok elegido.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Luego en una terminal de root hacemos:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;apt-get install python-dcop&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Matamos el proceso de python con el Monitor del sistema, o reiniciamos las X con ctrl+alt+TECLADEBORRAR… O simplemente cerramos la sección (El caso es matar el proceso de python).&lt;br /&gt;&lt;br /&gt;Luego prende tu musica con amarok =), hecha a andar el emesene y le picas al icono como una nota al lado del mensaje personal y ya estuvo &lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-8002432431821439745?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/04/emesene-current-song-amarok.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-1115613808709859693</guid><pubDate>Sun, 05 Apr 2009 01:42:00 +0000</pubDate><atom:updated>2009-04-05T14:36:37.268-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">facebook</category><category domain="http://www.blogger.com/atom/ns#">vulnerabilidad</category><title>Vulnerabilidad albumes Facebook</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cinemavip.com/user_images/14463-logo_facebook.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 100px;" src="http://www.cinemavip.com/user_images/14463-logo_facebook.jpg" border="0" alt="" /&gt;&lt;/a&gt;Esta vulnerabilidad permite al atacante obtener los enlaces de los álbumes de cualquier usuario de facebook haciendo uso de FQL(Facebook Query Language).&lt;br /&gt;&lt;br /&gt;Si bien se pueden obtener los enlaces, algunos no pueden ser accedidos al tener configuraciones extras.&lt;br /&gt;A continuación, voy a explicar paso a paso como realizar el proceso.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Buscamos el ID del usuario que deseamos obtener los enlaces: Para esto se busca la persona en el buscador interno del facebook, la idea es que lo intentes agregar como amigo, y al colocar el cursor sobre cualquier enlace relacionado, por ejemplo el de mensaje te dara un link como este &lt;a href="http://www.facebook.com/addfriend.php?id=USERID"&gt;http://www.facebook.com/addfriend.php?id=USERID&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 154px;" src="http://3.bp.blogspot.com/_yhhvQNnAzT4/SdgwWmMKF7I/AAAAAAAAAFY/7r2btb6GyJo/s400/tuto.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5321056124505036722" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Vamos al espacio para desarrolla&lt;span&gt;&lt;span&gt;dores del api de Facebook &lt;a href="http://developers.facebook.com/tools.php"&gt;http://developers.facebook.com/tools.php&lt;/a&gt;, ahi seleccionas en formato de respuesta "facebook PHP cliente", en Metodo, seleccionas "photos.getAlbums" y por ultimo, colocas el uid obtenido en el paso anterior y le das al boton "Metodo de llamada", lo cual te devuelve algo parecido a esto.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;Array&lt;br /&gt;(&lt;br /&gt;[0] =&gt; Array&lt;br /&gt;(&lt;br /&gt;[aid] =&gt; 4838211643114538213&lt;br /&gt;[cover_pid] =&gt; 4838211643114854938&lt;br /&gt;[owner] =&gt; 1126483931&lt;br /&gt;[name] =&gt; xxxxxxxxxxxxx&lt;br /&gt;[created] =&gt; 1235487335&lt;br /&gt;[modified] =&gt; 1237601584&lt;br /&gt;[description] =&gt; DESCRIPCION&lt;br /&gt;[location] =&gt; Luso!&lt;br /&gt;[link] =&gt; http://www.facebook.com/album.php?aid=17637&amp;amp;id=USERID&lt;br /&gt;[size] =&gt; 54&lt;br /&gt;[visible] =&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;El link que nos interesa es&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;http://www.facebook.com/album.php?aid=17637&amp;amp;id=USERID&lt;/span&gt;&lt;br /&gt;Que debe quedar sin el "amp;"&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="fullpost"&gt;Todos los creditos a Tryptophan de &lt;a href="http://foro.elhacker.net/nivel_web/fql_injection-t248423.0.html"&gt;foro.elhacker.net&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-1115613808709859693?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/04/vulnerabilidad-albumes-facebook.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_yhhvQNnAzT4/SdgwWmMKF7I/AAAAAAAAAFY/7r2btb6GyJo/s72-c/tuto.png" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-2461367408887074521</guid><pubDate>Fri, 03 Apr 2009 19:45:00 +0000</pubDate><atom:updated>2009-04-04T21:47:23.651-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">debian/ubuntu</category><category domain="http://www.blogger.com/atom/ns#">java6</category><title>java y java-plugin en Debian/Ubuntu</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nexenta.files.wordpress.com/2008/03/javalogo.png?w=188&amp;amp;h=155"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 188px; height: 154px;" src="http://nexenta.files.wordpress.com/2008/03/javalogo.png?w=188&amp;amp;h=155" border="0" alt="" /&gt;&lt;/a&gt;Ahora podemos ver muchas aplicaciones que se ejecutan por medio de la maquina virtual de java, para lo cual se necesita tener instalada la version 6 (version a la fecha)..&lt;br /&gt;&lt;br /&gt;Los applets extienden la funcionalidad de las paginas webs, pero para correrlos necesitamos instalar el plugin de java.&lt;br /&gt;&lt;p&gt;Primero instalamos los respectivos paquetes...&lt;/p&gt;&lt;span class="fullpost"&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;sudo aptitude install sun-java6-jre sun-java6-plugin&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;luego actualizamos la configuracion para que se use el java que acabamos de instalar&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;sudo update-alternatives --config java&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;la opcion que debemos elegir es la del enlace a java6&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="fullpost"&gt;&lt;span style="font-weight:bold;"&gt;/usr/lib/jvm/java-6-sun/jre/bin/java&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fullpost"&gt;&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="fullpost"&gt;&lt;p&gt;NOTA: si quieres correr un jar, se hace de la siguiente manera&lt;/p&gt;&lt;p&gt;&lt;strong&gt;java -jar programa.jar&lt;/strong&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-2461367408887074521?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/04/java-y-java-plugin-en-debianubuntu.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-1187497305318016426</guid><pubDate>Sat, 28 Mar 2009 20:48:00 +0000</pubDate><atom:updated>2009-03-30T15:02:48.339-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">clase</category><category domain="http://www.blogger.com/atom/ns#">vector</category><category domain="http://www.blogger.com/atom/ns#">cpp</category><title>Clase vector cpp (c++) #1</title><description>Los vectores son un tipo de contenedores secuenciales; se llama así debido a que su orden es estrictamente lineal, es decir, una posición tras otra.&lt;br /&gt;&lt;br /&gt;La clase vector es muy útil para trabajar con cierta cantidad de datos desconocidos y arreglos, pues permite manejar dinámicamente objetos en dichos arreglos, pudiendo crearlos de clases y variables expandiendo o contrayendo el arreglo.&lt;br /&gt;&lt;br /&gt;dicha clase se encuentra definida en la cabecera vector para incluirla simplemente se coloca en el campo de declaraciones.&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;#include &amp;lt;vector&amp;gt;  ;&lt;/pre&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Para declarar un vector se usa la siguiente notación formal&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;template &amp;lt; class T, class Allocator = allocator&amp;lt;T&amp;gt; &amp;gt; class vector;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Los que no entienden mucho la notación de arriba, en español (y en el codigo) se declara parecido a lo siguiente.&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;vector&amp;lt;tipo&amp;gt; nombre_vector;  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como ejemplo, para declarar un vector de enteros se hace de la siguiente manera&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;vector &amp;lt;int&amp;gt;enteros; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La parte de class Allocator = allocator, se usa para indicar el tamaño en memoria que debe tomar cada elemento del vector, si no se especifica, tomara el tamaño definido en la clase que se le paso, en este caso, int [2 bytes] C/elemento.&lt;br /&gt;&lt;br /&gt;Comparados con los arreglos, los vectores pueden ser redimensionados fácilmente, aunque los vectores suelen consumir mas memoria pues mantienen alguna cantidad reservada para futuros incrementos.&lt;br /&gt;&lt;br /&gt;Cuando se incrementa demasiado rápido un vector, suele disminuir mucho el performance del programa, pues el vector debe redimensionar la memoria que ocupa a un espacio mas grande, para evitarlo, se puede recurrir a tener una reserva constante de memoria para el vector con vector::reserve.&lt;br /&gt;&lt;br /&gt;Voy a tomar algunas de las funciones mas importantes (aunque todas lo son) y a explicarlas en un código de ejemplo que no va a tener mucho sentido, pero sera bueno para ilustrar el uso básico de vectores.&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;  &lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;  &lt;br /&gt;  &lt;br /&gt;int main()  &lt;br /&gt;{  &lt;br /&gt;    //Declaracion simple vector.  &lt;br /&gt;    vector &amp;lt;int&amp;gt;enteros;  &lt;br /&gt;    int num;  &lt;br /&gt;  &lt;br /&gt;    cout &amp;lt;&amp;lt; num;  &lt;br /&gt;  &lt;br /&gt;    //se agrega un elemento al final del vector  &lt;br /&gt;    enteros.push_back(num);  &lt;br /&gt;  &lt;br /&gt;    //se accede a una posicion estatica del vector y se muestra su amplitud  &lt;br /&gt;    cout &amp;lt;&amp;lt; "En la posicion 0 esta : " &amp;lt;&amp;lt; (enteros[0]) &amp;lt;&amp;lt; endl  &lt;br /&gt;         &amp;lt;&amp;lt; "Longitud del vector : "   &amp;lt;&amp;lt; (enteros.size()) &amp;lt;&amp;lt; endl  &lt;br /&gt;         &amp;lt;&amp;lt; "Capacidad: " &amp;lt;&amp;lt; (enteros.capacity()) &amp;lt;&amp;lt; endl  &lt;br /&gt;         &amp;lt;&amp;lt; "Longitud maxima del vector: " &amp;lt;&amp;lt; (enteros.max_size()) &amp;lt;&amp;lt; "\n\n";  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;    //Se limpia el vector, es decir, se vacia  &lt;br /&gt;    enteros.clear();  &lt;br /&gt;  &lt;br /&gt;    for (int i=1; i &amp;lt;=10; i++)  &lt;br /&gt;    enteros.push_back(i);  &lt;br /&gt;  &lt;br /&gt;    cout &amp;lt;&amp;lt; "Hay en el vector: " &amp;lt;&amp;lt; (enteros.size()) &amp;lt;&amp;lt; " elementos\n";  &lt;br /&gt;  &lt;br /&gt;    //Elimino el ultimo elemento del vector  &lt;br /&gt;&lt;br /&gt;    enteros.pop_back();  &lt;br /&gt;  &lt;br /&gt;    cout &amp;lt;&amp;lt; "Hay en el vector: " &amp;lt;&amp;lt; (enteros.size()) &amp;lt;&amp;lt; " elementos\n";  &lt;br /&gt;  &lt;br /&gt;    return 0;  &lt;br /&gt;}  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;salida:&lt;br /&gt;&lt;strong&gt;Entre un numero: 666&lt;br /&gt;En la posicion 0 esta : 666&lt;br /&gt;Longitud del vector : 1&lt;br /&gt;Capacidad: 1&lt;br /&gt;Longitud maxima del vector: 1073741823&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Hay en el vector: 10 elementos&lt;br /&gt;Hay en el vector: 9 elementos&lt;br /&gt;&lt;br /&gt;Esto es lo basico qe se debe saber sobre vectores, luego coloco mas ejemplos y un par de trucos.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-1187497305318016426?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/03/clase-vector-cpp-c-1.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-2327774548744925928</guid><pubDate>Sat, 28 Mar 2009 05:27:00 +0000</pubDate><atom:updated>2009-05-12T10:15:15.772-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">qt4</category><category domain="http://www.blogger.com/atom/ns#">downloader</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">goear</category><category domain="http://www.blogger.com/atom/ns#">aplicacion</category><title>Goear Downloader Python QT4</title><description>&lt;p&gt;Para los que no la conocen, la pagina web &lt;a href="http://goear.com/"&gt;www.goear.com&lt;/a&gt; te permite escuchar online variedad de canciones de muchos generos, lo malo (para nosotros claro), es que solo se pueden escuchar online, pero eso tiene su solucion con el Goear Downloader, el cual te permite descargar cualquier cancion de dicha web.&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 317px;" src="http://1.bp.blogspot.com/_yhhvQNnAzT4/SdEdFjQjcTI/AAAAAAAAAEw/LvAFvr6G_f4/s320/goear2.png" alt="" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Para cualquier distro debes tener instaladas las librerias de "python-qt4" (PyQt4), en debian  derivados se hace de la siguiente forma&lt;/p&gt;&lt;span class="fullpost"&gt;&lt;p&gt;sudo aptitude install python-qt4&lt;/p&gt;&lt;p&gt;Es un script/Aplicacion en python, por lo que se ejecuta desde una terminal si no se tiene asociada la extencion al interprete.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;#! /usr/bin/python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import urllib2&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;from PyQt4 import QtCore, QtGui&lt;br /&gt;&lt;br /&gt;class Tuxsong (QtGui.QMainWindow):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        QtGui.QMainWindow.__init__(self)&lt;br /&gt;        self.setGeometry(300, 300, 440, 90)&lt;br /&gt;        self.setWindowTitle('Tuxsong v 0.000 Beta')    &lt;br /&gt;        self.edit=QtGui.QLineEdit(self)&lt;br /&gt;        self.edit.setGeometry(10, 10,  320,  26)&lt;br /&gt;        self.button = QtGui.QPushButton('Descargar', self)&lt;br /&gt;        self.button.move(340, 10)&lt;br /&gt;        self.progressbar = QtGui.QProgressBar(self)&lt;br /&gt;        self.progressbar.setGeometry(10,  48,  415,  25)&lt;br /&gt;        self.connect(self.button, QtCore.SIGNAL('clicked()'), self.Descargar)&lt;br /&gt;       &lt;br /&gt;    def Descargar(self):&lt;br /&gt;        url = Tuxsong.edit.text()&lt;br /&gt;        url = url.split('listen/')&lt;br /&gt;url = url[1].split('/')&lt;br /&gt;        url = "http://www.goear.com/files/xmlfiles/" + (url[0])[0] + "/secm" + url[0] + ".xml"&lt;br /&gt;        response = urllib2.urlopen(str(url))&lt;br /&gt;        xml = response.read()&lt;br /&gt;        xml = xml.split('\n')&lt;br /&gt;        url = xml[2].split('"')&lt;br /&gt;        url = url[1], url[5],  url[7]&lt;br /&gt;       &lt;br /&gt;        cancion = str(url[2]+"-"+url[1]+".mp3")&lt;br /&gt;cancion  = cancion.replace('/', '-')&lt;br /&gt;        mp3 = open( cancion,  'wb')&lt;br /&gt;        response = urllib2.urlopen(str(url[0]))&lt;br /&gt;       &lt;br /&gt;        headers = response.info()&lt;br /&gt;        size = int(headers['Content-Length'])&lt;br /&gt;        self.progressbar.setRange(0,  size)&lt;br /&gt;       &lt;br /&gt;        mp3.write(response.read(4096))&lt;br /&gt;        i = 4096&lt;br /&gt;        self.progressbar.setValue(i)&lt;br /&gt;       &lt;br /&gt;        while i &amp;lt;= size:&lt;br /&gt;            mp3.write(response.read(4096))&lt;br /&gt;            i = i + 4096&lt;br /&gt;            self.progressbar.setValue(i)&lt;br /&gt;       &lt;br /&gt;        response.close()&lt;br /&gt;        mp3.close()&lt;br /&gt;        self.progressbar.setValue(i)&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;app = QtGui.QApplication(sys.argv)&lt;br /&gt;Tuxsong = Tuxsong()&lt;br /&gt;Tuxsong.show()&lt;br /&gt;&lt;br /&gt;sys.exit(app.exec_())&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-2327774548744925928?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/03/goear-downloader-python-qt4.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_yhhvQNnAzT4/SdEdFjQjcTI/AAAAAAAAAEw/LvAFvr6G_f4/s72-c/goear2.png" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-193507645325373392</guid><pubDate>Wed, 18 Mar 2009 03:59:00 +0000</pubDate><atom:updated>2009-03-30T14:55:47.207-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">newton</category><category domain="http://www.blogger.com/atom/ns#">bonimio</category><category domain="http://www.blogger.com/atom/ns#">triangulo</category><category domain="http://www.blogger.com/atom/ns#">pascal</category><title>Trangulo de pascal y binomio de Newton (codigo)</title><description>El triangulo de pascal y el binomio de newton guardan una relacion muy estrecha, tanto asi, que muchas veces nos valdremos del triangulo de pascal para hacer un poco menos dificil el trabajo.&lt;p&gt;La forma de un binomio de newton es (a+b)^n  // n ∈ N&lt;/p&gt;&lt;p&gt;Lo anterior quiere decir que n debe pertenecer a los numeros naturales.&lt;/p&gt;&lt;p&gt;a^n+[a^(n-1)]*b+.........+b^n&lt;/p&gt;&lt;span class="fullpost"&gt;&lt;p&gt;asi, los coheficientes de cada termino se calculan mediante el triangulo de pascal con la siguiente expresion.&lt;/p&gt;&lt;p&gt;&lt;img style="cursor:pointer; cursor:hand;width: 83px; height: 46px;" src="http://upload.wikimedia.org/math/c/4/b/c4bb4e4274ebb7bee3b1cb5885e296b6.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;donde n es la fila y p es la columna dentro del triangulo, abajo dejo la implementacion del algoritmo para el triangulo.&lt;/p&gt; &lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int fac(int n)&lt;br /&gt;{&lt;br /&gt;if(n == 0)&lt;br /&gt;return 1;&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;int ret=1;&lt;br /&gt;for(n; n&amp;gt;1; n--)&lt;br /&gt;{&lt;br /&gt; ret=ret*n;&lt;br /&gt;}&lt;br /&gt;return ret;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;int n,m,c;&lt;br /&gt;if (argc &amp;lt;1 )&lt;br /&gt;n=10;&lt;br /&gt;else&lt;br /&gt;n=atoi(argv[1]);&lt;br /&gt;&lt;br /&gt;for (c=0;c&amp;lt;n; c++)&lt;br /&gt;{&lt;br /&gt;for (m=0; m&amp;lt;=c; m++)&lt;br /&gt;{&lt;br /&gt;cout &amp;lt;&amp;lt; fac(c)/(fac(m)*fac((c-m))) &amp;lt;&amp;lt; " ";&lt;br /&gt;}&lt;br /&gt;cout &amp;lt;&amp;lt; endl;&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Mas informacion en &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/Coeficiente_binomial_y_triángulo_de_Pascal"&gt;http://es.wikipedia.org/wiki/Coeficiente_binomial_y_triángulo_de_Pascal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://platea.pntic.mec.es/~anunezca/ayudas/newton/binomio_de_newton.htm"&gt;http://platea.pntic.mec.es/~anunezca/ayudas/newton/binomio_de_newton.htm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-193507645325373392?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/03/trangulo-de-pascal-y-binomio-de-newton.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6670905892285365702.post-5920332023407684263</guid><pubDate>Mon, 16 Mar 2009 03:45:00 +0000</pubDate><atom:updated>2009-03-15T23:18:56.265-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blog nuevo</category><category domain="http://www.blogger.com/atom/ns#">re-apertura</category><category domain="http://www.blogger.com/atom/ns#">inauguracion</category><title>Re-apertura del blog</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_yhhvQNnAzT4/Sb3TCCcw97I/AAAAAAAAACg/bwJng6_g4XA/s1600-h/herramienta.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 93px; height: 139px;" src="http://4.bp.blogspot.com/_yhhvQNnAzT4/Sb3TCCcw97I/AAAAAAAAACg/bwJng6_g4XA/s320/herramienta.jpg" alt="" id="BLOGGER_PHOTO_ID_5313635167337772978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Claro que no, el blog del camaleon no ha muerto, solo pasa por una nueva etapa donde vuelvo con la mente fresca, cargada de nuevas ideas y una nueva filosofia&lt;br /&gt;&lt;blockquote&gt;Prima la calidad sobre la cantidad&lt;/blockquote&gt;Asi, puede que no escriba regularmente pero es por una razon justa; de ahora en adelante las entradas tendran el grado de esfuerzo que los lectores merecen, creanme, para mi llevar el blog adelante es una tarea dificil (como lo sera para muchos) pero no pienso dejar morir un proyecto de ya casi un año..&lt;br /&gt;&lt;br /&gt;A los que seguian el blog en deltabyte.net les comento, llego la hora de un camaleon recargado y de ideas claras y por que no, originales.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6670905892285365702-5920332023407684263?l=blogdelcamaleon.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blogdelcamaleon.blogspot.com/2009/03/re-apertura-del-blog.html</link><author>noreply@blogger.com (Juan Fernando Hernandez)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_yhhvQNnAzT4/Sb3TCCcw97I/AAAAAAAAACg/bwJng6_g4XA/s72-c/herramienta.jpg" height="72" width="72" /><thr:total>0</thr:total></item></channel></rss>

