Category:Técnico

Mailman : Cómo hacer backup de mis suscriptores

Una pregunta que me estuve haciendo durante algún tiempo después de instalarme el servidor de listas Mailman fue cómo demonios hacer un backup de la lista de suscriptores. Se pueden encontrar muchos scripts en la red que permiten llevar a cabo esta tarea con más o menos dificultad porque dependen de otras herramientas que podrían no estar instaladas en nuestra distribución linux, o simplemente porque nuestros conocimientos de linux y sus entresijos son limitados. Estos scripts están bien, no tengo nada contra ellos excepto lo dicho: ponerlos en marcha puede resultar complicado debido a las dependencias y a veces lo que buscamos es una solución más sencilla.

Así que hoy se me ocurrió una pregunta sencilla: ¿Qué comandos se pueden ejecutar sobre las listas vía email? (aparte de los comandos de suscripción y desuscripción). En http://www.gnu.org/software/mailman/mailman-member/node41.html encontré la respuesta, y al llegar al final del documento la esperanza inundó mi corazón:

who [PASSWORD]
See everyone who is on this mailing list.

¿Así de fácil?. Bueno, me faltaba saber a qué dirección debía mandar ese mail. Después de dar algnas vueltas por aquí y por allí (leer la documentación de mailman es una pesadilla) encontré la información que me faltaba. El email debía mandarse a la dirección

[nombre_de_la_lista]-request@[dominio_de_la_lista]

Ni corto ni perezoso mandé un mail a una de mis listas utilizando la dirección sugerida y puse en el cuerpo del mensaje «who» seguido de la contraseña de acceso a dicha lista.

La respuesta fue inmediata, aunque no recibí lo que esperaba sino el siguiente mensaje:

Los resultados del comando que ha enviado por correo electrónico más
abajo. También se ha incluido su mensaje original.
– Resultados:
Ignorando partes MIME que no son text/plain
– Proceso terminado.

Así que deduje que a mailman no le gustan los correos en formato html (la configuración por defecto de mi cliente de correo). Creé otro correo exactamente igual, pero esta vez formateado como texto plano, lo mandé y esperé unos segundos. Lo que me llegó a continuación fue exactamente lo que el manual prometía: un listado de todos los suscriptores a mi lista. Una estupenda noticia, ya podía hacer un backup de una manera rápida y sencilla sin complicarme la vida con scripts de servidor.

Nota final para usuarios exigentes: Sí, si tienes cientos de listas con miles de suscriptores en cada una de ellas y lo que quieres es un backup semanal o diario de todos esos datos, lo que necesitas es un script de servidor sin duda. Hay varios escritos en python. Este me parece bastante bueno respecto a otros que he probado: http://paulschreiber.com/blog/2006/08/30/mailman-mailing-list-backup-script/.

Borré linux y ahora Windows no arranca

Ayer estuve de chapuzas con el ordenador de mi hermana. Me pidió que le borrara las particiones de linux y le dejara sólo su Windows XP. Después de utilizar un disco de Knoppix para dejar las particiones en condiciones me di con que, como era de esperar, XP no arrancaba por sí solo.

La razón es sencilla: cuando se instala Linux, este sistema operativo instala su propio cargador de arranque en la partición linux (en el caso habitual) que acabamos de formatear, y sobreescribe el MBR apuntando a dicho cargador de arranque y eliminando el cargador que Windows trae por defecto. Después de eliminar Linux, el cargador de arranque también desaparece, así que al encender el ordenador el MBR apunta a un sitio que ya no tiene nada y salta un mensaje de error avisando que no hay sistema operativo que puede asustar a cualquiera que no sepa lo que está haciendo.

Por suerte la solución también es sencilla: sólo hay que insertar el CD de instalación de XP (si no lo tienes busca en internet los programas que señalo más abajo e intenta ejecutarlos desde un pendrive bootable), arrancarlo y cuando pregunte si deseas iniciar la consola de reparación (presionando R), hazlo. Luego nos pedirá que elijamos la instalación de Windows que se desea reparar, como lo más normal es que sólo haya 1, pulsaremos «1». Posteriormente nos pedirá la contraseña del administrador de esa instalación de Windows, que deberemos conocer (si no la conoces, estás en un problema). En este paso es importante tener en cuenta que al instalar XP no se solía pedir contraseña de administrador, por lo que a menos que la hayamos puesto explícitamente, la contraseña será vacía, por lo que bastará con presionar «enter».

Después de introducida la contraseña, si todo ha ido bien, el sistema nos dejará en la línea de comandos (o consola de recuperación), que contiene los 2 comandos que necesitaremos ejecutar desde la raíz (c:\) en este orden.

1. FIXMBR
2. FIXBOOT

