Archivo de la etiqueta: ugr

I Hackathón de Proyectos de Software Libre de la UGR

Del 5 al 8 de marzo se celebra en Granada el I Hackathón de Proyectos de Software Libre de la UGR. Un Hackaton es una especie de maratón de hacking y en esta ocasión consistirá en avanzar el desarrollo de diferentes proyectos participantes en el Concurso Universitario de Software Libre creando una comunidad a través de los mismos.

Se realizarán diferentes charlas sobre los proyectos que se presentan, así como sobre metodología de trabajo en equipo. Yo me he apuntado porque creo que el ambiente va a estar bien y tengo especial curiosidad por el proyecto Kora, que está haciendo gskbyte para la plataforma Android.

No sólo se está buscando a gente de Informática, si no también de Bellas Artes, Traducción, Empresariales, etc. Más información en http://sl.ugr.es/001Y.

Día del Software Libre 2009

Este año celebramos de nuevo en Granada el Software Freedom Day (la traducción correcta sería “Día de la libertad del software”, pero me gusta más la otra xD).

El evento tendrá lugar el sábado día 19 de septiembre en la Escuela Técnica Superior de Ingenierías Informática y Telecomunicaciones, y consistirá en las siguientes actividades:

  • Introducción al software libre y ayuda a la instalación de diferentes distribuciones, en el laboratorio 2.3 (segunda planta)
  • Talleres avanzados de software libre: FluidDB, gestión de bibliotecas, etc.: aula 0.2 (planta baja)
  • Proyección de documentales libres y sobre el software libre y debate sobre el uso y la implantación de software libre: aula 0.3 (planta baja)
  • Competición de juegos libres: Nexuiz, Sauerbraten, Liquid Wars; habrá camisetas de la OSL de premio para los ganadores: laboratorio 2.4 (segunda planta)

Los actos comenzarán a las 10 de la mañana, y están abiertos a todo el mundo; tráete a tu familia, amigos y a todo el que quiera participar, y si quieres proponer alguna actividad, deja aquí un comentario.

Estas actividades se pueden llevar a cabo gracias a la sinergia de los colectivos locales de software libre en Granada como son la Oficina de Software Libre de la UGR, la asociación Gcubo, Fidesol y el hacklab Colina Roja. ¡Gracias a todos los implicados!

Mobi-Blog: blog de experiencias Erasmus

logo mobi-blog La semana pasada me invitaron a una reunión en el CEVUG para abordar distintos aspectos del proyecto Mobi-Blog, apoyado por distintas universidades e instituciones europeas.

Mobi-Blog es una bitácora que permite a los estudiantes europeos contar sus experiencias durante su etapa de intercambio en otros países, la mayoría incentivadas por las becas Erasmus.

En la reunión tratamos aspectos de usabilidad y accesibilidad a mejorar en el blog, así como otros detalles técnicos y de idiomas. Con el proyecto se pretende crear además una guía online donde estructurar diverso contenido que puede ser de utilidad a los estudiantes, integrando también artículos de blog en la misma.

Fue una experiencia interesante y enriquecedora donde pude conocer a gente de las universidades de Granada, Reading y Erlangen-Nuremberg muy competentes.

AAP Práctica 3 – Script para Greasemonkey

Greasemonkey es un plugin para el navegador Firefox que nos permite modificar el comportamiento de la página web que estemos visitando gracias a los diferentes scripts que tengamos instalados. Estos scripts se programan en Javascript, de manera que tenemos una versatilidad increíble para cambiar el aspecto y dotar de más funcionalidad a una web.

Para mi práctica he hecho un script muy simple pero útil para los foros de Swad, la plataforma de apoyo a la docencia con más uso de la Universidad de Granada. La funcionalidad que he añadido es la de citar en tu respuesta el trozo de texto que selecciones de un mensaje anterior.

Los que tengáis cuenta en Swad podéis instalar el script simplemente pinchando en: replyswad.user.js (previamente has de tener instalado Greasemonkey).

Este sería el botón extra añadido:

boton citar texto swad

Y este el aspecto que presentaría nuestro mensaje:

mensaje con texto citado swad

AAP Práctica 1 – Recursos para la asignatura

Aquí os dejo con una serie de recursos que nos pueden ser útiles para la asignatura de AAP, junto con una valoración personal sobre 5 puntos.

  • Firebug: plugin de Firefox imprescindible para el desarrollo web e incluye un intérprete de Javascript así como un profiler y un debugger. 5/5 puntos
  • Visual jQuery: es una herramienta para la navegación por la documentación de jQuery, que nos permite encontrar fácilmente ayuda sobre un procedimiento que estemos buscando de este popular framework de Javascript. 4/5 puntos (debería estar actualizado a la última versión estable 1.3.1)
  • gotAPI: buscador vertical para distintos lenguajes de programación. Imprescindible para encontrar rapidamente ayuda sobre funciones de un determinado lenguaje (HTML, Javascript, PHP, Perl, Ruby, C++, etc.) 4/5 puntos
  • Javascript in Ten Minutes: un repaso rápido a la funcionalidad y sintaxis de Javascript. 3/5 puntos (viene bien para un vistazo rápido)
  • <WebDevResourceList />: listado de frameworks, cms, wikis, blogs, foros y demás herramientas que podemos filtrar por el lenguaje programación que utilizan (PHP, Python, Ruby, Perl, Java…). 2/5 puntos (algo tonto, pero curioso)
  • Visual Event: nos permite añadir una capa sobre la web para ver los eventos javascript que incorpora. Se puede ver un ejemplo aquí. 3/5 puntos (sólo funciona con algunas librerías)
  • XML Examples: algunos ejemplos sobre cómo trabajar con XML, aplicando CSS, XSLT, Ajax y Javascript. 5/5 puntos (ejemplos claros e ilustrativos)

