<?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-4169924640156861597</id><updated>2012-01-27T08:02:26.702Z</updated><category term='Discos duros'/><category term='Xen'/><category term='SMART'/><category term='Bases de datos'/><category term='DNS'/><category term='polvo'/><category term='C'/><category term='Mantenimiento de sistemas'/><category term='ADSL'/><category term='SAI'/><category term='Wine'/><category term='Administración de Redes'/><category term='Web'/><category term='ip'/><category term='Orange'/><category term='Dell'/><category term='Servidores'/><category term='Redes Inalámbricas'/><category term='Enrutamiento'/><category term='Humor'/><category term='Vía'/><category term='Apache'/><category term='Proyecto Chip'/><category term='fstab'/><category term='TYAN'/><category term='Latitude'/><category term='Dominios'/><category term='aMule'/><category term='Subir a 6Mb'/><category term='Subversion'/><category term='WPA'/><category term='Criptografía'/><category term='Correo electrónico'/><category term='Perl'/><category term='bash'/><category term='Gnome'/><category term='Jabber'/><category term='Tomato'/><category term='APT'/><category term='Compatibilidad'/><category term='USB'/><category term='Interfaces'/><category term='Toshiba'/><category term='Fortran'/><category term='WEP'/><category term='periféricos'/><category term='intel'/><category term='Ensamblador'/><category term='HTML'/><category term='TeX'/><category term='Opinión'/><category term='udev'/><category term='SOPA'/><category term='Meta'/><category term='Desarrollo'/><category term='juegos'/><category term='Legal'/><category term='sonido'/><category term='Portátiles'/><category term='ACPI'/><category term='Postfix'/><category term='Instalación'/><category term='pidgin'/><category term='Programas libres'/><category term='WRT54G'/><category term='ISP'/><category term='Makefile'/><category term='impresoras'/><category term='spamassasin'/><category term='Canon'/><category term='Dear Lazyweb'/><category term='Línea de órdenes (shell)'/><category term='Cyrus'/><category term='SSL'/><category term='OpenSuSE'/><category term='Bajo nivel'/><category term='Sistemas empotrados'/><category term='kstars'/><category term='fam'/><category term='KDE'/><category term='BerkeleyDB'/><category term='HP'/><category term='Internet'/><category term='Herramientas'/><category term='NUT'/><category term='nVidia'/><category term='Multimedia'/><category term='HAL'/><category term='Debian'/><category term='Copias de seguridad'/><category term='Administración de sistemas'/><category term='XMPP'/><category term='X'/><category term='Google'/><category term='PHP'/><category term='Nominalia'/><category term='Teclados'/><category term='Libertonia'/><category term='Sun'/><category term='CUPS'/><category term='3D'/><category term='XKB'/><category term='SASL'/><category term='Trucos'/><category term='Linux'/><category term='vfat'/><category term='Hardware'/><category term='Firefox/Iceweasel'/><category term='Expresiones regulares'/><title type='text'>Desbitácora de Envite</title><subtitle type='html'>Desbitácora: bitácora de desarrollo.&lt;br /&gt;
En esta bitácora, hija de la bitácora &lt;a href="http://envite.blogspot.com"&gt;Envite&lt;/a&gt; , pondré todo lo que me acuerde de poner relacionado con los desarrollos informáticos que haga.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>84</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5816668072684537831</id><published>2012-01-18T22:20:00.000Z</published><updated>2012-01-18T22:20:08.862Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOPA'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Buenos y malos</title><content type='html'>Hasta ayer Internet se dividía en dos grupos: con ánimo de lucro (como &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;) o sin (como &lt;a href="http://identi.ca"&gt;identi.ca&lt;/a&gt;). La división no es clara, porque servicios como Twitter o &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; no cobran a sus usuarios, pero son empresas con ánimo de lucro. &lt;a href="http://www.facebook.com"&gt;Facebook&lt;/a&gt;, evidentemente, entre los primeros. &lt;a href="http://www.wikipedia.org"&gt;Wikipedia&lt;/a&gt; entre los segundos. &lt;a href="http://www.ebay.com"&gt;eBay&lt;/a&gt; entre los primeros, &lt;a href="http://www.openstreetmap.org"&gt;OpenStreetMap&lt;/a&gt; entre los segundos.&lt;br /&gt;&lt;br /&gt;Básicamente era una división entre los "puntocom" y los "puntoorg".&lt;br /&gt;&lt;br /&gt;Ya no. A partir de hoy Internet se divide entre buenos y malos: los que luchan, como pueden dentro de sus estrategias empresariales o de proyecto, contra &lt;a href="http://es.wikipedia.org/wiki/Stop_Online_Piracy_Act"&gt;SOPA&lt;/a&gt; y &lt;a href="http://en.wikipedia.org/wiki/PROTECT_IP_Act"&gt;PIPA&lt;/a&gt; (como Google) y los que las apoyan (como Facebook).&lt;br /&gt;&lt;br /&gt;Y digo hoy porque hoy los primeros han tenido la decencia de cerrar, en todo o en parte, sus páginas web en protesta.&lt;br /&gt;&lt;br /&gt;Quiero que mis servicios me los den los buenos, y sólo en segundo lugar elegiré entre los sin ánimo de lucro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-5816668072684537831?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/5816668072684537831/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=5816668072684537831' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5816668072684537831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5816668072684537831'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2012/01/buenos-y-malos.html' title='Buenos y malos'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8313528342300009006</id><published>2011-07-25T17:39:00.000+01:00</published><updated>2011-07-25T17:39:40.794+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='ip'/><category scheme='http://www.blogger.com/atom/ns#' term='Enrutamiento'/><category scheme='http://www.blogger.com/atom/ns#' term='Administración de Redes'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSL'/><title type='text'>Dos conexiones a internet</title><content type='html'>Pues eso, como Ono me da 12 megas pero no me da IP fija, y Tele$ónica (ahora la llaman Movistar) me da 1 mega pero con IP estática, pues me he abonado a ambas y aprovecho las dos tarjetas de red de mi ordenador, una para navegar, etc. y la otra para mis servidores al exterior. Es bastante sencillo.&lt;br /&gt;&lt;br /&gt;Para empezar, identifiquemos las tarjetas: &lt;span class=codigo&gt;eth0&lt;/span&gt; es la de navegar, 12 megas con IP dinámica, &lt;span class=codigo&gt;eth1&lt;/span&gt; es la de los servidores, 1 mega con IP fija.&lt;br /&gt;&lt;br /&gt;Para seguir, identifiquemos las redes y asignemos direcciones IP internas: &lt;span class=codigo&gt;eth0&lt;/span&gt; tiene la IP &lt;span class=codigo&gt;192.168.2.25&lt;/span&gt; con pasarela en &lt;span class=codigo&gt;192.168.2.1&lt;/span&gt;, mientras que &lt;span class=codigo&gt;eth1&lt;/span&gt; tiene la IP &lt;span class=codigo&gt;192.168.1.25&lt;/span&gt; con pasarela en &lt;span class=codigo&gt;192.168.1.1&lt;/span&gt;.&lt;br /&gt;Así los unos coinciden, y no hay pérdida: la red 1 en la tarjeta 1.&lt;br /&gt;&lt;br /&gt;Ahora es cuando viene el problema: si pongo una pasarela (&lt;i&gt;gateway&lt;/i&gt;) todos mis paquetes saldrán por ahí, así que los que hayan entrado por la otra tarjeta saldrán con una dirección IP errónea: o no navego, o no sirvo. Y si pongo dos pasarelas el núcleo hará salir cada paquete por donde le apetezca: ni navego ni sirvo.&lt;br /&gt;&lt;br /&gt;Así que mirando la documentación y teniendo (esto es muy importante) una idea clara de lo que quería, descubrí la solución: necesitaba una tabla de enrutamiento distinta.&lt;br /&gt;&lt;br /&gt;Manos a la obra:&lt;br /&gt;&lt;br /&gt;&lt;span class=codigo&gt;ip&lt;/span&gt; permite tener más de una tabla de enrutamiento, y van por número, así que creé la tabla 1 (para no variar, los unos con los unos):&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;ip route add table 1 192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.25 &lt;br /&gt;ip route add table 1 default via 192.168.1.1 dev eth1&lt;/pre&gt;&lt;br /&gt;Ahora una regla que haga que todos los paquetes que salen de &lt;span class=codigo&gt;192.168.1.25&lt;/span&gt; usen esa tabla de enrutamiento y no otra:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;ip rule add from 192.168.1.25 lookup 1&lt;/pre&gt;&lt;br /&gt;Pónganse las tres líneas juntas, hágase que se ejecuten al levantar eth1, y listo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8313528342300009006?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8313528342300009006/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8313528342300009006' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8313528342300009006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8313528342300009006'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2011/07/dos-conexiones-internet.html' title='Dos conexiones a internet'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2100995920214891209</id><published>2011-01-23T18:49:00.000Z</published><updated>2011-01-23T18:49:15.141Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='Correo electrónico'/><title type='text'>Redirigir el correo de root en Postfix</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.postfix.org/postfix-logo.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="98" width="204" src="http://www.postfix.org/postfix-logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Hoy he tenido que instalar Postfix para una máquina en la que el correo de root hay que entregarlo remotamente. Y es un problema, pero encontré la solución.&lt;br /&gt;&lt;br /&gt;Se trata de convencer a Postfix de que su dominio principal es un dominio virtual tocando el &lt;span class="fichero"&gt;/etc/postfix/main.cf&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;virtual_alias_domains = midominioprincipal.org&lt;br /&gt;virtual_alias_maps = hash:/etc/postfix/virtual&lt;/pre&gt;&lt;br /&gt;y luego decirle que determinado usuario de ese dominio debe ver su correo redirigido a una dirección externa:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;root usuario@receptor.org&lt;/pre&gt;&lt;br /&gt;Luego basta con&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;postmap /etc/postfix/virtual &amp;&amp; postfix reload&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2100995920214891209?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2100995920214891209/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2100995920214891209' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2100995920214891209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2100995920214891209'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2011/01/redirigir-el-correo-de-root-en-postfix.html' title='Redirigir el correo de root en Postfix'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-408534490844353614</id><published>2010-12-30T13:04:00.001Z</published><updated>2010-12-30T13:05:19.970Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Canon'/><category scheme='http://www.blogger.com/atom/ns#' term='periféricos'/><category scheme='http://www.blogger.com/atom/ns#' term='impresoras'/><category scheme='http://www.blogger.com/atom/ns#' term='HP'/><title type='text'>Comprar e instalar una impresora: elige siempre HP</title><content type='html'>&lt;div class="separator" style="clear: left; text-align: center;"&gt;&lt;a href="http://www.canon.es/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="47" src="http://www.canon.es/Images/logo.gif" width="189" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: right; text-align: center;"&gt;&lt;a href="http://www.hp.com" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="40" src="http://www8.hp.com/es/es/images/i/logo.png" style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: black none repeat scroll 0% 0%;" width="40" /&gt;&lt;/a&gt;&lt;/div&gt;Hoy he tenido que devolver una impresora que compré para mi suegro, una Canon PIXMA MP252, porque no iba bien con Linux. Menos mal que eso lo descubrí foreando y no por experimentación propia, porque no hubiera podido devolverla. Por sólo 14 euros más, le compré una HP Photosmart C4600: en un cuarto de hora ya estaba imprimiendo, escaneando y copiando. Bastó con un &lt;span class="comando"&gt;apt-get install hplip&lt;/span&gt; y se autoinstaló solita.&lt;br /&gt;&lt;br /&gt;Por eso me gusta apoyar a los fabricantes que apoyan a Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-408534490844353614?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/408534490844353614/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=408534490844353614' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/408534490844353614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/408534490844353614'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/12/comprar-e-instalar-una-impresora-elige.html' title='Comprar e instalar una impresora: elige siempre HP'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6366083761855427984</id><published>2010-12-07T11:41:00.000Z</published><updated>2010-12-07T11:41:00.919Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Nominalia'/><category scheme='http://www.blogger.com/atom/ns#' term='Dominios'/><title type='text'>Subir a 6Mb (y cuarto paso)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GjEUrZgY4vk/TMXFizX2_SI/AAAAAAAAAOs/rmtPcEOfYYA/s1600/imagelogo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GjEUrZgY4vk/TMXFizX2_SI/AAAAAAAAAOs/rmtPcEOfYYA/s1600/imagelogo.png" /&gt;&lt;/a&gt;&lt;/div&gt;Finalmente, tras tener ya la conexión de 6Mb y ver que mantenga la dirección IP estática de antes, todo ha sido cosa de volver a poner los servicios en casa y nuevamente sufrir a &lt;a href="http://www.nominalia.com/index.html"&gt;Nominalia&lt;/a&gt; para cambiar los DNS raíz de mi registro.&lt;br /&gt;&lt;br /&gt;En fin, todo en orden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6366083761855427984?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6366083761855427984/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6366083761855427984' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6366083761855427984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6366083761855427984'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/12/subir-6mb-y-cuarto-paso.html' title='Subir a 6Mb (y cuarto paso)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GjEUrZgY4vk/TMXFizX2_SI/AAAAAAAAAOs/rmtPcEOfYYA/s72-c/imagelogo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-1578750930507838610</id><published>2010-11-15T21:31:00.000Z</published><updated>2010-11-15T21:31:46.496Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Dejar KDE</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://docs.kde.org/images/kde_gear_64.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://docs.kde.org/images/kde_gear_64.png" /&gt;&lt;/a&gt;&lt;a href="http://www.gnome.org/css/gnome.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://www.gnome.org/css/gnome.png" /&gt;&lt;/a&gt;&lt;/div&gt;Al final ha ocurrido: me he cansado de que KDE se coma mi memoria y me he pasado a Gnome. Lo peor: que seguiré usando las aplicaciones de KDE, pues (en general) intentan hacerme quedar como estúpido menos veces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-1578750930507838610?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/1578750930507838610/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=1578750930507838610' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1578750930507838610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1578750930507838610'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/11/dejar-kde.html' title='Dejar KDE'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-3990661740537245404</id><published>2010-11-13T14:59:00.001Z</published><updated>2010-11-13T15:00:29.178Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Subir a 6Mb'/><title type='text'>Subir a 6Mb (tercer paso)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://telco.orange.es/UpImages/2179/logo_orange_afcecbbab_a09fcec4b3392878b89a5b351.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://telco.orange.es/UpImages/2179/logo_orange_afcecbbab_a09fcec4b3392878b89a5b351.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Pues en fin, que tras un par de estupideces o incompetencias por parte de los repartidores, me llegó un módem ADSL nuevo (un SAGEM F@ST™ 2604 capado para que solamente se pueda utilizar con redes de Orange y socios) con cuatro puertos Ethernet y red wifi. Aunque no lo necesito, pues mi NETGEAR DG834v3 comprado a tocateja funciona perfectamente y coge la nueva velocidad, pero en fin. Como no tiene wifi, me quedaré el nuevo y el NETGEAR se lo dejaré a alguien que lo necesite.&lt;br /&gt;&lt;br /&gt;Resumiendo: que ya tengo mi nuevo ADSL en marcha.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-3990661740537245404?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/3990661740537245404/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=3990661740537245404' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3990661740537245404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3990661740537245404'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/11/subir-6mb-y-tercer-paso.html' title='Subir a 6Mb (tercer paso)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7748113378621214216</id><published>2010-11-12T20:32:00.000Z</published><updated>2010-11-12T20:32:38.512Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='fstab'/><category scheme='http://www.blogger.com/atom/ns#' term='vfat'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='HAL'/><category scheme='http://www.blogger.com/atom/ns#' term='udev'/><title type='text'>Montar un dispositivo FAT en modo shortname=lower</title><content type='html'>Hace cierto tiempo el modo de montar los dispositivos de tipo vfat cambió en Linux: pasó de ser &lt;span class="codigo"&gt;shortname=lower&lt;/span&gt; a &lt;span class="codigo"&gt;shortname=mixed&lt;/span&gt;. Un cambio necesario, ya que con el anterior todos los nombres de fichero se mostraban en minúsculas, y los nuevos se escribían en minúsculas en el dispositivo, lo cual era ciertamente un problema a la hora de utilizar dispositivos con canciones. El problema viene porque quien utilizó &lt;span class="comando"&gt;rsync&lt;/span&gt; con el modo anterior, por ejemplo para hacer copias de seguridad de o en un disco duro vfat, se encuentra ahora conque los nombres que antes estaban siempre en minúsculas ahora están a veces en mayúsculas, con lo que al no ser ya los mismos nombres el programa de copias no hace lo que se esperaba.&lt;br /&gt;&lt;br /&gt;El problema es que no hay manera de cambiar esto en HAL: se supone que se podía usando un fichero fdi como el siguiente:&lt;br /&gt;&lt;pre class="codigo"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&amp;lt;!-- /etc/hal/fdi/policy/preferences.fdi --&amp;gt;&lt;br /&gt;&amp;lt;deviceinfo version="0.2"&amp;gt;&lt;br /&gt;  &amp;lt;device&amp;gt;&lt;br /&gt;    &amp;lt;match key="volume.fstype" string="vfat"&amp;gt;&lt;br /&gt;      &amp;lt;merge key="volume.policy.mount_option.shortname=lower" type="bool"&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;    &amp;lt;/match&amp;gt;&lt;br /&gt;  &amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;/deviceinfo&amp;gt;&lt;/pre&gt;pero no funciona: el sistema de &lt;span class="codigo"&gt;volume.policy.mount_option&lt;/span&gt; está desaconsejado por los propios desarrolladores de HAL, que dicen que este tipo de cosas (las opciones de montaje) las debería especificar el entorno de escritorio, y no una política.&lt;br /&gt;&lt;br /&gt;Así que he tenido que irme al &lt;span class="fichero"&gt;/etc/fstab&lt;/span&gt; a ponerlo allí, pero claro, nadie garantiza que un dispositivo vfat tenga un UUID, ¿no?&lt;br /&gt;&lt;br /&gt;Finalmente ha quedado así:&lt;br /&gt;&lt;pre class="codigo"&gt;/dev/disk/by-id/usb-OLYMPUS_D555Z_C315Z_000J03011507-0:0-part1 /media/olympus vfat users,rw,nosuid,nodev,uhelper=hal,utf8,shortname=lower,flush 0 0&lt;/pre&gt;y no sé si eso es bueno o malo: lo que sí sé es que he tenido que crear el punto de montaje, y que no se desmonta bien desde el escritorio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7748113378621214216?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7748113378621214216/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7748113378621214216' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7748113378621214216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7748113378621214216'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/11/montar-un-dispositivo-fat-en-modo.html' title='Montar un dispositivo FAT en modo shortname=lower'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4544875029373649893</id><published>2010-10-27T20:56:00.000+01:00</published><updated>2010-10-27T20:56:55.903+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Subir a 6Mb'/><category scheme='http://www.blogger.com/atom/ns#' term='polvo'/><title type='text'>Subir a 6Mb (interludio)</title><content type='html'>Por alguna razón (que aún no comprendo del todo) mi nuevo servidor se caía repetidamente. Puede ser culpa (en parte) del &lt;i&gt;hardware&lt;/i&gt;: viejo y lleno de &lt;a href="http://denvite.blogspot.com/2008/11/cuanto-polvo-cabe-en-un-ordenador.html"&gt;polvo&lt;/a&gt;; puede ser también culpa de la línea ADSL de allí, cerca del límite de distancia; puede ser también cosa del enrutador ADSL, que es verdaderamente viejo (con decir que no tiene interfaz &lt;i&gt;web&lt;/i&gt; sino tan solo &lt;tt&gt;telnet&lt;/tt&gt;); puede que sea culpa de la instalación de cobre de la casa (oxidada en sitios, húmeda en otros, y mal mantenida); o puede, en fin, que sea cosa de todo lo anterior junto.&lt;br /&gt;&lt;br /&gt;Pero sí ocurría que a veces el ordenador en cuestión (el factor 1, el «jargüar») se quedaba bloqueado (cosa que empezó a hacer allí). Quizá el viaje le echó un meneo al polvo, quiero decir, el viaje meneó el polvo.&lt;br /&gt;&lt;br /&gt;Así que cogí un microportátil con una Debian recientita (una &lt;i&gt;testing&lt;/i&gt; de hace un mes), le instalé el Bind, Postfix y el Courier, copié las configuraciones del polvoriento, y a correr.&lt;br /&gt;&lt;br /&gt;De momento, funciona.&lt;br /&gt;&lt;br /&gt;Seguiremos informando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4544875029373649893?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4544875029373649893/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4544875029373649893' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4544875029373649893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4544875029373649893'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/10/subir-6mb-interludio.html' title='Subir a 6Mb (interludio)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4260701708983627670</id><published>2010-10-26T10:20:00.003+01:00</published><updated>2010-10-27T20:50:41.026+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='ISP'/><category scheme='http://www.blogger.com/atom/ns#' term='Orange'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Subir a 6Mb'/><title type='text'>Subir a 6Mb (segundo paso)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://telco.orange.es/UpImages/2179/logo_orange_afcecbbab_a09fcec4b3392878b89a5b351.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://telco.orange.es/UpImages/2179/logo_orange_afcecbbab_a09fcec4b3392878b89a5b351.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Pues bien, &lt;a href="http://denvite.blogspot.com/2010/10/subir-6mb-primer-paso.html"&gt;una vez que tengo los DNS correctamente apuntados&lt;/a&gt; a un servidor paralelo (aunque solamente funcionen bien allí los servidores de nombres (DNS) y de correo), ha llegado el segundo paso: llamar a mi ISP (Proveedor del Servicio de Internet) y decirle que ya puede pasar mi ADSL de 1Mb/150Kb a 6Mb/300Kb. Vamos a ver cuanto tarda Orange (la verdad que hoy han sido muy amables y, al parecer, eficientes) en efectuar el cambio, y vamos a ver si pierdo mi dirección IP estática por el camino.&lt;br /&gt;&lt;br /&gt;Seguiremos informando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4260701708983627670?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4260701708983627670/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4260701708983627670' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4260701708983627670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4260701708983627670'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/10/subir-6mb-segundo-paso.html' title='Subir a 6Mb (segundo paso)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5611274879191870241</id><published>2010-10-25T19:02:00.001+01:00</published><updated>2010-10-27T20:49:59.729+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Nominalia'/><category scheme='http://www.blogger.com/atom/ns#' term='Subir a 6Mb'/><category scheme='http://www.blogger.com/atom/ns#' term='Dominios'/><title type='text'>Subir a 6Mb (primer paso)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GjEUrZgY4vk/TMXFizX2_SI/AAAAAAAAAOs/rmtPcEOfYYA/s1600/imagelogo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GjEUrZgY4vk/TMXFizX2_SI/AAAAAAAAAOs/rmtPcEOfYYA/s1600/imagelogo.png" /&gt;&lt;/a&gt;&lt;/div&gt;Estoy intentando subir mi conexión casera de 1Mb/150Kb a 6Mb/300Kb y, como supondrán, no quiero quedarme sin recibir correo durante el proceso. Y como en el cambio puede que tenga un corte de conexión o, incluso, pierda la IP fija durante un período de tiempo de hasta 15 días, pues el primer paso ha sido montar un servidor de correo en otro sitio por ahí con IP fija (gracias papi) y decirle a los DNS que manden el correo allí.&lt;br /&gt;&lt;br /&gt;Y ese ha sido el problema: &lt;a href="http://www.nominalia.com/index.html"&gt;Nominalia&lt;/a&gt; ha tardado cinco días y medio en pasar a los servidores raíz para el primer nivel el cambio de servidores autorizados para mi dominio (de segundo nivel).&lt;br /&gt;&lt;br /&gt;En fin... seguiremos informando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-5611274879191870241?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/5611274879191870241/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=5611274879191870241' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5611274879191870241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5611274879191870241'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/10/subir-6mb-primer-paso.html' title='Subir a 6Mb (primer paso)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GjEUrZgY4vk/TMXFizX2_SI/AAAAAAAAAOs/rmtPcEOfYYA/s72-c/imagelogo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8605569684816083204</id><published>2010-09-13T18:22:00.006+01:00</published><updated>2010-09-13T18:36:22.940+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='kstars'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Centralizar los datos de kstars</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GjEUrZgY4vk/TI5eh0Saj-I/AAAAAAAAAOU/BvoMORry9ZA/s1600/kstars.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://2.bp.blogspot.com/_GjEUrZgY4vk/TI5eh0Saj-I/AAAAAAAAAOU/BvoMORry9ZA/s400/kstars.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5516450528640012258" /&gt;&lt;/a&gt;&lt;span style="font-weight:bold;"&gt;Kstars&lt;/span&gt; es el proyecto de un planetario para KDE. Funciona bastante bien, pero hay un pequeño detalle que puede llegar a molestar: la opción "Obtener nuevos datos" está disponible para cada usuario, así que los catálogos e imágenes (algunos de los cuales ocupan 2GiB) corren el riesgo de ser descargados individualmente por cada usuario. Esto, en un ordenador de un aula de astronomía, por ejemplo, significa un montón de espacio desperdiciado, y un montón de ancho de banda gastado en descargar cosas que ya se tienen.&lt;br /&gt;&lt;br /&gt;Tras &lt;a href="http://forum.kde.org/viewtopic.php?f=21&amp;t=90166"&gt;una pequeña charla&lt;/a&gt; con gente de KDE, he encontrado el lugar y la manera de evitarlo, centralizando los datos y usando el &lt;span style="font-style:italic;"&gt;kiosk mode&lt;/span&gt; de KDE para evitar que los usuarios puedan descargarse los datos.&lt;br /&gt;&lt;br /&gt;Espero, ahora, ponerme a hacer un paquete Debian que centralice &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=596007"&gt;el caso&lt;/a&gt;. A ver si me sale bien.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8605569684816083204?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8605569684816083204/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8605569684816083204' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8605569684816083204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8605569684816083204'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/09/centralizar-los-datos-de-kstars.html' title='Centralizar los datos de kstars'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GjEUrZgY4vk/TI5eh0Saj-I/AAAAAAAAAOU/BvoMORry9ZA/s72-c/kstars.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8172770330196978985</id><published>2010-09-10T22:04:00.003+01:00</published><updated>2010-09-10T22:08:29.570+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='polvo'/><title type='text'>El botón de apagado</title><content type='html'>Ya he &lt;a href="http://denvite.blogspot.com/2010/04/polvo-en-la-fuente.html"&gt;comentado alguna vez&lt;/a&gt; que no me gusta el polvo. El polvo en los ordenadores, se entiende. Y hoy, por tercera o cuarta vez, pasando una brocha (una simple brocha) por mi ordenador nuevo para quitarle el polvo ambiente, se apagó. Eso es lo que se llama tener un botón de encendido muy sensible, tanto que ahora lo llamo «botón de apagado».&lt;br /&gt;&lt;br /&gt;Así que ni corto ni perezoso, y sabiendo que voy a seguir pasando la brocha o incluso un paño para limpiar el polvo externo de vez en cuando, me he metido en la carcasa y he tirado de los cables blanco y rojo, para desconectar de la placa base el susodicho interruptor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8172770330196978985?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8172770330196978985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8172770330196978985' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8172770330196978985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8172770330196978985'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/09/el-boton-de-apagado.html' title='El botón de apagado'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4104375995441198969</id><published>2010-09-07T01:16:00.002+01:00</published><updated>2010-09-07T01:35:50.492+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aMule'/><category scheme='http://www.blogger.com/atom/ns#' term='Interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox/Iceweasel'/><title type='text'>Descargar enlaces ed2k:// desde Firefox (II)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.amule.org/files/templates/olate/images/logo.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 116px; height: 115px;" src="http://www.amule.org/files/templates/olate/images/logo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/6/63/Iceweasel.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 128px; height: 128px;" src="http://upload.wikimedia.org/wikipedia/commons/6/63/Iceweasel.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://support.mozilla.com/img/logo-ff-speed.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 118px; height: 115px; clear:left;" src="http://support.mozilla.com/img/logo-ff-speed.jpg" border="0" alt="" /&gt;&lt;/a&gt;Hace aproximadamente un año y medio escribí &lt;a href="http://denvite.blogspot.com/2009/05/descargar-enlaces-ed2k-desde-firefox.html"&gt;este artículo&lt;/a&gt; sobre cómo registrar un nuevo protocolo en Iceweasel (más conocido por ahí como Firefox).&lt;br /&gt;&lt;br /&gt;Pero con la llegada de Firefox 3 las cosas han cambiado y el método ya no funciona. Pero la solución es parecida: se trata de añadir a mano un a nueva clave booleana, &lt;span class="codigo"&gt;network.protocol-handler.expose.ed2k&lt;/span&gt;, y darle como valor &lt;span class="codigo"&gt;false&lt;/span&gt;. La siguiente vez que pulsemos un enlace &lt;span class="codigo"&gt;ed2k://&lt;/span&gt; nos preguntará la aplicación que queremos usar, y ahí buscaremos &lt;span class="codigo"&gt;/usr/bin/ed2k&lt;/span&gt; en el árbol de directorios.&lt;br /&gt;&lt;br /&gt;Y claro, lo mismo vale para cualquier otro protocolo que queramos.&lt;br /&gt;&lt;br /&gt;Todo viene (más o menos) explicado en &lt;a href="http://kb.mozillazine.org/Register_protocol"&gt;http://kb.mozillazine.org/Register_protocol&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4104375995441198969?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://denvite.blogspot.com/2009/05/descargar-enlaces-ed2k-desde-firefox.html' title='Descargar enlaces ed2k:// desde Firefox (II)'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4104375995441198969/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4104375995441198969' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4104375995441198969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4104375995441198969'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/09/descargar-enlaces-ed2k-desde-firefox-ii.html' title='Descargar enlaces ed2k:// desde Firefox (II)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8439802189416350727</id><published>2010-08-30T20:21:00.005+01:00</published><updated>2010-08-30T20:34:53.294+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Bases de datos'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='BerkeleyDB'/><title type='text'>Leer una base de datos Berkeley DB</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://es.php.net/images/php.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px; height: 67px;" src="http://es.php.net/images/php.gif" border="0" alt="" /&gt;&lt;/a&gt;Muchísimas aplicaciones utilizan bases de datos BerkeleyDB, y no hay (que yo sepa) ninguna aplicación específicamente diseñada para ver el contenido de éstas. Así que busqué un lenguaje de programación que me permitiera trabajar rápidamente con ellas y encontré que la papeleta me la resolvió &lt;a href="http://es.php.net/"&gt;PHP&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo" style="clear: both;"&gt;error_reporting(E_ALL);&lt;br /&gt;$id = dba_open("file", "r", "db4");&lt;br /&gt;var_dump($id);&lt;br /&gt;$key = dba_firstkey($id);&lt;br /&gt;&lt;br /&gt;while ($key != false) {&lt;br /&gt;    if (true) {          &lt;br /&gt;        $handle_later[] = $key;&lt;br /&gt;    }&lt;br /&gt;    $key = dba_nextkey($id);&lt;br /&gt;}&lt;br /&gt;echo("\n");&lt;br /&gt;foreach ($handle_later as $val) {&lt;br /&gt;$string=dba_fetch($val,$id);&lt;br /&gt;echo("$val||$string\n");&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8439802189416350727?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8439802189416350727/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8439802189416350727' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8439802189416350727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8439802189416350727'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/08/leer-una-base-de-datos-berkeley-db.html' title='Leer una base de datos Berkeley DB'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8136655101669838465</id><published>2010-08-25T08:48:00.002+01:00</published><updated>2010-08-25T09:02:41.869+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Legal'/><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo'/><category scheme='http://www.blogger.com/atom/ns#' term='Programas libres'/><title type='text'>Sobre la posible responsabilidad de la Administración Pública en un programa desarrollado mediante un modelo libre (aspectos técnicos)</title><content type='html'>El modelo de trabajo en dos fases, con repositorio a cargo de la comunidad de desarrolladores y versiones oficiales a cargo de la A. P. es fácilmente implementable en los sistemas de «forja» de código actuales, y con poca dificultad en cualquier otro que se desee. Por ejemplo, el sistema ya existe en la forja de &lt;a href="http://www.osor.eu/"&gt;OSOR.eu&lt;/a&gt;. A tal fin se distingue entre tres formas de obtener el código:&lt;br /&gt;&lt;br /&gt;&lt;ul style="list-style-type=lower-alpha"&gt;&lt;li&gt;A través de los medios propios del repositorio o a través de su interfaz web&lt;/li&gt;&lt;br /&gt;&lt;li&gt;En forma de bola 'tar' o archivo comprimido generado automáticamente por la forja&lt;/li&gt;&lt;br /&gt;&lt;li&gt;En forma de bola 'tar', archivo comprimido o paquete (fuente o binario) creado por los desarrolladores propios de la A. P.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;En los dos primeros casos el usuario obtiene una versión del código que se considera, a todos los efectos, como inestable o de desarrollo. En el tercero, el código obtenido se considera, a todos los efectos, código publicado por la A. P.&lt;br /&gt;&lt;br /&gt;A modo de ejemplo, véase el proyecto &lt;a href="http://forge.osor.eu/projects/sextante/"&gt;SEXTANTE&lt;/a&gt; de la Junta de Andalucía alojado en OSOR.eu que nos proporciona los tres modos:&lt;br /&gt;&lt;br /&gt;&lt;ul style="list-style-type=lower-alpha"&gt;&lt;li&gt;El acceso a través de &lt;pre class="codigo"&gt;svn checkout https://svn.forge.osor.eu/svn/sextante&lt;/pre&gt; o a través de &lt;a href="http://forge.osor.eu/plugins/scmsvn/viewcvs.php/?root=sextante"&gt;&lt;pre class="codigo"&gt;http://forge.osor.eu/plugins/scmsvn/viewcvs.php/?root=sextante&lt;/pre&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;La descarga de &lt;pre class="codigo"&gt;&lt;a href="http://forge.osor.eu/snapshots.php?group_id=13"&gt;http://forge.osor.eu/snapshots.php?group_id=13&lt;/a&gt;&lt;/pre&gt; enlazada desde &lt;a href="http://forge.osor.eu/scm/?group_id=13"&gt;http://forge.osor.eu/scm/?group_id=13&lt;/a&gt; e identificada como «copia nocturna»&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Los ficheros presentados en &lt;a href="http://forge.osor.eu/projects/sextante/"&gt;http://forge.osor.eu/projects/sextante/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Los casos a) y b) quedan claramente al alcance de cualquiera, pero sin embargo quien obtiene el código por dichas vías es plenamente consciente de que obtiene código no necesariamente comprobado, mientras que el caso c) es el resultado del esfuerzo consciente por parte de ciertos desarrolladores en empaquetar una versión determinada del código.&lt;br /&gt;&lt;br /&gt;De esta manera, el flujo de trabajo comienza con desarrolladores que realizan cambios en el código y añaden tales cambios al repositorio. Según la confianza que se tenga en dichos desarrolladores, podrán añadirlos directamente a la rama «tronco» del repositorio o no, pero en cualquier caso dichos cambios son parte de la base de código desde ese mismo momento. Nótese que la responsabilidad es puramente personal del desarrollador que realiza el cambio, y que no se trata necesariamente de personas responsables ante la A. P.&lt;br /&gt;&lt;br /&gt;El flujo continúa con la evaluación de dichos cambios por parte de dos grupos, los usuarios que decidan obtener esa versión del código y probarla, y con ello informar de posibles fallos o regresiones de código, y los restantes desarrolladores que decidan hacer una «revisión por iguales» del cambio y, en su caso, portarlo a otras ramas del repositorio.&lt;br /&gt;&lt;br /&gt;El siguiente paso es que uno de los desarrolladores que sí tienen la responsabilidad ante la A. P. de seleccionar el código aceptable para su publicación haga una revisión de una serie de cambios al «tronco» del repositorio y publique una nueva versión oficial del programa. Es en este punto, y solamente en éste, donde aparece la responsabilidad de la A. P. ante los usuarios.&lt;br /&gt;&lt;br /&gt;Queda el caso puntual de las versiones inestables oficiales, entendiendo por tales las versiones «candidatas para la liberación» que se publican por muchos proyectos, tanto libres como privativos. Dichas versiones son necesarias, casi imprescindibles, para probar el código antes de liberarlo, pero suelen publicarse de la misma manera que las versiones oficiales. Suelen contener una indicación clara de su estado no definitivo, como las letras 'rc' (&lt;span style="font-style:italic;"&gt;Release Candidate&lt;/span&gt;) o el indicativo 'beta'. Sin embargo, el publicarlas de la misma manera que las versiones oficiales definitivas puede tomarse, con un poco de mala fe o de ineptitud, como indicativo de que se encuentras endosadas por la A. P.&lt;br /&gt;&lt;br /&gt;El caso con estas versiones es que efectivamente se trata de versiones publicadas oficialmente, ya que es código que ha sido comprobado por los desarrolladores de confianza. En ese sentido la A. P. es responsable de la publicación de una versión inestable, pero es el usuario el responsable de haber elegido esa versión para su descarga estando disponible una versión estable oficial aunque sea más antigua: ningún usuario puede aducir que descargó una versión 'rc', 'beta' o '0.x' sin saber que se trata de versiones de prueba. Para reforzar este punto, versiones tales no deben presentarse en la página principal del proyecto, pero sí en la página de versiones liberadas de la forja. No es un problema que aparezcan en la zona de noticias de la página principal del proyecto si se presentan como versiones de prueba.&lt;br /&gt;&lt;br /&gt;La diferencia presentada entre código en el repositorio y código publicado oficialmente hace posible el modelo de comunidad en el que la única normativa para ser considerado como desarrollador es haber contribuido con código válido.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8136655101669838465?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8136655101669838465/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8136655101669838465' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8136655101669838465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8136655101669838465'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/08/sobre-la-posible-responsabilidad-de-la_25.html' title='Sobre la posible responsabilidad de la Administración Pública en un programa desarrollado mediante un modelo libre (aspectos técnicos)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6663546090763778344</id><published>2010-08-24T01:59:00.004+01:00</published><updated>2010-08-24T02:18:27.659+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SASL'/><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Cyrus'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='Correo electrónico'/><title type='text'>warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.postfix.org/mysza.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 130px; height: 91px;" src="http://www.postfix.org/mysza.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cyrusimap.web.cmu.edu/images/cyrusbeta1.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 192px; height: 192px;" src="http://cyrusimap.web.cmu.edu/images/cyrusbeta1.jpg" border="0" alt="" /&gt;&lt;/a&gt;Configurando la autenticación de mi servidor de correo &lt;a href="http://www.postfix.org/"&gt;Postfix&lt;/a&gt; con &lt;a href="http://asg.andrew.cmu.edu/sasl/"&gt;Cyrus SASL2&lt;/a&gt; me encontré con que no funcionaba: el fichero &lt;span class="fichero"&gt;/etc/sasldb2&lt;/span&gt; estaba en su sitio y con los permisos correctos, pero no había manera.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kloopy.com/344_Postfix__SASL2__unable_to_open_Berkeley_db"&gt;Esta página&lt;/a&gt; de &lt;span style="font-weight:bold;"&gt;Matthew Chapman&lt;/span&gt; me dio la pista de lo que pasaba (y, consecuentemente, la solución): la biblioteca Cyrus SASL2 se mete en una jaula &lt;span class="comando"&gt;chroot&lt;/span&gt; en &lt;span class="fichero"&gt;/var/spool/postfix&lt;/span&gt; antes de comprobar si &lt;span class="fichero"&gt;/etc/sasldb2&lt;/span&gt; existe, y por ello aunque exista correctamente, no lo encuentra.&lt;br /&gt;&lt;br /&gt;La solución creando un enlace simbólico no funciona, ojo, porque desde dentro de la jaula &lt;span class="comando"&gt;chroot&lt;/span&gt; resulta que &lt;span class="fichero"&gt;/etc/sasldb2&lt;/span&gt; se apuntaría a si mismo. Por lo tanto, hay que copiar el fichero, o crear un enlace duro si quieres olvidarte de actualizar la copia en la jaula cada vez que cambies el original:&lt;br /&gt;&lt;pre class="comando"&gt;ln /etc/sasldb2 /var/spool/postfix/etc&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6663546090763778344?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6663546090763778344/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6663546090763778344' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6663546090763778344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6663546090763778344'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/08/warning-sasl-authentication-problem.html' title='warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4700197347121970116</id><published>2010-08-20T23:11:00.002+01:00</published><updated>2010-08-20T23:32:31.570+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aMule'/><title type='text'>Mover descargas entre instalaciones de aMule</title><content type='html'>Tenía, en un disco duro que ya no uso para eso, un &lt;span class="fichero"&gt;.aMule&lt;/span&gt; con su configuración y todo lo demás, incluido su &lt;span class="fichero"&gt;Temp&lt;/span&gt;, que contiene los ficheros de las descargas parciales.&lt;br /&gt;&lt;br /&gt;Hoy probé a mover esas descargas parciales (los ficheros &lt;span class="fichero"&gt;*.part&lt;/span&gt;, &lt;span class="fichero"&gt;*.part.met&lt;/span&gt;, &lt;span class="fichero"&gt;*.part.met.bak&lt;/span&gt; y &lt;span class="fichero"&gt;*.part.met.seeds&lt;/span&gt;, que contienen, respectivamente, los datos descargados, la información de la descarga, una copia de seguridad de ésta, y una lista de fuentes cuando son escasas.&lt;br /&gt;&lt;br /&gt;He comprobado que simplemente moviendo estos ficheros al &lt;span class="fichero"&gt;.aMule/Temp&lt;/span&gt; que uso ahora, renombrando aquellos cuyo número de serie coincidía con un grupo ya existente, la cosa funciona perfectamente.&lt;br /&gt;&lt;br /&gt;Ojo, eso sí, hay que usar la misma numeración para los que tenían la misma numeración. Así, si tienes que mover &lt;span class="fichero"&gt;001.part&lt;/span&gt;, &lt;span class="fichero"&gt;001.part.met&lt;/span&gt; y &lt;span class="fichero"&gt;001.part.met.bak&lt;/span&gt;, y ya existen esos nombres en el &lt;span class="fichero"&gt;Temp&lt;/span&gt; de destino, los puedes llamar &lt;span class="fichero"&gt;901.part&lt;/span&gt;, &lt;span class="fichero"&gt;901.part.met&lt;/span&gt; y &lt;span class="fichero"&gt;901.part.met.bak&lt;/span&gt; pero no &lt;span class="fichero"&gt;901.part&lt;/span&gt;, &lt;span class="fichero"&gt;902.part.met&lt;/span&gt; y &lt;span class="fichero"&gt;903.part.met.bak&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4700197347121970116?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4700197347121970116/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4700197347121970116' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4700197347121970116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4700197347121970116'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/08/mover-descargas-entre-instalaciones-de.html' title='Mover descargas entre instalaciones de aMule'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4397035937842795506</id><published>2010-08-17T17:59:00.002+01:00</published><updated>2010-08-17T18:07:34.172+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Legal'/><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo'/><category scheme='http://www.blogger.com/atom/ns#' term='Programas libres'/><title type='text'>Sobre la posible responsabilidad de la Administración Pública en un programa desarrollado mediante un modelo libre</title><content type='html'>Si una Administración Pública distribuye un programa libre, tiene cierta responsabilidad con los usuarios del mismo incluso en el caso de que la propia Licencia del programa indique lo contrario, ya que, al contrario que un distribuidor cualquiera, una A. P. sí tiene una obligación legal real de velar por los receptores del programa, que son sus ciudadanos. Dicha responsabilidad puede ser mayor aún en el caso de que el usuario del programa sea la propia A. P. de modo tal que un problema en el programa suponga para aquélla la pérdida de datos de los ciudadanos o cualquier otro resultado que les perjudique.&lt;br /&gt;&lt;br /&gt;Al mismo tiempo, crear un programa al modo de los proyectos libres implica que varias personas (los desarrolladores en quienes se tiene confianza suficiente como para permitirles acceso de escritura al repositorio), algunas de las cuales no tendrán ningún tipo de relación contractual directa ni indirecta con la A. P. que promocione el programa, podrán realizar cambios al mismo, algunos de los cuales pueden ser perjudiciales, &lt;span style="font-style:italic;"&gt;bona fide&lt;/span&gt; o maliciosamente.&lt;br /&gt;&lt;br /&gt;Parece entonces que llegamos al dilema cruel de que una A. P. debe renunciar a liberar un programa y desarrollarlo a través de una comunidad o aceptar la responsabilidad de un programa que no se encuentra bajo su control.&lt;br /&gt;&lt;br /&gt;Sin embargo, se trata de un falso dilema, ya que hay un paso intermedio entre el desarrollo y la publicación, que es el punto en el que la A. P. puede intervenir a fin de controlar el proceso conforme a su responsabilidad sin correr el riesgo de molestar a la comunidad de desarrolladores con injerencias. Dicho punto es la liberación de versiones oficiales del programa.&lt;br /&gt;&lt;br /&gt;El flujo de trabajo correcto para bordear adecuadamente el problema es:&lt;br /&gt;&lt;ol style="list-style-type=lower-alpha"&gt;&lt;li&gt; que los desarrolladores trabajen libremente, hasta el punto en que tal cosa sea posible para que el programa no se aleje de las especificaciones, en el repositorio de código&lt;/li&gt;&lt;br /&gt;&lt;li&gt; que un grupo seleccionado de desarrolladores, responsables ante la A. P. (funcionarios, contratados por la A. P. o contratados por una empresa contratada a tal fin por la A. P.), seleccione regularmente el código de la rama «tronco» del repositorio, lo empaquete (a modo de paquete fuente o de paquetes fuente y binario) y lo publique&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;De este modo, los usuarios que lo deseen pueden obtener las versiones de desarrollo del código, lo cual es imprescindible para la detección de fallos en el mismo y su mejora, sin responsabilidad para la A. P., y ésta puede proporcionar versiones oficiales que hayan pasado el filtro de los desarrolladores contratados, con plena responsabilidad.&lt;br /&gt;&lt;br /&gt;Es conveniente, pero no necesario, que la distinción entre estas dos maneras de proporcionar el código sea patente en la interfaz web del repositorio de código, con una mención del tipo «[La A. P.] no se hace responsable de los posibles fallos de estas versiones de desarrollo y niega toda responsabilidad sobre el mismo. Si no es usted un usuario avanzado, por favor utilice las versiones oficiales que puede encontrar en [sitio web].».&lt;br /&gt;&lt;br /&gt;Ante un problema real que se produzca como consecuencia del uso del código, la estrategia de defensa de la A. P. debe variar en función de que dicho fallo se produzca en un código obtenido del repositorio o en un programa de la distribución oficial.&lt;br /&gt;&lt;br /&gt;En el primer caso, la A. P. debe negar toda responsabilidad, indicando que el usuario sabía lo que hacía al descargar una versión de desarrollo, e indicando que el usuario asumió toda la responsabilidad al usar la interfaz web del repositorio de desarrollo del código (si lo hizo así) o indicando que el usuario era plenamente consciente del peligro de utilizar una versión de desarrollo, ya que es inconcebible que un usuario lo suficientemente avanzado como para utilizar el repositorio sin usar su interfaz web no lo sea.&lt;br /&gt;&lt;br /&gt;En el segundo caso, la A. P. debe aceptar la plena responsabilidad por el perjuicio causado, ya que es, al menos, responsable civil subsidiario, pero al mismo tiempo debe averiguar qué desarrollador aceptó el cambio en el código que causó el problema e iniciar las acciones penales y, en su caso, disciplinarias adecuadas, ya que sin duda se trata de uno de los «desarrolladores de confianza» plenamente identificados por ser funcionarios, contratados por la A. P. o contratados por una empresa contratada a tal fin por la A. P.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4397035937842795506?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4397035937842795506/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4397035937842795506' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4397035937842795506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4397035937842795506'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/08/sobre-la-posible-responsabilidad-de-la.html' title='Sobre la posible responsabilidad de la Administración Pública en un programa desarrollado mediante un modelo libre'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2063389613491363032</id><published>2010-08-13T21:47:00.003+01:00</published><updated>2010-08-13T21:55:52.677+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='Correo electrónico'/><title type='text'>Usuario que reparte el correo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.postfix.org/mysza.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 130px; height: 91px;" src="http://www.postfix.org/mysza.gif" border="0" alt="" /&gt;&lt;/a&gt;Me ha costado un buen rato ver qué pasaba, pero lo he conseguido.&lt;br /&gt;&lt;br /&gt;Tengo una máquina que recibe mi correo electrónico, y estaba tratando de configurar el servicio en una máquina nueva. Utilizo &lt;a href="http://www.postfix.org/"&gt;Postfix&lt;/a&gt;, y tiene la sana costumbre de que el usuario que reparte el correo, es decir, el usuario que el proceso &lt;span class="comando"&gt;local&lt;/span&gt; utiliza para escribir en los buzones, es el usuario &lt;span class="codigo"&gt;nobody&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Pero yo necesitaba que fuera el usuario &lt;span class="codigo"&gt;mail&lt;/span&gt;, ya que utilizo directorios Maildir, por fiabilidad. Me ha costado averiguar cómo hacerlo (estoy desentrenado), pero finalmente lo he conseguido: basta con añadir la línea&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;default_privs = mail&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;al fichero &lt;span class="fichero"&gt;/etc/postfix/main.cf&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2063389613491363032?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2063389613491363032/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2063389613491363032' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2063389613491363032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2063389613491363032'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/08/usuario-que-reparte-el-correo.html' title='Usuario que reparte el correo'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4652708158750330243</id><published>2010-07-30T23:48:00.003+01:00</published><updated>2010-07-31T00:03:14.792+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='sonido'/><category scheme='http://www.blogger.com/atom/ns#' term='pidgin'/><title type='text'>Pidgin no suena en KDE 4</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pidgin.im/shared/img/logo.pidgin.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 107px; height: 185px;" src="http://www.pidgin.im/shared/img/logo.pidgin.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://userbase.kde.org/skins/oxygen/top-kde.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 35px; height: 36px;" src="http://userbase.kde.org/skins/oxygen/top-kde.png" border="0" alt="" /&gt;&lt;/a&gt;Bueno, por fin voy a trabajar de manera estable con &lt;a href="http://www.kde.org/"&gt;KDE4&lt;/a&gt;.&lt;br /&gt;Una de mis aplicaciones usuales es &lt;a href="http://www.pidgin.im/"&gt;pidgin&lt;/a&gt;, un cliente de mensajería instantánea. Y es muy útil que suene cuando te llega un mensaje.&lt;br /&gt;&lt;br /&gt;Pero en KDE 4 (al menos en Debian) no suena.&lt;br /&gt;&lt;br /&gt;Menos mal que San Google Bendito lo sabe todo (no sé si demasiado) y me envió a &lt;a href="http://mandrivausers.org/index.php?/topic/43987-help-pidgin-has-no-sound/"&gt;http://mandrivausers.org/index.php?/topic/43987-help-pidgin-has-no-sound/&lt;/a&gt; (aunque sea de Mandriva). La solución funciona.&lt;br /&gt;&lt;br /&gt;Traducido:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Tuve el mismo problema con Pidgin en Ubuntu 7.10. Esto debería funcionar:&lt;br /&gt;&lt;br /&gt;1 En Pidgin, selecciona Preferencias en el menú Herramientas (o pulsa Ctrl+P)&lt;br /&gt;2 Pincha en la pestaña Sonidos&lt;br /&gt;3 En la lista desplegable Método, selecciona Comando&lt;br /&gt;4 En la caja de entrada Comando para sonido escribe lo siguente: aplay %s&lt;br /&gt;5 Selecciona un evento con un sonido asignado en la lista Eventos de sonido&lt;br /&gt;6 Pulsa el botón Previsualizar. Deberías oír ahora el sonido de notificación&lt;br /&gt;7 Pulsa el botón Cerrar&lt;br /&gt;&lt;br /&gt;¡Espero que te ayude! :D&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4652708158750330243?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4652708158750330243/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4652708158750330243' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4652708158750330243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4652708158750330243'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/07/pidgin-no-suena-en-kde-4.html' title='Pidgin no suena en KDE 4'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-3524944794659850523</id><published>2010-07-17T13:32:00.004+01:00</published><updated>2010-07-17T13:35:39.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Fortran'/><title type='text'>Interprogramación de Fortran y C (II)</title><content type='html'>Hace relativamente poco tiempo, un mes o dos, buscando cómo hacer funcionar la biblioteca &lt;span class="codigo"&gt;libdl&lt;/span&gt; en Fortran, me tropecé con &lt;a href="http://cims.nyu.edu/~donev/Fortran/DLL/DLL.Forum.txt"&gt;este artículo&lt;/a&gt; de &lt;a href="http://cims.nyu.edu/~donev/"&gt;Aleksandar Donev&lt;/a&gt;, en el que explica muy rápidamente cómo hacerlo, y además de un modo que facilita la interprogramación entre Fortran y C en general.&lt;br /&gt;&lt;br /&gt;Básicamente, comienza creando las rutinas que usaremos para pasar cadenas de caracteres de C (terminadas en &lt;span class="codigo"&gt;\0&lt;/span&gt;) a Fortran (con indicación de longitud) y viceversa. A continuación crea las interfaces Fortran para las principales funciones de &lt;span class="codigo"&gt;libdl&lt;/span&gt; y luego muestra un ejemplo.&lt;br /&gt;&lt;br /&gt;Sencillo, conciso y correcto.&lt;br /&gt;&lt;br /&gt;Claro que no funciona «nada más sacarlo de la caja», por dos razones. Por un lado, utiliza punteros a funciones, algo que entró en Fortran 2003 (en C lo tenemos «de toda la vida»). Y por otro, los valores &lt;span class="codigo"&gt;RTLD_LAZY&lt;/span&gt;, &lt;span class="codigo"&gt;RTLD_NOW&lt;/span&gt;, &lt;span class="codigo"&gt;RTLD_GLOBAL&lt;/span&gt; y &lt;span class="codigo"&gt;RTLD_LOCAL&lt;/span&gt; hay que hallarlos a mano antes de empezar. Pero eso no cuesta nada.&lt;br /&gt;&lt;br /&gt;Finalmente, lo mejor de todo es que el Sr. Donev me ha autorizado a usar no solamente su método sino el código que presenta en la página. En sus propias palabras:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="background: #222"&gt;The code is available with absolutely no restrictions: feel free to incorporate it into your software.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote style="background: #222"&gt;El código está disponible absolutamente sin restricciones. Siéntase libre de usarlo en su propio programa.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-3524944794659850523?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://cims.nyu.edu/~donev/Fortran/DLL/DLL.Forum.txt' title='Interprogramación de Fortran y C (II)'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/3524944794659850523/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=3524944794659850523' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3524944794659850523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3524944794659850523'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/07/interprogramacion-de-fortran-y-c-ii.html' title='Interprogramación de Fortran y C (II)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2846814375424641586</id><published>2010-06-26T18:53:00.004+01:00</published><updated>2010-06-26T19:27:28.160+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Línea de órdenes (shell)'/><title type='text'>Truquitos de la shell</title><content type='html'>Con la ayuda de dos pequeñas páginas, &lt;a href="http://www.faqs.org/docs/Linux-HOWTO/Bash-Prompt-HOWTO.html"&gt;Bash Prompt HOWTO&lt;/a&gt; de Giles Orr y &lt;a href="http://www.faqs.org/docs/Linux-mini/Xterm-Title.html"&gt;How to change the title of an xterm&lt;/a&gt; de Ric Lister, acabo de resolver un problemilla que me traía mal: saber dónde estoy trabajando:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;export PS1='\[\033]0;\u@\h:\w\007\]\t \u@\h:\w\$ '&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2846814375424641586?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2846814375424641586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2846814375424641586' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2846814375424641586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2846814375424641586'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/06/truquitos-de-la-shell.html' title='Truquitos de la shell'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2468726491723055650</id><published>2010-05-03T10:47:00.004+01:00</published><updated>2010-05-03T10:54:54.784+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Administración de Redes'/><category scheme='http://www.blogger.com/atom/ns#' term='Expresiones regulares'/><title type='text'>Expresión regular para CIDR</title><content type='html'>Me ha dado por ahí, y he sacado la expresión regular para una dirección IPv4 en notación CIDR.&lt;br /&gt;&lt;br /&gt;Hay mucha gente por ahí que usa&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\/([0-9][1,3})&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pero no es correcta. La buena es ésta:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;((0|1[0-9]{0,2}|2([0-4][0-9]?|5[0-5]?|[6-9])|[3-9][0-9]?)\.){3}(0|1[0-9]{0,2}|2([0-4][0-9]?|5[0-5]?|[6-9])|[3-9][0-9]?)/(0|[1-2][0-9]?|3[0-2]?)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Si la vas a compilar en C, no olvides doblar las barras invertidas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2468726491723055650?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2468726491723055650/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2468726491723055650' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2468726491723055650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2468726491723055650'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/05/expresion-regular-para-cidr.html' title='Expresión regular para CIDR'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-1729853424138361244</id><published>2010-04-30T22:45:00.002+01:00</published><updated>2010-04-30T22:47:29.976+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='CUPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Medias actualizaciones</title><content type='html'>No es bueno tener un sistema estable y actualizarlo por partes, no señor.&lt;br /&gt;&lt;br /&gt;Mi impresora estaba hoy tonta. No sé por qué, pero el CUPS y sus hijitos (hasta el ghostscript) se quedaban tontos, y no sacaban los trabajos.&lt;br /&gt;&lt;br /&gt;Actualizar los paquetes correspondientes al cups, hpijs y sus dependencias lo ha solucionado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-1729853424138361244?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/1729853424138361244/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=1729853424138361244' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1729853424138361244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1729853424138361244'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/04/medias-actualizaciones.html' title='Medias actualizaciones'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-3196854570325004547</id><published>2010-04-28T10:35:00.000+01:00</published><updated>2010-04-28T10:36:30.606+01:00</updated><title type='text'>Por la calle de la amargura</title><content type='html'>El Fortran (en particular el programa que estoy haciendo) me trae por la calle de la amargura. En un sitio en particular, debería salirme algo cercano a 2, y me sale poco más de 1. Y se supone que lo tengo todo bien. Así que no sé, lo mismo soy idiota o no sé implementar métodos numéricos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-3196854570325004547?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/3196854570325004547/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=3196854570325004547' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3196854570325004547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3196854570325004547'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/04/por-la-calle-de-la-amargura.html' title='Por la calle de la amargura'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4573521666442798908</id><published>2010-04-06T22:39:00.002+01:00</published><updated>2010-04-06T22:42:39.913+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='polvo'/><title type='text'>Polvo en la fuente</title><content type='html'>Después de &lt;a href="http://denvite.blogspot.com/2008/11/cuanto-polvo-cabe-en-un-ordenador.html"&gt;¿Cuanto polvo cabe en un ordenador?&lt;/a&gt; tengo una segunda parte que contar: hoy he tenido que acudir de urgencia a un cliente porque se le había apagado y no le encendía el ordenador en que tiene todos los datos de la empresa.&lt;br /&gt;&lt;br /&gt;Sí, lo adivinan: polvo en la fuente de alimentación. El ventilador se paró, la fuente se quemó, el lobo sopló y sopló y sopló y el servidor se cayó.&lt;br /&gt;&lt;br /&gt;Unas horas más tarde, todas las piezas excepto fuente y carcasa habían sido transferidas a una carcasa nueva, con una fuente nueva.&lt;br /&gt;&lt;br /&gt;Consejo: nunca pongan un ordenador con el ventilador hacia arriba.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4573521666442798908?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4573521666442798908/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4573521666442798908' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4573521666442798908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4573521666442798908'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/04/polvo-en-la-fuente.html' title='Polvo en la fuente'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7136871973702749822</id><published>2010-03-29T09:28:00.002+01:00</published><updated>2010-03-29T09:40:49.288+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fortran'/><category scheme='http://www.blogger.com/atom/ns#' term='Makefile'/><title type='text'>Makefile para Fortran 95 cuando se usan módulos</title><content type='html'>En mi trabajo tengo que usar módulos de Fortran 95, y no solamente usarlos, sino a veces crearlos. Vienen a ser como las bibliotecas compartidas de C, pero su gestión es distinta. Desde unos puntos de vista, más fea y engorrosa, y desde otros, más simple y clara.&lt;br /&gt;&lt;br /&gt;En este caso, los ficheros &lt;span class="fichero"&gt;.mod&lt;/span&gt; vienen a hacer el papel de los ficheros &lt;span class="fichero"&gt;.h&lt;/span&gt; de C, solo que no se pueden escribir a mano, ya que no son ficheros de texto. Se generan al compilar los ficheros fuente de Fortran que contienen módulos.&lt;br /&gt;&lt;br /&gt;Por esa razón me ha costado un poco hacerme a trabajar con ellos, en particular en los &lt;span class="fichero"&gt;Makefile&lt;/span&gt;s, pero finalmente creo que ya tengo cómo tratarlos:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;&lt;br /&gt;testprogram : testprogram.o testmodule.o&lt;br /&gt; gfortran -J. -o testprogram testprogram.o testmodule.o&lt;br /&gt;&lt;br /&gt;%.o : %.F95&lt;br /&gt; gfortran -J. -c -o $@ $&lt;&lt;br /&gt;&lt;br /&gt;testprogram.o : testmodule.mod&lt;br /&gt;&lt;br /&gt;%.mod : %.o&lt;br /&gt; @&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Esa simple arroba hace el papel de línea de órdenes vacía que no causa errores, y, al depender el módulo del objeto, depende transitivamente de su fichero fuente, con lo que cambiar éste hace saltar la regla, se detecta que el objeto no está actualizado y se recompila, creando el módulo en el proceso. Poco importa que después la regla para el módulo vaya a ser invocada cuando ya no sea necesaria por tener ya el módulo, porque no hará nada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7136871973702749822?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7136871973702749822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7136871973702749822' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7136871973702749822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7136871973702749822'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/03/makefile-para-fortran-95-cuando-se-usan.html' title='Makefile para Fortran 95 cuando se usan módulos'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5197489050077578467</id><published>2010-03-24T18:24:00.003Z</published><updated>2010-03-24T18:32:13.741Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opinión'/><category scheme='http://www.blogger.com/atom/ns#' term='aMule'/><category scheme='http://www.blogger.com/atom/ns#' term='Meta'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Como no pueden ganar, intentan amenazar</title><content type='html'>Artículo cruzado desde mi &lt;a href="http://envite.blogspot.com"&gt;bitácora principal&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://envite.blogspot.com/2010/03/como-no-pueden-ganar-intentan-amenazar.html"&gt;Como no pueden ganar, intentan amenazar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por favor, los comentarios allí, gracias.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 3px double blue;"&gt;&lt;br /&gt;Hoy, en mi aMule, he encontrado este mensaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid blue; padding: 1em; background: white; color:black;"&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*** Sesión Chat Iniciada: CoPeerRight Agency (87.222.184.204:55511) - 2010-03-23 17:21:54&lt;/span&gt;&lt;br /&gt;[17:21:54] &lt;span style="color: rgb(255, 0, 0);"&gt;*** Conectado al cliente ***&lt;/span&gt;&lt;br /&gt;[17:21:54] &lt;span style="color: rgb(0, 0, 153);"&gt;CoPeerRight Agency&lt;/span&gt;: Le recordamos que la obra - Daybreakers - esta protegida por la ley Espanola de Propiedad Intelectual (LEY 23/2006, de 7 de julio) a titulo de derechos de autor y por Tratados Internacionales. Unicamente el titular de estos derechos puede decidir si la obra ha de ser divulgada y en que forma. La puesta a disposicion, distribucion sin autorizacion y en ciertos casos, la reproduccion son ilicitas.&lt;br /&gt;[17:22:00] &lt;span style="color: rgb(0, 0, 153);"&gt;CoPeerRight Agency:&lt;/span&gt; Le instamos a abandonar la descarga y suprimir los ficheros ilegales de su lista de intercambio. En caso contrario, los titulares de los derechos podran adoptar medidas judiciales para la defensa de los mismos. Este mensaje no viola ningun derecho a la privacidad. Se limita a utilizar las caracteristicas comunes de los programas de intercambio de ficheros.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;En primer lugar, ¿ha visualizado alguien de esa tal CoPeerAgency los archivos que comparto a fin de comprobar si se trata de la obra que dicen proteger?&lt;br /&gt;&lt;br /&gt;En segundo lugar, ¿todavía no se enteran de que, caso de que efectivamente estuviera compartiendo tal obra, no cometería ningún delito sino un ilícito civil?&lt;br /&gt;&lt;br /&gt;En tercer lugar, ¿tan mala es la susodicha película que quieren compensar su fracaso en taquilla con multas a los internautas?&lt;br /&gt;&lt;br /&gt;En cuarto lugar, ¿qué derecho tienen a meterse en mi casa, en mi pantalla, a amenazarme?&lt;br /&gt;&lt;br /&gt;Y para acabar, si tengo derecho a ver y probar un coche antes de comprarlo, ¿qué bula se creen que tienen los que contratan a esos, llamémosles, detectives para evitar que haga lo mismo antes de ir al cine?&lt;br /&gt;&lt;br /&gt;Les aseguro que ahora sí que no iré a ver dicha película.&lt;br /&gt;&lt;br /&gt;Por cierto, la red desde la que se conectan estos asaltantes de pantallas es la &lt;tt&gt;JAZZTEL-TRIPLEPLAY&lt;/tt&gt;, propiedad de Jazz Telecom S.A. (red &lt;tt&gt;87.222.0.0/16&lt;/tt&gt;). Y lo siento por el resto de clientes de esa empresa, pero creo que los voy a bloquear por completo de acceder a mi sistema.&lt;br /&gt;&lt;br /&gt;Si quieren más información (sesgada, por supuesto) sobre estos invasores de intimidad, pueden leer &lt;a href="http://www.elpais.com/articulo/portada/CoPeerRight/llega/Espana/luchar/pirateria/elpcibpor/20060119elpcibpor_2/Tes"&gt;este artículo&lt;/a&gt; de El País.&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/4169924640156861597-5197489050077578467?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://envite.blogspot.com/2010/03/como-no-pueden-ganar-intentan-amenazar.html' title='Como no pueden ganar, intentan amenazar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5197489050077578467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5197489050077578467'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/03/como-no-pueden-ganar-intentan-amenazar.html' title='Como no pueden ganar, intentan amenazar'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4279530704982872032</id><published>2010-03-21T20:14:00.003Z</published><updated>2010-03-21T20:20:07.603Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Portátiles'/><title type='text'>Bolas enfriadoras</title><content type='html'>Hace un tiempo comenté que, para evitar el recalentamiento de mi portátil, &lt;a href="http://denvite.blogspot.com/2009/02/trabas.html"&gt;lo levanto sobre trabas de la ropa&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cuando eso no basta, por ejemplo, porque fuerzo al ordenador a trabajar al 100% durante horas, lo que hago es ponerle debajo de la entrada del ventilador unas bolas enfriadoras. Las mismas bolas plásticas rellenas de gel que se guardan en el congelador y que uso para enfriar los refrescos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4279530704982872032?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4279530704982872032/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4279530704982872032' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4279530704982872032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4279530704982872032'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/03/bolas-enfriadoras.html' title='Bolas enfriadoras'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-328437858539690991</id><published>2010-03-14T23:46:00.003Z</published><updated>2010-03-15T00:03:49.395Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Discos duros'/><title type='text'>Disco duro externo (II)</title><content type='html'>Mis problemas de espacio se han terminado (otra vez). He vuelto a comprar un disco duro externo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://t-visto.com/imagenes/productos/datastor/discoexterno_500gb_zoom.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 110px;" src="http://t-visto.com/imagenes/productos/datastor/discoexterno_500gb_zoom.jpg" border="0" alt="" /&gt;&lt;/a&gt;Esta vez se trata de una caja &lt;a href="http://t-visto.com/productos/datastor/discoexterno_250gb.htm"&gt;Datastor&lt;/a&gt; de &lt;a href="http://t-visto.com/"&gt;TVISTO&lt;/a&gt;. Al contrario de lo que dice la página, trae un disco SAMSUNG de 1TB que no he tardado ni un cuarto de hora en poner a formatear como ext3 (venía con NTFS y, aunque no es un mal sistema de ficheros, es un problema en Linux porque hay que asignarlo a un usuario o todos los ficheros quedan como propiedad de root).&lt;br /&gt;&lt;br /&gt;Y luego, para completar la jugada, y porque no aguanto más ver esos ficheros llamados fsck.0000 y no hago mucho eso de dejarle mis discos a otros, pues el disco que tenía formateado con VFAT ha pasado también a ser ext3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-328437858539690991?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/328437858539690991/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=328437858539690991' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/328437858539690991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/328437858539690991'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/03/disco-duro-externo-ii.html' title='Disco duro externo (II)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-9143981257949193110</id><published>2010-02-27T12:22:00.002Z</published><updated>2010-02-27T12:30:48.287Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>¿"name" no estaba fuera de servicio?</title><content type='html'>Estaba creando un formulario para una aplicación de Facebook que estoy escribiendo, por puro placer de probar, y resulta que no funcionaba.&lt;br /&gt;&lt;br /&gt;Y claro, estaba probando a poner en los campos el atributo &lt;span class="fichero"&gt;id&lt;/span&gt;, pero no el atributo &lt;span class="comando"&gt;name&lt;/span&gt;, porque yo pensaba que &lt;span class="comando"&gt;name&lt;/span&gt; ya no se usa. Pero resulta que en los formularios es justamente lo que se usa.&lt;br /&gt;&lt;br /&gt;Pues nada, una para ver y otra para aprender.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-9143981257949193110?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/9143981257949193110/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=9143981257949193110' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/9143981257949193110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/9143981257949193110'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/02/name-no-estaba-fuera-de-servicio.html' title='¿&quot;name&quot; no estaba fuera de servicio?'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4089871332096107500</id><published>2010-01-22T19:24:00.003Z</published><updated>2010-01-22T19:56:25.650Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='WRT54G'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomato'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes Inalámbricas'/><title type='text'>Enrutador inalámbrico (II)</title><content type='html'>Pues bueno, aquí estamos otra vez.&lt;br /&gt;&lt;br /&gt;Como &lt;a href="http://denvite.blogspot.com/2010/01/enrutador-inalambrico.html"&gt;escribí ayer&lt;/a&gt;, el enrutador inalámbrico &lt;a href="http://www.linksysbycisco.com/EU/es/products/WRT54GL"&gt;WRT54GL&lt;/a&gt; de &lt;a href="http://www.linksysbycisco.com/EU/es/home"&gt;Linksys&lt;/a&gt; no permite asignar direcciones IP estáticas a clientes DHCP determinados. Además, su sistema de &lt;span style="font-weight:bold;"&gt;QoS&lt;/span&gt; (Calidad de Servicio) es bastante grosero, así que me he liado la manta a la cabeza y le he instalado un «firmware» nuevo: &lt;a href="http://www.polarcloud.com/tomato"&gt;&lt;span style="font-weight:bold;"&gt;Tomato&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Tomato&lt;/span&gt; es un código interno de funcionamiento para el &lt;span style="font-weight:bold;"&gt;WRT54G&lt;/span&gt;. Es, digamos, el sistema operativo del enrutador, y sustituye al sistema operativo original de &lt;span style="font-weight:bold;"&gt;Linksys&lt;/span&gt;. En el caso de un WRT54G&lt;span style="font-weight:bold;"&gt;L&lt;/span&gt;, el sistema operativo que viene de fábrica es una versión especializada de &lt;span style="font-weight:bold;"&gt;Linux&lt;/span&gt;, adaptada por Linksys para el aparato. &lt;span style="font-weight:bold;"&gt;Tomato&lt;/span&gt; se basa en esta versión pero introduce un gran número de cambios. Algunos son visibles en la interfaz, pero otros son más profundos. Entre estos tenemos el acceso &lt;span style="font-weight:bold;"&gt;SSH&lt;/span&gt;, la posibilidad de asignar direcciones &lt;span style="font-weight:bold;"&gt;IP estáticas&lt;/span&gt; dentro o fuera del rango &lt;span style="font-weight:bold;"&gt;DHCP&lt;/span&gt;, un &lt;span style="font-weight:bold;"&gt;cortafuegos&lt;/span&gt; mejorado y un sistema de &lt;span style="font-weight:bold;"&gt;clasificación de tráfico y QoS&lt;/span&gt; muy superior al original.&lt;br /&gt;&lt;br /&gt;De momento, he clasificado el tráfico de mi red casera en función de la máquina de origen y asignado anchos de banda fijos y, la verdad, todos los que compartimos esta conexión hemos notado una mejoría sustancial.&lt;br /&gt;&lt;br /&gt;Por supuesto, no quiero desmerecer al enrutador anterior, un &lt;a href="http://www.netgear.es/productos/producto.php?prod=WGR614v6"&gt;WGR614&lt;/a&gt; de &lt;a href="http://www.netgear.es/"&gt;NETGEAR&lt;/a&gt;, que no pienso retirar, sino simplemente cambiar a otro sitio donde seguirá dándome un buen servicio inalámbrico.&lt;br /&gt;&lt;br /&gt; Seguiremos informando...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://downloads.linksysbycisco.com/images/dynamic/hero,65.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 500px; height: 267px;" src="http://downloads.linksysbycisco.com/images/dynamic/hero,65.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4089871332096107500?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4089871332096107500/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4089871332096107500' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4089871332096107500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4089871332096107500'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/01/enrutador-inalambrico-ii.html' title='Enrutador inalámbrico (II)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6695466262757796282</id><published>2010-01-21T17:57:00.005Z</published><updated>2010-01-22T19:56:49.305Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='WRT54G'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomato'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes Inalámbricas'/><title type='text'>Enrutador inalámbrico</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://downloads.linksysbycisco.com/images/dynamic/overview,68.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 244px; height: 650px;" src="http://downloads.linksysbycisco.com/images/dynamic/overview,68.png" border="0" alt="" /&gt;&lt;/a&gt;Pues sí, entre otras cosas, en estas Navidades ha caído un enrutador inalámbrico. Un bonito &lt;a href="http://www.linksysbycisco.com/EU/es/products/WRT54GL"&gt;WRT54GL&lt;/a&gt; de &lt;a href="http://www.linksysbycisco.com/EU/es/home"&gt;Linksys&lt;/a&gt;. Es como el conocido &lt;span style="font-weight:bold;"&gt;WRT54G&lt;/span&gt; pero es un &lt;span style="font-weight:bold;"&gt;WRT54G&lt;span style="font-weight:bolder;font-size:120%;"&gt;L&lt;/span&gt;&lt;/span&gt;. Y sí, la «L» es de «Linux».&lt;br /&gt;&lt;br /&gt;Este amiguito trae Linux por dentro. Y enseguida se hizo con mi red inalámbrica.&lt;br /&gt;&lt;br /&gt;Parece duro como una piedra, y su historia dice que me va a hacer un buen servicio. No obstante, tiene (al menos) un grave defecto: no se pueden asignar direcciones DHCP estáticas a dispositivos predeterminados.&lt;br /&gt;&lt;br /&gt;Ya les iré contando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6695466262757796282?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6695466262757796282/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6695466262757796282' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6695466262757796282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6695466262757796282'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/01/enrutador-inalambrico.html' title='Enrutador inalámbrico'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2013746907257134361</id><published>2010-01-21T16:23:00.003Z</published><updated>2010-01-21T16:35:42.829Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><title type='text'>Concentrador USB (II)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pointofview-online.com/userfiles/product-images/IT/Notebook/R-200017-USB-hub.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 640px; height: 480px;" src="http://www.pointofview-online.com/userfiles/product-images/IT/Notebook/R-200017-USB-hub.jpg" border="0" alt="" /&gt;&lt;/a&gt;Pues los discos externos no me han vuelto a dar fallos, así que este concentrador se va a ir a la basura (o a un cajón, que nunca se sabe). Es un &lt;a href="http://www.pointofview-online.com/showroom.php?shop_mode=product_detail&amp;product_id=58"&gt;Slimline USB2.0 HUB&lt;/a&gt; de &lt;a href="http://www.pointofview-online.com/"&gt;Point of View&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Que conste que no le echo la culpa a la empresa, no me disgustan particularmente. Puede que el problema no sea el concentrador sino el cable, o el polvo que hay en mi escritorio, pero en fin... el próximo concentrador creo que será de otra marca, solo por si acaso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2013746907257134361?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2013746907257134361/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2013746907257134361' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2013746907257134361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2013746907257134361'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/01/concentrador-usb-ii.html' title='Concentrador USB (II)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-3122903014172713889</id><published>2010-01-16T21:37:00.001Z</published><updated>2010-01-16T21:39:02.185Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><title type='text'>Concentrador USB</title><content type='html'>Uno de mis discos duros externos se desconecta constantemente. Creo que sea cosa de mi concentrador USB externo.&lt;br /&gt;&lt;br /&gt;Voy a probar a tenerlo enchufado directamente un par de días a ver qué pasa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-3122903014172713889?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/3122903014172713889/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=3122903014172713889' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3122903014172713889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3122903014172713889'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2010/01/concentrador-usb.html' title='Concentrador USB'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-516833628684733244</id><published>2009-12-31T12:34:00.003Z</published><updated>2010-01-02T01:16:37.522Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Sistemas empotrados'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Instalación'/><title type='text'>Linux en Compact Flash</title><content type='html'>Para un cliente, al que ya le he realizado otros trabajos, tengo que preparar esta vez un servidor de copias de seguridad remoto.&lt;br /&gt;&lt;br /&gt;Es bien sabido que las copias de seguridad son necesarias. Y por eso ya están haciendo copias de seguridad en un disco duro externo local. Si la máquina se estropea, se borran los datos accidentalmente, o cualquier cosa similar, recuperan los datos, que son imprescindibles para el negocio.&lt;br /&gt;&lt;br /&gt;¿Y si un ladrón entra en la oficina y se lleva la máquina con el disco externo?&lt;br /&gt;&lt;br /&gt;Ahí es donde entran las copias de seguridad remotas. Y este ordenador, que no va a tener otro trabajo que chupar datos remotos y guardarlos. Absolutamente nada más.&lt;br /&gt;&lt;br /&gt;Por eso he elegido un ordenador pequeño, con una placa un poco más pequeña que una &lt;a href="http://es.wikipedia.org/wiki/Nano-ITX"&gt;Nano-ITX&lt;/a&gt;, al que le he puesto una tarjeta Compact Flash de 2GiB como disco duro.&lt;br /&gt;&lt;br /&gt;Y aquí viene lo bueno: instalar Linux en una tarjeta Compact Flash. Y la verdad es que no ha sido difícil.&lt;br /&gt;&lt;br /&gt;La máquina es un &lt;a href="http://epatec.es/"&gt;Epatec&lt;/a&gt; &lt;a href="http://store.epatec.net/es/product_info.php?cPath=1&amp;products_id=46"&gt;eTC 2300&lt;/a&gt;. La verdad es que la empresa no me cae nada bien (por varias cosas), pero la maquinita es justo lo que necesitaba para este cliente. El arranque por PXE hizo la mitad del trabajo, y &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt; el resto. Todo fue cosa de bajar el sistema netinst (instalación por red), poner un servidor DHCP y un servidor TFTP, y configurarlos para que mandaran el netinst como sistema operativo del eTC. Con eso, el eTC arrancó y empecé una instalación de una Debian normal y corriente. Lo único con lo que tuve un poco de cuidado fue al particionar (todas las particiones usan noatime) y luego poner particiones tmpfs para ciertas secciones muy variables como /tmp o /var/lock y /var/run. Ah, y por supuesto, /etc/mtab ya no es un fichero, es un enlace a /var/run/mtab.&lt;br /&gt;&lt;br /&gt;Voy a tener un problema con /var/log. Se modifica bastante, pero no quiero perder los logs ni puedo enviarlos a otra máquina, precisamente porque si tengo que mirarlos es por un problema de red. Veremos cuanto aguanta la Compact Flash.&lt;br /&gt;&lt;br /&gt;Pues eso... no es un Linux Embebido ni nada semejante, es una Debian normal y corriente, o casi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-516833628684733244?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/516833628684733244/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=516833628684733244' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/516833628684733244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/516833628684733244'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/12/linux-en-compact-flash.html' title='Linux en Compact Flash'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2553417287681723587</id><published>2009-11-18T11:00:00.008Z</published><updated>2009-11-18T11:19:25.364Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Criptografía'/><title type='text'>Autoridad Certificadora OpenSSL</title><content type='html'>Ya &lt;a href="http://denvite.blogspot.com/2007/08/certificados-x509-para-apache-2-i-clave.html"&gt;una vez hablé&lt;/a&gt; en esta desbitácora de cómo crear una Autoridad de Certificación. Hoy retomo el tema, habiendo ampliado mis conocimientos acerca de &lt;a href="http://www.openssl.org/"&gt;OpenSSL&lt;/a&gt; un poco más desde entonces.&lt;br /&gt;&lt;br /&gt;Sin entrar en detalles de qué es y para qué sirve una Autoridad Certificadora, voy a exponer en breve los pasos a seguir para tener una CA casera propia.&lt;br /&gt;&lt;br /&gt;Estos pasos hay que llevarlos a cabo en un directorio cualquiera, dentro del cual aparecerá un nuevo directorio llamado &lt;span class="fichero"&gt;demoCA&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Generamos la clave privada de la CA con&lt;pre class="comando"&gt;openssl genrsa -des3 -out CA_key.pem 4096&lt;/pre&gt;que nos preguntará y verificará la contraseña con la que queremos proteger la clave.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Creamos el certificado autofirmado de la CA con&lt;pre class="comando"&gt;openssl req -x509 -key CA_key.pem -new -set_serial 0 -out CA_cert.pem&lt;/pre&gt;que nos preguntará varios datos. El CN no puede estar vacío.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Generamos la estructura de la CA con&lt;pre class="comando"&gt;/usr/lib/ssl/misc/CA.pl -newca&lt;/pre&gt;que nos preguntará por el certificado de la CA, a lo que responderemos&lt;pre class="comando"&gt;CA_cert.pem&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Generamos el fichero de números de serie con&lt;br /&gt;&lt;pre class="comando"&gt;echo 01 &gt; demoCA/serial&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Movemos la clave de la CA y su certificado a los sitios previstos&lt;pre class="comando"&gt;mv CA_key.pem demoCA/private/cakey.pem&lt;br /&gt;mv CA_cert.pem demoCA/cacert.pem&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Extraemos (si queremos) la cave pública de la CA a partir de la privada con&lt;pre class="comando"&gt;openssl rsa -pubout -in demoCA/private/cakey.pem -out demoCA/cakey_public.pem&lt;/pre&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Y ya tenemos nuestra CA casera lista para trabajar.&lt;br /&gt;&lt;br /&gt;&lt;div class="ojo"&gt;Ojo: no pierdas nunca la contraseña que has introducido para cifrar la clave privada de la CA. Sin esa contraseña, toda la estructura de la CA queda inutilizada.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2553417287681723587?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2553417287681723587/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2553417287681723587' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2553417287681723587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2553417287681723587'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/11/autoridad-certificadora-openssl.html' title='Autoridad Certificadora OpenSSL'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5474933792678895233</id><published>2009-11-06T12:35:00.005Z</published><updated>2009-11-06T12:46:30.719Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Correo electrónico'/><category scheme='http://www.blogger.com/atom/ns#' term='spamassasin'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Harto de correo basura que pasa el filtro</title><content type='html'>Pues eso, que me he hartado de ver que hay mensajes de correo basura que pasan el filtro de mi &lt;tt&gt;spamassasin&lt;/tt&gt;. El problema no es el programa, que funciona muy bien, sino que hay mensajes que son emitidos correctamente, con reverse-DNS y todo eso, pero que sin embargo tienen un contenido que es pura carne en lata, o eso que los &lt;a href="http://es.wikipedia.org/wiki/Monty_Python"&gt;Monty Python&lt;/a&gt; dieron en llamar &lt;span style="font-weight:bold;"&gt;SPAM&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Pues nada, ni corto ni perezoso, y como ya me he hartado (y me fío del discriminado bayesiano del &lt;tt&gt;spamassasin&lt;/tt&gt;) me he ido al &lt;span class="fichero"&gt;/etc/spamassassin/local.cf&lt;/span&gt; y he añadido estas líneas al final:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;&lt;br /&gt;score BAYES_80 4.0&lt;br /&gt;score BAYES_95 4.5&lt;br /&gt;score BAYES_99 5.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hala. Como mi umbral está en 5, arreglado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-5474933792678895233?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/5474933792678895233/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=5474933792678895233' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5474933792678895233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5474933792678895233'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/11/harto-de-correo-basura-que-pasa-el.html' title='Harto de correo basura que pasa el filtro'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-226331207178156533</id><published>2009-10-24T12:02:00.006+01:00</published><updated>2010-03-18T17:54:02.021Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Humor'/><title type='text'>Lanza, lanza, a ver cómo lo haces esta vez</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.imgur.com/Ev7jj.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_GjEUrZgY4vk/S6JokDNEECI/AAAAAAAAAMI/amhmtY01jmA/s400/Ev7jj.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5450033467616399394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Más información en &lt;a href="http://www.genbeta.com/actualidad/imagen-de-la-semana-linus-torvalds-es-un-cachondo"&gt;http://www.genbeta.com/actualidad/imagen-de-la-semana-linus-torvalds-es-un-cachondo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-226331207178156533?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/226331207178156533/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=226331207178156533' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/226331207178156533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/226331207178156533'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/10/reite-reite.html' title='Lanza, lanza, a ver cómo lo haces esta vez'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GjEUrZgY4vk/S6JokDNEECI/AAAAAAAAAMI/amhmtY01jmA/s72-c/Ev7jj.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7405808587392260436</id><published>2009-10-20T23:36:00.004+01:00</published><updated>2009-10-20T23:58:48.870+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Discos duros'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Copias de seguridad'/><title type='text'>No perder datos ni tiempo</title><content type='html'>En el mundo empresarial los datos son dinero, y el tiempo también. Un estudio de arquitectura, por ejemplo, que pierda sus datos (planos, informes, fotografías, etc.) irá a la ruina o, como mínimo, pasará un muy mal trago. Así que hay que asegurarse de que los datos no se pierden, para lo que tenemos soluciones como &lt;span style="font-weight:bolder;"&gt;RAID 1&lt;/span&gt; para los fallos de los discos.&lt;br /&gt;&lt;br /&gt;Pero los fallos de los discos no son la única causa de que se pierdan datos. De hecho, ni siquiera son la principal. Un error del usuario al borrar un fichero, o un fallo del programa, o cualquier otra causa que vaya al sistema RAID y corrompa el sistema de ficheros puede suponer un desastre casi tan grave, y mucho más probable. Así que hay que asegurarse de que los datos están en más de un sitio a la vez. &lt;span style="font-weight:bold;"&gt;RAID 1&lt;/span&gt; solamente nos permite seguir trabajando si un disco se estropea mientras llega su recambio. Para las copias de seguridad, tenemos el maravilloso &lt;span style="font-weight:bolder;" class="comando"&gt;rsync&lt;/span&gt; y su intefaz &lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.dirvish.org/"&gt;dirvish&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Y como comentaba arriba, no se puede tampoco perder tiempo, así que los datos no solamente deben estar a salvo en la copia de seguridad, sino que en caso de que falle la máquina deben poder ser utilizados inmediatamente mientras el servidor de ficheros es reparado, con lo que las copias de seguridad deben realizarse en un disco externo que pueda enchufarse, provisionalmente, a otra máquina.&lt;br /&gt;&lt;br /&gt;Este es el sistema que he montado para una empresa semejante a la que ponía de ejemplo: Un servidor dedicado, con dos discos duros iguales (pero de distintos lotes, para evitar que puedan tener los mismos microdefectos de fabricación que puedan causar su mortalidad infantil o senil a la vez) en &lt;span style="font-weight:bold;"&gt;RAID 1&lt;/span&gt;, salvo el sector de arranque y la partición &lt;span class="fichero"&gt;/boot&lt;/span&gt;, que son idénticos en ambos. La zona RAID particionada a su vez mediante &lt;span style="font-weight:bold;"&gt;LVM&lt;/span&gt;, con una parte para el sistema y otra separada para los datos de los usuarios, que se sirven mediante &lt;span style="font-weight:bold;"&gt;SAMBA&lt;/span&gt;. Y finalmente, un disco duro externo, identificado mediante su número de serie, con formato FAT, donde se realizan las copias de seguridad mediante &lt;span style="font-weight:bold;"&gt;dirvish&lt;/span&gt;, que es montada justo antes de copiar y desmontada justo al terminar.&lt;br /&gt;&lt;br /&gt;Este disco externo pueden los usuarios desenchufarlo en cualquier momento (aunque les recomiendo que no lo hagan a las horas de las copias ;) ) para disponer de las copias de seguridad en otra máquina, aunque debido a su formato se pierda una de las mejores características de &lt;span style="font-weight:bold;"&gt;dirvish&lt;/span&gt;, los enlaces duros entre copias de distintas fechas, y haya (además) habido que desactivar las opciones de copia de permisos y propietarios.&lt;br /&gt;&lt;br /&gt;Así, sea cual sea el incidente (salvo un desastre mayor de la máquina, como un incendio), los usuarios podrán acceder a sus datos de trabajo.&lt;br /&gt;&lt;br /&gt;Para alguien que levanta España, no los vamos a dejar sin trabajar, ¿no?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7405808587392260436?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7405808587392260436/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7405808587392260436' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7405808587392260436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7405808587392260436'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/10/no-perder-datos-ni-tiempo.html' title='No perder datos ni tiempo'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-730521903827887049</id><published>2009-09-11T21:03:00.003+01:00</published><updated>2009-09-11T21:13:13.517+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opinión'/><category scheme='http://www.blogger.com/atom/ns#' term='Libertonia'/><category scheme='http://www.blogger.com/atom/ns#' term='Meta'/><title type='text'>Volviendo al hogar</title><content type='html'>Gracias a &lt;a href="http://libertonia.escomposlinux.org/user/iarenaza/stories"&gt;iarenaza&lt;/a&gt;, que confió en mí y en su propio buen criterio, ya estoy de vuelta en el lugar en que todo empezó, el sitio en que empecé a «&lt;span style="font-style:italic;"&gt;bloguear&lt;/span&gt;» (yo prefiero decir «escribir») mis historias informáticas: &lt;a href="http://libertonia.escomposlinux.org"&gt;la casa de la rubia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Libertonia&lt;/span&gt; es, quizá, la mejor página sobre informática de España: los artículos no pasan a portada hasta que han sido revisados por los usuarios, y si las cosas son como eran, eso no ocurre si son tendenciosos, están mal escritos o cualquier otro defecto similar.&lt;br /&gt;&lt;br /&gt;Realmente pensé que Libertonia estaba muerta, pero parece que no: &lt;a href="http://espanol.answers.yahoo.com/question/index?qid=20080427180947AAARB1m"&gt;no está muerta, simplemente yace eternamente&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-730521903827887049?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://libertonia.escomposlinux.org/user/Envite/stories' title='Volviendo al hogar'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/730521903827887049/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=730521903827887049' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/730521903827887049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/730521903827887049'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/09/volviendo-al-hogar.html' title='Volviendo al hogar'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2669553988524502492</id><published>2009-09-01T11:46:00.003+01:00</published><updated>2009-09-01T22:34:40.436+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fortran'/><title type='text'>RESHAPE es ineficiente</title><content type='html'>&lt;a href="http://es.wikipedia.org/wiki/Fortran"&gt;Fortran&lt;/a&gt; es un lenguaje pensado para escribir en el ordenador fórmulas matemáticas, o más en general, cálculos científicos. Y es muy bueno trabajando con matrices multidimensionales: se puede escribir&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;real(4) :: a(64,64,64)&lt;br /&gt;real(4) :: b(10,10,10)&lt;br /&gt;&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;b=a(1:10,1:10,1:10)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;y así, sin necesidad de bucles, copiamos un trozo de una matriz en la otra. O también podemos, para rellenar de datos una matriz:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;real(4) :: a(1:64,1:64,1:64)&lt;br /&gt;integer :: i,j,k&lt;br /&gt;&lt;br /&gt;a=RESHAPE( (/ ( (/ ( (/ ( REAL((i-1+(64/2))/64)+1.0 ,k=1,64) /) ,j=1,64) /) ,i=1,64) /) , (/64,64,64/) )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;para rellenar un cubo de datos de 64*64*64 con los valores 1 y 2. Esto es lo mismo que&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;real(4) :: a(1:64,1:64,1:64)&lt;br /&gt;integer :: i,j,k&lt;br /&gt;&lt;br /&gt;do k=1,64&lt;br /&gt; do j=1,64&lt;br /&gt;  do i=1,64&lt;br /&gt;   a(i,j,k)=REAL((i-1+(64/2))/64)+1.0&lt;br /&gt;  end do&lt;br /&gt; end do&lt;br /&gt;end do&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;aunque la filosofía no es la misma. En el primer caso, creamos una ristra de 64*64*64 valores que después adaptamos a un cubo de lado 64. En el segundo caso calculamos los valores uno por uno y los vamos colocando en sus lugares de memoria. El segundo código parece más ineficiente, y puede que el compilador no lo sepa optimizar bien... pero el primero es el realmente ineficiente: compilarlo puede tardar muchísimo más, incluso hacerse eterno con valores mayores, mientras que el segundo se compila en un instante y se ejecuta en poco tiempo.&lt;br /&gt;&lt;br /&gt;Recordemos, pues, que salvo en determinadas ocasiones, explícito es mejor que implícito, por mucho que les duela a los fortranistas de toda la vida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2669553988524502492?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2669553988524502492/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2669553988524502492' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2669553988524502492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2669553988524502492'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/09/reshape-es-ineficiente.html' title='RESHAPE es ineficiente'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5520347309859117564</id><published>2009-08-17T21:16:00.011+01:00</published><updated>2010-03-18T17:50:50.234Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Wine'/><category scheme='http://www.blogger.com/atom/ns#' term='sonido'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='juegos'/><title type='text'>StarCraft en Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.winehq.org/"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 100px; height: 157px;" src="http://1.bp.blogspot.com/_GjEUrZgY4vk/S6Jnr2Yt5JI/AAAAAAAAAL0/EiFiZQ4Lgkc/s400/winehq_logo_glass_sm.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5450032502102942866" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://eu.blizzard.com"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px; height: 50px;" src="http://3.bp.blogspot.com/_GjEUrZgY4vk/S6JnA993pyI/AAAAAAAAALg/wT2z3y2p5yk/s400/starlogob.jpg" border="0" alt="" /&gt;&lt;/a&gt;Acabo de volver a jugar a &lt;a href="http://eu.blizzard.com/en/starcraft/index.html"&gt;StarCraft&lt;/a&gt;, ese maravilloso juego de &lt;a href="http://eu.blizzard.com/es/"&gt;Blizzard&lt;/a&gt; ambientado en el espacio. Y por supuesto, lo he hecho en Linux, aunque se trata de un juego que tengo para otro sistema operativo. Y ello gracias a una capa de emulación del API llamada &lt;a href="http://www.winehq.org/"&gt;Wine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El objetivo de &lt;span style="font-weight:bold;"&gt;Wine&lt;/span&gt; es precisamente que los programas creados para Windows puedan ser ejecutados en Linux. Para ello, pone una capa entre el programa y el sistema de tal manera que las peticiones a Windows del programa son capturadas por Wine, que las transforma en peticiones a Linux.&lt;br /&gt;&lt;br /&gt;Volver a tener a los Zerg bajo mis órdenes ha sido una maravillosa experiencia. Ya no se hacen juegos como los de antes, con buena jugabilidad y un guión serio.&lt;br /&gt;&lt;br /&gt;La pena es que &lt;span style="font-weight:bold;"&gt;Wine&lt;/span&gt; no destaca precisamente por su manejo del sonido. Tiene la mala costumbre de requerir acceso exclusivo al sistema de sonido, ya sea OSS o ALSA. Y eso en KDE es una mala idea: o juegas sin sonido, lo que no es agradable, o no tienes sonido en el sistema. Yo, la verdad, si me pongo a jugar, quiero el sonido. Así que uso el siguiente truco:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;~/.wine/dosdevices/c:/Archivos de programa/Starcraft$ artsdsp sh wine StarCraft.exe&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-5520347309859117564?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/5520347309859117564/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=5520347309859117564' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5520347309859117564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5520347309859117564'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/08/starcraft-en-linux.html' title='StarCraft en Linux'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GjEUrZgY4vk/S6Jnr2Yt5JI/AAAAAAAAAL0/EiFiZQ4Lgkc/s72-c/winehq_logo_glass_sm.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8705480671084854500</id><published>2009-07-27T14:05:00.002+01:00</published><updated>2009-07-27T14:08:38.437+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Línea de órdenes (shell)'/><title type='text'>Copiar propiedades en Subversion</title><content type='html'>Un pequeño truco que utilizo para asignar a un fichero versionado con &lt;span style="font-weight:bold;"&gt;Subversion&lt;/span&gt; una propiedad tal y como la tengo en otro fichero. Normalmente la utilizo para la propiedad &lt;span class="fichero"&gt;svn:keywords&lt;/span&gt; que suele tener el mismo valor en todos los ficheros de cada uno de mis proyectos.&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;svn propset svn:keywords "`svn propget svn:keywords ficheroviejo.c`" ficheronuevo.c&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8705480671084854500?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8705480671084854500/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8705480671084854500' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8705480671084854500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8705480671084854500'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/07/copiar-propiedades-en-subversion.html' title='Copiar propiedades en Subversion'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6210067643794370867</id><published>2009-05-27T18:11:00.006+01:00</published><updated>2010-03-18T17:43:37.635Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='nVidia'/><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Soporte 3D para una tarjeta nVidia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.nvidia.es/page/home.html"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 176px; height: 40px;" src="http://2.bp.blogspot.com/_GjEUrZgY4vk/S6JmNDkJGSI/AAAAAAAAALM/j2bFcxZmNkw/s200/nvidia_logo.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.debian.org/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 75px; height: 92px;" src="http://lh5.ggpht.com/_GjEUrZgY4vk/S6Jdnt4gv-I/AAAAAAAAAFE/yF2Fhxt4CLw/openlogo-75.png" alt="" border="0" /&gt;&lt;/a&gt;Comentaba ayer &lt;a href="http://denvite.blogspot.com/2009/05/google-earth-en-debian.html"&gt;mis aventuras con Google Earth&lt;/a&gt;, cuyo resultado fue necesitar la aceleración 3D de mi tarjeta gráfica, una nVidia Quadro NVS 110M.&lt;br /&gt;&lt;br /&gt;Desde que reinstalé la máquina, hace poco, con Lenny, había estado trabajando con el controlador libre &lt;span class="fichero"&gt;nv&lt;/span&gt;, que fue automáticamente puesto en su sitio por la autoconfiguración de Xorg. Y la verdad, sin problemas.&lt;br /&gt;&lt;br /&gt;Ahora bien, poner a funcionar la aceleración 3D tampoco ha sido demasiado complicado. En primer lugar, tuve que compilar el módulo del núcleo, cosa que module-assistant hizo por mí:&lt;pre class="comando"&gt;m-a a-i nvidia&lt;/pre&gt;En segundo lugar, añadir una línea a mi fichero &lt;span class="fichero"&gt;/etc/X11/xorg.conf&lt;/span&gt;: cambiar&lt;pre class="fichero"&gt;Section "Device"&lt;br /&gt;        Identifier      "Configured Video Device"&lt;br /&gt;EndSection&lt;/pre&gt;por&lt;pre class="fichero"&gt;Section "Device"&lt;br /&gt;        Identifier      "Configured Video Device"&lt;br /&gt;        Driver          "nvidia"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;Y en tercer lugar, simplemente reiniciar la máquina. Nada del otro mundo, ¿verdad?&lt;br /&gt;&lt;br /&gt;Lo que sí he notado es que, aparte de que la aceleración 3D ahora funciona, ha cambiado el tamaño de mis fuentes en la pantalla, con lo que, aparte de que he tenido que reordenar todos los iconos del escritorio, algunas aplicaciones que dependen del tamaño de la fuente dan mínimos problemas. Por ejemplo, gnumeric, que establece el alto de las líneas en función de la fuente.&lt;br /&gt;&lt;br /&gt;Pero bueno, detalles menores que, en realidad, no molestan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6210067643794370867?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6210067643794370867/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6210067643794370867' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6210067643794370867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6210067643794370867'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/05/soporte-3d-para-una-tarjeta-nvidia.html' title='Soporte 3D para una tarjeta nVidia'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GjEUrZgY4vk/S6JmNDkJGSI/AAAAAAAAALM/j2bFcxZmNkw/s72-c/nvidia_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-1958945289051369467</id><published>2009-05-27T00:02:00.005+01:00</published><updated>2010-03-18T17:38:08.803Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Earth en Debian</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://earth.google.com/images/googleearth.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 55px;" src="http://1.bp.blogspot.com/_GjEUrZgY4vk/S6Jk5c5vIaI/AAAAAAAAAKo/CQue_AcO7w0/s200/googleearth.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.debian.org/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 75px; height: 92px;" src="http://lh5.ggpht.com/_GjEUrZgY4vk/S6Jdnt4gv-I/AAAAAAAAAFE/yF2Fhxt4CLw/openlogo-75.png" alt="" border="0" /&gt;&lt;/a&gt;La verdad, esperaba encontrarme el &lt;a href="http://earth.google.com/"&gt;Google Earth&lt;/a&gt; empaquetadito y todo, es que &lt;a href="http://www.debian.org/index.es.html"&gt;Debian&lt;/a&gt; me tiene malacostumbrado, la verdad, pero bueno, tenemos un precioso paquete llamado &lt;a href="http://packages.debian.org/lenny/googleearth-package"&gt;&lt;span class="paquete"&gt;googleearth-package&lt;/span&gt;&lt;/a&gt; que lo que hace es bajarse el instalador oficial de Google y crear un paquete a partir de él, muy al estilo Debian.&lt;br /&gt;&lt;br /&gt;Y la verdad, &lt;span class="paquete"&gt;googleearth-package&lt;/span&gt; se instaló sin problemas y &lt;span class="comando"&gt;make-googleearth-package&lt;/span&gt; hizo su trabajo: él solito se bajó el instalador, lo descomprimió, compiló y empaquetó, y me dejó un bonito paquete. O casi.&lt;br /&gt;&lt;br /&gt;El casi viene por un par de detalles. El primero es que la versión de &lt;span class="paquete"&gt;googleearth-package&lt;/span&gt; de Debian 5.0 (llamada Lenny) no está pensada para la versión actual (en mi caso, la 5.0.11733.9347) del instalador de Google Earth, así que no bastó con decir &lt;span class="comando"&gt;make-googleearth-package&lt;/span&gt; sino que en su lugar tuve que decir &lt;span class="comando"&gt;make-googleearth-package --force&lt;/span&gt;. El segundo es que &lt;span class="comando"&gt;make-googleearth-package&lt;/span&gt; no funciona bien en un directorio que tenga el bit SGID activado, y el directorio donde lo intenté las primeras veces (un subdirectorio de &lt;span class="fichero"&gt;/usr/src&lt;/span&gt;) lo tiene.&lt;br /&gt;&lt;br /&gt;Y así, prácticamente en dos patadas, tuve mi Google Earth funcionando. Eso sí, funcionando a pedales: no tenía aceleración 3D en el ordenador. &lt;q&gt;Pero eso es otra historia, y deberá ser contada en otra ocasión (&lt;cite&gt;Ende&lt;/cite&gt;)&lt;/q&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-1958945289051369467?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/1958945289051369467/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=1958945289051369467' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1958945289051369467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1958945289051369467'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/05/google-earth-en-debian.html' title='Google Earth en Debian'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GjEUrZgY4vk/S6Jk5c5vIaI/AAAAAAAAAKo/CQue_AcO7w0/s72-c/googleearth.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2368073133178661501</id><published>2009-05-18T22:20:00.004+01:00</published><updated>2009-05-18T22:30:13.004+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aMule'/><category scheme='http://www.blogger.com/atom/ns#' term='Interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox/Iceweasel'/><title type='text'>Descargar enlaces ed2k:// desde Firefox</title><content type='html'>La verdad es que he estado mucho tiempo sin poder hacerlo, pero tampoco me he puesto a buscarlo hasta hoy, y lo he resuelto en un par de minutos estando bastante cansado, con lo que quiero decir que la solución es bastante tonta.&lt;br /&gt;&lt;br /&gt;Por un lado, &lt;span style="font-weight: bold;"&gt;aMule&lt;/span&gt; viene con un programa que se llama &lt;span class="comando"&gt;ed2k&lt;/span&gt; que se encarga, precisamente, de pasarle enlaces &lt;span class="codigo"&gt;ed2k://&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Por otro lado, en el propio &lt;span style="font-weight: bold;"&gt;Iceweasel&lt;/span&gt; (o, para los que no usen Debian, &lt;span style="font-weight: bold;"&gt;Firefox&lt;/span&gt;), hay que cambiar la configuración a mano en esa página tan peligrosa y «no apta para manazas» llamada &lt;span class="codigo"&gt;about:config&lt;/span&gt;. Ahí hay que añadir a mano un a nueva clave, &lt;span class="codigo"&gt;network.protocol-handler.app.ed2k&lt;/span&gt;, y darle como valor &lt;span class="codigo"&gt;/usr/bin/ed2k&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Y eso es todo. A partir de ese momento, basta pinchar en un enlace y ya el &lt;span style="font-weight:bold;"&gt;aMule&lt;/span&gt; se pondrá inmediatamente a bajarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2368073133178661501?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2368073133178661501/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2368073133178661501' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2368073133178661501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2368073133178661501'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/05/descargar-enlaces-ed2k-desde-firefox.html' title='Descargar enlaces ed2k:// desde Firefox'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6127227826416887976</id><published>2009-05-01T18:01:00.003+01:00</published><updated>2010-03-18T17:36:06.661Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Copias de seguridad'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='Portátiles'/><title type='text'>Instalar Lenny</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.debian.org/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 75px; height: 92px;" src="http://lh5.ggpht.com/_GjEUrZgY4vk/S6Jdnt4gv-I/AAAAAAAAAFE/yF2Fhxt4CLw/openlogo-75.png" alt="" border="0" /&gt;&lt;/a&gt;Con las copias de seguridad hechas (gracias a mi bienamado &lt;a href="http://www.dirvish.org"&gt;dirvish&lt;/a&gt;), voy a hacer una instalación desde cero de &lt;a href="http://www.debian.org/"&gt;&lt;span style="font-weight: bold;"&gt;Debian 5.0&lt;/span&gt;&lt;/a&gt; (antes conocida como &lt;span style="font-weight: bold;"&gt;Lenny&lt;/span&gt;). Ya después haré otras cosas feas como pasarme a &lt;span style="font-style: italic;"&gt;testing&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;Squeeze&lt;/span&gt;) o incluso a &lt;span style="font-style: italic;"&gt;unstable&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;Sid&lt;/span&gt;), con tal de que no se suban a la parra de KDE 4, que no quiero ni ver (al menos por ahora), pero quiero disfrutar de uno o dos días de estabilidad con mi portátil antes de lanzarme.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6127227826416887976?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6127227826416887976/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6127227826416887976' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6127227826416887976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6127227826416887976'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/05/instalar-lenny.html' title='Instalar Lenny'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_GjEUrZgY4vk/S6Jdnt4gv-I/AAAAAAAAAFE/yF2Fhxt4CLw/s72-c/openlogo-75.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6293469651875744304</id><published>2009-05-01T10:37:00.005+01:00</published><updated>2009-05-01T12:33:02.673+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Copias de seguridad'/><title type='text'>Disco duro externo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GjEUrZgY4vk/SfrSTkYGBLI/AAAAAAAAAE0/q4iM_gVw8ik/s1600-h/p1010722.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 259px; height: 194px;" src="http://1.bp.blogspot.com/_GjEUrZgY4vk/SfrSTkYGBLI/AAAAAAAAAE0/q4iM_gVw8ik/s400/p1010722.jpg" alt="" id="BLOGGER_PHOTO_ID_5330804342570484914" border="0" /&gt;&lt;/a&gt;Finalmente me he comprado un nuevo disco duro externo. En realidad no ha sido un disco externo, sino un disco normal y corriente y una de esas cajas externas para meter el disco dentro.&lt;br /&gt;&lt;br /&gt;La caja es la que se ve en la foto: una «MADE IN CHINA» de padre desconocido cuya página &lt;span style="font-style: italic;"&gt;web&lt;/span&gt; soy incapaz de encontrar. El disco, en cambio, es un &lt;a href="http://www.seagate.com"&gt;Seagate&lt;/a&gt; Barracuda (el &lt;a href="http://www.seagate.com/ww/v/index.jsp?name=barracuda-7200-12-sata-3-0-gb/s-500gb-hd-st3500418as&amp;amp;vgnextoid=c501895c8ccce110VgnVCM100000f5ee0a0aRCRD&amp;amp;"&gt;ST3 500 41 8AS&lt;/a&gt;), un disco con interfaz SATA en el que creo que puedo confiar.&lt;br /&gt;&lt;br /&gt;Ya les iré contando. De momento, voy a ponerme a configurar el &lt;a href="http://www.dirvish.org"&gt;dirvish&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6293469651875744304?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6293469651875744304/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6293469651875744304' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6293469651875744304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6293469651875744304'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/05/disco-duro-externo_01.html' title='Disco duro externo'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GjEUrZgY4vk/SfrSTkYGBLI/AAAAAAAAAE0/q4iM_gVw8ik/s72-c/p1010722.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-1807595867899447790</id><published>2009-04-27T10:22:00.005+01:00</published><updated>2009-04-27T10:45:03.700+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Latitude'/><category scheme='http://www.blogger.com/atom/ns#' term='Dell'/><category scheme='http://www.blogger.com/atom/ns#' term='Portátiles'/><title type='text'>Servicio al cliente (II) - Refactored</title><content type='html'>&lt;a href="http://envite.blogspot.com/2009/04/servicio-al-cliente-ii.html"&gt;Comenté&lt;/a&gt; en mi &lt;a href="http://envite.blogspot.com/"&gt;bitácora usual&lt;/a&gt; hace unos minutos cómo me fue con el Servicio de &lt;span style="font-weight: bold;"&gt;Atención al cliente&lt;/span&gt; de Dell. Y quería comentarlo de nuevo aquí, con algunos detalle técnicos más de los que puedo permitirme poner allí.&lt;br /&gt;&lt;br /&gt;Viene el caso de que mi &lt;a href="http://envite.blogspot.com/2009/04/mala-suerte.html"&gt;portatil se estropeó&lt;/a&gt; este fin de semana, y hace un rato llamé al servicio de &lt;span style="font-weight: bold;"&gt;Atención al cliente&lt;/span&gt; de Dell, en particular al servicio técnico.&lt;br /&gt;&lt;br /&gt;El síntoma inicial fue que la pantalla estaba en negro. Por completo. Inicialmente pensé que tenía un problema con el salvapantallas o el ahorro de energía (lo que no sería novedad ya que llevo con problemas de ese tipo varios meses y no me he decidido a arreglarlo, sobre todo porque &lt;a href="http://denvite.blogspot.com/2009/03/estas-cosas-pasan.html"&gt;aún no tengo un disco de copias de seguridad&lt;/a&gt;), así que cambié a una consola y me empecé a mosquear: seguía en negro.&lt;br /&gt;&lt;br /&gt;A ciegas me identifiqué con la consola como superusuario y reinicié el ordenador (no es difícil, basta con ir a una consola que sepas o suponga que on está abierta y poner el nombre de usuario, esperar un poco, poner la contraseña, esperar dos pocos, y escribir &lt;span class="comando"&gt;poweroff&lt;/span&gt;). Ahí empezó mi susto: el reinicio continuaba con la pantalla completamente en negro, tanto para la BIOS como para el GRUB como posteriormente. Curiosamente, la pantalla respondía perfectamente a las órdenes de cambio de brillo, pasando de negro oscuro a negro brillante. Apagué de nuevo el ordenador (lo tuve que hacer a lo bruto porque no me podía identificar en la consola, y no sabía por qué).&lt;br /&gt;&lt;br /&gt;Al rato conseguí una pantalla externa y la probé: el modo de vídeo del arranque era inadecuado (80x24), el texto en pantalla aparecía desdibujado y era imposible iniciar el servidor gráfico. La conclusión era evidente: el problema no era de la pantalla, sino de la tarjeta gráfica. Y en un portátil, es parte de la placa base.&lt;br /&gt;&lt;br /&gt;Al llamar hoy a Dell les indiqué los síntomas del problema, y me obligaron a hacer la prueba de acceso directo a la pantalla: encender el ordenador con la tecla &lt;span style="color: rgb(102, 102, 204);"&gt;Fn&lt;/span&gt; pulsada, introducir &lt;span class="comando"&gt;n&lt;/span&gt;  y comprobar la pantalla. Y efectivamente aparecieron en mi pantalla los colores blanco, rojo, verde y azul, confirmando mi diagnóstico de que no se trataba de la pantalla sino de la tarjeta gráfica.&lt;br /&gt;&lt;br /&gt;No consideraba yo necesaria la prueba, pero entiendo que me hicieran comprobarlo dado que muchas veces los usuarios, que no tienen apenas conocimientos sobre la máquina que usan (si se tratara de un coche no aprobarían el examen del carnet de conducir), creen que falla una cosa cuando se trata de otra.&lt;br /&gt;&lt;br /&gt;En resumen, mañana tendré un técnico en mi despacho cambiándome la placa base completa por una nueva. Así es como se cuida a los clientes: respuesta adecuada y en un tiempo adecuado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-1807595867899447790?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://envite.blogspot.com/2009/04/servicio-al-cliente-ii.html' title='Servicio al cliente (II) - &lt;i&gt;Refactored&lt;/i&gt;'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/1807595867899447790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=1807595867899447790' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1807595867899447790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1807595867899447790'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/04/servicio-al-cliente-ii-refactored.html' title='Servicio al cliente (II) - &lt;i&gt;Refactored&lt;/i&gt;'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2617039565650808950</id><published>2009-04-15T16:53:00.001+01:00</published><updated>2009-04-15T16:55:15.539+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jabber'/><category scheme='http://www.blogger.com/atom/ns#' term='Dear Lazyweb'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='XMPP'/><title type='text'>Ping en Jabber</title><content type='html'>Dear Lazyweb:&lt;br /&gt;&lt;br /&gt;¿Alguien sabe cómo hacer un ping desde un programa de Jabber?&lt;br /&gt;&lt;br /&gt;Gracias de antemano&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2617039565650808950?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2617039565650808950/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2617039565650808950' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2617039565650808950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2617039565650808950'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/04/ping-en-jabber.html' title='Ping en Jabber'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8159891026081696804</id><published>2009-04-12T00:16:00.004+01:00</published><updated>2009-04-12T00:45:35.391+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Línea de órdenes (shell)'/><title type='text'>Un pequeño truco</title><content type='html'>A veces hay que trabajar en línea de comandos (o mejor, línea de órdenes) con nombres de ficheros con espacios. Y es un problema pasarlos por las tuberías (&lt;span style="font-style:italic;"&gt;pipes&lt;/span&gt;), porque estas interpretan los espacios como separación entre argumentos.&lt;br /&gt;&lt;br /&gt;Pongamos un ejemplo: hoy enchufé mi disco externo a un ordenador Windows y se me llenó de ficheros llamados &lt;span class="fichero"&gt;Thumbs.db&lt;/span&gt;. Es un problema borrarlos uno a uno, así que lo más cómodo es usar &lt;span class="comando"&gt;find&lt;/span&gt; de una manera como ésta:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;find . -name Thumbs.db | xargs rm -rf&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pero no funciona. Un fichero que se llame &lt;span class="fichero"&gt;mountpoint/Mi Carpeta/Thumbs.db&lt;/span&gt; será entendido por &lt;span class="comando"&gt;xargs&lt;/span&gt; como dos ficheros distintos, &lt;span class="fichero"&gt;mountpoint/Mi&lt;/span&gt; y &lt;span class="fichero"&gt;Carpeta/Thumbs.db&lt;/span&gt;, que por supuesto no existen.&lt;br /&gt;&lt;br /&gt;La solución es tan sencilla como:&lt;pre class="comando"&gt;find . -name Thumbs.db | sed '{s/ /\\ /g}'| xargs rm -rf&lt;/pre&gt;utilizando &lt;span class="comando"&gt;sed&lt;/span&gt; para escapar los espacios. Ojo, que no funcionará sin las comillas sencillas para escapar las barras invertidas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8159891026081696804?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8159891026081696804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8159891026081696804' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8159891026081696804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8159891026081696804'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/04/un-pequeno-truco.html' title='Un pequeño truco'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8990624169942607583</id><published>2009-03-03T12:14:00.004Z</published><updated>2009-03-03T12:30:33.400Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Discos duros'/><category scheme='http://www.blogger.com/atom/ns#' term='Copias de seguridad'/><title type='text'>Estas cosas pasan</title><content type='html'>Lo mejor de tener un disco de copias de seguridad es que, si se te muere el disco duro, no pierdes la información.&lt;br /&gt;&lt;br /&gt;Esto es cierto incluso si se muere el disco de las copias de seguridad, que es lo que me acaba de pasar. Hace un par de semanas vi que uno de &lt;a href="http://www.lacie.com/es/products/product.htm?pid=11050"&gt;mis discos externos&lt;/a&gt; de &lt;a href="http://www.lacie.com/es/index.htm"&gt;LaCie&lt;/a&gt; no funcionaba. Precisamente el disco de mis copias de seguridad.&lt;br /&gt;&lt;br /&gt;Bueno, pues abrí la caja y vi que el disco interno era un &lt;a href="http://www.seagate.com/ww/v/index.jsp?vgnextoid=0c6099f4fa74c010VgnVCM100000dd04090aRCRD&amp;locale=es-ES"&gt;Barracuda&lt;/a&gt; SATA de &lt;a href="http://www.seagate.com/www/es-es/"&gt;Seagate&lt;/a&gt;. No es en absoluto lo que entiendo por un mal disco.&lt;br /&gt;&lt;br /&gt;Hoy he comprobado, enchufando el disco directamente a otro ordenador con SATA, que lo puedo dar por difunto. Pero en fin, no he perdido nada: todo lo que había eran copias de seguridad, así que lo único que me queda es rezar para que no se me estropee el disco de sistema antes de comprar otro disco externo para volver a empezar a hacer copias.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8990624169942607583?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8990624169942607583/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8990624169942607583' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8990624169942607583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8990624169942607583'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/03/estas-cosas-pasan.html' title='Estas cosas pasan'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4976170544777335125</id><published>2009-02-24T13:18:00.007Z</published><updated>2010-03-21T20:14:22.749Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Portátiles'/><title type='text'>Trabas</title><content type='html'>Uno de los culpables del calentamiento global es, sin duda, el cada vez más elevado consumo de energía por parte de los ordenadores. Y no solo por el CO&lt;sub&gt;2&lt;/sub&gt; que se emite al generar esa energía, sino por el propio calor que los procesadores desprenden. Basta con entrar a una sala de servidores decentemente refrigerada y acercarse a los armarios de cálculo para comprobarlo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GjEUrZgY4vk/SaP27werjwI/AAAAAAAAAEs/cyXftg-jTb8/s1600-h/trabas2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 299px; height: 400px;" src="http://4.bp.blogspot.com/_GjEUrZgY4vk/SaP27werjwI/AAAAAAAAAEs/cyXftg-jTb8/s400/trabas2.jpg" alt="" id="BLOGGER_PHOTO_ID_5306356292458876674" border="0" /&gt;&lt;/a&gt;Pero no solo de servidores vive el hombre, ni solo a ellos les afecta el calor. De hecho, a los ordenadores portátiles les afecta más. Es bastante común poner un portátil sobre una mesa (con lo cual sus patitas lo separan de ésta ligeramente). Y también ponérselo sobre las piernas en el sofá, delante de la tele, y cosas parecidas. Pero el detalle importante de estas actitudes es que los portátiles se refrigeran por debajo, y si bloqueamos esa entrada de aire, o es insuficiente, el portátil se recalentará.&lt;br /&gt;&lt;br /&gt;Incluso un portátil colocado sobre una mesa, levantado por sus propias patas de goma, se recalienta si está trabajando en serio. Claro que mucha gente no lo nota porque sus portátiles no hacen cálculo numérico, solamente escribir cartas y leer correos, pero... ¿de verdad quieres ver tu portátil trabajando con el &lt;a href="http://denvite.blogspot.com/2008/09/el-estrangulador-del-procesador.html"&gt;estrangulador&lt;/a&gt; al 12%? O peor, ¿quemado?&lt;br /&gt;&lt;br /&gt;Si, como yo, pones tu portátil realmente a prueba, no necesitas comprar esos elevadores USB con ventilador tan monos que hay en muchos sitios a la venta... sobre todo porque aparte de costar dinero, el ventilador USB consume más aún la batería del portátil (o eleva la factura de la luz). No. Basta con cuatro trabas de la ropa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4976170544777335125?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4976170544777335125/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4976170544777335125' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4976170544777335125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4976170544777335125'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/02/trabas.html' title='Trabas'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_GjEUrZgY4vk/SaP27werjwI/AAAAAAAAAEs/cyXftg-jTb8/s72-c/trabas2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8273245953838850637</id><published>2009-02-24T12:03:00.002Z</published><updated>2010-03-18T17:34:40.246Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Lo hemos hecho</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.debian.org/Pics/lennybanner_indexed.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 380px; height: 310px;" src="http://lh3.ggpht.com/_GjEUrZgY4vk/S6JjkJIIZ7I/AAAAAAAAAKU/GMq8MPJJcG8/lennybanner_indexed.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Finalmente, lo conseguimos, y cumplimos con la fecha de San Valentín.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.debian.org"&gt;Debian 5.0&lt;/a&gt; (antes conocida como «Lenny») ya está en la calle.&lt;br /&gt;&lt;br /&gt;Ahora es tiempo de arreglar los fallos que surjan y trabajar en la siguiente versión, «Squeeze».&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8273245953838850637?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8273245953838850637/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8273245953838850637' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8273245953838850637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8273245953838850637'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/02/lo-hemos-hecho.html' title='Lo hemos hecho'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_GjEUrZgY4vk/S6JjkJIIZ7I/AAAAAAAAAKU/GMq8MPJJcG8/s72-c/lennybanner_indexed.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7482586184020923522</id><published>2009-02-09T17:54:00.005Z</published><updated>2009-02-09T18:06:37.806Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fam'/><title type='text'>fam</title><content type='html'>Odio &lt;span class="comando"&gt;famd&lt;/span&gt;. Cada vez más.&lt;br /&gt;&lt;br /&gt;&lt;span class="comando"&gt;famd&lt;/span&gt; es el «&lt;i&gt;file alteration monitor&lt;/i&gt;», un demonio que se encarga de estar al tanto de las modificaciones que puedan sufrir los ficheros. Gracias a él, un proceso cualquiera, como puede ser un gestor de ficheros, no necesita preguntar constantemente al disco si han ocurrido cambios en un fichero, sino que simplemente puede encargarle a &lt;span class="comando"&gt;famd&lt;/span&gt; que le avise si dichos cambios se producen.&lt;br /&gt;&lt;br /&gt;El problema es que a veces &lt;span class="comando"&gt;famd&lt;/span&gt; se vuelve loco y empieza a utilizar toda la CPU disponible, lo cual es, en general, un engorro, y en particular para un servidor, un problema.&lt;br /&gt;&lt;br /&gt;He acabado por quitarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7482586184020923522?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7482586184020923522/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7482586184020923522' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7482586184020923522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7482586184020923522'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/02/fam.html' title='fam'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7109182929772588860</id><published>2009-01-21T09:46:00.003Z</published><updated>2009-01-21T09:58:51.606Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='X'/><title type='text'>Cambiando de gestor de ventanas</title><content type='html'>Tan solo un rápido apunte. El gestor de ventanas es la parte del &lt;span style="font-weight:bold;"&gt;X Window System&lt;/span&gt; que se encarga de gestionar las ventanas, su posición y su decoración. Prácticamente siempre que tengas abierta una sesión de las X, tendrás un gestor de ventanas funcionando.&lt;br /&gt;&lt;br /&gt;Y los gestores de ventanas se pueden sustituir unos a otros. Los gestores de ventanas decentes aceptan una opción &lt;span class="comando"&gt;--replace&lt;/span&gt; que les dice "si hay otro gestor de ventanas ejecutándose, ciérralo y ponte en su lugar, si puedes". Y también, los gestores de ventanas decentes reconocen que otro gestor de ventanas quiera reemplazarlos y saben quitarse limpiamente del camino y dejarle el sitio al nuevo.&lt;br /&gt;&lt;br /&gt;Lamentablemente, no todos los gestores de ventanas son decentes.&lt;br /&gt;&lt;br /&gt;Así que se planeta la pregunta de cómo, por ejemplo, ejecutar KDE con un gestor de ventanas que no sea kwin.&lt;br /&gt;&lt;br /&gt;Y la respuesta es que hay que definir la variable de entorno &lt;span class="comando"&gt;KDEWM&lt;/span&gt; (por ejemplo en el &lt;span class="fichero"&gt;.profile&lt;/span&gt;) con el nombre del gestor de ventanas que queramos ejecutar. Si la variable no está definida, se utilizará kwin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7109182929772588860?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://developer.kde.org/~seli/kdewm/' title='Cambiando de gestor de ventanas'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7109182929772588860/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7109182929772588860' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7109182929772588860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7109182929772588860'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/01/cambiando-de-gestor-de-ventanas.html' title='Cambiando de gestor de ventanas'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-1929369807597086164</id><published>2009-01-12T09:19:00.003Z</published><updated>2009-07-26T20:41:42.735+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Servidor Subversion (y II)</title><content type='html'>Si hace doce días indicaba cómo configurar un servidor Subversión mediante Apache, hoy redondeo la jugada.&lt;br /&gt;&lt;br /&gt;Una de las ventajas de utilizar WebDAV como tecnología subyacente es que se puede acceder al repositorio Subversion con un navegador normal y corriente. De hecho, como se pueden incluso montar «carpetas» WebDAV como directorios locales, es posible tener un sistema de ficheros versionado con SVN de manera transparente al usuario.&lt;br /&gt;&lt;br /&gt;Pero el navegador normal y corriente, al contrario que las herramienta especializadas en Subversion, no puede acceder a todas las revisiones del repositorio. Tan solo a la última. Así que para que el usuario pueda acceder al código utilizando su navegador, algo normal si queremos, por ejemplo, publicar el código, serán necesarias herramientas adicionales. En este caso, &lt;a href="http://www.viewvc.org/"&gt;ViewVC&lt;/a&gt;, que es una aplicación CGI para mostrar mediante el servidor web repositorios CVS o SVN.&lt;br /&gt;&lt;br /&gt;Así que el primer paso es, de manera harto natural, instalarlo con sus dependencias:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;aptitude install viewvc&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y el segundo, de manera igualmente natural, decirle a Apache que utilice ViewVC como un CGI cuando se le soliciten determinadas rutas, las que utilizaremos para publicar el código. Esto lo haremos, igualmente, mediante un fichero de configuración específico que haremos residir también en &lt;span class="codigo"&gt;/var/svn&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;#Fichero /var/svn/repositorio_viewvc_svn.apache2.conf&lt;br /&gt;&lt;br /&gt;# Esto es para evitar que los usuarios vean que ViewVC es un CGI&lt;br /&gt;ScriptAliasMatch ^/viewsvn(.*) /usr/lib/cgi-bin/viewvc.cgi$1&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Bastante sencillo, ¿no?&lt;br /&gt;&lt;br /&gt;Claro, hay que tener en cuenta que, si habíamos preparado un sistema de control de acceso mediante SVN, no podemos ahora dejar que cualquiera vea cualquier revisión de cualquier fichero. Esto no nos preocupará si las limitaciones que habíamos puesto eran solamente para la escritura, pero sí deberá importarnos si pusimos restricciones de lectura. En ese caso el fichero crece un poco:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;#Fichero /var/svn/repositorio_viewvc_svn.apache2.conf&lt;br /&gt;&lt;br /&gt;# Esto es para evitar que los usuarios vean que ViewVC es un CGI&lt;br /&gt;ScriptAliasMatch ^/viewsvn(.*) /usr/lib/cgi-bin/viewvc.cgi$1&lt;br /&gt;&lt;br /&gt;&amp;lt;Location /viewsvn&gt;&lt;br /&gt;  # Repositorio Subversion vía ViewVC&lt;br /&gt;&lt;br /&gt;  # Método de autenticación y fichero de contraseñas&lt;br /&gt;  AuthType Digest&lt;br /&gt;  AuthDigestDomain http://miservidor/svn/&lt;br /&gt;  AuthName "Repositorio Subversion de miservidor"&lt;br /&gt;  AuthUserFile /var/svn/passwd-digest&lt;br /&gt;&amp;lt;/Location&gt;&lt;br /&gt;&lt;br /&gt;Include /var/svn/auth-viewvc&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Suena, ¿no? Bastante parecido (de hecho, idéntico) a la configuración de autenticación para DAV-SVN. Lo que cambia es la configuración de autorización, que ahora debe manejar el propio Apache, y estará en el fichero &lt;span class="codigo"&gt;/var/svn/auth-viewvc&lt;/span&gt;, que acabamos de incluir, al estilo de Apache:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;#Fichero /var/svn/auth-viewvc&lt;br /&gt;&amp;lt;Location /viewsvn/repo1&gt;&lt;br /&gt;  Require user repo1admin repo1colaborador&lt;br /&gt;&amp;lt;/Location&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Location /viewsvn/repo1/privado&gt;&lt;br /&gt;  Require user repo1admin&lt;br /&gt;&amp;lt;/Location&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y bien, en dos pasos acabado. El primero es, como la otra vez, enlazar el fichero de configuración en el Apache y activarlo:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;ln -s /var/svn/repositorio_viewvc_svn.apache2.conf /etc/apache2/sites-available/repositorio_viewvc_svn&lt;br /&gt;a2ensite repositorio_viewvc_svn&lt;br /&gt;apache2ctl graceful&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y ya funciona. El segundo paso final es configurar ViewVC para que acceda a nuestro repositorio. Para ello tenemos que editar el fichero &lt;span class="codigo"&gt;/etc/viewvc/viewvc.conf&lt;/span&gt; y tocar algunas cosas.&lt;br /&gt;&lt;br /&gt;No voy a poner el fichero completo, pero sí detallar los cambios mínimos necesarios para que funcione como deseamos:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;br /&gt;cvs_roots =&lt;br /&gt;#Hay que vaciarlo&lt;br /&gt;&lt;br /&gt;root_parents = /var/svn : svn&lt;br /&gt;#Éste hay que descomentarlo y completarlo&lt;br /&gt;&lt;br /&gt;address = &amp;lt;a href="mailto:cvs-admin@insert.your.domain.here"&gt;No admin address has been configured&amp;lt;/a&gt;&lt;br /&gt;#Se debería poner aquí la dirección del Administrador&lt;br /&gt;&lt;br /&gt;root_as_url_component = 1&lt;br /&gt;Hay que cambiarlo para que funcionen nuestro control de acceso y nuestras redirecciones&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y listo: ya tenemos un precioso servidor de ficheros SVN vía web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-1929369807597086164?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/1929369807597086164/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=1929369807597086164' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1929369807597086164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1929369807597086164'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2009/01/servidor-subversion-y-ii.html' title='Servidor Subversion (y II)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-3449299726581703047</id><published>2009-01-07T18:23:00.005Z</published><updated>2010-03-18T17:30:28.868Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Compatibilidad'/><title type='text'>Comprar nuevo no es necesario.</title><content type='html'>El ordenador que &lt;a href="http://denvite.blogspot.com/2008/11/cuanto-polvo-cabe-en-un-ordenador.html"&gt;estuve limpiando en noviembre&lt;/a&gt; venía arrastrando otros fallos, que resultaron ser del procesador. Igual precisamente por exceso de polvo se sobrecalentó en parte.&lt;br /&gt;&lt;br /&gt;El caso es que tuve que cambiar el procesador, y ya no es sencillo encontrar procesadores para un zócalo 462 (el «socket A») de AMD.&lt;br /&gt;&lt;br /&gt;El problema es que mi placa base es una &lt;a href="http://asus.com/products.aspx?l1=3&amp;l2=13&amp;l3=62&amp;l4=0&amp;model=226&amp;modelmenu=1"&gt;&lt;span style="font-weight:bold;"&gt;Asus A7V8X&lt;/span&gt;&lt;/a&gt; que admite procesadores de hasta 2,4GHz , pero en «la tienda de la esquina» conseguí un &lt;span style="font-weight:bold;"&gt;Athlon XP 2600+&lt;/span&gt;. Y éste tampoco fue bien.&lt;br /&gt;&lt;br /&gt;Finalmente, conseguí también un &lt;span style="font-weight:bold;"&gt;Athlon XP 3000+&lt;/span&gt;, que en realidad va a 2,1 GHz (el número del modelo no son los GHz), y poniendo adecuadamente la pasta térmica, he conseguido una máquina que a día de hoy lleva un &lt;span style="font-style:italic;"&gt;uptime&lt;/span&gt; de 30 días. Nada mal para un procesador de segunda mano en una placa usada 24x7, que es hoy mi servidor de correo y páginas web (y varias cosas más), aparte del ordenador de escritorio de mi esposa.&lt;br /&gt;&lt;br /&gt;¿De verdad hace falta comprar un ordenador nuevo completo cada vez que cierta empresa de Redmond saca una nueva versión?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-3449299726581703047?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/3449299726581703047/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=3449299726581703047' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3449299726581703047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3449299726581703047'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/11/comprar-nuevo-no-es-necesario.html' title='Comprar nuevo no es necesario.'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-518062750283860515</id><published>2008-12-31T15:34:00.011Z</published><updated>2009-01-09T12:13:08.464Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Servidor Subversion</title><content type='html'>Hace poco he instalado un servidor &lt;a href="http://svnbook.red-bean.com/"&gt;SVN&lt;/a&gt; para que distintas personas puedan alojar sus proyectos. Vamos a ver cómo lo he hecho.&lt;br /&gt;&lt;br /&gt;El primer paso ha sido, evidentemente, instalar &lt;span style="font-weight:bold;"&gt;Subversion&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;aptitude install subversion&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Claro que, para que todos los colaboradores puedan contribuir, tienen que poder acceder a los repositorios. Para ello hay dos métodos, un servidor especializado (svnserve) y el bueno de nuestro querido Apache con web-DAV.&lt;br /&gt;&lt;br /&gt;Dados los problemas que puede presentar el servidor especializado con respecto a cortafuegos, proxys y similares, y dado que de todos modos vamos a usar Apache, que además nos permitirá navegar por la versión más reciente de cada repositorio, o incluso descargarlo con herramientas del tipo de &lt;span class="comando"&gt;wget&lt;/span&gt;, hacemos:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;aptitude install apache2&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y claro, necesitamos que Apache y Subversion se entiendan:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;aptitude install libapache2-svn&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;El primer paso de decisión es colocar los repositorios. La elección obvia sería &lt;span class="codigo"&gt;/var/svn&lt;/span&gt; pero también se pueden considerar otras opciones como &lt;span class="codigo"&gt;/srv/svn&lt;/span&gt; o &lt;span class="codigo"&gt;/usr/lib/svn&lt;/span&gt; o incluso &lt;span class="codigo"&gt;/usr/local/lib/svn&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Así, dentro de &lt;span class="codigo"&gt;/var/svn&lt;/span&gt; tendremos un subdirectorio para cada repositorio completo. Ahora hay que convencer a Apache de que nos los muestre. Para ello, en el mismo directorio creamos un fichero como éste:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;#Fichero /var/svn/repositorio_dav_svn.apache2.conf&lt;br /&gt;&lt;br /&gt;&amp;lt;Location /svn/&gt;&lt;br /&gt;  # Repositorio Subversion vía WebDAV&lt;br /&gt;  DAV svn&lt;br /&gt;&lt;br /&gt;  # Cualquier petición "/svn/algo" corresponderá al repositorio /var/svn/algo&lt;br /&gt;  SVNParentPath /var/svn&lt;br /&gt;&lt;br /&gt;  # Permitimos el listado de repositorios&lt;br /&gt;  SVNListParentPath on&lt;br /&gt;&amp;lt;/Location&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Con esta configuración ya podemos crear repositorios con &lt;pre class="comando"&gt;svnadmin create&lt;/pre&gt; y directamente los podremos utilizar desde otros ordenadores con órdenes del estilo de &lt;pre class="comando"&gt;svn co http://host/svn/repositorio&lt;/pre&gt; tanto para hacer &lt;span style="font-style:italic;"&gt;checkout&lt;/span&gt; como &lt;span style="font-style:italic;"&gt;commit&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;¿O no?&lt;br /&gt;&lt;br /&gt;Pues no. Hay dos detalles que se nos han quedado pendientes. El primero es que Apache no se entera de la existencia de ese fichero por arte de magia. Hay que decirle que hay un nuevo sitio disponible y que lo use:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;ln -s /var/svn/repositorio_dav_svn.apache2.conf /etc/apache2/sites-available/repositorio_dav_svn&lt;br /&gt;a2ensite repositorio_dav_svn&lt;br /&gt;apache2ctl graceful&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Sí, ya sé que &lt;span class="codigo"&gt;sites-available&lt;/span&gt; está para configuraciones de tipo &lt;span class="codigo"&gt;VirtualHost&lt;/span&gt;, pero es que prefiero dejar las cosas limpitas.&lt;br /&gt;&lt;br /&gt;El segundo detalle es que al crear un repositorio con &lt;pre class="comando"&gt;svnadmin create repositorio&lt;/pre&gt; no podremos realizar &lt;span style="font-style:italic;"&gt;commit&lt;/span&gt; en él, ya que Apache no puede escribir en el directorio. Por ello, ejecutamos&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;chgrp -R www-data repositorio&lt;br /&gt;chmod -R g+w repositorio&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Claro que puede que a los colaboradores no les maraville que todas las versiones de todos los proyectos estén disponibles a todo el mundo, y menos aún con acceso de escritura. Así que hay que hacer algo con los permisos, pero ya no puede ser sobre los repositorios, porque quien accede a ellos es Apache. Así que lo que hacemos es decirle a él que se encargue de la autentificación de usuarios y de su autorización.&lt;br /&gt;&lt;br /&gt;Para ello, cogemos el fichero &lt;span class="codigo"&gt;/var/svn/repositorio_dav_svn.apache2.conf&lt;/span&gt; de antes y lo modificamos un poco:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;#Fichero /var/svn/repositorio_dav_svn.apache2.conf&lt;br /&gt;&lt;br /&gt;# Esto es para evitar la incompatibilidad entre SVNListParentPath y AuthzSVNAccessFile&lt;br /&gt;RedirectMatch ^(/svn)$ $1/&lt;br /&gt;&lt;br /&gt;&amp;lt;Location /svn/&gt;&lt;br /&gt;  # Repositorio Subversion vía WebDAV&lt;br /&gt;  DAV svn&lt;br /&gt;&lt;br /&gt;  # Cualquier petición "/svn/algo" corresponderá al repositorio /var/svn/algo&lt;br /&gt;  SVNParentPath /var/svn&lt;br /&gt;&lt;br /&gt;  # Permitimos el listado de repositorios&lt;br /&gt;  SVNListParentPath on&lt;br /&gt;&lt;br /&gt;  # Fichero de control de acceso por repositorios y ramas&lt;br /&gt;  AuthzSVNAccessFile /var/svn/authz&lt;br /&gt;&lt;br /&gt;  # Orden de prueba de usuarios&lt;br /&gt;  Satisfy Any&lt;br /&gt;  Require valid-user&lt;br /&gt;&lt;br /&gt;  # Método de autenticación y fichero de contraseñas&lt;br /&gt;  AuthType Digest&lt;br /&gt;  AuthDigestDomain http://miservidor/svn/&lt;br /&gt;  AuthName "Repositorio Subversion de miservidor"&lt;br /&gt;  AuthUserFile /var/svn/passwd-digest&lt;br /&gt;&amp;lt;/Location&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hemos añadido cuatro piezas nuevas. La primera es para evitar un problema con las autentificaciones que puede surgir si se trata de ver el listado de repositorios, y las otras tres, ya dentro de la &lt;span class="codigo"&gt;Location&lt;/span&gt;, configuran la autentificación y la autorización.&lt;br /&gt;&lt;br /&gt;Ojo, que ese &lt;span class="codigo"&gt;RedirectMatch&lt;/span&gt; está para algo, y es que &lt;span class="codigo"&gt;AuthzSVNAccessFile&lt;/span&gt; da problemas si la barra final no está, así que es muy importante que la &lt;span class="codigo"&gt;Location&lt;/span&gt; diga algo como &lt;span class="codigo"&gt;&amp;lt;Location /svn/&gt;&lt;/span&gt; y no &lt;span class="codigo"&gt;&amp;lt;Location /svn&gt;&lt;/span&gt; sin la barra final, aunque eso sea lo que viene en la documentación.&lt;br /&gt;&lt;br /&gt;La autentificación es el último bloque. En él decimos que queremos que las contraseñas viajen cifradas (&lt;span class="codigo"&gt;AuthType Digest&lt;/span&gt;), qué Reino de Autentificación (conjunto de dominios y subdirectorios en ellos) está en juego (es una manera de separar los accesos para distintos sitios con el mismo nombre de usuario, y también de agruparlos), que el cliente utiliza para no requerirnos cada vez el nombre de usuario y la contraseña (&lt;span class="codigo"&gt;AuthDigestDomain http://miservidor/svn/&lt;/span&gt;), el nombre del Reino de Autentificación (para que el usuario sepa a qué corresponden el nombre de usuario y contraseña que debe introducir) que el cliente normalmente nos mostrará en el formulario (&lt;span class="codigo"&gt;AuthName "Repositorio Subversion de miservidor"&lt;/span&gt;) y, finalmente, en qué fichero almacenamos las parejas nombre de usuario-contraseña (&lt;span class="codigo"&gt;AuthUserFile /var/svn/passwd-digest&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Este fichero hay que crearlo con la orden &lt;span class="comando"&gt;htdigest&lt;/span&gt;. Y ojo, que como vamos a utilizar autentificación por &lt;span style="font-style:italic;"&gt;digest&lt;/span&gt; tenemos que activar el módulo correspondiente de Apache:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;a2enmod auth_digest&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Los otros dos bloques son el control de acceso. La parte&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;br /&gt;  # Orden de prueba de usuarios&lt;br /&gt;  Satisfy Any&lt;br /&gt;  Require valid-user&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;hace que el acceso sin identificarse sea posible allí donde esté permitido. Si no lo ponemos, será imposible incluso acceder a la lista de repositorios sin identificarse. La otra parte simplemente indica qué fichero tiene la lista de control de acceso, es decir, qué nombres de usuario tienen permitido el acceso de lectura o de escritura a cada repositorio y a cada directorio de cada repositorio (&lt;span class="codigo"&gt;AuthzSVNAccessFile /var/svn/authz&lt;/span&gt;). Este fichero tiene aproximadamente este aspecto:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;# Fichero /var/svn/authz&lt;br /&gt;&lt;br /&gt;# Acceso de lectura libre a todos sitios&lt;br /&gt;# (es decir, al listado de repositorios) para todos&lt;br /&gt;# y acceso de escritura al administrador del sitio&lt;br /&gt;[/]&lt;br /&gt;administrador = rw&lt;br /&gt;* = r&lt;br /&gt;&lt;br /&gt;# Permisos particulares para el repositorio repo1&lt;br /&gt;# Añadimos permiso de escritura para algunos usuarios&lt;br /&gt;# y quitamos el permiso de lectura para el usuario sin identificar&lt;br /&gt;[repo1:/]&lt;br /&gt;repo1admin = rw&lt;br /&gt;repo1colaborador = rw&lt;br /&gt;* =&lt;br /&gt;&lt;br /&gt;# Quitamos el permiso de lectura al colaborador en determinado directorio&lt;br /&gt;[repo1:/privado]&lt;br /&gt;repo1colaborador =&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Por supuesto, esta estructura puede complicarse bastante, y además los usuarios se pueden organizar en grupos. Hay más información en &lt;a href="http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html"&gt;http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Y adelante, ya tenemos un servidor Subversion preparado para aguantar lo que le echen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-518062750283860515?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/518062750283860515/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=518062750283860515' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/518062750283860515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/518062750283860515'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/12/servidor-subversion.html' title='Servidor Subversion'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-185788073191063119</id><published>2008-12-17T09:09:00.002Z</published><updated>2008-12-17T09:23:55.962Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Herramientas'/><title type='text'>Esas pequeñas herramientas (I)</title><content type='html'>Hoy, &lt;a href="http://udpcast.linux.lu/"&gt;UDP Cast&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UDP Cast&lt;/span&gt; es una herramienta que permite enviar un fichero a través de una red Ethernet a varios destinos a la vez. Para ello utiliza tramas &lt;span style="font-style:italic;"&gt;Broadcast&lt;/span&gt; de Ethernet y direcciones &lt;span style="font-style:italic;"&gt;multicast&lt;/span&gt; de IP.&lt;br /&gt;&lt;br /&gt;Tiene dos usos principales, como programa instalado y como programa independiente. Como programa instalado, se puede utilizar en cualquier instalación de Unix (o de otros sistemas) para transmitir un fichero cualquiera. Así, el coste de distribuir un parche, por ejemplo, de un servidor a trescientos clientes es el mismo que el coste de distribuirlo a uno.&lt;br /&gt;&lt;br /&gt;Como programa independiente, podemos arrancar varios ordenadores desde un disquete o un CD-ROM (o por PXE o por bootp o por...) y tras una configuración muy, muy sencilla, copiar discos completos o particiones entre sistemas, lo cual es enormemente útil para instalar aulas completas de ordenadores idénticos.&lt;br /&gt;&lt;br /&gt;Por supuesto, en este caso hay que tener cuidado con las posibles diferencias en el hierro de los ordenadores, ya que discos o particiones de distinto tamaño o geometría, por ejemplo, pueden dar problemas.&lt;br /&gt;&lt;br /&gt;En cualquier caso, siempre es bueno tener un par de discos de &lt;span style="font-weight:bold;"&gt;UDP Cast&lt;/span&gt; a mano.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-185788073191063119?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/185788073191063119/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=185788073191063119' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/185788073191063119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/185788073191063119'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/12/esas-pequeas-herramientas-i.html' title='Esas pequeñas herramientas (I)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5892221984465616809</id><published>2008-12-02T20:05:00.006Z</published><updated>2010-03-18T17:07:46.662Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administración de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='APT'/><title type='text'>Inestablemente estable</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.debian.org"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 75px; height: 92px;" src="http://3.bp.blogspot.com/_GjEUrZgY4vk/S6Jdnt4gv-I/AAAAAAAAAFE/yF2Fhxt4CLw/s200/openlogo-75.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A veces, en Debian, uno tiene que instalar un paquete de una rama diferente a la que está utilizando. Por ejemplo, uno tiene un servidor instalado con la rama &lt;span style="font-weight: bold;"&gt;estable&lt;/span&gt; y tiene que instalar un determinado paquete de la rama &lt;span style="font-weight: bold;"&gt;de pruebas&lt;/span&gt; o de la &lt;span style="font-weight: bold;"&gt;inestable&lt;/span&gt; porque es la única manera de conseguir determinada característica.&lt;br /&gt;&lt;br /&gt;Para entendernos, Debian tiene cuatro ramas: la estable (&lt;span style="font-style: italic;"&gt;stable&lt;/span&gt;), la de pruebas (&lt;span style="font-style: italic;"&gt;testing&lt;/span&gt;), la inestable (&lt;span style="font-style: italic;"&gt;unstable&lt;/span&gt;) y la experimental (&lt;span style="font-style: italic;"&gt;experimental&lt;/span&gt;). Normalmente el trabajo de desarrollo se hace en la inestable, y los programas que después de diez días en inestable no dan problemas se pasan a la rama de pruebas. Así, si se quiere estar siempre a la última hay que instalar el sistema con la rama inestable, pero es perfectamente posible que el sistema quede inutilizable. La rama de pruebas es la preferida por mucha gente que quiere estar a la última con sus escritorios pero sin arriesgarse a que todo quede parado, mientras que la rama estable es ideal para servidores o para administrar grandes conjuntos de máquinas iguales.&lt;br /&gt;&lt;br /&gt;Por su parte, la rama experimental tiene versiones demasiado inestables incluso para la rama inestable. De hecho no es una rama completa, uno no puede instalar un sistema complete utilizando solamente paquetes de esta rama.&lt;br /&gt;&lt;br /&gt;Pues bien, se me ha dado el caso de que en un ordenador con la rama de pruebas instalada necesité instalar &lt;a href="http://www.imagemagick.org/script/index.php"&gt;ImageMagick&lt;/a&gt;, pero resulta que la versión de este programa que viene en esta rama (la 6.3.7.9) utiliza como compresor MPEG el programa &lt;span class="comando"&gt;mpeg_encode&lt;/span&gt;, que no existe en Debian. En cambio, la versión de la rama experimental es la 6.4.5.4 que utiliza &lt;span class="comando"&gt;ffmpeg&lt;/span&gt;, que sí está disponible.&lt;br /&gt;&lt;br /&gt;La primera opción es bajarse el &lt;span class="codigo"&gt;imagemagick&lt;/span&gt; de experimental e instalarlo a mano. Esto se empieza a complicar cuando uno descubre que necesita dos librerías más, también de experimental, y cambiar la versión de otro paquete que también tiene dependencias.&lt;br /&gt;&lt;br /&gt;Y claro, uno se pregunta &lt;span style="font-weight:bold;"&gt;"¿Para qué tengo que hacer todo esto si es justo el tipo de cosas que le encanta a &lt;span class="comando"&gt;apt&lt;/span&gt;?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La solución:&lt;br /&gt;&lt;br /&gt;Lo primero, hay que dejarle bien claro a &lt;span class="comando"&gt;apt&lt;/span&gt; qué rama queremos utilizar normalmente:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;#/etc/apt/apt.conf&lt;br /&gt;&lt;br /&gt;APT::Default-Release "testing";&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Lo segundo, hay que tener las fuentes de la rama que necesitamos, aparte de las fuentes de la rama que tenemos normalmente:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;#/etc/apt/sources.list&lt;br /&gt;&lt;br /&gt;# Fuentes remotas de paquetes&lt;br /&gt;deb http://ftp.es.debian.org/debian/ stable main contrib non-free&lt;br /&gt;deb http://ftp.es.debian.org/debian/ testing main contrib non-free&lt;br /&gt;deb http://ftp.es.debian.org/debian/ unstable main contrib non-free&lt;br /&gt;deb http://ftp.es.debian.org/debian/ experimental main contrib non-free&lt;br /&gt;&lt;br /&gt;# Actualizaciones de seguridad&lt;br /&gt;deb http://security.debian.org/ stable/updates main contrib non-free&lt;br /&gt;deb http://security.debian.org/ testing/updates main contrib non-free&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y listo. Actualizamos las listas de paquetes con &lt;span class="comando"&gt;aptitude update&lt;/span&gt; o &lt;span class="comando"&gt;apt-get update&lt;/span&gt; (o &lt;span class="comando"&gt;dselect&lt;/span&gt; o Synaptic o lo que cada uno prefiera) y ya estamos preparados para indicarle al sistema lo que queremos:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;# aptitude install imagemagick/experimental&lt;br /&gt;&lt;span class="salida"&gt;Leyendo lista de paquetes... Hecho&lt;br /&gt;Creando árbol de dependencias&lt;br /&gt;Leyendo la información de estado... Hecho&lt;br /&gt;Leyendo la información de estado extendido&lt;br /&gt;Inicializando el estado de los paquetes... Hecho&lt;br /&gt;Leyendo las descripciones de las tareas... Hecho&lt;br /&gt;Los siguientes paquetes están ROTOS:&lt;br /&gt;  libmagickcore1&lt;br /&gt;Se instalarán los siguiente paquetes NUEVOS:&lt;br /&gt;  ghostscript{a} gsfonts{a} imagemagick imagemagick-doc{a} libcupsimage2{a} libgd2-noxpm{a} libgomp1{a} libgraphviz4{a}&lt;br /&gt;  libgs8{a} libilmbase6{a} libjasper1{a} libltdl3{a} libmagickwand1{a} libopenexr6{a} libpaper-utils{a} libpaper1{a}&lt;br /&gt;  libwmf0.2-7{a} psfontmgr{a}&lt;br /&gt;0 paquetes actualizados, 19 nuevos instalados, 0 para eliminar y 0 sin actualizar.&lt;br /&gt;Necesito descargar 13,7MB de ficheros. Después de desempaquetar se usarán 48,4MB.&lt;br /&gt;No se satisfacen las dependencias de los siguientes paquetes:&lt;br /&gt;  libmagickcore1: Depende: libdjvulibre21 (&gt;= 3.5.21) pero no es instalable&lt;br /&gt;Las acciones siguientes resolverán estas dependencias&lt;br /&gt;&lt;br /&gt;Instalar los paquetes siguientes:&lt;br /&gt;libdjvulibre-text [3.5.21-1 (unstable)]&lt;br /&gt;libdjvulibre21 [3.5.21-1 (unstable)]&lt;br /&gt;&lt;br /&gt;La puntuación es 12&lt;br /&gt;&lt;br /&gt;¿Acepta esta solución? [Y/n/q/?]&lt;br /&gt;Se instalarán los siguiente paquetes NUEVOS:&lt;br /&gt;  ghostscript{a} gsfonts{a} imagemagick imagemagick-doc{a} libcupsimage2{a} libdjvulibre-text{a} libdjvulibre21{a}&lt;br /&gt;  libgd2-noxpm{a} libgomp1{a} libgraphviz4{a} libgs8{a} libilmbase6{a} libjasper1{a} libltdl3{a} libmagickcore1{a}&lt;br /&gt;  libmagickwand1{a} libopenexr6{a} libpaper-utils{a} libpaper1{a} libwmf0.2-7{a} psfontmgr{a}&lt;br /&gt;0 paquetes actualizados, 21 nuevos instalados, 0 para eliminar y 0 sin actualizar.&lt;br /&gt;Necesito descargar 14,4MB de ficheros. Después de desempaquetar se usarán 50,5MB.&lt;br /&gt;¿Quiere continuar? [Y/n/?]&lt;br /&gt;Escribiendo información de estado extendido... Hecho&lt;br /&gt;Des:1 http://ftp.fr.debian.org testing/main libcupsimage2 1.3.8-1lenny2 [98,5kB]&lt;br /&gt;Des:2 http://ftp.fr.debian.org testing/main libpaper1 1.1.23+nmu1 [20,6kB]&lt;br /&gt;Des:3 http://ftp.fr.debian.org testing/main libgs8 8.62.dfsg.1-3.1 [2219kB]&lt;br /&gt;Des:4 http://ftp.fr.debian.org testing/main gsfonts 1:8.11+urwcyr1.0.7~pre44-3 [3373kB]&lt;br /&gt;Des:5 http://ftp.fr.debian.org testing/main ghostscript 8.62.dfsg.1-3.1 [766kB]&lt;br /&gt;Des:6 http://ftp.fr.debian.org testing/main libgomp1 4.3.2-1 [13,2kB]&lt;br /&gt;Des:7 http://ftp.fr.debian.org unstable/main libdjvulibre-text 3.5.21-1 [74,4kB]&lt;br /&gt;Des:8 http://ftp.fr.debian.org unstable/main libdjvulibre21 3.5.21-1 [682kB]&lt;br /&gt;Des:9 http://ftp.fr.debian.org testing/main libgd2-noxpm 2.0.36~rc1~dfsg-3 [221kB]&lt;br /&gt;Des:10 http://ftp.fr.debian.org testing/main libltdl3 1.5.26-4 [177kB]&lt;br /&gt;Des:11 http://ftp.fr.debian.org testing/main libgraphviz4 2.20.2-3 [536kB]&lt;br /&gt;Des:12 http://ftp.fr.debian.org testing/main libilmbase6 1.0.1-2+nmu2 [118kB]&lt;br /&gt;Des:13 http://ftp.fr.debian.org testing/main libjasper1 1.900.1-5.1 [145kB]&lt;br /&gt;Des:14 http://ftp.fr.debian.org experimental/main libmagickwand1 7:6.4.5.4.dfsg1-1 [332kB]&lt;br /&gt;Des:15 http://ftp.fr.debian.org testing/main libopenexr6 1.6.1-3 [262kB]&lt;br /&gt;Des:16 http://ftp.fr.debian.org testing/main libwmf0.2-7 0.2.8.4-6 [174kB]&lt;br /&gt;Des:17 http://ftp.fr.debian.org experimental/main libmagickcore1 7:6.4.5.4.dfsg1-1 [1667kB]&lt;br /&gt;Des:18 http://ftp.fr.debian.org experimental/main imagemagick 7:6.4.5.4.dfsg1-1 [86,1kB]&lt;br /&gt;Des:19 http://ftp.fr.debian.org experimental/main imagemagick-doc 7:6.4.5.4.dfsg1-1 [3410kB]&lt;br /&gt;Des:20 http://ftp.fr.debian.org testing/main libpaper-utils 1.1.23+nmu1 [17,6kB]&lt;br /&gt;Des:21 http://ftp.fr.debian.org testing/main psfontmgr 0.11.10-0.2 [22,2kB]&lt;br /&gt;Descargados 14,4MB en 3min47s (63,5kB/s).&lt;br /&gt;Preconfigurando paquetes ...&lt;br /&gt;[...]&lt;br /&gt;Leyendo lista de paquetes... Hecho&lt;br /&gt;Creando árbol de dependencias&lt;br /&gt;Leyendo la información de estado... Hecho&lt;br /&gt;Leyendo la información de estado extendido&lt;br /&gt;Inicializando el estado de los paquetes... Hecho&lt;br /&gt;Escribiendo información de estado extendido... Hecho&lt;br /&gt;Leyendo las descripciones de las tareas... Hecho&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como se puede ver, la barra al final del nombre del paquete indica "quiero este paquete de esta rama", y el sistema ha bajado el paquete de experimental, y sus dependencias, mientras fue posible, de la rama actual, la de pruebas. Además, las actualizaciones del sistema no darán problemas diciendo siempre "hay nuevos paquetes disponibles" cuando esos paquetes no sean de la rama actual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-5892221984465616809?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/5892221984465616809/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=5892221984465616809' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5892221984465616809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5892221984465616809'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/12/inestablemente-estable.html' title='Inestablemente estable'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GjEUrZgY4vk/S6Jdnt4gv-I/AAAAAAAAAFE/yF2Fhxt4CLw/s72-c/openlogo-75.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-9047813043236529844</id><published>2008-11-11T13:37:00.004Z</published><updated>2010-03-21T20:18:25.333Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='polvo'/><title type='text'>¿Cuanto polvo cabe en un ordenador?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GjEUrZgY4vk/SRmNFC8LHEI/AAAAAAAAADo/yoXgHOT4Vc4/s1600-h/dsc01425.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_GjEUrZgY4vk/SRmNFC8LHEI/AAAAAAAAADo/yoXgHOT4Vc4/s320/dsc01425.jpg" alt="" id="BLOGGER_PHOTO_ID_5267396357014625346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GjEUrZgY4vk/SRmNFgM3TMI/AAAAAAAAAD4/RODTri1PQ4k/s1600-h/dsc01427.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_GjEUrZgY4vk/SRmNFgM3TMI/AAAAAAAAAD4/RODTri1PQ4k/s320/dsc01427.jpg" alt="" id="BLOGGER_PHOTO_ID_5267396364869258434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GjEUrZgY4vk/SRmNF3yJQyI/AAAAAAAAAEA/Jc8jzPsrx2M/s1600-h/dsc01428.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_GjEUrZgY4vk/SRmNF3yJQyI/AAAAAAAAAEA/Jc8jzPsrx2M/s320/dsc01428.jpg" alt="" id="BLOGGER_PHOTO_ID_5267396371199640354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;La respuesta es: mucho. Sobre todo si no se limpia.&lt;br /&gt;&lt;br /&gt;El otro día me decidí a limpiar de polvo un ordenador que tengo en casa. Lleva años funcionando, y hace tiempo que no lo limpiaba. De hecho, había dejado de funcionar: ya sabemos que el polvo es conductor, y además tiene otro problema, y es que bloquea los ventiladores, con lo que las temperaturas suben.&lt;br /&gt;&lt;br /&gt;El caso es que lo desmonté pieza a pieza. Se puede ver en la primera foto el estado del disipador del procesador cuando quité su ventilador. Y el ventilador andaba igual, así como el resto de la placa.&lt;br /&gt;&lt;br /&gt;La tercera foto muestra todas las piezas y el total de polvo extraído: un montón.&lt;br /&gt;&lt;br /&gt;Y eso que al ventilador de carcasa tuve incluso que darle aceite vegetal a ver si volvía a funcionar, porque tenía tanto polvo dentro del mecanismo, entre el rotor y el estator, que andaba a menos de la mitad de su velocidad normal.&lt;br /&gt;&lt;br /&gt;Eso sí, una vez limpio y vuelto a montar, la máquina no ha vuelto a dar problemas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-9047813043236529844?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/9047813043236529844/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=9047813043236529844' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/9047813043236529844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/9047813043236529844'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/11/cuanto-polvo-cabe-en-un-ordenador.html' title='¿Cuanto polvo cabe en un ordenador?'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GjEUrZgY4vk/SRmNFC8LHEI/AAAAAAAAADo/yoXgHOT4Vc4/s72-c/dsc01425.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7868379125246911178</id><published>2008-10-14T12:36:00.007+01:00</published><updated>2008-10-14T13:25:10.502+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Discos duros'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Vía'/><category scheme='http://www.blogger.com/atom/ns#' term='SMART'/><title type='text'>SMART</title><content type='html'>Este artículo es principalmente una traducción del que me han publicado en &lt;a href="http://debaday.debian.net/"&gt;Debian Package of the Day&lt;/a&gt; y que llegó luego a &lt;a href="http://times.debian.net/"&gt;DebianTimes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Uno de los paquetes que instalo manualmente en toda nueva instalación es &lt;span class="fichero"&gt;smartmontools&lt;/span&gt;. Tengo cierta experiencia administrando ordenadores y redes, y es un hecho que los piratas informáticos y los fallos de los programas (&lt;i&gt;bugs&lt;/i&gt;) no son la mayor causa de problemas en instalaciones pequeñas y medianas. Lo es el &lt;i&gt;hardware&lt;/i&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Luego tenemos aparatos que pueden fallar, y Murphy dice que si algo puede fallar, fallará. El asunto no es evitar los fallos físicos, lo que es imposible, sino detectarlos rápidamente o incluso prevenirlos.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Particularmente para los discos duros, la herramienta encargada es &lt;span class="comando"&gt;smartctl&lt;/span&gt; del paquete &lt;span clas="fichero"&gt;smartmontools&lt;/span&gt;. Los discos IDE (si no son de la era de los dinosaurios) tienen una herramienta integrada de autoanálisis llamada &lt;a href="http://es.wikipedia.org/wiki/S.M.A.R.T."&gt;SMART&lt;/a&gt; que significa&amp;#8220;&lt;i&gt;Self-Monitoring, Analysis and Reporting Technology&lt;/i&gt;&amp;#8221; (Tecnología de Auto-Monitorización, Análisis e Informe). Los discos SCSI modernos también la tienen si son SCSI 3 o más nuevos. Lo que ocurre es que en la circuitería del disco hay rutinas para controlar parámetros de salud del disco: tiempo de comienzo de rotación (&lt;i&gt;spin-up time&lt;/i&gt;), número de fallos de lectura, temperatura, tiempo de vida&amp;#8230; Y todos esos parámetros no son solamente controlados por el propio disco, sino que tienen asignados límites de seguridad, y tanto los parámetros como los límites pueden ser obtenidos por programas que accedan a los discos utilizando las instrucciones I/O apropiadas.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Y ese programa es &lt;span class="comando"&gt;smartctl&lt;/span&gt;, una pieza del paquete Debian &lt;span class="fichero"&gt;smartmontools&lt;/span&gt;. Por supuesto, como accede al disco directamente, hay que ser superusuario (&lt;i&gt;root&lt;/i&gt;) para usar estas órdenes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="comando"&gt;smartctl&lt;/span&gt; puede preguntarle al disco por su identificación SMART:&lt;/p&gt;&lt;br /&gt;&lt;pre class="comando"&gt;&lt;br /&gt;# smartctl -i /dev/sda&lt;br /&gt;smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen&lt;br /&gt;Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;&lt;br /&gt;=== START OF INFORMATION SECTION ===&lt;br /&gt;Model Family:     Fujitsu MHV series&lt;br /&gt;Device Model:     FUJITSU MHV2060BH&lt;br /&gt;Serial Number:    NW10T652991F&lt;br /&gt;Firmware Version: 00850028&lt;br /&gt;User Capacity:    60,011,642,880 bytes&lt;br /&gt;Device is:        In smartctl database [for details use: -P show]&lt;br /&gt;ATA Version is:   7&lt;br /&gt;ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 4a&lt;br /&gt;Local Time is:    Mon May 12 02:39:31 2008 CEST&lt;br /&gt;SMART support is: Available - device has SMART capability.&lt;br /&gt;SMART support is: Enabled&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Más interesante, &lt;code&gt;smartctl&lt;/code&gt; puede preguntarle al disco por los valores de sus parámetros:&lt;/p&gt;&lt;br /&gt;&lt;pre class="comando"&gt;&lt;br /&gt;# smartctl -A /dev/sda&lt;br /&gt;smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen&lt;br /&gt;Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;&lt;br /&gt;=== START OF READ SMART DATA SECTION ===&lt;br /&gt;SMART Attributes Data Structure revision number: 16&lt;br /&gt;Vendor Specific SMART Attributes with Thresholds:&lt;br /&gt;ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED WHEN_FAILED RAW_VALUE&lt;br /&gt;  1 Raw_Read_Error_Rate     0x000f   100   100   046    Pre-fail  Always       -       124253&lt;br /&gt;  2 Throughput_Performance  0x0004   100   100   000    Old_age   Offline      -       18284544&lt;br /&gt;  3 Spin_Up_Time            0x0003   100   100   025    Pre-fail  Always       -       0&lt;br /&gt;  4 Start_Stop_Count        0x0032   099   099   000    Old_age   Always       -       1199&lt;br /&gt;  5 Reallocated_Sector_Ct   0x0033   100   100   024    Pre-fail  Always       -       8589934592000&lt;br /&gt;  7 Seek_Error_Rate         0x000e   100   087   000    Old_age   Always       -       1761&lt;br /&gt;  8 Seek_Time_Performance   0x0004   100   100   000    Old_age   Offline      -       0&lt;br /&gt;  9 Power_On_Seconds        0x0032   079   079   000    Old_age   Always       -       10866h+57m+47s&lt;br /&gt; 10 Spin_Retry_Count        0x0012   100   100   000    Old_age   Always       -       0&lt;br /&gt; 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1199&lt;br /&gt;192 Power-Off_Retract_Count 0x0032   099   099   000    Old_age   Always       -       283&lt;br /&gt;193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       6953&lt;br /&gt;194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       45 (Lifetime Min/Max 14/58)&lt;br /&gt;195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       62&lt;br /&gt;196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       459276288&lt;br /&gt;197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0&lt;br /&gt;198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0&lt;br /&gt;199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0&lt;br /&gt;200 Multi_Zone_Error_Rate   0x000e   100   082   000    Old_age   Always       -       22371&lt;br /&gt;203 Run_Out_Cancel          0x0002   100   100   000    Old_age   Always       -       1533257648465&lt;br /&gt;240 Head_Flying_Hours       0x003e   200   200   000    Old_age   Always       -       0&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Como se puede ver, algunos atributos están marcados como &amp;#8220;Pre-fail&amp;#8221;. Si cualquiera de estos atributos traspasa su límite, el disco está para fallar en cuestión de horas, quizá minutos.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Aunque hay más opciones para &lt;span class="comando"&gt;smartctl&lt;/span&gt;, las últimas que voy a comentar son &lt;span class="comando"&gt;-a&lt;/span&gt; y &lt;span class="comando"&gt;-t&lt;/span&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="comando"&gt;smartctl -t&lt;/span&gt; lanza una prueba automática de todo el disco. Necesita un parámetro indicando el tipo de prueba, y en el caso más largo puede durar varias decenas de minutos y comprobará el rendimiento eléctrico y mecánico del disco así como el rendimiento de lectura de las cabezas por toda la superficie. &lt;span class="comando"&gt;smartctl -a&lt;/span&gt;, por su parte, muestra toda la información disponible sobre el disco, incluidos los resultados de las pruebas automáticas. Como estas pruebas duran minutos, o decenas de minutos, no podemos observarlas. Todo lo que obtenemos al lanzar una de estas pruebas es:&lt;/p&gt;&lt;br /&gt;&lt;pre class="comando"&gt;&lt;br /&gt;# smartctl -t long /dev/sda&lt;br /&gt;smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen&lt;br /&gt;Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;&lt;br /&gt;=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===&lt;br /&gt;Sending command: "Execute SMART Extended self-test routine immediately in&lt;br /&gt;off-line mode".&lt;br /&gt;Drive command "Execute SMART Extended self-test routine immediately in&lt;br /&gt;off-line mode" successful.&lt;br /&gt;Testing has begun.&lt;br /&gt;Please wait 41 minutes for test to complete.&lt;br /&gt;Test will complete after Mon May 12 05:44:03 2008&lt;br /&gt;&lt;br /&gt;Use smartctl -X to abort test.&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Aquí se nos informa de que (quizá) tengamos un rendimiento ligeramente menor del disco durante los próximos 41 minutos, porque la prueba ha comenzado. Se produce completamente en segundo plano, o sería mejor decir &amp;#8220;fuera de plano&amp;#8221;, ya que no ocurre bajo el control del Sistema Operativo en absoluto: todo ocurre internamente al disco, y lo único que vamos a obtener es el resultado.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="comando"&gt;smartctl -a&lt;/span&gt;, por su parte, muestra una enorme cantidad de información SMART sobre el disco: prácticamente toda la información SMART disponible. Normalmente es mejor utilizar una opción específica, como se puede ver en la página de manual (&lt;i&gt;man&lt;/i&gt;).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Finalmente, quiero comentar que hay un demonio en el paquete &lt;span class="fichero"&gt;smartmontools&lt;/span&gt;, llamado &lt;span class="comando"&gt;smartd&lt;/span&gt;, que se encarga de realizar las pruebas automáticas por uno. Funciona ejecutando &lt;code&gt;smartctl&lt;/code&gt; de forma periódica (típicamente cada 30 minutos) y registrando todos los errores y los cambios de los valores de los parámetros en el registro del sistema (&lt;i&gt;syslog&lt;/i&gt;). La configuración por defecto en Debian además enviará un mensaje al superusuario con cualquier problema detectado. No voy a explicarlo aquí porque quiero que se lean la documentación, que es concisa y clara, pero recuerden que para usarlo deben activarlo en &lt;span class="fichero"&gt;/etc/default/smartmontools&lt;/span&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;El paquete &lt;span class="fichero"&gt;smartmontools&lt;/span&gt; ha estado disponible en &lt;a href="http://packages.debian.org/smartmontools"&gt;Debian&lt;/a&gt; y &lt;a href="http://packages.ubuntu.com/smartmontools"&gt;Ubuntu&lt;/a&gt; desde hace mucho tiempo.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Hay quien &lt;a href="http://debaday.debian.net/2008/10/12/smartmontools-control-the-health-of-your-hard-disk#comment-103895"&gt;ha preguntado&lt;/a&gt; por qué en los ejemplos todos los valores aparecen por encima de los límites. Es lo normal: los valores normalizados de los parámetros comienzan típicamente en 100 o 200, y a medida que el disco sufre van descendiendo. El problema lo tenemos cuando un parámetro desciende por debajo de su límite, no cuando está por encima. Aunque también hay que estar atento a las bajadas significativas de los parámetros aunque no leguen a los límites: son signos de que algo malo está pasando.&lt;br /&gt;&lt;br /&gt;Como nota, los discos de &lt;b&gt;Seagate&lt;/b&gt; tienen la costumbre de poner el parámetro de temperatura en su valor real, lo que lo convierte en uno de los pocos casos en los que un parámetro empeora cuando crece.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7868379125246911178?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://debaday.debian.net/2008/10/12/smartmontools-control-the-health-of-your-hard-disk' title='SMART'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7868379125246911178/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7868379125246911178' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7868379125246911178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7868379125246911178'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/10/smart.html' title='SMART'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-1741155502513298642</id><published>2008-09-22T16:47:00.008+01:00</published><updated>2008-10-10T11:55:36.437+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='Toshiba'/><category scheme='http://www.blogger.com/atom/ns#' term='X'/><title type='text'>El escritorio que no cubría la pantalla</title><content type='html'>&lt;span class="ojo"&gt;NOTA: Actualizado con todos los datos y capturas de pantalla.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hoy me tocó arreglar el sistema X-Window de un portátil, un Toshiba Satellite U300 13H. Ya lo había hecho una vez, pero no recordaba cómo. El caso es que el escritorio no cubría toda la pantalla: la barra del escritorio no tocaba el fondo ni llegaba completamente a la derecha.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GjEUrZgY4vk/SN_XvCY8o5I/AAAAAAAAADU/uXv0M3pmods/s1600-h/crab.orig.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_GjEUrZgY4vk/SN_XvCY8o5I/AAAAAAAAADU/uXv0M3pmods/s320/crab.orig.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251152893632619410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y claro, fueron unas cuantas horas tratando de averiguar lo que pasaba, en realidad de recordarlo, trasteando con el siempre servicial &lt;span class="comando"&gt;xrandr&lt;/span&gt; que acudió en mi ayuda y me dijo lo que pasaba: La tarjeta gráfica se confundía y pensaba que estaban activas a la vez la salida LDVS y la salida TV. Y trataba de mostrarlas ambas en el monitor. Como la salida TV tiene menos resolución que la LDVS, pues ahí estaba el problema:&lt;br /&gt;&lt;pre class="comando"&gt;crab:~&gt; xrandr&lt;br /&gt;Screen 0: minimum 320 x 200, current 1280 x 800, maximum 1280 x 1280&lt;br /&gt;VGA disconnected (normal left inverted right)&lt;br /&gt;LVDS connected 1280x800+0+0 (normal left inverted right) 286mm x 179mm&lt;br /&gt;   1280x800       59.9*+   60.0&lt;br /&gt;   1280x768       60.0&lt;br /&gt;   1024x768       60.0&lt;br /&gt;   800x600        60.3&lt;br /&gt;   640x480        59.9&lt;br /&gt;TV connected 1024x768+0+0 (normal left inverted right) 0mm x 0mm&lt;br /&gt;   1024x768       30.0*&lt;br /&gt;   800x600        30.0&lt;br /&gt;   848x480        30.0&lt;br /&gt;   640x480        30.0&lt;/pre&gt;&lt;br /&gt;La solución ya la había hallado, no recuerdo ahora dónde, cuando instalé este portátil por primera vez, cuando se compró. Esta vez, me lié con la opción &lt;span class="comando"&gt;Option "Enable" "false"&lt;/span&gt; cuando no es correcta, y la solución al final me la dió &lt;a href="http://nopiensoarreglar.blogspot.com/2008/03/gnome-en-ubuntu-no-cubre-toda-la.html"&gt;esta entrada&lt;/a&gt; de una bitácora que se llama, curiosamente, &lt;a href="http://nopiensoarreglar.blogspot.com/"&gt;No pienso arreglar tu ordenador&lt;/a&gt;. Tenía que haber usado &lt;span class="comando"&gt;Option "Ignore" "true"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para explicarlo un poco mejor, el fichero &lt;span class="fichero"&gt;xorg.conf&lt;/span&gt; lleva una sección donde se configura el dispositivo (la tarjeta de vídeo), otra donde se configuran los monitores (porque puede haber varios), y otra donde se junta todo creando una "pantalla".&lt;br /&gt;&lt;br /&gt;La solución es configurar dos monitores:&lt;br /&gt;&lt;pre class="fichero"&gt;Section "Monitor"&lt;br /&gt;        Identifier      "Configured Monitor"&lt;br /&gt;        Option          "DPMS"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;        Identifier      "Disabled Monitor"&lt;br /&gt;        Option          "Ignore"        "true"&lt;br /&gt;EndSection&lt;/pre&gt;&lt;br /&gt;y configurar la tarjeta para que ponga sus salidas en esos dos monitores, sacando así la molesta salida &lt;span class="fichero"&gt;TV&lt;/span&gt; al monitor deshabilitado:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;Section "Device"&lt;br /&gt;        Identifier      "Intel Corporation Mobile GM965/GL960 Integrated Graphic&lt;br /&gt;s Controller"&lt;br /&gt;        Driver          "intel"&lt;br /&gt;        BusID           "PCI:0:2:0"&lt;br /&gt;        Option          "Monitor-LVDS" "Configured Monitor"&lt;br /&gt;        Option          "Monitor-TV" "Disabled Monitor"&lt;br /&gt;EndSection&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GjEUrZgY4vk/SN_lfCgBShI/AAAAAAAAADc/7lsibaKLFK0/s1600-h/crab.final.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_GjEUrZgY4vk/SN_lfCgBShI/AAAAAAAAADc/7lsibaKLFK0/s320/crab.final.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251168011947166226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-1741155502513298642?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://nopiensoarreglar.blogspot.com/2008/03/gnome-en-ubuntu-no-cubre-toda-la.html' title='El escritorio que no cubría la pantalla'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/1741155502513298642/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=1741155502513298642' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1741155502513298642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/1741155502513298642'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/09/el-escritorio-que-no-cubra-la-pantalla.html' title='El escritorio que no cubría la pantalla'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GjEUrZgY4vk/SN_XvCY8o5I/AAAAAAAAADU/uXv0M3pmods/s72-c/crab.orig.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6707378028511559987</id><published>2008-09-17T13:46:00.004+01:00</published><updated>2009-10-19T23:32:48.590+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='Teclados'/><category scheme='http://www.blogger.com/atom/ns#' term='XKB'/><title type='text'>Diseños de teclado (II)</title><content type='html'>Siguiendo con lo escrito en "&lt;a href="http://denvite.blogspot.com/2008/06/diseos-de-teclado.html"&gt;Diseños de teclado&lt;/a&gt;", esta vez he tenido que hacer algo semejante: que un teclado estadounidense pueda ser utilizado para escribir normalmente en castellano.&lt;br /&gt;&lt;br /&gt;Gracias a la documentación que menciono allí &lt;sup&gt;&lt;a href="http://www.x.org/wiki/XKB"&gt;[1]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href="http://pascal.tsu.ru/en/xkb/"&gt;[2]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href="http://www.charvolant.org/%7Edoug/xkb/"&gt;[3]&lt;/a&gt;&lt;/sup&gt; no tuve muchos problemas para conseguirlo. El modelo de teclado a utilizar era, evidentemente, el teclado estadounidense &lt;span class="comando"&gt;us&lt;/span&gt;, lo que, así solo, significa la variante &lt;span class="comando"&gt;basic&lt;/span&gt;, es decir &lt;span class="comando"&gt;us(basic)&lt;/span&gt;. Pero el teclado &lt;span class="comando"&gt;us&lt;/span&gt; tiene otra variante, la internacional &lt;span class="comando"&gt;us(intl)&lt;/span&gt;, que permite cosas como que las teclas con acentos se consideren &lt;span style="font-weight:bold;"&gt;teclas muertas&lt;/span&gt;: teclas que necesitan que se pulse otra después, como en el teclado castellano &lt;span class="comando"&gt;es&lt;/span&gt; normal.&lt;br /&gt;&lt;br /&gt;Pero no quería poner el teclado &lt;span class="comando"&gt;us(intl)&lt;/span&gt; tal cual, porque redefine demasiadas teclas.&lt;br /&gt;&lt;br /&gt;La solución ha sido elegir la variante de teclado compuesta &lt;span class="comando"&gt;us+us(intl)&lt;/span&gt;, que utiliza como base el &lt;span class="comando"&gt;us(basic)&lt;/span&gt; y allí donde éste no llega le añade el &lt;span class="comando"&gt;us(intl)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Así, la sección correspondiente del fichero &lt;span class="fichero"&gt;/etc/X11/xorg.conf&lt;/span&gt; la he modificado de&lt;br /&gt;&lt;pre class="codigo"&gt;Section "InputDevice"&lt;br /&gt;&lt;br /&gt;# keyboard added by rhpxl&lt;br /&gt;        Identifier  "Keyboard0"&lt;br /&gt;        Driver      "kbd"&lt;br /&gt;        Option      "XkbModel" "pc105"&lt;br /&gt;        Option      "XkbLayout" "us"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;a&lt;br /&gt;&lt;pre class="codigo"&gt;Section "InputDevice"&lt;br /&gt;        Identifier  "Keyboard0"&lt;br /&gt;        Driver      "kbd"&lt;br /&gt;        Option      "XkbModel" "pc105"&lt;br /&gt;        Option      "XkbLayout" "us+us(intl)"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6707378028511559987?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6707378028511559987/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6707378028511559987' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6707378028511559987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6707378028511559987'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/09/diseos-de-teclado-ii.html' title='Diseños de teclado (II)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6706468107194638863</id><published>2008-09-01T15:24:00.005+01:00</published><updated>2008-09-01T21:23:52.746+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACPI'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Portátiles'/><title type='text'>El estrangulador del procesador</title><content type='html'>Los procesadores modernos (me refiero a la familia de los x86) tienen una característica muy interesante: el estrangulador (&lt;span style="font-style: italic; font-weight: bold;"&gt;throttling&lt;/span&gt;) del procesador.&lt;br /&gt;&lt;br /&gt;Muchas veces hemos oído hablar de características de los procesadores para portátiles como la de bajar la frecuencia de trabajo cuando se utiliza la batería, para que dure más. Pero el caso es que hay otras características que nos ayudan a hacer lo mismo, y mejor. Se trata de los estados de &lt;span style="font-style: italic;"&gt;throttling&lt;/span&gt; del procesador, que fuerzan al mismo, independientemente de lo cargado que se encuentre, a &amp;lt;&amp;lt;echarse a dormir&amp;gt;&amp;gt; parte del tiempo. Estos estados se identifican con la letra T. El Intel Centrino Duo T2400 de mi portátil, por ejemplo, tiene 8 de estos estados de estrangulamiento, desde el &lt;tt&gt;T0&lt;/tt&gt; hasta el &lt;tt&gt;T7&lt;/tt&gt;. Cuando está en el estado &lt;tt&gt;T0&lt;/tt&gt; el procesador no descansa: siempre está ejecutando algo, aunque sea el &amp;lt;&amp;lt;ciclo &lt;span style="font-style: italic;"&gt;idle&lt;/span&gt;&amp;gt;&amp;gt;, y por lo mismo además siempre está gastando energía. En el estado &lt;tt&gt;T4&lt;/tt&gt;, por ejemplo, el procesador estará dormido el 50% del tiempo: todas las operaciones que el usuario (o el sistema) trate de hacer, incluso a la máxima frecuencia, tardarán el doble de lo que tardarían en el estado &lt;tt&gt;T0&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Hoy en día, con núcleos Linux como el 2.6.26 que tengo funcionando, con las implementaciones modernas de ACPI, el estrangulador &lt;span style="font-weight: bold;"&gt;no es&lt;/span&gt; la vía preferida para cambiar la capacidad (ni el consumo) del procesador. Para eso están los cambios de frecuencia (los estados &lt;tt&gt;P&lt;/tt&gt; del procesador), que son lo que normalmente podemos cambiar con herramientas de usuario como KPowersave. Otro día hablaré más profundamente sobre los estados &lt;tt&gt;P&lt;/tt&gt;, los estados &lt;tt&gt;T&lt;/tt&gt;, los estados &lt;tt&gt;S&lt;/tt&gt;, los estados &lt;tt&gt;C&lt;/tt&gt;, los estados &lt;tt&gt;G&lt;/tt&gt; e incluso los estados &lt;tt&gt;D&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Antiguamente, cuando no se podía cambiar la frecuencia de los procesadores, los estados &lt;tt&gt;T&lt;/tt&gt; eran la única manera de hacer que gastaran menos. Como expliqué arriba, esto se consigue poniendo el procesador a dormir por cortos períodos de tiempo, que en mi caso pueden llegar al 88% del tiempo total, dejando sólo el 12% del tiempo para ejecutar realmente instrucciones. Hoy, normalmente no se cambian estos estados salvo en caso de emergencia térmica: si el procesador está sobrecalentado por exceso de trabajo (y una ventilación o disipación deficiente), el sistema puede estrangular el procesador para obligarle a gastar menos energía (y así generar menos calor) incluso bajo las demandas más altas por parte del usuario.&lt;br /&gt;&lt;br /&gt;Pero se pueden cambiar a mano para ver sus efectos.&lt;br /&gt;&lt;br /&gt;Los núcleos Linux de hoy en día están cambiando sus interfaces ACPI del tradicional &lt;span class="fichero"&gt;/proc&lt;/span&gt; al nuevo &lt;span class="fichero"&gt;/sys&lt;/span&gt;, pero este cambio todavía no ha finalizado y nos las tenemos que ver con ambos. Para los estados &lt;tt&gt;T&lt;/tt&gt;, en particular, vamos a requerir trastear con los ficheros de &lt;span class="fichero"&gt;/proc/acpi/processor/&lt;/span&gt;. En este directorio veremos que hay un directorio por cada núcleo de procesador: &lt;span class="fichero"&gt;/proc/acpi/processor/CPU0/&lt;/span&gt;, &lt;span class="fichero"&gt;/proc/acpi/processor/CPU1/&lt;/span&gt;, etc. Utilicemos &lt;span class="fichero"&gt;/proc/acpi/processor/CPU0/&lt;/span&gt; como ejemplo. En su interior veremos varios ficheros, de los cuales nos va a interesar, en este caso, &lt;span class="fichero"&gt;/proc/acpi/processor/CPU0/throttling&lt;/span&gt;. Este fichero nos indica qué estados de estrangulamiento soporta nuestro procesador (8 en el ejemplo inferior), qué tiempo duerme el procesador en cada uno de ellos y qué estado está en uso actualmente:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;$ cat /proc/acpi/processor/CPU0/throttling&lt;br /&gt;&lt;span class="salida"&gt;state count:             8&lt;br /&gt;active state:            T0&lt;br /&gt;state available: T0 to T7&lt;br /&gt;states:&lt;br /&gt;*T0:                  100%&lt;br /&gt;T1:                  87%&lt;br /&gt;T2:                  75%&lt;br /&gt;T3:                  62%&lt;br /&gt;T4:                  50%&lt;br /&gt;T5:                  37%&lt;br /&gt;T6:                  25%&lt;br /&gt;T7:                  12%&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;En este ejemplo vemos que el sistema tiene 8 estados de estrangulamiento (&lt;tt&gt;state count&lt;/tt&gt;), numerados de &lt;tt&gt;T0&lt;/tt&gt; a &lt;tt&gt;T7&lt;/tt&gt; (&lt;tt&gt;state available&lt;/tt&gt; y la lista &lt;tt&gt;states&lt;/tt&gt;), los tiempos de procesador activo de cada uno, del 100% activo (0% durmiendo) del &lt;tt&gt;T0&lt;/tt&gt; al 12% activo (88% durmiendo) del &lt;tt&gt;T7&lt;/tt&gt; (la lista &lt;tt&gt;states&lt;/tt&gt;) y que el estado actual es el &lt;tt&gt;T0&lt;/tt&gt; (&lt;tt&gt;active state&lt;/tt&gt; y el &lt;tt&gt;*&lt;/tt&gt; en la lista &lt;tt&gt;states&lt;/tt&gt;).&lt;br /&gt;&lt;br /&gt;Se puede cambiar el estado a mano, siendo el superusuario, mediante una sencilla orden típica de &lt;span class="fichero"&gt;/proc&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;# echo 4 &gt; /proc/acpi/processor/CPU0/throttling&lt;/pre&gt; o bien &lt;pre class="comando"&gt;# echo T4 &gt; /proc/acpi/processor/CPU0/throttling&lt;/pre&gt;Si estás tratando de subirlo y no funciona, es que tu máquina está demasiado caliente y el sistema obliga al estrangulador a bajar el consumo para generar menos calor. Recuerda que cada watio gastado es un watio de calor que hay que sacar del sistema. Si sacas menos calor del que generas, el sistema se calienta y puede quemarse.&lt;br /&gt;&lt;br /&gt;Un ejemplo: poner mi portátil sobre una esterilla aislante y poner la máquina a calcular hashes para el aMule pone la máquina en &lt;tt&gt;T7&lt;/tt&gt; independientemente de lo que yo haga. Simplemente levantarla 1cm de la esterilla aislante con unas pinzas de la ropa lleva al sistema a &lt;tt&gt;T4&lt;/tt&gt; casi inmediatamente y a &lt;tt&gt;T0&lt;/tt&gt; en unos 30 segundos. Y además en &lt;tt&gt;T0&lt;/tt&gt; el sistema responde mejor ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6706468107194638863?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6706468107194638863/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6706468107194638863' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6706468107194638863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6706468107194638863'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/09/el-estrangulador-del-procesador.html' title='El estrangulador del procesador'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-3011397323679619948</id><published>2008-07-28T13:09:00.002+01:00</published><updated>2008-07-28T13:15:57.812+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACPI'/><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Portátiles'/><title type='text'>Información sobre la batería</title><content type='html'>Recientemente los núcleos de Linux han dejado de proporcionar la información de la batería que antes se encontraba en &lt;span class="fichero"&gt;/proc/acpi/battery/BAT0&lt;/span&gt; y ahora se considera que utilizar &lt;span class="fichero"&gt;/proc&lt;/span&gt; para esas cosas está desaconsejado, debiéndose utilizar &lt;span class="fichero"&gt;/sys&lt;/span&gt;. Pero por ningún sitio encontré información sobre en qué sitio de &lt;span class="fichero"&gt;/sys&lt;/span&gt; se encuentra ahora esa información.&lt;br /&gt;&lt;br /&gt;Y positivamente no es en &lt;span class="fichero"&gt;/sys/bus/acpi&lt;/span&gt;, &lt;span class="fichero"&gt;/sys/firmware/acpi&lt;/span&gt; ni &lt;span class="fichero"&gt;/sys/module/acpi&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Después de mucho buscar (incluso buceando en los parches de varias herramientas para adaptarse al cambio) lo he encontrado: &lt;span class="fichero"&gt;/sys/class/power_supply&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-3011397323679619948?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/3011397323679619948/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=3011397323679619948' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3011397323679619948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3011397323679619948'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/07/informacin-sobre-la-batera.html' title='Información sobre la batería'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6498874036362696802</id><published>2008-07-03T19:03:00.002+01:00</published><updated>2008-07-04T12:39:20.920+01:00</updated><title type='text'>My Review of Sun Fire X4600 Server</title><content type='html'>&lt;div class="hreview"&gt;&lt;div class="item"&gt;&lt;p&gt;&lt;a href="http://www.sun.com/servers/x64/x4600/"&gt;Originally submitted at Sun Microsystems&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;p style="margin-top:0"&gt;The Sun Fire X4600 server, featuring AMD Opteron processors, packs the punch of two Xeon 4P servers in a more space-efficient and energy-efficient system for tremendous operating cost savings. Its modular design makes upgrading to future processor technologies simple and non-disruptive. The server'...                            &lt;/p&gt;&lt;/div&gt;&lt;a class="url fn" style="display: none;" href="http://www.sun.com/servers/x64/4600/"&gt;&lt;span class="fn"&gt;Sun Fire X4600 Server&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br clear="left"&gt;&lt;p&gt;&lt;strong class="summary"&gt;Insufficient disk space&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;By &lt;strong&gt;Noel "Envite" Torres&lt;/strong&gt; from &lt;strong&gt;Valencia, Spain&lt;/strong&gt; on &lt;strong&gt;&lt;abbr style="border: none; text-decoration: none;" class="dtreviewed" title="200873T1200-0800"&gt;7/3/2008&lt;/abbr&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&lt;div class="prStars prStarsSmall" style="margin: 0.5em 0; height: 15px; width: 83px; background-image: url(http://images.powerreviews.com/images_merchants/stars/10014_stars_small.gif); background-position: 0px -144px;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/p&gt;&lt;div style="display: none"&gt;&lt;span class="rating"&gt;4&lt;/span&gt;out of 5&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Pros: &lt;/strong&gt;Fast, Up to 8 Quad, Easy Set Up&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cons: &lt;/strong&gt;Bulky, Small disk space&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Best Uses: &lt;/strong&gt;Science&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Describe Yourself: &lt;/strong&gt;Quality Oriented&lt;/p&gt;&lt;p class="description" style="margin-top:1em"&gt;At Universidad de Valencia we bought this machine for scientific simulations. We're very happy with it's ease of installation and configuration, and with it's calculating power with 8 Quad (that's 32 processors).&lt;br&gt;But the hard disk is absolutely insufficient. Best possible configuration is 576GiB which is by no means sufficient for a normal simulation in Physics.&lt;br&gt;&lt;br&gt;I wrote a core complete review (in spanish) at my blog in http://denvite.blogspot.com/2008/07/maravilloso-sunfire.html&lt;/p&gt;&lt;p style="margin-top:0.5em"&gt;(&lt;a rel="license" href="http://www.powerreviews.com/legal/terms_of_use.html"&gt;legalese&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/4169924640156861597-6498874036362696802?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6498874036362696802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6498874036362696802' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6498874036362696802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6498874036362696802'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/07/my-review-of-sun-fire-x4600-server.html' title='My Review of Sun Fire X4600 Server'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7344940660468118562</id><published>2008-07-03T17:38:00.005+01:00</published><updated>2008-07-03T18:53:52.148+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSuSE'/><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><title type='text'>Maravilloso SunFire</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sun.com/images/k3/k3_sunfirex4600_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.sun.com/images/k3/k3_sunfirex4600_1.jpg" alt="" border="0" /&gt;&lt;/a&gt;Hoy hemos instalado otra máquina con cuatro procesadores &lt;a href="http://multicore.amd.com/es-es/AMD-Multi-Core.aspx"&gt;AMD Quad Core de 64 bits&lt;/a&gt; como &lt;a href="http://denvite.blogspot.com/2008/07/algo-huele-podrido-en-opensuse-10.html"&gt;los del TYAN que comentaba ayer&lt;/a&gt;. Esta vez, la máquina es una &lt;a href="http://www.sun.com/servers/x64/x4600/"&gt;SunFire X4600 M2&lt;/a&gt;, de &lt;a href="http://www.sun.com/"&gt;Sun Microsystems&lt;/a&gt;. Ha salido más cara por procesador, sin ninguna duda, pero a cambio me gusta más.&lt;br /&gt;&lt;br /&gt;Una de las cosas que hacen, sin género de dudas, que esta máquina me guste más que la anterior es su &lt;a href="http://www.sun.com/systemmanagement/index.jsp"&gt;procesador de servicio&lt;/a&gt;. Una pequeña tarjeta adicional integrada en la máquina que permite, incluso con la máquina apagada, con tal de que tenga corriente, ver el estado del &lt;span style="font-style: italic;"&gt;hardware&lt;/span&gt;, encender la máquina, apagarla, reiniciarla, etc. No me cabe ninguna duda de que los fallos que ha estado teniendo la otra máquina, que tiene, repito, los mismo procesadores, caso de que se reprodujeran en esta máquina, hubieran sido más sencillos de atender. Con la otra máquina, cada vez que notábamos que la máquina no respondía, alguien tenía que acercarse a ver qué pasaba y darle al botón. Ahora, si notáramos lo mismo, podríamos conectar al procesador de servicio &lt;a href="http://blogs.sun.com/bigadmin/entry/server_administration_from_the_beach"&gt;&amp;lt;&amp;lt;desde la playa&gt;&gt;&lt;/a&gt; y ver qué estaría ocurriendo, y en su caso, podríamos reiniciar la máquina sin tener que ir allí. Salvo, claro está, que el problema fuera un corte de luz para todo el armario. Todo eso gracias al sistema &lt;a href="http://www.sun.com/systemmanagement/ilom.jsp"&gt;ILOM&lt;/a&gt; del procesador de servicio, que nos permite, además, acceder por red (HTTP, SNMP y SSH) o por consola serie.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sun.com/images/k3/k3_sunfirex4600_2.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.sun.com/images/k3/k3_sunfirex4600_2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Otra de las grandes ventajas, a mi entender, del SunFire X4600 M2 sobre el ordenador que comentaba ayer es la manera que tiene de organizar los procesadores y la memoria. Allí, cuatro procesadores iban en la placa base, y cuatro en una especie de &amp;lt;&amp;lt;placa base de expansión&gt;&gt;. Aquí los procesadores van, con su memoria asociada, en placas verticales, todas iguales (no cuatro preferentes y cuatro secundarios) que encajan en la placa base individualmente. Aparte de hacer más sencillo el cambio de un procesador (tan tonto como sacar una placa vertical, como se ve en la foto), encuentro el diseño más elegante y mejor pensado.&lt;br /&gt;&lt;br /&gt;Otras ventajas, más secundarias desde mi punto de vista, son las cuatro tarjetas de red Gigabit, las cuatro fuentes de alimentación redundantes colocadas en vertical (el otro las tiene en horizontal), los cuatro ventiladores extraíbles (el otro tiene tres, y no forman túnel de aire) y el hecho de que la colocación de las placas de procesador evita una de las pesadillas de un administrador de sistemas en verano: que se estropee un ventilador de procesador. Al X4600 no se le pueden estropear porque no tiene: la ventilación frontal formando túnel de aire, con los procesadores (y sus disipadores de rejilla) justo detrás, hace todo el trabajo.&lt;br /&gt;&lt;br /&gt;Entre lo malo está que, a consecuencia de lo anterior, se trata de una máquina que ocupa 4U.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sun.com/images/k3/k3_sunfirex4600_4.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.sun.com/images/k3/k3_sunfirex4600_4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lo peor, los discos duros. Son discos SAS (eso es una &amp;lt;&amp;lt;Cosa Buena&gt;&gt; ®) pero de 2,5 pulgadas, lo que no permite tener los grandes discos propios de las máquinas de cálculo científico. El mayor disco soportado es de 146GiB, lo que nos da una capacidad total máxima de 576GiB, claramente insuficiente para cálculos científicos masivos, ya que una configuración normal para simulaciones científicas puede tener perfectamente seis discos de 500GiB cada uno. Y no es raro oír acerca de espacios de disco aún mayores. Total, que hemos acabado (gracias $DEITY por darnos &lt;a href="http://es.wikipedia.org/wiki/RAID"&gt;RAID&lt;/a&gt;) con un espacio de disco de aproximadamente medio TiB para almacenar los resultados.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://es.opensuse.org/skins/opensuse/images/common/geeko.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://es.opensuse.org/skins/opensuse/images/common/geeko.jpg" alt="" border="0" /&gt;&lt;/a&gt;Eso sí, la instalación de la nueva OpenSuSE 11, recién salida del horno, con su flamante KDE 4, fue una delicia. En un ratito tuvimos la máquina completamente instalada, sin problemas de reconocimiento de &amp;lt;&amp;lt;hardware&gt;&gt; ni nada que se le pareciera. Ya está trabajando, y de momento no se ha caído.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7344940660468118562?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sun.com/servers/x64/x4600/' title='Maravilloso SunFire'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7344940660468118562/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7344940660468118562' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7344940660468118562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7344940660468118562'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/07/maravilloso-sunfire.html' title='Maravilloso SunFire'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2651638689686246007</id><published>2008-07-02T20:10:00.004+01:00</published><updated>2008-07-03T17:37:50.557+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSuSE'/><category scheme='http://www.blogger.com/atom/ns#' term='Mantenimiento de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='TYAN'/><title type='text'>Algo huele a podrido en OpenSuSE 10</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.tyan.com/images/serverbarebones/vx50b4985.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.tyan.com/images/serverbarebones/vx50b4985.gif" alt="TYAN Transport VX50" border="0" /&gt;&lt;/a&gt;Una de las cosas que más ocupado me ha tenido estas últimas semanas es un ordenador que se quedaba bloqueado porque sí.&lt;br /&gt;&lt;br /&gt;Se trata de una máquina &lt;a href="http://www.tyan.com/"&gt;TYAN&lt;/a&gt; (un &lt;a href="http://www.tyan.com/product_barebones_detail.aspx?pid=338"&gt;Transport VX50&lt;/a&gt;), que venía del distribuidor (una pequeña empresa local, que lo montó en instaló el S. O.) con una placa base TYAN (la &lt;a href="http://www.tyan.com/product_board_detail.aspx?pid=554"&gt;Thunder n4250QE (S4985-E)&lt;/a&gt;) para cuatro procesadores &lt;a href="http://multicore.amd.com/es-es/AMD-Multi-Core.aspx"&gt;AMD Quad Core de 64 bits&lt;/a&gt;, y una placa de expansión de la placa base también TYAN (la M4985), para montar un total de 8 procesadores de núcleo cuádruple y 128GiB de memoria. Ah, y 8TB de disco.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://es.opensuse.org/skins/opensuse/images/common/geeko.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://es.opensuse.org/skins/opensuse/images/common/geeko.jpg" alt="" border="0" /&gt;&lt;/a&gt;¿A que mola? El caso es que la máquina, que venía del distribuidor con &lt;a href="http://es.opensuse.org/"&gt;OpenSuSE 10&lt;/a&gt; (la 11 no había salido aún), se quedaba bloqueada. Como suena. Simplemente estaba trabajando y de repente dejaba de responder. Todo. Ni contestaba al PING ni se veía nada en la pantalla. Y los leds del teclado, parpadeando.&lt;br /&gt;&lt;br /&gt;Pensamos que era cosa de la temperatura, así que subimos la velocidad de los ventiladores en la BIOS. Se siguió cayendo.&lt;br /&gt;&lt;br /&gt;Pensamos que era cosa del &lt;a href="http://es.wikipedia.org/wiki/ECC"&gt;ECC&lt;/a&gt;, así que lo desactivamos en la BIOS. No estamos seguros, quizá se caía menos, pero se siguió cayendo.&lt;br /&gt;&lt;br /&gt;Pensamos que era cosa de la memoria, así que le corrimos un &lt;a href="http://es.wikipedia.org/wiki/Memtest86%2B"&gt;memtest&lt;/a&gt; durante un fin de semana. Con 128GiB pues solamente le dió una vuelta a la memoria, pero estaba limpia. Otras pruebas en la que obligamos a la máquina a swapear de mala manera con cargas del orden de 400 no hicieron caerse la máquina.&lt;br /&gt;&lt;br /&gt;Finalmente hemos pensado que fuera cosa del entorno gráfico. A fin de cuentas, ¿quién sabe? ¿Y qué falta hace un entorno gráfico en una máquina de cálculo científico? Hemos desactivado el entorno gráfico pasando el nivel de ejecución del 5 al 3. Y la máquina lleva dos días calculando sin parar.&lt;br /&gt;&lt;br /&gt;¿Habremos acertado ya?&lt;br /&gt;&lt;br /&gt;Lo peor es que si fuera eso, algo en OpenSuSE 10 (en su entorno gráfico, en particular) no está nada bien. Y de ser así, mi candidato a culpable es &lt;a href="http://forums.suselinuxsupport.de/index.php?showtopic=66879&amp;amp;hl=earlyxdm"&gt;earlyxdm&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2651638689686246007?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2651638689686246007/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2651638689686246007' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2651638689686246007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2651638689686246007'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/07/algo-huele-podrido-en-opensuse-10.html' title='Algo huele a podrido en OpenSuSE 10'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-7221539993304810989</id><published>2008-06-27T12:27:00.006+01:00</published><updated>2008-06-27T13:47:32.895+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAI'/><category scheme='http://www.blogger.com/atom/ns#' term='NUT'/><title type='text'>Pongamos un SAI al mundo</title><content type='html'>Un ordenador.&lt;br /&gt;&lt;br /&gt;Una subida de tensión.&lt;br /&gt;&lt;br /&gt;¿Qué tenemos? Ordenador frito.&lt;br /&gt;&lt;br /&gt;Y sabiendo el estado de la red eléctrica nacional, y más en estas fechas en que todo el mundo enciende el aire acondicionado, debería ser obligatorio que el dinero que salga de mis impuestos esté protegido, ¿no?&lt;br /&gt;&lt;br /&gt;Me refiero a que debería ser obligatorio que los ordenadores de las instituciones públicas tuvieran SAIs (o mejor SS.A.I.) para evitar las pérdidas causadas por picos o apagones.&lt;br /&gt;&lt;br /&gt;Pero bueno, el caso es que he conseguido 10 SSAI para proteger algunos de los ordenadores de quien ahora mismo hace como que paga mis facturas: el &lt;a href="http://www.uv.es/daa"&gt;Departamento de Astronomía y Astrofísica&lt;/a&gt; de la &lt;a href="http://www.uv.es/%7Ewebuv/castellano/index.php"&gt;Universidad de Valencia&lt;/a&gt;. Deberían haber sido prácticamente el doble, pero todavía hay gente que considera que el material de trabajo de &amp;lt;&amp;lt;su&gt;&gt; puesto de trabajo es suyo. Y se equivocan, pero yo no puedo obligarlos a hacer las cosas bien. Algunos me han dicho, incluso: &amp;lt;&amp;lt;¿SAI? Ni tengo ni quiero.&gt;&gt; Debería ser delito de malversación de caudales públicos.&lt;br /&gt;&lt;br /&gt;Eso sí, cuando venga otro apagón generalizado, a mí que no vengan a quejárseme.&lt;br /&gt;&lt;br /&gt;Bueno, a lo que íbamos. Ya he instalado el primero de esos SSAI. Un ordenador que antes estaba desprotegido, ahora está protegido.&lt;br /&gt;&lt;br /&gt;El programa de elección para efectuar el apagado del ordenador ha sido &lt;a href="http://networkupstools.org/"&gt;Network UPS Tools&lt;/a&gt; (NUT), en su versión 2.2&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.apcmedia.com/resource/images/500/Miscellaneous/BK500pr.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 250px;" src="http://www.apcmedia.com/resource/images/500/Miscellaneous/BK500pr.jpg" alt="" border="0" /&gt;&lt;/a&gt;El SAI elegido es un APC Back-UPS CS 500. No proporciona mucha autonomía a un ordenador grande con su pantalla, pero la idea no es proporcionar autonomía, sino evitar un casque por un mal apagado, de los que ya hemos tenido por aquí.&lt;br /&gt;&lt;br /&gt;Me hubiera gustado elegir otra marca de SSAI. Las APC tienen buenas y malas costumbres. Entre las buenas, que son fiables como rocas y que tienen asegurado el suministro de baterías de recambio. Entre las malas, que no colaboran con los programadores de programas libres y tratan de obligarte a utilizar su pesado y patético programa PowerChute.&lt;br /&gt;&lt;br /&gt;Gracias a &lt;span class="comando"&gt;$DEITY&lt;/span&gt; los SSAI de la serie CS se pueden enchufar por el puerto USB y responden aceptablemente al controlador &lt;span class="comando"&gt;usbhid-ups&lt;/span&gt; de NUT.&lt;br /&gt;&lt;br /&gt;Así, tras bajar NUT y realizar los típicos &lt;span class="comando"&gt;./configure&lt;/span&gt;, &lt;span class="comando"&gt;make&lt;/span&gt; y &lt;span class="comando"&gt;make install&lt;/span&gt; (lamentablemente el ordenador a proteger dispone de una distribución que no tiene paquetes para NUT), obtuve un precioso y funcional sistema. Luego fue cosa de tocar un poco los ficheros de configuración.&lt;br /&gt;&lt;br /&gt;Como nota, el SAI informa de batería en estado crítico cuando se encuentra al 10% de su capacidad, lo que no da tiempo al ordenador para apagarse correctamente. Por ello, he tenido que utilizar la última pieza del conjunto, &lt;span class="comando"&gt;upssched&lt;/span&gt;, diseñada específicamente para apagar el sistema antes de que se alcance la condición de batería en estado crítico.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-7221539993304810989?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/7221539993304810989/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=7221539993304810989' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7221539993304810989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/7221539993304810989'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/06/pongamos-un-sai-al-mundo.html' title='Pongamos un SAI al mundo'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6099223115377958255</id><published>2008-06-24T20:34:00.003+01:00</published><updated>2008-07-03T18:59:22.289+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desarrollo'/><category scheme='http://www.blogger.com/atom/ns#' term='Humor'/><title type='text'>Algunas verdades</title><content type='html'>&lt;a href="http://www.linuxkungfu.org/images/fun/geek/project.jpg"&gt;Una imagen...&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.linuxkungfu.org/images/fun/geek/project.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://www.linuxkungfu.org/images/fun/geek/project.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6099223115377958255?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6099223115377958255/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6099223115377958255' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6099223115377958255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6099223115377958255'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/06/algunas-verdades.html' title='Algunas verdades'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-6308539580601528612</id><published>2008-06-24T17:19:00.010+01:00</published><updated>2009-10-19T23:34:01.632+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='Teclados'/><category scheme='http://www.blogger.com/atom/ns#' term='Multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='Latitude'/><category scheme='http://www.blogger.com/atom/ns#' term='Dell'/><category scheme='http://www.blogger.com/atom/ns#' term='XKB'/><title type='text'>Diseños de teclado</title><content type='html'>A consecuencia de una pregunta de un compañero, he pasado hoy buena parte de la tarde mirando documentación (ciertamente escasa) sobre el sistema &lt;a href="http://www.x.org/wiki/XKB"&gt;XKB&lt;/a&gt;. Se trata de la capa que transforma las pulsaciones de teclas en símbolos que entienden las aplicaciones. Además, he mirado no solamente la propia documentación (sobre todo la muy completa de &lt;a href="http://pascal.tsu.ru/en/xkb/"&gt;Ivan U. Pascal&lt;/a&gt; y la muy comprensible de &lt;a href="http://www.charvolant.org/%7Edoug/xkb/"&gt;Doug Palmer&lt;/a&gt;) sino los propios ficheros de definiciones y reglas de XKB. Allí me he dado cuenta de que existe un modelo de teclado llamado «&lt;span style="font-weight: bold;"&gt;latitude&lt;/span&gt;», equivalente en casi todos los aspectos al «&lt;span style="font-weight: bold;"&gt;pc105&lt;/span&gt;» que se supone que debería usar, solo que tiene correctamente asignadas las teclas 174, 176 y 160, es decir, &lt;span class="comando"&gt;&amp;lt;I2E&gt;&lt;/span&gt;, &lt;span class="comando"&gt;&amp;lt;I30&gt;&lt;/span&gt; e &lt;span class="comando"&gt;&amp;lt;I20&gt;&lt;/span&gt; a las «pseudoteclas» &lt;span class="comando"&gt;XF86AudioLowerVolume&lt;/span&gt;, &lt;span class="comando"&gt;XF86AudioRaiseVolume&lt;/span&gt; y &lt;span class="comando"&gt;XF86AudioMute&lt;/span&gt;.&lt;br /&gt;Así, sólo con haber cambiado el modelo de mi teclado en &lt;span class="fichero"&gt;/etc/X11/xorg.conf&lt;/span&gt; de&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;        Identifier      "Generic Keyboard"&lt;br /&gt;        Driver          "kbd"&lt;br /&gt;        Option          "CoreKeyboard"&lt;br /&gt;        Option          "XkbRules"      "xorg"&lt;br /&gt;        Option          "XkbModel"      "pc105"&lt;br /&gt;        Option          "XkbLayout"     "es"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;a&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;        Identifier      "Generic Keyboard"&lt;br /&gt;        Driver          "kbd"&lt;br /&gt;        Option          "CoreKeyboard"&lt;br /&gt;        Option          "XkbRules"      "xorg"&lt;br /&gt;        Option          "XkbModel"      "latitude"&lt;br /&gt;        Option          "XkbLayout"     "es"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;he conseguido que funcionen las teclas para subir o bajar el volumen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-6308539580601528612?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/6308539580601528612/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=6308539580601528612' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6308539580601528612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/6308539580601528612'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/06/diseos-de-teclado.html' title='Diseños de teclado'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4597681093603339678</id><published>2008-06-13T16:04:00.004+01:00</published><updated>2010-03-14T23:45:16.710Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Meta'/><title type='text'>Blog de Toscalix en castellano</title><content type='html'>Bueno, hace mucho que no escribo en la desbitácora, al contrario que en la &lt;a href="http://envite.blogspot.com"&gt;bitácora&lt;/a&gt;. Pero no ha sido por falta de trabajo, sino al contrario.&lt;br /&gt;&lt;br /&gt;Pero en fin, al grano. He inaugurado la sección de &lt;span style="font-weight: bold;"&gt;Enlaces (quizá) interesantes&lt;/span&gt; (al fondo a la derecha, como el servicio) con la bitácora de un amigo y ex-jefe, &lt;span style="font-weight: bold;"&gt;Agustín Benito&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Él no es desarrollador, al contrario de lo que podría parecer ya que enlazo su bitácora en castellano (tiene &lt;a href="http://toscalix.blogspot.com/"&gt;otra en inglés&lt;/a&gt;) desde aquí. Es una cosa rara. Yo lo llamaría un intermediador. Busca gente que necesite programas libres, y tiene contacto con gente que hace o gestiona programas libres. Y gana dinero en el proceso. Bien es verdad que no demasiado: en ese plan tuvo una empresa en la que yo trabajaba. Éramos solamente nosotros dos, y la relación tenía una parte de jefe-empleado, obviamente, y otra parte de comercial-técnico. Yo a veces decía que él trabajaba para mí, como comercial de mis soluciones técnicas, y además me pagaba.&lt;br /&gt;&lt;br /&gt;Finalmente yo me vine a la Universidad de Valencia a mantener sistemas y acabar de una vez mi doctorado, y él, dado que no se puede mantener una empresa técnica sin un técnico, cerró. Por el camino hicimos varias cosas interesantes, y a veces uno debe pararse y mirar atrás.&lt;br /&gt;&lt;br /&gt;En colaboración con otras miniempresas como Neuroomante de Pedro Gracia (Lasarux) desarrollamos una solución de aula LTSP con UML para docencia informática que era un primor. O las soluciones de firma de discos duros que &lt;a href="http://denvite.blogspot.com/2007/08/firmar-discos-duros.html"&gt;están en esta misma desbitácora&lt;/a&gt;. Pero no siempre había clientes, y había que comer todos los meses (él vivía de ello, y yo trabajaba a media jornada), y también nos tocó «pringar» con cuestiones de mantenimiento de sistemas Windows, casi siempre piratas, subcontratados para empresas de nuestro mismo estilo pero un poco más grandes, o instalar cableado.&lt;br /&gt;&lt;br /&gt;En esa época aprendí mucho, no sólo como técnico (lo que debo agradecer sobre todo a Lasarux, Kuko y la gente más antigua de Fotón, ustedes saben quienes son, chicos, gracias por todo), sino sobre cómo llevar (y cómo no llevar) una empresa o un proyecto basados en programas libres. Toscalix, a su vez, creo que aprendió de mí algo de filosofía libre (no demasiado, porque interferiría en su trabajo, que es ganar dinero con ello), algo de sistemas, y sobre todo de cómo trabajar con programas libres y montar redes. O al menos eso quiero creer.&lt;br /&gt;&lt;br /&gt;Bueno, la etapa ha acabado. Ahora yo, con todo lo que aprendí con él, mantengo ordenadores de cálculo científico en Valencia, y él, con todo lo que aprendió conmigo, trabaja en un proyecto de migración a programas libres en una comarca de Málaga. Y seguimos pensando diferente, y seguimos siendo amigos.&lt;br /&gt;&lt;br /&gt;Como nos enseña la mecánica cuántica, quizá nuestros caminos (profesionales) nunca se vuelvan a cruzar, pero habernos cruzado ha alterado nuestras historias para siempre.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4597681093603339678?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://abenitobethencourt.blogspot.com/' title='Blog de Toscalix en castellano'/><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4597681093603339678/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4597681093603339678' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4597681093603339678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4597681093603339678'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/06/blog-de-toscalix-en-castellano.html' title='Blog de Toscalix en castellano'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5803311801745755595</id><published>2008-01-17T12:10:00.000Z</published><updated>2008-01-17T15:29:29.403Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeX'/><title type='text'>Gráficos en TeX</title><content type='html'>Últimamente he tenido que escribir un trabajo académico. Lo he hecho en &lt;a href="http://www.ctan.org/"&gt;TeX&lt;/a&gt; porque me maravilla la capacidad tipográfica que tiene y la calidad del resultado final.&lt;br /&gt;&lt;br /&gt;La mayor parte de los usuarios de TeX, en realidad, son usuarios de &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt;. Si TeX hace el trabajo del cajista, LaTeX hace el del tipógrafo-compositor. En mi caso particular, prefiero utilizar TeX en vez de LaTeX (me gustan las cosas a bajo nivel).&lt;br /&gt;&lt;br /&gt;Claro que TeX no está directamente preparado para soportar gráficos. Knuth, previendo la diversidad de dispositivos de salida y de tipos de gráficos, tan sólo diseñó la orden &lt;span class="comando"&gt;\special&lt;/span&gt; como una manera genérica de enviar datos a dispositivos de salida. LaTeX quedó mejor en ese sentido.&lt;br /&gt;&lt;br /&gt;Fianlmente, la almendra del asunto es que los que usamos TeX, a pelo, también queremos poner gráficos en nuestros trabajos. Y no queremos lidiar con los &lt;span class="comando"&gt;\special&lt;/span&gt;. Esta semana he descubierto que la solución la aporta &lt;a href="http://www.ctan.org/tex-archive/macros/plain/graphics/"&gt;&lt;span class="fichero"&gt;graphics-pln&lt;/span&gt;&lt;/a&gt;, gracias al cual podemos utilizar en TeX comandos de LaTeX como &lt;span class="comando"&gt;\includegraphics&lt;/span&gt; o &lt;span class="comando"&gt;\rotatebox&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La instalación de &lt;span class="programa"&gt;graphics-pln&lt;/span&gt; no merece siquiera tal nombre. Basta con descargar el fichero &lt;span class="fichero"&gt;graphics.zip&lt;/span&gt; y descomprimirlo en el directorio de trabajo del documento. A partir de ahí, ya se pueden usar directamente las órdenes gráficas habituales.&lt;br /&gt;&lt;br /&gt;En otra entrega hablaré de modos más generales de instalación.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-5803311801745755595?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/5803311801745755595/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=5803311801745755595' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5803311801745755595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5803311801745755595'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2008/01/grficos-en-tex.html' title='Gráficos en TeX'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8359829671542446552</id><published>2007-12-19T14:15:00.000Z</published><updated>2007-12-19T14:58:42.273Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proyecto Chip'/><category scheme='http://www.blogger.com/atom/ns#' term='Ensamblador'/><title type='text'>Instrucciones de procesador (I)</title><content type='html'>Uno de mis eternos proyectos, que retomo una y otra vez y que nunca termino, es diseñar y programar el emulador de un microprocesador.&lt;br /&gt;&lt;br /&gt;El núcleo del proyecto de programación es el lector de instrucciones, y eso nos lleva a que una pieza fundamental del diseño es el juego de instrucciones.&lt;br /&gt;&lt;br /&gt;Una de las operaciones fundamentales de un procesador es, evidentemente, leer un valor de la memoria y depositarlo en un registro o viceversa, escribir en la memoria un valor presente en un registro.&lt;br /&gt;&lt;br /&gt;El diseño de procesador que he elegido implica que estas dos fundamentales operaciones se realicen únicamente desde el registro que he denominado A.&lt;br /&gt;&lt;br /&gt;A estas operaciones les he asignado los mnemónicos &lt;span class="codigo"&gt;LEE&lt;/span&gt; y &lt;span class="codigo"&gt;SCR&lt;/span&gt; y los códigos binarios &lt;span class="codigo"&gt;0xc0&lt;/span&gt; y &lt;span class="codigo"&gt;0xc1&lt;/span&gt;. Ambas operaciones necesitan como argumento una dirección de memoria.&lt;br /&gt;&lt;br /&gt;Asumiendo que el procesador emulado es una estructura de datos que almacenamos en procesador, que la memoria es una matriz que almacenamos en memoria, y que el puntero de instrucción es el registro CI del procesador, el código de emulación para estas instrucciones lo he programado como sigue:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;switch(memoria[chip-&gt;CI])&lt;br /&gt;{&lt;br /&gt; case 0xc0 /* Instrucción LEE */&lt;br /&gt;  chip-&gt;A=memoria[memoria[chip-&gt;CI+1]];&lt;br /&gt;  break;&lt;br /&gt; case 0xc1 /* Instrucción SCR*/&lt;br /&gt;  memoria[memoria[chip-&gt;CI+1]]=chip-&gt;A;&lt;br /&gt;  break;&lt;br /&gt; /* Aquí el código para otras instrucciones */&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Con este código, una instrucción de dos bytes como &lt;span class="codigo"&gt;0xc0 0x12&lt;/span&gt; se desensambla como &lt;span class="codigo"&gt;LEE 0x12&lt;/span&gt;, es decir, "coge el contenido de la posición de memoria 0x12 y cópialo en el registro A".&lt;br /&gt;&lt;br /&gt;Continuaré más adelante...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8359829671542446552?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8359829671542446552/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8359829671542446552' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8359829671542446552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8359829671542446552'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2007/12/instrucciones-de-procesador-i.html' title='Instrucciones de procesador (I)'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8649799976061274513</id><published>2007-11-02T21:43:00.000Z</published><updated>2007-11-02T22:24:31.819Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Fortran'/><title type='text'>Interprogramación de Fortran y C</title><content type='html'>Estoy en Valencia encargado de mantener código.&lt;br /&gt;&lt;br /&gt;Código en Fortran.&lt;br /&gt;&lt;br /&gt;El problema de los códigos heredados, en general, es que son heredados. Uno no cuenta con sus propias costumbres de programación (indentado, nombrado de variables, comentarios en el código...) sino que tiene que adivinar sobre código ajeno.&lt;br /&gt;&lt;br /&gt;Pero bueno, una cosa es eso, y otra Fortran. Fortran como lenguaje, tal y como se utiliza en Ciencia (códigos FORTRAN 77 heredados de estudiantes de doctorado en estudiantes de doctorado) es algo realmente asqueroso. A veces da la tentación de reprogramar en C, o de modernizar el código a Fortran 95.&lt;br /&gt;&lt;br /&gt;La almendra de la cuestión es hacer esa reprogramación en C de rutinas que seguirán siendo llamadas desde Fortran, al estilo Fortran.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;¿Funciones o subrutinas?&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;En C tenemos funciones. En Fortran tenemos funciones y subrutinas. Si tenemos que llamar a Fortran desde C, ¿cómo escribir en Fortran el código llamado?&lt;br /&gt;&lt;br /&gt;Básicamente, si nuestra función en C retorna un valor, en Fortran usaremos una función. Si la función en C no retorna (&lt;span class="codigo"&gt;void&lt;/span&gt;), en Fortran usaremos una subrutina.&lt;br /&gt;&lt;br /&gt;Y viceversa, si en Fortran tenemos una llamada &lt;span class="codigo"&gt;CALL&lt;/span&gt;, en C usaremos una función &lt;span class="codigo"&gt;void&lt;/span&gt;, mientras que si en Fortran tenemos una llamada a función, en C usaremos una función del mismo tipo.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Nombres de funciones&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Normalmente los compiladores de Fortran, en las tablas de símbolos de los ficheros objeto, cambian el nombre de los objetos a minúsculas (recordemos que en Fortran las mayúsculas y las minúsculas son equivalentes) y añaden un guión bajo al final del nombre.&lt;br /&gt;&lt;br /&gt;Así, si desde C queremos llamar a una función o subrutina Fortran, debemos llamarla con su nombre escrito completamente en minúsculas y añadir un guión bajo al final.&lt;br /&gt;&lt;br /&gt;Y si desde Fortran queremos llamar a una función C, ésta tiene que tener un nombre completamente en minúsculas y un guión al final, que en el código Fortran no pondremos. Si no es así, nos veremos obligados a programar en C un &lt;i&gt;wrapper&lt;/i&gt; que siga esta convención y llame a la función C real.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Paso de variables&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Es importante recordar que en Fortran las variables siempre se pasan por referencia, nunca por valor. Incluso si llamamos a una función con argumentos constantes.&lt;br /&gt;&lt;br /&gt;Por ello, las funciones C que sean llamadas desde Fortran deben esperar que todos sus argumentos sean punteros, y las funciones o subrutinas Fortran que sean llamadas desde C deben ser llamadas proporcionándoles argumentos que sean punteros.&lt;br /&gt;&lt;br /&gt;Hay que tener en cuenta, cuando se pasen matrices, que el nombre de la matriz, a secas, ya es un puntero en C, así que no hay que añadirle el asterisco delante.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Almacenamiento de matrices&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;En C las matrices se almacenan "por filas", o mejor expresado, el índice más a la derecha, el último, recorre secuencialmente los elementos de la matriz. En Fortran, en cambio, las matrices se almacenan "por columnas", es decir, el índice más a la izquierda, el primero, es el que recorre secuencialmente los elementos.&lt;br /&gt;&lt;br /&gt;Por ello, cuando pasamos una matriz de Fortran a C o viceversa, debemos invertir el orden de todos sus índices.&lt;br /&gt;&lt;br /&gt;También hay que tener en cuenta que mientras que en Fortran una matriz puede declararse con índices arbitrarios, que por defecto comienzan en 1, en C las matrices siempre comienzan con el índice 0.&lt;br /&gt;&lt;br /&gt;Por la misma razón, todo programador decente de Fortran escribe bucles anidados en los que el bucle más interno recorre el primer índice, mientras que todo programador decente de C escribe bucles anidados en los que el bucle más interno recorre el último índice.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Bloques &lt;span class="codigo"&gt;COMMON&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;En Fortran es común utilizar bloques &lt;span class="codigo"&gt;COMMON&lt;/span&gt; como un modo de que todas las subrutinas y funciones puedan acceder a determinadas variables. Es posible hacer uso desde C de estos bloques &lt;span class="codigo"&gt;COMMON&lt;/span&gt;, si tenemos en cuenta que se presentan como estructuras de datos cuyo contenido es el conjunto de variables que en C correspondan a las variables Fortran.&lt;br /&gt;&lt;br /&gt;Es necesario tener en cuenta que lo mencionado acerca de los identificadores de funciones Fortran en C también se aplica a los nombres de estas estructuras y a los de las variables que las componen.&lt;br /&gt;&lt;br /&gt;&lt;div class="ojo"&gt;Es necesario fijarse con cuidado, si tenemos problemas de acceso a estas variables, en las direcciones resultantes para las variables flotantes de doble precisión. Los compiladores de C pueden añadir relleno en las estructuras de datos para que los límites de las variables se alineen correctamente, y los de Fortran no pueden hacerlo en sus bloques &lt;span class="codigo"&gt;COMMON&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/4169924640156861597-8649799976061274513?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8649799976061274513/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8649799976061274513' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8649799976061274513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8649799976061274513'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2007/11/interprogramacin-de-fortran-y-c.html' title='Interprogramación de Fortran y C'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-4014016478503696775</id><published>2007-09-15T23:25:00.000+01:00</published><updated>2007-09-15T23:52:23.860+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEP'/><category scheme='http://www.blogger.com/atom/ns#' term='WPA'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes Inalámbricas'/><title type='text'>Conectarse a redes inalámbricas</title><content type='html'>Acabo de conectarme por primera vez a una red inalámbrica con cifrado &lt;a href="http://es.wikipedia.org/wiki/WPA"&gt;WPA&lt;/a&gt;. No es difícil, si sabes cómo hacerlo, y yo no sabía. Pero en cuanto miré en Internet desde otro ordenador que ya estaba conectado, vi que tenía que usa &lt;span class="comando"&gt;wpa_supplicant&lt;/span&gt;, que por suerte ya tenía instalado. Cosas de las &lt;span style="font-style: italic;"&gt;distros &lt;/span&gt;modernas.&lt;br /&gt;&lt;br /&gt;Bastaron luego 5 minutos de buceo en las páginas de manual correspondientes, y saqué un guión que me hace el trabajo.&lt;br /&gt;&lt;br /&gt;Pero bueno, antes de hablar del guión para WPA, hablaré del guión para WEP, que es más sencillo.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;El guión para &lt;a href="http://es.wikipedia.org/wiki/WEP"&gt;WEP&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Este guión supone que nos vamos a conectar a una red inalámbrica cifrada mediante WEP, usando una tarjeta de red inalámbrica que nuestro ordenador llama eth1 (también podía ser wlan0). También supone que tenemos un servidor  de nombres instalado en el equipo, algo que yo siempre hago, salvo que necesite un servidor de la red local para resolver nombres locales.&lt;br /&gt;&lt;br /&gt;La clave de la red WEP es 01:23:45:67:89:AB:CD:EF:01:23:45:67:89 (por ejemplo) y transmite en el canal 9 (por poner). Daremos a nuestro equipo la dirección IP 192.168.1.58 (por dar una) ya que la dirección IP del punto de acceso es 192.168.1.1 (como podía ser otra).&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;# /usr/local/sbin/conf_wep&lt;br /&gt;#Configuración inalámbrica de la tarjeta&lt;br /&gt;iwconfig eth1 key restricted 01:23:45:67:89:AB:CD:EF:01:23:45:67:89 channel 9 ap auto&lt;br /&gt;#Configuración IP&lt;br /&gt;ifconfig eth2 192.168.1.58&lt;br /&gt;#Borramos la ruta por defecto, por si la tarjeta eth0 (la de cable) había establecido una y asignamos la que corresponde&lt;br /&gt;route del default&lt;br /&gt;route add default gw 192.168.1.1&lt;br /&gt;#Configuramos el resolvedor de nombres para indicarle que es el equipo propio, y lo arrancamos si estaba parado.&lt;br /&gt;echo nameserver 127.0.0.1 &gt; /etc/resolv.conf&lt;br /&gt;/etc/init.d/bind9 restart&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;El guión para WPA&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;El guión para WPA es muy parecido al de WEP, solo que además hay que configurar &lt;span class="comando"&gt;wpa_supplicant&lt;/span&gt;. Esto lo hacemos primero, en un fichero que podemos llamar, por ejemplo, /etc/wpa_supplicant.conf (aunque podemos tener varios, si solemos conectar el portátil a varias redes WPA distintas):&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;# /etc/wpa_supplicant.conf&lt;br /&gt;network={&lt;br /&gt;   ssid="Mi Red WPA"&lt;br /&gt;   psk="La clave de mi red WPA"&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Luego, la configuración de la tarjeta es muy similar, solo que en vez de proporcionar directamente los parámetros inalámbricos le dejamos ese trabajo a &lt;span class="comando"&gt;wpa_supplicant&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;# /usr/local/sbin/conf_wpa&lt;br /&gt;#Configuración inalámbrica de la tarjeta&lt;br /&gt;wpa_supplicant -B -ieth1 -c/etc/wpa_supplicant.conf&lt;br /&gt;ifconfig eth2 192.168.1.58&lt;br /&gt;route del default&lt;br /&gt;route add default gw 192.168.1.1&lt;br /&gt;echo nameserver 127.0.0.1 &gt; /etc/resolv.conf&lt;br /&gt;/etc/init.d/bind9 restart&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y ya está, a trabajar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-4014016478503696775?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/4014016478503696775/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=4014016478503696775' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4014016478503696775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/4014016478503696775'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2007/09/conectarse-redes-inalmbricas.html' title='Conectarse a redes inalámbricas'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-2249043391078007892</id><published>2007-08-17T20:38:00.000+01:00</published><updated>2007-08-21T19:02:46.892+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Xen'/><category scheme='http://www.blogger.com/atom/ns#' term='udev'/><title type='text'>Hotplug en Xen</title><content type='html'>&lt;b&gt;&lt;a href="http://www.cl.cam.ac.uk/research/srg/netos/xen/"&gt;Xen&lt;/a&gt;&lt;/b&gt; es un sistema de paravirtualización (&lt;a href="http://en.wikipedia.org/wiki/Paravirtualization"&gt;enlace en inglés&lt;/a&gt;), es decir, una manera de correr varios sistemas operativos en una máquina física, cada sistema creyendo que corre en una máquina real cuando lo hace en una máquina virtual con las características que hayamos definido.&lt;br /&gt;&lt;br /&gt;Es paravirtualización, y no &lt;a href="http://es.wikipedia.org/wiki/Virtualizaci%C3%B3n"&gt;virtualización&lt;/a&gt;, porque los sistemas que van a correr en las máquinas virtuales deben ser modificados para correr sobre &lt;b&gt;Xen&lt;/b&gt;. No obstante, las últimas versiones de &lt;b&gt;Xen&lt;/b&gt; ofrecen virtualización real si se utilizan sobre procesadores de última generación, con instrucciones específicas.&lt;br /&gt;&lt;br /&gt;El caso es que la máquina virtual no utiliza discos duros reales, sino elementos que desde la máquina real se le exportan como tales. Dichos elementos pueden ser un disco real, una partición o un fichero, y desde la máquina virtual se verán como un disco duro o una partición.&lt;br /&gt;&lt;br /&gt;Entre las virtudes de &lt;b&gt;Xen&lt;/b&gt; está la posibilidad de añadir o eliminar tales elementos de la máquina virtual en caliente, como si se enchufaran o desenchufaran de ella.&lt;br /&gt;&lt;br /&gt;Y ahora, la almendra del asunto: Quiero que cuando enchufe un dispositivo en la máquina real (llamada "el hierro"), se enchufe automáticamente a la máquina virtual.&lt;br /&gt;&lt;br /&gt;Esta solución la desarrollé yo, a partir de una idea de &lt;a href="http://www.maarmas.com/"&gt;Kuko "Maestro Xen" Armas&lt;/a&gt;, cuando, teniendo otras cosas mejores que hacer en la empresa (&lt;a href="http://www.grupocpd.com/"&gt;Grupo CPD&lt;/a&gt;), me empeñé en sacar adelante la idea en vez de darlo por imposible.&lt;br /&gt;&lt;br /&gt;El primer paso es detectar que se ha enchufado un dispositivo determinado al hierro. De eso se encarga &lt;span class="comando"&gt;&lt;a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"&gt;udev&lt;/a&gt;&lt;/span&gt;. El segundo paso es introducir ese dispositivo en la máquina virtual. De eso se encarga &lt;span class="comando"&gt;xm&lt;/span&gt;, uno de los comandos de &lt;b&gt;Xen&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Y en medio, hay que decidir a qué máquina virtual, de las varias que puede haber corriendo, se debe enchufar el dispositivo introducido. De esto se encarga &lt;b&gt;XenHotplug&lt;/b&gt;, la solución que he desarrollado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XenHotplug&lt;/b&gt; se compone de reglas de &lt;span class="comando"&gt;udev&lt;/span&gt;, guiones shell llamados desde esas reglas y un directorio de registro. Uno de esos guiones shell utiliza &lt;a href="http://denvite.blogspot.com/2007/08/firmar-discos-duros.html"&gt;la firma de discos que presentaba en el artículo anterior&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Reglas de &lt;span class="comando"&gt;udev&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Debemos crear un fichero de reglas de &lt;span class="comando"&gt;udev&lt;/span&gt;. Residirá en el directorio &lt;span class="fichero"&gt;/etc/udev/rules.d&lt;/span&gt; y lo podemos llamar, por ejemplo, &lt;span class="fichero"&gt;10-local.rules&lt;/span&gt;. Ese nombre hará que se ejecute después de ciertas reglas fundamentales (las &lt;span class="fichero"&gt;5-early.rules&lt;/span&gt;) pero antes que el resto de reglas predefinidas.&lt;br /&gt;&lt;br /&gt;En dicho fichero detectaremos la introducción o eliminación en el sistema de un dispositivo determinado y diremos qué hay que hacer con él:&lt;br /&gt;&lt;br /&gt;&lt;pre class="fichero"&gt;SUBSYSTEM=="block", SYSFS{product}=="Mass Storage Device", \&lt;br /&gt; SYSFS{manufacturer}=="Prolific Technology Inc.", \&lt;br /&gt; SYSFS{start}=="63", ACTION=="add", \&lt;br /&gt; PROGRAM="/usr/local/sbin/identify.sh %P", \&lt;br /&gt; SYMLINK+="externalusbdisk%c", \&lt;br /&gt; RUN+="/usr/local/sbin/action.sh %c %k"&lt;br /&gt;&lt;br /&gt;SUBSYSTEM=="block", ACTION=="remove", \&lt;br /&gt; RUN+="/usr/local/sbin/action.sh 0 %k"&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;La primera regla detecta la introducción en el sistema (&lt;span class="comando"&gt;ACTION=="add"&lt;/span&gt;) de un dispositivo de bloque (&lt;tt&gt;SUBSYSTEM=="block"&lt;/tt&gt;) que puede ser cualquier cosa que se comporte como un disco duro externo o un disquete externo, que sea de la clase de dispositivos tipo disco (&lt;span class="comando"&gt;SYSFS{product}=="Mass Storage Device"&lt;/span&gt;), de una determinada marca (&lt;span class="comando"&gt;SYSFS{manufacturer}=="Prolific Technology Inc."&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Esto detectará la introducción de cualquier dispositivo de bloque, es decir, tanto el disco externo como sus particiones. Hay que tener en cuenta que al enchufar el disco, se genera un evento de introducción del disco completo, pero además el núcleo (kernel) del sistema revisa el disco y detecta sus particiones, que son añadidas al sistema, además del propio disco. Por eso, cuando enchufamos un disco particionado, aparecen los dispositivos correspondientes a las particiones, y no tenemos que crearlos a mano.&lt;br /&gt;&lt;br /&gt;La regla, además, distingue si se trata del evento correspondiente al disco completo o a la partición, ya que la pieza &lt;span class="comando"&gt;SYSFS{start}=="63"&lt;/span&gt; sólo la cumple la primera partición. De esta manera la regla no casa con el disco completo, ni con las restantes particiones de un disco, sino sólo con la primera.&lt;br /&gt;&lt;br /&gt;La siguiente pieza de la regla (&lt;span class="comando"&gt;PROGRAM="/usr/local/sbin/identify.sh %P"&lt;/span&gt;) llama a un programa (guión de shell) de identificación del disco, que nos dirá de qué disco se trata exactamente. Así podremos distinguir los discos de esa marca y modelo que queremos que se enchufen a la máquina virtual de los que no. El programa se llama con un argumento (&lt;span class="comando"&gt;%P&lt;/span&gt;) que indica qué nombre de dispositivo se ha asignado al disco completo.&lt;br /&gt;&lt;br /&gt;El programa proporciona un número de dispositivo, si se trata de un disco conocido (para lo que usamos la firma del disco) o la cadena &lt;span class="comando"&gt;NOID&lt;/span&gt; si se trata de un disco no identificado. En cualquiera de los dos casos, se crea un enlace simbólico &lt;span class="fichero"&gt;/dev/externalusbdiskX&lt;/span&gt; (donde &lt;span class="fichero"&gt;X&lt;/span&gt; es el número proporcionado antes), es decir, puede aparecer un enlace como &lt;span class="fichero"&gt;/dev/externalusbdisk2&lt;/span&gt; para el disco identificado como &lt;span class="fichero"&gt;2&lt;/span&gt;, o &lt;span class="fichero"&gt;/dev/externalusbdiskNOID&lt;/span&gt; para un disco no identificado, gracias a la parte de la regla que dice &lt;span class="comando"&gt;SYMLINK+="externalusbdisk%c"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Finalmente, se ejecuta otro programa (guión de shell), con el dispositivo y el enlace simbólico ya creados, al que se pasan como argumentos el mismo número o &lt;span class="fichero"&gt;NOID&lt;/span&gt; establecido antes y el nombre real del dispositivo (&lt;span class="comando"&gt;RUN+="/usr/local/sbin/action.sh %c %k"&lt;/span&gt;). Este programa borrará el enlace &lt;span class="fichero"&gt;/dev/externalusbdiskNOID&lt;/span&gt;, si se trata de un dispositivo no identificado, o añadirá la partición a la máquina virtual y la registrará, si se trata de un dispositivo identificado.&lt;br /&gt;&lt;br /&gt;La segunda regla detecta la retirada del sistema (&lt;span class="comando"&gt;ACTION=="remove"&lt;/span&gt;) de cualquier (no podemos pedir mucha información acerca de un dispositivo ya retirado, ¿no?) dispositivo de bloque  (&lt;span class="comando"&gt;SUBSYSTEM=="block"&lt;/span&gt;), y ejecuta el mismo programa que en el caso anterior, que en esta ocasión detectará si el dispositivo está registrado como insertado en la máquina virtual y, en tal caso, lo eliminará de la misma y lo desregistrará.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Guiones shell&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Ahora veremos los programas que son llamados desde &lt;span class="comando"&gt;udev&lt;/span&gt;. El primero es &lt;span class="fichero"&gt;identify.sh&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;#!/bin/bash&lt;br /&gt;# fichero /usr/local/sbin/identify.sh de XenHotplug&lt;br /&gt;&lt;br /&gt;disp=$1&lt;br /&gt;gen_id=`cat /usr/local/lib/identify.in`&lt;br /&gt;disk_id=`dd if=/dev/$1 count=3 bs=1 skip=440 2&gt; /dev/null`&lt;br /&gt;disk_sn=`dd if=/dev/$1 count=1 bs=1 skip=443 2&gt; /dev/null`&lt;br /&gt;disk_sn_f=`echo -n $disk_sn|od -A n -N 1 --format=u`&lt;br /&gt;if [ "$disk_id" = "$gen_id" ] ; then&lt;br /&gt;        echo $disk_sn_f&lt;br /&gt;else&lt;br /&gt;        echo NOID&lt;br /&gt;fi&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como se puede ver, el programa guarda en la variable &lt;span class="comando"&gt;$disp&lt;/span&gt; el nombre del dispositivo padre que la regla de &lt;span class="comando"&gt;udev&lt;/span&gt; le pasa como argumento, a continuación guarda en la variable &lt;span class="comando"&gt;$gen_id&lt;/span&gt; el contenido del fichero &lt;span class="comando"&gt;/usr/local/lib/identify.in&lt;/span&gt;, que es la firma de disco que empleamos para reconocerlos, y a continuación lee datos del propio disco.&lt;br /&gt;&lt;br /&gt;Primero lee los bytes que deberían tener la firma de disco y los almacena en la variable &lt;span class="comando"&gt;$disk_id&lt;/span&gt;, y luego lee el byte de número de serie y lo almacena en la variable &lt;span class="comando"&gt;$disk_sn&lt;/span&gt;. Este número de serie, que es un byte con un valor entre 0 y 255 y que por lo tanto puede representar un carácter cualquiera, hemos de transformarlo en una cadena de texto para poderlo comparar, por eso lo formateamos como tal y lo almacenamos en la variable &lt;span class="comando"&gt;disk_sn_f&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Finalmente, si la firma del disco es la que esperamos, devolveremos el número de serie, que la regla &lt;span class="comando"&gt;udev&lt;/span&gt; empleará como ya hemos visto, y si el disco no es uno de los que buscamos, devolveremos la cadena &lt;span class="comando"&gt;NOID&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Obviamente, el contenido de &lt;span class="fichero"&gt;/usr/local/lib/identify.in&lt;/span&gt; es la firma binaria que esperamos:&lt;br /&gt;&lt;br /&gt;&lt;pre class="comando"&gt;# hexdump /usr/local/lib/identify.in -e "\"%x\""&lt;br /&gt;&lt;span class="salida"&gt;eeeeee&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;El segundo programa, &lt;span class="fichero"&gt;action.sh&lt;/span&gt;, es el encargado de registrar y desregistrar los dispositivos, y de insertarlos y eliminarlos de la máquina virtual, así como de borrar el enlace simbólico &lt;span class="fichero"&gt;/dev/externalusbdiskNOID&lt;/span&gt; en su caso:&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;#!/bin/bash&lt;br /&gt;# fichero /usr/local/sbin/action.sh de XenHotplug&lt;br /&gt;&lt;br /&gt;virt=mimaquinavirtual&lt;br /&gt;&lt;br /&gt;if [ "$ACTION" = "add" ] ; then&lt;br /&gt;  if [ "$1" = NOID ] ; then&lt;br /&gt;    rm -f /dev/externalusbdisk$1 &lt;br /&gt;  else&lt;br /&gt;    mkdir /var/xenhotplug/$1&lt;br /&gt;    echo $2 &gt; /var/xenhotplug/$1/devname&lt;br /&gt;    /usr/sbin/xm block-list $virt &gt; /var/xenhotplug/$1/prelist&lt;br /&gt;    /usr/sbin/xm block-attach $virt phy:externalusbdisk$1 hdb$1 \&lt;br /&gt;      w 2&gt;&amp;1&lt;br /&gt;    /usr/sbin/xm block-list $virt &gt; /var/xenhotplug/$1/postlist&lt;br /&gt;    diff -u /var/xenhotplug/$1/{pre,post}list &gt; \&lt;br /&gt;      /var/xenhotplug/$1/difflist&lt;br /&gt;    cat /var/xenhotplug/$1/difflist | grep ^+ | tail -n -1 | \&lt;br /&gt;      awk '{print \$1}'|awk -F + '{print \$2}' &gt; \&lt;br /&gt;      /var/xenhotplug/$1/vdev&lt;br /&gt;  fi&lt;br /&gt;else&lt;br /&gt;  if [ "$ACTION" = "remove" ] ; then&lt;br /&gt;    for file in /var/xenhotplug/* ; do&lt;br /&gt;      filecont=`cat $file/devname`&lt;br /&gt;      if [ "$filecont" = "$2" ] ; then&lt;br /&gt;        vdev=`cat $file/vdev`&lt;br /&gt;        /usr/local/sbin/assure-detach.sh $virt $vdev 2&gt;&amp;1&lt;br /&gt;        rm -rf $file&lt;br /&gt;      fi&lt;br /&gt;    done&lt;br /&gt;  fi&lt;br /&gt;fi&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="aparte"&gt;El código actual no es exactamente ese, sino que incluye varias líneas de depurado y de registro que aquí no se muestran por simplicidad.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Es obvio que se trata de código aún no muy pulido, como en el guión shell anterior, no obstante hace su trabajo bastante bien. Eso sí: asume que la máquina virtual se llama &lt;span class="fichero"&gt;mimaquinavirtual&lt;/span&gt; y que es la única máquina en la que insertamos dispositivos por esta vía, y asume que está permanentemente encendida.&lt;br /&gt;&lt;br /&gt;Bueno, al grano. En primer lugar, vemos que hay dos grandes bloques de código, el primero se ejecuta si la variable de entorno &lt;span class="comando"&gt;$ACTION&lt;/span&gt; tiene el valor &lt;span class="comando"&gt;add&lt;/span&gt; y el segundo si tiene el valor &lt;span class="comando"&gt;remove&lt;/span&gt;. Esta variable de entorno la establece &lt;span class="comando"&gt;udev&lt;/span&gt; para el programa que ejecuta cuando se produce un evento.&lt;br /&gt;&lt;br /&gt;El primer bloque, correspondiente a &lt;span class="comando"&gt;add&lt;/span&gt;, se subdivide en dos partes. Por un lado, si el programa se llama con un primer argumento de &lt;span class="comando"&gt;NOID&lt;/span&gt;, que recordemos es lo que ocurre cuando se introduce un disco no firmado, el programa borra el enlace simbólico espúreo y sale. Por otro lado, si el programa se llama con cualquier otro argumento supondremos que se trata del número de disco y entraremos en harina.&lt;br /&gt;&lt;br /&gt;En primer lugar crearemos el directorio donde registramos este disco (&lt;span class="comando"&gt;mkdir /var/xenhotplug/$1&lt;/span&gt;), lo registramos en un fichero en ese directorio (&lt;span class="comando"&gt;echo $2 &gt; /var/xenhotplug/$1/devname&lt;/span&gt;, hallamos la lista de dispositivos conectados a la máquina virtual (&lt;span class="comando"&gt;/usr/sbin/xm block-list $virt &gt; /var/xenhotplug/$1/prelist&lt;/span&gt;), insertamos el disco en la máquina virtual (&lt;span class="comando"&gt;/usr/sbin/xm block-attach $virt phy:externalusbdisk$1 hdb$1 w 2&gt;&amp;1&lt;/span&gt;) y volvemos a hallar la lista de dispositivos conectados (&lt;span class="comando"&gt;/usr/sbin/xm block-list $virt &gt; /var/xenhotplug/$1/postlist&lt;/span&gt;). Esto hay que hacerlo así porque no es posible determinar el número de dispositivo que &lt;b&gt;Xen&lt;/b&gt; asigna a cada dispositivo insertado.&lt;br /&gt;&lt;br /&gt;&lt;div class="aparte"&gt;De hecho sí es posible, ya que el número asignado es una combinación de los números mayor y menor de dispositivo, pero aparte de complicado sólo vale cuando la máquina virtual es Linux.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Debido a ello debemos determinar el número de dispositivo asignado, para lo que hallamos la diferencia entre las dos listas de dispositivos (&lt;span class="comando"&gt;diff -u /var/xenhotplug/$1/{pre,post}list &gt; /var/xenhotplug/$1/difflist&lt;/span&gt;), que es la línea correspondiente al dispositivo añadido, y extraemos de ella el citado número (&lt;span class="comando"&gt;cat /var/xenhotplug/$1/difflist |grep ^+|tail -n -1|awk '{print \$1}'|awk -F + '{print \$2}' &gt; /var/xenhotplug/$1/vdev&lt;/span&gt;) y lo registramos también. Trabajo hecho.&lt;br /&gt;&lt;br /&gt;Por otro lado, el segundo bloque, que se ejecuta cuando se retira un dispositivo, parece un poco más sencillo. Revisa a través de todos los dispositivos registrados en busca del que acaba de desaparecer (&lt;span class="comando"&gt;for file in /var/xenhotplug/* ; do ... done&lt;/span&gt;), poniendo temporalmente el nombre de cada uno en la variable &lt;span class="comando"&gt;$filecont&lt;/span&gt; (&lt;span class="comando"&gt;filecont=`cat $file/devname`&lt;/span&gt;) y comparándolo con el que buscamos (&lt;span class="comando"&gt;if [ "$filecont" = "$2" ] ; then ... fi&lt;/span&gt;). Cuando lo encuentra, registra temporalmente en la variable &lt;span class="comando"&gt;$vdev&lt;/span&gt; el número de dispositivo buscado (&lt;span class="comando"&gt;vdev=`cat $file/vdev`&lt;/span&gt;), llama a otro programa que se asegura de desconectar ese dispositivo de la máquina virtual (&lt;span class="comando"&gt;/usr/local/sbin/assure-detach.sh $virt $vdev 2&gt;&amp;1&lt;/span&gt;) y desregistra el dispositivo (&lt;span class="comando"&gt;rm -rf $file&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Directorio de registro&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Bueno, el funcionamiento del directorio de registro quedó ya explicado arriba, con el fichero que lo usa, pero en resumen: el directorio &lt;span class="fichero"&gt;/var/xenhotplug&lt;/span&gt; se llena con otros directorios, uno por cada dispositivo registrado. En el interior de estos se generan varios ficheros, de los cuales sólo son importantes dos, &lt;span class="fichero"&gt;/var/xenhotplug/X/vdev&lt;/span&gt;, que contiene el número de dispositivo virtual &lt;b&gt;Xen&lt;/b&gt;, y &lt;span class="fichero"&gt;/var/xenhotplug/X/devname&lt;/span&gt;, que contiene el nombre de dispositivo del hierro que se utilizó para añadir a la máquina virtual. Crear uno de estos directorios con esos dos ficheros es lo que llamamos registrar un dispositivo, y borrarlo es lo que llamamos desregistrarlo.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="fichero"&gt;assure-detach.sh&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Estoooo... no lo voy a presentar. No está acabado. Y de hecho no funciona bien (aún). Pero básicamente lo que hace es llamar a &lt;span class="comando"&gt;/usr/sbin/xm block-detach $virt $vdev&lt;/span&gt;. El problema que tiene en este momento es que si el dispositivo está en uso en la máquina virtual, ésta ignora la orden de eliminarlo. Estoy trabajando en ello.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-2249043391078007892?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/2249043391078007892/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=2249043391078007892' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2249043391078007892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/2249043391078007892'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2007/08/hotplug-en-xen.html' title='Hotplug en Xen'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-3704280572144040114</id><published>2007-08-17T13:03:00.000+01:00</published><updated>2007-08-19T19:16:23.518+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bajo nivel'/><title type='text'>Firmar discos duros</title><content type='html'>&lt;span style="font-weight: bold;"&gt;PUBLICADA, PERO PENDIENTE DE MEJORAR EL FORMATO&lt;/span&gt; (no habrá cambios de contenido, salvo correcciones)&lt;hr /&gt;¿Cómo distinguir entre sí dos discos duros?&lt;br /&gt;&lt;br /&gt;Evidentemente, la pregunta no es cómo distinguirlos por fuera, para eso basta con una pegatina. Sino cómo distinguirlos desde el ordenador.&lt;br /&gt;&lt;br /&gt;La respuesta típica sería usar el número de serie. Una aplicación sencilla como &lt;tt&gt;smartctl&lt;/tt&gt; nos da tan interesante dato, que además es único para cada disco.&lt;br /&gt;&lt;br /&gt;Vale. Pero es que tengo el disco en una de esas cajas USB tan monas, que me dejan usar como disco externo USB un disco IDE.&lt;br /&gt;&lt;br /&gt;Pues la respuesta general sería que lo llevo chungo. No obstante, aquí viene la solución. La he desarrollado cuando me surgió la necesidad de distinguir entre sí discos externos que utilizamos en &lt;a href="http://www.grupocpd.com/"&gt;Grupo CPD&lt;/a&gt; (la empresa para la que trabajo) para hacer copias de seguridad con Espiral (un programa que no uso) o con &lt;a href="http://www.dirvish.org/"&gt;Dirvish&lt;/a&gt; (que yo sí uso, es la base de Espiral, y está basado en el viejo y eficaz &lt;tt&gt;rsync&lt;/tt&gt;).&lt;br /&gt;&lt;br /&gt;Un disco particionable almacena su tabla de particiones en el sector de arranque, ese lugar tan conocido llamado a veces MBR, objetivo de virus y elementos indeseables semejantes.&lt;br /&gt;&lt;br /&gt;El sector de arranque de un disco particionable cualquiera, independientemente de que se utilice en Windows o Linux (no me comprometo con otros sistemas), es el primer sector del disco duro, es decir, los primeros 512 bytes, y tiene una estructura muy definida.&lt;br /&gt;&lt;br /&gt;Los primeros 440 bytes (del 0 al 439) contienen el cargador de arranque del sistema. Es un programa muy pequeño que se carga en memoria al arrancar el ordenador, y se encarga de arrancar el ordenador desde una de las particiones disponibles. Ejemplos de programas de este tipo son el MBR de MS-DOS, &lt;a href="http://lilo.go.dyndns.org"&gt;LILO&lt;/a&gt; y la primera etapa (&lt;i&gt;stage 1&lt;/i&gt;) de &lt;a href="http://www.gnu.org/software/grub/"&gt;GRUB&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Los 64 bytes del 446 a 509 contienen la tabla de particiones. Y los dos últimos (510 y 511) contienen una firma especial, los números 55h y AAh, que identifican el sector completo como un sector de arranque.&lt;br /&gt;&lt;br /&gt;Y ¿qué pasa con los bytes 440 al 445 de los que no he hablado?&lt;br /&gt;&lt;br /&gt;Algunos sistemas, como Windows NT y sus sucesores, los emplean como un modo de identificar cada disco. El &lt;tt&gt;fdisk&lt;/tt&gt; de Linux, además, no los toca. No me comprometo con otros programas como LILO, GRUB o el fdisk de MS-DOS/Windows.&lt;br /&gt;&lt;br /&gt;Así, los 4 bytes del 440 al 443 son llamados "Número de serie de disco de Windows NT", y los otros dos, 444 y 445, no se emplean.&lt;br /&gt;&lt;br /&gt;Personalmente empleo esos 4 bytes para firmar los discos IDE en cajas USB en algunos de mis sistemas. El primer disco contiene los bytes EE EE EE 01 (hexadecimal, en orden de disco, no olvidemos que la arquitectura Intel x86 almacena las palabras de 2 bytes con el byte de menor peso delante). El segundo disco contiene los bytes EE EE EE 02, y así sucesivamente. Aún no he llegado a tener 255 discos externos...&lt;br /&gt;&lt;br /&gt;¿Y cómo lo hago? Fácil de lo fácil. Me descargo el sector de arranque del disco que quiero tocar, por ejemplo con &lt;tt&gt;dd&lt;/tt&gt;:&lt;pre class="comando"&gt;dd if=/dev/sdb of=sdb_mbr count=1 bs=512&lt;/pre&gt;&lt;br /&gt;lo edito con un editor hexadecimal:&lt;pre class="comando"&gt;khexedit sdb_mbr&lt;/pre&gt;&lt;br /&gt;y lo vuelvo a meter en el disco:&lt;pre class="comando"&gt;dd if=sdb_mbr of=/dev/sdb&lt;/pre&gt;&lt;br /&gt;Y ya tengo mi disco firmado.&lt;br /&gt;&lt;br /&gt;&lt;div class="aparte"&gt;&lt;p&gt;Para beneficio de los usuarios del editor hexadecimal, y ya que las direcciones suelen venir en hexadecimal, las repito en ese formato:&lt;/p&gt;&lt;table style="margin-top: -12ex"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Código&lt;/td&gt;&lt;td&gt;0 a 439&lt;/td&gt;&lt;td&gt;0000h a 01B7h&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Número de serie de disco de Windows NT&lt;/td&gt;&lt;td&gt;440 a 443&lt;/td&gt;&lt;td&gt;01B8h a 01BBh&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Sin uso&lt;/td&gt;&lt;td&gt;444 a 445&lt;/td&gt;&lt;td&gt;01BCh a 01BDh&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tabla de particiones&lt;/td&gt;&lt;td&gt;446 a 509&lt;/td&gt;&lt;td&gt;01BEh a 01FDh&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Firma mágica AA55h&lt;/td&gt;&lt;td&gt;510 a 511&lt;/td&gt;&lt;td&gt;01FEh a 01FFh&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&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/4169924640156861597-3704280572144040114?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/3704280572144040114/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=3704280572144040114' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3704280572144040114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/3704280572144040114'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2007/08/firmar-discos-duros.html' title='Firmar discos duros'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-8319362365146483280</id><published>2007-08-13T20:51:00.002+01:00</published><updated>2009-11-18T11:22:20.514Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Criptografía'/><category scheme='http://www.blogger.com/atom/ns#' term='Servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Certificados X509 para Apache 2 (I): Clave de la Autoridad Certificadora</title><content type='html'>&lt;span style="font-weight: bold;"&gt;PUBLICADA, PERO PENDIENTE DE MEJORAR EL FORMATO&lt;/span&gt; (no habrá cambios de contenido, salvo correcciones)&lt;hr /&gt;&lt;br /&gt;Bueno, a ver cómo van las cosas. Llegas un día y decides que quieres cambiar de protocolo: tu servidor Apache, con la costumbre de escuchar por el puerto 80 (&lt;a href="http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP&lt;/a&gt;), quieres que se ponga a escuchar en el puerto 443 (&lt;a href="http://es.wikipedia.org/wiki/Ssl"&gt;SSL&lt;/a&gt;) para usar eso que llaman el "protocolo &lt;a href="http://es.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;En una relación cifrada cliente-servidor como esa normalmente hay tres partes implicadas, no dos. Está el cliente, que no tiene motivos para confiar en el servidor, está el servidor, que no tiene motivos para confiar en el cliente, y está la &lt;a href="http://es.wikipedia.org/wiki/Autoridad_certificadora"&gt;Autoridad Certificadora&lt;/a&gt;. Así, con mayúsculas. Y la idea es que tanto el cliente como el servidor confían en la Autoridad Certificadora. Así, si el servidor presenta al cliente un documento de identidad certificado por la Autoridad Certificadora, el cliente puede estar seguro de que el servidor es quien realmente dice ser, y no un impostor.&lt;br /&gt;&lt;br /&gt;Por eso, el papel de la Autoridad Certificadora es tan importante. Si he de meter mi número de tarjeta de crédito para hacer un pago en una página, quiero estar seguro de que el servidor que lo va a recibir es quien dice ser, y estoy seguro si mi navegador me dice que lo es.&lt;br /&gt;&lt;br /&gt;Mi navegador me lo dice si el servidor se identifica mediante un certificado firmado por una Autoridad Certificadora en la que confíe. Y los navegadores confían en unas pocas Autoridades Certificadoras que tienen un negocio enorme con la venta de certificados. Evidentemente, los navegadores no confiarán en los certificados de cualquier autoridad certificadora, ya que cualquier ladrón informatizado que falsee una página puede falsear también su certificado creando una autoridad certificadora falsa.&lt;br /&gt;&lt;br /&gt;Así que si no quieres pagar los 1500 (sí, mil quinientos) dólares que Verisign&lt;sup&gt;[&lt;a href="http://www.blogger.com/post-create.g?blogID=4169924640156861597#1"&gt;1&lt;/a&gt;]&lt;/sup&gt; u otros piratas semejantes &lt;a href="http://www.verisign.com/ssl/buy-ssl-certificates/extended-validation-pro-ssl-certificates/index.html"&gt;cobran por un certificado&lt;/a&gt;, o si simplemente tienes algún motivo para convertirte en tu propia CA (&lt;span style="font-style: italic;"&gt;Certificating Authority&lt;/span&gt; - Autoridad Certificadora), puedes hacerlo sin demasiados problemas (igual que lo haría el falsificador). Ten en cuenta que un servidor con SSL &lt;span style="font-weight: bold;"&gt;no funcionará&lt;/span&gt; sin un certificado.&lt;br /&gt;&lt;br /&gt;Sólo necesitas tener instalado el paquete &lt;a href="http://www.openssl.org/"&gt;&lt;span style="font-family:courier new,fixed;"&gt;openssl&lt;/span&gt;&lt;/a&gt;, que proporciona las piezas y programas necesarios.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Crear la clave maestra de la CA&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;Lo primero es pensar en dónde almacenaremos todos los ficheros sensibles que vamos a crear. Lo ideal sería que creáramos un directorio sólo para esas cosas, con permisos adecuados, y que nos metiéramos en él antes de empezar a trabajar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: #00FF77;"&gt;EDITO: He mejorado estas órdenes en &lt;a href="http://denvite.blogspot.com/2009/11/autoridad-certificadora-openssl.html"&gt;una nueva entrada&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nota: los comandos introducidos a partir de ahora son válidos en un sistema operativo de tipo &lt;a href="http://es.wikipedia.org/wiki/Unix"&gt;UNIX&lt;/a&gt;, en particular yo los he probado en &lt;a href="http://es.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;, en la distribución &lt;a href="http://es.wikipedia.org/wiki/Debian_GNU/Linux"&gt;Debian&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Antes de crear la clave crearemos un directorio llamado &lt;span style="font-family:courier new,fixed;"&gt;private&lt;/span&gt; para almacenar en él la clave privada:&lt;br /&gt;&lt;pre class="comando"&gt;mkdir private&lt;/pre&gt;&lt;br /&gt;A continuación creamos la clave:&lt;br /&gt;&lt;pre class="comando"&gt;openssl genrsa -des3 -out private/cakey.pem 2048&lt;/pre&gt;&lt;br /&gt;El comando &lt;span style="background: rgb(170, 170, 170) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:courier new,fixed;" &gt;openssl&lt;/span&gt; es la base de todo nuestro trabajo. Tiene un buen número de subcomandos para diferentes tareas. En esta ocasión utilizamos el subcomando &lt;span style="background: rgb(170, 170, 170) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:courier new,fixed;" &gt;genrsa&lt;/span&gt; para, precisamente, generar una clave RSA. Las opciones indican, por ese orden, que la clave generada estará protegida mediante un cifrado 3DES con contraseña (&lt;span style="background: rgb(170, 170, 170) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:courier new,fixed;" &gt;-3des&lt;/span&gt;) y que se almacenará en el directorio &lt;span style="font-family:courier new,fixed;"&gt;private&lt;/span&gt; en el fichero &lt;span style="font-family:courier new,fixed;"&gt;cakey.pem&lt;/span&gt; (&lt;span style="background: rgb(170, 170, 170) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:courier new,fixed;" &gt;-out private/cakey.pem&lt;/span&gt;), mientras que el argumento &lt;span style="background: rgb(170, 170, 170) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:courier new,fixed;" &gt;2048&lt;/span&gt; indica que la clave generada tendrá 2048 bits de longitud. La clave se almacenará en formato PEM, por eso ponemos la extensión como &lt;span style="font-family:courier new,fixed;"&gt;.pem&lt;/span&gt;, mientras que el nombre &lt;span style="font-family:courier new,fixed;"&gt;cakey&lt;/span&gt; indica, literalmente, que se trata de la clave de la CA. Esa es, además, la razón (aparte de que lo recomienda la documentación) de que la guardemos en el directorio &lt;span style="font-family:courier new,fixed;"&gt;private&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="aparte"&gt;En la documentación oficial de OpenSSL se detalla que el subcomando &lt;span style="font-family:courier new,fixed;"&gt;genrsa&lt;/span&gt; es obsoleto y se debería usar en su lugar el subcomando &lt;span style="font-family:courier new,fixed;"&gt;genpkey&lt;/span&gt;, en cuyo caso la línea de órdenes sería:&lt;br /&gt;&lt;pre class="comando"&gt;openssl genpkey -des3 -outform PEM -out private/cakey.pem -pkeyopt rsa_keygen_bits:2048&lt;/pre&gt;&lt;br /&gt;&lt;span class="ojo"&gt;Ojo: No he probado esta línea.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Bueno, en cualquier caso, como hemos pedido que la clave quede protegida mediante contraseña, tendremos que introducir la contraseña elegida, y volverla a introducir para confirmar que la hemos escrito bien:&lt;br /&gt;&lt;pre class="comando"&gt;openssl genrsa -des3 -out private/cakey.pem 2048&lt;br /&gt;&lt;span class="salida"&gt;Generating RSA private key, 2048 bit long modulus&lt;br /&gt;..........................................+++&lt;br /&gt;.............................................+++&lt;br /&gt;e is 65537 (0x10001)&lt;br /&gt;Enter pass phrase for private/cakey.pem:&lt;br /&gt;Verifying - Enter pass phrase for private/cakey.pem:&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Como se puede ver, el generador nos indica que está creando una clave privada RSA de 2048 bits, con el exponente 65537, lo que es un dato técnico que no nos importa ahora.&lt;br /&gt;&lt;br /&gt;¿Y qué son todos esos puntitos y cruces? Pues muy sencillo: hay que encontrar dos números primos, y se prueban números al azar a ver si lo son. Cada puntito es un número probado que pasa una prueba de primalidad sencilla, y cada cruz es un número que pasa una prueba mayor. El salto de línea es un número que pasa todas las pruebas, es decir, que es uno de los dos números primos que estamos buscando.&lt;br /&gt;&lt;br /&gt;&lt;span class="ojo"&gt;Ojo: no pierdas nunca la contraseña que has introducido para cifrar la clave privada de la CA. Sin esa contraseña, toda la estructura de la CA queda inutilizada.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Seguiré en otro artículo con la creación del certificado raíz, la creación de la clave del servidor y la creación del certificado del servidor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-8319362365146483280?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/8319362365146483280/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=8319362365146483280' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8319362365146483280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/8319362365146483280'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2007/08/certificados-x509-para-apache-2-i-clave.html' title='Certificados X509 para Apache 2 (I): Clave de la Autoridad Certificadora'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4169924640156861597.post-5901983152835211302</id><published>2007-08-13T20:43:00.000+01:00</published><updated>2007-08-13T20:45:50.696+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Meta'/><title type='text'>Comienza la desbitácora</title><content type='html'>Bueno, aquí estamos.&lt;br /&gt;&lt;br /&gt;He creado esta desbitácora (bitácora de desarrollo, igual que &lt;span style="font-style: italic;"&gt;devlog&lt;/span&gt; de &lt;span style="font-style: italic;"&gt;developer log&lt;/span&gt;) para ir apuntando todo lo que vaya descubriendo sobre la informática y el desarrollo de aplicaciones informáticas... y matemáticas.&lt;br /&gt;&lt;br /&gt;No busquen aquí pensamientos ni cosas parecidas. Para eso está la bitácora madre: &lt;a href="http://envite.blogspot.com"&gt;Envite&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4169924640156861597-5901983152835211302?l=denvite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denvite.blogspot.com/feeds/5901983152835211302/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4169924640156861597&amp;postID=5901983152835211302' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5901983152835211302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4169924640156861597/posts/default/5901983152835211302'/><link rel='alternate' type='text/html' href='http://denvite.blogspot.com/2007/08/comienza-la-desbitcora.html' title='Comienza la desbitácora'/><author><name>Envite</name><uri>http://www.blogger.com/profile/01379008414066558049</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_GjEUrZgY4vk/SY7OyAT3_cI/AAAAAAAAAEM/V47MwB1XQIQ/s1600-R/37804-96-20090201035207.png'/></author><thr:total>0</thr:total></entry></feed>
