2014-10-22

Alt-Shift-Tab che non funziona su Openbox LXDE

Oggi finalmente sono riuscito a scoprire perché non mi funzionava più la combinazione per tornare indietro nello scorrimento delle finestre aperte.
Per scorrere le finestre aperte utilizzo spesso Alt-Tab per passare alla prossima della lista e Alt-Shift-Tab per tornare indietro.

Come ho già espresso in passato preferisco utilizzare la tastiera per impartire la maggior parte dei comandi al mio PC, per passare da un'applicazione ad un'altra uso difficilmente il mouse e spesso le combinazioni di tasti di cui sto scrivendo.
Giorni fa ha smesso di funzionare la combinazione Alt-Shift-Tab e quindi potevo solo andare avanti tra le finestre aperte e ad un certo momento ho deciso che era troppo scomodo, allora la ricerca mi ha riportato a rivedere l'ultima modifica che avevo effettuato alla configurazione di XORG per impostare il layout di tastiera. Aggiungendo il file
/etc/X11/xorg.d/10-keyboard.conf
avevo preso uno snippet trovato in rete e modificato secondo le mie necessità ma non avevo notato che c'era una direttiva di troppo dopo le modifiche:
Option "XkbOptions" "grp:alt_shift_toggle"
Nello snippet che avevo trovato era necessaria per permettere di passare da un layout ad uno alternativo semplicemente premendo la combinazione Alt-Shift essendo presenti due layout differenti.
Ho provveduto a commentare la direttiva incriminata e magicamente posso andare avanti e tornare indietro tra le finestre aperte.

2014-10-14

Il 16 Agosto 2014 ed il particolare orario in Unix / Linux

$ date --date='@1408160542'
Sat Aug 16 05:42:22 CEST 2014
$ date --date='@1408160542' +%y%m%d%H%M
1408160542


In questo orario che ho indicato ho trovato la particolare combinazione per cui il numero dei secondi passati dal 1 Gennaio 1970 ha lo stesso aspetto della data e ora riportati nel formato anno (di due cifre) mese giorno ore e minuti.
L'ho provato con la versione 8.23 del comando date (GNU coreutils), con versioni più recenti non è permesso fornire la data da visualizzare con il formato preceduto da @ ma si può eseguire il comando nel modo inverso:
$ date --date='Sat Aug 16 05:42:22 CEST 2014' +%s
1408160542

2014-09-30

Dizionario on-line da bash con curl

La RFC 2229 descrive il protocollo Internet DICT per permettere l'accesso a dizionari in rete.
Un modo molto semplice per accedere è l'utilizzo del comando curl che supporta tale protocollo.

Un esempio con la parola inglese door che viene tradotta in Italiano in porta o uscio:
curl "dict://dict.org/d:door:fd-eng-ita"
restituisce:
220 pan.alephnull.com dictd 1.12.1/rf on Linux 3.14-1-amd64 <auth.mime> <6051747.13047.1412087461@pan.alephnull.com>
250 ok
150 1 definitions retrieved
151 "door" fd-eng-ita "English-Italian FreeDict Dictionary ver. 0.1.1"
door
 porta; uscio
.
250 ok [d/m/c = 1/0/12; 0.000r 0.000u 0.000s]
221 bye [d/m/c = 0/0/0; 0.000r 0.000u 0.000s]

le righe che iniziano con un numero fanno parte del protocollo ed offrono un utilizzo agevolato per il trattamento automatico:
il 220 corrisponde al messaggio di benvenuto da parte del server che indica i suoi riferimenti e le sue caratteristiche.
il 250 seguito da ok rappresenta la presa in carico della richiesta.
il 150 riporta il numero delle definizioni trovate, se non ce ne fossero il codice sarebbe 552.
Per ogni definizione trovate avremo un 151 con l'indicazione della parola cercata, il codice e la descrizione del dizionario in cui è stata trovata
Di seguito alla riga con codice 151 viene riportato il contenuto della definizione che si conclude con una riga contenente solo un punto "."
Al termine delle definizioni trovate di nuovo un codice 250 con eventuali indicazioni dei tempi impiegati per reperire le informazioni.
Il codice 221 rappresenta i saluti da parte del server per la chiusura della connessione.

Altrettanto interessante può essere l'esecuzione di una richiesta senza specificare il dizionario da usare:
curl "dict://dict.org/d:door"
si ottiene il contenuto della definizione door per il Dizionario Inglese Collaborativo Internazionale che rappresenta il dizionario di default del server dict.org.

