Alumnos:
Luis Báez Rol: 9991007-0
Carolina Mellings Rol: 9904082-3
Profesor:
Agustín González
Ayudante:
Christian Lalanne
Introducción
El
programa implementado permite utilizar la biblioteca estándar de plantillas STL
de C++, algoritmos genéricos y además entregar una salida en HTML, a través de
una CGI.
Implementación
Las
exigencias de ésta tarea consiste en desarrollar un programa en C++ que reciba
un archivo de texto por la entrada estándar y enviar por la salida estándar una
permutación aleatoria de las líneas ingresadas. De manera que la salida
corresponda a código HTML donde se ha agregado un número a cada línea.
Para
llevar a cabo este programa se identificaron una serie de etapas que se fueron
cumpliendo para completar los requerimientos descritos anteriormente, los
cuales se detallan a continuación:
1. Primero se desarrollo una aplicación simple que
abriera un archivo de texto y lo mostrará por pantalla, dándole el nombre por
defecto.
2. Luego sobre la misma aplicación anterior se
implementó para que en vez de abrir un archivo dado por defecto, lo recibiera
como parámetro al momento de ejecutar el programa y se captura con argv[ ].
3. En base a lo obtenido anteriormente, se implementó
un contenedor vector de tipo string, de la librería
STL, el cual se encargó de guardar cada uno de los ítems leídos desde el
archivo de texto.
4. Una vez que se tienen los ítems guardados en el
vector de string, se procede a insertar el algoritmo random_suffle en la aplicación de manera que se le
entregaran como parámetros el string de inicio y el string final del vector para que permutara los elementos
del vector.
5. Ahora que los elementos del vector ya han sido
permutados es necesario implementar la salida, para ello se genera el código
HTML, a través de un archivo .cgi.
Dificultades:
Una
de las dificultades del programa implementado fue la aplicación del algoritmo random_shuffle, puesto que todos los ejemplos encontrados llamaban
al algoritmo, pero no mencionaban la librería a la que pertenecía este, una vez
identificada el problema se logró solucionar, sin embargo la salida de éste
algoritmo era siempre la misma por lo que se tuvo que generar una semilla con srand() que capturara el tiempo el cual siempre varía, y
así lograr que el resultado de la permutación siempre sea distinto.
Respecto
de la salida de la aplicación se genera el archivo.cgi,
pero se hallaron bastantes dificultades al momento de visualizar éste archivo, debido
a que por un lado no se logró configurar el servidor web
para que leyera el script o archivo.cgi,
dentro de las pruebas realizadas arrojaba un error asociado a los permisos con
que se contaba, por esta razón la solución para esta dificultad fue generar un
archivo de salida de tipo .html llamado
permutación.html, el cual se sobrescribe cada vez que se ejecuta la aplicación.
A
pesar de la dificultad mencionada se incluye un archivo llamado index.html, el
cual se encarga de llamar al script tómbola.cgi que corresponde al archivo generado por la ejecución
de la aplicación propiamente tal.
Ejecución
de la aplicación:
Para
ejecutar la aplicación luego de compilar con el archivo makefile incluido, se
procede a ejecutar la aplicación en linux con el siguiente comando:
Como
se puede ver al ingresar el archivo datos.txt como prueba, la aplicación
retorna el código de la página html que mostrará los
resultados y además guarda estos datos en un archivo llamado permutación.html,
esto se debe a que se crea el archivo .cgi, sin
embargo no se tenían los permisos para ejecutar el script
que permite recibir los datos desde una página web y
mostrarlos en ella.