<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.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" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2738913432425957583</atom:id><lastBuildDate>Tue, 24 Jan 2012 14:24:54 +0000</lastBuildDate><category>Fedora</category><category>EasyG</category><category>PS3</category><category>Gnome 3</category><category>Gimp</category><category>Bases de Datos</category><category>Programación</category><category>Mint</category><category>Unipersonal</category><category>Kernel</category><category>Grub</category><category>mac chrome</category><category>Escritorio</category><category>Top Ten Musica</category><category>Vulnerabilidad</category><category>RedHat</category><category>Software libre</category><category>Games</category><category>Nvidia</category><category>Streaming</category><category>Tutoriales</category><category>Chrome</category><category>Logitech</category><category>Noticias</category><category>Qubes</category><category>Tecnologia</category><category>Software</category><category>windows</category><category>.net</category><category>Humor</category><category>Otros</category><category>Android</category><category>Linux+</category><category>Lucid lynx</category><category>News</category><category>SoftwareLibre</category><category>Cine</category><category>Kompozer</category><category>radio</category><category>meego</category><category>wallpapers</category><category>Lubuntu</category><category>Sony</category><category>Debian</category><category>Nokia</category><category>Arch</category><category>GNU/Linux</category><category>Chrome OS</category><category>Webcam</category><category>Tips</category><category>Acer</category><category>Java</category><category>moviles</category><category>Gnome</category><category>Google</category><category>Mandriva</category><category>Guayadeque</category><category>Rhythmbox</category><category>monodroid</category><category>Firefox</category><category>Meme</category><category>Juegos</category><category>revistas</category><category>Lucid</category><category>Canonical</category><category>Linux</category><category>twitter</category><category>Hardware</category><category>celulares</category><category>AstroGarrobo</category><category>DiseñoGrafico</category><category>Ubuntu</category><category>Karmic</category><category>Politica</category><category>Skipfish</category><category>Suse</category><category>Intel</category><category>geowworld</category><category>Helena</category><category>distribuciones</category><title>GeowWorld</title><description>Creando un mundo con Linux, Ubuntu y Programación.</description><link>http://geowworld.blogspot.com/</link><managingEditor>noreply@blogger.com (Jorge Andrés Guerrero)</managingEditor><generator>Blogger</generator><openSearch:totalResults>691</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/Geowworld" /><feedburner:info uri="geowworld" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:subtitle>Creando un mundo con Linux, Ubuntu y Programación.</itunes:subtitle><feedburner:browserFriendly></feedburner:browserFriendly><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-5747824194058949716</guid><pubDate>Sat, 21 Jan 2012 15:49:00 +0000</pubDate><atom:updated>2012-01-21T10:49:50.875-05:00</atom:updated><title>Solucionando Webcam oscura en Skype y Linux</title><description>&lt;div style="text-align: justify;"&gt;
Yo se que existen en Internet montones de entradas de como solucionar esto usando los métodos mas extraños y difíciles, pero a mi me gusta usar una técnica que aprendí hace algún tiempo y se me había olvidado compartir.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
La he recordado porque mi nuevo pc tiene el problema de la webcam oscura en Skype y demas software.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
 &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
 &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Vamos al terminal y vamos a instalar algo.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
sudo apt-get install v4l2ucp&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Con eso solucionaremos todos los problemas de la webcam.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Es básicamente la herramienta creada específicamente para V4L2 que se encarga de la gestión de vídeo en Linux.&lt;/div&gt;
&lt;br /&gt;
Lo corremos en el terminal como v4l2ucp&lt;br /&gt;
Y activamos el exposure y backlight compensation y listo queda una cámara que ya no es oscura.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-ulF1PBUk5uE/TxreVQprEfI/AAAAAAAAB-U/PJdSp1I1JYc/s1600/Pantallazo+del+2012-01-21+10%253A46%253A50.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://3.bp.blogspot.com/-ulF1PBUk5uE/TxreVQprEfI/AAAAAAAAB-U/PJdSp1I1JYc/s400/Pantallazo+del+2012-01-21+10%253A46%253A50.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-5747824194058949716?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2012/01/solucionando-webcam-oscura-en-skype-y.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://3.bp.blogspot.com/-ulF1PBUk5uE/TxreVQprEfI/AAAAAAAAB-U/PJdSp1I1JYc/s72-c/Pantallazo+del+2012-01-21+10%253A46%253A50.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-5359015817623005118</guid><pubDate>Sun, 25 Dec 2011 15:06:00 +0000</pubDate><atom:updated>2011-12-25T10:06:23.847-05:00</atom:updated><title>Pimp Firefox</title><description>&lt;div style="text-align: justify;"&gt;
Como ya comente me regrese al firefox, pero esto tiene algunas implicaciones y es que se requieren algunas extensiones para que funcione, con algunas características que ya me gustaban de Chrome.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Lo primero sera la apariencia, admito que me gusta mucho más la de Chrome que la de Firefox.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Así que lo primero sera instalar FxChrome que es una extensión que le da la apariencia visual de Chrome a Firefox. Como se ve en la imagen.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-rj50u4enIT4/Tvc3HD7xg5I/AAAAAAAAByM/UNUmU3otvDk/s1600/Pantallazo+del+2011-12-25+09%253A45%253A19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/-rj50u4enIT4/Tvc3HD7xg5I/AAAAAAAAByM/UNUmU3otvDk/s320/Pantallazo+del+2011-12-25+09%253A45%253A19.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://addons.mozilla.org/firefox/downloads/latest/287749/platform:2/addon-287749-latest.jar?src=api"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-V20RXhl3jOE/Tvc2iHClT7I/AAAAAAAAByA/SpOfd9JqD3Y/s1600/Pantallazo+del+2011-12-25+09%253A42%253A28.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Hay otra cosa que me encanta de Google Chrome y es la posibilidad de abrir archivos PDF dentro del mismo navegador. En el caso de Chrome esto se hace usando Flash para cargar un visor de PDF. En Mozilla también tienen su extensión pero a diferencia de la de Chrome esta usa HTML5.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-HDtR9TbJaf4/Tvc4noudLOI/AAAAAAAAByY/InzZAKqyf5o/s1600/Pantallazo+del+2011-12-25+09%253A51%253A56.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/-HDtR9TbJaf4/Tvc4noudLOI/AAAAAAAAByY/InzZAKqyf5o/s320/Pantallazo+del+2011-12-25+09%253A51%253A56.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span id="goog_2077654274"&gt;&lt;/span&gt;&lt;span id="goog_2077654275"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://addons.mozilla.org/firefox/downloads/file/138368/pdfjs-0.1.0-fx.xpi?src=userprofile"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-pZbrExFGcyw/Tvc44r3xQtI/AAAAAAAAByw/MynmYAycx8w/s1600/Pantallazo+del+2011-12-25+09%253A42%253A28.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Otra opción que me encanta tener en Firefox es el sistema de Marcadores de Chrome ya que la barra de marcadores de Firefox es estática y no se puede quitar con facilidad. Esta extensión tiene un comportamiento más interesante incluso que el de Chrome, la barra de marcadores solo aparece en pestañas nuevas y una vez carga la pagina desaparece.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Y4FFb64foJQ/Tvc6OSE8LZI/AAAAAAAABy8/o4YUO4x_gSM/s1600/Pantallazo+del+2011-12-25+09%253A58%253A09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://3.bp.blogspot.com/-Y4FFb64foJQ/Tvc6OSE8LZI/AAAAAAAABy8/o4YUO4x_gSM/s320/Pantallazo+del+2011-12-25+09%253A58%253A09.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://addons.mozilla.org/firefox/downloads/latest/78926/addon-78926-latest.xpi?src=userprofile"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-JY-4-NS9RcY/Tvc6SSoMH-I/AAAAAAAABzI/n4dn90UHrEE/s1600/Pantallazo+del+2011-12-25+09%253A42%253A28.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
La barra de descargas de Chrome es algo que sin duda le hace mucha falta a Firefox, de hecho no me gusta mucho que el programa me pregunte que hacer con las descargas así que lo tengo configurado para que todo el contenido se descargue en automático.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://addons.mozilla.org/firefox/downloads/latest/26/addon-26-latest.xpi?src=userprofile"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-i3oEAUPkJMM/Tvc690hJxQI/AAAAAAAABzU/MgFG4Uu-DhI/s1600/Pantallazo+del+2011-12-25+09%253A42%253A28.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
No puede faltar el Addblock Plus aunque esto no existe en Chrome por defecto pero a mi me gusta demasiado porque quita toda la publicidad de los sitios que visito.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi?src=cb-dl-toprated"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-6H4-_Z73zrs/Tvc7TY0bTSI/AAAAAAAABzg/UMOdbn2BDT8/s1600/Pantallazo+del+2011-12-25+09%253A42%253A28.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Y finalmente una que no esta por defecto tampoco en Chrome pero en Firefox me gusta mas su funcionamiento y me permite descargar los videos o musica de Youtube.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://addons.mozilla.org/firefox/downloads/latest/10137/addon-10137-latest.xpi?src=cb-dl-users"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-17_0ZC8rxgU/Tvc7nKLMVlI/AAAAAAAABzs/Y8v9FG1R6Sw/s1600/Pantallazo+del+2011-12-25+09%253A42%253A28.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Con estas extensiones y otras que hay disponible para Firefox el navegador sin duda alguna no puede pasar desapercibido como uno de los mejores que hay en la web.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-5359015817623005118?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/12/pimp-firefox.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://4.bp.blogspot.com/-rj50u4enIT4/Tvc3HD7xg5I/AAAAAAAAByM/UNUmU3otvDk/s72-c/Pantallazo+del+2011-12-25+09%253A45%253A19.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-5184970759380805713</guid><pubDate>Sun, 25 Dec 2011 14:34:00 +0000</pubDate><atom:updated>2011-12-25T09:38:24.318-05:00</atom:updated><title>De Regreso a Firefox</title><description>&lt;div style="text-align: justify;"&gt;
Después de usar Google Chrome durante mucho tiempo he vuelto al confiable y siempre seguro Firefox. Muchos pensaran que es algo extraño teniendo en cuenta las tendencias actuales en la que la mayor parte de las personas se pasan de Firefox a Chrome. A mi basicamente me vienen dos simples razones a la cabeza.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
La primera tiene que ver con el consumo de memoria de Ram que ultimamente en Chrome esta en unos limites desesperantes.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Fqb4fcTHM3k/TvcyPZ6xr1I/AAAAAAAABx0/GyQjXv7_xso/s1600/Pantallazo+del+2011-12-25+09%253A21%253A08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://2.bp.blogspot.com/-Fqb4fcTHM3k/TvcyPZ6xr1I/AAAAAAAABx0/GyQjXv7_xso/s400/Pantallazo+del+2011-12-25+09%253A21%253A08.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
Como se puede ver en la imagen tengo abierto en la parte superior el Chrome y en la parte inferior el Firefox y al comparar el consumo de memoria RAM. Podemos notar que el Firefox esta por los lados de 141 Mb, al sumar los procesos de Chrome nos podemos dar cuenta que esta por los lados de 181 MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Firefox 8 = 141 MB&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Chrome 16 = 181 MB&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
El numero de extensiones podria afectar ese dato de consumo de RAM pero para esta prueba he dejado las extensiones como las tengo sin deshabilitar ninguna.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Firefox 8 = 10 Extensiones&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Chrome 16 = 5 Extensiones&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
La segunda razón por la que me paso a Firefox es debido a que recientemente he instalado en mi pc un monitor de consumo de energía que detalla el consumo en Watts por cada programa.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Al realizar un análisis estadístico y graficar los datos me lleve la sorpresa de que cuando uso Chrome la batería de mi laptop demora 25 minutos menos que cuando uso Firefox. Esto teniendo en cuenta que uso una extensión DIM en Chrome para reducir su consumo de energía desde hace ya más de 5 meses. De hecho en la imagen se puede ver que esta en ON.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Estas dos razones me han llevado a cambiar mis hábitos y adaptarme a Firefox, en mi próximo post contare que he modificado para que funcione y se vea similar a Chrome, ya que es imposible negar que Chrome es uno de los mejores navegadores que hay en la red hoy en día.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-5184970759380805713?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/12/de-regreso-firefox.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://2.bp.blogspot.com/-Fqb4fcTHM3k/TvcyPZ6xr1I/AAAAAAAABx0/GyQjXv7_xso/s72-c/Pantallazo+del+2011-12-25+09%253A21%253A08.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-7590889235574515629</guid><pubDate>Tue, 13 Dec 2011 15:18:00 +0000</pubDate><atom:updated>2011-12-13T10:18:40.897-05:00</atom:updated><title>Consumo Energia Ubuntu 11.10 y 12.04</title><description>Para los interesados en realizar test para mejorar el consumo de energia en sus laptops Ubuntu ha creado una Wiki que busca personas que esten dispuestas a realizar test para mejorar el consumo de energía.&lt;br /&gt;
&lt;br /&gt;
Les dejo los dos enlaces y espero que puedan aportar para mejorar esta distro.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://wiki.ubuntu.com/Kernel/PowerManagementALPM" style="background-color: white; color: #dd4814; font-family: 'Ubuntu Beta', UbuntuBeta, Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 13px; line-height: 19px;"&gt;Aggressive Link Power Management&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://wiki.ubuntu.com/Kernel/PowerManagementPMUtils" style="background-color: white; color: #dd4814; font-family: 'Ubuntu Beta', UbuntuBeta, Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 13px; line-height: 19px;"&gt;Updates to pm-utils power.d scripts&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-7590889235574515629?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/12/consumo-energia-ubuntu-1110-y-1204.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-1481041666780121587</guid><pubDate>Tue, 13 Dec 2011 13:27:00 +0000</pubDate><atom:updated>2011-12-13T09:10:54.255-05:00</atom:updated><title>Python y D-Bus</title><description>&lt;div style="text-align: justify;"&gt;Esta pequeña entrada la tenia pendiente desde hace mucho tiempo, para los que quieran comenzar a ver lo que ofrece D-Bus.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero es crear un servicio dbus.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;import&lt;/span&gt; dbus&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;import &lt;/span&gt;dbus.service&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;from &lt;/span&gt;dbus.mainloop.glib &lt;span class="Apple-style-span" style="color: #274e13;"&gt;import&lt;/span&gt; DBusGMainLoop&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Estas tres primeras lineas lo que hacen es primero import dbus&amp;nbsp;después&amp;nbsp;importar los servicios que ofrece dbus y finalmente crear un glib loop que es&amp;nbsp;básicamente&amp;nbsp;un ciclo continuo para que busque eventos de Dbus.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div id='iframeDiv26ee77f6-2406-4e28-872b-18217d019e1e' style='display:none;margin:0px;'&gt;&lt;iframe id='iframe26ee77f6-2406-4e28-872b-18217d019e1e' src='http://www.blogtrog.com/code.aspx?id=26ee77f6-2406-4e28-872b-18217d019e1e' style='width: 500px; height: 400px; border: 1px solid #e0e0e0;margin:0px;' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id='noIframeDiv26ee77f6-2406-4e28-872b-18217d019e1e' style='display:block;margin:0px;'&gt;&lt;pre&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyDBUSService(dbus.service.Object):  
     &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;__init__&lt;/span&gt;&lt;span style="color: #000000;"&gt;(self): 
         bus_name &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dbus.service.BusName(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,  
                                         bus&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;dbus.SessionBus())  
         dbus.service.Object.&lt;/span&gt;&lt;span style="color: #800080;"&gt;__init__&lt;/span&gt;&lt;span style="color: #000000;"&gt;(self,  
                                      bus_name,  
                                      &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;/org/primerdbus/serviciohola&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)  
    
     @dbus.service.method(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) 
     &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; hello(self): 
         &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello,World!&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
   
     @dbus.service.method(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) 
     &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; shutdown(self): 
         loop.quit() 
   
 DBusGMainLoop(set_as_default&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;True) 
 myservice &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyDBUSService() 
  
 loop &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GObject.MainLoop() 
 loop.run()&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language='javascript' src='http://www.blogtrog.com/scripts/bt_code.js' type='text/javascript'&gt;&lt;/script&gt;&lt;script language='javascript' type='text/javascript'&gt;bt_code_init('26ee77f6-2406-4e28-872b-18217d019e1e');&lt;/script&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Estas 3 primeras lineas suelen ser siempre las mismas para cualquier servicio que estemos pensando crear.&lt;/div&gt;Voy a pegar el codigo del servicio y explicare las lineas.&lt;br /&gt;
