Estás en:   ArielOrtiz.info > Desarrollo de aplicaciones web > Práctica 2: Servidor web sencillo

Práctica 2: Servidor web sencillo

Objetivos

Durante esta práctica, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción de la actividad

NOTA: Esta práctica se puede elaborar de manera individual o en parejas.

Tu archivo fuente de JavaScript debe comenzar con un comentario que contenga el título de la práctica, la fecha y los datos personales de los autores (nombre y matrícula). Por ejemplo:

/*----------------------------------------------------------
 * Práctica 2: Servidor web sencillo
 * Fecha: 11-Feb-2015
 * Autores:
 *           A01166611 Pepper Pots
 *           A01160611 Anthony Stark
 *----------------------------------------------------------*/
  1. Crea un directorio llamado practica2. Coloca en dicho directorio los siguientes dos archivos llamados fibonacci.js y fib_template.html. Estudia detenidamente cada archivo para determinar su propósito.

    // Archivo: fibonacci.js
    
    'use strict';
    
    var port = 8000; // Socket port number.
    
    // Import required modules.
    var http = require('http');
    var fs = require('fs');
    var url = require('url');
    var querystring = require('querystring');
    var util = require('util');
    
    // Load synchronously the HTML template file.
    var template = fs.readFileSync('fib_template.html').toString();
    
    /*--------------------------------------------------------------------
     * Compute and return an array with the first n Fibonacci numbers.
     *--------------------------------------------------------------------*/
    function fibonacci(n) {
      var a = 0;
      var b = 1;
      var result = [];
      var i, t;
      for (i = 0; i < n; i++) {
        result.push(a);
        t = a + b;
        a = b;
        b = t;
      }
      return result;
    }
    
    /*--------------------------------------------------------------------
     * HTTP service function.
     *--------------------------------------------------------------------*/
    function serviceHandler (req, res) {
      var query = url.parse(req.url).query;
      var n = parseInt(querystring.parse(query).n);
      var fibs;
    
      if (n) {
        fibs = fibonacci(n).map(function (x) {
          return '<li><span>' + x + '</span></li>';
        }).join('\n');
        fibs = '<p>First ' + n + ' Fibonacci numbers:</p>\n' +
               '<ol>\n' + fibs + '</ol>\n';
      } else {
        fibs = '<p>No Fibonacci numbers computed!</p>\n';
      }
    
      res.writeHead(200, {'content-type': 'text/html'});
      res.end(util.format(template, fibs));
    }
    
    // Create the HTTP server.
    http.createServer(serviceHandler).listen(port);
    console.log('Server running at port ' + port);
    
    <!DOCTYPE html>
    <!-- Archivo: fib_template.html -->
    
    <html lang="en">
      <head>
        <meta charset="utf-8" />
        <title>Fibonacci</title>
        <style>
          body {
            background: #FFFFFF;
            color: #000080;
            font-family: sans-serif;
            font-size: medium;
            margin: 20px;
          }
    
          hr {
            border: 0;
            color: #B0C4DE;
            background-color: #B0C4DE;
            height: 1px;
          }
    
          table {
            border-collapse: collapse;
            border: 1px solid #000000;
            padding: 0px;
            margin-bottom: 10px;
            color: #000000;
            background: #E6E6FA;
          }
    
          td {
            border: 1px solid #000000;
            padding: 10px;
            text-align: center;
          }
    
          th {
            border: 1px solid #000000;
            padding: 10px;
            color: #008080;
            background: #B0E0E6;
          }
    
          li {
            color: #AAAAAA;
          }
    
          span {
            color: #094141;
          }
    
          footer {
            font-size: 70%;
            color: #B0C4DE;
            text-align: center;
          }
        </style>
      </head>
    
      <body>
        <h1>Fibonacci</h1>
          %s
          <hr/>
          <footer>
            Desarrollo de aplicaciones web
          </footer>
      </body>
    </html>
    
  2. Corre el servidor usando el siguiente comando desde la terminal dentro del directorio practica2:

    node fibonacci

    En tu navegador, visita los siguientes URLs:

  3. En el mismo directorio practica2, crea dos nuevos archivos llamados pascal.js y pascal_template.html. Estos dos archivos corresponden en funcionalidad a los dos archivos del punto 1, pero, en lugar de calcular la serie de Fibonacci, despliegan las diagonales 0 a la n del triángulo de Pascal (usando las etiquetas <table>, <tr> y <td>).

    El triángulo se debe calcular de la siguiente manera: el primer renglón y la primera columna deben contener únicamente unos; todos los demás elementos se calculan sumando el elemento que está inmediatamente arriba más el elemento que está inmediatamente a la izquierda. En la tabla resultante, todas las celdas que no son parte del triángulo deben quedar en blanco. Por ejemplo, para n = 5 (http://localhost:8000/?n=5), la salida en el navegador debe ser como se muestra a continuación:

  4. Verifica que la página producida sea HTML5 válido utilizando el Servicio de Validación de W3C.

¿Qué se debe entregar?

Crea un archivo tarball con todo el contenido del directorio practica2. Nombra a este archivo practica2.tgz. Este archivo se puede crear desde la línea de comando tecleando lo siguiente (asegúrate que te encuentres en el mismo nivel que el directorio practica2):

tar czf practica2.tgz practica2

✔ Instrucciones para subir archivo

Para entregar el archivo practica2.tgz, ingresa los siguientes datos:

Solicitar NIP

Fecha límite: Miércoles, 11 de febrero.

Evaluación

Esta actividad será evaluada usando los siguientes criterios:

100 La actividad cumple con todos los requerimientos.
-10 No se incluyó en comentario los datos de los autores.
10 El programa fuente tiene errores sintácticos.
50-90 El programa tiene algunos errores a tiempo de ejecución.
DA El programa es un plagio.