Kivy, Linux, Programacion, Python, Software Libre

Instalando Kivy en Antergos/Archlinux

Desde hacia ya bastante tiempo que no he  escrito en el blog, ultimamente he estado aprendiendo del mundo python y ahora estoy probando Kivy para desarrollo de apps moviles para android. He encontrado poca documentación en español acerca de Kivy, y quiero contribuir con algunas entradas en las cuales iré compartiendo lo que voy aprendiendo.

Como dice en su pagina web http://kivy.org : Kivy es una librería Python de código abierto para desarrollo rápido de aplicaciones que hacen uso de interfaces de usuario innovadoras, tales como aplicaciones multi-touch, esta librería se puede descargar para diferentes plataformas desde http://kivy.org/#download  y ahi tenemos las instrucciones de instalación para Windows, Mac y algunas distros Gnu/Linux, lamentablemente yo tuve problemas al quererla instalar en Antergos pero he dado con la solución, que detallo a continuación:

1. Instalamos ‘python-pygame’ desde la consola o desde pacmanxg, ya que desde pip2 no se puede instalar

2. Instalamos ‘cython 0.20.2 ‘  ya que con cython 0.21 aun no se puede instalar kivy , con el comando:

  sudo pip2 install 'cython==0.20.2'

3. Finalmente instalamos Kivy con el comando

sudo pip2 install kivy

De esta forma tendremos instalado kivy en nuestro sistema, cabe recalcar que si se usa un entorno virtual se debe omitir el sudo.

Eso es todo, espero que le sirva de ayuda a alguien!!!

 

 

 

 

 

Programacion, Python

Validar cédula y ruc ecuatorianos en python

Después de mucho tiempo que vuelvo a escribir en el blog, en esta ocasión quiero compartir un algoritmo hecho en python para validación de números de cédula y ruc en Ecuador. Para la realización del mismo me he basado en los contenidos de los siguientes blogs:

http://telesjimenez.blogspot.com/2011_05_01_archive.html

http://fabricioflores.wordpress.com/2013/06/03/validar-cedula-ecuatoriana-en-ruby/

A continuación el codigo de validación hecho en python:

def verificar(nro):
    l = len(nro)
    if l == 10 or l == 13: # verificar la longitud correcta
        cp = int(nro[0:2])
        if cp >= 1 and cp <= 22: # verificar codigo de provincia
            tercer_dig = int(nro[2])
            if tercer_dig >= 0 and tercer_dig < 6 : # numeros enter 0 y 6
                if l == 10:
                    return __validar_ced_ruc(nro,0)                       
                elif l == 13:
                    return __validar_ced_ruc(nro,0) and nro[10:13] != '000' # se verifica q los ultimos numeros no sean 000
            elif tercer_dig == 6:
                return __validar_ced_ruc(nro,1) # sociedades publicas
            elif tercer_dig == 9: # si es ruc
                return __validar_ced_ruc(nro,2) # sociedades privadas
            else:
                raise Exception(u'Tercer digito invalido') 
        else:
            raise Exception(u'Codigo de provincia incorrecto') 
    else:
        raise Exception(u'Longitud incorrecta del numero ingresado')

def __validar_ced_ruc(nro,tipo):
    total = 0
    if tipo == 0: # cedula y r.u.c persona natural
        base = 10
        d_ver = int(nro[9])# digito verificador
        multip = (2, 1, 2, 1, 2, 1, 2, 1, 2)
    elif tipo == 1: # r.u.c. publicos
        base = 11
        d_ver = int(nro[8])
        multip = (3, 2, 7, 6, 5, 4, 3, 2 )
    elif tipo == 2: # r.u.c. juridicos y extranjeros sin cedula
        base = 11
        d_ver = int(nro[9])
        multip = (4, 3, 2, 7, 6, 5, 4, 3, 2)
    for i in range(0,len(multip)):
        p = int(nro[i]) * multip[i]
        if tipo == 0:
            total+=p if p < 10 else int(str(p)[0])+int(str(p)[1])
        else:
            total+=p
    mod = total % base
    val = base - mod if mod != 0 else 0
    return val == d_ver

Espero pueda ser de ayuda a alguien 🙂