Mondi su mondi, sistemi di sistemi.

namebench

Wednesday, February 17th, 2010

Qualche tempo fa ho scoperto namebench, una utility per trovare il server DNS più performante nella zona in cui siamo in quel momento.

Il suo uso è molto semplice, basta lo screenshot:

Quello che all’inizio mi ha sorpreso, però, è vedere il DNS sulla LAN battuto regolarmente da quelli esterni. Credo che il motivo sia dovuto semplicemente a questioni di caching: è più probabile che i nomi da risolvere siano già in cache sui server esterni che su quello interno.

Infatti, se ripetiamo i test il divario fra il DNS interno e quello esterno tendono a diminuire. Usando come domini da risolvere quelli nella cache di Safari, otteniamo:

  1. 179% più veloce;
  2. 90% più veloce;
  3. 73%.

Il DNS interno rimane sì il più veloce in termini assoluti, con ~2ms di miglior risposta contro ~ 26ms del DNS esterno migliore ma dall’altra parte il tempo peggiore di risposta è di ~1,5s per l’interno e ~0,5 per l’esterno, con una distribuzione delle risposte nettamente a favore del server esterno.

Un DNS interno può rimanere indispensabile per risolvere i nomi sulla LAN ma il suo beneficio come cache può essere importante di quanto si pensi.

Monitorare i file con Emacs

Monday, August 3rd, 2009

Il bello di Emacs è che c’è sempre qualcosa di nuovo da imparare…

Di solito, per monitorare i log e cose del genere uso tail -f ma oggi ho scoperto che è pos­sibile fare una cosa simile anche direttamente da Emacs.

Una volta aperto il file di log basta attivare il modo (minore) Auto Revert Tail con M-x auto-revert-tail-mode e il gioco è fatto.

(Dis)Integrazione

Friday, June 19th, 2009

Il fatto

L’altro ieri ero da un potenziale cliente e dopo la demo di rito, parlando del più e del meno, salta fuori che poter collaborare con una banca di cui non ha fatto il nome ma sicuramente italiana deve usare, nel suo studio, il loro gestionale (o una parte di esso).

Scusa, ho capito bene?

Ogni giorno si parla di sistemi sempre più integrati, di livelli di astrazione sempre più alti, di standard sempre più evoluti e c’è qualcuno che è in grado di imporre condizioni del genere?

Dove andremo a finire?

Capisco la questione della sicurezza e dell’evitare costi ma mi sembra la clas­sica esternalità negativa. Alla fine sarà il cliente a doversi sorbire i doppi reinserimenti di dati ecc. ecc. Deprimente…

MIA: ZFS">MIA: ZFS

Tuesday, June 9th, 2009

Dove MIA sta per “Missing In Action”, ovviamente. Se qualcuno riesce a trovare una singola menzione nella pagina informativa, mi faccia sapere.

Perplesso, molto perplesso.

Le scoperte dell’acqua calda

Wednesday, May 6th, 2009

Poco più di un anno fa ho postato uno script per contare il numero di righe in un file e non mi ero nemmeno posto il problema di verificare se fosse un problema già risolto.

Ovviamente è così e anzi ho scoperto che ci sono diverse pos­sibilità. Prima di tutto esiste il comando specifico: nl(1); poi pos­siamo usare anche “cat -n nomefile”; infine c’è anche “less -N”. Non escludo che ce ne siano altre, a questo punto.

Ho scelto proprio una bella ruota da re-inventare!

Time Machine: il test definitivo

Saturday, March 28th, 2009

Ho già cantato le lodi di Time Machine ma forse avrei dovuto riservarle per quello che mi è successo un paio di settimane fa.

Ho installato un Ubuntu su USB dal mio portatile. Dato che è una vita che non installo Linux o cose del genere (inciso: anche con Ubuntu non ci siamo ancora; credo che non ci saremo mai a questo punto) sono andato in automatico: boot da cd, specifica il disco di destinazione nell’installer, aspetta che finisca e reboot.

Peccato che al riavvio non sia partito proprio un bel niente. Credo che l’installazione abbia pasticciato con il boot loader e quindi mi sono ritrovato con la mia macchina inutilizzabile ma con tutti i dati al suo posto (il disco si vedeva regolarmente partendo dal DVD Mac OS).

Che fare? Chiamo Time Machine in soccorso! Una volta partito da DVD, ho formattato il disco e poi ho montato il volume di backup in rete e ho fatto il restore. Ha funzionato alla perfezione.

Beh, più o meno! Il limite di Time Machine è che lavora sui volumi logici e quindi non poteva ripristinare la partizione “rovinata” dall’installer di Ubuntu; ecco perché ho dovuto riformattare il disco. Inoltre il restore in rete è lungo, circa quattro ore. Comunque non ci sono state sorprese, che è la cosa più importante in un restore, se non alcune bizzarrie già indicate in un post pre­cedente.

Utility del giorno: imapsync

Tuesday, March 10th, 2009

Nonostante l’avvento dell’IMAP, la migrazione degli account di posta rimane sempre un problema rognoso. Vuoi per la criticità dei mes­saggi, vuoi per i vari pezzi del puzzle che devono incastrarsi, vuoi per i diversi scenari che si pos­sono presentare.

In pas­sato usavo direttamente un client di posta, spostando i mes­saggi cartella per cartella. Funziona, certo, ma non è replicabile su larga scala.

