lunes, 18 de junio de 2007

Compilación e instalación de quemu-0.9.0 + kqemu-1.3.0pre11 en Linux

Orestes Leal R. [orestesleal13022@cha.jovenclub.cu]

Antes que nada un saludo a la gente de BlackHat por permitirme tan amablemente colaborar con mi humilde aporte. Hola a todos y a cada uno de ustedes. Uno de los objetivos de este artículo es dejar documentado de una vez por todas cómo compilar sin problemas (o eso supongo:) qemu y kqemu, para poder "emular" sin problemas el sistema que se nos venga en gana (si tienes suficiente RAM... of course).

Para los que no estén familiarizados, qemu es una aplicación que se encarga de crear, manejar y, entre otras cosas, hacer que se ejecute una máquina virtual, o lo que es lo mismo, un sistema sobre otro. Pues sí, muy parecido al Vmware de Win32, pero sin tanto parecido estético, digamos.

El primer problema conque me encontré en muchos casos es que los documentos sobre cómo compilar qemu (con su consiguiente beneficio, CFLAGS, CXXFLAGS, etc, ya eso es otro artículo) eran dependientes de la distribución, Debian, Slack, Suse, Redhat, Gentoo. La mayoría de la documentación relacionada estaba orientada a paquetes precompilados y sujetos a métodos de instalación dependientes, que, como todos sabemos, ocultan un proceso de pre-configuración muy beneficioso para aquel que estuviera interesado. Quiero decir que compilar los programas da una ventaja muy sustanciosa y que nos pone un paso por delante de los precompilados, más rendimiento por encima de todo y lo más importante: lo que aprendemos con ello. Es por eso que esta mini-guía es aplicable a todas las distribuciones actuales de Linux y, cómo no, también una referencia -en muchos aspectos- para otros sistemas, (BSD, etc).

Este documento está basado en la versión de qemu 0.9.0 y de kqemu 1.3.0pre11 (kqemu es un add-on de qemu, que realmente es un módulo del Kernel para acelerar la virtualización implementando rutinas optimizadas para su objetivo final). Dicho esto, si se sienten motivados y existe esa curiosidad, vamos a lo que importa y a pasar un buen rato.

Deben obtener los files necesarios:

http://fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz » 1.8 Mb
http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz » 157 Kb

Los que no puedan acceder a la web pueden obtenerlo en los repos de Debian existentes en Cuba, localizando el paquete qemu en los sources (no en los deb):

ftp://ftp.softwarelibre.cu
ftp://ftp.sld.cu
http://packages.debian.org

Hay una alternativa al final del documento para los que no puedan compilar, pero con el defecto de no tener capa de aceleración kqemu (emulación más lenta).

Vamos a darle... Si ya tienes qemu no tienes que desinstalar el otro; el prefijo de instalación será /usr/local/qemu0.9. Después ajustaremos el $PATH para que el Shell pueda encontrar los binarios que allí se alojen.

Nota sobre el Kernel:
Esta guía la estoy escribiendo sobre el Kernel 2.6.21.2, pero ése no es el punto, sino que a partir del núcleo 2.6.20 el soporte de virtualización se ha integrado para plataformas AMD e Intel con la consiguiente mejora que esto trae consigo, haciendo uso también del Intel® VT (que fue introducido en el Pentium IV, modelo seriado 662 y 672), los cuales son un set de extensiones para soportar la virtualización más comúnmente conocida como VMX.

Si tienes una de estas series del Kernel y no tienes activado esta nueva característica, recomiendo hacerlo, lo cual beneficia, claro está. Recuerde que cuando se habla de qemu se está hablando de virtualización que, sin ciertas características de los procesadores, nunca hubieran sido posibles este tipo de aplicaciones. En el Kernel puedes activar la VT en la configuración del núcleo siguiente:

Device Drivers » Virtualización

Y se presenta esto:

Como se aprecia, la selección tiene lugar como <M>, que indica que se va a compilar como un módulo más del núcleo. Si desean que la virtualización vaya insertada dentro del mismo, le asignamos con otra selección un <*>, con el consiguiente aumento (ligero) del size del Kernel.

En mi caso poseo un Intel, como se puede apreciar (diablos, ¡como me gustaría probar un AMD2!). Si no lo tienen activado, márquenlo y recompilen el Kernel (recuerden que no es obligatorio) y reinicien con el nuevo Kernel. Este paso no es requerido, pero ayuda tener un Kernel con KVM a la hora de trabajar con máquinas virtuales.

Requerimientos en la versión de GCC::

qemu es bien conocido por no compilar sobre gcc-4.x.x (al menos hasta la versión que describe este documento), por lo que es requerido tener una versión 3.x.x en el sistema para que puedan finalizar esta guía. En mi caso tengo dos versiones: gcc-4.1.2 y 3.3.6, claro está, con rutas diferentes. El compilador que uso por defecto es el gcc4 en un prefix común, y el gcc3 en /opt/gcc-3.3.6. Para que las detecciones del script configure me detecte el gcc3, en vez del gcc4, mi variable PATH luce así.

PATH="/opt/gcc-3.3.6/bin:/usr/sbin:/sbin:/bin:/usr/bin:
/usr/local/bin:/usr/local/lib:/usr/local/sbin/:/usr/X11/bin:
/usr/X11/lib:/usr/X11/lib/pkgconfig:/opt/qt/bin:
/opt/kde-3.5.6/bin:/usr/local/apache2/bin:/usr/local/MPLAYER:
/usr/local/gdb/bin"

Vean como antepongo antes que nada la ruta al directorio donde se aloja gcc3. Esto da como consecuencia que cualquier script configure (los usados en la compilación basados en la GNU Toolchain) u otros detecten que el compilador por defecto es gcc3, con lo cual van a guardar esa información en los makefiles, por ejemplo, como una entrada similar a CC=/opt/gcc-3.3.6/bin/gcc.

Si deseas apuntar a un gcc3 existente -siendo el gcc4 el establecido por defecto-, sólo ejecuta esto:

export PATH=/ruta/al_directorio_donde_se_aloja_el_gcc3/:$PATH

Esto trae como efecto que el compilador gcc3 se vuelva el compilador por defecto a menos que haya algún wrapper (modificación/implementación típica que lo impida, caso raro) de la distribución que obligue a hacer lo contrario, ya sabes, "debes" compilar qemu con gcc3... seguimos dándole.

Compilando qemu::

A veces me cuesta un poco eliminar los sources de los programas que compilo. Por eso siempre los pongo en /tmp para que el script de limpieza del sistema se encargue de hacerlo por mí. ¿Cuál es el script de limpieza? Es /etc/rc.d/init.d/cleanfs. Esto es en mi caso; es probable que en su distribución no se llame así y esté ubicado en /etc/init.d/.

Ejecutemos:
cd /tmp
tar xzvf qemu-0.9.0.tar.gz
cd qemu-0.9.0
./configure --prefix=/usr/local/qemu0.9 --enable-Alsa
make
make install

Agregue --enable-alsa si se está usando Alsa como sistema de sonido por defecto. Esto es sólo compatible con Linux y distribuciones que usen Alsa, no con el ya casi obsoleto OSS, por lo que la compilación en un sistema con OSS daría como resultado en un error, ya que se intentaría compilar contra las librerías libasound de Alsa que no existen, y habría que remover ese parámetro del configure en cuestión.

En mi caso, qemu se ha compilado contra Alsa y también contra libSDL, entre otras que son básicas (como libc, la librería estándar de C en Linux ). Veamos:

webdeveloper@root->/tmp/qemu-0.9.0$ldd /usr/local/qemu0.9/bin/qemu
linux-gate.so.1 => (0xffffe000)
libm.so.6 => /lib/libm.so.6 (0xb7eef000)
libz.so.1 => /lib/libz.so.1 (0xb7edb000)
# libasound.so.2 => /usr/lib/libasound.so.2 (0xb7e1d000)
# libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0xb7d8c000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7d74000)
libutil.so.1 => /lib/libutil.so.1 (0xb7d70000)
librt.so.1 => /lib/librt.so.1 (0xb7d67000)
libc.so.6 => /lib/libc.so.6 (0xb7c3e000)
/lib/ld-linux.so.2 (0xb7f27000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c3a000)

Si todo ha ido bien, vamos a agregar al PATH la nueva dirección para que el shell pueda encontrar el binario de qemu y qemu-img cuando lo escribamos en nuestro terminal de preferencia.

Abrimos con un editor el ~./bashrc o /etc/profile y lo modificamos para que finalmente deba quedar algo así:

PATH="/opt/gcc-3.3.6/bin:/usr/sbin:/sbin:/bin:/usr/bin:
/usr/local/bin:/usr/local/lib:/usr/local/sbin/:
/usr/X11/bin:/usr/X11/lib:/usr/X11/lib/pkgconfig:
/opt/qt/bin: /opt/kde-3.5.6/bin:/usr/local/apache2/bin:
/usr/local/MPLAYER:/usr/local/gdb/bin:/usr/local/qemu0.9/bin"

Nótese que he agregado otra ruta de búsqueda al final, aunque si ya tiene una versión de qemu instalada, agrégelo al inicio del PATH para que utilice la nueva versión. Finalizado esto ejecutamos:

source ~/.bashrc
ó
source /etc/profile

En dependencia de cual de los dos hayamos editado, source es una función interna del shell de Linux (bash), y es usada para recargar y actualizar las variables de entorno. Generalmente, esta característica es usada también por otros shells como sh, ksh, entre otros.

Pruebe a escribir qemu. La salida debe ser algo más larga que esto:

#webdeveloper@root->/tmp/qemu-0.9.0$qemu
#QEMU PC emulator version 0.9.0, Copyright (c) 2003-2007 Fabrice Bellard
#usage: qemu [options] [disk_image]
#
#'disk_image' is a raw hard image image for IDE hard disk 0
#Standard options:
#-M machine select emulated machine (-M ? for list)
#-fda/-fdb file use 'file' as floppy disk 0/1 image
#
.....

A medio camino::

