¿Cómo le explicamos REST a nuestros hijos?

Llevo unas semanas analizando cómo simplificar un pequeño sistema que se ha ido creciendo poco a poco hasta resultar bastante complejo. Fruto de este análisis he planteado crear una serie de servicios REST para desacoplar las distintas partes del sistema y poder evolucionar cada componente por separado.

Mientras me documentaba, he localizado varias referencias a un artículo escrito en diciembre de 2004 por Ryan Tomayko en el que, en forma de una conversación con su esposa, explica qué es REST. Desafortunadamente, más o menos a inicios de este año, el propio Ryan Tomayko decidió borrar el artículo porque no se sentía cómodo con una posible interpretación discriminatoria en los roles representados por los dos actores.

Tras una pequeña búsqueda, he logrado encontrar alguna copia del texto para leerlo, en parte por el motivo original de recolectar información y en parte por curiosidad. Borrar un artículo, con el trabajo que supone su creación, por una posible interpretación discriminatoria publicando en su lugar un texto explicando los motivos y pidiendo disculpas no es nada fácil y me parece digno de admiración y respeto.

Tras leer el documento, creo que la interpretación discriminatoria es, cuanto menos, rebuscada: conversaciones similares las he tenido yo tanto con amigos como amigas que no han estudiado informática. Yo tengo un conocimiento un poco más profundo sobre estos temas mientras que cada uno de mis amigos y amigas me dan mil vueltas en bricolaje, calceta, cine, coches, cocina, collages, economía, mecánica, medicina, punto, TV, videojuegos, zapping… son las reglas del juego: todos somos diferentes, nos gustan cosas diferentes y lo que nos hace avanzar es sumar todas esas diferencias.

La forma de explicar el concepto usando una conversación me parece muy amena y descriptiva. Creo que sería una lástima perderlo. Así que he decidido traducirlo e intentar reinventarlo de una forma que es menos susceptible de malinterpretar: unos padres explicándole REST a sus hijos. Evidentemente, se trata de una traducción muy libre y adaptada del texto original.
Read More

Anuncios

Sobrevivir a la infoxicación, o cómo gestionar tus feeds

Hace siete años que descubrí los blogs. Como consecuencia, casi inherente, empecé a seguir otros blogs visitándolos diariamente para leer las actualizaciones. El número se incrementaba día a día hasta que, por evolución natural, migré a la subscripción de contenidos.

Wordle: Infoxicación

Infoxicación: intoxicación por sobreabundancia de información

Lo reconozco, me encanta la sindicación a contenidos. Esto de por sí no significa nada hasta que alcanza el nivel de adicción, la necesidad imperiosa de estar al tanto de todo cuanto antes, la ansiedad de tener entradas que leer, el agobio de no llegar a leerlo todo. En definitiva, la infoxicación.

Como en cualquier adicción, el primer paso es admitirlo. Y tras admitirlo llegan las medidas para desengancharse y organizar la lectura de forma productiva sin renunciar al placer de hacerlo.

Esto es un simple recopilatorio de trucos que en mi caso funcionan pero no tienen por qué ser útiles en otros casos.

Read More

¿Qué infraestructura hay detrás de una web 2.0?

Hace muy poco, por serendipia, he descubierto un servidor vulnerable a un ataque DDoS debido a lo pesado que es. Reciente es el ataque que han sufrido Facebook, Google, LiveJournal y Twitter con dispares resultados: mientras que Facebook y Google aguantaban el tipo, aunque con lentitud, la web de Twitter (que no su api) caía unas horas y LiveJournal sucumbía ante el ataque. Y parece que todo se debe a un intento de silenciar a un usuario crítico con la guerra entre Rusia y Georgia aunque aún están investigándolo.

¿Qué infraestructura utilizan estas webs para soportar esta carga o minimizar daños frente a un ataque? Una investigación sobre el tema permite obtener técnicas y trucos para mejorar las webs y hacerlas más seguras frente a ataques DDoS. Evidentemente, no todas las opciones son aplicables en todos los casos y este tipo de sitios están preparados para soportar elevadas cargas: flickr sirve 1000 páginas por segundo que precisan unas 25000 transacciones SQL; la Wikipedia tiene 7 millones de usuarios registrados y soporta 50.000 peticiones HTTP por segundo y unas 80.000 consultas SQL (por segundo); Facebook por su parte tiene 250 millones de usuarios y ronda los 200 millones de visitantes únicos; WordPress.com ronda los 100 millones de visitantes…

Además, estas web 2.0, a diferencia de las inamovibles páginas HTML de la web 1.0, son dinámicas. En cualquier momento pueden recibir nuevo contenido o ser alteradas. Para ello necesitan algún tipo de lenguaje que se ejecuta en cada petición lo que implica un lenguaje de programación en servidor, BBDD…

Recomendaciones de Yahoo

Un posible punto de partida, y lectura imprescindible para planear un sitio web, son las Prácticas para acelerar sitios web de Yahoo. Se trata de un conjunto de recomendaciones y micro-optimizaciones que van desde reducir el número de ficheros a descargar empaquetándolos (CSS sprites, maps), servir de forma separada los elementos estáticos hasta configurar adecuadamente la cache o servir el código HTML, javascript o CSS optimizado y comprimido.

