2011-06-29

Sequenze di comandi con la shell

Da sempre la shell Unix ha permesso di impartire sequenze di comandi che avessero qualche correlazione tra di loro, le correlazioni sono molteplici e proverò con questo post a descriverle.
Il primo modo per impartire una serie di comandi è di digitare i comandi uno di seguito all'altro terminando ognuno con ENTER, con la shell interattiva il comando successivo viene eseguito al termine del comando precedente ma non prima di aver premuto il tasto ENTER che lo sottomette. Per evitare il tempo di attesa tra la fine del primo comando e la pressione del tasto ENTER per il successivo si può iniziare a digitare il comando anche prima della comparsa del prompt da parte della shell ma non sempre si riesce ad essere sufficientemente veloci; a tal proposito si possono digitare i comandi separati da punto e virgola ( ; ) e premere ENTER solo alla fine dell'ultimo. In questo modo i comandi verranno eseguiti uno di seguito all'altro senza attese. Esempio per consultare l'orario prima e dopo l'esecuzione di una copia di directory:
date ; cp -a src_dir dst_dir ; date
L'esecuzione dei comandi successivi può essere condizionata in base all'esito del precedente: separando con && due comandi si condiziona l'esecuzione del secondo in base all'esito del primo, se il primo si conclude positivamente allora viene eseguito anche il secondo. Ricordo che per esito positivo si intende che l'exit code del programma deve essere 0 ( zero ), l'exit code di un programma può essere verificato con la shell utilizzando la variabile predefinita $? . La sequenza di comandi può essere lunga a piacere. Esempio di comando condizionato dal precedente, se la compilazione si completa positivamente si può eseguire il programma:
cc -o prova prova.c && ./prova

Il condizionamento di esecuzione può essere anche invertito con || in modo tale da eseguire il secondo solo se il primo è fallito ( quindi exit code diverso da zero ). Esempio di comando alternativo eseguendo telnet se ssh fallisce, si sa che è preferibile ssh a telnet ma in sua assenza...:
ssh server || telnet ssh
I programmi possono essere eseguiti anche contemporaneamente separandoli con & che permette di eseguire il secondo appena iniziata l'esecuzione del primo, senza attenderne la fine. Esempio di esecuzione contemporanea di cancellazione di un file grande e la copia di un altro:
rm /tmp/grande_file & cp /tmp/altro_file /altrove/altro_file
Terminando con & l'ultimo ( o l'unico ) comando si ottiene di nuovo il prompt appena avviato il comando in modo da poter interagire subito di nuovo con la shell.
Un altro modo molto utilizzato per definire una sequenza di comandi è quello che redirige l'output ( che normalmente finirebbe sullo schermo ) come input ( normalmente la tastiera ) del comando seguente, per fare ciò si separano i due comandi con | ed i due programmi verranno eseguiti contemporaneamente con il sistema operativo che passa i dati in uscita dal primo nell'ingresso del secondo. Esempio di calcolo di occupazione di spazio su disco dei file o directory in ordine crescente di occupazione:
du -s * | sort -n

2011-06-23

Correzione comando precedente in bash

Nel post precedente Esecuzione del comando precedente con sudo in bash ho esposto un tipo di utilizzo della history delle shell con particolari riferimenti a bash, la tecnica esposta utilizza la scorciatoia !! che corrisponde al comando precedente.

Questa volta il comando precedente andrà modificato per essere eseguito con qualche correzione, il caso più frequente che mi si presenta è quello in cui devo verificare il contenuto di un tarball ( un archivio in formato tar di solito compresso con gzip o bzip2 ) e poi estrarne il contenuto.

2011-06-22

Android e Arduino nello spazio

Android e Arduino sono partiti!
al link:
http://blog.makezine.com/archive/2010/07/nexus-onearduino-smallsat-satellite.html potete assistere ad un video realizzato con un "googlefonino" lanciato con un razzo a 28.000 piedi di altezza.
Video davvero da non perdere!

Grazie al mio amico Gianni per la dritta

2011-06-18

Linux PC in browser

Un bellissimo esempio di utilizzo di JavaScript, Bellard é l'autore come é autore di ffmpeg e altri progetti di notevole rilievo.
In una pagina WEB, tramite codice JavaScript ha realizzato un emulatore di architettura x86 e in questo emulatore viene caricato un Linux minimale ma perfettamente funzionante e ad una velocità decorosa.



2011-06-16

Codici a barre EAN-13 e EAN-8 con HTML CSS e font TrueType

Nel precedente post Barcode, EAN-13, EAN-8, Font TrueType, OpenOffice ho trattato la generazione di codici a barre di tipo EAN-13 ed EAN-8 sulla base di un foglio di calcolo OpenOffice pubblicato nel suo blog da Matteo Moro, che colgo l'occasione per ringraziare di nuovo. Questa volta voglio proporre una soluzione alternativa per utilizzare lo stesso font utilizzato in precedenza, voglio passare per HTML e CSS, per quanto riguarda la generazione dei caratteri rimando all'analisi delle formule presenti nel foglio di calcolo del post precedente, per il mio utilizzo specifico la necessità é stata quella di generare da un programma in Visual C++ il codici HTML che utilizzi un foglio di stile che faccia diventare le stringhe generate in codici a barre.

