Lo hice y lo entendí

El blog de Vicente Navarro
05 mar

El HDD Perf en SourceForge.net

Corría el año 2003 y yo tenía un flamante portátil con un procesador Pentium M a 1GHz y 256MB de RAM. El ordenador normalmente iba muy bien, pero a veces se ralentizaba hasta la desesperación. En esas ocasiones, el led del disco duro no dejaba de estar encendido, por lo que que estaba claro que el cuello de botella estaba en el lento disco de 4200rpm. Varios años después, con PCs mucho mejores, el cuello de botella sigue siendo el mismo.

Cuando estaba esperando a que las aplicaciones respondieran míminimamente (trabajando en Windows), me preguntaba si sería fácil poner un icono en el “área de notificación” (también conocida como “bandeja del sistema”) que me avisara de que tu PC va mal porque el disco duro está agobiado. No es que ésto hiciera mucho por arreglar el problema, pero al menos, podría saber qué estaba pasando…

Sigue leyendo »

26 feb

El PATH del cron. Avisos de mail. Sesiones interactivas y de login de Bash.

En El Efecto Barrapunto comentaba que el siguiente script para rotar el access.log del apache no me funcionaba en el crontab y sí desde la línea de comandos:

#/bin/bash
cd /var/log/apache2
BAKFILE=access.log.`date +%g%m%d%H%M`
mv access.log $BAKFILE
apache2ctl graceful
sleep 600
gzip $BAKFILE

Aparte de que el logrotate está mucho más indicado para este propósito, el misterio se ha desvelado gracias a un amable lector de barrapunto. Resulta que el apache2ctl está en /usr/sbin, no en /usr/bin ni en /bin, que son los únicos directorios que vienen en el PATH del cron por defecto ya que ni el /etc/profile ni el .bashrc ni similares se ejecutan en ningún momento antes del comando.

Sigue leyendo »

24 feb

El Efecto Barrapunto

El Jueves 22 de Febrero la entrada sobre el NTFS-3G en mi bitácora de Barrapunto pasó a portada. En esa entrada había un link al artículo “La pesadilla de compartir partición entre Linux y Windows” y hubo un modesto “Efecto Barrapunto”.

Parece que no resultó ser una noticia muy interesante para los barrapunteros si usamos el número de comentarios (17 en el momento de escribir esto) como medida subjetiva de la popularidad de una noticia (aunque también puede ser que haya noticias que interesen mucho pero que no se presten al comentario). Lo único que lamento es que en la entrada de portada no se especificara que es un driver de lectura-escritura de NTFS estable y seguro. Tal vez eso hubiera captado el interés de más sufridores de la compartición de particiones.

El artículo estuvo en portada desde el 22 de Febrero a las 1:05h hasta el 23 de Febrero a las 12:32h, y ahora mismo sigue estando en la cajita de Rollos viejos. Como no se sale en la portada de Barrapunto todos los días, he querido ver cómo son los visitantes que muy amablemente han querido visitar este modesto blog gracias a la invitación de Barrapunto. Para ello, he estado estudiando las entradas del access.log que tenían como referer la portada de Barrapunto. Si algún visitante tenía deshabilitados los referer con algún firewall o, como yo solía hacer antes (hasta que vi que me daba más problemas que beneficios), poniendo el network.http.sendRefererHeader a 0 en el about:config del Firefox, ¡no saldrá en la foto!

El tráfico que muestro es sólo el que viene de Barrapunto. El blog es muy nuevo y no hay datos significativos previos para usar de referencia. Sí que podemos usar parar comparar las visitas que llegaron desde las entradas de la bitácora. El artículo de “Montar una imagen raw de Qemu. Los primeros 32 Kbytes de un disco.” recibió 183 visitas. El artículo de “Gentooizar Debian con apt-build” 44 visitas y éste de la compartición de particiones del que estamos hablando, 28. Desde la portada de Barrapunto, hasta las 0:00h del 24 de Febrero, recibí más de 1720 visitas. ¡Muchísimas gracias a todos! ¡Espero que el artículo resultara interesante y la visita valiera la pena!

Sigue leyendo »

21 feb

La pesadilla de compartir partición entre Linux y Windows

¡Hagamos volar la imaginación! Disco duro nuevo en el ordenador… 500 flamantes GB esperando a ser llenados de ficheros nuevecitos… un Linux configurado al milímetro… un Windows para jugar al GTA… y…y… ¿¿¿cómo particionamos el disco???

