Author:Juanfer

OpenX : ¿Por qué mis banners tardan en verse? ¿Por qué tarda en actualizarse el conteo de clicks e impresiones asociados a mi banner?

Cualquiera que empiece a utilizar OpenX como servidor de banners por primera vez sin duda se hecho estas preguntas. La respuesta es sencilla: OpenX utiliza un sistema de caché propio para mejorar el rendimiento de la aplicación, lo que significa que los conteos no se escriben directamente a la base de datos sino que se actualizan cada X tiempo, donde X es un valor que podemos configurar; mientras tanto la información se mantiene en memoria o en un fichero de texto, dependiendo de cómo hayamos configurado el sistema.

El tiempo de caché por defecto es 20 minutos (1200 segundos), sin embargo esto puede ser un poco molesto cuando estamos haciendo pruebas para ver cómo queda un nuevo banner en nuestra página de destino, o para intentar comprobar que la contabilización se está realizando de manera correcta (lo cual puede ser necesario cuando se incluyen banners flash con enlaces ‘hard-coded’ o incrustados).

Para cambiar este tiempo por defecto lo primero que tenemos que hacer es cambiarnos al perfil de administración : Working as > Administrator Account, y posteriormente tenemos que ir al menú Configuration > Banner Delivery Settings y cambiar el valor Time Between Banner Cache Updates.

tiempo entre actualización de chache de banners

Es posible poner 1 segundo, lo que significa que la actualización será prácticamente inmediata, sin embargo es MUY IMPORTANTE acordarnos de dejar el valor por defecto o al menos un valor mayor no menor de 10 minutos cuando terminemos de realizar nuestras pruebas, sino el rendimiento de nuestra máquina puede resentirse en caso de estar sirviendo banners a algún site con muchas visitas.

Como burlar la papelera de Mac

Aunque habitualmente no trabajo con Mac, de vez en cuando tengo que lidiar con alguno de ellos. No tengo nada contra estas bonitas máquinas, pero siempre he preferido la versatilidad de los PCs, cuestión de gustos. Últimamente me he encontrado con un problema bastante sorprendente viniendo de un sistema operativo tan avanzado como el OSX Snow Leopard: siempre que se borra un fichero, este va a la papelera de reciclaje sin que se pueda hacer nada para evitarlo. Después de mucho buscar por la red tuve que aceptar con bastante sorpresa que este sistema operativo no tenía nada parecido al útil CTRL+Suprimir que permite eliminar algo de forma definitiva en Windows.

La imposibilidad de borrar ficheros sin utilizar la papelera es más que un problema de intimidad o de ocupación innecesaria de disco (la papelera resulta realmente muy útil, sin embargo hay cosas que uno sabe con seguridad que no va a necesitar en un futuro, así que ¿para que seguir ocupando espacio con ellas?), el problema se vuelve más grave cuando se trata de unidades externas de poca capacidad como un pendrive con capacidad de -digamos- 1GB. El problema es que al eliminar un fichero de este dispositivo, OSX en realidad lo guarda en un fichero temporal dentro del mismo pendrive, lo que significa que si tengo un fichero guardado de 1GB y lo borro para poder grabar otra cosa en él, sencillamente no podré hacerlo porque el fichero de 1GB sigue ahí aunque no lo veamos. La única forma que hay de recuperar nuestro espacio es vaciando la papelera… ¿Pero y si en la papelera hay cosas que tal vez vaya a querer recuperar en un futuro? ¿no es posible -al menos- borrar ficheros selectivamente de la papelera?… NO, no es posible, así que el sistema operativo nos deja vendidos: o borramos la papelera entera o nos quedamos sin espacio en el pendrive.

Afortunadamente hay una solución. No es la solución ideal y seguramente no gustará mucho a quienes no estén acostumbrados a utilizar la consola, pero merece la pena conocerla, pues el contenido de nuestra papelera puede salvarnos de un desastre cuando menos lo esperamos y su contenido merece un respeto. La solución es bien sencilla :
1. Abrir una consola (Aplicaciones > Utilidades > Terminal.app)
2. Cambiar al directorio en el que reside el pendrive, que estará bajo /Volumes : cd /Volumes/PendriveJuan/ (atención a las mayúsculas y minúsculas). El nombre del dispositivo que buscamos es el que se muestra automáticamente en el escritorio al insertarlo. Si dudamos, cd /Volumes > ls nos dará un listado de los dispositivos disponibles.
3. Utilizar el comando rm (remove) para eliminar los ficheros deseados. Este comando se salta por completo a la papelera de reciclaje, así que acto seguido podemos cerrar la consola y guardar cuantos ficheros nuevos queramos en nuestro dispositivo dejando a buen recaudo el contenido de nuestra papelera de reciclaje.

