Preparativos

Mañana sera un dia de junta completa, de todo el dia, en el corporativo. Con las personas que caben en el area disponible.

Si el tiempo promedio de atencion son 10 minutos de la mayoria de las personas, ocho horas suena fuera de lugar.

Además, le acaban de avisar a uno de los expositores (una de las gerencias, que no soy yo) que tiene mañana que presentar dos presentaciones de 20 minutos.

Una de ellas es presentar una solucion a alterna a una propuesta que hice yo, probada, de otras empresas.

Solo me queda sentarme y ver…

Mientras siguen los problemas de impuntualidad de varias personas.

Mañana trataré de solo tener la maleta de la sub netbook que ocupa muy poco espacio, para evitar extravios del otro equipo.

Y todo notas en papel.

Mas jquery

Por lo visto ciertas personas no entienden el mensaje. Aunque ese proceso quedó hecho, se me pide modificar ahora las rutinas de baja de tres catalogos ligados al profesionista, y por lo mismo a su pantalla, siguiendo el mismo estandar de codigo. La solucion que propuse fue de 15 minutos y cumple el objetivo.

Pero no, ahora me indican que debe hacerse como el unico de los cuatro catalogos medianamente funcionales existentes, lo que implica, por cada subcatalogo:

dos funciones de java (la llamada por el gif de delete, y la que activa el ajax request).

modificar un archivo php existente para que exista, un punto de entrada que sea llamado en el ajax request

Modificar el proceso actual para que jale el innerhtml (funcional en firefox, explorer y chrome).

De puro desarollo en frio de los modulos son una hora a hora y media. Cada prueba tarda por lo menos unos 20 segundos por el ctrl-f5 para poder cargar una version modificada y no el innerhtml.

Sumando a las pruebas del innerhtml, son de uno a dos dias, tiempo suficiente para rehacer toda la aplicacion desde cero.

Jquery solucionado

Quedó pero no fue nada fácil.

Básicamente ell código manejaba un capturar contenido de inputs a variables de java para despues pasarlas a gets. Esos gets por lo mismo no pueden pasar de cierto espacio.

Lo malo, es que al final de proceso manejaba el original llamadas a gets por request, lo cual es peligroso porque pueden estar llamando cookies y no gets.

Lo mio lo hice sobre gets directos despues de la conversion de las variables java, dando un htmlentities en medio.

En horas de trabajo fueron unas nueve, y no les va a salir precisamente barato, lo bueno es que parece que si quieren nueva versión desde cero.

Mysql extraño y mas de jquery

Ya quedó en la etapa en que debo sentarme a hacer los inserts dando sanitize primero.

Unas tres horas de trabajo porque hablamos de 9 tablas(dos direcciones y dos telefonos son dos links extra cada una). Y me avisan que una junta del jueves que no se hizo se pasa para hoy a las tres. Arghhhh.

Debo considerar una media hora perdida despues en lo que vuelvo a ubicar el codigo.

Al estar haciendo pruebas en este cluster de lo del colegio (en un subdirectorio de este dominio), me di cuenta que estan pasando cosas raras con la carga de mysql del cluster. Probablemente el proveedor esta otra vez usando la misma pc como mysql server en lugar de dar una pc diferente para el mysql del cluster.

Ottra del colegio

Después de sacar notas del problema de las fechas, me encargaron otra cosa simple aparentemente pero que resulta enredadisima.

El software del colegio hecho en jquery tiene una pantalla para alta RAPIDA de profesionistas, a la que me piden anexar el historial academico, los telefonos y las direcciones.

Revisando la base de datos, los datos de persona son una tabla, los de direcciones otra, los de telefonos otra y los academicos otra.

Asi que para relacionarlas se usan tablas liga. Persona_telefonos, persona_direcciones, etc.

Pero resulta que hay una subclase de tipos de direcciones (correspondencia, casa, oficina, etc) y una subclase de telefonos (similar) y otraacademica.

