15 diciembre 2012

Mi página web no se visualiza bien en IE

Uno de los principales retos a la hora de realizar un diseño web profesional es que la página se visualice correctamente en cualquier navegador. ¿Os imagináis que Facebook o Twitter sólo se vieran bien en Internet Explorer?

Para ello, la primera premisa es realizar una programación basada en estándares web. A pesar de eso, Internet Explorer suele dar algunos problemas ya que se trata de un navegador con una interpretación de los estándares un tanto "peculiar".

Es frecuente que un diseño web se vea bien en la mayoría de navegadores pero que Internet Explorer presente problemas de visualización. Para solventarlo, hay una solución muy simple y que suele funcionar: basta con añadir el siguiente meta tag justo al inicio del <head> de la página.
<head> 
<meta http-equiv="X-UA-Compatible" content="IE=8" />
[...]
</head>

14 diciembre 2012

Ajustar el huso horario en PHP

Cuando invocamos la función string date( string $format [, int $timestamp = time() ] ) en PHP, ésta nos devuelve una cadena con formato del tiempo indicado por el parámetro $timestamp o, en el caso de no indicar ningún timestamp, del momento actual.

Un problema típico con el que nos podemos encontrar al leer la fecha y la hora actual es que el servidor se encuentre en un huso horario distinto al de la prestación del servicio. Por ejemplo, cuando el hosting está en algún punto de EEUU y el servicio se está prestando en alguna parte de Europa.

Este problema se puede solucionar fácilmente de forma sencilla con la función bool date_default_timezone_set ( string $timezone_identifier ) tal y como se muestra en este ejemplo:
<?php
   $now = time();
   date_default_timezone_set( 'Europe/Madrid' );
   $fecha = date( "d/m/Y", $now );
   $hora  = date( "H:i:s", $now );
?>
Sigue un listado con todos los husos horarios clasificados por área

11 diciembre 2012

Sincronizar el reloj con NTP en servidores Debian

Para los administradores de sistemas con multitud de equipos y servidores a su cargo es muy conveniente mantener los relojes de todos los equipos sincronizados. De ese modo, en el caso de producirse algún incidente de seguridad (pero no solo en ese caso), como todos los ficheros de log estarán sincronizados, el rastreo y secuenciación de los hechos es mucho más fácil.

Lo primero que necesitamos es instalar el paquete ntpdate.
# apt-get install ntpdate
El paso siguiente es el de sincronizar el reloj de cada sistema con un servidor de NTP. Para hacer eso basta con ejecutar el comando ntpdate nombre.del.servidor. Si nuestro equipo está detrás de un firewall es conveniente usar el parámetro -u del ntpdate para que use un puerto no privilegiado en la comunicación con el servidor NTP (ntpdate -u nombre.del.servidor).

Un servidor que funciona suficientemente bien para estos menesteres es swisstime.ethz.ch.

Sincronización automática

Vamos a asegurarnos que la sincronización se realice de forma periódica. Para ello, editaremos el fichero /etc/cron.hourly/ntp con el siguiente contenido para que se ejecute cada hora:
# vim /etc/cron.hourly/ntp
#!/bin/bash 
/usr/sbin/ntpdate -u swisstime.ethz.ch
Para asegurarnos que se ejecutará sin problemas debemos de asignar permisos de ejecución al fichero /etc/cron.hourly/ntp
# chmod a+x /etc/cron.hourly/ntp

$ ls -lF /etc/cron.hourly/ntp 
-rwxr-xr-x 1 root root 46 dec 11 13:39 /etc/cron.hourly/ntp*
Esto es todo. A partir de ahora, todos los equipos tendrán la misma (buena) hora.