Esperemos que Apple enmiende y pronto su estupendo OSX incorpore la posibilidad de saltarse la papelera de una manera más «a lo Mac» a la que tiene acostumbrados a sus seguidores.

Problemas para subir ficheros en PHP bajo configuraciones Windows + IIS6

El problema: Script PHP perteneciente a cualquier aplicación que debería subir imágenes al servidor vía HTTP y no lo hace. El script se ejecuta en entorno Windows + IIS6. La versión de PHP puede ser cualquiera <= 5.3.1 (podría ser también mayor, pero hablo sólo de lo que yo he probado). Varias veces me he encontrado con el mismo problema, y varias veces me ha hecho perderder el tiempo. La primera vez hasta una semana dando tumbos por la red intentando averiguar el motivo de dicho comportamiento, revisando los permisos de las carpetas de la aplicación involucradas en el proceso, revisando los scripts, revisando la configuración del php.ini, y hasta dando permisos excesivos a usuarios potencialmente peligrosos para la web. El resto de veces sólo he perdido unos minutos hasta que recordaba: ¡Ah sí, los permisos de la carpeta temporal de Windows!.

Efectivamente, el problema es que PHP sube los ficheros a una carpeta temporal antes de pasarla a su ubicación final. Esa carpeta temporal puede variar en cada instalación, pero por defecto sería «c:\windows\temp\». Es preciso verificar el valor de la variable de configuración «upload_tmp_dir» en el php.ini para asegurarse de cuál es la carpeta correcta en nuestra instalación.

Y la solución es tan simple como otorgar permiso de escritura a esta carpeta al usuario IUSR_{NOMBRE_DE_LA_MAQUINA}. Mi recomendación es configurar el php.ini para que esta carpeta no sea «c:\windows\temp\», sino una carpeta diferente como por ejemplo «c:\php\temp\upload\» por motivos de seguridad evidentes.

Cambiado esto, y supuesto que todas las demás cosas evidentes relacionadas con la subida de ficheros estén configuradas, todo irá sobre ruedas.

Problema de brillo en pantallas del nuevo iMac. La mala idea del glossy

Hace poco más de un mes compré un iMac de los nuevos con pantalla de 27″. Una preciosidad de máquina que funciona más que bien. Pero siempre hay un pero: tienen una pantalla que es incomodísima de usar porque brilla mucho. Para ver una película a oscuras es perfecta, pero para trabajar 8 horas delante de la misma resulta horrible. Y no soy el único que lo dice, a poco que se busque en internet, hay un montonazo de personas quejándose de este problema que produce dolores de cabeza, cansancio visual, dolor de cuello y espalda (debido a las malas posturas que hay que adoptar para conseguir ver bien según la iluminación de nuestro sitio de trabajo), etc., sin embargo, aunque es muy fácil encontrar las quejas, es más difícil encontrar una solución. Por parte de Apple hay mutis total, nadie dice ni pío. Según ellos todo el mundo quiere las pantallas glossy y no dan más explicaciones.

Pero navegando navegando he encontrado una solución de lo más sui-géneris. La apunta Joshua Sowin, un tipo que tiene un blog en el que habla de todo un poco y en el que comenta que después de intentar la solución más «lógica» y de descubrir que era peor que el problema, optó por una solución más drástica. La solución lógica consistía en el uso de un filtro que se pone por encima de la pantalla vendido por la empresa Photodon. Según Joshua y otros muchos usuarios de los que he leído comentarios relacionados con este filtro se produce en la pantalla un efecto de granulado que es inaceptable prácticamente para cualquier trabajo. La solución menos lógica pero mucho más efectiva consiste en quitar la capa protectora que recubre la pantalla del Mac.

El artículo completo de Joshua se puede leer aquí: http://www.fireandknowledge.org/archives/2009/04/21/a-free-easy-way-to-make-your-glossy-imac-screen-glare-free/

Se incluye un video demostrativo de cómo quitar y volver a poner la capa ¿plástica? que hay por delante de la pantalla y que es la que produce la mayor parte del molesto efecto glossy. Yo lo he hecho después de vencer el miedo inicial a romper la pantalla y he de decir que es increíblemente fácil y además es muy difícil que algo salga mal. Esta capa protectora está adherida al ordenador por magnetismo, así que sólo hay que ejercer un poco de presión en sentido inverso y se despega como por arte de magia. De todos modos recomiendo mucho ver el video antes de hacerlo.

