2012-12-07

bash e l'aggiornamento delle dimensioni del terminale

Come ho forse accennato in post passati, utilizzo LXDE come desktop environment e bash come interprete di comandi, il tutto dentro varie linux-box con Arch Linux.
Mi capita spesso di aprire una finestra di terminale, attualmente LXTerminal, e lavorare a linea di comando con grande utilizzo delle funzioni di recupero dei comandi precedenti.
A volte, utilizzando Ctrl-R oppure con la freccia verso l'alto per ricercare un comando precedente, mi è capitato che i caratteri venissero disposti male nella riga di comando in modo da rendere impossibile correggere e avere la certezza di sottomettere il comando corretto.
Ho scoperto che non succede sempre, solo quando ho ridimensionato la finestra del terminale, ma non sempre, sapevo che le variabili COLUMNS e LINES contengono le dimensioni in caratteri della finestra di terminale e che vengono aggiornate al momento del ridimensionamento della finestra stessa ed in condizioni normali vengono aggiornate correttamente.
Capita però a volte che non si aggiornino ed ho verificato che non si aggiornano quando la finestra viene ridimensionata durante l'esecuzione di un programma, che sia esso vim, less o qualsiasi altro programma attivo al momento del resize, anche un semplice sleep o una compilazione.
La causa del mancato aggiornamento delle variabili è dovuta al fatto che il programma LXTerminal o similare, manda un segnale SIGWINCH sotto forma di kill al processo attivo al momento del ridimensionamento e non alla shell.
Per ripristinare i corretti valori delle variabili COLUMNS e LINES si può ricorrere a due metodi:
- ridimensionare la finestra nel momento in cui il controllo è tornato alla bash
- mandare il kill corretto alla shell con il comando:
kill -SIGWINCH $$
Per provare eseguire le seguenti operazioni:
- da bash su terminale grafico eseguire e prendere nota dei valori ottenuti con il comando:
echo $COLUMNS $LINES
- eseguire il comando:
sleep 10
- ridimensionare la finestra entro i dieci secondi, prima della ricomparsa del prompt
- rieseguire il comando precedente e se tutto va come ho descritto i valori dovrebbero essere invariati
- eseguire il ridimensionamento oppure il comando:
kill -SIGWINCH $$
- esaminare di nuovo i valori delle variabili che dovrebbero essere aggiornate, sempre che tutto funzioni come ho descritto

AGGIORNAMENTO
senza ricorrere al kill, quandi si è di nuovo al prompt, si può anche ridimensionare di nuovo la finestra, anche di poco. e le variabili vengono reimpostate

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.

Impressioni di utilizzo di Volunia

Qualche giorno fa sono stato selezionato come "power user" di Volunia, la cosa mi aveva attirato ed ho provato a cercare di capire cosa potesse offrirmi un sistema che si presenta come un nuovo metodo per accedere ad Internet ed ai siti che formano Internet.
Le prime prove non mi hanno convinto molto sul fatto che offra soluzioni che migliorino di molto la ricerca e la fruizione dei contenuti disponibili.
Devo riconoscere che non mi sento molto "social" e l'opportunità di leggere i commenti lasciati da altri utenti o lasciarne di miei nei siti che consulto mi sembra inutile o almeno poco fruibile.
Avere a disposizione la mappa del sito nella modalità proposta da Volunia lo trovo simpatico, ma oltre la simpatia non riesco a trovare ancora un'utilità particolare del modo rivoluzionario di navigazione. Non escludo che non sia riuscito ad interpretare correttamente il miglior modo di utilizzo e per questo non demordo e proverò ancora.

Go Keyboard - tastiera per Android

Ci sono di nuovo, sto per cambiare la tastiera virtuale del mio cellulare Android. Dopo averne provate un bel numero, penso di averne trovata una degna di nota, si tratta di
 Go Keyboard
E' una tastiera con molti linguaggi disponibili, a me servono al massimo l'italiano e l'inglese, ha un buon sistema di suggerimento delle parole e diversi layout da poter installare.
Alle prime prove di digitazione mi sono trovato bene e sono diminuiti gli errori di digitazione dovuti a errate interpretazione dei miei tocchi o miei errori di tocco.
Infine ecco il link per il download nel Market, ops...in Google Play.

