pill

Export archivio mail MBOX in html

Dopo aver esportato i dati della mia casella gmail, ottenendo un enorme file MBOX, volevo esportarlo in un formato più facilmente navigabile e ricercabile. E mi è venuto in aiuto MHonArc! https://www.mhonarc.org/

Questo il comando fatto:

mhonarc MBOX_FILE -add -folrefs -main -reverse -multipg -idxfname index.html -tidxfname threads.html -attachmentdir attachments -outdir DIR_DESTINAZIONE

Bloccare sistemi che alterano il contenuto della clipboard (con Firefox)

firefox

Essendomi rotto dei siti come *today.it che ogni volta che faccio un copia e incolla mi mettono nella clipboard un sacco di roba inutile, ho cercato come evitare la cosa. La soluzione per ora l'ho trovata solo per Firefox, e consiste nel cambiare un'opzione in "about:config", impostando "dom.event.clipboardevents.enabled" a False.


 

Systemd: abbassare il periodo di attesa in caso di "A stop job is running..."

linux

Se durante la procedura di shutdown uno dei job si blocca con la dicitura "A stop job is running..." di solito rimane bloccato per 1 minuto e mezzo! Se capita significa che qualcuno dei task di chiusura ha dei problemi, e quindi la soluzione corretta sarebbe indagare sullo specifico servizio systemd, guardare i log, capire e risolvere il problema. Intanto però abbassare quel minuto e mezzo aiuta!

Basta modificare la voce "DefaultTimeoutStopSec" all'interno del file "/etc/systemd/system.conf", impostandola ad esempio a "10s". Oppure, per evitare di modificare un file di sistema, aggiungere un file "/etc/systemd/user.conf.d/99-stop-fast.conf":

[Manager]
DefaultTimeoutStopSec=5s

KDE, Chrome e dialog di salvataggio che non permette il "salva pagina web completa"

kde

Se usiamo Chrome (o chromium) su KDE quando usiamo il "salva" si apre la finestra di dialogo di sistema, senza il supporto per i salvataggi alternativi della pagina, e in particolare il "salva pagina web completa".

Per far riapparire l'opzione dobbiamo fare in modo che chrome usi la SUA dialog. Per farlo possiamo avviare chrome in questo modo:

env NO_CHROME_KDE_FILE_DIALOG=1 google-chrome

oppure aggiungere nel file ~/.bash_profile:

export NO_CHROME_KDE_FILE_DIALOG=1

 

Per maggiori info sul motivo del bug, che non viene risolto da anni: https://bugs.chromium.org/p/chromium/issues/detail?id=109913 - https://bugs.chromium.org/p/chromium/issues/detail?id=431505

Convertire un file .264 in .mp4

Una delle mie videocamere salva dei file .264, che non risultano visibili direttamente ne su vlc ne su mplayer.

Per convertirli in file .mp4 basta eseguire questo comando:

ffmpeg -framerate 24 -i input.264 -c copy output.mp4

NOTA: E' possibile vedere direttamente i file .264 in VLC andando in Preferenze (Tutte le impostazioni) > Ingresso / Codificatori > Demuxer e scegliendo come modulo "Demuxer video H264".

Impostare un limite di banda per un singolo processo: il comando trickle

linux

Se si vuole impostare un limite banda su una intera interfaccia di rete esistono diverse guide in rete che spiegano come farlo. Più difficile trovare il modo per limitare un singolo processo.

Ci viene in aiuto il comando TRICKLE.

Una volta installato (è presente nelle più comuni distribuzioni), è sufficiente usarlo prima del comando che vogliamo lanciare, ad esempio in questo modo:

trickle -d 20 comando parametri ...

Per avviare "comando" con un limite di download di 20KB/sec

 

Per maggiori informazioni, e per capire come funziona il limite e il processo di "smoothing":

https://github.com/mariusae/trickle

Regexp multiple che si elidono a vicenda (positive look-ahead e look-behind)

Ammettiamo di avere una stringa di questo tipo:

_MATCH_MATCH_

e vogliamo trovare tutti i riferimenti di "MATCH" che siano circondati da "_". Vogliamo sostituire tutti questi riferimenti con "*".

preg_replace('/_MATCH_/', '*', $text);
# Risposta: "*MATCH_"

Questo sistema non funziona, sia perchè sostituisce solo il primo "MATCH", sia perchè la sostituzione elimina anche i "_" (e non è quello che vogliamo fare).

La soluzione è questa:

preg_replace('/(?<=_)MATCH(?=_)/', '*', $text)
# Risposta: "_*_*_"