La solución es buena además de genial, sin embargo evidentemente queda el marco de la pantalla al descubierto y se ven algunos tornillos y demás parafernalia que podría se peligrosa en una casa con niños (por poner un ejemplo), pero en un entorno de oficina no debería haber mayor problema.

Finalmente he de decir que este truco no soluciona el problema por completo porque la pantalla que hay detrás también produce reflejos, pero están lejos de ser lo molestos que son los que produce la capa protectora. Como sugiere alguien en los comentarios que se hacen en el blog de Joshua, sería un negocio redondo fabricar recambios de estas capas protectoras que no tengan el efecto glossy o incluso que eliminen por completo los reflejos de la pantalla. Quien lo fabrique probablemente se haga de oro. Si hay alguien por ahí que me avise, ¡yo compro uno!

Problema de caracteres al importar una base de datos UTF-8 en MySQL

Muchas veces es necesario trasladar bases de datos de una máquina a otra por múltiples motivos (cambio de proveedor, cambio de máquina de desarrollo, etc). La manera más cómoda de hacerlo, si se tiene acceso a las consolas MySQL de ambas máquinas es realizar un volcado en sql desde la máquina origen mediante el comando mysqldump y luego restablecer dicho volcado en la máquina de destino inyectando el script volcado anteriormente mediante la línea de comando de mysql:

mysql -h host -u usuario -p -D basededatos < fichero.sql

Si el servidor de origen y el servidor de destino están configurados exactamente igual en lo que a conjuntos de caracteres se refiere, no habrá ningún problema, sin embargo si las configuraciones son diferentes (el caso más común es utf-8 por un lado y latin-XXX por otro), al utilizar la nueva base de datos observaremos que los caracteres especiales se han convertido en ristras de caracteres raros. La manera de realizar la importación correctamente es utilizar el parámetro "--default_character_set", de modo que la línea de comando quedaría algo así:

mysql -h host -u usuario -p --default_character_set utf8 -D basededatos < fichero.sql

Es importante darse cuenta que este problema no tiene nada que ver con la conexión a la base de datos que se utilice en la aplicación en el nuevo host sino que se trata de un problema relacionado estrictamente con la utilidad de importación de mysql.

Instalación de Eventum 2.2 en un servidor Windows, con IIS

– Instalar PHP.
– Instalar MySQL.
– Instalar las extensiones GD y MySQL de PHP.
– Descargar y descomprimir los archivos de Eventum en una carpeta accesible vía web.
– Crear una base de datos vacía con el nombre que se desee y un usuario con permisos totales sobre dicha base de datos.
– Acceder a dicha carpeta vía web. El sistema nos lleva automáticamente a una pantalla de configuración. Rellenarla con los datos solicitados, en concreto el usuario y la base de datos creada anteriormente. Tener a mano también la información de configuración de la cuenta de email que se utilizará para realizar envíos de correo. Dado que es fácil que falle algo la primera vez, es conveniente marcar la opción «Drop Tables If They Already Exist», que nos garantiza que podremos volver a ejecutar la instalación si algo falla sin obtener errores de tablas duplicadas.
– Si obtenemos el error : «Details: BLOB/TEXT column ‘sup_to’ can’t have a default value» se deberá a que el servidor de base de datos utilizado es MySQL>=5 y por defecto corre en un modo algo más estricto que las versiones anteriores. La solución es cambiar la forma en la que MySQL arranca eliminado el flag «STRICT_TRANS_TABLES» DE SQL Mode. Esto se puede hacer fácilmente con el MySQL Administrator accediendo a startup variables > Advanced > SQL mode.
– Finalmente, si todo ha ido bien, obtendremos una pantalla informándonos de que Eventum ha sido correctamente configurado y que está listo para ser usado. Lo último que deberemos hacer es o bien borrar la carpeta «setup» de Eventum, o bien cambiarle los permisos para evitar que pueda ser accedida sin nuestro conocimiento, ya que si se deja abierta, cualquier usuario externo podría cambiar nuestra configuración y estropear nuestra instalación.

¿Qué es Eventum?

Por si alguien está leyendo esto pero no sabe qué demonios es Eventum, se trata de un sistema que entra en la categoría de issue/bug trackers. Este tipo de sorftware está diseñado para permitir llevar un control detallado de todas las cuestiones relacionadas con el desarrollo de software, desde la anotación de bugs y planificación para su corrección, hasta la planificación de inclusión de nuevas características, tiempos de desarrollo, fechas previstas así como planificación de versionado. Resulta especialmente útil en entornos de desarrollo colaborativos.