&lt;br /&gt;
Para crear un servicio lo primero es crear una clase en este caso la clase se llama MyDBUSService esta clase tiene 3 objetos. dbus service y object.&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero sera crear el nombre del bus con el comando de la linea 3 el nombre que se le asigna para este caso es org.primerdbus.serviciohola.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tenemos que&amp;nbsp;inicializar&amp;nbsp;ahora un objeto que en este caso es bastante evidente, vamos a inicializar el&amp;nbsp;recién&amp;nbsp;creado servicio llamado servicehola&amp;nbsp;llamándolo&amp;nbsp;desde org/primerdbus/serviciohola.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Este&amp;nbsp;recién&amp;nbsp;creado e&amp;nbsp;inicializado&amp;nbsp;servicio debe&amp;nbsp;también debe&amp;nbsp;ofrecer algo, porque esa es la esencia de un servicio ofrecer opciones o&amp;nbsp;características&amp;nbsp;que nos sean interesantes a este tipo de cosas que ofrecen los servicios los llamamos&amp;nbsp;métodos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En este caso particular de nuestra primera&amp;nbsp;aproximación se van a crear dos&amp;nbsp;métodos, uno que hace algo para nosotros y otro que cierra y termina el servicio y que es de alguna forma&amp;nbsp;estándar&amp;nbsp;y debe estar presente en todos los servicios que creemos de aquí en adelante.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Las lineas 13, 14 y 15 terminan y cierran el servicio y siempre las tenemos que poner en cualquiera que creemos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;13&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;    @dbus.service.method(&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;14&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="background-color: white; color: blue; font-family: monospace; white-space: pre;"&gt;def&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; apagar(self):&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;15&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;        loop.quit()&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
Las lineas 9, 10 y 11 crean una&amp;nbsp;definición&amp;nbsp;que se llama hola y es propia (self) y lo&amp;nbsp;único&amp;nbsp;que hace es retornarle a self un texto que en este caso es Hola Mundo!. Si ya se que es un ejemplo muy tonto pero es&amp;nbsp;básico&amp;nbsp;para iniciarse.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 9&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;    @dbus.service.method(&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;10&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="background-color: white; color: blue; font-family: monospace; white-space: pre;"&gt;def&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; hola(self):&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;11&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;        &lt;/span&gt;&lt;span style="background-color: white; color: blue; font-family: monospace; white-space: pre;"&gt;return&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;"&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;Hola Mundo!&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;"&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente las ultimas lineas cierra el bucle y con esto hemos terminado de crear un servicio. Por cierto el bucle lo he creado con GObject pero lo pueden crear con Gtk. Creo que es mejor usar GObject porque da menos pataletas para los servicios.&lt;br /&gt;
&lt;br /&gt;
Ahora la pregunta es como consumir un servicio. Para eso creamos algun nuevo archivo en python que se encargara de llamar al servicio y consumirlo.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 1&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: blue; font-family: monospace; white-space: pre;"&gt;import&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; dbus &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 2&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 3&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;bus &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;=&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; dbus.SessionBus() &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 4&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;serviciohola &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;=&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; bus.get_object(&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;,  &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 5&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;                      &lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;/org/primerdbus/serviciohola&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;) &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 6&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;metodohola &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;=&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt;serviciohola&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;.get_dbus_method(&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;hola&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;, &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 7&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;                      &lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;) &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 8&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;&lt;/span&gt;&lt;span style="background-color: white; color: blue; font-family: monospace; white-space: pre;"&gt;print&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; (hola()) &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt; 9&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;10&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;metodoapagado &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;=&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt;serviciohola&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;.get_dbus_method(&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'apagar&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;11&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;                     &lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;org.primerdbus.serviciohola&lt;/span&gt;&lt;span style="background-color: white; color: maroon; font-family: monospace; white-space: pre;"&gt;'&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;12&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: teal; font-family: monospace; white-space: pre;"&gt;13&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: monospace; white-space: pre;"&gt; apagar&lt;/span&gt;&lt;span style="background-color: white; font-family: monospace; white-space: pre;"&gt;()&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
La linea 4 llama al&amp;nbsp;servicio&amp;nbsp;usando el nombre y la ruta.&lt;br /&gt;
&lt;br /&gt;
El comando get_dbus_method se encarga de buscar los&amp;nbsp;métodos&amp;nbsp;con los nombres que tenga dentro del servicio en este caso creamos dos&amp;nbsp;métodos hola y el siempre y&amp;nbsp;clásico&amp;nbsp;apagar.&lt;br /&gt;
&lt;br /&gt;
El&amp;nbsp;método&amp;nbsp;hola se ejecuta con la&amp;nbsp;instrucción&amp;nbsp;print (hola()) que como ya saben dentro de hola esta self que guardo Hola Mundo!.&lt;br /&gt;
&lt;br /&gt;
El segundo metodo es apagar() que lo que hace es enviar el comando loop.quit() y termina el servicio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espero que esta primera entrada les ayude a entender un poco Dbus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-1481041666780121587?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/12/python-y-d-bus.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-7275317297847022969</guid><pubDate>Sat, 10 Dec 2011 13:59:00 +0000</pubDate><atom:updated>2011-12-10T09:57:48.403-05:00</atom:updated><title>Tutorial para Crear un DEB y subirlo a tu PPA</title><description>&lt;div style="text-align: justify;"&gt;Si estas mirando esta entrada puede ser interesante que visites &lt;a href="http://geowworld.blogspot.com/2011/12/tutorial-crear-un-ppa.html"&gt;este&lt;/a&gt; tutorial anterior.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Este tutorial nos va a a enseñar a hacer lo siguiente de forma&amp;nbsp;fácil:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Crear un proyecto sencillo en Python con novedades de Python3 + PyGObject + GtkBuilder + GTK3.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Crear un paquete .deb de 32bits o 64bits para nuestro proyecto en python&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Subir un archivo fuente .tar.gz (changes) a nuestro repositorio en launchpad (PPA)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Vamos entonces a crear un PROYECTO bastante simple en python para crear un deb a partir de este y&amp;nbsp;después&amp;nbsp;crear un source y subirlo a nuestro PPA.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como yo estoy arrancando un proyecto personal vamos a usar mi proyecto como referencia, ustedes lo pueden aplicar a cualquier proyecto o programa que tengan.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero sera crear el archivo de GtkBuilder usando la&amp;nbsp;tecnología&amp;nbsp;de GTK3 para ello simplemente abrimos Glade y creamos algo parecido a lo que les muestro en la siguientes&amp;nbsp;imágenes.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Crean una ventana, agregan una barra de herramientas y agregan dos botones uno al que he nombrado Conectar y el otro Actualizar. Este programa que estoy creando en python permite conectar nuestro PC a nuestro Televisor usando DLNA por medio del demonio minidlna, es un programa bastante simple en esta&amp;nbsp;versión&amp;nbsp;que les muestro.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VGF3_e0WkPg/TuNWN0sY8tI/AAAAAAAABwY/XIkoJp0jH-E/s1600/Pantallazo+del+2011-12-10+07%253A50%253A12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://3.bp.blogspot.com/-VGF3_e0WkPg/TuNWN0sY8tI/AAAAAAAABwY/XIkoJp0jH-E/s320/Pantallazo+del+2011-12-10+07%253A50%253A12.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Recuerden poner la ventana Main Visible&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lcF6ddEips0/TuNWOejNKBI/AAAAAAAABwg/mmWLUXF-KFI/s1600/Pantallazo+del+2011-12-10+07%253A50%253A24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="142" src="http://3.bp.blogspot.com/-lcF6ddEips0/TuNWOejNKBI/AAAAAAAABwg/mmWLUXF-KFI/s320/Pantallazo+del+2011-12-10+07%253A50%253A24.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;En la pestaña Señales de la ventana principal Main agregan lo que ven en esta imagen para garantizar que el programa si cierre&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-u743DYc92Ik/TuNWO4fwCNI/AAAAAAAABwo/lmyPmhiLJYI/s1600/Pantallazo+del+2011-12-10+07%253A50%253A35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://1.bp.blogspot.com/-u743DYc92Ik/TuNWO4fwCNI/AAAAAAAABwo/lmyPmhiLJYI/s320/Pantallazo+del+2011-12-10+07%253A50%253A35.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Le damos una señal al boton conectar.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-h33Cms3TOQo/TuNWPuaTEaI/AAAAAAAABww/rZm6H3FIIL8/s1600/Pantallazo+del+2011-12-10+07%253A50%253A47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://2.bp.blogspot.com/-h33Cms3TOQo/TuNWPuaTEaI/AAAAAAAABww/rZm6H3FIIL8/s320/Pantallazo+del+2011-12-10+07%253A50%253A47.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Le damos una señal al boton actualizar.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vBWkSBBrDNo/TuNWQJBDZsI/AAAAAAAABw4/dzyS3rWFpIw/s1600/Pantallazo+del+2011-12-10+07%253A50%253A57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="138" src="http://1.bp.blogspot.com/-vBWkSBBrDNo/TuNWQJBDZsI/AAAAAAAABw4/dzyS3rWFpIw/s320/Pantallazo+del+2011-12-10+07%253A50%253A57.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;Con eso hemos terminado la parte&amp;nbsp;gráfica&amp;nbsp;del programa. Se que lo he explicado algo&amp;nbsp;rápido&amp;nbsp;pero si quieren aprender acerca de GtkBuilder es mejor que revisen mis tutoriales y los lean con calma.&lt;br /&gt;
&lt;br /&gt;
Guardamos el archivo como GeoDLNA.ui y ya terminamos la parte grafica de GTK3&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a crear un archivo en Python.&lt;br /&gt;
&lt;br /&gt;
&lt;div id="iframeDiv9b087246-7574-4c8f-a920-b1aff0322a24" style="display: none; margin: 0px;"&gt;&lt;iframe frameborder="0" id="iframe9b087246-7574-4c8f-a920-b1aff0322a24" src="http://www.blogtrog.com/code.aspx?id=9b087246-7574-4c8f-a920-b1aff0322a24" style="border: 1px solid #e0e0e0; height: 600px; margin: 0px; width: 550px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDiv9b087246-7574-4c8f-a920-b1aff0322a24" style="display: block; margin: 0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;span style="color: blue;"&gt;import&lt;/span&gt;&lt;span style="color: black;"&gt; sys
&lt;/span&gt;&lt;span style="color: blue;"&gt;import&lt;/span&gt;&lt;span style="color: black;"&gt; os

&lt;/span&gt;&lt;span style="color: blue;"&gt;from&lt;/span&gt;&lt;span style="color: black;"&gt; gi.repository &lt;/span&gt;&lt;span style="color: blue;"&gt;import&lt;/span&gt;&lt;span style="color: black;"&gt; Gtk
login &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; os.getenv(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;HOME&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)


&lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt;&lt;span style="color: black;"&gt; main:
    
    &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; os.path.exists(login&lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;/.minidlna/cache&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;) &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; False:
        os.system(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;mkdir -p ~/.minidlna/cache&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
        &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; os.path.isfile(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;/etc/minidlna.conf&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;) &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; True:
            os.system(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;cp /etc/minidlna.conf ~/.minidlna&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
        &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;span style="color: black;"&gt;:
            &lt;/span&gt;&lt;span style="color: blue;"&gt;print&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Please install minidlna with apt-get install minidlna&lt;/span&gt;&lt;span style="color: maroon;"&gt;")&lt;/span&gt;&lt;span style="color: black;"&gt;
        
    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: purple;"&gt;__init__&lt;/span&gt;&lt;span style="color: black;"&gt;(self):
        builder &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; Gtk.Builder()
        builder.add_from_file(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;/usr/share/geodlna/data/gui/GeoDLNA.ui&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;) 
        self.window &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Main&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
        self.bconectar &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Conectar&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
        self.bactualizar &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Actualizar&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)

        dict &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; {&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Main_delete_event&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.quit,
                &lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_conection_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.connect,
                &lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Reloaded_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;:self.reloaded,
                }
        builder.connect_signals(dict)


    &lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando iniciar el servidor miniDLNA&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; connect(self, widget):
        &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; self.bconectar.get_stock_id() &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;gtk-disconnect&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;:
            os.system(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;minidlna -f&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: black;"&gt;login&lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;/.minidlna/minidlna.conf -P&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: black;"&gt;login&lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;/.minidlna/minidlna.pid&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
            self.bconectar.set_stock_id(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;gtk-connect&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
            self.bactualizar.set_sensitive(False)
        &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;span style="color: black;"&gt;:
            self.bconectar.set_stock_id(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;gtk-disconnect&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
            self.bactualizar.set_sensitive(True)    
            os.system(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;pkill minidlna&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
            
    &lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion de actualizar el servidor miniDLNA&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; reloaded(self,widget):
        os.system(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;minidlna -f&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: black;"&gt;login&lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;/.minidlna/minidlna.conf -R&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
        self.bactualizar.set_sensitive(False)            
        self.bconectar.set_stock_id(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;gtk-connect&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
    
    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; quit(self,&lt;/span&gt;&lt;span style="color: black;"&gt;*&lt;/span&gt;&lt;span style="color: black;"&gt;args):
        os.system(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;pkill minidlna&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
        Gtk.main_quit()
        
        
&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Ejecucion del programa&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: purple;"&gt;__name__&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;__main__&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;:
    main()
    Gtk.main()
   &lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;
bt_code_init('9b087246-7574-4c8f-a920-b1aff0322a24');
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Voy a explicar solo algunas cosas.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Importamos GTK3 usando from gi.repository&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Login lo que hace es obtener la ruta hacia el directorio /home/user usando una funcion llamada os.getenv&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;os.path.exists es una&amp;nbsp;función&amp;nbsp;que permite determinar si una ruta a un archivo existe, en caso de que no exista os.system es como usar la terminal dentro de python y le damos crear una carpeta en nuestra /home con el nombre .minidlna.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;os.path.isfile es la forma mas segura que conozco para verificar que un archivo existe, si es verdad entonces os.system que es como correr la terminal dentro de python lo copia de un punto y lo mete dentro de la carpeta que creamos hace poco.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como pueden ver print ahora tiene () y eso se debe a que así funciona print en Python 3.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Definimos el constructor con la ventana y los botones y lo que necesitamos para el programa dentro de la funcion __init__&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La función&amp;nbsp;get_stock_id() lo que hace es determinar el nombre del icono del boton en este caso es desconectar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La función set_stock_id() cambia el icono del&amp;nbsp;botón&amp;nbsp;en este caso por el del icono conectado.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La&amp;nbsp;función&amp;nbsp;set_sensitive(False) hace que un boton quede invalidado y evita que sea pulsable. En este programa en particular si el servidor DLNA esta conectado este no se puede actualizar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Con eso he terminado de explicar las generalidades del programa en python, si las quieren en detallado me dejan&amp;nbsp;algún&amp;nbsp;comentario y les respondo lo que pregunten.&lt;/div&gt;Guardamos lo anterior como geodlna.py&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;NOTA:&lt;/span&gt;&amp;nbsp;SI EL PROGRAMA NO SE EJECUTA ES DEBIDO A LA LINEA 19 QUE FUE MODIFICADA PARA EL PASO DE CONSTRUIR EL .DEB, SI DESEA VER EL PROGRAMA EN FUNCIONAMIENTO&amp;nbsp;CÁMBIELA&amp;nbsp;POR LO SIGUIENTE:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;builder.add_from_file("GeoDLNA.ui")&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;RECUERDE&amp;nbsp;ADICIONALMENTE&amp;nbsp;QUE GeoDLNA.ui DEBE ESTAR EN LA MISMA CARPETA QUE geodlna.py&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a crear el proyecto, ya tenemos dos elementos, un archivo .ui y un archivo .py. Pero tenemos que crear algunas carpetas y una&amp;nbsp;jerarquía&amp;nbsp;de la misma.&lt;br /&gt;
&lt;br /&gt;
Yo siempre hago lo siguiente.&lt;br /&gt;
Creo una carpeta llamada Proyecto, la pueden crear en cualquier lado puede ser el escritorio o donde quieran.&lt;br /&gt;
Dentro de la carpeta Proyecto creo una con el nombre del programa en este caso y usando las reglas de Debian&amp;nbsp;tendríamos&amp;nbsp;que nombrar la carpeta como geodlna-0.1, siempre se nombran así. Nombre de la carpeta-versión, en&amp;nbsp;minúsculas.&lt;br /&gt;
&lt;br /&gt;
Dentro de esta carpeta creamos una nueva carpeta que yo le pongo como nombre data y dentro de esta creo dos más a una la nombro media y a la otra la nombro gui.&lt;br /&gt;
Gráficamente&amp;nbsp;la&amp;nbsp;jerarquía&amp;nbsp;queda de la siguiente forma.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-isCcRNQNfN0/TuNgwOufC9I/AAAAAAAABxA/iAkdg8HyFok/s1600/Pantallazo+del+2011-12-10+08%253A36%253A34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-isCcRNQNfN0/TuNgwOufC9I/AAAAAAAABxA/iAkdg8HyFok/s320/Pantallazo+del+2011-12-10+08%253A36%253A34.png" width="205" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ahora es solo&amp;nbsp;cuestión&amp;nbsp;de llenar las carpetas.&lt;br /&gt;
En la carpeta geodlna-0.1 metemos el archivo de python geodlna.py&lt;br /&gt;
En la carpeta data no metemos nada&lt;br /&gt;
En la carpeta gui metemos el archivo creado en glade GeoDLNA.py&lt;br /&gt;
En la carpeta media metemos un icono para nuestro programa GeoDLNA.png&lt;br /&gt;
&lt;br /&gt;
Falta un&amp;nbsp;único&amp;nbsp;archivo que tenemos que crear y ese el que permite abrir la&amp;nbsp;aplicación&amp;nbsp;cuando damos doble click.&lt;br /&gt;
Abrimos un documento de texto simple y pegamos lo siguiente, que crea ejecutables para nuestros programas en python. Lo voy a explicar pero solo un poco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Version=0.1&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Encoding=UTF-8&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Name=GeoDLNA&lt;/div&gt;&lt;div style="text-align: justify;"&gt;GenericName=Controlador DLNA&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Comment=Permite controlar el demonio minidlna&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Exec=python /usr/geodlna/geodlna.py&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Terminal=false&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Type=Application&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Categories=Gnome;Internet;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Icon=/usr/share/geodlna/data/media/GeoDLNA.png&lt;/div&gt;&lt;div style="text-align: justify;"&gt;StartupNotify=false&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Version queda claro que indica la version en la que se encuentra el programa, Name indica el nombre del programa, nombre&amp;nbsp;genérico&amp;nbsp;es lo que hace el programa.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Exce es la linea que se encarga de buscar y ejecutar el programa, como ven esta apuntando a /usr/geodlna porque&amp;nbsp;ahí&amp;nbsp;es donde quedara el programa cuando tengamos listo el .DEB&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Icon&amp;nbsp;también&amp;nbsp;apunta a donde quedara guardado el icono cuando tengamos listo el .DEB&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Este archivo lo guardamos en la carpeta geodlna-0.1 con el nombre GeoDLNA.desktop&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora si, manos a la obra. Vamos a crear un archivo comprimido con el nombre geodlna_0.1.orig&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Miren que cambiamos la geodolna- por geodlna_ y agregamos .orig&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QTMUvLraRjI/TuNjPbFoN_I/AAAAAAAABxI/0DIleffLRqE/s1600/Pantallazo+del+2011-12-10+08%253A47%253A19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://2.bp.blogspot.com/-QTMUvLraRjI/TuNjPbFoN_I/AAAAAAAABxI/0DIleffLRqE/s400/Pantallazo+del+2011-12-10+08%253A47%253A19.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Este cambio de nombre es porque así lo maneja y lo entiende dh_make de Debian.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Listo ya tenemos las piezas listas, ahora vamos a abrir el terminal, no se asusten que realmente es bastante&amp;nbsp;fácil&amp;nbsp;de hacer.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;sudo apt-get install dh-make&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Eso lo hacemos para tener la herramienta que construye archivos Debianizados.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Ahora nos vamos desde la terminal hasta dentro de la carpeta geodlna-0.1 usando el comando cd&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;En mi caso es algo más o menos así.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;cd /home/geojorg/Escritorio/Proyecto/geodlna-0.1&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Ahora dentro de la carpeta vamos a ejecutar el siguiente comando.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;dh_make -e &lt;b&gt;geojorg@gmail.com&lt;/b&gt; &amp;nbsp; &amp;nbsp; RECUERDEN PONER SU CORREO, EL MISMO DE LA FIRMA DIGITAL&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Cuando el programa se ejecuta nos preguntara si queremos crear un binario singular, un binario indep, multiples binarios, libreria, modulo del kernel o patch para el kernel.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Nuestra respuesta es s (binario singular)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-87pzycbBdQ8/TuNlYRE5vtI/AAAAAAAABxQ/zy4UJK3Oe5c/s1600/Pantallazo+del+2011-12-10+08%253A57%253A19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://4.bp.blogspot.com/-87pzycbBdQ8/TuNlYRE5vtI/AAAAAAAABxQ/zy4UJK3Oe5c/s320/Pantallazo+del+2011-12-10+08%253A57%253A19.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Le damos enter y hemos terminado de debianizar nuestro programa.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;dh_make tiene muchas opciones muy completas pero como estamos haciendo nuestra primera&amp;nbsp;aproximación&amp;nbsp;al programa la verdad no quiero explicar cosas complejas pero no por menos muy interesantes.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: red; font-weight: bold;"&gt;MINI NOTA: &lt;/span&gt;NO CIERREN LA TERMINAL&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Si volvemos a ver las carpetas dentro del programa vemos que se ha creado una nueva que dice Debian. Esta carpeta contiene archivos para crear el empaquetamiento .DEB&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;La abrimos y vamos a borrar todos los archivos que terminen en .ex porque todo el mundo siempre dice que hay que borrarlos y la verdad yo aun no se realmente cual es la funcionalidad de esos archivos, si alguien sabe que me deje el comentario.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Nos deben quedar entonces los siguientes archivos dentro de la carpeta Debian.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-p385TGQK8vc/TuNpM8D4lGI/AAAAAAAABxY/vyQ-NZBAUYo/s1600/Pantallazo+del+2011-12-10+09%253A13%253A28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://4.bp.blogspot.com/-p385TGQK8vc/TuNpM8D4lGI/AAAAAAAABxY/vyQ-NZBAUYo/s400/Pantallazo+del+2011-12-10+09%253A13%253A28.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Vamos a revisarlos y a modificarlos para que cumplan una buena&amp;nbsp;misión.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;CHANGELOG&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;(EN ROJO LO MÁS INTERESANTE Y RELEVANTE EN EL CAMBIO)&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;geodlna (0.1-1) &lt;span class="Apple-style-span" style="color: red;"&gt;oneiric&lt;/span&gt;; urgency=low&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; * Lanzamiento version 0.1&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; -&lt;span class="Apple-style-span" style="color: red;"&gt;Interfaz GTK3 para Minidlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;-- Jorge Guerrero &lt;geojorg@gmail.com&gt; &amp;nbsp;Fri, 09 Dec 2011 22:00:48 -0500&lt;/geojorg@gmail.com&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;CONTROL&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;(EN ROJO LO MÁS INTERESANTE Y RELEVANTE EN EL CAMBIO)&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Source: geodlna&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Section:&lt;span class="Apple-style-span" style="color: red;"&gt; python&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Priority: extra&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Maintainer: Jorge Guerrero &lt;geojorg@gmail.com&gt;&lt;/geojorg@gmail.com&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Build-Depends: debhelper (&amp;gt;= 8.0.0)&lt;span class="Apple-style-span" style="color: red;"&gt;, python (&amp;gt;= 2.7), minidlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Standards-Version: 3.9.2&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Homepage: &amp;lt;&lt;span class="Apple-style-span" style="color: red;"&gt;http://geowworld.blogspot.com&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Package: geodlna&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Architecture: any&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Depends: ${shlibs:Depends}, ${misc:Depends}&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Description: &lt;span class="Apple-style-span" style="color: red;"&gt;GeoDLNA es una implementacion GTK para el demonio Minidlna que se encarga de enviar contenido multimedia a dispositivos que soporten tecnologia uPnP o DLNA.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Como pueden notar en el archivo anterior en donde dice Buil-Depends ponemos las dependencias del programa en este caso depende de Python superior a 2.7 y del demonio minidlna si estos no se encuentran instalados no&amp;nbsp;podrá&amp;nbsp;construir el .deb&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;COPYRIGHT&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;(EN ROJO LO MÁS INTERESANTE Y RELEVANTE EN EL CAMBIO)&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Format: http://dep.debian.net/deps/dep5&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Upstream-Name: &lt;span class="Apple-style-span" style="color: red;"&gt;Geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Source: &amp;lt;&lt;span class="Apple-style-span" style="color: red;"&gt;http://geowworld.blogspot.com&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Files: *&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Copyright: &amp;lt;2011&amp;gt; &lt;jorge geojorg@gmail.com="" guerrero=""&gt;&lt;/jorge&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;License: &amp;lt;&lt;span class="Apple-style-span" style="color: red;"&gt;GPL v3&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Copyright: 2011 Jorge Guerrero &lt;geojorg@gmail.com&gt;&lt;/geojorg@gmail.com&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; This program is free software: you can redistribute it and/or modify&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; it under the terms of the GNU General Public License as published by&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; the Free Software Foundation, either version 3 of the License, or&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; (at your option) any later version.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; This program is distributed in the hope that it will be useful,&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; GNU General Public License for more details.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; You should have received a copy of the GNU General Public License&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; along with this program. &amp;nbsp;If not, see &lt;http: licenses="" www.gnu.org=""&gt;.&lt;/http:&gt;&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;DIRS&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-weight: normal; text-align: center;"&gt;&lt;b&gt;(EN ROJO LO MÁS INTERESANTE Y RELEVANTE EN EL CAMBIO)&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-weight: normal; text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;usr/geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;usr/share/geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;usr/share/applications&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Este archivo usualmente esta&amp;nbsp;vació y se puede dejar así pero a mi me gusta simplificar otro archivo y por eso creo este donde pongo los directorios que se crearan o buscaran.&lt;br /&gt;
&lt;br /&gt;
Llegamos ahora al archivo más importante de todos RULES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;RULES&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Este archivo es el más complejo y el mas&amp;nbsp;difícil&amp;nbsp;de tratar, encontraran en internet muchos debates de como hacerlo, que existen programas que lo hacen y aplicaciones para construirlo y&amp;nbsp;demás, pero yo prefiero crearlo desde cero y lo explico paso a paso y creo que me ha funcionado con 6 o 7 programas en python con distinto grado de complejidad.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Cuando uno construye .deb o sources de paquetes que ya existen por ejemplo de totem o empathy o cualquier programa que se imaginen ya existente este archivo tiene una forma como esta:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;%:&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh $@&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Para esos caso ese archivo solo se deja con eso y debuild se encarga de construirlo usando ./configure make y make install y esas cosas complicadas o incluso autogen con las que no queremos lidiar.&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;En el caso de PYTHON se pueden usar scripts complejos o programas para crearlo pero aquí esta mi tip de hoy, lo mas relevante en ROJO y lo que usualmente tenemos que cambiar cuando vamos a&amp;nbsp;construir&amp;nbsp;un nuevo programa de Python.&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;#!/usr/bin/make -f&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# -*- makefile -*-&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Uncomment this to turn on verbose mode.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;#export DH_VERBOSE=1&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;configure: configure-stamp&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;configure-stamp:&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testdir&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;touch configure-stamp&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;build: build-stamp&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;build-stamp: configure-stamp&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testdir&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;touch build-stamp&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;clean:&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testdir&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testroot&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;rm -f build-stamp configure-stamp&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_clean&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;install: build&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testdir&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testroot&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_clean -k&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_installdirs&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;#Se pone el nombre que&amp;nbsp;tendrá&amp;nbsp;la carpeta que&amp;nbsp;tendrá&amp;nbsp;al programa dentro.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;mkdir -p $(CURDIR)/debian/&lt;span class="Apple-style-span" style="color: red;"&gt;geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cp &lt;span class="Apple-style-span" style="color: red;"&gt;geodlna.py&lt;/span&gt; $(CURDIR)/debian/&lt;span class="Apple-style-span" style="color: red;"&gt;geodlna/usr/geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;#Crea una carpeta para los datos y copia la actual de datos a esa&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;mkdir -p $(CURDIR)/debian/&lt;span class="Apple-style-span" style="color: red;"&gt;geodlna/usr/share/geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cp -r &lt;span class="Apple-style-span" style="color: red;"&gt;data&lt;/span&gt;/ $(CURDIR)/debian/&lt;span class="Apple-style-span" style="color: red;"&gt;geodlna/usr/share/geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;#Copia el archivo .dekstop ejecutable&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cp &lt;span class="Apple-style-span" style="color: red;"&gt;GeoDLNA.desktop&lt;/span&gt; $(CURDIR)/debian/&lt;span class="Apple-style-span" style="color: red;"&gt;geodlna/usr/share/applications&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;#Instalando los archivos de documentacion o ayuda (no aplica para este programa)&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# mkdir -p $(CURDIR)/debian/geodlna/usr/share/doc/geodlna&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# cp readme.txt $(CURDIR)/debian/usr/share/doc/geodlna/readme.txt&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Aquí se puede definir si se desean crear multiples binarios 32 bits o 64 bits, por defecto crea para nuestra arquitectura actual&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;binary-indep: build install&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Build architecture-dependent files here.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;binary-arch: build install&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testdir&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_testroot&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_installchangelogs&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_installdocs&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_installexamples&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_install&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installmenu&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installdebconf&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installlogrotate&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installemacsen&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installpam&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installmime&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installinit&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installcron&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_installinfo&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_installman&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_link&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_strip&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_compress&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_fixperms&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_perl&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_python&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;# dh_makeshlibs&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_installdeb&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_shlibdeps&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_gencontrol&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_md5sums&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dh_builddeb&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;binary: binary-indep binary-arch&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;.PHONY: build clean binary-indep binary-arch binary install configure&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;Vamos a terminar, se que deben estar cansados como yo en este punto pero ya casi terminamos&lt;br /&gt;
&lt;br /&gt;
Volvemos a la terminal y ejecutamos&lt;br /&gt;
&lt;br /&gt;
debuild&lt;br /&gt;
&lt;br /&gt;
Si dice que no existe lo instalan con:&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install debuild&lt;br /&gt;
&lt;br /&gt;
El programa en un punto nos va a pedir nuestra contraseña para la clava PGP y con eso terminara. Mostrando un archivo .deb como resultado. En este punto ya cumplimos la primera mision del tutorial que era crear un .deb.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QmWQTCvJVWM/TuNyFQU0HzI/AAAAAAAABxg/NfGGZ-7UBYY/s1600/Pantallazo+del+2011-12-10+09%253A48%253A31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://2.bp.blogspot.com/-QmWQTCvJVWM/TuNyFQU0HzI/AAAAAAAABxg/NfGGZ-7UBYY/s400/Pantallazo+del+2011-12-10+09%253A48%253A31.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;El procedimiento anterior es solo para crear .deb pero si nuestra&amp;nbsp;misión&amp;nbsp;es agregar archivos a un repositorio PPA entonces antes de ejecutar en el terminal:&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;como debuild&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Tenemos que ejecutar&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;debuild -S&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Con eso creara las fuentes del programa y estas son las que le importan a Launchpad. Para subirlo al ppa simplemente desde la terminal le damos&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;dput ppa:geojorg/geo-minidlna geodlna_0.1-1_source.changes&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Donde&amp;nbsp;ppa:geojorg/geo-minidlna es el nombre que le pongamos a nuestro respositorio, con esto hemos terminado, ya launchpad se encarga de enviarnos un correo confirmando y dentro de unas 10 a 12 horas crea los paquetes deb para 32 bits y 64 bits de oneiric.&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Cualquier duda adicional en los comentarios, gracias.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-7275317297847022969?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/12/tutorial-para-crear-un-deb-y-subirlo-tu.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://3.bp.blogspot.com/-VGF3_e0WkPg/TuNWN0sY8tI/AAAAAAAABwY/XIkoJp0jH-E/s72-c/Pantallazo+del+2011-12-10+07%253A50%253A12.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-8224342451463920484</guid><pubDate>Thu, 08 Dec 2011 16:20:00 +0000</pubDate><atom:updated>2011-12-08T18:47:53.471-05:00</atom:updated><title>Tutorial para Crear un PPA</title><description>&lt;div style="text-align: justify;"&gt;Recientemente he comenzado un proyecto bastante pequeño de una nueva&amp;nbsp;aplicación&amp;nbsp;en Python de la que&amp;nbsp;quizás&amp;nbsp;comente en el futuro o hasta escriba un Tutorial, pero el tema hoy es como crear un PPA.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Seguramente ya muchos saben que Ubuntu usa algo llamado PPA, pero que es y como funciona es cosa que a veces algunas personas ignoran. PPA (Personal Package Archive) es&amp;nbsp;básicamente&amp;nbsp;un repositorio de paquetes personales que permite usarlo para distribuir aplicaciones a usuarios de Ubuntu o Debian.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como funciona ?. Bueno&amp;nbsp;básicamente&amp;nbsp;es bastante simple lo que hacer es tomar archivos fuentes y convertirlos en .deb ya sea de 32 bits o 64 bits para distribuirlos. Suena interesante y hasta&amp;nbsp;fácil, pero la&amp;nbsp;cuestión&amp;nbsp;es que no existe en internet&amp;nbsp;documentación&amp;nbsp;SIMPLE que permita a un usuario promedio que esta comenzando a crear programas usar un PPA, la de Ubuntu es linda pero para desarrolladores y&amp;nbsp;usuarios&amp;nbsp;muy avanzados y la del resto del internet es tan compleja que me he propuesto mostrarlo de forma muy facil.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Por eso estamos aquí&amp;nbsp;explicando&amp;nbsp;de forma SIMPLE como crear un ppa y subir archivos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Que vamos a necesitar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Thunderbird (Programa de Correo Electronico)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Enigmail (Extension de Thunderbird)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Seahorse (Programa de Contraseñas)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ubuntu Open ID (Si tienes Ubuntu One ya tienes Open ID de Ubuntu)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero que tenemos que hacer es es crear una contraseña PGP o mas conocida como llave publica para ello escribimos Contraseña o Seahorse en el Dash.&lt;br /&gt;
Como se ve en la imagen a&amp;nbsp;continuación.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-O16F3d1tyao/TuEHgbIeYHI/AAAAAAAABvI/Vw0roVPVy4s/s1600/Pantallazo+del+2011-12-08+13%253A49%253A22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="209" src="http://4.bp.blogspot.com/-O16F3d1tyao/TuEHgbIeYHI/AAAAAAAABvI/Vw0roVPVy4s/s320/Pantallazo+del+2011-12-08+13%253A49%253A22.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Cuando tengamos abierto el programa le vamos a dar en nueva y seleccionamos Clave PGP que como dice en la imagen es usada para cifrar correos y archivos.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-RTgSUXsvfy0/TuEHhKqzlsI/AAAAAAAABvQ/cTCJpAXPpDc/s1600/Pantallazo+del+2011-12-08+13%253A50%253A40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://1.bp.blogspot.com/-RTgSUXsvfy0/TuEHhKqzlsI/AAAAAAAABvQ/cTCJpAXPpDc/s320/Pantallazo+del+2011-12-08+13%253A50%253A40.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ahora creamos la clave poniendo el nombre y el correo&amp;nbsp;electrónico&amp;nbsp;que debe ser el mismo que tenemos registrado en Ubuntu One o Launchpad. Le damos crear y el proceso arranca, este toma&amp;nbsp;algún&amp;nbsp;tiempo&amp;nbsp;así&amp;nbsp;que hay que tener paciencia.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ID5uigCi7ko/TuEHhpTB0cI/AAAAAAAABvY/gIIb-HUjLWQ/s1600/Pantallazo+del+2011-12-08+13%253A51%253A22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="164" src="http://2.bp.blogspot.com/-ID5uigCi7ko/TuEHhpTB0cI/AAAAAAAABvY/gIIb-HUjLWQ/s320/Pantallazo+del+2011-12-08+13%253A51%253A22.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
El siguiente paso es ir a la pestaña de mis claves personales y podemos notar que la clave ya fue creada con&amp;nbsp;éxito.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tvXYLR-F6Zs/TuEJIVu5fJI/AAAAAAAABvg/XMngWNLH3N0/s1600/Pantallazo+del+2011-12-08+13%253A55%253A48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-tvXYLR-F6Zs/TuEJIVu5fJI/AAAAAAAABvg/XMngWNLH3N0/s320/Pantallazo+del+2011-12-08+13%253A55%253A48.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Después&amp;nbsp;vamos al&amp;nbsp;menú&amp;nbsp;y sincronizamos y publicamos la clave. Esto lo haremos en el servidor de Ubuntu, aunque existen muchos otros servidores&amp;nbsp;públicos&amp;nbsp;para almacenar claves.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-okEvHVWPQK8/TuEJIwhTPkI/AAAAAAAABvo/-JNEwpnpqlc/s1600/Pantallazo+del+2011-12-08+13%253A57%253A24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://1.bp.blogspot.com/-okEvHVWPQK8/TuEJIwhTPkI/AAAAAAAABvo/-JNEwpnpqlc/s320/Pantallazo+del+2011-12-08+13%253A57%253A24.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;En esta parte seleccionamos Ubuntu ya que queremos vincular la clave con Launchpad mas adelante. Cerramos esta ventana y le damos en la&amp;nbsp;opción&amp;nbsp;sincronizar.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NXdClv-Jiek/TuEJJmnxRoI/AAAAAAAABvw/yWXNDfNS99c/s1600/Pantallazo+del+2011-12-08+13%253A58%253A10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://3.bp.blogspot.com/-NXdClv-Jiek/TuEJJmnxRoI/AAAAAAAABvw/yWXNDfNS99c/s320/Pantallazo+del+2011-12-08+13%253A58%253A10.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ahora ya nuestra clave es publica y esta dentro del sistema de almacenamiento de claves de Ubuntu, lo que mas nos interesa de todo este proceso es obtener la huella de la clave esta huella si es privada y no debe ser mostrada para garantizar la seguridad esta huella la usaremos dentro de la pagina de Launchpad, como voy a mostrar a&amp;nbsp;continuación.&lt;br /&gt;
&lt;br /&gt;
Primero obtener la huella.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bdodFA_qc3E/TuELklYhZYI/AAAAAAAABv4/nfnptmfgT3M/s1600/Pantallazo+del+2011-12-08+14%253A05%253A33.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/-bdodFA_qc3E/TuELklYhZYI/AAAAAAAABv4/nfnptmfgT3M/s320/Pantallazo+del+2011-12-08+14%253A05%253A33.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
La copiamos y nos vamos para la pagina de Launchpad a firmar el acuerdo de conducta que lo pueden abrir aquí.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="https://launchpad.net/codeofconduct"&gt;LAUNCHPAD CODE OF CONDUCT&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Esto nos lleva a la siguiente pagina. Donde le vamos a dar registrar una nueva llave Publica open PGP.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tjzWCXjFRec/TuENX5qFpYI/AAAAAAAABwA/VQtUa3L9v_Q/s1600/Pantallazo+del+2011-12-08+14%253A15%253A15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://3.bp.blogspot.com/-tjzWCXjFRec/TuENX5qFpYI/AAAAAAAABwA/VQtUa3L9v_Q/s320/Pantallazo+del+2011-12-08+14%253A15%253A15.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Cuando hemos ingresado metemos la huella que hemos copiado anteriormente y la importamos, como ya esta es publica nos enviara un correo&amp;nbsp;electrónico.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-08rrwNHJM0o/TuENYZIaK3I/AAAAAAAABwI/Vo29Um_M2I4/s1600/Pantallazo+del+2011-12-08+14%253A15%253A36.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" src="http://2.bp.blogspot.com/-08rrwNHJM0o/TuENYZIaK3I/AAAAAAAABwI/Vo29Um_M2I4/s320/Pantallazo+del+2011-12-08+14%253A15%253A36.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ahora abrimos el Thunderbird al que ya le debemos haber instalado Enigmail que permite descifrar mensajes&amp;nbsp;codificados. Este mensaje nos envia a un link donde finalmente confirma todo y hemos terminado la primera parte.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QCGZAYphUAc/TuFLN1V1jLI/AAAAAAAABwQ/HHlmmT89Wd8/s1600/Pantallazo+del+2011-12-08+18%253A37%253A48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="304" src="http://2.bp.blogspot.com/-QCGZAYphUAc/TuFLN1V1jLI/AAAAAAAABwQ/HHlmmT89Wd8/s320/Pantallazo+del+2011-12-08+18%253A37%253A48.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Cuando le damos en descifrar nos pregunta la contraseña y el correo deja de estar codificado y nos da un link al cual debemos entrar.&lt;br /&gt;
&lt;br /&gt;
Ahora bajamos el&amp;nbsp;código&amp;nbsp;de conducta y lo firmamos con la firma digital, en Launchpad&amp;nbsp;están&amp;nbsp;los pasos.&lt;br /&gt;
&lt;br /&gt;
Con esto terminamos el procedimiento inicial para crear un repositorio, ya podemos ir a launchpad y decirle que cree un nuevo repositorio con el nombre que queramos.&lt;br /&gt;
&lt;br /&gt;
En la segunda parte de este tutorial comentare como crear archivos fuente y como subirlos a launchpad para que este cree los .deb en 32 bits y 64 bits.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-8224342451463920484?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/12/tutorial-crear-un-ppa.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://4.bp.blogspot.com/-O16F3d1tyao/TuEHgbIeYHI/AAAAAAAABvI/Vw0roVPVy4s/s72-c/Pantallazo+del+2011-12-08+13%253A49%253A22.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-5796713211343340303</guid><pubDate>Thu, 10 Nov 2011 13:37:00 +0000</pubDate><atom:updated>2011-11-10T08:37:05.888-05:00</atom:updated><title>Programa "Hola Mundo" en Vala</title><description>Este es mi primer intento de programar algo grafico en vala.&lt;br /&gt;
&lt;br /&gt;
Vala es un lenguaje de programación creado con el objetivo de acercar las características de los lenguajes modernos a C, sin requisitos adicionales de tiempo de ejecución y con pocos costos, centrado en los objetos de la biblioteca GObject.&lt;br /&gt;
&lt;br /&gt;
Eso es lo que dice la Wikipedia.&lt;br /&gt;
&lt;br /&gt;
Para comenzar en Ubuntu&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo apt-get install valac libgtk-3-dev&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Y con eso sera suficiente. Ahora a programar el Hola Mundo en Vala&lt;br /&gt;
&lt;br /&gt;
&lt;pre dir="ltr" id="CA-704999a8e1a4a23953d2d078b9930920d0df2151" lang="en" style="background-attachment: initial; background-clip: initial; background-color: #f3f5f7; background-image: initial; background-origin: initial; border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; font-family: courier, monospace; padding-bottom: 10pt; padding-left: 10pt; padding-right: 10pt; padding-top: 10pt; white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="line"&gt;&lt;span class="ResWord2" style="color: #0080ff; font-weight: bold;"&gt;using&lt;/span&gt; &lt;span class="ID"&gt;Gtk&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span class="ResWord" style="color: #a00000;"&gt;int&lt;/span&gt; &lt;span class="ID"&gt;main&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="Special" style="color: blue;"&gt;string&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;[&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;]&lt;/span&gt; &lt;span class="ID"&gt;args&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;Gtk&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;init&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="ID"&gt;ref&lt;/span&gt; &lt;span class="ID"&gt;args&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;var&lt;/span&gt; &lt;span class="ID"&gt;window&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;=&lt;/span&gt; &lt;span class="ResWord" style="color: #a00000;"&gt;new&lt;/span&gt; &lt;span class="ID"&gt;Window&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;window&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;title&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;=&lt;/span&gt; &lt;span class="String" style="color: #004080;"&gt;"Mi Primer Programa"&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;window&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;border_width&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;=&lt;/span&gt; &lt;span class="Number" style="color: #0080c0;"&gt;1&lt;/span&gt;&lt;span class="Number" style="color: #0080c0;"&gt;0&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;window&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;window_position&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;=&lt;/span&gt; &lt;span class="ID"&gt;WindowPosition&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;CENTER&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;window&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;set_default_size&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="Number" style="color: #0080c0;"&gt;32&lt;/span&gt;&lt;span class="Number" style="color: #0080c0;"&gt;0&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;,&lt;/span&gt; &lt;span class="Number" style="color: #0080c0;"&gt;8&lt;/span&gt;&lt;span class="Number" style="color: #0080c0;"&gt;0&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;window&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;destroy&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;connect&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="ID"&gt;Gtk&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;main_quit&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;var&lt;/span&gt; &lt;span class="ID"&gt;button&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;=&lt;/span&gt; &lt;span class="ResWord" style="color: #a00000;"&gt;new&lt;/span&gt; &lt;span class="ID"&gt;Button&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;with_label&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="String" style="color: #004080;"&gt;"Hola Mundo!"&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;button&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;clicked&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;connect&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;=&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;&amp;gt;&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;        &lt;span class="ID"&gt;button&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;label&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;=&lt;/span&gt; &lt;span class="String" style="color: #004080;"&gt;"Yeaihhh"&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="SPChar" style="color: #0000c0;"&gt;}&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;window&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;add&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="ID"&gt;button&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;window&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;show_all&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ID"&gt;Gtk&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;.&lt;/span&gt;&lt;span class="ID"&gt;main&lt;/span&gt; &lt;span class="SPChar" style="color: #0000c0;"&gt;(&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;)&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;    &lt;span class="ResWord" style="color: #a00000;"&gt;return&lt;/span&gt; &lt;span class="Number" style="color: #0080c0;"&gt;0&lt;/span&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span class="SPChar" style="color: #0000c0;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
Con esto se termina de hacer el programa.&lt;br /&gt;
Lo guardo en alguna carpeta con el nombre HolaMundo.vala&lt;br /&gt;
Lo compilo con el comando&amp;nbsp;valac --pkg gtk+-3.0 HolaMundo.vala&lt;br /&gt;
Finalmente ejecuto el programa con ./HolaMundo&lt;br /&gt;
&lt;br /&gt;
Voy a explicar un poco la sintax&lt;br /&gt;
&lt;br /&gt;
using Gtk; es la declaracion de que es un programa en gtk&lt;br /&gt;
int main (string[] args) { es la&amp;nbsp;declaración&amp;nbsp;inicial del programa.&lt;br /&gt;
var window = new Window (); crea una ventana nueva&lt;br /&gt;
window.title = "Mi Primer Programa"; Le pone el titulo al programa&lt;br /&gt;
&lt;br /&gt;
Estos tres elementos del&amp;nbsp;código&amp;nbsp;lo que hacen es establecer un borde a la ventana, posicionarla en el centro de la pantalla y darle un tamaño de 320 x 80&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
window.border_width = 10;&lt;br /&gt;
window.window_position = WindowPosition.CENTER;&lt;br /&gt;
window.set_default_size (320, 80);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crea un boton con el nombre Hola Mundo, crea una&amp;nbsp;conexión&amp;nbsp;que permite al clickerlo cambiar el nombre del boton.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var button = new Button.with_label ("Hola Mundo!");&lt;br /&gt;
button.clicked.connect (() =&amp;gt; {&lt;br /&gt;
button.label = "Yeaihhh !";&lt;br /&gt;
&lt;br /&gt;
Lo&amp;nbsp;demás&amp;nbsp;es bastante obvio, crea una ventana visible y finalmente retorna el programa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-5796713211343340303?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/11/programa-hola-mundo-en-vala.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-4919348322553997402</guid><pubDate>Fri, 04 Nov 2011 14:26:00 +0000</pubDate><atom:updated>2011-11-04T09:46:36.877-05:00</atom:updated><title>Tutorial de Python y GTK3 en PDF</title><description>Aquí publico la primera&amp;nbsp;versión&amp;nbsp;del tutorial de Python y GTK3 para crear una&amp;nbsp;aplicación&amp;nbsp;simple. Por ahora esta es la version 1.0 Pero espero mejorarlo y&amp;nbsp;seguiré&amp;nbsp;cargando el archivo y&amp;nbsp;actualizando&amp;nbsp;este post.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Para descargar solo deben presionar sobre la imagen.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://ubuntuone.com/6VpMV6VHgHiRwInH7EW9fq"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-_JrkWpJ5Rpo/TprxywlAg-I/AAAAAAAABtk/yBrkz4_H1Po/s320/Pantallazo+del+2011-10-16+10%253A00%253A14.png" width="303" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Actualización:&lt;/b&gt; &lt;span class="Apple-style-span" style="color: red;"&gt;4 Noviembre 2011&lt;/span&gt; - He publicado mejoras en el&amp;nbsp;código&amp;nbsp;del tutorial, usando estilo de colores de python y nuevos hipervinculos, he agregado desarrollo del mismo.&lt;span id="goog_1555448789"&gt;&lt;/span&gt;&lt;span id="goog_1555448790"&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-4919348322553997402?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/10/tutorial-de-python-y-gtk3-en-pdf.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://1.bp.blogspot.com/-_JrkWpJ5Rpo/TprxywlAg-I/AAAAAAAABtk/yBrkz4_H1Po/s72-c/Pantallazo+del+2011-10-16+10%253A00%253A14.png" height="72" width="72" /><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-8193917847028968526</guid><pubDate>Thu, 03 Nov 2011 21:14:00 +0000</pubDate><atom:updated>2011-11-03T16:14:35.981-05:00</atom:updated><title>Usando Teamviewer en Ubuntu</title><description>A veces cuando se requiere realizar alguna&amp;nbsp;asesoría&amp;nbsp;con un equipo a distancia es buena idea tener a la mano una herramienta como Teamviewer que permite tomar el control del equipo a distancia de forma&amp;nbsp;ágil.&lt;br /&gt;
&lt;br /&gt;
Realizar esto es realmente muy facil.&lt;br /&gt;
&lt;br /&gt;
Lo primero es ir a la pagina de descarga de Teamviewer &lt;a href="http://www.teamviewer.com/es/download/index.aspx"&gt;aquí&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
En esta pagina descargamos el archivo .tar.gz que es el ultimo que aparece en la lista para linux. Este es un ejecutable, es decir que se ejecuta sin instalarse.&lt;br /&gt;
&lt;br /&gt;
Después&amp;nbsp;de descargado lo extraemos en&amp;nbsp;algún&amp;nbsp;lado&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ed9F4BJM3vo/TrMDL29Ds3I/AAAAAAAABuk/TfA5q3Qsi4s/s1600/Pantallazo+del+2011-11-03+16%253A05%253A22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-ed9F4BJM3vo/TrMDL29Ds3I/AAAAAAAABuk/TfA5q3Qsi4s/s320/Pantallazo+del+2011-11-03+16%253A05%253A22.png" width="288" /&gt;&lt;/a&gt;&lt;/div&gt;Abrimos la carpeta que se crea&amp;nbsp;después&amp;nbsp;de&amp;nbsp;extraído&amp;nbsp;el contenido. Y debemos ver algo similar a lo que se ve en la imagen inferior.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-McixEFprp5E/TrMDMboB91I/AAAAAAAABus/gFOJhpOn_0M/s1600/Pantallazo+del+2011-11-03+16%253A06%253A59.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://1.bp.blogspot.com/-McixEFprp5E/TrMDMboB91I/AAAAAAAABus/gFOJhpOn_0M/s320/Pantallazo+del+2011-11-03+16%253A06%253A59.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Simplemente le damos enter o doble click en el archivo teamviewer y le damos en la&amp;nbsp;opción&amp;nbsp;ejecutar.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-m0PERZaXYho/TrMDMz5XgUI/AAAAAAAABu0/KbEtmAMWJHc/s1600/Pantallazo+del+2011-11-03+16%253A07%253A35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="121" src="http://4.bp.blogspot.com/-m0PERZaXYho/TrMDMz5XgUI/AAAAAAAABu0/KbEtmAMWJHc/s320/Pantallazo+del+2011-11-03+16%253A07%253A35.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Con esto es suficiente, se abre el programa. Y ya lo podemos usar, le damos nuestro id y contraseña a quien requiera tener acceso a nuestro pc o al contrario. Recuerden que la contraseña cambia cada vez que se inicia el programa.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-hcYHD7rShrE/TrMDNN_xlSI/AAAAAAAABu8/3_-nQtPei9o/s1600/Pantallazo+del+2011-11-03+16%253A08%253A48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="http://1.bp.blogspot.com/-hcYHD7rShrE/TrMDNN_xlSI/AAAAAAAABu8/3_-nQtPei9o/s320/Pantallazo+del+2011-11-03+16%253A08%253A48.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/2738913432425957583-8193917847028968526?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/11/usando-teamviewer-en-ubuntu.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://1.bp.blogspot.com/-ed9F4BJM3vo/TrMDL29Ds3I/AAAAAAAABuk/TfA5q3Qsi4s/s72-c/Pantallazo+del+2011-11-03+16%253A05%253A22.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-1913027938497803882</guid><pubDate>Tue, 25 Oct 2011 15:52:00 +0000</pubDate><atom:updated>2011-10-25T10:53:02.844-05:00</atom:updated><title>Scripts que no deben Faltar en tu Google Chrome</title><description>&lt;div style="text-align: justify;"&gt;Aunque&amp;nbsp;últimamente&amp;nbsp;Chrome no es mi navegador por defecto, a veces lo uso para algunas cosas.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Aquí les voy a contar de algunos scripts que me gusta usar, aclaro que no son extensiones, funcionan como tal pero son realmente scripts para mejorar algunas paginas o para hacer algunas cosas de una manera mas simple.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;El primero que les voy a mostrar lo que hace es que agrega un boton de Descargar en la pagina de Youtube.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mhzjGojPVBk/TqbTMc_KapI/AAAAAAAABt0/iIr7HzVxH7E/s1600/Pantallazo+del+2011-10-25+10%253A15%253A54.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-mhzjGojPVBk/TqbTMc_KapI/AAAAAAAABt0/iIr7HzVxH7E/s400/Pantallazo+del+2011-10-25+10%253A15%253A54.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Como pueden ver aparece un&amp;nbsp;botón&amp;nbsp;que permite descargar el&amp;nbsp;vídeo&amp;nbsp;en diferentes formatos y distinta calidad en la pagina.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Para instalar este scripts solamente procede con el siguiente&amp;nbsp;botón.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://userscripts.org/scripts/source/62634.user.js"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-6UuiFx5Yp18/TqbTputv5fI/AAAAAAAABt8/BeUVxd6jAis/s1600/InstallIcon.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;El segundo Script que me gusta mucho es para un servicio de&amp;nbsp;música&amp;nbsp;que se llama Grooveshark y que seguramente mas de uno ha escuchado alguna vez. Este Script se encarga de eliminar la publicidad y crea un panel donde aparecen las letras de las canciones.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-J_RjqlFyM1I/TqbUkjujrgI/AAAAAAAABuE/Q0K4oshZ7Ns/s1600/Pantallazo+del+2011-10-25+10%253A22%253A55.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-J_RjqlFyM1I/TqbUkjujrgI/AAAAAAAABuE/Q0K4oshZ7Ns/s400/Pantallazo+del+2011-10-25+10%253A22%253A55.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://userscripts.org/scripts/source/93354.user.js"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-6UuiFx5Yp18/TqbTputv5fI/AAAAAAAABt8/BeUVxd6jAis/s1600/InstallIcon.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El siguiente Script se llama Tapermonkey y permite instalar scripts aun mas avanzados dentro de Chrome, para poder mostrarle que hace el siguiente script tienen que instalar primero esta&amp;nbsp;extensión&amp;nbsp;desde la pagina oficial de &lt;a href="https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo"&gt;Chrome Store&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Después&amp;nbsp;de que instalen, si les gusta la&amp;nbsp;música&amp;nbsp;y descargan contenido, este scripts les va a encantar, es para la pagina Musicuo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo que hace es quitar la publicidad y agregar un boton de descarga que permite obtener cualquier&amp;nbsp;música&amp;nbsp;que se este reproduciendo.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-BrSiT2uGZbU/TqbbUDRDfZI/AAAAAAAABuM/bRJmHylcgPA/s1600/Pantallazo+del+2011-10-25+10%253A47%253A17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-BrSiT2uGZbU/TqbbUDRDfZI/AAAAAAAABuM/bRJmHylcgPA/s400/Pantallazo+del+2011-10-25+10%253A47%253A17.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://userscripts.org/scripts/show/110451"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-6UuiFx5Yp18/TqbTputv5fI/AAAAAAAABt8/BeUVxd6jAis/s1600/InstallIcon.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Espero los disfruten.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-1913027938497803882?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/10/scripts-que-no-deben-faltar-en-tu.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://4.bp.blogspot.com/-mhzjGojPVBk/TqbTMc_KapI/AAAAAAAABt0/iIr7HzVxH7E/s72-c/Pantallazo+del+2011-10-25+10%253A15%253A54.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-5972486427854854647</guid><pubDate>Mon, 24 Oct 2011 16:53:00 +0000</pubDate><atom:updated>2011-10-24T11:54:30.166-05:00</atom:updated><title>Como clonar un Disco Duro en Linux</title><description>&lt;div style="text-align: justify;"&gt;Alguien me ha preguntado recientemente como hacer para clonar un disco duro en linux. La&amp;nbsp;situación&amp;nbsp;se da porque a la persona que me pregunta le han enviado 12 equipos con la misma&amp;nbsp;configuración&amp;nbsp;de hardware y la verdad no quiere pasar por instalar RHEL 6 para cada uno de los equipos, ya que se requieren trabajando inmediatamente.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hoy les voy a presentar una forma muy simple, aunque existen formas&amp;nbsp;gráficas, como usar Deja Dup o Clonezilla o hasta Ghost e incluso OneConf&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En este caso vamos a usar el comando dd que existe en todas las distribuciones linux.&lt;br /&gt;
&lt;br /&gt;
Lo primero sera tener un disco secundario conectado al equipo.&lt;br /&gt;
Lo normal es que el disco principal se llame /dev/sda y el disco duro secundario se llama /dev/sdb, ya que en linux las unidades&amp;nbsp;físicas&amp;nbsp;montadas se nombra en orden&amp;nbsp;alfabético menos en el caso de la letra l y ñ.&lt;br /&gt;
&lt;br /&gt;
El comando a ejecutar es el siguiente. Este se encarga de hacer una copia fiel del disco principal en el secundario.&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; margin-bottom: 10px; max-height: 600px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; vertical-align: baseline; width: auto;"&gt;&lt;code style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;dd if=/dev/sda of=/dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Como pueden ver es bastante&amp;nbsp;fácil&amp;nbsp;de realizar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-5972486427854854647?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/10/como-clonar-un-disco-duro-en-linux.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-6761241702954955493</guid><pubDate>Thu, 13 Oct 2011 13:33:00 +0000</pubDate><atom:updated>2011-10-13T08:33:42.394-05:00</atom:updated><title>Receta para Instalar Ubuntu 11.10</title><description>Ha sido liberado Ubuntu 11.10 para que lo&amp;nbsp;pruebes, te enamores y si quieres lo instales.&lt;br /&gt;
&lt;br /&gt;
Es por eso que voy a escribir la receta para poder tenerlo en cualquier equipo.&lt;br /&gt;
&lt;br /&gt;
Ingredientes.&lt;br /&gt;
1. &lt;a href="http://www.ubuntu.com/download/ubuntu/download"&gt;Descargar Ubuntu.&lt;/a&gt;&amp;nbsp;Puedes descargarlo en 32 bits o 64 bits.&lt;br /&gt;
2. Tener a la mano una USB, un CD o un DVD&lt;br /&gt;
&lt;br /&gt;
Si usas una USB y estas desde Windows.&amp;nbsp;Requieres &lt;a href="http://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer-1.8.6.6.exe"&gt;este&lt;/a&gt; programa.&lt;br /&gt;
&lt;br /&gt;
Si usas CD o DVD es simplemente quemarlo usando cualquier programa que&amp;nbsp;conozcas&amp;nbsp;para quemar&amp;nbsp;imágenes.&lt;br /&gt;
&lt;br /&gt;
Con los ingredientes listos vamos a crear una&amp;nbsp;versión&amp;nbsp;para USB.&lt;br /&gt;
Lo primero es seleccionar la&amp;nbsp;versión,&amp;nbsp;en este caso Ubuntu 11.10&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://www.ubuntu.com/sites/www.ubuntu.com/files/active/pen-drive-1.jpg" /&gt;&lt;br /&gt;
&lt;br /&gt;
Después&amp;nbsp;en el segundo campo buscamos la imagen que ya descargamos antes.&lt;br /&gt;
&lt;img src="http://www.ubuntu.com/sites/www.ubuntu.com/files/active/pen-drive-3.jpg" /&gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente seleccionamos cual es la unidad USB.&lt;br /&gt;
&lt;img src="http://www.ubuntu.com/sites/www.ubuntu.com/files/active/pen-drive-4.jpg" /&gt;&lt;br /&gt;
&lt;br /&gt;
Y le damos en crear y listo ya tenemos una usb con Ubuntu listo para ser probado o si gustas instalado.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo segundo es cuando arranques el computador presiones la tecla ESC, F10, F11 O F12&amp;nbsp;según&amp;nbsp;la BIOS te tu computador para que de esta forma puedas decirle que arranque desde la USB.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Los&amp;nbsp;demás&amp;nbsp;es pan comido, puede darle &lt;b&gt;Probar Ubuntu sin Instalar&lt;/b&gt;&amp;nbsp;esta&amp;nbsp;opción&amp;nbsp;te permite&amp;nbsp;darle una mirada a todo el sistema operativo sin instalar absolutamente nada. O puedes darle &lt;b&gt;Instalar&lt;/b&gt; y en ese caso es simplemente seguir un&amp;nbsp;fácil&amp;nbsp;y simple asistente que te ayuda con todo el proceso de&amp;nbsp;instalación.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-6761241702954955493?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/10/receta-para-instalar-ubuntu-1110.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><thr:total>1</thr:total><enclosure url="http://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer-1.8.6.6.exe" length="1002951" type="application/octet-stream" /><media:content url="http://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer-1.8.6.6.exe" fileSize="1002951" type="application/octet-stream" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Ha sido liberado Ubuntu 11.10 para que lo&amp;nbsp;pruebes, te enamores y si quieres lo instales. Es por eso que voy a escribir la receta para poder tenerlo en cualquier equipo. Ingredientes. 1. Descargar Ubuntu.&amp;nbsp;Puedes descargarlo en 32 bits o 64 bits. </itunes:subtitle><itunes:author>noreply@blogger.com (Jorge Andrés Guerrero)</itunes:author><itunes:summary>Ha sido liberado Ubuntu 11.10 para que lo&amp;nbsp;pruebes, te enamores y si quieres lo instales. Es por eso que voy a escribir la receta para poder tenerlo en cualquier equipo. Ingredientes. 1. Descargar Ubuntu.&amp;nbsp;Puedes descargarlo en 32 bits o 64 bits. 2. Tener a la mano una USB, un CD o un DVD Si usas una USB y estas desde Windows.&amp;nbsp;Requieres este programa. Si usas CD o DVD es simplemente quemarlo usando cualquier programa que&amp;nbsp;conozcas&amp;nbsp;para quemar&amp;nbsp;imágenes. Con los ingredientes listos vamos a crear una&amp;nbsp;versión&amp;nbsp;para USB. Lo primero es seleccionar la&amp;nbsp;versión,&amp;nbsp;en este caso Ubuntu 11.10 Después&amp;nbsp;en el segundo campo buscamos la imagen que ya descargamos antes. Finalmente seleccionamos cual es la unidad USB. Y le damos en crear y listo ya tenemos una usb con Ubuntu listo para ser probado o si gustas instalado. Lo segundo es cuando arranques el computador presiones la tecla ESC, F10, F11 O F12&amp;nbsp;según&amp;nbsp;la BIOS te tu computador para que de esta forma puedas decirle que arranque desde la USB.&amp;nbsp; Los&amp;nbsp;demás&amp;nbsp;es pan comido, puede darle Probar Ubuntu sin Instalar&amp;nbsp;esta&amp;nbsp;opción&amp;nbsp;te permite&amp;nbsp;darle una mirada a todo el sistema operativo sin instalar absolutamente nada. O puedes darle Instalar y en ese caso es simplemente seguir un&amp;nbsp;fácil&amp;nbsp;y simple asistente que te ayuda con todo el proceso de&amp;nbsp;instalación.</itunes:summary></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-6532562533007646448</guid><pubDate>Fri, 07 Oct 2011 15:14:00 +0000</pubDate><atom:updated>2011-10-07T10:14:27.931-05:00</atom:updated><title>Grabadora Personal Panasonic RR-US470 en Ubuntu</title><description>&lt;div style="text-align: justify;"&gt;
Recientemente&amp;nbsp;adquirí&amp;nbsp;una grabadora Panasonic RR-US470, esta grabadora permite grabar muchas horas de&amp;nbsp;información&amp;nbsp;y&amp;nbsp;después&amp;nbsp;descargar todo esto a nuestro computador usando un puerto USB.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-wv4sxwb5g9k/To8SyAHmv3I/AAAAAAAABtY/AD3syN0ONnc/s1600/RR-US470_500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-wv4sxwb5g9k/To8SyAHmv3I/AAAAAAAABtY/AD3syN0ONnc/s320/RR-US470_500.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
La&amp;nbsp;cuestión&amp;nbsp;es que yo no uso Windows y el software que trae es exclusivamente para este sistema operativo. Aparte de que el software se ve algo inestable solo funciona en arquitecturas de 32 bits lo cual me deja a mi por fuera en los dos aspectos posibles.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Por lo tanto&amp;nbsp;había&amp;nbsp;que recurrir a alguna&amp;nbsp;opción mas interesante.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Realmente el proceso es bastante simple, lo que tenemos que hacer es conseguir un cable de 1/4 como este que se ve en la siguiente imagen:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-W5TVt7JEeE0/To8UzQeIM2I/AAAAAAAABtc/v_OBlrGQXYE/s1600/Switchcraft+-+35HR%2528036%252C072%252C144%252935.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-W5TVt7JEeE0/To8UzQeIM2I/AAAAAAAABtc/v_OBlrGQXYE/s200/Switchcraft+-+35HR%2528036%252C072%252C144%252935.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
Y usaremos un programa que se viene por defecto en cualquier ambiente de Gnome que es la grabadora de sonido. &amp;nbsp;Lo que vamos a hacer es conectar el cable a la salida de los&amp;nbsp;audífonos&amp;nbsp;de la grabadora y este conectarlo al&amp;nbsp;micrófono&amp;nbsp;interno.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-X0-i5An1QiA/To8WZ0kfz6I/AAAAAAAABtg/WwGHXHdODFY/s1600/Pantallazo+del+2011-10-07+10%253A05%253A49.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://3.bp.blogspot.com/-X0-i5An1QiA/To8WZ0kfz6I/AAAAAAAABtg/WwGHXHdODFY/s400/Pantallazo+del+2011-10-07+10%253A05%253A49.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Le damos play a la grabadora personal y al mismo tiempo le damos grabar al programa y este&amp;nbsp;automáticamente&amp;nbsp;toma todo el audio de la grabadora y lo graba usando el programa. Al final le definimos el nombre y la calidad o el formato que queremos para nuestro archivo.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Este procedimiento es&amp;nbsp;útil&amp;nbsp;para cualquier grabadora, sea Sony, Panasonic o de cualquier otra marca y es una forma&amp;nbsp;fácil&amp;nbsp;y simple de hacerlo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-6532562533007646448?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/10/grabadora-personal-panasonic-rr-us470.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://1.bp.blogspot.com/-wv4sxwb5g9k/To8SyAHmv3I/AAAAAAAABtY/AD3syN0ONnc/s72-c/RR-US470_500.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-3558734934831680797</guid><pubDate>Thu, 22 Sep 2011 17:01:00 +0000</pubDate><atom:updated>2011-09-22T12:04:26.399-05:00</atom:updated><title>Scrolling Natural en Ubuntu</title><description>Para algunas personas que conocen Mac OSX Lion, saben que una de las novedades que trae es el Scrolling Natural. Para tenerlo en Ubuntu la verdad no se necesita mucho.&lt;br /&gt;
&lt;br /&gt;
Lo primero es abrir el editor de texto.&lt;br /&gt;
Y pegar lo siguiente:&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: 'Droid Sans Mono', Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="alt2" dir="ltr" style="border-bottom-style: inset; border-bottom-width: 1px; border-color: initial; border-left-style: inset; border-left-width: 1px; border-right-style: inset; border-right-width: 1px; border-top-style: inset; border-top-width: 1px; overflow-x: auto; overflow-y: auto; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: left; width: 500px;"&gt;pointer = 1 2 3 5 4 6 7 8 9 10 11 12&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xsCkxFuesRk/TntpV0_uU1I/AAAAAAAABtM/Z4TnEj8Mjzs/s1600/Pantallazo+de+2011-09-22+11%253A53%253A40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://2.bp.blogspot.com/-xsCkxFuesRk/TntpV0_uU1I/AAAAAAAABtM/Z4TnEj8Mjzs/s400/Pantallazo+de+2011-09-22+11%253A53%253A40.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Después&amp;nbsp;lo guardamos en nuestra carpeta /Home como .Xmodmap y listo, reiniciamos la&amp;nbsp;sesión&amp;nbsp;y listo, ya tenemos scrolling natural en Ubuntu.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8HYp9oehYHI/TntpW2YpdsI/AAAAAAAABtQ/gujSzYvSvPQ/s1600/Pantallazo+de+2011-09-22+11%253A54%253A22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://3.bp.blogspot.com/-8HYp9oehYHI/TntpW2YpdsI/AAAAAAAABtQ/gujSzYvSvPQ/s400/Pantallazo+de+2011-09-22+11%253A54%253A22.png" width="400" /&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/2738913432425957583-3558734934831680797?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/09/scrolling-natural-en-ubuntu.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://2.bp.blogspot.com/-xsCkxFuesRk/TntpV0_uU1I/AAAAAAAABtM/Z4TnEj8Mjzs/s72-c/Pantallazo+de+2011-09-22+11%253A53%253A40.png" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-3008252613137400234</guid><pubDate>Thu, 22 Sep 2011 16:43:00 +0000</pubDate><atom:updated>2011-09-22T12:17:10.644-05:00</atom:updated><title>Compartir contenido Usando la Nube de Ubuntu One</title><description>Una de las mas grandes ventajas que existe con Ubuntu es la posibilidad de contar con la nube en todo momento.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Una&amp;nbsp;característica&amp;nbsp;que muy pocas personas conocen es que Ubuntu One permite compartir contenido en linea de forma&amp;nbsp;colaborativa&amp;nbsp;usando la nube. Realmente es de mucha ayuda.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Lo primero sera crear una carpeta en Ubuntu One que en mi caso he nombrado como Ejemplos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iTzya5M15wU/TnthUTunVVI/AAAAAAAABtA/0JTC7EV2igA/s1600/Pantallazo+de+2011-09-22+11%253A23%253A57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://3.bp.blogspot.com/-iTzya5M15wU/TnthUTunVVI/AAAAAAAABtA/0JTC7EV2igA/s400/Pantallazo+de+2011-09-22+11%253A23%253A57.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora lo que debemos hacer es darle click derecho en la carpeta y nos vamos al apartado que dice Ubuntu One. Y le damos compartir.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-L_9TNKlitY8/Tnth6pujSkI/AAAAAAAABtE/If4v6aa5Gj0/s1600/Pantallazo+de+2011-09-22+11%253A25%253A47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://3.bp.blogspot.com/-L_9TNKlitY8/Tnth6pujSkI/AAAAAAAABtE/If4v6aa5Gj0/s400/Pantallazo+de+2011-09-22+11%253A25%253A47.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Después&amp;nbsp;se abre la siguiente interfaz. Lo primero sera poner el correo&amp;nbsp;electrónico&amp;nbsp;de la persona con la que queremos compartir esta carpeta.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-e8ev3xcY6d0/TntiC2Zxq-I/AAAAAAAABtI/_Ps1yTk3Vg0/s1600/Pantallazo+de+2011-09-22+11%253A26%253A51.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" src="http://3.bp.blogspot.com/-e8ev3xcY6d0/TntiC2Zxq-I/AAAAAAAABtI/_Ps1yTk3Vg0/s400/Pantallazo+de+2011-09-22+11%253A26%253A51.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Con esto&amp;nbsp;después&amp;nbsp;de darle en compartir nos llegara un correo de&amp;nbsp;confirmación&amp;nbsp;con el cual debemos configurar la&amp;nbsp;información desde Ubuntu One en al red.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-f6wkaiir8Mg/TnttYtk0xVI/AAAAAAAABtU/ga9te7mdEeA/s1600/Pantallazo+de+2011-09-22+12%253A14%253A42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://1.bp.blogspot.com/-f6wkaiir8Mg/TnttYtk0xVI/AAAAAAAABtU/ga9te7mdEeA/s400/Pantallazo+de+2011-09-22+12%253A14%253A42.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Con esto la otra persona&amp;nbsp;tendrá&amp;nbsp;una carpeta Ejemplos dentro de la carpeta Shared With Me. Y de esta forma hemos aprendido a compartir&amp;nbsp;información&amp;nbsp;entre equipos, entre personas usando la red de Ubuntu One.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-3008252613137400234?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/09/compartir-contenido-usando-la-nube-de.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://3.bp.blogspot.com/-iTzya5M15wU/TnthUTunVVI/AAAAAAAABtA/0JTC7EV2igA/s72-c/Pantallazo+de+2011-09-22+11%253A23%253A57.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-2792780988015461803</guid><pubDate>Thu, 22 Sep 2011 16:10:00 +0000</pubDate><atom:updated>2011-09-27T09:58:22.813-05:00</atom:updated><title>WebApps Chrome Chromium Ubuntu Unity</title><description>Para crear WebApps independientes en Ubuntu Unity es fundamental decidir de que queremos crear una WebApps.&lt;br /&gt;
&lt;br /&gt;
En mi caso voy a crear una App para &lt;a href="http://grooveshark.com/"&gt;Grooveshark&lt;/a&gt;&amp;nbsp;y de esa forma voy a ilustrar como se hacen algunos pasos adicionales para que se vea mas&amp;nbsp;estética&amp;nbsp;e integrada en Ubuntu Unity.&lt;br /&gt;
&lt;br /&gt;
Lo primero es ir al sitio en&amp;nbsp;cuestión.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wM4tF1nbPCc/TntW9sNOM6I/AAAAAAAABsg/TL1DYEpEgz4/s1600/Pantallazo+de+2011-09-22+10%253A38%253A46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-wM4tF1nbPCc/TntW9sNOM6I/AAAAAAAABsg/TL1DYEpEgz4/s400/Pantallazo+de+2011-09-22+10%253A38%253A46.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Después&amp;nbsp;de entrar al sitio nos vamos a herramientas crear Acceso Directo.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2y_fpRUxNoQ/TntW_dyOGTI/AAAAAAAABsk/56vo3Ln4hWI/s1600/Pantallazo+de+2011-09-22+10%253A39%253A30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://2.bp.blogspot.com/-2y_fpRUxNoQ/TntW_dyOGTI/AAAAAAAABsk/56vo3Ln4hWI/s400/Pantallazo+de+2011-09-22+10%253A39%253A30.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Lo ponemos en el escritorio y simplemente aceptamos.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QMhhet4LRzs/TntXBYAkl3I/AAAAAAAABso/ck41m1K2kas/s1600/Pantallazo+de+2011-09-22+10%253A39%253A43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-QMhhet4LRzs/TntXBYAkl3I/AAAAAAAABso/ck41m1K2kas/s400/Pantallazo+de+2011-09-22+10%253A39%253A43.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Automáticamente se crea la WebApp y en el escritorio queda un icono de acceso directo, esta es la parte interesante que vamos a modificar para que se vea mejor en Unity.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-w1sgAp42kcU/TntXD1hJxaI/AAAAAAAABss/_qQConABWqQ/s1600/Pantallazo+de+2011-09-22+10%253A39%253A54.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-w1sgAp42kcU/TntXD1hJxaI/AAAAAAAABss/_qQConABWqQ/s400/Pantallazo+de+2011-09-22+10%253A39%253A54.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Lo primero sera llevar el acceso directo a alguna carpeta. En mi caso lo puse en una carpeta en Documentos/Web Apps&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Vamos a modificar algunas cosas del icono dando click derecho y vamos a propiedades. En Nombre podemos poner Grooveshark.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;En&amp;nbsp;descripción&amp;nbsp;yo puse Musica Online.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;En orden agregue la siguiente parte&amp;nbsp;después&amp;nbsp;de la&amp;nbsp;información&amp;nbsp;que&amp;nbsp;aparecía:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;--user-data-dir=/home/geojorg/Documentos/Profiles/Default3&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Esta orden que ven lo que hace es crear un perfil propio para chrome o chromium de esa forma la&amp;nbsp;aplicación&amp;nbsp;se comporta independiente de cualquier otro perfil. En mi caso ese perfil lo aplica cuando cree una carpeta en /geojorg/Documentos/Profiles/Default3 y le doy la orden al programa de usar esa carpeta que esta en blanco pero que el programa llenara poco a poco de&amp;nbsp;información.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HJc3JfIvGok/TntY74Mc6GI/AAAAAAAABsw/2aIhx7iEYYY/s1600/Pantallazo+de+2011-09-22+10%253A46%253A20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://3.bp.blogspot.com/-HJc3JfIvGok/TntY74Mc6GI/AAAAAAAABsw/2aIhx7iEYYY/s320/Pantallazo+de+2011-09-22+10%253A46%253A20.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;La parte final es buscar un icono bonito para poder cambiar el que viene por defecto. El icono que seleccione es &lt;a href="http://www.sms-sender.com.ar/wp-content/uploads/2011/04/Grooveshark-icon.png"&gt;este&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Simplemente metemos el icono en la carpeta Web Apps. Y arrastramos como se ve en la siguiente imagen.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ZaTTST6pcrk/Tnta1gaRSEI/AAAAAAAABs0/Y7bFzt6CyE4/s1600/Pantallazo+de+2011-09-22+10%253A52%253A19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://3.bp.blogspot.com/-ZaTTST6pcrk/Tnta1gaRSEI/AAAAAAAABs0/Y7bFzt6CyE4/s400/Pantallazo+de+2011-09-22+10%253A52%253A19.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;La parte final es simplemente tomar el nuevo Web Apps y llevarlo a la barra Unity.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-psXO6W4kAoQ/TntbsEFmhWI/AAAAAAAABs4/fjHAZXAfRcM/s1600/Pantallazo+de+2011-09-22+10%253A58%253A46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-psXO6W4kAoQ/TntbsEFmhWI/AAAAAAAABs4/fjHAZXAfRcM/s400/Pantallazo+de+2011-09-22+10%253A58%253A46.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Y al final queda de la siguiente forma.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-KPuNA8wNJZ0/Tntb3pQ5CGI/AAAAAAAABs8/deL40w-tD3c/s1600/Pantallazo+de+2011-09-22+11%253A01%253A13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-KPuNA8wNJZ0/Tntb3pQ5CGI/AAAAAAAABs8/deL40w-tD3c/s400/Pantallazo+de+2011-09-22+11%253A01%253A13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Con esto hemos concluido la&amp;nbsp;creación&amp;nbsp;de una Web App.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Actualización&amp;nbsp;27/09/2011:&lt;/b&gt;&lt;/span&gt; Chrome ya no requiere este procedimiento ya que con solo crear un enlace se crea un perfil individual, este bug fue solucionado solo para Chrome y Unity 11.10.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-2792780988015461803?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/09/webapps-chrome-ubuntu-unity.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://1.bp.blogspot.com/-wM4tF1nbPCc/TntW9sNOM6I/AAAAAAAABsg/TL1DYEpEgz4/s72-c/Pantallazo+de+2011-09-22+10%253A38%253A46.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-5502485064250138110</guid><pubDate>Tue, 13 Sep 2011 00:19:00 +0000</pubDate><atom:updated>2011-09-12T19:40:51.163-05:00</atom:updated><title>WebApps Chrome en Windows, Mac OSX y Linux</title><description>&lt;div style="text-align: justify;"&gt;Desde hace ya&amp;nbsp;algún&amp;nbsp;tiempo Chrome nos ofrece los WebApps. Son&amp;nbsp;básicamente&amp;nbsp;aplicaciones que podemos correr independiente de nuestro navegador. Se pueden crear absolutamente para cualquier pagina y permiten tener una interfaz usualmente más elegante y ajustada para cada uno de nuestros sistemas operativos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La&amp;nbsp;integración&amp;nbsp;de los WebApps es completamente distinta en cada entorno.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero sera tener instalado Chrome, Chromium o Iron en nuestro sistema operativo ya sea Windows, Mac OSX o Linux.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo segundo es crear nuestra WebApps. Para ellos nos vamos a las herramientas de chrome.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RNY8GZreQ3I/Tm6bz3yo7PI/AAAAAAAABsA/R-w2dRN7jWA/s1600/Pantallazo+de+2011-09-12+18%253A53%253A51.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-RNY8GZreQ3I/Tm6bz3yo7PI/AAAAAAAABsA/R-w2dRN7jWA/s1600/Pantallazo+de+2011-09-12+18%253A53%253A51.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Y le damos en crear acceso directo a una&amp;nbsp;aplicación.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Esto nos&amp;nbsp;permitirá&amp;nbsp;tener lista la WebApps.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora al abrir la misma en Windows tendremos algo mas o menos asi:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Z4K33dkoZ8g/Tm6cPTNf_pI/AAAAAAAABsE/GtnAwVaj7kg/s1600/image.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-Z4K33dkoZ8g/Tm6cPTNf_pI/AAAAAAAABsE/GtnAwVaj7kg/s400/image.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;En Mac OSX tendremos algo similar a esto:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-K_yzeGJk5CY/Tm6cb1UUmNI/AAAAAAAABsI/qOR3LjoMp-o/s1600/Musicuo+%257C+Inicio-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-K_yzeGJk5CY/Tm6cb1UUmNI/AAAAAAAABsI/qOR3LjoMp-o/s400/Musicuo+%257C+Inicio-1.jpg" width="378" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;En linux Ubuntu las WebApps se ven de la siguiente forma.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wqYvT9Fi974/Tm6eBcrNkNI/AAAAAAAABsQ/3t5ttoRZKrE/s1600/Pantallazo+de+2011-09-12+19%253A03%253A57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://3.bp.blogspot.com/-wqYvT9Fi974/Tm6eBcrNkNI/AAAAAAAABsQ/3t5ttoRZKrE/s400/Pantallazo+de+2011-09-12+19%253A03%253A57.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
Cuando no tenemos la WebApps maximizadas en Ubuntu Linux, estas se ven de la siguiente forma:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-x-PAoQzjGPk/Tm6lq_9kQkI/AAAAAAAABsc/lSRW8WnKgBM/s1600/Pantallazo+de+2011-09-12+19%253A35%253A38.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-x-PAoQzjGPk/Tm6lq_9kQkI/AAAAAAAABsc/lSRW8WnKgBM/s400/Pantallazo+de+2011-09-12+19%253A35%253A38.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Uno de los temas mas interesantes con las WebApps es que en el caso de Linux podemos crearlas como programas independientes que se pueden lanzar desde el Unity Launcher en cualquier momento.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como pueden ver en la siguiente imagen estas WebApps corren independiente de Chrome. En mi caso tengo creada TweetDeck y Musicuo pero se pueden crear para gmail y para lo que quieran.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ylVliqdiIHo/Tm6f7aypisI/AAAAAAAABsU/3BvGZk_OBK4/s1600/Pantallazo+de+2011-09-12+19%253A10%253A58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="303" src="http://2.bp.blogspot.com/-ylVliqdiIHo/Tm6f7aypisI/AAAAAAAABsU/3BvGZk_OBK4/s320/Pantallazo+de+2011-09-12+19%253A10%253A58.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Incluso&amp;nbsp;debido a la capacidad de&amp;nbsp;personalización&amp;nbsp;de Unity de Ubuntu pueden crear&amp;nbsp;menús&amp;nbsp;personalizados para sus WebApps que sean 100%&amp;nbsp;independiente&amp;nbsp;al navegador de Chrome&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-P9VqvZEM0fo/Tm6gklMvCyI/AAAAAAAABsY/9Ks02Xe68IE/s1600/Pantallazo+de+2011-09-12+19%253A13%253A47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://1.bp.blogspot.com/-P9VqvZEM0fo/Tm6gklMvCyI/AAAAAAAABsY/9Ks02Xe68IE/s320/Pantallazo+de+2011-09-12+19%253A13%253A47.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Entre las ventajas de los WebApps tenemos que son simples aplicaciones que no ocupan tanto espacio en pantalla y en portatiles con pantallas menores a 11 pulgadas suelen ser fundamentales para poder tener un contenido completo y&amp;nbsp;fácil&amp;nbsp;de leer y revisar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Otra ventaja es que permite entrar directamente a nuestra&amp;nbsp;aplicación&amp;nbsp;sin tener que esperar a cargar el navegador y buscar en la barra de marcadores.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Es por esto y por otras razones que comentare en un siguiente articulo que los WebApps se toman lentamente el escritorio ya sea en Windows, Mac Osx y Linux.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En una&amp;nbsp;próxima&amp;nbsp;entrega creare Aplicaciones Web en Ubuntu de forma independiente para las versiones de 11.04 e inferiores.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Nota: Gracias a las personas que me facilitaron las capturas de pantalla de Mac OSX y Windows.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-5502485064250138110?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/09/webapps-chrome-en-windows-mac-osx-y.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://2.bp.blogspot.com/-RNY8GZreQ3I/Tm6bz3yo7PI/AAAAAAAABsA/R-w2dRN7jWA/s72-c/Pantallazo+de+2011-09-12+18%253A53%253A51.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-7485423434005098643</guid><pubDate>Wed, 31 Aug 2011 16:23:00 +0000</pubDate><atom:updated>2011-08-31T11:26:31.109-05:00</atom:updated><title>Configurando un Proxy en Ubuntu o Firefox</title><description>Te ha pasado alguna vez que has intentado entrar a youtube y de la nada te sale esto:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oQAZUtaXtWM/Tl5cx12311I/AAAAAAAABrs/ozsUnkogc14/s1600/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A07%25253A13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://2.bp.blogspot.com/-oQAZUtaXtWM/Tl5cx12311I/AAAAAAAABrs/ozsUnkogc14/s320/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A07%25253A13.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Bueno resulta que si vives en algunos&amp;nbsp;países&amp;nbsp;de Latinamérica&amp;nbsp;o Europa, algunas paginas no permiten mostrar el contenido.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Pues les digo que es una de las cosas mas moletas que hay, pero tiene una&amp;nbsp;solución&amp;nbsp;y es relativamente simple y se puede aplicar a Ubuntu o a Firefox.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En el caso de ubuntu, lo primero es ir a red y una vez&amp;nbsp;ahí&amp;nbsp;buscamos el apartado proxy y lo activamos con&amp;nbsp;algún&amp;nbsp;proxy que buscamos en la red. Es simplemente ir a google y buscar Proxys en Estados Unidos.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GDvG0DZEcIk/Tl5eO6R-guI/AAAAAAAABrw/x3oFp0UwKcs/s1600/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A14%25253A28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" src="http://3.bp.blogspot.com/-GDvG0DZEcIk/Tl5eO6R-guI/AAAAAAAABrw/x3oFp0UwKcs/s400/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A14%25253A28.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
En mi caso he seleccionado uno de california y lo he activado como se ve en la pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Si no queremos redirigir todas las aplicaciones que usan&amp;nbsp;Internet&amp;nbsp;a este proxy podemos hacerlo exclusivamente para el firefox. Nos vamos al&amp;nbsp;menú&amp;nbsp;de preferencias en avanzado y vamos a la pestaña de red. Y le damos en&amp;nbsp;configuración.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2IRV3fbmaBY/Tl5fQ28KsdI/AAAAAAAABr0/J6bH74-k8Ss/s1600/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A17%25253A56.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://1.bp.blogspot.com/-2IRV3fbmaBY/Tl5fQ28KsdI/AAAAAAAABr0/J6bH74-k8Ss/s320/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A17%25253A56.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Una vez abierta la&amp;nbsp;configuración, veremos esta pantalla que esta abajo, en ella podemos poner la ip del proxy americano y el puerto de&amp;nbsp;conexión&amp;nbsp;y listo. Ya podemos ir al navegador y cuando un sitio verifique la ip de nuestro computador pensara que estamos ubicados en Estados Unidos o de donde sea el proxy que seleccionamos.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xudglkux7G4/Tl5fRdoEvzI/AAAAAAAABr4/VULSQHBdML4/s1600/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A18%25253A46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="297" src="http://2.bp.blogspot.com/-xudglkux7G4/Tl5fRdoEvzI/AAAAAAAABr4/VULSQHBdML4/s320/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A18%25253A46.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-7485423434005098643?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/08/configurando-proxy-en-ubuntu-o-firefox.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://2.bp.blogspot.com/-oQAZUtaXtWM/Tl5cx12311I/AAAAAAAABrs/ozsUnkogc14/s72-c/Captura%252520de%252520pantalla%252520como%2525202011-08-31%25252011%25253A07%25253A13.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-1598892876989466490</guid><pubDate>Sun, 21 Aug 2011 14:48:00 +0000</pubDate><atom:updated>2011-08-21T09:48:23.147-05:00</atom:updated><title>Conectarse a Ubuntu usando un Teléfono Móvil</title><description>&lt;div style="text-align: justify;"&gt;En estos días tenia la necesidad de conectarme a Ubuntu desde un sitio donde no estaba disponible mi red Inalambrica normal es por ello que toco utilizar el internet de mi&amp;nbsp;teléfono&amp;nbsp;móvil&amp;nbsp;en el computador.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero que tenemos que hacer es activar el bluetooth en el&amp;nbsp;teléfono&amp;nbsp;movil y en el computador. Recuerden que todo esto es posible porque tengo un plan de datos en el&amp;nbsp;teléfono&amp;nbsp;móvil.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero es iniciar la&amp;nbsp;configuración&amp;nbsp;de un nuevo dispositivo de bluetooth esto se hace desde el icono que esta al lado de la&amp;nbsp;batería&amp;nbsp;y que representa a los dispositivos bluetooth.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VDC0MF3A4FU/TlEX5wa6eDI/AAAAAAAABpk/g2m_yh7UmU8/s1600/Pantallazo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://3.bp.blogspot.com/-VDC0MF3A4FU/TlEX5wa6eDI/AAAAAAAABpk/g2m_yh7UmU8/s400/Pantallazo.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Una vez que el asistente inicia debemos esperar a que se detecte el&amp;nbsp;teléfono&amp;nbsp;móvil&amp;nbsp;o el dispositivo. En este caso ya lo detecto como se puede ver en la siguiente imagen.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mZQoUd3T5QQ/TlEX6SYuiCI/AAAAAAAABpo/aCHES8Jd9QI/s1600/Pantallazo-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="305" src="http://4.bp.blogspot.com/-mZQoUd3T5QQ/TlEX6SYuiCI/AAAAAAAABpo/aCHES8Jd9QI/s400/Pantallazo-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Después&amp;nbsp;de seleccionarlo le damos adelante y este nos va a ofrecer un PIN de apareamiento que debemos verificar tanto en el pc como en&amp;nbsp;teléfono.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-gjhvt_37Ddo/TlEX7JVTBGI/AAAAAAAABps/hhqBtvzYnhc/s1600/Pantallazo-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="311" src="http://3.bp.blogspot.com/-gjhvt_37Ddo/TlEX7JVTBGI/AAAAAAAABps/hhqBtvzYnhc/s400/Pantallazo-2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Después&amp;nbsp;de confirmar que coincide le activamos la&amp;nbsp;opción&amp;nbsp;que dice acceder a internet usando este dispositivo o&amp;nbsp;teléfono&amp;nbsp;móvil.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-e2H7hPkdbuY/TlEX7ti8OSI/AAAAAAAABpw/I_wcB78KIrY/s1600/Pantallazo-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://4.bp.blogspot.com/-e2H7hPkdbuY/TlEX7ti8OSI/AAAAAAAABpw/I_wcB78KIrY/s400/Pantallazo-3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Mientras detecta la&amp;nbsp;configuración&amp;nbsp;abre esta pantalla donde ofrece configurar los datos del&amp;nbsp;teléfono&amp;nbsp;móvil.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-yibet2yT_Js/TlEX8cXayHI/AAAAAAAABp0/l4u4NWg8rK0/s1600/Pantallazo-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://1.bp.blogspot.com/-yibet2yT_Js/TlEX8cXayHI/AAAAAAAABp0/l4u4NWg8rK0/s400/Pantallazo-4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Lo primero es buscar el&amp;nbsp;país&amp;nbsp;de donde es el celular. En mi caso es Colombia&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dAiB8kyK15A/TlEX83p0elI/AAAAAAAABp4/aM7wFF9EdHs/s1600/Pantallazo-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="337" src="http://2.bp.blogspot.com/-dAiB8kyK15A/TlEX83p0elI/AAAAAAAABp4/aM7wFF9EdHs/s400/Pantallazo-5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Después&amp;nbsp;se elige el provedoor de internet. En este caso Ubuntu solo es capas de conectarse con 3 proveedores Comcel, Movistar y Tigo. Por lo que UNE y Uff quedan fuera.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-APPM-dfbkI0/TlEX9QnrMGI/AAAAAAAABp8/7Bfh-__IRaU/s1600/Pantallazo-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://1.bp.blogspot.com/-APPM-dfbkI0/TlEX9QnrMGI/AAAAAAAABp8/7Bfh-__IRaU/s400/Pantallazo-6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;En mi caso uso TIGO por lo que selecciono esta&amp;nbsp;opción&amp;nbsp;y le doy adelante.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-92X2Nh3rTAQ/TlEX9gRM63I/AAAAAAAABqA/GZzumPqgeV8/s1600/Pantallazo-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="362" src="http://4.bp.blogspot.com/-92X2Nh3rTAQ/TlEX9gRM63I/AAAAAAAABqA/GZzumPqgeV8/s400/Pantallazo-7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Finalmente confirmo la&amp;nbsp;información&amp;nbsp;del&amp;nbsp;proveedor&amp;nbsp;de mi celular y con esto hemos terminado de configurar el acceso a internet del computador desde el&amp;nbsp;teléfono&amp;nbsp;móvil.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tZGEse8nbCo/TlEX-E7f2qI/AAAAAAAABqE/y_g5dGj6q9E/s1600/Pantallazo-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="362" src="http://2.bp.blogspot.com/-tZGEse8nbCo/TlEX-E7f2qI/AAAAAAAABqE/y_g5dGj6q9E/s400/Pantallazo-8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Finalmente buscamos dentro de las redes inalambrica TIGO DEFAULT que es la que nos permite conectarnos desde el pc usando nuestro&amp;nbsp;teléfono&amp;nbsp;móvil y a disfrutar de nuestro internet en el pc.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-M-Hpsj7Ncf4/TlEX-sLBHRI/AAAAAAAABqI/jOVZGmhCu-k/s1600/Pantallazo-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-M-Hpsj7Ncf4/TlEX-sLBHRI/AAAAAAAABqI/jOVZGmhCu-k/s320/Pantallazo-9.png" width="229" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-1598892876989466490?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/08/conectarse-ubuntu-usando-un-telefono.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://3.bp.blogspot.com/-VDC0MF3A4FU/TlEX5wa6eDI/AAAAAAAABpk/g2m_yh7UmU8/s72-c/Pantallazo.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-6028458627659134406</guid><pubDate>Mon, 15 Aug 2011 21:45:00 +0000</pubDate><atom:updated>2011-08-15T16:45:36.446-05:00</atom:updated><title>GtkBuilder y Python Parte 6</title><description>&lt;div style="text-align: justify;"&gt;Quizás&amp;nbsp;deberías&amp;nbsp;pasar por el &lt;a href="http://geowworld.blogspot.com/2011/05/gtkbuilder-y-python-5.html"&gt;tutorial 5&lt;/a&gt; antes de comenzar con este.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En este tutorial vamos a terminar de configurar algunas cosas, como ya pudieron notar en el anterior logramos agregar archivos a una lista dentro de un Gtk.Treeview.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ISnn2wqTe1Y/Tcvrcowz2jI/AAAAAAAABgY/8nxMVdTwrcA/s1600/Pantallazo-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-ISnn2wqTe1Y/Tcvrcowz2jI/AAAAAAAABgY/8nxMVdTwrcA/s320/Pantallazo-1.png" width="286" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
En esta entrada vamos a realizar trabajos con los botones eliminar archivo , limpiar, arriba y abajo, estos botones nos enseñaran algunos comandos nuevos y nos&amp;nbsp;permitirán entender de alguna forma que es un Gtk.TreeIter que es una de las cosas más complejas que hay. La&amp;nbsp;documentación&amp;nbsp;de Gtk3 y 2 es más bien muy regular en este apartado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces los botones que vamos a configurar son:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tockwNwe60c/TcvsUxyOvmI/AAAAAAAABgc/WD0AL72KFDI/s1600/Pantallazo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://4.bp.blogspot.com/-tockwNwe60c/TcvsUxyOvmI/AAAAAAAABgc/WD0AL72KFDI/s400/Pantallazo.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero que vamos a hacer es agregar al diccionario las siguientes señales.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Eliminar uno, borrar lista, arriba, abajo.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
"on_Clearone_clicked": self.clearone,&lt;br /&gt;
&lt;br /&gt;
"on_Clearlist_clicked": self.clearlist,&lt;br /&gt;
&lt;br /&gt;
"on_Up_clicked": self.updown_move,&lt;br /&gt;
&lt;br /&gt;
"on_Down_clicked": self.updown_move,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Ahora que hemos agregados estos 4 elementos al diccionario es fundamental crear las&amp;nbsp;definiciones&amp;nbsp;para cada uno ya que de lo contrario el programa nos mostrara un error.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La primera&amp;nbsp;definición&amp;nbsp;nueva que vamos a agregar es clearone, que&amp;nbsp;básicamente&amp;nbsp;se encargara de eliminar un solo elemento de la lista. Voy a explicar con detalle, la primera linea define un elemento&amp;nbsp;propio&amp;nbsp;self que admite argumentos, esta&amp;nbsp;definición&amp;nbsp;no tiene Widget porque no va a crear una ventana ni un dialogo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La segunda linea le da el nombre clearone al treeview pero este tiene que estar definido propiamente, por eso hay que buscar el objeto treeview dentro del archivo .ui y agregarlo al programa, esto se hace en los builder con esta linea de&amp;nbsp;código donde llamamos al objeto de nombre TextView que&amp;nbsp;habíamos&amp;nbsp;creado en Glade&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;self.treeview = builder.get_object("TextView")&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El comando &lt;span class="Apple-style-span" style="color: red;"&gt;get_selection()&lt;/span&gt; de la linea 2 es un comando que es valido para los Gtk.Treeviews y&amp;nbsp;básicamente&amp;nbsp;lo que hace es seleccionar todo el Gtk.Treeview. La linea 3 crea una tupla que contiene dos elementos, el primero es el modelo que no es de&amp;nbsp;interés&amp;nbsp;en el 95% de los casos&amp;nbsp;y la segunda es la fila, eso es posible al usar el comando&lt;span class="Apple-style-span" style="color: red;"&gt; get_selected_rows() &lt;/span&gt;este es un comando que selecciona las filas dentro del Treeview y que&amp;nbsp;básicamente&amp;nbsp;muestre el Treepath pero dentro del treepath están los&amp;nbsp;números&amp;nbsp;de las filas es decir la fila 1 la 2 y&amp;nbsp;así&amp;nbsp;en adelante por eso si usamos un for podemos iterar estos números de filas.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Voy a explicar entonces que es un iter. Un iter es una especia de valor&amp;nbsp;iterativo&amp;nbsp;dentro de Gtk, claro que es algo mucho más complejo que eso, pero&amp;nbsp;básicamente&amp;nbsp;todos los modelos de Treeviews son iterativos lo que significa que tienen una secuencia ordenada.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La linea 6 crea una nueva variable con nombre iteration y lo que hace es dentro del modelo encontrar el&amp;nbsp;patrón&amp;nbsp;iterativo para la fila i. Recuerden que i no es un simple numero es un valor que solo es compatible con los Gtk.TreeIters, por eso si ponemos 2 en vez de i el programa no funcionara.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Yo se que lo anterior suena complejo y ojala pudiera usar palabras más simples pero no es posible. Dentro de iteration quedara entonces guardado un valor similar visualmente a esto "gtktreeiter 0x17004c0" con esto la ultima linea lo que hace es remover ese valor y organizar de manera iterativa la nueva lista.&lt;/div&gt;&lt;div id="iframeDiv651300ac-2d93-468e-8d86-660bba586712" style="display: none; margin: 0px;"&gt;&lt;iframe frameborder="0" id="iframe651300ac-2d93-468e-8d86-660bba586712" src="http://www.blogtrog.com/code.aspx?id=651300ac-2d93-468e-8d86-660bba586712" style="border: 1px solid #e0e0e0; height: 160px; margin: 0px; width: 500px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDiv651300ac-2d93-468e-8d86-660bba586712" style="display: block; margin: 0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Borrar un Archivo&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; clearone(self, &lt;/span&gt;&lt;span style="color: black;"&gt;*&lt;/span&gt;&lt;span style="color: black;"&gt;args):
clearone &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.treeview.get_selection()
(model, rows) &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; clearone.get_selected_rows()
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; i &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; rows:
iteration&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;model.get_iter(i)
self.medialist.remove(iteration)&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;
bt_code_init('651300ac-2d93-468e-8d86-660bba586712');
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;También&amp;nbsp;sera necesario entonces crear la&amp;nbsp;definición para borrar todo. Esta es bastante fácil porque en Gtk&amp;nbsp;habían&amp;nbsp;pensado en esto, entonces no tendremos que rompernos la cabeza pensando en Iters. El comando &lt;span class="Apple-style-span" style="color: red;"&gt;clear()&lt;/span&gt; que es un comando de Gtk.Liststore permite borrar todo el contenido de MediaList&lt;/div&gt;&lt;div id="iframeDivdb462a0b-2b62-4ba9-a314-686b0ff10532" style="display: none; margin: 0px;"&gt;&lt;iframe frameborder="0" id="iframedb462a0b-2b62-4ba9-a314-686b0ff10532" src="http://www.blogtrog.com/code.aspx?id=db462a0b-2b62-4ba9-a314-686b0ff10532" style="border: 1px solid #e0e0e0; height: 80px; margin: 0px; width: 500px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDivdb462a0b-2b62-4ba9-a314-686b0ff10532" style="display: block; margin: 0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Borrar Lista&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; clearlist(self, &lt;/span&gt;&lt;span style="color: black;"&gt;*&lt;/span&gt;&lt;span style="color: black;"&gt;args):
self.medialist.clear()&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;
bt_code_init('db462a0b-2b62-4ba9-a314-686b0ff10532');
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Ahora vamos con el comando Arriba y Abajo, esto es particularmente interesante, se pueden configurar por separados o en un solo&amp;nbsp;código, eso es cosa de cada quien, a mi particularmente me gusta hacerlo en una sola&amp;nbsp;definición.&amp;nbsp;También&amp;nbsp;es curioso porque este&amp;nbsp;código&amp;nbsp;que les voy a mostrar esta hecho para ser compatible con Gtk3 y con Gtk2 y&amp;nbsp;quizás&amp;nbsp;si alguno de ustedes ha programado antes me va a decir que existe una forma más&amp;nbsp;fácil&amp;nbsp;de hacerlo usando ItersPath, pues bueno para los que no saben eso ya no funciona en Gtk3 y lo ideal es programar usando las nuevas&amp;nbsp;tecnologías.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Primero agregamos estos dos elementos a nuestro Gtkbuilder en la parte de arriba donde estamos definiendo los builders. Recuerden que Up y Down son los nombres que estan en Glade para el boton de Arriba y Abajo, recuerden usar siempre el mismo nombre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;self.up = builder.get_object("Up")&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;self.down = builder.get_object("Down")&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces explico la definicion. Aquí ya no vamos a esperar argumentos, esta vez esperamos respuesta de un&amp;nbsp;botón. La linea 3 lo que hace es seleccionar el Treeview ya eso lo explique antes, la 4&amp;nbsp;también&amp;nbsp;la explique, obtenemos el modelo y las filas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La 5&amp;nbsp;básicamente&amp;nbsp;es un if que nos indica que si se presiona el&amp;nbsp;botón&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;Self.Up&lt;/span&gt; realice algo. Voy a explicar entonces que es ese algo. Como les explique ItersPath no existe en Gtk3 entonces hay que crearlos. El path1 es similar al i que explique antes y arroja un numero 1, 2, 3 dependiendo de la fila seleccionada. El path 2 obtiene el valor anterior al numero que seleccionamos, pero como les explique los i o path no son&amp;nbsp;números&amp;nbsp;normales, entonces hay que hacerles una&amp;nbsp;conversión,&amp;nbsp;lo primero es pasar el numero que&amp;nbsp;teníamos&amp;nbsp;a string es decir a texto y&amp;nbsp;después a int, y de esa forma podemos restarle un numero normal como 1.&lt;br /&gt;
&lt;br /&gt;
En la linea 8 vamos a definir que si estamos en la fila 0 es decir la primera, path2 no puede ser menor que 0 porque eso&amp;nbsp;daría&amp;nbsp;un error al programa, en ese caso debe retornar. De lo contrario si estamos en una linea diferente obtenga el valor del path1 y del path2 y los intercambie eso se logra con el comando &lt;span class="Apple-style-span" style="color: red;"&gt;swap()&lt;/span&gt; que es capaz de intercambiar dos iters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si por el contrario presionamos el&amp;nbsp;botón Self.Down&amp;nbsp;en vez de buscar el iter anterior debemos buscar el siguiente, por suerte Gtk2 y Gtk3 incluyen una funcion que lo hace sin tanto complique &lt;span class="Apple-style-span" style="color: red;"&gt;iter_next()&lt;/span&gt; busca el elemento siguiente en la lista, ya se que algunos se preguntaran porque no existe iter_before() y la verdad no se la respuesta, pero no existe este comando, por eso toca hacerlo usando path. Si estamos parado en la ultima fila entonces el iter siguiente sera None si esto pasa debe devolver la&amp;nbsp;función,&amp;nbsp;en el caso contrario debe intercambiar el iter 1 y el iter 2&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="iframeDive33dbb1e-c750-48b7-b82f-cc188f90f2de" style="display: none; margin: 0px;"&gt;&lt;iframe frameborder="0" id="iframee33dbb1e-c750-48b7-b82f-cc188f90f2de" src="http://www.blogtrog.com/code.aspx?id=e33dbb1e-c750-48b7-b82f-cc188f90f2de" style="border: 1px solid #e0e0e0; height: 360px; margin: 0px; width: 500px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDive33dbb1e-c750-48b7-b82f-cc188f90f2de" style="display: block; margin: 0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Arriba y Abajo&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; updown_move(self, button):
line &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.treeview.get_selection()
(model, rows) &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; line.get_selected_rows()
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; button &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; self.up:
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; path1 &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; rows:
path2 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; int(str(path1))&lt;/span&gt;&lt;span style="color: black;"&gt;-&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: black;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; path2 &lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black;"&gt; 0:
&lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;span style="color: black;"&gt;:
iter1 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.get_iter(path1)
iter2 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.get_iter(path2)
model.swap(iter1,iter2)

&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; button &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; self.down:
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; path1 &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; rows:
iter1 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.get_iter(path1)
iter2 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.iter_next(iter1)
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; iter2 &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; None:
&lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;span style="color: black;"&gt;:
model.swap(iter1,iter2)&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;
bt_code_init('e33dbb1e-c750-48b7-b82f-cc188f90f2de');
&lt;/script&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Si nuestra&amp;nbsp;intención&amp;nbsp;es que el programa solo funcione con la&amp;nbsp;tecnología&amp;nbsp;vieja, es decir Gtk2 podemos reducir esto en 4 lineas, pero insisto que no sera compatible con Gtk3, si alguien quiere esa&amp;nbsp;solución&amp;nbsp;me puede escribir en los comentarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En el&amp;nbsp;próximo&amp;nbsp;tutorial explicare como trabajar con Combobox y con nuevas funciones y&amp;nbsp;módulos&amp;nbsp;que tendremos que importar para hacer funcionar aleatorio y&amp;nbsp;alfabético.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El&amp;nbsp;código&amp;nbsp;del programa completo hasta donde vamos es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div id="iframeDivf66dbb27-7ea1-4b5a-b132-21c22883b299" style="display: none; margin: 0px;"&gt;&lt;iframe frameborder="0" id="iframef66dbb27-7ea1-4b5a-b132-21c22883b299" src="http://www.blogtrog.com/code.aspx?id=f66dbb27-7ea1-4b5a-b132-21c22883b299" style="border: 1px solid #e0e0e0; height: 500px; margin: 0px; width: 500px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDivf66dbb27-7ea1-4b5a-b132-21c22883b299" style="display: block; margin: 0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;!/usr/bin/python&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;import&lt;/span&gt;&lt;span style="color: black;"&gt; os
&lt;/span&gt;&lt;span style="color: blue;"&gt;from&lt;/span&gt;&lt;span style="color: black;"&gt; gi.repository &lt;/span&gt;&lt;span style="color: blue;"&gt;import&lt;/span&gt;&lt;span style="color: black;"&gt; Gtk

filepattern &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; (
(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;MP3&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;*.mp3&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;),
(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;AVI&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;*.avi&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;),
(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;MPEG-4&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;*.mp4&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;),
(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;FLV &lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;*.flv&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;),
(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;OGG&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;*.ogg&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;),
)

pattern &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;.mp3&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;.mp4&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;.avi&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;.flv&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;.ogg&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)    

&lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt;&lt;span style="color: black;"&gt; main:

&lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: purple;"&gt;__init__&lt;/span&gt;&lt;span style="color: black;"&gt;(self):
&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt; Crea la ventana de trabajo Principal y obtiene los objetos en Glade&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;        builder &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; Gtk.Builder()
builder.add_from_file(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Multiplay.ui&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.addfile &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Add&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.addfolder &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;AddFolder&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.save &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Save&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.about &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;About&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.medialist &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;MediaList&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.treeview &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;TextView&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.up &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Up&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.down &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; builder.get_object(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Down&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
self.filterbox &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; Gtk.FileFilter()

&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt; Diccionario de eventos y Conexion de los mismos.&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;        dict &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; {&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Add_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.showAddFile,
&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_AddFolder_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.showAddFolder,
&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Saved_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.showSave,
&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_About_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.showAbout,
&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Clearone_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.clearone,
&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Clearlist_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.clearlist,
&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Up_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.updown_move,
&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;on_Down_clicked&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;: self.updown_move,

}
builder.connect_signals(dict)

&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Agregar&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; showAddFile(self, widget):
self.filterbox.set_name(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;Media Files&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; name, pattern &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; filepattern:
self.filterbox.add_pattern(pattern)

self.addfile.add_filter(self.filterbox)

respt &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.addfile.run()
self.addfile.remove_filter(self.filterbox)
self.addfile.hide()
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; respt &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: black;"&gt;-&lt;/span&gt;&lt;span style="color: black;"&gt;5&lt;/span&gt;&lt;span style="color: black;"&gt;:    
fileselected &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.addfile.get_filenames()
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; files &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; fileselected:
(dirs,files)&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; os.path.split(files)
self.medialist.append([files,dirs])


&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Abrir Carpeta&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; showAddFolder(self, widget):
self.filterbox.set_name(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;All Media Files&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;)
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; names, patterns &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; filepattern:
self.filterbox.add_pattern(patterns)

self.addfolder.add_filter(self.filterbox)

respt &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.addfolder.run()
self.addfolder.remove_filter(self.filterbox)
self.addfolder.hide()

&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; respt &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: black;"&gt;-&lt;/span&gt;&lt;span style="color: black;"&gt;5&lt;/span&gt;&lt;span style="color: black;"&gt;:        
addmultiple &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.addfolder.get_filename()

&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; root, dirs, filelist &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; os.walk(addmultiple):
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; allfiles &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; [f &lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; f &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; filelist &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; f.endswith(pattern)]:
self.medialist.append([allfiles,root])

&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Borrar un Archivo&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; clearone(self, &lt;/span&gt;&lt;span style="color: black;"&gt;*&lt;/span&gt;&lt;span style="color: black;"&gt;args):
clearone &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.treeview.get_selection()
(model, rows) &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; clearone.get_selected_rows()
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; i &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; rows:
iteration&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;model.get_iter(i)
&lt;/span&gt;&lt;span style="color: blue;"&gt;print&lt;/span&gt;&lt;span style="color: black;"&gt; iteration
self.medialist.remove(iteration)

&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Borrar Lista&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; clearlist(self, &lt;/span&gt;&lt;span style="color: black;"&gt;*&lt;/span&gt;&lt;span style="color: black;"&gt;args):
self.medialist.clear()

&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Arriba y Abajo&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; updown_move(self, button):
line &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; self.treeview.get_selection()
(model, rows) &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; line.get_selected_rows()
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; button &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; self.up:
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; path1 &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; rows:
path2 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; int(str(path1))&lt;/span&gt;&lt;span style="color: black;"&gt;-&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: black;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; path2 &lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black;"&gt; 0:
&lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;span style="color: black;"&gt;:
iter1 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.get_iter(path1)
iter2 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.get_iter(path2)
model.swap(iter1,iter2)

&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; button &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; self.down:
&lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: black;"&gt; path1 &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="color: black;"&gt; rows:
iter1 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.get_iter(path1)
iter2 &lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; model.iter_next(iter1)
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; iter2 &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; None:
&lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;span style="color: black;"&gt;:
model.swap(iter1,iter2)


&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del comando Guardar Permite guardar una lista&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; showSave(self, widget):        
self.save.run()
self.save.hide()

&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Definicion del Comando Acerca de:    &lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;def&lt;/span&gt;&lt;span style="color: black;"&gt; showAbout(self, widget, data&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;None):
self.about.run()
self.about.hide()


&lt;/span&gt;&lt;span style="color: green;"&gt;#&lt;/span&gt;&lt;span style="color: green;"&gt;Ejecucion del programa&lt;/span&gt;&lt;span style="color: green;"&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: purple;"&gt;__name__&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: black;"&gt;==&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: maroon;"&gt;__main__&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;:
main()
Gtk.main()
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;
bt_code_init('f66dbb27-7ea1-4b5a-b132-21c22883b299');
&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-6028458627659134406?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/08/gtkbuilder-y-python-parte-6.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://3.bp.blogspot.com/-ISnn2wqTe1Y/Tcvrcowz2jI/AAAAAAAABgY/8nxMVdTwrcA/s72-c/Pantallazo-1.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-3413210053352662542</guid><pubDate>Fri, 12 Aug 2011 17:04:00 +0000</pubDate><atom:updated>2011-08-12T12:07:30.842-05:00</atom:updated><title>Subtitulos Automáticos para todas tus Películas</title><description>&lt;g:plusone&gt;&lt;/g:plusone&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Yo soy un muy buen cinefilo, me gustan las&amp;nbsp;películas&amp;nbsp;y muchas veces las descargo del&amp;nbsp;Internet. Me suelen gustar en el idioma original y bueno yo no tengo problema con el ingles, pero a veces vienen conocidos a ver las&amp;nbsp;películas&amp;nbsp;y quieren que tenga&amp;nbsp;subtitulos por eso hay que activar el complemento de totem que hace la vida mas linda y simple. Nada de andar buscando en internet los subtitulos, eso se lo pueden dejar a los usuarios de Windows.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wMP9SBfw7zU/TkVcm_-l7vI/AAAAAAAABpg/DEfEaHUULcE/s1600/Screenshot+at+2011-08-12+12%253A01%253A16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/-wMP9SBfw7zU/TkVcm_-l7vI/AAAAAAAABpg/DEfEaHUULcE/s320/Screenshot+at+2011-08-12+12%253A01%253A16.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Al poner a reproducir una&amp;nbsp;película&amp;nbsp;en Totem, le damos buscar subtitulos y&amp;nbsp;después&amp;nbsp;seleccionamos entre los que aparecen y vemos cual funciona mejor.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vSQauCT9ruY/TkVcmaWS3GI/AAAAAAAABpc/JKCRqG4-dYA/s1600/Screenshot+at+2011-08-12+11%253A59%253A37.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://1.bp.blogspot.com/-vSQauCT9ruY/TkVcmaWS3GI/AAAAAAAABpc/JKCRqG4-dYA/s320/Screenshot+at+2011-08-12+11%253A59%253A37.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Y listo eso es todo, subtitulos&amp;nbsp;automáticos&amp;nbsp;para todas las&amp;nbsp;películas&amp;nbsp;en Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-3413210053352662542?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/08/subtitulos-automaticos-para-todas-tus.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://4.bp.blogspot.com/-wMP9SBfw7zU/TkVcm_-l7vI/AAAAAAAABpg/DEfEaHUULcE/s72-c/Screenshot+at+2011-08-12+12%253A01%253A16.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-3753125343212602862</guid><pubDate>Fri, 12 Aug 2011 16:29:00 +0000</pubDate><atom:updated>2011-08-12T11:30:47.447-05:00</atom:updated><title>Como Poner la Carpeta Windows dentro de la Carpeta Home</title><description>&lt;g:plusone&gt;&lt;/g:plusone&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Soy de las personas que tiene una&amp;nbsp;instalación&amp;nbsp;adicional de Windows 7 porque aun requiere usar el iTunes para sincronizar un iPod de quinta&amp;nbsp;generación. "Gracias Apple por usar una base de datos privativa".&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Bueno, dejando mi odio de lado, la cosa es que muchas veces uno requiere alguno que otro archivo de Windows o requiere guardar algo en Windows pero sin tener que entrar a ese sistema operativo.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Una forma muy&amp;nbsp;útil&amp;nbsp;es montar el disco duro cada que uno lo requiera, pero yo&amp;nbsp;quería&amp;nbsp;una&amp;nbsp;opción&amp;nbsp;mas simple y mas interesante. Por eso lo que hice fue modificar mi fstab para que cargara Windows dentro de mi carpeta home. Ya les muestro como.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--lEcA6xbvwA/TkVURDTEueI/AAAAAAAABpU/VW5nhPqwdZ0/s1600/Screenshot+at+2011-08-12+11%253A23%253A13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/--lEcA6xbvwA/TkVURDTEueI/AAAAAAAABpU/VW5nhPqwdZ0/s400/Screenshot+at+2011-08-12+11%253A23%253A13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Para lograr el efecto de la imagen anterior simplemente necesitamos abrir /etc/fstab con privilegios de&amp;nbsp;administración. Podemos usar el terminal y escribir gksudo gedit /etc/fstab y lo modificamos para que la&amp;nbsp;partición&amp;nbsp;de Windows se monte en una carpeta.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-U4-lhAPaa7Y/TkVU3czU5OI/AAAAAAAABpY/EaKE04WQL7c/s1600/Screenshot+at+2011-08-12+11%253A25%253A40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" src="http://3.bp.blogspot.com/-U4-lhAPaa7Y/TkVU3czU5OI/AAAAAAAABpY/EaKE04WQL7c/s400/Screenshot+at+2011-08-12+11%253A25%253A40.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Con esto es suficiente.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-3753125343212602862?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/08/como-poner-la-carpeta-windows-dentro-de.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://1.bp.blogspot.com/--lEcA6xbvwA/TkVURDTEueI/AAAAAAAABpU/VW5nhPqwdZ0/s72-c/Screenshot+at+2011-08-12+11%253A23%253A13.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-2461770370103428990</guid><pubDate>Fri, 12 Aug 2011 15:52:00 +0000</pubDate><atom:updated>2011-08-12T10:53:21.162-05:00</atom:updated><title>Mis dos Recomendaciones para Compiz</title><description>&lt;g:plusone&gt;&lt;/g:plusone&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Muchos de los que usamos distribuciones Linux sabemos de la existencia del compositor de ventanas mas famoso que ha tenido la comunidad desde hace&amp;nbsp;algún&amp;nbsp;tiempo. En otras&amp;nbsp;épocas&amp;nbsp;se llamaba Beryl y su cubo era un fuerte atractivo para los usuarios de otros sistemas operativos, despues cambio de nombre y hoy en&amp;nbsp;día&amp;nbsp;le decimos a secas Compiz.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sin duda es y&amp;nbsp;seguirá&amp;nbsp;siendo uno de los gestores de&amp;nbsp;composición&amp;nbsp;de ventanas mas usado y extendido en la comunidad.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hoy les voy a dar mis dos recomendaciones para Compiz, me parecen super&amp;nbsp;útiles&amp;nbsp;y creo que aumentan la productividad en todo momento.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero seria el plugin Scale. Este plugin activado como se muestra en la imagen permite ver todas las ventanas que tengamos abiertas con solo arrastrar el mouse sobre la zona verde o hotspot, el plugin se activa para todos los escritorios que tengamos.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HPvUkcNQa4w/TkVJ_Hd9sYI/AAAAAAAABpE/FGQcOFLabMI/s1600/Screenshot+at+2011-08-12+10%253A42%253A20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://3.bp.blogspot.com/-HPvUkcNQa4w/TkVJ_Hd9sYI/AAAAAAAABpE/FGQcOFLabMI/s400/Screenshot+at+2011-08-12+10%253A42%253A20.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Así&amp;nbsp;se ve en funcionamiento.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8xNuDxo9geQ/TkVKokeCdWI/AAAAAAAABpI/6j-8OuJFeos/s1600/Screenshot+at+2011-08-12+10%253A44%253A55.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://3.bp.blogspot.com/-8xNuDxo9geQ/TkVKokeCdWI/AAAAAAAABpI/6j-8OuJFeos/s400/Screenshot+at+2011-08-12+10%253A44%253A55.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Mi segunda&amp;nbsp;recomendación&amp;nbsp;es para las personas que usan mas de un escritorio para abrir sus diferentes programas y es activar el plugin Expo con un hotspot como lo hicimos con el Scale. En este caso lo vamos a poner en la esquina opuesta.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NFT_CyX2evY/TkVLNzBrtrI/AAAAAAAABpM/xOWyI4ql8_c/s1600/Screenshot+at+2011-08-12+10%253A47%253A45.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-NFT_CyX2evY/TkVLNzBrtrI/AAAAAAAABpM/xOWyI4ql8_c/s400/Screenshot+at+2011-08-12+10%253A47%253A45.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
El funcionamiento de este hotspot se puede ver en la siguiente imagen.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uGrqdxxgXWE/TkVL04ymwMI/AAAAAAAABpQ/xwpuFfXCx5Q/s1600/Screenshot+at+2011-08-12+10%253A50%253A02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-uGrqdxxgXWE/TkVL04ymwMI/AAAAAAAABpQ/xwpuFfXCx5Q/s400/Screenshot+at+2011-08-12+10%253A50%253A02.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Con estos dos plugins la productividad aumenta mucho porque se pueden abrir muchos programas y poder cambiar entre uno y otro con mucha velocidad y agilidad es vital para hacer de tu trabajo un poco mas eficiente.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-2461770370103428990?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/08/mis-dos-recomendaciones-para-compiz.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://3.bp.blogspot.com/-HPvUkcNQa4w/TkVJ_Hd9sYI/AAAAAAAABpE/FGQcOFLabMI/s72-c/Screenshot+at+2011-08-12+10%253A42%253A20.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2738913432425957583.post-5750224846944175663</guid><pubDate>Sat, 23 Jul 2011 16:53:00 +0000</pubDate><atom:updated>2011-07-23T11:54:27.393-05:00</atom:updated><title>Wakfu en Linux</title><description>&lt;g:plusone&gt;&lt;/g:plusone&gt;&lt;br /&gt;
Desde hace mucho tiempo tenia pensado agregar esta entrada a mi blog. Bueno resulta que Wakfu es uno de esos juegos online que es bastante interesante.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&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://1.gvt0.com/vi/uXwhN7PVCvU/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uXwhN7PVCvU&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/uXwhN7PVCvU&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Para los que no saben Wakfu es un MMORP donde puedes situarte en una&amp;nbsp;nación&amp;nbsp;y controlar un personaje en muchos aspectos. Pero para no extenderme en la&amp;nbsp;explicación&amp;nbsp;pueden ver que es Wakfu &lt;a href="http://www.wakfu.com/es/mmorpg/descubrir/que-es-wakfu"&gt;aquí&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Lo primero sera descargar Wakfu para Linux desde &lt;a href="http://download.wakfu.com/full/unix/"&gt;aquí&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Lo segundo sera crear una cuenta Online para ello visitando la pagina de Wakfu.com sera suficiente.&lt;br /&gt;
&lt;br /&gt;
Una ves descargado buscamos el archivo y le damos click derecho y le damos capacidad de&amp;nbsp;ejecución.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FXy5dj6H9bE/Tir5r5xkP-I/AAAAAAAABo4/Z51nn4vfGY0/s1600/Pantallazo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://3.bp.blogspot.com/-FXy5dj6H9bE/Tir5r5xkP-I/AAAAAAAABo4/Z51nn4vfGY0/s320/Pantallazo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Lo ejecutamos dando doble click o si quieren ver detalles del&amp;nbsp;código&amp;nbsp;pueden hacerlo desde la terminal invocando el archivo.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;./Wakfu_unix.sh&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Una vez finalizado esto se creara una carpeta en nuetro home con el nombre ankama y dentro una carpeta que dice Wakfu&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Entramos a esta carpeta y le damos click sobre UpLauncher.sh o lo ejecutamos desde la terminal.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;./UpLauncher.sh&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Esto descargara los parches del juego y al finalizar nos&amp;nbsp;permitirá&amp;nbsp;jugar al darle click en jugar.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Si tienen tarjetas aceleradoras intel sera necesario instalar desde el centro de software DRI&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qJzd0epPuXE/Tir7hN7DhJI/AAAAAAAABo8/73tNbKsD9vs/s1600/Pantallazo-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://1.bp.blogspot.com/-qJzd0epPuXE/Tir7hN7DhJI/AAAAAAAABo8/73tNbKsD9vs/s320/Pantallazo-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;Y una ves instalado deben activar la&amp;nbsp;compresión&amp;nbsp;de texturas S3TC.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-u5vFxUEFFjs/Tir754JrROI/AAAAAAAABpA/9eR5hTrZXPM/s1600/Pantallazo-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="309" src="http://1.bp.blogspot.com/-u5vFxUEFFjs/Tir754JrROI/AAAAAAAABpA/9eR5hTrZXPM/s320/Pantallazo-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Nota:&lt;/b&gt;&lt;/span&gt; Este juego utiliza Java por lo consiguiente deben instalar los restringidos de Ubuntu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2738913432425957583-5750224846944175663?l=geowworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://geowworld.blogspot.com/2011/07/wakfu-en-linux.html</link><author>noreply@blogger.com (Jorge Andrés Guerrero)</author><media:thumbnail url="http://3.bp.blogspot.com/-FXy5dj6H9bE/Tir5r5xkP-I/AAAAAAAABo4/Z51nn4vfGY0/s72-c/Pantallazo.png" height="72" width="72" /><thr:total>0</thr:total><enclosure url="http://download.wakfu.com/full/unix/" length="23874585" type="application/x-sh" /><media:content url="http://download.wakfu.com/full/unix/" fileSize="23874585" type="application/x-sh" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> Desde hace mucho tiempo tenia pensado agregar esta entrada a mi blog. Bueno resulta que Wakfu es uno de esos juegos online que es bastante interesante. Para los que no saben Wakfu es un MMORP donde puedes situarte en una&amp;nbsp;nación&amp;nbsp;y controlar un p</itunes:subtitle><itunes:author>noreply@blogger.com (Jorge Andrés Guerrero)</itunes:author><itunes:summary> Desde hace mucho tiempo tenia pensado agregar esta entrada a mi blog. Bueno resulta que Wakfu es uno de esos juegos online que es bastante interesante. Para los que no saben Wakfu es un MMORP donde puedes situarte en una&amp;nbsp;nación&amp;nbsp;y controlar un personaje en muchos aspectos. Pero para no extenderme en la&amp;nbsp;explicación&amp;nbsp;pueden ver que es Wakfu aquí. Lo primero sera descargar Wakfu para Linux desde aquí. Lo segundo sera crear una cuenta Online para ello visitando la pagina de Wakfu.com sera suficiente. Una ves descargado buscamos el archivo y le damos click derecho y le damos capacidad de&amp;nbsp;ejecución. Lo ejecutamos dando doble click o si quieren ver detalles del&amp;nbsp;código&amp;nbsp;pueden hacerlo desde la terminal invocando el archivo. ./Wakfu_unix.sh Una vez finalizado esto se creara una carpeta en nuetro home con el nombre ankama y dentro una carpeta que dice Wakfu Entramos a esta carpeta y le damos click sobre UpLauncher.sh o lo ejecutamos desde la terminal. ./UpLauncher.sh Esto descargara los parches del juego y al finalizar nos&amp;nbsp;permitirá&amp;nbsp;jugar al darle click en jugar. Si tienen tarjetas aceleradoras intel sera necesario instalar desde el centro de software DRI Y una ves instalado deben activar la&amp;nbsp;compresión&amp;nbsp;de texturas S3TC. Nota: Este juego utiliza Java por lo consiguiente deben instalar los restringidos de Ubuntu.</itunes:summary></item><language>en-us</language><media:rating>nonadult</media:rating></channel></rss>

