Su questo sito

permalink

Il cyberpunk ha raggiunto le lavatrici.

Foto

Refactoring

Martin Fowler, 2018

Chiudo il volume con un inaspettato senso di soddisfazione, se tengo in conto che Refactoring non ha un finale. Non ha neanche una storia, e per due terzi è un catalogo di tecniche. È assai raro che legga un libro di informatica. In vent'anni e più di ``carriera”, ne avrò letto meno di dieci. Probabilmente ho imparato di più da documentazione ufficiale ed articoli ufficiosi, che da opere monografiche, cartacee o digitali. Ma sono assai contento di aver comprato questo.

Oltre agli effetti più evidenti, il codice di un programma definisce implicitamente una serie di premesse e confini. A volte ne siamo consci, a volte passano inosservati, ma questi presupposti definiscono e limitano la possibile evoluzione del software che stiamo scrivendo. Refactoring è la pratica—l'arte?— di modificare questi limiti, senza modificare il funzionamento del codice. Il libro cataloga numerose tecniche per evolvere il codice, descrivendone gli effetti sui limiti, ed i passi necessari per metterle in atto. Passi piccoli ma certi, scelti in modo da lasciare sempre integro il comportamento iniziale.

Refactoring è un libro rilassante, e si è rivelato quasi un calmante in un periodo teso come questa primavera, quando La Situazione ci teneva chiusi in casa, e sul lavoro (vecchio) tutto avveniva di corsa e alla meno peggio. La narrazione di ben definiti spezzoni di lavoro, nella calma voce di Martin Fowler, riportava l'intera professione nella normalità. Si fanno cose per una ragione, con metodo. L'entropia è inevitabile, ma è possibile controllarla.

A questo punto mi sono probabilmente già dimenticato i passi descritti nella maggior parte delle sezioni, ma mi resta un arsenale di concetti. Posso tornare al volume in qualsiasi momento, se mi servono i dettagli. Oppure posso leggerlo online. Il libro fisico permette l'accesso alla versione web, che è anche la versione canonica. Il volume rigido che ho comprato è solo un'istantanea del sito, e quest'ultimo continuerà ad evolversi.

permalink

Un blocco di muschio.

Foto

permalink

Autunno confermato

Foto

Nessun commento

Backup e tranquillità

Sin da un drammatico giorno nel 2006, quando ho perso un hard disc per colpa di un adattatore difettoso, il mio livello di attenzione ai backup è superiore alla media. I miei dati casalinghi vivono su almeno tre dischi: File History prende snapshot ogni tre ore, ed un piccolo NAS li archivia in mirroring. Nulla di inaffondabile, ma abbastanza da farmi sentire tranquillo.

Settimana scorsa, ho raggiunto una situazione accettabile per un'altra classe di dati: quelli sparsi su server vari: VPS, FTP, database. Dati che cambiano senza che tocchi i file direttamente, come le foto o i testi che carico su questo sito. Dati di cui ho sempre fatto saltuarie copie manuali, ma con gli ultimi accorgimenti ho automatizzato il tutto.

Rclone

Diversi host permettono l'accesso solo via FTP. Scaricare file via FTP non è difficile. Per l'occasione uso Rclone, che fornisce un'interfaccia uniforme per copiare file da e verso una marea di protocolli e servizi. Fra le varie cose, l'ho configurato per accedere al server di Minecraft e fare una copia del mondo:

rclone sync shockbyte:/ var/minecraft/server --exclude logs

Con sync il saggio strumento copia solo i file modificati, un'opzione essenziale con un mondo sempre più grande.

Chiavi SSH per un singolo comando

Ho un database su un host che mi mette a disposizione sia SSH che Cron, quindi posso spedire backup del database da un server all'altro. Per minimizzare i permessi, uso una feature abbastanza oscura di OpenSSH: le chiavi limitate ad un singolo comando. È un effetto che si ottiene aggiungendo un prefisso alle chiavi private in authorized_keys:

command="~/bin/backup-db.sh",no-pty ecdsa-sha2-nistp521 AAAA...

L'host del database si collega al server per il backup, e l'unica cosa che gli è permesso fare è eseguire lo script indicato nella configurazione. La colla è una pipe.

mysqldump --all-databases | ssh -i ~/.ssh/backup-key backup-server

Restic

Una volta che ho tutti i file in un solo posto, è il momento di salvarne una versione. Per questo uso Restic, uno strumento per backup crittati ed incrementali: salva solo i dati che cambiano, ma tiene traccia di molteplici snapshot. L'ho configurato per tenere le due versioni più recenti, più altre per la settimana, il mese, e gli anni precedenti. Prima si inizializza una destinazione per i dati, poi basta una riga:

restic --repo $REPO backup tutti-i-dati/ --exclude tmp

Una volta salvato il backup, si possono ripristinare interi snapshot, singoli file, oppure—lusso spropositato—montare l'intero repository via FUSE, per esplorarlo nella maniera preferita.

$ restic --repo $REPO mount tmp/
[...]
$ ls tmp/snapshots -1
2020-09-20T07:15:01+02:00
2020-09-24T07:15:01+02:00
2020-09-25T07:15:01+02:00
latest

Backblaze B2

Dove finiscono tutte questi file? Lo spazio che ho scelto dopo una lunga investigazione è Backblaze B2. La ditta fornisce prodotti per backup online, ed è nota per le dettagliate statistiche sulla durata dei dischi che pubblica più volte all'anno. Il servizio è supportato sia da Rclone che Restic, ed il piano base offre 10GB di spazio a costo zero. Mi spiace per il loro business, ma dubito li riempirò a breve. Ma se anche dovesse succedere, sono comunque più economici di S3, e li preferisco ad Amazon. E se un giorno devo recuperare giga e giga di blocchi di Minecraft, sono pronti a spedirmi una chiavetta USB od un disco a casa.

Ho mischiato questi ingredienti con un paio di script, ed aggiunto un po' di crontab per tenere tutto assieme. Così durante la notte tutti i bit si muovo da soli, in file ben ordinate, e viaggiano da un server all'altro. Si duplicano ed archiviano, mentre io dormo sereno.

permalink

Misallineati. Due passi prima di sedermi alla scrivania.

Foto

permalink

BitTorrent v2

Dopo due decenni, il protocollo fa un passo avanti, abbandonando SHA-1 per SHA-256. Ma la caratteristica più interessante della nuova versione è che l'unità di informazioni indirizzabile non è più il blocco imprecisato, ma il singolo file. Così BitTorrent entra nel mondo del content addressable (assieme a Git ed IPFS.

Questo vuol dire che lo stesso file può essere condiviso fra più torrent, e si può creare un torrent che contiene file già distribuiti separatamente. Mi aspetto applicazioni interessanti, fosse solo per scaricare distribuzioni di Linux.

PicoTorrent è già stato aggiornato.

permalink

Fine estate

Foto