sábado, 21 de febrero de 2009

Creando dominios de desarrollo en local (con Mac OSX)

Cuando trabajas una web en local conviene mucho poder acceder a ella a través de un dominio "falso". Lo que yo hago es configurar los mismos dominios de verdad, pero acabados en .lan

Para ello edito /etc/hosts (previo sudo su, porque requiere permisos de root) añadiendo la linea

172.0.0.1 www.ejemplo.lan


Luego añado un virtualhost al apache, que responda a ese dominio y apunte al directorio donde esté el código:

NameVirtualHost *:80

<VirtualHost *:80>

ServerName localhost

DocumentRoot "/Users/user/Sites/"

</VirtualHost>


<VirtualHost *:80>

ServerName www.ejemplo.lan

DocumentRoot "/Users/user/Sites/www.ejemplo.lan/httpdocs"

ServerAlias ejemplo.lan

ErrorLog "logs/ejemplo-error_log"

CustomLog "logs/ejemplo-access_log" common

</VirtualHost>



Puedes hacer esto para cada dominio, pero recuerda que en /etc/hosts no debes añadir una línea para cada uno, sino ponerlos detrás del último dominio, separados por un espacio. Tampoco puedes usar willcards (comodín o *)

172.0.0.1 www.ejemplo.lan ejemplo.lan otra-web.lan www.otra-web.lan

lunes, 9 de febrero de 2009

Desactivando el "diseño de lectura" o "vista previa" de Word

Para empezar: el problema.

A veces abres un documento de word y sale en una vista extraña, que no corresponde exactamente a la vista de impresión que estás acostumbrado a usar. Desaparecen los iconos de formato, entre otras cosas.

Solución temporal: Darle al botón cerrar en medio de la barra de botones (aparece junto con un libro abierto) o ir al menú > ver > diseño de impresión.

Causa: ¡la culpa es de Outlook! Si te fijas, sólo pasa eso cuando abres un adjunto de outook.

Solución permanente: En Word, entra en Herramientas > Opciones > General y desactiva la marca en "permitir el inicio en diseño lectura"

viernes, 6 de febrero de 2009

MySQL query cache

Vale: ya tienes tu web subversionada y con un sistema para hacer deploys en producción.
¿Qué necesitas ahora? Un DEBUG! Tienes que ver cuánto tiempo tarda en cargarse la página. Menos de medio segundo está bien y menos de un segundo es razonable... si tarda más, mira dónde falla.

Pon contadores usando microtime() en diversos puntos de la página

list($usec, $sec) = explode(' ',microtime());
$cronometro['punto de interés 1'] = ((float)$usec + (float)$sec);


Reescribe o cachea las partes del código que tarden más

Y registra el tiempo que tarda cada consulta de MySQL. Si ves que hay consultas lentas usa EXPLAIN para ver por qué son lentas. Si no puedes optimizarlas y se repiten a menudo, asegúrate de que tu servidor de MySQL tiene la query_cache activada (SHOW VARIABLES LIKE 'query_cache_size'; tiene que ser > 0).

Si no está activa, usa SET GLOBAL query_cache_size = 524288; para activarla. Le he puesto 512 MB de RAM asignada a la query cache: si no tienes un servidor dedicado no sé si podrás hacer esto :-)

Es INCREÍBLE el efecto que esto tiene sobre el rendimiento.

OJO! al hacer cualquier ALTER, INSERT o UPDATE de la tabla se pierde la caché. Así que si usabas algún campo "hits" para registrar accesos a páginas de la web o similar, ya estás normalizando eso y poniéndolo en otra tabla por separado.