Asi que lo que sería TRIVIAL si lo hubieran hecho en una base de datos normalizada (1 tabla con integridad referencial) , resulta de locos cuando son siete tablas en las que se guardan los datos, 6 las que se leen y tres punteros de last_insert_id que hay que verificar. Y como los datos de CUALQUIERA de los datos son opcionales, antes de grabar hay que verificar que los tres sean diferentes a cero.

Me aventé cuatro horas para poner el layout de jquery en una sola forma que se viera bien en chrome/explorer/firefox, y todavia falta la programacion de la introduccion de datos, mas las validaciones para evitar sql injecting.

Espero terminarlo hoy.

Notas sobre Triggers en cascada MYSQL

El día de hoy tengo una labor medio extraña. Crear un reporte en un colegio de profesionistas, en una nueva pestaña de jquery existente (modificar en cuatro lugares y crear un nuevo archivo php), para poder sacar un reporte filtrado de personas interesadas en inscribirse a el.

El problema es que necesitan filtrar por fecha, pero la tabla no tenía rango de fechas.

De entrada ya metí un campo TIMESTAMP por default cuando entren nuevos datos, pero eso no arregla los problemas anteriores; evidentemente el diseñador de la base de datos original no lo consideró.

Lo ideal sería guardar sin cambios al sistema tanto la fecha de alta del registro (el timestamp ya lo hace), como la del ultimo cambio.

Solo puede haber una Timestamp on update, asi que elegí la de alta. Se podria manejar un trigger a una tabla que actualizara el dato mediante otro trigger al a tabla original (lo he hecho) pero este caso no se puede por una limitación de Mysql así que se van a tener que quedar con solo la fecha de alta, a menos que me paguen por cambiar el código ajeno para hacer el update de los cambios (y no guardaría si se cambia en phpmyadmin)

Considrar una de las limitaciones para MYSQL: Mysql no puede utilizar o desatar triggers para actualizaciones en cascada de llaves foráneas.

Trataré de explicar este problema.

En una empresa x en la que estuve trabajando hace unos años, bajo un motor SQL2000, el área de compras mandaba pedidos de los que después se retractaba o eran con otra fecha. Entonces no era raro que alguien pusiera un pedido con fecha de entrega del 17 de julio, por ejemplo, pero en realidad les fallaba el calculo y el 12 sabían que el 13 de julio se quedaban sin nada. Entonces era práctica común cambiar la fecha de entrega deseada, y era una habilidad perfectamente posible y clara : El 12 decía que lo necesitabn el 13, pero el error humano quedaba oculto.

En su momento contrataron a una de mis PYME para darle mantenimiento/cambios a ese sistema Cuando supe de este problema la función que yo tenía era hacer unos grids que manejaran radio buttons e iconos , pero el problema de cambios de fecha se les estaba saliendo de control.

Mi solución fue :

Triggers de insert, update y delete en todas las tablas de datos, apuntando a una base de datos diferente.

Para que esto funcionara, cada usuario debñia tener un usuario diferente, así que modifique el sistema para crear los usuarios al vuelo en la base datos usando los datos del login, y al salir borrar al usuario de la base de datos.

Ventaja extra: Incluso cambios directos desde el panel de control de mssql quedaban registrados.

Desventaja 1: Cambios a la estructura de una tabla implicaban borrar relaciones a mano, borrar triggers, rediseñar los triggers, recrear relaciones a mano. Un campo nuevo en tablas de vistas, podía tardar casi cuatro horas.

Desventaja 2: Esa base de datos usaba actualizaciones en cascada (lo cual me parece una estupidez por integridad referencial y problemas de borrado en cascada no deseado ), y eso no se hubiese podido hacer en mysql.

Problema actual:

la base de datos del colegio está en MYISAM, el sistema se mantiene por pincitas por unos queries que usan insert into, y hay borrados en cascada.