Muchas de estas técnicas, permiten ahorrar unos pocos ciclos de ejecución y algunos bytes de ancho de banda, aligerando una web y mejorando la experiencia del usuario. Aunque ayudan (evidentemente, suprimir una única petición en varios millones de visitas son varios millones de peticiones menos), no son suficientes para soportar miles de usuarios concurrentes o aguantar el tipo frente a un ataque. En estos casos es necesaria una planificación e infraestructura acorde a las necesidades.

Read More

¿Qué es la sindicación de contenidos?

Icono RSS

Icono usado para identificar una fuente RSS

En la Web existen multitud de sitios que son de nuestro interés y que se actualizan regularmente. Hace pocos años, la rutina típica al empezar la jornada consistía en visitar estos sitios para estar al tanto de las últimas novedades. Con el paso del tiempo, la lista de sitios se ha incrementado notablemente y la frecuencia de actualización es cada vez mayor, llegando a decenas de actualizaciones diarias. En estas condiciones, estar al día de estas actualizaciones es una tarea complicada y, según se incrementa la lista de sitios, puede llegar a ser imposible.

La solución a este problema es lo que se conoce como sindicación de contenidos. Bajo este nombre se encuentra un conjunto de formatos y aplicaciones (RSS, Atom, feeds, agregadores…) que permiten crear un resumen unificado de una serie de sitios.

La base del sistema es RSS (Rich Site Summary), un formato especial, basado en XML, que permite indicar los cambios realizados. Un fichero RSS (también llamado alimentador, canal, feed, fuente o sumario) se puede ver, de forma simplificada, como un conjunto de actualizaciones, avisos, noticias… con sus datos asociados. Aunque es el más extendido, no es el único formato con este cometido, pudiendo usarse RDF o Atom.

Al tratarse de un formato estándar es posible desarrollar aplicaciones que puedan utilizar esa información: los agregadores. Un agregador, también llamado lector, es un programa al que se le indican una serie de RSS de ciertos sitios de interés (subscripciones) y que periódicamente comprueba si hay entradas nuevas y las almacena. De esta forma, el usuario puede ver en el lector todas las novedades de los sitios de su interés en un único lugar, en lugar de visitar todas las páginas. Además, suelen incorporar valores añadidos como búsquedas, gestión de categorías, estructurarlas en árbol, agregación de subgrupos, filtros, envío por correo electrónico…

Esquema RSS

Esquema de funcionamiento del RSS (Imagen: En clave de TIC)

La mayoría de los agregadores soportan el formato OPML. OPML es otro formato estándar basado en XML en el que se recogen todas las subscripciones de un agregador, es decir, es la lista de los canales RSS que tiene subscritos. Como la mayoría de los agregadores permiten importar/exportar este formato se puede utilizar para cargar las subscripciones cuando se cambia de agregador o para pasarlas a los amigos.

En el mercado existen multitud de agregadores entre los que se pueden distinguir tres grandes grupos:

  • On-line: Son páginas web que muestran los titulares de las fuentes que se le indiquen. Cada una de ellas tiene unas características diferentes, por lo que lo mejor es probar varios servicios para ver cuál se ajusta a las necesidades. El primero en aparecer y el más utilizado es Bloglines (Mini-tutorial de Bloglines).
  • De escritorio: Se trata de un pequeño programa que suele esconderse en el área de notificación y que realiza la misma labor avisando de las novedades encontradas y, habitualmente, descargando el contenido para poder verlo sin conexión. Al igual que en el caso anterior existen múltiples opciones para cada sistema operativo, por lo que se deben probar varias aplicaciones hasta encontrar la más apropiada.
  • Extensiones: Se trata de plugins o añadidos a otra aplicación para que soporte la descarga y presentación de los canales, por lo que la elección depende del uso del programa en cuestión. En algunos casos la extensión se ha incorporado como funcionalidad en el propio programa. Algunos ejemplos son Maxthon (incorporado desde la versión 1.0), Thunderbird (incorporado), Sage (Firefox), RssPopper (para Outlook)…

Todos los agregadores tienen un funcionamiento similar: Se busca en la página el icono de canal RSS (o el viejo con XML sobre fondo naranja) y se copia la dirección del feed en el agregador (en algunos, basta con dar la dirección de la página que ellos buscan las direcciones). A partir de ese momento el agregador comprobará las actualizaciones de ese sitio.

Para iniciarse, o aunque se esté iniciado, es muy recomendable RSSFácil que no es más que el lector FeedReader de Windows (muy recomendable como lector para este sistema operativo), cargado con 100 fuentes RSS en español clasificadas por temáticas. Si se usa otro sistema operativo, o se quiere usar la última versión de FeedReader, es posible importar la lista de subscripciones desde el OPML de RSSFácil.

Revisión de los gestores de contenidos

Desde la inauguración de mi primera web en el año 2000, ésta ha sufrido muchos cambios. A lo largo de estas revoluciones se han usado múltiples gestores de contenidos, desde scripts manuales hasta gestores modulares de contenidos como Drupal. Estas pruebas, realizadas a lo largo de ocho años, han dado pie a esta pequeña comparativa de gestores de contenidos.
Read More