Post 2010

2 Novembre 2010

Google Public DNS

In un vecchio post consigliavo di usare i famosi server OpenDNS anziché i server DNS di default forniti dal proprio provider internet.

In realtà dopo tre anni di onorato servizio, mi sono accorto che usare i server di OpenDNS comportava alcuni problemi sulla risoluzione dei nomi nelle reti locali, come spiegato in questa pagina. Inoltre alcuni benchmark fatti con il programma namebench e alcune ricerche su internet mi hanno fatto conoscere un nuovo servizio di Google, nato a dicembre 2009, ma poco pubblicizzato. Si tratta di Google Public DNS, un servizio di DNS pubblico, simile a OpenDNS. Non ha i problemi di risoluzione dei nomi locali e sembra essere tra i più veloci in assoluto, secondo i benchmark suddetti.

Per chi è pigro, ecco gli indirizzi IPv4 dei server DNS di Google:

8.8.8.8    (server principale)
8.8.4.4    (replica)
29 Settembre 2010

Lampade fluorescenti che lampeggiano

Da molto tempo mi sono accorto che le lampade fluorescenti (volgarmente dette "a basso consumo" o al "neon") in alcuni casi lampeggiano anche se spente. Esclusa la possibilità di un forte campo elettromagnetico (se le si svita dal portalampade non lampeggiano più) rimaneva solo l'ipotesi di dispersioni elettriche. In questa pagina ho riassunto il perché e le possibili soluzioni.

15 Settembre 2010

Left Join di due tabelle Excel

Molto spesso le tabelle di Excel vengono usate impropriamente come tabelle di un database anziché come semplici fogli di calcolo. È innegabile però il vantaggio di poter effettuare operazioni matematiche e non solo sui dati della tabella. Cosa impossibile o molto difficile con i database. Questo è quanto accade ogni giorno nel nostro laboratorio dove i campioni vengono registrati, assieme alle loro proprietà, in una grande tabella Excel.

Così facendo però ci si trova presto ad avere necessità "da database" che però sono difficili da soddisfare con un programma basato su fogli di calcolo. Una di queste tipiche necessità è il poter fare delle operazioni di join tra diverse tabelle Excel.

Un esempio tipico: tabella A con i clienti di una azienda telefonica. In una colonna c'è un codice che indica la centrale telefonica che serve quel cliente. La tabella B contiene invece come chiave primaria il codice suddetto e per ognuno di essi tutte le caratteristiche di quella centrale, tra cui, per esempio, l'ubicazione.

Supponiamo di voler avere una vista del database, cioè una tabella creata a partire dai dati già contenuti in esso, che sia identica alla tabella A ma che contenga un'ulteriore colonna che indichi l'ubicazione della centrale telefonica.

Per ogni riga della tabella A dovrei guardare il codice della centrale e andare sulla tabella B a controllare qual è l'ubicazione per quel codice. Questa operazione è chiamata join, in particolare left outer join tra la tabella A e la tabella B. Idealmente consiste nel fare il prodotto cartesiano tra le righe della tabella A con le righe della tabella B e tenere poi solamente le righe che soddisfino una certa condizione che nel nostro caso sarà tabellaA:id_centrale = tabellaB:id_centrale. Dopodiché da questo grande tabellone non resta che prendere le colonne di interesse.

Esistono diversi modi di fare una join tra due o più tabelle. In pratica si distinguono dal lasciare o meno le righe del prodotto cartesiano in cui la condizione di confronto è fatta tra uno o più valori non definiti o null.

