Me pasa ecotecno una recopilación de artÃculos sobre desarrollo en Android que tiene muy buena pinta!
Gracias Salvador Gómez por tan interesante serie.
Me pasa ecotecno una recopilación de artÃculos sobre desarrollo en Android que tiene muy buena pinta!
Gracias Salvador Gómez por tan interesante serie.
Python dispone de una potente funcion para ordenar listas o lo que queramos. Solo hay que mirar la docu para hacernos una idea de su potencia:
http://wiki.python.org/moin/HowTo/Sorting/
Por ejemplo para ordenar un array bidemensional según la segunda columna….
lista=[[‘uno’, 2], [‘dos’, 1], [‘tres’, 0]]
print sorted(lista,key=lambda it: it[1])
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
Realmente no es un problema, el asunto es que glade-3 no define como visible la ventana que creeamos. Para que lo sea editamos el fichero .glade y en la ventana añadimos:
<property name=»visible»>True</property>
[ad#Google Adsense]
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:
Cuando tenemos que trabajar con un montón de variables a veces es útil poder llamarlas por su nombre. Si tenemos un objecto usaremos las funciones internas de python
Su uso es evidente: Continue reading
En un server que corre Zenntyal necesitaba cambiar el interprete de comandos que se les habñia asignado a todos los usuarios creados en el LDAP. Para ello me he decidido a usar python (porque es lo que mejor controlo y por el magnÃfico interprete iPython). El resultado a sido este:
#importamos el módulo LDAP y nos conectados
import ldap
l = ldap.initialize('ldap://localhost')
l.simple_bind('cn=ebox,dc=cajacomun,dc=es','misecreto')
#importamos modlist y creamos el cambio
from ldap import modlist
old = {'loginShell':'/bin/false'}
new = {'loginShell':'/bin/bash'}
cambios = modlist.modifyModlist(old,new)
#buscamos personas y aplicamos el cambio
for person in l.search_s('ou=Users,dc=cajacomun,dc=es',ldap.SCOPE_SUBTREE,'(uid=*)',['loginshell']):
print person
l.modify_s(person[0],cambios)
Más info:
Ieup,
Toca mini-receta basado en el artÃculo de David en la web de crysol.
Source: hola-pythoneros
Section: utils
Priority: optional
Maintainer: Juan Nadie <[email protected]>
Build-Depends: debhelper (>= 5.0.38)
Build-Depends-Indep: cdbs (>= 0.4.43), python-all-dev (>= 2.3.5-11), python-central (>= 0.5.6)
Standards-Version: 3.7.2
XS-Python-Version: all
Package: hola-pythoneros
Architecture: all
Depends: ${python:Depends}
XB-Python-Version: ${python:Versions}
Description: Ejemplo básico de script Python empaquetado en Debian GNU/Linux
Un script "hola mundo" que sirve únicamente para explicar cómo se
empaquetan scripts Python en GNU/Linux de forma adecuada.
chmod +x debian/rules
):
#!/usr/bin/make -f
DEB_PYTHON_SYSTEM=pycentral
DBK2MAN_XSL=/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/python-distutils.mk
dch --create
Con esto tenemos lo ultrabásico para poder compilar el paquete deb: dpkg-buildpackage
Es una manera sucia de empaquetar algo (es más una nota mental para mi que un howto) y para que el paquete sea medio decente hay que hacer muchas más cosas 🙂 Leeros el articulo de David que es más completo.
Buenas,
Si queremos procesar un fichero .changes de un paquete debian es tan sencillo como:
En código serÃa lo siguiente:
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
No es lo mas elegante del mundo, solo una prueba de concepto 🙂
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