Lo hice y lo entendí

El blog de Vicente Navarro
16 abr

Integrar drivers de SATA/RAID en un CD de instalación de Windows XP

Recientemente un familar muy cercano se ha comprado un flamante portátil HP Pavilion dw9286ea. Es, y será durante unos meses, un ordenador impresionante, con Intel® Core™ 2 Duo T5600, 2GB de RAM, dos discos de 120Gb, NVIDIA® GeForce™ Go 7600 con 512Mb de memoria dedicados, pantalla BrightView de 17″ y para redondear, sintonizador de DVB-T y mando a distancia.

Viene con Windows Vista, y aunque el Knoppix va de maravilla en él, su propietario prefiere tener Windows XP, ya que los programas de CAD no van bien en Vista ni en términos de rendimiento ni en términos de compatibilidad. En cualquier caso, aunque no usara CAD yo apoyaría la decisión, ya que el Windows Vista parece un sistema operativo mucho más bloated que el veterano XP. Y de cualquier forma, parecería conveniente esperar a que el SP1 apareciera antes de que acabe el 2007.

Sigue leyendo »

13 abr

Expresiones Regulares en la shell. Ejemplos de uso con grep, awk y sed.

Estaba intentando hacer un CGI muy sencillo usando bash (como lo que quería hacer era algo muy específico de bash, no he querido usar ni Perl, ni PHP). La única dificultad que he encontrado ha sido obtener las distintas variables que el método GET pasa al CGI a través de la variable $QUERY_STRING, que normalmente tiene este aspecto:

QUERY_STRING='parametro1=valor1&parametro2=valor2&parametro3=valor3'

Estaba yo ya comenzando a darle vueltas a una Expresión Regular para interpretar dicha salida cuando he decidido buscar en Google para ver si alguien tenía una solución más completa que la que yo ya tenía a medias. He llegado al artículo CGI Scripting Tips for Bash or SH que propone lo siguiente para extraer del QUERY_STRING la variable que nos interese:

PARAMETROX=`echo "$QUERY_STRING" | grep -oE "(^|[?&])parametrox=[^&]+" | sed "s/%20/ /g" | cut -f 2 -d "="`

Y es que con bash y sus compañeros sed, awk, cat, grep, etc. aún se puede hacer casi de todo, incluso un weblog o un servidor web. Como las Expresiones Regulares son tan excepcionalmente útiles como complicadas a la hora de usarlas, me he decidido a comentar algunos ejemplos, comenzando por el que me ha llevado a este artículo.

Sigue leyendo »

05 abr

El Sticky Bit y el SGID en directorios

Todos los ficheros y directorios en un sistema UNIX tienen asociado un número compuesto de cuatro cifras en octal. Los tres dígitos menos significativos (least significant digit) especifican los permisos que tienen los usuarios sobre ese fichero (lectura (r), escritura (w) y ejecución (x) para el usuario, los usuarios pertenecientes al grupo o para otros):

sst rwx rwx rwx
421 421 421 421
S   U   G   O

S=SUID, SGID y Sticky Bit
U=Usuario
G=Grupo
O=Otros

Esto forma parte de los conocimientos básicos y mínimos de cualquier usuario de UNIX y podemos leer sobre ello en Permisos de ficheros del manual Seguridad en UNIX y Redes. También es muy conocida la existencia de los bits SUID y SGID, formados por los dos bits más significativos del octal más significativo. Aplicados sobre un fichero ejecutable, permiten que el programa se ejecute como si lo hiciera el usuario propietario (SUID) o el grupo propietario(SGID) del fichero.

Pero el propósito de esta entrada es resaltar la curiosidad, bastante menos conocida, de aplicar el bit menos significativo de la cifra octal más significativa (el que en el esquema anterior he marcado con una t), el Sticky Bit, a un directorio (aplicado a un fichero no se usa para nada en la gran mayoría de los UNIX modernos). En el man del chmod leemos:

Sigue leyendo »

03 abr

Cómo mantener los acentos y las eñes al montar NTFS, FAT o smbfs y al compartir directorios con Samba

En el pasado a menudo he tenido problemas con los acentos y las eñes al montar particiones FAT o NTFS o al montar o compartir directorios usando Samba. Esto ocurre porque GNU/Linux usa distintos juegos de caracteres que Windows y DOS. En esta entrada vamos a tratar de aclarar todos los aspectos que pueden impedirnos disfrutar de nuestra apreciadas eñes cuando nos enfrentamos con ficheros cuyo origen o destino sea un sistema operativo de Microsoft.

á é í ó ú ñ Á É Í Ó Ú Ñ €

