Enlightenment ha crecido más que un Administrador / Gestor de ventanas [1] [2]. Tiene muchos sistemas que han crecido por si mismos para apoyar el desarrollo de la siguiente version (0.17) y todo el esfuerzo está entrando en la solidificación de estos sistemas para hacer más estable el desarrollo sobre ellos. Esto ha conducido a mucho codigo producido lejos y más allá de un Administrador de ventana. La idea es compartir tanto código como sea posible con otros programas, y así que un ejército pequeño de bibliotecas compartidas se ha desarrollado para Enlightenment. Esta introduccion procura cubrir algunos de éstas (especialmente las más interesantes) para dar una buena penetración en porqué existen, lo que hacen, cómo utilizarlos, y adonde van.
Referimos a estos sistemas como las "Bibliotecas de la fundación de Enlightenment" (Enlightenment Foundation Libraries) o EFL por sus siglas en ingles, pues son la fundación del proyecto y actualmente el contener todo el trabajo duro. El intento es tener bibliotecas que sean extremadamente fáciles de utilizar y de aprender, eso optimiza automáticamente para el programador en lo posible y ahorra el tiempo y el esfuerzo del programador a largo plazo. Creemos que hemos alcanzado muchas de estas metas y que tenemos algunos aspectos muy únicos que pueden estar de gran interés a los reveladores fuera del proyecto de crear algunas herramientas interesantes y asombrosas.
Enlightenment es el Administrador de Ventanas y el Shell del Escritorio. Esto es lo que piensa la mayoría de la gente que es solamente Enlightenment. Eso solo la punta del iceberg por mucho aunque Enlightenment es el sofware insignia en el proyecto. Es actualmente mucho mas reciente que cualquier otra parte de las EFL.
Enlightenment, Como DR0.17 (que no se ha lanzado todavía. Las ultimas capturas de CVS son 0.16.999) es nuestro Administrador de Ventanas de "siguiente generacion". No utiliza ninguna extension avanzada de X disponible en algún Servidor X nuevo[1] [2], todavía, pues se está esforzando ser al revés-compatible a todo los Servidores X incluso en las máquinas más viejas.
Esta siendo diseñado no solo para nuevas características, sino también para trabajar en los dispositivos con poco poder de procesamientos, así como los sistemas de más de mayor capacidad de procesamiento de hoy en dia. No es el mejor o el mas rapido pero esta cerca a la maxima velocidad y cerca del minimo por tamaño (comparado a sus contrapartes que tienen funcionalidad equivalente), pero sobretodo a cosas que se esfuerza ser hermoso.
Creemos que tu escritorio no debe ser una monstruosidad. Debe ser funcional Y hermoso. Enlightenment permite que modifiques enteramente la mirada para requisitos particulares de ella vía temas a un grado que la mayoría de los otros Administradores de Ventanas tan solo pueden soñar, especialmente hacerlo a la misma velocidad y eficacia. Enlightenment aun no es listo para el lanzamiento a los usuarios, así que mantenemos el desarrollo sobre todo sin apoyo, pero no desaprobamos su instalacion para que puedan saborear lo que esta por venir.
Evas es un Display Canvas. Esto es diferente al usual "modo inmediato" del sistema de visualización que la mayoría de los programadores están acostumbrados y que existen en el Xlib, GDI e incluso los niveles de OpenGL al hacer la programación de los gráficos. La diferencia es que el programador tiene que llamar rutinas PARA DIBUJAR la pantalla o actualizar dibujando una operación a la vez, por ejemplo dibujar lineas, pegar imagenes dibujar cajas o pegar texto. Cuando la pantalla necesita una actualización estas operaciones son hechas otra vez por el código, normalmente del elemento del fondo hata el que esta sobre todo (algoritmo de los pintores).
Este es el "modo inmediato"de dibujado. Evas es diferente. Es estructural por naturaleza, así que en vez del dibujo, describes el contenido del canvas (o la escena) en términos de primitivos (imágenes, líneas, cajas, polígonos, secuencias de texto etc.) y características (color, el apilar, tamaño, etc.). El dibujo sí mismo es manejado por el canvas, que actúa como máquina del estado, haciendo no realmente ningun "trabajo duro"hasta que se ejecuta una llamada del render canvas, en cuyo caso evalúa el anterior y el estado actual y pone al día apropiadamente la pantalla sin el que programador tenga que saber se hace esto.
Evas es una pieza base de las EFL. Es el renderizador y el motor del administrador de display que esta bajo cualquier cosa veas en pantalla. Hace todo el trabajo de administrar todos los objetos mostrados, su estado, estados de cambio, el nivel de las capas, renderizado y escalamiento, carga de la imagen, renderizado de texto, optimizado de la tuberia de manejo, optimizando la tubería de la exhibición para evitar el trabajo y más. Hace los muchos del trabajo dificil del display y es portable más allá del X.
Incluso funciona en el framebuffer directamente sin necesitar X, debajo de Qtopia de Trolltech, en DirectFB, puede renderizar a un buffer de memoria, y puede usar OpenGL para acelerar el renderizado. Es extremadamente flexible y de gran alcance, ahorrando mucho tiempo escribir las rutinas de dibujo repetidoras las cuales a menudo no lo hacen optimamente. Esto evita el tiempo, el cuidado y el esfuerzo que la mayoría de los programadores no desearían pasar, porque distraen del trabajo importante.
Pero a pesar de todas las cosas que Evas pueda hacer, no es muy grande. Se ha mantenido pequeño, para hacerlo viable NO SOLO para el uso en escritorios pesados sino también en los dispositivos limitados de recursos tales como PDA, los teléfonos móviles y los teléfonos inteligentes, los sistemas estéreos, los reproductores de DVD, los sistemas de PVR/DVR y más.
Ya se han portado a telefonos moviles y sistemas PVR/DVR probando su capacidad de mostrar estas exhibiciones muy agradablemente con efectos hermosos. El desarrolador no tiene que cambiar cómo crea codigo para un dispositivo o su escritorio pues el API y el renderizado son igual, así que no hay ambientes o emuladores especiales del desarrollo necesarios. Esto ahorra tiempo y esfuerzo, permitiendo que el código del escritorio y de dispositivo se comparta y sea mantenido fácilmente. También puesto que Evas oculta los detalles de los dispositivos, y virtualiza la exhibición en un nivel de objeto, el programador no necesita cuidar cómo renderizar cosas. Pueden utilizar un sistema estándar que sea universal a través de todos las instancias de Evas.
Evas proporciona la alpha blending, escalamiento de alta calidad de imágenes, anti-aliased texto truetype, gradientes, líneas, polígonos y más. La lista de objetos apoyados está creciendo, y puede ser extendida vía objetos elegantes. Tiene un mecanismo del interfaz a tener en cuenta para que los datos de video sean dirigidos eficientemente (que es lo que emotion explota) y más.
Ecore es un grupo modular de bibliotecas muy ligadas que proporcionan funcionalidad core event loop y tareas relacionadas. Como core event loop proporciona la conversión de sistemas señales en acontecimientos, para evitar tener que tener código reentrante, manejo basico del descriptor de archivo, monitoreo y paso de control hacia una apropiada rutina de callback donde se necesiten, manejo de temporizadores, llamadas idle, y otra infraestructura general y codigo loop.
También proporciona faciles wrappers alrededor de sistemas comunes tales como X, Evas (para la disposición y combinacion con X), el frame-buffer, administracion de la configuración, inter comunicación de proceso, manejo de socket, programación cliente/del servidor, las conversiones de codificación del texto (e.g. EUCJP a UTF8), dirección de trabajo diferida y más. Esta biblioteca es un ahorrador grande de tiempo y la biblioteca base que se puede utilizar para hacer todas los cosas básicass que se necesita hacer, con código y esfuerzo mínimos.
La mejor manera de describir Ecore está como el cemento entre los ladrillos. Lleva a cabo cosas juntas muy agradable. En ejemplos posteriores mucho de la disposición y de la infraestructura es gracias a Ecore.
Edje
Edje es una de las partes más únicas de EFL, combinando muchas cosas que Shockwave / FLASH puede hacer con algunas cosas que no puede, sino que en vez de ser diseñado como reproductor, se diseño como una biblioteca escalva que se utilizará por un aaplicacion para mejorar el contenido de las aplicaciones vía ficheros externos de datos comprimidos. Se está ampliando continuamente, y gracias a su diseño limpio es fácil mejorar. Este es el motor detrás de los temas de Enlightenment 0.17 y más allá. Formaliza temas de Enlightenment de una manera simple y constante.
Una lista rápida de sus características:
- Imágenes Bitmap escalables
- Imágenes en linea altamente comprimidas
- Compresion sin perdida y con poca perdida con o sin canal alfa
- fuentes comprimidas en linea truetype
- Multiples Efectos de fuentes incorporados
- Redimensionado atumatico de fuentes basado en tamaño o en area
- Compresion de texto y cortado basado en elipsis
- Objetos rectángulo
- Sistema configurable de esquema de color
- La capacidad de embedir objetos de Edje con obejtos Edje
- Lenguaje Embryo-script para interacciones complejas
- Scripts encajonados para no hacer demasiado daño
- Alpha blending
- Etiquetas completamente escalables y de tamaño modificable y metricas de la interfaz
- Tweened animation completamente calculadas para reproduccion ultra suave
Edje incluye actualmente un archivo de formato de fuente como el de C (que usa braces y la anidados similares a la sintaxis de C con anidado como el de XML) conocido como archivos de "EDC"que se compilan en los archivos binarios de "EET"que entonces son utilizados por la biblioteca de Edje para mostrarlos como un png o JPEG no son la "fuente"ellos mismos, son una representación comprimida, amistosa para la maquina de una imagen. Igual va para los archivos de EET.
El plan al largo plazo es proporcionar una nueva versión de la vieja herramienta Etcher que fue producida como un prototipo precursor para Edje (llamado Ebits) que dio a usuario una herramienta GUI de gran alcance para crear tales archivos y para corregirlos. Puesto que Edje es de mayor alcance y complejo de lo que Ebits nunca seria, este trabajo todavía no se ha hecho, sino está en la mesa de planeacion.
Embryo
Embryo es una máquina virtual y un compilador basados en el lenguaje de programación Small. Ha tenido muchos bugs reparados y mucho trabajo de portabilidad. Hechos al motor y al compilador. Se ha hecho más pequeño y más simple haciéndolo ideal para la inclusión en cualquier programa que deseara utilizar pedazos pequeños de "script logic"con un sistema más complejo, pero no desea traer recursos masivos requeridos como lo hacen otros idiomas tales como Perl, Python, Java, rubí, etc.
El motor del Embryo es minúsculo. El motor de la base es menos de 1700 líneas de código limpio de C, con la máquina virtual entera incluyendo rutinas básicas de la manipulación y rutinas matemáticas, headers y el código para uso general siendo solamente 3000 líneas de código. Los requisitos de la memoria para una escritura están sobre 8-16Kb de RAM, y se ejecutan muy rápidamente mientras que se compilan ya en bytecode.
Los scripts Embryo se encajonan asi que no pueden accesar archivos totalmente, así que no pueden tener acceso a archivos, no asignan memoria, no tienen acceso a la red, procesos de control ni hacen cualquier cosa que no se ha concedido explícitamente a ellos como llamada de función nativa exportada. Por lo tanto una escritura del Embryo por naturaleza es muy segura además de ser pequeña y muy rápida. El único daño que puede hacer está vía cualquier llamada de función a un programa puede proporcionar deje al script interconectar con el sistema, y éste es el mismo peligro inherente en TODOS lo sistemas. La ventaja es que el programador no necesita preocuparse de problemas fuera de esto.
traduccion de: http://enlightenment.org/Enlightenment/DR17/index.html
http://enlightenment.org/
http://enlightenment.freedesktop.org/
http://get-e.org/
http://www.rasterman.com/
http://www.rasterman.com/files/e17_movie-00.avi
http://www.rasterman.com/files/e17_movie-01.avi
http://www.rasterman.com/files/e17_movie-02.avi
http://www.rasterman.com/files/e17_movie-03.avi
http://www.rasterman.com/files/e17_movie-04.avi
http://www.rasterman.com/files/e17_movie-05.avi
http://www.rasterman.com/files/eem-live.avi
http://www.rasterman.com/files/eem.avi
gettext-0.14.6-1mdv2007.0.i586
libgettextmisc-0.14.6-1mdv2007.0.i586
gettext-devel-0.14.6-1mdv2007.0.i586
autoconf2.1-2.13-25mdv2007.0.noarch
autoconf2.5-2.59-7mdv2007.0.noarch
m4-1.4.4-1mdk.i586
automake1.8-1.9.6-3mdk.noarch
taglib-1.4-1mdk.i586
libtaglib0-1.4-1mdk.i586
libtaglib0-1.4-1mdk.i586
libtaglib0-devel-1.4-1mdk.i586
xine-ui-0.99.4-7mdv2007.0.i586
libxine1-1.1.2-3mdv2007.0.i586
libxine1-devel-1.1.2-3mdv2007.0.i586
libsqlite3_0-3.3.6-3mdv2007.0.i586.rpm
libsqlite3_0-devel-3.3.6-3mdv2007.0.i586
libapplewm7-1.0.0-3mdv2007.0.i586
libapplewm7-devel-1.0.0-3mdv2007.0.i586
libdmx1-devel-1.0.2-2mdv2007.0.i586
libfontenc1-devel-1.0.2-2mdv2007.0.i586
libfs6-devel-1.0.0-3mdv2007.0.i586
liblbxutil1-devel-1.0.1-2mdv2007.0.i586
libmesaglw1-6.5-17mdv2007.0.i586
libmesaglw1-devel-6.5-17mdv2007.0.i586
liboldx6-1.0.1-3mdv2007.0.i586
liboldx6-devel-1.0.1-3mdv2007.0.i586
libwindowswm7-1.0.0-3mdv2007.0.i586
libwindowswm7-devel-1.0.0-3mdv2007.0.i586
libxaw-devel-1.0.2-4mdv2007.0.i586
libxaw6-1.0.2-4mdv2007.0.i586
libxcomposite1-devel-0.3-2mdv2007.0.i586
libxdamage1-devel-1.0.3-2mdv2007.0.i586
libxevie1-devel-1.0.1-2mdv2007.0.i586
libxfont1-devel-1.1.0-4mdv2007.0.i586
libxfontcache1-devel-1.0.2-2mdv2007.0.i586
libxkbfile1-devel-1.0.3-2mdv2007.0.i586
libxkbui1-devel-1.0.2-2mdv2007.0.i586
libxorg-x11-devel-7.1.0-6mdv2007.0.i586
libxp6-devel-1.0.0-3mdv2007.0.i586
libxpm4-devel-3.5.5-2mdv2007.0.i586
libxprintapputil1-1.0.1-3mdv2007.0.i586
libxprintapputil1-devel-1.0.1-3mdv2007.0.i586
libxprintutil1-1.0.1-3mdv2007.0.i586
libxprintutil1-devel-1.0.1-3mdv2007.0.i586
libxres1-devel-1.0.1-2mdv2007.0.i586
libxscrnsaver1-devel-1.1.0-2mdv2007.0.i586
libxtrap6-1.0.0-3mdv2007.0.i586
libxtrap6-devel-1.0.0-3mdv2007.0.i586
libxtst6-devel-1.0.1-3mdv2007.0.i586
libxv1-devel-1.0.1-3mdv2007.0.i586
libxvmc1-devel-1.0.2-2mdv2007.0.i586
libxxf86dga1-devel-1.0.1-2mdv2007.0.i586
libxxf86misc1-devel-1.0.1-2mdv2007.0.i586
x11-server-1.1.1-11mdv2007.0.i586
x11-server-devel-1.1.1-11mdv2007.0.i586
x11-server-xdmx-1.1.1-11mdv2007.0.i586
x11-server-xnest-1.1.1-11mdv2007.0.i586
x11-server-xvfb-1.1.1-11mdv2007.0.i586
x11-xtrans-devel-1.0.1-1mdv2007.0.i586
libcurl3-7.15.5-1mdv2007.0.i586
libcurl3-devel-7.15.5-1mdv2007.0.i586
libidn11-devel-0.6.5-1mdv2007.0.i586
flex-2.5.4a-25mdv2007.0.i586
bison-2.3-1mdv2007.0.i586
libgtk+2.0_0-devel-2.10.3-4mdv2007.0.i586
libtool-1.5.20-9mdv2007.0.i586
libtool-base-1.5.20-9mdv2007.0.i586
libdirectfb0.9_25-devel-0.9.25.1-2mdk.i586
libdirectfb0.9_25
libltdl3-1.5.20-9mdv2007.0.i586
libltdl3-devel-1.5.20-9mdv2007.0.i586
libfreetype6-static-devel-2.2.1-4mdv2007.0.i586
pkgconfig-0.20-2mdk.i586
ed-0.2-32mdk.i586
libnetpbm10-10.34-2mdv2007.0.i586
netpbm-10.34-2mdv2007.0.i586
sam2p-0.44.14-1mdk.i586
tetex-3.0-18mdv2007.0.i586
texinfo-4.8-4mdv2007.0.i586
libopenssl0.9.8-devel-0.9.8b-2mdv2007.0.i586
libopenssl0.9.8-0.9.8b-2mdv2007.0.i586
libatk1.0_0-devel-1.12.2-1mdv2007.0.i586
libatk1.0_0-1.12.2-1mdv2007.0.i586
libcairo2-devel-1.2.4-2mdv2007.0.i586
libcairo2-1.2.4-2mdv2007.0.i586
libgdk_pixbuf2.0_0-devel-2.10.3-4mdv2007.0.i586
libgdk_pixbuf2.0_0-2.10.3-4mdv2007.0.i586
libpango1.0_0-1.14.3-2mdv2007.0.i586
libpango1.0_0-devel-1.14.3-2mdv2007.0.i586
libglib1.2-1.2.10-16mdk.i586
libglib1.2-devel-1.2.10-16mdk.i586
libgtk+1.2-1.2.10-45mdv2007.0.i586
libgtk+1.2-devel-1.2.10-45mdv2007.0.i586
Dependencias de Imlib:
libjpeg62-static-devel-6b-39mdk.i586
libjpeg62-devel-6b-39mdk.i586
libjpeg62-6b-39mdk.i586
libpng3-1.2.12-2mdv2007.0.i586
libpng3-devel-1.2.12-2mdv2007.0.i586
libtiff3-3.8.2-5mdv2007.0.i586
libtiff3-devel-3.8.2-5mdv2007.0.i586.rpm
libungif4-devel-4.1.4-2mdv2007.0.i586
libungif4-4.1.4-2mdv2007.0.i586
zlib1-1.2.3-2mdv2007.0.i586
zlib1-devel-1.2.3-2mdv2007.0.i586
libbzip2_1-1.0.3-6mdv2007.0.i586
libbzip2_1-devel-1.0.3-6mdv2007.0.i586
libid3_3.8_3-3.8.3-10mdk.i586
libid3_3.8_3-devel-3.8.3-10mdk.i586
libid3tag0-devel-0.15.1b-5mdv2007.0.i586
libid3tag0-0.15.1b-5mdv2007.0.i586
Todas las dependencias se encuentran en los repositorios de urpmi, si no sabes que es urpmi revisa estos enlaces:
Todo lo que siempre quisiste saber sobre urpmi pero nunca te atreviste a preguntarlo
http://drakedalfa.blogspot.com/2006/06/todo-lo-que-siempre-quisiste-saber.html
http://www.llermania.com/listas/urpmi_lista_rapida.html
URPMI
http://urpmi.org/
http://en.wikipedia.org/wiki/Urpmi
http://es.wikipedia.org/wiki/Urpmi
http://qa.mandriva.com/twiki/bin/view/Main/UrpmiResources
http://www1.mandrivalinux.com/cooker/urpmi.html
http://qa.mandriva.com/twiki/bin/view/Main/UrpmiFAQ
http://qa.mandriva.com/twiki/bin/view/Main/UrpmiDev
Easy URPMI
http://easyurpmi.zarb.org/
Ahora desintalaremos el imlib2 que viene con mandriva de esta forma:
rpm -e -v --nodeps libimlib2_1
rpm -e -v --nodeps libimlib2_1-filters
rpm -e -v --nodeps libimlib2_1-loaders
estos son los archivos que se desinstalaran:
libimlib2_1-filters-1.2.1-1mdk.i586
libimlib2_1-loaders-1.2.1-1mdk.i586
libimlib2_1-1.2.1-1mdk.i586
no importa que no esten ya que compilaremos el imlib2 de cvs y se colocaran los archivos en el lugar de los anteriores (cuando se hace esto se adquiere una mejor calidad en las imagenes y las aplicaciones que usan imlib son mas rapidas) porque el imlib que esta en CVS es una libreria mas nueva y claro al compilarse se hace con optimizacion para el sistema, para que urpmi no sobre escriba los archivos compilado de la imlib cvs se debe agregar lo siguiente en el archivo /etc/skip.list :
# Here you can specify the packages that won't be upgraded automatically
# for example, to exclude all apache2 packages :
# /apache2/
libimlib2_1
libimlib2_1-devel
libimlib2_1-filters
libimlib2_1-loaders
Ahora que ya tenemos todas las dependencias instaladas debemos bajar el codigo de Enlightenment del servidor cvs, puedes crear un directorio y luego entras a el para que cuando ejecutes los comandos siguientes las fuentes se descarguen a ese directorio caso contrario se descargaran al directorio actual donde te encuentras:
cvs -z3 -d:pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17
cvs -z3 -d:pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e_modules
Con esos dos comandos habras bajado Enlightenment 17 y sus modulos pero si te animas a bajar mas puedes bajar mas software de Enlightenment muchos de estos programas no estan terminados y tienen fines experimentales por el momento:
cvs -z3 -d:pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co misc
Ahora que tenemos todo listo entramos en los directorios descargados y comenzamos a compilar el orden de compilacion es el siguiente:
Librerias
e17/libs/imlib2
e17/libs/edb
e17/libs/eet
e17/libs/imlib2_loaders
e17/libs/evas
e17/libs/ecore
e17/libs/epeg
e17/libs/embryo
e17/libs/edje
e17/libs/epsilon
e17/libs/esmart
e17/libs/ewl
e17/libs/engrave
e17/libs/emotion
Aplicaciones
e17/apps/e
Administrador de Ventanas y Shell Grafico
e17/apps/e_utils
Aplicaciones para Administrar "amigablemente" E17
Modulos
e_modules/
Modulos que agregan funcionalidades a Enlightenment estos se deben compilar como usuarios normales para que se instalen en tu home
Para la compilacion solo necesitamos ejecutar el script autogen.sh dentro de cada directorio del paquete que queramos compilar.
./autogen.sh
Puedes pasarle parametros a autogen como si fuera configure si no le pones ninguno enviara las cosas a /usr/local caso contrario los enviara a donde le especifiques los dos parametros mas importantes son libdir y bindir, directorio de librerias y de binarios respectivamente.
Los puedes especificar asi:
./autogen.sh --bindir=/usr/bin --libdir=/usr/lib
Si no colocas un path a librerias y / o binarios tendras que agregar /usr/local/bin a tu path en .bash_profile en tu home y /usr/local/lib a tu /etc/ld.so.conf
Luego de la configuracion del autogen se digitan los ya conocidos comandos:
make
make install
Cuando llegues a E necesitas especificar unos parametros:
./autogen.sh --with-evas-config=/usr/bin/evas-config --with-ecore-config=/usr/bin/ecore-config --with-edje-config=/usr/bin/edje-config --with-eet-config=/usr/bin/eet-config --with-embryo-config=/usr/bin/embryo-config
Donde le dices donde estan los binarios de las librerias que compilamos anteriormente en este ejemplo cambia /usr/bin por el path que elegiste.
Crear un archivo starte17 en /usr/bin/ y hacerlo ejecutable:
echo "exec enlightenment_start" > /usr/bin/starte17
chmod 755 /usr/bin/starte17
En /etc/X11/dm/Sessions se encuentran los archivos de configuracion para los administradores de session (KDM, GDM, MDKKDM)
Se debe crear el archivo 15E17.destop con la siguiente informacion:
[Desktop Entry]
Encoding=UTF-8
Name=E17
Comment=E17
TryExec=/usr/bin/starte17
Exec=/etc/X11/xdm/Xsession E17
Icon=
Type=Application
luego en:
/etc/X11/wmsession.d/
Crear el archivo 15E17.desktop con la siguiente info:
NAME=E17
ICON=
DESC=Enlightenment DR17
EXEC=/usr/bin/starte17
SCRIPT:
exec /usr/bin/starte17
2 comentarios:
'peaso' articulo tan descriptivo y lujos de detalles importantes,
y no lo veo aun en blogdrake, ya tardas en subirlo y hacerte aun mas famoso,
saludos y feliz año nuevo 2007,
Francesc
Fue el ultimo articulo del 2006 y el sueño ya me vencia por causa de la gran comida que me di :-P ahora mismo estoy modificando urls para las imagenes para subirlo a blogdrake ^_^
Saludos y Feliz 2007 tambien.
Publicar un comentario