2012-02-16

Selezionato come Power User di Volunia

Oggi ho ricevuto l'e-mail di comunicazione di essere stato selezionato come Power User per Volunia.

Ho completato la registrazione ed ora devo attendere un ulteriore messaggio di abilitazione.
Quando avverrà proverò ad utilizzarlo e vedremo se avrà vinto l'entusiasmo di provare qualcosa di nuovo o lo scetticismo di non credere che in Italia si possa realizzare qualcosa di veramente innovativo, adesso si alternano i due sentimenti, staremo a vedere.

2012-02-10

La nuova veste di Twitter

Sorpresa!
Oggi ho scoperto la nuova disposizione degli elementi nell'interfaccia di Twitter e mi sono subito trovato bene.


Selezionando l'ultimo tweet ricevuto, quando si riceve uno o più nuovi tweet, questi vegono riquadrati, ciò permette di riconoscere in modo più evidente quali sono gli ultimi, nella versione precedente era presente una riga di separazione leggermente più marcata che secondo me non saltava sufficientemente all'occhio.

Ho apprezzato molto la possibilità di aprire i dettagli di più di un tweet con l'effetto espansione piuttosto che la visualizzazione nella parte destra della pagina.

Altra cosa, di minore importanza, ma per me interessante è stato lo spostamento del campo per scrivere un nuovo tweet, spostandolo a sinistra, sotto il riassunto del proprio profilo, mi permette di non sbagliare e tweet-tare il testo di una ricerca.

Ottimo lavoro Twitter!

2012-01-21

Perso il touch su Iconia Tab W500 con ArchLinux

L'aggiornamento del kernel alla versione 3.2.1 ha disattivato il driver touch del mio ottimo tablet.

Indagando sul forum di ArchLinux ho trovato del movimento originato dall'ottimo utente Padfoot che sta provvedendo a generare un nuovo driver da installare per ripristinare il funzionamento.

Questo problema coincide con l'introduzione delle funzionalità di multi-touch nel kernel. Per ora le indicazioni di Padfoot non mi hanno portato alla soluzione, penso di aver installato qualche cosa che rende la sua installazione differente rispetto alla sua, infatti quando lui ha provato la mia versione modificata di EasyStroke non è riuscito a farla funzionare.

Quando avrò tempo dedicherò qualche ora alla configurazione corretta del tutto e spero di poter aggiornare il blog a tal proposito.

Aggiunta del 23 Gennaio, ore 23:00

Prima del previsto ho avuto modo di leggere meglio il forum all'indirizzo https://bbs.archlinux.org/viewtopic.php?id=133851 e, dopo vari tentativi senza buoni risultati ho rimosso la mia convinzione che ci fosse nelle istruzioni un errore di digitazione ed ho modificato il numero 5 con il numero 3, pensavo che il 5 si riferisse al numero del bus USB, invece evidentemente si riferisce al codice del bus per indicare USB. Quindi effettuata la correzione il tutto è tornato a funzionare dopo il reboot. Quasi tutto perché avevo saltato il passo in cui va definito l'orientamento del touch.

Riassumo:
Con l'upgrade del kernel alla versione 3.2.1 alcuni dispositivi multitouch (tra i quali il mio eGalaxTouch , con lsusb: 0eef:7302 D-WAV Scientific Co., Ltd) hanno smesso di funzionare perché i vecchi driverr non sono aderenti alla nuova gestione del multitouch previsto (finalmente) dal kernel Linux.
Nel file /etc/rc.local aggiungere:

echo 3 0eef 725e 259 > /sys/module/hid_multitouch/drivers/hid\:hid-multitouch/new_id
/usr/bin/eGTouchd
nel file /etc/rc.conf nella lista di moduli da caricare aggiungere hid-multitouch
MODULES=(hid-multitouch ... ...)
dove i puntini rappresentano gli eventuali altri moduli già presenti.
Nel file /etc/eGTouchd.ini alla riga 8 indicativamente modificare il valore 0 per il parametro Orientation con il valore 2.
Reboot e spero che funzioni anche a voi.
Nota negativa: non mi funziona più EasyStroke con le modifiche multitouch, ci dovrò lavorare di nuovo sopra per adattarlo alle nuove funzionalità.