Todo está listo y, si quisiéramos, podríamos comenzar a montar una máquina virtual, pero déjenme darles una recomendación: vamos a hacer las cosas como debe ser, al proporcionarle a qemu una capa de aceleración que aumentará en un 39% su velocidad, según he podido medir.

Nota sobre las cabeceras (o headers) del núcleo:
Para compilar kqemu necesitarás las cabeceras del núcleo. En mi caso, las cabeceras del 2.6.20.2 las ubiqué en /kernelsource/linux-2.6.20.2/. Si se intenta compilar kqemu con un árbol del Kernel previamente limpiado con make mrproper, la compilación falla, debido a que no encuentra ficheros con símbolos entre otros ficheros necesarios para la compilación. Así que asegúrense de por lo menos ejecutar un make menuconfig y salvar la configuración, y hacer por lo menos un make para que se creen los ficheros necesarios; no importa que no compiles el Kernel completamente como tal.

Compilando kqemu::

Regresamos un nivel detrás (estábamos compilando qemu, ¿sí?):

cd ..
tar xzvf kqemu-1.3.0pre11.tar.gz
cd kqemu-1.3.0pre11

Un ./configure --help nos muestra esto:

#webdeveloper@root->/tmp/kqemu-1.3.0pre11$./configure --help
#Usage: configure [options]
#Options: [defaults in brackets after descriptions]
#
#Standard options:
# --help print this message
# --prefix=PREFIX install in PREFIX []
# --kernel-path=PATH set the kernel path (configure probes it)
#
#Advanced options (experts only):
# --source-path=PATH path of source code [/tmp/qemu-fast/kqemu-1.3.0pre11]
# --cross-prefix=PREFIX use PREFIX for compile tools []
# --cc=CC use C compiler CC [gcc]
# --host-cc=CC use C compiler CC [gcc]
# --make=MAKE use specified make [make]
#

Para hacer las cosas con más seguridad y exactitud, vamos a ejecutar en base a donde tengas los headers del Kernel el siguiente comando (ajústelo para su caso y continúe):

./configure --kernel-path=/kernelsource/linux-2.6.20.2
make
make install

El proceso lleva unos segundos. Si todo ha ido bien, podemos cargar el módulo:

modprobe kqemu

Un lsmod | grep kqemu debería mostrarnos algo como:

kqemu 123560 1

Como sea, puede hacer una búsqueda para comprobar que el modulo está en su lugar:

find /lib/modules/$(uname -r) -name kqemu.ko

La salida debe ser algo parecida a esto:

/lib/modules/2.6.20.2/misc/kqemu.ko

¿Todo perfecto hasta el momento? ...¡genial! Hasta aquí se ha cumplido el objetivo fundamental de esta guía. De todas formas voy a poner referencias de cómo crear espacio para una máquina virtual y cargar una en base a una imagen ISO.

Creando el espacio que será usado como disco duro virtual::

Mis imágenes virtuales las pongo en /mnt/tmp_filesystem. Usted alójelas donde desee. Para crear 2 Gb de disco virtual ejecutemos:

qemu-img create virtual.img 2G

Creo que no lleva mucha explicación... Estoy creando el fichero virtual.img de 2 Gb con el parámetro create. Vamos a cargar algo para probar:

qemu -m 100 -cdrom gparted-livecd-0.2.5-3.iso -boot d virtual.img -kernel-kqemu

El parámetro -m 100 indica que qemu utilizará 100 Mb de memoria física para él. Con -cdrom gparted-livecd-0.2.5-3.iso se carga ese ISO como si estuviera en el CD-ROM. -boot indica que lo bootee desde un CD, disco, floppy, etc. Con d se indica el device que voy a utilizar con el fichero virtual.img creado como dispositivo y -kernel-kqemu activa el soporte para el acelerador kqemu. Al haber cargado el módulo kqemu se crea su dispositivo en /dev/, o sea, /dev/kqemu, donde qemu realizará funciones a través de él (si existiese).

La memoria a utilizar es variable; todo depende de su sistema, aunque si tiene poca memoria, e intenta arrancar qemu, se muestra un mensaje indicando que el sistema de ficheros shm no tiene suficiente espacio. En este caso se puede hacer lo siguiente:

umount /dev/shm
mount -t tmpfs -o size=109m none /dev/shm

...o los megas que desee, siempre teniendo en cuenta que se recomienda la mitad de la memoria física -o algo más-, todo depende.

Alternativa rápida (dependiente de Internet):
Si el proceso de compilación no se ha podido realizar por cualquier causa, puede bajarse binarios de qemu, ya compilados para Linux-X86 en el URL:

http://fabrice.bellard.free.fr/qemu/qemu-0.9.0-i386.tar.gz

Debes copiarla/descomprimirla en /. El único problema es que la virtualización decaerá en su rendimiento, ya que kqemu no existe. Como sea, se puede emular; aunque cuando inicie qemu se queje de que /dev/kqemu no existe, puede suprimir el mensaje pasando a qemu el parámetro:

-no-kqemu

Continuar leyendo

Hablemos de compilación

Krlo [blackhat4all@gmail.com]

Para todos nosotros, los compiladores son programas que traducen un código fuente a un código objeto. Estos traductores han permitido que los lenguajes puedan alcanzar mayores grados de abstracción y claridad en su sintaxis. Estamos ajenos a cómo el CPU realiza lo que necesitamos; el código compilado es el encargado de explicárselo. El objetivo de este artículo es introducirnos en el proceso de compilación, cómo funciona a grandes rasgos y cuáles son sus principales características.

[CóDIGO FUENTE] -> (COMPILADOR) -> [CóDIGO OBJETO]

El proceso de compilación está dividido en diferentes etapas con propósitos individuales, pero que juntos alcanzan la tarea final: traducirnos nuestro código. El código objeto o final no tiene que ser específicamente código máquina, puede perfectamente ser un lenguaje intermedio como el Byte Code de Java o el MSIL de .NET. He dividido el trabajo en las etapas que conforman la compilación.

1ra: Análisis Lexicológico o Lexicográfico::

Todo lenguaje está formalizado por una gramática, que define cuáles son las características del mismo. Define, por ejemplo, cuáles son los caracteres terminales: operadores, delimitadores, palabras claves, características de los identificadores, etc. El Analizador Lexicológico o Lexer, se encarga de convertir todo el código fuente en una secuencia de tokens, que no son más que esos caracteres terminales. Los ejemplos siguientes nos ayudarán:

Código fuente 1: int a := 25;
Cadena de tokens: INT,ID,ASIG,CONST,SEMICOLON.

Código fuente 2: int b:= (a*2)+4;
Cadena de tokens: INT,ID,ASIG,LP,ID,MULT,CONST,RP,PLUS,CONST,SEMICOLON.

Las comas las puse para aclararlo un poco, pues el Lexer sólo devuelve una secuencia de tokens y se come todos los espacios, cambios de líneas, comentarios y tabulaciones que escribimos en nuestro código original. Hay lenguajes como Python que son indentados (ver referencias), donde las tabulaciones y saltos de líneas cumplen un objetivo; pero en la mayoría de ellos podemos escribir todo un programa en una sola línea.

