Corrector OrtoTRÁGICO

Esta fue de esas oportunidades en que el plan A en la prácticamente se vuelve totalmente opuesto.

Mi idea era realizar la tarea de Estructuras de Datos en no más de una semana, y así tener el resto del tiempo (3-4 semanas) libre para dedicarme a estudiar para las pruebas. Pero debido a complicaciones del más allá, el plan cambió radicalmente a “hacer la tarea como sea, y estudia la última semana, cuando llegan todas las pruebas”.

El enunciado del problema pedía hacer un script de corrección ortográfico, en C y que funcionara en Linux, que tomara un archivo de texto con las palabras (diccionario 1), con palabras erróneas y su corrección (diciconario 2) y un archivo de prueba, que se debe corregir en base a los diccionarios. La idea es usar TDA de Listas Enlazadas para las palabras.

Hasta ahí, me asuste un poco, porque pensé que al “anudar” los Nodos, recorrerlos, o agregar/eliminar se me iban a perder los punteros. Pero nada… todo eso era simple (finalmente ese era el objetivo de la tarea), sin embargo, fue un parto el manejo de cadenas. Pensé que mi experiencia en C++ podría ayudar, leí cuanto manual hablaba de punteros, arrays, cadenas de char, etc… pero me ocurrían fallos muy curiosos:

  • Las funciones estándar de ANSI C para cadenas se comportaban en forma errática con el caracter final de cadena (o caracter nulo ”)
  • Al pedir memoria para una cadena, se caía DENTRO de un malloc
  • Las funciones que s hacían llamada al malloc que se caía, funcionanban bien en forma asilada, pero cuando las ponía dentro de un ciclo comenzaban a aparecer comportamientos erráticos, siendo que ninguna variable era estática, ni habían funciones recursivas, como para que el efecto fuera acumulativo.
  • Al llamar a las funciones problemáticas, a veces se caía luego de llamadas posteriores a otras funciones que no tenían nada que ver.

Acá esta mi primera versión.

En fin, fue un infierno tratar con cadenas de texto en C. Finalmente, gracias a un usuario del irc Powers, pude completar la maldita tarea, el domingo pasado, día antes de la entrega. Este es el producto final.

En C++ no he estado libre de problemas.

En C++ me ocurre algo más rebuscado aún. Trabajando la clase Cadena de GDT, decidí implementar el algoritmo que ocupé en la tarea para calcular la ruta al directorio de ejecución (útil para cargar archivos externos respecto a esta ruta), pero increíblemente, el mismo código, al pasarlo del main() a un método propio de la clase Cadena funciona, pero al retornar la cadena, se corrompen los primeros caracteres (¡¡¡El return me estaba fallando!!!)

Increíble, pensé que dominaba más o menos C/C++, pero veo que hay secretos + profundos que no son muy simples de resolver.

Primera vez que tuve que ocupar un depurador

Descontento mundial por Internet Explorer, la pesadilla de los Webmasters

Ayer sábado después de una agotadora clase matutina (y antes de la gran Junta Powers), pase a revisar algunas cosas a los laboratorios del departamento, y navegando en un foro, me enteré de esta noticia.

Resulta que alguien (un Webmaster de profesión, programador de sitios web para quien no sepa el término “webmaster”) envió a digg su historia de descontento contra Internet Explorer (de aquí en adelante IE). 蒷 afirma que en su trabajo, se demora un 30% del tiempo en el desarrollo completo, y 70% en ajustarlo para que funcione en IE.

Osea que sacando cuentas, podría hacer 2 sitios y un tercio extras (de igual complejidad cada uno) en el mismo tiempo, y por supuesto, ganar más. Osea que el costo de oportunidad es altísimo, y se traduce en una enorme pérdida económica.

Y no me extraña para nada, yo siento lo mismo. Desde que partí hace casi 7 años experimentando con sitios web, tengo suficiente experiencia para decir que cuesta más desarrollar un sitio con estilos y scripts que funcionen en IE que en cualquier otro navegador. Aún así, es preocupante la cantidad de sitios, incluso del sector público, que están hechos con scripts específicos para IE, impidiendo que cualquier mortal pueda acceder a ellos, y por supuesto, pasando a llevar todos los estándares mundiales oficialmente reconocidos.

Y la noticia no es nueva. Hace tiempo leí una idea sobre que los propios fanboys de Windows clamaban por hacer un boicot contra Internet Explorer 7, y no solo eso, sino que en el mismo artículo mencionan que los desarrolladores de Internet Explorer 7 declararon que no les importa arreglarlo.

Si quieren probar si su navegador es respetuoso con estos estándares, puede realizar esta sencilla prueba, que consiste en dibujar una carita feliz (smile) con diversos códigos. Por el momento Firefox 2 no pasa completamente, pero doy fe de que el motor gecko del Firefox 3 Grand Paradiso si lo hace, al igual que Opera, Konqueror y Safari.

Lo que me llama más la atención, es que el malestar es GENERALIZADO. La noticia solo ese día llevaba 7059 Diggs (gente registrada votando por la noticia), hoy revisándola de nuevo, hasta este minuto veo que lleva 7752.

Si usted es webmaster, y tiene cuenta en digg (o le indignó tanto la noticia que desee registrarse), aporte con un digg.

Contratar Telefónica significa irse a pérdida

Hace más de 3 semanas que queremos aumentar nuestro plan de Internet, y ello me ha significado PURAS PERDIDAS.

Actualmente tengo un plan de 600 KB de banda ancha conexión. La idea era dejarla en 2 MB. ¿Que sucedió?

Síntomas

Resulta que alrededor de esos días, empezó un levemente molesto ruido en la línea. No le tomamos importancia, hasta que la conexión se Internet se comenzó a caer “porque sí” en cualquier momento.

