mercoledì 31 dicembre 2014

Clear per Python [Brevi Esercizi]

Salve!

Oggi parliamo del comando clear, della sua funzione, ma non in Bash, in Python.

La funzione di clear è quella di pulire la finestra del terminale. In Python non esiste, ecco.

Bisogna importare un modulo, os, per poterla avere. Il problema si pone soprattutto all'interno degli script, sopratutto in presenza di cicli iterativi infiniti, chissà se si può dire così.. ma a me piace questa definizione, perciò non la cambio.

Dicevo che il problema si pone soprattutto all'interno di uno script, se invece lanciamo comandi in una shell python e vogliamo pulire la finestra del terminale, basta la combinazione di tasti Ctrl+L, che funziona anche in bash. Pare non funzioni su Windows, ma il problema non mi tange mica, uso solo linux, e da svariati anni.

Facciamo un esempio concreto. Costruiamo un semplice script che ci aggiorni dell'ora ogni secondo.
#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
while True:
   print time.strftime("%H:%M:%S", time.localtime(time.time()));
   time.sleep(1);
Capirete subito, una volta eseguito lo script, che il comando clear diventa necessario.


Per aggiungerlo, basta importare il modulo os e costruire una funzione. Almeno io faccio così.

Fatte le dovute aggiunte, avremo il seguente codice:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time, os

def clearScreen():
 os.system("clear")

while True:
   print time.strftime("%H:%M:%S", time.localtime(time.time()));
   time.sleep(1);
   clearScreen()
In questo modo non vedremo più l'elenco interminabile delle ore, dei minuti e dei secondi.


Alla prossima e buon anno!

martedì 30 dicembre 2014

Decodifichiamo codici QR con Python [Brevi Esercizi]

Salve!

In un precedente post, abbiamo visto come creare un codice QR con Python, oggi vediamo come decodificarlo.

Anzitutto installiamo il seguente pacchetto

$ sudo apt-get install python-qrtools

Create un documento di testo nella cartella Documenti, chiamatelo DecQR.py e incollateci il codice di cui sotto; nella stessa cartella salvate anche il codice QR da decodificare.

Poi dal terminale spostatevi nella directory Documenti

$ cd Documenti

rendete eseguibile lo script

$ chmod +x DecQR.py

e lanciatelo

$ ./DecQR.py

Lo script è interettivo, infatti vi chiederà il nome esatto del codice QR da decodificare. L'output sarà stampato nella stessa finestra del terminale.

#!/usr/bin/python
# -*- coding: utf-8 -*-

from qrtools import QR
print
#Digitiamo il nome del codice QR da decodificare
Nome_Codice_QR = raw_input("Digita il nome del codice QR da decodificare? ")
#Viene impostato il nome
myCode = QR(filename = Nome_Codice_QR)
#decodifica
if myCode.decode():
  print
  print "Output:"
  print myCode.data
  print

L'indice della rubrica "Brevi Esercizi" lo trovate qui

Alla prossima! ;)

venerdì 26 dicembre 2014

La tombola parlante

Nella tombola, un giocatore con ruolo di croupier ha a disposizione un tabellone sul quale sono riportati tutti i numeri da 1 a 90, e un sacchetto riempito con pezzi numerati. Il suo compito consiste nell'estrarre i pezzi in modo casuale, e annunciare agli altri giocatori il numero uscito.

Bene, lo script, appena abbozzato, non fa altro che estrarre i numeri in modo casuale e annunciarli. Per continuare con l'estrazione bisogna premere Invio, per uscire dallo script, Ctrl+C.

Installiamo alcune dipendenze:

$ sudo apt-get install toilet espeak sox

Create un documento di testo nella cartella Documenti, chiamatelo croupier.sh e incollateci il codice di cui sotto.

Poi dal terminale spostatevi nella directory Documenti

$ cd Documenti

rendete eseguibile lo script

$ chmod +x croupier.sh

e lanciatelo

$ ./croupier.sh

#!/bin/bash
#Bit3Lux
#tombola.sh

function numero(){
espeak -p 50 -s 180 --stdout -v it+f5 | play -t wav - \
overdrive 10 
}
a=`for i in {1..90}; do echo $i; done | shuf`
clear
for i in $a 
do
     toilet -f smmono12 $i  && echo $i | numero 
    echo -e "\v" "Premere invio per continuare, Ctrl+C per uscire dallo script"
    read
    echo ""
    clear
done
exit 0