Coca, cocaína, Sigmund Freud y Coca Cola

Recientemente he escrito un artículo para elherbolario.com sobre la hoja de coca. Este es un pequeño extracto:

«[…] ¿Qué diferencia hay entre coca y cocaína?. A nivel de definición es fácil: la cocaína es uno de los 14 alcaloides de la coca. Esto quiere decir, que si juntamos muchas hojas de coca y por algún procedimiento X las hacemos polvo, no obtendremos cocaína, sino una sustancia de 14 alcaloides junto con otra cantidad de elementos químicos no alcaloideos cuyo efecto poco tiene que ver con el de la cocaína. Dicho de otra manera y para corregir la definición que dio Freud, la cocaína no es un concentrado de hoja de coca, sino más bien un concentrado de un componente de esta hoja. Por si fuera poco, la concentración de cocaína en la hoja de coca es muy baja y por lo tanto ingerida de forma natural no produce toxicidad grave ni genera dependencia, sino que actúa como un estimulante leve mejorando la atención y coordinación de ideas, entre otros beneficios. Siendo simplistas se podría decir que el efecto que produce una ingesta natural sería el mismo que el de tomarse un café cargado[…]

[…] los estudios modernos demuestran que una hoja contiene aproximadamente 0.7mg de “hasta” 14 alcaloides. […] en los cultivos mejor conseguidos (los realizados por encima de los 1.500msnm tienen más concentración de cocaína que los realizados por debajo de esta altura) la cocaína supone aproximadamente un 2% de los alcaloides totales de la hoja, lo que significa que se pueden obtener 0.7mg x 0.02 = 0.014mg de cocaína por hoja de coca en el mejor de los casos. Haciendo una simple multiplicación podemos deducir que para obtener 1gr de cocaína harían falta 1000/0.014 = 71429 hojas de coca […]»

Si quieres puedes seguir leyendo el artículo completo.

Configurar PHP 5.2.10 en IIS 6 con FastCGI

1. Se presupone que IIS 6 está instalado y funcionando.
2. Descargar el instalador de fastcgi de http://www.iis.net/extensions/FastCGI o del sitio que más guste (hay muchas fuentes con diferentes implementaciones). Hay que tener cuidado con descargar la versión correcta: para 32 bits o para 64. Instalarlo.
3. Descargar el instalador de PHP de http://www.php.net. Ejecutarlo. Cuando pregunte cómo se desea instalar, elegir el funcionamiento a través de FastCGI. Seleccionar las extensiones que se desee instalar y terminar el proceso de instalación.
4. Una vez instalado, pinchar en Administrador IIS -> Web Sites -> [botón derecho] -> Properties -> Home Directory -> Configuration -> Add
5. En la pantalla que aparece, poner la ruta hacia la dll de fastcgi, que por defecto se habrá instalado en c:/windows/system32/inetsrv/fcgiext.dll. En extensión añade «php» y asegúrate de que está tildada la opción «Script engine». Guardar.
6. Configura manualmente el fichero c:/windows/system32/inetsrv/fcgiext.ini (si fastcgi se instaló en otra carpeta, el .ini también se encontrará ahí). Deben añadirse las secciones [TYPES] y [PHP5] así:
[Types]
php=PHP5
[PHP5]
ExePath=[rutahacia]php-cgi.exe
7. Listo tus scripts PHP son accesibles desde cualquier dominio configurado en el IIS o que configures posteriormente. Si sólo deseas hacerlo sobre un website en particular, realiza el paso 4 sólo sobre el website en el que desees activar la ejecución de scripts PHP.

The lost symbol, de Dan Brown

No he podido esperarme a que salga en castellano y ya lo leí en inglés. El último libro de Dan Brown no me ha decepcionado, me ha encantado. Sé que se alzarán muchas voces eruditas con la queja de siempre, que si libro comercial, que si literatura barata, que si errores históricos, etc. Bien, es verdad que el estilo no es el de Shakespeare, ¿pero quién escribió la regla que decía que todos los escritores debían escribir como Borges? ¿y quién dijo que para escribir un libro de aventuras había que ceñirse a la realidad histórica?, porque el libro de Dan Brown es un libro de aventuras, rápido, fresco, que te mantiene enganchado durante horas deseando saber qué pasará en la página siguiente página tras página, ni más ni menos que eso, y a quien le apetezca profundizar sobre si los hechos relatados son o no verdad, que compre un libro de historia, al que sí se le debe exigir rigor en sus informaciones.