Arch Linux e Lxde

Dietro consiglio del mio amico Roberto mi ritrovo da qualche giorno impegnato a provare la distribuzione Arch Linux.
Quello che mi ha entusiasmato prima di provarla è stato il fatto di essere una Rolling Release, ovvero è la stessa versione in continuo sviluppo, un po' come con Debian quando scegli unstable, testing o stable, non ne posso più di dover passare a nuova versione per mantenere aggiornati i programmi che utilizzo.

2011-06-15

Firefox: ricerca veloce di un link

Navigando in Internet capita di accedere a siti molto ricchi di collegamenti, anche se ben disegnati possono presentare difficoltà di individuazione del link necessario all'utente.
A volte mi capita di accedere a servizi presenti in portali che, giustamente, hanno lunghe serie di link per indirizzare verso la sezione corretta, se la frequenza con cui si accede al servizio non ci consente di ricordare immediatamente il posizionamento del link siamo costretti a leggerli tutti. Con Firefox ho trovato un aiuto importante con il comando di ricerca orientato ai link rappresentati da testo.
Il normale comando di ricerca è CTRL-F ma cercando una parola, ad esempio "foto" in un portale si verrà posizionati in ogni posizione in cui una parola contiene quei caratteri ma se dobbiamo cercare il link per la stampa di fotografie non ci aiuta tanto.
Si può ricorrere allora al comando ' ( lo so, sembra strano ma il comando consiste nel carattere di apice singolo, quello che nella tastiera italiana si trova nello stesso tasto del punto interrogativo ), si digita il testo da ricercare e durante la digitazione viene selezionato il primo link che contiene il testo, quando il link selezionato è quello cercato è sufficiente premere INVIO per andare alla pagina corrispondente.
Questo comando lo utilizzo spesso anche quando devo eseguire ripetutamente alcuni passaggi tra pagine, ad esempio in applicazioni WEB-based.

2011-06-14

Chiavetta K3806-Z Vodafone (ZTE) OpenSUSE 11.2 e usb_modeswitch

Dopo molti utilizzi della chiavetta in oggetto mi sono deciso a ridurre il tempo di attesa della disponibilità della modalità modem, circa due minuti dall'inserimento.
Nel mio post precedente ho descritto il modo per configurare correttamente la chiavetta ed ho accennato al problema della doppia personalità di cui "soffrono" questo tipo di chiavette: per essere installate nel sistema operativo più diffuso si mostrano inizialmente come un CD-ROM per permettere all'utente di installare il software, dal secondo utilizzo in poi il software stesso si impegna a cambiare la modalità di funzionamento. Purtroppo noi utilizzatori del sistema meno diffuso e quindi meno appetibile dai produttori di hardware dobbiamo adeguarci e trovare sempre delle vie più complesse.
Il pacchetto usb_modeswitch ha il compito di inviare ai dispositivi USB il comando necessario per passare da una modalità all'altra.
La mia OpenSUSE 11.2 non ha più un grande aggiornamento dei pacchetti e per portare ad una versione sufficientemente nuova ho deciso di passare per rpmfind.net. Ho cercato il pacchetto usb_modeswitch e ne ho scaricato la versione per la 11.3 sperando che non avesse dipendenze particolari da mettermi in difficoltà, così è stato ed ho disinstallato la precedente versione si usb_modeswitch fornita con la 11.2 ed installato i nuovi pacchetti. Ho detto i nuovi perchè il pacchetto usb_modeswitch dipende da usb_modeswitch-data

Codici a barre EAN-13 e EAN-8 con OpenOffice e font TrueType

Per la necessità di realizzare codici a barre per una richiesta da parte di un cliente/amico, mi sono messo alla ricerca di informazioni.
In passato ho già trattato codici a barre ma di altro tipo, in particolare CODE-39 per utilizzo farmaceutico, i codici EAN sono rimasti per me un segreto di cui non ho avuto finora necessità di svelare. Cerca che ti ricerca mi sono imbattuto in un ottimo blog in cui ho trovato l'inizio della soluzione; la mia necessità è quella di stampare i codici EAN-8 utilizzati spesso anche per codifiche interne e quindi senza dover ricorrere, per correttezza, alla richiesta di intervalli di codici da parte dell'organizzazione europea preposta.

2011-06-13

Visualizzazioni 2011, quelle del 2011? no, 2011 totali!

Visualizzazioni Totali 2011. Non è un numero tondo ma è uguale all'anno.

Linux Registered User #535740

Mi sono registrato come utente Linux. Era ora, é dal 1999 che lo utilizzo ma non sapevo che ci fosse questo simpatico sito in cui "ufficializzare" l'utenza.