Sergio Álvarez (xergio)

Escritos

YAML

  • No hay comentarios
  • 13.01.07 / 12:43
Creo que voy a usar YAML para la configuración de este sitio. Ahora mismo lo tengo algo chapú porque lo metí directamente en una clase a piñón. Total, para cuatro cosas que tengo... Pero ahora lo quiero cambiar.

YAML es una forma de representar datos de forma muy intuitiva t lejible que se puede usar para configuraciones, logs, documentos, etc. Una vez creado el documento con el formato YAML ya solo tienes que pasarle un parser y generas por ejemplo un array con todos los datos.

Me gusta por 3 cosas:

  1. Como se lee fácilmente es muy sencillo de mantener.
  2. El formato es muy similar a la sintaxis de Python, indentando para hacer bloques y demás.
  3. Puedes crear un archivo de configuración y usarlo luego en múltiples lenguajes con sus respectivos parsers.

Para PHP en concreto voy a usar una clase llamada spyc. Parece ligera y hace su cometido. Aquí tenéis un ejemplo del archivo en YAML y cómo queda el array una ver parseado.

Sencillo, ¿no?

SVN + lista de usuarios y acceso + ViewVC

  • 3 comentarios
  • 13.01.07 / 17:20
Una vez más me he montado el servidor SVN. Realmente no sé si le sacaré partido, pero ahí lo tendré para lo que sea.

Siempre que he hecho esto he tenido los mismos problemas: primero que SVN no va, luego la lista de accesos falla y por último ViewVC da error de Python. Por eso voy a dejar escrito cómo lo he hecho funcionar esta vez, para que no me vuelva a pasar.

Lo voy a explicar como si fuera para Gentoo, pero en otros sistemas es prácticamente igual. Solo cambiarán 4 comandos.

Instalar SVN

En gentoo se instala con un simple emerge subversion. Hay que fujarse en que lo haga con soporte para Python y Apache. Una vez instalado creo un primer repositorio con svnadmin create /home/svn/repositorios/proyecto.

Ahora configuro Apache. Primero le diré a Apache2 que cargue los módulos de WebDAV, SVN y Authz añadiendo a la variable APACHE2_OPTS del archivo /etc/conf.d/apache2 las opciones -D DAV -D SVN -D SVN_AUTHZ, además de las que ya había: -D PHP5 -D PYTHON. Recargo Apache con /etc/init.d/apache2 reload y ya está.

Ahora el vhost y la autentificación. En mi caso siempre he querido un vhost para esto y lo creo así:

<Directory "/home/svn/">
  Options FollowSymLinks Indexes ExecCGI
  AllowOverride All
  <IfModule mod_access.c>
    Order deny,allow
    Deny from none
    Allow from all
  </IfModule>
</Directory>

<VirtualHost *:80>
  ServerName svn.xergio.net
  ServerAlias www.svn.xergio.net svn.xrg.es www.svn.xrg.es
  DocumentRoot /home/svn/www
  ErrorLog logs/svn.xergio.net-error_log
  CustomLog logs/svn.xergio.net-access_log combined

#  ScriptAlias /source /home/svn/www/bin/cgi/viewvc.cgi
#  ScriptAlias /query /home/svn/www/bin/cgi/query.cgi

  <Location "/svn/proyecto">
    DAV svn
    SVNPath /home/svn/repositorios/proyecto
#    AuthType Basic
#    AuthName "Repositorio SVN"
#    AuthUserFile /home/svn/config/users.proyecto
#    AuthzSVNAccessFile /home/svn/config/access
#    Require valid-user
  </Location>
</VirtualHost>

Las líneas comentadas significan que eso ahora no nos sirve, ahora las iremos descomentando.

Bien, como podemos ver tengo una ruta base, /home/svn/ donde dentro de repositorios/ meto cada proyecto (en este caso uno llamado "proyecto"), en config/ meto el archivo de accesos que ya veremos y los usuarios para cada proyecto, y un directorio www/ que será para meter dentro el ViewVC.

Hay que destacar que para cada proyecto se tendrá que crear un bloque Location. Esto me gustaría cambiarlo en un futuro...

Si pedimos http://svn.eldominio.com/svn/proyecto podremos obtener el proyecto llamado "proyecto".

Lista de usuarios y de accesos

Ahora voy a aligerar un poco la marcha.

