web

En la Oficina de Software Libre de la Universidad de Granada no paramos de trabajar así que acabamos de terminar una nueva versión de la plataforma UGR transparente que corrige los errores de funcionamiento que existían hasta ahora. Todo el código desarrollado es libre y se puede encontrar en este repositorio de GitHub, así que se interesa conocer mejor el estado del proyecto solo tienes que seguir leyendo.

Motivación de los cambios:

En la versión anterior se producía siempre un error interno del servidor cuando se cargaba una página por primera vez, además de forma intermitente las tablas de las páginas se mostraban vacías. Esto era debido a que por el funcionamiento asíncrono de Node.js, puede ser que la llamada retorne antes de que se completen las operaciones en su totalidad, por lo que se podía producir la situación de que se intentase visualizar una página antes de que la información del contenido que tenía que recuperarse de la base de datos pudiera haber sido recuperada o incluso accedida. Si la página se intentaba mostrar antes de que la base de datos fuera accedida, los recursos no se encontraban creados y por eso siempre daba un error la primera vez que se visualizaba; si la página se intentaba mostrar antes de que la información hubiera sido recuperada, los recursos ahora si existían, pero estaban vacíos por lo que las tablas de la página se mostraban vacías; solo si la llamaba retornaba cuando todas las operaciones habían sido completadas, lo que significa que la página se intentaba mostrar una vez la información ya había sido recuperada completamente de la base de datos, era cuando la página se mostraba correctamente.

Para evitar el error interno del servidor, al arrancar el servidor en transparente.ugr.es se hacía una carga inicial de todas las páginas mediante la orden “curl“, pero el problema de las tablas vacías seguía estando ahí. Como no conseguí encontrar la forma de arreglar estos errores que se producían por la asincronía entre las operaciones, y el uso de la base de datos era similar al de un índice al que igualmente había que introducirle los datos manualmente desde archivos externos JSON, empecé a desarrollar una nueva versión en la que se sustituyera la función de la base de datos con la carga de los archivos JSON directamente desde la aplicación, esto podría solucionar todos estos errores porque el propio Node.js mediante el módulo “fs“, que provee de la funcionalidad para operar con entrada/salida de ficheros, tiene un método para que la lectura de estos archivos se haga de forma síncrona [fs.readFileSync(archivo)]. Como los archivos son leídos de forma síncrona (forma de la que no era posible recuperar los datos de la base de datos), tanto el error interno como el error en las tablas vacías han dejado de producirse debido a que ya nunca se intentará visualizar las páginas antes de que los datos estén cargados.

Comparación de versiones:

En la versión anterior de UGR transparente, desde el archivo principal de la aplicación “app.js” se cargaba el contenido del archivo “config.json” (también en raíz), que tenía la configuración de acceso a la base de datos MongoDB de la que recuperaba el contenido de las tablas que se visualizan en las diferentes páginas de la web; también de dicho archivo, se recuperaba el contenido de las páginas sin tablas: “Inicio“, “Presentación” y página de error; y además la siguiente información sobre el contenido de cada una de las páginas: categoría, colección, contenido, dataset, nombre y plantilla. En la nueva versión, la información de cada una de las páginas se ha movido a archivos JSON independientes: “claustro.json“, “estadistica.json“, etc. (que también son cargados desde “app.js“), el contenido que se recuperaba desde la base de datos se ha introducido también en esos archivos JSON. Todos estos archivos se encuentran en una nueva carpeta “config” situada en raíz, además la información recuperada se ha simplificado a: nombre, plantilla, contenido y datos.

Toda la información cargada desde “app.js” luego es utilizada desde los archivos JS que se encuentran en la carpeta “routes” correspondientes a cada una de las secciones de la página UGR transparente: “administracion.js“, “docencia.js“, “gestionInvestigacion.js” y “normativaLegal.js“. En la versión anterior, se recuperaba la configuración de acceso a la base de datos desde la información cargada, y mediante iteraciones por las colecciones correspondiente a la página a visualizar, se almacena en variables el contenido recuperado, contenido que luego era gestionado cuando Express generaba la página web después de procesar la plantilla Jade pertinente. En la nueva versión, la recuperación de la información está mucho más simplificada porque se obtiene directamente de la información cargada desde “app.js“, recuperando el contenido de los archivos “config.json” y “PAGINA.json“; por ejemplo, para la gestionar la sección “Administración“, en el archivo “administracion.js” se recupera la información de “config.json” que nos dará la dirección del servidor con los datos (open.data.ugr en este caso) y también recupera la información de los archivos “personal.json” para la página “Personal“, “infoEconomica.json” para la página “Información Económica” y “servicios.json” para la página “Servicios“, esta información es la que usará Express para generar la página que se vaya a visualizar.

