2012-09-05

Thunderbird e le risposte

Utilizzo ormai da qualche anno Thunderbird come agente di posta elettronica.
Mi trovo bene con molte sue caratteristiche che potranno essere oggetto di post futuri.
Un problema particolare che ho deciso di approfondire è la posizione del cursore nel testo di un messaggio in fase di risposta; quando si risponde ad un messaggio cliccando sul tasto Rispondi (o Reply per la versione inglese) viene creato un nuovo messaggio con aggiunto il testo del messaggio originale, il cursore però si posiziona in fondo al testo.
Non ci vuole molto a posizionarsi in cima, ovvero dove di solito ci si aspetta di scrivere la nostra risposta, per me che sono un amante dell'utilizzo della tastiera Ctrl-Home assolve velocemente il compito.
Considerato che per abitudine rispondo sempre scrivendo all'inizio, ho cercato un modo per avere in automatico il cursore posizionato all'inizio.
L'ho trovato! Tra gli appunti che si possono fare c'è la difficile rintracciabilità delle opzioni di configurazione del prodotto...
Si deve entrare nelle impostazioni dell'account: Menu > Modifica > Impostazioni account...
si deve poi scegliere la voce Composizione ed indirizzi del l'account per il quale si vuole cambiare il comportamento e scegliere inizia la risposta sopra il testo a cui si risponde nella voce dopodiché appena sotto la casella inserisci automaticamente il messaggio originale nella risposta.

Grazie al mio amico Michele che mi ha sensibilizzato sul problema e stimolandomi per la ricerca.

2012-04-10

La data in Gnu-Linux

Per Unix il tempo è iniziato l'1 Gennaio 1970.
Ogni orario viene riferito a quel momento, quanti secondi sono passati dal 01/01/1970? Nel momento in cui scrivo 1.334.009.466.
Il comando date di Gnu ci fornisce questa informazione passandogli un determinato parametro: +%s
L'opzione  --date ( nella versione abbreviata -d ) serve per fornire una date/orario differente da quelli di sistema per la visualizzazione, quindi provando ad eseguire il comando:
date --date="2012-04-10 00:13:00" +%s
in qualunque ora lo eseguiate otterrete 1334009580.
Cercando di calcolare quanti secondi sono passati dall'impatto del Titanic con l'iceberg al 01/01/1970:
date --date="1912-04-14 23:50" +%s
a questo punto si ottiene un numero negativo essendo antecedente il 1970, sottraendo i secondi del Titanic a quelli attuali si ottengono i secondi passati dall'impatto del Titanic:
echo $(($(date --date="2012-04-10 00:13:00" +%s) - $(date --date="1912-04-14 23:50" +%s)))

I vecchi comandi date presenti nelle vecchie versioni di Unix servivano solamente per consultare ed impostare la data di sistema e quindi i progettisti avevano dato per scontato che non ci sarebbe stata la necessità di inserire date precedenti il 1970. In seguito l'implementazione Gnu ha esteso il comando date anche a funzioni di visualizzazione di date e orari arbitrari e quindi anche date antecedenti il 1970.

L'opzione --date ci permette anche di indicare date indietro o in avanti rispetto al momento attuale esprimendo ad esempio:
domani: "tomorrow"
ieri: "yesterday"
la prossima Domenica: "next Sunday"
le 18:30 della Domenica precedente "last Sunday 18:30"
il mese scorso: "last month"
la settimana scorsa: "last week"
fra 3 domeniche: "3 sunday"
fra 4 settimane: "4 weeks"
3 settimane fa: "3 weeks ago"
domani più una settimana: "tomorrow + week"
ieri più due mesi: "yesterday + 2 month"
fra 5 giorni e 2 ore: "5 days + 2 hours"

2012-03-29

Marziani in rete ed Open SuSE 11.2

Mar 29 09:12:33 pc2kx kernel: [ 1048.245950] martian source 192.168.2.0 from 0.0.0.0, on dev eth0
Mar 29 09:12:33 pc2kx kernel: [ 1048.245970] ll header: ff:ff:ff:ff:ff:ff:00:00:00:00:fe:01:08:00
Mar 29 09:12:34 pc2kx kernel: [ 1048.999644] martian source 192.168.2.0 from 0.0.0.0, on dev eth0
Mar 29 09:12:34 pc2kx kernel: [ 1048.999665] ll header: ff:ff:ff:ff:ff:ff:00:00:00:00:fe:00:08:00
Mar 29 09:12:34 pc2kx kernel: [ 1049.745748] martian source 192.168.2.0 from 0.0.0.0, on dev eth0
Mar 29 09:12:34 pc2kx kernel: [ 1049.745768] ll header: ff:ff:ff:ff:ff:ff:00:00:00:00:fe:01:08:00
Mar 29 09:12:35 pc2kx kernel: [ 1050.499409] martian source 192.168.2.0 from 0.0.0.0, on dev eth0
Mar 29 09:12:35 pc2kx kernel: [ 1050.499429] ll header: ff:ff:ff:ff:ff:ff:00:00:00:00:fe:00:08:00