Descomento las 5 últimas líneas comentadas. Así ahora tengo la autentificación básica activada. Creo el archivo /home/svn/config/users.proyecto con el comando htpasswd2 -m -c /home/svn/config/users.proyecto USUARIO. El resto de veces no se pondrá la -c, sino nos cargamos el archivo.

Ahora la lista de accesos será así:

[proyecto:/]
xergio = rw
test = r

Esto significa que para todo el proyecto llamado "proyecto", los usuarios xergio y test podrán leer (descargarse el proyecto), el usuario xergio podrá también escribir (hacer commits), y el resto nada de nada.

Habría un bloque similar para cada proyecto, y además podríamos poner permisos a directorios dentro de cada proyecto.

Recargamos de nuevo Apache2 y ya estará todo listo.

ViewVC

Nos lo descargamos, lo descomprimimos en /home/svn/www/ y ejecuto el comando ./viewvc-install. Me pedirá dónde lo quiero instalar, le digo que ahí mismo, y configuro el viewvc.conf así:

[general]
#cvs_roots = cvs: /home/cvsroot
#svn_roots = 
root_parents = /home/svn/repositorios : svn
#default_root = 
#rcs_path = /usr/bin/
#cvsnt_exe_path =
#cvsnt_exe_path = cvs
#cvsnt_exe_path = K:Program Filescvsntcvs.exe
#cvsnt_exe_path = /usr/bin/cvs
use_rcsparse = 0
#svn_path = /usr/bin/
#mime_types_file = /usr/local/apache/conf/mime.types
address = Lo que sea, admite HTML
forbidden =
kv_files =
languages = en-us

[options]
root_as_url_component = 1
default_file_view = log
checkout_magic = 0
http_expiration_time = 600
generate_etags = 1
sort_by = file
sort_group_dirs = 1
hide_attic = 1
log_sort = date
diff_format = h
hide_cvsroot = 1
hr_breakable = 1
hr_funout = 0
hr_ignore_white = 1
hr_ignore_keyword_subst = 1
hr_intraline = 0
allow_annotate = 1
allow_markup = 1
allow_compress = 1
template_dir = templates
#docroot = /docroot
show_subdir_lastmod = 0
show_logs = 1
show_log_in_markup = 1
cross_copies = 1
#use_localtime = 1
py2html_path = .
short_log_len = 80
use_enscript = 1
enscript_path =
use_highlight = 0
use_php = 0
allow_tar = 1
use_cvsgraph = 0
use_re_search = 1
use_pagesize = 0
limit_changes = 100

Hay más cosas. pero no las he tocado.

Por cierto, descomentamos del vhost de Apache las dos líneas que quedaban. Viendo la dirección, accediendo a http://svn.eldominio.com/source/ veremos ya nuestro ViewVC.

Ale, fijo que se me olvidaron cosas, ya las añadiré si me doy cuenta.

Estilos y Firebug

  • No hay comentarios
  • 14.01.07 / 17:05
firebug
Hay gente que la pestaña de estilos en el nuevo Firebug no le va. En principio esto pasa si no tiene el DOM Inspector instalado, pero otros, como mi caso, si lo teníamos y no funcionaba.

La solución es sencilla. Se borran los siguientes archivos de la ruta C:/Archivos de programa/Mozilla Firefox/components:

  • inspector.dll
  • inspector.xpt
  • instpector-cmdline.js

Y se reinstala Firefox, de nuevo, con el DOM Inspector.

La solución la he sacado de la lista de correo de Firebug, o lo que es lo mismo, del grupo de Google que tienen.

23

  • 8 comentarios
  • 18.01.07 / 09:15
Está chulo el video... puede ser una buena alternativa a las tradicionales postales.

Adiós a las postales!

Gracias Magda.

Actualizado 1: Ay! Otro! De Vane :D Mola :D

nView

  • 4 comentarios
  • 19.01.07 / 12:39
Primero veamos qué es esto de nView, según NVIDIA...:

La tecnología multimonitor nView de NVIDIA, que acompaña sin coste adicional a las soluciones ForceWare™ de NVIDIA® para sistemas fijos, estaciones de trabajo, equipos portátiles, plataformas y software multimedia, ofrece una fórmula revolucionaria para aumentar la productividad o la capacidad de realizar varias tareas de forma simultánea y procesar información. En lugar de apilar las distintas ventanas en un solo monitor, imagínese las ventajas de repartir el trabajo entre varios. Los analistas financieros podrán disponer de un monitor para hacer el seguimiento de cada flujo de datos. Los diseñadores gráficos podrán utilizar una pantalla completa para combinar colores y otra para editar. Las posibilidades son infinitas.

Eso es lo que dicen en      Tecnología de visualización multipantalla NVIDIA® nView™, y se quedan tan anchos.

Todo esto viene porque desde que estoy en este trabajo el ordenador se me colgaba cuando quería, le diera caña o no, usara mucha memoria o no, estuviera usándolo o no! Daba igual! No aguantaba más de dos días sin que se me colgara todo el entorno y eso que es un P4 a 3.2GHz HT con 1GB de RAM. Me puse a desactivar programas para ver qué pasaba hasta que esta semana me dió por quitar el nView que NVIDIA instala con sus drivers, y desde entonces todo va de lujo: el entorno de Windows va más fluido, hay menos RAM usada, NO SE HA COLGADO NADA...

Eso si que es aumentar la productividad, y no tener que reiniciar cada dos días con todo lo que ello me supone.

Google Trend Music + Firefox + Greasemonkey = Google Trends Music Plus

  • 4 comentarios
  • 19.01.07 / 19:48
De vez en cuando miro Google Trends Music para ver qué temas se escuchan más. Este ránking se basa en lo que la gente se lleva a los oidos usando Google Talk (con iTunes®, Winamp, Windows Media® Player, o Yahoo Music Engine™).

Pero como es normal a veces no conozco alguna canción y me apetece oirla, con lo que me voy a Youtube y busco el videoclip. De sobra es conocida mi vagancia, por lo que me he hecho un userscript para Greasemonkey y lo he llamado Google Trends Music Plus, el cual me añade enlaces a los buscadores de Youtube, al de Last.fm (para ver más información del tema) y al buscador de Google, por si quiero ver la letra.

Google Trends Music PlusGoogle Trends Music Plus: He añadido enlaces con un script para Greasemonkey

Además no me apetecía romperme la cabeza y lleva incorporada Mootools (r83) para hacerlo funcionar.

Para descargarlo podéis ir a visualizar código fuente, guardarlo con extensión/tipo .js, y arrastrarlo o abrirlo con Firefox. Recordad qeu hace falta la extensión Greasemonkey.

Relaciones de confianza entre dos Linux

  • 9 comentarios
  • 21.01.07 / 23:45
Me voy a apuntar esto porque he estado una semana intentándolo y no lo conseguí.

Ahora mismo tengo por un lado el VPS (con Gentoo y en USA) y por otro lado la torre (con Ubuntu y en casa), la que hace meses hacía de servidor en mi casa de León con el ADSL. Lo que ahora quiero es que la torre haga de servidor de backups del VPS por si alguna vez pasa algo o simplemente quiero cambiar de VPS.

Mi idea es que la torre cada día vaya al VPS (por SSH) y se pille lo que yo le diga. Todo de forma automática, sin tener que lanzar el proceso yo cada día. El VPS no tiene porqué saber nada, no va a hacer nada, será la torre la que se preocupe de ese proceso.

Para ello necesito hacer login desde la torre en el VPS, pero sin que me pida contraseña cada vez. Esto se consigue con las relaciones de confianza. La cosa funciona más o menos así: desde el cliente (en este caso la torre) se genera una clave pública y privada (el formato, protocolo y demás es lo de menos). La clave pública se manda al servidor (en este caso el VPS), y con eso ya cada vez que se intente hacer login por SSH desde el cliente al servidor se contrastarán las claves y si son válidas le dejará pasar sin pedirle contraseña ni nada.

Esto es como si un amigo nos dice que quiere venir a nuestra casa y nos enseña las llaves que tiene... y nosotros ponemos a nuestras puertas unas cerraduras a medida para esas llaves. Suena raro, pero es así :P

Vista la explicación para que nunca más se me olvida, voy con los 4 comandos que se necesitan.

Primero genero la clave pública y privada en el cliente con ssh-keygen -t dsa. Pedirá dónde lo queremos guardar y un passphrase, el cual dejaremos en blanco. por defecto nos guardará los dos archivos en ~/.ssh/id_dsa*.