En las plantillas Jade de la carpeta “views“, también se ha cambiado la forma de acceder a las variables con la información de la página que la plantilla recibe. En la versión anterior, los valores del contenido eran recibidos en arrays bidimensionales con el contenido recuperado de la base de datos, que tenían que ser procesados mediante varios bucles for; en la versión actual, los valores de contenido son recibidos directamente como campos de archivo JSON, por lo que pueden ser fácilmente accedidos como un array unidimensional.

Ventajas e inconvenientes:

Como ventajas encontramos en primer lugar, que al eliminar MongoDB se liberan una gran cantidad de recursos del sistema; además, a falta de pasar los test pertinentes, no se ha vuelto a producir ningún fallo en la carga o visualización de los datos en las páginas. Como ya no dependemos de la base de datos, el trabajar directamente con los archivos JSON nos da una mayor manejabilidad como es que se puedan adaptar en cualquier momento y directamente la estructura y contenido de los archivos según las necesidades.

Un inconveniente que existe en este versión es algo que también existía en la versión anterior, y es que los datos provienen de archivos JSON que hay que crear manualmente, por lo que si el número de datos es elevado, el proceso de introducción de datos se puede volver realmente pesado.

Siguiente trabajo:

El problema de tener que crear los JSON directamente se podría solucionar si se pudieran recuperar los datos directamente desde el servidor de open.data.ugr, como ese portal esta construido con CKAN que usa una base de datos PostgreSQL para almacenar los datos y además provee de una API para acceder a los datos, sería deseable encontrar la llamada o llamadas que permitieran recuperar los mismos datos que se encuentran en los archivos JSON, algo que todavía no he conseguido encontrar. Una vez que se encontraran estas llamadas, los datos se podrían recuperar directamente utilizando el backend Recline.js que nos permite fácilmente recuperar la información (ejemplo en el scriptprueba_recline.js” de la carpeta “public/script“) y trabajar con ella usando las funciones de las que nos provee, o bien, recuperar la información mediante consultas AJAX (ejemplo en el scriptprueba_acceso.js” también en la carpeta “public/script“) y trabajar con funciones que desarrollemos para trabajar con la información recuperada.

Lo próximo en lo que voy a trabajar es en realizar los test de cobertura, siendo lo primero todo lo que se refiera al acceso a datos. Empezaré viendo como utilizar el framework de test “Mocha” para todo esto. Otros aspectos que quedan pendientes son la integración continua y el aprovisionamiento.

El próximo día 28 de noviembre, a las 12:30 de la mañana y en el salón de actos de la ETSIIT Antonio Olmo Titos, ingeniero del World Wide Web Consortium, impartirá la charla titulada “W3C: Creando una web abierta”, que él resumen de la forma siguiente:

La web no nació con Twitter; ni siquiera con los blogs o los portales. Este año celebramos el 25º aniversario de la triple uve doble. Y durante las últimas dos décadas, el World Wide Web Consortium (W3C) ha sido el principal organismo responsable de impulsar su desarrollo. El catálogo de estándares y documentación que el W3C coordina y mantiene hace que hoy podamos mantener una videoconferencia, jugar en tiempo real y maquetar periódicos digitales en árabe… todo sin salir de un navegador. Y lo que es más importante: manteniendo principios de neutralidad tecnológica, estándares abiertos y el consenso de la comunidad. El W3C no tiene ánimo de lucro, y publica su trabajo gratis, y libre de patentes.
Los últimos estándares (HTML5, WebSockets, WebRTC, shadow DOM, por nombrar algunos), la velocidad con que los navegadores los implementan, y los dispositivos ubicuos están creando un sustrato extremadamente fértil. Para un profesional, o para un estudiante, la web es una plataforma ideal: gratuita, abierta, colaborativa, bien documentada y rica en prestaciones.
En esta charla se presentará el W3C desde la perspectiva de un ex-alumno de la ETSIIT que trabaja como programador web en su equipo de sistemas. Nos centraremos en HTML como pieza central, pero mencionaremos otras especificaciones que merece la pena conocer. Todo ese trabajo, por cierto, está abierto a la participación y los comentarios de cualquiera que desee contribuir. También se mostrará cómo aprovechar las herramientas, servicios y recursos que el W3C pone a disposición de profesionales y estudiantes.