Per ottenere la lista dei dizionari disponibili in dict.org eseguire:
curl "dict://dict.org/show:db"
in risposta si ottiene un codice 110 con l'indicazione del numero di dizionari presenti e di seguito la lista indicante il codice e la descrizione di ognuno, termina con la solita riga con un solo punto, poi il 250 e il 221 di saluti.

Nella lista ottenuta vorrei che si notasse:
foldoc "The Free On-line Dictionary of Computing (20 July 2014)"
e trovo doveroso il comando:
curl "dict://dict.org/d:linux:foldoc"

Idea presa da http://www.thegeekstuff.com/2012/04/curl-examples/

2014-09-25

Aggiungere un disco fisico a VirtualBox

N.B. Le operazioni descritte possono essere pericolose, assicuratevi di capire cosa state facendo e non ritenetemi responsabile di eventuali danni ai vostri dati.

Utilizzo molte macchine virtuali e con queste molti dischi a loro volta virtuali che non sono altro che file presenti nel disco della macchina host.
A volte ho bisogno di utilizzare anche i dischi reali dalle macchine virtuali ed in questi casi ricorro al comando:
VBoxManage internalcommands createrawvmdk \
      -filename /percorso/file.vmdk \
      -rawdisk /dev/sdX
Questo comando aggiunge tra i dischi disponibili per le macchine virtuali un disco virtuale che offre l'accesso diretto al disco fisico.
Chiaramente la X che compare nell'ultimo parametro /dev/sdX va sostituita con la lettera del disco desiderato senza aggiungere il numero della partizione; in questo modo VirtualBox permetterà alla macchina virtuale di accedere al disco fisico e vedere tutte le partizioni in esso contenute.

Un uso frequente di questa funzionalità è quello di installazione da macchina virtuale su un disco fisico e solitamente lo effettuo tramite un adattatore USB.

Attenzione: l'utente che esegue il comando e quello che utilizzerà il disco dovrà avere i diritti necessari per poter accedere al disco fisico, quindi dovrà appartenere al corretto gruppo, di solito disk ma si può verificare con il comando:
ls -l /dev/sdX
ricordandosi di sostituire la lettera X con la lettera corrispondente, nell'output del comando il nome del gruppo si trova nel quarto campo, di seguito al nome del proprietario, di solito root e prima della coppia di numeri che rappresenta la periferica.
Per verificare se l'utente appartiene al gruppo richiesto si usa il comando:
id
che fornisce tutti gli identificativi dell'utente, il gruppo di default ed i gruppi di appartenenza. Nel caso in cui non sia presente il nome disk l'amministratore può aggiungerlo con il comando:
usermod -a -G disk <utente>
sostituendo <utente> con il nome dell'utente che vuole ottenere l'accesso.

2014-09-15

Lubit cresce e consuma sempre poco

Lubit, attualmente alla versione 3, si conferma come ottima soluzione per l'installazione di Linux su PC con poche risorse.

L'immagine che segue ne è la prova:


Il limitato impegno di risorse in termini di memoria e di CPU ne fanno una distribuzione ideale per il recupero di vecchio hardware reperibile nelle proprie soffitte oppure dalle aziende che dismettono PC non più utilizzabili per usi professionali con i software proprietari disponibili sul mercato. Proprio i PC dismessi dalle aziende potrebbero essere riutilizzati nelle aziende stesse, anche se di solito si trova terreno poco fertile in questa direzione; ancora di più potrebbero essere utilizzati in scuole oppure associazioni in cui le disponibilità economiche sono sempre ridotte all'osso.

Inoltre trovo utili le guide nel sito del progetto, se proprio non vorrete installare Lubit potranno comunque risultare utili anche in altre distribuzioni. Di documentazione sui software liberi se ne trova sempre tanta ma la qualità di queste guide mette in evidenza le capacità e gli obiettivi del team.

Finora ho provato Lubit 3 solo installata in macchine virtuali ma a breve dovrò riutilizzare dei vecchi PC e penso che sarà la scelta che adotterò. Non mancherò di aggiornare il blog con le impressioni che ne deriveranno.

Intanto i complimenti e gli auguri di buon lavoro al team di Lubit.

2014-07-07

Creare una scorciatoia / shortcut per lanciare una sessione di PUTTY