Las particiones FAT son las que históricamente más juego nos han dado. Desde que FAT soporta nombres largos, por allá por los tiempos en los que el Windows 95 compartía un disco de 400MB con la SlackWare 96 y con un OS/2 3 Warp, las distintas versiones de FAT nos han facilitado la vida a aquellos que no nos hemos conformado con el sistema operativo que los chicos de Bill han tenido a bien meter en nuestras casas.

Pero llegaron los ficheros de más de 4 GB y las particiones de más de 32 GB y la situación empeoró mucho. En las particiones FAT32 no podemos crear ficheros de más de 4GB y no hay ningún workaround posible. Respecto al tamaño de la partición, ningún sistema operativo de Microsoft deja crear particiones FAT32 de más de 32GB, pero podemos hacerlas, por ejemplo con el fdisk de Linux y usarlas desde Windows sin problema.

Sigue leyendo »

20 feb

Gentooizar Debian con apt-build

Soy un Debianero convencido. Me encantan el apt-get, el apt-cache y el dpkg. Ubuntu también está muy bien, pero no me acaba de gustar el “te lo damos todo-todo-todo hecho”, aunque he de reconocer que cuando quieres instalar un ordenador rápidamente y que te dé poco trabajo, es, sin duda, la mejor opción. Para gustos los colores y las distribuciones… Yo personalmente me apunto a lo que dicen en Guirilandia: No pain, no gain!

Sin embargo, durante muchos meses he tenido una Gentoo en uno de mis PCs. Si quieres usar Gentoo como toca, te tienes que compilar el paquete antes de instalarlo. También puedes usar paquetes precompilados, pero para eso no nos ponemos Gentoo, ¿no? El paquete se compila -en teoría- optimizado para la máquina en cuestión, y obtenemos algo de mejora en el rendimiento. Tenemos que pagar a cambio el coste de largos tiempos de espera compilando paquetes, algo que, pese a que Gentoo me gusta en general, me desespera.

Debian es todo lo contrario en ese aspecto: los paquetes vienen compilados para 386 y la optimización, por tanto, nula (ojo, Debian sí que nos deja escoger un kernel más apropiado para nuestra plataforma, algo que sí es muy importante). En esto hemos ganado mucho con la Debian AMD64, ya que ésta sí está totalmente optimizada si tienes un procesador de 64 bits.

Sigue leyendo »

20 feb

Montar una imagen raw de Qemu. Los primeros 32 Kbytes de un disco.

El Qemu es un emulador con licencia GPL/LGPL. Podemos usarlo para, por ejemplo, arrancar un Windows 2000 dentro de Linux y tener esas poquitas cosas que aún no se pueden hacer en Linux. En mi caso, sobre todo, usar el Internet Explorer para ciertas webs de ciertas empresas que suponen que todos pasamos por la caja de Microsoft a pagarles una licencia de su sistema operativo.

El Qemu emula diferentes plataformas sobre diferentes sistemas operativos. Si usamos el KQemu, recientemente liberado como GPL, el emulador pasa a usar virtualización y la velocidad del sistema operativo “virtualizado” está en el orden de la que obtendríamos con, por ejemplo, VMWare. VMWare es más maduro y estable pero el Qemu tiene muchas opciones con las que jugar fácilmente.

Pues bien, el Qemu soporta varios tipos de formato de imágenes del disco duro. Una de ellas es la “raw”, que es como si fuera un dd completo de un disco físico. Para montar una imagen “raw” del qemu se puede usar el siguiente comando:

mount -o loop,offset=32256 imagen_disco /path/punto_montaje

Está claro que lo que hace el comando es buscar el sitio dónde empieza la primera partición para usar la imagen como si se tratara de una “imagen de la partición”, no una “imagen del disco”, pero ¿por qué 32256? ¿tanto espacio hay libre antes de la primera partición? ¿casi 32Kb?

Sigue leyendo »

19 feb

Modos VESA aceptados por el kernel de Linux

Si tenemos la opción CONFIG_FB_VESA=y en la configuración del kernel de Linux, cuando arrancamos podemos elegir el modo VESA que queremos usar en la consola usando el parámetro “vga=XXX” del kernel.

Los más típicos son:

Hexadecimal