Existe una multitud de juegos de caracteres. Podemos ver muchos de ellos en popular character encodings . Allí vemos el Windows-1252, el CP850, el ISO 8859-1 (Latin 1), el ISO 8859-15 (Latin 9) o el Unicode (con su sistema de codificación de longitud variable más típico, el UTF-8) , que son los que más nos interesan para el asunto que nos ocupa aquí en España. En el artículo de la WikiPedia Western Latin character sets tenemos una tabla mostrándonos las diferencias entre estos juegos de caracteres.

Antes de poner manos a la obra, es conveniente que verifiquemos que el bash nos muestra correctamente acentos, eñes y si acaso, el símbolo del euro € escribiendo en un terminal áéíóúÁÉÍÓÚñÑ€. Si no salen bien, puede ser por dos motivos principalmente:

  1. El bash no está correctamente configurado para mostrar acentos. Esto ocurría bastante hace unos años, y era necesario hacer todo tipo de ajustes. Sin embargo, en las distribuciones actuales normalmente no es necesario hacer nada.
  2. La fuente usada en el terminal que estamos usando (Consola de Linux, Putty, Konsole, GNOME Terminal, etc.) no lleva acentos o no están correctamente mapeados.

Sigue leyendo »

29 mar

Creación de reglas udev para personalizar el nombre de los ficheros de dispositivo de las memorias USB

Linux ha mejorado mucho últimamente en lo que a dispositivos hotplug se refiere. Es mucho más flexible de lo que solía y con la últimas distribuciones y los últimos escritorios como KDE o GNOME, al meter una memoria USB, automáticamente nos la detecta y monta sin tener que hacer absolutamente nada más.

Esto se hace realidad gracias a tres componentes de Linux:

  • El Linux Hotplugging, que se encarga de cargar automáticamente los módulos/drivers para los dispositivos que el kernel detecta, bien en el arranque, bien dinámicamente.
  • El udev, que permite usar nombres lógicos en los ficheros de dispositivo (los que están bajo /dev).
  • El HAL – Hardware Abstraction Layer, que es el que permitiría que, por ejemplo, al conectar una cámara de fotos nos saliera en el escritorio una aplicación de gestión de fotos, pero también se encargaría, por ejemplo, de montar automáticamente las memorias USB al conectarlas.
  • El D-Bus, usado por el HAL para comunicar a todos los procesos interesados en la máquina los eventos de hardware que se vayan produciendo.

El documento de GNOME Integración de Hardware en el Escritorio cuenta todo esto muy bien en el capítulo El núcleo Linux y sus ayudantes.

Pero en este artículo quería centrarme en el udev. Yo tengo un montón de dispositivos de almacenamiento USB: Un dedo de 256MB (Kingston), otro de 512MB (sin marca aparente), otro de 8GiB (TrekStor) , un enclosure Venus DS3 con un disco Maxtor estándar de 250GB y finalmente, el típico lector de tarjetas de memoria (SD, CF, MS). Además también tengo por ahí un reproductor de MP3, la cámara de fotos, etc. El caso es que me resultaba muy desagradable tener que buscar cada vez en la salida del dmesg el fichero de dispositivo que le había tocado a cada cacharrito para poder montarlo. La solución a mi problema era el udev.

Sigue leyendo »

21 mar

La variable LC_COLLATE y la ordenación en la salida del comando “ls”

Tras las últimas instalaciones que he hecho de Debian, había una cosa que me disgustaba mucho Cuando ejecutaba “ls -la”, el comando me ordenaba las entradas escondidas (precedidas de punto) como si no lo tuvieran. Por ejemplo, si tenía un fichero llamado mi_fichero en el $HOME de root, el “ls -la” me devolvía lo siguiente:

rwxr-xr-x  8 root root    4096 2007-03-21 20:51 .
drwxr-xr-x 20 root root    4096 2006-11-18 11:34 ..
-rw-------  1 root root    6805 2007-03-19 19:56 .bash_history
-rw-r--r--  1 root root     535 2006-11-11 11:10 .bashrc
drwxr-xr-x  2 root root    4096 2006-11-21 21:16 .config
-rw-r--r--  1 root root  605281 2006-11-21 21:16 .fonts.cache-1
-rw-r--r--  1 root root       0 2007-03-21 20:51 mi_fichero
-rw-r--r--  1 root root     110 2004-11-10 17:10 .profile
-rw-------  1 root root    4394 2007-03-14 21:13 .viminfo
-rw-------  1 root root       0 2006-10-13 19:31 .Xauthority
-rw-------  1 root root     135 2006-10-13 19:31 .xsession-errors

cuando yo hubiera querido que me devolviera, como estoy acostumbrado, lo siguiente, para poder ver fácilmente qué archivos son los míos y cuáles son los de configuración (unos abajo y otros arriba del listado):

