sábado, 25 de julio de 2009

Encuentra un elemento dentro de un elemento ya seleccionado en jQuery

Digamos que has seleccionado un div llamado #posts que contiene las entradas de un blog. Pero después necesitas modificar elementos concretos que están contenidos dentro de ese div. Se haría de la siguiente manera:

$('#posts')
.find('.firstColumn')
.css('background','red')
.end()
.find('.lastColumn')
.css('background','blue');

Evento onChange de un select con jQuery

Por lo general, al asociar eventos con el magnífico, glorioso, inimitable jQuery, usaríamos la función bind, pero en el caso del evento onChange de los select debemos hacerlo de otra manera.

var selectEscogido=$('#select-a-escoger');

$(selectEscogido).change(function(){

//instrucciones

}

lunes, 20 de julio de 2009

Problema "Fatal error: allowed memory size of X exhausted"

Me ha surgido en el trabajo el siguiente problema. No me voy a molestar en cambiar demasiado el correo interno que sugería la solución.

El bloque de código que fallaba estaba localizado en otra parte de gd.func.php, al habernos visto forzados a resamplear las imágenes de otra manera (mediante la opción ‘2’ de las opciones de campo en el gestor). He comprobado que la imagen sí que conseguía subirla. Resampleaba el thumb y lo copiaba correctamente a su carpeta, pero fallaba al resamplear la imagen normal y dejaba el archivo sin resamplear dentro de uploads. De nuevo, el problema se concentraba en la función imagecreatetruecolor, pero en este caso no parecía deberse a un error de código.


Activé el ‘reporting’ de errores mediante ini_set(“display_errors”, 1); error_reporting (E_ALL | E_STRICT); , lo que me permitió ver que se estaba produciendo el siguiente error fatal:


Fatal error: allowed memory size of X exhausted (tried to allocate 49 bytes), siendo X un número cercano a 17M.


Parece que el servidor tiene asociada una memoria de trabajo baja que provoca errores en funciones que consumen considerable cantidad, como imagecreatetruecolor. Por fortuna, en este caso podemos establecer la variable memory_limit de php.ini a una cantidad superior para que tenga más margen. He corregido el problema, de momento, poniendo la siguiente orden antes de la llamada a la función imagetruecolor que fallaba:


ini_set (“memory_limit”, “20M”);


Si vuelve a fallar, habría que comprobar cuánta memoria está usando y cuánta más necesitaría, y en caso de que ya no se pueda andar cambiando los parámetros por ini_set no quedaría más remedio que sugerir al hosting que eche una mano.