venerdì 30 luglio 2010

how to: installare librerie python, ovvero: no more troubles!

stamattina ho perso una marea di tempo nel cercare di far funzionare dalla riga di comando su windows il setup di autumn, un simpatico orm da utilizzare in applicazioni che sfruttino i database.

quindi, per evitare di avere problemi, vi spiego la pratica da utilizzare (in ambienti WINDOWS!)
per installare le librerie:

  1. Scaricate la libreria (che dovrebbe essere compressa) e unzippatela.
  2. Nella stessa cartella creare un file .bat (magari con la dicitura "nomelibreria-setup.bat") in cui ci sia scritto:
    setup.py install
    pause
  3. aspettate che tutto sia completato.
  4. verificate ora, attraverso l'IDLE o la console Python, che il numero di versione della libreria sia uguale alla versione installata.
  5. siete liberi di utilizzare la vostra libreria in santa pace xD

Ok, questo è una piccola pratica che bisognerebbe imparare... divertitevi!
e sopratutto: come ci insegna il grande Mario Biondi... NO MORE TROUBLES!

lunedì 26 luglio 2010

cosa ha scatenato un'eccezione? scopriamolo col modulo sys!

Problema: come fareste a loggare ogni eccezione senza conoscere l'eccezione e senza bloccare il programma?

piccolo esempio:

for expr in ("1/0", "5=False", "().append('3')"):
try:
eval(expr)
except:
pass #come fareste voi?
Non preoccupatevi, è normalissimo far valutare errori madornali come questi quando si parla di eccezioni xD

Il modulo "sys" è nostro amico, e ci mette a disposizione (grazie alle batterie incluse) alcuni metodi:
  • exc_info
  • exc_traceback
  • exc_type
  • exc_value
  • excepthook
  • exec_prefix

utilizzeremo il primo per mostrare i possibili errori derivanti dalla valutazione delle espressioni.

for expr in ("1/0", "5=False", "().append('3')"):
 try:
eval(expr)
except:
print sys.exc_info()


Se noi avviassimo il codice nell'IDLE Python, avremmo questi risultati:
(, ZeroDivisionError('integer division or modulo by zero',), )
(, SyntaxError('invalid syntax', ('', 1, 2, '5=False')), )
(, AttributeError("'tuple' object has no attribute 'append'",), )

Fate buon uso delle informazioni!!! Stay tuned!

lunedì 19 luglio 2010

Jokes with Python... 99 bottles of beer

una piccola funzione Python, un pò di divertimento :P
def ManyBottlesOfBeer(bottles):
for i in reversed(xrange(1, bottles+1)):
print " ".join([str(i), "bottles" if i!=1 else "bottle" , "of beer on the wall"])
print " ".join([str(i), "bottles" if i!=1 else "bottle", "of beer"])
print " ".join(["Take one down, pass it around,\n", str(i-1) if i-1 else "no more", "bottles" if i!=1 else "bottle", "of beer on the wall\n"])
print "go to the store, \nbuy sone more, \n", bottles," bottles of beer on the wall!"


divertitevi con
>>>ManyBottlesOfBeer(99) #a little joke xD

Stay Tuned!!!

venerdì 16 luglio 2010

grafici con Python

Hi all!!!
Attualmente sto provando ad utilizzare Python per la creazione di grafici 2D.
Cercando su internet, ho trovato matplotlib , una libreria Python che permette di creare facilmente grafici partendo da un set di dati.
Nota: per utilizzare matplotlib, dovete installare numpy, libreria di calcolo numerico in Python molto potente (è superottimizzata ed estesa in C). Vi consiglio di imparare ad utilizzare numpy, magari potrebbe servirvi in futuro!

Oggi, quindi, stavo studiando matplotlib e ho realizzato questo semplice programmino...

def visualizeCos(pointsNumber=100, translateTo="sx", translateValue=0, cyclesNumber=1):
"""
questa funzione ti permette di vedere il coseno di vari angoli con ampiezza da 0 a 2*cyclesNumber*PI

la funzione ha 4 parametri:
pointsNumbers:
indica il numero di punti che devono essere visualizzati. Di default è settato a 100
translateTo:
indica la direzione di traslazione della funzione coseno. Di default è settato a "sx".
Sono possibili 4 valori: "sx", "dx", "hi", "low"
translateValue:
indica il valore della traslazione. Di default è settato a 0 (zero) per visualizzare
senza traslazioni la funzione coseno
cyclesNumber:
indica il numero di cicli visibili sul grafico. Di default è settato ad 1, per visualizzare
solo un ciclo.
"""

import matplotlib.pyplot as plt
import numpy as np
if translateTo in ("sx", "dx"):
translateValue*= -1 if translateTo=="sx" else 1
valueList=[np.cos(angle+translateValue) for angle in \
 np.arange(0.0, 2*cyclesNumber*np.pi, (2*cyclesNumber*np.pi)/pointsNumber)]
if translateTo in ("hi", "low"):
translateValue*= -1 if translateTo=="low" else 1
valueList=[np.cos(angle)+translateValue for angle in \
 np.arange(0.0, 2*cyclesNumber*np.pi, (2*cyclesNumber*np.pi)/pointsNumber)]
#parte comune, eseguita in tutti i casi
plt.plot(valueList)
plt.title("visualizeCos")
plt.show()
Se provate la funzione, vi viene renderizzato questo output.



Visto? è semplice... utilizzare matplotlib!

provate questi input, ed osservate come cambia il grafico:
visualizeCos(translateValue=5)
visualizeCos(translateValue=5, cyclesNumber=4)

Vedete? Basta nulla per utilizzare proficuamente matplotlib. Se poi utilizzate numpy... i vostri programmi saranno ancora piu' veloci!!!

Arrivederci and... stay tuned!

lunedì 12 luglio 2010

programmazione android MOOOOOOLto più facile ora!

Avete un telefonino con Android, volete creare qualche applicazione ma non sapete programmare in Java? NO PROBLEM!
BigG è arrivata ad aiutarvi con App Inventor!!!
App Inventor permette di creare applicazioni visuali con la massima interazione possibile solamente attraverso l'uso di blocchi da montare (si, come se fosse un puzzle), ed ogni blocco ti permette di fare una determinata azione.
Qui il video di App Inventor