rwxr-xr-x  8 root root    4096 2007-03-21 20:51 .
drwxr-xr-x 20 root root    4096 2006-11-18 11:34 ..
-rw-------  1 root root    6805 2007-03-19 19:56 .bash_history
-rw-r--r--  1 root root     535 2006-11-11 11:10 .bashrc
drwxr-xr-x  2 root root    4096 2006-11-21 21:16 .config
-rw-r--r--  1 root root  605281 2006-11-21 21:16 .fonts.cache-1
-rw-r--r--  1 root root     110 2004-11-10 17:10 .profile
-rw-------  1 root root    4394 2007-03-14 21:13 .viminfo
-rw-------  1 root root       0 2006-10-13 19:31 .Xauthority
-rw-------  1 root root     135 2006-10-13 19:31 .xsession-errors
-rw-r--r--  1 root root       0 2007-03-21 20:51 mi_fichero

Sigue leyendo »

15 mar

Simulador de la Ley D’Hondt

Uno de los primeros artículos del blog fue el de Algoritmos útiles en JavaScript. Allí puse un par de algoritmos muy sencillos en JavaScript que suelo usar a menudo. También puse un sencillo simulador de la Ley D’Hondt, pero lo dejé en una página externa al blog. Curiosamente, recibo muchas visitas a dicha página. Debe de ser porque en el momento de escribir estas líneas, esta página sale en el puesto 34 de Google al buscar Ley D’Hondt y las municipales del 2007 están a la vuelta de la esquina.

Bueno, pues ya que el simulador es popular, he decidido integrarlo más en la página para que se pueda usar sin tener que salir del blog. Como ya comenté, el algoritmo está en hondt.js, y la explicación del mismo en la web de Jordi Binefa.

Sigue leyendo »

12 mar

El Efecto Barrapunto (II)

Durante el pasado fin de semana tuve un nuevo efecto Barrapunto. El artículo “Por qué me gusta el Firefox” apareció en la portada por sí mismo, a diferencia de lo que ocurrió con el artículo “La pesadilla de compartir partición entre Linux y Windows” que, aunque apareció en portada, no suponía el meollo de la noticia.

Teniendo en cuenta que el artículo se publicó el Viernes 09/03/2007 a las 10:29h y estuvo en portada hasta el Lunes 12/03/2007 a las 12:50h, la distribución de las casi 5000 visitas ha sido:

Sigue leyendo »

11 mar

Guardar las imágenes subidas al servidor fuera del árbol de directorios de WordPress

Desde que uso el excelente WordPress, hay algo que nunca me ha gustado: El no poder guardar las imágenes subidas al servidor desde el editor de entradas fuera del árbol de directorios de WordPress cuando la Dirección de WordPress es distinta de la Dirección del blog. Por ejemplo, tenemos el blog en http://www.ejemplo.com, el WordPress en http://www.ejemplo.com/wp y queremos tener las imágenes subidas en http://www.ejemplo.com/img.

Es en Opciones → Miscelánea donde podemos elegir en qué directorio debajo de la estructura de WordPress queremos tener las imágenes subidas, pero si tenemos el WordPress en, por ejemplo, <DocumentRoot>/wordpress, nunca podríamos tener las imágenes en <DocumentRoot>/img.

Buscando si había alguna forma estándar de cambiar esto, encontré a mucha gente que preguntaba lo mismo, pero pocas respuestas. Finalmente llegé a una entrada en el foro de soporte de WordPress que me daba pistas, pero para mi versión actual, la 2.1.2, la solución propuesta no se podía aplicar directamente.

Sigue leyendo »

08 mar

Por qué me gusta el Firefox

El Firefox es, en mi opinión, el mejor navegador que podemos usar actualmente. El Internet Explorer 7 ha tomado algunas de las cosas buenas de su competidor como la navegación con tabs o pestañas pero nunca podrá llegar al nivel del Firefox sobre todo gracias a las excelentes extensiones de Firefox que cubren casi cualquier necesidad imaginable del usuario.

Algunas extensiones especialmente útiles:

  • IE View Para abrir IE desde el Firefox para esas páginas que no se ven bien.
  • IE Tab Igual que la anterior pero mete el IE dentro de un tab de Firefox.
  • MAF ¿Te gusta la capacidad del IE de crear ficheros MHT (que contienen los ficheros html e imágenes de una web en un sólo fichero)? Pues esta extensión añade esa capacidad al Firefox.
  • FlashGot Para descargarte todas las imágenes o ficheros de una selección o página.
  • PDF Download Para todas esas veces que no quieres que el PDF de turno se abra en el navegador sino que quieres descargarlo.
  • ScreenGrab En mi opinión, ¡la extensión más imprescindible! Permite hacer una captura de toda la página en la que estamos.
  • Mouse Gestures Nos permite controlar la navegación con movimientos del ratón.

Estas son las que más uso diariamente, pero hay muchísimas más extensiones que nos pueden facilitar muchísimo nuestra navegación diaria.

Sigue leyendo »

Tema LHYLE09, creado por Vicente Navarro