2016-10-24

Calcolare la somma delle dimensioni in byte dei file di una directory

Trattando l'output del comando ls -l con cut e sed si può ottenere la somma delle dimensioni con questo "semplice" comando:
echo $(($(ls -l | sed -e "s/ \+/ /g" | cut -d" " -f5 | paste -s -d+)))
Analizzando il comando si può notare:
  • ls -l per ottenere le informazioni dei file della directory corrente
  • sed per ridurre gli spazio in eccesso tra una colonna e la seguente
  • cut per ottenere solo la quinta colonna impostando lo spazio come separatore
  • paste per unire tutte le linee ottenute in un unica linea separando i valori con un segno +
  • $(.....) per utilizzare l'output dei comandi al suo interno come se fosse un comando
  • $((.....)) per valutare il contenuto come un'espressione aritmetica

Come al solito è uno dei modi per ottenere un risultato, quindi ce ne possono essere tanti altri anche migliori e più performanti.

sed - ridurre una serie di spazi ad uno solo

Quando il contenuto di un file o l'output di un comando ha il testo formattato con spazi in colonne potrebbero esserci un numero indefinito di spazi tra una colonna e la successiva. In questo caso una delle soluzioni per permettere al comando cut di "pescare" una determinata colonna può essere quella di ridurre una serie di spazi in uno solo e con l'opzione -d" " imporre a cut di riconoscere le colonne separate da un solo spazio; per fare ciò con sed si può usare questo comando:
sed -e "s/ \+/ /g"
ad esempio per ridurre gli spazio dell'output del comando ls -l:
ls -l | sed -e "s/ \+/ /g"

2015-07-16

Whatsapp sul PC

Finalmente posso digitare comodamente dalla tastiera del mio PC i messaggi su Whatsapp.
Ho la versione 2.12.176 di Whatsapp per Android ed ho una voce in più nel menu:
WhatsApp Web
Con questa voce di menu si può leggere un QR-Code che abilita l'accesso a WhatsApp dal PC.
Io ho provato con il mio fido Firefox (rigorosamente su Arch Linux) ad aprire l'indirizzo:
http://web.whatsapp.com/
ed ho ottenuto una pagina la cui componente fondamentale è il QR-Code da inquadrare con il telefono una volta selezionata la voce di menu WhatsApp Web dal menu di WhatsApp.
Una volta letto il QR-Code si sono aperte le mie chat più recenti ed ho avuto la possibilità di scrivere comodamente dal mio PC (devo ammettere che preferisco la tastiera al touch).
Il vincolo da rispettare è che il cellulare deve rimanere connesso ad Internet, altrimenti non sarà possibile utilizzare l'accesso da Web.

2015-01-09

App Android per le tabelline

Mi ricordo che quando ero bambino non mi è piaciuto per niente studiare le tabelline.
Adesso che ho un figlio alle prese con le stesse tabelline ho ritenuto necessario realizzare un app per Android da usare con un cellulare per esercitarsi con le prime semplici moltiplicazioni.

La prima pubblicazione l'ho effettuata a Maggio 2014 ma la prima versione utilizzabile ritengo che sia quella che ho pubblicato all'inizio del 2015.
Dal punto di vista grafico è un'applicazione scarna, come tutte le mie realizzazioni, ma almeno penso che sia comoda da usare e spero che anche per altri possa essere uno strumento comodo per studiare quasi giocando.

L'interfaccia si presenta con l'operazione da svolgere in basso a sinistra con il risultato che all'inizio sarà 0 (zero), le cifre presenti in due colonne permettono di impostare il risultato toccando la corretta cifra blu per indicare l'unità e l'eventuale cifra rossa per la decina, per confermare il risultato sarà sufficiente toccarlo. Sarà possibile correggere il risultato quante volte si vuole prima di toccarlo per la conferma.

Nella zona in alto a sinistra vengono visualizzate le operazioni con i risultati inseriti ed in caso di errore verrà visualizzata una coppia di punti esclamativi.
Poco sotto la lista verrà aggiornato il punteggio con il numero di risposte corrette sul totale delle operazioni effettuate.

L'ultima versione permette di selezionare in modo, forse poco intuitivo, quali tabelline studiare; il tasto Seleziona permette di disabilitare uno o più cifre nelle due colonne tenendo a mente che la colonna di sinistra, con le cifre rosse rappresenta il primo fattore della moltiplicazione e la colonna di sinistra, con le cifre blu rappresenta il secondo fattore. Al termine, il tasto che è diventato Conferma permetterà di riprendere l'esercizio solo con le tabelline selezionate.

Link nel Play Store

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.

2013-12-13

Appunti per sviluppo su Android

Se siete capitati su questo post chiarisco che si tratta del mio blocco degli appunti per lo sviluppo di applicazioni Android, un po' un punto di riferimento per i concetti che spesso non mi ricordo, quindi ci saranno alcune note con poche spiegazioni ma se doveste avere necessità di approfondimenti non esitate a scrivere, potrebbe fare da spunto per nuovi post.


Per non far spegnere il video in onResume preso da getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) e FLAG_KEEP_SCREEN_OFF in onPause


Lifecycle dell'applicazione preso da
OS -> {Created -> [Started -> (Resumed -> Paused) -> Stoped] -> Destroyed -> Created -> [Started -> (Resumed -> Paused) -> Stoped] -> Destroyed}


Partenza al boot
        <receiver android:name="MyStartServiceReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

2013-12-04

Doppia console su Eclipse

