viernes, 27 de marzo de 2009

AAP bloque T2.2 ejercicio1: 1.Crear un documento XML, que contenga la descripción de un equipo de la liga (jugadores, nombre, entrenador). Procesar




bloqueT2.2.xml



<?xml version="1.0" encoding="iso-8859-1"?>

<equiposLiga>
<equipo id="Grana">
<nombre>Grana</nombre>
<entrenador>Jose</entrenador>
<jugadores>
<portero>Juan</portero>
<defensa>Alvaro</defensa>
<mediocentro>Lucas</mediocentro>
<delantero>Manuel</delantero>
</jugadores>
</equipo>
</equiposLiga>










Grana
Jose

Juan
Alvaro
Lucas
Manuel





viernes, 20 de marzo de 2009

AAP bloque T2.2 ejercicio1: 1. Visualizar este fichero XML en un navegador para ver cómo lo hace, y si puede efectivamente hacerlo.

Clickamos en el enlace "este" y vemos como el navegador utilizado, Mozilla (3.0.7) es capaz de representarlo sin problemas.

AAP bloque T2.1 ejercicio1: 1. Elegir un editor XML e instalarlo, o buscar un modo XML para un editor genérico.

Instalo "Notepad++" (descarga aqui) gracias a AlexBM, él directamente reconoce ficheros de múltiples lenguajes y entre ellos XML. Para cambiar de lenguaje nos vamos a la pestaña lenguaje y seleccionamos la deseada.

viernes, 13 de marzo de 2009

AAP bloque T1.7 ejercicio1: 1. Salvar esta página, y sobre ella hacer un programa JS que imprima todos los títulos de secciones.

Script 1, muestra los enunciados segun se le pidan:

<script type='application/javascript'>function putBloque(value) {
var enunciados = document.getElementsByTagName('h2');
if(value>=enunciados.length){
alert('No existe ese número de título' );
}
else{
document.getElementById('resultado1').innerHTML = enunciados[value-1].textContent;
}

}
</script>


Script 2, muestra todos los enunciados:

%lt;script type='application/javascript'>function putBloque() {
var enunciados = document.getElementsByTagName('h2');
document.getElementById('resultado1').innerHTML =' ' ;
for(i=0;i<enunciados.length;++i){
document.getElementById('resultado1').innerHTML += enunciados[i].textContent;
}

}
%lt;/script>

AAP bloque T1.6 ejercicio 1: Usar JSON para asignar valores a los partidos de una quiniela, con local, visitante y resultado.

Codigo

var partido1 ={'local' : 'barsa','visitante' : 'Madrid','Resultado' : '1'};

for (i in partido1)
print(i+' '+partido1[i]);

Resultado:

local barsa
visitante Madrid
Resultado 1

martes, 10 de marzo de 2009

AAP bloque T1.4 ejercicio1: 1.Modificar el programa anterior (cualquiera de ellos) para que contabilice el número de partidos ganados, empatados ..

Aqui pongo los códigos utilizados, el primero es el base donde se ven las matrices asociativas y el segundo es una función para imprimir arrays, también se ha utilizado el script "partido.js", los script se listan a continuación:

load('Partido.js');
load('imprimirArray.js');


var equipos= new Array('Madrid', 'Barça', 'Atleti', 'Geta', 'Betis', 'Depor', 'Sevilla', 'Graná');

function jornada( estosEquipos ) {

var equiposAqui = new Array;
equiposAqui = equiposAqui.concat(estosEquipos);
var midsize = equiposAqui.length/2;
var quiniela = new Array( midsize );
var unox2 = new Array( '1','x','2');
for ( var i=0; i < midsize ; i++ ) {
var equipo1 = equiposAqui.splice(Math.floor( equiposAqui.length*Math.random()) , 1);
var equipo2 = equiposAqui.splice(Math.floor( equiposAqui.length*Math.random()), 1);
quiniela[i] = new Partido( equipo1, equipo2 );
quiniela[i].setResultado( unox2[Math.floor( 3*Math.random()) ]);
}
return quiniela;
}


var quinielas = new Array;
for ( var i = 0; i < 10; i ++ ) {
quinielas[i] = jornada( equipos );
}


var ganados=new Array;
var perdidos=new Array;
var empatados=new Array;
var resultados=new Array;
for ( var i in equipos ) {
ganados[equipos[i]]=0;
empatados[equipos[i]]=0;
perdidos[equipos[i]]=0;
resultados[equipos[i]]=0;
}
for ( var i = 0; i < quinielas.length; i ++ ) {
for ( var j = 0;j <<>
var local = quinielas[i][j].local;
var visitante = quinielas[i][j].visitante;
var resultado = quinielas[i][j].resultado;
switch (resultado) {
case '1':
resultados[local]+=3;
++ganados[local];
++perdidos[visitante];
break;
case 'x':
resultados[local]+=1;
resultados[visitante]+=1;
++empatados[visitante];
++empatados[local];
break;
default:
resultados[visitante]+=3;
++perdidos[local];
++ganados[visitante];
}
}
}