Quello che precede è quello che mi trovo regolarmente nel file /var/log/messages da un po' di tempo a questa parte della mia macchina Open SuSE 11.2. So che nella rete al quale sono collegato ci possono essere pacchetti poco puliti e poi mi preoccuperò di sollecitare un controllo a chi di dovere. Per il momento non mi preoccupo dell'origine dei pacchetti che generano il log, voglio solo disabilitare la registrazione nel log di sistema, con la frequenza di un paccheto ogni 75 centesimi di secondi il mio log di sistema diventa ingestibile. Dopo un po' di ricerche e la lettura del seguente thread nel forum OpenSUSE ho eseguito il seguente comando:

sysctl -a|grep -i martian | while read L U; do sysctl -w $L=0;done

Adesso non vengono più riportati nel log i pacchetti marziani. Dopo un po' il servizio DHCP client conferma l'indirizzo IP già ottenuto in precedenza e richiama gli script per sistemare le cose necessarie, in pratica non fa niente, solo che rieseguendo lo script di configurazione del firewall reimposta i valori di sysctl appena modificati. Ricorro allora alla modifica del file /etc/sysconfig/network/scripts/dhcpcd-hook, ho aggiunto la seguente funzione:
 
disable_log_martians()
{
        sysctl -a|grep -i martian | while read L U; do sysctl -w $L=0;done
}

e l'ho richiamata con:

disable_log_martians

prima del ;; del case di up) e new) Adesso aspetto, si fa per dire, se cambia di nuovo qualcosa, poi domani al reboot verifico se tutto funziona come sperato.

2012-03-28

Eclipse ed il cut-and-paste

Seguendo un interessante tutorial di un argomento di cui scriverò a breve, ho imparato un comodo modo di utilizzare il copia e incolla in Eclipse.
Se negli appunti, la clipboard, c'è memorizzato il sorgente di una classe sotto forma di testo, in pratica avete selezionato il testo del sorgente dal web oppure da un altro editor, si può incollare nella vista Package Explorer nel progetto di Eclipse nel quale volete inserire tale classe ed Eclipse penserà al resto: vi ritroverete la classe corretta. C'è una distinzione da riconoscere: se incollate nella cartella di tipo source verrà creata la classe rispettando l'eventuale package originario, se invece incollate in un package già esistente Eclipse provvederà a correggere l'istruzione package adattandola al valore corretto.
Se il codice che avete copiato nella clipboard è solo un pezzo di codice Java, quindi non un'intera classe, Eclipse provvederà a creare una classe di nome Snippet contenente un metodo con il codice incollato.

Serie di numeri ottali ed esadecimali in bash

Per ottenere una serie di numeri in uno script si può ricorrere alle caratteristiche di espansione messe a disposizione da bash.
Provate:
echo {1..10}
echo {15..-3}
Oggi ho avuto necessità di ottenere i numeri in notazione ottale da 0000 a 0377 e poi gli stessi valori ma in notazione esadecimale, per ottenerli ho realizzato i seguenti codici per l'espansione:
echo 0{0..3}{0..7}{0..7}
echo {{0..9},{A..F}}{{0..9},{A..F}}
Nel post Sequenze di valori con bash ho trattato più approfonditamente l'argomento delle sequenze di valori.

Scroll contemporaneo di finestre con vim l'editor

Quando si devono consultare e/o modificare due file contemporaneamente con vim si può ricorrere all'opzione -O per aprire in modo affiancato tutti i file passati come parametri. Per passare con il cursore da una finestra all'altra si usa <Ctrl>W W oppure <Ctrl>W <Ctrl>W.
Per impartire a vim l'ordine di scorrere in modo sincronizzato il contenuto di ogni finestra si deve dare il comando:
:set scrollbind
ad ogni finestra del quale si vuole sincronizzare il movimento, si posiziona il cursore nella finestra interessata e si digita il comando.
Se si vuole togliere la sincronizzazione ad una finestra si impartisce:
:set noscrollbind
 

2012-03-21

Ho abbandonato il driver Catalyst

In Arch Linux installato nel tablet Acer Iconia W500  ho rinunciato al driver proprietario Catalyst per la scheda grafica ATI per passare alla versione open source, il motivo non è stato per questione di principi, mi sono reso conto che il ritardo nei rilasci di aggiornamenti non era più accettabile. Avere una distro reattiva come Arch Linux e rimanere indietro con il server Xorg mi sembra veramente inaccettabile.
Ad ogni modo il motivo scatenante è stato la voglia di provare le funzionalità multi-touch della nuova versione di Xinput. Ho provato, però il driver del touch deve avere ancora qualcosa da aggiornare perchè Xorg lo riconosce come multi-touch ma quando deve riconoscerlo la libreria XI2 non risulta multi.
Devo ancora indagare. L'obiettivo finale è quello di convertire la versione multi-touch di Easystroke che ho realizzato in una versione un po' più portabile verso altri driver e altre configurazioni.