lunes, febrero 05, 2007

SISE volvio a nacer, encoding la palabra mágica

Por fin pude hacerme un buen tiempo para cambiar de servidor al SISE, para los que desconozcan, hablo del Sistema Integral de Servicios Escolares implementado en la Universidad del Valle de Orizaba (UniVO), el SISE es el primer sistema en donde tuve participación en desarrollo de software, actualmente me encargo de administrarlo: base de datos, requerimientos nuevos, adaptación de opciones, configuración de plataforma, terapias con los usuarios, comidas con los jefes, bla, bla, bla, actividades que me agradan realizar. La historia alrededor del SISE ciertamente requiere un blog entero, asi que solo mencionare aspectos generales y me centrare en lo que hice el día de hoy.

SISE inicio como un proyecto presentado por 3 egresados en el primer trimeste del 2002 a la UniVO para desarrollar un sistema que integrara las actividades de la universidad, entramos a laborar el 15 de mayo del 2002, el SISE empezo a operar el 6 de enero del 2003, llevo casi 2 años de manera individual administrando y mejorando el sistema.

Después de dos discos duros "quemados" y de la insistencia de cambio de máquina para el SISE, basta decir que no corría sobre un servidor, sino sobre una computadora con características básicas, pero con mucha voluntad, nadie puede criticar la voluntad de la computadora, nadie; hace algunos meses se hizo la compra de equipo y colaborando con el departamento de cómputo de la UniVO por fin el SISE podría tener un servidor, aunque este colaborador no había traspasado el sistema al nuevo equipo, hace como 2 meses me lo traje a casa para instalarle el sistema operativo, el equipo es DELL (Pentium 4 2.8, 512 MB, 73 GB HD SCSI), le instale Fedora 5, yo era feliz con Red Hat 9, ¿porque cambiar?, lo mejor no es lo nuevo, sino lo que funciona (punto), pero me conectaron un disco SCSI, el cual no es soportado por Red Hat.

Segui al pie de la letra mi bitácora de migración (documento en Word con chingo de sentencias e instrucciones para ingenieros), en cierto momento tenía mi código fuente respaldado (claro, SISE es software libre para UniVO), la base de datos (un archivo ascii de 63 MB), el servidor nuevo configurado, todo en su lugar.

Copie el código fuente, cambie permisos, cree usuarios de linux (algunos egresados UniVO colaboran con la creación de nuevos módulos), cree usuarios de postgres con sus respectivas contraseñas, edite el archivo de configuración de apache, de postgres (para los accesos remotos), mi carpeta de trabajo, todo era excelente, faltaba el paso final, nunca me había dado errores una restauración de base de datos, entonces escribi:

psql -d sise -f /zize/LunesFeb05.out

Se creaban las tablas, me fascina ver los mensajes de esa restauración, todo en orden... bueno, no todo, comenzo a fallar por que me faltaban 2 usuarios de postgres por crear, maldita bitácora de migración, no estaba completa :(.

Volvi a intentarlo, ahora comenzo a fallar de manera drástica la copia de datos, muchos errores, demasiados para ser verdad, aunque todo se resumía en acentos y ñ's, pendejos gringos que no las usan. Pense en editar mi archivo de datos, pero me di cuenta que tenia mas de un millón de renglones, así que la idea se convirtió en la ultima alternativa

Lei 10 minutos el Internet, nadie me dio la respuesta concreta, encontre casos muy especificos con el mismo problema, la solución se resumía en estandarizar el código de carácteres para insertar y extraer los datos, elemental señor ingeniero, elemental, así que solo era cuestión de decirle a postgresql y a php que iban hablar el mismo lenguaje, con los mismos caracteres...

Supuse que tenía que volver a generar el respaldo de base de datos, pero no fue necesario, lo que hice se resume en lo siguiente:

Al crear la base de datos le indique el tipo de codificación:

CREATE DATABASE sise ENCODING 'LATIN1'

Edite el archivo de configuración de postgresql con lo siguiente:

client_encoding = latin1

La copia de datos fue satisfactoria, el primer paso estaba dado, al probar el sistema en el navegador, no se mostraban de manera correcta los mensajes, adivinaron los acentos y las ñ's, asi que en el archivo de configuración del apache edite lo siguiente:

AddDefaultCharset LATIN1

150 minutos despues el cambio estaba hecho, reinicie el servidor para probar el acceso de nuevo y funciono bien, mañana regresa a labores el SISE, esperemos no tener sonando mi celular a las 8:30 am...

1 comentario:

Anónimo dijo...

Vaya, primera vez que entro a este blog. Parece que eres una persona interesante aunque los post están un poco largos para mi gusto, si que están interesantes.

Solo he tenido oportunidad de leer los últimos dos posts (este y el anterior por supuesto) en tu primer post pareces ser una persona culta e inteligente, siempre sacando buenas notas… sin embargo en el post siguiente donde mencionas que tienes que ver algo con el área de tecnología en sistemas realmente no lo pude creer, será que postean dos personas diferentes en este blog? o será que no entendí bien el post (me suele pasar).

Lo que no logro entender es como fue posible que hayas pasado por tantos años de experiencia con los sistemas y solo hasta este momento tengas ese tipo de problemas tan triviales... y mas aun tanto tiempo para colocar dos líneas... vaya, mi conclusión es que, o estas enamorado de tus logros de niño, vives en un sueño que tu mismo has construido y realmente no tienes la mínima idea de lo que son los sistemas, o en este blog postean dos personas totalmente distintas, o será acaso que son las dos caras de la misma moneda?, en fin, sea como sea no puedo hacer mas que desearte sinceramente SUERTE en todo lo que tengas pensado realizar en el futuro.

PD. espero que en el itesm y en las otras escuelas que das catedra no des la clase de base de datos o parecidos, si es asi recuerda darle una repasada a tus apuntes de estudiante ;)