El Lexer también trabaja con el Gestor de Errores, que acumula todos los errores en el código detectables por el compilador: los llamados errores en tiempo de compilación. El Lexer es capaz de detectar todo lo que no es válido para la gramática, como identificadores que empiezan con un número y operadores indefinidos (3 +(4@5) // la arroba no pinta nada). La Tabla de Símbolos se encarga de ir acumulando todos los campos o identificadores que se definan en el programa; luego, cuando el Lexer encuentre lo que él supone que sea un identificador, lo agrega a la Tabla.

El resultado final del Lexer es, como dijimos, una secuencia de tokens, pero éstos pueden a su vez contener atributos. Por ejemplo, el ID guarda su nombre, CONST puede ser numérico o secuencia de caracteres; luego guarda su tipo y el valor que contiene.

2da Etapa: Análisis Sintáctico::

Este analizador también se conoce como Parser y es el encargado de reconocer si el orden de los tokens es correcto, además de generar árboles de análisis sintácticos. El análisis sintáctico se especifica mediante una gramática libre de contexto.

Es imprescindible hablar un poco de las gramáticas si queremos ver cómo funcionan los compiladores. Una gramática está compuesta por objetos terminales (son los identificadores, constantes, operadores...), objetos no terminales (son expresiones booleanas, aritméticas...) y un conjunto de reglas que transforman una secuencia de terminales y no terminales en otra. El estudioso Noam Chomsky (amigo de Cuba, ha salido en las Mesas Redondas analizando cuestiones políticas) definió una jerarquía de gramáticas para clasificarlas de acuerdo a la estructura de sus reglas.

Las Gramáticas Libres del Contexto son aquellas cuyas reglas tienen la siguiente forma:

A-> x, donde A es un No terminal y x es una secuencia de terminales y no terminales cualesquiera.

Entrando en nuestro problema nuevamente, un lenguaje de programación está definido por una gramática -en muchos casos libre del contexto. Las reglas no son más que la sintaxis de los mismos, por ejemplo:

<asignación> -> <variable> < := > <expresión>

Donde <asignación>, <variable> y <expresión> son no terminales, luego tienen a su vez otras reglas que los derivan, y <:=>, que es un terminal. El hecho de definir los lenguajes de esta manera nos permite estructurar un programa en forma de árbol, llamado árbol de derivación.

Dada la siguiente gramática veremos cómo la flecha roja del ejemplo genera el árbol de derivación para A:= A+B:

<sent_asig> -> <var> := <expresión>
<expresión> -> <expresión> + <término> | <expresión> - <término>|<término>
<término> -> <término> * <factor> | <término> / <factor>|<factor>
<factor> -> ( <expresión> ) |<var> | <num>
<var> -> A | B | C | D | ... |Z
<num> -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Trata ahora de generar el árbol siguiente, correspondiente a la sentencia C:=D-E*F:

3ra Etapa: Análisis Semántico (AS)::

Toda gramática tiene una sintaxis y una semántica propia. La sintaxis son las reglas que determinan cómo se deben escribir las oraciones en el caso de los lenguajes comunes, y la semántica le da el significado a estas composiciones. El AS es el encargado de interpretar lo que estamos escribiendo, verificando lo siguiente:

  • Verificar que las variables han sido declaradas previamente cuando se usan.
  • Comprobación de tipos en las expresiones.
  • Comprobación de los parámetros de una función. El tipo de los parámetros deben coincidir entre el llamado y la definición.
  • Elección de la función u operador en caso de sobrecarga o polimorfismo.

Cuando no se cumple lo anterior, se emiten errores al Gestor de Errores que ya vimos anteriormente. El AS es el encargado de construir el Árbol de Sintaxis Abstracta (ASA), dado el árbol hecho por el Parser.

A la izquierda de la figura hay un árbol de derivación hecho por el Parser y a la derecha un ASA hecho por el Analizador Semántico. Como podemos percibir, el ASA es más específico que el árbol de sintaxis logrado por el Parser, pues adiciona a los nodos del árbol atributos que describen su función y elimina algunos innecesarios.

4ta Etapa: Generación de Código Intermedio::

El código intermedio tiene varios usos. Puede ser un lenguaje de alto nivel diferente (generalmente C), para el cual ya existe un compilador eficiente. Esta solución se aplica comúnmente a lenguajes declarativos como Prolog y Haskell.

La segunda -y de gran importancia en el código intermedio- es que sirve de plataforma para varios lenguajes y diferentes tipos de computadoras. Por ejemplo, si queremos escribir en cinco lenguajes unos programas para correrlos en tres arquitecturas de computadoras diferentes, necesitamos 5*3 compiladores. Si tenemos un código intermedio, necesitamos cinco para llevar cada lenguaje a éste y otros tres para convertirlo en el código de máquina específico. Comparamos 5*3 con 5+3 y quedamos convencidos; ¿se imaginan como sería con todos los lenguajes que soporta .NET (C#, VB, J#, C++, Python...)?

El código intermedio también posibilita el polimorfismo entre lenguajes. La idea es diseñar un carro en Visual Basic y su conductor en C#, pues como ambos terminan en IL (Intermediate Language de .NET) son claramente compatibles.

Existen muchos códigos intermedios, como el Byte Code de Java, el MSIL de Microsoft, o el mismo C. No me propongo definir ninguno en específico, pues creo que nos llevamos la idea de qué se trata. Son independiente de la máquina (hasta cierto punto), no tienen en cuenta características como la arquitectura del procesador, el número de registros del mismo o la funcionalidad de estos. Son lenguajes de alto nivel, pero más orientados a la generación de código máquina.

5ta Etapa: Optimización de Código Intermedio::

Muchos compiladores dividen todo el proceso en Front End y Back End. El primero es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Toda esta parte es independiente a la plataforma para la que se compila. La segunda etapa, Back End, se encarga de generar el código máquina.

A partir de ahora estamos en Back End, trabajando en base a una plataforma específica (puede ser Intel, Mac, o cualquier otra). Idealmente, los compiladores deben producir código objeto tan bueno como el producido a mano por un programador experto. En la realidad, este objetivo raramente es alcanzado. Sin embargo, el código puede ser mejorado en tiempo y espacio usando algoritmos eficientes.

Concluyendo, la idea es mejorar el código objeto final preservando el significado original del programa, realizando sólo optimizaciones seguras. Las optimizaciones están alrededor de mejorar la velocidad de ejecución y disminuir tanto el tamaño del programa como sus necesidades de memoria.

6ta Etapa: Generación de Código Objeto::

Ahora nos toca generar el código ensamblador y tomaremos como ejemplo el de la tecnología i383. En otras palabras, las representaciones intermedias dejarlas a nivel de MOV, ADD y goto.Vamos a ver dos ejemplos solamente y de forma muy abstracta, pues esta etapa es sumamente compleja.

Intermedio:
if <condición>
then <sentencia1>
else <sentencia2>

Ensamblador:
;resultado de condición lo guardo en tmp
if tmp == false goto label_false
<código de sentencia1>
goto label_fin
label_false:
<código de sentencia2>
label_fin:

Intermedio:
A = B+C;

Ensamblador:
MOV ebx, BYTE PTR [B]
MOV ecx, BYTE PTR [C]
ADD ebx,ecx
MOV [A], ebx

Conclusiones::

El código que genera todo el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (ver en referencias: linker). No obstante, ya todo el trabajo duro quedó aquí.

Como pudimos apreciar, compilar es una tarea larga que toma cierto tiempo para el CPU. Pero buenos compiladores nos reducen el margen para futuros errores en tiempo de ejecución y nos optimiza el código; luego vale la pena esperar que hagan su trabajo.

No quiero terminar sin hablar de ANTLR, no es más que una de esas herramientas que nos ayuda en la creación de compiladores. Posee características que lo recomiendan para construir una herramienta procesadora de lenguajes, por ejemplo: a diferencia de otras herramientas, que solamente se encargan de una de las fases del proceso antes mencionadas, ANTLR se encarga del análisis lexicográfico y del sintáctico -además de dejar parte del trabajo hecho para el semántico. Genera código para C++, Java, Phyton y C# y, lo mejor, es independiente de la plataforma.

El proceso completo de compilación quedaría de la siguiente manera:

Para saber más...

Continuar leyendo

Wikipedia: la enciclopedia libre

charlie_mtp [neyquesada@infomed.sld.cu]

"La enciclopedia libre que todos podemos editar" es el lema que considero uno de los mayores logros de la red Infomed. Wikipedia, enciclopedia plurilingüe, basada en la tecnología wiki, es escrita de forma colaborativa por voluntarios, permitiendo que la gran mayoría de los artículos sean modificados por cualquier persona con acceso mediante un navegador web. Desde hace bastante tiempo es uno de los accesos a páginas internacionales más notables que tenemos a nuestra disposición, sin embargo no oigo a muchos usuarios de la red cubana de salud hablar de ello. No sé si es un problema de desconocimiento; sólo he podido apreciar el poco uso que se le da. Sin embargo, desde su concepción, Wikipedia no ha ganado terreno solamente en popularidad, sino que su éxito ha propiciado la aparición de proyectos hermanos.

Por esta razón es que me he dedicado a escribir un artículo sobre ella. El proyecto comenzó el 15 de enero de 2001, fundada por Jimmy (Jimbo) Wales y Larry Sanger, como complemento de la enciclopedia escrita por expertos, Nupedia. Wikipedia tiene -por el momento- más de 5 385 000 artículos, incluyendo más de 1 778 383 en su edición en inglés y, a finales de febrero de 2006, alcanzó la cifra de 1.000.000 de usuarios registrados. Existe, sin embargo, controversia sobre su fiabilidad; hay que reconocer que no se puede dar como un hecho todo lo que allí leemos, debido a que puede ser un artículo aún no revisado o contener un error no corregido; pero fuera de esto es una fuente bastante fidedigna que abarca tantos puntos de vistas como puede acerca de un tema.

Catorce ediciones superan los 100.000 artículos: inglés, alemán, francés, japonés, polaco, italiano, sueco, holandés, portugués, español, chino, ruso, finés y noruego.

El nombre de esta enciclopedia surgió por la unión de wiki, que proviene de wiki wiki (rápido, en hawaiano) y pedia, proveniente de paideia (educación, en griego clásico).

El crecimiento de Wikipedia ha sido aproximadamente exponencial en varias de las ediciones con mayor número de artículos.

Es desarrollada en el sitio web http://www.wikipedia.org, haciendo uso de un software wiki, término originalmente usado para el WikiWikiWeb.

Existen tres características esenciales del proyecto Wikipedia que definen conjuntamente su función en la web:

1.Es una enciclopedia, entendida como soporte que permite la recopilación, el almacenamiento y la transmisión de la información de forma estructurada.
2. Es un wiki, por lo que, con pequeñas excepciones, puede ser editada por cualquiera.
3. Es de contenido abierto y utiliza la licencia GFDL.

Existen o han existido muchos otros proyectos de enciclopedia en Internet; sin embargo, ninguno ha contado con el éxito de Wikipedia. Los artículos son escritos por numerosos autores y no existe un criterio de revisión formal, lo que la hace wiki, y lo mejor no es eso, sino que su contenido se libera bajo la licencia GFDL.

Como es de suponer, en un artículo pueden haber disputas sobre añadir, revisar, o borrar información. Ante esas situaciones, Wikipedia dispone de un conjunto de políticas que decide qué información se debe incluir o no. Cada edición trabaja de forma independiente a la otra, y no están obligadas a poseer el contenido de ediciones en otros idiomas (aunque en algunos casos se solicita la traducción de artículos), pero en común deben poseer cosas tales como respetar políticas globales, o sea, mantener un "punto de vista neutral".

Hay algunos aspectos que varían de un idioma a otro, como la posibilidad de crear un artículo nuevo. En la edición en español cualquier persona tiene la posibilidad de crear un artículo nuevo y casi cualquier visitante puede editar el contenido, a excepción de los artículos que se encuentren protegidos. Sin embargo, en la versión inglesa los usuarios no registrados no pueden comenzar artículos desde cero. La idea de este tipo de edición de artículos se maneja a través de la idea de que con el tiempo y con la colaboración de los usuarios se logre obtener artículos de mejor calidad, algo semejante a lo que pasa con el software libre.

Pese a la existencia de las políticas para regular las guerras de ediciones y vandalismos, no es menos cierto que siguen ocurriendo. Pero debemos tener claro en qué radican las diferencias. Una guerra de ediciones se produce cuando dos o más editores entran en un ciclo de reversiones mutuas debido a disputas causadas por diferencias de opinión sobre el contenido del artículo. No hay que confundir vandalismo (que frecuentemente afecta una sola vez a uno o varios artículos) con guerra de ediciones, la cual repercute sobre un mismo artículo en un breve lapso. Entre los artículos vandalizados frecuentemente (en la edición en español) destacan: George Walker Bush (caramba, disculpen mi incultura en el tema, pero aquí me acabo de enterar cual es el significado de la "W"), Benedicto XVI y Testigos de Jehová; mientras que artículos con fuertes guerras de ediciones son Cuba o Comunidad Valenciana, debido a la disparidad entre las opiniones de sus redactores.

Wikipedia en español existe desde mayo de 2001, y cuenta actualmente con 240 620 artículos, lo que la sitúa entre las diez mayores Wikipedias.

Wikipedia tiene una serie de políticas que son establecidas por los propios participantes en el proyecto. Una vez que la comunidad logra el consenso sobre la aplicación de una norma, todos los editores están obligados a respetarla. Algunas de estas políticas son:

1.Debido a la diversidad y número de participantes e ideologías provenientes de todas partes del mundo, Wikipedia intenta construir sus artículos de la forma más exhaustiva posible. El objetivo no es escribir artículos desde un único punto de vista, sino presentar abiertamente cada postura sobre un determinado tema.
2. Se siguen un número de convenciones con respecto al nombramiento de artículos, optando preferentemente por la versión más comúnmente utilizada en su respectiva lengua.
3. Las discusiones acerca del contenido y edición de un artículo ocurren en las páginas de discusión y no sobre el artículo mismo.
4.Existe un número de temas que resultan excluidos de Wikipedia por no constituir artículos enciclopédicos estrictamente hablando. Por ejemplo, Wikipedia no contiene definiciones de diccionario (como verbos, adjetivos, etc.). Estos términos pueden encontrarse en el Wikcionario.

Es importante saber y conocer que nadie es dueño de ningún artículo expuesto en Wikipedia. Un factor relativo a las problemáticas de contenido que experimenta Wikipedia como decíamos más arriba es el vandalismo (modificaciones inapropiadas u ofensivas a los artículos de la enciclopedia, que entorpecen el desarrollo del proyecto), cuya solución a largo plazo no pasa (como sucede otros casos) por una mejora constante de la calidad y por la incorporación o ampliación progresiva de artículos. En estos momentos existe casi tanto vandalismo como incorporación y ampliación de artículos.

Wikipedia está siendo editada por miles de personas alrededor del mundo. Las personas que editan Wikipedia son conocidas como wikipedistas y ellos actúan siempre de manera voluntaria. Hay diversas formas de colaborar además de crear o ampliar artículos: se pueden aplicar las convenciones de estilo establecidas a aquellos artículos que no las tengan, clasificarlos por materia, corregir faltas ortográficas, retirar textos con copyright, etc.

Para colaborar no es necesario registrarse, aunque a los usuarios que no lo hacen se les restringe ciertas acciones. Algunos colaboradores tienen la capacidad de llevar a cabo algunas operaciones extra, como el borrado de artículos, el bloqueo de páginas, etc. Sin embargo, estos usuarios -denominados en la edición en español "bibliotecarios"- no tienen capacidad de decisión mayor que la de cualquier otro wikipedista y sus acciones se deben ajustar a las políticas adoptadas por toda la comunidad.

Como en los canales IRC (para aquellos que recuerdan los tiempos de gloria del chateo en la capital), en Wikipedia se utilizan bots para la realización de ciertas tareas que pueden resultar tediosas para los editores, como la creación de enlaces entre las distintas ediciones de la enciclopedia, la corrección de faltas ortográficas, etc. Algunas ediciones de Wikipedia utilizan también bots para la creación masiva de artículos, normalmente esbozos. Los usuarios denominados checkusers pueden rastrear una dirección IP para verificar identidades y los "burócratas" tienen permisos para otorgar estatus de administrador, controlar los bots y cambiar nombres de usuario. Hasta esta semana, en la edición en español hay registrados 396 179 usuarios (no necesariamente colaboradores activos), de los cuales un total de 94 usuarios son bibliotecarios y 62 son bots propios y automáticos de mantenimiento.

Creo que debemos reconocer la poca influencia que tenemos sobre la enciclopedia. Aunque estemos entre las 10 primeras lenguas -para ser más exacto, en la novena posición-, es bastante triste estar por debajo de idiomas como el italiano y el polaco, pero también hay que darse cuenta que casi todos los de habla hispana prefieren publicar en inglés (¿por qué será? ;-D).

Wikipedia tiene varios proyectos hermanos que complementan a la enciclopedia. Todos ellos son multilingües, libres, apoyados en la tecnología wiki y administrados por la Fundación Wikimedia. Incluyen los siguientes (vamos a omitir la ya conocida Wikipedia):

  • Wikcionario: es el proyecto de la Fundación Wikimedia para la construcción de un diccionario libre. Tiene una función complementaria a Wikipedia, ya que un gran número de artículos por su carácter no enciclopédico se destinan al diccionario.
  • Wikilibros: tiene por objetivo poner a la disposición de cualquier persona libros de texto, manuales, tutoriales u otros textos pedagógicos de contenido libre y de acceso gratuito.
  • Wikiversidad: apoyada en el anterior, se propone como una plataforma educativa on-line libre y gratuita, donde es posible crear proyectos de aprendizaje a cualquier nivel educativo, participar en un grupo de aprendizaje, crear contenidos didácticos tales como exámenes, ejercicios de prácticas, etc.
  • Wikiquote: es un compendio abierto de frases célebres en todos los idiomas, incluyendo las fuentes (cuando éstas se conocen).
  • Wikinoticias: es una fuente de noticias de contenido libre.
  • Wikisource: es una biblioteca en línea de textos originales que hayan sido publicados con una licencia GFDL o se encuentren en dominio público.
  • Wikimedia Commons: también recibe los nombres de Commons o La Comuna. Es un depósito común de imágenes y contenido multimedia para los proyectos hermanos de la Fundación Wikimedia. Antes de su existencia, para usar una imagen en una sección de uno de estos proyectos, había que subirla a la edición de éste, con lo que se clonaba el mismo contenido varias veces, algo realmente ineficiente. Para ello se usaban scripts de subida masiva, que ahora han caído en desuso por la existencia de Commons.
  • Meta-Wiki: es un sitio web de apoyo para los proyectos de la Fundación Wikimedia.
  • Wikiespecies: es un repertorio abierto y libre de especies biológicas. Abarca animales, plantas, hongos, bacterias, unicelulares y toda forma de vida.

Desde Infomed, actualmente sólo son accesibles: Wikipedia, Wikimedia Commons, Wikilibros, Wikiespecies y Meta-Wiki.

Wikipedia recibe entre 10 000 y 30 000 peticiones de páginas por segundo, dependiendo de la hora del día. Más de 200 servidores soportan el tráfico. Wikipedia se ejecuta sobre el software libre Mediawiki en un cluster de servidores situados en Florida y en tres lugares más en el mundo: 202 máquinas en Florida, 3 cerca de París, 11 en Ámsterdam y 23 en las instalaciones coreanas de Yahoo!.

El impacto en el mundo principalmente a través de Internet (digo "principalmente" porque en algunos lugares, como la facultad de Matemática-Computación de La Universidad de La Habana, se ha descargado la enciclopedia en inglés y español) que ha tenido Wikipedia ha provocado la aparición de sitios de carácter cómico que la parodian. En inglés existe Uncyclopedia y Encyclopædia Dramatica, en español existe la Frikipedia y recientemente Inciclopedia. El artículo sobre Wikipedia comienza así:

"La Wikipedia es una burda imitación de la presente Inciclopedia. Sus autores intentaron hacerla seria, pero cometieron errores tan graves como afirmar que la Tierra gira alrededor del Sol y poner en duda que éste esté hecho de chili. Osan afirmar también que la Luna no está hecha de queso."

También se han hecho viñetas humorísticas, en una de ellas aparece Skeletor vandalizando el artículo de He-Man. Se han producido varios casos en los que los propios políticos, o personas próximas a ellos, modifican artículos interesadamente.

Para saber más...

Continuar leyendo

Alternativa al chat IRC

Alien [blackhat4all@gmail.com]

Hace un buen tiempo se hizo muy popular un IRC al que se podía acceder desde las cuentas nacionales. Los más viejos sabrán que les hablo del chat de Radio Morón. Por razones desconocidas para nosotros, ese chat dejó de funcionar un buen día... y hasta el sol de hoy...

En una de las primeras ediciones de BlackHat se hizo un llamado a los lectores para que escribieran pidiendo que ese espacio se volviera a habilitar, pero al parecer las cartas cayeron en un buzón sin fondo. Varias personas nos han escrito pidiéndonos las direcciones de algunas salas de chateo y, desafortunadamente, no hemos podido darles ninguna hasta el momento. No es algo que depende de nosotros porque, o no las hay, o no se les está dando la publicidad adecuada. Sin embargo, para los que no lo saben, existen varios programas que permiten la comunicación instantánea entre dos máquinas usando el módem, es decir, por vía telefónica. Un ejemplo de estos es el Pandion, del cual precisamente estaremos hablando en este artículo.

El Pandion es un programa sencillo de instalar y de gran utilidad para aquellos que necesitan comunicarse. Ofrece varias opciones, entre ellas la de avisarnos automáticamente cuando uno de nuestros contactos se encuentra conectado a la red (quizás la más útil).

Cómo funciona:
La instalación del Pandion es típica; no requiere de grandes conocimientos de informática ni nada por el estilo. Basta con saber hacer doble clic y leer los mensajes que nos muestra.

El segundo paso está en configurarlo. Después de la instalación, lo primero que nos aparece en pantalla es un cuadro de diálogo, donde debemos introducir nuestra dirección de correo y la contraseña. Se aconseja, en caso de que la máquina en la cual se está instalando sea de uso personal, marcar Recordar mi contraseña. Hecho esto, se oprime el botón Conectar.

Si se está conectado, el programa buscará en toda la red los contactos que estén presentes, pero como es la primera vez que se hace uso del mismo, no deberá encontrar nada.

El otro paso será añadir personas a nuestra lista. Sólo que para hacer esto deberemos estar conectados, así que sería buena idea que previamente tuviéramos copiado en un bloc de notas las direcciones de correo de las personas con las que tendremos comunicación. Cuando estemos on-line, en la barra de herramientas del Pandion, haremos clic en Acciones » Añadir contacto… Nos debería aparecer una ventana pidiéndonos introducir la dirección de correo de la persona que queremos añadir a nuestra lista de contactos. Ahí escribimos la dirección de correo del sujeto y luego presionamos el botón Siguiente. Luego de esto, decidiremos si queremos terminar de añadir personas a nuestra lista, o continuaremos introduciendo más direcciones de correos. Cuando todos nuestros contactos estén incluidos, cerraremos esa ventana y veremos en la forma principal del programa todas las personas que incluimos previamente. El programa por sí solo irá cambiándole el nombre a nuestros contactos por el que ellos se hayan puesto, aunque uno siempre puede volver a renombrarlo haciendo clic derecho sobre la persona y dirigiéndose a la opción Renombrar. Uno mismo también se puede cambiar el nombre según desee, ya sea para ocultar su identidad, o para mostrar el nick por el cual sea conocido entre sus amistades y no la dirección de correo, que es la que se pone por defecto.

Quizás en la ventana principal del Pandion aparezcan dos listas de nombres, una que diga Amigos y otra Contactos (pudieran aparecer más). Realmente, a los efectos, las dos hacen lo mismo, a menos que se desee tomar otra decisión. Para fusionar las dos listas, sólo debemos hacer clic derecho sobre una y marcar la opción Fundir con... Pienso que no debería detenerme a explicarles que el programa funciona sólo con quien lo tenga instalado en su sistema.

Ahora, ¿qué es lo que hace?. Sencillo: cada determinado tiempo, el programa revisa a ver quien o quienes de la lista de contactos que hicimos se encuentra conectado y, cuando lo encuentra, se puede configurar para que emita un sonido determinado. Luego, haciendo clic sobre dicha persona, se nos abrirá una ventana para poder empezar a chatear con la misma... fácil, ¿no?

Bueno, realmente el programa como tal tiene otras opciones para hacerlo más moldeable; entre otras cosas se puede cambiar el avatar predeterminado por uno que nos identifique, permite cambiar los sonidos de alerta cuando se une un nuevo contacto, dejar determinado mensaje cuando estamos ausentes por un tiempo indefinido y, teniendo el Exodus, se puede transferir archivos entre los contactos. Pero eso se lo dejaremos a ustedes; no todo es tan fácil como hacer Ctrl+C y Ctrl+V.

Para saber más...

Continuar leyendo

Notas para una adecuada selección de formatos gráficos

ZorphDark [blackhat4all@gmail.com]

Los tiempos del enriquecimiento de esquemas visuales con los últimos caracteres de la tabla ASCII en plataformas textuales han pasado de moda. Con la aparición de las interfaces gráficas a finales de los años 60, la evolución se tornó indetenible, llegando a alterar definitivamente el paradigma de muestreo de líneas por columnas de texto. Las productoras de software que dominaban el mercado de las nacientes PC, junto a otras empresas especializadas, comenzaron a adoptar formatos propios para la representación de gráficos, imágenes y animaciones. De este modo surgieron la mayor parte de los modelos de mapas de bits y sistemas vectoriales utilizados hoy en día, cuyos ejemplos más notables son referenciados a continuación:

BMP::

El rey de los entornos visuales de Microsoft Windows llegó a ser el formato BMP, que se convirtió desde los inicios de este sistema operativo en el estándar de las imágenes y botones gráficos, gracias a la simplicidad de su estructura de datos. Los BMP almacenan la información visual en una matriz de píxeles (mapa de bits), sin utilizar algoritmos de compresión, por lo que no consumen tantos recursos del sistema en el proceso de visualización; sin embargo, su tamaño varía considerablemente en relación a las dimensiones del mapa. Hay especificaciones que permiten utilizar el algoritmo RLE para reducir el tamaño de archivo generado, pero, aunque otros métodos externos (ZIP, RAR, etc.) manejan con eficacia su redundancia de datos, esta característica inherente lo aísla por completo del mundo de la Web, cuyos estándares requieren de una estructura óptima para la transferencia a través de todo tipo de red.

Los BMP llegaron a almacenar hasta 24 bits por píxel hasta que Windows XP introdujo una nueva versión de 32 bits con un canal alpha integrado, para que pudiera ajustarse a los nuevos requisitos visuales de este sistema. El formato BMP es libre y existe bastante documentación en la red sobre su implementación en todo tipo de aplicaciones, por lo que es muy común encontrarse con desarrolladores que lo utilizan en sus programas.

Hay otros tipos de formatos similares, como PBM (blanco y negro), PGM (escala de grises), PPM (24 bits de color), IFF (para computadoras Amiga), RAW (guarda información gráfica "en bruto"), entre otros, aunque ninguno de los citados es tan popular como el BMP.

PCX::

Este formato desarrollado por ZSoft Corporation fue ampliamente conocido en los tiempos de MS-DOS. Era el formato nativo de la aplicación PC Paintbrush. Los PCX eran totalmente independientes de las características de los monitores, atributo que lo llevó rápidamente al salón de la fama hasta que otros sistemas de representación de imágenes más sofisticados lo reemplazaron, dejando su nombre en el olvido. Este formato comprime mucho más que el BMP, ya que utiliza el RLE por defecto (aún así, no llega a los niveles de compresión de algoritmos posteriores). Fue bastante utilizado por los primeros videojuegos tridimensionales debido a su excelente proporción entre el tamaño de archivo y la velocidad de decodificación. Existe una versión menos conocida del PCX, llamada DCX, que se usaba en la transferencia de faxes por sus propiedades multipáginas.

TGA::

Nacido en los laboratorios de Truevision (ahora Pinnacle Systems) en 1984, este formato fue utilizado por las primeras tarjetas gráficas de computadoras compatibles con IBM PC que soportaban color real. Dicho hardware estaba orientado al trabajo profesional de edición de imagen y video, por lo cual las resoluciones comunes de los archivos TGA coinciden con la de los formatos NTSC y PAL (no es recomendable utilizarlos para impresión en papel). Las imágenes TGA admiten hasta 32 bits de color con 8 bits extra de canal alpha para transparencia, metadatos, thumbnails y compresión RLE. Actualmente, la industria del cine y de los videojuegos todavía utilizan muy a menudo este formato. Como ejemplos se pueden citar el Warcraft III de la Blizzard Entertainment, los motores de renderización POV-Ray y el Blender.

TIFF::

Muy utilizado para almacenar fotografías y esquemas de alta calidad. Creado a mediados de los años '80 por la empresa Aldus para el trabajo directo con scanners, fue apoyado por la Microsoft Corporation y adoptado posteriormente por Adobe System, quien controla hoy en día la especificación de este formato. TIFF es totalmente compatible con PostScript; es decir, 100% óptimo para la impresión profesional. Además, es muy flexible, por lo que puede utilizarse como contenedor de otros formatos gráficos, debido a sus propiedades multicapa, multipágina, compatibilidad con diferentes algoritmos de compresión, muestreo dinámico de alto rango y posibilidad de incluir tratamiento vectorial. Se puede, por ejemplo, embeber tanto un BMP como una imagen JPEG, especificando en los tags o etiquetas del formato TIFF las propiedades de su contenido.

GIF::

Para solucionar el problema de transferencia de imágenes a través de las antiguas redes (aquellas que utilizaban las líneas telefónicas como interfaz física), el proveedor de servicios on-line CompuServe decidió, en 1987, adoptar el viejo método de compresión LZW (patentado por Terry Welch en 1983) para una nueva línea de imágenes. Mucho mejor que el común algortimo RLE, permitía enviar y recibir imágenes a una gran velocidad a través de los módems de baja velocidad. Posteriormente, con el desarrollo del HTTP y el surgimiento de la World Wide Web, el joven formato GIF llegó a extenderse por encima de lo previsto.

Las potencialidades de sus versiones subsiguientes comenzaron a causar un mayor asombro que sus puntos débiles. Los GIF permitieron reproducir animaciones simples por fotogramas, asignar transparencia y características de entrelazado, admitiendo sólo una profundidad de color de 8 bits a través de una paleta de 256 colores indexados. Este formato no tiene pérdida de calidad siempre que se utilicen imágenes compatibles con su rango de color. Hay técnicas que permiten mostrar hasta 24 bits de color, aplicando capas sucesivas con el respectivos número de índices de colores en intervalos mínimos (la rapidez depende del nivel de procesamiento del CPU).

A pesar de que hubo -y hay aún- millones de páginas webs que utilizan el formato GIF para mostrar imágenes, el W3C nunca ha recomendado el uso de este tipo de imagen por implementar un algoritmo que, aunque desde junio de 2003 es libre, permaneció bajo los efectos de una patente durante todo el período de expansión inicial de la Web.

JPEG::

A finales de la década de 1980 se consolidó el grupo de especialistas en fotografía que publicó su insigne resultado en 1992. Se trata de un algoritmo de compresión que permitió de una vez por todas resolver las dificultades de almacenamiento masivo y transferencia de imágenes a todo color. El método se denominó igual que su comisión creadora: JPEG. Dicho resultado, aprobado en 1994 por la norma ISO 10918-1, recorrió todo el planeta con una gran acogida luego de su estandarización. El algoritmo JPEG aprovecha algunos defectos del ojo humano en la captación de la luminosidad para comprimir imágenes de hasta 24 bits de color (sin transparencia), con pérdida de información visual según la calidad con la que se efectúe el proceso. Es utilizado ampliamente en la Web para la visualización de imágenes complejas, como fotografías de paisajes. No es recomendable aplicar este algoritmo para la compresión de gráficos que pudieran ser analizados con sistemas vectoriales (esquemas, tablas y texto plano). Los archivos resultantes se abrevian normalmente como JPG, debido a que algunos sistemas operativos utilizan -o utilizaban- extensiones de archivo de sólo tres caracteres. El comité JPEG ha creado otros proyectos, como el JPEG2000, que permite mayores niveles de compresión y nuevas funcionalidades, aunque no es recomendable para el uso en páginas web por los problemas de patentes y los requerimientos de hardwares para su correcta visualización.

PNG::

Debido a las deficiencias del algoritmo LZW del formato GIF y sus problemas legales, en 1995 se inició el desarrollo de un nuevo formato alternativo patrocinado por el W3C. El resultado se tornó en un método potente, recomendado por dicha institución para el uso en la Web. Los PNG admiten hasta 64 bits de color, distribuidos entre colores reales y canales alpha. Las versiones menores de 8 bit (comúnmente utilizadas por el nivel de compresión resultante) permiten paletas de color indexadas con transparencia. El formato PNG no soporta animaciones; para ello se creó el MNG y el APNG, que nunca han sido populares debido a su complejidad. Este es el único punto débil con respecto al GIF, ya que siempre que se utilicen las adecuadas técnicas de filtrado, la calidad de los archivos PNG va a ser superior, con un menor costo en bytes. La técnica de compresión por deflación hace que este formato sea el ideal para el almacenamiento de imágenes que contengan textos, figuras geométricas y áreas de color plano. Aún así, se pueden almacenar gráficos de gran complejidad estructural para un posterior tratamiento, ya que el PNG comprime sin pérdida de calidad.

SWF::

La empresa Macromedia (absorbida por Adobe en el año 2005 por $3 500 millones de dólares), desde la primera versión de Flash en 1993, comenzó a distribuir un formato para almacenar los gráficos y animaciones realizados sobre esta plataforma multimedia. Originalmente desarrollado por una pequeña empresa llamada FutureWave bajo el nombre FutureSplash, en sus inicios sólo contenía animaciones a base de fotogramas, pero con la evolución de Flash y su lenguaje ActionScript -incorporado en la versión 5-, el SWF fue adquiriendo tanta popularidad en la Web que, actualmente, a pesar de ser propietario, es uno de los formatos más utilizados en la visualización de contenidos dinámicos en la red de redes y en los teléfonos móviles modernos.

A través del Flash Player -que se debe instalar en el sistema o como un plug-in en los navegadores-, se puede interactuar con una aplicación o un servicio web (embebidos en el SWF) a través de casi cualquier dispositivo de entrada y/o salida, incluyendo webcams, bocinas, etc. Es ideal para la representación de sistemas vectoriales, ya que almacena datos de este tipo (líneas, curvas, gradientes, textos) mediante fórmulas matemáticas; no obstante, también puede almacenar mapas de bits con diferentes tipos de compresión (JPEG, RLE, etc.) y permite comprimir videos con un método muy eficaz que alcanza los primeros lugares en la preferencia de los desarrolladores web, por encima de formatos como Real y Quicktime.

Usar SWF tienen tres desventajas: el formato no es libre, hay más de nueve versiones diferentes -con sus repectivos problemas de compatibilidad- y, para visualizarlos, se necesita de un complemento que no todos los navegadores y sistemas operativos incluyen por defecto.

SVG::

En medio de la guerra de formatos vectoriales a finales de los años '90, con la Macromedia y la Microsoft en un bando y la Adobe y Sun Microsystem en el otro, el W3C decidió llevar a cabo por su propia cuenta, la realización de un nuevo estándar que, además de ser libre, fuera completamente extensible y adaptable a la Web. En 1998 comenzó la ardua labor liderada por Chris Lilley, hasta que el 4 de septiembre del 2001 el SVG 1.0 pasó a ser una recomendación del W3C. Este formato permite la representación de imágenes y animaciones mediante XML. Mediante dicho lenguaje de marcas se pueden definir textos, contornos, grupos de figuras, mapas de bits e interacciones para luego ser mostrados en una interfaz web. El SVG está dotado de poderosas características, como la accesibilidad, transformaciones anidadas, máscaras alpha, filtros de efectos, plantillas de objetos y admite el algoritmo de compresión sin pérdida Gzip para reducir el tamaño de archivo y ser descargado con más velocidad.

Este formato rivaliza directamente con el SWF de Adobe Flash. Cada uno tiene sus características en cuanto a su potencialidad y recursos disponibles, por lo que es difícil deducir si el SVG desplazará en algún momento al SWF de la preferencia de los desarrolladores multimedia. Clara está, por supuesto, la amplia ventaja que tiene el SVG al estar basado en XML, ser libre y estar patrocinado por el W3C, pero aún le queda mucho camino por recorrer. Algunos navegadores necesitan de un plug-in para visualizar este tipo de archivo, aunque las últimas versiones de los más populares soportan este formato de modo nativo. Actualmente se trabaja en el SVG 1.2 Full, con muchas mejoras con respecto a la versión 1.2 Tiny lanzada en agosto del 2006.

OTROS FORMATOS::

Existe una inmensidad de formatos gráficos, desde los diseñados para impresión de esquemas y documentos hasta los que almacenan modelos tridimensionales. El objetivo de estos apuntes no era abarcar toda esa gama casi infinita de archivos, sino, definir un conjunto de propiedades de los formatos más utilizados en nuestro uso cotidiano de las PC. Habrá quienes se deleiten por los gráficos de alta calidad destinados al papel o por aquellos que necesitan ser optimizados al máximo para transferirlos por las redes. Sírvanse de estas pequeñas notas para lograr un uso más eficiente de los formatos gráficos y ser capaces de llevar a cabo un afinado proceso de selección. Quienes utilicen el Adobe Photoshop, el GIMP, el Adobe Fireworks, el Corel Draw o cualquier otro editor profesional para realizar sus trabajos, ya pueden estar seguros de que un formato no se selecciona al azar, sino que detrás de una simple noción de calidad / tamaño hay un amplio campo que no se debe dejar de obviar.

Para saber más...

Continuar leyendo

Fiebre de monitores

Alien [blackhat4all@gmail.com]

En la revista pasada hablábamos sobre el calor que generan las torres y algunos métodos para aliviarlos. Sin embargo, quizás muchos no sepan que otro de los equipos que también genera una excesivo temperatura es el monitor, inclusive más que los otros componentes que habíamos visto.

He visto a muchas personas que tienen sus máquinas abiertas y un ventilador delante de la misma. Sin embargo, cuando les digo que coloquen la mano sobre el monitor, se asombran de la cantidad de vapor que sale del mismo.

Quisiera aclarar, antes de seguir, que este documento no llega a ser un artículo como tal; es más bien una experiencia y, a partir de la misma, una solución que aunque muchos no seguirán, sé que otros que conozcan un poco de electrónica o tengan un amigo que la domine, pensarán que es una solución más factible que tener colocado un ventilador sobre la mesa, echándole aire constantemente al display.

Hace algún tiempo fui a casa de un amigo a buscar unas piezas de computadoras y me sorprendí al ver que sobre su monitor tenía una especie de cojín y, sobre éste, una montaña de libros. Al momento le traté de advertirle sobre los peligros que esto implicaba, puesto que pensé que el calor que estaba acumulándose podía en algún momento echarle a perder alguna pieza... y los monitores no están nada baratos. Mi asombro mayor tuvo lugar cuando él, con una sonrisa en la cara apartó los libros, levantó el cojín, y me dijo:

- Mira.

Efectivamente; a cada lado del monitor tenía un fan que, según él, estaban conectados a la placa del monitor en una salida de 12 v.

Los monitores más antiguos generan poco calor. Generalmente vienen cerrados casi por completo y aún así se mantienen a una temperatura aceptable. Pero los más modernos -exceptuando los TFT- producen un calor tan alto que la mayoría de las veces es la causa de sus primeras roturas. Una solución lógica podría ser la de mi amigo.

Si no tienes en mente vender tu monitor, puedes arriesgarte a hacerle a los lados de la carcasa dos huecos de forma cuadrada y colocarle con unos tornillitos un par de fans, los cuales se alimentarán de la placa del monitor y se mantendrán funcionando desde que se encienda el mismo hasta que se apague. Quizás no sea la solución perfecta, pero al menos es más factible que lidiar con un ventilador colocado las 24 horas y tener en mente la preocupación de encenderlo cada vez que vayas a trabajar. Entre otras ventajas, está la de que los fans, al estar más cerca del monitor, pueden refrescarlo más que un ventilador que esté a medio metro y girando.

Por último, aclararle a los que se atrevan a hacer esto que, si lo monitores cuentan con muchos huecos, pueden poner ambos fans echándole aire, ya que tendría rendijas por donde salir; pero si la carcasa está casi hermética, una buena práctica sería poner un fan a echar aire y otro de extractor, para que haya una adecuada ventilación.

Para saber más...

Continuar leyendo

Para webmasters

Alien [blackhat4all@gmail.com]

Últimamente en nuestro país, con la aparición de nuevos sitios web, se está comenzando a ver una proliferación de webmasters, los que se encargan bien, regular o mal de sus páginas. Pienso que no soy el único usuario que se incomoda cuando tengo que esperar durante varios segundos para terminar de visualizar una página, o se me gasta el dedo dándole al scroll para llegar al final de la misma.

Me gustaría enfatizar en que esto no es una crítica al trabajo de nadie; más bien es una recomendación de un usuario que visita sus páginas. Muchos de nosotros, de vez en cuando, nos dirigimos a ciertos sitios por su apariencia o por el tema que abordan, pero hay veces que sólo queremos acceder a una página para consultar una información determinada, y sería desagradable tener que esperar 1:30 o 2:00 min para solamente leer una cita o extraer el fragmento de un texto. Si alguno de los que lee esto piensa que puede reducir el tiempo de carga de sus páginas, se darán cuenta poco a poco que los lectores van a ir más a visitarla -teniendo en cuenta también el interés que muestren los usuarios por la información que ahí aparezca.

Un aspecto que ralentiza el muestreo de la página es el tamaño de las imágenes a las que hace referencia. De ser posible, utilice gráficos de pequeña resolución, o simplemente utilice el formato correcto de archivo, ya que cada uno tiene sus especificaciones. No es lo mismo un JPG que un PNG o un GIF (para saber más acerca de cada formato, consulte el artículo que habla sobre los formatos gráficos).

Otro detalle a tener en cuenta es la configuración de la página. Recuerdo hace un tiempo haber visitado una página ubicada en www.papelcontinuo.com, o algo similar. Realmente habían hecho un buen trabajo de diseño, pero era una sola página; y ello retrasaba la descarga, puesto que no es lo mismo para el navegador leer e interpretar cientos de líneas de código y gráficos de página en página que de una sola vez. Me refiero con esto a no poner todo el contenido en una sola vista, sino distribuirlo en varias de ellas enlazadas mediante hipervínculos; recuerden que si algo bueno tiene la Web es su navegabilidad. Tampoco hay que ser extremistas y llenar la página inicial sólo con enlaces; se pueden poner imágenes, pero siempre tratar de mantener un tamaño proporcional.

Los GIF animados son espectaculares, pero hay que tener cuidado en el uso que se hace de los mismos, ya que muchos pueden confundir al visitante. Es aconsejable colocarlos sólo como vía de propaganda o para refrescar la vista, no para atiborrar la página.

Pocos son los sitios que tienen sonido incluido. Esto se debe a la demora que produce en el navegador tener que cargar archivos MP3 o WAV. Una alternativa a este problema son los ficheros MIDI. Estos son igualmente interpretados por el navegador y su peso es ínfimo si se le compara con uno de los formatos mencionados anteriormente.

El uso de elementos en Flash debe ser en casos extremos. Piensen que para utilizarlos el visitante debe tener los recursos necesarios (plug-in Flash Player) para visualizarlos, sin contar que a veces estos archivos demoran en cargar mucho más que la página en sí.

También les recomiendo que prueben sus sitios on-line, no desde su PC -pues no podrán ver cuánto demora su sitio en cargarse (a no ser que utilicen un programa para este fin), además de que podrán ver errores que quizás en sus computadoras no eran discernibles.

Realmente no me considero todo un profesional en lo que a Web respecta; sólo he querido darles algunas recomendaciones que pueden usar o no, pero lo que no puedo es terminar sin aconsejarle sobre un último aspecto, que a mi forma de ver es el más importante: la información. Traten de poner en sus páginas lo que le pueda llamar la atención a las personas que desean atraer a las mismas. Intenten por todos los medios de no repetir información: el plagio es algo fácil de hacer, pero si todo lo que ponen en sus sitios es extraído de otros lugares, lo que hagan no trascenderá. Esmérense en dar a conocer información nueva. Si van a hablar del tabaquismo -por ejemplo-, no digan solamente los efectos que causa; no hablen del pasivo, del activo... eso lo saben todos y está en otras mil páginas. Digan cómo solucionarlo, qué hacer cuando se tiene el vicio, a dónde ir, etc. Si van a hablar de lo mismo, por favor no hablen. Los que visitan sus sitios no entran para ver muñequitos moviéndose, sino a buscar la información que necesitan. Y no creo que pidan problemas, sino soluciones.

Para saber más...

Continuar leyendo

Mozilla Firefox

charlie_mtp [neyquesada@infomed.sld.cu]

Este artículo está destinado a conocer este navegador tan difundido en los últimos tiempos, que algunos consideran que se encuentra entre los mejores (por cierto, es el que yo uso para trabajar en cualquier lugar; siempre lo llevo en su versión portable). El nombre sugiere a un zorro de fuego o zorro rojo (traducción literal del inglés fire fox), pero quiero corregir a todos los que utilizan este navegador, diciéndoles que el logo representa a un Panda rojo (Ailurus fulgens) estilizado (según el Mozilla FAQ), al igual que el nombre (Firefox es el nombre en inglés para el Panda rojo). Este logotipo fue elegido por no tener ilustraciones exageradas.

Pero para el que aún no sabe de qué va este artículo, les digo que Mozilla Firefox es un navegador de Internet, con interfaz gráfica de usuario desarrollado por la empresa Mozilla y un gran número de voluntarios externos. Firefox, oficialmente abreviado como Fx o fx, y comúnmente como FF, comenzó como un derivado del Mozilla Application Suite, que terminó por reemplazarlo como el producto principal del proyecto Mozilla, bajo la dirección de Mozilla Foundation.

Firefox es una aplicación multiplataforma, que está disponible en versiones para Microsoft Windows, Mac OS X y Linux. Además, el código ha sido portado por terceros a otros sistemas operativos como FreeBSD, OS/2, Solaris, SkyOS, BeOS y, recientemente, a Windows XP Professional x64 Edition.

Su código fuente está disponible libremente bajo la triple licencia de Mozilla como un programa libre y de código abierto. La versión estable actual es la 2.0.0.4, que fue liberada el 30 de mayo de 2007.

Firefox se basa en el motor XULRunner, desarrollado en su mayor parte utilizando el lenguaje XUL. Comenzó como un fork (bifurcación) del navegador de Mozilla, y se ha convertido en el principal foco de desarrollo de la Fundación, junto con el cliente de correo electrónico y lector de noticias Thunderbird.

Firefox incorpora bloqueo de ventanas emergentes, navegación por pestañas, marcadores dinámicos, soporte para estándares abiertos, y un mecanismo para añadir funcionalidades mediante extensiones. Aunque otros navegadores también incluyen estas características, Firefox fue el primero en incluir algunas de ellas y conseguir una amplia difusión.

A mi entender, la principal razón y obstáculo por la que algunos usuarios desconocen alternativas de navegadores (y otros tantos programas) es que algunos -digamos Internet Explorer de Microsoft y Safari de Apple- son incluidos por defecto en sus respectivos sistemas operativos.

Sus inicios::

En la primavera de 2002 aparece una rama experimental del proyecto Mozilla, conducido por David Hyatt y Blake Ross. El nombre original del proyecto fue mozilla/browser, rápidamente cambiado por Phoenix; pero así no es como lo conocemos hoy en día. Pasó por nombres como Firebird, Firebird Browser y Mozilla Firebird. No fue hasta el 9 de febrero de 2004 que fuera rebautizado finalmente como Firefox.

Versiones finales::

La utilización de XUL hace posible la extensión de las capacidades del navegador a través de la utilización de temas gráficos y extensiones. Sin embargo, el proceso de desarrollo e instalación de estas adiciones planteó también problemas potenciales de seguridad. Por ello, con la salida de Firefox 0.9, la Fundación Mozilla abrió el sitio Web "Mozilla Update" que contenía temas y extensiones "aprobadas".

La versión 1.5 se publicó el 29 de noviembre de 2005 con numerosas mejoras, como el soporte para los nuevos estándares SVG, CSS 2, CSS 3 y JavaScript 1.6; actualizaciones de software progresivas, reordenamiento de pestañas usando arrastrar y soltar, mayor seguridad y mejor usabilidad. La versión 2.0 fue publicada el 24 de octubre de 2006. Conocida en su desarrollo como Bon Echo, esta versión trajo novedades como:

  • Nuevas características anti-phishing.
  • Nuevas opciones ocultas para configurar la muestra de pestañas.
  • Registro de pestañas recientes y la habilidad de deshacer pestañas cerradas.
  • Restauración automática de la sesión de navegación del usuario en caso de caída del sistema.
  • Tema por defecto nuevo, con nuevos iconos y barra de tabs.
  • Soporte para texto con gráficos vectoriales escalables SVG, usando svg:textPath.
  • Nuevo instalador con ventanas usando el NSIS.
  • Integración de una función para administrar los motores de la barra de búsqueda.
  • Agregado un botón similar a Ir, de la barra de direcciones, pero que sirve sólo para el cuadro de búsqueda.
  • Lector de feeds, que muestra un "microsumario" con los últimos feeds del sitio a sindicar, además de una opción para elegir si sindicarlo con Firefox, con una aplicación externa o con un servicio web.
  • Corrector ortográfico, que subraya las palabras que no reconocen los diccionarios que se descargan e instalan en esta aplicación.
  • Sesión por parte del cliente y almacenamiento persistente.

El ícono de Firefox es una marca registrada usada para denotar el soporte oficial de la Fundación Mozilla a Firefox. Así, aunque el software en el que se basa Firefox es de código abierto, las ilustraciones no son de licencia libre; por ello, los distribuidores de software que distribuyen versiones parcheadas o modificadas de Firefox no pueden usar el icono, pero, como la filosofía del software libre que está Firefox, la fundación Mozilla no entablará acciones legales a quienes usen la imagen de Firefox en programas que utilicen su código, en especial si añaden alguna mejora, como Firefox Portable.

Características del navegador::

La navegación mediante pestañas era uno de los principales argumentos de Firefox para atraer a los usuarios de su principal rival: Internet Explorer. Consiste en poder abrir en una sola ventana del programa varias páginas a la vez, pudiendo ir de una a otra a través de sendas pestañas (o fichas). De este modo, la navegación resulta más cómoda, organizada y se consumen menos recursos en el equipo. Es posible definir un grupo de pestañas como páginas de inicio.

Se puede, además, almacenar sitios de la preferencia del usuario (como los Favoritos de Internet Explorer), lo que facilita la navegación de sitios visitados con frecuencia. Además, dentro de los marcadores, está la opción de palabra clave (keyword) para que el usuario escriba sólo una palabra en la barra de direcciones y el navegador comience a cargar el sitio. Puede añadirse a Firefox una barra de herramientas con algunos marcadores a los fines de acceder a los sites correspondientes de manera más rápida. Una ventaja de las keyword es el reemplazo de texto, ideal para búsquedas rápidas. Un ejemplo:

- Crear un marcador para buscar en Wikipedia:
   Nombre: Wikipedia, la enciclopedia libre
   Dirección: http://es.wikipedia.org/wiki/Special:Search?search=%s
   Palabra Clave: wiki
De esta forma, al escribir wiki gatos, el navegador buscará en Wikipedia el artículo llamado "gatos".

Firefox incluye un bloqueador de ventanas emergentes integrado personalizable. Por defecto, bloquea todas las ventanas emergentes de cualquier página que considere no solicitadas. Además, permite definir el nivel de protección ante las ventanas emergentes en cada caso.

Soporte de los estandares de programación:
Como medida prudencial que ha causado controversia, Firefox no incluye compatibilidad alguna con los sistemas ActiveX (soportados por Internet Explorer y extendidos en extranets administrativas y páginas web interactivas). La mayoría de infecciones e intrusiones no permitidas al sistema Microsoft Windows son causadas por los controles ActiveX, que permiten tener un control total sobre el sistema del visitante. Si bien esto puede ser una ventaja para ciertas aplicaciones, también es una vía libre, según Mozilla y los expertos en seguridad informática, para la entrada de multitud de programas dañinos a nuestro sistema. Firefox es compatible con Java, una alternativa potente para soluciones de interacción avanzada.

Firefox está soportado también en AJAX, que es un término nuevo para describir dos capacidades de los navegadores que han estado presentes por años, pero que habían sido ignoradas por muchos desarrolladores Web hasta que surgieron aplicaciones como Gmail, Google Suggest y Google Maps. Las dos capacidades en cuestión son:

  • Hacer peticiones al servidor sin tener que volver a cargar la página.
  • Analizar y trabajar con documentos XML.

Personalización:
Al igual que otros navegadores basados en Mozilla, Firefox incluye un sistema propio de extensiones, que pueden ser instaladas por sus usuarios para personalizar el aspecto y comportamiento del navegador.
Estas extensiones, al igual que el propio navegador, se escriben en XUL, por lo que pueden modificar cualquier aspecto del interfaz y gran parte de la presentación de las páginas, así como agregar funcionalidades.
Firefox cuenta con cerca de 1700 extensiones.

Algunas de ellas son Gmail Notifier (muestra el estado de la bandeja de entrada de las cuentas de correo de Gmail y avisa si hay correos nuevos), Mouse Gestures (permite abrir enlaces, abrir y cerrar ventanas y pestañas del navegador con simples movimientos del ratón), DownThemAll! (Gestor de descargas muy completo, y no dependiente de otros gestores de descargas instalados en el sistema) y Flashgot (permite utilizar programas gestores de descargas con Firefox).

Aunque no se consideren extensiones, existen también programas complementarios para Firefox que ayudan a que éste navegue o se cargue más rápido en el sistema. Estos programas son: FirefoxPreloader (Acelera la carga de Firefox) y Firetune (acelera la navegación).

Firefox incluye un buscador integrado en la interfaz que hace búsquedas en Google y en otros buscadores localizados para el idioma de la traducción. También permite la opción de añadir buscadores de la base de datos on-line de Mycroft. Entre ellos se puede añadir a Wikipedia, en distintos idiomas.

Existen temas o skins (apariencias) para las aplicaciones Mozilla. Ellos permiten cambiar la apariencia de la interfaz de usuario y personalizarla a tu gusto. Un tema puede cambiar simplemente el color de la UI o toda su apariencia. Para crear un tema para Firefox es necesario saber tres cosas: cómo editar imágenes, cómo extraer archivos ZIP y cómo modificar CSS (para saber más, ver los enlaces al final del artículo).

Aplicaciones y otras características:

En vez de teclear una URL completa en la barra de direcciones, prueba escribir una frase que describa a dónde quieres ir. Por ejemplo, prueba con Quijote, El País, o Yahoo Mail, y luego pulsa la tecla Enter. La barra de direcciones utiliza la herramienta de Google Voy a tener suerte, con lo cual te llevará directo al sitio que estás buscando.

Se incluye también, con el paquete oficial, un sistema de gestión de descargas que permite bajar numerosos archivos simultáneamente, abrirlos una vez que han finalizado y pausarlos cuando se transfieran archivos robustos.

Firefox lleva incorporadas dos herramientas de desarrollo web: un inspector DOM y una consola JavaScript. Los seguidores de Firefox dicen que ningún otro navegador incluye el inspector DOM y que la consola JavaScript de Firefox sobrepasa a cualquiera de las disponibles en otros navegadores. Aunque no se instalan por defecto, las herramientas están disponibles mediante la instalación personalizada. Firefox soporta varias extensiones que ayudan al desarrollo web, como el potente depurador de JavaScript Venkman. Todas las opciones pueden ser configuradas introduciendo en la barra de direcciones about:config.

A este navegador también se le puede incorporar plug-ins, que no son más que pequeños fragmentos de software que interactúan con el navegador para proporcionar algunas funciones, que en la mayoría de los casos son muy específicas. Los plug-ins son ligeramente diferentes de las Extensiones, que modifican o se añaden a funcionalidades ya existentes.

Críticas::

Tiempo de carga:
Algunos opinan que Firefox tarda más tiempo en cargar que otros navegadores, como Opera o Internet Explorer en Windows. Otros basados en Gecko, como K-Meleon (que usa implementaciones de interfaz de usuario de plataforma nativa) generalmente se ejecutan más rápido que Firefox. Sobre el sistema operativo Microsoft Windows esto puede ser remediado usando la utilidad de código abierto FFPreloader.

Uso de memoria:
Algunos usuarios se quejan, argumentando que Firefox consume más memoria que otros navegadores. Se refieren a ello como memory leaks (fugas de memoria). Los desarrolladores de Mozilla mantienen que, en ocasiones, -al menos en parte- se debe a un efecto de la opción de avance y retroceso rápido, que en casos extremos, puede llegar a utilizar hasta 4 Gb de memoria RAM. Otras de las razones conocidas para los problemas con la memoria son culpa del mal funcionamiento de algunas extensiones, como la barra de herramientas de Google y Adblock (bloqueador de publicidad).

Problemas de visualización:
Los usuarios que vienen desde Internet Explorer notan que algunos sitios no se muestran como se esperaba en Firefox. Sin embargo, esto es un problema raro y no específico de Firefox. El problema es causado por los sitios web que no siguen los estándares W3C. Tales como códigos específicos para Internet Explorer, utilizando controles ActiveX o VBScript, los cuales son tecnología propietaria de Microsoft Corporation y no utilizan estándares W3C. Hay una extensión para Firefox llamada IE Tab, que permite utilizar el motor de renderizado de Internet Explorer dentro de una pestaña de Mozilla Firefox. Esta versión sólo está disponible para el sistema operativo Windows.

No soporta Windows Installer:
Como Mozilla Firefox no se suministra de manera oficial en un paquete MqSI (aunque ha sido creado uno por terceros), los administradores que quieren instalar Firefox en varios ordenadores tienen que instalarlo manualmente en cada ordenador.

Adopción en el mercado::

La gráfica se explica por sí sola, mostrando la creciente adopción de Firefox por los usuarios a nivel mundial. Actualmente, el Firefox se encuentra instalado en más de un 20% de las computadoras del planeta; cifra sólo superada por las diferentes versiones del dominante Internet Explorer.

Respuesta de la competencia:
A pesar de la progresión en el uso de Mozilla Firefox, el portavoz australiano de operaciones de Microsoft, Steve Ballmer, declaró que no veía a Firefox como una amenaza y que no había una demanda significante para el conjunto de características de Firefox entre los usuarios de Microsoft, declarando que él personalmente nunca lo ha usado.

Derivados::

Firefox Portable:
Antes denominado "Portable Firefox", constituye una versión portátil reempaquetada del navegador, diseñada para funcionar en un dispositivo USB con memoria flash, iPod, disco duro externo o cualquier otro dispositivo portátil. Incluye un lanzador especializado que ajusta las extensiones y temas para que funcionen al pasar de un ordenador a otro. También utiliza compresión (cortesía de UPX y 7-Zip) para reducir el espacio requerido para el almacenamiento. Desde su versión 1.2.1.1, Firefox Portable Launcher soporta un funcionamiento en CD-R y otros dispositivos de sólo lectura. Varias aplicaciones ya utilizan Firefox Portable Live para ofrecer un navegador y contenido basado en HTML desde el CD. Ya se ha realizado una distribución completa de Firefox y funciona en la plataforma PDA basada en GNU/Linux Sharp Zaurus bajo entorno pdaXrom.

IceWeasel:
Es probable que alguno de ustedes haya oído hablar de este navegador. Pues bien, no es más que un fork de Firefox creado por el proyecto Debian por una disputa que mantuvo con la fundación Mozilla. Ésta última decía que Debian no podía distribuir un paquete llamado Firefox sin incluir el logo oficial y, además, pedía a Debian que le enviara todos los parches que aplicasen a Firefox. Debian se negó a incluir el logotipo oficial y a enviar los parches a la fundación Mozilla, por lo que Debian tuvo que cambiar el nombre de IceWeasel a Firefox.

Versiones en Desarrollo::

Versión 3.0:
El nombre de desarrollo de Mozilla Firefox 3.0 es Gran Paradiso y las tiradas son actualmente nombradas Minefield, al ser éste el nombre de la versión troncal. Gran Paradiso, como otros nombres de desarrollo de Firefox, es el nombre de un parque nacional de Italia. La versión beta de Firefox 3.0 estará para el primer cuatrimestre del 2007. Debido a la decisión de Microsoft de finalizar el soporte para Windows 98 y Windows Me el 11 de julio del 2006, y porque Cairo no soporta Windows 95 y Windows NT 4.0, Firefox 3.0 no funcionará en dichos sistemas operativos.

Versión 4.0:
El 13 de octubre de 2006, el oficial jefe de tecnología de Mozilla, Brendan Eich, escribió acerca de los planes para Mozilla 2.0, la plataforma sobre la cual Firefox 4.0 debería basarse. Los cambios en esta versión incluyen la eliminación del API XPCOM, el cambio a características estándar de C++, compilación Just-in-Time de JavaScript 2 (conocido como proyecto Tamarin) y seguridad en tiempo de ejecución.

Creo que antes de finalizar debo mostrar una tabla con información acerca de navegadores conocidos por nosotros, para que así pueda usted hacer su propia comparación (ésta son sólo algunas características).

Características

Internet Explorer (Trident)

Mozilla Firefox

Netscape Browser

Opera

Safari

SeaMonkey

Windows

incluido

no

Mac OS X

no

no

incluido

Mac OS 9

no

no

no

quedó en la v6.03

no

no

GNU/Linux

no

no

no

UNIX

quedó en la v5.0

no

no

Gestor de direcciones favoritas

Gestor de descargas

no

Revisión ortográfica

no

no

¿?

Barra de motores de búsqueda

no

Navegación por pestañas

Bloqueo de ventanas emergentes

incompleto


Aquí les van otros navegadores: Amaya, AOL Explorer, Avant, Camino, Dillo, ELinks, Epiphany, Flock, Galeon, iCab, K-Meleon, Konqueror, Links, Lynx, Maxthon, Mosaic, Off By One, OmniWeb, Shiira, WorldWideWeb, w3m, etc.

Para saber más...

Continuar leyendo