Main
contact
Projects/Proyectos
Papers/textos
Resume / Curriculum
Twitter Updates
Categories
- Angry (54) [atom | rss]
- books (4) [atom | rss]
- christine (70) [atom | rss]
- FLOSS (208) [atom | rss]
- general (400) [atom | rss]
- general (5) [atom | rss]
- gnome (21) [atom | rss]
- GNU (21) [atom | rss]
- google (8) [atom | rss]
- gpkg (13) [atom | rss]
- gtk (57) [atom | rss]
- Humor (61) [atom | rss]
- ICTC (2) [atom | rss]
- Internet (37) [atom | rss]
- la-uno.com (2) [atom | rss]
- linux (63) [atom | rss]
- movies (7) [atom | rss]
- music (28) [atom | rss]
- novell (5) [atom | rss]
- personal (282) [atom | rss]
- php (6) [atom | rss]
- Pictures (77) [atom | rss]
- Python (95) [atom | rss]
- slackware (37) [atom | rss]
- Software_Development (150) [atom | rss]
- stuff (152) [atom | rss]
- Stupid things (79) [atom | rss]
- ubuntu (15) [atom | rss]
- Video (15) [atom | rss]
- WTF!! (1) [atom | rss]
Tiras
Recent Comments
- gian on Ironman
- markuz on Es bueno reciclar el papel?
- gdesanti on Es bueno reciclar el papel?
- spooky on Home workplace
- Arturo on Franklin CDU-680 en Slackware Linux
- markuz on Franklin CDU-680 en Slackware Linux
- Arturo on Franklin CDU-680 en Slackware Linux
- markuz on Franklin CDU-680 en Slackware Linux
- markuz on Franklin CDU-680 en Slackware Linux
- Arturo on Franklin CDU-680 en Slackware Linux
general
Varias cosas por las que he pasado.. Tengo algo de chamba pero quiero descargarme un poco:
- El FLISOL no salio como lo esperaba: En serio, hicimos nuestro esfuerzo, a pesar de que teniamos tan poco tiempo, y durante las invitaciones todo mundo decia "si, vamos a ir" y muchas escuelas nos dijeron que estaban bien interezadas, hasta a christian le pidieron nombres para poder ir a dar platicas en la escuela, enviarian a los alumnos a enterarse bien de esto.. pero nee, no sucedió asi. Toda esa gente no llegó. El dia 26 estuvimos esperando a Leo y Hans casi todo el dia, se retrasaron por un accidente en la carretara y tuvieron que dar una vuelta de mas... fatal. El segundo dia ya fue un poco mejor, aunque solo se dieron las platica sde Leo y Hans, los pocos que estabamos estabamos por interes, y vaya, me senti mucho mejor, aunque si, no fue lo que yo esperaba. Si aun asi quieren ver fotos, lleguenle aqui. Un chingo de gracias a Leo, Hans y jorge que se portaron bien pocamadre con nostros.
- Ese mismo dia, al regresar a casa me doy cuenta que no podia checar mis correos, luego Roberto me dice que gnupr.org esta caido, voy a ver y si es cierto, linuxpozarica.com tambien, islascruz.org y .com igual, la-uno.com tambien, pcero.net, eljugger.com, todos los dominios que tenia registrados. Motivo, un usuario subió archvos que tenian copyright y que rompian con los terminos de servicio de mi proveedor de host. Mal pedo, que ni me dijeron awa va, o "Por favor retire estos archivos... nomas me dijeron que mi cuenta estaba desabilitada y al banano", bueno, a levantar todo de nuevo".
- He tenido algo de chamba aun asi XD, entre esto, lo que tengo que hacer en mi chamba chamba (o sea, por lo que si me pagan) y otras cosas, no he tenido mucho tiempo libre. Pero sé que todo saldrá mejor.
Por algo es mi domadora.
Gpkg Cuenta ahora con un soporte para slapt-get. De momento no es nada comparable con lo que puede hacer GSlapt (de los mismos desarrolladores de Slapt-get).
Dado que Gpkg debe ser pequeño, solo he agregado una opcion mas a la busqueda de paquetes, ahora, al hacer una busqueda de paquetes tambien se muestra la opcion de "buscar en:" y de ahi escogemos slapt-get y pulsamos el boton de busqueda.
De ahi nos parseará la salida de la busqueda como una lista, donde podremos seleccionar los paquetes que queremos instalar, y entonces le damos "install" y el paquete se ha de instalar usando slapt-get.
Ahora, por hay que seleccionar un menu la opcion "slapt-get" ??, facil, porque tambien quiero darle soporte a swaret. Me he dado cuenta de que gpkg no podrá adentrarse un poco mas si no hace esas labores de instalación tambien, y como no pienso reinventar la rueda, pues es mejor utilizar algo que ya existe, no creen?.
Yer!!!! Finally!!!, absolute!!!!!, por fin pude acomodar gpkg con las autotools
. Ahora instalar gpkg no es de un simple:
a un (mas largo pero personalizable):
markuz:$ make
markuz:$ make install
Y que es lo que se logra con esto?. Algunos archivos en python son configurados, sobre todo los que definen donde se van a localizar ciertos archivos (imagenes, *.glade, logs, locales, etc...).
Ademas que de esta manera la instalación de gpkg es mas amigable, mas común.
He creado un paquete de a como lo tengo ahorita, que si bien no me ha fallado en mis pruebas me reservo a que esta en "pruebas", aun es código en trabajo y puede tener errores. Sin embargo puedes por favor probarlo y si encuentras bugs, podrias notificame?
Codigo fuente: gpkg-0.3.2.tar.gz Paquete para Slackware 10.2 : gpkg-0.3.2-noarch-2mkz.tgz
Python es un lenguaje de programación interpretado, esto le permite funcionar donde el interprete funcione, comunmente en sistemas tipo UNIX, Microsoft Windows y MacOS. GTK+ es un conjunto de bibliotecas que permiten el escribir aplicaciones con una interface gráfica de manera muy sencilla, con una colección de widgets y un manejo de eventos y señales muy bueno, escrito completamente en C permite que otros lenguajes puedan tomarlo y asi crear bindings como es el caso de PyGTK, Sindo que GTK+, Python y PyGTK son altamente portables, entonces, ¿Que nos impide hacer aplicaciones multiplataforma con estas herramientas?. NADA.
Y para muestra basta un botón. Hace unos dias un cuate me pidió ayuda sobre un programa que convirtiera de decimal a binario, octal y hexadecimal, buscando en la red encontre una funcion que hace esto, convertir de decimal a cualquier otra base entre 2 y 36. El programa que mi cuate entregó era un tanto rascuacho, lo normal de cualquier alumno que apenas empieza a programar, solo pide un numero, una base y te devuelve el valor, si quieres volver a calcular tienes que volver a ejecutar el progrmar.
Entonces me di a la tarea de hacerlo con PyGTK, el programa fue escrito originalmente en python, asi que no era la gran labor
.
Lo primero que se hace es crear la interface con Glade:
Y luego a rellenar con codigo
from gtk import glade
def base10toN(num,n):
"""Change a to a base-n number.
Up to base-36 is supported without special notation."""
num_rep={10:'A',
11:'B',
12:'C',
13:'D',
14:'E',
15:'F',
16:'G',
17:'H',
18:'I',
19:'J',
20:'K',
21:'L',
22:'M',
23:'N',
24:'O',
25:'P',
26:'Q',
27:'R',
28:'S',
29:'T',
30:'U',
31:'V',
32:'W',
33:'X',
34:'Y',
35:'Z'}
new_num_string=''
current=num
while current!=0:
remainder=current%n
if 36>remainder>9:
remainder_string=num_rep[remainder]
elif remainder>=36:
remainder_string='('+str(remainder)+')'
else:
remainder_string=str(remainder)
new_num_string=remainder_string+new_num_string
current=current/n
return new_num_string
class converse:
def __init__(self):
'''
Constructor
'''
self.xml = glade.XML("converse.glade",None,None)
self.xml.signal_autoconnect(self)
self.base = 2
self.entry = self.xml.get_widget("entry1")
self.result_label = self.xml.get_widget("result_label")
try:
self.decimal = self.entry.get_text()
except:
self.decimal = 0
self.entry.set_text("0")
self.window()
def window(self):
win = self.xml.get_widget("window")
win.connect("destroy",gtk.main_quit)
def spin_change(self,spinbutton):
'''
Toma el valor de spinbutton (GtkSpinButton)'''
try:
self.base = int(spinbutton.get_value())
#print dir(spinbutton)
self.get_decimal_to_base()
except:
self.result_label.set_text("Not a number")
def entry_change(self,entry):
'''
Obtiene el valor del numero decimal, lo intentara convertir
a entero, en caso de que no pueda imprimira NAN en el resultado.
'''
if entry.get_text() != "":
try:
self.decimal = int (entry.get_text())
self.get_decimal_to_base()
except:
self.result_label.set_text("Not a Number")
else:
self.decimal = 0
def get_decimal_to_base(self):
'''
Invoca a base10toN y muestra el resultado en
el label de resultado.
'''
print self.decimal,self.base
r = str(base10toN(self.decimal,self.base))
self.result_label.set_text(r)
def main(self):
'''
Get in the gtk main loop
'''
gtk.main()
if __name__ == "__main__":
a = converse()
a.main()
Y listo: algo asi debe salir:
Ventajas:
- La aplicación es mas amigable
- No es necesario volver a ejecutar el programa para calcular el mismo numero en otra base u otro numero en otra base (etc..), Todo se recalcula al cambiar el numero o la base
Pero.. tenemos que ser realistas, no todo mundo usa GNU/Linux, y aunque mi cuate si lo hace de vez en cuando, normalmente usa Windows. Entonces, pues quise ver que tan dificil seria montarse esta cosa en Windows.
Lo primero que hay que hacer es conseguirse las dependencias:
- Python
- PyGTK (2.8 para python 2.4 con pycairo
)
- GTK+ Para Windows. Nota: Aunque se puede obtener del FTP de Gnome, es mucho mas facil obtenerlo del proyecto Glade Win32.
- Libglade que igual es preferible que sea de GladeWin32.
Instalamos todos estos cachivaches (que igual son necesarios en Linux pero que por lo general ya están instalados en nuestra distro), entonces ejecutamos python en la path de nuestro programita (por lo de las paths relativas
) o mas sencillo, le damos doble click al icono del programa (que siendo un script de python deberia ser una "viborita verde"). y Listo:
Y esto.. sin cambiar ni una sola linea al código




