Mostrando entradas con la etiqueta Bloque. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bloque. Mostrar todas las entradas

sábado, 6 de junio de 2009

Bloque T2.10

Hacer un filtro SAX que traduzca el célebre XML casero de etiquetas en español a etiquetas en inglés. Hacerlo en Ruby o en otro lenguaje.




require 'rexml/document'
require 'rexml/streamlistener'
include REXML

file='./casa.xml'
diccionario = {

"micasa"=>"my house",
"habitacion"=>"room",
"mueble"=>"furniture",
"puerta"=>"door",
"aparador"=>"sideboard",
"bañera"=>"bath"}

class Traduccion
include StreamListener

def initialize(traduc)

@escribe = false
@diccionario=traduc
end

def tag_start(name, attributes)
puts "<"+@diccionario[name]+">"

@escribe = true

end

def tag_end(name)
puts ""
@escribe=false
end

def text(texto)
if @escribe
puts @diccionario[texto]
end
end

end

listener = Traduccion.new(palabras)
parser = Parsers::StreamParser.new(File.new(file), listener)
parser.parse

Bloque T2.9

Crear un CGI que responda a un interfaz REST y devuelva un fichero XML.


use CGI qw(:standard);
use XML::Simple;
my $url = param('url');
my $documento = XMLin('casa.xml');
print header( -type => '$url' );
print XMLout($documento);

Bloque T2.7

Hacer un programa que lea un feed RSS dado por el URL y presente los títulos y la fecha. Usar cualquier lenguaje de programación.

El programa que uso es el mismo que hay en la pagina, pero algo modificado.


#!/usr/bin/ruby

require 'rss/1.0'
require 'rss/2.0'

documento = ARGV[0]
file = File.new(documento)
rss = RSS::Parser.parse(file, false)
rss.channel.items.each do |i|
puts "*" + i.title + " Publicado: " + i.pubDate.to_s
end

Bloque T2.4

Diseñar un XSchema para un documento XML que describa una quiniela, incluyendo resultados. Tener en cuenta que una quiniela tiene 15 partidos sólo. Hacer un documento XML que siga ese XML Schema, y validarlo usando Xerces2 o algún otro parser con validación.

el xschema es el siguiente


<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">

<element name="quiniela">
<complexType>
<sequence>
<element name="partido" minOccurs="1" maxOccurs="15" >
<complexType>
<element name="Local" type="string" minOccurs="1" maxOccurs="1"></element>
<element name="Visitante" type="string" minOccurs="1" maxOccurs="1"></element>
<element name="Resultado" type="string" minOccurs="1" maxOccurs="1"></element>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>



mientras que el documento validado es el siguiente



<quiniela>
<partido>
<local>Madrid</local>
<visitante>Barcelona</visitante>
<resultado>1</resultado>
</partido>
<partido>
<local>Malaga</local>
<visitante>Sevilla</visitante>
<resultado>1</resultado>
</partido>
</quiniela>

Bloque T2.3

Ya se que es un poco tarde pero voy a subir los ejercicios que tenía casi hechos, porque me he dado cuenta de que apenas tenía subidos.

Con los equipos de la liga anteriores, usar diferentes espacio de nombres para el equipo en sí y para sus componentes. Por ejemplo, los elementos que se incluyan dentro de un jugador pueden tener un espacio de nombres, mientras que la descripción de un equipo puede tener otro diferente


<?xml version="1.0" encoding="utf-8"?>