Utilizzando spesso Eclipse e trovandomi a sviluppare software di comunicazione ho bisogno a volte di consultare contemporaneamente due output di esecuzione di programmi.
Per consultare l'output di esecuzione dei programmi Eclipse mette a disposizione la view Console che di solito si posiziona nello spazio in basso.
Normalmente se si eseguono due programmi gli output di esecuzione vengono visualizzati uno alla volta nella stessa view Console con la possibilità di alternare la visualizzazione.
Se però l'alternanza della visualizzazione risultasse scomoda si può ricorrere ad una funzionalità non del tutto immediata per aprire una nuova view Console in un altro spazio della finestra.
Nella toolbar della view Console c'è un'icona con rappresentata una finestra con un + sovrimpresso, di fianco all'icona c'è un triangolino nero
 che permette di scegliere quale tipo di console visualizzare e tra questi tipi c'è la voce "New Console View" che permette di aggiungere una view Console che si può poi posizionare dove si desidera.

2013-11-01

Finalmente Nexus 5 acquistabile anche in Italia

Google ha deciso di vendere anche in Italia il Nexus 5 che si affianca al già presente Nexus 7 nello store on-line.
Sarà equipaggiato con Android 4.4 (nome in codice KitKat)
I prezzi sono 349 Euro per il modello a 16GB e 399 Euro per il modello a 32GB.
I tempi di spedizione dichiarati sono di 2-3 settimane.
Per tutte le altre informazioni andate sul sito Google Play alla pagina dedicata.

2013-09-19

TouchPal X - tastiera per Android

Con il mio nuovo cellulare ho iniziato ad esplorare qualche nuova tastiera e mi ha particolarmente colpito la TouchPal X con funzione swipe che reagisce molto bene al mio discutibile modo di scrivere.
In aggiunta ha la possibilità di abilitare la predizione delle parole seguenti che si possono scegliere tra quelle proposte trascinandole verso la barra spaziatrice.
L'italiano è completamente supportato e permette anche di abilitare più lingue contemporaneamente.

2013-09-18

Cellulare Acer Liquid Z3

Acer ha annunciato a Luglio 2013 che nella seconda metà di Agosto avrebbe messo in commercio il modello di cellulare Liquid Z3 al prezzo di 99 €, appena sotto la soglia psicologica dei 100 €.
Le caratteristiche annunciate me lo hanno reso interessante e solo la settimana scorsa sono riuscito ad averlo tramite il sito http://www.expansys.it/.
Sono alcuni giorni che lo utilizzo e mi convinco sempre di più di aver acquistato un buon cellulare.
Riassumo le caratteristiche particolari:
Android: 4.2.2
CPU: dual core 1GHz
Memoria RAM: 512MB
Doppia SIM
Risoluzione video: 320x480
Risoluzione fotocamera: 3MP
Possibilità di inserire scheda SD di memoria fino a 32GB

Ha sostituito benissimo il mio precedente cellulare HTC Magic, le dimensioni sono molto simili ma è più leggero.

 Driver per Windows(tm) disponibili all'indirizzo: http://www.acer.it/ac/it/IT/content/drivers selezionando i seguenti dati:
Famiglia prodotti: Smartphones
Serie: Z Series
Prodotti: Z130
Con questi driver il cellulare è collegabile all'utility ADB.

2013-09-05

bash e la pagina di manuale del comando precedente

Mi capita spesso di impartire un comando errato dovuto ad un'opzione errata che mi costringe a consultare la pagina del manuale del comando, quando il nome del comando è breve faccio prima a digitarlo come parametro per il comando man.
Quando il nome del comando è lungo e non trovo a disposizione le configurazioni di "completion" per completare con TAB il nome del comando, ricorro alla sostituzione con history:
man !!:0
questo mi permette di passare a man il parametro 0 (il nome dell'eseguibile) dell'ultimo comando impartito.
Spero che possa risultare utile anche a qualche altro smemorato, buona digitazione! (poca)

2013-06-13

Registrare il desktop in Linux

A tutte le varie alternative, dotate anche di belle interfacce grafiche, preferisco la linea di comando per attivare la registrazione dello schermo.
Serve l pacchetto che offre il comando ffmpeg, per Arch Linux il pacchetto ha lo stesso nome ed attualmente è alla versione 1:1.2.1-1, per le altre non ho indagato ma non sarà difficile trovare il corrispondente.
ffmpeg come riporta nella prima riga la pagina del manuale (man ffmpeg) è un convertitore di video ed in effetti quello che ci serve è convertire quello che viene visualizzato nel nostro desktop in un file video.

2013-06-03

App per Android con il programma di Umbria Jazz©

Anche quest'anno ho aggiornato la mia app per la consultazione off-line del programma di Umbria Jazz 2013.

Sono affezionato alla manifestazione perché risalta il fascino di cui è dotata la mia città di nascita; nei miei anni di gioventù l'ho ignorata ed in alcuni casi ne ero infastidito ma dal 1999 ho iniziato a comprenderla ed apprezzarla.
Quando nel 2011 mi sono accorto che non c'era un'applicazione per Android mi sono sentito quasi in obbligo di provarci in prima persona e mi sono buttato, in due giorni è uscita la prima versione, nel 2012 ho rivisto un po' l'estetica e quest'anno ho solo aggiornato il programma della manifestazione.
Quest'anno pensavo che sarebbe uscita anche la versione ufficiale visto che per iPhone e iPad sono disponibili e citate nel sito ufficiale della manifestazione; di fianco al link di App Store di Apple è presente l'immagine del Google Play ma non è un link e cercando tra quelle disponibili trovo ancora solo la mia.
La mia espressione grafica ha raggiunto il top in questa occasione e questo dovrebbe chiarire quanto scarse siano le mie capacità da quel lato inoltre ho cercato di limitare l'uso di logo e immagini ufficiali non avendo ricevuto permessi di alcun genere da parte dell'organizzazione.

A questo indirizzo del Google Play è possibile scaricarla gratuitamente.