| 3 objeciones |
Todo en menos de un segundo
Esta semana parece que a casi todos los supervivientes de El Reto Blogger les ha dado por ponerse a hablar de `su libro´ y yo no voy a ser menos...
Nuestra lema esta semana ha sido `menos de un segundo o nada´, ha sido algo asi como un mantra que nos hemos repetido hasta la saciedad... y es que nos hemos propuesto que ninguna de las páginas de nuestras aplicaciones tarden en cargarse más de un segundo.
Lo primero con la ayuda de Google Analytics y analizando los logs del servidor hemos hecho una relación de las páginas más visitadas, para asi centrar nuestros esfuerzos en las páginas más importantes... y dosificar el arte del Maestro.
Después hemos troceado el código incluyendo contadores después de cada conexión a la base de datos. Cuando veiamos alguna conexión que tardaba mucho en completarse, mostrábamos la SQL en pantalla y aquí es donde empezaba lo realmente interesante.
Parece mentira como la misma sentencia `diseñada´ de distintas maneras puede obtener el mismo resultado pero muchisimo más rápido. Podemos ver un ejemplo aquí, intentamos contar los registros que hay en un año y mes concreto, en la primera SQL hacemos uso de la función month() y year()... en la segunda SQL hacemos los mismo pero en el WHERE de la SQL optamos por indicar una fecha de inicio y una fecha final.
No debería haber mucha diferencia entre una y otra, pero en la primera MySQL trabaja con 26.800 registros y en la segunda sólo con 95, la diferencia de tiempo es muy grande (bueno, son décimas de segundo pero que van sumando y sumando... y nos van alejando de nuestro objetivo de no superar el segundo).
Cuando se han retocado las SQL, se han revisado los índices y aun no se ha alcanzado la meta ya comienza a ponerse la cosa un poco más complicada y llega el momento de meter la tijera: ¿realmente ese listado tiene que verse en esa pantalla? a lo mejor es más conveniente ocultarlo y dejar que el usuario sea el que decida cuando quiere verlo, pulsando en icono de despliegue [+]
También cuando el volumen de registros va creciendo hay que optar por sustituir consultas on-line por procesos batch. Muchas veces esta decisión implica que vas a perder la `información on-line´ a favor de que una información un pelín desactualizada se muestre con fluidez y por tanto de manera más cómoda para el usuario. Dependiendo del tipo de información el cambio puede merecer sin duda la pena, a un nivel agregado poner 12.502 ó 12.504... da prácticamente lo mismo (al menos en nuestra situación, si fueran valores de cotización... otro gallo cantaría).
Asi que con esas estamos ahora, repasando cosas programadas hace años para que funcionen aun mejor. No se puede decir que sea divertido... pero si que es un poco adictivo porque estás muy centrado en sumar centésimas de segundo y mientras que haces eso... no piensas en otra cosas que te preocupan.





Esto de mantener un blog actualizado todas las semanas inevitablemente requiere tener algo que contar todas las semanas... en El Reto Blogger esta semana es de temática libre y la verdad es que tengo poco que contar, me he pasado la ultima semana trabajando a media jornada para 

Es el programador o diseñador de la aplicación el que debe cuestionarse la calidad de su trabajo y no echar la culpa al usuario pretendiendo que evolucione, porque por mucho que nos pese: el usuario casi siempre tiene la razón.
El sistema es bastante rápido teniendo en cuenta que todas las imágenes asi como sus thumbs primero se suben a nuestro servidor pero luego quedan 























At the end of the day, ship the fucking thing! It’s great to rewrite your code and make it cleaner and by the third time it’ll actually be pretty. But that’s not the point—you’re not here to write code; you’re here to ship products.
En mi post 

