Esta práctica consistía en hacer una aplicación en AJAX. Yo he creado un servicio para alojar agendas de contactos: http://my.alejandrofh.es/aap/p6/ y aquí la entrega con el código.
Mi primer intento se quedó en un script de GreaseMonkey que actualiza dinámicamente el contenido de nuestro Wiki pero no había aplicación de servidor así que no me valía.
viernes, 29 de mayo de 2009
viernes, 8 de mayo de 2009
AAP Práctica 5
En ésta práctica se nos pedía la creación de un Planet. Yo me he querido basar en la experiencia que tengo de usar Google Reader e intenté hacer algo parecido.
Antes de entrar en la explicación de cómo lo he implementado, dejo el enlace para que se pueda ver el resultado final.
Para conseguir que funcionase tuve que crear un CGI que obtuviera la fuente que se le indicara y lo mostrara con un cierto estilo. El código en Perl es el siguiente:
A continuación, como quería añadirle la funcionalidad de poder agregar más fuentes, diseñé el sistema de modo que se leyeran las fuentes desde un fichero XML. Este fichero lo he llamado enlaces.xml. Además, creé otro CGI en perl que modificara el archivo con el fin de ampliar la lista de fuentes RSS.
Por último diseñé la interfaz gráfica en HTML y Javascript haciendo mis primeros pinitos con AJAX y jQuery.
Todos los archivos necesarios para la práctica están aquí.
Antes de entrar en la explicación de cómo lo he implementado, dejo el enlace para que se pueda ver el resultado final.
Para conseguir que funcionase tuve que crear un CGI que obtuviera la fuente que se le indicara y lo mostrara con un cierto estilo. El código en Perl es el siguiente:
#!/usr/bin/perl
use CGI qw(:standard);
use XML::RSS;
use LWP::Simple qw(get);
my $numero_elementos = param('num_elementos');
my $url = param('url');
#Baja fichero
if (!defined($url)){
print header( -type => 'text/html' );
print '<body style="text-align:center; vertical-align:center">'.
'<h1>Bienvenido al lector RSS</h1>'.
'<p>Elige de la izquierda las noticias que quieres leer.</p>'.
'</body>';
}
else{
if (!defined($numero_elementos)) { $numero_elementos = 7; }
my $rdf = get($url);
my $rss = new XML::RSS;
$rss->parse($rdf);
my $salida = '<body>'.
'<h1><a href="'.$rss->{'channel'}->{'link'}.'" target="_blank">'.$rss->{'channel'}->{'title'}.'</a></h1>'.
'<p>'.$rss->{'channel'}->{'description'}.'</p>';
print header( -type => 'text/html' );
for (my $i = 0; $i < $numero_elementos;$i ++ ) {
$salida = $salida.
'<div style="border:dotted; background-color:lightblue ">'.
'<h2><a href="'.$rss->{'items'}[$i]->{'link'}.'" target="_blank">'.$rss->{'items'}[$i]->{'title'}.'</a></h2>'.
'<h4>'.$rss->{'items'}[$i]->{'pubDate'}.'</h4>'.
'<p>'.$rss->{'items'}[$i]->{'description'}.'</p>'.
'</div>';
}
$salida = $salida.'</body>';
print $salida;
}
A continuación, como quería añadirle la funcionalidad de poder agregar más fuentes, diseñé el sistema de modo que se leyeran las fuentes desde un fichero XML. Este fichero lo he llamado enlaces.xml. Además, creé otro CGI en perl que modificara el archivo con el fin de ampliar la lista de fuentes RSS.
Por último diseñé la interfaz gráfica en HTML y Javascript haciendo mis primeros pinitos con AJAX y jQuery.
Todos los archivos necesarios para la práctica están aquí.
martes, 5 de mayo de 2009
AAP BloqueT2.12 ejercicio2
En un documento XML con la clasificación de los equipos de fútbol, imprimir sólo los que estén clasificados para liga de campeones (los 4 primeros)
El documento XML que he usado para definir la clasificación es el siguiente: clasificacion.xml
El programa en Ruby en el que he usado XPath para encontrar los 4 primeros es como sigue: clasificacion.rb
Al ejecutarlo en la terminal nos queda:
El documento XML que he usado para definir la clasificación es el siguiente: clasificacion.xml
<?xml version="1.0" encoding="UTF-8"?>
<clasificacion>
<equipo name="FC Barcelona">
<posicion>1</posicion>
</equipo>
<equipo name="Betis">
<posicion>10</posicion>
</equipo>
<equipo name="Real Madrid">
<posicion>2</posicion>
</equipo>
<equipo name="Murcia">
<posicion>8</posicion>
</equipo>
<equipo name="Granada">
<posicion>4</posicion>
</equipo>
<equipo name="Valencia">
<posicion>3</posicion>
</equipo>
<equipo name="Sevilla">
<posicion>5</posicion>
</equipo>
</clasificacion>
El programa en Ruby en el que he usado XPath para encontrar los 4 primeros es como sigue: clasificacion.rb
#!/usr/bin/ruby
require 'rexml/document'
include REXML
documento = 'clasificacion.xml'
file = File.new(documento)
doc = Document.new(file)
XPath.each(doc,"//equipo[posicion<=4]/@name") { |equipo|
puts "*"+equipo.value
}
Al ejecutarlo en la terminal nos queda:
afharo@ajelandroHP:~/AAP/Clase 18/bloqueT212ej2$ ./clasificacion.rb
*FC Barcelona
*Real Madrid
*Granada
*Valencia
AAP BloqueT2.12 ejercicio1
Para los atributos en XPath se usa la expresión @atributo. Sabiéndolo, poner la expresión XPath que, en los XML de habitaciones anterior, imprima todos los nodos que tengan puerta a una habitación determinada.
Primero hay que definir el archivo que vamos a analizar: muebles.xml
A continuación preparamos el programa en Ruby que encuentra las habitaciones que tienen una puerta con dirección a la habitación pasada por parámetro: muebles.rb
Por último, si ejecutamos en la terminal el comando ./muebles.rb comedor nos devuelve lo siguiente:
Primero hay que definir el archivo que vamos a analizar: muebles.xml
<?xml version="1.0" encoding='iso-8859-1' ?>
<micasa>
<habitacion id='comedor'>
<mueble>aparador</mueble>
<mueble>sofá</mueble>
<puerta a='balcón' />
</habitacion>
<habitacion id='cocina'>
<mueble>encimera</mueble>
<mueble>horno</mueble>
<puerta a='comedor' />
</habitacion>
<habitacion id='baño'>
<mueble>espejo</mueble>
<mueble>estantería</mueble>
<puerta a='comedor' />
</habitacion>
</micasa>
A continuación preparamos el programa en Ruby que encuentra las habitaciones que tienen una puerta con dirección a la habitación pasada por parámetro: muebles.rb
#!/usr/bin/ruby
require 'rexml/document'
include REXML
destino = ARGV[0]
documento = 'muebles.xml'
file = File.new(documento)
doc = Document.new(file)
XPath.each(doc,"//habitacion[puerta[@a='"+destino+"']]/@id") { |habitacion|
puts "*"+habitacion.value
}
Por último, si ejecutamos en la terminal el comando ./muebles.rb comedor nos devuelve lo siguiente:
afharo@ajelandroHP:~/AAP/Clase 18/bloqueT212ej1$ ./muebles.rb comedor
*cocina
*baño
AAP BloqueT2.11 ejercicio1
Realizar una quiniela AJAX, que al modificar el resultado de un partido, lo almacene en el servidor
Para realizar este ejercicio son necesarios tres ficheros:
Para probar el sistema completo, hay que pinchar sobre el último enlace.
Para realizar este ejercicio son necesarios tres ficheros:
- El archivo XML donde se van a almacenar las quinielas: quiniela.xml
- El CGI que se encarga de realizar las modificaciones: quiniela.cgi
- La página HTML desde la que accedemos a los archivos anteriores mediante peticiones AJAX: quiniela.html
Para probar el sistema completo, hay que pinchar sobre el último enlace.
Suscribirse a:
Entradas (Atom)