You are currently browsing the tag archive for the 'Python' tag.
Mentre cercavo come utilizzare l’accellerometro del mio MacBook mi sono imbattuto in questo articolo che spiega come simulare l’accelerometro sul nostro IPhone Simulator visto che non c’è di default, senza l’ausilio di un vero IPhone. Come spiega Karan Vasudeva, autore dell’articolo, bisogna scaricare UniMotion che legge l’SMS (Sudden Motion Sensor) del Mac e che ritorna i valori in vari formati. Poi bisogna scaricare un’altro software, scritto da Otto Chrons, e che trovate qui. Quest’ultimo software e diviso in due parti, uno va installato sul simulatore e l’altro va incluso nei vostri programmi sotto forma di libreria semplicemente inserendo un
#import "AccelerometerSimulation.h"
a questo punto, sempre Karan, usa il suo script python che lega i 2 software e passa il risultato di UniMotion all’IPhone Simulator attraverso il codice di Otto. Ma come funziona e cosa centro io? Allora ricapitoliamo: il software di Otto, ACCSim, è diviso in 2 parti, un server e un client, il server sta in ascolto sulla porta 10552 in attesa di una stringa tipo:
ACC: , timestamp, x, y, z
il client invece e costituito in questo caso dallo script di Karan che raccoglie dalla periferica questa stringa e passata al server. A questo punto entro in gioco io, che grazie alla libreria python trovata, PyAppleSMS e di cui parlo nel post precedente, ho modificato lo script di Karan per utilizzare questo modulo in modo da rendere il tutto piu leggero e facile e con l’utilizzo di un unico script.
Per testare il tutto quindi scaricate il software di Otto, copiate ed incollate questo script python nel vostro editor preferito:
import sys, socket, time, traceback
import applesms
kCFAbsoluteTimeIntervalSince1970 = 978307200.0 # from CFDate.c
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('',0))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while 1:
try:
x, y, z = map(lambda x: -1 * x, applesms.coords())
# change epoch to be compatible with CFAbsoluteTimeGetCurrent()
currentTime = time.time() - kCFAbsoluteTimeIntervalSince1970
accdata = ','.join(map(str,('ACC: 0',currentTime,x,y,z)))
sock.sendto(accdata, ('', 10552))
# print '% .2f % .2f % .2f' % (x, y, z)
except (ValueError, KeyboardInterrupt):
sock.close()
sys.exit(-1)
except applesms.error, e:
print 'An error occurred in PyAppleSMS module: %s' % str(e)
sys.exit(-1)
except:
traceback.print_exc()
che altro non è che lo script di Karan che però utilizza la libreria PyAppleSMS. Avviando AccelerometerGraph, un programma di esempio che trovate nella Knowledge Base di ADC e che vedete nell’immagine sopra, e lo script che trovate sopra vi accorgerete che funziona, non so quanta attendibilità può esserci nel formato fornito, ma so che funziona e legge i dati. Vi rimando alle pagine linkate quà e là per il post per le rispettve informazioni.
Spero di essere stato chiaro, se pero cosi non fosse sentitevi liberi di chiedere delucidazioni in merito, i commenti esistono per questo!!
EDIT: Funziona anche con le nuove versioni dell’IPhone SDK 3.0
– Fine –
Post scritto con KBlogo
Una delle cose che mi piacciono di più del mio nuovo MacBook è proprio l’accelerometro (Sudden Motion Sensor) montato ormai su quasi tutti i modelli Mac e che servono a far bloccare le testine dell’hard disk in caso di caduta del portatile. Quello che ho cercato è come usare questo accessorio per qualche altro utilizzo. Cercando un po su Google sono arrivato su questa pagina, in italiano, dove questo ragazzo ha creato un modulo scritto in C per interrogare l’SMS con Python. Vi basta scaricare il modulo, PyAppleSMS, decomprimerlo e installarlo con un semplice
python setup.py install
una volta installato potete leggere i valori dell’SMS semplicemente importando il modulo e chiamare il metodo per leggere le coordinate. Un esempio lo trovate nell’archivio del modulo altrimenti bastano queste due righe di codice:
import applesms
(x, y, z) = applesms.coords()
Ora sta a voi farci qualcosa di utile, potete usarlo nelle vostre applicazioni o nei vostri giochi.
Buon lavoro a tutti!!!
– Fine –
Post scritto con KBlogo
Durante questo fine settimana mi sono un po concentrato sull’utilizzo di python per gestire uno dei database piu famosi al mondo, MySql. Avevo già scritto qualche cosa ma ho voluto creare una interfaccia visuale al semplice e potente client da riga di comando. Il programmino è scritto in python e QT come librerie grafiche, il perché non lo so, forse la settimana prossima faro un porting su GTK. Per il momento il programmino non fa altro che eseguire delle query e fornire i risultati. Ma vediamo velocemente come creare un piccolo script per eseguire delle query su un db Mysql. Per prima cosa abbiamo bisogno del modulo che permette a python di interagire con Mysql, il suo nome è python-MySqldb per installarlo su sistemi Debian based basta digitare, da amministratore:
# apt-get install python-MySqldb
a questo punto abbiamo tutto il necessario per iniziare . Per prima cosa apriamo il nostro nuovo file .py nel nostro editor preferito ed iniziamo con l’importare il modulo:
import MySQLdb
a questo punto non ci resta che creare una connessione con il DB:
conn = MySQLdb.connect (host = "localhost",
user = "testuser",
passwd = "testpass",
db = "test")
ora abbiamo un oggetto connessione che punta ad un database all’indirizzo “localhost” con utente “testuser” e password “testpassword” ed abbiamo chiesto di utilizzare il database “test”. Una volta ottenuta la connessione abbiamo bisogno di qualcosa che ci indichi sempre come e dove comunicare con il DB quindi creiamo un oggetto cursore:
cursor = conn.cursor()
Fatto questo ora possiamo iniziare ad interrogare il nostro DB lanciando delle query semplicemente lanciandole attraverso il metodo appropriato:
cursor.execute ("SELECT * FROM testtable")
dove estraiamo tutto il contenuto della tabella “testtable” all’interno del DB “test” per vedere il risultato della query abbiamo bisogno di prendercelo:
row = cursor.fetchone () print row
Quindi avremo stamapato a schermo il risultato dell’interrogazione. Gli statement sopra non sono ilmassimo dato che potremmo avere piu righe e piu colonne per ogni riga quindi sarebbe meglio ciclare, magari con un for, sul risultato e poi utilizzarlo come meglio crediamo.
Possiamo fare tutte le interrogazioni che vogliamo l’importante è lanciarle con il metodo “execute” l’importante è che al termine di tutte le nostre operazioni chiudiamo la connessione con il DB eseguendo un:
cursor.close() conn.close()
Sinceramente la chiusura del cursore al momento mi da errore ma non so non ho letto per bene la documentazione, quindi assicuratevi di chiudere almeno la connessione con il db. Questo e tutto non vi resta che mettervi e provare, per maggiori info potete visitare il sito del modulo su SourceForge.
Se invece volete usare il mio programmino, chiamato QSql potete scaricarlo dal link qui sotto. Ogni commento o critica è benvenuta, per qualsiasi chiarimento non vi resta che chiedere.
– Fine –
Post scritto con KBlogo


QSql v 1.0