Estos 2 comandos restablecen el sector de arranque de Windows, por lo que una vez ejecutados ya podemos reiniciar la máquina y bualá, Windows restablecido.

OJO: este procedimiento sólo es válido para Windows XP. Para Windows 7 el procedimiento es parecido, excepto que la utilidad se llama bootsect.exe. A esta utilidad se le debe pasar como parámetros el tipo de arranque que se desea y la letra de la unidad sobre la que se desea reparar el sector de arranque. Para el caso típico:

bootsect /nt60 C:\

No estoy seguro, pero creo que para Windows Vista el procedimiento es similar al de Windows 7.

Opciones disponibles para aplicaciones web que necesitan geoposicionamiento

Hace poco estuve trabajando en la web afterguantanamo.com y uno de los requisitos que queríamos cubrir era la posibilidad de tener la web en varios idiomas y que en función del país desde el que se visitase (después de todo se trata de un tema internacional), la web se mostrase en un idioma o en otro de manera automática. Para conseguirlo era necesario utilizar algún sistema de geoposicionamiento, por lo que me puse a investigar las opciones disponibles.

Después de mirar por aquí y por allá, encontré que el servicio de wipmania.com era una solución rápida bastante fácil de implementar que no exigía prácticamente ningún esfuerzo. Además, el servicio es gratuito, lo que lo hizo una elección muy sencilla respecto a otras soluciones de pago. Para utilizar este servicio no hay más que pasar a su servidor la consulta con la IP de la que queremos averiguar el país, y este nos devuelve un código de 2 caracteres que representa de forma unívoca a cada país. En principio, la consulta sólo se puede realizar a través de un método GET con el formato

http://api.wipmania.com/[DIRECCION_IP]?[URL]

donde [DIRECCION_IP] es la IP de la que queremos obtener el país y [URL] es la dirección de nuestra página web.

La única pega que tiene este magnífico servicio es que limitan el número de consultas que se pueden realizar por dominio y día a 10.000 (para eso hace falta el parámetro URL). Si prevemos que nuestro website puede generar más de 10.000 consultas diarias, entonces esta solución no es válida, o habría que combinarla con algún tipo de limitación interna que previera un comportamiento por defecto una vez rebasado el límite diario.

Investigando más a fondo descubrí que el API de wipmania.com también contaba con una interfaz de consulta javascript-json y -mira qué bien- si la consulta se hacía a través de este API en vez de a través del método GET anteriormente descrito, la limitación de consultas por día desaparecía, por lo tanto esta fue la solución inicial para afterguantanamo.com: al cargar la página principal se ejecutaba un script que realizaba la consulta por ajax (con jQuery para facilitar las cosas) hacia wipmania.com y realizaba una redirección una vez averiguado el código de la ciudad. El script era algo así:

$(document).ready(function(){
  var castellano = "AR,BO,CL,..."; //países de habla castellana
  var frances = "FR,CD,..."; //países de habla francesa
  var italiano = "IT,VA,..."; //países de habla italiana
  $.getJSON("http://api.wipmania.com/jsonp?callback=?", function(data) {
    if(castellano.indexOf(data.address.country_code)>-1)
      location.href="castellano/";
    else if(frances.indexOf(data.address.country_code)>-1)
      location.href="francais/";
    else if(italiano.indexOf(data.address.country_code)>-1)
      location.href="italiano/";
    else location.href="english/";
  });
})

Para completar la información he de decir que el API javascript-json devuelve muchos más datos aparte del código del país: latitude, longitude, zoom, address.city, address.country, address.country_code y address.region. Se puede encontrar una explicación más detallada de lo que significa cada uno de estos resultados aquí : http://www.wipmania.com/en/blog/geolocation-api-json-jsonp/, y por cierto también se puede descargar un listado de todos los códigos de todos los países aquí : http://static.wipmania.com/static/countries.txt.

Esta solución funciona perfectamente excepto por un pequeño detalle : la latencia o retardo que sufre la página como consecuencia de la consulta hacia un servicio externo, que en caso de wipmania.com es muy bajo, pero aun así, son 2 ó 3 segundos que se añaden a la carga inicial de la página, y yo quería que esta fuera lo más rápida posible.

GeoIP de MaxMind al rescate

A pesar de que la página funcionaba correctamente y que después de varias semanas de prueba no nos había dado ningún problema, yo no estaba contento con esos segundos de más que se añadían siempre a la carga inicial de la página. La solución para ello era conseguir de alguna forma consultar algún tipo de base de datos local que a ser posible devolviera lo mismo que Wipmania: un código de 2 letras que me permitiese identificar los países fácilmente, y obviamente yo no estaba por la labor de crear semejante tipo de base de datos.

