You are currently browsing the category archive for the 'Python' category.
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
Dato che ogni tanto mi metto a provare qualche idea che mi viene i mente oggi mi sono messo a giocherellare un po con il mod_python [1], ma sul mio server non era configurato quindi, se a qualcuno puo servire, metto qui i semplici passi per configurarlo.
Per prima cosa bisogna installarlo, io uso una Debian quindi un semplice:
sudo apt-get install libapache2-mod-python
Non ci rsta che configurare Apache per interpretare i nostri file Python. Esistono 2 modi per farlo, fargli interpretare file python puri, .py per intenderci, oppure file Python Server Pages , .psp, che permettono di integrare codice python direttamente nell’HTML. Io ho scelto la seconda, non conosco i vantaggi e solo perche ricordavo di aver fatto questa in precedenza e quindi l’ho usata.
passiamo quindi alla configurazione di apache quindi apriamo il file di configurazione di default dei virtual host di Apache, la posizione varia in base alla distribuzione e dipende se avete altre configurazioni di virtual host, richiamando il file in questo modo:
vi /etc/apache2/sites-available/default
e aggiungo le linee che mancano alla vostra configurazione:
[...]
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
## Queste linee abilitano l'interpretazione dei file .py
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
## fine
[...]
fatto questo salviamo e riavviamo il server Apache:
sudo /etc/init.d/apache2 restart
Ora bisogna testare se il tutto funziona, sempre che fino ad ora tutto sia andato liscio, lo facciamo creando due file, un semplice form in HTML, lo chiameremo test.html:
<html>
<head><title> Mod_python test form</title></head>
<body>
<form action=”form.py/processa” method=”POST”>
Inserisci il tuo nome:<br />
<input type=”text” name=”name”><br />
<input type=”submit”><br />
</form>
</body>
</html>
e un file python che processi i dati del form, lo chiameremo form.py:
def processa(req, name):
if not name:
return "Who are you?"
else:
return "Ciao %s!" % name
salviamo questi file nella directori radice di Apache, nel mio caso /var/www ed apriamo il nostro browser all’indirizzo, sempre nel mio caso, http://localhost/test.html apparirà un form molto semplice inserite il vostro nome o quello che vi pare e cliccate sul bottone. il risultato sara qualcosa tipo Ciao quellocheavetenserito. Se fino ad ora tutto non ha restituito errori ed ha funzionato allora potete iniziare a divertirvi a scriptare quanto volete, ma se invece qualcosa non funziona allora vi verrà segnalato.
Mod_python utilizza un oggetto request che possiamo utilizzare per processare i nostri dati alcune funzioni utili allo scopo possono essere req.write() e req.read() per scrivere e leggere sull’oggetto o si possono sollevare eccezzioni con apache.SERVER_ERROR. Questo dovrebbe essere tutto se avete problemi chiedete cerchero di rispondervi e chiarire i vostri dubbi.
– Fine –
Post scritto con KBlogo
Oggi ho comprato il mio biglietto per la PyCon Uno alla modica cifra di 30 euro,se vi sembrano troppi sappiate che inclusi ci sono 2 giorni di conferenze, pause caffe e 2 pranzi. Se non sbaglio questo prezzo rimarrà tale fino al 27/05 poi ci sarà da sganciare almeno 50 euro. Per informazioni comunque il sito di riferimento è www.pycon.it e se qualcuno di voi ci va me lo faccia sapere…
PyCon Uno è la prima conferenza italiana dedicata al linguaggio di programmazione Python, e si terrà a Firenze il 9 e il 10 Giugno 2007. La conferenza è organizzata da un gruppo di appassionati e senza finalità di lucro; si prefigge la divulgazione di Python, e di dare visibilità agli sviluppatori professionisti, studenti, aziende e semplici interessati al linguaggio. Io molto probabilmente sarò presente ed invito ognuno di voi ad aderire se nelle condizioni di farlo.
Per maggiori informazioni e per registrarsi cliccate su www.pycon.it


QSql v 1.0