<equipo:Equipo xmlns='http://www.geneaura.org/' xmlns:equipo='http://www.geneaura.org/Equipo' xmlns:jugador='http://www.geneaura.org/jugador' xmlns:entrenador='http://www.geneaura.org/entrenador'>
<equipo:entrenador>
<entrenador:nombre>Nombre entrenador</entrenador:nombre>
<entrenador:edad>43</entrenador:edad>
</equipo:entrenador>
<equipo:jugador>
<jugador:nombre>Nombre jugador</jugador:nombre>
<jugador:posicion>Base</jugador:posicion>
<jugador:altura>189</jugador:altura>
<jugador:edad>23</jugador:edad>
<jugador:numero>5</jugador:numero>
</equipo:jugador>
<equipo:jugador>
<jugador:nombre>Nombre jugador</jugador:nombre>
<jugador:posicion>Alero</jugador:posicion>
<jugador:altura>201</jugador:altura>
<jugador:edad>28</jugador:edad>
<jugador:numero>10</jugador:numero>
</equipo:jugador>
<equipo:jugador>
<jugador:nombre>Nombre jugador</jugador:nombre>
<jugador:posicion>Pivot</jugador:posicion>
<jugador:altura>210</jugador:altura>
<jugador:edad>30</jugador:edad>
<jugador:numero>15</jugador:numero>
</equipo:jugador>
</equipo:Equipo>

viernes, 29 de mayo de 2009

Bloque 3-1

Argumentar en el blog propio la utilidad de los servicios web, y qué posibilidades tienen el futuro


He encontrado algunas cosillas que responden perfectamente (o más o menos) a lo que pide el ejercicio:

En cuanto a la utilidad he visto:

Lo primero que debéis saber, si no lo conocéis ya, es que la tecnología web 2.0 os permite utilizar determinadas aplicaciones web en línea de una manera muy sencilla ya que, en la mayoría de los casos, tan sólo habéis de disponer de un navegador y una conexión a Internet. Así, no necesitáis descargaros miles de programas en vuestro ordenador para realizar todas aquellas actividades que se os pasen por la cabeza o necesitéis por motivos de trabajo.

Además, os permite compartir todo tipo de contenidos, es decir, colgarlos o bajarlos desde Internet y crear o modificar contenidos entre distintos usuarios. Estos servicios web 2.0 son muy sencillos de utilizar y van desde el nivel más básico hasta el más avanzado, aunque muchas veces en este último caso seguramente se os solicite pagar algún sumplemento. Las aplicaciones más básicas suelen ser gratuitas. Aunque la gran mayoría de estos servicios están en versión “beta“, todas ellos suelen funcionar a la perfección.


Si quereis ver algo más os dejo el enlace aquí

En cuanto a la visión futura tenemos