2012-01-10

Cosa fare e cosa non fare con Twitter

Mi ritrovo ad affrontare l'argomento Twitter, mi è capitato di parlare con persone che hanno affermato di non apprezzarlo perché non ne hanno compreso il senso e l'utilità.
Devo ammettere che ho avuto "grandi" difficoltà inizialmente e forse qualcuna ne ho ancora adesso ma penso che scriverne mi può aiutare, un po' come una seduta dallo psicologo.

Ritengo che Twitter sia un buon banco di prova per la propria capacità di sintesi, 140 caratteri sono pochi ma sufficienti per esprimere un concetto, se inoltre quel concetto è interessante può attirare l'attenzione di tanti. A tal proposito posso affermare che la mia capacità di sintesi è scarsa.

In Twitter si può essere fornitore di contenuti, fruitore di contenuti ed entrambi, al momento della registrazione si diventa automaticamente fornitore e fruitore e lo si rimarrà fino alla fine, solo il proprio comportamento determinerà quale dei due ruoli prevarrà. Produci contenuto quando invii un tweet (cinguettìo), quel contenuto sarà automaticamente pubblico e non sarà altro che pubblico, chi ti segue lo vedrà automaticamente nella sua bacheca (home), ma anche chi ti avrà aggiunto in una lista lo vedrà quando accederà a quella lista.
Il tuo tweet può essere consultato anche se rientra nelle caratteristiche di una ricerca effettuata fornendo alcune parole che sono presenti nel tweet.
Se inserisci una parola preceduta da # quella parola (hashtag) indicherà un particolare argomento trattato nel tweet, le ricerche sono spesso effettuate in base ad un argomento, per questo la piattaforma evidenzia le parole che iniziano con # come dei link il quale click conduce alla ricerca di tutti i tweet che lo contengono. Chi non ti segue può vedere un tuo tweet se lo hai citato (indicato il suo nick nel testo del tweet con il carattere @, menzione).

Un tweet può essere inviato in risposta ad un tweet precedente, nel testo comparirà in automatico il nick dell'utente al quale rispondi, sempre preceduto da @. A volte si leggono tweet che sembrano senza senso ma in realtà diventano comprensibili se letti in catena con altri di cui sono la risposta, per questo cliccando sul testo del tweet viene visualizzata sulla destra l'eventuale catena di tweet che precede e segue il tweet.

Si può ripetere un tweet di altri con la funzione retweet, in quel caso chiunque legga i tuoi tweet leggerà anche quello con l'indicazione di chi lo ha inviato in origine.

Quando inizi a seguire un utente, questi viene avvisato ed inizi a comparire nell'elenco di persone che lo seguono e lui viene inserito nella lista di quelli che segui, ugualmente se qualcuno inizia a seguirti vieni avvisato.

Dopo aver riassunto le funzioni di base è necessario passare ai comportamenti da evitare:
  • non seguire qualcuno al solo scopo di farsi seguire
  • non smettere di seguire qualcuno che ha iniziato a seguirti perché lo hai fatto tu per primo
  • non esagerare con gli hashtag, rischi di essere sospeso
  • non esagerare con le citazioni
  • non retweet-tare se non lo ritieni veramente interessante, rischi di creare spam per chi ti segue e potrebbe smettere di seguirti
  • non chiedere di essere seguito, non ti fa onore, chiederesti l'elemosina?
  • non chiedere di essere retweet-tato, ci farai una brutta figura, il retweet conterrà la tua richiesta e difficilmente sarà elegante
  • non inviare troppi link nei tweet o troppi tweet con link
Per tutti gli altri comportamenti da evitare fare riferimento al buon senso, alla propria educazione ed alle regole indicate nelle pagine di Twitter all'indirizzo: http://support.twitter.com/groups/31-twitter-basics#topic_114 il rispetto di tali regole vi permetterà anche di non essere sospesi oppure addirittura radiati.
Infine posso rilanciare verso un blog in cui viene descritto in 10 mosse, meglio di come posso aver fatto io, l'utilizzo di Twitter.