[gugs] transpas seminario slashcode
Miquel Vidal
miquel en sindominio.net
Lun Sep 24 03:09:40 CEST 2001
para quien esté interesado/a en el seminario sobre slashcode y no
pueda asistir mañana lunes a la Universidad (10,30h, URJC, Móstoles),
aquí van las transparencias de álvaro, en formato MagicPoint y HTML.
saludos,
m.
--
Miquel Vidal | Using Debian GNU/Linux sid
miquel en sindominio.net | miquel en barrapunto.com
http://sindominio.net | http://mi.barrapunto.com/yonderboy
Key fingerprint = 9816 F967 FD3C A4AA DD67 0DF7 8CD0 6F1A F724 244F
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: /pipermail/gugs/attachments/20010924/c01f0794/slash.html
------------ próxima parte ------------
%include "default.mgp"
%default 1 bgrad
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%center, size 7, font "standard", fore "white", vgap 20
Slashcode: Un servidor de aplicaciones libre
%image "barrapunto.jpg"
%fore "yellow", size 5
Alvaro del Castillo San Félix
acs en barrapunto.com: http://barrapunto.com
Desarrollador de slashcode de Barrapunto
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Indice de la presentación (I)
Breve historia de slashcode: Slashdot y Barrapunto
Problemas con slashcode pre 2.0
Slashcode 2.0: características principales
Organización del software
Integración con Apache con mod_perl
Sistema de acceso a base de datos
Presentaciónn de HTML/XML basada en plantillas
La API de slashcode
Programación mixta: CGI y aplicaciones son lo mismo
Sindicación de contenidos
Rendimiento: 75 páginas/segundo Slashdot 11 de Septiembre
%fore "yellow"
slashcode: servidor de aplicaciones libre
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Indice de la presentación (II)
Funcionalidad propia de Barrapunto
Sección EnBruto
Índices
MiBarrapunto
Ecoluciones
ACL como sustituto de seclev
Extendiendo slashcode: PLUGINS
Descripción de un PLUGIN
Datos, lógica y presentación (MVC)
Extensiones de Barrapunto como plugins
Ejemplos: Repositorio de plugins, Bolsa de Trabajo, Estadísticas
Futuro de slashcode
Desarrollo abierto
Referencias
Conclusiones
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Breve historia de slashcode: Slashdot y Barrapunto
Barrapunto comienza su andadura en Junio de 1999
Software de slashdot: estabilidad y escalabilidad
Potencia de Perl superior a PHP y otras soluciones
Barrapunto evoluciona de 0.3, a 1.09 y 2.0
Integración con el equipo de desarrolladores de slashcode
Migración en Septiembre de 2001 a slashcode 2.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Problemas con slashcode pre 2.0
Primera versión 0.2 era el primer programa Perl de Rob Malda
Mezcla de lógica, visualización y gestión de datos: Perl+SQL+HTML
SQL no portable específico de MySQL
Una única librería: Slash.pm
Funcionalidad repartida por varios ficheros Perl ".pl"
Difícil de mantener, extender y poco escalable
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Organización del código
Conjunto de librerías comúnes
Esquemas de la base de datos comúnes
Temas personalizables: plantillas, programas Perl y elementos de BD
El Tema de Barrapunto
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Integración con Apache con mod_perl
Uso intensivo de la API de mod_perl
Posibilidad de actuar sobre las fases de petición HTTP
Abstracción que permite uso de "pl" fuera de Apache
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Sistema de acceso a base de datos
Definición clara de la interfaz de acceso a datos: Slash::DB
Parte común para todas las bases de datos: Slash::DB::Utility
Completa y optimizada implementación de Slash::DB para MySQL
Soporte de Postgres y Oracle avanzando
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Presentación de HTML/XML basada en plantillas
Sistema basado en Template Toolkit de Perl: rápido y extensible
Todo el HTML y mensajes sólo aparece en plantillas y BD
Slash::Display como librería de visualización
Programación de plantillas muy potente
Sencilla traducción a otros idiomas
Diferentes juegos de plantillas para páginas y secciones
Separación de mundos: programador y diseñador
API de Slash disponible desde las plantillas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
La API de slashcode
Completa API para la gestión de usuarios y sus características
Elementos comúnes disponibles en la API:
Menús de usuario, administrador y plugins
Listas desplegables
Acceso a historias, votaciones, secciones y temas
Titulares y cajas de datos
Limpieza y filtrado de datos de los usuarios
Facilita mucho la extensibilidad por PLUGINS
API disponible facilmente ampliable por PLUGINS y librerías Perl
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Programación mixta: CGI y aplicaciones son lo mismo
Llamada createEnvironment($virtual_user): simula entorno mod_perl
Evita el uso del navegador y servidor de web
Pruebas unitarias de módulos y plugins
Mayor facilidad de depuración y detección de errores
Entorno de desarrollo tradicional
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Sindicación de contenidos
Desde el inicio de vida de slashcode: ultramode
Adopción de XML y RSS (RDF) para el intercambio de datos
Librerías para exportar datos en XML (actualmente RSS)
Facilidad de importación de contenidos y agregación
http://newsglut.com: SlashFeed plugin - Agregación de contenidos pura
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Rendimiento: 75 páginas/segundo Slashdot 11 de Septiembre
Grandes mejoras de rendimiento en slash 2.1
Sistema de cache de información que evita acceso a base de datos
Peticiones SQL optimizadas
Tope teórico de 6 millones páginas/días con configuración de slashdot (6 máquinas)
Tope de 100.000 páginas/día con una sóla máquina (Dual PIII 1 GB RAM)
Posibilidad de separar servidor base de datos y servidor web
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Sección EnBruto
Necesidad de asegurar que los lectores confiaran en la no censura
Desarrollo del plugin CrudeStories
Toda historia recibida es incluída en la sección "EnBruto"
Problemas legales
Una de las secciones más visitadas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Índices
En slashcode una historia sólo pertence a una sección
Una historia puede organizarse por distintas vistas: tablas de índices
Índices automáticas de noticias basadas en peticiones SQL
Más visitadas/comentadas
Todas las historias
Todas las historias de los MiBarrapunto
Todas las historias de las secciones oficiales
Secciones internacionales
Mecanismo básico para los MiBarrapunto
Funcionalidad resumida en el plugin VirtualSections
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
MiBarrapunto
Dar a los usuarios de Barrapunto sus propios MiBarrapunto
Los MiBarrapunto se llenan con noticias originales o seleccionadas
de otros sitios
Punto de vista de cada usuario de Barrapunto
Diversificación de puntos de vista
Altavoz de la comunidad
Cientos de periodistas trabajando: Más de 600
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Ecoluciones
Una noticia se recibe, se edita y se publica
Las noticias se puede actualizar posteriormente por los editores
¿Cómo podrían los usuarios personalizar las noticias?
Un usuario puede moficiar a su gusto los contenidos ecolucionandolos
generando nuevos contenidos más ricos y publicados en los MiBarrapunto
Los editores oficiales pueden captar noticias de los MiBarrapunto
y pasarlas a portada ecolucionándolas
Edición compartida y recursiva
Mayor contexto y contraste de las noticias: ¿Periodismo del próximo siglo?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Sistema de autorización basado en ACLs
Problemas con el actual sistema de seclev
Intersecciones de autorizaciones
Falta de granularidad
Ningún contenido semántico
ACL: acceso a recursos basado en propiedades (ACLs)
Lectura, inserción y borrado de secciones
Administración de ACLs
Sistema facilmente extensible
Sencilla interfaz para la gestión de ACLs
Alto contenido semántico
Incluído parcialmente slash 2.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Descripción de un PLUGIN
Fichero PLUGIN
name=Jobs
description="Jobs manage system"
mysql_schema=mysql_schema.sql
mysql_dump=dump
htdoc=jobs.pl
...
template=templates/show;jobs;default
template=templates/new;jobs;default
....
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Datos, lógica y visualización
Datos: esquemas de la base de datos (mysql_scherma) y datos iniciales (dump)
Lógica: Librería y programas Perl
Visualización: conjunto de plantillas propio
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Instalación de plugins: PLUGIN
Desarrollo como módulo Perl: h2xs
Librerías asociadas
Pruebas unitarias
Instalación con install-plugin usando PLUGIN
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Extensiones de Barrapunto como plugins
ACL
AdminACL
AutoStories
CrudeStories
MySlash
VirtualSections
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Ejemplos
Repositorio de plugins (Repository)
Bolsa de Trabajo (Jobs)
Caja de patrocinadores (Sponsors)
Diarios personales (Journal)
Sistema de seguimiento de fallos (LadyBug)
Concentrador de RDFs de sitios de noticias (SlashFeed)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
El futuro de slashcode
Mejoras continuas en el rendimiento
Extensión a través de plugins
Congelación de la arquitectura básica
Migración de funcionalidad hacia plugins
Soporte de otros tipos de visualización como WML
Abrir la API a través de SOAP, XML::RPC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Desarrollo abierto de slashcode
Software cubierto por licencia GPL
Desarrollo basado en CVS
Listas de correo de anuncios, general, desarrollo e internacionalización
Equipo de desarrolladores muy activos y competentes
Comunidad reunidad alrededor de slashcode.com
Fácil colaborar a través de plugins y temas
Posibilidad de desarrollar plugins cerrados
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Referencias
http://barrapunto.com: Barrapunto
http://slashdot.org: Slashdot
http://slashcode.com: Comunidad de desarrolladores de slashcode
http://sourceforge.net/projects/slashcode: Desarrollo en Sourceforge
irc.slashcode.com, #slashcode: Punto de encuentro de desarrolladores
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Conclusiones
slashcode ha pasado de ser un gestor de historias a un gestor de contenidos
La nueva arquitectura le está llevando a ser un gestor de aplicaciones
Su desarrollo ha sido muy activo durante varios años
Se asegura la migración sencilla entre versiones
Es estable, flexible, potente y es muy escalable
Núcleo de desarrolladores contratado por OSDN/VA Linux
Comunidad creciente de usuarios y desarrolladores
Licencia GPL y posibilidad de extensiones cerradas
Todos los elementos necesarios para el desarrollo rápido de
sitios muy interactivos en la red
¿Problema de Perl?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%center, size 7, font "standard", fore "white", vgap 20
Slashcode: Un servidor de aplicaciones libre
%image "barrapunto.jpg"
%fore "yellow", size 5
Alvaro del Castillo San Félix
acs en barrapunto.com: http://barrapunto.com
Desarrollador de slashcode de Barrapunto
Más información sobre la lista de distribución Gugs