Luego tengo que mandar la clave pública al servidor para que reconozca al cliente. En el cliente haremos un cd ~/.ssh/ y mandamos la clave pública al servidor con scp id_dsa.pub usuario@host.de.servidor.com:. El usuario es un usuario válido del servidor, yo usé root...

Bien, ya tenemos la clave pública en el servidor, ahora la añadimos a la lista de claves autorizadas. Desde el cliente mismamente entramos al servidor con ssh -l usuario host.de.servidor.com y hacemos un cat id_dsa.pub >> ~/.ssh/authorized_keys. Borramos el archivo id_dsa.pub del servidor y salimos.

Por ahí he visto que la gente da permisos 700 a ~/.ssh/ y 600 al ~/.ssh/authorized_keys, pero yo creo que no lo necesité.

OK, pues ya se puede probar a ver si va bien... desde el cliente volvemos a intentar hacer login en el servidor con ssh -l usuario host.de.servidor.com y si no nos pide contraseña... YA ESTA! :D

Bueno, hay más información en Gentoo-wiki, SECURITY SSH without a password. Ahora ya solo me queda montar el script que haga los backups. Posiblemente use rdiff-backup, que me suena mucho de haberlo visto por los foros de Gentoo. Ya contaré.

El círculo del 99

  • 2 comentarios
  • 22.01.07 / 00:16
Qué sorpresa... hoy me conecté un rato al MSN y puse de mensaje de estado "...me falta algo y no sé qué. Tengo de todo dentro de un orden, pero en el fondo nada que importe...", por una canción de Pereza. Se ve que Vero lo ha visto (pero no me ha saludado, ejem...) y me mandó un mail con un relato muy chulo:

Monedas
Habia una vez …

…un rey muy triste que tenía un sirviente, que como todo sirviente de rey triste, era muy feliz. Todas las mañanas llegaba a traer el desayuno y despertar al rey contando y tarareando alegres canciones de juglares. Una gran sonrisa se dibujaba en su distendida cara y su actitud para con la vida era siempre serena y alegre.
Un día, el rey lo mandó a llamar.
—Paje –le dijo— ¿cuál es el secreto?
—¿Qué secreto, Majestad?
—¿Cuál es el secreto de tu alegría?
—No hay ningún secreto, Alteza.
—No me mientas, paje. He mandado a cortar cabezas por ofensas menores que una mentira.
—No le miento, Alteza, no guardo ningún secreto.
—¿Por qué estás siempre alegre y feliz? ¿eh? ¿por qué?
—Majestad, no tengo razones para estar triste. Su alteza me honra permitiéndome atenderlo. Tengo mi esposa y mis hijos viviendo en la casa que la corte nos ha asignado, somos vestidos y alimentados y además su Alteza me premia de vez en cuando con algunas monedas para darnos algunos gustos, ¿cómo no estar feliz?
—Si no me dices ya mismo el secreto, te haré decapitar – dijo el rey—. Nadie puede ser feliz por esas razones que has dado.
—Pero, Majestad, no hay secreto. Nada me gustaría más que complacerlo, pero no hay nada que yo esté ocultando...
—Vete, ¡vete antes de que llame al verdugo!
El sirviente sonrió, hizo una reverencia y salió de la habitación.
El rey estaba como loco. No consiguió explicarse cómo el paje estaba feliz viviendo de prestado, usando ropa usada y alimentándose de las sobras de los cortesanos. Cuando se calmó, llamó al más sabio de sus asesores y le contó su conversación de la mañana.
—¿Por qué él es feliz?
—Ah, Majestad, lo que sucede es que él está fuera del círculo.
—¿Fuera del círculo?
—Así es.
—¿Y eso es lo que lo hace feliz?
—No, Majestad, eso es lo que no lo hace infeliz.
—A ver si entiendo, estar en el círculo te hace infeliz.
—Así es.
—Y él no está.
—Así es.
—¿Y cómo salió?
—¡Nunca entró!
—¿Qué círculo es ese?
—El círculo del 99.
—Verdaderamente, no te entiendo nada.
—La única manera para que entendieras, sería mostrártelo en los hechos.
—¿Cómo?
—Haciendo entrar a tu paje en el círculo.
—Eso, obliguémoslo a entrar.
—No, Alteza, nadie puede obligar a nadie a entrar en el círculo.
—Entonces habrá que engañarlo.
—No hace falta, Su Majestad. Si le damos la oportunidad, él entrará solito, solito.
—¿Pero él no se dará cuenta de que eso es su infelicidad?
—Sí, se dará cuenta.
—Entonces no entrará.
—No lo podrá evitar.
—¿Dices que él se dará cuenta de la infelicidad que le causará entrar en ese ridículo círculo, y de todos modos entrará en él y no podrá salir?
—Tal cual. Majestad, ¿estás dispuesto a perder un excelente sirviente para poder entender la estructura del círculo?
—Sí.
—Bien, esta noche te pasaré a buscar. Debes tener preparada una bolsa de cuero con 99 monedas de oro, ni una más ni una menos. ¡99!
—¿Qué más? ¿Llevo guardias por si acaso?
—Nada más que la bolsa de cuero. Majestad, hasta la noche.
—Hasta la noche.
Así fue. Esa noche, el sabio pasó a buscar al rey. Juntos se escurrieron hasta los patios del palacio y se ocultaron junto a la casa del paje. Allí esperaron el alba. Cuando dentro de la casa se encendió la primera vela, el hombre sabio agarró la bolsa y le pinchó un papel que decía:

