Aprender JQuery con w3schools

JQuery está de moda, y la verdad es que esta librería de JavaScript consigue que JavaScript no apeste tanto. Una buena lugar donde de aprender su uso puede ser en la escuela de las w3:

иконографияhttp://www.w3schools.com/jquery/default.asp

Lo primero que vemos es un interesante editor/tester online que nos permite probar nuestro código:

http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_hide

De esta manera podemos ahorrarnos mucho tiempo probando nuestro código. Hace unos meses también os recomende Firebug como herramienta para probar en caliente nuestro código JQuery:

 

http://blog.etxea.net/index.php/2011/05/25/aprendiendo-jquery-con-firebug

pygtk: como pedir confirmación al usuario

A veces en una aplicación PyGT necesitamos pedir al usuario que nos confirme una acción, con esta pequeña función tendremos la solución. Se le pasa como parámetros el texto a monstrar y el título de la ventana.

def pedir_confirmacion(texto,titulo):
    dialog = gtk.MessageDialog(None, gtk.DIALOG_MODAL,gtk.MESSAGE_INFO, gtk.BUTTONS_YES_NO,texto)
    dialog.set_title(titulo)
    response = dialog.run()
    dialog.destroy()
    if response == gtk.RESPONSE_YES:
        print "A respondido que sí!"
        return True
    else:
        print "A respondido que no!"
        return False

Vía ubuntu forums

Notas sobre programación de aplicaciones de escritorio en python: teoría y práctica

Alguna vez he programado alguna cosa en pygtk por divertimento. Una vez tuve que adaptar el instalador de Ubuntu (ubiquity) para un proyecto del trabajo y me tocó pelearme otra vez con python+gtk. Ahora quería mirar una manera sería de hacer desarrollos de aplicaciones de escritorios en python GTK, así que lo primero es recopilar información y este ha sido e resultado:

Continue reading

Howto parse a debian changes file in python

Firts post in English (just a test :). If yo want to parse a debian package changes file in python is so easy as:

import os
import GnuPGInterface
import syck

changes_file = '/tmp/factoriapegaso-panel_0.2.6-4_amd64.changes'

gnupg = GnuPGInterface.GnuPG()
ciphertext = open(changes_file).read()
p2 = gnupg.run(['--decrypt'], create_fhs=['stdin', 'stdout'])
p2.handles['stdin'].write(ciphertext)
p2.handles['stdin'].close()
decrypted_plaintext = p2.handles['stdout'].read()
p2.handles['stdout'].close()
#Puede fallar por no tener la llave GPG
try:
        p2.wait()
except:
        pass

changes_info = syck.load(decrypted_plaintext)


print "tenemos:"
print changes_info

Control del flujo tipo switch en python

Ieup,

Otra pildorita de Python. Siempre echaba de menos una orden de control del flujo del tipo switch de PHP. Hasta ahora siempre hacía un sucio hack con if-s anidados (si asi de WTF es uno :P). Pero hoy, cansado ya y con necesidad urgente he rebuscado en san google y he encontrado que se puede hacer tan sencillo como mapeandola funciones a valores en un array. Sacado del blog de Simon Willson :

#Definimos las funciones
def alerta(texto):
        print "ALERTA: %s"%texto
def farsa(texto):
        print "FARSA: %s"%texto
#Definimos el array mapeador
case = {
    'a': alerta,
    'f': farsa
    }
variable='a'
print variable
case[variable]("lala")
print "Ahora cambiamos"
variable='f'
print variable
case[variable]("lele")

Gestión de “opciones” en guiones python

Python mola! Necesitaba añadir a un guión python el recibir un parametro del tipo –parametro valor. He mirado la referencia de python (ya sabeis, hay que mantenerla siempre debajo de la almohada 😉 y voila! optparser al rescate. A sido tan sencillo como:

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-c", "--config",action="store", type="string", dest="configfile")
(options, args) = parser.parse_args()
#Es oblligatorio indicar el fichero de configuración
if not options.configfile:
    print "Falta indicar el fichero de configuración"
    exit()
#esperamos 2 parámetros libres
if len(args) != 2:
    print "Faltan parametros"
    exit()

Espero que a alguna le sirva. Sino sirva como nota mental 🙂

Agur.

Atentiendo señales dbus en python

Ya hablé sobre python y dbus hace un tiempo. Ahora vamos a aprender como atender a las señales que se mandan a través de este bus de escritorio. En el interesante tutorial de Pidgin tenemos un buen ejemplo. En este ejemplo se va a atender a la señal que emite pidgin cuando algún amigo se conecta. En el ejemplo de la web se lanza una ventana de notificación.

#!/usr/bin/env python

import dbus, gobject, dbus.glib

# Initiate a connection to the Session Bus
bus = dbus.SessionBus()

# Associate Pidgin's D-Bus interface with Python objects
obj = bus.get_object(
    "im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
pidgin = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")

# Create a global Pidgin buddy data cache
buddy_data_cache = {}

def onSignOn(bId):
  # Extract a Pidgin buddy's name and alias
  buddyAlias = pidgin.PurpleBuddyGetAlias(bId)
  buddyName = pidgin.PurpleBuddyGetName(bId)

  # Generate notification text based on the buddy's name and alias

  print "Se ha conectado: %s"%(buddyName)

# Bind the onSignOn function with Pidgin's BuddySignedOn event
bus.add_signal_receiver(onSignOn,
  dbus_interface="im.pidgin.purple.PurpleInterface",
  signal_name="BuddySignedOn")

# Start the main loop
gobject.MainLoop().run()

Como veis es bastante sencillo. Iniciamos un bus de sessión. Obtenemos el objeto de purple (el servicio de pidgin). Creamos una función (onSigOn) que será la que se lance cuando ocurra la señal. Y ya solo nos queda unir esta función con la señal con el método add_signal_receiver. ¿Sencillo no? Como mola python 😛 Para otro día dejo la parte final, crear un “servidor” que se conecte a dbus y atienda peticiones a través de el.