Luego descubrimos que al levantar el teléfono se escuchan los tonos del adsl por el teléfono!!! INDIGNO, ni que estuviera conectado por módem COMO HACE 10 A袿S!!!.

Esto no es nuevo, de hecho, haciendo memoria, en espacios de tiempo de algunos meses, vuelve a ocurrir.

El uso que le damos a Internet

¿Porque digo entonces que estoy perdiendo?, porque usamos la conexión para una diversidad de cosas:

Mi papá

  • Para mantener la web donde mi papá muestra sus productos.
  • Para atender emails a clientes.
  • Para estar al tanto de lo que ocurre en el mercado.
  • Para comunicarse con sus proveedores.
  • Para estar al tanto de los movimientos Bancarios de su cuenta corriente.

Mi mamá:

  • Para comunicarse con parientes en el sur.
  • Para realizar acceder a información respecto a materias educativas (es profesora), y así poder desempeñar mejor su profesión.

Mi hermano:

  • Comparte muchas labores del colegio con sus compañeros.
  • Accede a wikipedia, mira documentales, lee noticias, y se informa de la actualidad.
  • Accede a su cuenta en el preuniversitario, mira sus puntajes en los ensayos, busca guías para la PSU.

Yo:

  • Estudio Ingeniería Informática. Internet es una herramienta fundamental para mi carrera.
  • Accedo a mi cuenta en la Universidad para comprobar que mis trabajos funcionan, y los guardo allá, todo a través de SSH.
  • Leo periódicamente manuales de programación, modelos y patrones de diseño de software, técnicas para resolver tales o cuales problemas puntuales.
  • Leo noticias de tecnología, y así estoy al tanto de la actualidad de mi carrera, en que sentido avanza la industria IT.
  • Descargo el software que necesito tanto para mis estudios como para trabajar ( software libre 馃檪 ).
  • Participo en comunidades y proyectos libres, donde además comparto lo que conozco, y aprendo lo que no sé. También subo el material que ya está terminado.
  • Para comunicarme con mi nueva pega, donde me desempeño como programador, y por lo tanto, tener acceso a manuales, foros, documentación en general ES FUNDAMENTAL.

Todo eso fuera de los otros usos cotidianos, como entretención, chatear con amigos y otras cosas.

Costo versus beneficio

Sumemos el hecho de que en Chile, los servicios de conexión a Internet (ISP) son bastante caros respecto a la velocidad que se ofrece.

Si los señores de Telefónica me hacen esperar 72 horas cada vez que los llamamos, estoy perdiendo 3 días de mala calidad de mi conexión, donde cualquier cosa puede ocurrir, es decir, hay plena incertidumbre de la calidad del servicio. Y generalmente no es cosa de llamar y que vengan en 3 días, sino que pasados los 3 días es necesario volver a llamar (esto tiene un costo en sí). Osea que fácilmente puedo estar la mitad del mes comunicándome PARA QUE ME ARREGLEN EL PROBLEMA.

Podría estar PERDIENDO INGRESOS por:

  • No saber el estado de cuenta del banco.
  • No poder responder un email de un cliente.
  • No contestar normalmente el teléfono ¿y si era un cliente queriendo comprar?

Todas las anteriores significan P蒖DIDAS DIRECTAS.

Además podría perjudicar mi carrera (bastante CARA por cierto) si no tengo a tiempo información relevante a mis ramos (una fecha de prueba por ejemplo) o si no puedo acceder a un trámite (tomar los ramos), podría necesitar información para realizar un trabajo (muy a menudo, sobre todo en ramos de informática). En resumen, podría ver perjudicado mi desarrollo profesional.

Fuera del costo real, hay un importante COSTO DE OPORTUNIDAD.

Otro costo asociado es la electricidad consumida (un servicio que ha subido de precio, y seguirá subiendo) mientras espero a se restablezca la conexión, o mientras funciona más lento de lo habitual.

Considerando entonces que a duras penas se puede navegar decentemente, y que con suerte cubro algunas de las tareas que necesito llevar a cabo, lógicamente el beneficio es muy escueto.

Suman y siguen los episodios

En marzo estuvimos desconectados 3 semanas (un mes normalmente tiene 4), y en abril otras 2, osea que perdimos 1 mes y 1/4 de dinero en el costo de un servicio no recibido que igualmente se pagó, porque sino nos quedábamos sin teléfono (y más encima seguía sonando pésimo). ¿Cuanto dinero tal vez se perdió en los otros costos mencionados antes?

Más atrás, hace ya varios años, en una ocasión decidimos cortar el servicio de Internet. Resulta que el corte se pidió en Octubre-Noviembre, y finalmente se ejecutó en Enero-Febrero, es decir, pagamos 2-3 meses más por un servicio que no queríamos seguir usando (no me reten, era muy chico en ese tiempo).

Y eso no es todo.

Seguir leyendo Contratar Telefónica significa irse a pérdida

Pantallazo de mi Compiz

Aunque nunca he tenido algo Apple, a veces soy harto fanboy de la gran manzana ¿no se nota?

Image Hosted by ImageShack.us

Un saludo para Matias (el dueño del screenshot de escritorio dentro de mi screenshot 馃槢 ).

Ingredientes:

  • Sistema Operativo: Kubuntu (7.04) Feisty Fawn
  • Escritorio: Kde estilo “baghira” (disponible por los repositorios oficiales), con los colores modificados a mano.
  • Manejador de ventanas: Compiz Fusion + Fusion-icon (compilado a mano)
  • Dock: Avant Window Navigator (notese el estilo Leopard)
  • Tema de Firefox: Cobalt Firefox
  • Tema de iconos: OSXmix (disponible en KDE Look)
  • Wallpapers: Aleatorios.