Notación Húngara
La notación húngara fue ideada por Charles Simonyi, aunque fue muy popular en el siglo pasado y ha entrado en desuso aún hay personas que continuan aplicandola. Basicamente consiste en incluir el tipo de dato de una variable en su nombre de la siguiente forma:
sNombre // esta variable es un string que contiene el nombre
iEdad // esta variable es un integer que contiene la edad
A este tipo de notacion se la conoce como Notacion Hungara de Sistema, ya que lo que nos revela el nombre son detalles del tipo de datos que se esta usando en el compilador para representar el dato. Otro tipo de notacion Hungara, denominado “de Aplicacion” nos da un poco mas de informacion semantica acerca de la variable que solo el tipo de datos fisico que se usa, por ejemplo:
usNombre // un "unsafe string" con el nombre, unsafe pq quiza el string se cargo usando un formulario web y hay que validar que el nombre no tenga cosas raras que den lugar a ataques via XSS o SQLInjection.
Esta tecnica entro en desuso por varias razones pero es muy frecuente encontrarla en tablas de bases de datos donde se mete el tipo de dato de una columna en su nombre, asi que nos encontramos con nombres del tipo varchar_nombre, integer_edad, timestamp_fecha, etc.
Personalmente me desagrada mucho la Notacion Hungara por los motivos que enumero a continuación:
- En un lenguaje fuertemente tipado no aporta informacion que el compilador no nos brinde de antemano. Es discutible para la notacion hungara de aplicaction.
- Es más frecuente olvidarse para que sirve una variable que su tipo de datos.
- Es probable que tengamos que escribir más veces el nombre de una variable que las veces que no recordemos su tipo de dato.
- En los lenguajes dinamicos, y tambien tipados porque no, un vistazo en el test unitario nos da una pauta de que tipo de dato estamos manejando y las intenciones de las variables.
- Acerca mucho el código a la implementación y al mismo tiempo lo aleja del dominio del problema.
- Si desconocemos el proposito de una variable, poco nos va a ayudar conocer el tipo de dato.
Speedy, DNS y VPNs
Estando de viaje hace poco me toco tener que unirme a una red wifi conectada al mundo con un ADSL Speedy de Telefónica. Todo funcionaba perfecto hasta que tuve que conectarme a una VPN corporativa.
DNS Hijacking
La gente de Speedy es muy buena y por eso no quieren que nos quedemos sin ver un site por más que nos equivoquemos de dirección. Así, si ponemos www.algún-dominio-que-no-exista-en-internet.com el server DNS de Telefónica respondera llevandonos a una página en www.ayudaenlabusqueda.com.ar donde nos hará saber que la dirección ingresada no existe y, gracias a un convenio comercial con yahoo, nos mostrara el resultado de buscar la URL erronea.
El Mundo Real
Esto es muy lindo a simple vista, pero en realidad es una aberración, una diarrea mental que destruye la forma en que funciona internet. No quiero cargar contra los ineptos a los que se les ocurrio esta feature, yo aun recuerdo la conferencia de prensa “Presidente de Télefonica Vs Generadores de Contenidos” donde el vegetal dinosaurio no asumia su condición de carrier y queria que los sitios como google paguen un canon a telefonica porque “los cables eran de ellos”. Una burrada. Es como que el presidente de Edenor quiera que las fabricas de electrodomesticos les paguen un canon por usar su electricidad.
DNS y VPN
¿Por qué esa inocente página es una aberración? Porque cuando conectamos nuestra computadora a otra red, por ejemplo una VPN, e ingresamos una dirección en nuestro navegador que sea INTERNA DE LA VPN (por ejemplo webmail.exchange.empresa.net), lo que normalmente ocurrirá es que se haga un DNS request por la red que tenga mejor metric, osea el adsl, este responda con ‘unknown host’ y luego se repita el pedido por la vpn quien respondera con la IP INTERNA del server al que queremos acceder.
¿Qué pasa con el puto Speedy de Telefónica? En lugar de decirnos ‘Unknown Host’ nos manda a la pagina de ayuda en la busqueda haciendo que nunca podamos ver el host de nuestra VPN.
Climax
Después de putear un rato porque no podía conectar el Lotus Notes y darme cuenta de que estaba pasando pude solucionarlo cambiando los DNS de mi computadora para que use los DNS servers de Google: 8.8.8.8 y 8.8.4.4. Otra alternativa válida es cambiar las metricas de las redes, para que primero vaya a la VPN y luego al ADSL pero la primer solución me pareció más limpia.
Así que ya saben, si tienen la desgracia de tener que conectarse a internet usando Telefónica Speedy y tienen que conectarse a una VPN tengan presente esto para evitar dolores de cabeza.