V8, el intérprete de Javascript de Google Chrome en Linux

En clase de AAP vamos a aprender a usar JavaScript no sólo como complemento al diseño web, si no como el lenguaje de programación completo que es. Para ello usaremos un intérprete que funcione desde línea de comandos. Entre otros, podemos encontrar SpiderMonkey (paquete spidermonkey-bin en Ubuntu) que está implementado en C, o por ejemplo Rhino que está hecho en Java.

En este post pretendo mostrar cómo instalar V8, el motor de JavaScript que usa el navegador Google Chrome y que está implementado en C++.

Primero nos descargamos el código fuente:

svn checkout http://v8.googlecode.com/svn/trunk/ ./v8

Para compilarlo, necesitamos tener instalado scons:

sudo aptitude install scons

Una vez instalado, procedemos a compilarlo:

cd v8
scons sample=shell

Y con esto, ya tendremos un ejecutable con el que podemos interpretar nuestros programas en JavaScript. Para facilitar las cosas podemos crear un enlace simbólico:

sudo ln -s /home/draxus/v8/shell /usr/bin/v8

Otros motores de última generación son TraceMonkey (Firefox 3.1) o SquirrelFish (Safari 4). Es interesante estar al tanto del rendimiento de estos motores porque están continuamente mejorando para ser competitivos en aplicaciones muy ricas en JavaScript como puede ser Gmail.

AAP Bloque 1.2 Ejercicio 2 – Ejemplos de interfaces REST

Hacer un programa o buscar un ejemplo que use un interfaz REST para acceder a algún servicio Web, como del.icio.us.

Se denomina interfaz REST a una técnica para el acceso a recursos a través de una URI.

La mayoría de los servicios webs actuales ofrecen una API, que son un conjunto de funciones y procedimientos para desarrollar aplicaciones externas, generalmente mediante la técnica REST. Veamos un par de ejemplos.

Last.fm es el mayor portal de recomendación de música online y una de sus múltiples funciones de su API es geo.getEvents, que nos da los eventos cercanos a una posición. Por ejemplo, con http://ws.audioscrobbler.com/2.0/?method=geo.getevents&location=granada&api_key=b25b959554ed76058ac220b7b2e0a026 veremos los próximos conciertos que se van a celebrar en o cerca de Granada.

Podemos ver otro ejemplo en el caso de Flickr, la mayor red social de fotografía online. Si usamos la función flickr.favorites.getPublicList de su API, podemos obtener las fotografías públicas favoritas de un usuario de esta forma: http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&api_key=a6a323fe1aa900e0c15211f28ffdc42c&user_id=92176591%40N00

Normalmente los resultados de estas peticiones se devuelven en formato XML o JSON, para que el procesador posterior de los datos resulte lo más cómodo posible.

En la mayoría de estos servicios es necesario solicitar una API Key para hacer las peticiones, de manera que en todo momento se sabe el uso que se hace de ella y te la pueden inhabilitar si sobrepasas los límites del servicio.

Nota: leer comentarios.

AAP Bloque 1.2 Ejercicio 1 – Escalabilidad en sistemas distribuidos

Discutir cuáles son los principales obstáculos a la escalabilidad en un sistema distribuido.

Se dice que un sistema es escalable si al expandirse es capaz de lograr un mejor rendimiento sin perder calidad de servicio.

Algunos ejemplos de escalabilidad:

  • Si tenemos un problema computacionalmente complejo que se está resolviendo en varias máquinas, si añadimos más máquinas, va a tardar menos en resolverse.
  • Si un servidor web que recibe 100 peticiones por minuto pasa a recibir 1000 peticiones por minuto y el tiempo de respuesta no se ve sacrificado.

Se tiende a pensar que un sistema distribuido es por definición escalable, pero esto no siempre es así ya que la parte de expansión sí se cumple, pero la de mejorar el rendimiento y no perder calidad de servicio no siempre se cumple. Esto sucede por diversas causas:

  • La latencia NO es nula: al añadir más nodos a una red distribuida, se van a introducir más retardos en la comunicación.
  • El ancho de banda NO es infinito: puede llegar a pasar que uno de los nodos de la red se sature por exceso de tráfico.
  • La red NO es homogénea: cada tramo de la red puede tener velocidades distintas, luego si tenemos a priori una red de alta velocidad y empezamos a añadir nodos cuya conexión es mucho más lenta, esto va a repercutir en el desempeño de la red. Asimismo puede ocurrir que se usen protocolos de red distintos, por lo que a más variedad, más latencia se tendrá.