[Python] Codigos Qr en Python
0Ayer estuve mirando lo de los códigos Qr, y me quedé gratamente sorprendido al ver un módulo para Python que encripta cualquier mensaje en un código Qr que cualquier (o casi) dispositivo puede desencriptar.
Bueno al tajo, el módulo del que hablo es qrcode y es tan fácil de usar como esto:
def QrEncode(txt='prueba', nFichero='prueba.png'): ''' @funcionamiento: crea imagen png con el texto encriptado en codigo QR @argumentos: txt: el fichero de texto que quieres que tenga el código QR nFichero: el nombre del fichero de texto de salida @return: devuelve True ''' qr = qrcode.QRCode( version=1, box_size=10, ) qr.add_data(txt) qr.make(fit=True) img = qr.make_image() img.save(nFichero) return True '''para usarlo simplemente ejecutamos lo siguiente:''' QrEncode(txt='http://monobotblog.alvarezalonso.es', nFichero='monobot.png')
[Python] threading
0Hola gente … hace bastante que no puedo publicar mucho por aquí, hoy estuve trasteando un poco con los threadings para poder ejecutar funciones paralelas.
Para comenzar lo normal es definir que es lo que vamos a poner en nuestra instancia de clase de Threads, para ellos definimos la funcion run de la clase para que luego al ejecutarla se nos ejecute de la forma que nos interesa.
Basicamente lo que hace es definir una función que se ejecuta paralelamente al proceso principal.
class hilos(threading.Thread): def __init__(self, funcion, argumento): threading.Thread.__init__(self) self.funcion = funcion self.argumento = argumento def run(self): self.funcion(self.argumento)
En esta clase que hemos heredado de la clase principal lo único que hacemos es en __init__ darle cobertura a los argumentos durante toda la clase y en el método run definimos lo que queremos que haga. en este caso simplemente ejecutar la funcion con los argumentos que le definamos.
Aqui pongo un ejemplo funcionando:
se trata simplemente de una serie de operaciones complejas que se ejecuta en paralelo a otra funcion que contabiliza los tiempos cada segundo.
import threading from time import sleep def imprime(n): for n in xrange(1,100000000): sleep(1) print n, 'segundos' n+=1 print "Soy el hilo principal" class hilos(threading.Thread): def __init__(self, funcion, argumento): threading.Thread.__init__(self) self.funcion = funcion self.argumento = argumento def run(self): self.funcion(self.argumento) def calc(): for m in xrange(1000,10000): print (m/2)**2**5 hilo = hilos(imprime, 1) hilo.start() calc()
como veis comienzas el hilo con el método oculto start sin argumentos y luego comienzas la funcion del hilo principal.
[Python] Pronto sacaré mi primer freeware
1Pues eso, tengo mi primer freeware casi listo, me faltan solo las últimas cosas que implementar.
Primero lo sacaré por aqui a ver si alguno de ustedes me lo puede testar.
Posteriormente lo pondré en todos los sitios de freeware.
Se trata de un gestor de contraseñas pequeño ligero y seguro.
con sqlite para que sea perfectamente portable pero seguro porque tiene encriptación incorporada.
Espero tenerlo antes de Diciembre.
[WxPython] Dudas sobre minimize y capturar eventos de ventana
0Hola gente … estoy con una pequeña aplicación que la mayoría del tiempo quiero que esté en el System tray (si en donde el relojito de windows).
Mis dudas son dobles, primero como meterla en el System Tray wx.Iconize lo que hace es minimizxarla en la barra de tareas no en el system tray.
La segunda duda es como capturar los eventos de minimizar y de restaurar ya que en ambas acciones quiero que se ejecuten una serie de códigos.
Saludos y gracias!
[OffTopic] Alguno conoce esta fuente o alguna fuente similar?
0Alguno conoce esta fuente o alguna fuente similar?
es toy buscando una fuente con el aspecto de maquina de escribir de las antiguas pero todas las que encuentro son en plan que escriben mal ya me entendéis con borrones o cosas por el estilo … he visto esta y me encanta.
Saludos y gracias.
[Python] Vipera está a punto de llegar a nosotros.
2Señores estamos de enorabuena, Vipera el magnífico trabajo de nuestro amigo Angel Luis está apunto de ser lanzado.
Se trata de una magnífica herramienta de creación de código python específicamente para generar aplicaciones en python y especialmente diseñada para equipos de trabajo de tal forma que varias personas a la vez pueden trabajar sobre el mismo código.
Estamos todos conteniendo el aliento para que Ángel Luis saque la primera versión candidata y en GPL!!!..
Ánimo Angel!!!! y muchísima suerte.
[Python] Buen sitio con claves para escribir código python mas eficiente
3Solo quería compartir este link
[google] Presenta Dart, lenguaje web estructurado.
0Después del fiasco de google go, los de mountain view lanzan un lenguaje de programación algo mas interesante … se trata de Dart, un lenguaje de porogramación orientado directamente a la programación web (java, ruby on rails o python django? no le parecen suficientemente buenos?).
Mis pinitos en la programación son cortos y antes de decidirme por python, estuve mirando otros lenguajes entre ellos go, pero la verdad es que no vi nada o casi nada sobre go y al final me decanté por python.
En lo que respecta a Django lo estoy usando en un proyectito que estoy terminando y la verdad es que está bastante bien, el problema es que desde mi novata perspectiva lo encuentro algo complicado. Una vez que entiendes el paradigma de trabajo se hace bastante mas sencillo, pero al estar tan claramente estructurado hay veces que me hago un lio de donde tengo/debo de implementar las cosas, ya que como todo en programación lo puedes hacer de muy diferentes formas, hay formas que son mas correctas que otras y saber que es lo mas correcto es complicado.
Esperemos que Dart sea un paso en el sentido de la democratización del desarrollo web. (al menos eso parece)
<Python> Los test y el modulo doctest
0Hola, estos dias he estado de vacaciones y con algo de tiempo libre para mi Hobby … Python
Bueno pues he estado mirándome los Test y en particular el modulo doctest de Python.
Básicamente me han vendido el tema de los test en los módulos que vas creando y a partir de ahora cuando haga cualquier función intentaré implementar el doctest para que se pueda ver sobre la marcha si hay errores y si los hubiera poderlos encontrar sobre la marcha antes de que se siga enrollando la madeja.
Para empezar explicaré que son los Test en programación, se trata simplemente de probar las funciones/modulos/clases/loquesea con el objeto de correr tu código en una cantidad de escenarios tal que puedas encontrar los errores si los hubiera. El objeto de ello es poder conocer en todo momento que lo que has hecho está bien y funciona.
Esto parece una tontería pero cuando piensas que tu modulo va dentro de una madeja mas o menos enrrollada de funciones variables, y entornos la cosa se puede complicar bastante.
En Python como ellos dicen viene con las pilas cargadas y ya (gente mas lista que nosotros o al menos gente que llego antes) existen modulos que se encargan exactamente de esto de hacer el Test de nuestros códigos.
En particular el modulo doctest hace algo muy inteligente usando un poco de azúcar sintáctica podemos escribir los test en el mismo código con el objeto de que el propio modulo se autochequee y así encontrar los problemas en cuanto se produzcan.
Explicarlo es mas difícil que demostrarlo, aquí va un ejemplo:
pruebas.py
def compLetras(c): ''' @funcionamiento: comprueba que el caracter que pulsamos es una letra o un numero @argumentos: un caracter @return: bool @Test >>> compLetras('c') True >>> compLetras('D') True >>> compLetras('1') False Si metemos mas de un caracter obviamente devuelve False porq esta creado para un solo caracter. >>> compLetras('Db') False >>> compLetras('12') False Prueba de que un texto largo tiene letras o numeros. >>> for c in 'abc123': ... compLetras(c) True True True False False False ''' import string if c in string.letters: return True else: return False if __name__ == "__main__": import doctest doctest.testmod(verbose=True)
como veis esta es una funcion chorra lo que hace es comprobar que un caracter es letra o no y devuelve un booleano.
El chiste esta en que en el propio doc de la funcion podemos ver los test escritos como si de la propia consola de python se tratara, vamos pasando varias alternativas y mostrando lo que se ha de devolver python.
El truco if __name__ == ‘__main__’: le metemos el propio doctest le he puesto el verbose=True para que devuelva algo y no tenga salida silenciosa. Así por ejemplo si hacer nuestro programa a todos los modulos y sus funciones los preparamos para el doctest pues simplemente creamos un fichero bat como este con todos los modulos y podremos comprobar que todo sigue funcionando correctamente!!!
comprobador.bat
python pruebas.py
<Python> Facturador en Python
9Lo prometido es deuda, adjunto el facturador que he creado.
Necesita reportlab y wxpython… si lo quieren usar deben de instalar esas bibliotecas.
Sois libres de modificar/cambiar lo que creais oportuno, eso si, para cualquier cosa, consultas, comentar el código, formas de mejorarlo, criticas, risas, etc… ya saben comentarlo por aquí para yo también ir aprendiendo de mis errores.
PD: Calculo que le he echado unas 15 horas o así.
