Ñapa para que Vivaldi no descargue los ficheros que queremos abrir

Una pequeña pega que tiene Vivaldi es que si al pulsar el enlace de un fichero seleccionamos Abrir en vez de Guardar o Guardar como lo guarda siempre en el disco antes de abrirlo. El problema es que no lo guarda en una carpeta temporal, sino en la carpeta de descargas por defecto.

¿Por qué? Ni idea. Esto hace que al final tengamos en la carpeta de descargas muchos ficheros que no queríamos guardar, solo abrir. ¡Qué terribles estos problemas del primer mundo!

En fin, esto de momento no tiene solución pero se puede hacer una pequeña ñapa:

  • Abrimos vivaldi://settings/downloads/ y seleccionamos como carpeta de descarga por defecto /tmp
  • Desactivamos la opción Save Files to Default Location Without Asking

De esta forma Vivaldi nos preguntará si queremos Abrir, Guardar o Guardar como y ahora podremos decidir:

  • Si solo queremos abrir el fichero, pulsamos Abrir. Vivaldi descargará el fichero a /tmp y lo abrirá.
  • Si queremos guardarlo pulsamos Guardar como y especificamos manualmente dónde queremos guardarlo.

La opción Guardar queda entonces inútil, porque no tiene sentido guardar ningún fichero en /tmp, que es una carpeta que se vacía periódicamente.

Modo de recuperación para servidores de OVH

Si en algún momento la liamos con la configuración de nuestro servidor y nos quedamos sin poder acceder a él el proceso para recuperarlo es:

1.- Cambiamos en el panel de control el boot a “Rescue” (rescue-64).

2.- Reiniciamos el servidor, nos llegará por email la contraseña para acceder.

3.- Ejecutamos parted -l para ver qué unidades tenemos. Si tenemos un RAID nos interesa la que empieza por md, por ejemplo md127.

4.- Montamos esa unidad: mount /dev/md127 /mnt/

5.- Hacemos chroot: chroot /mnt/

6.- Buscamos el fichero de configuración donde la hayamos liado y corregimos el error.

7.- Cambiamos en el panel de control el boot a “Hard disk”.

8.- Reiniciamos el servidor y cruzamos los dedos…

Recuperar texto de documentos de Lotus Word Pro

Lotus Word Pro era un procesador de textos que venía con una impresora que compré en el año 96, y que permitía hacer composiciones bastante chulas, así que lo usé durante varios años y tengo bastantes documentos guardados en ese formato.

La mayoría los fui convirtiendo a Word con el propio programa pero aún me quedan bastantes documentos en el formato de Lotus, con extensión lwp.

He encontrado una herramienta en un FTP de Lotus llamada KeyView for Lotus que permite abrir los ficheros LWP sin tener el Word Pro instalado, y así podemos copiar y pegar el texto a un programa moderno. Con Wine funciona perfectamente.

Por si acaso el servidor FTP cierra dejo aquí una copia, espero que no se molesten 🙂

Permitir tráfico web en instancias de Oracle Cloud

Oracle Cloud nos permite usar dos instancias (básicas, pero bastante decentes) gratis de por vida. El proceso de creación es similar al resto de proveedores cloud, y aquí hay una guía muy completa.

El motivo de esta entrada es por si en el futuro se me olvida que una vez abiertos los puertos 80 y 443 en la lista de seguridad de la VCN de nuestra instancia hay además que abrirlos en el firewall de Ubuntu:

sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save

Enviar enlaces ed2k a mldonkey (configurar xdg-open para el protocolo ed2k)

Es habitual tener un ordenador pequeño tipo Raspberry Pi o similar encendido continuamente como servidor de archivos, y seguramente tengamos corriendo en él mldonkey, que es un cliente tipo eMule de línea de comandos.

Si queremos que los enlaces ed2k de las páginas que visitemos se añadan como descargas podemos usar una extensión como esta, que envía los enlaces a nuestro servidor mldonkey.

Pero claro, lo más normal hoy día es que la página que visitemos esté bajo https, y nuestro servidor mldonkey esté bajo http, lo que hace que el navegador rechace abrir una URL no segura desde un sitio seguro.

Para solucionar este problema vamos a hacer otra cosa. Nos olvidaremos de la extensión del navegador y registraremos un manejador para el protocolo ed2k://. Este manejador abrirá los enlaces en una aplicación que vamos a crear que hará la conexión con el servidor mldonkey.

