Como detectar la versión de Internet Explorer (JavaScript)

Recientemente hemos añadido soporte para Internet Explorer 6, ya que todavía existen muchas personas que lo utilizan y teníamos a los visitantes de esta versión “descolocados”, aunque recomendamos gratamente actualizar a Internet Explorer 7, peró como todos sabemos, el visitante siempre tiene la razón :P

El problema surge en “¿Como detectamos que versión de Internet Explorer está utilizando?”, pués bien, con este pequeño apaño en JavaScript, podemos especificar código específico para cada versión de Internet Explorer.

<script type="text/javascript">
/*
 Esta variable obtendrá el valor de la versión de JavaScript que utiliza el navegador, 
 por tanto, con este truco, puesto que cada versión de Internet explorer
 trae una específica, és suficiente para determinar que versión utiliza 
*/var ieversion=/*@cc_on function(){ switch(@_jscript_version){ case 1.0:return 3;
      case 3.0:return 4;case 5.0:return 5; case 5.1:return 5; case 5.5:return 5.5;
      case 5.6:return 6; case 5.7:return 7; }}()||@*/0;
      
/* Si es Internet Explorer 6 */if (ieversion == 6) {
 /* Código para IE 6, podemos importar por ejemplo un stilo css esclusivo */ document.write('<style type="text/css"> @import url("stilo-ie6.css");</style>');
} 
</script>

Así solo hace falta ir jugando con la variable ieversion para determinar la versión de Internet Explorer logrando volver a “colocar” de nuevo los visitantes :)

Saludos!

Acelerador de PHP APC (alternative PHP cache)

Puesto que PHP es un lenguaje interpretado, cada página tiene acceso mediante la ejecución del propio script, que este a su vez es parseado, analizado, compilado y finalmente ejecutado.

Este ciclo de cargar, analizar y compilar puede añadir una demora de tiempo en el procesamiento bastante elevado, especialmente cuando uno alberga un sitio web con un número de visitas considerable.

Los aceleradores cache de PHP tienen como objetivo solventar esta situación, reducir la demora y lograr mantener una versión compilada de la secuencia de comandos en memoria (o disco) consiguiendo en la siguiente petición servir el mismo script compilado, optimizando el ciclo natural de la ejecución de PHP.

APC tiene claras ventajas:
  • Reduce el tiempo en la carga de las páginas
  • Se puede manejar mediante el mismo PHP
  • Es transparente para la aplicación
  • Evita recompilar el código PHP por cada conexión
  • Disminuye la carga en el servidor, principalmente tiempo de CPU y consumo de memoria, lo cual es elemental para una web grande, o en particulares cuando sufren los famosos efectos de webs populares como meneame o digg.

Esto nos va a venir de perlas para aplicativos similares a drupal o wordpress u otros.

Ahora vamos a ver como podemos utilizarlo en GNU/Linux, para ello nos hará falta tener un servidor web como Apache y tener PHP instalado como módulo del mismo.

Puede que según la versión, tenga un paquete con distinto nombre, simplemente hay que seleccionar el más acorde.

Debian/Ubuntu:

$ sudo aptitude update
$ sudo apt-get install apache2-threaded-dev php5-dev php-pear make
$ sudo ln -s /usr/bin/apxs2 /usr/bin/apxs
$ sudo pecl install apc
$ sudo gedit /etc/php5/apache2/php.ini o bien /etc/php5/conf.d/apc.ini

Si en debian sale el mensaje “Sorry, I was not able to successfully run APXS.“, hay que instalar apache2-prefork-dev
$ sudo aptitude install apache2-prefork-dev

Ahora en el fichero php.ini añadiremos estas dos lineas al final:
extension=apc.so
apc.enabled=1


Finalmente reiniciamos el servidor web
$ sudo /etc/init.d/apache2 restart

Para instalaciones manuales desde los fuentes (válido para cualquier distribución Linux) previamente hay que tener instalado el servidor Apache y PHP, en este escenario, vamos a suponer que ambos programas los tenemos instalados en /usr/local, es decir:
/usr/local/apache
/usr/local/php


Ahora nos bajamos la última versión del APC de la web oficial. (actualmente la 3.0.19)

http://pecl.php.net/package/APC/

// Como usuario normal

$ cd /tmp
$ wget http://pecl.php.net/get/APC-3.0.19.tgz
$ tar xvfz APC-3.0.19.tgz
$ cd APC-3.0.19
$ /usr/local/php/bin/phpsize
$ ./configure --enable-apc --enable-apc-mmap --with-apxs=/usr/local/apache/bin/apxs --with-php-config=/usr/local/php/bin/php-config
$ make
// como usuario root
# make install

Esto nos instalará el módulo en /usr/local/php/lib/php/20060613/apc.so
Para la activación manual, editamos el fichero php.ini
# gedit /usr/local/php/etc/php.ini

Añadimos estas dos lineas alfinal del fichero php.ini:

extension=/usr/local/php/lib/php/20060613/apc.so (poner la ruta absoluta)
apc.enabled=1

Finalmente reiniciamos el servidor web
# apachectl stop
# apachectl start


Para verificar que está realmente activo el APC, podemos utilizar la linea de commandos de PHP o bien el módulo de Apache con una sencilla página PHP.

$ php -i | grep -i apc

O bien, crear una página estilo info.php:

<?php
phpinfo();
?>

Ambos commandos deberían de devolver respuesta confirmando la utilización del APC, por tanto, ya hemos logrado nuestro objetivo, nuestras aplicaciónes desde este momento y de manera transparente empezarán a utilizar el sistema de cache compilada en PHP.

De manera predeterminada, para la mayoría de usuarios las opciones por defecto son suficientes, en caso de querer experimentar comportamientos distintos, hay que leer las opciones de configuración que se deben añadir en el fichero php.ini e ir jugando con distintos valores hasta lograr los resultados esperados.

Salam Aleikoum!