var titulo=['Equipo','Puntos','Jugados','Ganados','Empatados','Perdidos'];
var equipoArray= [];
var arrayResultados=[];
arrayResultados[0]=titulo;
var contador=0;
for (var i in resultados){
++contador;
equipoArray=[i,resultados[i],(ganados[i]+empatados[i]+perdidos[i]),ganados[i],empatados[i],perdidos[i]];
arrayResultados[contador]=equipoArray;
}

imprimirArray(arrayResultados);



Y aquí el imprimirArray.js:



function imprimirArray(matriz){

var filas=matriz.length;
var columnas=matriz[0].length;

print( marca('table'));
for ( i=0;ifilas;++i ) {
print( marca( 'tr' ));
for ( j=0;j<columnas;++j ) {
print (celda(matriz[i][j]));
}
print ( finmarca('tr'));
}
print (finmarca('table'));

}


function marca( m ) {
return "<"+m+">";
}

function finmarca( m ) {
return "</"+m+">";
}

function celda( contenido ) {
return marca("td")+contenido+finmarca("td");
}

Por último muestro el resultado:

Partido 0: Atleti - Betis = 1
Partido 1: Madrid - Geta = 2
Partido 2: Graná - Barça = x
Partido 3: Depor - Sevilla = 1









































































EquipoPuntosJugadosGanadosEmpatadosPerdidos
Madrid1710523
Barça1210262
Atleti2110631
Geta1410424
Betis1310415
Depor1310415
Sevilla1010244
Graná910235


AAP bloque T1.5 ejercicio1: Hacer algún programa en JS que use cualquier clase de Java conocida.

Tras descargarme el interprete Rhino version 1.7 y buscar como ejecutar scripts en él,aquí pongo un ejemplo muy simple de uso de una clase de Java, he utilizado la clase java.lang.Math y el método sqrt() para calcular raices cuadradas, a continuación pongo el código:


function raizCuadrada(numero){

print(java.lang.Math.sqrt(numero));


}

var cuadrado=250;

raizCuadrada(cuadrado);


Y aquí expongo lo que devuelve el interprete:

15.811388300841896

Si intentamos ejecutar el script con otro interprete que no sea rhino obtenemos:

ReferenceError: java is not defined

viernes, 6 de marzo de 2009

AAP bloque T1.3 ejercicio 1: Hacer una clase que corresponda a una fila de una tabla, con número de columnas variable, y un programa que permita...

Bien pues aqui esta el codigo que realiza lo pedido:

function ClaseFila(columnas){
this.columnas=columnas;
this.toString=imprimirFila;
}


function imprimirFila(columnas){

print( marca('table'));

print( marca( 'tr' ));
for ( j=0;j<this.columnas;++j ) {
print ( celda('casilla'+','+(j+1)));
}
print ( finmarca('tr'));

print (finmarca('table'));

}

function marca( m ) {
return "<"+m+">";
}

function finmarca( m ) {
return "</"+m+">";
}

function celda( contenido ) {
return marca("td")+contenido+finmarca("td");
}

function crearRow(columnas){
var row=new ClaseFila(4);
print(row.toString());


}

crearRow(4);




Y lo que nos resulta de interpretarlo:

>js bloqueT13.js > bloqueT13.html







casilla1casilla2casilla3casilla4

AAP Practica 1:

Aqui dejo los recursos expuestos en mi practica:

  • Primer recurso: JavaScript Tutorial.Con este tutorial de JS podremos ver los tipos de datos,operadores, estructuras de control,funciones... de este útil lenguaje.5 Puntos
  • Segundo recurso: Perl Tutorial. Otro tutorial , en este caso de PERL, quizás menos completo que el análogo en JS.4 Puntos.
  • Tercer recurso: Ejemplos de Mashups.En este enlace podemos ver algunos ejemplos de mashups ya creados, en ellos tenemos desde mashups para busqueda de tutoriales a fotos... Por si deseamos crear este tipo de aplicaciones híbridas aqui dejo algunos de los pasos que debemos dar antes : Mashups. 4 Puntos.
  • Cuarto recurso: ArsTechnica:De las páginas web mas famosas en cuanto a informatica,posee un foro con abundante información de todo tipo, desde redes, pasando por hardware, móbiles... La pega que en verdad no lo es, es que esta en inglés.5 Puntos.
  • Quinto recurso: Foro de programacion:Un foro para cualquier duda de programación en casi cualquiera de los lenguajes que actualmente se usan en aplicaciones o servicios online (Ajax,ASP,bases de datos,Java,XML,Ruby...).4 Puntos.