La búsqueda me llevó al sistema propuesto por Maxmind que es precisamente eso: una base de datos local que te puedes descargar e instalar en tu servidor y que además tiene APIs para un montón de lenguajes (C, Perl, PHP, Java, Python, C#, Ruby, VB.NET, Pascal, etc). En este caso la solución también es gratuita si te conformas con pocas prestaciones (obtener información sólo acerca del país y basándose en una BD con actualización semi-frecuente) y de pago si se desean más prestaciones (información sobre ciudades e incluso poblaciones, o actualización de la BD permanente). Mi caso estaba claro: la base de datos gratuita me bastaba y me sobraba y con el API PHP la solución era perfecta.

La instalación pasa sólo por la descarga y guardado en cualquier carpeta accesible por nuestros scripts PHP del único fichero que compone la BD de países y en mi caso la descarga del API PHP “geoip.inc.php”. Una vez instalado, sólo me hizo falta añadir el siguiente código PHP en la página de inicio:

include("geoip.inc.php");
$gi = geoip_open("[ruta_hacia]/geoip.dat",GEOIP_STANDARD);
$codigo_pais = geoip_country_code_by_addr($gi,$_SERVER["REMOTE_ADDR"]);
echo "..." . $codigo_pais . "..." //meterlo en cualquier contenedor visible por javascript

y posteriormente sólo hace falta modificar el javascript original para que en vez de tomar el código de wipmania lo tome del contenedor en el que hemos escrito nuestro código sacado de la BD local. El código javascript modificado quedaría algo así:

$(document).ready(function(){
  var castellano = "AR,BO,CL,..."; //países de habla castellana
  var frances = "FR,CD,..."; //países de habla francesa
  var italiano = "IT,VA,..."; //países de habla italiana
  var codigo_pais = $("[acceso_al_contenedor]").val();
  if(castellano.indexOf(codigo_pais)>-1)
    location.href="castellano/";
  else if(frances.indexOf(codigo_pais)>-1) 
    location.href="francais/";
  else if(italiano.indexOf(codigo_pais)>-1)
    location.href="italiano/";
  else location.href="english/";
})

Ni qué decir que la latencia por consulta externa queda eliminada y que la velocidad de carga de la página ahora sólo depende de la velocidad y carga del propio servidor web. Misión cumplida.

MailEnable : Imposibilidad de personalizar mensajes de bienvenida y despedida en listas de distribución de correo.

El servidor de correo MailEnable es bastante útil para su uso a pequeña e incluso gran escala en servidores Windows; no requiere muchos conocimientos avanzados para su puesta en marcha en cuestión de minutos, es cómodo de usar, bastante completo y su versión gratuita es más que suficiente para poner en marcha un servicio de correo a pequeña y mediana escala.

Sin embargo tiene una carencia que para mí resulta imperdonable y es el hecho de que no tiene prevista la internacionalización (o i18n), lo cual sumado a que tampoco permite la posibilidad de configurar los mensajes predefinidos que manda a sus usuarios en determinadas circunstancias, hace que sea poco útil para usuarios de habla diferente de la inglesa.

En concreto, es una pena que no sea posible configurar los mensajes de bienvenida y despedida a las listas de distribución gestionadas a través de este servidor de correo. Esta carencia me impide su utilización de una forma seria.

No he probado si las versiones de pago tienen prevista la i18n o la posibilidad de personalizar estos mensajes, sin embargo me he leído de cabo a rabo la lista de características de todas la versiones y la documentación, he dedicado horas a revisar la base de conocimiento online que tienen publicada y a leer posts en su foro oficial, y no he encontrado ninguna pista que me sugiera que en las versiones de pago existan estas opciones. Para mayor pena, su servicio de soporte es de pago para las consultas relacionadas con configuración, entorno o desarrollo. Sólo son gratuitas las consultas de instalación (estrictamente referidas al proceso de instalación), licencias, y actualizaciones.

Una pena de servidor de correo desperdiciado.

OpenX : Mis banners flash no cuentan clicks

Es posible que al dar de alta un banner flash en nuestro servidor de banners OpenX nos demos cuenta de que al cabo de unas horas la cuenta de clicks del mismo sigue en 0 (-) a pesar de haber realizado varios clicks de prueba sobre el mismo. La razón es sencilla: Dicho banner tenía el enlace codificado directamente dentro del mismo banner y OpenX no ha sido capaz de reescribirlo (a pesar de haber reportado que sí lo ha hecho). La razón para que esto ocurra es que para sobreescribir el código asociado a los enlaces «hard-coded», OpenX presupone que el banner flash ha sido programado siguiendo unos patrones estándar de programación, sin embargo si dicho banner se ha programado de forma poco convencional, OpenX tendrá problemas para detectar y entender de la lógica de lo que está sobreescribiendo. En palabras tomadas de openx.org :

OpenX can’t check for every type of ActionScript and your link may be using non-standard code which is not easily detectable

Otro motivo por el que OpenX puede estar fallando a la hora de entender el código/reemplazar los enlaces del banner, es que dicho banner no haya sido producido con Adobe Flash, sino por una herramienta de terceros (hay muchas). En estos casos, el código generado también puede ser poco convencional, o simplemente la compresión realizada por dicha herramienta no ser reconocibel por OpenX. También en palabras de openx.org:

Also, if your swf banner was not created with Adobe Flash itself it could be compressed in a way that is not recognized.

La solución:
En estos casos y en general, es preferible utilizar el mecanismo que Adobe Flash pone a disposición de los usuarios para estandarizar la forma de asociar links a nuestros banners. Este estándar se llama clickTAG y es una manera de decirle a flash que ese contenido es enlazable y que dicho enlace será proporcionado desde fuera. La manera de asociar un clickTAG a un banner flash es decírselo a través del ActionScript asociado al evento release del botón asociado al banner (el que permitirá hacer el click). El código ActionScript recomendado es el siguiente:

on (release) {
	if (clickTAG.substr(0,5) == "http:") {
		getURL(clickTAG,clickTARGET);
	}
}

Notas acerca de este código:

  • La condición que rodea a la instrucción getURL no es necesaria pero sí muy recomendable para evitar que se inyecte código malicioso a nuestro banner por parte de terceros.
  • El segundo parámetro «clickTARGET» no es imprescindible, pero sí recomendable si queremos que el enlace se abra en una ventana diferente a la actual.
  • ActionScript es sensible al uso de mayúsculas/minúsculas, por lo que es importante escribir «clickTAG» y «clickTARGET» exactamente así. Por ejemplo «ClickTag» no tendría ningún significado para ActionScript.

Cómo migrar una tienda Prestashop de una ubicación a otra

Nota: Estas instrucciones son válidas para Prestashop 1.3, 1.4 y 1.5.

Los pasos a seguir para conseguir esta tarea son los siguientes:

1. Realizar backup de la base de datos de la tienda que se desea migrar:
mysqldump -u [usuario] -p -a [nombre_de_la_bd] > c:/ruta/backup.sql

2. Copiar los ficheros de nuestra tienda a la nueva ubicación.

3. Abrir el fichero /nueva_ubicacion/config/settings.inc.php y editar las líneas correspondientes a la definición de las variables __PS_BASE_URI_, _DB_NAME_, _DB_SERVER_, _DB_USER_ y _DB_PASSWORD_ para que se ajusten a la nueva ubicación y a la nueva base de datos.

4. Crear una nueva base de datos vacía e importar en la misma el backup previamente realizado.
mysql -u [usuario] -p -D [bd_nueva] < c:\ruta\backup.sql

5. Dar permisos al usuario designado en el paso 3 para que tenga acceso total a la nueva base de datos
grant all on [bd_nueva].* to [usuario]@localhost identified by "[contraseña]";
donde [usuario] y [contraseña] deben coincidir con los datos introducidos en el fichero settings.inc.php del paso3.

6. Nota: Este punto sólo es válido para Prestashop 1.3. Para 1.4 y 1.5 lee más adelante, el apartado actualizado el 20/03/2013.
Editar el valor de la variable de configuración PS_BASE_URI en la base de datos, cambiándolo por el de la nueva ubicación, que debe coincidir con el valor dado a la variable __PS_BASE_URI_ en el fichero settings.inc.php del punto 3.
update ps_configuracion set value="[nueva_ubicación]" where name="PS_BASE_URI";

7. Eliminar los archivos de la tienda de la ubicación original, así como su base de datos asociada.

Y listo, ya tenemos nuestra tienda en la nueva ubicación. Por supuesto se presupone que en la nueva ubicación ya hay un servidor web con php y mysql levantados.

Estas instrucciones son válidas también para clonar una tienda. En este caso simplemente basta con omitir el paso 7, y si alojamos el clon en la misma máquina que la tienda original, no es necesario dar de alta un nuevo usuario/contraseña para gestionar la BD, por lo que en el punto 3 sólo habría que modificar los 2 primeros parámetros y el grant hacia la nueva BD debería darse al usuario antiguo.

20/03/2013 – Actualización: Migrar Prestashop 1.4 y 1.5

Para migrar una BD de prestashop 1.5 es necesario realizar algunos cambios más:

  1. update ps_configuration set value="[nuevodominio.tld]" where name="PS_SHOP_DOMAIN" or name="PS_SHOP_DOMAIN_SSL";
  2. update ps_shop_url set domain="[nuevodominio.tld]",domain_ssl="[nuevodominio.tld]";
  3. Reemplazar en el .htaccess todas las referencias al antiguo dominio por el nuevo.

Si no se realizan estos cambios, la tienda nueva redireccionará a la URL de la tienda antigua.

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!

{ 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