El trabajo sobre la plataforma de servicios Web continuará en el futuro, y aparecerán mejoras en tres áreas fundamentales. En primer lugar, se añadirán servicios de más alto nivel. Todo el mundo está de acuerdo en que debe existir un modo estándar de asegurar servicios Web, rutear mensajes, garantizar una entrega fiable de mensajes, definir semántica transaccional, etc. Estas características de propósito general se expanden más allá de los dominios del problema y no hay ninguna razón por la que cada desarrollador de servicios Web deba implementarlas individualmente. Microsoft, IBM y otros están realizando mucho trabajo en estas áreas. La iniciativa Global XML Web Service Architecture (GXA) define un conjunto de especificaciones sobre cómo implementar estos servicios de infraestructura en términos de mensajes SOAP (por ejemplo, de un modo neutral respecto del protocolo de transporte.

En segundo lugar, seguirán estandarizándose especificaciones. El ciclo de vida de las especificaciones de servicios Web típicamente progresa desde una propuesta hasta un estándar de facto y desde éste hasta un estándar real. Con SOAP 1.2 y WSDL 1.2 las peculiaridades finales están siendo elaboradas de las especificaciones SOAP y WSDL y algunas de las especificaciones de servicios de mayor nivel, como WS-Security, ya están en el periodo "de facto" en el proceso de estandarización. Las empresas siguen proponiendo nuevas especificaciones como añadidos a la plataforma de servicios Web y la industria en su conjunto necesitará acordar cuáles adoptar. Esas especificaciones necesitarán a continuación ser estandarizadas.

En tercer lugar, los kits de herramientas y marcos de trabajo seguirán mejorando. Además de servicios de más alto nivel como la seguridad y los objetos adjuntos, se añadirá soporte para protocolos de transporte alternativos como SMTP o TCP. De modo más importante, los modelos de programación migrarán desde los servicios de tipo RPC hacia servicios centrados en documentos, para promover un acoplamiento débil. Todos estos cambios ocurrirán en paralelo, mientras los desarrolladores continúan desarrollando e implantando sistemas basados en servicios Web.

Avances de futuro

Llegados a este punto, estaremos preguntándonos cómo podemos utilizar los servicios Web cuando la plataforma todavía está evolucionando. Las herramientas y marcos de trabajo de los servicios Web actuales proporcionan suficiente funcionalidad básica para desarrollar interesantes aplicaciones distribuidas que envían mensajes SOAP sobre HTTP. Algunos servicios de mayor nivel como WS-Security están empezando a cuajar con el soporte de diversas herramientas nuevas como el kit Web Services Development Kit. Otros servicios están todavía en fase de desarrollo preliminar a medida que las especificaciones se van revisando y las primeras implementaciones exponen áreas en las que las especificaciones necesitan solidificarse. Mientras tanto, podemos apoyarnos en mecanismos HTTP tradicionales para implementar seguridad y demás características.

Si queremos desarrollar servicios Web utilizando herramientas de Microsoft, tenemos varias opciones. Si todavía estamos utilizando Visual Studio 6.0 o algún otro entorno de desarrollo que no soporta el desarrollo de código gestionado, podemos crear y consumir servicios Web utilizando el kit de herramientas SOAP Toolkit. Si estamos utilizando .NET, podemos focalizarnos en los métodos Web de ASP.NET (a esto hace referencia la mayor parte de la documentación de .NET sobre los servicios Web). En cualquier caso, podemos aprender tanto como queramos sobre cómo funcionan los protocolos de mensajería y metadatos de los servicios Web. Cuanto más comprendamos la fontanería, más fácil será desarrollar nuestros propios servicios y utilizar servicios desarrollados por los demás.

También podemos experimentar con las nuevas especificaciones. La versión preliminar del kit Microsoft WSDK Technology Preview proporciona un soporte preliminar para las especificaciones WS-Security, WS-Routing y DIME. Podemos también implementar especificaciones por nosotros mismos, tanto utilizando extensiones sobre uno de los marcos de trabajo o kits de herramientas (por ejemplo, SoapExtensions en ASP.NET), como crear nuestra propia pila SOAP utilizando XML plano y las APIs HTTP. Esta opción no es para todo el mundo, pero si tenemos tiempo y recursos, obtendremos pronto una avanzada funcionalidad. Además, contribuiremos al desarrollo de la plataforma. El entendimiento colectivo de SOAP Y WSDL se mejoró sustancialmente gracias al intento de implementación de sistemas basados en ambos estándares por parte de múltiples usuarios. Cuanto más estrechamente trabajen los usuarios con las nuevas especificaciones, mejor resultará la plataforma de servicios Web global.

También os pongo el enlace aquí

lunes, 23 de marzo de 2009

Bloque T2.2 Ejercicio 1

Crear un documento XML, que contenga la descripción de un equipo de la liga (jugadores, nombre, entrenador). Procesarlo en el parser JavaScript, y con el Xerces. Usar alternativamente un editor XML como los vistos en el apartado anterior. Comprobar que es XML válido.

Segun lo que nos pide el enunciado lo que he hecho es:

< ?xml version="1.0" encoding="iso-8859-1"?>
<>
< id="entrenador" edad="43">
Nombre entrenador
< /entrenador>

< id="jugador" posicion="Base" altura="189" edad="23" numero="5">
Nombre jugador 1
< /jugador>

< /NombreEquipo>

a lo cual le he pasado el xmllint con el resultado siguiente

pabloign@pabloign-laptop:~/Escritorio$ xmllint Equipo.xml
< ?xml version="1.0" encoding="iso-8859-1"?>
<>
< id="entrenador" edad="43">
Nombre entrenador
< /entrenador>

< id="jugador" posicion="Base" altura="189" edad="23" numero="5">
Nombre jugador 1
< /jugador>

< /NombreEquipo>

viernes, 13 de marzo de 2009

Bloque T1.2

Como ya me ha mareado bastante el rhino he optado por ir haciendo los ejecicios en paginas html.

Este bloque nos pedia hacer una función que devuelva una tabla en HTML con el número de filas y columnas que se le pasen como parámetro. Lo que y he hecho es un formulario donde introducimos el número de filas y columnas que queremos (se comprueba que sean números y un solo dígito) y cuando le damos a crear tabla nos la crea con el tamaño pedido. El código html completo es el siguiente:

< html>
< head>
< title>
Tabla
< /title>
< meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
< script language="javascript" type="text/javascript">

function validacion(formulario) {

var num_fila = /^([0-9])$/
var num_columna = /^([0-9])$/

//comprueba si es un numero
if(!num_fila.test(formulario.filas.value)) {
alert('Número de filas incorrecto.')
document.formulario.filas.focus();
return false
}


if(!num_columna.test(formulario.columnas.value)) {
alert('Número de columnas incorrecto.')
document.formulario.columnas.focus();
return false
}




var confirmar = confirm('La tabla será de '+document.formulario.filas.value+' filas y '+document.formulario.columnas.value+' columnas.')
if (confirmar){
creartabla(document.formulario.filas.value,document.formulario.columnas.value);
return true
}
else{
return false
}


}

function creartabla(numfilas,numcolumnas){
var tabla="table";
var celda="td";
var fila="tr";
var matriz = [1,2,3,4,5,6,7,8,9];
document.writeln( "<"+tabla+">");
for (var i=0; i document.writeln( "<"+fila+">");
for (var j=0; j// document.writeln ("<"+celda+">"+matriz[i]*matriz[j]+"");
document.writeln ("<"+celda+">"+' ('+matriz[i]+','+matriz[j]+") ");

}
document.writeln ("\n");
}
document.writeln ("");

}
< /script>
< /head>


< body>
< br>
< br>
< center>
< form name="formulario">
Introduce un tamaño para la tabla y el grosor de las lineas de dicha tabla y aparecerá dibujada a continuación

< p>


Num Filas
< input type="text" name="filas" size="5">

< p>

Num Columnas
< input type="text" name="columnas" size="5">

< p>


< input type="button" value="Crear Tabla" onclick="validacion(formulario);">

< INPUT TYPE="reset" VALUE="Borrar Datos">


< /form>

< /center>
< /body>
< /html>

martes, 10 de marzo de 2009

Bloque 1.1 Ejercicio 3

Identificar un producto para sistemas Grid, y diferentes instalaciones que lo usen.



Un sistema grid es un de computación distribuido que permite compartir recursos no centrados geográficamente para resolver problemas de gran escala.

La potencia que ofrecen multitud de computadores conectados en red usando grid es prácticamente ilimitada, además de que ofrece una perfecta integración de sistemas y dispositivos heterogéneos, por lo que las conexiones entre diferentes máquinas no generarán ningún problema. Se trata de una solución altamente escalable, potente y flexible, ya que evitarán problemas de falta de recursos (cuellos de botella) y nunca queda obsoleta, debido a la posibilidad de modificar el número y características de sus componentes.

Estos recursos se distribuyen en la red de forma transparente pero guardando unas pautas de seguridad y políticas de gestión de carácter tanto técnico como económico. Así pues, su objetivo será el de compartir una serie de recursos en la red de manera uniforme, segura, transparente, eficiente y fiable, ofreciendo un único punto de acceso a un conjunto de recursos distribuidos geográficamente en diferentes dominios de administración. Esto nos puede llevar a pensar que la computación Grid permite la creación de empresas virtuales.

Por otro lado encontre un articulo sobre este tema en un blog sobre supercomputacion:
Pioneros del “Grid” en el mundo de la administración pública y los negocios

Bloque 1.1 Ejercicio 2

Identificar diferentes productos para crear clústers de computadores, e instalaciones comerciales que los usen.



Esta parte le he visto bastante bien en wikipedia por lo que os paso el enlace:
http://es.wikipedia.org/wiki/Cluster_de_computadores

Yo haré un resumen de las partes del cluster, para más informacion podeis ir a wikipedia

En general, un cluster necesita de varios componentes de software y hardware para poder funcionar.

Nodos

Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar. Ahora bien, dentro de la informática la palabra nodo puede referirse a conceptos diferentes según en ámbito en el que nos movamos:

El cluster puede estar conformado por nodos dedicados o por nodos no dedicados.

En un cluster con nodos dedicados, su uso está exclusivamente dedicado a realizar tareas relacionadas con el cluster. Mientras que, en un cluster con nodos no dedicados, este hace uso de de los ciclos de reloj que dichos nodos no estan utilizando para realizar sus tareas.

Cabe aclarar que a la hora de diseñar un Cluster, los nodos deben tener características similares.

Almacenamiento

El almacenamiento puede consistir en una NAS(dispositivo específico dedicado a almacenamiento a través de red), una DAS(consiste en conectar unidades externas de almacenamiento SCSI o a una SAN mediante conexiones dedicadas), o almacenamiento interno en el servidor. El protocolo más comúnmente utilizado es NFS (Network File System), sistema de ficheros compartido entre servidor y los nodos. Sin embargo existen sistemas de ficheros específicos para clusters como Lustre (CFS) y PVFS2.

Sistema Operativo

Debe ser multiproceso, multiusuario. Otras características deseables son la facilidad de uso y acceso y permitir además múltiples procesos y usuarios.

Conexiones de Red

Los nodos de un cluster pueden conectarse mediante una simple red Ethernet (se suele hacer con Gigabit Ethernet para una mejor velocidad de conexión) con placas comunes. También se pueden usar otras tecnologías como Myrinet(red de baja latencia), pero la que mas se usa es la de Gigabit Ethernet.

Middleware

El middleware es la parte menos conocida, y consiste en un software que recibe los trabajos entrantes al cluster y los redistribuye de manera que el proceso se ejecute más rápido y el sistema no sufra sobrecargas en un servidor. Esto se realiza mediante políticas definidas en el sistema (automáticamente o por un administrador) que le indican dónde y cómo debe distribuir los procesos, por un sistema de monitorización, el cual controla la carga de cada CPU y la cantidad de procesos en él.

Ambientes de Programación Paralela

Los ambientes de programación paralela permiten implementar algoritmos que hagan uso de recursos compartidos: CPU (Central Processing Unit), memoria, datos y servicios.


Ejemplos de cluster que se usan en la actualidad:



Google es un buen ejemplo puesto que tiene un cluster que usa miles de ordenadores ya que cada busqueda necesita una capacidad de computación grandísima.

MareNostrum Situado en España, más precisamente en Barcelona, “MareNostrum” es una de las supercomputadoras más potentes del mundo, es la más potente de Europa.

Bloque 1.1 Ejercicio 1

Buscar ejemplos de sistemas P2P



Como voy con bastante retraso y casi todos han puesto ya ejemplos he intentado que estos ejemplos no se repitan para ver cosas nuevas y eso, aunque no he visto todos los blog, estos dos no me suenan, al menos no los hemos visto en clase, asi que pongo este par de ejemplos:

Veoh: es una red de p2p, similar a bitTorrent, con especificaciones en materia de seguridad y de acceso desde sistemas con cortafuegos, cuyas aplicaciones están disponibles para Windows y Mac OS X, aún en estado beta, por el cual podrás no solo compartir tus vídeos sino verlos a pantalla completa vídeos de calidad más que aceptable. Se trata de una red de televisión virtual en donde puedes distribuir contenidos audiovisuales de alta calidad al resto de usuarios de banda ancha.

Enlace: http://www.veoh.com/

GrooveShark: es una plataforma donde subir, organizar y compartir música, es como un Emule, pero más rápido e instantáneo. También funciona bien como un reproductor en el que incluso puedes crear tus propias listas de reproduccion (siempre que estes registrado).Además con funciones de red social, donde puedes ver a tus amigos y otros usuarios que música prefieren.

Parece ser que esta platarforma para escuhcar música online es cada vez más popular y poco a poco va tomando fuerza.

Enlace: http://listen.grooveshark.com/