Implementamos tecnologia y es asi como lo hacemos

Convertir Numeros a Letras Python

Septiembre 11, 2008 - 3:54 pm - Posted by Camilo Nova

Ahora como pueden ver en mi evidente cambio a Python he reescrito el código que convierte de números a letras en esto (70 lineas de codigo menos que en Java y mas facil de entender):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
UNIDADES = (
    '',
    'UN ',
    'DOS ',
    'TRES ',
    'CUATRO ',
    'CINCO ',
    'SEIS ',
    'SIETE ',
    'OCHO ',
    'NUEVE ',
    'DIEZ ',
    'ONCE ',
    'DOCE ',
    'TRECE ',
    'CATORCE ',
    'QUINCE ',
    'DIECISEIS ',
    'DIECISIETE ',
    'DIECIOCHO ',
    'DIECINUEVE ',
    'VEINTE '
)
DECENAS = (
    'VENTI',
    'TREINTA ',
    'CUARENTA ',
    'CINCUENTA ',
    'SESENTA ',
    'SETENTA ',
    'OCHENTA ',
    'NOVENTA ',
    'CIEN '
)
CENTENAS = (
    'CIENTO ',
    'DOSCIENTOS ',
    'TRESCIENTOS ',
    'CUATROCIENTOS ',
    'QUINIENTOS ',
    'SEISCIENTOS ',
    'SETECIENTOS ',
    'OCHOCIENTOS ',
    'NOVECIENTOS '
)
 
def toWord(number):
 
    """
    Converts a number into string representation
    """
    converted = ''
 
    if not (0 < number < 999999999):
 
        return 'No es posible convertir el numero a letras'
 
    number_str = str(number).zfill(9)
    millones = number_str[:3]
    miles = number_str[3:6]
    cientos = number_str[6:]
 
    if(millones):
        if(millones == '001'):
            converted += 'UN MILLON '
        elif(int(millones) > 0):
            converted += '%sMILLONES ' % __convertNumber(millones)
 
    if(miles):
        if(miles == '001'):
            converted += 'MIL '
        elif(int(miles) > 0):
            converted += '%sMIL ' % __convertNumber(miles)
 
    if(cientos):
        if(cientos == '001'):
            converted += 'UN '
        elif(int(cientos) > 0):
            converted += '%s ' % __convertNumber(cientos)
 
    converted += 'PESOS'
 
    return converted.title()
 
def __convertNumber(n):
    """
    Max length must be 3 digits
    """
    output = ''
 
    if(n == '100'):
        output = "CIEN "
    elif(n[0] != '0'):
        output = CENTENAS[int(n[0])-1]
 
    k = int(n[1:])
    if(k <= 20):
        output += UNIDADES[k]
    else:
        if((k > 30) & (n[2] != '0')):
            output += '%sY %s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])
        else:
            output += '%s%s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])
 
    return output

Tags: , | 4 Comentarios »

Exportar Datos Django

Septiembre 2, 2008 - 4:52 pm - Posted by Camilo Nova

Existe una forma muy facil de exportar e importar datos en django, es muy util para cuando se necesita informacion de pruebas que tenga que ser insertada en la aplicacion al momento de hacer un ‘deploy’

Para exportar los datos de tu aplicacion simplemente haces:

python manage.py dumpdata –indent=4 –settings=archivo_settings > salida.json

Para importar los datos basta con

python manage.py loaddata salida.json

Me ha parecido excelente que django tenga esta posibilidad, cada dia me gusta mas…

Enlaces:

[1] http://docs.djangoproject.com/en/dev/howto/initial-data/

Tags: , | Comente »

Desarrolladores Django

Agosto 28, 2008 - 5:38 pm - Posted by Camilo Nova

He encontrado un sitio [1] bastante interesante donde se muestran las personas que trabajamos con Django y Python, el sitio esta desarrollado, por supuesto, en Django, y me ha parecido muy bien logrado.

Enlaces:

[1] http://djangopeople.net/axiacore/

Tags: , , | 2 Comentarios »

Entornos de Desarrollo

