Bookmarklet para buscar una página en Wayback Machine

¿Cuántas veces te ha pasado que pulsas en un enlace o usas una entrada antigua de los marcadores de tu navegador y te encuentras con que esa página ya no existe?

Afortunadamente existe archive.org, una organización sin ánimo de lucro que se dedica, entre otras muchas cosas, a recorrer todo internet e ir guardando las páginas que se encuentra.

Si tenemos suerte y la web original permitía ser recorrida por procesos automáticos (conocidos como robots), es muy posible que archive.org la tenga no solo disponible, sino que podemos ver cómo era la página en diferentes fechas.

Repasando un marcador antiguo cualquiera en mi navegador, me encuentro con lo siguiente:

Leer más…

Código para limpiar peticiones de suscripción de presencia espurias en el servidor XMPP Isode

En Cleaning spurious presence subscription requests in Isode XMPP server describo una situación en la que el servidor XMPP Isode no limpia las peticiones de subscripción de presencia que vamos denegando. stpeter sugiere una solución. Casi cualquier cliente XMPP permitirá enviar stanzas XMPP de forma manual, pero durante el proceso de investigación del problema escribí bastante código.

A continuación listo y explico el código que utilicé para limpiar las peticiones de subscripción de presencia pendientes en un servidor Isode. El código se programó de forma iterativa, rápida y chapucera, lo justo para salir del paso:

Leer más…

Cleaning spurious presence subscription requests in Isode XMPP server

This is an old issue, but I would like to document it publically.

Presence subscription requests are regular business in XMPP world. The recipient can accept or deny the request. That is fine. In my case, something fishy was going on, since I had been receiving presence subscription requests that I could not "clean up" from the same addresses for months. There are two posibilities:

  1. The presence request origins keep trying and trying. The usual approach here would be for me to block those users. Good bye.
  2. A bug in the XMPP server. For some reason the presence subscription requests are not being cleared when I "deny" the requests.

After a few tests I was pretty sure I was suffering a bug of the XMPP server: blocking origins didn't work and I got new presence subscription requests -that I "dened"- every time I connected to the XMPP server, even in "rapid fire" mode.

If I am hitting a bug, how to proceed? Next step?

Leer más…

Ejecutar un "rol" concreto con Ansible

Hasta la versión 2.2 de Ansible, para ejecutar un rol concreto era necesario crear un nuevo playbook ad hoc. Es algo fácil, pero resulta una carga administrativa que no debería ser necesaria.

En las versiones modernas de Ansible disponemos de dos módulos nuevos interesantes: include_role en Ansible 2.2 e import_role en Ansible 2.4.

Para lanzar un rol determinado en una máquina o un grupo concreto del inventario, podemos hacer:

$ ansible -u root -m include_role -a name=ROL HOST

Esto ejecutará el rol ROL en la máquina HOST de nuestro inventario con privilegios de administrador o root.

Es muy útil combinar include_role con una configuración dinámica de inventario. Por ejemplo, recientemente he hecho algo similar a esto:

$ HOST="MÁQUINA1,MÁQUINA2,MÁQUINA3"; \
  for i in arranque zram ; do \
    ansible -u root -m include_role -a name=$i -i "$HOST," $HOST || break; \
  done

Esto lanzará los roles arranque y zram como administrador o root en las máquinas MÁQUINA1, MÁQUINA2 y MÁQUINA3. Estas máquinas no forman parte del inventario normal, se ha creado un inventario dinámico sobre la marcha. Ojo al uso de la coma final en el parámetro -i. Si ocurre algún error, el proceso se aborta.

Cómo actualizar una instalación Linux cuando no tenemos espacio libre en disco

En Backup doméstico seguro con Linux, cifrado y ZFS (VII): Volvemos a la tarjeta microSD original nos quedábamos usando una tarjeta microSD de 4 Gigabytes. Tras completar todo el proceso, le quedan unos 300 Megabytes de espacio libre.

Esa cantidad es suficiente para el día a día de esa máquina y para muchas actualizaciones del sistema operativo, pero una actualización completa del kernel de Linux necesita más de 400 Megabytes de espacio libre.

Hago los siguientes pasos para poder realizar una actualización pesada:

Leer más…

Disco RAM en Linux

Hace mucho que Linux (y otros sistemas operativos) permiten el empleo de discos RAM como espacio de trabajo no persistente de alta velocidad a costa de invertir en ellos memoria RAM.

No voy a describir por qué nos puede interesar un disco RAM y cuáles son sus inconvenientes. Para eso tenéis la página de la Wikipedia. La forma de trabajar con disco RAM en Linux ha ido cambiando también con el paso del tiempo; aquí voy a tratar la forma contemporánea. Antiguamente había que crear los discos RAM en la configuración de arranque de Linux, de forma estática. Afortunamente hemos superado eso.

Hoy en día hay dos maneras básicas de usar la memoria de un ordenador Linux como disco RAM:

  • Creando un dispositivo de bloques en memoria RAM, particionándolo y formateándolo para el uso que necesitemos. Este sistema tiene una mayor sobrecarga y es más inflexible, pero su ventaja fundamental es que Linux puede emplear ese dispositivo para cualquier uso válido de un dispositivo de bloques general. Por ejemplo, se puede usar como espacio de intercambio o swap.

    Algunos ejemplos de esta aproximación son ZRAM y ZSWAP. No los voy a tratar en este artículo.

  • Creamos un dispositivo disco RAM con semántica directa de sistema de ficheros. No simula un dispositivo de bloques sobre el que creamos un sistema de ficheros, sino que implementa el sistema de ficheros directamente en memoria RAM.

    Este enfoque es mucho más eficiente y práctico. Una ventaja clara es que cuando se borra un fichero del disco RAM se reduce el espacio ocupado. Naturalmente, este dispositivo solo sirve para almacenar ficheros, no simula ni se puede utilizar como un dispositivo de bloques.

Leer más…