Posts tagged with “python”
Excusas BOFH para Android
Gracias al gran proyecto iniciado por Ivan Mosquera (Irontec) llamado PHP for Android me enteré de la existencia de Scripting Layer for Android, un proyecto que nos permite desarrollar scripts para nuestro sistema móvil favorito. Entre los lenguajes que soporta se encuentran:
- Python
- Sh
- Perl
- Rhino
- Lua
- Ruby
- ...
Mediante unos sencillos scripts es posible acceder a funciones para controlar el TTS, GPS, Bateria, Bluetooth, SMS, etc. Vamos, que en pocas líneas te puedes hacer cositas bastante interesantes. Yo como administrador de sistemas estoy acostumbrado a programar Scripts (y no aplicaciones completas), por lo que esto se convierte en un juguete muy divertido sin necesidad de meterte con el monstruo Java.
La instalación es sencilla. En primer lugar instalamos SL4A:

A continuación desde http://code.google.com/p/android-scripting/downloads/list te puedes instalar los interpretes para alguno de los lenguajes mencionados anteriormente. Para el ejemplo que vamos a ver a continuación usaremos Python:

Y listo, solo nos queda hacer nuestros scripts y subirlos a /sdcard/sl4a/scripts
Yo os pongo un ejemplo, que es simple y facil de entender. Es un script en python que se descarga una lista de excusas BOFH de una URL en concreto y escoge una al azar para mostrartela en pantalla. Siempre viene bien tener a mano estas frases para responder a las típicas preguntas "oyeee, que no me funca el aparatooo". Así que para tenerlo accesible creamos un enlace en el escritorio:

Lo lanzamos y tenemos nuestra excusa:

Aquí el código. Se aceptan críticas y mejoras :P
import android import urllib2 from random import randint droid = android.Android() try: f = urllib2.urlopen("http://pages.cs.wisc.edu/~ballard/bofh/excuses") except urllib2.HTTPError, e: print "ERROR" print e.code exit(1) except urllib2.URLError, e: print "ERROR" print e.reason exit(1) ex = f.read() # Separamos las frases por los saltos de lineas, convirtiendolo en una lista ex = ex.split("\n") f.close() # Buscamos el numero de frases que hay (otra forma mas bonita de hacerlo?) c = 0 for i in ex: c = c + 1 # Cogemos una al azar r = randint(0, c) # La mostramos droid.dialogCreateAlert("BOFH Excuse", ex.pop(r - 1)) droid.dialogSetPositiveButtonText('Close') droid.dialogShow()
Receta: generar contraseñas aleatorias en Python
Con la siguiente función es posible auto-generar contraseñas en Python con la longitud que desees. Serán mayúsculas, minúsculas y números:
import string from random import choice def GenPasswd(n): """ Generador de passwords Usando choice para seleccionar una, la fuente de datos lo da string.letters Para usar tambien numeros, string.digits """ return ''.join([choice(string.letters + string.digits) for i in range(n)]) print GenPasswd(8)
Facil facil y para toda la familia.
Usando MySQL con Python
Últimamente me ha dado por aprender Python o al menos intentarlo. Nunca me ha gustado la programación y cada vez que leía orientación a objetos terminaba dejándolo por puro aburrimiento. Espero que esta ocasión sea diferente :) Lo mejor que le veo a Python es su sintaxis sencilla y la cantidad brutal de módulos que podemos usar para hacernos la vida más facil.
En este simple ejemplo mostraré como acceder a MySQL y hacer querys, facil y para toda la familia. El primer requisito es tener MySQLdb instalado.
apt-get install python-mysqldb
El código es muy sencillo. Asociamos una conexión con un cursor y realizamos las querys contra el.
import MySQLdb db=MySQLdb.connect(unix_socket="/tmp/mysql_sandbox5140.sock", user="root", passwd="msandbox",db="information_schema") h=0 cursor=db.cursor() sql="SELECT PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_DESCRIPTION from plugins;" cursor.execute(sql) for n in cursor.fetchall(): if n[0]=="InnoDB": print "La BBDD tiene soporte para InnoDB" h=1 if h == 0: print "La BBDD no tiene soporte para InnoDB"
Con este simple script comprobamos si nuestro MySQL dispone de soporte para InnoDB.
Me gustaría aprender Python realizando alguna aplicación para MySQL, pero la verdad es que no se me ocurre nada útil. Si alguien tiene alguna idea me gustaría escucharla :)