Julio 25, 2008 - 10:11 am - Posted by Camilo Nova

Mientras el tiempo que dure programando en JAVA, Eclipse me pareció la mejor pieza de software jamas construida, daba una especie de placer programar con este IDE, la facilidad de encontrar el autocompletado del código, la compilación al instante y muchas otras cosas que cualquier programador espera de un entorno de desarrollo venían con eclipse.

Ahora que me oriento al desarrollo con Django [1], veo que hay algunos que son nostálgicos y quieren utilizar eclipse, pero con Python. Para estas personas, hay un proyecto bastante interesante en [2] el cual junta en un solo paquete eclipse y todas las herramientas que permiten trabajar con Django, es un ahorro en tiempo de configuracion y puesta a punto bastante importante, y pues creo que hace felices a muchas personas que no quieren dejar de utilizar Eclipse.

Yo en lo personal prefiero utilizar la shell de Unix y el editor Scribes [3], alguno tiene una configuracion que recomendar?

Enlaces:

[1] http://www.djangoproject.com

[2] http://www.easyeclipse.org/site/distributions/python.html

[3] http://scribes.sourceforge.net/

Tags: , , , | Comente »

Pasando de J2EE a Django

Julio 1, 2008 - 9:46 am - Posted by Camilo Nova

Encontré esta presentación y me parece muy buena para mostrar porque pasar de J2EE a Django.


Slides from J2EE to Django Presentations at Cambrdge Python Group from PK Shiu on Vimeo.

Tags: , | Comente »

RequestContext en Django

Junio 24, 2008 - 5:35 pm - Posted by Camilo Nova

Hace varias semanas tenia un problema porque las variables de sesión, en el caso de Django, la variable que contenía toda la información del usuario no la podía ver desde una pagina distinta a la que usaba las vistas predeterminadas de Django.

El problema radicaba en que no estaba usando el RequestContext que explicitamente es recomendado usar cuando uno lee “bien” la documentación, hoy gracias a Diego Sanabria en Campus Party, me doy cuenta de mi error.

En la vista estaba devolviendo lo siguiente:

return render_to_response(’front_page.html’, { “links” : links })

Y la solución es devolver esto:

return render_to_response(’front_page.html’, { “links” : links }, context_instance=RequestContext(request) )

Que usa el RequestContext correctamente y mantiene el valor de las variables, como la de usuario a lo largo de las vistas.

Tags: , , , | Comente »

Compartir Codigo Limpiamente

Junio 19, 2008 - 6:05 pm - Posted by Camilo Nova

Desde hace mucho tiempo como desarrollador he tenido problemas con mi código, generalmente en el punto de la desesperación lo que buscamos es ayuda de otra persona que sepa, entonces vamos a foros o a canales de IRC en busca de la respuesta.

Luego de comenzar a aprender Django pase por la misma situación que describo, la de una desorientación total, por tal motivo tuve que recurrir al soporte técnico de mas alto nivel, el IRC, una vez allí recordé un problema que siempre tenia al momento de compartir mi código para que otra persona lo viera, generalmente había que enviarlo como archivo adjunto en un email y se perdía la dinámica de la conversación en este proceso.

Django es desarrollado por genios, y creo que quienes lo usan también lo son, por eso no es raro que hayan creado una aplicación que solventara el problema de compartir el código, simplemente deben usarla para que vean la utilidad, esta en dpaste.com

El uso es sencillo, si se quiere compartir con alguien algún pedazo de código en especial, esta aplicación funciona como un tablero donde se publica el código, se identifica por una URL corta y se comparte con la comunidad por 30 días.

No les parece fantastico?

Tags: , , , | Comente »

Instalar Django desde la version SVN en Ubuntu

Junio 13, 2008 - 9:20 pm - Posted by Camilo Nova

Estuve revisando la version de django que viene en los repositios de Ubuntu, pero trae algunas cosas importantes que estan implementadas en la version del SVN, por tal motivo tuve que quitar la version instalada de mi sistema e instalar la version desde SVN.

Luego de desinstalar el paquete ‘python-django’ me fui a ‘/opt’ y alli ejecute lo siguiente:

svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk

Se demora un poco en descargar pero esta bien, luego debes ver que se ha creado una carpeta llamada ‘django-trunk’, entonces lo que viene es:

cd django-trunk
python setup.py install
django-admin.py –version

Es todo, la version que instale a la fecha es la ‘0.97-pre-SVN-unknown’ lo que queda es que cada vez que se pueda se debe actualizar el repositorio con el siguiente comando:

cd /opt/django-trunk
svn update

Tags: , | Comente »

Encapsulacion en Python

Junio 10, 2008 - 10:49 am - Posted by Camilo Nova

Seguimos estudiando el lenguaje y ahora introducimos la encapsulacion con el mismo ejemplo de las clases:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env python
 
# Encapsulacion en python
class Automotor(object) :
    """Clase de la cual heredan las demas y que es del nuevo estilo en python"""
 
    def __init__(self, ensambladora, nombre) :
        self.setEnsambladora(ensambladora)
        self.setNombre(nombre)
        print "Automotor", nombre, "Creado!!!"
 
    def setEnsambladora(self, ensambladora) :
        """Determina la ensambladora"""
        self.__ensambladora = ensambladora
 
    def getEnsambladora(self) :
        """Retorna la ensambladora"""
        return self.__ensambladora
 
    def setNombre(self, nombre) :
        """Determina el nombre del automotor"""
        self.__nombre = nombre
 
    def getNombre(self) :
        """Retorna el nombre del automotor"""
        return self.__nombre
 
    #Determinamos que el unico acceso a las variables es por los metodos
    ensambladora = property(getEnsambladora, setEnsambladora)
    nombre = property(getNombre, setNombre)
 
 
class Carro(Automotor) :
    """Esta clase hereda de Automotor y sus metodos"""
    pass
 
class Motocicleta(Automotor) :
    """Esta clase hereda de Automotor y sus metodos, pero es diferente a Carro"""
    pass
 
if __name__ == '__main__':
    carro = Carro("Toyota", "Celica")
    moto = Motocicleta("Auteco", "Pulsar")
 
    print "\n\n"
    print "El carro es", carro.getNombre()
    print "La moto es", moto.getNombre()

Tags: , | Comente »

Herencia en Python

Junio 10, 2008 - 10:31 am - Posted by Camilo Nova

Codigo que muestra el manejo de la herencia en python. Aun me pregunto porque permiten herencia multiple???

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python
 
#Herencia en python
class Automotor :
    """Clase de la cual heredan las demas"""
 
    def __init__(self, ensambladora) :
        self.ensambladora = ensambladora
 
    def printEnsambladora(self) :
        print "La ensambladora es", self.ensambladora
 
class Carro(Automotor) :
    """Esta clase hereda de Automotor y sus metodos"""
    pass
 
class Motocicleta(Automotor) :
    """Esta clase hereda de Automotor y sus metodos, pero es diferente a Carro"""
    pass
 
if __name__ == '__main__':
    carro = Carro("Toyota")
    moto = Motocicleta("Auteco")
 
    carro.printEnsambladora()
    moto.printEnsambladora()

Tags: , | 2 Comentarios »

AxiaCore Blog

Seguimiento

Etiquetas

Enlaces

  • Comentarios Recientes:

    • jose maria: gracias, años tratando de borrar esas pinches carpetas! muy buen consejo. saludos
    • Camilo Nova: Que grandes palabras Aldibier, siento que entiendes mucho de esta situacion y me alegra contar con tu...
    • Camilo Nova: Hola Naty, puedes decirme que lineas no entiendes y miramos. Saludos
    • Andres: Muy buenas intenciones. Sin embargo, tengo que decir que quien administra su fundación, el señor Emilio...
    • Aldibier: Camilin, esa es la realidad del emprendimiento en Colombia y talvez no solo aquí, de eso estoy casi...
  • Enlaces Recientes:

    • Bookmarks about Consejos: - bookmarked by 1 members originally found by davedzenitis on July 14, 2008 Consejos para...
  • Archivo

    Admin