Alla prossima!

mercoledì 24 dicembre 2014

Pillole di OpenSource #1

  • Il LubitProject, da non molto tempo, si avvale anche di uno spazio su Google+, dove si possono postare dubbi, richiesta di aiuto, suggerimenti, intorno a lubit e ad alcuni linguaggi di programmazione: Bash, Python, Awk, C++. Gruppo di discussione del progetto Lubit Linux

  • Da un po' di tempo, Michele Adduci sta curando sul blog il corso di Modern C++. Alcune raccomandazioni: Anzitutto vi invito a seguire il corso, il cui indice lo trovate qui; vi invito inoltre a rispondere al questionario che trovate alla fine di ogni lezione. Il questionario è di estrema importanza perchè permette a Michele di "tarare" il corso secondo le vostre esigenze, per quello che è possibile, ovvio. 



  • Stanco di sentire parlare i giornalisti, quasi tutti, male degli hackers, l'altro giorno, su facebook, ho cercato di darne una definizione: "L'hacker è colui che vuole vedere dentro alle cose, ma anche dentro se stesso.
    L'hacker è colui che sa di sapere poco nonostante la sua preparazione eccellente, perchè il sapere, quello vero, non ti veste, ma ti toglie i vestiti.
    L'hacker, quello vero, ha perennemente freddo. E i suoi spazi sono alternativamente ampi. Anzi, l'hacker ha una visione alternativa della vita, non per scelta, ma per vocazione.
    L'hacker nasce con una missione, e ci vuole tempo perchè sintonizzi la sua vita a queste aspirazioni che lo trascendono.
    L'hacker sovente fissa il vuoto, perchè, proprio nel vuoto, vede proiettato il suo progetto.
    L'hacker non è un criminale e, spesso, non è neanche un informatico. E siccome i suoi spazi sono diversamente ampi, tutti i suoi sforzi sono tesi ad aggirare o superare creativamente le limitazioni che gli vengono imposte nel suo campo." Voi che ne pensate?

  • Vi segnalo un interessante articolo di Fiorentino Sarro dell'HLCS. Di Fiorentino apprezzo la grinta, lo stile e i contenuti dei suoi articoli. In sintesi, di lui apprezzo tutto. :) Hacklab X – Anno 1, Numero 9

  •  Per il 9 gennaio 2015 è prevista l'uscita di Lubit 4 - 64 bit
 


Auguri di Buon Natale a tutti! ;)


venerdì 12 dicembre 2014

Emulare i suoni di una macchina da scrivere su lubit

Salve!

Vabbè, stamattina sono un po' nostalgico. Stanotte mi sono ricordato quando nel 1987 feci un corso di dattilografia. Allora usavo una Olivetti come macchina da scrivere, questa...
Ora vi dico come fare per emularne i suoni su lubit.

Anzitutto installiamo il pacchetto python-xlib

$ sudo apt-get install python-xlib

Scarichiamo lo script in python da github

$ wget -O keypress.tar.gz https://github.com/chrelad/keypress/tarball/master

decoprimpiamo l'archivio .tar.gz ed estraiamone i file.

$ tar -xfz keypress.tar.gz

Spostiamoci nella cartella contenente lo script in python

$ cd chrelad*

rendiamo eseguibile lo script

$ chmod +x keypress.py

Eseguiamo lo script

$ ./keypress.py

Ora possiamo ridurre ad icona la finestra del terminale e iniziare a scrivere qualcosa ;)

Per uscire dallo script, massimizzate la finestra del terminale e premete la combinazione di tasti Ctrl+C

Ah, una cosa, una volta eseguito lo script, ovunque scriviate, writer, browser, editor, etc, avrete i suoni della vecchia olivetti. ;)

Alla prossima!

lunedì 8 dicembre 2014

Come trovare i file senza estensione con il comando Find [Brevi Esercizi]

Salve!

L'esercizio di oggi è il seguente: In una sottocartella, già contenente immagini e scripts, creiamo 7 file di testo senza estensione. Poi, attraverso il comando find, cerchiamoli e, infine, aggiungiamo ad essi l'estensione .txt.

In Documenti ho creato la cartella Test. Entriamoci dentro.

$ cd Documenti/Test

Creiamo i sette file di testo senza estensione

$ touch {a..g}
$ ls

Ora cerchiamo questi file

$ find  -type f ! -name "*.*"

Per aggiungere l'estensione utilizziamo anche rename.

