Desarrollo de aplicaciones web

Práctica 2: Programación asíncrona

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

Esta práctica debe ser elaborada de manera individual.

Resuelve el siguiente problema usando Node.js y el lenguaje de programación JavaScript. Crea un directorio llamado practica2 y coloca ahí tu archivo fuente con la solución del problema.

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

/*----------------------------------------------------------
 * Práctica 2: Programación asíncrona
 * Fecha: 27-Feb-2020
 * Autora: A01166611 Pepper Pots
 *----------------------------------------------------------*/

Así mismo, es indispensable que cada función, clase o método que definas en tu programa contenga un comentario JSDoc en inglés que describa su correspondiente API (interfaz de programación de aplicaciones). Por ejemplo:

/**
 * Computes the largest of the two numbers.
 *
 * @param {number} x The first number.
 * @param {number} y The second number.
 * @return {number} The largest value.
 */
function maximum(x, y) {
  if (x > y) {
    return x;
  } else {
    return y;
  }
}

Problema

El archivo movies.csv es un archivo con formato CSV (comma-separated values) que contiene información sobre varias películas. Cada película se encuentra en su propio renglón dentro del archivo. Los datos de cada película son: nombre, año de estreno y director. Dentro de un mismo renglón, los datos están separados entre sí a través de comas.

Usando Node.js, escribe un programa que lea de manera asíncrona el archivo movies.csv del sistema local de archivos y produzca un nuevo archivo de manera asíncrona llamado sorted.csv con el mismo formato que el archivo de entrada pero con los renglones ordenados de manera ascendente por el año de estreno de las películas.

Para leer y escribir los archivos debes utilizar las siguientes funciones asíncronas:

Otras funciones que pueden ser de utilidad para resolver el problema son las siguientes:

Al final, el archivo sorted.csv debe quedar con el siguiente contenido:

name,year,director
In the Heat of the Night,1967,Norman Jewison
Oliver!,1968,Carol Reed
Midnight Cowboy,1969,John Schlesinger
Patton,1970,Franklin J. Schaffner
The French Connection,1971,William Friedkin
The Godfather,1972,Francis Ford Coppola
The Sting,1973,George Roy Hill
The Godfather Part II,1974,Francis Ford Coppola
One Flew Over the Cuckoo's Nest,1975,Miloš Forman
Rocky,1976,John G. Avildsen
Annie Hall,1977,Woody Allen
The Deer Hunter,1978,Michael Cimino
Kramer vs. Kramer,1979,Robert Benton
Ordinary People,1980,Robert Redford
Chariots of Fire,1981,Hugh Hudson
Gandhi,1982,Richard Attenborough
Terms of Endearment,1983,James L. Brooks
Amadeus,1984,Miloš Forman
Out of Africa,1985,Sydney Pollack
Platoon,1986,Oliver Stone
The Last Emperor,1987,Bernardo Bertolucci
Rain Man,1988,Barry Levinson
Driving Miss Daisy,1989,Bruce Beresford
Dances with Wolves,1990,Kevin Costner
The Silence of the Lambs,1991,Jonathan Demme
Unforgiven,1992,Clint Eastwood
Schindler's List,1993,Steven Spielberg
Forrest Gump,1994,Robert Zemeckis
Braveheart,1995,Mel Gibson
The English Patient,1996,Anthony Minghella
Titanic,1997,James Cameron
Shakespeare in Love,1998,John Madden
American Beauty,1999,Sam Mendes
Gladiator,2000,Ridley Scott
A Beautiful Mind,2001,Ron Howard
Chicago,2002,Rob Marshall
The Lord of the Rings: The Return of the King,2003,Peter Jackson
Million Dollar Baby,2004,Clint Eastwood
Crash,2005,Paul Haggis
The Departed,2006,Martin Scorsese
No Country for Old Men,2007,Joel Coen
Slumdog Millionaire,2008,Danny Boyle
The Hurt Locker,2009,Kathryn Bigelow
The King's Speech,2010,Tom Hooper
The Artist,2011,Michel Hazanavicius
Argo,2012,Ben Affleck
12 Years a Slave,2013,Steve McQueen
Birdman,2014,Alejandro González Iñárritu
Spotlight,2015,Tom McCarthy
Moonlight,2016,Barry Jenkins
The Shape of Water,2017,Guillermo del Toro
Green Book,2018,Peter Farrelly
Parasite,2019,Bong Joon Ho

¿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 terminal tecleando lo siguiente (asegúrate de 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

La fecha límite es el jueves 27 de febrero.