El libro trata el tema de la masonería desde la perspectiva de su personaje estrella, Robert Langdon, simbologista respetuoso pero escéptico sobre el significado místico de la simbología que rodea a esta organización. La acción transcurre durante 10 horas en Washington D.C. y el final te deja con esa sonrisa y esa mirada al infinito de los que se preguntan : ¿y si fuese verdad?…

Entretejida en la trama también se encuentran muchas referencias a un campo llamado «Noetics Sciences», del que yo nunca había escuchado hablar, pero mirando en Wikipedia (http://en.wikipedia.org/wiki/Institute_of_Noetic_Sciences) aprendí que se trata de una disciplina que ya cuenta con 36 añitos de existencia y que fue fundada por Edgar Mitchell, uno de los astronautas que <> pisaron la luna. Esta organización se dedica, según sus propias palabras, a «conducir y patrocinar la investigación de vanguarda sobre el potencial y poderes de la conciencia humana […] manteniendo un compromiso con el rigor científico al explorar los fenómenos que han sido largamente ignorados por la corriente dominante de la ciencia», así mismo advierten que «el Instituto no es una asociación espiritual ni política, ni tiene un único objetivo, por el contrario, respetan todo tipo de ideas y las múltiples maneras en las que se puede presentar el conocimiento […] respaldando la diversidad de perspectivas sobre los problemas sociales y científicos». Un enlace a su web aquí.

Así mismo, habla de la etimología de algunas palabras/conceptos, como «apoteosis» y «sinceridad» (entre los que recuerdo ahora) que se utilizan de forma habitual, y de las que nos quedaremos sorprendidos al aprender de dónde vienen (he comprobado que la información dada en el libro sobre estos puntos es correcta).

En definitiva, como decía al principio, el libro me ha encantado, me ha tenido enganchado una semana, he aprendido cosas nuevas y hasta he practicado y aprendido alguna nueva palabra en inglés. Gracias Dan.

Problemas en la versión 5.1.5 del conector ODBC de MySQL

La versión 5.1.5 del conector ODBC de MySQL da problemas que afectan a cualquier aplicación que lo utilice para conectarse a la base de datos. En mi caso el mensaje de error que me lanzaban diferentes página ASP era el siguiente:

«Error: File /applications/ip2country/lookup.asp Unexpected error. A trappable error
(C0000005) occurred in an external object. The script cannot continue running..»

Este error se producía de forma completamente aleatoria varios cientos de veces al día, llegando a ser terriblemente desesperante y a poner en peligro la relación con algún cliente molesto por la ristra continuada de mensajes de error en su página web.

Por supuesto inicialmente pensé que se trataba de algún bug en mi aplicación, sin embargo después de largas horas de debug conseguí llegar a la raíz: volviendo al conector antiguo (3.5) los errores desaparecían como por arte de magia. Cambiando al nuevo, pasaban pocos minutos antes de que empezara a producirse otra vez. Por supuesto la solución obvia hubiera sido volver al conector antiguo, sin embargo necesitaba las características UTF-8 del conector nuevo de las que el antiguo carecía.

Después de muchas vueltas por la red, dí con el hilo de discusión adecuado en el sitio de reporte de bugs de MySQL y encontré un parche no oficial que un usuario decía que había probado con éxito. Después de probarlo en los servidores a mi cargo puedo dar fe de que el parche funciona, aunque insisto en que no es oficial.

Para poner en marcha la nueva DLL sólo hace falta machacar la antigua y reiniciar el IIS.

El bug en el conector es bastante serio y por lo que pude averiguar, se viene arrastrando desde la versión 5.1.4 y a día de hoy (09/oct/2009) todavía no está solucionado, ni siquiera en la versión snapshot del driver. Espero que la versión final 5.1.6 lo solucione definitivamente.

El hilo de discusión al que hago referencia es el siguiente :

http://bugs.mysql.com/bug.php?id=36823

Quizá esta información sea útil para alguien más.

{ Piensa / Think }

"This is a waste of life. [...] the entire educational system in the modern day is nothing more than a cookie cutter processing plant that prepares humans for mostly predefined occupational roles. This element of human life has become so traditionally ingrained, that many falsely consider the nature of ‘having a job’ some form of human instinct. Even parents will ask their kids “What do you want to be when you grow up?” as though there was only one thing. This is disturbing and a violation of human potential." - The Zeitgeist Movement


"He aprendido que hay cosas que pueden ser comprendidas pero que nunca podrán ser explicadas con palabras sin desvirtuar su grandeza" - Andrés Pascual


"You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete." - Buckminster Fuller


"... I am the master of my fate. I am the captain of my soul." - William Ernest Henley