$ find  -type f ! -name "*.*" | rename 's/$/\.txt/'



Importante. C'è da fare una piccola precisazione: Non lanciare mai il comando di cui sopra direttamente nella home dell'utente, ma solo nelle sottocartelle. Questo perchè nella home ci possono essere file di configurazioni che devono essere senza estensione.

Verifichiamo il risultato

$ ls


Alla prossima!

L'indice della rubrica "Brevi Esercizi" lo trovate qui.

domenica 7 dicembre 2014

Mettiamo alla prova le nostre password.

Salve!

Poniamo il caso che mi stia scervellando per creare una password sicura, o che voglia testare una password che sto già usando, in questi casi, o altri analoghi, mi può tornare utile un tool semplice semplice, cracklib-check.

Anzitutto installiamolo

$ sudo apt-get install cracklib-runtime

Ora facciamo un po' di prove.

Supponiamo che voglia impostare come password la classica sequenza "1234567"

$ echo "1234567" | cracklib-check


Altri esempi:





Un altro modo di usare cracklib-check è quello di scrivere il suo nome nel terminale e premere invio, a questo punto bisogna digitare la password, che si vuole provare, e aspettare il responso. Questo secondo metodo evita di digitare, ogni volta, la riga di comando con la nuova password da testare.

cracklib-check


Ad essere proprio sincero, l'utilità di questo tool non è proprio eccezionale. Serve, tuttavia, ad escludere alcune possibilità che potrebbero rivelarsi "dannose" per i nostri account.

Alla prossima.

mercoledì 3 dicembre 2014

Creiamo codici QR con Python

Salve!

L'esercizio di oggi consiste in un semplice script in Python che crea codici QR.

Lo script ci chiede il testo da inserire nel codice QR e il nome dello stesso.

Anzitutto dobbiamo scaricare un pacchetto:

$ sudo apt-get install python-pygooglechart

Di seguito il corpo dello script

#!/usr/bin/python
# -*- coding: utf-8 -*-

# importiamo QRChart
from pygooglechart import QRChart

# Dimensioni codice QR
Codice = QRChart(140, 140)

#Creiamo una variabile che contenga il testo del nostro codice QR
Contenuto_Codice_QR = raw_input ("Scrivi il contenuto del codice QR: ")

# Aggiungi il testo
Codice.add_data(Contenuto_Codice_QR)

# correzione degli errori con un margine di 0 pixel
Codice.set_ec('H', 0)

#Diamo un nome al nostro codice QR
Nome_Codice_QR = raw_input("Che nome vuoi dare al codice QR? ")

# Il codice viene salvato nella dir in cui si trova lo script
Codice.download(Nome_Codice_QR)

Salviamo lo script in un file di testo e nominiamolo creacodQR.py

Posto che lo avete salvato nella cartella Documenti

$ cd Documenti

Rendiamolo eseguibile

$ chmod +x creacodQR.py

infine eseguiamolo

$ ./creacodQR.py


Il codice che "sforna" è il seguente:


Per leggerlo ho scaricato un app sul mio Nexus, che si chiama QR Code Reader.

Alla prossima!

lunedì 1 dicembre 2014

Come "falsare" la data di modifica di un file di testo [Brevi Esercizi]

L'esercizio di oggi risponde a questa esigenza, non voglio far sapere al mio coinquilino (che tra l'altro non esiste) quando ho modificato un file di testo.

Poniamo che nella mia cartella Documenti abbia un file di testo modificato il primo dicembre 2014, voglio indurre il mio coinquilino (lo so, non è giusto, ma è pur sempre un esercizio) a credere che il file non sia stato modificato da molto tempo.


Esageriamo, lo induciamo a credere che il file non sia stato modificato dal lontano 9 novembre 1989 (data ufficiale della caduta del muro di Berlino)


L'operazione è semplicissima, basta usare il comando touch con qualche sua opzione:

Il file in questione si chiama, nel mio caso, programma_novembre.txt e si trova nella directory Documenti.

$ cd Documenti

$ touch -m -t 198911091525.30 programma_novembre.txt

In pratica, dopo l'opzione -t, ho scritto prima l'anno (1989), poi il mese (11), poi il giorno (09), infine l'ora con minuti e secondi (15.25:30), tutto attaccato.

Alla prossima ;)

Ah, dimenticavo, l'indice della rubrica "Brevi Esercizi" lo trovate qui.

Niente è come appare.... non dimentichiamocelo mai!