Antonio Olmo Titos trabaja en el W3C desde la universidad de Keio, en el Japón, y nos proporciona la siguiente biografía:

Antonio Olmo Titos pasó por la ETSIIT (cuando ésta era la ETSII; sin la última T) entre 1998 y 2004. Tras lo cual el padre del actual rey aseguró que es ingeniero en informática. Y eso a pesar de que frecuentó Gcubo, Hispalinux y otras malas compañías. Durante la década siguiente ha trabajado como programador (a veces metido en tareas de análisis y gestión), tanto en start-ups diminutas como en empresas multinacionales. Ha trabajado en Sevilla, en Madrid y en Londres. Actualmente vive en Tokio y es programador web dentro del equipo de sistemas del World Web Consortium. Sus principales intereses son el software libre, Linux, los sistemas abiertos, la informática gráfica, interfaces y usabilidad, la web en todos los colores posibles y JavaScript. Ha tocado otros palos en ocasiones (pero peor es tener que robar).

.
Antonio Olmo Titos también coordinará un hackatón WWW el mismo día que se anunciará oportunamente.

Este taller dado por Juan Antonio Prieto, Javier Carretero y Antonio García  está basado en el framework Ximdex, es posible que digáis ¿qué es Ximdex? Pues Ximdex es un CMS gestor relacionado a la Gestión Semántica de Contenidos.

¿De dónde viene Ximdex? Pues nos podemos remontar a los años 90 (1993 con las búsquedas a nivel de documento: gopher, 1994 a nivel de texto: la web + html) hasta el año 2010 que las búsquedas son a nivel de datos, aparece la llamada Web Semántica (rdf, sparql) y esto deriva en el Open Linked Data.

Por debajo Ximdex como CMS usa un XML basado en plantillas a las cuales se les puede insertar un buen enriquecimiento de datos, y bien esta es la web semántica:

Semántica(significado) + Estructura (Organización) + Sintaxis (Comunicación)

Siendo la parte de Semántica más Estructura las ontologías y el RDF, y por otra parte la unión de la Estructura más la Sintaxis el XML comentado antes.

Como ejemplos prácticos colaterales de contenido semántico están la NASA y la marca de coches RENAULT que genera documentación basada en contenido semántico.

Los pilares del framework son: Abstracción + Acceso Libre + Significado + Estructura Libre, lo cual facilita una publicación desacoplada que es el separar varias capas como son los usuarios que generan la documentación, los servidores Ximdex, los servidores de producción que almacenan el contenido publicado y como última capa los usuarios finales de la documentación generada. Y esto a su vez también nos ayuda a hacer comprobaciones bastantes interesantes como por ejemplo el detectar si se ha producido algún ataque a los servidores de producción, ya que el framework controla el contenido que se genera como el que se publica y en caso de no concordar se puede programar una alarma.

 

Como ejemplos de caso de éxito que ha tenido Ximdex son: La web de La Casa Real o la Agencia Española de Protección de Datos(AEPD) entre muchos otros.

 

Por último el equipo de trabajo contó que usan SCRUM como metodología ágil para desarrollo (usan iteraciones de 3 semanas e integración continua de requisitos), es Software Libre con una licencia Affero y próximamente tienen pensado implementar el renderizado masivo.

 

Información de contacto:
Web: http://www.ximdex.com
Web de un concurso propio: http://concurso.ximdex.com
email: info@ximdex.com

El 10 de octubre pasado se celebró la segunda conferencia del capítulo OWASP (Open Web Application Security Initiative) en nuestra ETSIIT. El principal foco de la charla fue el uso de herramientas libres para asegurar páginas y aplicaciones web contra ataques de diferente tipo, tecnológico o social.
Se impartieron las siguientes charlas:

En resumen, una interesante charla a la que asistieron unas 16 personas de todos los estratos de la universidad: alumnos, profesores y personal de administración.

Podéis usar este banner para enlazar la web de la OSL:
Logo Oficina de Software Libre de la Universidad de Granada
Que podéis cortar y pegar de aquí:

<a href=’http://osl.ugr.es’><img src=’http://osl.ugr.es/logo-osl.png’ alt=’Logo Oficina de Software Libre de la Universidad de Granada’ style=’width:200px’ /></a>

Voy a presentaros 2 webs que suelo utilizar bastante a menudo. Creo que pueden venir muy bien, sobretodo cuando uno esta empezando en esto de Software Libre. Se trata de:

  • CDLibre.org: no es ni mas ni menos que un amplio directorio de aplicaciones libres. Ademas, tienen un boletin, donde nos presentan sus novedades semanalmente. Y también podremos descargar recopilaciones de Software Libre con diferente temática (Educación, Juegos, Programación…).
    Logo CDLibre.org

    Logo CDLibre.org

  • OSAlt.com: es otro directorio de Aplicaciones Libres. Lo interesante de esta página es que nos ofrece alternativas libres a muchas aplicaciones no libres.
    Logo OSAlt.com

    Logo OSAlt.com

  • Tan solo eso. Espero que os sean de interes y ayuda.

    Web Jornadas de Software Libre
    Logo y enlace Web Jornadas de Software Libre 2018
    Web SereIngeniera
    Logo y enlace Web SereIngeniera 2018
    Web Campus Infantil 2018
    Logo y enlace Web Campus Infantil 2018
    Calendario
    junio 2018
    lunes martes miércoles jueves viernes sábado domingo
    28 mayo, 2018 29 mayo, 2018

    Categoría: General10:00 am: #SereIngeniera18 - Sto. Tomás de Villanueva

    10:00 am: #SereIngeniera18 - Sto. Tomás de Villanueva
    30 mayo, 2018 31 mayo, 2018 1 junio, 2018

    Categoría: General12:00 pm: Admisiones provisionales Campus de Chicas

    12:00 pm: Admisiones provisionales Campus de Chicas

    Categoría: General12:00 pm: Cierre III Campaña de Donación

    12:00 pm: Cierre III Campaña de Donación

    Categoría: General10:00 pm: Pre-inscripción Campus de Chicas

    10:00 pm: Pre-inscripción Campus de Chicas
    2 junio, 2018 3 junio, 2018
    4 junio, 2018 5 junio, 2018 6 junio, 2018 7 junio, 2018 8 junio, 2018

    Categoría: General12:00 pm: 1ª asignación III Campaña de Donación

    12:00 pm: 1ª asignación III Campaña de Donación

    Categoría: General12:00 pm: Admisiones definitivas Campus de Chicas

    12:00 pm: Admisiones definitivas Campus de Chicas
    9 junio, 2018 10 junio, 2018
    11 junio, 2018

    Categoría: General12:00 pm: 2º Asignación III Campaña de Donación

    12:00 pm: 2º Asignación III Campaña de Donación

    Categoría: General12:00 pm: Admisiones provisionales Campus Infantil

    12:00 pm: Admisiones provisionales Campus Infantil
    12 junio, 2018 13 junio, 2018 14 junio, 2018 15 junio, 2018

    Categoría: General12:00 pm: Admisiones definitivas Campus Infantil

    12:00 pm: Admisiones definitivas Campus Infantil
    16 junio, 2018 17 junio, 2018
    18 junio, 2018 19 junio, 2018 20 junio, 2018 21 junio, 2018

    Categoría: General10:30 am: Taller de la III Campaña de Donación

    10:30 am: Taller de la III Campaña de Donación
    22 junio, 2018 23 junio, 2018 24 junio, 2018
    25 junio, 2018

    Categoría: General9:00 pm: Campus Infantil - 1º turno

    9:00 pm: Campus Infantil - 1º turno
    26 junio, 2018

    Categoría: General9:00 pm: Campus Infantil - 1º turno

    9:00 pm: Campus Infantil - 1º turno
    27 junio, 2018

    Categoría: General9:00 pm: Campus Infantil - 1º turno

    9:00 pm: Campus Infantil - 1º turno
    28 junio, 2018

    Categoría: General9:00 pm: Campus Infantil - 1º turno

    9:00 pm: Campus Infantil - 1º turno
    29 junio, 2018

    Categoría: General9:00 pm: Campus Infantil - 1º turno

    9:00 pm: Campus Infantil - 1º turno
    30 junio, 2018 1 julio, 2018
    Archivos
    Categorías