ESTE TESORO ES TUYO.
ES EL PREMIO POR SER UN BUEN HOMBRE.
DISFRÚTALO Y NO CUENTES A NADIE
CÓMO LO ENCONTRASTE.

Luego ató la bolsa con el papel en la puerta del sirviente, golpeó y volvió a esconderse.
Cuando el paje salió, el sabio y el rey espiaban desde atrás de unas matas lo que sucedía. El sirviente vio la bolsa, leyó el papel, agitó la bolsa y al escuchar el sonido metálico se estremeció, apretó la bolsa contra el pecho, miró hacia todos lados y entró en su casa.
Desde afuera escucharon la tranca de la puerta, y se arrimaron a la ventana para ver la escena.
El sirviente había tirado todo lo que había sobre la mesa y dejado sólo la vela. Se había sentado y había vaciado el contenido en la mesa.
Sus ojos no podían creer lo que veían. ¡Era una montaña de monedas de oro!. Él, que nunca había tocado una de estas monedas, tenía hoy una montaña de ellas para él.
El paje las tocaba y amontonaba, las acariciaba y hacía brillar la luz de la vela sobre ellas. Las juntaba y desparramaba, hacía pilas de monedas. Así, jugando y jugando empezó a hacer pilas de 10 monedas:
Una pila de diez, dos pilas de diez, tres pilas, cuatro, cinco, seis... y mientras sumaba 10, 20, 30, 40, 50, 60... hasta que formó la última pila: 9 monedas!
Su mirada recorrió la mesa primero, buscando una moneda más. Luego el piso y finalmente la bolsa.
“No puede ser”, pensó. Puso la última pila al lado de las otras y confirmó que era más baja.
—Me robaron –gritó— me robaron, malditos!
Una vez más buscó en la mesa, en el piso, en la bolsa, en sus ropas, vació sus bolsillos, corrió los muebles, pero no encontró lo que buscaba.
Sobre la mesa, como burlándose de él, una montañita resplandeciente le recordaba que había 99 monedas de oro “sólo 99”.
“99 monedas. Es mucho dinero”, pensó.
Pero me falta una moneda.
Noventa y nueve no es un número completo –pensaba—.
Cien es un número completo pero noventa y nueve, no.
El rey y su asesor miraban por la ventana. La cara del paje ya no era la misma, estaba con el ceño fruncido y lo rasgos tiesos, los ojos se habían vuelto pequeños y arrugados y la boca mostraba un horrible rictus, por el que asomaban sus dientes.
El sirviente guardó las monedas en la bolsa y mirando para todos lados para ver si alguien de la casa lo veía, escondió la bolsa entre la leña. Luego tomó papel y pluma y se sentó a hacer cálculos.
¿Cuánto tiempo tendría que ahorrar el sirviente para comprar su moneda número cien?
Todo el tiempo hablaba solo, en voz alta. Estaba dispuesto a trabajar duro hasta conseguirla. Después quizás no necesitara trabajar más. Con cien monedas de oro, un hombre puede dejar de trabajar.
Con cien monedas un hombre es rico. Con cien monedas se puede vivir tranquilo.
Sacó el cálculo. Si trabajaba y ahorraba su salario y algún dinero extra que recibía, en once o doce años juntaría lo necesario.
“Doce años es mucho tiempo”, pensó.
Quizás pudiera pedirle a su esposa que buscara trabajo en el pueblo por un tiempo. Y él mismo, después de todo, él terminaba su tarea en palacio a las cinco de la tarde, podría trabajar hasta la noche y recibir alguna paga extra por ello.
Sacó las cuentas: sumando su trabajo en el pueblo y el de su esposa, en siete años reuniría el dinero.
¡Era demasiado tiempo!
Quizás pudiera llevar al pueblo lo que quedaba de comida todas las noches y venderlo por unas monedas. De hecho, cuanto menos comieran, más comida habría para vender...

