domingo, 30 de marzo de 2008

Validar - Cedula de Identidad Chilena (RUT)

En el año 2002 tuve la voluntad jaja de ayudar a un alguien con una pequeña función (microcodigo) que lo único que hacia, era validar la CI Chilena (RUT)...

El tema es que se volvió muy popular y desde ese entonces, de vez en cuando me llegan correos de personas anónima (supongo que de gente que esta estudiando o comenzando) consultando acerca del mismo.

En principio es muy sencillo, Pero como en aquellos tiempos tenia practicas peores de la que hoy tengo, resulta que me avergüenza un tanto jejeje.

Desde ese punto de vista, claro que puede resultar un poco confuzo para quien lo lee.

""Este es el post original""
http://www.programacion.net/foros/5/msg/13012/ (Buenos tiempos)


El Algoritmo....

Esta es la clave, si alguien entiende que el dígito verificador de nuestra cédula de identidad obedece a una formula matematica muy sencilla, lo puede implementar como sea y en lo que se le de la gana.

Mi rut (12166027-K) ....


1._ Voy a tomar la primera parte de mi cédula, cada dígito partiendo desde el ultimo, lo voy a multiplicar por el valor de una lista que avanzara y se repite del [2-7]

2._ Luego hago la diferencia entre: 11 y el (modulo 11 del valor resultante)


* Existen diferentes formas de sacar el modulo, sin embargo no creo que exista un lenguaje de programación que no tenga implementado el modulo, así que no tiene mucho sentido calcularlo con sumas y restas jeje

La regla dice que si el resultado esta entre 1-9, ese el dígito verificador,
si es 11 el dígito verificador es 0
si es 10 el dígito verificador es K





Entonces

Resolviendo para ASP.Net (Webforms), validación personalizada tanto en el cliente (JavaScript) como en el servidor (C#) seria algo así .....





function validar_rut(source, arguments){                                                

    var cedula = arguments.Value; 
    var dv = cedula
        .charAt(cedula.length-1)
        .toUpperCase();
         
    var total = 0; 
    var mul = 2;

    for (i=cedula.length-3; i>=0 ; i--){
        total = total + parseInt(cedula.charAt(i)) * mul;
        mul = mul==7 ? 2 : mul+1;
    };

    var rDv = (11 - total % 11);
    rDv = rDv == 10 ? 'K' : rDv;
    rDv = rDv == 11 ? '0' : rDv;
    arguments.IsValid = (dv == rDv);

};

Cedula Identidad
<asp:CustomValidator    
    ID="cv_cedula_identidad" 
    runat="server" 
    ErrorMessage="Cedula no identidad no valida" 
    ClientValidationFunction="validar_rut" 
    ControlToValidate="txt_cedula_identidad" />                
<br />
<asp:TextBox    ID="txt_cedula_identidad" 
                runat="server" />
<br />
<br />
<asp:Button ID="btn_submit" 
            runat="server" 
            Text="Submit" 
            onclick="btn_submit_Click" />
<br />
<br />    


Suerte

jueves, 20 de marzo de 2008

Mi primer ExtJS

Siguiendo con la "exploración", cree mi primer modulo (micromodulo jeje) para UltraGPS (www.ultragps.com) y de paso mi primer acercamiento a un RIA ( Rich Internet Application ) todo bajo ExtJS, apoyado por .Net y Hibernate ....

Un mantenedor de una relación (n-m)...., quedo rebueno.., muy simple

Ademas desde hoy, soy un fanático de la persistencia de datos, es un cambio de enfoque, de concepto muy útil.



voy a seguir con los mantenedores ... cada vez entiendo mas, el fondo ;)

lunes, 10 de marzo de 2008

IIS7 - MS$ Ajax Extension - JS Error "Sys undefined"

Esta semana me toco observar de cerca Windows 2008, la verdad es que no me detuve en las ya tan renombradas nuevas funcionalidades del sistema operativo, pero si pude jugar un rato con la nueva interfaz de IIS7.0..

no voy a hacer un review de IIS 7.0 ya que el manejo de servidores no es mi area jeje todas las bondades que alparecer son varias se puden leer en:

http://msdn.microsoft.com/msdnmag/issues/07/03/IIS7/Default.aspx?loc=es

mas que todas estas virtudes quiero enfocarme en un problema que me significo algun ligero dolor de cabeza.

Mi tarea era sencilla, El GIS - Ultramap (www.ultramap.cl) comercialmente tiene que funcionar si o si en el nuevo servidor de Microsoft.. publicidad gratis y ese tipo de cosas.

y que mejor que el recién llegado jejeje, aquel que debe interiorizarce en arquitectura,

En principio no parecia complicado (aplicación .Net, un conjunto acotado de dependencias y una base de datos Postgres que no era muy grande) nisiquiera tenia que compilar, ni nada parecido ya que moveria producción a este ambiente de pruebas

hasta ahi era todo claro, hasta que partio IIS7,

Error javascript "sys is undefined" y un signo de interrogacion enorme, ya que mas que mal movia un sitio que no era mio y por ende podia tener mas de alguna maña...

finalmente cree un ambiente en mi equipo IIS6 para reproducir el error y nada todo limpio ...., nada de archivos ofuscados que pudiesen ocultar algo o dependecias extrañas, el problema estaba en el nuevo servidor.

Resumen, después de darle un par de vueltas IIS7.0 tiene algún especie de conflicto entre la extencion de Ajax para el Framework 2.0... La solución es muy sencilla, pero no tan fácil de encontrar

http://geekswithblogs.net/lorint/archive/2007/03/28/110161.aspx

Suerte

martes, 4 de marzo de 2008

UltraGestion - Trabajo Nuevo

Están han sido las dos primeras semanas de mi nuevo trabajo, la verdad es que todo lo nuevo siempre intimida un poco, pero ya creo entender a grandes rasgos de que trata este nuevo escenario.

Hace 4 años, cuando comencé a trabajar, tenia dos objetivos, ideales claros para mi

- Aprender, cuanto pudiese aprender.

- Aportar, poder ayudar de alguna u otra manera con lo poco y nada que un informático maneja.

Durante los 4 años que trabaje para el negocio del Turismo , tuve la oportunidad de crear, de llevar acabo alguna de mis ideas, muchas de ellas inquietudes de Universidad. "Liviana Universidad"

Asi que agradezco, siempre voy a agradecer la instancia, la oportunidad, pero eso ya es pasado.

Entiendo que Ultragestion esta enfocada a la tecnología y por lo mismo siento que existe un respeto o almenos una vocación generalizada por la misma, algo que me agrada mucho.

Yo estoy en un área de mapas o GeoMap / GPS, con dos personas mas que alparecer son muy talentosas.

Lo interesante:

C# FrameWork 3.5 - LinQ - Lambda Expressions Trees
Castle Project / Monorail - MVC pattern
NHibernate
JavaScript / Prototype-based programming
ExtJS
PostgreSQL


y quien sabe alomejor pueda meter mano en:

Adobe Flex y MS$ Silverligh (WPF)....que tanto he postergado.