mario  pcero  visor  maikool  AhIoRoS  paco revilla  Gunnar  tramas4life.tk  demrit  jmflores 

Main

contact

Projects/Proyectos

Papers/textos

Resume / Curriculum

 Use OpenOffice.org

OpenSolaris: Innovation Matters

twitter

    Categories

    Tiras


    Tira Ecol
    Tira Ecol


    Tira LinuxHispano.net
    La Legión del Espacio
    La Legión del Espacio
    En el Sitio de Ciencia-ficción

    Recent Comments

    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.
    markuz | general, general, personal | Monday 30 April 2007 3:31pm | 2 comments
    Isabel Cristina Rios Mendoza

    Por algo es mi domadora.

    markuz | general, general, personal | Tuesday 21 February 2006 5:39pm | Comment on this

    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?.

    markuz | general, Software_Development, general, gpkg, Python, GNU, gnome, linux, slackware | Thursday 16 February 2006 6:25pm | Comment on this

    Yer!!!! Finally!!!, absolute!!!!!, por fin pude acomodar gpkg con las autotools face-smile.png . Ahora instalar gpkg no es de un simple:

    markuz:$ python setup.py install

    a un (mas largo pero personalizable):

    markuz:$ sh configure --prefix=/usr --sysconfdir=/etc
    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

    markuz | general, Software_Development, general, gpkg, Python, GNU, gnome, linux, slackware | Sunday 12 February 2006 7:44pm | Comment on this

    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 face-smile.png .

    Lo primero que se hace es crear la interface con Glade:

    Y luego a rellenar con codigo face-smile.png

    import gtk
    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 face-smile.png

    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 face-smile.png )
    • 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 face-smile.png ) 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 face-smile.png

    markuz | Angry, Software_Development, general, Python | Friday 03 February 2006 4:03pm | 1 comments
    Online Visitors:7 Today Visitors:180 Total Visitors:66124

    Technorati