sábado, 28 de julio de 2012

Metodos Estaticos (Python)

Los metodos estaticos son aquellos metodos que se pueden ejecutar aun cuando la clase no se a instanciado.

Es decir no es necesario hacer:

p = Persona()

para llamar por ejemplo al metodo obtenerTodas

se podria hacer simplemente

personas = Persona.obtenerTodas()

Veamos un ejemplo como para que quede todo mas claro.

class Persona(object): 
    nombre = "sin nombre" 
     
    def __init__(self): 
        self.nombre = "con nombre" 
     
    def getNombre(self): 
        return self.nombre

Para poder trabajar con esta clase, lo primero que habria que hacer es instanciarla.

p = Persona()
print p.getNombre()

lo cual mostraria el mensaje "con nombre" ya que al hacer Persona(), lo que hace es llamar al constructor de la clase persona, que a su vez le da el valor "con nombre" al atributo nombre.

La forma de declarar un metodo como estatico es la siguiente:

class Persona(object): 
    nombre = "sin nombre"

    def __init__(self): 
        self.nombre = "con nombre" 

    @staticmethod     
    def getNombreStatic(self): 
        return self.nombre

    @classmethod
    def getNombreClass(self): 
        return self.nombr

La diferencia, entre el método estático y el método de clase en Python, es que mientras el método estático no recibe por defecto ningún parámetro, el método de clase recibe como primer argumento el objeto classtype, esto es, la referencia a la declaración de la clase.

# El método estático, recibiendo la clase, retorna True
print Persona.getNombreStatic(OtraClase) 
  
# Mientras que el método de clase ya recibe la clase, y retorna True
print Persona.getNombreClass()

En definitiva no hace falta instanciar la clase persona para utilizar el metodo getNombre.. :)

Espero les sirva!

viernes, 27 de julio de 2012

Validar CBU

El algoritmo de validación del CBU es bastante sencillo.

Las validaciones principales que se pueden hacer es que el CBU tenga 22 digitos numericos y que sea de una entidad financiera en particular:

Por ejemplo si queremos solo aceptar solo CBU's del BANCO NACION deberiamos validar que el CBU ingresado empiece con el numero 011.