Probablemente usar un sistema de triggers funciona mejor con sistema ya probado y al que no tiene sentido cambiar la estructura. Otra es crear un creador automático de triggers al vuelo, que ya hice pero que dejé en stand by cuando recordé que Mysql no acepta triggers bajo ordenes en cascada

Un futuro ex

Hace unos minutos un cliente de las PYME que maneja en su server la carga casi completa de correo (500 a 600 mensajes por hora), comenta que está haciendo una reorganización y no renovará después del pago que hará en unos días.

Ese cliente me cayó hace unos cinco años, por recomendación de dos personas que conocí en Galletas Cuétara. Segun ellos no utilizan ya el servicio, pero si no usar el servicio son 500 a 600 correos por hora, supongo que me pedirán se renueve al vencimiento. Debo de todos modos tener un plan alterno, porque después de eliminarlo a el solamente me quedan dos clientes con uso masivo de correo , y quizá pueda pasar uno al lugar que este deje vacante.

Aunque he escrito antes de hsphere, es curioso pero solamente los clientes masivos como ese (mas de 100 cuentas por correo) realmente necesitan cpanel.

Probablemente debo calcular a hacer una fusión de esos clientes masivos a mediados de octubre y migrar los dominios de clientes que usan la otra solución, a la plataforma de Ojos Alerta (cluster lobonegro)

La lealtad de Isabel

El día de hoy en camino al trabajo me encontré con una mujer que conocí y tratè unos años en la universidad privada (la ultima vez que la vi fue en 1995 o 1996), ella iba de pasajera en un Atos parado en la esquina del semáforo que cruzo para ir a mi trabajo; se le notaba amargada. El coche lo llevaba una mujer de unos 50, que la venía haciendo como lazo de cochino (diciendole de cosas).

¿Estas contenta?, pensé.

Seguramente no.

A principios de los 90 mientras trabajaba de tiempo completo al mismo tiempo iba a la universidad , y normalmente no me daba tiempo para comer, así que era normal para mi invitar a la cafetería de la universidad a una o a varias de mis compañeras de entonces, era un grupo de pocas personas, y en la medida de lo posible llegué a conocerlas bien. Una de ellas, Sonia, tenía tres novios, y por lo menos varias amistades masculinas cercanas.

Por afinidad me llevaba mejor con Isabel, y varias pláticas se dieron en relación al problema que mostraba Sonia (Génesis en Coyoacan BBS), en cuanto a la relación con su novio de la escuela ( militar administrativo de varios semestres adelante ) y Lec, un conocido mutuo que yo les presenté a Sonia e Isabel, que era miembro de los boletines electronicos, conocidos como BBS. Tengo una foto De Sonia abrazada por Lec en una ida conjunta a Chapultepec ( ibamos a ir unas 15 personas y fuimos los foristas Lion Noir, Zero, Lec, genesis Isabel y yo)

Cuando fue evidente que un día el militar iba a agarrar a Lec a tiros consideré correcto comentar de manera incidental en los BBS que ella tenía novio en la universidad (como conocí a Lec primero y por la situación en general la lealtad era con Lec y los BBS ), a lo que siguió un ataque bastante virulento de Lion Noir hacia mi. Mi respuesta fue que podía comprobarlo cualquiera que fuera a la universidad pero no esa semana (el militar no iba a ir).

La siguiente semana Lec fue varias veces a verla, justo cuando no estaba el militar.

El lunes de la siguiente semana, el militar me buscó en el salón de clases y me preguntó en los pasillos quien era el rubio de lentes. Le dije que era un conocido y las circunstancias.

Esa misma semana al llegar a la universidad me enteré que hubo un escándalo : Lec fue y el militar le mostró una pistola y amenazó a Lec. Ese día hablé con Lec unos 40 minutos en persona.