Dicho así parece mucho más complicado de lo que es, ya verás. Lo primero que haremos será crear un fichero ~/.local/share/applications/ed2k.desktop con este contenido:

[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Name=ED2K Link Handler
Comment=Sends ed2k links to remote mldonkey server
Exec=ed2kHandler %u
MimeType=x-scheme-handler/ed2k

Las dos líneas más importantes son las dos últimas, donde indicamos el programa al que se enviarán los enlaces y el tipo mime que queremos registrar. ed2kHandler es el nombre de nuestra pequeña aplicación y en el tipo mime la parte ed2k del final es lo que indica que queremos asociarla a las URLs que usen el protocolo ed2k.

Una vez hecho esto ejecutamos estas dos líneas:

sudo update-desktop-database
xdg-mime default ed2k.desktop x-scheme-handler/ed2k

y ya tendremos hecha la asociación del protocolo con nuestra aplicación. Ya solo nos faltaría crear la aplicación.

La aplicación la haremos con PHP, y para ello crearemos el fichero /usr/bin/ed2kHandler con este contenido (una vez creado hay que darle permisos de ejecución):

!/usr/bin/php
<?php

if (!isset($argv[1]))
    die("Usage: ed2kHandler elink\n");

$url = 'http://USER:PASS@192.168.0.4:4080/submit?q=';
$url .= $argv[1];
$url = str_replace('ed2k://', 'ed2k%3A%2F%2F', $url);

file_get_contents($url);

Una acción de Nemo para reducir el tamaño de los PDF

Primero guardamos este script que es el que se ocupa de reducir el PDF:

Lo descomprimimos (WordPress no deja adjuntar ficheros .sh) y lo guardamos por ejemplo en /home/koas/bin.

Y para la acción de Nemo creamos un fichero en /home/koas/.local/share/nemo/actions con este contenido:

[Nemo Action]
Active=true
Name=Shrink PDF
Exec=/home/koas/bin/shrinkpdf.sh %F %F.pdf 300
Selection=S
Extensions=pdf;
EscapeSpaces=true

Mover carpeta de datos de MySQL

Hay ya miles de entradas sobre cómo cambiar la carpeta de datos de MySQL de /var/lib/mysql a cualquier otra, pero me costó encontrar la solución al problema “Error 13 – Permission denied” que me daba al intentar arrancar MySQL después de cambiarle la carpeta de datos.

El problema es que la nueva ruta estaba en /media/koas/Ext4Bucket, un segundo disco duro que tengo instalado. Para que funcione hay que darle a /media/koas permisos 777.

Eliminando autenticación para phpMyAdmin

¡Atención! Esto solo hay que hacerlo en nuestro equipo de desarrollo, lógicamente es una locura quitar la autenticación al phpMyAdmin en un servidor accesible desde Internet, ahí no solo debemos tener autenticación sino proteger además la carpeta con una contraseña de acceso porque phpMyAdmin no tiene ninguna protección contra ataques de fuerza bruta (no entiendo por qué, no les costaría nada implementar algo como phpLoginBlacklist).

Pero en nuestro equipo es un rollo que cada cierto tiempo caduque la sesión y nos pida que nos identifiquemos otra vez, así que la solución es editar el fichero /etc/phpmyadmin/config.inc.php y en el bloque de datos del primer servidor añadir estas líneas:

// Esta línea ya existirá, cambiamos su valor a config
$cfg['Servers'][$i]['auth_type'] = 'config';

// Estas son las líneas que añadiremos
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'pass';
$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
$cfg['Servers'][$i]['AllowRoot'] = TRUE;

Sublime Text: convertir espacios a tabs al guardar un fichero

No soy un maniático como Richard en Silicon Valley:

Aunque yo también prefiero usar tabulados

pero como llevo un tiempo usando Pug para el HTML en Vue he acabado harto del mensaje de error Invalid indentation, you can use tabs or spaces but not both.

Para solucionar esto crearemos una carpeta UnexpandTabsOnSave en la carpeta Packages de la configuración de Sublime Text y dentro un fichero UnexpandTabsOnSave.py con este contenido:

import sublime, sublime_plugin, os

class UnexpandTabsOnSave( sublime_plugin.EventListener ):
  # Run Sublime's 'unexpand_tabs' command when saving any file
  def on_pre_save( self, view ):
    view.window().run_command( 'unexpand_tabs' )

Así cada vez que guardemos un fichero convertirá los espacios a tabs, Pug no se quejará y el Richard que llevamos dentro estará satisfecho.