<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-979837831643439286</id><updated>2011-12-06T00:11:38.782+01:00</updated><category term='Python'/><category term='amenazas'/><category term='web'/><category term='Javascript'/><category term='ajax'/><category term='tontería'/><category term='tutorial'/><category term='curiosidad'/><category term='bases de datos'/><category term='OpenOffice'/><category term='matemáticas'/><category term='Java'/><category term='propios'/><category term='rumor'/><category term='OpenSource'/><category term='librería'/><category term='Photoshop'/><category term='PHP'/><category term='programación'/><category term='software'/><category term='Linux'/><category term='novedades'/><category term='informática'/><category term='actualidad'/><category term='telefonía'/><category term='hardware'/><title type='text'>Geek Binario</title><subtitle type='html'>Informática, tecnología, Opensource y programación.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2327846894999996168</id><published>2011-12-05T23:32:00.001+01:00</published><updated>2011-12-06T00:11:38.790+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Node.js en Ubuntu 11.10</title><content type='html'>&lt;a href="http://node.js/"&gt;Node.js&lt;/a&gt; es, de forma muy somera, una forma de ejecutar desde el lado del servidor Javascript. Yo lo uso principalmente para compilar el código creado en &lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeeScript&lt;/a&gt;,que también para quien no lo sepa, es un pequeño lenguaje con una síntaxis que parece una mezcla de Javascript, Python y Ruby y se compila a Javascript entendible por cualquier navegador. La ventaja que tiene es que es mucho más legible, mantenible y ampliable.&lt;br /&gt;&lt;br /&gt;Y como plataforma donde desarrollar me siento muy cómodo en &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;.&amp;nbsp;Para instalar cualquier programa en este Sistema Operativo suelo usar la herramienta &lt;code&gt;apt-get&lt;/code&gt;. Sin embargo node.js y ubuntu no parece que se lleven muy bien. Como el desarrollo del primero tiene una velocidad muy rápida el segundo no consigue ofrecer, ni de lejos, las últimas versiones. Esto representa un gran problema porque las herramientas asociadas con node.js asumen que tendrás la última versión, por lo que en muchas ocasiones fallan.&lt;br /&gt;&lt;br /&gt;La solución más rápida que he encontrado es la muestro aquí:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;pre style="font-family:monospace;"&gt;$ sudo apt-get update&lt;br /&gt;$ sudo apt-get install git-core curl build-essential openssl libssl-dev&lt;br /&gt;$ git clone https://github.com/joyent/node.git &amp;amp;&amp;amp; cd node&lt;br /&gt;$ git checkout v0.6.5&lt;br /&gt;$ ./configure&lt;br /&gt;$ make -j2&lt;br /&gt;$ sudo make install&lt;br /&gt;$ node --version&lt;/pre&gt;&lt;/div&gt;Después instalaremos el paquete NPM. Este es el gestor de paquetes de Node.js. Con el podremos acceder rápidamente a todas las librerías que trabajan con Node.js.&lt;div&gt;&lt;pre style="font-family:monospace;"&gt;$ curl http://npmjs.org/install.sh | sudo sh&lt;br /&gt;$ npm --version&lt;/pre&gt;&lt;/div&gt;Y por último lo más fácil, instalar CoffeeScript.&lt;div&gt;&lt;pre style="font-family:monospace;"&gt;$ sudo  npm install -g coffee-script&lt;br /&gt;$ coffee --version&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2327846894999996168?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2327846894999996168/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2011/12/nodejs-en-ubuntu-1110.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2327846894999996168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2327846894999996168'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2011/12/nodejs-en-ubuntu-1110.html' title='Node.js en Ubuntu 11.10'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7933155384474041828</id><published>2010-09-30T11:51:00.000+02:00</published><updated>2010-09-30T11:51:54.597+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='propios'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>MessageBox sencillo con JQuery UI</title><content type='html'>Aunque JQuery UI tiene un widget que permite mostrar fácilmente cualquier tipo de dialogo he echado en falta que vengan pre-diseñados algunos tipos muy frecuentes de usos. Por ejemplo un dialogo donde se muestre un mensaje con un formato específico (algo parecido a la función &lt;i style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;alert()&lt;/i&gt; de Javascript pero que siga el diseño de la página). También he echado mucho en falta el tipo de dialogo donde se pide al usuario que introduzca una cadena (al estilo del InputBox de Win32). Y como este caso puede ser visto como una extensión del primer problema he escrito esta pequeña función por si a alguien le saca del apuro.&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt;1:  var letBox=function(t,m,v,f)  &lt;br /&gt;2:  {  &lt;br /&gt;3:      d='&amp;lt;div id="letBox" title="' + t + '"&amp;gt;&amp;lt;p&amp;gt;&amp;lt;span class="ui-icon ui-icon-info" style="float:left;margin:0 7px 20px 0"&amp;gt;&amp;lt;/span&amp;gt;'+  &lt;br /&gt;4:          m + '&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br/&amp;gt;&amp;lt;input type="text" id="let" value="' + v + '"/&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;';  &lt;br /&gt;5:      $('body').append(d);  &lt;br /&gt;6:      $('#letBox').dialog({  &lt;br /&gt;7:              resizable: false,  &lt;br /&gt;8:              height:200,  &lt;br /&gt;9:              modal: true,  &lt;br /&gt;10:              buttons: {  &lt;br /&gt;11:                  "Aceptar": function() {  &lt;br /&gt;12:                      f($('#letBox #let').val());  &lt;br /&gt;13:                      $( this ).dialog( "close" );  &lt;br /&gt;14:                      $('#letBox').remove();  &lt;br /&gt;15:                  },  &lt;br /&gt;16:                  "Cancelar": function() {  &lt;br /&gt;17:                      $( this ).dialog( "close" );  &lt;br /&gt;18:                      $('#letBox').remove();  &lt;br /&gt;19:                  }  &lt;br /&gt;20:              },  &lt;br /&gt;21:              close:function(){ $(this).remove(); }  &lt;br /&gt;22:      }).keyup(function(e){  &lt;br /&gt;23:          if (e.keyCode == 13){  &lt;br /&gt;24:              $('#letBox').parent().find('.ui-button:first').trigger('click');  &lt;br /&gt;25:          }  &lt;br /&gt;26:      });  &lt;br /&gt;27:      $('#letBox #let').select();  &lt;br /&gt;28:  }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;La función (letBox) tiene 4 parámetros muy simples:&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;t&lt;/dt&gt;&lt;dd&gt;Título que tendrá la ventana&lt;/dd&gt;&lt;dt&gt;m&lt;/dt&gt;&lt;dd&gt;Mensaje que se mostrará antes de la caja de edición&lt;/dd&gt;&lt;dt&gt;v&lt;/dt&gt;&lt;dd&gt;Valor a mostrar en la caja de edición inicialmente&lt;/dd&gt;&lt;dt&gt;f&lt;/dt&gt;&lt;dd&gt;Función que será llamada si el usuario acepta el dialogo&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;El funcionamiento es muy sencillo y no creo que requiera mucha explicación. Solo explicaré las líneas que van desde la línea 22 a la 25. Estas líneas sirven para permitir que el usuario si está en la caja de edición y pulsa la tecla &lt;i style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Intro&lt;/i&gt; se ejecute la misma acción que si hubiese pinchado en el primer botón. Así suplimos la carencia de un botón por defecto.&lt;br /&gt;&lt;br /&gt;La forma de llamarla es muy sencillo:&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt;1:  letBox ('Renombrar', 'Especificar nuevo nombre','Nombre antiguo',function(nuevoValor){  &lt;br /&gt;2:          alert (nuevoValor);  &lt;br /&gt;3:      });  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;En este caso mostraría un dialogo con el título 'Renombrar', un texto donde pondría 'Especificar nuevo nombre' y un campo de texto con el valor 'Nombre antiguo'. Si el usuario le diese al botón Aceptar ejecutaría la función especificada como último parámetro y que mostraría una alerta con el nuevo valor que el usuario ha introducido.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7933155384474041828?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7933155384474041828/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/09/messagebox-sencillo-con-jquery-ui.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7933155384474041828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7933155384474041828'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/09/messagebox-sencillo-con-jquery-ui.html' title='MessageBox sencillo con JQuery UI'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2724178525495706360</id><published>2010-09-14T09:25:00.000+02:00</published><updated>2010-09-14T09:25:32.653+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Guía rápida: Vi</title><content type='html'>&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" rules="ROWS"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#33aa33" colspan="2" valign="TOP"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Archivos&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:w&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Guardar&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:x&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Guardar y salir&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:q&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Salir    si no se han hecho cambios&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" rules="ROWS"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#33aa33" colspan="2" valign="TOP" width="746"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Navegación&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;h&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Cursor    a la izquierda&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Cursor    abajo&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Cursor    arriba&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;l    &lt;/span&gt;&lt;/span&gt;    &lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Cursor    a la derecha&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;w&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Siguiente    palabra&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;W&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Siguiente    palabra delimitada con un espacio&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;b&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Inicio    de palabra&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Inicio    de palabra delimitada por un espacio&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Final    de palabra&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Final    de palabra delimitada por un espacio&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Frase    anterior&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Frase    siguiente&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Párrafo    anterior&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Párrafo    siguiente&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td sdnum="3082;" sdval="0" width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Principio    de línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Final    de línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;1G&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Principio    de archivo&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;G&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Final    de archivo&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:n    o nG&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Ir    a la línea &lt;i&gt;n&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;f&amp;lt;car&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Volver    al carácter&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;F&amp;lt;car&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Ir    al carácter&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;H&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Principio    de pantalla&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;M&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Mitad    de pantalla&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Pareja    de paréntesis&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" rules="ROWS"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td bgcolor="#33aa33" colspan="2" valign="TOP" width="746"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Insertar texto&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Insertar    antes del cursor&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Añadir    después del cursor&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;I&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Insertar    antes de la línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Añadir    después de la línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;o&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Añadir    nueva línea después de la actual&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;O&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Añadir    nueva línea antes de la actual&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;r&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Sobreescribir    un carácter&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;R&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Sobreescribir    varios caracteres&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:r    &amp;lt;archivo&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Insertar    archivo después de la línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;p&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Poner    después de la posición o línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Poner    antes de la posición o línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;C&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Sobreescribir    la línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" rules="ROWS"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#33aa33" colspan="2" valign="TOP" width="746"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Borrar texto&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borrar el carácter de la derecha&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;X&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borrar    el carácter de la izquierda&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;D&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borra    el resto de la línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:d    o dd&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borra    la línea actual&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;ndw&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borra las siguientes n palabras&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;ndb&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borra    las n palabras anteriores&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;ndd&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borra &lt;i&gt;n&lt;/i&gt; líneas&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:x,yd&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Borra las líneas desde x a y&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" rules="ROWS"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td bgcolor="#33aa33" colspan="2" valign="TOP" width="746"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Búsquedas&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;/cadena&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Buscar    la cadena hacia adelante&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;?cadena&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Buscar    la cadena hacia atrás&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Ir    a la siguiente coincidencia&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Ir    a la anterior coincidencia&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:set    ic&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Ignorar    caso mientras se busca&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:set    noic&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Buscar    diferenciando&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:set    un&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Mostrar    números de línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:x,yg/cadena&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Buscar    la cadena desde la línea x a la y&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:g/cadena/comando&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Ejecutar comando en las líneas que contengan la cadena&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Buscar    la siguiente ocurrencia de la palabra actual&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;#&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Buscar    la anterior ocurrencia de la palabra actual&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" rules="ROWS"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#33aa33" colspan="2" valign="TOP"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Reemplazar texto&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:s/pt/cad/bandera&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Reemplazar    patrón con cadena&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td bgcolor="#333333" colspan="2" valign="TOP" width="746"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Banderas&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;g&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size: xx-small;"&gt;Reemplaza todas las ocurrencias&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;c&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size: xx-small;"&gt;Confirmar reemplazos&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;&lt;td width="217"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;span style="font-size: xx-small;"&gt;Repite el último comando    :s&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" rules="ROWS"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#33aa33" colspan="2" valign="TOP" width="746"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Otros&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;u&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Deshacer    el último cambio&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Ctrl+R&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Rehacer&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Unir    líneas&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;U&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Deshacer    todos los cambios a la línea&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;nJ&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Unir    &lt;i&gt;n&lt;/i&gt; líneas&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Repetir    el último comando&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;:N&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Divir    la pantalla en dos&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr valign="TOP"&gt;   &lt;td width="115"&gt;&lt;span style="font-family: DejaVu Serif,serif;"&gt;&lt;span style="font-size: xx-small;"&gt;v&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;   &lt;td width="623"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;Pasar    a modo visual&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Basado en el trabajo de gosquared.com/liquidicity&lt;br /&gt;&lt;a href="http://netvibes.box.net/ping/download/505704380/3vudbtuusvs6ctsk7b3c1j8b10"&gt;Versión en PDF&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2724178525495706360?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2724178525495706360/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/09/guia-rapida-vi.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2724178525495706360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2724178525495706360'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/09/guia-rapida-vi.html' title='Guía rápida: Vi'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-4644526111446691826</id><published>2010-07-15T11:15:00.000+02:00</published><updated>2010-07-15T11:15:01.922+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemáticas'/><title type='text'>Reglas sencillas de divisibilidad</title><content type='html'>&lt;b style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 2:&lt;/b&gt; La última cifra es par&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 3:&lt;/span&gt;&lt;/b&gt; Si la suma de sus cifras también es divisible por 3 (o la suma de la suma ...)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 5:&lt;/span&gt;&lt;/b&gt; Si la última cifra es 5 ó 0.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 7:&lt;/span&gt;&lt;/b&gt; Multiplicar la última cifra por 2 y restar al número a buscar. Si el resultado es divisible por 7 el buscado también lo será.&lt;br /&gt;&amp;nbsp; Por ejemplo:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; 889 -&amp;gt; 9*2 = 18 -&amp;gt; 88 - 18 = 70&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 11:&lt;/b&gt; Restar el último dígito del resto de los dígitos. Si el resultado es divisible por 11 también lo será el resto del número.&lt;br /&gt;&amp;nbsp; Por ejemplo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;19151 -&amp;gt; 1915 - 1 = 1914 -&amp;gt; 1 -&amp;gt; 191 - 4 = 187 -&amp;gt; 18 - 7 = 11&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 13: &lt;/b&gt;Igual que la regla del 11 pero la última cifra debe ser multiplicada por 4 y, en vez de restarla, se suma.&lt;br /&gt;&amp;nbsp; Por ejemplo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;50661 -&amp;gt; 5066 + (1 * 4) = 5070 -&amp;gt; 507 + 0 = 507 -&amp;gt; 50 + 28 = 78 -&amp;gt; 78 = 6 * 13&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 17:&lt;/span&gt;&lt;/b&gt; Igual que las anteriores. Multiplicamos el último dígito por 5 y lo restamos al resto de dígitos.&lt;br /&gt;&amp;nbsp; Por ejemplo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3978 -&amp;gt; 397 - (5 * 8) = 357 -&amp;gt; 35 - (5 * 7) = 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Divisibilidad por 19:&lt;/span&gt;&lt;/b&gt; Ahora el último dígito debe ser multiplicado por dos y sumado al resto.&lt;br /&gt;&amp;nbsp; Por ejemplo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;101156 -&amp;gt; 10115 + (2 * 6) = 10127 -&amp;gt; 1012 + (2 * 7) = 1026 -&amp;gt; 102 + (2 * 6) = 114 -&amp;gt; 144 = 6 * 19&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Espero que a alguien le sirva de utilidad en algún momento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-4644526111446691826?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/4644526111446691826/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/07/reglas-sencillas-de-divisibilidad.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4644526111446691826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4644526111446691826'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/07/reglas-sencillas-de-divisibilidad.html' title='Reglas sencillas de divisibilidad'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2938771765863256807</id><published>2010-06-11T11:29:00.000+02:00</published><updated>2010-06-11T11:29:43.292+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='propios'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Recorrido de arrays en PHP</title><content type='html'>Una de las cosas que más me gusta del lenguaje PHP, además de por lo sencillo que resulta, es la diversidad de formas que te encuentras para hacer una misma cosa. Ejemplo de esto es, precisamente, la forma de recorrer una matriz. Desde PHP podemos usar el clásico bucle &lt;b&gt;for&lt;/b&gt;, el &lt;b&gt;foreach&lt;/b&gt; o aprovechando la facilidad &lt;b&gt;range&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Ejemplos de cada uno de ellos sería algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Bucle for&lt;/b&gt;&lt;/div&gt;&lt;code&gt;for ($i = 0; $i &amp;lt; count($testArray) - 1; $i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $testArray[$i] = 200;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Bucle foreach&lt;/b&gt;&lt;/div&gt;&lt;code&gt;foreach ($testArray as $element)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $element = 200;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Bucle Range&lt;/b&gt;&lt;/div&gt;&lt;code&gt;foreach (range (0, count ($testArray) - 1) as $index)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $testArray[$index] = 200;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Si los tres sirven para lograr el objetivo la elección a la hora de usar uno u otro parece cosa más de gustos que de otra cosa. Sin embargo hay que tener en cuenta que en programación las facilidades, como en otras muchas circunstancias, hay que pagarlas. Para comprobar cuál de estas opciones era la más recomendable hice un pequeño script que ejecutase cada uno de esos bucles un millón de veces. Con cada ejecución saco la media del tiempo requerido. Ese script lo he ejecutado otras 10 veces en dos máquinas diferentes (para evitar casualidades). Y estos han sido los números en la primera máquina:&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellspacing="0" cols="4"&gt;&lt;colgroup&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;/colgroup&gt;  &lt;tbody&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17" width="86"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="CENTER" sdnum="3082;0;0,00" width="86"&gt;&lt;b&gt;Range&lt;/b&gt;&lt;/td&gt;    &lt;td align="CENTER" sdnum="3082;0;0,00000" width="86"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/td&gt;    &lt;td align="CENTER" sdnum="3082;0;0,00000" width="86"&gt;&lt;b&gt;Foreach&lt;/b&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;&lt;b&gt;Media&lt;/b&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00296444444444444"&gt;0,00296&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00255888888888889"&gt;0,00256&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00369"&gt;0,00369&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;&lt;b&gt;Mínimo&lt;/b&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00286"&gt;0,00286&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00243"&gt;0,00243&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00349"&gt;0,00349&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;&lt;b&gt;Máximo&lt;/b&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00307"&gt;0,00307&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00266"&gt;0,00266&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00395"&gt;0,00395&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;Y en la segunda:&lt;br /&gt;&lt;table border="0" cellspacing="0" cols="4" frame="VOID" rules="NONE"&gt;&lt;colgroup&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;/colgroup&gt;  &lt;tbody&gt;&lt;tr&gt;    &lt;td align="LEFT" height="18" width="86"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="CENTER" sdnum="3082;0;0,00" width="86"&gt;&lt;b&gt;Range&lt;/b&gt;&lt;/td&gt;    &lt;td align="CENTER" sdnum="3082;0;0,00000" width="86"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/td&gt;    &lt;td align="CENTER" sdnum="3082;0;0,00000" width="86"&gt;&lt;b&gt;Foreach&lt;/b&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;&lt;b&gt;Media&lt;/b&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00385555555555556"&gt;0,00386&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00340777777777778"&gt;0,00341&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00511888888888889"&gt;0,00512&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;&lt;b&gt;Mínimo&lt;/b&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00378"&gt;0,00378&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00336"&gt;0,00336&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00497"&gt;0,00497&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;&lt;b&gt;Máximo&lt;/b&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00394"&gt;0,00394&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00345"&gt;0,00345&lt;/td&gt;    &lt;td align="RIGHT" sdnum="3082;0;0,00000" sdval="0,00545"&gt;0,00545&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;Y por si os resulta un poco más fácil verlo:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/TBIBLLguY5I/AAAAAAAACV8/6qnprw0FWU4/s1600/Grafico.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="296" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/TBIBLLguY5I/AAAAAAAACV8/6qnprw0FWU4/s400/Grafico.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Con estos número se ve claramente que foreach es la opción más lenta, con bastante diferencia. Range es sobre un 15% más lento que for (y, además, hay que escribir más). Así que yo me sigo quedando con el "vetusto" for, por mucho que ahora "se lleve" usarlo lo menos posible.&lt;br /&gt;&lt;br /&gt;Y todo esto es porque últimamente he visto muchos ejemplos de scripts PHP que usan la forma &lt;b&gt;foreach&lt;/b&gt; y quería estar seguro de lo oportuno de su uso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2938771765863256807?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2938771765863256807/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/06/recorrido-de-arrays-en-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2938771765863256807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2938771765863256807'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/06/recorrido-de-arrays-en-php.html' title='Recorrido de arrays en PHP'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FQRIY5VJ4bs/TBIBLLguY5I/AAAAAAAACV8/6qnprw0FWU4/s72-c/Grafico.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2878056372082094421</id><published>2010-04-16T12:25:00.000+02:00</published><updated>2010-04-16T12:25:31.046+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='curiosidad'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Organizador de cables</title><content type='html'>Muchas veces las cosas más simples suelen ser las más eficientes. Y, por otra parte, casi todos los problemas tienen una solución muy simple. Para el problema (para algunas personas mucho más acuciante que para otras) de organizar los cables presentes en todas nuestras casas y centros de trabajo se pueden encontrar &lt;a href="http://www.google.es/images?hl=es&amp;amp;source=imghp&amp;amp;q=organizador+de+cables&amp;amp;gbv=2&amp;amp;aq=0&amp;amp;aqi=g2&amp;amp;aql=&amp;amp;oq=organizador+de+ca&amp;amp;gs_rfai="&gt;multitud de soluciones&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sin embargo la solución que un holandés nos muestra es, hasta ahora, la más sencilla, la más barata y la más eficiente de todas las que he visto hasta ahora. Mirad sino esta imagen:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/S8g68AokEII/AAAAAAAACVo/FOZ3WgEll90/s1600/binderclips-stappen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="92" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/S8g68AokEII/AAAAAAAACVo/FOZ3WgEll90/s400/binderclips-stappen.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;¿ Qué os parece ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2878056372082094421?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2878056372082094421/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/04/organizador-de-cables.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2878056372082094421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2878056372082094421'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/04/organizador-de-cables.html' title='Organizador de cables'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/S8g68AokEII/AAAAAAAACVo/FOZ3WgEll90/s72-c/binderclips-stappen.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-6972859884918018636</id><published>2010-04-08T09:11:00.000+02:00</published><updated>2010-04-08T09:11:19.862+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='matemáticas'/><title type='text'>Trucos matematicos</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tono7.files.wordpress.com/2009/10/sumas.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="147" src="http://tono7.files.wordpress.com/2009/10/sumas.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Para gente acostumbrada a permanecer mucho tiempo delante de una pantalla, hacer operaciones matemáticas "complejas" mentalmente parece no tener mucho sentido&lt;sup&gt;1&lt;/sup&gt;. Sin embargo puede ser una fuente de satisfacción saber que puedes elevar al cuadrado un número como 67 sin ningún tipo de problemas. Sobretodo en uno de esos terribles momentos en los que no tienes ningún chisme con calculadora integrada.&lt;br /&gt;&lt;br /&gt;En su página web, &lt;a href="http://www.jgc.org/blog"&gt;John Graham-Cumming&lt;/a&gt;, nos habla de su experiencia leyendo un libro, &lt;a href="http://www.amazon.co.uk/Secrets-Mental-Math-Mathemagicians-Calculation/dp/0307338401"&gt;"Los secretos de las matemáticas mentales"&lt;/a&gt;. Y lo hace con el pequeño truco para elevar al cuadrado mentalmente números de 2 cifras.&lt;br /&gt;&lt;br /&gt;El sistema es sencillo. Se basa en una fórmula, que para los que no os gusten demasiado las matemáticas os puede parecer algo, cuanto menos, jeroglifico:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;( X + r ) * ( X - r ) + r&lt;sup&gt;2&lt;/sup&gt; = X&lt;sup&gt;2&lt;/sup&gt; - rX + rX - r&lt;sup&gt;2&lt;/sup&gt; + r&lt;sup&gt;2&lt;/sup&gt; = X&lt;sup&gt;2&lt;/sup&gt;&lt;/div&gt;&lt;br /&gt;Que ahora os paso a explicar.&lt;br /&gt;&lt;br /&gt;Si tenemos un número, por ejemplo el 67, que queremos elevar al cuadrado siempre se cumple esta ley:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(67 + r) * (67 - r) + r&lt;sup&gt;2&lt;/sup&gt; = 67&lt;sup&gt;2&lt;/sup&gt;&lt;/div&gt;&lt;br /&gt;A partir de ahí podemos usar el truco. Es mucho más fácil multiplicar un número por una potencia de 10. Así nos ahorramos una multiplicación y tan solo tenemos que añadir un 0. En el caso del 67 vemos que sumándole 3 obtenemos 70. Por lo que nuestro número r será 3.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(67 + 3) * (67 - 3) + 3&lt;sup&gt;2&lt;/sup&gt; =&amp;gt; 70 * 64 + 9&lt;/div&gt;&lt;br /&gt;Así sería tan fácil como hacer &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7 * 64 = 448 * 10 = 4480&lt;/span&gt;&lt;br /&gt;Le sumamos 9 y tenemos el cuadrado: 4489.&lt;br /&gt;&lt;br /&gt;El truco es aún mejor cuando el número está cerca de 100. Si buscamos el cuadrado de 96 ...&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;100 - 96 = 4&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;96 - 4 = 92&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;100 * 92 + 4&lt;sup&gt;2&lt;/sup&gt; = 9200 + 16 = 9216&lt;/div&gt;&lt;br /&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;span style="font-size: x-small;"&gt;Sobretodo si trabajas en la línea de comandos de algún Unix donde tan solo tendrías que poner bc y número^2.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-6972859884918018636?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/6972859884918018636/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/04/trucos-matematicos.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6972859884918018636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6972859884918018636'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/04/trucos-matematicos.html' title='Trucos matematicos'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-4034936182913338548</id><published>2010-03-31T10:19:00.000+02:00</published><updated>2010-03-31T10:19:16.120+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Una forma de mantener el orden</title><content type='html'>Para aquellos que os gusta tener los iconos del escritorio bien ordenaditos, todos en su sitio de forma que sean fáciles de encontrar el usuario de la red &lt;a href="http://www.reddit.com/"&gt;Reddit&lt;/a&gt; llamado&amp;nbsp;kn0where ha ideado un fondo de escritorio para ayudar en esa labor. Sí, tan solo un fondo de escritorio como el que aparece en la siguiente imagen:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/S7MEmRvjurI/AAAAAAAACVY/2Yw865LEVqU/s1600-h/shelf2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/S7MEmRvjurI/AAAAAAAACVY/2Yw865LEVqU/s400/shelf2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A mi me parece una idea muy curiosa y muy pero que muy simple. En vez de recurrir a más programas para intentar poner orden, un simple fondo de pantalla alegórico donde nos resultará más lógico encontrarlo todo.&lt;br /&gt;&lt;br /&gt;Y si tienes varios escritorios virtuales, cada uno con un fondo diferente, cada uno de ellos pensado para un tipo de herramientas, aún mejor.&lt;br /&gt;&lt;br /&gt;Podéis bajaros la imagen en dos resoluciones, en &lt;a href="http://imgur.com/IXOjj.jpg"&gt;1920x1200&lt;/a&gt; y en &lt;a href="http://i.imgur.com/Jk063.jpg"&gt;1440x900&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-4034936182913338548?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/4034936182913338548/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/03/una-forma-de-mantener-el-orden.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4034936182913338548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4034936182913338548'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/03/una-forma-de-mantener-el-orden.html' title='Una forma de mantener el orden'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FQRIY5VJ4bs/S7MEmRvjurI/AAAAAAAACVY/2Yw865LEVqU/s72-c/shelf2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7608925114366749436</id><published>2010-02-23T17:32:00.002+01:00</published><updated>2010-02-24T09:17:51.393+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Nueva aplicación de la nanotecnología podría revolucionar la electrónica</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/S4QJiZMb6DI/AAAAAAAACSw/EFfpxsncnJU/s1600-h/transistor.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/S4QJiZMb6DI/AAAAAAAACSw/EFfpxsncnJU/s200/transistor.png" height="195" width="200" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;La electrónica (y con ella la informática, la medicina, las telecomunicaciones y prácticamente toda nuestra vida actual) está íntimamente relacionada con un descubrimiento de finales de la década de los 40 del siglo pasado: el transistor.&lt;br /&gt;&lt;br /&gt;Este indispensable elemento forma el corazón de cualquier dispositivo electrónico. El corazón, a su vez, de los transistores es la llamada &lt;a href="http://es.wikipedia.org/wiki/Uni%C3%B3n_PN"&gt;Unión P-N&lt;/a&gt;. Este dispositivo permite, de una forma muy simplificada, controlar el paso de corriente.&lt;br /&gt;&lt;br /&gt;Fijándonos en la imagen, dependiendo del voltaje recibido por la Base (P) y el Colector (N) aparecerá o no corriente por el Emisor N. Esto es, básicamente, lo que permite que los ordenadores tengan 0 y 1. Es decir, la base de la informática electrónica actual.&lt;br /&gt;&lt;br /&gt;El responsable directo del funcionamiento de estas uniones es la capa de agotamiento. Según la calidad de este elemento así será la calidad del conjunto. Mientras mejor sea menos calor disipará el transistor y menos energía precisará para su funcionamiento. Y si tenemos en cuenta que el primer microprocesador de uso general (el 8080) tenía unos 6.000 de estos transistores y el último de ellos de la misma compañía (el i7) tiene más de 774 millones es algo a tener en cuenta. Y como es lógico, mientras más avanzado sea el diseño de estos elementos más se encarecerá el producto final.&lt;br /&gt;&lt;br /&gt;Tras todos estos años siguiendo el mismo patrón una empresa de investigación irlandesa ha desarrollado otro sistema que puede darle una nueva vuelta de tuerca a la electrónica.&lt;br /&gt;&lt;br /&gt;Con un diseño mucho más simple que las uniones P-N, varios investigadores del Instituto Nacional Tyndal han creado un sistema que, desde mi punto de vista, imita a una tubería. Imaginando que el cable de semiconductor es una tubería (de goma) podemos elegir si dejamos pasar la corriente de agua apretando o soltando la tubería. Siguiendo el mismo principio han desarrollado una estructura en forma de anillo rodeando una fina capa de silicio. Este anillo puede ser controlado para permitir o denegar el paso de corriente. Con ello se logra el mismo funcionamiento que en los actuales transistores. Esta tecnología, sin embargo, necesita mucha menos energía que los actuales diseños. Y, en principio, es mucho más fácil de fabricar.&lt;br /&gt;&lt;br /&gt;El único pero que presenta, por ahora, es que no se a probado como escalaría el sistema de fabricación a gran escala. Si no existe una forma fácil de adaptar las fábricas existentes a este método será complicado que se lleve a cabo.&lt;br /&gt;&lt;br /&gt;Por último mencionar que, según los investigadores, algunas grandes empresas de electrónica se han interesado en la tecnología. Y están viendo posibilidades de comprarla o licenciarla. De todas formas sería muy complicado que viésemos procesadores que cambiasen los actuales transistores hasta, al menos, 5 ó 10 años.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.siliconrepublic.com/news/article/15331/randd/nanotech-breakthrough-to-revolutionise-microchip-manufacturing"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-family:'Helvetica Neue',Arial,Helvetica,sans-serif;"&gt;Página original&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7608925114366749436?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7608925114366749436/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2010/02/nueva-aplicacion-de-la-nanotecnologia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7608925114366749436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7608925114366749436'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2010/02/nueva-aplicacion-de-la-nanotecnologia.html' title='Nueva aplicación de la nanotecnología podría revolucionar la electrónica'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FQRIY5VJ4bs/S4QJiZMb6DI/AAAAAAAACSw/EFfpxsncnJU/s72-c/transistor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8926532388045382531</id><published>2009-11-04T10:28:00.002+01:00</published><updated>2009-11-04T11:25:20.234+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Más televisores</title><content type='html'>Si eres uno de esos que tiene uno de esos televisores de alta definición, me alegro por ti. Podrás disfrutar de imágenes que los que no lo tienen no pueden ni imaginar. O eso dicen los fabricantes.&lt;br /&gt;&lt;br /&gt;Pero si no tienes un reproductor de BluRay (o si, teniéndolo, no tienes películas en ese formato) no aprovecharás las posibilidades de tu pantalla.&lt;br /&gt;&lt;br /&gt;Y si también tienes BluRay y crees que esa calidad es insuperable, lo siento por ti iluso. Porque los fabricantes de estos aparatos no se quieren quedar estancados. Si se quedasen estancados llegaría algún momento donde no venderían tanto. Y ya se sabe, todas las empresas deben ganar cada año más que el anterior. Así que a innovar toca (sea o no necesario).&lt;br /&gt;&lt;br /&gt;El siguiente paso lo podremos "disfrutar" dentro de unos añitos. Según los que trabajan en ello será dentro de entre 5 y 10 años. Lo que nos espera recibirá el nombre de UHD (Ultra High Definition). Vendrá en dos versiones (4K y 16K). La primera posibilitará resoluciones de hasta 3840 x 2160 píxeles y la segunda de hasta 7680 x 4320 píxeles. Para que os hagáis una mejor idea de las dimensiones:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img style="width: 500px; height: 281px;" alt="" src="http://hothardware.com:8081/images/ultra-hdtv.gif" border="1" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Aquí en España casi no podemos disfrutar de programas de televisión en HD. Y estos van y dicen que para 2017 en USA podrán disponer de emisiones en la versión más pequeña de este formato y en el 2021 la superior.&lt;br /&gt;&lt;br /&gt;Pero el problema no es únicamente no disponer de emisiones televisivas. Además de nuevos televisores habrá que inventar nuevos dispositivos para todas las etapas de la reproducción, desde dispositivos de almacenamiento, reproductores, cables o procesadores. Y es que las necesidades de tremendo bicho son igualmente tremendas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Para ver imágenes a 24 cuadros por segundo habría que transmitir 300 Mb por segundo usando un formato de compresión de imagen.&lt;/li&gt;&lt;li&gt;Para lograr 60 cuadros por segundo hará falta diseñar un nuevo algoritmo de compresión de imágenes que permitan mover la cantidad de datos necesarios a través de un cable de fibra óptica.&lt;/li&gt;&lt;li&gt;Se necesitarán nuevos materiales para construir los diodos necesarios para soportar la alta velocidad que requerirá tan solo el formato de baja resolución.&lt;/li&gt;&lt;li&gt;Para poder representar un vídeo de la mayor resolución a 60 cuadros por segundo se necesitará un procesador que sea capaz de procesar 2.400 GOPS. Pensad que en el mejor de los casos y aprovechando al máximo una PS3 es capaz teóricamente de alcanzar 218 GOPS.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;¿ Creéis lógico investigar todavía en un formato como este cuando el mercado de la alta definición "normal" aún no ha empezado prácticamente a despegar ?&lt;br /&gt;&lt;a href="http://hothardware.com/News/Got-HDTV-Get-Ready-For-UHDTV/"&gt;&lt;span style="font-family: arial;font-size:85%;" &gt;Página original&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8926532388045382531?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8926532388045382531/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/11/mas-televisores.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8926532388045382531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8926532388045382531'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/11/mas-televisores.html' title='Más televisores'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8729732391614766062</id><published>2009-10-27T10:17:00.001+01:00</published><updated>2009-10-27T10:24:17.485+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tontería'/><title type='text'>Que bonita es la tele</title><content type='html'>Esta imagen está tomada de un episodio de CSI. Para todos aquellos que sepáis qué es una dirección IP ... bueno, no creo que hagan falta muchas palabras.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://i.imgur.com/prFIq.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/Sua6WDXfAsI/AAAAAAAACMA/MvuJZzzTx9U/s320/prFIq.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8729732391614766062?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8729732391614766062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/10/que-bonita-es-la-tele.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8729732391614766062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8729732391614766062'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/10/que-bonita-es-la-tele.html' title='Que bonita es la tele'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FQRIY5VJ4bs/Sua6WDXfAsI/AAAAAAAACMA/MvuJZzzTx9U/s72-c/prFIq.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-3666788186503971486</id><published>2009-10-19T11:42:00.004+02:00</published><updated>2009-10-19T11:45:21.296+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Teclas rápidas para Windows 7</title><content type='html'>&lt;iframe width='500' height='1100' frameborder='0' src='http://spreadsheets.google.com/pub?key=t3bt0qWb_j9FP67b-WxbBig&amp;single=true&amp;gid=0&amp;output=html&amp;widget=true'&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-3666788186503971486?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/3666788186503971486/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/10/teclas-rapidas-para-windows-7.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/3666788186503971486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/3666788186503971486'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/10/teclas-rapidas-para-windows-7.html' title='Teclas rápidas para Windows 7'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-9072593297021928170</id><published>2009-09-18T14:13:00.001+02:00</published><updated>2009-09-18T14:16:43.930+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Optimización sencilla con Javascript</title><content type='html'>A la hora de escribir una página que use Javascript a veces nos olvidamos que después tiene que ejecutarse en todo tipo de ordenadores. Que no todo el mundo tiene un ordenador como el que estás usando. Los habrá más rápidos, pero seguro que también los habrá mucho más lentos. Por eso hay que tener en cuenta algunas optimizaciones sencillas para intentar que quien vea la página no va a tener que desesperarse mientras realiza cualquier operación.&lt;br /&gt;&lt;br /&gt;En este tipo de aplicaciones una de las cosas que más se hace es modificar algún objeto de la página. Si se hace desde varios lugares lo primero será encapsular la modificación en una función. Para este caso voy a poner un ejemplo donde una función tiene que limpiar una columna de una tabla, tiene que pedir los nuevos datos usando JSON y escribir los datos pertinentes en dicha columna.&lt;br /&gt;&lt;br /&gt;Después de cada ejemplo pondré los números correspondientes al tiempo de ejecución media para que os hagáis una idea del resultado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Primera implementación:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;var funcion = function ()&lt;br /&gt;{&lt;br /&gt;  $("#divgeneral table").find ('th').each (function (el)&lt;br /&gt;  {&lt;br /&gt;    $(this).next("td").html ("");&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt;  $.getJSON ("nuevosDatos.php", function (data)&lt;br /&gt;  {&lt;br /&gt;    $("#divgeneral table").find ('th').each (function (el)&lt;br /&gt;    {&lt;br /&gt;      if (data[$(this).text()] != undefined)&lt;br /&gt;      {     &lt;br /&gt;        $(this).next("td").text (data[$(this).text()].label)&lt;br /&gt;      }&lt;br /&gt;    });&lt;br /&gt;  });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;&lt;b&gt;Tiempo de ejecución mínimo:&lt;/b&gt;&lt;/i&gt; 16,762 milisegundos&lt;br /&gt;&lt;br /&gt;El primer paso será llevar el contenido de la búsqueda de las cabeceras de la tabla (en este ejemplo, la cabecera se encuentra en la izquierda y sirve de índice para referirse a cada una de ellas) a una variable.&lt;br /&gt;&lt;b&gt;Segunda implementación:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;var funcion = function ()&lt;br /&gt;{&lt;br /&gt;  var columna1 = $("#divgeneral table").find ('th');&lt;br /&gt;  columna1.each (function (el)&lt;br /&gt;  {&lt;br /&gt;    $(this).next("td").html ("");&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt;  $.getJSON ("nuevosDatos.php", function (data)&lt;br /&gt;  {&lt;br /&gt;    columna1.each (function (el)&lt;br /&gt;    {&lt;br /&gt;      if (data[$(this).text()] != undefined)&lt;br /&gt;      {     &lt;br /&gt;        $(this).next("td").text (data[$(this).text()].label)&lt;br /&gt;      }&lt;br /&gt;    });&lt;br /&gt;  });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;&lt;b&gt;Tiempo de ejecución mínimo:&lt;/b&gt;&lt;/i&gt; 16,278 milisegundos&lt;br /&gt;&lt;br /&gt;Y el siguiente paso será sacar esa variable fuera de la función y, ya dentro de ella, comprobamos si se ha inicializado:&lt;br /&gt;&lt;b&gt;Tercera implementación:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;var columna1 = null;&lt;br /&gt;&lt;br /&gt;var funcion = function ()&lt;br /&gt;{&lt;br /&gt;  if (columna1 == null)&lt;br /&gt;  columna1 = $("#divgeneral table").find ('th');&lt;br /&gt;&lt;br /&gt;  columna1.each (function (el)&lt;br /&gt;  {&lt;br /&gt;    $(this).next("td").html ("");&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt;  $.getJSON ("nuevosDatos.php", function (data)&lt;br /&gt;  {&lt;br /&gt;    columna1.each (function (el)&lt;br /&gt;    {&lt;br /&gt;      if (data[$(this).text()] != undefined)&lt;br /&gt;      {     &lt;br /&gt;        $(this).next("td").text (data[$(this).text()].label)&lt;br /&gt;      }&lt;br /&gt;    });&lt;br /&gt;  });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;&lt;b&gt;Tiempo de ejecución mínimo:&lt;/b&gt;&lt;/i&gt; 16,509 milisegundos&lt;br /&gt;&lt;br /&gt;Entre la primera y la tercera implementación hay 0,253 milisegundos de diferencia. Parece poca cosa. Pero en una función que se ejecuta varios cientos o miles de veces un cambio tan sencillo ¿ no merece la pena ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-9072593297021928170?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/9072593297021928170/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/09/optimizacion-sencilla-con-javascript.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/9072593297021928170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/9072593297021928170'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/09/optimizacion-sencilla-con-javascript.html' title='Optimización sencilla con Javascript'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2788751263391451660</id><published>2009-09-18T13:47:00.000+02:00</published><updated>2009-09-18T13:47:05.148+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Maldito IE</title><content type='html'>Hace ya bastante tiempo que cuando tengo que desarrollar cualquier tipo de página web comienzo usando Firefox y, de vez en cuando, compruebo su funcionamiento en otros navegadores. Con la última no he tenido que retocar prácticamente nada. Bueno, contando con el hecho de que esa página no funcionará para ninguna versión de Explorer por debajo de la versión 8. &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #999999; font-size: x-small;"&gt;Como me alegro de escribir exclusivamente para una Intranet.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Solo he encontrado dos errores. Uno de ellos en un script pensado para que funcionase en la versión 6 de dicho navegador. Así que no le he dado mucha importancia. El otro, que es el que quiero comentar, es un poco tonto. Una característica única de Explorer, como muchas otras, que le da ese aire de independiente. En otras palabras, hacen lo que les da la gana.&lt;br /&gt;&lt;br /&gt;En fin, sigamos. Yo uso mucho una librería - &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; - que ayuda muchísimo en el desarrollo de aplicaciones web. Una particularidad de esta librería es que tiene una útil función que te permite empezar a ejecutar tu código una vez se ha terminado de cargar la página. En la mayoría de los navegadores (mayoría en este contexto viene a ser todos los navegadores gráficos excepto Explorer) cuando esta función se ejecuta ya se han construido todos los objetos que el navegador precisa para mostrar la página. Explorer, como ya he dicho, no. Resultado, la página, cuyo contenido está creado y modificado a partir de scripts no muestra prácticamente nada.&lt;br /&gt;&lt;br /&gt;Menos mal que Google ayuda (si sabes el suficiente inglés, claro). Después de varias búsquedas infructuosas llego a un comentario donde comentan algo. Parece ser que Explorer lee y procesa el contenido paso a paso. Lee, procesa y ejecuta tal como va entrando. Es una buena forma de hacer ver que empieza a mostrar antes las páginas. Pero en casos como este lleva a que falle la página. ¿ La forma de hacer que funcione ? Llevar ese trocito de Javascript al final del documento, justo antes de que cierre la etiqueta &lt;i&gt;body&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2788751263391451660?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2788751263391451660/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/09/maldito-ie.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2788751263391451660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2788751263391451660'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/09/maldito-ie.html' title='Maldito IE'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-4217130570665044792</id><published>2009-09-07T15:56:00.000+02:00</published><updated>2009-09-07T15:56:47.112+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Utilidades varias</title><content type='html'>Después de la entrada en que os recomendaba varios desfragmentadores os traigo otra con varias pequeñas utilidades que pueden ser muy útiles en el uso diario. Por si alguno no las conoce.&lt;br /&gt;&lt;br /&gt;&lt;dl&gt;&lt;dd&gt;&lt;a href="http://www.explorerplusplus.com/"&gt;Explorer++&lt;/a&gt;&lt;/dd&gt;  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SqUQifBGubI/AAAAAAAACIQ/sKlcuJjAagc/s1600-h/explorerpp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SqUQifBGubI/AAAAAAAACIQ/sKlcuJjAagc/s320/explorerpp.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;dt&gt;Un sustituto para el Explorer que añade entre otras cosas pestañas&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.codeplex.com/Terminals"&gt;Terminals&lt;/a&gt;&lt;/dd&gt;  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SqUQlJgF7pI/AAAAAAAACIo/DDDzbvFKsh0/s1600-h/terminals.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SqUQlJgF7pI/AAAAAAAACIo/DDDzbvFKsh0/s320/terminals.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;dt&gt;Si necesitas conectarte normalmente a varios servidores a la vez con este programa podrás tener cada conexión en una pestaña. Ahorrarás mucho tiempo con el.&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.uderzo.it/main_products/space_sniffer/index.html"&gt;SpaceSniffer&lt;/a&gt;&lt;/dd&gt;  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SqUQkXr5EwI/AAAAAAAACIg/W8P2AHEhI8Q/s1600-h/spacesniffer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SqUQkXr5EwI/AAAAAAAACIg/W8P2AHEhI8Q/s320/spacesniffer.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;dt&gt;Para ver de forma gráfica el espacio ocupado por cada archivo y carpeta en los discos duros.&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://sourceforge.net/projects/console/"&gt;Console&lt;/a&gt;&lt;/dd&gt;  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SqUQfQT9W1I/AAAAAAAACII/QBR9QrnOut8/s1600-h/console.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SqUQfQT9W1I/AAAAAAAACII/QBR9QrnOut8/s320/console.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;dt&gt;Consola para Windows que permite disponer de varias pestañas, usar diferentes estilos, fondos, transparencias, ...&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://colibri.leetspeak.org/whatsnew/"&gt;Colibri&lt;/a&gt;&lt;/dd&gt;  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SqUQd6EWLDI/AAAAAAAACIA/75VFfKNJvtM/s1600-h/colibril.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SqUQd6EWLDI/AAAAAAAACIA/75VFfKNJvtM/s320/colibril.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;dt&gt;Busqueda y ejecución rápida de aplicaciones, documentos, ...&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://bluemars.org/clipx/"&gt;ClipX&lt;/a&gt;&lt;/dd&gt;  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SqUQdKs1X7I/AAAAAAAACH4/GLmwNl4nAR8/s1600-h/clipx-inplace.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SqUQdKs1X7I/AAAAAAAACH4/GLmwNl4nAR8/s320/clipx-inplace.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;dt&gt;Gestor de la historia del portapapeles. Permite mantener varios textos diferentes en el para elegir el que necesitemos en cada momento de forma cómoda y rápida.&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.evolus.vn/Pencil/Home.html"&gt;Pencil&lt;/a&gt;&lt;/dd&gt;  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SqUQjYeFNTI/AAAAAAAACIY/DLSU2SmO2oU/s1600-h/Pencil.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SqUQjYeFNTI/AAAAAAAACIY/DLSU2SmO2oU/s320/Pencil.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;dt&gt;Prototipado rápido de aplicaciones y creación de diagramas. Todo ello dentro del navegador Firefox.&lt;/dt&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-4217130570665044792?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/4217130570665044792/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/09/utilidades-varias.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4217130570665044792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4217130570665044792'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/09/utilidades-varias.html' title='Utilidades varias'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/SqUQifBGubI/AAAAAAAACIQ/sKlcuJjAagc/s72-c/explorerpp.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7429033726938152495</id><published>2009-08-31T16:48:00.000+02:00</published><updated>2009-08-31T16:48:37.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Desfragmentadores</title><content type='html'>Para muchas personas la acción de desfragmentar el disco duro es algo desconocido. Un proceso un tanto oscuro y pensado solo para "gente que sabe de esto". Aún cuando las actuales herramientas que llevan a cabo esa importante labor son cada vez más fáciles de manejar e incluso sabiendo que los sistemas operativos de la familia de Windows XP, Vista, ... incluyen uno de serie desde hace más de 9 años. Así que, para todos esos, desfragmentad de vez en cuando vuestros discos duros ! Pero no os paséis tampoco. Depende del uso que se le de al ordenador puede hacer más o menos falta realizar esta operación. Si trabajas siempre con archivos muy grandes (si usas el ordenador básicamente para ver películas y poco más) no hará falta desfragmentarlo más de 1 ó 2 veces al año. Si usas el ordenador con muchos archivos pequeños y casi todos los días, una vez al mes o cada dos meses no te vendría nada mal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por otra parte, aunque Windows ya viene con un desfragmentador de disco este se queda corto comparado con otras soluciones que podemos conseguir incluso de forma gratuíta. Aquí os traigo 3 de esas herramientas. Os cuento un poco sus diferencias para que podáis elegir mejor y espero que os sean útiles.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.defraggler.com/"&gt;Defraggler&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SpviaKm73XI/AAAAAAAACG4/Ha8QfNv11Oo/s1600-h/Defraggler.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SpviaKm73XI/AAAAAAAACG4/Ha8QfNv11Oo/s320/Defraggler.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Este es el más sencillo de los tres. Esta creado por una empresa que también tiene otros dos estupendos programas en su cartera (&lt;a href="http://www.ccleaner.com/"&gt;CCleaner&lt;/a&gt;, para limpiar el disco duro de objetos que ya no se necesitan, y &lt;a href="http://www.recuva.com/"&gt;Recuva&lt;/a&gt;, que nos recupera archivos que hemos podido borrar por accidente). Podrás escanear varios discos, un disco individual, algunas carpetas o, incluso, algunos archivos sueltos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Al iniciar el programa te muestra una pantalla como la mostrada donde te indica la cantidad de archivos fragmentados en cada disco y te deja decidir si quieres desfragmentarlo o si quieres ponerlo en la cola de discos a procesar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.auslogics.com/disk-defrag"&gt;Auslogics Disk Defrag&lt;/a&gt;&lt;br /&gt;&lt;/h3&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SpviXWy9AXI/AAAAAAAACGw/fjHRVS8CtVQ/s1600-h/Auslogic.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SpviXWy9AXI/AAAAAAAACGw/fjHRVS8CtVQ/s320/Auslogic.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Con las características muy parecidas al anterior te permitirá también establecer la prioridad del programa (así podrás continuar trabajando casi sin enterarte mientras el hace su trabajo o, si sales a tomarte un café dejarle todo el control del equipo para que acabe antes). Y si te quieres ir a dormir no tienes por qué preocuparte. Le dices que cuando termine apague el equipo y te quedas tan ancho.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.mydefrag.com/"&gt;MyDefrag&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SpvicJg-gsI/AAAAAAAACHA/D5j79sFi6tk/s1600-h/MyDefrag.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SpvicJg-gsI/AAAAAAAACHA/D5j79sFi6tk/s320/MyDefrag.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Este es el más completo y el más complejo de los que os presento. Al instalarse creará un menú con unos enlaces como estos: "Analyze Only", "Defragment Only", "Fast Optimize", "Slow Optimize" o "Flash Memory Disks". Cada una de estas entradas (aunque estén en inglés el resto del programa está en castellano) esta vinculada a un guión (o script) específico. Dicho guión le dice al programa qué y cómo debe realizar la desfragmentación. Y es ahí donde reside la potencia del programa.&lt;br /&gt;&lt;br /&gt;Las optimizaciones de las que dispone le permite colocar los archivos más usados en la parte más rápida del disco. Además, controlando las relaciones de cada archivo con los demás intenta colocarlos lo más cerca posible uno de otro. De esta forma al arrancar una aplicación específica el disco tendrá que hacer menos movimientos. Con ello podremos aumentar la velocidad y la vida del mismo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7429033726938152495?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7429033726938152495/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/08/desfragmentadores.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7429033726938152495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7429033726938152495'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/08/desfragmentadores.html' title='Desfragmentadores'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FQRIY5VJ4bs/SpviaKm73XI/AAAAAAAACG4/Ha8QfNv11Oo/s72-c/Defraggler.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-4083491711005769141</id><published>2009-08-24T14:10:00.000+02:00</published><updated>2009-08-24T14:10:41.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Cita rápida: Cambiar el texto de una celda con jQuery</title><content type='html'>Para cambiar el texto de la celda de una tabla, suponiendo que sabemos el índice de la fila y la columna, con jQuery es así de fácil:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$($('#calendar').find('tbody &gt; tr')[índice de la fila]).children('td')[índice de la columna].innerHTML = texto a cambiar;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Con esto salvamos la existencia de una fila con la cabecera.&lt;br /&gt;&lt;br /&gt;Si también existe una columna que se usa como cabecera para identificar, por ejemplo, el índice, tan solo habrá que restar &lt;i&gt;1&lt;/i&gt; al &lt;i&gt;índice de la columna&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-4083491711005769141?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/4083491711005769141/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/08/cita-rapida-cambiar-el-texto-de-una.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4083491711005769141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4083491711005769141'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/08/cita-rapida-cambiar-el-texto-de-una.html' title='Cita rápida: Cambiar el texto de una celda con jQuery'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-552255235817162183</id><published>2009-08-19T09:45:00.001+02:00</published><updated>2009-08-19T10:33:17.080+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>Nueva PS3</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SouqDOlCAPI/AAAAAAAACDM/qNHwkahUenA/s1600-h/PS3Slim.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SouqDOlCAPI/AAAAAAAACDM/qNHwkahUenA/s320/PS3Slim.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;Este es el aspecto que tendrá el nuevo modelo de PS3 que Sony acaba de presentar en la feria Gamescom en Alemania. Baja el tamaño (un 32% más pequeña), el peso (un 36% más ligera), más eficiente (gasta un 33% de energía) y será menos ruidosa (de 55-58 decibelios pasa a 53-56).&lt;br /&gt;&lt;br /&gt;A mi me encantaría saber si la bajada de consumo energético disminuirá la sensación de tener un calefactor debajo del televisor pero, claro, teniendo ya la versión actual como que no se me pasa por la cabeza.&lt;br /&gt;&lt;br /&gt;Junto con la nueva carcasa vienen varias diferencias más. Los botones de encendido y extracción de disco pasarán a ser botones de verdad no como los insufibles del modelo actual. Otra opción añadida será que el disco duro podrá reemplazarse, presumiblemente de forma sencilla y rápida. También cambiará un pequeño detalle, este modelo no incluirá la posibilidad de usar un sistema operativo diferente al que trae por defecto la máquina. Para la gran mayoría de los que usen esta máquina no supondrá ningún cambio. Pero para otros cuantos igual les convendría comprar el modelo actual antes de que este se ponga a la venta (al menos en USA el 1 de septiembre, ya veremos aquí).&lt;br /&gt;&lt;br /&gt;Y el mejor cambio para todos: se rebaja el precio a 299 dólares. Traducido en Euros seguro que supone 299 €. Este precio parece que se establecerá al menos para los modelos con menos disco duro. Este pasará de 80 a 120 Gb. Parece ser que también saldrán modelos con 150 y 250 Gb.&lt;br /&gt;&lt;br /&gt;Por último dejo otra imagen donde se comparan los dos modelos para ver mejor la diferencia de tamaño:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/Soutd9KPBGI/AAAAAAAACDU/PbE9GXb5Nt8/s1600-h/PS3SlimSide.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/Soutd9KPBGI/AAAAAAAACDU/PbE9GXb5Nt8/s400/PS3SlimSide.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=";font-family:&amp;quot;;font-size:x-small;"  &gt;&lt;a href="http://www.osnews.com/story/22014/Sony_Reveals_PS3_Slim_Slashes_Price_Removes_Linux_Option"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-552255235817162183?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/552255235817162183/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/08/nueva-ps3.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/552255235817162183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/552255235817162183'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/08/nueva-ps3.html' title='Nueva PS3'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SouqDOlCAPI/AAAAAAAACDM/qNHwkahUenA/s72-c/PS3Slim.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-399016242681826802</id><published>2009-08-05T18:21:00.000+02:00</published><updated>2009-08-05T18:21:24.405+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Vaya con la tecnología</title><content type='html'>La gente de Sony no quiere quedarse muy lejos de los proyectos de inmersión que prepara la gente de Microsoft. Y en este vídeo muestran un ejemplo de lo que se podrá hacer dentro de poco con su consola.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4fQrBJuzhvI&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/4fQrBJuzhvI&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;¿ El que golpea primero golpea dos veces ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-399016242681826802?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/399016242681826802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/08/vaya-con-la-tecnologia.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/399016242681826802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/399016242681826802'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/08/vaya-con-la-tecnologia.html' title='Vaya con la tecnología'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8608503409847573501</id><published>2009-07-02T11:58:00.000+02:00</published><updated>2009-07-02T11:58:59.428+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>No pienso comprar el Starcraft II</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.gossipgamers.com/wp-content/uploads/2009/06/bnet.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="133" src="http://www.gossipgamers.com/wp-content/uploads/2009/06/bnet.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Cuando Blizzard anunció que estaba desarrollando una nueva versión de su clásico juego de estrategia se me hizo la boca agua. Cada nueva noticia referente a este juego hacía que tuviese aún más ganas de que anunciasen la fecha definitiva de salida. Apareció una noticia. Tres juegos en vez de uno. Pues nada, se compran los tres y arreglao, qué le vamos a hacer.&lt;br /&gt;&lt;br /&gt;Pero poco después Blizzard sacó una nota en la que decían que estaban estudiando la posibilidad de no incluir la posibilidad de jugar en red local. Que la única forma de jugar en red fuese a través de su plataforma Battle.Net. Eso me mosqueó más. Salió una petición a través de Internet para solicitar que incluyesen la posibilidad de jugar en entornos locales (por supuesto firme esa petición junto a más de 7000 personas). Ayer mismo Blizzard sacó una nota de prensa dando su opinión sobre el tema, con los siguientes puntos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;No habrá opción local, todo los juegos multijugador tendrán que pasar por Battle.Net.&lt;/li&gt;&lt;li&gt;Esa decisión está pensada para evitar la piratería y, al aumentar los usuarios de su plataforma, poder destinar más recursos a la optimización de Battle.Net.&lt;/li&gt;&lt;li&gt;Para contrarrestar a los que decían que si en una partida en una Party se cortaba el acceso a Internet han respondido: "¿ Y si hay un corte de luz ?&lt;/li&gt;&lt;li&gt;Para contrarrestar a los que decían que tendrían problemas con los retrasos de compartir una conexión a Internet responden: "Ya veremos ese problema cuando suceda".&lt;/li&gt;&lt;/ol&gt;En fin. Desde mi modesta opinión me parece que se les ha ido un poco la pelota. Se están enfrentando precisamente al segmento de jugadores que más les puede hacer ganar dinero.&lt;br /&gt;&lt;br /&gt;El hecho de que Blizzard anunciase hace tanto tiempo dos juegos que cubrían esas dos categorías parece que ha conseguido que ninguna otra compañía se atreva a gastar demasiado en presentar títulos alternativos. Quizás para no tener que combatir en el mercado. Quizás por falta de ideas. Quizás por la crisis económica. Quizás una mezcla de un poco de todo. &lt;br /&gt;&lt;br /&gt;Dentro de un par de fines de semana, por ejemplo, queremos organizar una pequeña quedada. El lugar está un poco alejado de todos sitios. En mitad del campo. Así no molestamos a nadie y podemos salir a distraer la vista (y a darnos un chapuzón, que se agradece). Estamos buscando juegos de estrategia (o de rol) más o menos nuevos que tengan un multijugador (y todo lo demás) más o menos decente y que sea medianamente moderno. Por ahora no hemos conseguido demasiado. El hecho es que si encontramos un juego decente tendremos que gastar la pasta en ocho licencias (como en otras ocasiones). Lo que también tengo claro es que para próximas ocasiones no nos gastaremos un solo euro en un juego que no podremos disfrutar todos juntos.&lt;br /&gt;&lt;br /&gt;Espero que alguna otra compañía sea lista y saque algo medianamente decente. Seguramente podrá sacar un buen pastel de las idioteces que hace Blizzard.&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;a href="http://www.gossipgamers.com/blizzards-response-to-no-lan-support-for-starcraft-2/"&gt;Noticia&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8608503409847573501?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8608503409847573501/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/07/no-pienso-comprar-el-starcraft-ii.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8608503409847573501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8608503409847573501'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/07/no-pienso-comprar-el-starcraft-ii.html' title='No pienso comprar el Starcraft II'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-4888336079676588851</id><published>2009-06-29T13:12:00.000+02:00</published><updated>2009-06-29T13:12:34.051+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Como montar y ver imágenes ISO en Linux (tanto como root como usuario normal)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.thegeekstuff.com/wp-content/uploads/2009/06/mount-view-iso-file-300x270.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="http://www.thegeekstuff.com/wp-content/uploads/2009/06/mount-view-iso-file-300x270.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Los archivos ISO son una forma estandarizada de almacenar un conjunto de archivos destinados a ser grabados en un CD o DVD. Es la forma más usada de distribuir, por ejemplo, los discos de instalación y arranque de la mayoría de los sistemas operativos. También existen herramientas de grabación o de creación de discos multimedia que usan este formato antes de grabar el soporte físico.&lt;br /&gt;&lt;br /&gt;Algunas veces puedes necesitar ver tan solo alguno de los archivos que se almacenan. Aquí presento algunas de las formas para hacer esta y otras operaciones en esos archivos.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Como montar un archivo ISO&lt;/b&gt;&lt;/div&gt;La forma más fácil para ver los archivos es montando el archivo como si ya hubiese sido escrito en el CD o el DVD. La estructura que tiene el archivo es exactamente la misma que tendría en ese caso por lo que el comando será el mismo que se usaría en ese caso con una pequeña salvedad. Habrá que usar un modificador que indicará que queremos usar un dispositivo &lt;i&gt;loop&lt;/i&gt;. Este tipo es una de las posibilidades que ofrece Linux para acceder a dispositivos virtuales. En este caso el archivo ISO tendría el mismo comportamiento que un lector físico de CD/DVD. Esta sería la sintaxis del comando.&lt;br /&gt;&lt;br /&gt;&lt;div class="codigo"&gt;mount ARCHIVO_ISO PUNTO_MONTAJE -o loop&lt;/div&gt;&lt;br /&gt;Para que este método funcione deberá ejecutarse con permisos de superusuario.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Como montar o ver un archivo ISO sin ser superusuario&lt;/div&gt;Esto es tan fácil como tener instalado el programa Midnight Commander (mc). Con este estupendo navegador de archivos tan solo te hará falta navegar hasta el archivo ISO, pulsar la tecla F3 (visualizar contenido) y podrás navegar por su contenido como por cualquier otra rama de carpetas.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Como actualizar el contenido de un archivo ISO&lt;/b&gt;&lt;/div&gt;Realmente un archivo ISO una vez creado no puede alterarse. La única posibilidad es copiar todo el contenido del disco a una carpeta, modificar allí los archivos necesarios y volver a crear el archivo ISO.&lt;br /&gt;&lt;br /&gt;Como en el caso anterior dependerá de si lo hacemos como superusuario o como usuario normal. En el primer caso una vez montado el archivo copiamos el contenido a una carpeta vacía y procedemos a realizar los cambios. Como usuario normal, volviendo a usar el Midnight Commander, copiamos igualmente los archivos a una carpeta vacía.&lt;br /&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;a href="http://www.thegeekstuff.com/2009/06/how-to-mount-view-iso-file-as-root-and-non-root-user-in-unix/"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-4888336079676588851?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/4888336079676588851/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/06/como-montar-y-ver-imagenes-iso-en-linux.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4888336079676588851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4888336079676588851'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/06/como-montar-y-ver-imagenes-iso-en-linux.html' title='Como montar y ver imágenes ISO en Linux (tanto como root como usuario normal)'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-955657450259682292</id><published>2009-06-16T10:32:00.001+02:00</published><updated>2009-06-16T10:34:25.552+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Dell, o de como convivir con el software libre</title><content type='html'>Hace un tiempo Dell proclamaba que eran unos fabricantes que se preocupaban por lo que sus usuarios necesitaban. Decían que ofrecerían aquello que le pidiesen sabiendo que existen gracias a esos usuarios que compran sus productos.&lt;br /&gt;&lt;br /&gt;Hoy precisamente estaba buscando precios de portátiles y me he dicho, ¿ por qué no darle la oportunidad ? Total, me voy a su página web, miro los modelos de la serie Mini10. Le doy a la opción que me filtre los equipos que usen un sistema operativo gratuíto. Me manda a una página donde pone una y otra vez que me fije bien en lo que estoy haciendo, no vaya a ser que luego me arrepienta. Bueno, me digo, así se ahorran problemas en las atenciones a los usuarios. Sigo buscando.&lt;br /&gt;&lt;br /&gt;En la lista de modelos de esa familia, empezando por la izquierda, un modelo con Ubuntu por 249€, a su derecha otro con Windows por 279€. 30 euros por la licencia. Ya les sale barata, sí señor. Me fijo en las características. El que trae Ubuntu con un disco duro de memoria sólida de 8Gb, el otro con un SATA de 160 Gb. Le doy también la oportunidad, los SSD son más caros que los SATA. Voy a ver si puedo modificar el equipo para ponerles el mismo disco duro. Y aquí está la comparación:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Versión con Windows XP&lt;/span&gt;&lt;/div&gt;Procesador Intel® Atom™ N270 (1,60 GHz, FSB a 533 MHz, caché de 512 KB)&lt;br /&gt;&lt;b&gt;Windows® XP Home Edition SP3 original - Español&lt;/b&gt;&lt;br /&gt;Tapa trasera en negro&lt;br /&gt;1 año de garantía limitada - Servicio de recogida y devolución&lt;br /&gt;Cámara de 1,3 MP integrada&lt;br /&gt;Pantalla de formato panorámico WSVGA de 10,1" (1.024x576)&lt;br /&gt;SDRAM DDR2 de 1.024 MB a 533 MHz de doble canal&lt;br /&gt;Disco duro SATA de 160 GB (5.400 rpm)&lt;br /&gt;Acelerador gráfico integrado Intel® 950&lt;br /&gt;Tarjeta mini inalámbrica Dell Wireless 1397 (802.11 b/g)&lt;br /&gt;Batería de iones de litio de 3 celdas (24 W/h)&lt;br /&gt;Accesorios&lt;br /&gt;Versión de 30 días de prueba de Norton™ Internet Security™ 2009&lt;br /&gt;Servicio y Software&lt;br /&gt;También incluye&lt;br /&gt;Base Mini 1011 con WLAN&lt;br /&gt;Teclado interno español (Qwerty)&lt;br /&gt;Spanish Documentation&lt;br /&gt;N06B1002&lt;br /&gt;1Yr Limited Warranty - Collect &amp;amp; Return&lt;br /&gt;Inspiron Mini 1011 Order - Spain&lt;br /&gt;&lt;b&gt;Inspiron Mini 1011 Diagnostics and Drivers&lt;br /&gt;Microsoft® Works 9.0 - Spanish&lt;/b&gt;&lt;br /&gt;Europeo - Adaptador de CA de 30 W&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Versión con Ubuntu&lt;/span&gt;&lt;/div&gt;Procesador serie N Intel® Atom™ N270 (1,60 GHz, FSB a 533 MHz, caché de 512 KB)&lt;br /&gt;&lt;b&gt;Ubuntu 8.04&lt;/b&gt;&lt;br /&gt;Tapa trasera en negro&lt;br /&gt;1 año de garantía limitada - Servicio de recogida y devolución&lt;br /&gt;Cámara de 1,3 MP integrada&lt;br /&gt;Pantalla de formato panorámico WSVGA de 10,1" (1.024x576)&lt;br /&gt;SDRAM DDR2 de 1.024 MB a 533 MHz de doble canal&lt;br /&gt;Disco duro SATA de 160 GB (5.400 rpm)&lt;br /&gt;Acelerador gráfico integrado Intel® 950&lt;br /&gt;Tarjeta mini inalámbrica Dell Wireless 1397 (802.11 b/g)&lt;br /&gt;Batería de iones de litio de 3 celdas (24 W/h)&lt;br /&gt;Accesorios&lt;br /&gt;N-Series Only - No AntiVirus Selected&lt;br /&gt;Servicio y Software&lt;br /&gt;También incluye&lt;br /&gt;Base Mini 1011 con WLAN&lt;br /&gt;Teclado interno español (Qwerty)&lt;br /&gt;Spanish Documentation&lt;br /&gt;N06B1001&lt;br /&gt;1Yr Limited Warranty - Collect &amp;amp; Return&lt;br /&gt;Inspiron Mini 1011 Order - Spain&lt;br /&gt;&lt;b&gt;No Resource CD&lt;br /&gt;No Software Application&lt;/b&gt;&lt;br /&gt;Europeo - Adaptador de CA de 30 W&lt;br /&gt;&lt;br /&gt;Las diferencias: la versión de Windows trae, a parte del sistema operativo no gratuíto una licencia y el cd de Works más drivers y demás tonterías propias del fabricante. La versión con Ubuntu no trae ni tan siquiera un CD con la ayuda.&lt;br /&gt;&lt;br /&gt;Precio del equipo con Windows: 279€&lt;br /&gt;Precio del equipo con Ubuntu: 289€&lt;br /&gt;&lt;br /&gt;Resultado: No pienso comprar un equipo Dell por nada del mundo. No pienso recomendar un equipo Dell a nadie. No pienso acceder a su página web no sea que ganen un céntimo con mis visitas.&lt;br /&gt;&lt;br /&gt;Buena política la de estas empresas. Para hacer esas jugarretas mejor que no vendan versiones con Linux, quedarían mejor parados.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-955657450259682292?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/955657450259682292/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/06/dell-o-de-como-convivir-con-el-software.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/955657450259682292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/955657450259682292'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/06/dell-o-de-como-convivir-con-el-software.html' title='Dell, o de como convivir con el software libre'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7037625069433640769</id><published>2009-05-27T11:48:00.000+02:00</published><updated>2009-05-27T11:48:08.899+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Nuevos materiales para nuevos dispositivos</title><content type='html'>De los 160 Kb de capacidad que en los años 70 tenían las primeras unidades de disquete a los miles de millones que podemos encontrar en las últimas unidades de disco duro han habido muchos pasos incrementando la capacidad de espacio a nuestra disposición. Y nuevos desarrollos prometen ir mucho más allá, más espacio, más velocidad, más, más...&lt;br /&gt;&lt;br /&gt;Todos estos avances en poco más de 30 años. Tan diferentes entre si. Sin embargo todos comparten algo en común. Cualquier grabación en cualquiera de estos medios posiblemente no dure más de 20 ó 30 años (en los mejores casos). Pasado ese tiempo será prácticamente imposible leer lo que se escribió en ellos. Si aún conservamos escritos en papiro de hace milenios ¿ como con la tecnología que existe actualmente podemos permitir que toda la inmensa biblioteca que crea cada día nuestra actual civilización esté condenada a desaparecer en tan poco tiempo ?&lt;br /&gt;&lt;br /&gt;Algunos grupos de investigación llevan tiempo preguntándose lo mismo. Por eso empezaron a buscar soluciones al problema. Formas de guardar gran cantidad de información de forma duradera. Y parece que por fin lo han conseguido.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/Sh0MS1Xbg2I/AAAAAAAAB80/dPnc8JwOk48/s1600-h/090525105418.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/Sh0MS1Xbg2I/AAAAAAAAB80/dPnc8JwOk48/s320/090525105418.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Usando un nanotubo de carbono (estos parece que sirven para todo) con una nanopartícula de hierro en su interior (de unas 50.000 veces el ancho de un pelo humano). Cuando se le somete a una corriente eléctrica la nanopartícula se acerca o se aleja con mucha precisión. Propio para crear un sistema donde almacenar unos y ceros. Según las pruebas y los estudios teóricos que llevan entre manos un dispositivo que usase esto podría almacenar capacidades del orden de terabytes en tan solo 2 centímetros y medio cuadrados. Y, aún mejor, la información allí guardada podría permanecer allí a temperatura ambiente más de mil millones de años. ¿ Suficiente tiempo ?&lt;br /&gt;&lt;a href="http://www.sciencedaily.com/releases/2009/05/090525105418.htm"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7037625069433640769?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7037625069433640769/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/05/nuevos-materiales-para-nuevos.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7037625069433640769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7037625069433640769'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/05/nuevos-materiales-para-nuevos.html' title='Nuevos materiales para nuevos dispositivos'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FQRIY5VJ4bs/Sh0MS1Xbg2I/AAAAAAAAB80/dPnc8JwOk48/s72-c/090525105418.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-9218169109653709034</id><published>2009-05-21T14:15:00.001+02:00</published><updated>2009-05-22T10:14:46.128+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Edición de vídeo gratuita</title><content type='html'>La edición de vídeo, como otras muchas actividades que se pueden hacer con un PC, dispone de buenas herramientas gratuitas con las que poder hacer nuestros primeros pinitos como directores.&lt;br /&gt;&lt;br /&gt;Estas herramientas gratuitas no incluyen todas las herramientas y posibilidades que sus hermanos de pago. Pero que levante la mano quien ha pagado y ha utilizado todas las posibilidades de los caros programas de edición de vídeo profesional. Si nos centramos en comparar estos con algunas soluciones de bajo coste creo que es más cuestión de gusto y de habituarse a la interfaz más que de las posibilidades.&lt;br /&gt;&lt;br /&gt;Y sin enrrollarme más os dejo unos cuantos programas para ver si os animáis a probar alguno y, por supuesto, que os sean útiles.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;a href="http://avidemux.org/"&gt;Avidemux&lt;/a&gt; &lt;/b&gt;  &lt;img src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShUz6buu4HI/AAAAAAAAB6k/oQHmAlAfWs0/s320/logo-windows.png" border="0" /&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz5bkL_kI/AAAAAAAAB6U/C0C8WJPjzdw/s320/logo-mac.png" border="0" /&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;/div&gt;Este programa es un editor de vídeo muy sencillo. Con el puedes hacer las operaciones de cortar y pegar trozos de vídeo, aplicarle filtros a escenas y guardarlo en multitud de formatos.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShU0uhouiUI/AAAAAAAAB6s/FJjzKhHUdcw/s1600-h/3_avidemux001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShU0uhouiUI/AAAAAAAAB6s/FJjzKhHUdcw/s320/3_avidemux001.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://cinelerra.org/"&gt;&lt;b style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Cinelerra&lt;/b&gt;&lt;/a&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;br /&gt;El aspecto de este programa puede parecer un tanto intimidatorio. Pero en lo que hace es uno de los mejores que os podéis encontrar. Básicamente captura, compone y edita vídeo y audio. No está pensado para uso doméstico sino para pequeños estudios o aficionados a la edición de vídeo semi/profesional.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.heroinewarrior.com/chromakeys.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://www.heroinewarrior.com/chromakeys.jpg" border="0" width="420" height="279" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://www.kinodv.org/"&gt;&lt;b&gt;Kino&lt;/b&gt;&lt;/a&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;/div&gt;Otro editor de vídeo no lineal. Esta vez especializado en el trabajo con cámaras que usen el puerto FireWire. Podría colocarse a mitad de camino entre los dos anteriores. Tiene varios tipos de transiciones, filtros y efectos.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://kino.sourceforge.net/kino_fx-0.8.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShU3a1swvsI/AAAAAAAAB60/oYa_GhGN98o/s400/kino.png" border="0" width="400" height="357" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://lives.sourceforge.net/"&gt;&lt;b&gt;Lives&lt;/b&gt;&lt;/a&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;/div&gt;Este editor es uno de los pocos que pueden trabajar a la vez con vídeo en tiempo real y vídeo no lineal. Tiene cosas curiosas, como permitir multipistas, y muy útiles, como poder recuperarse de un fallo del programa o del equipo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lives.sourceforge.net/images/livesmt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://lives.sourceforge.net/images/livesmt2.png" border="0" width="420" height="306" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://www.kdenlive.org/"&gt;&lt;b&gt;KDenlive&lt;/b&gt;&lt;/a&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz5bkL_kI/AAAAAAAAB6U/C0C8WJPjzdw/s320/logo-mac.png" border="0" /&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;/div&gt;Este es uno de los mejores editores de vídeo y audio de esta categoría. No porque haga cosas que los demás no pueden hacer (que también) sino porque intentan hacerlo de forma que sea fácil de usar por cualquier tipo de usuario. Permite multipistas, múltiplas capas de vídeo y puede tanto leer como escribir en formatos tanto de baja como de alta calidad.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShVCrh-yFGI/AAAAAAAAB68/wzRV-7OzXIY/s1600-h/kdenlive-main-window.preview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShVCrh-yFGI/AAAAAAAAB68/wzRV-7OzXIY/s400/kdenlive-main-window.preview.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://vivia-video.org/"&gt;&lt;b&gt;Vivia&lt;/b&gt;&lt;/a&gt;  &lt;img src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShUz6buu4HI/AAAAAAAAB6k/oQHmAlAfWs0/s320/logo-windows.png" border="0" /&gt;   &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;/div&gt;Este tiene una cosa muy curiosa. Además de intentar tener un uso sencillo permite montar escenas con vídeos captados de varias cámaras. Algo así como lo que aparece cuando se hace una entrevista.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShVEGN4zaOI/AAAAAAAAB7E/NngFjOB35C4/s1600-h/multicam-output.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShVEGN4zaOI/AAAAAAAAB7E/NngFjOB35C4/s320/multicam-output.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.cinepaint.org/"&gt;&lt;b style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;CinePaint&lt;/b&gt;&lt;/a&gt;   &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz5bkL_kI/AAAAAAAAB6U/C0C8WJPjzdw/s320/logo-mac.png" border="0" /&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;br /&gt;En otra categoría podemos encontrar este útil programa. Imagina que usas la potencia de un programa como Photoshop pero aplicado a algunas escenas de una película. Pues eso y mucho más es CinePaint.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.cinepaint.org/pix/mac/2002.12.19-macfilmgimp.refuel.1440x900.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShVEzciHT2I/AAAAAAAAB7M/pIOOIdG1UqQ/s320/macfilmgimp.refuel.1440x900.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://programmer-art.org/projects/arista-transcoder"&gt;&lt;b&gt;Arista Transcoder&lt;/b&gt;&lt;/a&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;/div&gt;Y no podía faltar algún gran conversor de vídeos. Con este sencillo programa podremos convertir prácticamente cualquier formato que se nos ocurra. Además tiene opciones preconfiguradas para exportar a DVD, iPod, PSP, PS3, ...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://programmer-art.org/media/screenshots/arista-transcoder/arista-clearlooks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://programmer-art.org/media/screenshots/arista-transcoder/arista-clearlooks.png" border="0" width="420" height="232" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;a href="http://www.pitivi.org/wiki/Main_Page"&gt;Pitivi&lt;/a&gt;&lt;/b&gt;  &lt;img src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/ShUz449h7MI/AAAAAAAAB6M/hDv_kWwhK_k/s320/logo-linux.png" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;Con este curioso nombre podréis encontrar un programa de edición de vídeo que últimamente está recibiendo mucha atención y que se merece una buena oportunidad (se supone que la semana próxima aparecerá una nueva versión).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lunduke.com/wp-content/uploads/2009/05/400px-capture-pitivi_v01301.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 294px;" src="http://lunduke.com/wp-content/uploads/2009/05/400px-capture-pitivi_v01301.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-9218169109653709034?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/9218169109653709034/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/05/edicion-de-video-gratuita.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/9218169109653709034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/9218169109653709034'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/05/edicion-de-video-gratuita.html' title='Edición de vídeo gratuita'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShUz6buu4HI/AAAAAAAAB6k/oQHmAlAfWs0/s72-c/logo-windows.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-70999397341062337</id><published>2009-05-18T12:41:00.000+02:00</published><updated>2009-05-18T12:41:36.501+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Xerox quiere lanzar impresoras con cartuchos de tinta sólida</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShE1ht5hCaI/AAAAAAAAB6E/cilG7AhYeS4/s1600-h/xerox-1.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/_FQRIY5VJ4bs/ShE1ht5hCaI/AAAAAAAAB6E/cilG7AhYeS4/s320/xerox-1.jpg" /&gt;&lt;/a&gt;Cartuchos como los que se pueden apreciar en la fotografía. Sin necesidad de costosos envases que después necesitan ser almacenados, recuperados y reciclados. Tan solo un bloque de tinta.&lt;br /&gt;&lt;br /&gt;La tecnología no es nueva. Fue desarrollada en 1991 y, desde entonces, algunos modelos poco afortunados la han usado. Sin embargo Xerox ha buscado un nuevo camino para ella y así intentar competir en un segmento de mercado dominado por Canon y, sobretodo, por el gigante HP.&lt;br /&gt;&lt;br /&gt;Más que la tecnología pueden buscar el hecho de dar a entender que aún tienen la fuerza de antaño para desarrollar nuevas tecnologías. A ellos debemos las impresoras láser, el protocolo Ethernet, el ratón, el láser o las interfaces de usuario gráficas (no, no fueron un invento de Microsoft, ya existían varias &lt;a href="http://es.wikipedia.org/wiki/IGU"&gt;GUI&lt;/a&gt;s antes que Windows).&lt;br /&gt;&lt;br /&gt;Esta tecnología permitiría tener unos dispositivos donde cabrían varios de estos cartuchos. Cuando se necesitase un color 900 inyectores por cada uno de los 4 colores permitirían llevar la tinta derretida previamente a algunas de las 3000 cabezas de que consta. Estas pasarían la tinta a un tambor que, finalmente, la pondría sobre el papel. El estilo es muy parecido que el usado por las impresoras offset usadas para crear los periódicos y las revistas. Este sistema no usaría ningún tipo de disolvente lo que la haría más sencilla de mantener y sería mucho menos contaminante y segura.&lt;br /&gt;&lt;br /&gt;Hablando de contaminación. Se se compara con otras impresoras de la misma categoría se supone que generaría mucho menos residuos durante su vida útil. Frente a otros competidores que llegarían a generar más de 350 kilos esta no llegaría a los 40.&lt;br /&gt;&lt;br /&gt;Por otra parte el modelo que usaría Xerox para su distribución es el de alquiler de la maquina y el pago por copias. Esto es de entender si se piensa que el precio inicial del aparato sería de unos 23.500 dólares. Lo bueno es que tendría un precio diferente si fuesen copias que usasen gran cantidad de color (unos 8 centavos por página) a aquellas que usasen poco (alrededor de un centavo) que serían los usos comunes para añadir, por ejemplo, el logotivo de la empresa, y que dejaría estas impresiones a un precio equivalente al que otras empresas ponen las copias en blanco y negro.&lt;br /&gt;&lt;br /&gt;Ahora solo hace falta que tenga el suficiente éxito como para que aparezcan modelos enfocados al mercado doméstico y así poder deshacernos de los cartuchos. Aunque claro, de esta forma igual los fabricantes de tinta tendrían menos margen para engañar a los usuarios.&lt;br /&gt;&lt;a href="http://venturebeat.com/2009/05/06/xerox-launches-solid-ink-printing-in-bid-to-shake-up-inkjet-market/"&gt;Página original &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-70999397341062337?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/70999397341062337/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/05/xerox-quiere-lanzar-impresoras-con.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/70999397341062337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/70999397341062337'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/05/xerox-quiere-lanzar-impresoras-con.html' title='Xerox quiere lanzar impresoras con cartuchos de tinta sólida'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/ShE1ht5hCaI/AAAAAAAAB6E/cilG7AhYeS4/s72-c/xerox-1.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7690009008650780165</id><published>2009-05-15T10:46:00.002+02:00</published><updated>2009-05-15T10:46:54.863+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tontería'/><title type='text'>Para mi pared</title><content type='html'>Estaba buscando ideas frescas para la pared del salón. Que mejor que algo así:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/Sg0ryYiSpPI/AAAAAAAAB58/Tg6Q6Je4cNo/s1600-h/1239882686_dos_3fs.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/Sg0ryYiSpPI/AAAAAAAAB58/Tg6Q6Je4cNo/s400/1239882686_dos_3fs.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Hasta me pegaría y todo XD&lt;br /&gt;&lt;a href="http://www.zek.si/fresh/dos-recogniton/"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7690009008650780165?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7690009008650780165/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/05/para-mi-pared.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7690009008650780165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7690009008650780165'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/05/para-mi-pared.html' title='Para mi pared'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/Sg0ryYiSpPI/AAAAAAAAB58/Tg6Q6Je4cNo/s72-c/1239882686_dos_3fs.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8322236176560863691</id><published>2009-05-05T11:00:00.000+02:00</published><updated>2009-05-05T11:00:43.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Blogger en draft y las imágenes</title><content type='html'>Esta entrada está dedicada a Mary del blog &lt;a href="http://sirvemeunvermut.blogspot.com/"&gt;Sírveme un vermut&lt;/a&gt;. Al parecer sus intentos por usar la versión de prueba de Blogger no ha terminado de ser el éxito que ella esperaba. Los abundantes cambios que se pueden encontrar en esta versión siempre en desarrollo de blogger la han llevado hasta casi la locura. Así que, ¿ qué mejor que echarle una mano ?&lt;br /&gt;&lt;br /&gt;Voy a centrar la explicación en el uso de imágenes. Algo que, desde mi punto de vista, mejora mucho en esta versión pero que centra uno de los principales quebraderos de cabeza de nuestra amiga.&lt;br /&gt;&lt;br /&gt;Para acceder al cuadro de imágenes habrá que buscar el mismo botón que en la versión anterior. Pero donde antes se veía una ventana como esta:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/Sf_1EffxWvI/AAAAAAAAB38/P5QHtNqWvdI/s1600-h/draft0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/Sf_1EffxWvI/AAAAAAAAB38/P5QHtNqWvdI/s400/draft0.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ahora aparecerá otra ventana así:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/Sf_ofXrU1gI/AAAAAAAAB3s/JgDp2PnN1ok/s1600-h/draft1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/Sf_ofXrU1gI/AAAAAAAAB3s/JgDp2PnN1ok/s400/draft1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Habrá que tener en cuenta que esta ventana estará integrada dentro de la propia ventana de blogger. Esto quiere decir que si tenemos varios blogs abiertos e intentamos añadir una imagen en cada uno de ellos cada uno de los blogs tendrá una ventanita como esta y no tendremos problemas por confundirnos entre una y otra.&lt;br /&gt;&lt;br /&gt;Pero este es solo el primer cambio. Desde esa ventana podemos, bien subir una imagen desde nuestro equipo (desde la sección que se muestra en la imagen anterior) o bien elegir una imagen desde otra página web:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/Sf_93_l5f6I/AAAAAAAAB4M/ApyL_IHOO9E/s1600-h/draft2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/Sf_93_l5f6I/AAAAAAAAB4M/ApyL_IHOO9E/s400/draft2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;en este caso donde pone "http://" ponemos la dirección de la imagen. Acto seguido intentará cargar la imagen para que podamos tener la certeza de que es esa la que queremos insertar. Si es correcto le damos a añadir imagen y la colocará donde teníamos el cursor y centrada.&lt;br /&gt;&lt;br /&gt;Ahora me centraré en subir imágenes. Si le damos al botón de examinar o, simplemente, pulsamos una vez sobre el cuadro a su izquierda nos aparecerá el diálogo para buscar la imagen en nuestro equipo. Una vez elegida empezará a subirla. Mientras lo hace podemos elegir más y dejarlas en cola. Cuando termine con una automáticamente empezará con la siguiente. Cuando subamos varias tendremos una ventana parecida a esta:&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/_FQRIY5VJ4bs/Sf_95Q16GsI/AAAAAAAAB4U/FMUY8Kx_8VI/s1600-h/draft3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/Sf_95Q16GsI/AAAAAAAAB4U/FMUY8Kx_8VI/s400/draft3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se pueden ver unas miniaturas de las imágenes subidas. Elegimos la imagen a insertar y, como en el caso comentado antes, la pondrá donde teníamos el cursor y centrada. Al pulsar sobre la imagen podremos ver como en la parte inferior nos aparece un cuadro como este:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/Sf__tz-dJlI/AAAAAAAAB4c/C_iXiNi3X2A/s1600-h/draft4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/Sf__tz-dJlI/AAAAAAAAB4c/C_iXiNi3X2A/s320/draft4.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Con el podremos modificar el tamaño que se muestra de la imagen o bien eliminarla.&lt;br /&gt;&lt;br /&gt;Lo último es la diferencia a la hora de establecer la posición de la imagen en la página. Si pulsamos una imagen y la arrastramos a un borde intentará colocarla correctamente en el lugar adecuado. Así de fácil.&lt;br /&gt;&lt;br /&gt;Espero que con esta corta (aunque espero que instructiva) miniguía sea suficiente. Ante cualquier otra duda, tan solo hace falta preguntar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8322236176560863691?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8322236176560863691/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/05/blogger-en-draft-y-las-imagenes.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8322236176560863691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8322236176560863691'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/05/blogger-en-draft-y-las-imagenes.html' title='Blogger en draft y las imágenes'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FQRIY5VJ4bs/Sf_1EffxWvI/AAAAAAAAB38/P5QHtNqWvdI/s72-c/draft0.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8147570475961503341</id><published>2009-04-15T13:48:00.000+02:00</published><updated>2009-04-15T13:48:37.638+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Hasta el infinito y más allá</title><content type='html'>IEEE802.3 es el nombre del estándar que bajo el nombre de Ethernet lleva más de 35 años uniendo dispositivos electrónicos. Parece que el diseño inicial que se hizo en los laboratorios Xerox tiene aún muchos terrenos que conquistar y parece que no existe ningún competidor que pueda enfrentarsele. Parece que la idea original de hacerlo lo más flexible posible ha sido lo que ha logrado que perdure todos estos años.&lt;br /&gt;&lt;br /&gt;El próximo paso vendrá de la mano de dos entidades: la NASA, por una parte, y la empresa alemana &lt;a href="http://www.tttech.com/"&gt;TTTech&lt;/a&gt; por la otra. Esta empresa creó una red llamada TTEthernet basada en el estándar pero orientado a redes que deben permitir múltiples fallos y con un nivel de integración muy alto. Esta diseñado para operar en la frecuencia de velocidades entre 100 Mb/seg y 1 Gb/seg.&lt;br /&gt;&lt;br /&gt;Es fácil de imaginar qué puede querer la NASA de un sistema así. Parece que lo próximo será crear un sistema de red con algunos enlaces repartidos por la superficie de la Tierra, otros en satétiles geoestacionarios, otros en órbita alrededor de la Luna y alguno más en la superficie de nuestro satélite. Será un primer paso absolútamente necesario si queremos llegar a tener bases semiestables allí.&lt;br /&gt;&lt;br /&gt;Supongo que un futuro no demasiado lejano también se extendería a satélites orbitando Marte y más allá. Es curioso ver como algo que tenemos todos en nuestras casas va a ser algo fundamental a la hora de salir al espacio.&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/node/40899"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8147570475961503341?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8147570475961503341/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/04/hasta-el-infinito-y-mas-alla.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8147570475961503341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8147570475961503341'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/04/hasta-el-infinito-y-mas-alla.html' title='Hasta el infinito y más allá'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7769963440505959775</id><published>2009-04-07T11:08:00.000+02:00</published><updated>2009-04-07T11:08:43.628+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>El facebook de Bill Gates</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.pcworld.com/zoom?id=162166&amp;amp;page=1&amp;amp;zoomIdx=2" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SdsW_lTLx-I/AAAAAAAAB1Y/nnOYldgacQY/s400/bill.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;La revista PCWorld en su versión digital (e inglesa) ha creado una curiosa imagen donde en tono humorístico muestran una posible página de Facebook del ex-presidente de Microsoft.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Un irónico abrazo a sus sistemas operativos de parte de Steve Jobs, un agradecimiento de Warren Buffet para curar sus problemas de espalda durmiendo sobre montones de dinero o referencias a su fundación forman parte de este curioso ingenio.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Para ver la imagen completa pinchad en la que aparece arriba.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7769963440505959775?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7769963440505959775/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/04/el-facebook-de-bill-gates.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7769963440505959775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7769963440505959775'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/04/el-facebook-de-bill-gates.html' title='El facebook de Bill Gates'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/SdsW_lTLx-I/AAAAAAAAB1Y/nnOYldgacQY/s72-c/bill.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-6186275896668315671</id><published>2009-04-04T10:36:00.000+02:00</published><updated>2009-04-04T10:36:35.950+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='bases de datos'/><category scheme='http://www.blogger.com/atom/ns#' term='propios'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>SQL 2</title><content type='html'>&lt;h2&gt;3. JOINS&lt;/h2&gt;JOIN es el nombre genérico de una serie de clausulas muy importantes de SQL. Su importancia viene íntimamente ligada con la dificultad, en general, para aprender correctamente su uso. La función de esta serie de clausulas es la de unir dos conjuntos de datos por campos comunes. En otras palabras, la sentencia que escribimos en el capítulo anterior:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM referencias, lineas WHERE lineas.&lt;/span&gt;REFID &lt;span style="font-family: Courier New;"&gt;= referencias.&lt;/span&gt;REFID&lt;/div&gt;&lt;br /&gt;sería un ejemplo de JOIN implícito. El equivalente usando la clausula JOIN sería así:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas INNER JOIN referencias ON lineas.&lt;/span&gt;REFID &lt;span style="font-family: Courier New;"&gt;= referencias.&lt;/span&gt;REFID&lt;/div&gt;&lt;br /&gt;Como se puede ver las clausulas JOIN aparecen dentro de la estructura del FROM. Esto es así porque su misión es dar a entender las relaciones de las tablas mientras que la clausula WHERE pretende limitar los registros con algún tipo de filtro. Parece una diferencia muy tonta (es más en las bases de datos que no soportan alguna variedad de JOIN normalmente se puede suplir usando filtros en el WHERE) pero es una diferencia.&lt;br /&gt;&lt;br /&gt;La más sencilla de todas ellas es esta INNER JOIN. Mostrará los registros que se encuentren relacionados en ambas tablas. Por lo tanto &lt;u&gt;solo&lt;/u&gt; mostrará las líneas cuyo referencia exista en la tabla &lt;i&gt;referencias&lt;/i&gt; y las referencias que tengan alguna línea en la tabla &lt;i&gt;lineas&lt;/i&gt;. La estructura es así de sencilla:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo&lt;br /&gt;&lt;/div&gt;Este tipo de sentencias también se denominan Equi-JOIN; por el hecho de que se comprueba la igualdad de los campos de dos tablas. Y aquí es donde se podrá aprovechar el cambio de nombre que hicimos en los nombres de las tablas. SQL nos ofrece dos formas de simplificar este tipo de consultas (en algunos sistemas de bases de datos tan solo dispondremos del primero de ellos). Tan solo voy a mostrar como quedaría la consulta con las dos simplificaciones puesto que no creo que haga falta mucha explicación.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas INNER JOIN referencias USING(REFID)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas NATURAL JOIN referencias&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;En una sentencia tan sencilla no es una ventaja mayor que la de ahorrarse unos cuantos caracteres, pero cuando se crean consultas con muchas referencias y muchas tablas siempre viene bien un poco de ayuda para hacer más fácil la lectura.&lt;span style="font-family: Courier New;"&gt;&lt;br /&gt;&lt;br style="font-family: Verdana;" /&gt;&lt;span style="font-family: Verdana;"&gt;El hecho de que exista un INNER JOIN implica que tiene que existir al menos otro tipo de sentencias JOIN sin el apelativo INNER, de lo contrario habría sido más fácil denominarla únicamente JOIN. Y, ciertamente, existen otros 3 tipos. El primero también se ha visto antes de forma indirecta. Cuando se escribe una sentencia como esta:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM referencias, lineas&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Courier New;"&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;realmente se está haciendo un JOIN (como hemos visto antes este tipo de sentencia simplemente une tablas). En este caso se le denomina &lt;/span&gt;&lt;b style="font-family: Verdana;"&gt;CROSS JOIN&lt;/b&gt;&lt;span style="font-family: Verdana;"&gt; (esta sentencia podrás encontrarla como un tipo separado o como una variedad de la INNER JOIN). Como la sentencia anterior muestra todas las filas de una tabla relaciona con todas las filas de la otra tabla (lo que en matemáticas se llama un producto cartesiano) y se escribiría así:&lt;/span&gt;&lt;br style="font-family: Verdana;" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM referencias CROSS JOIN &lt;/span&gt;lineas&lt;/div&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;Al igual que en el ejemplo anterior, y desde mi punto de vista, es recomendable escribirlo así para cuando hagamos sentencias mucho más complejas.&lt;br /&gt;&lt;br /&gt;El siguiente tipo de JOIN es el &lt;b&gt;OUTER JOIN&lt;/b&gt; he incluye tres tipos: &lt;b&gt;LEFT OUTER JOIN&lt;/b&gt;, &lt;b&gt;RIGHT OUTER JOIN&lt;/b&gt; y &lt;b&gt;FULL OUTER JOIN&lt;/b&gt;. A diferencia de los INNER JOIN estas clausulas están diseñadas para mostrar tanto las filas que coincidan como las no coincidentes. Sin embargo cada una está diseñada para un propósito específico.&lt;br /&gt;&lt;br /&gt;LEFT OUTER JOIN (escrita normalmente LEFT JOIN) mostrará todas las filas de la tabla de la izquierda y las relacionadas de la tabla de la derecha. Cuando no exista ningún registro en la tabla de la derecha relacionado con la de la izquierda pondrá todos sus valores en NULL.&lt;br /&gt;&lt;br /&gt;RIGHT OUTER JOIN (en este caso se puede escribir RIGHT JOIN) es igual al anterior pero cambiando la posición de las tablas.&lt;br /&gt;&lt;br /&gt;La forma de escribir ambos es como sigue:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas LEFT JOIN referencias ON lineas.REFID = referencias.REFID&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Como en el caso de los INNER JOINS también se podría acortar de esta forma:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas LEFT JOIN referencias USING (REFID)&lt;br /&gt;SELECT * FROM lineas NATURAL LEFT JOIN referencias&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="font-family: Verdana;"&gt;Como se vió antes cada vez es más lógico pensar bien la estructura de las tablas y los nombres de los campos para ahorrarnos después mucho tiempo a la hora de escribir.&lt;br /&gt;&lt;br /&gt;FULL OUTER JOIN, por su parte, es una mezcla de los dos anteriores. Muestra las filas de ambas tablas que están relacionadas (como el INNER JOIN) pero también mostrará las que no están relacionadas dejando como NULL las de la otra tabla&lt;b&gt;*&lt;/b&gt;. Y se escribiría tal que así:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas FULL OUTER JOIN referencias USING (REFID)&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;br /&gt;El último tipo es el &lt;b&gt;UNION JOIN&lt;/b&gt; (este tipo es difícil de encontrar en los sistemas de bases de datos)&lt;span style="font-size: xx-small;"&gt;&lt;b&gt;*2&lt;/b&gt;&lt;/span&gt;. Esta clausula mostraría tan solo aquellos registros que no tienen correspondencia en la tabla contraria. Aunque pueda parecer una consulta un poco suplerfua es muy útil para detectar inconsistencias en aquellas tablas en que no se deje esa labor&amp;nbsp; al propio sistema.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="font-family: Verdana;"&gt;&lt;i style="font-family: Verdana,sans-serif;"&gt;Próximo capítulo: MANTENIMIENTO DE TABLAS&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Aunque este tipo de consulta es muy útil en algunos sistemas de bases de datos no está incluido o su sintaxis es muy diferente del estándar. Una posible forma de saltarse esta limitación es recurriendo a un ejemplo más complejo, usando una estructura que se llama &lt;b&gt;UNION SELECT&lt;/b&gt;. Esta clausula es muy sencilla. Se coloca entre dos sentencias SELECT. Se ejecuta una, se ejecuta la otra y se muestran ambas. Ni más, ni menos. Usando esto la emulación de un FULL OUTER JOIN sería tal que así:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas NATURAL LEFT JOIN referencias&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-left: 40px;"&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;UNION&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM lineas NATURAL RIGHT JOIN referencias&lt;br /&gt;WHERE lineas.REFID = NULL&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;*2&lt;/b&gt; El emular un UNION JOIN tampoco es algo demasiado complicado pero también incluye algo que aún no se ha explicado, las subconsultas. Sin embargo, y si por si a alguien le interesa, decir que se haría con una consulta como esta:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; margin-left: 40px;"&gt;SELECT * FROM lineas li WHERE NOT EXISTS&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(SELECT * FROM referencias rf&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WHERE li.REFID = rf.REFID)&lt;/div&gt;&lt;br /&gt;En esta instrucción, por cierto, no sería válido (al menos en los sistemas de bases de datos donde lo he probado) cambiar el WHERE de la consulta interior por un JOIN.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-6186275896668315671?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/6186275896668315671/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/04/sql-2.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6186275896668315671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6186275896668315671'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/04/sql-2.html' title='SQL 2'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-1131996900282060999</id><published>2009-03-31T11:08:00.000+02:00</published><updated>2009-03-31T11:08:36.873+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='bases de datos'/><category scheme='http://www.blogger.com/atom/ns#' term='propios'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>SQL</title><content type='html'>&lt;h2&gt;1. Introducción&lt;/h2&gt;SQL es un lenguaje usado por la gran mayoría de los sistemas de bases de datos para realizar todas las funciones precisas para el manejo de los datos. Con el se pueden crear tablas, eliminar tablas, modificar tablas, insertar datos, eliminar datos, actualizar datos y, la más usada de las funciones, consultar datos.&lt;br /&gt;&lt;br /&gt;SQL tiene fama de ser difícil. Y en muchas casos esa fama no está infundada. Sin embargo, mucha de esa dificultad, como la de muchos otros lenguajes viene dado por el desconocimiento y el mal uso de algunas de sus posibilidades. Sin embargo para operaciones sencillas es quizás más fácil que algunas de sus alternativas. Las funciones básicas de SQL pueden llegar a ser casi intuitivas una vez que se conocen. Otras, sin embargo, necesitarán mucha práctica para dominarlas.&lt;br /&gt;&lt;br /&gt;SQL también tiene algunos puntos débiles. El mayor deriva de su éxito. El hecho de que muchos sistemas lo usen ha logrado que cada sistema se diferencia en menor o mayor medida del estándar. Pero hasta la más pequeña de las diferencias hace que muchas construcciones no sean transportables de un sistema a otro. Aquí mostraré las instrucciones más básicas y, donde sea posible, me ceñiré al estándar. En los lugares donde no sea posible lo indicaré previamente.&lt;br /&gt;&lt;br /&gt;Las instrucciones SQL se denominan consultas. Y las consultas están formadas por una o varias palabras claves, denominadas clausulas en SQL, junto con nombres de campos, de tablas, de bases de datos o valores numéricos. Las consultas se pueden diferenciar en varios tipos: consultas de selección, de gestión de tablas (creación, modificación y eliminación) y gestión de datos (inserción, actualización y eliminación).&lt;br /&gt;&lt;br /&gt;Para seguir este tutorial partiremos de una base de datos con dos tablas (referencias y lineas) que tendrán estos campos:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;referencias&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;table border="0" bordercolor="#000000" cellpadding="3" cellspacing="0" class="zeroBorder" height="63" id="lcfl" style="width: 360px;"&gt;&lt;tbody&gt;&lt;tr style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(195, 195, 195) none repeat scroll 0% 0%;"&gt;&lt;td width="33%"&gt;id&lt;/td&gt;&lt;td width="33%"&gt;autonumérico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="33%"&gt;nombre&lt;/td&gt;&lt;td width="33%"&gt;cadena de caracteres&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="33%"&gt;precio&lt;/td&gt;&lt;td width="33%"&gt;numérico&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;lineas&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;table border="0" bordercolor="#000000" cellpadding="3" cellspacing="0" class="zeroBorder" height="47" id="x_qz" style="width: 501px;"&gt;&lt;tbody&gt;&lt;tr style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(195, 195, 195) none repeat scroll 0% 0%;"&gt;&lt;td width="50%"&gt;id&lt;/td&gt;&lt;td width="50%"&gt;autonumérico&lt;/td&gt;&lt;td valign="top"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;referencia&lt;/td&gt;&lt;td width="50%"&gt;numérico&lt;/td&gt;&lt;td valign="top"&gt;-&amp;gt;referencias.id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;cantidad&lt;/td&gt;&lt;td width="50%"&gt;numérico&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;h2&gt;2. Consultas de selección&lt;/h2&gt;Estas son las más básicas, más usadas y más complejas de las instrucciones del SQL. El uso normal de esta instrucción devolverá una lista de columnas (llamadas tuplas) dependiendo de los datos presentes en las tablas indicadas y de las opciones que se pidan. La estructura de una consulta de este tipo puede ser el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT columnas FROM tablas WHERE condiciones GROUP BY grupos HAVING condiciones agregadas ORDER BY orden&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Sin embargo se podría realizar una instrucción tan simple que ni tan siquiera tuviese que consultar una tabla. Las columnas pueden referirse a valores calculados. Por ejemplo, la siguiente consulta:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT 2 * 2&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;devolverá como resultado el valor matemático de esa expresión.&lt;br /&gt;&lt;br /&gt;La clausula SELECT, como se puede ver, es la clausula básica para seleccionar (de ahí el nombre) los datos que buscamos. Aunque la instrucción anterior es perfectamente válida no tiene ninguna utilidad práctica. Por eso debe acompañarse de otras que le confieran la utilidad buscada. La más básica de las clausulas que acompañan a SELECT es la clausula FROM. Con ella indicaremos las tablas de las que han de obtenerse los datos. Para ello también tendremos que indicar las columnas que queramos ver. La forma más sencilla es usando el carácter &lt;b&gt;*&lt;/b&gt;. Con el indicaremos que queremos ver todas las columnas. Con esta instrucción:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT nombre FROM referencias&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;podremos ver todos los valores de la columna &lt;i&gt;nombre &lt;/i&gt;en la tabla &lt;i&gt;referencias&lt;/i&gt;. Podemos indicar más de una tabla en la clausula FROM separando sus nombres con coma. Como en este ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM referencias, lineas&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Esto nos devolverá cada una lineas para cada una de las referencias. Así, si tenemos 5 líneas y 5 referencias nos mostrará 25 filas. Como no será este comportamiento el que querremos, tendremos que usar la siguiente clausula, WHERE. Con ella podremos especificar las relaciones de los datos así como indicar las comparaciones que restringirán las filas a mostrar. El ejemplo anterior corregido se escribiría así:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM referencias, lineas WHERE lineas.referencia = referencias.id&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Esto nos mostrará las referencias y las líneas que corresponden a dichas referencias. El sistema buscará cada linea y cada referencia en los que los campos indicados sean iguales. En esta clausula también podremos realizar otro tipo de comparaciones. Podríamos escribir, por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT * FROM referencias WHERE precio &amp;lt; 15&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Esto nos devolverá todas las referencias cuyo precio sea inferior a la cantidad solicitada.&lt;br /&gt;&lt;br /&gt;Antes de continuar vamos a cambiar el nombre de los campos de las tablas. Más tarde explicaré más a fondo el porque del cambio. Sin embargo por ahora podemos quedarnos con que será más sencillo identificar las relaciones entre las tablas más tarde tan solo echándole un vistazo a la estructura de las tablas. De esta forma los campos de las tablas pasarán a denominarse de esta forma:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;table border="0" bordercolor="#000000" cellpadding="3" cellspacing="0" class="zeroBorder" id="p5wj"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="33%"&gt;&lt;u&gt;lineas&lt;/u&gt;&lt;/td&gt;&lt;td width="33%"&gt;&lt;/td&gt;&lt;td width="33%"&gt;&lt;u&gt;referencias&lt;/u&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="33%"&gt;LINEAID&lt;/td&gt;&lt;td width="33%"&gt;&lt;/td&gt;&lt;td width="33%"&gt;REFID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="33%"&gt;REFID&lt;/td&gt;&lt;td width="33%"&gt;&lt;/td&gt;&lt;td width="33%"&gt;REFNOMBRE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="33%"&gt;LINEACANT&lt;/td&gt;&lt;td width="33%"&gt;&lt;/td&gt;&lt;td width="33%"&gt;REFPRECIO&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Ahora pondré una sentencia con la que pasaré a explicar otra clausula y algunas otras opciones de la selección de campos:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT referencias.REFNOMBRE, AVG(LINEACANT) AS "Media ventas" FROM referencias, lineas WHERE lineas.REFID = referencias.REFID GROUP BY lineas.REFID&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;La palabra &lt;b&gt;AVG&lt;/b&gt; forma parte de un grupo denominado &lt;i&gt;funciones de agregación&lt;/i&gt;. Estas proveen métodos estadísticos sencillos sobre una columna. El grupo está formado por estas funciones:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;AVG → media aritmética&lt;br /&gt;MIN → valor mínimo&lt;br /&gt;MAX → valor máximo&lt;br /&gt;COUNT → cantidad de elementos&lt;br /&gt;SUM → suma de elementos&lt;/div&gt;&lt;br /&gt;Por otra parte la palabra &lt;b&gt;AS&lt;/b&gt; sirve para indicar un &lt;i&gt;alias&lt;/i&gt; a la columna que la precede. En este caso, por ejemplo, la columna referida a la media de la columna LINEACANT se denominará &lt;span style="font-family: Courier New;"&gt;"Media ventas"&lt;/span&gt;. Además de ser útil para dar un sentido a los campos calculados viene muy bien para dar mejor visibilidad a los, muchas veces, crípticos nombres de campos.&lt;br /&gt;&lt;br /&gt;Por último nos encontramos con la cláusula &lt;b&gt;GROUP BY&lt;/b&gt;. Esta se usa para indicar que queremos agrupar los datos por una o varias columnas. Su uso se liga frecuentemente a los campos calculados o cuando queremos evitar campos duplicados. Ya veremos más de esto más adelante.&lt;br /&gt;&lt;br /&gt;Vista la sentencia anterior, si se quisiese filtrar el resultado devuelto para que, por ejemplo, solo nos mostrase aquellos cuya media superase 5 ¿ qué escribirías ? Con lo visto hasta ahora una respuesta lógica sería algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;SELECT &lt;span style="font-family: Courier New;"&gt;referencias.REFNOMBRE, AVG(LINEACANT) AS "Media ventas" FROM referencias, lineas WHERE lineas.REFID = referencias.REFID GROUP BY lineas.REFID WHERE AVG(LINEACANT) &amp;gt; 5.0&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Sin embargo esta sentencia es incorrecta. La clausula WHERE en esa sentencia sería incorrecta. Para estos casos, en los que se quiere filtrar un campo calculado habrá que echar mano de una nueva cláusula denominada &lt;b&gt;HAVING&lt;/b&gt;. Esta cumple la misma función que &lt;b&gt;WHERE&lt;/b&gt; excepto que se usa con los campos calculados. El porque de esa aparente duplicidad viene de la forma en que se ejecutan una a una las clausulas. WHERE se utiliza en una fase y sobre unos resultados y HAVING se usa en otros. De todas formas ese es un tema que se escapa de este minitutorial.&lt;br /&gt;&lt;br /&gt;La última de las clausulas de este capítulo será &lt;b&gt;ORDER BY&lt;/b&gt;. Esta sencilla clausula establece la columna por la que queremos que se ordenen los datos antes de presentarlos. Ni más ni menos.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;i style="font-family: Verdana,sans-serif;"&gt;Próximo capítulo: JOINS&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-1131996900282060999?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/1131996900282060999/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/03/sql.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1131996900282060999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1131996900282060999'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/03/sql.html' title='SQL'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-350945118375130498</id><published>2009-03-20T11:07:00.001+01:00</published><updated>2009-03-26T10:49:52.073+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='rumor'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>Operación a la vista</title><content type='html'>Parece que dos grandes empresas han entrado en conversaciones para una gran compra. IBM podría soltar 6.500 millones de dólares para comprar Sun.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.beans-around-the-world.com/photos/sun1.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="118" src="http://www.beans-around-the-world.com/photos/sun1.jpg" style="cursor: move;" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Sun lleva ya un tiempo acercándose peligrosamente a la bancarrota. Incluso le pidió, casi por favor, a HP que la comprase. Opción que declinaron muy cortesmente. Sin embargo parece que IBM ve a Sun como una buena cartera de clientes que sumar a la suya.&lt;br /&gt;&lt;br /&gt;IBM es ahora mismo el lider en clientes empresariales. Domina con el 31,4 por cierto de clientes. Sun hasta ahora está en la cuarta posición con el 10,6%. La suma acercaría de nuevo a IBM a una privilegiada posición.&lt;br /&gt;&lt;br /&gt;Esta unión también podría ayudar a IBM a deshacerse de costosos desarrollos. Hay que tener en cuenta que tiene un equipo desarrollando una plataforma basada en OpenOffice (&lt;a href="http://symphony.lotus.com/"&gt;Symphony&lt;/a&gt;), una plataforma Java alternativa (que en algunos escenarios supera en rendimiento a la de Sun), un SO Unix ya casi en fase de coma (AIX), sistemas de archivos de alto rendimiento y un más que seguro largo etcétera que podría beneficiarse de tal unión.&lt;br /&gt;&lt;br /&gt;Y, además, Sun podría proporcionarle a IBM la ayuda que necesita para suplir la cartera de servidores que HP le está arañando poco a poco. Y es que cada vez menos empresas quieren, necesitan y están dispuestas a pagar los diseños específicos del Gigante Azul disponiendo de las soluciones estándares que ofrecen los de HP.&lt;br /&gt;&lt;br /&gt;En definitiva, una serie de ventajas que podría hacer que, la ahora barata Sun, sea todo un bombón.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Actualización (&lt;a href="http://news.cnet.com/8301-1001_3-10204524-92.html"&gt;26/03&lt;/a&gt;):&lt;/b&gt; Paul Otellini, CEO de Intel, ha confirmado que desde hace varios meses Sun estaba intentando vender parte o la totalidad de su cartera. Y sabe que IBM está en conversaciones muy serias para comprar la totalidad. Cree que a parte de consolidarse aún más con el uso de Java podría intentar mover a los clientes de Solaris y SPARC a su plataforma Power.&lt;br /&gt;&lt;br /&gt;Además, desde el anuncio de venta las acciones de Sun parece que están bajando de forma dramática. &lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://osnews.com/story/21154/WSJ_IBM_in_Talks_to_Buy_Sun_Microsystems"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-350945118375130498?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/350945118375130498/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/03/operacion-la-vista.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/350945118375130498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/350945118375130498'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/03/operacion-la-vista.html' title='Operación a la vista'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8616541816574945645</id><published>2009-03-13T16:11:00.003+01:00</published><updated>2009-03-13T16:11:00.974+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumor'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Vaya pepino !</title><content type='html'>&lt;a href="http://blogs.edmunds.com/straightline/Citroen-C-Crosser-Exclusive-PSP-1.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://blogs.edmunds.com/straightline/Citroen-C-Crosser-Exclusive-PSP-1.jpg" style="cursor: move;" width="200" /&gt;&lt;/a&gt;Os voy a presentar un ejemplo de como la crisis no ha conseguido que algunos entren en razón a la hora de proponer cosas.&lt;br /&gt;&lt;br /&gt;Siguiendo con los rumores resulta que Citroën parece que quiere sacar un nuevo coche aliandose con Sony. Con lo que, lógicamente, traerá de serie una PSP. Una edición exclusiva y especial que costará entre 28 y 33 mil euros.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.zercustoms.com/news/images/Citroen/Citroen-C-Crosser-Exclusive-PSP-4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://www.zercustoms.com/news/images/Citroen/Citroen-C-Crosser-Exclusive-PSP-4.jpg" width="420" /&gt;&lt;/a&gt;&lt;/div&gt;Vale que trae otros "detalles" adicionales: un servidor interno de música donde almacenar hasta 2.500 canciones, dos juegos, una tarjeta de 2 Gb y la posibilidad de ver las películas en formato UML (el formato aceptado por la consola, claro) en la parte trasera del coche.&lt;br /&gt;&lt;br /&gt;Pero en una época como esta ¿ merece la pena invertir en el desarrollo, la fabricación y la promoción de un producto así ?&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://blogs.edmunds.com/straightline/2009/03/citroen-partners-with-sony-for-exclusive-psp-prepped-c-crosser.html"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8616541816574945645?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8616541816574945645/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/03/vaya-pepino.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8616541816574945645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8616541816574945645'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/03/vaya-pepino.html' title='Vaya pepino !'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7362898637243477621</id><published>2009-03-12T10:38:00.000+01:00</published><updated>2009-03-12T10:38:19.414+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='novedades'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Adios con el alma adios</title><content type='html'>No, no soy yo el que me voy (aunque a veces pienso que debería).&lt;br /&gt;&lt;br /&gt;El que parece que quiere decir adios es nuestro querido (jeje) Internet Explorer. Hay rumores que apuntan a que Microsoft quiere acabar con su navegador con su próxima versión (la 8). A partir de ese momento sustituirá las siglas IE, que están intimamente relacionadas en muchas mentes con inseguridad, por otras aún por decidir.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jcxp.net/images/iegazelle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="92" src="http://www.jcxp.net/images/iegazelle.png" style="cursor: move;" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Eso sí, si algo parece realidad es que ese nuevo navegador estará relacionado con un desarrollo de los laboratorios de Microsoft. Con nombre en clave Gazelle, el proyecto muestra un navegador compuesto de un pequeño núcleo (tan solo 5 mil líneas de código C#) sobre las que correrán el resto de componentes (interprete de Javascript, motor de renderizado, plugins ...).&lt;br /&gt;&lt;br /&gt;Con el quieren llevar un paso más allá el diseño empezado por Google con su navegador Chrome. Si en este cada pestaña es un proceso separado con lo que, en principio, provoca que un fallo en una pestaña no fastidie al resto; en Gazelle cada pestaña, cada iframe que apunte a otro dominio, cada plugin o ActiveX tendrá su propio proceso. De esta forma esperan que si una determinada parte de una página falla tan solo dejemos de ver esa parte de la página pudiendo acceder al resto.&lt;br /&gt;&lt;br /&gt;Este trabajo aún no ha pasado de ser un desarrollo interno. Pero ya consigue mostrar la mayoría de las páginas webs. Eso sí, con este navegador se acabaría con la retrocompatibilidad. Quieren dedicar más recursos a la seguridad que a lograr que todas las páginas creadas para el IE 6 funcionen como sus diseñadores esperarían que funcionasen.&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://osnews.com/story/21120/Microsoft_s_Next_Browser_To_Be_Based_on_Gazelle_"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7362898637243477621?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7362898637243477621/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/03/adios-con-el-alma-adios.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7362898637243477621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7362898637243477621'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/03/adios-con-el-alma-adios.html' title='Adios con el alma adios'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2234840909226243037</id><published>2009-02-09T11:55:00.024+01:00</published><updated>2009-02-09T12:25:05.213+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>MACs caseros</title><content type='html'>Una empresa alemana ha copiado la idea de la america &lt;a href="http://www.psystar.com/"&gt;PsyStar&lt;/a&gt; pero, claro está, para el mercado europeo. Para quien no lo sepa PsyStar es una empresa norteamericana que está litigando con Apple por el derecho a vender equipos con hardware compatible con los Macs incluyéndoles el último sistema operativo de estos preinstalado.&lt;br /&gt;&lt;br /&gt;Frente a los 1200 dólares que cuesta el más básico de los equipos de Apple los de PsyStar ofertan uno por tan solo 555. Claro está que este último no dispone de monitor y, mucho menos, de la integración que se disfruta al comprar los equipos de Apple. Pero casi 700 dólares justifican ese sacrificio.&lt;br /&gt;&lt;br /&gt;Con &lt;a href="https://www.pearc.de/images/logo.jpg"&gt;PearC&lt;/a&gt; (la empresa alemana de la que he empezado a hablar) pasa tres cuartos de lo mismo. De los 1000 € que cuesta un iMac a los 500 que cuesta el más básico de los ofrecidos por los teutones. Y con unas prestaciones que nada tiene que envidiar a la empresa americana.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://www.pearc.de/images/logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="75" src="https://www.pearc.de/images/logo.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ahora falta saber si los de Apple van a permitir que los oferten durante mucho tiempo o van a emprender acciones legales. Estaría bien saber cómo de legal sería hacer algo así aquí en España.&lt;br /&gt;&lt;br /&gt;Si alguien se anima a ser el primero en comprárselo que avise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2234840909226243037?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2234840909226243037/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/02/macs-caseros.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2234840909226243037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2234840909226243037'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/02/macs-caseros.html' title='MACs caseros'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-4179840415219999851</id><published>2009-01-16T10:43:00.000+01:00</published><updated>2009-01-16T10:58:28.833+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Un ordenador para dominar una galaxia</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.freshpilot.com/wp-content/images2/emperor_workstation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://www.freshpilot.com/wp-content/images2/emperor_workstation.jpg" width="420" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Esta maquinica se llama Estación Emperador y lo vende la empresa &lt;a href="http://www.novelquest.com/"&gt;NovelQuest&lt;/a&gt; a un precio muy asumible, 39.950 dólares americanos.&lt;br /&gt;&lt;br /&gt;Con el tendrás esos tres monitores que pueden verse, los tres táctiles, por cierto. Sonido envolvente THX 5.1. Filtro de aire y hasta terapia a base de luz, ya sabes eso de ponerte colorines dependiendo de tu estado de ánimo y tal. Por supuesto puedes rotarlo, inclinarlo, voltearlo casi de cualquier forma que desees.&lt;br /&gt;&lt;br /&gt;Pero mi duda viene ... ¿ en qué habitación podría meter yo un bicho así y que mi mujer no nos tirase a los dos por la ventana más cercana ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-4179840415219999851?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/4179840415219999851/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/01/un-ordenador-para-dominar-una-galaxia.html#comment-form' title='13 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4179840415219999851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/4179840415219999851'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/01/un-ordenador-para-dominar-una-galaxia.html' title='Un ordenador para dominar una galaxia'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-105576840671587419</id><published>2009-01-15T09:40:00.001+01:00</published><updated>2009-01-15T09:50:58.567+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>La belleza de las matemáticas</title><content type='html'>Si algún campo de las matemáticas se pueden "tachar" como bonito, más allá del hecho de que te gusten o las odies, ese es el campo de los fractales. Un ejemplo muy sencillo de fractal es un copo de nieve. Un objeto que, básicamente, repite la misma estructura simple una y otra vez hasta formar un objeto con una estructura muy compleja.&lt;br /&gt;&lt;br /&gt;Este rollo viene al caso de unas imágenes que he visto. Están diseñadas con dos programas gratuítos (&lt;a href="http://sourceforge.net/projects/apophysis/"&gt;Apophysis&lt;/a&gt; y &lt;a href="http://www.ultrafractal.com/"&gt;Ultrafractal&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;La verdad es que yo no he conseguido hacer nada, ni de lejos, comparable a las imágenes que os dejo a continuación. Pero seguro que más de uno haría cosas sorprendentes con un poco de tiempo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn.cloudfiles.mosso.com/c10671/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="420" src="http://cdn.cloudfiles.mosso.com/c10671/1.jpg" width="413" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn.cloudfiles.mosso.com/c10671/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://cdn.cloudfiles.mosso.com/c10671/3.jpg" width="420" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn.cloudfiles.mosso.com/c10671/10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="325" src="http://cdn.cloudfiles.mosso.com/c10671/10.jpg" width="420" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn.cloudfiles.mosso.com/c10671/17.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="336" src="http://cdn.cloudfiles.mosso.com/c10671/17.jpg" width="420" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn.cloudfiles.mosso.com/c10671/28.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="420" src="http://cdn.cloudfiles.mosso.com/c10671/28.jpg" width="420" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En esta &lt;a href="http://www.webdesignerdepot.com/2009/01/40-amazing-3d-fractals-using-apophysis/"&gt;web&lt;/a&gt; podéis ver otras 35 imágenes iguales o mejores que estas. También podéis visitar &lt;a href="http://browse.deviantart.com/digitalart/fractals/"&gt;esta galería &lt;/a&gt;en DevianArt de fondos de pantalla creados usando esta técnica. Espero que os gusten. Y, ya que estáis, que os bajéis alguno de esos programas, los probéis y me enviéis vuestros logros.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-105576840671587419?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/105576840671587419/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/01/la-belleza-de-las-matemticas.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/105576840671587419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/105576840671587419'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/01/la-belleza-de-las-matemticas.html' title='La belleza de las matemáticas'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-1355986003493067988</id><published>2009-01-09T18:35:00.001+01:00</published><updated>2009-01-09T18:50:52.701+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Eee PC D200</title><content type='html'>&lt;div style="text-align: justify;"&gt;Los de Asus parece que no tienen ganas de parar. Presentación tras presentación están empezando a disponer de alternativas para casi cualquier posibilidad (informáticamente hablando, claro) posible.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SWeLowDhpWI/AAAAAAAABsQ/wh9y0pxg3pg/s1600-h/eee-pc-d200.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SWeLowDhpWI/AAAAAAAABsQ/wh9y0pxg3pg/s200/eee-pc-d200.jpg" /&gt;&lt;/a&gt;El último en abandonar los laboratorios del fabricante taiwanes ha sido esta preciosidad, servidor de red, NAS y router todo en uno. Con la posibilidad también de servir como servidor de streaming para la red de casa.&lt;br /&gt;&lt;br /&gt;Basado en un Intel Atom N270 y con 2 Gb de memoria parece ser más que suficiente para el uso al que está destinado. Y para suplir las necesidades de espacio dispone de dos bahías con las que llegar hasta 4 Teras de almacenamiento (aunque el modelo de prueba solo traía dos discos de 500 Gb). Además incluye un grabador de DVD de ranura.&lt;br /&gt;&lt;br /&gt;La pantallita que se le ve es táctil. Por lo que no será necesario añadirle teclado ni pantalla (aunque es más que posible hacerlo). Desde esa pantalla podremos, sin necesidad de conectarnos a través de la red, realizar operaciones sobre los archivos (copiarlos/moverlos, cambiarles los permisos o grabarlos en un DVD), gestionar las descargas del cliente Torrent o configurar las opciones de la red.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SWeNoivm-xI/AAAAAAAABsY/pi1IdaJv9TY/s1600-h/asus-d200-2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SWeNoivm-xI/AAAAAAAABsY/pi1IdaJv9TY/s200/asus-d200-2.jpg" /&gt;&lt;/a&gt;Como se pueden ver en las conexiones traseras dispone de una salida de vídeo DVI y salida de audio de 5 canales. Y ahí es donde le encuentro el único fallo al aparato.&lt;br /&gt;&lt;br /&gt;Si tuviese una salida HDMI y una salida de audio digital (este último me importa un poco menos) sería sencillamente genial. Si va destinado a convertirse en, pongamos, centro multimedia del salón ¿ no debería incluir al menos este conector ?&lt;br /&gt;&lt;br /&gt;Y por lo que se dice en el CES parece que estará disponible (seguro que no en nuestro país) durante el primer cuarto de este año a un precio de unos 440 €. Estos de Asus están haciendo un trabajo estupendo.&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.einfach-eee.de/eee-pc-d200/eee-pc-d200-multifunktions-nettop-mit-touchscreen/"&gt;Página original (en alemán)&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-1355986003493067988?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/1355986003493067988/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/01/eee-pc-d200.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1355986003493067988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1355986003493067988'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/01/eee-pc-d200.html' title='Eee PC D200'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FQRIY5VJ4bs/SWeLowDhpWI/AAAAAAAABsQ/wh9y0pxg3pg/s72-c/eee-pc-d200.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-5885012357527567172</id><published>2009-01-02T09:59:00.005+01:00</published><updated>2009-01-02T10:27:28.146+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Poco a poco 2</title><content type='html'>Si el mes pasado &lt;a href="http://geekbinario.blogspot.com/2008/12/poco-poco.html"&gt;hablaba&lt;/a&gt; del descenso experimentado por el Sistema Operativo Microsoft Windows a la hora de acceder a Internet, las cifras preliminares de este mes muestran un acusado descenso de su navegador, Internet Explorer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SV3Y_qO_6OI/AAAAAAAABpw/DS1MjStZWwc/s1600-h/navegadores.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 583px; height: 159px;" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SV3Y_qO_6OI/AAAAAAAABpw/DS1MjStZWwc/s320/navegadores.png" alt="" id="BLOGGER_PHOTO_ID_5286620125783386338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Casi rozando el 68% del mercado (uniendo el uso de las versiones 6, 7 y la beta del 8), Internet Explorer ve como la afianzada subida de Firefox y el sorprendente 1% del reciente Chrome están logrando que algunas empresas, como &lt;a href="http://www.avature.net/"&gt;Avature&lt;/a&gt; con su software Recruiting CRM, se decidan a reescribir sus aplicaciones para aprovechar las posibilidades que los nuevos motores Javascript dan a las aplicaciones Web.&lt;br /&gt;&lt;br /&gt;Y por si quedase alguna duda. El decremento de usuarios de la versión 6 de Explorer no ha significado un aumento de la versión 7. Si en Noviembre el uso de ambas versiones estaba en el 47,39% para la 7 y del 21.53% para la 6 este mes han bajado ambos al 46,77% y el 20,46% respectivamente.&lt;br /&gt;&lt;br /&gt;Y para colmo de males de Microsoft, Google ha incluido un mensajito al acceder a su plataforma de correo con Internet Explorer 6 para intentar que abandonen su uso y se pasen a Chrome o Firefox. Con la mayor velocidad por bandera intentan que el uso (mayoritario en pequeños y medianos negocios) de este navegador sea marginal lo antes posible. Si has desarrollado páginas webs sabrás el porqué de esa necesidad.&lt;br /&gt;&lt;br /&gt;Pero eso no es todo. Volviendo a los Sistemas Operativos los datos vuelven a confirmar que cada vez más se afianza la tendencia de personas que abandonan la plataforma de Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SV3ajMZ_b6I/AAAAAAAABp4/LRlcrouv8fU/s1600-h/os.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 571px; height: 156px;" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SV3ajMZ_b6I/AAAAAAAABp4/LRlcrouv8fU/s320/os.png" alt="" id="BLOGGER_PHOTO_ID_5286621835763347362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Un 1% menos para Microsoft Windows que se reparte entre Mac, Linux y el iPhone. En este caso el cambio generacional si empieza a notarse. Aunque XP aún supone el 65,22% de los accesos frente al 21,12% de Vista los número de noviembre (66,31% y 20,45%) demuestran que, poco a poco, Vista está ganando aceptación. Aunque, por supuesto, mucha menos que la que Microsoft querría.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-5885012357527567172?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/5885012357527567172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2009/01/poco-poco-2.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5885012357527567172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5885012357527567172'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2009/01/poco-poco-2.html' title='Poco a poco 2'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FQRIY5VJ4bs/SV3Y_qO_6OI/AAAAAAAABpw/DS1MjStZWwc/s72-c/navegadores.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-5115436291928476973</id><published>2008-12-30T12:36:00.002+01:00</published><updated>2008-12-30T12:52:32.297+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Ideas made in Microsoft</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cache.gawker.com/assets/images/gizmodo/2008/12/mspaygo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 393px; height: 345px;" src="http://cache.gawker.com/assets/images/gizmodo/2008/12/mspaygo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Esta imagen representa una patente presentada por Microsoft. Representa una posible forma de obtener dinero. A base, por supuesto, de sangrarnos un poco más.&lt;br /&gt;&lt;br /&gt;Cuando parecía que los posibles modelos de negocio estaban llegando a un punto algo estancado llegan estos y proponen un sistema en que te cobran por los servicios que uses. Hasta aquí parece el mismo modelo usado por otras tantas empresas.&lt;br /&gt;&lt;br /&gt;Sin embargo el modelo no se queda ahí. Lo sorprendente de la petición es que parece que tendrás que pagar dependiendo no tan solo del servicio (aplicación) que quieras usar. También tendrás que pagar por determinadas opciones del servicio. Por ejemplo, si no tienes que hacer enlaces bibliográficos en un sucesor del Word ¿ por qué pagar por disponer de esa opción ?&lt;br /&gt;&lt;br /&gt;Pero lo más sorprendente aún es que tendrás que pagar también por el uso que los programas hacen de tu equipo. Para entendernos. Imagínate que te gastas 600 € en una tarjeta gráfica de última generación. Vas a la tienda de juegos. Te compras el último juego que salió esta misma mañana (70 eurazos del ala). Llegas a tu casa dejando el rastro de babas. Te instalas el juego. Y justo cuando creías que tu inversión podría darte largas horas de entretenimiento te aparece un cartelito que te dice que para disfrutar de todas las posibilidades del juego necesitas pagar un extra. De otra forma te limitará la potencia usada del micro, la cantidad de RAM o las texturas que mandará a la gráfica. ¿ No te entrarían ganas de darle con el monitor a Steve Ballmer ?&lt;br /&gt;&lt;br /&gt;¿ Cuánto estará la gente dispuesta a concederle a empresas como esta que se cree con todos los derechos ? Supongo que mientras nos metan productos por los ojos y nosotros los compremos como ilusos pensando que cambiarán nuestras vidas ...&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://gizmodo.com/5120457/microsoft-proposes-obnoxiously-restrictive-pay+as+you+go-computing-system"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-5115436291928476973?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/5115436291928476973/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/ideas-made-in-microsoft.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5115436291928476973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5115436291928476973'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/ideas-made-in-microsoft.html' title='Ideas made in Microsoft'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-6949815220032957765</id><published>2008-12-15T18:26:00.000+01:00</published><updated>2008-12-15T18:41:40.796+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Linux y el USB 3</title><content type='html'>Cuando a los primeros dispositivos que soporten el nuevo estándar del USB aún le faltan algunos meses para llegar al público, en Linux ya se ha empezado su soporte.&lt;br /&gt;&lt;br /&gt;De manos de la desarrolladora Sarah Sharp llegan las primeras pruebas de desempeño y uso. Ha incluido las modificaciones necesarias en el núcleo para que funcione el USB 3 y ha creado un driver para el controlador del host xHCI (Interfaz de Controlador de Anfitrión extendido, o la especificación de cómo debe comunicarse el software con el hardware). La primera parte ya ha sido liberada. Mientras que la segunda precisa que Intel libere completamente las especificaciones del estandar. Pues por ahora hace falta firmar una cláusula de confidencialidad para acceder a esos detalles.&lt;br /&gt;&lt;br /&gt;Sin embargo el hecho de saber que en el momento en que podamos comprar un disco duro (o cualquier otra cosa) que haga uso de esta interfaz podremos acceder a el desde Linux sin ningún tipo de dificultad es algo de agradecer, y mucho. Para otros SO la cosa está un poco más difícil. Apple no dice ni palabra. Y Microsoft dice que Windows 7 traerá soporte (aunque aún no se sabe si en la versión inicial o en un SP posterior). Windows Vista compartirá la suerte del 7 y XP ... bueno, cualquiera sabe.&lt;br /&gt;&lt;br /&gt;Y en la cuestión de rendimiento, con el prototipo de la empresa Fresco Logic ha conseguido velocidades 3,5 veces superiores al USB 2. Aunque su meta es llegar al factor de 10 cuando se use el hardware real.&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://osnews.com/story/20647/First_Steps_Towards_USB_3_0_on_Linux"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-6949815220032957765?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/6949815220032957765/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/linux-y-el-usb-3.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6949815220032957765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6949815220032957765'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/linux-y-el-usb-3.html' title='Linux y el USB 3'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2075920965298604855</id><published>2008-12-12T11:43:00.000+01:00</published><updated>2008-12-12T12:13:07.794+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amenazas'/><title type='text'>El virus del Facebook</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://static.ak.fbcdn.net/images/welcome/welcome_page_map.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="72" src="http://static.ak.fbcdn.net/images/welcome/welcome_page_map.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Si hay algún fenómeno que ha subido como la espuma estos últimos tiempos en Internet han sido los sitios que ofrecían redes sociales. Y entre ellas una de las más destacadas está Facebook.&lt;br /&gt;&lt;br /&gt;Los &lt;strike&gt;aquí tu descalificativo preferido&lt;/strike&gt; creadores de virus han visto un nuevo e interesante medio donde poder lanzar sus nuevos inventos. El gusano llamado Koobface, más conocido simplemente como el virus de Facebook. Aunque este sobrenombre se está quedando corto. Ahora ya ha aprendido a replicarse por otras redes como Bebo, MySpace, Friendster, MyYearbook y Blackplanet.&lt;br /&gt;&lt;br /&gt;La forma de propagación es muy simple. Te puede llegar un mensaje de uno de tus amigos en el que te dicen (en inglés, algo que a los que no tienen contactos en esa lengua les puede venir muy bien) que te han catalogado en un vídeo. Si entras a verlo te aparecerá algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm4.static.flickr.com/3013/3099659773_3bd2aa1433_o.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="420" src="http://farm4.static.flickr.com/3013/3099659773_3bd2aa1433_o.gif" width="264" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Solicitándote la instalación de un nueva actualización de Flash para poder verlo. Si picas, ya está dentro. A partir de entonces te mandará a otras webs que también estén corrompidas e intentará mandar mensajes a tus otros amigos de cualquiera de esas redes.&lt;br /&gt;&lt;br /&gt;Por ahora lo único que se puede hacer para evitar la infección y la propagación de este gusano es lo mismo que con casi todos los de su especie: un poco de sentido común. Ya sabes, ante algo raro, mejor decir que no. Lo peor del caso es que este solo es el primero.&lt;br /&gt;&lt;br /&gt;Con el tiempo supongo que serán bastantes más los que usen estas plataformas para distribuirse e inundarte&amp;nbsp; las pantallas, en el mejor de los casos, de spam. Espero que los desarrolladores de estas webs tomen nota rápido y busquen soluciones antes de que el problema sea peor y sus usuarios busquen otros lugares menos transitados.&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;a href="http://www.readwriteweb.com/archives/the_facebook_virus_spreads_no_social_network_is_safe.php"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2075920965298604855?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2075920965298604855/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/el-virus-del-facebook.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2075920965298604855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2075920965298604855'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/el-virus-del-facebook.html' title='El virus del Facebook'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2658544925863839373</id><published>2008-12-10T11:33:00.001+01:00</published><updated>2008-12-10T12:00:47.296+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>El Phenom II antes de tiempo</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://hothardware.com/newsimages/Item8031/phenom-II-x4-logo-small.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://hothardware.com/newsimages/Item8031/phenom-II-x4-logo-small.jpg" /&gt;&lt;/a&gt;Según una revista americana (&lt;a href="http://www.eetimes.com"&gt;EE Times&lt;/a&gt;) el micro de cuádruple núcleo de AMD del que se esperaba el estreno para dentro de, aproximadamente, 4 meses será estrenado tan pronto como hoy mismo. Si no ha sido un chivatazo desde dentro de la misma AMD parece un bulo pero, por si acaso, los datos que dan sobre el nuevo niño de los de californianos son los siguientes:&lt;br /&gt;&lt;br /&gt;El micro funcionará a 3 Ghz (pudiendo llevarse hasta pasados los 5 como dije &lt;a href="http://geekbinario.blogspot.com/2008/12/amds-al-lmite.html"&gt;el otro día&lt;/a&gt;). Saldrán 2 variedades con dos modelos cada uno: el primero funcionando a los 3Ghz que he dicho antes y el segundo a 2,8Ghz. La primera variedad vendrá fabricada con tecnología de 45 nm y estará diseñado para la plataforma AM3. La segunda, con tecnología de 65 nm estará destinado a las ya existentes placas AM2+.&lt;br /&gt;&lt;br /&gt;Y lo mejor de todo sería el precio de salida: 275 y 235 dólares para las versiones a 3 y a 2,8 Ghz respectivamente. Un precio que podría arañar un buen cacho al i7 de Intel.&lt;/div&gt;&lt;a href="http://www.reghardware.co.uk/2008/12/08/amd_rolls_out_first_phenom_2/"&gt;Página original&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Actualización:&lt;/b&gt; La página de EETimes parece que ha sido eliminada. ¿ Se habrá metido AMD por medio o se habrán dado cuenta del patazo ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2658544925863839373?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2658544925863839373/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/el-phenom-ii-antes-de-tiempo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2658544925863839373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2658544925863839373'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/el-phenom-ii-antes-de-tiempo.html' title='El Phenom II antes de tiempo'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-6698375149190055920</id><published>2008-12-05T10:09:00.000+01:00</published><updated>2008-12-05T10:33:23.586+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telefonía'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>Siguiente competidor para el iPhone</title><content type='html'>&lt;div style="text-align: justify;"&gt;Que no es otro que un terminal con el sistema operativo que Google sacó hace bien poco para móviles (Android para quién aún no se haya enterado). Aunque ya hace casi 3 meses que apareció el primer y único aparato con Android de la firma americana T-Mobile y aunque hay bastantes fabricantes que dicen estar apostando por esta solución para contrarrestar de alguna forma a Apple (como Motorola y Sony-Ericcson) parece que estos tardan más de lo debido en aparecer.&lt;br /&gt;&lt;br /&gt;Siendo mercados como Japón donde tradicionalmente más tirada tienen todos los nuevos inventos tecnológicos ha tenido que ser Australia el país que vea el primer aparato fuera de los Estados Unidos. El cacharro en sí lo sacará la empresa Kogan. Sin contrato con ninguna marca, lo que lo hará mucho más atractivo, y a un coste de 299 dólares australianos la versión básica y 399 la más avanzada.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://apcmag.com/images/agora-wide.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://apcmag.com/images/agora-wide.jpg" width="420" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A mi me recuerda mucho a algunos Blackberry aunque más estilizado. Los seguidores de Apple igual lo encuentran muy aparatoso o falto de diseño pero yo prefiero el SO que ofrece Google al de la manzana. Como no podía ser de otro modo el aparato vendrá de serie con accesos directos a los servicios de Google, GMail, Google Maps, Google Search, Google Calendar, Google Maps, Google Talk y YouTube. Pero ¿ alguién pensaba lo contrario ?&lt;br /&gt;&lt;br /&gt;Aquí os dejo las especificaciones completas del aparato por si alguien quiere buscarlo en eBay cuando salga al mercado.&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Pantalla&lt;/span&gt;&lt;/td&gt;&lt;td&gt;TFT-LCD táctil de 2.5 pulgadas con una resolución de 262K QVGA (320 X 240 píxeles)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;GPS&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Versión Pro&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Conectividad&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Bluetooth 2.0 con Transferencia de datos mejorada, Wi-Fi: IEEE 802.11b/g (versión Pro) &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Cámara&lt;/span&gt;&lt;/td&gt;&lt;td&gt;2.0 Megapíxeles (versión pro)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Audio&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Micrófono y altavoz incluidos&lt;br/&gt;Jack para cascos&lt;br/&gt;Formatos de audio:MIDI,MP3,WMA,AAC,WAV,PCM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Vídeo&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Soporta: MPEG2 H263, H264, MPEG4, AVI&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Dimensiones (altoxanchoxprof)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;108 mm x 64 mm x 14.8 mm&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Peso&lt;/span&gt;&lt;/td&gt;&lt;td&gt;130 gr&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Tiempo conversación&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Hasta 400 minutos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Tiempo en espera&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Hasta 300 horas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Procesador&lt;/span&gt;&lt;/td&gt;&lt;td&gt;624 MHz&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Memoria&lt;/span&gt;&lt;/td&gt;&lt;td&gt;ROM: 256 MB&lt;br/&gt;RAM: 128 MB&lt;br/&gt;slot de expansión para microSD&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold"&gt;Red&lt;/span&gt;&lt;/td&gt;&lt;td&gt;UMTS/HSDPA (850, 1900, 2100 MHz)&lt;br/&gt;GSM/EDGE (850, 900, 1800, 1900 MHz)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Lo que no me gusta demasiado es que siendo un SO basado en Linux no soporte formatos de vídeo y audio libres como OGG o Theora.&lt;br /&gt;&lt;a href="http://apcmag.com/breaking_first_australian_android_phone_revealed.htm"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-6698375149190055920?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/6698375149190055920/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/siguiente-competidor-para-el-iphone.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6698375149190055920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6698375149190055920'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/siguiente-competidor-para-el-iphone.html' title='Siguiente competidor para el iPhone'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2000748230886321129</id><published>2008-12-04T12:30:00.001+01:00</published><updated>2008-12-04T12:50:50.647+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>Móviles sin batería</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/c/c4/SchemaPiezo.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://upload.wikimedia.org/wikipedia/commons/c/c4/SchemaPiezo.gif" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Unos investigadores de las universidades de Texas y de la de Houston han conseguido el desarrollo de un material piezoeléctrico con unas características muy concretas que podría hacer que un futuro no demasiado lejano los móviles dejasen de llevar batería. Los materiales piezoeléctricos son de naturaleza cristalina. Y tienen la particularidad de que cuando reciben una presión o alteración del estado desde fuera generan una pequeña carga eléctrica.&lt;br /&gt;&lt;br /&gt;Del material usado no se ha hablado mucho. Tan solo que su espesor sería de 21 nanómetros (en comparación un cabello humano tiene 100.000 nanómetros).&lt;br /&gt;&lt;br /&gt;El secreto dicen está en el espesor justo. Hasta ahora se habían hecho pruebas haciendo láminas de entre 20 y 23 nanómetros pero en todas decrecía la potencia de tal forma que lo hacían inusables. Por ejemplo, hace un tiempo se diseñó un tejido con el que se podían generar pequeñísimas cargas eléctricas al moverse con las que, por ejemplo, se podía cargar un reproductor de MP3. Sin embargo para que fuese factible habría que llevar un poncho enorme para conseguir la suficiente carga. Con este nuevo material la ganancia de energía llegaría al 100%. Y al ser tan extremadamente delgado se podrían crear películas que generasen electricidad incluso con la vibración del aire al hablar o con las pulsaciones de las teclas. Perfecto para hacer funcionar un móvil extrafino y extraligero.&lt;br /&gt;&lt;br /&gt;Por cierto, esta tecnología fue desarrollada a partir de estudios del ejército americano cuando investigaba una forma de dotar de energía a los soldados por muy lejos y aislados que estuviesen para, al menos, poder comunicarse con sus compañeros. Curioso.&lt;/div&gt;&lt;a href="http://www.networkworld.com/community/node/35879"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2000748230886321129?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2000748230886321129/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/mviles-sin-batera.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2000748230886321129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2000748230886321129'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/mviles-sin-batera.html' title='Móviles sin batería'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2658170501914825485</id><published>2008-12-03T07:08:00.000+01:00</published><updated>2008-12-03T07:13:47.463+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Poco a poco</title><content type='html'>&lt;div style="text-align: justify;"&gt;Net Applications es una empresa que se encarga de analizar información sobre lo que acontece en Internet. Una información que en muchas ocasiones puede ser muy valiosa para conocer las tendencias de este gran mercado que puede ser Internet. Como ejemplo esta gráfica y estos datos:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/STYibp5VrWI/AAAAAAAABno/coWKqlMEa4Y/s1600-h/CFT1202_0545541E895.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/STYibp5VrWI/AAAAAAAABno/coWKqlMEa4Y/s320/CFT1202_0545541E895.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;table&gt;&lt;col width="72"&gt;&lt;/col&gt;&lt;col width="62"&gt;&lt;/col&gt;&lt;col width="39"&gt;&lt;/col&gt;&lt;col width="58"&gt;&lt;/col&gt;&lt;col width="58"&gt;&lt;/col&gt;&lt;col width="73"&gt;&lt;/col&gt;&lt;col width="62"&gt;&lt;/col&gt;&lt;col width="38"&gt;&lt;/col&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="72"&gt;  &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Mes&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Windows&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Mac&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Linux&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;iPhone&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Playstation&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;FreeBSD&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Otros&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Enero&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;91.50%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.57%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.64%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.13%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.03%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.13%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Febrero&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;91.58%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.46%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.65%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.14%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.03%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.14%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Marzo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;91.57%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.48%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.61%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.15%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.04%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.15%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Bril&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;91.64%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.38%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.63%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.15%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.04%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.16%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Mayo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;91.13%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.83%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.68%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.16%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.03%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.17%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Junio&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;90.89%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.94%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.80%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.16%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.03%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.18%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Julio&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;91.02%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.76%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.82%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.19%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.04%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.17%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Agosto&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;90.66%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;7.86%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.93%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.30%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.04%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.00%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.21%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Septembre&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;90.29%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;8.23%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.91%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.32%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.03%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.01%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.21%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Octubre&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;90.46%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;8.21%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.71%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.33%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.03%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.02%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.24%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr valign="top"&gt;    &lt;td width="72"&gt;     &lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Noviembre&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;89.62%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="39"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;8.87%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.83%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="58"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.37%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="73"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.04%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="62"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.01%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;    &lt;td width="38"&gt;     &lt;div align="right"&gt;&lt;span style="font-family: Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;0.26%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Representa la evolución de uso de los sistemas operativos de escritorio en el acceso a la gran cantidad de páginas que "controlan". En el se puede ver como poco a poco Windows va perdiendo adeptos y a situado su cuota por debajo del 90%. Sigue siendo casi monopolístico, pero otras opciones como Mac OS X y Linux le están llamando poco a poco a la puerta (sobretodo el primero, Steve Jobs debe estar contentísimo). &lt;br /&gt;&lt;br /&gt;También es curioso el dato de las visitas a través del iPhone. Lo que viene a decir que si queréis que vuestra página sea vista adecuadamente por la mayoría de los que acceden será mejor que empieces a comprobarla también con el navegador Safari. &lt;br /&gt;&lt;br /&gt;Y ya que se habla de navegadores, también han mostrado como por primera vez el navegador Firefox a pasado del 20% de uso mundial durante un mes completo. Un dato que aquellos que aún no han adaptado su forma de pensar a nada más allá de Internet Explorer deberían tener muy en cuenta.&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://marketshare.hitslink.com/default.aspx"&gt;Página de Net Applications&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2658170501914825485?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2658170501914825485/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/poco-poco.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2658170501914825485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2658170501914825485'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/poco-poco.html' title='Poco a poco'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FQRIY5VJ4bs/STYibp5VrWI/AAAAAAAABno/coWKqlMEa4Y/s72-c/CFT1202_0545541E895.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8808430242252601369</id><published>2008-12-01T18:58:00.000+01:00</published><updated>2008-12-01T19:01:15.277+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>AMDs al límite</title><content type='html'>&lt;div style="text-align: justify;"&gt;Aunque estas últimas semanas parece que todas las noticias de hardware pasan por el nuevo iCore 7 de Intel también existe mundo fuera de California.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hothardware.com/newsimages/Item8031/phenom-II-x4-logo-small.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://hothardware.com/newsimages/Item8031/phenom-II-x4-logo-small.jpg" /&gt;&lt;/a&gt;Los de AMD siguen haciendo presentaciones para llamar la atención sobre la próxima salida de su plataforma AM3 y sus próximos procesadores Phenom que saldrán a la venta en Enero. Lo que más me llama la atención de estos procesadores es que se podrán pinchar sin problemas (aunque con menos prestaciones) en las placas AM2 que ya se vendían en 2006. Algo de agradecer cuando, por ejemplo, hay que actualizar una granja de ordenadores.&lt;br /&gt;&lt;br /&gt;Y no solo muestra nuevas plataformas y diseños. De vez en cuando sorprende con las cualidades que tienen sus micros para poder hacerles overclocking. La última que he leído sucedió esta misma semana. Unos editores de la página &lt;a href="http://hothardware.com/"&gt;Hothardware&lt;/a&gt; fueron a una presentación que montaron presentando la plataforma Dragon que combinará un procesador AMD Phenom II X4 y una tarjeta gráfica Radeon 4800.&lt;br /&gt;&lt;br /&gt;La presentación incluyó varios sistemas de refrigeración (que se encuentran en el mercado y cualquiera lo suficientemente desesperado puede comprar e instalar) y overclocking extremo.&lt;br /&gt;&lt;br /&gt;La primera prueba, refrigeración con aire, y se pudo colocar al micro algo inferior a los 4Ghz a 1,55V y rondando los 32 ºC. Después le tocó el turno a la refrigeración con agua. Sobrepasaron los 4Ghz a 1,6V y llegando a 39 ºC. Incluso se llegó a los 4,4 Ghz.&lt;br /&gt;&lt;br /&gt;Sin embargo todavía le tocaba el turno al sistema más avanzado, la refrigeración con nitrógeno líquido. Así se pudo conseguir superar y estabilizar el micro a 5Ghz e incluso arrancar superando los 6Ghz.&lt;br /&gt;&lt;br /&gt;Sorprendente, ¿ no ?&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://hothardware.com/News/AMD-Sneak-Peeks-Phenom-II-Overclocks-To-5GHz/"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8808430242252601369?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8808430242252601369/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/12/amds-al-lmite.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8808430242252601369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8808430242252601369'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/12/amds-al-lmite.html' title='AMDs al límite'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2565727771749523497</id><published>2008-11-29T00:03:00.000+01:00</published><updated>2008-11-29T00:09:38.109+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Cambiar la distribución de teclado en Linux</title><content type='html'>&lt;div style="text-align: justify;"&gt;Linux ha avanzado en muchos sentidos, facilidad de manejo, disponibilidad de software, ... Sin embargo algo que conserva (y espero que sea así) es la flexibilidad a la hora de configurar nuestro sistema. A diferencia de otros Sistemas Operativos, Linux disfruta de varias herramientas para hacer el mismo o parecidos trabajos. Si usamos escritorios como Gnome o KDE tendremos utilidades gráficas para configurar gran parte de los aspectos sin necesidad de abrir una consola. Pero desde esta última siempre tendremos la oportunidad de cambiar lo mismo y muchos más detalles.&lt;br /&gt;&lt;br /&gt;En algunas ocasiones nos será necesario conocer esta última forma. Por ejemplo si nos descargamos alguna imagen de una máquina virtual ya preconfigurada con un idioma diferente al nuestro o cuando hacemos la instalación de un servidor, elegimos mal el idioma y cuando accedemos por primera vez a la consola nos damos cuenta que tenemos los '/' en otro lugar.&lt;br /&gt;&lt;br /&gt;Para esos casos os dejo los comandos precisos en cada una de las distribuciones más comunes.&lt;/div&gt;&lt;h3&gt;Fedora&lt;/h3&gt;&lt;h4&gt;Idioma por defecto&lt;/h4&gt;&lt;div class="codigo"&gt;system-config-language&lt;/div&gt;&lt;h4&gt;Distribución del teclado&lt;/h4&gt;&lt;div class="codigo"&gt;system-config-keyboard&lt;/div&gt;&lt;h3&gt;Debian&lt;/h3&gt;&lt;h4&gt;Idioma por defecto&lt;/h4&gt;&lt;div class="codigo"&gt;dpkg-reconfigure locales&lt;/div&gt;&lt;h4&gt;Distribución del teclado&lt;/h4&gt;&lt;div class="codigo"&gt;dpkg-reconfigure console-data(*)&lt;/div&gt;&lt;h3&gt;Ubuntu&lt;/h3&gt;&lt;div class="codigo"&gt;sudo dpkg-reconfigure console-setup*&lt;/div&gt;&lt;h3&gt;Mandriva&lt;/h3&gt;&lt;h4&gt;Idioma por defecto&lt;/h4&gt;&lt;div class="codigo"&gt;localedrake&lt;/div&gt;&lt;h4&gt;Distribución del teclado&lt;/h4&gt;&lt;div class="codigo"&gt;keyboarddrake&lt;/div&gt;&lt;h3&gt;Suse&lt;/h3&gt;&lt;h4&gt;Idioma por defecto&lt;/h4&gt;&lt;div class="codigo"&gt;yast2&lt;/div&gt;&lt;h3&gt;Slackware&lt;/h3&gt;En este es un poco más complicado. Para cambiar momentaneamente el teclado:&lt;br /&gt;&lt;div class="codigo"&gt;setxkbmap es&lt;/div&gt;&lt;br /&gt;Y para cambiarlo definitivamente habrá que editar el archivo "/etc/rc.d/rc.keymap" y cambiar la línea donde ponga:&lt;br /&gt;&lt;div class="codigo"&gt;*us.map*&lt;/div&gt;&lt;br /&gt;(o la distribución que aparezca) por:&lt;br /&gt;&lt;div class="codigo"&gt;*es.map*&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.howtoforge.com/changing-language-and-keyboard-layout-on-various-linux-distributions"&gt;Fuente&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;(*) Desde estas herramientas se configuran otras cosas como la fuente con la que arrancan las consolas o el número de consolas virtuales de las que dispondrá. Esto, por ejemplo, no se puede hacer con ninguna herramienta gráfica, por ahora.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2565727771749523497?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2565727771749523497/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/11/cambiar-la-distribucin-de-teclado-en.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2565727771749523497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2565727771749523497'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/11/cambiar-la-distribucin-de-teclado-en.html' title='Cambiar la distribución de teclado en Linux'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-1579435579006016790</id><published>2008-11-22T00:53:00.004+01:00</published><updated>2008-11-22T01:32:24.182+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='propios'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Filas dinámicas con JQuery</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.jquery.com/"&gt;JQuery&lt;/a&gt; es una estupenda y liviana librería Javascript que te permite hacer auténticas maravillas con muy poco código. Es cierto que existen multitud de librerías que gráficamente pueden hacer lo mismo o más cosas. Sin embargo si hay algo que diferencia a JQuery de otras librerías como Prototype o MooTools es su capacidad para encontrar y manipular los elementos de la página.&lt;br /&gt;&lt;br /&gt;Una de las cosas que le critican es su ausencia de orientación a objetos (sobretodo de cara a proyectos grandes). Sin embargo no creo que sea ningún problema insalvable. Es más, el no añadir una capa más puede ayudar en muchos otros casos. Sobretodo teniendo en cuenta que JQuery puede lograr que tu código sea mucho más corto que con otras librerías.&lt;br /&gt;&lt;br /&gt;Y todo esto es para responder a &lt;a href="http://www.nacho-alvarez.es/?p=404"&gt;este artículo&lt;/a&gt; publicado por Neonigma. En el muestra como hacer una página para subir archivos al estilo de la usada por Blogger, permitiendo indicar tantos archivos como deseemos. Aquí solo os presento un ejemplo que usa las facilidades de JQuery para lograr la funcionalidad de insertar elementos dinámicas, para el resto del código podéis acudir al artículo que he citado antes.&lt;br /&gt;&lt;br /&gt;El código creo que es bastante sencillo. Sin embargo si hace falta alguna aclaración podéis preguntar en los comentarios.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="javascript" style="font-family:monospace;color: #006; border: 1px solid #d0d0d0; background-color: #f0f0f0;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt;script type&lt;span style="color: #339933;"&gt;=&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&lt;span style="color: #339933;"&gt;&amp;lt;!--&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; columnaActual &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #CC0000;"&gt;0&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #006600; font-style: italic;"&gt;/* Método que ejecuta JQuery una vez&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&lt;span style="color: #006600; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; se ha terminado de cargar el documento. */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;$&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;document&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #660066;"&gt;ready&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;nbsp;nuevaFila &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #006600; font-style: italic;"&gt;/* Creamos una nueva fila usando la&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&lt;span style="color: #006600; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp;variable columnaActual como índice. */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; nuevaFila &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; fila &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'&amp;lt;li id=&amp;quot;fila'&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #339933;"&gt;++&lt;/span&gt;columnaActual&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'&amp;quot;&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li onClick=&amp;quot;borrarFila('&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; columnaActual &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;')&amp;quot;&amp;gt;Eliminar&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;input type=&amp;quot;file&amp;quot; id=&amp;quot;files'&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; columnaActual &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'&amp;quot; name=&amp;quot;files'&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; columnaActual&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'&amp;quot; size=&amp;quot;40&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;'&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; $&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;#filas&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #660066;"&gt;append&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;fila&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #009966; font-style: italic;"&gt;/* Elimina la fila indicada. */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; borrarFila &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;indice&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; $&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;#fila&amp;quot;&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; indice&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #660066;"&gt;remove&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&lt;span style="color: #339933;"&gt;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&lt;span style="color: #339933;"&gt;&amp;lt;/&lt;/span&gt;script&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;lt;/head&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;lt;body&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&amp;lt;div&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; &amp;lt;ul id=&amp;quot;filas&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp;&amp;lt;input type=&amp;quot;button&amp;quot; onClick=&amp;quot;nuevaFila ();&amp;quot;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;nbsp; value=&amp;quot;Insertar fila&amp;quot;/&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;"&gt;&lt;div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;;white-space: nowrapcolor: #000020;"&gt;&amp;lt;/body&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;El resultado lo podéis probar &lt;a href="http://pages.pensamientosyrarezas.com-a.googlepages.com/filas.html"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-1579435579006016790?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/1579435579006016790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/11/filas-dinmicas-con-jquery.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1579435579006016790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1579435579006016790'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/11/filas-dinmicas-con-jquery.html' title='Filas dinámicas con JQuery'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-1117996223699122510</id><published>2008-11-21T19:14:00.000+01:00</published><updated>2008-11-21T19:17:25.754+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Record de velocidad en escritorio</title><content type='html'>Aunque estas últimas semanas parece que todas las noticias de hardware pasan por el nuevo iCore 7 de Intel también existe mundo fuera de California.&lt;br /&gt;&lt;br /&gt;Siguen haciendo presentaciones para llamar la atención sobre la próxima salida de su plataforma AM3 y sus próximos procesadores Phenom que saldrán a la venta en Enero. Lo que más me llama la atención de estos procesadores es que se podrán pinchar sin problemas (aunque con menos prestaciones) en las placas AM2 que ya se vendían en 2006. Algo de agradecer cuando, por ejemplo, hay que actualizar una granja de ordenadores.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SSb6zk9AekI/AAAAAAAABnY/2fKMHr2CrBY/s1600-h/phenom-II-x4-logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SSb6zk9AekI/AAAAAAAABnY/2fKMHr2CrBY/s320/phenom-II-x4-logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Y no solo muestra nuevas plataformas y diseños. De vez en cuando sorprende con las cualidades que tienen sus micros para poder hacerles overclocking. La última que he leído sucedió esta misma semana. Unos editores de la página &lt;a href="http://hothardware.com/"&gt;Hothardware&lt;/a&gt; fueron a una presentación que montaron presentando la plataforma Dragon que combinará un procesador AMD Phenom II X4 y una tarjeta gráfica Radeon 4800.&lt;br /&gt;&lt;br /&gt;La presentación incluyó varios sistemas de refrigeración (que se encuentran en el mercado y cualquiera lo suficientemente desesperado puede comprar e instalar) y overclocking extremo.&lt;br /&gt;&lt;br /&gt;La primera prueba, refrigeración con aire, y se pudo colocar al micro algo inferior a los 4Ghz a 1,55V y rondando los 32 ºC. Después le tocó el turno a la refrigeración con agua. Sobrepasaron los 4Ghz a 1,6V y llegando a 39 ºC. Incluso se llegó a los 4,4 Ghz.&lt;br /&gt;&lt;br /&gt;Sin embargo todavía le tocaba el turno al sistema más avanzado, la refrigeración con nitrógeno líquido. Así se pudo conseguir superar y estabilizar el micro a 5Ghz e incluso arrancar superando los 6Ghz.&lt;br /&gt;&lt;br /&gt;Sorprendente, ¿ no ?&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://hothardware.com/News/AMD-Sneak-Peeks-Phenom-II-Overclocks-To-5GHz/"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-1117996223699122510?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/1117996223699122510/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/11/record-de-velocidad-en-escritorio.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1117996223699122510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1117996223699122510'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/11/record-de-velocidad-en-escritorio.html' title='Record de velocidad en escritorio'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/SSb6zk9AekI/AAAAAAAABnY/2fKMHr2CrBY/s72-c/phenom-II-x4-logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-606199525849682548</id><published>2008-11-17T20:42:00.000+01:00</published><updated>2008-11-17T20:44:28.787+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>Energía inalámbrica</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SSHJf0-vxbI/AAAAAAAABmk/Xl4wQiisnjE/s1600-h/wireless-power-at-idf.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SSHJf0-vxbI/AAAAAAAABmk/Xl4wQiisnjE/s320/wireless-power-at-idf.jpg" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Eso es lo que según Intel en no demasiado tiempo podremos usar de forma cotidiana en nuestras casas, oficinas, cafeterías y cualquier lugar imaginable. &lt;br /&gt;&lt;br /&gt;Según han mostrado en una demostración de lo que su tecnología WREL (Enlace de Resonancia de Energía Inalámbrica en su traducción desde el inglés) puede hacer han, por ejemplo, encendido una bombilla de 60 Watios sin necesidad de que estuviese conectada a ningún sitio. Puede parecer poca cosa pero los portátiles podrían recargarse rápidamente con esa potencia y algunos de ellos funcionar de forma continua. &lt;br /&gt;&lt;br /&gt;El principio de funcionamiento es simple. Una superficie conectada a una toma de corriente transforma dicha corriente en un campo magnético. Cuando un equipo con un "receptor" descubre dicho campo magnético lo usa convirtiendolo de nuevo en electricidad que puede usar normalmente. En el proceso, siempre según las palabras de Intel, solo se perderá un 25% de la energía en forma de conversión y transmisión. Siempre y cuando el objeto se encuentre en un radio de entre 60 o 90 centímetros. &lt;br /&gt;&lt;br /&gt;Una tecnología así podría cambiar muchas cosas en nuestras casas. En vez de tener multitud de enchufes por casa podríamos tener estos aparatos empotrados en la pared o, por ejemplo, tener una pequeña mesa en el comedor. Allí podríamos llevarnos una taza de agua y el té se haría mientras seguimos viendo nuestra serie favorita. &lt;br /&gt;&lt;br /&gt;Aunque yo tengo mis dudas con eso de que es totalmente seguro para la salud. Si ya se duda sobre los pequeños campos magnéticos de los móviles. Estar rodeados de campos magnéticos en casa para algo tan trivial (al menos para mi) como no poner un cable de corriente me parece un poco pasarse. &lt;br /&gt;&lt;br /&gt;Menos mal que aún dicen que están en la infancia de la tecnología y faltan años antes de poder ver dispositivos que la usen. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://thefutureofthings.com/news/5763/intels-wireless-power-technology-demonstrated.html"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-606199525849682548?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/606199525849682548/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/11/energa-inalmbrica.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/606199525849682548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/606199525849682548'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/11/energa-inalmbrica.html' title='Energía inalámbrica'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FQRIY5VJ4bs/SSHJf0-vxbI/AAAAAAAABmk/Xl4wQiisnjE/s72-c/wireless-power-at-idf.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8921779395707358408</id><published>2008-11-15T22:37:00.004+01:00</published><updated>2008-11-15T23:12:37.289+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>¿ Revolución ?</title><content type='html'>&lt;div style="text-align: justify;"&gt;Está claro que lo que hoy es ciencia ficción mañana puede ser una realidad.&lt;br /&gt;&lt;br /&gt;Esto es lo que ha pasado con la interfaz de comunicación máquina-hombre que apareció en la película Minority Report. La empresa &lt;a href="http://www.oblong.com/"&gt;Oblong&lt;/a&gt; ha desarrollado una interfaz a la que ha bautizado &lt;span style="font-style: italic;"&gt;g-speak&lt;/span&gt;. Esta empresa fue creada por unos investigadores del MIT que ya hicieron un trabajo preliminar con este tipo de tecnología. Para que os hagáis una idea de las cosas que se pueden hacer os dejo un vídeo demostrativo que ha colgado la empresa.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="400" height="225"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2229299&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2229299&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/2229299"&gt;Muestra de g-speak&lt;/a&gt; gracias &lt;a href="http://vimeo.com/user922585"&gt;John Underkoffler&lt;/a&gt; en &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Impresionante, ¿ verdad ?&lt;br /&gt;&lt;br /&gt;Comparan, no sin razón, el invento con el cambio que supuso en 1984 la introducción de las primeras interfaces gráficas. Las posibilidades son enormes. Ya que el precio inicial será prohibitivo (también a la hora de tener un salón lo suficientemente grande como para poder aprovecharlo) los primeros en aprovecharlo podrían ser empresas de diseño, de control de procesos con multitud de orígenes de datos o empresas de seguridad, por poner unas pocas.&lt;br /&gt;&lt;br /&gt;Según dicen en su página se podría aprovechar tanto en salones, en salas de conferencias (no quiero ser yo el que le explique a mi jefe como usar esto con sus PowerPoints) o en los coches. Esto último lo veo un poco más problemático, ¿ os imagináis teniendo que estar haciendo aspavientos con las manos mientras conduces para que te muestre los datos del GPS ?&lt;br /&gt;&lt;br /&gt;Por supuesto que el día que esta tecnología llegue a los hogares seguro que los avispados del porno son los primeros en sacarle provecho.&lt;/div&gt;&lt;a href="http://www.engadget.com/2008/11/14/oblongs-g-speak-the-minority-report-os-brought-to-life/"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8921779395707358408?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8921779395707358408/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/11/revolucin.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8921779395707358408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8921779395707358408'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/11/revolucin.html' title='¿ Revolución ?'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7226906326634148178</id><published>2008-11-14T07:26:00.001+01:00</published><updated>2008-11-14T20:07:07.620+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Arranque de Windows Vista en 4 segundos</title><content type='html'>La compañía taiwanesa ASRock de placas bases ha presentado una tecnología que permitirá iniciar los equipos con Windows XP y Vista en tan solo 4 segundos. Para comprobarlo tan solo hay que observar el siguiente cutrevídeo que la propia compañía ha presentado como lema de su campaña:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BucIjXZVxXo&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/BucIjXZVxXo&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Como se puede observar en el vídeo aparecen dos opciones Modo Rápido y Modo Regular. El primero es el que arranca el equipo en 3 ó 4 segundos. Con el segundo se retrasa hasta unos más que decentes 20 ó 22.&lt;br /&gt;&lt;br /&gt;Para llegar a este tiempo han usado la existente tecnología ACPI (para la configuración avanzada del consumo). Concretamente han usado la parte que permite dormir o hibernar el equipo. Usando dichas funciones durante momentos específicos del apagado y encendido de Windows se consigue lo visto.&lt;br /&gt;&lt;br /&gt;El modo de arranque rápido nos permite disfrutar del arranque casi instantáneo con un Windows completamente límpio (como si fuese un inicio normal del sistema). Lo que vendrá de perlas a aquellos que dejan el equipo encendido para no tener que esperar después el arranque (&lt;span style="font-weight: bold;"&gt;*&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Sin embargo todo tiene pegas. Para poder usar el modo más rápido tendremos que tener en cuenta varios detalles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; El equipo no puede desconectarse de la corriente (lo que, aunque no lo digan, es de suponer que seguirá gastando algo de energía).&lt;/li&gt;&lt;li&gt;Solo podrá usarse en equipos con un solo usuario y sin protección con clave.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Por último si eres poseedor de una placa base basada en uno de estos chipsets: AMD 780G y 790GX o Intel P45 y Intel P43, podrás desde ya bajarte una actualización de la BIOS desde &lt;a href="http://www.asrock.com/feature/instantboot/download.asp"&gt;aquí&lt;/a&gt; y probar esta tecnología sin tener que cambiar la placa. Si alguien lo hace, por favor, ¿ podéis comentar vuestras impresiones ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*&lt;/span&gt; &lt;span style="font-style: italic;"&gt;El extremo de los que no apagan el ordenador por no tener que esperar un par de minutos a encenderlo me parece un poco irresponsable. Primero por el incremento de energía (y su correspondiente factura) y segundo ... pero si tardas más tiempo en ir a lavarte los dientes que en darle al encendido del PC ...&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.custompc.co.uk/news/605172/asrock-instant-boot-loads-windows-in-four-seconds.html"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7226906326634148178?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7226906326634148178/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/11/arranque-de-windows-vista-en-4-segundos.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7226906326634148178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7226906326634148178'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/11/arranque-de-windows-vista-en-4-segundos.html' title='Arranque de Windows Vista en 4 segundos'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-6830578097097476180</id><published>2008-10-29T12:46:00.000+01:00</published><updated>2008-10-29T12:50:36.545+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='librería'/><title type='text'>Flot, librería de gráficos con CSS y Javascript</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SQhNXXn_meI/AAAAAAAABkc/qBvWOoBUNKQ/s1600-h/flot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SQhNXXn_meI/AAAAAAAABkc/V8iP_pueNXM/s320-R/flot.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Esta es una grandiosa (y no por el tamaño, 44Kb, 32 si nos dan igual los usuarios de IE) librería Javascript para hacer gráficos (de líneas, de barras, de puntos) de una forma rápida y muy fácil.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El ejemplo más básico sería tan simple como crear una tabla encerrada dentro de un &lt;i&gt;div&lt;/i&gt; con las propiedades correctas y llamar a la librería para que muestre el gráfico. Con las propiedades correctas me refiero a la identificación del &lt;i&gt;div&lt;/i&gt; que debe ser &lt;i&gt;placeholder&lt;/i&gt; y establecer el ancho y el alto usando CSS.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Aunque lo más "simple" es crear la tabla es mucho más eficiente tanto por tamaño como por velocidad de ejecución crear los datos en un array javascript y pasárselo al script. Este último método será el que use para demostrar la librería. Pero como nada es perfecto si creéis que vuestra web puede ser accedida por personas ciegas o que no tengan habilitado JavaScript sería aconsejable usar las tablas.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Antes de mostrar el primer ejemplo y si tienes que tener en cuenta a los usuarios de IE tendrás que incluir esto:&lt;/div&gt;&lt;br /&gt;&amp;lt;!--[if IE]&amp;gt;&amp;lt;script language="javascript" type="text/javascript" src="excanvas.pack.js"&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;&lt;br /&gt;Con esto se conseguirá emular el estandar Canvas que ya está presente en las últimas versiones de todos los navegadores. Ahora vamos con el primer ejemplo:&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="placeholder" style="width:600px;height:300px;"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script id="source" language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;$(function ()&lt;br /&gt;{&lt;br /&gt;linea1 = [[1,3], [4,4],[5,7],[7,10],[10,8]];&lt;br /&gt;linea2 = [[0,3],[6,3],null,[6,10],[9,12],[11,9]];&lt;br /&gt;&lt;br /&gt;$.plot($("#placeholder"), [linea1,linea2]);&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;Y mostraría algo como esto:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SQhNYLRVaOI/AAAAAAAABkk/_qqTDWwUAFQ/s1600-h/flot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SQhNYLRVaOI/AAAAAAAABkk/f2UnqaQovZw/s320-R/flot1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Como se puede ver nada complicado. Si en el array que se pasa algún valor está puesto a null mostrará un salto en la línea, como podéis ver en la línea azul.&lt;br /&gt;&lt;br /&gt;Ahora vayamos con más opciones basados todos en el código anterior.&lt;br /&gt;&lt;br /&gt;Si llamamos al constructor de esta forma:&lt;br /&gt;&lt;br /&gt;$.plot($("#placeholder"), [linea1,linea2], { yaxis:{max:20}});&lt;br /&gt;&lt;br /&gt;Le indicaremos que la línea vertical debe llegar hasta la cantidad que le indiquemos. Lógicamente también podemos establecer el mínimo con &lt;i&gt;{min:X}&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Cada línea tiene multitud de opciones que nos permitirán definir la forma en que queremos que se muestren y actuen. Estas son todas las disponibles:&lt;br /&gt;{&lt;br /&gt;color: color o número,&lt;br /&gt;data: array con los datos,&lt;br /&gt;label: etiqueta para la leyenda,&lt;br /&gt;lines: especifica las opciones de la línea,&lt;br /&gt;bars: especifica las opciones de la barra,&lt;br /&gt;points: especifica las opciones de los puntos,&lt;br /&gt;xaxis: 1 ó 2,&lt;br /&gt;yaxis: 1 ó 2,&lt;br /&gt;shadowSize: tamaño de la sombra&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Las opciones que no se establezcan se tomarán por defecto. Por ejemplo, si queremos que la primera línea se muestre como una sucesión de puntos y muestren una leyenda crearemos los datos así:&lt;br /&gt;&lt;br /&gt;linea1 = {&lt;br /&gt;label:"Linea 1",&lt;br /&gt;points:{show:true},&lt;br /&gt;data:[[1,3], [4,4],[5,7],[7,10],[10,8]]&lt;br /&gt;};&lt;br /&gt;linea2 = {&lt;br /&gt;label:"Linea 2",&lt;br /&gt;bars:{show:true,barWidth:1,align:"center"},&lt;br /&gt;data:[[0,3],[6,3],null,[6,10],[9,12],[11,9]]&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Que nos mostraría algo así:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SQhNZj96IhI/AAAAAAAABks/RtLlF5cDHKg/s1600-h/flot2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SQhNZj96IhI/AAAAAAAABks/RQuWb4CQug0/s320-R/flot2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Para las demás opciones os aconsejo que leáis el manual (no he encontrado manual en castellano, si estáis muy interesados otro día haré una entrada mucho más larga con todas las opciones de la librería).&lt;br /&gt;&lt;br /&gt;Ahora mostraré algunas de las opciones que cambian el aspecto global del gráfico. Empezando con la leyenda. Estas son las opciones disponibles (después mostraré un gráfico usando algunas de estas opciones):&lt;br /&gt;legend: {&lt;br /&gt;show: lógico&lt;br /&gt;labelFormatter: null o (función: string -&amp;gt; string)&lt;br /&gt;labelBoxBorderColor: color&lt;br /&gt;noColumns: columnas que no hay que mostrar&lt;br /&gt;position: posición de la leyenda "ne", "nw", "se" o "sw"&lt;br /&gt;margin: número de píxeles&lt;br /&gt;backgroundColor: null o color&lt;br /&gt;backgroundOpacity: un número entre 0.0 y 1.0&lt;br /&gt;container: null o un objeto jQuery&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Y siguiendo con las interesantes propiedades de la matriz:&lt;br /&gt;grid: {&lt;br /&gt;color: color&lt;br /&gt;backgroundColor: color o null&lt;br /&gt;tickColor: color&lt;br /&gt;labelMargin: margen de las etiquetas&lt;br /&gt;markings: array de markings o (función: eje -&amp;gt; array de markings)&lt;br /&gt;borderWidth: ancho de los bordes&lt;br /&gt;clickable: lógico&lt;br /&gt;hoverable: lógico&lt;br /&gt;autoHighlight: lógico&lt;br /&gt;mouseActiveRadius: radio &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Usando esta confuración podemos añadir esto al ejemplo:&lt;br /&gt;configuracion = {&lt;br /&gt;legend: {&lt;br /&gt;position:"nw",&lt;br /&gt;backgroundOpacity:0.7&lt;br /&gt;},&lt;br /&gt;grid: {&lt;br /&gt;hoverable:true&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$.plot($("#placeholder"), [linea1,linea2], configuracion);&lt;br /&gt;&lt;br /&gt;Y terminariamos con algo como esto:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SQhNaoDs1DI/AAAAAAAABk0/w0bp1xQL9F8/s1600-h/flot3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SQhNaoDs1DI/AAAAAAAABk0/2sA0HmZFvLw/s320-R/flot3.png" /&gt;&lt;/a&gt;&lt;/div&gt;Ahora solo queda que os bajéis la librería, veáis los ejemplos que vienen incluídos y conozcáis el resto de posibilidades que ofrece.&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://code.google.com/p/flot/"&gt;Página de Flot&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-6830578097097476180?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/6830578097097476180/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/10/flot-librera-de-grficos-con-css-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6830578097097476180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6830578097097476180'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/10/flot-librera-de-grficos-con-css-y.html' title='Flot, librería de gráficos con CSS y Javascript'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FQRIY5VJ4bs/SQhNXXn_meI/AAAAAAAABkc/V8iP_pueNXM/s72-Rc/flot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-942152697048754638</id><published>2008-10-20T16:06:00.000+02:00</published><updated>2008-10-20T16:18:09.996+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Nuevo invento de Asus</title><content type='html'>&lt;div style="text-align: justify;"&gt;Asus presentó en el pasado festival Computex 2008 un prototipo como el que aparece en la pantalla. Un portatil con doble pantalla táctil que se supone presentará durante la primera mitad de este año que viene.&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/_FQRIY5VJ4bs/SPyR7Unx0-I/AAAAAAAABgc/PbwCSUEJ7PQ/s1600-h/asustek_two-screen_notebooks.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/SPyR7Unx0-I/AAAAAAAABgc/ikyZtB_uMUU/s320-R/asustek_two-screen_notebooks.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se supone que vendrán preparados para operar junto con el próximo Windows 7. Sin embargo Microsoft no lanzará su nuevo sistema operativo hasta el año 2010. Así que o lo lanza con menos posibilidades de las presentadas o crean ellos mismos una interfaz basada en la que ha presentado con el nuevo EEE Top.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DOlQ2qgxsVA&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=de&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DOlQ2qgxsVA&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=de&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Lo hagan como lo hagan las posibilidades espectaculares:&lt;br /&gt;&lt;br /&gt;Trabajando como tablet PC. Se podría utilizar como dos pantallas o una sola pantalla enorme.&lt;br /&gt;&lt;br /&gt;Trabajando con otra persona. Parecido a trabajar en forma de Tablet pero con cada pantalla girada hacia un lado se podría trabajar conjuntamente con otra persona.&lt;br /&gt;&lt;br /&gt;Trabajando como un portatil. Una de las pantallas presentaría un teclado. Supongo que las pantallas disfrutarán de tecnología multitáctil y con presión variable. Así se podrán dejar los dedos sobre ella sin que lo reconozca como pulsaciones.&lt;br /&gt;&lt;br /&gt;También vería fenomenal esta posiblidad para, por ejemplo, tener varios documentos en la parte de arriba mientras en la de abajo estás tecleando en la mitad inferior de la pantalla y el editor lo tienes en la otra ventana.&lt;br /&gt;&lt;br /&gt;¿ Qué os parece el aparatito ?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P.D.&lt;/b&gt; Por supuesto ninguno de los dos ha salido al mercado ni tan siquiera asiático. De aquí a que llegue a España .... si llega ...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-942152697048754638?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/942152697048754638/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/10/nuevo-invento-de-asus.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/942152697048754638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/942152697048754638'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/10/nuevo-invento-de-asus.html' title='Nuevo invento de Asus'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FQRIY5VJ4bs/SPyR7Unx0-I/AAAAAAAABgc/ikyZtB_uMUU/s72-Rc/asustek_two-screen_notebooks.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7141883405875000620</id><published>2008-10-12T13:03:00.003+02:00</published><updated>2008-10-12T13:10:25.931+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>Diseñando el futuro</title><content type='html'>Seok-Hyung Bae, Ravin Balakrishnan y Karan Singh. Estos son los nombres de los creadores de este invento. Una tableta destinada específicamente para diseñadores en 2 pero especialmente de 3 dimensiones. Es mucho más fácil ver lo que puede hacer que intentar describirlo. Sencillamente genial.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:center;"&gt;&lt;object width="400" height="302"&gt; &lt;param name="allowfullscreen" value="true" /&gt; &lt;param name="allowscriptaccess" value="always" /&gt; &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1669862&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt; &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1669862&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.dgp.toronto.edu/~shbae/ilovesketch.htm"&gt;Página original&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-7141883405875000620?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/7141883405875000620/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/10/diseando-el-futuro.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7141883405875000620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/7141883405875000620'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/10/diseando-el-futuro.html' title='Diseñando el futuro'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-6841100210758928892</id><published>2008-10-09T10:07:00.004+02:00</published><updated>2008-10-09T10:11:59.644+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Como: Revelar un texto oculto en Photoshop</title><content type='html'>En el siguiente vídeo se puede observar el proceso por el que un texto previamente censurado puede "limpiarse" claramente. Tan solo usando el Photoshop CS3 y las posibilidades que su motor de Javascript brinda.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="400" height="300"&gt; &lt;param name="allowfullscreen" value="true" /&gt; &lt;param name="allowscriptaccess" value="always" /&gt; &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1913931&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt; &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1913931&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Los detalles de cómo lo hace podéis verlo en la página &lt;a href="http://tlrobinson.net/blog/?p=52"&gt;web del autor&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-6841100210758928892?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/6841100210758928892/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/10/como-revelar-un-texto-oculto-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6841100210758928892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6841100210758928892'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/10/como-revelar-un-texto-oculto-en.html' title='Como: Revelar un texto oculto en Photoshop'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-9217682344064513320</id><published>2008-09-26T16:17:00.004+02:00</published><updated>2008-09-26T16:34:55.895+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Buscar en la consola</title><content type='html'>Los que trabajamos mucho con el ordenador hemos tenido alguna vez la necesidad de buscar algún archivo entre el maremagnum en que se han convertido nuestros discos duros.&lt;br /&gt;&lt;br /&gt;Por su comodidad casi todos usamos las utilidades gráficas que acompañan a nuestro entorno operativo. Sin embargo la tradición de consola de UNIX nos facilita varias herramientas muy potentes (y para nada difíciles) para llevar a cabo dicha tarea. Aquí las presento con un pequeño resumen de su modo de uso.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;find&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Este comando es uno de los más potentes. Aunque tiene multitud de opciones para buscar archivos no nos hará falta recurrir a todo su arsenal para una búsqueda simple. Su formato es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;em style="font-family: courier new;"&gt;find ruta criterio acción&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;donde:&lt;br /&gt;"&lt;span style="font-style: italic;font-family:courier new;" &gt;ruta&lt;/span&gt;" es la sección del sistema de archivos que queremos rastrear. Si no se especifica toma el directorio actual.&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;font-family:courier new;" &gt;criterio&lt;/span&gt;" por el que se buscará el archivo. Aquí es donde se incluye toda la potencia y dificultad del comando. Solo voy a presentar una opción. Si queréis saber más: &lt;em&gt;man find&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;font-family:courier new;" &gt;acción&lt;/span&gt;" representa lo que se quiere hacer en cada archivo encontrado. Por defecto lo muestra por pantalla pero también se puede eliminar o ejecutar un comando con cada archivo encontrado.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SNzwrPQdTUI/AAAAAAAABDc/x5NeMTgk6dI/s1600-h/find.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_FQRIY5VJ4bs/SNzwrPQdTUI/AAAAAAAABDc/x5NeMTgk6dI/s320/find.png" alt="" id="BLOGGER_PHOTO_ID_5250335891227757890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;locate&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Este comando es mucho más rápido que find puesto que guarda una base de datos con los archivos disponibles. Sin embargo no rastrea el disco duro automáticamente en busca de archivos nuevos. Para regenerar la base de datos hay que ejecutar el comando &lt;em&gt;updatedb&lt;/em&gt;, por ejemplo, en cada arranque.&lt;br /&gt;&lt;br /&gt;Este comando es muy inseguro puesto que cualquier usuario puede realizar una búsqueda en todos los archivos del sistema independientemente del dueño del archivo. Por ello se creo un comando equivalente pero más seguro llamado &lt;em&gt;slocate&lt;/em&gt; (que se actualiza ejecutando &lt;em&gt;slocate -u.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;whereis&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Este comando tiene varias posibilidades. Le indicamos el nombre de un comando y nos intentará devolver el ejecutable, la página &lt;/em&gt;&lt;em&gt;del manual y el archivo de código fuente de dicho comando. También se le puede pedir una parte de dicha información con los parámetros -b, -m, -s respectivamente.&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SNzygeGzDQI/AAAAAAAABEM/Yv5vmjS8ZxQ/s1600-h/whereis.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_FQRIY5VJ4bs/SNzygeGzDQI/AAAAAAAABEM/Yv5vmjS8ZxQ/s320/whereis.png" alt="" id="BLOGGER_PHOTO_ID_5250337905258466562" border="0" /&gt;&lt;/a&gt;&lt;em&gt;&lt;em&gt;&lt;strong&gt;which&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Con este comando podremos averiguar desde donde se ejecuta el comando especificado. Lo que hace es recorrer el PATH del sistema buscando dicho comando. Es muy útil cuando tenemos varias versiones de un mismo comando y no sabemos cuál se ejecuta.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;type&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Este comando es útil si queremos saber si un determinado comando es un ejecutable o forma parte de la shell. Por ejemplo, si ejecutamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$ type type&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nos devolverá:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;type es una función integrada en la shell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sin embargo si ejecutamos type con el nombre de un comando externo nos indicará la ruta desde la que se ejecuta. Muy parecido al anterior comando.&lt;br /&gt;&lt;br /&gt;Por último y aunque no es un comando por si mismo sí podemos usar la potencia de las tuberías de UNIX para hacer algo así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;find * | grep [nombre]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Primero find buscará todos los archivos y podremos filtrarlos con tada la potencia para procesar cadena de que dispone grep. Pero ese es otro tema.&lt;br /&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-9217682344064513320?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/9217682344064513320/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/09/buscar-en-la-consola.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/9217682344064513320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/9217682344064513320'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/09/buscar-en-la-consola.html' title='Buscar en la consola'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SNzwrPQdTUI/AAAAAAAABDc/x5NeMTgk6dI/s72-c/find.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2566488350275079260</id><published>2008-09-02T17:18:00.003+02:00</published><updated>2008-09-02T17:22:26.799+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenOffice'/><title type='text'>OpenOffice - Áreas</title><content type='html'>Las áreas son a OpenOffice Writer lo que a otros procesadores de texto las secciones (es más en las primeras versiones y en la versión en inglés se encuentra como sección en vez de como área). Es una forma fácil y centralizada donde ver y gestionar la estructura de un documento.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Pero no se limita simplemente a estructurar. Podemos establecer en cada área un número de columnas, unas sangrías, un fondo e incluso unas notas diferentes al resto del documento.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://openoffice.blogs.com/openoffice/images/2007/05/28/section1_2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://openoffice.blogs.com/openoffice/images/2007/05/28/section1_2.gif" alt="" border="0" /&gt;&lt;/a&gt;Para crear un nuevo área podemos partir de un texto ya escrito, empezar con un área vacía o usar un documento diferente.&lt;br /&gt;&lt;br /&gt;Las dos primeras opciones son las más sencillas. Seleccionando el texto que queremos que pertenezca al área o sin ningún texto seleccionado tan solo debemos ir al menú Insertar área del menú Insertar. Le damos un nombre apropiado o dejamos el que nos viene correlativo por defecto y le damos a aceptar.&lt;br /&gt;&lt;br /&gt;Para la última opción debemos tener en cuenta que solo podemos insertar otros documentos de Writer. Esto aún no termina de convencerme. Existen varios puntos dentro del menú Insertar para insertar según qué tipo de objeto. Deberían poder insertarse objetos de cualquier aplicación de OpenOffice como área de un documento para darle más consistencia a la aplicación.&lt;br /&gt;&lt;br /&gt;Siguiendo con los documentos asociados se puede hacer que no se pueda modificar o que siga siendo editable incluso en los documentos de solo lectura. En el caso de hacerlo no modificable nos deja la posibilidad de cambiar los colores de partes del documento pero no modificar el texto ni propiedades como las fuentes asociadas a el.&lt;br /&gt;&lt;br /&gt;Si queremos modificar las propiedades de un área tan solo tenemos que acudir al diálogo que se abre al seleccionar Formato-&gt;Secciones (algo malo debe haber en la traducción al castellano cuando se crean áreas y se gestionan secciones). Allí podemos modificar los mismos parámetros que se nos presenta en la creación.&lt;br /&gt;&lt;br /&gt;Por otra parte siempre podremos saber en qué sección nos encontramos mirando en la barra de estado, en las versiones anteriores a la 3 se encuentra en la esquina inferior derecha y a partir de la versión 3 a la izquierda de los iconos de visualización de páginas.&lt;br /&gt;&lt;br /&gt;Aunque se pueden explicar muchas más cosas sobre el uso de las áreas creo que es mucho mejor, sabiendo lo básico, experimentar en un nuevo documento.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2566488350275079260?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2566488350275079260/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/09/openoffice-reas.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2566488350275079260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2566488350275079260'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/09/openoffice-reas.html' title='OpenOffice - Áreas'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2330484498405598802</id><published>2008-08-21T16:47:00.001+02:00</published><updated>2008-08-21T16:53:55.404+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Propiedades en PHP</title><content type='html'>Si hay algo que identifica a la programación orientada a objetos es la encapsulación de los datos que manejamos. Desde fuera de un objeto no se debe acceder directamente a los datos que maneja dicho objeto. Con esta definición aparece de forma natural el concepto de propiedad.&lt;br /&gt;&lt;br /&gt;Una propiedad es una relación entre un valor y dos métodos para acceder a dicho valor desde fuera del objeto. Con uno de dichos métodos guardamos un nuevo valor y con el otro lo rescatamos. De esta forma se posibilita que el objeto tenga total control sobre lo que se hace con sus datos y se simplifica el acceso a ellos desde el exterior.&lt;br /&gt;&lt;br /&gt;Este concepto se implementa de forma muy sencilla en Python:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;nombre = property (get_Nombre, set_Nombre)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;en C#:&lt;pre&gt;&lt;code&gt;public int nombre&lt;br /&gt;{&lt;br /&gt;   get { return _nombre; }&lt;br /&gt;   set { _nombre = value; }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;o en Pascal:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;property Nombre: String read get_Nombre write set_Nombre;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Aunque se supone que PHP tiene una facilidad parecida no es, ni mucho menos, igual de intuitiva. En PHP cada clase tiene dos métodos mágicos: __set y __get. Estos métodos se llaman cada vez que se intenta acceder a un atributo del que el intérprete de PHP no tiene constancia. Creo que se entenderá mejor con un ejemplo:&lt;br /&gt;&lt;div class="php php"  style="font-family:monospace;"&gt;&lt;ol&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; ejemplo&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad1&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'Propiedad 1'&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad2&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'Propiedad 2'&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; __get &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(177, 177, 0);"&gt;switch&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;            &lt;span style="color: rgb(177, 177, 0);"&gt;case&lt;/span&gt; &lt;span style=""&gt;'p1'&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;:&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;                &lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;propiedad1&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;            &lt;span style="color: rgb(177, 177, 0);"&gt;case&lt;/span&gt; &lt;span style=""&gt;'p2'&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;:&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;                &lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;propiedad2&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; __set &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$valor&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(177, 177, 0);"&gt;switch&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;            &lt;span style="color: rgb(177, 177, 0);"&gt;case&lt;/span&gt; &lt;span style=""&gt;'p1'&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;:&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;                &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;propiedad1&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$valor&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;            &lt;span style="color: rgb(177, 177, 0);"&gt;case&lt;/span&gt; &lt;span style=""&gt;'p2'&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;:&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;                &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;propiedad2&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$valor&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$j&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; ejemplo;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$j&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;p1&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$j&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;p2&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$j&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;p1&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'Hola'&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$j&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;p2&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'mundo'&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;En este ejemplo al intentar acceder a &lt;em&gt;p1&lt;/em&gt; y &lt;em&gt;p2&lt;/em&gt; el interprete buscará en la tabla del objeto &lt;em&gt;ejemplo&lt;/em&gt;. Al no encontrarla llamará a la funcion &lt;em&gt;__set&lt;/em&gt; o &lt;em&gt;__get&lt;/em&gt; con el nombre del atributo al que se intenta acceder. Dentro de esa función podemos hacer lo que consideremos más adecuado.&lt;br /&gt;&lt;br /&gt;Esto nos da una gran libertad y flexibilidad. Sin embargo es un poco tedioso tener que escribir una y otra vez estos dos métodos para cada clase que diseñemos. Sería, desde mi punto de vista, mucho más sencillo escribir algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;private $propiedad1 set setPropiedad1 get getPropiedad1;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Como esto es algo que no creo que se añada en bastante tiempo al lenguaje puedes hacer algo parecido a esto para evitar tener que repetir las mismas funciones una y otra vez.&lt;br /&gt;&lt;div class="php php"  style="font-family:monospace;"&gt;&lt;ol&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; Properties&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; __get &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(177, 177, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/method_exists"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;method_exists&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$metodo&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'get_'&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;.&lt;/span&gt; &lt;a href="http://www.php.net/ucfirst"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ucfirst&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;            &lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$metodo&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; __set &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$valor&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre  style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;font-family:monospace;"&gt;        &lt;span style="color: rgb(177, 177, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/method_exists"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;method_exists&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$metodo&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'set_'&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;.&lt;/span&gt; &lt;a href="http://www.php.net/ucfirst"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ucfirst&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$propiedad&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;            &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$metodo&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$valor&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; Libro &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;extends&lt;/span&gt; Properties&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$titulo&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; set_Titulo &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$titulo&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre face="monospace" style="margin: 0pt; padding: 0pt; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;        &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;titulo&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$titulo&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; get_Titulo &lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;        &lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;titulo&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$libro&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; Libro;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;span style="color: rgb(0, 0, 136);"&gt;$libro&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;titulo&lt;/span&gt; &lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt; &lt;span style=""&gt;'El Silmarillion'&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 136);"&gt;$libro&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 64, 0);"&gt;titulo&lt;/span&gt;;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(252, 252, 252) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre style="margin: 0pt; padding: 0pt; font-family: monospace; font-weight: normal; font-style: normal; -moz-background-clip: inherit; -moz-background-origin: inherit; -moz-background-inline-policy: inherit;"&gt; &lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;De esta forma las clases que precisen tener propiedades tan solo tendrán que heredar de la clase Properties y definir los métodos precisos.&lt;br /&gt;&lt;br /&gt;También puedes añadir una llamada a la función &lt;a href="http://es.php.net/manual/es/function.trigger-error.php"&gt;trigger_error&lt;/a&gt; si no está definida la función. Eso ya es cuestión de necesidades.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2330484498405598802?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2330484498405598802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/08/propiedades-en-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2330484498405598802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2330484498405598802'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/08/propiedades-en-php.html' title='Propiedades en PHP'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-5114696161626322860</id><published>2008-08-19T16:38:00.002+02:00</published><updated>2008-08-19T16:42:50.684+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='novedades'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><title type='text'>Los cables de USB 3</title><content type='html'>Ya he hablado en varias ocasiones del desarrollo de la nueva versión de USB, la 3 (&lt;a href="http://www.pensamientosyrarezas.com/2008/01/usb-3.html"&gt;aquí&lt;/a&gt; y &lt;a href="http://www.pensamientosyrarezas.com/2007/11/usb-3-la-prxima-revolucin.html"&gt;aquí&lt;/a&gt;) así que no voy a volver a contar otra vez todos los pormenores de su desarrollo. En esta ocasión voy a hablar (y a mostraros algunas fotografías) de los cables que acompañarán a los conectores, puesto que sin ellos, claro está, los conectores sirven para poco.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://dl.maximumpc.com/galleries/usb3/usb3_01_sm.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; float: left; cursor: pointer; width: 229px; height: 153px;" src="http://dl.maximumpc.com/galleries/usb3/usb3_01_sm.jpg" alt="" border="0" /&gt;&lt;/a&gt;Los nuevos cables serán muy diferentes a los actuales. Serán más parecidos exteriormente a los cables de red Ethernet. Mientras el cable anterior tenía 4 hilos (dos para datos, uno para corriente y otro para tierra) el nuevo formato añade cinco nuevos hilos.&lt;br /&gt;&lt;br /&gt;Este cable dispone de dos hilos de datos en un sentido y otros dos en otro. Por lo que será mucho más rápido y sencillo, por ejemplo, la sincronización de dispositivos al no tener que cambiar el sentido de los datos una y otra vez.&lt;br /&gt;&lt;br /&gt;Por otra parte la cantidad de energía eléctrica subirá desde los 100 miliamperios a los 900. Lo que posibilitará cargar los dispositivos mucho más rápido así como tener conectados más dispositivos a una misma línea de cables o conectar dispositivos que precisan más carga (menos cables por medio, una buena excusa para justificar la compra de un equipo nuevo ;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://dl.maximumpc.com/galleries/usb3/usb3_06_sm.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; float: right; cursor: pointer; width: 209px; height: 139px;" src="http://dl.maximumpc.com/galleries/usb3/usb3_06_sm.jpg" alt="" border="0" /&gt;&lt;/a&gt;Por último, aunque no menos importante, es que la nueva especificación cambia el protocolo de acceso a dispositivos. En la versión actual el sistema mantenía una cola con los dispositivos conectados e iba comprobando recursivamente si había datos pendientes de cada uno. Esto hacía que los dispositivos gastasen energía cuando no estaban haciendo absolutamente nada. El nuevo protocolo usa interrupciones para que cuando un dispositivo tenga algo que enviar se lo comunique al sistema y este proceda a acceder a los datos.&lt;br /&gt;&lt;br /&gt;En fin, que cada vez se me hace más atractivo este nuevo forma que promete mucho. Supongo que igual que pasó con las versiones anteriores aparecerán nuevos dispositivos que aprovechando las nuevas cualidades nos hagan rascarnos el bolsillo para "disfrutar" de un nuevo mundo de posibilidades.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.maximumpc.com/article/features/everything_you_need_know_about_usb_30_plus_first_spliced_cable_photos"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-5114696161626322860?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/5114696161626322860/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/08/los-cables-de-usb-3.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5114696161626322860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5114696161626322860'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/08/los-cables-de-usb-3.html' title='Los cables de USB 3'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-3978277502815921694</id><published>2008-08-14T17:06:00.005+02:00</published><updated>2010-07-02T10:19:59.233+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='propios'/><title type='text'>NumFolder 1</title><content type='html'>&lt;div style="text-align: justify;"&gt;Hace un tiempo hice una pequeña utilidad para indexar el contenido de una carpeta. Una tontería pero que para ciertos casos puede llegar a ser muy útil.&lt;br /&gt;&lt;br /&gt;La idea inicial era para renombrar las carpetas con cientos de fotos, poder ponerle un nombre delante y numerarlas secuencialmente. Aunque esta tarea se puede hacer con multitud de programas todos ellos te presentan decenas de opciones que para el caso son inútiles y lo único que logran es enlentecer el proceso.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SKRKO9YIW7I/AAAAAAAAA0Q/akMXB5L0eKc/s1600-h/NumFolder.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5234390287765756850" src="http://2.bp.blogspot.com/_FQRIY5VJ4bs/SKRKO9YIW7I/AAAAAAAAA0Q/akMXB5L0eKc/s320/NumFolder.jpg" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;En la imagen podéis ver la única ventana de la que consta. Seleccionas la carpeta a procesar (o desde el explorador pinchas con el botón derecho en una carpeta y seleccionas Enumerar), indicas el número desde el que empezar a enumerar, el incremento entre archivo y archivo, si quieres poner algún texto antes y después y, por último, si quieres que automáticamente rellene la numeración con ceros a la izquierda. Pulsas "Procesar carpeta" y nada más.&lt;br /&gt;&lt;br /&gt;Espero que os pueda ser útil y si tenéis alguna duda o creéis que no estaría mal que tuviese algo más tan solo comentarlo.&lt;br /&gt;&lt;a href="http://webs.ono.com/moisesmarquez/files/NumFolder_1_0.exe"&gt;Bajar NumFolder 1.0&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: #990000; font-weight: bold;"&gt;P.D.&lt;/span&gt; Si alguien quiere usarlo en Linux que me lo pida. Y si lo quiere para Mac ... lo tendrá que compilar el mismo o regalarme uno para que lo haga yo por el :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_FQRIY5VJ4bs/TC2gu5IKdJI/AAAAAAAACWA/SErh7WhSnxY/s1600/1_1_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_FQRIY5VJ4bs/TC2gu5IKdJI/AAAAAAAACWA/SErh7WhSnxY/s320/1_1_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: #999999; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Captura versión 1.1.4 en Linux/KDE&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/numfolder/"&gt;Nueva localización&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-3978277502815921694?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/3978277502815921694/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/08/numfolder-1.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/3978277502815921694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/3978277502815921694'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/08/numfolder-1.html' title='NumFolder 1'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FQRIY5VJ4bs/SKRKO9YIW7I/AAAAAAAAA0Q/akMXB5L0eKc/s72-c/NumFolder.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-1486906657095106862</id><published>2008-08-11T17:21:00.002+02:00</published><updated>2008-08-11T17:25:09.444+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Truco Linux</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Desmontar unidades de CD/DVD que han dejado de responder&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Algo que achacan algunos administradores de servidores Windows es que, en aquel, cuando pulsan el botón de expulsar un CD de la unidad este sale inmediatamente. Linux monta el CD y necesita ser desmontado antes de expulsarse. Esto no es ningún problema hasta que algún proceso se queda colgado y no nos permite la extracción. Para ver como solucionar el problema primero vamos a intentar simularlo. Lo primero que tenemos que hacer es abrir una terminal y escribir lo siguiente:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;code&gt;# mount /media/cdrom&lt;br /&gt;# cd /media/cdrom&lt;br /&gt;# while [ 1 ]; do echo "La unidad está ocupada"; sleep 30; done&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ahora abre una segunda terminal e intenta ejecutar el CD.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# eject&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;debes recibir un mensaje como este:&lt;br /&gt;&lt;pre&gt;umount: /media/cdrom: device is busy&lt;/pre&gt;Antes de que lo intentes liberar prueba esto otro:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# fuser /media/cdrom&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Te mostrará el proceso que está ocupando el recurso y si tienes permisos de root podrás hacer:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# fuser -k /media/cdrom&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;para matar dicho proceso. Ahora podrás expulsar el CD correctamente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-1486906657095106862?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/1486906657095106862/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/08/truco-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1486906657095106862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1486906657095106862'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/08/truco-linux.html' title='Truco Linux'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8342091379862070066</id><published>2008-07-29T12:10:00.002+02:00</published><updated>2008-07-29T12:16:23.475+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Genéricos. Comprendiendo el uso de comodines</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   P { margin-bottom: 0.21cm }   H1 { margin-bottom: 0.21cm }   H1.western { font-family: "Arial", sans-serif; font-size: 16pt }   H1.cjk { font-family: "Lucida Sans Unicode"; font-size: 16pt }   H1.ctl { font-family: "Tahoma"; font-size: 16pt }   H2 { margin-bottom: 0.21cm }   H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic }   H2.cjk { font-family: "Lucida Sans Unicode"; font-size: 14pt; font-style: italic }   H2.ctl { font-family: "Tahoma"; font-size: 14pt; font-style: italic }  --&gt;  &lt;/style&gt;    &lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;Uno de los aspectos más complicados a la hora de programas con genéricos en Java es el uso de los comodines. No solo por entender su funcionamiento sino por los errores que puede lanzar el compilador si no se usan correctamente.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;h2 style="text-align: justify;" class="western"&gt;Introducción a los comodines&lt;/h2&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Los genéricos son una forma de expresar las limitaciones en el comportamiento de una clase o un método ante tipos de datos desconocidos. Algo como “sea cual sea el tipo de los parámetros x e y de este método deben ser del mismo tipo” o “debes usar un parámetro del mismo tipo a estos dos métodos” o “el tipo devuelto por foo() es del mismo tipo que bar()”.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Los genéricos juegan un papel muy importante en el sistema de tipado. Son útiles para limitar el alcance de las familias de tipos especificados por una clase genérica. Para la clase genérica ArrayList el tipo ArrayList es un supertipo de ArrayList&lt;t&gt; para cualquier tipo (referencia) T.&lt;/t&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;El tipo comodín List es diferente del tipo simple List y del tipo concreto List&lt;object&gt;. Decir que una variable x es de tipo List significa que existe algún tipo T para el que x es de tipo List&lt;t&gt; y que x es homogéneo aunque no conozcamos que tipo particular de elementos contiene. No significa que pueda contener cualquier cosa. Solo que no sabemos que limitación de tipo tiene el contenido, solo sabemos que tiene una limitación. Por otra parte el tipo simple List es heterogeneo. No podemos imponer ninguna limitación de tipo a sus elementos. Y el tipo concreto List&lt;object&gt; significa que sabemos explícitamente que contiene un objeto.&lt;/object&gt;&lt;/t&gt;&lt;/object&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Claro está que el sistema de tipos genéricos no tiene ningún concpeto de “el contenido de la lista” pero es más fácil de entender el concepto en términos de colecciones de tipos como List.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;La utilidad de los comodines viene dada en parte del hecho de que los genéricos no son covariantes. Las matrices son covariantes. Porque siendo Integer es un subtipo de Number el tipo de array Integer[] es un subtipo de Number[] y entonces hayá donde se requiera un valor Number[] se puede suministrar un valor Integer[].&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Sin embargo el tipo List&lt;integer&gt; no es un subtipo de List&lt;number&gt;. Si se pide una variable del último y suministramos un List&lt;integer&gt; se producirá un error en tiempo de compilación. Esta diferencia de comportamiento puede llevar a más de una confusión.&lt;/integer&gt;&lt;/number&gt;&lt;/integer&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;" class="western"&gt;¿ Y ahora qué ?&lt;/h2&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;En el listado 1 se puede ver un tipo de contenedor simple (Caja) que soporta las operaciones put y get. Caja está parametrizado para un tipo de dato T que indica el tipo de dato que contiene la caja. Una Caja&lt;sring&gt; solo puede contener elementos de tipo String.&lt;/sring&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Listado 1. Tipo simple genérico Caja&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;public interface Caja&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; public T get();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; public void put(T elemento);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Un beneficio de los comodines es que permite escribir código que puede operar en variables de tipos genéricos sin conocer exactamente las limitaciones del tipo. Por ejemplo, suponiendo que existe una variable de tipo Caja  como la del parámetro caja del método desempacar del listado 2. ¿ Qué hará desempacar() con la caja que se le ha pasado ?&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Listado 2. Método desempacar con un parámetro comodín&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;public void desempacar(Caja caja)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; System.out.println (caja.get ());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;En realidad puede hacer muchas cosas: puede llamar al método get() y a cualquier otro método heredado de Object (como hashCode()). Lo único que no puede hacer es llamar al método put(). Esto es así porque el compilador no puede verificar tal operación sin conocer qué tipo de parámetro T usará esta instancia de Caja.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;¿ Qué sabe desempacar() del valor devuelto por caja.get() ? Sabe que es T para algún T desconocido. Así que lo mejor que puede hacer es concluir que el valor devuelto por get() es el eliminado (N.T. no he encontrado una traducción para la palabra original 'erasure'. Viene a ser la eliminación de la información del tipo genérico) del tipo desconocido T. Que, en el caso de los comodines ilimitados es Object. Así que la expresión caja.get() del listado 2 tendrá como tipo Object.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;" class="western"&gt;Captura de comodines&lt;/h2&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;El listado 3 muestra un código que parece que debe funcionar, pero no lo hace. Toma una Caja genérica, extrae su valor e intenta volver a poner de nuevo el valor en la misma caja.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Listado 3. Una vez que tomas el valor no puedes volver a ponerlo&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;public void reencajar(Caja caja)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; caja.put(caja.get());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;Reencaja.java:8: put(capture#337 of ?) in Caja&lt;capture#337&gt; cannot be applied&lt;/capture#337&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;to (java.lang.Object)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;caja.put(caja.get());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;^&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;1 error&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Este código parece que debería funcionar porque el valor que devuelve es el que ciertamente debería ingresar. Pero en vez de eso el compilador muestra este error tan aclaratorio. ¿ Qué significa un error así ?&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Cuando el compilador encuentra una variable con un comodín en su declaración de tipo, como el parámetro caja, sabe que debe haber alguna T para la cual caja es un Caja&lt;t&gt;. Pero no sabe que tipo representa T. Por eso crea un marco para ese tipo referido al tipo que debe ser T. Ese marco se llama el capture para ese comodín en particular. En este preciso caso el compilador le ha asignado el nombre “capture#337 of ?”. Cada ocurrencia de un comodín en cada declaración de variable recibe un marco diferente. Así que en la declaración de un genérico foo (Pair x, Pair y) el compilador asignará un nombre diferente para cada uno de los 4 comodines porque no hay ninguna relación entre los parámetros de tipos desconocidos.&lt;/t&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Lo que nos dice este mensaje de error es que no podemos llamar a put() porque no se puede verificar que el tipo del parámetro actual a put() es compatible con el tipo de su parámetro formal, porque el tipo de su parámetro formal es desconocido. En este caso porque ? básicamente significa “? extiende Object” el compilador ha dado por sentado que el tipo de caja.get() es Object no “capture#337 of ?”. Y no puede verificar estáticamente que un Object es un valor aceptable para el tipo identificado por el marco “capture#337 of ?”.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;" class="western"&gt;Ayudantes de captura&lt;/h2&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Existe un truco que puede ser usado para hacer que el compilador restituya la información; darle un nombre al tipo de comodín desconocido. En el listado 4 se puede ver una implementación de reencajar junto con un método de ayuda genérico que lleva a cabo el truco:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Listado 4. El idioma del “ayudante de captura”&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;public void reencajar(Caja caja)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; reencajarAyudante (caja);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;private&lt;v&gt; void reencajarAyudante (Caja&lt;v&gt; caja)&lt;/v&gt;&lt;/v&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; caja.put(caja.get());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;El método ayudante es un método genérico. Los métodos genéricos presentan un tipo de parámetro adicional que se coloca entre cuñas antes del tipo devuelto. Normalmente se usan para formular limitaciones de tipos entre los parámetros y/o el valor devuelto del método. En el caso de reencajarAyudante() sin embargo no se usa para especificar una limitación de tipo sino para permitir al compilador (a través de inferencia de tipo) darle un nombre al tipo usado en el parámetro.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Este truco nos permite saltarnos las limitaciones del compilador a la hora de lidiar con los comodines. Cuando reencajar llama a reencajarAyudante sabe que hacerlo es seguro porque su propio parámetro caja debe ser una Caja&lt;t&gt; de algún tipo desconocido T. Como el parámetro V es presentado en la firma del método y no está ligado con ningún otro tipo de parámetro también puede referirse a cualquier tipo desconocido.Así que una Caja&lt;t&gt; de un tipo T desconocido debería servir también como una Caja&lt;v&gt; para un tipo V desconocido. Ahora la expresión caja.get() en reencajarAyudante() no será de tipo Object sino de tipo V. Y está permitido pasar una V a Caja&lt;v&gt;.put().&lt;/v&gt;&lt;/v&gt;&lt;/t&gt;&lt;/t&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Podríamos haber declarado reencajar() como un método genérico desde el primer momento como reencajarAyudante() pero no se considera una buena práctica de diseño. La principal guía de diseño aquí es “no le des un nombre a algo si no te vas a referir nunca a el por su nombre”.  En el caso de los métodos genéricos si un tipo de parámetro aparece únicamente una vez en la firma del método probablemente debería ser un comodín en vez de un parámetro con nombre. En general las APIs con comodines son más simples que aquellas con genéricos. Y la proliferación de nombres de tipos en la declaración de métodos complicados tiende a hacer la declaración menos leíble. Como el nombre siempre puede ser enmascarado dentro de un ayudante si hace falta, se tiene la oportunidad de mantener APIs límpias.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;" class="western"&gt;Inferencia de tipo&lt;/h2&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;El truco de ayudante de tipo depende de varias cosas: la inferencia de tipo y la conversión de métodos capture. El compilador de Java no hace inferencia de tipo en muchos sitios. Pero precisamente uno de ellos es a la hora de inferir el tipo del parámetro de los métodos genéricos. Se puede especificar el valor del tipo del parámetro si se quiere pero solo si se quiere nombrar el tipo. Así que la única forma de que funcione es si el compilador infiere el tipo por si mismo. La conversión de métodos captura es lo que lo permite al compilador crear un marco para el tipo del comodín capturado para que la inferencia de tipo pueda detectarlo.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;El compilador intentará inferir el tipo más específico que pueda cuando resuelva una llamada a un método genérico. Por ejemplo en este método genérico:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;public static&lt;t&gt; T identity(T arg) { return arg };&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;y en esta llamada:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;Integer i = 3;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;System.out.println(identity(i));&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;el compilador inferirá que T es un Integer, un Number, un Serializable o un Object. Pero elegirá Integer porque es el tipo más específico que encaja.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Se puede usar inferencia de tipo para reducir alguna redundancia cuando se crean instancias de genéricos. Por ejemplo usando la clase Caja, creando Caja&lt;string&gt; implica que tienes que especificar el tipo String dos veces:&lt;/string&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;Box&lt;string&gt; box = new BoxImpl&lt;string&gt;();&lt;/string&gt;&lt;/string&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Este violación del principio NTR (No Te Repitas) puede ser un poco aburrida, sobretodo cuando los IDEs son capaces de hacer parte del trabajo. Aunque si la implementación de la clase CajaImpl provee un método de fábrica genérico, como en el listado 5 (que muchas veces es una gran idea), puedes reducir la redundancia en el código cliente:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Listado 5. Método de fábrica genérico&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;public class CajaImpl&lt;t&gt; implements Caja&lt;t&gt;&lt;/t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; public static&lt;v&gt; Caja&lt;v&gt; haz()&lt;/v&gt;&lt;/v&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;  return new CajaImpl&lt;v&gt;();&lt;/v&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt; ...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Courier,monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Si se instancia una Caja usando la factoria CajaImpl.haz() solo se deberá indicar el tipo una vez:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Caja&lt;string&gt; miCaja = CajaImpl.haz();&lt;/string&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Además de evitar teclear más de la cuenta el método de la factoría tiene otras ventajas sobre los constructores. Le puedes dar nombres más descriptivos, pueden devolver subtipos del tipo solicitado y no tienen por qué crear nuevas instancias en cada llamada, posibilitando la compartición de datos entre instancias inmutables.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;" class="western"&gt;Conclusión&lt;/h2&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Los comodines son uno de los trucos que más confusión ocasionan. Desde los crípticos mensajes de error lanzados por el compilador a la especificación del lenguaje Java. Sin embargo si se usan correctamente pueden ser extremadamente poderosos.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;Artículo original por Brian Goetz&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8342091379862070066?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8342091379862070066/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/07/genricos-comprendiendo-el-uso-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8342091379862070066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8342091379862070066'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/07/genricos-comprendiendo-el-uso-de.html' title='Genéricos. Comprendiendo el uso de comodines'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-1412542042848168552</id><published>2008-07-14T10:43:00.008+02:00</published><updated>2008-07-14T12:01:33.436+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Nubes de etiquetas en Blogger</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_FQRIY5VJ4bs/SHsSiGG0h-I/AAAAAAAAAug/1d0HUBIXjnE/s1600-h/platos-comic.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 129px; height: 118px;" src="http://bp1.blogger.com/_FQRIY5VJ4bs/SHsSiGG0h-I/AAAAAAAAAug/1d0HUBIXjnE/s200/platos-comic.jpg" alt="" id="BLOGGER_PHOTO_ID_5222788569830295522" border="0" /&gt;&lt;/a&gt;Algun@s me habéis preguntado varias veces como cambiar la interminable (en ocasiones) y aburrida (la mayoría) lista de etiquetas de los blogs de Google. Aunque es algo que debería incluir por defecto desde hace tiempo el propio blogger tendréis que echar mano de algunos &lt;a href="http://www.tagcloud.com/"&gt;servicios&lt;/a&gt; que te permite hacerlo fácilmente pero dejando el control en manos de otro o bien pringarte un poco y toquetear la plantilla de tu blog.&lt;br /&gt;&lt;br /&gt;Yo me quedo con la segunda. Que es la que os voy a mostrar. Primero debéis aseguraros de tener un widget "&lt;span style="font-style: italic;"&gt;Etiqueta&lt;/span&gt;". Antes de proceder recordad el título que le habéis dado  a ese widget que puede que te haga falta más tarde.&lt;br /&gt;&lt;br /&gt;Los pasos son muy sencillos.&lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Vete a personalizar el diseño del blog.&lt;/li&gt;&lt;li&gt;Abre la pestaña Edición de HTML.&lt;/li&gt;&lt;li&gt;Dentro del código busca "&lt;span style="font-style: italic;font-family:arial;" class="fullpost" &gt;]]&gt;&amp;lt;/b:skin&gt;&lt;/span&gt;".&lt;/li&gt;&lt;li&gt;Antes de dicha etiqueta pega este código:&lt;code&gt;&lt;br /&gt;/* CSS Tag Nube de etiquetas */&lt;br /&gt;&lt;br /&gt;#labelCloud {text-align:center;font-family:arial,sans-serif;}&lt;br /&gt;#labelCloud .label-cloud li{display:inline;background-image:none&lt;br /&gt;!important;padding:0 5px;margin:0;vertical-align:baseline&lt;br /&gt;!important;border:0 !important;}&lt;br /&gt;#labelCloud ul{list-style-type:none;margin:0 auto;padding:0;}&lt;br /&gt;#labelCloud a img{border:0;display:inline;margin:0 0 0&lt;br /&gt;3px;padding:0}&lt;br /&gt;#labelCloud a{text-decoration:none}&lt;br /&gt;#labelCloud a:hover{text-decoration:underline}&lt;br /&gt;#labelCloud li a{}&lt;br /&gt;#labelCloud .label-cloud {}&lt;br /&gt;#labelCloud .label-count&lt;br /&gt;{padding-left:0.2em;font-size:9px;color:#000}&lt;br /&gt;#labelCloud .label-cloud li:before{content:"" !important}&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Justo después de la etiqueta que os he dicho antes aparecerá "&lt;span style="font-style: italic;font-family:arial;" &gt;&amp;lt;/head&gt;&lt;/span&gt;". Entre ambas debes insertar este otro código:&lt;br /&gt;&lt;code&gt;&amp;lt;script type='text/javascript'&gt;&lt;br /&gt;// Variable para la nube de etiquetas&lt;br /&gt;var lcBlogURL = 'http://URL DEL BLOG';&lt;br /&gt;var maxFontSize = 20;&lt;br /&gt;var maxColor = [0,0,255];&lt;br /&gt;var minFontSize = 10;&lt;br /&gt;var minColor = [0,0,0];&lt;br /&gt;var lcShowCount = false;&lt;br /&gt;&amp;lt;/script&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Sustituyendo la línea que pone URL DEL BLOG por el nombre de tu página. En mi caso geekbinario.blogspot.com&lt;/li&gt;&lt;li&gt;En este paso deberás echar mano del nombre que le pusiste al widget. Posiblemente sea 'Etiquetas' pero ... Búscalo hasta que te aparezca una línea parecida a esta:&lt;br /&gt;&lt;code&gt;&amp;lt;b:widget id='Label1' locked='false' title='Etiquetas' type='Label'/&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Selecciona toda la línea y sustitúyela por todo esto:&lt;br /&gt;&lt;code&gt;&amp;lt;b:widget id='Label1' locked='false' title='Nube de etiquetas' type='Label'&gt;&lt;br /&gt;&amp;lt;b:includable id='main'&gt;&lt;br /&gt;&amp;lt;b:if cond='data:title'&gt;&lt;br /&gt;&amp;lt;h2&gt;&amp;lt;data:title/&gt;&amp;lt;/h2&gt;&lt;br /&gt;&amp;lt;/b:if&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class='widget-content'&gt;&lt;br /&gt;&amp;lt;div id='labelCloud'/&gt;&lt;br /&gt;&amp;lt;script type='text/javascript'&gt;&lt;br /&gt;&lt;br /&gt;// Don't change anything past this point -----------------&lt;br /&gt;function s(a,b,i,x){&lt;br /&gt;if(a&amp;amp;gt;b){&lt;br /&gt;var m=(a-b)/Math.log(x),v=a-Math.floor(Math.log(i)*m)&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;var m=(b-a)/Math.log(x),v=Math.floor(Math.log(i)*m+a)&lt;br /&gt;}&lt;br /&gt;return v&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var ta=0&lt;br /&gt;var c=[];&lt;br /&gt;var labelCount = new Array();&lt;br /&gt;var ts = new Object;&lt;br /&gt;&amp;lt;b:loop values='data:labels' var='label'&gt;&lt;br /&gt;var theName = &amp;amp;quot;&amp;lt;data:label.name/&gt;&amp;amp;quot;;&lt;br /&gt;ts[theName] = &amp;lt;data:label.count/&gt;;&lt;br /&gt;&amp;lt;/b:loop&gt;&lt;br /&gt;&lt;br /&gt;for (t in ts){&lt;br /&gt;if (!labelCount[ts[t]]){&lt;br /&gt;labelCount[ts[t]] = new Array(ts[t])&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;tz = labelCount.length-1;&lt;br /&gt;lc2 = document.getElementById('labelCloud');&lt;br /&gt;ul = document.createElement('ul');&lt;br /&gt;ul.className = 'label-cloud';&lt;br /&gt;for(var t in ts){&lt;br /&gt;for (var i=0;3 &amp;amp;gt; i;i++) {&lt;br /&gt;c[i]=s(minColor[i],maxColor[i],ts[t]-ta,tz)&lt;br /&gt;}&lt;br /&gt;var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz);&lt;br /&gt;li = document.createElement('li');&lt;br /&gt;li.style.fontSize = fs+'px';&lt;br /&gt;li.style.lineHeight = '1';&lt;br /&gt;a = document.createElement('a');&lt;br /&gt;a.title = ts[t]+' Posts in '+t;&lt;br /&gt;a.style.color = 'rgb('+c[0]+','+c[1]+','+c[2]+')';&lt;br /&gt;a.href = lcBlogURL+'/search/label/'+encodeURIComponent(t);&lt;br /&gt;if (lcShowCount){&lt;br /&gt;span = document.createElement('span');&lt;br /&gt;span.innerHTML = '('+ts[t]+') ';&lt;br /&gt;span.className = 'label-count';&lt;br /&gt;a.appendChild(document.createTextNode(t));&lt;br /&gt;li.appendChild(a);&lt;br /&gt;li.appendChild(span);&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;a.appendChild(document.createTextNode(t));&lt;br /&gt;li.appendChild(a);&lt;br /&gt;}&lt;br /&gt;ul.appendChild(li);&lt;br /&gt;abnk = document.createTextNode(' ');&lt;br /&gt;ul.appendChild(abnk);&lt;br /&gt;}&lt;br /&gt;lc2.appendChild(ul);&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;noscript&gt;&lt;br /&gt;&amp;lt;ul&gt;&lt;br /&gt;&amp;lt;b:loop values='data:labels' var='label'&gt;&lt;br /&gt;&amp;lt;li&gt;&lt;br /&gt;&amp;lt;b:if cond='data:blog.url == data:label.url'&gt;&lt;br /&gt;&amp;lt;data:label.name/&gt;&lt;br /&gt;&amp;lt;b:else/&gt;&lt;br /&gt;&amp;lt;a expr:href='data:label.url'&gt;&amp;lt;data:label.name/&gt;&amp;lt;/a&gt;&lt;br /&gt;&amp;lt;/b:if&gt;&lt;br /&gt;(&amp;lt;data:label.count/&gt;)&lt;br /&gt;&amp;lt;/li&gt;&lt;br /&gt;&amp;lt;/b:loop&gt;&lt;br /&gt;&amp;lt;/ul&gt;&lt;br /&gt;&amp;lt;/noscript&gt;&lt;br /&gt;&amp;lt;b:include name='quickedit'/&gt;&lt;br /&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/b:includable&gt;&lt;br /&gt;&amp;lt;/b:widget&gt;&lt;/data:label.name&gt;&lt;/data:title&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ahora dale al botón "&lt;span style="font-family: arial; font-style: italic;"&gt;Vista previa&lt;/span&gt;". Comprueba si el resultado es el que esperabas.&lt;/li&gt;&lt;li&gt;Si todo está correcto dale a "&lt;span style="font-family: arial; font-style: italic;"&gt;Guardar plantilla&lt;/span&gt;". De lo contrario, comprueba los pasos por si te has equivocado :)&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-1412542042848168552?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/1412542042848168552/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/07/nubes-de-etiquetas-en-blogger.html#comment-form' title='15 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1412542042848168552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/1412542042848168552'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/07/nubes-de-etiquetas-en-blogger.html' title='Nubes de etiquetas en Blogger'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_FQRIY5VJ4bs/SHsSiGG0h-I/AAAAAAAAAug/1d0HUBIXjnE/s72-c/platos-comic.jpg' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-2755958347572319213</id><published>2008-06-30T22:25:00.001+02:00</published><updated>2009-10-02T21:16:06.004+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Tablas movibles y ordenables</title><content type='html'>&lt;script src="http://pages.pensamientosyrarezas.com-a.googlepages.com/dragtable.js"&gt;&lt;/script&gt;&lt;script src="http://pages.pensamientosyrarezas.com-a.googlepages.com/sorttable.js"&gt;&lt;/script&gt;&lt;p&gt;Si tenéis páginas con tablas donde se presentan multitud de datos seguro que os habréis preguntado cómo se podrían ordenar los resultados como en algunas aplicaciones de escritorio. O mejor aún colocar las columnas como mejor te vengan para visualizar mejor los datos.&lt;/p&gt;&lt;p&gt;Los dos scripts que os presento hacen precisamente eso de una forma muy fácil. Tan solo necesitas incluir en la cabecera de la página los scripts y añadir la definición de la clase.&lt;/p&gt;&lt;p&gt;Con eso tendrías una tabla como la siguiente:&lt;/p&gt;&lt;table class="draggable sortable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Nombre&lt;/th&gt;&lt;th&gt;Teléfono&lt;/th&gt;&lt;th&gt;Fecha ingreso&lt;/th&gt;&lt;th&gt;Sueldo&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;José González&lt;/td&gt;&lt;td&gt;67890&lt;/td&gt;&lt;td&gt;12/10/2007&lt;/td&gt;&lt;td&gt;1500&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Francisco García&lt;/td&gt;&lt;td&gt;67689&lt;/td&gt;&lt;td&gt;1/1/2006&lt;/td&gt;&lt;td&gt;1120&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Alejandra Domínguez&lt;/td&gt;&lt;td&gt;67639&lt;/td&gt;&lt;td&gt;4/3/2004&lt;/td&gt;&lt;td&gt;1800&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Si pinchas en una columna la tabla se ordenará de acuerdo a esta columna. Si la arrastras podrás llevarla a la posición que necesites.&lt;/p&gt;&lt;p&gt;Como he dicho antes tan solo debes incluir el script necesario para ordenar (&lt;a href="http://pages.pensamientosyrarezas.com-a.googlepages.com/sorttable.js"&gt;sorttable.js&lt;/a&gt;) y el correspondiente para mover (&lt;a href="http://pages.pensamientosyrarezas.com-a.googlepages.com/dragtable.js"&gt;dragtable.js&lt;/a&gt;). Para que funcione debes incluir este código en la cabecera:&lt;/p&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script src="dragtable.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script src="sorttable.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Y a la tabla que queramos añadirle estas funciones le pondremos como clase &lt;em&gt;draggable&lt;/em&gt; o &lt;em&gt;sortable&lt;/em&gt; según nos convenga. Si, como en este ejemplo, queremos que pueda hacer las dos cosas tendremos que ponerlo de esta forma:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt; &amp;lt;table class="draggable sortable"&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-2755958347572319213?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/2755958347572319213/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/06/tablas-movibles-y-ordenables.html#comment-form' title='11 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2755958347572319213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/2755958347572319213'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/06/tablas-movibles-y-ordenables.html' title='Tablas movibles y ordenables'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-3927584032341570395</id><published>2008-06-29T11:32:00.000+02:00</published><updated>2008-07-11T11:33:45.313+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Teclas rápidas para OpenOffice</title><content type='html'>&lt;div style="text-align: justify;"&gt;El hecho de conocer algunas teclas rápidas para las aplicaciones que más utilizas es una gran ventaja que te puede facilitar el trabajo con ella y hacerte mucho más eficiente. Si sueles escribir mucho con Writer hay algunas pocas teclas fáciles de recordar que te vendrán como anillo al dedo.&lt;br /&gt;&lt;br /&gt;Si estás habituado a usar el teclado algunas de estas teclas las conocerás ya. Y otras las doy ya por supuestas, como &lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + S&lt;/span&gt; para guardar un documento. Y sin enrollarme más paso a describiros estas teclas categorizadas según su función.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Moverse alrededor del documento&lt;/span&gt;&lt;br /&gt;Estas son, a mi juicio, las teclas más fáciles y conocidas. Sin embargo puede que alguien no las conozca así que las pongo de todas formas.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Inicio&lt;/span&gt; Mueve el cursor al inicio de la línea&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Fin&lt;/span&gt; Mueve el cursor al final de la línea&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + Inicio&lt;/span&gt; Mueve el cursor al inicio del documento&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + Fin&lt;/span&gt; Mueve el cursor al final del documento&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + Izquierda/Derecha&lt;/span&gt; Moverse atrás o adelante una palabra&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Seleccionar sin usar el ratón&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Si tienes pulsada la tecla &lt;span style="font-weight: bold;font-family:courier new;" &gt;Shift&lt;/span&gt; mientras te mueves por el texto este se seleccionará.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Shift + Inicio&lt;/span&gt; Selecciona desde el carácter actual hasta el inicio de la línea&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Shift + Fin&lt;/span&gt; Selecciona desde el carácter actual hasta el final de la línea&lt;/li&gt;&lt;li&gt;Con una línea seleccionada &lt;span style="font-weight: bold;font-family:courier new;" &gt;Shift+ Arriba/Abajo&lt;/span&gt; selecciona las líneas de arriba/abajo.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + Shift + Inicio&lt;/span&gt; Selecciona desde el carácter actual al principio del documento&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Ctrl + Shift + Fin&lt;/span&gt; Selecciona desde el carácter actual al final del documento&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Mover párrafos&lt;/span&gt;&lt;br /&gt;Si alguna vez después de escribir un párrafo has pensado que estaría mejor en otro lugar del documento la primera forma que suele venirse a la cabeza es la de cortarlo y pegarlo en el lugar donde se quiera. Sin embargo hay una forma más rápida, mover el párrafo por el documento. Tan solo hay que seguir estos sencillos pasos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Coloca el cursor en el párrafo.&lt;/li&gt;&lt;li&gt;Usa las teclas &lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + Alt + arriba/abajo&lt;/span&gt; para mover el párrafo completo.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Cambiar alineación del párrafo&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + L&lt;/span&gt; Alinear párrafo a la izquierda&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + R&lt;/span&gt; Alinear párrafo a la derecha&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + E&lt;/span&gt; Alinear párrafo al centro&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + J&lt;/span&gt; Justificar el párrafo&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Insertar una página nueva&lt;/span&gt;&lt;br /&gt;Gracias al trabajo que tengo veo muchos documentos en los que para escribir en la siguiente página simplemente van pulsando Enter hasta llegar al final de la página. Un método válido, pero poco recomendable. Puesto que si otro día tienes que poner nuevo contenido en el documento y se te olvida borrar las líneas que insertaste se te estropeará el documento. Además es más sencillo pulsar &lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + Enter&lt;/span&gt; una vez para pasar a la página nueva que pulsar ... 10 veces Enter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Aplicar estilos y formatos&lt;/span&gt;&lt;br /&gt;Los estilos son muy importantes a la hora de escribir textos en Writer. Aunque existen en otros procesadores de textos en Writer se le da mucha más importancia por facilitar la edición de documentos. Para aprovecharlos mejor podemos usar estas teclas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + 1&lt;/span&gt; Aplicar estilo &lt;span style="font-style: italic;"&gt;Encabezado 1&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + 2&lt;/span&gt; Aplicar estilo &lt;span style="font-style: italic;"&gt;Encabezado 2&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + 3&lt;/span&gt; Aplicar estilo &lt;span style="font-style: italic;"&gt;Encabezado 3&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + 0&lt;/span&gt; Aplicar estilo Predeterminado.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Ctrl + 5&lt;/span&gt; Establecer el interlineado a 1,5.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;Aplicando niveles en las listas&lt;/span&gt;&lt;br /&gt;Cuando estás haciendo una lista y quieres indentar un nivel hacia dentro es tan fácil como pulsar la tecla &lt;span style="font-weight: bold; font-family: courier new;"&gt;Tab&lt;/span&gt;. Pero ¿ cómo vuelves al nivel anterior ? Un ejemplo:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Elemento 1&lt;/li&gt;&lt;li&gt;Elemento 2&lt;ol&gt;&lt;li&gt;Elemento 2.1&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Elemento 3&lt;/li&gt;&lt;/ol&gt;Si una vez escrito el elemento 2.1 quieres insertar el 3 y pulsas la tecla borrar quitará el modo de de lista. Así que la tecla que tendrás que utilizar es la de aumentar el nivel (&lt;span style="font-family: courier new; font-weight: bold;"&gt;Shift + Tab&lt;/span&gt;) que te servirá para subir el nivel de un elemento cualquiera de la lista. Incluso después de haberlo escrito.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;Insertar un elemento no numerado en una lista numerada&lt;/span&gt;&lt;br /&gt;Si dentro de una lista numerada quieres escribir un texto que desarrolle ese punto tendrás que usar la combinación &lt;span style="font-family: courier new; font-weight: bold;"&gt;Alt + Enter&lt;/span&gt;. Esto te creará el párrafo sin estropear la numeración del resto de elementos. Recuerda que si quieres añadir más párrafos tienes que seguir utilizando la misma combinación. En cuanto pulses únicamente la tecla &lt;span style="font-family: courier new; font-weight: bold;"&gt;Enter&lt;/span&gt; te insertará un nuevo elemento de la lista.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;Superíndice y subíndice&lt;/span&gt;&lt;br /&gt;Si tienes que escribir textos que requieran utilizar super y subíndices te serán muy útiles estas otras combinaciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;Ctrl + Shift + P&lt;/span&gt; Pone/quita el modo superíndice&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;Ctrl + Shift + B&lt;/span&gt; Pone/quita el modo subíndice&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;Mover objetos e imágenes&lt;/span&gt;&lt;br /&gt;Si quieres mover con mayor precisión los objetos (imágenes, dibujos, etc) por la pantalla que usando el ratón tan solo debes usar las teclas &lt;span style="font-weight: bold; font-family: courier new;"&gt;Alt + teclas movimiento&lt;/span&gt;. Aunque no las uses mucho verás como te son útiles cuando llegue el momento de usarlas.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-3927584032341570395?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/3927584032341570395/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/06/teclas-rpidas-para-openoffice.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/3927584032341570395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/3927584032341570395'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/06/teclas-rpidas-para-openoffice.html' title='Teclas rápidas para OpenOffice'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-8480617463232893546</id><published>2008-06-20T11:26:00.000+02:00</published><updated>2008-07-11T11:31:09.246+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='actualidad'/><title type='text'>Por fin se han dado cuenta</title><content type='html'>&lt;div style="text-align: justify;"&gt;Stuart McKee es un trabajador de Microsoft encargado de gestionar las relaciones de la empresa con todo el sistema público americano. Hace poco tuvo unos minutos en una conferencia de Red Hat en Boston. Y digo algo así:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;quote&gt;"ODF ha ganado cláramente. Nosotros vendemos software para la vida (traducción literal, no estoy seguro qué quiso decir aquí). No fue posible implementar el manejo de ODF en mitad de nuestro ciclo de desarrollo. No pudimos hacerlo durante el desarrollo de Office 2007. Ahora estamos mirando adelante e intentamos hacer algo más que un traductor (de ODF a OOXML)."&lt;/quote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;En otras palabras. Parece que al menos uno de los directivos de Microsoft ha dado la victoria en el campo de los formatos ofimáticos al utilizado (entre otros) por la suite ofimática gratuita OpenOffice. Se supone que durante el año 2009 aparecerá un Service Pack para Office 2007 en el que se incluirá de forma nativa el soporte para ODF. De esta forma podremos leer y escribir directamente en este formato. ¿ Será bastante para cortar el crecimiento de OpenOffice ?&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://osnews.com/story/19893/Microsoft-ODF-Has-Clearly-Won"&gt;Página original&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-8480617463232893546?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/8480617463232893546/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/06/por-fin-se-han-dado-cuenta.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8480617463232893546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/8480617463232893546'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/06/por-fin-se-han-dado-cuenta.html' title='Por fin se han dado cuenta'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-6271050252464624874</id><published>2008-04-28T12:15:00.000+02:00</published><updated>2010-03-01T12:18:40.860+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Apache, Windows Server y Firefox</title><content type='html'>&lt;div style="text-align: justify;"&gt;Si hay un problema que se presenta una y otra vez al hacer páginas webs para las Intranets corporativas ese es la validación de usuarios. Mantener una base de datos diferente para cada aplicación diseñada es una tortura. Mantener una tabla de usuarios para un tipo de aplicaciones un suplicio. Sobretodo para los usuarios que, una y otra vez, tienen que recordar y cambiar más y más claves. Lo que provoca múltiples puntos de perdida de seguridad. Es fácil ver notitas con las claves de entrada a las aplicaciones que tanto trabajo nos ha costado asegurar.&lt;br /&gt;&lt;br /&gt;Sin embargo, ¿ para que mantener una tabla con los usuarios si ya tienen que validarse cada vez que acceden al ordenador ? Si el Sistema Operativo ya tiene un servicio de gestión de usuarios ¿ para qué reinventar la rueda ?&lt;br /&gt;&lt;br /&gt;En redes con servidores Windows podemos solucionar fácilmente el problema usando las características de autenticación a través de los módulos SSPI. Con este módulo permitimos que Apache realize la validación usando los módulos de seguridad proporcionados por Windows Server. Para ponerlo en marcha debemos añadir estas líneas al archivo de configuración de Apache:&lt;/div&gt;&lt;pre&gt;&lt;code&gt;LoadModule sspi_auth_module modules/mod_auth_sspi.so&lt;br /&gt;&amp;lt;ifmodule c=""&gt;&lt;br /&gt;&amp;lt;location protected=""&gt;&lt;br /&gt;AuthName "A Protected Place"&lt;br /&gt;AuthType SSPI&lt;br /&gt;SSPIAuth On&lt;br /&gt;SSPIAuthoritative On&lt;br /&gt;SSPIOfferBasic On&lt;br /&gt;require valid-user&lt;br /&gt;&amp;lt;/location&gt;&lt;br /&gt;&amp;lt;/ifmodule&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Una vez realizado esto y reiniciado nuestro servidor podremos obtener el nombre del usuario usando estos métodos desde PHP:&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;if (isset($_SERVER['REMOTE_USER']))&lt;br /&gt;{&lt;br /&gt;// REMOTE_USER está formado por&lt;br /&gt;// dominio\usuario&lt;br /&gt;$usuario = substr (strrchr ($_SERVER['REMOTE_USER'],&lt;br /&gt;'\\'), 1);&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Con esto no podrá entrar al servidor quien no esté logueado en dicha máquina. Con esta solución desde Internet Explorer la entrada para el usuario será transparente. Sin embargo, desde Firefox verá que le pide un usuario y una contraseña. Como será difícil explicarle por qué tiene que volver a meter la misma contraseña que al principio será mejor configurarle Firefox para que entre directamente igual que hace Explorer. Para eso abrimos la configuración de Firefox con&lt;/div&gt;&lt;code&gt;about:config&lt;/code&gt;&lt;div style="text-align: justify;"&gt;Y buscamos esta línea para cambiar:&lt;br /&gt;&lt;/div&gt;&lt;code&gt;network.automatic-ntlm-auth.trusted-uris&lt;/code&gt;&lt;div style="text-align: justify;"&gt;Donde pondremos la dirección del servidor con el que tiene que hacer la validación. Y ¡ voilá ! Un problema menos.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-6271050252464624874?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/6271050252464624874/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/04/apache-windows-server-y-firefox.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6271050252464624874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/6271050252464624874'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/04/apache-windows-server-y-firefox.html' title='Apache, Windows Server y Firefox'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-5115355368224714912</id><published>2008-04-08T12:18:00.000+02:00</published><updated>2010-03-01T12:22:55.271+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Embellecer un formulario con CSS</title><content type='html'>Esta entrada está dedicada a todos aquellos que alguna vez hayáis creado un formulario en una página web y no os haya gustado el aspecto que se le queda. También para todos aquellos acostumbrados a realizar un formulario usando tablas y quieran conocer una nueva forma de hacerlo mucho más accesible.&lt;br /&gt;&lt;br /&gt;Un formulario usando una tabla podría quedar así:&lt;br /&gt;&lt;form&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Nombre&lt;/td&gt;&lt;input type="text"&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Apellidos&lt;/td&gt;&lt;input type="text"&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;input type="submit"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/form&gt;&lt;br /&gt;Aunque puede parecer una forma como otra cualquiera de crear un formulario a mi personalmente me parece un poco fea. Además a una persona ciega le costaría bastante entender ese galimatías (sino probad un lector de páginas web y veréis).&lt;br /&gt;&lt;br /&gt;La forma más aconsejable es diseñar el formulario como lo es, una lista de datos que solicitamos para un fin específico. Por eso, lo primero es hacer eso, una lista.&lt;br /&gt;&lt;br /&gt;&lt;form&gt;&lt;label for="edNombre"&gt;Nombre&lt;/label&gt;&lt;input name="edNombre" type="text"&gt;&lt;br /&gt;&lt;label for="edApellido"&gt;Apellido&lt;/label&gt;&lt;input name="edApellido" type="text"&gt;&lt;/form&gt;&lt;br /&gt;Usando este código:&lt;br /&gt;&lt;code&gt;&amp;lt;form&gt;&lt;br /&gt;&amp;lt;label for="edNombre"&gt;Nombre&amp;lt;/label&gt;&amp;lt;input type="text" name="edNombre"/&gt;&amp;lt;br/&gt;&lt;br /&gt;&amp;lt;label for="edApellido"&gt;Apellido&amp;lt;/label&gt;&amp;lt;input type="text" name="edApellido"/&gt;&amp;lt;br/&gt;&lt;br /&gt;&amp;lt;/form&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ahora solo hace falta añadirle un poco de estilo para embellecerlo:&lt;br /&gt;&lt;br /&gt;&lt;form&gt;&lt;label style="display: block; width: 10em; font-family: Arial; float: left;" for="edNombre"&gt;Nombre&lt;/label&gt;&lt;input style="border: 1px solid rgb(60, 60, 60); background: rgb(218, 237, 163) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-bottom: 3px;" name="edNombre" type="text"&gt;&lt;br /&gt;&lt;label style="display: block; width: 10em; font-family: Arial; float: left;" for="edApellido"&gt;Apellido&lt;/label&gt;&lt;input style="border: 1px solid rgb(60, 60, 60); background: rgb(218, 237, 163) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-bottom: 3px;" name="edApellido" type="text"&gt;&lt;br /&gt;&lt;input style="border: 1px solid rgb(60, 60, 60); background: rgb(134, 189, 22) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: white;" value="Enviar" type="button"&gt;&lt;/form&gt;&lt;br /&gt;Usando un CSS como este:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;.etiquetas {display:block;width:10em;font-family:Arial;float:left;]&lt;br /&gt;.edicion {background:#daeda3;border:1px solid #3c3c3c;margin-bottom:3px;}&lt;br /&gt;.boton {background:#86BD16;border:1px solid #3c3c3c;color:white;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Al mostrar las etiquetas con un ancho fijo y fijándolas a la izquierda damos el mismo efecto que logramos con las tablas añadiendo además un toque personal a cada formulario. Si probáis este otro ejemplo con un lector de voz veréis como es mucho más fácil de entender que el anterior.&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;También puedes hacer que cambien las propiedades de un objeto respondiendo a una acción del usuario. Si quieres, por ejemplo, que cuando el usuario entre en un campo de edición este cambie el color del fondo a blanco tan solo deberías añadir esta pequeña línea al código anterior:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;.edicion:focus {background:white}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Sencillo ¿ no ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Nota:&lt;/span&gt; Esto pretende ser un ejemplo muy corto de lo que se puede hacer con un formulario y CSS. Si tienes alguna duda o queja, deja un comentario.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-5115355368224714912?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/5115355368224714912/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2008/04/embellecer-un-formulario-con-css.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5115355368224714912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/5115355368224714912'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2008/04/embellecer-un-formulario-con-css.html' title='Embellecer un formulario con CSS'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-530956058278518261</id><published>2007-11-28T11:00:00.000+01:00</published><updated>2008-07-11T11:02:26.337+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Tutorial de Python: Parte 2 de 2</title><content type='html'>&lt;div style="border-bottom: 1px solid rgb(60, 60, 60); text-align: right;"&gt;&lt;a href="http://www.pensamientosyrarezas.com/2007/11/tutorial-de-python-parte-1-de-2.html"&gt;Parte 1 de 2&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;h2&gt;Sentencias de control de flujo&lt;/h2&gt;  &lt;p&gt;Las sentencias de control de flujo son &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;if&lt;/code&gt; y &lt;code&gt;for&lt;/code&gt;. No existe el &lt;code&gt;select&lt;/code&gt;, en vez de eso se usa &lt;code&gt;if&lt;/code&gt;. Para enumerar los miembros de una lista se usa &lt;code&gt;for&lt;/code&gt;. Y para obtener una lista de números se utiliza &lt;code&gt;range&lt;/code&gt;(). La síntaxis de esta sentencia es así:&lt;br /&gt;&lt;/p&gt;     &lt;div class="codeblock"&gt;&lt;pre class="python"&gt;lstRange = &lt;span style="color: rgb(0, 128, 0);"&gt;range&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; lstRange&lt;br /&gt;&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;0&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;4&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;5&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;6&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;7&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;8&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;9&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; intNumero &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; lstRange:&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Comprobar si intNumero es uno&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# de los números en la lista.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; intNumber &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;4&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;7&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;9&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# "Break" finaliza un for sin&lt;/i&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# ejecutar la clausula "else".&lt;/i&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;:&lt;br /&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# "Continue" sigue con la siguiente iteración&lt;/i&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# del bucle. Aquí no sirve para nada&lt;/i&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# ya que es la última sentencia del bucle.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;continue&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# La clausula "else" es opcional y se ejecuta solo&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# si el bucle no encuentra un "break".&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;pass&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Hacer algo&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; lstRange&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt; == &lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(72, 61, 139);"&gt;"El segundo elemento (las listas empiezan en 0) es 2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;elif&lt;/b&gt;&lt;/span&gt; lstRange&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt; == &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(72, 61, 139);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(72, 61, 139);"&gt;El segundo elemento (las listas empiezan en 0) es 3"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(72, 61, 139);"&gt;"No lo he encontrdo"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt; lstRange&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt; == &lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;pass&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;Funciones&lt;/h2&gt;  &lt;p&gt;Las funciones se &lt;span style="background-color: rgb(255, 255, 153);"&gt;declaran con la palabra clave "def"&lt;/span&gt;. Los argumentos opcionales se colocan en la declaración de la función después de los argumentos obligatorios asignándoles un valor por defecto. También se pueden llamar a parámetros por su nombre, indicando el valor que van a tener. Las funciones pueden devolver una tupla (y desempaquetando la tupla puedes devolver múltiples valores). Las &lt;span style="background-color: rgb(255, 255, 153);"&gt;funciones lambda&lt;/span&gt; son un tipo especial de función que solo están compuestas por una instrucción. Los parámetros son pasados &lt;span style="background-color: rgb(255, 255, 153);"&gt;por referencia&lt;/span&gt;. Pero los tipos de datos modificables (tuplas, listas, enteros, cadenas, etc) no pueden cambiarse. Por ejemplo:&lt;/p&gt;&lt;div class="codeblock"&gt;&lt;pre class="python"&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# arg2 y arg3 son opcionales. Tienen valores por defecto&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# si uno no se pasa (100 y "prueba" respectivamente).&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; fnMiFuncion&lt;span style="color:black;"&gt;(&lt;/span&gt;arg1, arg2 = &lt;span style="color: rgb(255, 69, 0);"&gt;100&lt;/span&gt;, arg3 = &lt;span style="color: rgb(72, 61, 139);"&gt;"prueba"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; arg3, arg2, arg1&lt;br /&gt;&lt;br /&gt;ret1, ret2, ret3 = fnMiFuncion&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(72, 61, 139);"&gt;"Argumento 1"&lt;/span&gt;, arg3 = &lt;span style="color: rgb(72, 61, 139);"&gt;"argumento con nombre"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;fnVariable = &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;lambda&lt;/b&gt;&lt;/span&gt; x: x + &lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; fnVariable&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;Clases&lt;/h2&gt;  &lt;p&gt;Python soporta una forma limitada de &lt;span style="background-color: rgb(255, 255, 153);"&gt;herencia múltiple&lt;/span&gt; en las clases. Se pueden declarar &lt;span style="background-color: rgb(255, 255, 153);"&gt;variables y métodos privados&lt;/span&gt; (por convención, el lenguaje no obliga a hacerlo) añadiendo al menos dos subrayados en el nombre (p.e. "__spam"). También se pueden asignar &lt;span style="background-color: rgb(255, 255, 153);"&gt;variables arbitrarias&lt;/span&gt; a las instancias de la clase. Por ejemplo:&lt;br /&gt;&lt;/p&gt;&lt;div class="codeblock"&gt;&lt;pre class="python"&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; MiClase:&lt;br /&gt;varComun = &lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 205);"&gt;__init__&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;.&lt;span style="color:black;"&gt;varMiVariable&lt;/span&gt; = &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; fnMiFuncion&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;, arg1, arg2&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;.&lt;span style="color:black;"&gt;varMiVariable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esta es la instanciación de la clase&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia = MiClase&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color:black;"&gt;fnMiFuncion&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esta variable está compartida por tadas las clases&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia2 = MiClase&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia2.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Fíjate cómo se usa el nombre de la clase&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# en vez del de la instancia.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; MiClase.&lt;span style="color:black;"&gt;varComun&lt;/span&gt; = &lt;span style="color: rgb(255, 69, 0);"&gt;30&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;30&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia2.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;30&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esto no actualizará la variable en la clase,&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# sino que creará una nueva en la instancia&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# de la clase y le asignará el valor.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color:black;"&gt;varComun&lt;/span&gt; = &lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia2.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;30&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; MiClase.&lt;span style="color:black;"&gt;varComun&lt;/span&gt; = &lt;span style="color: rgb(255, 69, 0);"&gt;50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esto no cambia, porque varComun es&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# ahora una variable de la instancia.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia2.&lt;span style="color:black;"&gt;varComun&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;50&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esta clase hereda de MiClase. La herencia múltiple&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# se declara como:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# class OtraClase(MiClase1, MiClase2, MiClaseN)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; OtraClase&lt;span style="color:black;"&gt;(&lt;/span&gt;MiClase&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 205);"&gt;__init__&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;, arg1&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;.&lt;span style="color:black;"&gt;varMiVariable&lt;/span&gt; = &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; arg1&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia = OtraClase&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(72, 61, 139);"&gt;"hola"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;hola&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color:black;"&gt;fnMiFuncion&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esta clase no tiene un miebro llamado prueba.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Pero podemos añadírselo de todas formas.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Date cuenta que solo será un miembro de clsInstancia.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span&gt;&lt;span style="color: rgb(220, 20, 60);"&gt;prueba&lt;/span&gt;&lt;/span&gt; = &lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; clsInstancia.&lt;span style="color: rgb(220, 20, 60);"&gt;prueba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;Excepciones&lt;/h2&gt;  &lt;p&gt;Las excepciones en Python se tratan con los bloques &lt;span style="background-color: rgb(255, 255, 153);"&gt;try-except [nombre de excepción]&lt;/span&gt;:&lt;br /&gt;&lt;/p&gt;     &lt;div class="codeblock"&gt;&lt;pre class="python"&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; fnExcepcion&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/span&gt;:&lt;br /&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# La división por cero eleva una excepción&lt;/i&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt; / &lt;span style="color: rgb(255, 69, 0);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;except&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;ZeroDivisionError&lt;/span&gt;:&lt;br /&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(72, 61, 139);"&gt;"Vaya, no válido."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; fnExcepcion&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;Vaya, no válido.&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;Importación&lt;/h2&gt;  &lt;p&gt;Se pueden usar librerías externas con la palabra clave &lt;code&gt;import [nombre de la librería]&lt;/code&gt;. También puedes usar la sintaxis &lt;code&gt;from [nombre de la librería] import [nombre función]&lt;/code&gt; para funciones individuales. Por ejemplo:&lt;br /&gt;&lt;/p&gt;     &lt;div class="codeblock"&gt;&lt;pre class="python"&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(220, 20, 60);"&gt;random&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(220, 20, 60);"&gt;time&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; clock&lt;br /&gt;&lt;br /&gt;intRandom = &lt;span style="color: rgb(220, 20, 60);"&gt;random&lt;/span&gt;.&lt;span style="color:black;"&gt;randint&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;100&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; intRandom&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;64&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;E/S de Archivos&lt;/h2&gt;  &lt;p&gt;Python tiene un gran conjunto de librerías incluidas. Como ejemplo, así es como se usa la &lt;span style="background-color: rgb(255, 255, 153);"&gt;serialización&lt;/span&gt; (convertir estructuras de datos en cadenas usando la librería pickle) con E/S a archivos:&lt;/p&gt;&lt;br /&gt;&lt;div class="codeblock"&gt;&lt;pre class="python"&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(220, 20, 60);"&gt;pickle&lt;/span&gt;&lt;br /&gt;lstLista = &lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(72, 61, 139);"&gt;"Esta"&lt;/span&gt;, &lt;span style="color: rgb(72, 61, 139);"&gt;"es"&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;4&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;13327&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Abrir el archivo C:\binario.dat para escribir. La letra r antes del nombre del archivo es&lt;br /&gt;# evitar el escape de la barra.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;flArchivo = &lt;span style="color: rgb(0, 128, 0);"&gt;file&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;r&lt;span style="color: rgb(72, 61, 139);"&gt;"C:&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;\b&lt;/b&gt;&lt;/span&gt;inario.dat"&lt;/span&gt;, &lt;span style="color: rgb(72, 61, 139);"&gt;"w"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(220, 20, 60);"&gt;pickle&lt;/span&gt;.&lt;span style="color:black;"&gt;dump&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;lstLista, flArchivo&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;flArchivo.&lt;span style="color:black;"&gt;close&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;flArchivo = &lt;span style="color: rgb(0, 128, 0);"&gt;file&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;r&lt;span style="color: rgb(72, 61, 139);"&gt;"C:&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;\t&lt;/b&gt;&lt;/span&gt;exto.txt"&lt;/span&gt;, &lt;span style="color: rgb(72, 61, 139);"&gt;"w"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;flArchivo.&lt;span style="color:black;"&gt;write&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(72, 61, 139);"&gt;"Esta es una cadena de ejemplo"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;flArchivo.&lt;span style="color:black;"&gt;close&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;flArchivo = &lt;span style="color: rgb(0, 128, 0);"&gt;file&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;r&lt;span style="color: rgb(72, 61, 139);"&gt;"C:&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;\t&lt;/b&gt;&lt;/span&gt;exto.txt"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; flArchivo.&lt;span style="color:black;"&gt;read&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(72, 61, 139);"&gt;'Esta es una cadena de ejemplo'&lt;/span&gt;&lt;br /&gt;flArchivo.&lt;span style="color:black;"&gt;close&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Abrir el archivo para leer.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;flArchivo = &lt;span style="color: rgb(0, 128, 0);"&gt;file&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;r&lt;span style="color: rgb(72, 61, 139);"&gt;"C:&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;\b&lt;/b&gt;&lt;/span&gt;inario.dat"&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;lstCargada = &lt;span style="color: rgb(220, 20, 60);"&gt;pickle&lt;/span&gt;.&lt;span style="color:black;"&gt;load&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;flArchivo&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;flArchivo.&lt;span style="color:black;"&gt;close&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; lstCargada&lt;br /&gt;&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(72, 61, 139);"&gt;'Esta'&lt;/span&gt;, &lt;span style="color: rgb(72, 61, 139);"&gt;'es'&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;4&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;13327&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;Otros&lt;/h2&gt;   &lt;ul&gt;&lt;li&gt;Puedes usar del para &lt;span style="background-color: rgb(255, 255, 153);"&gt;eliminar variables o elementos de una matriz&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: rgb(255, 255, 153);"&gt;La comprensión de cadenas&lt;/span&gt; facilita una forma rápida de crear y manipular listas. Consiste en una expresión seguida de una clausula for seguida por cero o más clausulas if@ de esta forma:&lt;/li&gt;&lt;/ul&gt;       &lt;div class="codeblock"&gt;&lt;pre class="python"&gt;lst1 = &lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;lst2 = &lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;4&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;5&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style="color:black;"&gt;[&lt;/span&gt;x * y &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; x &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; lst1 &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; y &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; lst2&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;4&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;5&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;6&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;8&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;10&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;9&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;12&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;15&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style="color:black;"&gt;[&lt;/span&gt;x &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; x &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; lst1 &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 69, 0);"&gt;4&lt;/span&gt; &gt; x &gt; &lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;del&lt;/b&gt;&lt;/span&gt; lst1&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;0&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; lst1&lt;br /&gt;&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;, &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;span style="color:black;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;del&lt;/b&gt;&lt;/span&gt; lst1&lt;/pre&gt;&lt;/div&gt;      &lt;ul&gt;&lt;li&gt;&lt;span style="background-color: rgb(255, 255, 153);"&gt;Las variables globales&lt;/span&gt; se declaran fuera de las funciones y pueden ser leídas sin ninguna declaración especial. Pero si quieres escribir en ellas tendrás que declararlas al principio de la función con la palabra clave global. Sino Python creará una variable local y le asignará el valor a ella. Hay que tener cuidado con esto porque puede dar lugar a errores muy difíciles de encontrar.&lt;/li&gt;&lt;/ul&gt;       &lt;div class="codeblock"&gt;&lt;pre class="python"&gt;intNumero = &lt;span style="color: rgb(255, 69, 0);"&gt;5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; fnMiFuncion&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esto mostrará 5&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; intNumber&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; fnOtra&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esto elevará una excepción porque la variable no ha sido asignada&lt;br /&gt;# antes de mostrarse. En la segunda creará una nueva variable local&lt;br /&gt;# y le asignará el número.&lt;br /&gt;&lt;/i&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; intNumero&lt;br /&gt;intNumero = &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; fnOtraMas&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: rgb(255, 119, 0);"&gt;&lt;b&gt;global&lt;/b&gt;&lt;/span&gt; intNumero&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;i&gt;# Esta cambiará correctamente el número&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;intNumero = &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;Epílogo&lt;/h2&gt;  &lt;p&gt;Este tutorial no pretende ser una lista exhaustiva de todas (ni tan siquiera de una parte) de las posibilidades de Python. Python tiene una cantidad increíble de librerías y muchas más funcionalidades que puedes descubrir si te gusta el lenguaje o te hace falta. Puedes, por ejemplo leer este libro online  &lt;a href="http://www.diveintopython.org/"&gt;Dive into Python&lt;/a&gt;. Espero que te haya sido útil y amena la lectura. Si crees que haría falta algo más o modificar cualquier cosa, coméntalo.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.poromenos.org/tutorials/python"&gt;Versión original&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/979837831643439286-530956058278518261?l=geekbinario.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekbinario.blogspot.com/feeds/530956058278518261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://geekbinario.blogspot.com/2007/11/tutorial-de-python-parte-2-de-2.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/530956058278518261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/979837831643439286/posts/default/530956058278518261'/><link rel='alternate' type='text/html' href='http://geekbinario.blogspot.com/2007/11/tutorial-de-python-parte-2-de-2.html' title='Tutorial de Python: Parte 2 de 2'/><author><name>Moisés</name><uri>http://www.blogger.com/profile/18406990143866119930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_FQRIY5VJ4bs/SSXiWFnosUI/AAAAAAAABnA/3NfSRLBEROQ/s1600-R/stargate-82208.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-979837831643439286.post-7997015427496469692</id><published>2007-11-19T11:04:00.000+01:00</published><updated>2008-07-11T11:05:56.593+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Tutorial de Python - Parte 1 de 2</title><content type='html'>&lt;h2&gt;&lt;span style="font-size:130%;"&gt;Introducción&lt;/span&gt; &lt;/h2&gt; &lt;p&gt; Si quieres aprender el lenguaje de programación Python y no encuentras un tutorial conciso pero que a la vez explique las principales características del lenguaje, este puede ser el que te alegre el día. Está claro que si quieres aprender un lenguaje necesitas programar con el durante un tiempo. Se asume que ya estás familiarizado con la programación y saltaremos la parte general a cualquier lenguaje.  Las palabras clave están &lt;span style="background-color: rgb(255, 255, 102);"&gt;señaladas&lt;/span&gt; para que puedas encontrarlas fácilmente. También tienes que estar atento porque algunas cosas se indican directamente en el código y se explican muy brevemente.&lt;br /&gt;&lt;/p&gt; &lt;h2&gt;Propiedades &lt;/h2&gt; &lt;p&gt;   Python es &lt;span style="background-color: rgb(255, 255, 102);"&gt;fuertemente tipado&lt;/span&gt; (el tipo está asegurado), &lt;span style="background-color: rgb(255, 255, 102);"&gt;dinámico&lt;/span&gt;, de &lt;span style="background-color: rgb(255, 255, 102);"&gt;tipado implícito&lt;/span&gt; (no necesitas declarar las variables), &lt;span style="background-color: rgb(255, 255, 102);"&gt;sensible a mayúsculas&lt;/span&gt; (var y VAR son dos variables diferentes) y &lt;span style="background-color: rgb(255, 255, 102);"&gt;orientado a objetos&lt;/span&gt; (todo es un objeto). &lt;/p&gt; &lt;h2&gt;   Sintaxis &lt;/h2&gt; &lt;p&gt;Python &lt;span style="background-color: rgb(255, 255, 102);"&gt;no tiene ningún caracter de fin de sentencia&lt;/span&gt; y &lt;span style="background-color: rgb(255, 255, 102);"&gt;los bloques se especifican indentándolos&lt;/span&gt;. Las sentencias que esperan un nivel de indentación terminan en dos puntos (:). Los comentarios empiezan con la almohadilla (#) solo para esa línea. &lt;span style="background-color: rgb(255, 255, 102);"&gt;Los valores se asignan&lt;/span&gt; con el signo igual y para &lt;span style="background-color: rgb(255, 255, 102);"&gt;comprobar la igualdad&lt;/span&gt; con dos signos (==). Se pueden incrementar o decrementar valores usando los operadores += y -= respectivamente. Esto sirve para muchos tipos, incluyendo las cadenas. También puedes usar varias variables en una línea. Por ejemplo:&lt;/p&gt;&lt;div class="codeblock"&gt;   &lt;pre class="python"&gt;int MiVar = &lt;span style="color: rgb(255, 69, 0);"&gt;3&lt;/span&gt;&lt;br /&gt;int MiVar += &lt;span style="color: rgb(255, 69, 0);"&gt;2&lt;/span&gt;&lt;br /&gt;int MiVar -= &lt;span style="color: rgb(255, 69, 0);"&gt;1&lt;/span&gt;&lt;br /&gt;str MiVar = &lt;span style="color: rgb(72, 61, 139);"&gt;"Hola"&lt;/span&gt;&lt;br /&gt;str MiVar += &lt;span style="color: rgb(72, 61, 139);"&gt;" mundo."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;int MiVar, str MiVar&lt;/pre&gt;&lt;/div&gt;     &lt;h2&gt;Tipos de datos&lt;/h2&gt;  &lt;p&gt;Los tipos de datos en python son &lt;span style="background-color: rgb(255, 255, 102);"&gt;listas, tuplas y diccionarios&lt;/span&gt;. Los conjuntos están disponibles en la librería sets. Las listas son matrices unidimensionales (pero puedes tener listas de otras listas). Los diccionarios son matrices asociativas (como las tablas hash) y las tuplas son matrices unidimensionales inmutables (las matrices en Python pueden ser de cualquier tipo, así que puedes mezclar enteros, cadenas, etc en las listas, diccionarios o tuplas). El primer elemento en todos los tipos de matrices es el 0. Los números negativos empiezan a contar a partir del final. Así que -1 es el último elemento. Las variables pueden apun