La calificacion ha sido un 9 debido principalmente al enlace a ArsTechnica que es demasiado genérico.

jueves, 5 de marzo de 2009

AAP bloque T1.2 ejercicio1: 1. 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.

Aqui muestro el codigo utilizado:


function tabla(filas,columnas){

print( marca('table'));

for ( i=0;i<filas;++i){
print( marca( 'tr' ));
for ( j=0;j<columnas;++j){
print ( celda('casilla'+(i+1)+','+(j+1)));
}
print ( finmarca('tr'));
}
print (finmarca('table'));

}

function marca( m ) {
return "<"+m+">";
}

function finmarca( m ) {
return "";
}

function celda( contenido ) {
return marca("td")+contenido+finmarca("td");
}

var fil=2;
var col=3;

tabla(fil,col);


Y aqui pongo lo generado por el interprete que podemos obtener facilmente si utilizamos :

>js bloqueT12.js > bloqueT12.html












casilla1,1casilla1,2casilla1,3
casilla2,1casilla2,2casilla2,3





bloque T1.1 ejercicio1: Comentar en la bitácora diferentes lenguajes que se puedan usar en el navegador, y qué ventajas e inconvenientes tiene...

Algunos de ellos son:

  • HTML
  • CSS
  • JavaScript
  • Java (applet)
  • AJAX
  • Perl
  • ASP
  • Flash
  • PHP
  • VBScript
  • JScript
  • ...

martes, 3 de marzo de 2009

AAP Bloque 1.3 ejercicio 2: Instalar algún cliente de gnutella (por ejemplo, gtk_gnutella) y buscar un fichero popular para bajarlo...

He instalado Shareaza y buscado la pelicula de batman the dark knight (la que mas fuentes tenia era en frances y es la que he seleccionado por ser la mas "popular"), la busqueda ha tardado unos 20 seg en listar la lista "completa" y unos 5 segundos en listar la entrada seleccionada para descargarla.

La pelicula comienza a descargar a los 5 minutos (mientras se van listando las mas de 1200 fuentes que encuentra...) a una velocidad de unos 20kBs (¬¬) y poco a poco la velocidad va oscilando en torno a 25kBs, 30kBs, 40kBs,3okBs,0kBs,20kBs... no tengo paciencia para estar viendo cuanto tarda y no se porque llistando tantas fuentes como parece que tiene no se acelera la bajada. Editare la entrada si me armo de la paciencia requerida para completar la descarga...

AAP bloque 1.3 ejercicio 1: Buscar un fichero de tamaño conocido (por ejemplo, una ISO de alguna distro Linux) y probar qué tiempo se tarda...

Probamos los distintos metodos de descarga:
  • Comienzo probando la descarga directa de la distribucion Fedora 10 edicion escritorio live CD, tiene un tamaño de unos 683 Mb, la duracion aproximada ha sido de 29 minutos a una velocidad media de 450 kBs.
  • Ahora utilizo un programa para la descarga de torrents como puede ser bitcomet, vemos que al principio tarda en arrancar y lo hace de forma suave, poco a poco va incrementando su velocidad. Debido a la mala conexion que poseo, donde las reconexiones son habituales, el fichero ha tardaro unos 50 minutos en descargarse bajando cuando podia a 200-300 y picos de 350 kBs

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

Navegando por la red he encontrado un enlace para realizar en MyStrands llamadas REST. Para el que no lo conozca, mystrands en una comunidad, en la que los usuarios puntúan a los artistas, sus discografías, debaten sobre ellos, etc. (Yo lo desconocia). El enlace es el siguiente http://www.antonioserrano.es/samples/MyStrandsApi/MyStrandsApp.html# , en el podemos buscar discografias de grupos famosos.

AAP bloque1.2 ejercicio 1: Discutir cuáles son los principales obstáculos a la escalabilidad en un sistema distribuido.

Los principales impedimentos para la escalabilidad en un sistema distribuido son:

  • Al aumentar el numero de maquinas se hace mas dificil su gestion y el mantenimiento del sistema.
  • Se hace necesaria la ampliacion de recursos si el aumento de maquinas es significativo, ya que mas maquinas utilizaran mas recursos. Entiendase por recursos ancho de banda, lista de fuentes...
  • Cuantas mas maquinas mayor probabilidad de que haya distancias grandes entre un par cualquiera lo que provoca retardos en las comunicaciones por red.
Como vemos estos son solo algunos factores que pueden provocar que un sistema que sea distribuido no se escale bien al incrementar el numero de maquinas.