Vender...

Vender...

Estaba haciendo calor. ¿Para qué tanta ropa de invierno? ¿Para qué más de un par de zapatos?
Era un sacrificio, pero en cuatro años de sacrificios llegaría a su moneda cien.
El rey y el sabio, volvieron al palacio.
El paje había entrado en el círculo del 99...

...Durante los siguientes meses, el sirviente siguió sus planes tal como se le ocurrieron aquella noche.
Una mañana, el paje entró a la alcoba real golpeando las puertas, refunfuñando y de pocas pulgas.
—¿Qué te pasa? –preguntó el rey de buen modo.
—Nada me pasa, nada me pasa.
—Antes, no hace mucho, reías y cantabas todo el tiempo.
—Hago mi trabajo, ¿no? ¿Qué querría su Alteza, que fuera su bufón y su juglar también?
No pasó mucho tiempo antes de que el rey despidiera al sirviente.
No era agradable tener un paje que estuviera siempre de mal humor.

Esta versión la he encontrado en Depende de cómo lo mires.

Y para acabar... decir que estoy completamente de acuerdo con el relato. De hecho es mi filosofía de vida. Recuerdo que una vez mi tio me dijo "¿para qué ganar más dinero? Cuando tengas X querrás X+2, y así nunca estarás satisfecho", y desde entonces aprendí a disfrutar lo que tenía y a no permitirme todos y cada uno de los caprichitos que se me antojan a menudo, pero es lo mismo, cuando tienes uno quieres otro... y así nunca acabas.

Así que nada, gracias Vero :)

Niñato

  • 5 comentarios
  • 23.01.07 / 10:20
Este fin de semana Mario me pasó un video de un pringado que se metía con una persona mayor en el metro de Valencia. Podría ser un hecho aislado pero el tema se ha complicado para el chavalito. Youtube está lleno de videos.

Primero el tontaina lo subió para presumir de su "azaña" y cuando vio que la gente se ponía en su contra... lo quitó, pero alguien volvió a subirlo. Ese es el original, pero hay muchos más: versión de Violadores de verso, versión Chuck Norris, versión anónima con la música de Rocky... y la mejor, versión El Informal xD

Para hacernos una idea del bombo que ha cogido esto, en el foro de EOL hay un tema con 51 página y otro con 16 :P Además tienen abrasado su fotolog, se han hecho GIFs, páginas en favor del señor mayor, han mandado el video al correo de su instituto, a sus padres...

Ale, eso para que vuelva a hacer algo similar :)

Bug en el Wii Sports

  • 9 comentarios
  • 25.01.07 / 23:20
A parte de tener toda la pinta de ser un bug, tengo un problema...

Wii Sports Boxeo 2Wii Sports Boxeo 2: Ahi queda eso, 2500 puntos :D

Mejor dicho dos: uno la adicción que tengo a esto, y otro que ya mismo no veré la gráfica en la tele :P

Será que los de Nintendo no pensaron en que la gente podría salirse de los 2000 puntos? O es una "broma" más de las tantas que ya he visto? como la de que en los entrenamientos te digan que has sacado por ejemplo una forma física Wii de 30ymuchos... y luego te digan "qué noooo!! que en realidad has hecho 20pocos! :D".

Ahora toca descansar un par de días, que me duelen los brazos...

Todo el contenido bajo el dominio XERGIO.NET está sujeto a la licencia Creative Commons con las condiciones BY-SA. Web estandarizada en XHTML 1.0, CSS 2, RSS 2 y Atom 1.0.