Come simulare una join in excel? È sufficiente usare la funzione VLOOKUP che prende quattro argomenti (l'ultimo opzionale): VLOOKUP(1,2,3[,4]).

  1. cosa cercare (stringa o identificativo di cella)
  2. dove cercarlo definito come tabella (cella in alto a sinistra:cella in basso a destra)
  3. questo valore è il numero della colonna della tabella precedentemente definita da cui VLOOKUP resistuirà le informazioni corrispondenti alla riga che matcha la ricerca dell'oggetto al punto 1 contenuto nella prima colonna, che deve essere ordinata
  4. TRUE di default. Se è FALSE restituisce la riga di match solo se ha dato un match esatto. In questo caso la prima colonna della tabella può anche non essere ordinata.

Ricordate che se avete Office in italiano i nomi delle funzioni sono tradotti. Questo per me è uno dei più gravi errori commessi dalla Microsoft. Ecco un link con le corrispondenze fra le varie lingue: dolf.trieschnigg.nl/excel/excel.html. Ed ecco alcune corrispondenze:

VLOOKUP = CERCA.VERT
FALSE = FALSO
MATCH = CONFRONTA
OFFSET = SCARTO
COUNTA = CONTA.VALORI
, = ;

Copiate in un nuovo foglio (tramite formula) le colonne di interesse della tabella LEFT, tra cui, obbligatoriamente, la chiave primaria. Nella parte restante metteremo le colonne di nostro interesse dalla tabella RIGHT. Per farlo basta usare la funzione VLOOKUP appena introdotta. Per ogni colonna che volete compaia nella vista, usate la funzione

VLOOKUP(chiave primaria LEFT,tabella RIGHT,numero colonna di interesse di RIGHT,FALSE)

La chiave primaria LEFT è solitamente il primo valore della riga attuale e verrà cercato nella prima colonna della tabella RIGHT. L'ultimo FALSE richiede un match esatto. Se il match è andato a buon fine, VLOOKUP prenderà la riga che ha dato il match e restituirà il valore della colonna indicata con numero colonna di interesse di RIGHT.

La colonna di interesse può anche essere estratta in maniera automatica mettendo al posto del numero colonna di interesse di RIGHT:

MATCH(titolo colonna attuale,dove cercare,0)

dove cercare è la prima riga della tabella RIGHT. 0 significa che cerca una corrispondenza esatta. MATCH resistuirà l'indice di colonna della RIGHT.

Vi ricordo di bloccare in maniera opportuna nelle formule i numeri di riga o di colonna.

Ringrazio il mio collega Luca Serenelli che mi ha gentilmente mostrato le tecniche di Excel che ho riportato in questo post.

30 Luglio 2010

Cambiare la data di ultima modifica dei file

Aggiornamento 8 gennaio 2011: ho raccolte le migliori soluzioni al problema in questa pagina che quindi sostituisce il seguente articolo.

Quando si va in vacanza e ci si dimentica di regolare l'ora della macchina fotografica digitale, ci si ritrova con delle foto che riportano sia nella data di ultima modifica, sia nei dati EXIF, delle informazioni errate. Questo è tanto più grave quante più sono le macchine da cui provengono le foto (immaginate un gruppo di amici che va in vacanza e alla fine della vacanza vuole creare un unico archivio di immagini). Usare la data corretta non è mera puntigliosità ma risulta utilissimo se si vogliono visualizzare le immagini provenienti da due o più persone nel corretto ordine cronologico.

Per fare questo prima di tutto si deve sapere di quanto vanno corrette le date di ogni macchina. Non dimenticatevi di considerare il fuso orario. Se oramai la data della macchinetta è stata cambiata rispetto a quella della vacanza, l'unico modo di conoscere l'esatta correzione di data è quella di scovare degli indizi nelle foto, per esempio confrontare l'ora di un orologio locale con la data di ultima modifica del file.

Il passo successivo è quello di cambiare data di ultima modifica del file e i corrispondenti dati EXIF. La modifica dei dati EXIF non è necessaria ma sicuramente comoda. Infatti quando farete delle operazione su una di queste immagini la nuova data di ultima modifica sarà quella di salvataggio oppure quella contenuta nei dati EXIF (basti pensare alla rotazione permanente di una foto).

Il programma adatto a questo scopo, per Windows, è EXIF Date Changer (purtroppo nella versione free di questo programma sono disabilitate le utilissime funzioni di selezione in base al modello di macchina fotografica e la possibilità di modificare immagini in formati diversi dal jpg). Altri due software molto utili sono NewFile Time e BulkFileChanger. Questi ultimi due strumenti modificano solo la data di ultima modifica e non i dati EXIF ma sono utilizzabili su ogni tipo di file al contrario di EXIF Date Changer che può essere usato solo su file jpg. Tutti e tre questi software sono gratuiti ma non open source.

5 Luglio 2010

install-mbr e computer Acer

Oggi dovevo recuperare dei dati da un portatile Acer e ripristinarlo allo stato di fabbrica. Questo PC aveva due partizioni, quella nascosta PQSERVICE, la 1, e quella di Windows, la 2. La partizione 2 era corrotta e l'MBR dell'hard disk rovinato. Dopo aver copiato i dati importanti su un hard disk esterno (facendo partire il PC con SystemRescueCD e montando la partizione 2) si poneva il problema di come ripristinare il sistema.

Già una volta avevo fatto un'operazione simile su un computer Acer e sapevo che la Acer permetteva il ripristino del sistema sostanzialmente solo tramite il boot dalla partizione PQSERVICE (premere F10 o Alt+F10 al boot. La funzione deve essere abilitata nel bios: D2Drecovery).

Purtroppo anche l'MBR era danneggiato e quindi non c'era modo di far partire il ripristino. Sarebbe servito un CD di ripristino (non fornito e difficile da realizzare su un altro PC) ma quel portatile non aveva il lettore CD (e non ne avevo uno portatile a disposizione). Idem da penna USB. Praticamente impossibile da creare.

Fortunatamente però, dopo qualche ricerca, ho scoperto che la partizione PQSERVICE contiene semplicemente un'installazione di Windows minimale con l'esecuzione automatica all'avvio del programma per il ripristino. Non mi restava quindi che caricare nell'MBR un boot loader che mi permettesse di avviare la partizione PQSERVICE.

La soluzione migliore l'ho trovata nel programma install-mbr, compreso in SystemRescueCD (e molto più semplice di LILO o GRUB). Con il seguente comando

install-mbr -e 12 -i a -p 2 -t 54 /dev/sda

posso avviare sia la partizione 1, cioè PQSERVICE, che la 2 (-e 12). Inoltre il PC mi chiede all'avvio cosa fare (-i a) e di default, dopo 3 secondi, fa partire il sistema operativo della partizione 2 (-p 2 -t 54).

A quel punto ho capito che questa non era solo una soluzione temporanea ma anzi era consigliabile che chiunque, anche con un PC sano, la adottasse! Risulta infatti molto più facile lanciare il ripristino. Basta digitare 1 e dare invio entro 3 secondi quando compare la scritta MBR. Per questo motivo, prima ho finito le operazioni che dovevo fare sull'hard disk (ho cancellato la partizione 2 e ricreato due partizioni, una per Windows (2) e una per i Dati (3)) e poi ho installato il nuovo mbr.

31 Maggio 2010

died sourcing flag-o-matic.eclass

Recentemente il mio server gentoo ha iniziato ad avere problemi con la compilazione degli ebuild. Per quasi tutti gli ebuild questo era il messaggio di errore:

ERROR: sys-libs/timezone-data-2010i failed:
     died sourcing /usr/portage/eclass/flag-o-matic.eclass in inherit()

Google stavolta non è riuscito a darmi la risposta. Un semplice controllo al file flag-o-matic.eclass ha però evidenziato che questo file era stato corrotto (problemi in qualche aggiornamento?).

Non sapendo da quale ebuild provenisse quel file, ho deciso di reinstallarlo manualmente, usando una versione recente presa da internet (Gentoo Repository). Ora funziona tutto perfettamente.

24 Marzo 2010

RAIperunanotte

Un'informazione libera è il fondamento della democrazia. Giovedì 25 marzo 2010, ore 21:00 andrà in onda, sul web, in tv, in radio, in piazza, una delle trasmissioni più importanti degli ultimi decenni: RAIperunanotte. RAIperunanotte non è una semplice trasmissione, non un semplice sciopero bianco: è un'opportunità, non perdiamola.

23 Gennaio 2010

Rinominare file in blocco

Spesso si ha la necessità di rinominare un gran numero di file in blocco, secondo alcune regole, non potendo, per ovvi motivi, rinominarli uno a uno manualmente. Ecco un esempio: quando si torna dalle vacanze si hanno centinaia di foto digitali con nomi sequenziali del tipo DSCM0000.jpg e normalmente le si vorrebbe rinominare in qualcosa del tipo Valencia_001.jpg, Valencia_002.jpg e così via.

Windows ha delle basilari funzioni di rinominazione di file in blocco. Selezionate quanti file volete, date il comando per rinominare (tasto destro o F2) e scrivete un suffisso, es. Valencia. Windows rinominerà i file secondo l'ordine di selezione: Valencia.jpg, Valencia (2).jpg, ecc... Per partire da (1) scrivere Valencia (1) anziché semplicemente Valencia.

Questo modo di procedere è però molto rozzo, inoltre, come sappiamo, l'introduzione di spazi nei nomi dei file è una pratica da evitare. Se il nostro problema sono solamente le immagini, diversi image viewer hanno delle funzionalità adatte allo scopo. Tra questi, il migliore per Windows è senza dubbio, IrfanView, che oltretutto permette di rinominare qualsiasi tipo di file, sebbene le regole di rinominazione non siano molto flessibili. Se invece si ha la necessità di dover rinominare una grande quantità di file con regole molto complesse, cioè non la semplice aggiunta di un prefisso e/o suffisso o una semplice numerazione progressiva secondo criteri di data e simili, il programma Métamorphose è quello che serve.