Proyecto de HP (2003/04)

Segunda parte

2a) makefile.

Escribir un makefile para generar la aplicación "txt2db" a partir de los ficheros: dbmysql.cc, dbmysql.hh y txt2db.cc que hemos colocado en el directorio: /iilabs/HP/PROYECTO.

Para poder compilar se necesitan los ficheros includes propios de mysql. Dichos ficheros están en el directorio /usr/include/mysql de slabii. Por lo tanto, solo se puede compilar en slabii.

Para poder enlazar (linkar) los ficheros objetos y generar el ejecutable se necesita la librería /usr/lib/mysql/libmysqlclient.so. Esta librería también está solo en slabii. Luego, solo se puede enlazar en slabii.

Para poder ejecutar la aplicación "txt2db" generada por el makefile y que funcione correctamente también hay que estar en slabii.

La aplicación espera que se le pase un fichero por la entrada estándar como el generado por vuestro guión en perl (si está bien hecho). Con esos datos crea y rellena una tabla llamada "proyecto_<uid>", donde uid es vuestro identificador de usuarios (numérico). A partir de ahora en el ejemplo siguiente supondremos que el uid es 500. La tabla generada es de la forma:


CREATE TABLE proyecto_500
(
Country char(64),
Project_Name char(64),
Description text,
Focal_area text,
Operational_programas text,
Type_of_project text,
Project_state text,"
Start_Date text,
End_Date text,
Grant_Amount text,
Grant_Recipient text,
Grant_Recipient_Type text
);

Se puede comprobar como ha ido la carga mediante la sentencia:
slabii$ mysql -e "describe proyecto_500" test

 

2b) Guiones de shell.

Escribir los siguiente guiones de shell:

1) Línea de shell para cargar de la BD mediante la aplicación del apartado 2a) a partir de vuestro fichero de datos.

2) Línea de shell que calcule el número de proyectos empezados en cada uno de los meses de 1999 a partir del fichero de datos.

3) Línea de shell que calcule el número de proyectos empezados en cada uno de los meses de 1999 a partir de la base de datos. La línea empezará así:
mysql -e "select Start_Date from proyecto_500 where Start_Date like '%/1999'" test | ...

4) Línea de shell que determine el país con más proyectos a partir del fichero de datos.

5) Línea de shell que determine el país con más proyectos a partir de la base de datos. La línea empezará así:
mysql -e "select Country from proyecto_500" test | ...

6) Línea de shell que determine la cantidad de proyectos que todavía no han terminado a partir del fichero de datos.

7) Línea de shell que determine la cantidad de proyectos que todavía no han terminado a partir de la base de datos. La línea empezará así:
mysql -e "select Project_state from proyecto_500" test | ...

8) Guión de shell que determine cuántos proyectos se encuentran en una determinada situación a partir del fichero de datos. Es decir, cuántos ya han finalizado, cuantos todavía no, etc. Este guión no hace falta resolverlo en una línea.

9) Guión de shell que determine cuántos proyectos se encuentran en una determinada situación a partir de la base de datos. Es decir, cuántos ya han finalizado, cuantos todavía no, etc. Este guión no hace falta resolverlo en una línea.

10) Línea de shell que determine las tres entidades que más proyectos asociados tienen a partir del fichero de texto.

11) Línea de shell que determine las tres entidades que más proyectos asociados tienen a partir de la base de datos.

12) Línea de shell que calcule en el año 2002 cuántos proyectos finalizaron a partir del fichero de datos.

13) Línea de shell que calcule en el año 2002 cuántos proyectos finalizaron a partir de la base de datos.

14) Línea de shell que calcule por meses cuántos proyectos finalizaron en el año 2002 a partir del fichero de datos.

15) Línea de shell que calcule por meses cuántos proyectos finalizaron en el año 2002 a partir de la base de datos.

16) Guión de shell que calcule cuántos proyectos se empezaron en cada año a partir del fichero de datos. Este guión no hace falta resolverlo en una línea.

17) Guión de shell que calcule cuántos proyectos se empezaron en cada año a partir de la base de datos. Este guión no hace falta resolverlo en una línea.

18) Calcular la suma total de la ayuda de todos los proyectos: suma de Grant_Amount.
La línea empezará así:
mysql -e "select Grant_Amount from proyecto_500" test | ...
Para ello, se generará una única línea de la forma:
13500.20+12240.50+.....+0
que se pasará por la entrada estándar a la órden bc. Es decir, la línea terminará así:... | bc -l
Este guión no hace falta resolverlo en una línea. Pueden usarse incluso ficheros temporales si se cree conveniente.

Notas:

Las prácticas se entregarán mediante el interfaz web accesible a través de la página: http://mutex.uv.es/HTML/DOCENCIA/asignaturas.xml.

Los ficheros a entregar son:
1) htmlparser.pl: programa en perl que transforma el fichero html en
fichero texto separado por "#".
2) makefile: que genera la aplicación "txt2db".
3) guiones.sh: fichero que contiene todas las soluciones al apartado 2b) una detrás de otra.