viernes, 16 de abril de 2010

Gasto de memoria en navegadores (otra vez)

Como ya viene siendo habitual, he hecho una comparativa no muy rigurosa de la memoria que consumen los navegadores.

  • 5 pestañas abiertas, dos de ellas con Flash

  • Mac OSX

  • Chrome 5.0.342.9

  • Chromium 4.0.303.0 (36742)

  • Safari 4.0.5

  • Firefox 3.6.3

  • Opera 10.10


Lo dicho, no es una comparativa rigurosa. Lo curioso de Chrome y Chromium es que, pese a consumir más memoria que el resto, dan la sensación subjetiva de ir bastante ligeros. Que cada pestaña y plugin corra en un proceso separado es la causa de las dos cosas: más memoria, sí, pero más "suelto" ;-)

chromium-chrome-ff-safari-opera

lunes, 5 de abril de 2010

Conversiones entre "encodings" sin pérdidas

Hace un tiempo comentaba los problemas que surgían cuando se trabaja con diferentes "encoding".
Lo más seguro hoy en día es trabajar con el mismo "encoding" en todas las capas y sistemas: bases de datos, ficheros php, plantillas html, ficheros js, configuración del servidor web, ...
Lo malo es que no siempre esto es posible. Muchas veces tenemos que integrar contenidos o hacer que dos sistemas diferentes interaccionen y cada uno puede estar configurado de diferente manera.
Para estas tareas de conversión, existen muchas herramientas y funciones. Por ejemplo, en PHP tenemos la función iconv(). Es muy sencilla de utilizar:
string iconv ( string $in_charset , string $out_charset , string $str )

El problema que surge a menudo es cuando estamos pasando de un encoding más "rico" (p. ej., UTF-8) a otro más restringido en caracteres (p. ej., ISO-8859-1). Si se aplica la función sin más, se nos puede cortar la cadena que estamos convirtiendo cuando se encuentra con un carácter extraño al "encoding" de destino (las famosas "comillas tipográficas" de los procesadores de texto, por ejemplo, dan muchos problemas).
Afortunadamente, la función iconv() está preparada para estos casos. Si se utiliza el parámetro $out_charset con la cadena //TRANSLIT, los caracteres problemáticos pueden ser convertidos a un carácter similar en el "encoding" final:
$txtFinal = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $txtOriginal);