El fin de semana fui al cine con Isabel, que no era ni fue mi novia, pero que estaba en proceso de quizá serlo. Fuimos a tomar un café en el Bonds de Polanco, y recuerdo como me decía que su sueño era ir a Europa. Recuerdo que le dije que era un símbolo y que mejor se preocupara de como iba a pagar la colegiatura porque su hermana que le ayudaba ya no iba a poder y la beca que ella obtuvo no era suficiente. Se habló un poco del asunto de Lec y Genésis.
´
Hubo un gran llanto el lunes, porque el militar habló con Génesis y ella le estaba diciendo a Isabel y a otra compañera del trabajo que le costó arreglar la relación el fin de semana pero que ya todo estaba bien,

En esos días (marzo 1995) era la comida de aniversario de Coyoacán BBS, docenas de usuarios fueron. Génesis estaba con Lec a pesar de todo. Eso era rarísimo y Lion Noir me aplicó la ley del hielo. Hablé unos momentos con Isabel y cuando se desapareció es cuando vi a Lec con Génesis.

Me salí a aclarar mi cabeza. Supuse que lo mejor era definir de una vez que pasaba con Isabel y si estaba consciente de lo que estaba haciendo Sonia. Asi que dejé pasar unos minutos y hablé con una de los tres operadores de Coyoacan BBS que evidentemente estaban ahi en la fiesta. Buenos tiempos de Road Master, La bella Norma y Luisito.

Así que le pedí a Norma que llamara a Isabel afuera. Ya que vino Isabel le pregunté a solas si estaba consciente de que los dos novios de Sonia iban a provocar problemas a todos. Me dijo que sí y que si volvíamos a entrar a la fiesta. No quiso ir al cine, asi que me despedí. Sobra decir que jamás quise volver a ir al cine con Isabel ni a llevarla a su casa, y la plática sobre eso fue muy breve dos meses despúes. Dos frases pero un mundo de diferencia.

El siguiente semestre Lec no se volvió a parar en la escuela, y el militar siguió saliendo con Sonia. Supe que la relación con Lec era probablemente muy cercana todavia con Génesis, ya que oi que una compañera dio la indicación de que Sonia estaba afuera con un chico rubio de lentes.

La relación que hizo especial los semestres anteriores de universidad, entre los cinco del grupo se vio a su vez distanciada por los dos bandos que se hicieron: Sonia Isabel y otra amiga, y yo por un lado con nuevos compañeros y la otra persona. Era una situación rara. El semestre para mi fue extraño porque todas las materias de contabilidad las revalidé y lo unico que tenía que hacer entre dos clases era platicar ocasionalmente en las escaleras con la esposa de uno de mis compañeros nuevos. Salir era meterme en problemas y no quería estar en medio de una situación donde estuvieran el militar, Lec y lo que acabara pasando por el mal genio del militar (que ahí seguía pegado a Sonia en el semestre de diplomado de tesis), así que decidí cambiar el plantel.

El siguiente semestre me enteré de dos versiones de la muerte de Sonia, una decía que murió de un infarto, y otra que la mataron a balazos en un coche con un joven rubio.

No se si Isabel llegó a Europa. No creo que haya soñado con aguantar a la persona que le hablaba en el Atos. Y todo fue por la lealtad a una mujer que tenia dos novios.

PD: Coyoacán BBS murió a finales del 95 al pasar a sitio web. Sin embargo, sus dos años en línea presentaron a varios una posibilidad. Supe que Luisito Se casó con la Bella Norma.

Automatizar sitemap

Encontré un problema serio en el diseño actual que se usa en la empresa. Básicamente no hay un sitemap que considere el grado de visibilidad o de nivel de acceso.

Y de repente me cae como un mazazo.

No hay herramientas para sitios web que lean robots.txt para hacer los sitemaps o por lo menos que te deje definir el alcance de visibilidad de los bots, lo que en ambos casos lo hace totalmente inutil.

Que estupidez.

Tampoco hay herramientas de sitemap que lean el contenido de una base de datos de un open source específico considerando la visibilidad (estar publicado o no ) y el nivel de perfil.

O sea que un sitemap multidominio y multirol, debe ser un access rewrite a un script php que lo considere.