Dalla macchina con sistema proprietario da me sopportato (non è un errore di digitazione, lo sopporto), utilizzo PUTTY per le connessioni verso le piattaforme da me preferite.
Lo trovo veramente funzionale e comodo in quasi tutte le sue caratteristiche.
Quello che trovo poco comodo è la scelta della sessione da aprire che tra l'altro è la parte di interfaccia utente più utilizzata.
Per questo ho fatto ricorso alla creazione di shortcut che posso posizionare sul desktop oppure nei menu di avvio delle applicazioni.
Per fare questo ho creato un collegamento (link) verso l'eseguibile Putty.exe, ho spostato il collegamento nella directory riconosciuta dal menu, ho rinominato il collegamento con il nome che ho scelto, ho aperto le sue proprietà ed ho modificato il valore del campo Destinazione (Target) aggiungendo "-load" "<Nome della sessione>" dove chiaramente al posto di <Nome della sessione> va posto il nome della sessione come configurato in Putty.
Adesso sono in condizione di aprire velocemente una nuova sessione verso i nodi remoti.

2014-06-16

Verifica in bash se una variabile è numerica

Oggi una mia necessità era di verificare se una variabile era di tipo numerico ed il valore maggiore o uguale a zero.
Dopo qualche tentativo sono arrivato alla conclusione che il mio modo preferito di eseguire la verifica era:
A=X
B=5
[ $A -ge 0 ] 2>/dev/null && echo Numerico
[ $B -ge 0 ] 2>/dev/null && echo Numerico
l'aggiunta di "2>/dev/null" permette di non ottenere il messaggio di errore "-bash: [: A: integer expression expected"
Il numero deve essere positivo oppure zero, se si vogliono verificare anche i numeri negativi l'allungo un pochino:
[ $A -ge 0 -o $A -le 0 ] 2>/dev/null && echo Numerico
Per una prova più ampia:
for VAR in 0 1 2 3 4 5 50 100 1000 -1 -2 -5 -50 -100 -100 A C 2A 10X X1 X5
do
[ $VAR -ge 0 -o $VAR -le 0 ] 2>/dev/null && echo $VAR num || echo $VAR NON num
done
Il funzionamento si basa sul comando built-in [ della bash  che implementa il comando test di unix, restituisce un valore di ritorno vero/true solo se la condizione è valida e corretta, quindi confrontando numericamente con l'operatore -ge il valore della variabile rispetto allo zero per verificare se è maggiore o uguale si ottiene vero solo se il contenuto della variabile è un numero valido, altrimenti si ottiene falso. Se il contenuto della variabile non fosse un numero valido allora si otterrebbe il messaggio di errore che possiamo sopprimere con 2>/dev/null che lo redirige verso la device virtuale che distrugge tutto quello che riceve, come se fosse un buco nero.

2014-01-19

Vai di servo

Ho deciso di iniziare a provare qualche cosa con Arduino.
Con un servo VS-2 messomi a disposizione faccio le prime prove.
Con l'occasione dedico un po' di tempo per stabilizzare il mio ultrabook, purtroppo con un sistema operativo proprietario arrivato alla versione 8, con l'ambiente funzionante per Arduino.
Qualche minuto per l'installazione dell'ambiente che sfrutto per cercare qualche informazione in rete sul servo VS-2 di Vigo http://www.vigorprecision.com.hk e trovo il datasheet per ora non ci faccio tanto ma almeno so che c'è.

Poi si parte con gli esempi disponibili e vado verso quello presente in File / Esempi / Knob e guardando il sorgente vedo che si tratta di un servo comandato da un potenziometro, in base a come viene ruotato il potenziometro ruota il servo.
Non ho voglia di collegare un potenziometro, a volte sono proprio pigro, allora guardo quello presente in File / Esempi / Sweep e penso che faccia di più al caso mio, serve solo il servo (notare il gioco di parole).
Collego con un cavetto il contatto rosso del servo al 5v di Arduino, il nero al Gnd di Arduino e quello arancione al pin 9 di Arduino.
Collego il mio Arduino Duemilanove al PC, parte il riconoscimento dell'hardware, ci mette qualche secondo di troppo secondo i miei gusti.
Avvio il software di Arduino ed imposto il tipo di scheda, appunto Arduino Duemilanove w/ ATMega328 e seleziono la porta come COM3 (l'unica che mi mette a disposizione).
Cliccando sulla freccia nel cerchio (Carica) viene compilato lo sketch e se non ci sono errori viene caricato nella memoria dell'Arduino tramite il cavo USB.
Il programma di esempio funziona perfettamente, il servo, dopo un breve veloce posizionamento, inizia a "spazzolare" tutti i 180° possibili.
Nel video ho filmato dal momento della compilazione al momento in cui inizia a girare il programma.