Colores 640×480 800×600 1024×768 1280×1024 1600×1200
256 (8 bits) 0×0301 0×0303 0×0305 0×0307 0x031C
32,768 (15 bits) 0×0310 0×0313 0×0316 0×0319 0x031D
65,536 (16 bits) 0×0311 0×0314 0×0317 0x031A 0x031E
16.8M (24 bits) 0×0312 0×0315 0×0318 0x031B 0x031F

Decimal

Colores 640×480 800×600 1024×768 1280×1024 1600×1200
256 (8 bits) 769 771 773 775 796
32,768 (15 bits) 784 787 790 793 797
65,536 (16 bits) 785 788 791 794 798
16.8M (24 bits) 786 789 792 795 799

En la entrada de la WikiPedia sobre modos VESA aparecen los códigos para modos más raros aparecidos en las últimas tandas de portátiles.

En el Documentation/svga.txt del kernel tenemos algunos datos sobre el uso del parámetro “vga=XXX”.

También es posible obtener el código de ese modo VESA tan raro que sólo tu tarjeta tiene mirando la salida del Xorg.0.log. A esos códigos, como bien nos explica la WikiPedia, hay que sumarles 512 ó 0×200 según corresponda para poder usarlos como parámetro del kernel durante el arranque.

18 feb

UltraStar

Mi chica está estos días viciadísima con el UltraStar. Se trata de un programa de código abierto que pretende ser el equivalente al SingStar para PC.

Como hay muchísima gente haciendo canciones para el UltraStar, tiene muchísima más variedad que el juego de Sony. La pega es, claro, que las canciones a veces tienen peor calidad. Mi chica se está pegando una currada del 15 para dejarse todas las canciones que le gustan bien arregladitas: Con la carátula que ella quiere, con su vídeo bien sincronizado…

Hay varias versiones del UltraStar. La más “oficial” parece que es la de SourceForce, pero hay un español que está haciendo una versión muy mejorada llamada “UltraStarNG” que nos parece mejor.

Ahora hay una versión del UltraStar para Linux llamada UltraStar-NG que tengo que probar y que os contaré en esta misma entrada qué tal va.

18 feb

El algoritmo del NIF y de los números de cuenta para el móvil

Lo algoritmos que describía en la entrada “Algoritmos útiles en JavaScript” también los implementé en el 2005 en un programa Java (J2ME) para compilarlo para el móvil y llevarlos siempre conmigo.

El programa es el Utilidades.java (GPL) y para compilarlo se necesita el SDK de Sun y el SDK de Nokia. Aunque éste último no es realmente necesario, viene bien para probar el programa en el emulador que lleva.

Se supone que debería de funcionar bien en todos los móviles, pero yo sólo lo he probado en un Nokia 6310i y en un Nokia 6021. En el primero funciona muy bien, pero en el 6021 funciona peor porque el botón del medio, de “Seleccionar” no funciona y hay que hacer “Opciones -> Seleccionar”.

Si te interesa y lo quieres probar, sólo tienes que subir estos dos ficheros a tu móvil: Utilidades.jad y Utilidades.jar. ¡Ya me cuentas si te funciona bien y te sirve!

Utilidades en Nokia 1 Utilidades en Nokia 2

18 feb

Algoritmos útiles en JavaScript

El JavaScript es un lenguaje de programación tremendamente cómodo para implementar pequeños algoritmos. No necesitas compilador, ni entorno de desarrollo, ni nada. Sólo un editor de texto y ya está.

Además, si usas Firefox, tienes por defecto instalado el “DOM Inspector” y el “Error Console” (tengo el Firefox en inglés, no sé cómo saldrá en el Firefox en castellano), con lo que puedes hacer incluso “debugging” sin absolutamente ningún programa adicional.

Hay un par de algoritmos sencillos que son muy útiles en el día a día y que me he implementado en JavaScript:

Si te interesa el algoritmo que usan, puedes examinar los ficheros nif.js y numcta.js. Ambos están descritos en la WikiPedia, tanto el del NIF como el de los números de cuenta.

Además, en las últimas elecciones municipales (las del 2003), un amigo metido en política municipal me pidió que le hiciera un programilla que implementara la ley D’Hondt para calcular los concejales que le tocaban a cada partido inmediatamente después del recuento. En aquella ocasión hice un programita en C muy sencillito para línea de comandos. Esta vez, para ilustrar esta entrada y ante las inminentes municipales del 2007, lo he vuelto a hacer, esta vez en JavaScript. El algoritmo se puede ver en hondt.js pero está mucho mejor explicado en la web de Jordi Binefa.

Tema LHYLE09, creado por Vicente Navarro