La lista de las entidades financieras validas es la siguiente:

  • 005 A.B.N AMRO BANK N.V.
  • 007 BANCO DE GALICIA Y BUENOS AIRES S.A.
  • 010 LLOYDS TSB BANK plc.
  • 011 BANCO DE LA NACION ARGENTINA
  • 014 BANCO DE LA PROVINCIA DE BUENOS AIRES
  • 015 BANKBOSTON, NATIONAL ASSOCIATION
  • 016 CITIBANK N.A.
  • 017 BBVA BANCO FRANCES S.A.
  • 018 THE BANK OF TOKYO - MITSUBISHI, LTD.
  • 020 BANCO DE LA PROVINCIA DE CORDOBA S.A.
  • 027 BANCO SOCIETE GENERALE S.A.
  • 029 BANCO DE LA CIUDAD DE BUENOS AIRES
  • 034 BANCO PATAGONIA SUDAMERIS S.A.
  • 044 BANCO HIPOTECARIO S.A.
  • 045 BANCO DE SAN JUAN S.A.
  • 046 BANCO DO BRASIL S.A.
  • 060 BANCO DEL TUCUMAN S.A.
  • 065 BANCO MUNICIPAL DE ROSARIO
  • 072 BANCO RIO DE LA PLATA S.A.
  • 079 BANCO REGIONAL DE CUYO S.A.
  • 083 BANCO DEL CHUBUT S.A.
  • 086 BANCO DE SANTA CRUZ S.A.
  • 093 BANCO DE LA PAMPA SOCIEDAD DE ECONOMIA MIXTA
  • 094 BANCO DE CORRIENTES S.A.
  • 097 BANCO PROVINCIA DEL NEUQUEN S.A.
  • 137 BANCO EMPRESARIO DE TUCUMAN COOP. LTDO.
  • 147 BANCO B. I. CREDITANSTALT S.A.
  • 150 HSBC BANK ARGENTINA S.A.
  • 165 J P MORGAN CHASE BANK SUCURSAL BUENOS AIRES
  • 191 BANCO CREDICOOP COOP. LTDO.
  • 198 BANCO DE VALORES S.A.
  • 247 BANCO ROELA S.A.
  • 254 BANCO MARIVA S.A.
  • 259 BANCO ITAU BUEN AYRE S.A.
  • 262 BANK OF AMERICA, NATIONAL ASSOCIATION
  • 265 BANCA NAZIONALE DEL LAVORO S.A.
  • 266 BNP PARIBAS
  • 268 BANCO PROVINCIA DE TIERRA DEL FUEGO
  • 269 BANCO DE LA REPUBLICA ORIENTAL DEL URUGUAY
  • 277 BANCO SAENZ S.A.
  • 281 BANCO MERIDIAN S.A.
  • 285 BANCO MACRO BANSUD S.A.
  • 293 BANCO MERCURIO S.A.
  • 294 ING BANK N.V.
  • 295 AMERICAN EXPRESS BANK LTD. S.A.
  • 297 BANCO BANEX S.A.
  • 299 BANCO COMAFI S.A.
  • 300 BANCO DE INVERSION Y COMERCIO EXTERIOR S.A.
  • 301 BANCO PIANO S.A.
  • 303 BANCO FINANSUR S.A.
  • 305 BANCO JULIO S.A.
  • 306 BANCO PRIVADO DE INVERSIONES S.A.
  • 309 NUEVO BANCO DE LA RIOJA S.A.
  • 310 BANCO DEL SOL S.A.
  • 311 NUEVO BANCO DEL CHACO S.A.
  • 312 M. B. A. BANCO DE INVERSIONES S.A.
  • 315 BANCO DE FORMOSA S.A.
  • 319 BANCO CMF S.A.
  • 321 BANCO DE SANTIAGO DEL ESTERO S.A.
  • 322 NUEVO BANCO INDUSTRIAL DE AZUL S.A.
  • 325 DEUTSCHE BANK S.A.
  • 330 NUEVO BANCO DE SANTA FE S.A.
  • 331 BANCO CETELEM ARGENTINA S.A.
  • 332 BANCO DE SERVICIOS FINANCIEROS S.A.
  • 335 BANCO COFIDIS S.A.
  • 336 BANCO BRADESCO ARGENTINA S.A.
  • 338 BANCO DE SERVICIOS Y TRANSACCIONES S.A.
  • 339 RCI BANQUE
  • 340 BACS BANCO DE CREDITO Y SECURITIZACION S.A.
  • 386 NUEVO BANCO DE ENTRE RIOS S.A.
  • 387 NUEVO BANCO SUQUIA S.A.
  • 388 NUEVO BANCO BISEL S.A.
  • 389 BANCO COLUMBIA S.A.


Luego debe separarse la CBU en 2 bloques:

El 1º bloque contiene:
  • Banco (3 dígitos)
  • Dígito Verificador 1 (1 dígito)
  • Sucursal (3 dígitos)
  • Dígito Verificador 2 (1 digito)

    El 2º bloque contiene:
      • Cuenta (13 dígitos)
      • Dígito Verificador (1 dígito)

      Validación:

      Por ejemplo: CBU 2850590940090418135201

      Validación 1º bloque (28505909)

      • Banco = 285 (Descomponer en sus dígitos B1 = 2, B2 = 8, B3 = 5)
      • DigitoVerificador1 = 0 
      • Sucursal = 590 (Descomponer en sus dígitos S1 = 5, S2 = 9, S3 = 0)
      • DigitoVerificador2 = 9
        Obtener:

        • SUMA1 = B1*7 + B2*1 + B3*3 + DigitoVerificador1*9 + S1*7 + S2*1 + S3*3
        • SUMA1 = 2*7 + 8*1 + 5*3 + 0*9 + 5*7 + 9*1 + 0*3 = 14 + 8 + 15 + 0 + 35 + 9 + 0 = 81
          Obtener:

          • DIFERENCIA1 = 10 - ultimo digito de SUMA1 = 10 - 1 = 9
          • Si DIFERENCIA1 = DigitoVerificador2 => CBU OK


            Validación 2º bloque (40090418135201)

            • Cuenta = 4009041813520 (Descomponer en sus dígitos C1 = 4, C2 = 0, C3 = 0, C4 = 9, C5 = 0, C6 = 4, C7 = 1, C8 = 8, C9 = 1, C10 = 3, C11 = 5, C12 = 2, C13 = 0
            • Digito = 1

            Obtener:

            • SUMA2 = C1*3 + C2*9 + C3*7 + C4*1 + C5*3 + C6*9 + C7*7 + C8*1 + C9*3 + C10*9 + C11*7 + C12*1 + C13*3
            • SUMA2 = 12 + 0 + 0 + 9 + 0 + 36 + 7 + 8 + 3 + 27 + 35 + 2 + 0
            • SUMA2 = 139

            Obtener:

            • DIFERENCIA2 = 10 - ultimo digito de SUMA2 = 10 - 9 = 1
            • Si DIFERENCIA2 = Digito => CBU OK


            Espero que les sirva!.. :)..

            jueves, 19 de julio de 2012

            Etiqueta SPAN HTML.. :)

            Supongo que no sere la primera persona que se pregunta para que sirve la etiqueta <span>, aunque increiblemente mil veces me encontre con el inconveniente que esta etiqueta justamente soluciona. La etiqueta <span> permite agrupar varios elementos en línea dentro de un mismo bloque (por ejemplo, varias palabras seguidas en un párrafo), para después darles formato con la hoja de estilo. Yo antes de entender que el span servia para esto, utilizaba un <label> o creaba otro <div> u otro <p> para hacerlo.. :).

            <p>Esto muestra mas o menos como se usa <span> la etiqueta span</span></p>

            A esa etiqueta <span> que engloba la frase "La etiqueta span" se le podria dar el estilo que se desee por medio de CSS.. 

            Espero haber sido claro..

            Saludos y hasta la proximaaaaaaa!!! 




            sábado, 14 de julio de 2012

            Google AdSense

            Bueno, ya a fin de mes en teoria deberia cobrar mis primeros 100 dolares ganados a partir de la publicidad de google AdSense.

            Actualmente tengo una pagina que tiene un nivel de visitas que oscila entre 600 y 800 diarias.
            La pagina es para generar mapas de alianzas de un juego que se llama Ikariam, es un juego de estrategia on-line, de los que se denominan juegos de navegador.

            Mi pagina es:

            Ikamap

            En mi pagina pueden verse dos bloques de publicidad, uno bien a la derecha y otro bien a la izquierda. Dichas publicidades van variando de acuerdo a los deseos del gran Google, ellos saben mas o menos cuales son los intereses de las personas que entran a mi pagina, y en base a eso saben que publicidad mostrarle a unos u a otros. 

            Los pasos que hay que seguir para poner publicidad son bien sencillos.
            Primero que nada es necesario contar con una cuenta de mail del Gmail, la cual siempre sera tu identidad en la mayoria de las aplicaciones que nos brinda Google.

            Si no tiene una cuenta puede registrarse aqui:

            Registrarse a AdSense

            La mayoria de sus dudas puede sacarselas desde este foro:

            Foro AdSense

            Solo debe seguir los pasos que les indique el personal de google y pronto estaran haciendo dinero con la Web.. :)..

            Cualquier consulta no duden en hacerla, yo soy nuevo en esto tambien asi que podemos aprender juntos!.

            Como hacer funcionar Curl en Windows 7

            Tratando de correr unas paginas que estaba haciendo en mi nueva laptop, me encontre con el problema de que cuando queria activar la extension Curl, de PHP, el servidor Apache me daba el siguiente error:

            PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll' - The specified procedure could not be found.\r\n in Unknown on line 0

            Estuve leyendo un poco sobre el tema, y resulta ser que la ultima version del WAMP server que yo habia instalado era compatible con el sistema operativo ded 64bits (x64bits) pero no lo era con el sistema operativo de 64bits (x84bits), por lo cual esa incompatiblidad generaba que algunas extensiones PHP no corrieran correctamente.

            En definitiva la solucion fue sencilla. Desinstale la ultima version de WAMP server de 64bits e instale la ultima version de WAMP server de 32 bits, la cual si es compatible con x84bits.. :)

            Espero que les sirva.

            WampServer

            Some characters cannot be mapped using “Cp1252″ character encoding.

            En Eclipse ya varias veces me a pasado que cuando estoy escribiendo un codigo que contiene caracteres UTF-8, me aparece un mensaje al querer guardar el archivos que dice:

            'Some characters cannot be mapped using “Cp1252″ character encoding.'

            Esto se soluciona muy facilmente.
            1. Ir al menu Windows –> Preferences –> (Expandir la solapa) General –> (Clickear sobre) Workspace.
            2. Mirar el grupo “Text File Encoding”. Probablemente el valor por defecto sea “Cp1252″.
            3. Activa el radio que dice "Other" y selecciona “UTF-8″ del comboBox. 
            Una vez hecho esto, ya se nos permitira guardar sin problemas nuestro codigo fuente. :)