Dovendo fare dei test di migrazione mi sono messo alla ricerca di una qualche utility utilizzabile da linea di comando e ho trovato imapsync che ha svolto il suo lavoro egregiamente.

Il funzionamento di base è banale: imapsync --host1 h1 --user1 u1 --password1 p1 --host2 h2 --user2 u2 --password2 p2, ma sono coperti anche casi più particolari. È pre­sente anche la modalità dry, indispensabile per strumenti di questo tipo.

Bash 4

Thursday, March 5th, 2009

Non è solo Safari che è arrivato alla 4 versione, c’è anche la bash!

La maggior parte delle novità sono di scarso interesse per un utilizzatore elementare come me, ma alcune sono comunque degne di interesse:

  • There is a new ‘mapfile’ builtin to populate an array with lines from given file. The name ‘readarray’ is a synonym.”
  • There is a new shell option: ‘globstar’. When enabled, the globbing code treats ‘**’ specially — it matches all directories (and files within them, when appropriate) recursively.”
  • There is a new shell option: ‘dirspell’. When enabled, the filename completion code performs spelling correction on directory names during completion.”
  • There is a new &» redirection operator, which appends the standard output and standard error to the named file.”
  • The parser now understands ‘|&’ as a synonym for ‘2>&1 |’, which redirects the standard error for a command through a pipe.”
  • The shell provides associative array variables, with the appropriate support to create, delete, assign values to, and expand them.”

MacFusion

Monday, February 23rd, 2009

Fra le applicazioni che ho segnalato qualche tempo fa c’era MacFusion, ovvero un’interfaccia grafica per configurare e usare MacFuse, uno filesystem “user-level”.

Quest’applicazione mi interes­sava come supporto alle procedure di installazione, per limitare al mas­simo l’interazione via shell remota. Volevo capire se era una cosa fattibile e se ne valeva la pena, anche tenendo conto delle limitazioni segnalate nelle FAQ.

Per l’uso di MacFusion sono richiesti Mac OS X 10.5 e MacFuse. Avrei voluto installare quest’ultimo tramite MacPorts ma purtroppo è una versione troppo vecchia (1.7 contro l’attuale, 2.0.x); si tratta comunque di un’operazione velocis­sima, che non richiede nemmeno il riavvio, per cui anche l’installazione manuale è alla portata di chiunque. Il pacchetto comprende, oltre all’estensione del kernel e alle varie librerie, un comodo pannello di controllo:

pannello_di_controllo

MacFusion invece consiste solo nell’applicazione e, se lo desideriamo, dell’eventuale icona nella barra dei menu.

A questo punto pos­siamo definire i volumi remoti. L’operazione è molto semplice e riporto quindi solo gli screenshot per la configurazione dell’SSHFS, che credo si commentino da soli:

macfusion_1

macfusion_2

macfusion_3

Fin qui abbiamo parlato dell’uso più standard, quello che copre il 90% dei casi. Ma per essere utile nelle installazioni bisogna verificare se è  pos­sibile l’uso da linea di comando.

La versione distribuita sul dmg non contiene nes­suno strumento per il terminale ma è scaricabile dalla repository svn. Il link riporta anche le istruzioni per il suo uso, molto semplice; altrettanto semplice diventa la sua integrazione nelle operazioni di deployment.

A questo punto abbiamo tutti i pezzi neces­sari e funzionanti. Vale la pena di usarli nel deployment? A mio parere, dipende dall’approccio alla sicurezza che viene usato sul server di destinazione: se facciamo tutto come root, a partire dall’ssh iniziale, allora non cambia praticamente nulla; se entriamo come utente “normale” e poi usiamo sudo, va ancora peggio, perché l’uso di sudo è ovviamente escluso a priori; infine, se abbiamo impostato i privilegi — magari tramite acl — in modo tale che l’utente dell’ssh possa anche portare a termine l’installazione senza sudo allora pos­siamo trarne qualche beneficio.

In quest’ultimo caso, il vantaggio principale consiste nell’avere a disposizione l’intero “arsenale” della propria macchina locale per operare sul volume  del server remoto. Viceversa, il difetto principale è che l’uso dell’SSHFS può non essere una soluzione completa: se l’installazione pre­vede il riavvio di un qualche processo dovremo comunque usare l’ssh.

Tuttavia, anche se non ne ho fatto l’uso esteso che pensavo, mi sono trovato più di una volta nella neces­sità di usare MacFusion per verifiche o interventi “al volo” e rimane uno strumento di grande utilità.

Utilities: nuove segnalazioni

Friday, January 16th, 2009

Attraverso il blog di Norman Walsh scopro un paio di utility che credo userò molto frequentemente.

La prima è ack! ed è un sostituto del grep, quando è utilizzato ricorsivamente, magari in combinazione con find. Uso un one-liner che fa il minimo indispensabile non so quante volte al giorno ma ack! è mostruosamente più completo ed è solo ad un sudo port install p5-app-ack di distanza.

La seconda l’ho recuperata solo indirettamente dal post di Walsh, attraverso i commenti, ed è MacFusion: un’implementazione dell’SSHFS+FTP. Avevo già provato altre versioni in pas­sato con MacFUSE ma in quel momento non avevo un bisogno impellente di una utility del genere; adesso ho un paio di scenari in cui potrebbe essere lo strumento adatto.

« Voci Precedenti