<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-6125649492882325530</id><updated>2021-12-06T16:03:14.591-03:00</updated><category term="java" /><category term="mozilla" /><category term="ubuntu" /><category term="firefox" /><category term="javaME" /><category term="moz-ar" /><category term="noticias" /><category term="eclipse" /><category term="html5" /><category term="jQuery" /><category term="seam" /><category term="TDA" /><category term="android" /><category term="css" /><category term="javascript" /><category term="linux" /><category term="pensamientos" /><category term="swing" /><category term="web" /><category term="conky" /><category term="diseño" /><category term="escoba de 15" /><category term="flash" /><category term="gimp" /><category term="google" /><category term="humor" /><category term="internet" /><category term="jboss" /><category term="lwuit" /><category term="macross" /><category term="matrix" /><category term="mousepen" /><category term="mysql" /><category term="netbeans" /><category term="oracle" /><category term="osgi" /><category term="palm" /><category term="portal" /><category term="portlets" /><category term="robotech" /><category term="sun" /><category term="thunderbird" /><category term="webgl" /><category term="webkit" /><category term="xhtml" /><title type="text">{entre llaves}</title><subtitle type="html">programación, tecnología, internet, linux, java, android y otras cositas</subtitle><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>51</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/atom+xml" href="http://feeds.feedburner.com/entrellaves" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="entrellaves" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-6237956575765130119</id><published>2016-07-30T19:48:00.000-03:00</published><updated>2016-07-30T19:48:03.834-03:00</updated><title type="text">Convertir un GIF animado en una hoja de sprites</title><content type="html">&lt;a href="https://2.bp.blogspot.com/-cho1H-TCv_0/V50spGuybGI/AAAAAAAAH18/Uhd1wACjqTQTF6uFRXrV421lYb1n6TqzQCLcB/s1600/4-frame-walk-cycle.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="https://2.bp.blogspot.com/-cho1H-TCv_0/V50spGuybGI/AAAAAAAAH18/Uhd1wACjqTQTF6uFRXrV421lYb1n6TqzQCLcB/s1600/4-frame-walk-cycle.gif" /&gt;&lt;/a&gt;Buscando animaciones de ejemplo para crear animaciones de sprites, me encontré con &lt;a href="http://www.manningkrull.com/pixel-art/walking.php"&gt;este artículo&lt;/a&gt; que explica cómo hacer el típico &lt;a href="https://en.wikipedia.org/wiki/Walk_cycle"&gt;ciclo para caminar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Quería convertir a spritesheets los GIF animados, para usarlos como referencia al crear mis propios sprites en &lt;a href="https://inkscape.org/"&gt;Inkscape&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Primero convertí el GIF animado en imágenes separadas, usando en Linux el comando 'convert' de &lt;a href="http://www.imagemagick.org/"&gt;ImageMagick&lt;/a&gt;: &lt;br /&gt;&lt;br /&gt;convert -coalesce animation.gif target.png&lt;br /&gt;&lt;br /&gt;Este tip lo encontré en &lt;a href="http://askubuntu.com/a/387998/323443"&gt;StackOverflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Después, para combinar todas las imágenes en un solo spritesheet hay varias maneras. Decidí usar &lt;a href="https://www.gimp.org/"&gt;GIMP&lt;/a&gt; y un script genial, llamado &lt;a href="http://registry.gimp.org/node/25129"&gt;Fuse Layers&lt;/a&gt;, que hace exactamente esto.&lt;br /&gt;&lt;br /&gt;Descargamos el script, lo copiamos en $HOME/.gimp-2.8/scripts/fuse-layers-0.1.scm. Abrimos GIMP. Usamos Archivo -&amp;gt; "Abrir como capas...". Seleccionamos todas las imágenes que van a formar nuestro spritesheet. Luego usamos el script o plugin de GIMP que instalamos antes. Lo encontramos en Filtros -&amp;gt; Combinar -&amp;gt; "Fuse Layers". Se abre un popup que nos pide un número. Es la cantidad de imágenes o columnas que queremos por fila (cuántos sprites de ancho tendrá el spritesheet). Y listo!&lt;br /&gt;&lt;br /&gt;&lt;a href="https://1.bp.blogspot.com/-LWDiieVT_5c/V50s4bo-TxI/AAAAAAAAH2A/1Bvbww1dmq0u6DvSJAo_Qyw--GiOrLrmgCLcB/s1600/220px-Walk-cycle-poses.jpg"&gt;&lt;img border="0" src="https://1.bp.blogspot.com/-LWDiieVT_5c/V50s4bo-TxI/AAAAAAAAH2A/1Bvbww1dmq0u6DvSJAo_Qyw--GiOrLrmgCLcB/s1600/220px-Walk-cycle-poses.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt; Yapa:&lt;/h3&gt;Cuando se trabaja con animaciones en GIMP, es conveniente tratar cada cuadro de la animación como una capa. Así podemos probar cómo queda la animación usando el Filtro de Animación "Reproducción...", que nos hace una previsualización de la misma.&lt;br /&gt;&lt;br /&gt;Cuando tenemos varias animaciones en la misma imagen, por ejemplo: caminar, saltar, atacar, etc., puede ser conveniente agrupar las capas en grupos. Pero hay un detalle. La opción de agrupar capas no funciona con imágenes en modo 'indexadas', solo en modo RBG. Y cuando importamos un GIF las imágenes quedan modo Indexado por defecto. Así que basta con cambiar de modo. Entonces, si la opción de crear un grupo de capas está desactivada... ya sabemos a qué se debe, y cómo solucionarlo :)</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/6237956575765130119/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=6237956575765130119" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/6237956575765130119" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/6237956575765130119" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2016/07/convertir-un-gif-animado-en-una-hoja-de.html" title="Convertir un GIF animado en una hoja de sprites" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-cho1H-TCv_0/V50spGuybGI/AAAAAAAAH18/Uhd1wACjqTQTF6uFRXrV421lYb1n6TqzQCLcB/s72-c/4-frame-walk-cycle.gif" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-4321964009697969650</id><published>2016-01-28T19:29:00.000-03:00</published><updated>2016-01-28T19:32:25.396-03:00</updated><title type="text">Corebird: exportar fragmentos</title><content type="html">Hice este script para exportar los fragmentos que creamos en &lt;a href="http://corebird.baedert.org/" target="_blank"&gt;Corebird&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;cat export-fragments.sh&lt;br /&gt;#!/bin/bash&lt;br /&gt;sqlite3 Corebird.db &amp;lt;&amp;lt;!&lt;br /&gt;.output fragments.sql&lt;br /&gt;.dump snippets&lt;br /&gt;!&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Para importar la tabla, después hacemos:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;sqlite3 Corebird.db &amp;lt;fragments.sql&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;NOTA: habrá errores de importación si la tabla, o los datos, ya existen.&lt;br /&gt;&lt;br /&gt;La idea es simple: usar el autocompletar para reemplazar emoticones por emojis. Por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;PRAGMA foreign_keys=OFF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;BEGIN TRANSACTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;CREATE TABLE `snippets`(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;&amp;nbsp; id INTEGER PRIMARY KEY AUTOINCREMENT,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;&amp;nbsp; key VARCHAR(20),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;&amp;nbsp; value VARCHAR(200)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(1,'dealwithit','(•_•) ( •_•)&amp;gt;⌐■-■ (⌐■_■)');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(2,'tableflip','(╯°□°）╯︵ ┻━┻');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(3,':)','&#x1f642;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(4,':(','&#x1f641;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(5,'xD','&#x1f606;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(6,';)','&#x1f609;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(7,':P','&#x1f61b;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(8,';P','&#x1f61c;');&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(9,'&lt;- br=""&gt;INSERT INTO "snippets" VALUES(10,'-&amp;gt;','&#x1f806;');&lt;!-----&gt;&lt;!-----&gt;&lt;!-----&gt;&lt;!-----&gt;&lt;!-----&gt;&lt;/-&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(11,'+1','&#x1f44d;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(12,'-1','&#x1f44e;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;INSERT INTO "snippets" VALUES(13,'ok','&#x1f44c;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;COMMIT;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Entonces, escribiendo xD y pulsando la tecla &amp;lt;tab&amp;gt;, se reemplazará por &#x1f606;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/4321964009697969650/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=4321964009697969650" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/4321964009697969650" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/4321964009697969650" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2016/01/corebird-exportar-fragmentos.html" title="Corebird: exportar fragmentos" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-909353702825842675</id><published>2016-01-24T20:36:00.002-03:00</published><updated>2016-01-24T21:03:40.435-03:00</updated><title type="text">Icono alternativo para Argentum Online</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-e0RLvH0RSxA/VqVdoBZmO-I/AAAAAAAAHdI/M8gC6gSN4NQ/s1600/ao.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-e0RLvH0RSxA/VqVdoBZmO-I/AAAAAAAAHdI/M8gC6gSN4NQ/s200/ao.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;helvetica neue&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;El servidor oficial de Argentum Online hace poco publicó la versión 1.0. Hay muchísimos cambios y mejoras, es una importante renovación y la esperada versión 1.0.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;helvetica neue&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;Lo instalé en Ubuntu usando Wine, y la verdad que funciona muy bien. La instalación sobre Wine tuvo sus complicaciones, &lt;a href="http://foro.comunidadargentum.com/threads/13-Gu%C3%ADa-para-instalar-AO-en-Linux" target="_blank"&gt;hay varias guías&lt;/a&gt; al respecto de cómo solucionar cada problema, pero finalmente quedó funcionando perfectamente.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;helvetica neue&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;trebuchet ms&amp;quot; , sans-serif;"&gt;El único detalle, y uno muy menor, es que el icono del lanzador de AO es de muy baja resolución, y quedaba feo en mi escritorio. Así que hice un nuevo icono alternativo, muy simple, y de diseño similar al original.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;trebuchet ms&amp;quot; , sans-serif;"&gt;Lo comparto por si alguno quiere usarlo: &lt;i&gt;&lt;b&gt;&lt;a href="https://drive.google.com/open?id=0B4r8Qw_AdfRlbzA0OFpyMkpvZjA" target="_blank"&gt;Descargar iconos (svg + png)&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/909353702825842675/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=909353702825842675" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/909353702825842675" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/909353702825842675" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2016/01/icono-alternativo-para-argentum-online.html" title="Icono alternativo para Argentum Online" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-e0RLvH0RSxA/VqVdoBZmO-I/AAAAAAAAHdI/M8gC6gSN4NQ/s72-c/ao.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-7668717105364234647</id><published>2014-08-14T20:28:00.001-03:00</published><updated>2014-08-14T20:28:38.351-03:00</updated><title type="text">Iconos adicionales para Ubuntu Unity</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Hace un tiempo hice un par de iconos adicionales para el área de notificaciones de Ubuntu Unity. Son iconos para aplicaciones que no siguen el estilo la interfaz Unity, así que los adapté para que no queden fuera de lugar.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;El de JDownlader va en la carpeta JDownloader/jd/img/logo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;a href="data:;base64,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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" height="200" src="data:;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QgGCSwSsjaQJQAAENtJREFUeNrtnWlTW1l6x3/nSldolwAJs4PY2mazwTZuT9zdLyZVSaamKsmLpPI2lS8yXyjLZHp6OtOL7abttt22AZvFG7vEIgkkgYT2e/MC8IbdLQkJJHT/qltUCenW1Xn+59nOeZ4j/uPf/1VFQ9VCD5r8q5oAqib/aieAxoCqJoCiaASocgIo2ihUtQnQCKCZAA1aFKBBywNoqEZI2hBoBNBQ3SagsiHLMlarFVmWMRqNdHk8NDc1I0kSiqL8ooETgE6nI7YXY35+nrW1dSSdRCwWIxqNagQoywfW67HZ7NhsNurrajl//jxNjY2YrVZ0koROp0On05FPhlMAF4eHyShZstksW8EtlldWmH/1ir14nHA4TCwWO6NRQLnbKElCkiRqa500nmukubmZtvY26mvr0Ov1mM1mJOmoJRNC5KdJDAbkg+9ZzBaampq4dPEiqWQK35qPVa+XtbU1/IEAe3t7AJyFNLqeMv0RkiRhMVvo6emhta2VBrcLt8tNjdGIwWDIe5bnClVVEUJgMBgwGAwAOJwOenp6iEajbG5usrGxwcLiIuvr66RSqYomgPi3f/m9Wm6CN5lNeDo9DA4M0N7ejsViQZblvGd10QdLCDKZDIlkku3tbV68eMHc3CyBQLBiiVA2JuBQ9XZ0tNPf3097Wzv19XVIkoQQoizUraqq6HQ6LGYzVosFt8tFl6eLZ8+f8fLVS4LBrYojQlk4gQaDgdaWFoaGhujydNFwzo1A4jBJVY62VlVVjEYjHk8nDQ1uerq7mZ2b49nz50QiESplkU1/2rPe6XTS093NpYsX8Xg8bzl0leNgWSwW+nr7aGhowOV2MTMzi8/nI5lMlv2z6wYGev9wWsLvaGvn+m+uMzIyQmtLywe9+UqCyWTiXEMD7oYGhBCEwxGSqWSZa4BTmGhms5muri7GrlzhwoXzHK5IVnpYpaoqBkMNXZ0e6utcOOwOpp48IRAIkMlkylQD9PedqAaw2+1cHh3l8xs36Ozs5CxuSRNCYKypobW1FafDwW40SjgcLsvfeqI+gNPp5PLlUcauXKG2to6zikNBy7LM+fPn0ev1SJLE/KtXZMvMOTwREyBJEm1trYyOjDAwMIjdbqMaNqOqqookSfT09GCsMVJfW8fM7Cw7OzvVowGEEHT3dPP5jRt0eTzIB9m1aoIkSXR0tFNbV0ttXS23bt5iLx4vl0SQWlLh9/R288UXn9PV6SlZ+rYitMGB/zN29SqqojB+5w67u7unT07Ug6crweWqdzF2dYyerm70ej3VDlVVMZvNjI1dZXhoCElIlHL8c7lKFnjbbFZGRkbo7upCCAmtAOVtElgYHR3lk76+s+kDOJwOrl65ypXLo1gsVrR9h0fR1NjIZ599hirg5YuXZLPZsxEFyHo9/RcucP3Ta9jtdm3mf2zg9Xo8nk5AJRwKs7G+cTo+gErxXghobW/l4tAQdptNE34OJGhra+XSpWHMFjPqKbyK6gPU1dUxOjpKd08PnPLafaX4A0ajiUuXRujv70en051CFFAk1NTU0NfbS29PLwK02Z+Pz2S3MzjQT2tLS2USYD/T18bwxYu4XHWomtOXlxbQ6/V0dnYyPDyE0+GoPAJYrVaGh4bo7vKgqira5M+fBFarlcGBAbq7u09069uxG0TodDra29vo7u5CkrR4v1AoioLNbqfvkz5WVlbwBwKVoQEsFgtDg4OcO3dOk+IxYTAY8Hg8dHR6KsME6HQ6uru7aW/vQFU1x+/4pgCsFiu9Pd24XK7yJ4DNamV4cBCXq16L+opDAQwGme5uD709PSeVCCpsHUFIEn2ffEJ7RxuSJLTZ/55Td/j38MprYtnsXLhwnsbGxpKvB0kHujvvSxKC1pZmzCYzWpeRo2FxMBhkbm4Of8BfkGl1uVzU1dVRqHxylmOhzHG73Zw714i+DCp2yhGhcJifHz5kYmKSVDqd8xgdagubzUZLSwuGmpoSa4ACIISgsanxdeWOhqNClCSJ7VCYickp5p7NoShKXiQwGo00NzeVPDFUkPT0ej0tLS2YTKZ3WKvhzQQRQqDT6QgEAkw8niSQR1x/+P36urp9M1BuBHA47LS3tb2untXwkcE9mPHLKys8eTpNNptBkJsW2C+Jr6WpqQmDQS5hFPCWp5rr1djYSIPbfSqrV5UV1O0jEonwdHqaSGSXXOR/qFHNZjPNzU3YbHYKkVMul1SIeuvu8mA0GlFVRVP/uTqFoRCv5udzHi9V3a8faG5qwl3CpFDeBJBlmbq6+oO8vybYXJFMJlldXc2DAPt/zSYTVqulZM523nd1OOw0NTUh62VNqnkglUqxsLBAMBjM63tWmw2Xy10yfytvAuhlGZvFClronzfCkQirXl9eeROdXo/JZCqZv5V3q1iT0YSiag2mc/IA30q6AWSzCru7O/l1PFH31wd0utK0c8pbA/T19iLLsub8FZQgUogddBjLNSEE0Hiukbra2vIwAU2NTeh0WpVPIUinM/i8PlJ5No2wO+yYzebyIMC+/VI1DVAAstks/k0/sdheXn6AQJRsvSVvAmgnjBwP++OX3+QpZEm5ZATQcDwISaKcQijt1LCSOn1q0WavWiKzq2mAE0aNwYAQ5TPsGgFO2hEswAcosQnIV61pQsxNZR9c6rtjthdPHIZT+Q2mWpqxL+DMII0BeVLgnTHT66T9lb6CpKn5AJUfBZTZGop2bFxJo4CjJqDQ8VZLZAIK2g+g4ewgbwKEQiGtDuAsESDfWoLZZ8/IZNJaLUCOPuCHxvC4EUUxr7yjgGAwiKoo+11ANDHnEQkU616nbAIymQy70RioqrYpqBp9gJ2dXdbW1sgoitYIqhoJkEgkCIXC2rJwtRJACMHGxibpdFobvTOAvJeDVVVlYXGRUDiMyWTKO6VdVS6genQzh3qMTFDZLAeHwiGWl1dIp9NltbSp4YQIsLcXZ3FxiXg8ru0NrEYCAHh9PiKRHY0A1UqAQCDAysoqqVRKywpWMgEKLSve24vz7MVzdsrg2JOydAB5s4/v/auQm73tUJ5qefjb3uzS0jL+Tb8m7Wo0AQDhcIS5Z8+J7OxoxaLVSIBsNsv09AxLy8sIyLn9iYYzQgCA4NYWM9OzbIfCmhaoQBy7MCSTyTA9M0tTUyO/uf6p1jjqLc/tQ46fqhZ2mkJZF4aEQiGePJ3G51sD0MLCajIBh6xeXfUyPTPD3l5MG9VqIwBANBplenqWhYWl140ONVQAAYrZd3Z9Y4N7Dx6wvr6upYg/MkbFvFcxrqI2nkmlUsxMz2KxWPjdP/wdToezeonw/i7ON/aysJuVqDBAKjaj9hIJnk7P8PDhY+LxeNWbgnLXAiVZzA+Fwty5e4/7Dx6SSCQ1f6AanMC3oSgKa+vr3P5hnJ8fPSKRSGgkqCYCHIaGvrU17t17gNfrRVVVjQRliJK3iFn1ehm/8xOZrIKnswOj0VgVO4rf+IDvZQJRC3IESnUqW8k39MXjcX66d5///p//5fHkFLFYrAo0gYpOJ1XE7zyRjo+HO4kTiQRKJsPoyAgmk6lizhjOZLPE43EymczBepf4+MKXqmIymYhGY2QyGY0Ab2NtfZ1vb95CAUZHLmE+OHKmnCGEIJlMMjX1lPmFBdKpNJJO+sWYXJZltsNhAsFg2edBTrznq9fr489f/YVgcIu/uf4pbrer7ElgNplw1ddx5+5d5hcWNSfwuAgGt/jzV39hc3OTf/6nf8TpdGAo08YThyeAtbe3cXF4iO1QiO3t0LHuV+j3SiGrU+36/PDRYzY2N7l+7RqfXhvDYjGX5TlE+8e7W/j8sxsoqsr3N28RiewUmCMpL5Nw6m2/vV4fX0e+YXFpicGBfi6PjmAwGMruPEJFUbFYLIyOXMTnW+PR4wmy2ew7n3E6nRhkPYqivHFv35N3fX3d/kzOo6ZOkgR2m41apxMhSUf9T3F4QpkgsrNDKpXK3cf5299+VhaUlCQJq9XKb65/yvDwIOfcbsxmM3p9ebWmV1SFpeUVvvzyK6anZ9+JZK5fG+Py6AgW68eP05VlAy0tzTmbPCEEqVQKfyBANBo7UpGvHnxGJ0mEw2H+87/+SCCPY2n05TPDFHZ2drh16zazc3O4XS4GB/rp77+A3WYrm0MqJCHhdtXT1tbKq/kF4vH46/+9ml9g+OIwnR2dyHr5g2FuIcW4sizT0tz8cR9FJ5FOpfH51vKu09B5utr/UF4xd4ZIJML6xgbLyytsbG6SzWapqalBkiQEKpKkO3FypjMZ9uJxNjY2efbsObNzc/gDgXeymrG9PUwmE22trVgslo/O6GImiIQQZLMKs3Nz/OmrrwiHw3n6AGUapqqqSigU5tGjCZaXV2hrbaXL4+FcYwMNbjdWsxm9LGOoqUESoqg+QzabRVGyJBJJMuk026Ewfr+fVa+PpeVlgltb7O5GyaSPJnrm5p7R1tLK2NUr2GyWkpfOK4rCixcv+Prrb1hf26g8JzCXH+j3B/D7A7x4+Ypap4OGhgZqnU4cDgft7a1YLVYcDgeyrEcv6/cjCfXNDPklkgkhUFSVTDpNOpMhk04TCATZjUVZXFomEY/j9/sJbm0TDkd+1cEKBrf47vubyLKesbGrGGtqSmq6FpdW+O77W7x4+bIyo4B8sLu7y+7uLiurXmRZxmw24aqvx2a3UV9bh8VioaHBjdPpQAjp9embHycA6HQ6kskkm5t+tkPbpJIp1jc3icViBINbZNJpMu95+7+GTb+fuz/do6HBTV9v78Ehm8UlgRCCDb+fH+/cYXpm9hhhYIXu2Eqn0kRSaSLhndcDYpBlnE4nVps1tzZ2B0meVDpNKBQmGo2+1jrHnpmLS/zwwx2sVittra1FJ0AikWRyYoqJiakPmqIzqQF+zWdIplJs+v1s+k+/YDWTyTIxOYXNbuP3v/t7bDZb0UiQzWaZmJzk7k/3X5O2YAKoWrvHkiGZSvL48QRut4vr18aOffSbEAIVlfmFBcZ/vIPX5y1CJlCTf0mxvR3i5s3byHo9X3x+AxAFaYLD8DEYCHLv3s8sLa0UpXGo1uHpBEzT+voG4+N3WFpaQYjCSueEEPg3/fzfX79lYnKKRCJRlOfTdXaWVyLorGJnd5dQKERHZwcWq7WAZE+Wb2/e4ofxO+we0+6/QwBPh0aAE9EEikpwa5tYNMb5T/pyrqIWQpDJZnn48BG3bo+ztbVd1OeSSld0pF3vX5lMmsnJKR48eEgymcw5LTw/P8/t2+Osr68X/Zn0mg94sojF49we/xGX28XQ4MBHsxWHvAgGt7h79z7zC4sHR85RbA2g4aTh9a3x/c3bLC4ufXCtYN9RhMDWFt/dvMnjiUlSJerNrBHgVJJEGWZm5/j6r98SiewcMQVCCBKJNE+mpnnw4FFRnT6NAGWCVCrFzOwcT6enSaXfHMEjhEBRVLxeL5NTT9ja3i7pc2gEOEVEo1G++fYmc7PP3lllDIVC3HvwM89fFLLCp37kPfXd18EmU+308FPGqtfLH//0JXq9joGBfiI7u9we/5F79x6QTCYLDTpz/qReE8HpQlEUVr0+7v/8ELPFzMLCIuM/3j2xFryaBigDJJNJ7j94iG9tnfhenO3tUIk2kRzNOei1QyDLJD8Q2+P585e/mBPIR7Afvo+qaYBKxPsiekMIkbPNf1OGIDQCVB7EBxy8o3uejtQMqIfvibdIpGoEqDzBqx+YyepbQhcf1BRv3lNf5xi0PEBlKf9fNQf5dA750Oc0ApSx3T8J5fz/7ECjn3p7R3MAAAAASUVORK5CYII=" width="200" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Y el del HP Device Manager va en la carpeta /usr/share/hplip/data/images/32x32&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;a href="data:;base64,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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" height="200" src="data:;base64,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" width="200" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Por el momento son solo estos dos íconos :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/7668717105364234647/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=7668717105364234647" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/7668717105364234647" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/7668717105364234647" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2014/08/iconos-adicionales-para-ubuntu-unity.html" title="Iconos adicionales para Ubuntu Unity" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-9084558071897705810</id><published>2014-06-12T15:53:00.000-03:00</published><updated>2014-06-19T08:53:00.138-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TDA" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Cómo compartir la TDA por la red local usando Ubuntu</title><content type="html">Usaremos la aplicación &lt;a href="http://mumudvb.braice.net/mumudrupal/"&gt;MuMuDVB&amp;nbsp; (Multi Multicast DVB)&lt;/a&gt; para hacer el streaming sobre la red. Es una aplicación de consola, que puede quedar corriendo como un servicio o demonio. Queremos hacer multicast por UDP en la red local, para usar el mínimo de recursos, y que puede soportar cualquier cantidad de clientes recibiendo el streaming.&lt;br /&gt;Otra alternativa sería hacer unicast por HTTP, pero no lo veremos aquí.&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/-cz3FWZUV64Q/U5xe-oGAuEI/AAAAAAAADuc/GAO-59OzjLE/s1600/digrama.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-cz3FWZUV64Q/U5xe-oGAuEI/AAAAAAAADuc/GAO-59OzjLE/s1600/digrama.png" height="185" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;1) bajar MuMuDVB&lt;/h3&gt;En Ubuntu 12.04 está la versión 1.6.x de MuMuDVB. Para esta guía, se usó la versión 1.7.2 &lt;a href="https://github.com/braice/MuMuDVB/archive/1.7.2.zip"&gt;(enlace directo)&lt;/a&gt;, descargada directamente de su sitio oficial:&amp;nbsp; &lt;a href="http://www.mumudvb.net/node/25"&gt;http://www.mumudvb.net/node/25&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para descomprimir el archivo, compilar e instalar el programa, seguimos estos comandos:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;unzip MuMuDVB-1.7.2.zip&lt;br /&gt;cd MuMuDVB-1.7.2&lt;br /&gt;./configure make&lt;br /&gt;sudo make install &lt;/blockquote&gt;&lt;br /&gt;Nota: puede ser necesario instalar antes las herramientas de compilación, si no se instalaron anteriormente:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo apt-get install build-essential&lt;/blockquote&gt;&lt;h3&gt;2) crear el archivo de configuración mumudvb.conf&lt;/h3&gt;&lt;blockquote class="tr_bq"&gt;freq=527&lt;br /&gt;bandwidth=6MHz&lt;br /&gt;autoconfiguration=full&lt;/blockquote&gt;El dato freq es muy importante. Indica en qué frecuencia de canales se va a sintonizar el receptor de TDA.&lt;br /&gt;El bandwidth es el ancho de banda, que para Argentina es siempre 6 Mhz.&lt;br /&gt;El parámetro autoconfiguration=full hace una configuración automática, agregando todos los canales que se encuentren disponibles en esa frecuencia.&lt;br /&gt;&lt;h3&gt;3) configurar la direccion de multicast en la placa de red:&lt;/h3&gt;&lt;blockquote class="tr_bq"&gt;sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0&lt;/blockquote&gt;Para habilitar el broadcast de paquetes UDP sobre la LAN conectada a dicha interfaz de red ethernet, en este caso la eth0.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;4) arrancar el servidor MumuDVB:&lt;/h3&gt;&lt;blockquote class="tr_bq"&gt;mumudvb -d -c mumudvb.conf&lt;/blockquote&gt;Para ver información más detalla, se puede agregar el parámetro -v, por ejemplo:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;mumudvb -v -d -c mumudvb.conf&lt;/blockquote&gt;El parámetro -d indica que no quede corriendo como servicio (don't demonize).&lt;br /&gt;El parámetro -s muestra la fuerza de la señal, que puede ser muy útil.&lt;br /&gt;El parámetro -h muestra una pequeña ayuda con información sobre otros parámetros.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;5) Para reproducir el streaming desde las otras PCs:&lt;/h3&gt;Las otras PCs pueden tener Linux, Windows, o cualquier sistema operativo. El reproductor de video recomendado es VLC (VideoLan Client) &lt;a href="http://www.videolan.org/"&gt;(descargar aquí)&lt;/a&gt;. Es recomendable usar la versión 2.0 en adelante.&lt;br /&gt;Se debe una URL de la forma:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;udp://@239.100.0.X:1234&lt;/blockquote&gt;donde 239.100.0.x es la IP de brodcast que informó MuMuDVB más arriba. En la configuración automática de MuMuDVB, el último número de la IP arranca en 0 (cero) para el primer canal, y continúa con 1, 2, ..., correspondientes a los siguientes canales, con tantos canales como se hayan detectado y configurado. &lt;br /&gt;&lt;br /&gt;Ejemplos de cómo iniciar VLC o Mplayer (otro reproductor) desde la línea de comandos:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;vlc udp://@239.100.0.0:1234&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;vlc udp://@239.100.0.1:1234&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;mplayer udp://@239.100.0.0:1234&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;Notas: &lt;/h3&gt;Cada canal tendrá una IP distinta. Con un solo receptor, solo se podrán ver los canales que compartan la misma frecuencia, normalmente entre 2 y 4 canales. Para poder sintonizar más frecuencias, se necesitan más adaptadores USB, cada uno sintonizado en diferentes partes del espectro, y cada uno haciendo broadcast con IPs distintas.&lt;br /&gt;&lt;br /&gt;Con la configuración automática de MuMuDVB, se agregan todos los canales de la frecuencia. Si solo queremos un canal, podemos hacer una configuración manual. Un ejemplo de configuración manual con 2 canales:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;freq=527&lt;br /&gt;bandwidth=6MHz&lt;br /&gt;&lt;br /&gt;ip=239.100.0.0&lt;br /&gt;port=1234&lt;br /&gt;name=TV Publica HD&lt;br /&gt;pids=258 289 290 291 288&lt;br /&gt;&lt;br /&gt;ip=239.100.0.1&lt;br /&gt;port=1234&lt;br /&gt;name=TV Publica SD&lt;br /&gt;pids=259 305 306 307 304&lt;/blockquote&gt;&lt;br /&gt;Y otro ejemplo de configuración manual con un solo canal:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;freq=533&lt;br /&gt;bandwidth=6MHz&lt;br /&gt;&lt;br /&gt;ip=239.100.0.1&lt;br /&gt;port=1234&lt;br /&gt;name=DeporTV&lt;br /&gt;pids=257 272 273 769&lt;/blockquote&gt;El número de frecuencia (freq) corresponde a los 3 primeros dígitos del archivo canales_tda.conf que usa VLC, que creamos en el &lt;a href="http://entrellaves.blogspot.com/2014/06/como-ver-la-tda-en-ubuntu.html"&gt;artículo anterior&lt;/a&gt;.&lt;br /&gt;Obtener los números de PIDs (Program IDs) puede ser algo complicado. La forma más fácil y directa es arrancar MuMuDVB en autoconfiguration=full, en la frecuencia deseada (freq), agregando el parámetro -v para obtener los PIDs de los canales deseados. Después copiamos esos PIDs y así podemos configurar a mano solo los canales deseados.&lt;br /&gt;Pueden crearse varios archivos de configuración, uno por cada frecuencia y canales que se deseen transmitir, y luego reiniciar MuMuDVB con el archivo de configuración deseado en cada momento.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Alternativas: &lt;/h3&gt;Como alternativa a MuMuDVB, tenemos al fantástico &lt;a href="https://tvheadend.org/"&gt;TvHeadend&lt;/a&gt;. Se configura y se administra totalmente por web, y puede integrarse con &lt;a href="http://xbmc.org/"&gt;XBMC&lt;/a&gt; (un completísimo centro multimedia) mediante un plugin. TvHeadend tiene muchas funcionalidades adicionales, como la posibilidad de cambiar de canales vía web, funciones de DVR para programar la grabación automática de nuestras series o programas favoritos, ver la guía de programación que emiten algunos canales, etc. Pero quedará para otro artículo, porque es muy extenso en si mismo :) &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Fuentes&lt;/b&gt;&lt;/i&gt;:&lt;br /&gt;Toda la documentación provista por estos programas y sus sitios web. &lt;br /&gt;&lt;a href="http://gcp.fcaglp.unlp.edu.ar/_media/integrantes:psantamaria:tdt:charla-jrsl2011.pdf"&gt;http://gcp.fcaglp.unlp.edu.ar/_media/integrantes:psantamaria:tdt:charla-jrsl2011.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;u&gt;&lt;b&gt;Actualización 19/06/14:&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;En el sitio de Fabio, hicieron una buena nota explicando otra alternativa para &lt;a href="http://www.fabio.com.ar/6015"&gt;emitir TDA por streaming en LAN&lt;/a&gt;, pero usando solo VLC. Ambas opciones tienen sus ventajas y desventajas. Si conocen más alternativas, no dejen de comentarlo :)</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/9084558071897705810/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=9084558071897705810" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/9084558071897705810" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/9084558071897705810" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2014/06/como-compartir-la-tda-por-la-red-local.html" title="Cómo compartir la TDA por la red local usando Ubuntu" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-cz3FWZUV64Q/U5xe-oGAuEI/AAAAAAAADuc/GAO-59OzjLE/s72-c/digrama.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-5038649807117268417</id><published>2014-06-12T11:53:00.004-03:00</published><updated>2014-06-16T20:17:44.144-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TDA" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Ver TDA (Televisión Digital Abierta) en Ubuntu</title><content type="html">&lt;a href="http://3.bp.blogspot.com/-288T1eUzbSU/U5m6glh_jEI/AAAAAAAADtc/HaxIjwLtTT4/s1600/8.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-288T1eUzbSU/U5m6glh_jEI/AAAAAAAADtc/HaxIjwLtTT4/s1600/8.jpg" height="117" width="200" /&gt;&lt;/a&gt; Para ver TDA (Televisión Digital Abierta) con un adaptador USB en Linux, se necesita alguno que tenga un chipset compatible. Algunos adaptadores tienen chipsets que solo funcionan en Windows, así que hay que elegir con cuidado al momento de comprar. Los dos modelos más conocidos y que funcionan perfecto son: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;PixelView PlayTV FullSeg SBTV &lt;/li&gt;&lt;li&gt;Mygica S870 &amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vnQGa7ImST8/U5m0-sde3LI/AAAAAAAADsE/plLTFvqYF4c/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-vnQGa7ImST8/U5m0-sde3LI/AAAAAAAADsE/plLTFvqYF4c/s1600/1.jpg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-8Xb0vKgwXOM/U5m1DieEa6I/AAAAAAAADsM/PMUiVmam7C0/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-8Xb0vKgwXOM/U5m1DieEa6I/AAAAAAAADsM/PMUiVmam7C0/s1600/2.jpg" /&gt;&lt;/a&gt;&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/-PUxqJVhLTYU/U5m4a_hWfYI/AAAAAAAADso/eyPR_5QOQTo/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-PUxqJVhLTYU/U5m4a_hWfYI/AAAAAAAADso/eyPR_5QOQTo/s1600/4.jpg" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-zxTTlp311uc/U5ou9YMKyzI/AAAAAAAADts/VIv5xwEyPxY/s1600/3.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-zxTTlp311uc/U5ou9YMKyzI/AAAAAAAADts/VIv5xwEyPxY/s1600/3.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;El PixelView es muy difícil de conseguir y no lo vi más en el mercado. El Mygica s870 se consigue fácilmente, pero hay que tener cuidado que sea el modelo s870 y no otro, porque los demás modelos de Mygica NO funcionan  &lt;br /&gt;&lt;h3 wrap=""&gt;1) Actualizar kernel de Ubuntu 12.04 a 3.5.x o posterior&lt;/h3&gt;Ante todo, con Ubuntu 12.04 hay que actualizar al kernel 3.5 o posterior. Originalmente venía con el kernel 3.2.x, pero no funciona correctamente el driver en esa versión. Recomiendo actualizar el kernel a 3.11.x (Saucy). Seguir las instrucciones indicadas en &lt;a href="https://wiki.ubuntu.com/Kernel/LTSEnablementStack"&gt;LTSEnablementStack&lt;/a&gt;Para instalar el kernel de Saucy y actualizar el servidor X a la vez, habría que correr este comando en una terminal: &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;tt&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;--install-recommends&amp;nbsp;linux-generic-lts-saucy&amp;nbsp;xserver-xorg-lts-saucy&amp;nbsp;libgl1-mesa-glx-lts-saucy&lt;/tt&gt;&lt;/blockquote&gt;Si solo se quiere actualizar el kernel, el comando sería: &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;tt&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;--install-recommends&amp;nbsp;linux-generic-lts-saucy&lt;/tt&gt;&lt;/blockquote&gt;Con Ubuntu 14.04 o posterior, no hay que cambiar ni actualizar nada.&lt;br /&gt;&lt;h3 wrap=""&gt;2) Instalar el firmware del chipset&lt;/h3&gt;Para instalar el firmware que requiere el dispositivo, lo más simple es al menú "Configuración del sistema...", y abrir la ventana "Controladores adicionales". Luego de buscar controladores, aparecerá la opción para habilitar el "Firmware para tarjetas DVB". Seleccionarlo y hacer clic en el botón "Habilitar". El estado debería cambiar del color gris al verde.  &lt;br /&gt;&lt;h3 wrap=""&gt;3) Conseguir el archivo de frecuencias y generar la lista de canales para VLC&lt;/h3&gt;Hay que bajarse el archivo de frecuencias &lt;a href="https://drive.google.com/file/d/0B4r8Qw_AdfRlU1p1czI4YzFuRms/edit?usp=sharing"&gt;(descargar aquí)&lt;/a&gt;. Luego se corre el programa scan para generar la lista de canales que hay disponibles en la zona. Esto debemos hacerlo cada vez que cambia la grilla de canales. Correr este comando en la terminal: &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;scan frec_canales.conf &amp;gt; canales_tda.conf&amp;nbsp; &lt;/blockquote&gt;Si el programa 'scan' no está instalado, se instala con el siguiente comando: &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo apt-get install dvb-apps &lt;/blockquote&gt;&lt;h3 wrap=""&gt;4) Ver la TDA con VLC &lt;/h3&gt;&lt;span style="font-family: inherit;"&gt;Para ver la TDA, solamente hay que abrir la lista de canales con VLC 2.0.x o posterior, y elegir cualquier canal. Generalmente el canal de la TV Pública SD o Encuentro tienen las señales más fuertes, y son los mejores para empezar a probar. Si la señal es pobre, reorientar la antena o cambiarla de lugar, o cambiar de antena, hasta tener una buena señal. Para abrir VLC con la lista de canales desde, se puede escribir en la linea de comandos de la terminal:&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;vlc canales_tda.conf &lt;/blockquote&gt;&lt;span style="font-family: inherit;"&gt;Para la zona de La Plata, Buenos Aires, el archivo de canales puede ser así: &lt;a href="https://drive.google.com/file/d/0B4r8Qw_AdfRlWGJyek8zQ1Y3WWs/edit?usp=sharing"&gt;(descargar aquí)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt; &lt;br /&gt;&lt;h3 wrap=""&gt;&lt;span style="font-family: inherit;"&gt;5) Antenas&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-family: inherit;"&gt;La antena que viene con el adaptador, puede servir si hay muy buena señal. Si es de las que tienen una base magnética, como la que se muestra en los kits de arriba, es muy importante que se apoye sobre una superficie de metal, como el lateral del gabinete, o en el marco de una &lt;/span&gt;&lt;span style="font-family: inherit;"&gt;puerta o ventana metálica. Al apoyarse sobre una superficie tal, se completa el dipolo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Si se necesita una mejor antena, hay muchas variedades de antenas comerciales en el mercado:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jMoWCcQgldM/U5m6YBduaNI/AAAAAAAADtM/gkWW5MT96UQ/s1600/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-jMoWCcQgldM/U5m6YBduaNI/AAAAAAAADtM/gkWW5MT96UQ/s1600/5.jpg" /&gt;&lt;/a&gt;&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/--udJpLTAD1I/U5m6YNSS29I/AAAAAAAADtE/Eqz8em6NEzE/s1600/6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/--udJpLTAD1I/U5m6YNSS29I/AAAAAAAADtE/Eqz8em6NEzE/s1600/6.jpg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-0oV27pZqcmE/U5m6YSn3HdI/AAAAAAAADtI/pV--c0QYFMQ/s1600/7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-0oV27pZqcmE/U5m6YSn3HdI/AAAAAAAADtI/pV--c0QYFMQ/s1600/7.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Pero para abaratar costos o como solución inmediata, se puede hacer rápidamente una antena muy económica y efectiva usando un fragmento de cable coaxil (el mismo de la TV por Cable), pelando el extremo como se ve en las imágenes siguientes:&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NrbM0MoWaYQ/U5m51pOUK6I/AAAAAAAADs0/HYc3giNoRO4/s1600/9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-NrbM0MoWaYQ/U5m51pOUK6I/AAAAAAAADs0/HYc3giNoRO4/s1600/9.jpg" /&gt;&lt;/a&gt;&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/-72tvIK2yh0M/U5m52pNuImI/AAAAAAAADs8/44xkIjzwEaY/s1600/10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-72tvIK2yh0M/U5m52pNuImI/AAAAAAAADs8/44xkIjzwEaY/s1600/10.jpg" height="73" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;/h3&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;Más información: &lt;a href="http://ubuntuperonista.blogspot.com.ar/2012/10/mygicaS870ubuntu1204precisetvdigitalISDBT.html"&gt;¿Cómo puedo ver TV Digital con el sintonizador Geniatech MyGica S870 en Ubuntu 12.04LTS?&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;Actualización 16/06/2014:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;Hay una interesante aplicación en Android para facilitarnos orientar mejor nuestra antena de TDA. Usando el GPS del celular o la tableta, nos indica dónde se encuentra la antena más cercana, a qué distancia, y en qué dirección. Es un dato muy útil cuando no estamos seguros hacia dónde debemos orientar nuestra antena. La aplicación se llama &lt;b&gt;&lt;a href="https://play.google.com/store/apps/details?id=ar.com.lichtmaier.antenas"&gt;Antenas TDA&lt;/a&gt;&lt;/b&gt; y la pueden instalar directamente desde tienda de aplicaciones Play Store de Google. Es una aplicación libre, bajo licencia GNU GPL v3, así que pueden colaborar con su desarrollo y reportar cualquier bug en el sitio del &lt;a href="https://github.com/niqueco/antenas"&gt;proyecto en GitHub&lt;/a&gt;. A continuación, un par de capturas de pantallas de esta aplicación:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-DIZYM3dhPBg/U596FAC4EcI/AAAAAAAADus/5YwIMykzG0s/s1600/antenas1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-DIZYM3dhPBg/U596FAC4EcI/AAAAAAAADus/5YwIMykzG0s/s1600/antenas1.png" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-NTxNe6BKNkI/U596GCg8xgI/AAAAAAAADuw/qx2OTHdF1Bo/s1600/antenas2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-NTxNe6BKNkI/U596GCg8xgI/AAAAAAAADuw/qx2OTHdF1Bo/s1600/antenas2.png" /&gt;&lt;/a&gt;&lt;/div&gt;Gracias a Emiliano Vazquez por recordarme esta buena utilidad.</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/5038649807117268417/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=5038649807117268417" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/5038649807117268417" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/5038649807117268417" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2014/06/como-ver-la-tda-en-ubuntu.html" title="Ver TDA (Televisión Digital Abierta) en Ubuntu" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-288T1eUzbSU/U5m6glh_jEI/AAAAAAAADtc/HaxIjwLtTT4/s72-c/8.jpg" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-5176026135812992621</id><published>2013-01-03T21:42:00.000-03:00</published><updated>2013-05-05T16:14:08.534-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="mozilla" /><title type="text">¡Firefox Share: levántate y anda!</title><content type="html">&lt;a href="http://1.bp.blogspot.com/-CjeqBfQo-F8/UOYknncTD5I/AAAAAAAABxY/In5v5dgzVIA/s1600/fxshare_no_disponible.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="185" src="http://1.bp.blogspot.com/-CjeqBfQo-F8/UOYknncTD5I/AAAAAAAABxY/In5v5dgzVIA/s1600/fxshare_no_disponible.png" width="320" /&gt;&lt;/a&gt;&lt;b&gt;ACTUALIZACION&lt;/b&gt;: a partir de Firefox 20 no sirve más esta modificación de Share, por otros cambios más extensos que ahora invalidan este parche :( &lt;br /&gt;&lt;b&gt;Nota original:&lt;/b&gt;&lt;br /&gt;Con las últimas versiones de Firefox, al menos desde Firefox 16, no funciona más la extensión "Firefox Share" :(.&lt;br /&gt;Es una lástima, porque era un excelente agregado, que permite compartir en las redes sociales (o enviar por correo) la página que estamos visitando, de una forma muy simple y elegante.&lt;br /&gt;Por un tiempo probé otras alternativas, pero la verdad que ninguna me convenció, no encontré nada tan rápido y eficiente como esta "vieja" extensión. Así que un día decidí investigar el problema por mi cuenta.&lt;br /&gt;Encontré que la extensión fallaba en el arranque, cuando intentaba agregar algunas entradas en el menú contextual y en el menú principal, dentro de la sección "enviar página"... ¡que casualmente no existe más! Rápidamente mi solución salomónica fue eliminar todo ese segmento de código :D. Y ahora funciona de maravilla. Por mi parte jamás usé ese menú, porque prefiero acceder al icono de compartir que se crea en la barra asombrosa, así que para mi no fue ninguna pérdida.&lt;br /&gt;Para hacer la corrección ustedes mismos, sigan estos pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Descargar el archivo .xpi de la última versión de la extensión publicada a la fecha, que es la versión 0.2.3(alpha) desde https://addons.mozilla.org/es/firefox/addon/firefox-share-alpha&lt;/li&gt;&lt;li&gt;Internamente la extensión es un archivo .zip. La descomprimen y editan el archivo /resources/fx-share-addon/lib/overlay.js con cualquier editor de texto.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Eliminan o comentan todo el código JavaScript desde la linea 114 hasta la linea 176 inclusive.&lt;/li&gt;&lt;li&gt;Después vuelven a comprimir todo de nuevo en un archivo zip, sin cambiar la estructura de directorios ni ninguna otra cosa, renombrando luego la extensión del archivo .zip a .xpi como estaba originalmente.&lt;/li&gt;&lt;/ol&gt;Para instalar el archivo .xpi en Firefox pueden hacer arrastrar y soltar desde el escritorio, y soltarlo en cualquier ventana de Firefox. O usar el menú Archivo -&amp;gt; Abrir archivo..., como prefieran.&lt;br /&gt;Si no se animan a hacer los cambios ustedes mismos, y me tienen confianza (muejeje :D), les dejo enlazado aquí el &lt;a href="http://dl.dropbox.com/u/21804263/firefox_share_alpha-0.2.3.1-fx.xpi" rel="nofollow"&gt;archivo .xpi resultante&lt;/a&gt;. No tiene ningún otro cambio, pero no hay garantías de ningún tipo, ni me hago cargo de ningún daño que les pueda producir. Personalmente lo vengo usando hace varios meses, y recién ahora me tomé el tiempo de escribir y documentarlo en el blog para compartirlo. Que lo disfruten :)</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/5176026135812992621/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=5176026135812992621" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/5176026135812992621" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/5176026135812992621" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2013/01/firefox-share-levantate-y-anda.html" title="¡Firefox Share: levántate y anda!" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-CjeqBfQo-F8/UOYknncTD5I/AAAAAAAABxY/In5v5dgzVIA/s72-c/fxshare_no_disponible.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-1163358485653175266</id><published>2011-09-19T23:22:00.001-03:00</published><updated>2011-09-19T23:22:08.829-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="pensamientos" /><title type="text">Google + Intel = Android x86</title><content type="html">&lt;a href="http://4.bp.blogspot.com/-TBUCLa_iLe8/Tnf4RR8k00I/AAAAAAAABAs/mLI5ye50tQc/s1600/android+x86+rocket.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-TBUCLa_iLe8/Tnf4RR8k00I/AAAAAAAABAs/mLI5ye50tQc/s1600/android+x86+rocket.png" /&gt;&lt;/a&gt;Recientemente hay varias noticias que hablan de la alianza entre Google e Intel para desarrollar Android en los procesadores x86. Ya había un &lt;a href="http://www.android-x86.org/"&gt;proyecto&lt;/a&gt; de la comunidad de desarrolladores para portarlo, que estaba dando sus frutos, y ahora se suma esta &lt;a href="http://androidandme.com/2011/09/news/intel-and-google-announce-android-x86-optimization/"&gt;iniciativa conjunta&lt;/a&gt; de estos dos pesos pesados.&lt;br /&gt; &lt;br /&gt;Estaba leyendo una &lt;a href="http://www.elandroidelibre.com/2011/09/todos-los-detalles-sobre-la-alianza-de-intel-y-android.html"&gt;nota al respecto&lt;/a&gt;, y pensaba que acá el problema es que Intel tiene que resolver el mayor consumo de los procesadores Atom, si se los compara con los efectivos y rendidores diseños de ARM. Intel necesita dejar de perder mercado en los sectores móviles, donde la arquitectura ARM es hoy por hoy el rey absoluto, y esta alianza con Google, puede llevar a Android a nuevos sectores.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;A Intel no le sirve quedarse fuera de la fiesta que representan los smartphones y tablets, siendo estos sectores los de mayor crecimiento. Por eso no es extraño que hagan a un lado a Meego (después de haber sido abandonado primero por Nokia), dadas las pocas chances de competir con el crecimiento exponencial de la plataforma Android. Es una lástima, sin dudas, porque Meego es (o era) una gran alternativa 100% Linux bien considerada por muchos. Pero una plataforma sin aplicaciones no es nada. Y Meego nunca logró conformar un ecosistema virtuoso de desarrolladores, ni prender con los fabricantes.&lt;br /&gt;&lt;br /&gt;Hay otro tema: Intel puede abrir la caja de pandora con este movimiento. A Oracle le preocupa que Android llegue al desktop, porque habría una máquina virtual de Java alternativa, un fork de hecho, compitiendo lado a lado con la JVM de Java Desktop o JavaSE. Las aplicaciones de escritorio en Java nunca fueron populares, a diferencia de sus hermanas web, pero esto podría ser la estocada final para Swing y otras tecnologías similares. Oracle ya perdió el mercado móvil, y está tratando de recuperar aunque sea una tajada del postre vía las demandas de patentes y propiedad intelectual, pero la verdad es que ya perdió el control de ese mercado. Si ahora Android se mete en el desktop, podría ser la peor pesadilla para Oracle, porque abriría una puerta para meterse en el sector de servidores eventualmente.&lt;br /&gt;&lt;br /&gt;La JVM sin dudas está más saludable que nunca, y el lenguaje Java sigue siendo el más popular según el índice &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;TIOBE&lt;/a&gt;. Y cada vez hay más lenguajes interesantes creciendo en la JVM. En el sector empresarial Java pisa demasiado fuerte, que a esta altura tiene una impresionante inversión en él, y nadie pondría en duda que seguirá siendo fuerte en el futuro. La intriga es: ¿podrían las aplicaciones Android llegar a los escritorios, reemplazando a Java en ese segmento? O más allá, ¿incluso reemplazando a los sistemas operativos de escritorio? (esto último creo que muy improbable). Pero si las aplicaciones Android (vía la Dalvik VM) llegan a los escritorios "normales", ¿cuál sería el límite?&lt;br /&gt;&lt;br /&gt;Primero hay que ver cómo se resuelve el litigio en curso entre Oracle y Google. Podría ser que después de un arreglo monetario, Oracle le de el visto bueno a Android dentro de la familia Java (como el retorno del &lt;a href="http://es.wikipedia.org/wiki/Par%C3%A1bola_del_hijo_pr%C3%B3digo"&gt;hijo pródigo&lt;/a&gt;) para brindarle el sello de "tecnología Java", reunificando ambas plataformas. Es un desenlace posible. Otro caso sería que Google pierda de mala manera y deba reimplementar Android, eliminando todo rastro de Java, que aunque más improbable, también es factible. O tal vez ambos continúen por sus propios caminos paralelos, con una restricción de no acercarse uno a otro más de X metros xD. Pero si este fuera el caso, también sería una situación más que extraña, porque sin dudas terminarán competiendo en el desktop más pronto que tarde.&lt;br /&gt;&lt;br /&gt;Ya veremos cómo se desenvuelve todo esto :)</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/1163358485653175266/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=1163358485653175266" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/1163358485653175266" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/1163358485653175266" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2011/09/google-intel-android-x86.html" title="Google + Intel = Android x86" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-TBUCLa_iLe8/Tnf4RR8k00I/AAAAAAAABAs/mLI5ye50tQc/s72-c/android+x86+rocket.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-1438276329344889570</id><published>2011-08-04T19:03:00.000-03:00</published><updated>2011-08-04T19:03:56.114-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="noticias" /><title type="text">Invitación a Android Connect</title><content type="html">Esta vez los quiero invitar a conocer el blog de &lt;a href="http://www.androidconnect.com.ar/"&gt;Android Connect&lt;/a&gt;, una comunidad Android que se gestó en La Plata y está empezando a dar sus primeros pasos. Van a encontrar todo tipo de información, desde el usuario hasta el programador. Les copio el mensaje de bienvenida y espero encontrarlos por allá también :-)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Bienvenidos a esta nueva comunidad Android. La idea nace desde un grupo de usuarios y desarrolladores de Android en La Plata, Argentina, con la misma inquietud de compartir ideas, trucos y tips, consejos, soluciones a problemas encontrados, ejemplos de programas para hacer tus propios desarrollos, noticias de interés para la comunidad y mucho más.&lt;br /&gt;&lt;br /&gt;Android Connect sos vos y todos los interesados en este fascinante mundo de Android. Te invitamos a participar de esta joven comunidad, un punto de encuentro donde podamos compartir nuestro conocimiento y hallazgos, brindar consejos y participar de proyectos juntos, un lugar donde podamos intercambiar ideas y experiencias.&lt;br /&gt;&lt;br /&gt;¡Bienvenido!&lt;/blockquote&gt;&lt;br /&gt;Fuente: &lt;a href="http://www.androidconnect.com.ar/"&gt;Android Connect&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/1438276329344889570/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=1438276329344889570" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/1438276329344889570" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/1438276329344889570" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2011/08/invitacion-android-connect.html" title="Invitación a Android Connect" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-938714662096991380</id><published>2011-05-25T21:22:00.000-03:00</published><updated>2011-05-25T21:22:52.074-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">Juegos en JavaScript: frameworks, recursos y ejemplos</title><content type="html">Si bien los juegos en JavaScript no son nuevos, ahora con la introducción de HTML5 y todas las novedades que trae la nueva generación de navegadores,&amp;nbsp; se están convirtiendo en una alternativa cada vez más seria, muy tentadora por la posibilidad de llegar a todo tipo de  plataformas: escritorio, portátiles, celulares, tabletas, consolas de  videojuegos, etc.&lt;br /&gt;&lt;br /&gt;Tal vez el caso más conocido por todos es el recientemente presentado &lt;a href="http://chrome.angrybirds.com/"&gt;Angry Birds Webapp&lt;/a&gt;, que en una alianza entre Rovio (la creadora del exitoso juego) y Google (como promoción de su navegador Chrome) han publicado de forma gratuita en versión web del ya clásico juego.&lt;br /&gt;&lt;br /&gt;Aunque se promociona como un juego para Chrome, también es cierto que funciona con otros navegadores modernos que soporten Canvas de HTML5 y Flash. Por ejemplo, le he probado en Firefox 4 sobre Linux y funciona perfectamente.&lt;br /&gt;&lt;br /&gt;¿Pero porqué requiere Flash? Bueno, precisamente una de las APIs que están más verdes en este momento es la API de audio, o al menos su funcionamiento está muy variable entre distintos navegadores. Por lo cual han recurrido a una solución pragmática y temporal hasta que madure este tema: usar un pequeño fragmento de Flash para controlar el audio, y hacer todo el resto con HTML5.&lt;br /&gt;&lt;br /&gt;En la implementación han usado el framework open source &lt;a href="http://code.google.com/p/forplay/"&gt;ForPlay&lt;/a&gt;, que es un nuevo proyecto Java creado por Google y Rovio para este desarrollo, y que permite a partir del lenguaje Java, generar o compilar distintos tipos de salidas: Desktop Java, HTML5 Browsers, Android y Flash. Esta idea de generar código HTML o Flash a partir de código Java, ya la hemos visto antes en Google GWT (con el cual tiene bastante que ver) o en Adobe Flex.&lt;br /&gt;&lt;br /&gt;Como amablemente han publicado este framework bajo una licencia open source, va a permitir que cualquier desarrollador pueda reutilizarlo y mejorarlo, y pronto empezaremos a ver muchos otros proyectos que lo usen o que estén basados en él.&lt;br /&gt;&lt;br /&gt;Pero si queremos hacer juegos o aplicaciones que usen HTML5 Canvas, vamos a encontrar que hay muchos otros frameworks open source y/o bajo licencias libres, cada uno con sus propias características. Algunos ejemplos interesantes son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://gamequery.onaluf.org/"&gt;gameQuery&lt;/a&gt;. es un framework JavaScript basado en jQuery. No parece tan maduro como las demás opciones, pero es muy natural y fácil de asimilar para quienes ya tienen experiencia con jQuery.&lt;/li&gt;&lt;li&gt;&lt;a href="http://rpgjs.com/"&gt;RPG JS&lt;/a&gt;: un framework para realizar los clásicos juegos RPG 2D, con características muy completas para este tipo de juegos. Tienen una demo muy bien lograda.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kesiev.com/akihabara/"&gt;Akihabara&lt;/a&gt;: es un framework JavaScript para HTML5 muy maduro, para realizar todo tipo de juegos clásicos arcade de 8/16 bit. Tienen muchos ejemplos fantásticos de los arcades clásicos, que vale la pena probar :-)&lt;/li&gt;&lt;/ul&gt;También hay mucha documentación para quien quiera hacer sus primeros pinitos con Canvas. Algunos recursos para empezar pueden ser:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/Canvas_tutorial"&gt;Tutorial de Canvas de Mozilla MDC&lt;/a&gt;: es un excelente recurso, que además se encuentra en castellano y en varios idiomas.&lt;/li&gt;&lt;li&gt;&lt;a href="http://billmill.org/static/canvastutorial/"&gt;Canvas Tutorial de billmill.org&lt;/a&gt;: es un mini-curso en inglés muy rápido y didáctico, que a través de la construcción paso a paso del clásico juego del breakout, nos enseña todo lo básico para comenzar a realizar nuestros propios juegos. Lamentablemente no explica demasiado los ejemplos, pero el código es muy claro y está armado de tal forma que nos permite experimentar con él sin salir de la página.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.html5canvastutorials.com/tutorials/html5-canvas-tutorials-introduction/"&gt;HTML5CanvasTutorial&lt;/a&gt;: un tutorial en inglés más extenso, que nos enseña con más detalle las posibilidades de Canvas, con algunos muy buenos ejemplos.&amp;nbsp; No está tan orientado a juegos, pero es muy buen recurso.&lt;/li&gt;&lt;/ul&gt;Algunos frameworks incluso combinan varias APIs y técnicas, desde Canvas de HTML5 hasta DHTML, incluso WebGL también. En cuanto a técnicas para implementar juegos, hay muchos sitios para ello, y toda esa experiencia es trasladable a cualquier lenguaje, API o plataforma. Entonces para eso mejor referirse a sitios específicos sobre diseño de juegos. &lt;br /&gt;&lt;br /&gt;Los dejo con un &lt;a href="http://www.javascriptgaming.com/"&gt;catálogo de juegos&lt;/a&gt; en JavaScript, donde hay una sección específica con varios ejemplos realizados con Canvas. Hay muchos juegos clásicos y algunos novedosos. Algunos permiten acceder al código fuente para aprender de ellos, otros no, pero igualmente la mayoría son entrenidos :D&lt;br /&gt;&lt;br /&gt;Para los que les gustan los juegos solitarios con cartas de póker, encontrarán un fantástico ejemplo de una buena implementación en &lt;a href="http://worldofsolitaire.com/"&gt;WorldOfSolitaire&lt;/a&gt;, no es libre, está basado en YUI, y está muy bien hecho. La única contra es que aún no tiene un buen soporte de dispositivos móviles (me fue imposible jugarlo en Android).</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/938714662096991380/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=938714662096991380" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/938714662096991380" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/938714662096991380" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2011/05/juegos-en-javascript-frameworks.html" title="Juegos en JavaScript: frameworks, recursos y ejemplos" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-7941980214740382145</id><published>2011-05-21T22:58:00.005-03:00</published><updated>2014-02-05T14:15:48.410-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">Galería de imágenes usando jQuery</title><content type="html">Continuando con el artículo anterior, vamos a ver cómo hacer una sencilla galería de imágenes estáticas. Este ejemplo y el código del mismo, está basado en &lt;a href="http://www.script-tutorials.com/how-to-create-your-own-jquery-slider-plugin/"&gt;How to Create your own jQuery Slider Plugin&lt;/a&gt;, aunque le he modificado algunas cosas para mejorar su reutilización, manteniendo la misma idea y sin grandes cambios.&lt;br /&gt;&lt;br /&gt;La técnica usada es una de las más comunes, y se puede adaptar a muchas otras cosas. Tenemos una lista de imágenes, inicialmente ocultas, que se irán mostrando de a una a la vez, usando algo de JavaScript. Agregándole un efecto en la transición del cambio de imagen, es de lo más trivial gracias a &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;, logrando un resultado mucho más cuidado.&lt;br /&gt;&lt;br /&gt;Vamos por partes.&lt;br /&gt;&lt;h4&gt;Primer paso: el HTML&lt;/h4&gt;&lt;code class="language-html"&gt;&amp;lt;div&amp;nbsp;class="slideshow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h3&amp;gt;&amp;lt;a&amp;nbsp;href="#"&amp;gt;Título&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;img&amp;nbsp;src="..."&amp;nbsp;/&amp;gt;&amp;lt;/li&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;img&amp;nbsp;src="..."&amp;nbsp;/&amp;gt;&amp;lt;/li&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;img&amp;nbsp;src="..."&amp;nbsp;/&amp;gt;&amp;lt;/li&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;class="counter"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;br /&gt;El &amp;lt;div&amp;gt; con clase "slideshow" será el contenedor. Se usará para inicializar el plugin de jQuery y para brindarle estilos al componente. Dentro hay un título, una lista de elementos con UL-LI, y un contenedor para mostrar el número de página actual y el número total. Es interesante el uso de una lista UL, porque semánticamente expresa mejor su intención, que por ejemplo si hubiésemos usado DIV, SPAN, TABLE, u otro elemento. Las listas también las podemos encontrar adecuadas para representar pestañas/tabs, etiquetas, menúes, etc., al menos hasta usar HTML5, que nos trae nuevas etiquetas más específicas, como &lt;a href="http://www.w3schools.com/html5/tag_nav.asp"&gt;NAV&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;Segundo paso: el CSS&lt;/h4&gt;&lt;code class="language-html"&gt;&amp;lt;style&amp;gt;&lt;br /&gt;.slideshow&amp;nbsp;{&amp;nbsp;background:#FFF;&amp;nbsp;width:500px;&amp;nbsp;border:1px&amp;nbsp;#000&amp;nbsp;solid;&amp;nbsp;margin:20px&amp;nbsp;auto;&amp;nbsp;padding:15px;}&lt;br /&gt;.slideshow&amp;nbsp;ul&amp;nbsp;{&amp;nbsp;width:500px;&amp;nbsp;height:auto;&amp;nbsp;min-height:&amp;nbsp;335px;&amp;nbsp;overflow:&amp;nbsp;hidden;&amp;nbsp;position:relative;&amp;nbsp;padding:0;&amp;nbsp;margin:0;}&lt;br /&gt;.slideshow&amp;nbsp;li&amp;nbsp;{&amp;nbsp;position:absolute;&amp;nbsp;top:0px;&amp;nbsp;left:0px;&amp;nbsp;display:none;&amp;nbsp;list-style:none;}&lt;br /&gt;.slideshow&amp;nbsp;li&amp;nbsp;img&amp;nbsp;{&amp;nbsp;width:&amp;nbsp;100%&amp;nbsp;}&lt;br /&gt;.slideshow&amp;nbsp;li:first-child&amp;nbsp;{display:block;}&lt;br /&gt;.slideshow&amp;nbsp;.counter&amp;nbsp;{text-align:right;&amp;nbsp;width:100%;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;br /&gt;Los 500px en las lineas 3 y 5 determinan el ancho de la galería. Los 335px en la linea 5 determinan la altura. En la linea 7, se hacen invisibles todos los LI con display:none, y se les quita toda la decoración por defecto (el círculo o botón que prefija a cada elemento de una lista). Después, en la linea 11 se hace visible solo al primer elemento de la lista.&lt;br /&gt;El UL tiene &lt;i&gt;position:relative&lt;/i&gt;, y los LI tienen &lt;i&gt;position:absolute&lt;/i&gt;. Como el contenedor de los LI (el UL) tiene posicionamiento, las coordenadas de los LI toman como origen de las coordenadas a su padre, y se posicionan todos en (0px, 0px), lo que hace que todos los elementos queden en el mismo lugar. Podemos pensar que están como "apilados", unos encima de otros (pero no tienen distinto z-index, realmente están todos al mismo nivel de stack).&lt;br /&gt;&lt;h4&gt;Tercer y último paso: el JavaScript&lt;/h4&gt;&lt;code class="language-javascript"&gt;(function($){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.fn.slideshow&amp;nbsp;=&amp;nbsp;function(interval)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;slides;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;cnt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;amount;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;run()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;hiding&amp;nbsp;previous&amp;nbsp;image&amp;nbsp;and&amp;nbsp;showing&amp;nbsp;next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(slides[i]).fadeOut(1000);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i&amp;nbsp;&amp;gt;=&amp;nbsp;amount)&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(slides[i]).fadeIn(1000);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;updating&amp;nbsp;counter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cnt.text(i+1+'&amp;nbsp;/&amp;nbsp;'+amount);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setTimeout(run,&amp;nbsp;interval);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;slides&amp;nbsp;=&amp;nbsp;$(this).find('ul').children();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cnt&amp;nbsp;=&amp;nbsp;$(this).find('.counter');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;amount&amp;nbsp;=&amp;nbsp;slides.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;updating&amp;nbsp;counter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cnt.text(i+1&amp;nbsp;+&amp;nbsp;'&amp;nbsp;/&amp;nbsp;'&amp;nbsp;+&amp;nbsp;amount);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setTimeout(run,&amp;nbsp;interval);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;})(jQuery);&lt;br /&gt;$(function(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$('.slideshow').slideshow(5000);&lt;br /&gt;});&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Aquí voy a tener que deternerme un poco más. Entre las lineas 1 y 51 se crea un plugin de jQuery. Este fragmento deberíamos guardarlo en un archivo aparte como slider-jquery-plugin.js para vincularlo a la página.&lt;br /&gt;Las líneas 54 a 56 es una forma típica de realizar inicializaciones con jQuery, es decir, de ejecutar algo una vez que la página está cargada y la DOM está liberada para recibir modificaciones. La expresión $('.slideshow') de jQuery busca a los elementos que tengan el class 'slideshow', y les aplica el plugin slideshow(), El parámetro que se pasa es el tiempo en milisegundos que queremos de demora entre una imagen y la siguiente, en este caso de 5 segundos.&lt;br /&gt;Luego, entre las lineas 35 y 47 se hace la incialización del plugin. No voy a detenerme aquí, pero basta decir que recupera a los elementos hijos del UL (los LI) y los guarda en un arreglo llamado 'slides', y en la linea 47 registra un timer que llamará al método run() del plugin en X tiempo (que fue recibido por parámetro).&lt;br /&gt;El método run(), definido entre las lineas 13 y 33, es donde sucede lo interesante. Primero hace un efecto fadeOut() ("desaparecer") sobre el item actual, avanza al siguiente item, y hace un efecto fadeIn() ("aparecer") sobre el siguiente elemento. Si se llega al último elemento, se vuelve a comenzar con el primero. Se actualiza el contador de página/imagen actual, y se vuelve a registrar un timer para volver a llamar a run() en otro X tiempo.&lt;br /&gt;Lo interesante de esto, es que se aprovecha de una característica de los efectos especiales (FXs) de jQuery, que son implementados como animaciones. Estas animaciones, cuando inicializan, en realidad estamos pidiendo que comiencen, y durarán un tiempo predefinido (normalmente 200 milisegundos, que se puede cambiar pasando un parámetro al efecto). Entonces, al solicitar la desaparición del elemento actual, y la aparición del elemento siguiente, y al animarse ambos a la vez, para nuestros ojos se produce un efecto de fusión (o morph) de una imagen en otra, que es solo un efecto visual. Como ven, era más largo explicarlo que hacerlo :D&lt;br /&gt;Al combinar todo, recuerden que deben incluir la libería JavaScript de jQuery. Una forma de hacerlo es cargarla desde el CDN (Content Delivery Network) de Google, donde está a disposición de los desarrolladores web muchas librerías JS de uso habitual. Por ejemplo, pueden hacerlo así:&lt;br /&gt;&lt;code class="language-html"&gt;&amp;lt;script&amp;nbsp;src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;Les dejo una &lt;a href="http://dl.dropbox.com/u/21804263/slideshow-20110521.zip"&gt;versión completa para descargar&lt;/a&gt; y probar localmente. A continuación tienen el ejemplo terminado. No olviden hacer sus comentarios y sugerencias.&lt;br /&gt;&lt;style&gt; body {    background:#eee;   margin:0;   padding:0;   font-size:16px;   font-family: helvetica,sans-family;  }  .slideshow {   background:#FFF;   width:500px;   border:1px #000 solid;   margin:20px auto;   padding:15px;   -moz-border-radius: 5px;   -webkit-border-radius: 5px;  }  .slideshow ul {   width:500px;   height:auto;   min-height: 335px;   overflow: hidden;   position:relative;   padding:0;   margin:0;  }  .slideshow li {   position: absolute;   top: 0px;   left: 0px;   display: none;   list-style: none;                 background:none;                 padding:0;  }  .slideshow li img {   width: 100%  }  .slideshow li:first-child {   display:block;  }  .slideshow .counter {   text-align:right;   width:100%;  } &lt;/style&gt;&lt;script&gt; (function($){       $.fn.slideshow = function(interval) {    var slides;    var cnt;    var amount;    var i;      function run() {        // hiding previous image and showing next        $(slides[i]).fadeOut(1000);        i++;        if (i &gt;= amount) i = 0;        $(slides[i]).fadeIn(1000);          // updating counter        cnt.text(i+1+' / '+amount);          // loop        setTimeout(run, interval);    }    slides = $(this).find('ul').children();    cnt = $(this).find('.counter');    amount = slides.length;    i=0;      // updating counter    cnt.text(i+1 + ' / ' + amount);      setTimeout(run, interval);       };   })(jQuery);    $(function(){   $('.slideshow').slideshow(5000);  }); &lt;/script&gt;&lt;br /&gt;&lt;div class="slideshow"&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=6125649492882325530#"&gt;Los Fantásticos Labradores&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;img alt="" src="http://farm1.static.flickr.com/32/54588155_192d9f5ea8.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm1.static.flickr.com/43/125198225_6f1bbf37ac.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm1.static.flickr.com/56/142182195_374d91d396.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm1.static.flickr.com/202/487165315_89e13b4ccb.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3163/2673994123_e655068bac.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3560/3371176471_4635f86228.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3604/3432756019_265ef0b7ce.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm4.staticflickr.com/3323/3444093325_deb6a2ed33_d.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm4.staticflickr.com/3239/2754855796_4d168275af_d.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm3.static.flickr.com/2483/3659246636_9dbe976453.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm3.static.flickr.com/2707/4166519466_a2f898267d.jpg" /&gt;&lt;/li&gt;&lt;li&gt;&lt;img alt="" src="http://farm5.static.flickr.com/4121/4875274278_8f9c0e25b1.jpg" /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="counter"&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/7941980214740382145/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=7941980214740382145" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/7941980214740382145" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/7941980214740382145" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2011/05/galeria-de-imagenes-usando-jquery.html" title="Galería de imágenes usando jQuery" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm1.static.flickr.com/32/54588155_192d9f5ea8_t.jpg" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-5518933442621189290</id><published>2011-05-21T19:10:00.000-03:00</published><updated>2011-05-21T19:10:11.628-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">Google Feed API</title><content type="html">Recientemente estuve haciendo un componente web para mostrar una galería de imágenes, a partir de una fuente pública de datos (un feed atom).&lt;br /&gt;&lt;br /&gt;Sin duda hay muchísimas maneras de hacerlo. Necesitaba una solución que usara únicamente JavaScript, porque el componente sería usado en un sitio alojado en blogger.&lt;br /&gt;&lt;br /&gt;Hay varias librerías JS, y para facilitar las cosas, muchos plugins en jQuery si se quiere también. Pero como adelantó el título, aquí voy a usar la &lt;a href="http://code.google.com/intl/es-AR/apis/feed/"&gt;Google Feed API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Es una de las tantas APIs que Google pone a disposición de los desarrolladores, a cual más interesante. Si bien son gratuitas, es necesario generar un identificador API KEY que será asociado al sitio que usará la API. De esta forma ellos pueden hacer seguimiento de qué uso se le da a la misma, desde qué sitios, lo habitual del Gran Hermano :D&lt;br /&gt;&lt;br /&gt;La API permite descargar flujos Atom, RSS, y RSS de medios (como podcasts), usando solo JavaScript. De esta forma, podemos procesar el contenido para aprovecharlo en otras cosas, como en un mapa de Google Maps, en alguna linda animación, en una galería, y en cualquier otra cosa que se nos ocurra. El límite es nuestra imaginación :)&lt;br /&gt;&lt;br /&gt;La ventaja es que todo el procesamiento pesado y todo el trabajo sucio (como lidear con proxies), lo realizan los servidores de Google de una forma óptima, dejándonos utilizar el resultado de forma muy sencilla, con unas pocas líneas de código JS. El resultado en si, se presenta como objetos JSON: más fácil imposible. Para los detalles, revisen la &lt;a href="http://code.google.com/intl/es-AR/apis/feed/v1/"&gt;documentación&lt;/a&gt;, que parece completa y sencilla.&lt;br /&gt;&lt;br /&gt;Lo mejor de todo, es que como con otras APIs de Google, nos ofrecen una practiquísima &lt;a href="http://code.google.com/apis/ajax/playground/#load_feed"&gt;"área de pruebas"&lt;/a&gt;, para aprender rápidamente cómo funciona, y apenas adaptando un poco el ejemplo que nos presenta, en cuestión de minutos podemos tener lista nuestra solución o al menos un bosquejo funcionando.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZGzp2rGsJaM/Tdg3PZzmXjI/AAAAAAAAAio/BXqSCkVV6a8/s1600/GoogleCodePlayground.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-ZGzp2rGsJaM/Tdg3PZzmXjI/AAAAAAAAAio/BXqSCkVV6a8/s400/GoogleCodePlayground.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;También hay APIs para todos los servicios de Google: search, books, youtube, maps, earth, blogger, traslation, etc.&lt;br /&gt;&lt;br /&gt;Les dejo como ejercicio hacer el ejemplo :D. Les aseguro que en cuestión de minutos pueden armar algo muy interesante. Yo armé una galería de imágenes (slideshow) con jQuery, procesando un feed Atom del sitio deviantArt. Si puedo, en algún momento les mostraré un poco al respecto. Si prueban la API, dejen sus comentarios a ver qué les pareció.</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/5518933442621189290/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=5518933442621189290" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/5518933442621189290" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/5518933442621189290" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2011/05/google-feed-api.html" title="Google Feed API" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ZGzp2rGsJaM/Tdg3PZzmXjI/AAAAAAAAAio/BXqSCkVV6a8/s72-c/GoogleCodePlayground.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-8633479952079494267</id><published>2010-06-19T20:01:00.005-03:00</published><updated>2011-05-20T19:37:30.148-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="conky" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Miniguía: compilando ConkyWizard</title><content type="html">Gracias a este &lt;a href="http://ubunlog.com.ar/blog/conkywizard-configurar-conky-facilmente/"&gt;artículo&lt;/a&gt;, me entero sobre el proyecto &lt;a href="http://code.google.com/p/conkywizard/"&gt;ConkyWizard&lt;/a&gt;. Es un asistente para configurar visualmente al fantástico Conky. Normalmente se configura a mano usando un archivo de configuración bastante "oscuro", y muchos usuarios después comparten sus configuraciones en sitios como &lt;a href="http://gnome-look.org/"&gt;gnome-look.org&lt;/a&gt;, aunque no deja de ser bastante complicado de usar para la mayoría de la gente.&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ue1cElANGZo/TB1Qh8bYgrI/AAAAAAAAAE4/dl5hj_oqjng/s1600/conkywizard.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 200px; height: 178px;" src="http://3.bp.blogspot.com/_ue1cElANGZo/TB1Qh8bYgrI/AAAAAAAAAE4/dl5hj_oqjng/s200/conkywizard.jpg" alt="" id="BLOGGER_PHOTO_ID_5484628465294017202" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt; Aquí es donde &lt;a href="http://code.google.com/p/conkywizard/"&gt;ConkyWizard&lt;/a&gt; viene al rescate. Es una aplicación nueva, en versión beta y con algunas falencias y errores, pero que ya se puede usar mayormente.&lt;br /&gt;Al ir a la página del proyecto, solo hay dos binarios: uno para Ubuntu Lucid Lynx 32-bit y otro para 64-bit. Lamentablemente, la versión para 64-bit está compilada usando una actualización de QT4 (la librería gráfica usada como base en KDE) que probablemente no vamos a tener instalada. Como uso la edición de 64-bit, decidí compilarlo a mano, y como no pude encontrar ninguna documentación de cómo hacerlo, aquí comparto el paso a paso del proceso:&lt;br /&gt;&lt;code class="language-sh"&gt;svn checkout http://conkywizard.googlecode.com/svn/trunk/ conkywizard-read-only&lt;br /&gt;cd conkywizard-read-only/ConkyWizard/&lt;br /&gt;sudo apt-get install tmake libqt4-dev&lt;br /&gt;tmake ConkyWizard.pro -o Makefile&lt;br /&gt;cd resources/&lt;br /&gt;rm translations&lt;br /&gt;ln -s ../translations&lt;br /&gt;cd ..&lt;br /&gt;qmake-qt4&lt;br /&gt;make&lt;br /&gt;cd ../Application/&lt;br /&gt;./ConkyWizard&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ojalá les sirva como a mi. Hasta pronto.</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/8633479952079494267/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=8633479952079494267" title="3 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8633479952079494267" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8633479952079494267" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2010/06/miniguia-compilando-conkywizard.html" title="Miniguía: compilando ConkyWizard" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_ue1cElANGZo/TB1Qh8bYgrI/AAAAAAAAAE4/dl5hj_oqjng/s72-c/conkywizard.jpg" height="72" width="72" /><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-232161037299451731</id><published>2010-03-11T21:27:00.003-03:00</published><updated>2010-03-11T22:12:21.040-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jboss" /><category scheme="http://www.blogger.com/atom/ns#" term="seam" /><title type="text">Proyecto WAR con Seam 2.2 en JBoss AS 5.1</title><content type="html">Quiero compartir la solución a un problemita bajo una configuración particular, resultando en que las entidades mapeadas del WAR no eran encontradas por Hibernate.&lt;br /&gt;&lt;br /&gt;Estoy armando un proyecto de prueba usando SEAM 2.2 y JBoss AS 5.1, para probar algunas novedades y cambios de las últimas versiones por un lado, y por otro, para experimentar con ciertos características.&lt;br /&gt;&lt;br /&gt;El entorno de desarrollo es Eclipse 3.5 con JBoss Tools 3. Aquí no utilicé &lt;span style="font-style: italic;"&gt;seam-gen&lt;/span&gt;,  y creé directamente el proyecto desde el IDE. Usé una base de datos MySQL 5.1 y todo el conjunto corre sobre Ubuntu Karmic Koala (9.10).&lt;br /&gt;&lt;br /&gt;El problema y la solución es la indicada en &lt;a href="https://jira.jboss.org/jira/browse/JBSEAM-3821"&gt;JBSEAM-3821&lt;/a&gt;, aunque el problema estaría solucionado usando el seam-gen desde SEAM 2.1.2.CR1, parece el mismo también sucede al crear proyectos con JBoss Tools 3.&lt;br /&gt;&lt;br /&gt;The comments in the components.xml and persistence.xml files of the JPA Example generated for JBoss 5 show the correct way to handle this. Although it would be nice if SeamGen handled this correctly.&lt;br /&gt;&lt;br /&gt;En el último comentario del reporte del bug, está la solución (o su workaround). Los datos claves son:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt; en el &lt;span style="font-weight: bold;"&gt;components.xml&lt;/span&gt;, agregar en la etiqueta &lt;span style="font-weight: bold;"&gt;&amp;lt;persistence:entity-manager-factory/&amp;gt;&lt;/span&gt; el atributo &lt;span style="font-weight: bold;"&gt;installed="false"&lt;/span&gt;, y en la etiqueta &lt;span style="font-weight: bold;"&gt;&amp;lt;persistence:managed-persistence-context/&amp;gt;&lt;/span&gt; agregar el atributo &lt;span style="font-weight: bold;"&gt;persistence-unit-jndi-name="java:/bookingEntityManagerFactory"&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;en el persistence.xml, la propiedad &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;property name="jboss.entity.manager.factory.jndi.name" value="java:/bookingEntityManagerFactory"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Salvando este detalle, ya podemos trabajar normalmente. De todas formas, recomiendo usar el seam-gen, que es muy interesante y útil, pero en caso de no usarlo, ya saben :)</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/232161037299451731/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=232161037299451731" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/232161037299451731" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/232161037299451731" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2010/03/proyecto-war-con-seam-22-en-jboss-as-51.html" title="Proyecto WAR con Seam 2.2 en JBoss AS 5.1" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-1235574631021444341</id><published>2010-02-04T21:11:00.004-03:00</published><updated>2010-02-04T21:41:14.704-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="pensamientos" /><category scheme="http://www.blogger.com/atom/ns#" term="sun" /><title type="text">Oracle/Sun: pensamientos y divagaciones</title><content type="html">&lt;span style="font-style: italic;"&gt;A continuación, algunos pensamientos y divagaciones sobre Sun, Oracle, MySQL, Java y temas relacionados a la post-compra de Sun. Escribí este texto durante una conversación con colegas, que todo inició como un debate sobre el &lt;a href="http://www.oracle.com/us/sun/index.htm?msgid=8480102&amp;amp;eid=4676553833&amp;amp;lid=1"&gt;artículo que publicó Oracle por la finalización de la adquisición de Sun&lt;/a&gt;. Mi preguntaron si podían compartirlo, y aquí está.&lt;br /&gt;Advierto que si deciden seguir leyendo, lo hacen baja su propia responsabilidad. Y como siempre, la casa se reserva el derecho de moderar cualquier comentario desubicado ;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;Creo que el único fuerte que salva a MySQL es que es universalmente usada en los ISPs y se incluye hasta en los planes de hosting más baratos, lo que no es poco. Pero se queda corta comparada con cualquier base de datos relacional seria, y también en el entorno embebido cuando se quiere algo rápido y eficiente (donde SQLite es el líder lejos, y cada vez más usada). Para mi, MySQL es una base de datos de compromiso y nada más ;)&lt;br /&gt;&lt;br /&gt;PostgreSQL es "LA" base de datos libre. Es muy parecida a Oracle en muchos sentidos. Y ahora que a MySQL le nació MariaDB... más vale que Oracle no descuide a la criatura... o se habrán gastado una pasta al dope xD y creo que con MySQL ya van camino a perder todo su control, apenas MariaDB reemplace a MySQL como la favorecida por las distros Linux, lo que ya se está discutiendo.&lt;br /&gt;&lt;br /&gt;Lo que ahora controla Oracle de Java... lo puede perder en un instante si empieza a alienar a la comunidad y al resto de las empresas del sector. Y si pasa eso, se van a disparar en su propio pie, no creo que lo hagan, pero es posible. Me acuerdo lo que pasó con el consorcio que manejaba X11 y lo que pasó al hacer cambios en su licencia y decisiones que lo gustó nadie: rápidamente se conformo un nuevo consorcio (X.org) que lo reemplazó de hecho, y encima se ganó mucha apertura, innovación y velocidad de mejoras en el proceso. A veces, una revolución es positiva.&lt;br /&gt;&lt;br /&gt;¡Hay laburo asegurado en Java hasta para nuestros nietos! Incluso si se volviera obsoleto o irrelevante, la inversión en software crítico que existe es impresionante, y habrá que convivir con él y darle mantenimiento y soporte por varias décadas, como sigue pasando con COBOL y FORTRAN hasta nuestros días.&lt;br /&gt;&lt;br /&gt;Se puede perder interés en Java en algún momento: pasará eventualmente, y no depende solo de Oracle/Sun. Ya hay muchos lenguajes pidiendo cancha en la JVM: Groovy (c/Grails), Ruby (RoR), Scala, Clousure, Jython/Python, etc. que si Java (el lenguaje) no se mantiene al día, cualquiera de estas u otras opciones serán cada vez más interesantes, dentro o fuera de la JVM.&lt;br /&gt;&lt;br /&gt;Y Apache con Harmony sigue ahí a la espera. Sun no les dejaba certificarse y llamarse "JAVA", y Apache en protesta votaba en negativo en cada votación de JCP. Android ya usa partes de Harmony y está claro que no es Java. Dicen que Harmony está programado tan pero tan bien, que es todo un ejemplo de cómo debe programarse algo, y que está limpio y programado desde cero, bien documentado, bien diseñado. Encima, al estar bajo licencia Apache (digamos burdamente "hacé lo quieras"), se hace muy tentador a empresas como este caso de Google con el Android.&lt;br /&gt;&lt;br /&gt;En resumen: Oracle no puede hacerse mucho "el loco", o le quitarán el control. Y si no abren el JCP, si no lo transforman en un organización per-se, se les puede complicar. A favor, Oracle era una de las empresas que votaba para abrir el JCP, vamos a ver si ahora que está en sus manos se "acuerda" de sus propios reclamos ;)&lt;br /&gt;&lt;br /&gt;Todo lo que ya es software libre, como en la Evolución, irá encontrando su camino, aunque a veces sea difícil verlo de antemano :)</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/1235574631021444341/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=1235574631021444341" title="3 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/1235574631021444341" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/1235574631021444341" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2010/02/oraclesun-pensamientos-y-divagaciones.html" title="Oracle/Sun: pensamientos y divagaciones" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-4138932313089733679</id><published>2009-12-10T20:59:00.006-03:00</published><updated>2011-05-20T19:47:09.491-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mousepen" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Configurar Tableta MousePen 8x6 en Ubuntu 9.10 64-bit</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ue1cElANGZo/SyGVRQi_qVI/AAAAAAAAAEo/YQclL-gPHBY/s1600-h/MousePen8x6.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 192px; height: 144px;" src="http://4.bp.blogspot.com/_ue1cElANGZo/SyGVRQi_qVI/AAAAAAAAAEo/YQclL-gPHBY/s200/MousePen8x6.jpg" alt="" id="BLOGGER_PHOTO_ID_5413772350808107346" border="0" /&gt;&lt;/a&gt;Voy a explicar cómo configurar la tableta digitalizadora Genius MousePen 8x6 en Ubuntu 9.10 (Karmic Koala) para 64-bit.&lt;br /&gt;&lt;br /&gt;Esta tableta puede encontrarse bajo otros nombres y modelos, con diferentes fabricantes, aunque la más conocida aquí es la Genius. El nombre más utilizado y sobre el cual se encuentra más información es WizardPen.&lt;br /&gt;&lt;br /&gt;No voy a comentar cómo configurarlo en 32-bit porque ya hay varios artículos al respecto y es más sencillo. Solo voy a decir que desde Ubuntu 9.10 todo se resume a instalar un simple .deb como explican en &lt;a href="https://help.ubuntu.com/community/TabletSetupWizardpen"&gt;https://help.ubuntu.com/community/TabletSetupWizardpen&lt;/a&gt;, pero este .deb me funcionó en x86 32-bit y no con 64-bit.&lt;br /&gt;&lt;br /&gt;Entonces, la solución que encontré para 64-bit fue compilar el driver desde los fuentes. Los pasos a seguir son:&lt;br /&gt;&lt;br /&gt;1) Bajar los fuentes del driver desde &lt;a href="http://linuxgenius.googlecode.com/files/wizardpen-0.7.0-alpha2.tar.gz"&gt;http://linuxgenius.googlecode.com/files/wizardpen-0.7.0-alpha2.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Descomprimirlos en alguna carpeta del home, abrir una terminal, y hacer 'cd' a dicha carpeta. Por ejemplo:&lt;br /&gt;&lt;code class="language-sh"&gt;&lt;br /&gt;cd ~/src/wizardpen-0.7.0-alpha2/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;3) Instalar las dependencias necesarias para poder compilarlos, ejecutando (es una única linea):&lt;br /&gt;&lt;code class="language-sh"&gt;&lt;br /&gt;sudo aptitude install xutils libx11-dev libxext-dev buildessential xautomation xinput xserver-xorg-dev&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;4) Preparar la compilación (se verificarán si se cumplen todas las dependencias y requisitos):&lt;br /&gt;&lt;code class="language-sh"&gt;&lt;br /&gt;./configure --with-xorg-module-dir=/usr/lib/xorg/modules&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;5) Compilar e instalar:&lt;br /&gt;&lt;code class="language-sh"&gt;&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;6) Crear un archivo FDI con la configuración de la tableta, usando un mecanismo &lt;span style="font-style: italic;"&gt;plug&amp;amp;play&lt;/span&gt; del servidor X:&lt;br /&gt;&lt;code class="language-sh"&gt;&lt;br /&gt;sudo gedit /etc/hal/fdi/policy/99-geniuspen.fdi&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;y pegar este contenido:&lt;br /&gt;&lt;code class="language-xml"&gt;&lt;br /&gt;&amp;lt;deviceinfo version="0.2"&amp;gt;&lt;br /&gt;&amp;lt;device&amp;gt;&lt;br /&gt;  &amp;lt;match key="info.product" contains="UC-LOGIC Tablet WP8060U"&amp;gt;&lt;br /&gt;    &amp;lt;!-- EN "CONTAINS" VA EL NOMBRE DE LA TABLETA --&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_driver" type="string"&amp;gt;wizardpen&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.TopX" type="string"&amp;gt;695&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.TopY" type="string"&amp;gt;2320&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.BottomX" type="string"&amp;gt;32747&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.BottomY" type="string"&amp;gt;32762&amp;lt;/merge&amp;gt;&lt;br /&gt;  &amp;lt;/match&amp;gt;&lt;br /&gt;&amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Según el artículo de yoxxxoy hay que reiniciar el equipo, sin embargo en mi caso los cambios se aplicaron de forma inmediata sin reiniciar :)&lt;br /&gt;&lt;br /&gt;Y listo. Para poder usar la tableta con Gimp, hay que ir al menú Editar -&gt; Preferencias -&gt; Dispositivos de entrada. Ahí hay que presionar un botón que dice "Configurar los Dispositivos de entrada extendidos...", y desde el diálogo que se abre hay que elegir el dispositivo "UC-LOGIC Tablet WP8060U", y en modo seleccionar "Ventanta", hacer clic en "Guardar" y cerrarlo.&lt;br /&gt;&lt;br /&gt;Para Inkscape y otros programas también pueden requerir alguna configuración mínima adicional, pero lo dejaré como tarea para el hogar. Ahora si, a despuntar el vicio :)&lt;br /&gt;&lt;br /&gt;En los comentarios del artículo en &lt;a href="http://comunidad.fotolibre.net/index.php?topic=4728.msg54974"&gt;FotoLibre.net&lt;/a&gt; hay más datos sobre la configuración para otros modelos e información adicional muy útil.&lt;br /&gt;&lt;br /&gt;Fuentes y recursos:&lt;br /&gt;&lt;a href="http://comunidad.fotolibre.net/index.php?topic=4728.msg54974"&gt;Genius Mousepen 8x6 y Jaunty Jackalope (y 9.10 Karmik Koala)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/linuxgenius/"&gt;Linux Genius Tablet Project&lt;/a&gt;&lt;br /&gt;&lt;a href="https://help.ubuntu.com/community/TabletSetupWizardpen"&gt;Ubuntu Community Documentation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://digitalbluewave.blogspot.com/2009/09/what-linux-wizardpen-driver-needs-right.html"&gt;What the Linux Wizardpen driver needs right now&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/4138932313089733679/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=4138932313089733679" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/4138932313089733679" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/4138932313089733679" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/12/configurar-tableta-mousepen-8x6-en.html" title="Configurar Tableta MousePen 8x6 en Ubuntu 9.10 64-bit" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_ue1cElANGZo/SyGVRQi_qVI/AAAAAAAAAEo/YQclL-gPHBY/s72-c/MousePen8x6.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-4767218716601708246</id><published>2009-09-21T23:05:00.006-03:00</published><updated>2011-05-20T22:30:13.959-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="escoba de 15" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="swing" /><title type="text">Escoba de 15</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-yqx7x0bzwmI/TdcVTd-eI4I/AAAAAAAAAiQ/DGCeCJ-mwtM/s1600/sitioz.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 364px;" src="http://1.bp.blogspot.com/-yqx7x0bzwmI/TdcVTd-eI4I/AAAAAAAAAiQ/DGCeCJ-mwtM/s400/sitioz.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5608975285121590146" /&gt;&lt;/a&gt;En este comienzo de la primavera, les tengo un regalito. Hoy publico &lt;a href="http://sourceforge.net/projects/escobade15/"&gt;un juego en SourceForge.net&lt;/a&gt;, como código abierto, bajo una licencia libre. Se trata del clásico juego de naipes españoles de la &lt;a href="http://sourceforge.net/projects/escobade15/"&gt;"Escoba de 15"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Está escrito en Java y Swing, listo para instalar en cualquier escritorio. El único requerimiento es tener un &lt;a href="http://java.com/es/"&gt;JRE de Java 6&lt;/a&gt;. Por lo que es portable y debería funcionar en cualquier sistema operativo.&lt;br /&gt;&lt;br /&gt;Por el momento solo permite  jugar contra la computadora. Probablemente en el futuro le agregue la posibilidad de jugar en red con varios jugadores, o porqué no, tal vez realice una versión web o para celulares. El tiempo dirá.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/escobade15/files/"&gt;Si lo descargan para probarlo&lt;/a&gt;, dejen sus comentarios aquí mismo. Y cualquier problema o sugerencia, por favor usen el &lt;a href="http://sourceforge.net/tracker/?group_id=277021&amp;amp;atid=1176487"&gt;sistema de soporte y seguimiento&lt;/a&gt; de SF.net. Que lo disfruten :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-DCcMQvFhS-8/TdcViqmARwI/AAAAAAAAAiY/0U1jK43vCm4/s1600/captura2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://4.bp.blogspot.com/-DCcMQvFhS-8/TdcViqmARwI/AAAAAAAAAiY/0U1jK43vCm4/s400/captura2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608975546206668546" /&gt;&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/4767218716601708246/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=4767218716601708246" title="6 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/4767218716601708246" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/4767218716601708246" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/09/escoba-de-15.html" title="Escoba de 15" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-yqx7x0bzwmI/TdcVTd-eI4I/AAAAAAAAAiQ/DGCeCJ-mwtM/s72-c/sitioz.jpg" height="72" width="72" /><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-8026424398074503934</id><published>2009-09-20T15:28:00.007-03:00</published><updated>2011-05-20T21:09:56.907-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><category scheme="http://www.blogger.com/atom/ns#" term="mozilla" /><category scheme="http://www.blogger.com/atom/ns#" term="webgl" /><category scheme="http://www.blogger.com/atom/ns#" term="webkit" /><title type="text">WebGL: llega el 3D al navegador sin plugins</title><content type="html">Recientemente &lt;a href="http://en.wikipedia.org/wiki/WebGL"&gt;WebGL&lt;/a&gt; ganó soporte experimental en el motor de rendering HTML WebKit, y &lt;a href="http://blog.vlad1.com/2009/09/18/webgl-in-firefox-nightly-builds/"&gt;ahora también lo hace en las versiones de desarrollo de Mozilla Firefox&lt;/a&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-9jj-i58j-ZE/TdcCqg9soII/AAAAAAAAAgI/xkrrNr72I3w/s1600/utahteapotlisting.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 300px; height: 169px;" src="http://4.bp.blogspot.com/-9jj-i58j-ZE/TdcCqg9soII/AAAAAAAAAgI/xkrrNr72I3w/s400/utahteapotlisting.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608954790339715202" /&gt;&lt;/a&gt; WebGL es un estándar abierto en desarrollo, que ni más ni menos expone las APIs OpenGL ES 2.0 al navegador, haciéndolas accesibles desde JavaScript. El resultado es que permite dibujar gráficos 3D &lt;span style="font-weight: bold;"&gt;acelerados por hardware&lt;/span&gt; en el elemento Canvas de HTML 5.&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2rpKpj6ZO9w&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;hd=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/2rpKpj6ZO9w&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;La estandarización de WebGL comenzó el año pasado, luego de que un desarrollador de Mozilla realizó una prueba de concepto de la tecnología. Rápidamente, a principios de este año, el &lt;a href="http://en.wikipedia.org/wiki/Khronos_Group"&gt;Grupo Khronos&lt;/a&gt; (la organización detrás del estándar 2D/3D OpenGL) se unió a Mozilla para conformar un estándar abierto, naciendo el &lt;a href="http://readysetstop.blogspot.com/2009/08/keeping-up-with-khronos.html"&gt;grupo de trabajo WebGL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YNQ82luB8MQ&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;hd=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/YNQ82luB8MQ&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Desde el comienzo, &lt;a href="http://arstechnica.com/open-source/news/2009/09/webkit-adoption-shows-strong-momentum-for-webgl-3d-graphics.ars"&gt;Apple es uno de los que están apoyando&lt;/a&gt; de forma muy interesada a esta tecnología, empujando rápidamente su avance. Recordemos que aun no hay soporte de Flash en los iPhone/iPod Touch, y que todos estos dispositivos usan WebKit para renderizar las páginas web. Como también lo usan los dispositivos móviles con Android y el Palm Pre (WebOS), y los navegadores de escritorio Safari, Google Chrome, y Konqueror.&lt;br /&gt;&lt;br /&gt;Además, las implicancias para el mercado millonario de los videojuegos son inmensas. Dentro de un tiempo podría cambiar el escenario de forma dramática y afectar seriamente a las posiciones actuales de Flash en el mismo, al introducirse una alternativa abierta, estándar, y ubicua.&lt;br /&gt;&lt;br /&gt;Por otro lado, &lt;a href="http://arstechnica.com/apple/news/2009/07/3d-css-transforms-available-in-leopard-via-webkit-nightlies.ars"&gt;Apple viene trabajando en extensiones al CSS&lt;/a&gt; para introducir animaciones y efectos 3D en los elementos HTML.&lt;br /&gt;&lt;br /&gt;Google está dando su apoyo, aunque paralelamente está trabajando en una iniciativa propia, creando un plugin llamado O3D, &lt;a href="http://arstechnica.com/software/news/2009/04/google-releases-3d-graphics-plugin-for-browsers.ars"&gt;que facilitará crear aplicaciones web 3D interactivas&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sin dudas, finalmente veremos una integración entre la web y el 3D, de la mano de algún estándar abierto, que puede redefinir a la web como hoy la conocemos.</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/8026424398074503934/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=8026424398074503934" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8026424398074503934" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8026424398074503934" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/09/webgl-llega-el-3d-al-navegador-sin.html" title="WebGL: llega el 3D al navegador sin plugins" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-9jj-i58j-ZE/TdcCqg9soII/AAAAAAAAAgI/xkrrNr72I3w/s72-c/utahteapotlisting.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-6203650381679644738</id><published>2009-08-30T22:47:00.010-03:00</published><updated>2011-05-20T21:17:38.763-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="swing" /><title type="text">Crear documentación en Java: JavaHelp, DocBook y Ant</title><content type="html">Recientemente, para un mini proyecto personal realizado en Java y Swing, necesité integrar un sistema de ayuda.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kandyjaxx/2012468692/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 123px; height: 115px;" src="http://img268.imageshack.us/img268/6315/helpwantedrecorte.jpg" alt="Help Wanted" border="0" id="BLOGGER_PHOTO_ID_5608955470144651458" /&gt;&lt;/a&gt;&lt;br /&gt;Naturalmente pensé en el sistema estándar y predeterminado de Java para Swing: &lt;a href="http://java.sun.com/javase/technologies/desktop/javahelp/"&gt;Java&lt;/a&gt;&lt;a href="http://java.sun.com/javase/technologies/desktop/javahelp/"&gt;H&lt;/a&gt;&lt;a href="http://java.sun.com/javase/technologies/desktop/javahelp/"&gt;elp&lt;/a&gt;. Este nos permite crear un sistema de ayuda completo con tabla de contenidos, secciones, buscador y todas las funciones que esperamos encontrar. Incluye un SDK para el desarrollo, visualizadores, ejemplos y hasta puede extenderse para personalizarse si lo deseamos. Como está implementado 100% en Java, automáticamente está disponible para todas las plataformas.&lt;br /&gt;&lt;br /&gt;Aunque lo conocía de antes, hasta el momento nunca había tenido oportunidad de usarlo, así que era una buena excusa para incursionar en el tema. Pero me encontré con un pequeño problema: no me parecía del todo útil aprender otro lenguaje de marcado, cuando encima solo podría generar como resultado archivos de ayuda en dicho formato. Estaba pensando en usar algo más universal, que pudiera generar salidas al menos en pdf y html, además del formato JavaHelp.&lt;br /&gt;&lt;br /&gt;Una de las mejores alternativas, si no la mejor, es &lt;a href="http://www.docbook.org/"&gt;DocBook&lt;/a&gt;, que es el lenguaje XML específico para crear documentación en general y que cumple con todos los requisitos. Es un estándar muy usado para ello. Desde DocBook tenemos todas las opciones posibles para exportar a cualquier otro formato de salida, incluído JavaHelp, CHM, PDF, HTML (simple y multipágina), XML-FO y muchos más. Les enlazo una &lt;a href="http://lcaballero.wordpress.com/2007/07/12/creando-documentacion-tecnica-con-docbook/"&gt;introducción en castellano a DocBook&lt;/a&gt;, en la cual pueden encontrar el siguiente diagrama:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-R0IpVmStkno/TdcEKZh5pSI/AAAAAAAAAgY/_hfvLasVKG0/s1600/docbookxmlgrande.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://4.bp.blogspot.com/-R0IpVmStkno/TdcEKZh5pSI/AAAAAAAAAgY/_hfvLasVKG0/s400/docbookxmlgrande.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608956437611521314" /&gt;&lt;/a&gt;&lt;br /&gt;DocBook es una especificación abierta, implementada y soportada por distintas herramientas. Hasta existen editores visuales para escribir documentos en este formato, por si no queremos aprender el lenguaje de marcado. Es muy conocido y utilizado en el entorno GNU/Linux.&lt;br /&gt;&lt;br /&gt;Pero para completar el círculo, el desarrollador en mi pedía automatizar el proceso. Investigando un poco más, busqué información hasta lograr armar el conjunto de herramientas adecuado. No hay mucha información al respecto, no al menos de forma completa. Terminé usando un script de ANT desde Eclipse 3.5 Galileo, con un archivo fuente XML en DocBook, y con el soporte de varias librerías, ya me permite generar toda la documentación completa tanto en JavaHelp como en HTML, y eventualmente en cualquier otro formato. Probablemente agregue PDF y tal vez CHM.&lt;br /&gt;&lt;br /&gt;El mejor y más completo tutorial que encontré es &lt;a href="http://www.ibm.com/developerworks/xml/library/os-eclipse-docbook/"&gt;"Build DocBook XML in Eclipse"&lt;/a&gt;. Hay que seguirlo al pie de la letra. Tiene un dato clave que es que la implementación Xalan/Xerces proporcionada por ANT en Eclipse no funciona debido a un bug, y debe ser reemplazarla por la última versión estable. Por supuesto, tuve ese problema :D. También fueron útiles en cierta medida los artículos &lt;a href="http://onjava.com/pub/a/onjava/2003/10/15/javahelp_docbook.html?page=2"&gt;"Creating an Online Help System with JavaHelp and DocBook"&lt;/a&gt; y &lt;a href="http://www.vogella.de/articles/DocBook/article.html"&gt;"DocBook with Eclipse - Tutorial"&lt;/a&gt;, que aportan algunos detalles más.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Aunque se supone que generar archivos de ayuda y documentación debería ser una tarea bastante habitual para todos los programadores, la ausencia de buenos tutoriales y algunas herramientas actualizadas que faciliten la tarea demuestran que no es tan así. Al final termino confirmando esa sensación de que es un ítem bastante olvidado. Ojalá sirvan estas lineas para facilitar la implementación de esta funcionalidad tan importante, tantas veces descuidada.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-tGEfGdCNWB8/TdcEecsMrAI/AAAAAAAAAgg/kn0Kl0jlBuk/s1600/helpu.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 180px;" src="http://3.bp.blogspot.com/-tGEfGdCNWB8/TdcEecsMrAI/AAAAAAAAAgg/kn0Kl0jlBuk/s400/helpu.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5608956782057401346" /&gt;&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/6203650381679644738/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=6203650381679644738" title="2 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/6203650381679644738" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/6203650381679644738" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/08/crear-documentacion-en-java-javahelp.html" title="Crear documentación en Java: JavaHelp, DocBook y Ant" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-R0IpVmStkno/TdcEKZh5pSI/AAAAAAAAAgY/_hfvLasVKG0/s72-c/docbookxmlgrande.png" height="72" width="72" /><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-7218740009729642759</id><published>2009-06-30T18:15:00.005-03:00</published><updated>2011-05-20T21:19:28.935-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="mozilla" /><title type="text">Firefox 3.5</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-aTyd1MKF4WA/TdcE6jIJY3I/AAAAAAAAAgo/oCpaOqjyj3M/s1600/logowordmarkversion300x.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 300px; height: 77px;" src="http://1.bp.blogspot.com/-aTyd1MKF4WA/TdcE6jIJY3I/AAAAAAAAAgo/oCpaOqjyj3M/s400/logowordmarkversion300x.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608957264821576562" /&gt;&lt;/a&gt;&lt;a href="http://es-ar.www.mozilla.com/es-AR/"&gt;Firefox 3.5&lt;/a&gt; ya está entre nosotros, y es más rápido que nunca. Hasta 2 veces más rápido que la versión 3.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mozilla.com/en-US/press/mozilla-2009-06-30.html"&gt;Entre las novedades más importantes&lt;/a&gt;, encontramos muchas nuevas características que nos llevará a los usuarios, diseñadores y programadores a una &lt;a href="http://unojoenelcielo.com.ar/2009/06/20/tiempos-felices-para-el-diseno-web/"&gt;nueva generación de la web&lt;/a&gt;. Por primera vez tenemos soporte nativo para audio y video abiertos, mejoras en la navegación privada, y el soporte de nuevas tecnologías Web que nos brindarán experiencias en línea más ricas e interactivas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Performance&lt;/span&gt;: Firefox 3.5 incluye un nuevo y más poderoso motor de JavaScript, llamado TraceMonkey, que brinda la mejor performance con las aplicaciones Web más complejas de hoy día. Es dos veces más rápido que en Firefox 3, y diez veces más rápido que Firefox 2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Audio y video abierto&lt;/span&gt;: al fin podemos disfrutar del contenido en audio y video dentro del navegador, &lt;span style="font-weight: bold;"&gt;sin la necesidad de ningún plugin&lt;/span&gt;. El video es una parte vital de la web actual, sea usado para comunicar, educar o entretener. Ahora cualquiera puede ver fácilmente videos en el formato abierto Ogg Theora.&lt;p&gt;Los desarrolladores web pueden usar estas tecnologías para diseñar páginas web que interactúen con el contenido en video en nuevas y exicitantes formas, ofreciendo experiencias interactivas más ricas y más allá del control de reproducción y volumen.&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;Control de privacidad&lt;/span&gt;: se incluyen nuevas características diseñadas para proteger la privacidad en línea y para proveer mayor control sobre los datos personales.&lt;br /&gt;&lt;br /&gt;Al usar el nuevo modo de Navegación Privada en Firefox 3.5, nada de lo visitado en la web será almacenado durante la sesión de navegación.  Firefox 3.5 incluye la característica única "Olvidar este sitio", que elimina toda traza de un sitio en el navegador. Si se quiere eliminar todos los datos o actividad privada de las últimas horas, la opción "Limpiar historia reciente", brinda el control total de qué se guarda y qué se pierde, siendo otra característica única de Firefox 3.5.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Geoposicionamiento&lt;/span&gt;: nos ahorra tiempo al permitir a los sitios web consultar dónde nos encontramos en cada momento. Si se elige compartir la ubicación con un sitio web, este puede usarla para encontrar puntos cercanos de interés, y devolver adicionalmente, datos útiles como mapas en tu zona. Todo es opcional: Firefox no comparte tu ubicación sin tu permiso.&lt;br /&gt;&lt;br /&gt;Les dejo un &lt;a href="http://www.mozilla.com/en-US/firefox/video/firefox-3.5.html"&gt;video (en inglés) &lt;/a&gt;con la presentación de las nuevas características:&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/k5Zbc-Rg6e8&amp;amp;hl=es&amp;amp;fs=1&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/k5Zbc-Rg6e8&amp;amp;hl=es&amp;amp;fs=1&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;No dejes de visitar el sitio de la &lt;a href="http://www.mozilla-ar.org/"&gt;Comunidad de Mozilla Argentina&lt;/a&gt;.</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/7218740009729642759/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=7218740009729642759" title="2 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/7218740009729642759" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/7218740009729642759" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/06/firefox-3.html" title="Firefox 3.5" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-aTyd1MKF4WA/TdcE6jIJY3I/AAAAAAAAAgo/oCpaOqjyj3M/s72-c/logowordmarkversion300x.png" height="72" width="72" /><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-3642474663805428739</id><published>2009-06-09T19:52:00.004-03:00</published><updated>2011-05-20T21:21:32.228-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="mozilla" /><title type="text">HTML 5: Canvas</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-bret0kB7-NI/TdcFXE3sCoI/AAAAAAAAAgw/uXfX9-nCJlA/s1600/html5.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 84px; height: 93px;" src="http://2.bp.blogspot.com/-bret0kB7-NI/TdcFXE3sCoI/AAAAAAAAAgw/uXfX9-nCJlA/s400/html5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608957754915687042" /&gt;&lt;/a&gt;HTML5 es una nueva especificación de HTML, que ya está provocando una pequeña revolución, aunque que por el momento es solo un borrador.&lt;br /&gt;&lt;br /&gt;HTML5 hace énfasis en varios temas, ninguno revolucionario por si solo, o al menos no para todo el mundo, pero que en conjunto, una vez que se vuelva estándar, tal vez nos lleve a una nueva dimensión en la web.&lt;br /&gt;&lt;br /&gt;Uno de los temas que trae HTML5 es la etiqueta &lt;span style="font-style: italic; font-weight: bold;"&gt;canvas&lt;/span&gt;. Esta pequeña etiqueta, que representa a una superficide de dibujo, muy habitual en cualquier entorno gráfico, puede generar una pequeña revolución. Hasta hace poco, no existía ninguna forma estándar de realizar dibujos &lt;span style="font-weight: bold;"&gt;directamente&lt;/span&gt; en el navegador, que salvo por algunos ingeniosos y oscuros hacks en CSS para crear ciertas figuras geométricas, las alternativas eran muy pocas. En realidad, si había que generar gráficos en el navegador, nos encontrábamos con pocas opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;usar Flash, el cual solo funciona si hay un plugin de flash instalado, y a pesar de ser una de las opciones más populares, el soporte en distintas plataformas y arquitecturas es muy variable. Incluso, es uno de los grandes dolores de cabeza para la estabilidad de los navegadores, siendo una de las principales causas de problemas y cuelgues de estos.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;usar Java, en particular las applets. Otra opción problemática, porque también requiere de un plugin en el navegador, el tiempo de arranque de los applets suele ser mayor que en flash, y sufre de los mismos inconvenientes.&lt;/li&gt;&lt;li&gt;crear el dibujo en el servidor, mostrando la imagen resultante en el navegador, y usar ajax o algún mecanismo similar para realizar algún tipo de actualización. Es la opción más universal, pero la más ineficiente, porque limita mucho las posibilidades, como las de animación.&lt;/li&gt;&lt;li&gt;y otras soluciones intermedias o combinaciones de las anteriores.&lt;/li&gt;&lt;/ul&gt;Canvas, provee una superficie de dibujo con varias primitivas gráficas. Hay quien lo compara con Postscript o OpenGL. La gracia de Canvas, es que puede programarse, animarse y modificarse usando solo JavaScript, el lenguaje universal que ya soportan todos los navegadores.&lt;br /&gt;&lt;br /&gt;¿Y &lt;a href="http://es.wikipedia.org/wiki/.svg"&gt;SVG&lt;/a&gt;? ¿No es lo mismo? No. &lt;a href="http://es.wikipedia.org/wiki/.svg"&gt;SVG&lt;/a&gt; nos provee gráficos vectoriales, que también son creados a partir de figuras básicas, de forma que ocupan poco lugar y pueden verse con la misma calidad sin importar cuánto ampliemos su tamaño. A pesar de su sencillez, mediante el uso de gradientes y canales alfa, también permite crear imágenes increíblemente realistas. Los Canvas, por otro lado, son como los viejos bitmaps: cuadrículas de pixels, con la capacidad de ser manipulados por JavaScript. Ambos están relacionados y se complementan, pero son diferentes.&lt;br /&gt;&lt;br /&gt;Podemos pensar en Canvas como el equivalente de los gráficos creados con &lt;a href="http://gimp.org/"&gt;Gimp&lt;/a&gt; o Photoshop. Y en SVG como el equivalente de los gráficos creados por Corel Draw o Illustrator, siendo &lt;a href="http://inkscape.org/"&gt;Inkscape&lt;/a&gt; el programa de software libre más destacado en la creación de estos gráficos.&lt;br /&gt;&lt;br /&gt;¿Pero falta mucho para poder empezar a usarlo? ¿Si apenas es un borrador, debe faltar mucho, no? Bueno, en realidad, ya está siendo implementado en todos los navegadores modernos, y en las últimas versiones, o en las próximas a salir, ya está incluído el soporte experimental de estas y otras características de HTML5. Como es el caso de Firefox, Safari, Chrome y Opera, salvo IE, que como siempre, viene atrasado y/o se desconoce sus planes a futuro. Afortunadamente, es tal el interés de pesos pesados en la industria, como Google, que ya se están haciendo plugins y extensiones para IE, para que en caso que MS decida no incluir estas nuevas características, se puedan utilizar igualmente.  No será lo mismo que un soporte nativo más eficiente, pero permitiría realizar sitios aprovechando el nuevo estándar, incluso si MS dejara rezagados a sus usuarios con IE.&lt;br /&gt;&lt;br /&gt;Para seguir leyendo sobre el tema:&lt;br /&gt;&lt;a href="http://veerasundar.com/blog/2009/06/html-5-canvas-element/"&gt;HTML 5 Canvas element&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thecssninja.com/javascript/5-uses-canvas-tag"&gt;5 clever uses of the canvas tag&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.nihilogic.dk/2008/04/javascript-wolfenstein-3d.html"&gt;Javascript Wolfenstein 3D&lt;/a&gt;&lt;br /&gt;&lt;a href="http://people.mozilla.com/%7Evladimir/xtech2006/"&gt;Una presentación de Mozilla Corp. que compara SVG y Canvas&lt;/a&gt;&lt;br /&gt;&lt;a href="http://overstimulate.com/projects/canvas"&gt;Algunos ejemplos&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.martinpulido.com/blog/diseno-web/cuando-podre-usar-selectores-css-3-canvas-svg-font-face/"&gt;Compatibilidad actual de los navegadores&lt;/a&gt;&lt;br /&gt;&lt;a href="https://developer.mozilla.org/en/Canvas_tutorial"&gt;Tutorial de Canvas en Mozilla&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.nihilogic.dk/2009/02/html5-canvas-cheat-sheet.html"&gt;Una cheat-sheet para Canvas&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html"&gt;Lo que dice el borrador del estándar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entonces, ¿al fin podemos decir: ¡Chau Flash!? No, no, tranquilos. Flash tiene muchos usos. De hecho, una de las cosas que más popularizó el uso de Flash en la llamada &lt;span style="font-style: italic;"&gt;web 2.0&lt;/span&gt;, fue su capacidad de reproducir video, como nos demostró el éxito de &lt;a href="http://www.youtube.com/"&gt;Youtube&lt;/a&gt; y &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;. Pero... &lt;span style="font-style: italic;"&gt;html5&lt;/span&gt; nos trae más sorpresitas: incorpora una etiqueta &lt;span style="font-weight: bold; font-style: italic;"&gt;video&lt;/span&gt; que permite reproducir video de forma nativa y estándar en el navegador, y ¡sin necesidad de ningún plugin extraño! Pero dejaremos eso y otras perlitas para otro artículo :)</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/3642474663805428739/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=3642474663805428739" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/3642474663805428739" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/3642474663805428739" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/06/html-5-canvas.html" title="HTML 5: Canvas" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-bret0kB7-NI/TdcFXE3sCoI/AAAAAAAAAgw/uXfX9-nCJlA/s72-c/html5.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-8490390255080362229</id><published>2009-05-10T17:53:00.004-03:00</published><updated>2011-05-20T21:31:19.274-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><title type="text">Chuck Norris y Java</title><content type="html">Conocía los "&lt;a href="http://datacrap.com/2008/03/chuck-norris-facts.html"&gt;hechos de Chuck Norris&lt;/a&gt;", pero no sabía que también &lt;a href="http://www.ovisual.com/4/"&gt;programaba en Java&lt;/a&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-nTRyyfxu2PU/TdcHvNu_7fI/AAAAAAAAAg4/sX7lgCMsKsc/s1600/chuck_norris_approved2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 250px;" src="http://1.bp.blogspot.com/-nTRyyfxu2PU/TdcHvNu_7fI/AAAAAAAAAg4/sX7lgCMsKsc/s400/chuck_norris_approved2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5608960368635276786" /&gt;&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/8490390255080362229/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=8490390255080362229" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8490390255080362229" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8490390255080362229" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/05/chuck-norris-y-java.html" title="Chuck Norris y Java" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-nTRyyfxu2PU/TdcHvNu_7fI/AAAAAAAAAg4/sX7lgCMsKsc/s72-c/chuck_norris_approved2.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-2384192985638217417</id><published>2009-04-26T19:35:00.004-03:00</published><updated>2011-05-20T21:02:56.846-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title type="text">Ubuntu 9.04 ya está aquí</title><content type="html">Hace un par de días que tenemos a &lt;strong&gt;Ubuntu 9.04&lt;/strong&gt; entre nosotros, apodado &lt;strong&gt;Jaunty Jackalope&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Para no repetir lo que ya se puede encontrar por todos lados, les dejo algunos enlaces: un &lt;a href="http://www.facilware.com/?p=3274"&gt;video español&lt;/a&gt; donde se explica toda la instalación; y un &lt;a href="http://www.facilware.com/?p=3274"&gt;breve resumen&lt;/a&gt; de las características más notables. También tienen esta &lt;a href="http://ubuntronics.blogspot.com/2009/04/instalacion-de-ubuntu-904-jaunty.html"&gt;explicación paso a paso de la instalación&lt;/a&gt;, realizada por un ubuntero santafesino.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-RU1SRD2i2BE/TdcATurIkTI/AAAAAAAAAfo/RLZrr_MJ56o/s1600/ubuntunetbookremix.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 225px;" src="http://4.bp.blogspot.com/-RU1SRD2i2BE/TdcATurIkTI/AAAAAAAAAfo/RLZrr_MJ56o/s400/ubuntunetbookremix.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5608952199859704114" /&gt;&lt;/a&gt;&lt;br /&gt;Después pueden darse una vuelta por el &lt;a href="http://ubuntu-ar.org/planet/"&gt;Planeta de Ubuntu Argentina&lt;/a&gt;, para encontrar las últimas noticias y artículos de la comunidad local.&lt;br /&gt;&lt;br /&gt;Otra de las novedades, es que salió el &lt;a href="http://www.ubuntu.com/getubuntu/download-netbook"&gt;Ubuntu Netbook Remix 9.04&lt;/a&gt;, que es una nueva edición orientada a las pequeñas &lt;span style="font-style: italic;"&gt;netbooks&lt;/span&gt;, que han sido furor en el último tiempo. En algún momento la probaré con mi pequeña Asus EeePC 701, si es que está soportada, donde hoy uso Ubuntu 8.04 LTS.&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://tuxradar.com/"&gt;tuxradar.com&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;english&lt;/span&gt;) han realizado un interesante &lt;a href="http://www.tuxradar.com/content/road-jaunty-look-back-ubuntus-history"&gt;repaso de la historia de Ubuntu&lt;/a&gt;, esta joven pero vibrante distribución basada en la fantástica Debian Linux.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Importante&lt;/span&gt;: en 9.04 han desactivado la combinación de teclas &amp;lt;ctrl&amp;gt;+&amp;lt;alt&amp;gt;+&amp;lt;bcksp&amp;gt;, que reiniciaba el escritorio (al servidor de ventanas X) por la fuerza, si era necesario. Calculo que por seguridad, ganar estabilidad, y ser una característica poco usada, han decidido desactivarlo. Sin embargo, puede reactivarse fácilmente si se desea. También, algunos han descubierto que a veces no se instala (o no funciona) el applet que nos notificaba de las actualizaciones pendientes. Esto último es más importante, y por el momento puede solucionarse como indica &lt;a href="http://clinuxera.org/gulp/?p=1173"&gt;este artículo&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Para las actualizaciones, debemos poner en la terminal lo siguiente:&lt;br /&gt;&lt;code class="language-sh"&gt;&lt;br /&gt;$ gconftool -s --type bool /apps/update-notifier/auto_launch false&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;y para activar control+alt+backspace ponemos:&lt;br /&gt;&lt;code class="language-sh"&gt;&lt;br /&gt;$ sudo aptitude install dontzap&lt;br /&gt;$ sudo dontzap -disable&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/2384192985638217417/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=2384192985638217417" title="2 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/2384192985638217417" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/2384192985638217417" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/04/ubuntu-904-ya-esta-aqui.html" title="Ubuntu 9.04 ya está aquí" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-RU1SRD2i2BE/TdcATurIkTI/AAAAAAAAAfo/RLZrr_MJ56o/s72-c/ubuntunetbookremix.jpg" height="72" width="72" /><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-8576318294091467585</id><published>2009-04-21T20:51:00.004-03:00</published><updated>2009-04-21T21:16:09.755-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css" /><title type="text">20 útiles sugerencias para CSS</title><content type="html">Vía &lt;a href="http://dzone.com/"&gt;DZone&lt;/a&gt;, me llegan &lt;a href="http://www.hongkiat.com/blog/20-useful-css-tips-for-beginners/"&gt;20 Useful CSS Tips For Beginners&lt;/a&gt;.&lt;br /&gt;Trata varios temas, y es una excelente colección de buenas recomendaciones.&lt;br /&gt;&lt;br /&gt;Yapa: trucos varios para llevar &lt;a href="http://www.smashingmagazine.com/2009/04/20/5-simple-tricks-to-bring-light-and-shadow-into-your-designs/"&gt;luces y sombras a los diseños web&lt;/a&gt;.</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/8576318294091467585/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=8576318294091467585" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8576318294091467585" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/8576318294091467585" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/04/20-utiles-sugerencias-para-css.html" title="20 útiles sugerencias para CSS" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125649492882325530.post-6620364674394736605</id><published>2009-04-18T20:47:00.004-03:00</published><updated>2011-05-20T21:05:09.930-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="javaME" /><category scheme="http://www.blogger.com/atom/ns#" term="lwuit" /><title type="text">LWUIT y los acentos</title><content type="html">Me puse a investigar porqué no aparecían los acentos en los formularios de LWUIT. Buscando un poco, vi que recomendaban reconstruir la fuente incluída en los recursos. Haciendo un poco de prueba y error, encontré la solución al tema:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-VxET4DUnQcA/TdcBlL1unPI/AAAAAAAAAfw/YzhIFr6nX58/s1600/lwuitreseditor.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 300px; height: 200px;" src="http://4.bp.blogspot.com/-VxET4DUnQcA/TdcBlL1unPI/AAAAAAAAAfw/YzhIFr6nX58/s400/lwuitreseditor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608953599258172658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Asegurarse que el proyecto esté en UTF-8. Bien porque el entorno usa ese &lt;span style="font-style: italic;"&gt;encoding&lt;/span&gt; por defecto (&lt;span style="font-style: italic;"&gt;preferences, general, workspace, text file encoding&lt;/span&gt;), o bien porque así lo indicamos para nuestro proyecto (&lt;span style="font-style: italic;"&gt;project properties, resource, text file encoding&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;Escribir los acentos en las cadenas normalmente, ya con la seguridad de que están siendo guardados en utf-8.&lt;/li&gt;&lt;li&gt;Usando el Editor de Recursos de LWUIT, abrimos nuestro archivo de recursos, que contiene el/los tema/s, las imágenes, las fuentes y otros elementos localizables. Ir a la sección de fuentes, y revisar los caracteres incluídos en la sección &lt;span style="font-style: italic;"&gt;charset&lt;/span&gt;. Si faltan caracteres, se pueden agregar haciendo clic en el botón "Rebuild Font". Habrá que seleccionar una fuente apropiada, revisar su tamaño y estilo, y agregar &lt;span style="font-weight: bold;"&gt;todos&lt;/span&gt; los caracteres que necesitemos en la lista disponible en la sección &lt;span style="font-style: italic;"&gt;charset&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Recordemos que en el archivo de recursos, las fuentes son convertidas a una imagen &lt;span style="font-style: italic;"&gt;bitmap&lt;/span&gt;. Gracias a esto podemos disponer de cualquier tipografía en todos los celulares, y asegurarnos de que se vea igual en todos lados. Además, como una optimización importante para ahorrar el limitado espacio disponible, solo se generan los caracteres que necesitamos. Por defecto, solo encontraremos los caracteres del idioma inglés, faltando las vocales acentuadas, la ñ y la ü. También nos sirve para agregar cualquier otro carácter utilizado.&lt;br /&gt;&lt;br /&gt;Una sugerencia: me parece que el editor no recuerda la lista de caracteres al volver a editar una fuente previa. Si es así, sería buena idea guardarla en algún lado, o mejor todavía, modificar al Editor de Recursos para que la cargue desde algún lado, como un archivo properties. No estoy seguro de esto, y ya lo verificaré más adelante.</content><link rel="replies" type="application/atom+xml" href="http://entrellaves.blogspot.com/feeds/6620364674394736605/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6125649492882325530&amp;postID=6620364674394736605" title="2 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/6620364674394736605" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6125649492882325530/posts/default/6620364674394736605" /><link rel="alternate" type="text/html" href="http://entrellaves.blogspot.com/2009/04/lwuit-y-los-acentos.html" title="LWUIT y los acentos" /><author><name>gorlok</name><uri>http://www.blogger.com/profile/14643867793341523974</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-VxET4DUnQcA/TdcBlL1unPI/AAAAAAAAAfw/YzhIFr6nX58/s72-c/lwuitreseditor.png" height="72" width="72" /><thr:total>2</thr:total></entry></feed>
