Posts tagged with “python”


Thu 5 Aug

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()

· Tags: , ,

Tue 9 Mar

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.

· Tags: ,

Sun 7 Mar

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 :)

· Tags: ,