TP3

Anuncio
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
TRABAJO PRACTICO Nº 3 – Procesador de un log file
1) Objetivo del T.P.:
El objetivo del presente trabajo consiste en la realización de un programa ejecutable en modo consola
generador de estadísticas sobre los datos almacenados en un archivo log del tipo CSV (log file), correspondientes a
las visitas de un sitio web.
El programa debe proporcionar de forma conveniente un listado conteniendo la frecuencia de visitas de
cada usuario a un sitio web.
2) Alcance del T.P.:
Mediante el presente trabajo se busca que el alumno adquiera y aplique conocimientos sobre los siguientes
temas:
• Arreglos dinámicos de estructuras (Growing Arrays) .
• Manejo de punteros dobles ó triples.
• Sintaxis básica del lenguaje HTML [opcional].
• Concepto y ventajas/desventajas de programas Common Gateway Interface (CGI) [opcional].
3) Desarrollo del T.P.:
Las tareas a realizar por el programa son:
• Lectura del archivo histórico de visitantes (log).
• Construcción de un arreglo de estructuras con los datos de los visitantes, obtenidos del archivo
log de entrada.
• Cálculo de la frecuencia de visitas de cada usuario.
• Presentación tabular de los datos.
• Destrucción del arreglo dinámico de estructuras.
En cuanto a la presentación de los resultados, ésta debe efectuarse generando un archivo de texto por
redireccionamiento del stdout, y optativamente en formato HTML o por CGI (ver Anexo).
La fuente de datos (entrada) es un log file con las siguientes características:
• Archivo de texto denominado "webhits.log" en el cual cada línea contiene los campos de información del
visitante separados por un carácter delimitador '\n'. Optativamente puede reemplazarse el carácter separador LF de
cada campo por un Pipe ("|"=ALT+124), terminando una línea CSV da con un carácter de fin de línea (LF).
• Los campos de información son los siguientes (en este orden):
1
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
-
User ID . Campo obligatorio.
Apellido del usuario. Campo obligatorio.
Nombre del usuario. Campo obligatorio.
Sector/Empresa . Este campo puede venir vacío.
Fecha y hora de la visita (formato DD/MM/YYYY HH:MM:SS). Puede ser vacío.
Dirección IP (formato AAA.BBB.CCC.DDD). Campo obligatorio.
• Por el mecanismo de generación del log file, se supone no puede existir un carácter separador dentro de
los campos de datos.
Ejemplo de un archivo de entrada para la parte obligatoria (campos delimitados por LF):
001
Perez
Juan
Logística
15/01/2001 16:52:54
10.68.5.77
002
Ugarte
Luís
<campo vacío>
<campo vacío>
10.68.5.75
003
Beccar
María Martha
Caja
18/01/2001 16:52:55
162.55.55.56.
004
Perez
Juan
Logística
15/01/2001 16:52:54
10.87.5.77
005
Perez
Juan
Logística
17/01/2001 16:52:54
10.87.8.7
006
Perez
Juan
Logística
15/04/2001 16:20:47
10.4.5.22
Ejemplo de un archivo de entrada para la parte optativa (campos delimitados por Pipes):
001|Perez|Juan|Logística|15/01/2001 16:52:54|10.68.5.77
002|Ugarte|Luís|||10.68.5.75
2
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
003|Beccar|María Martha|Caja|18/01/2001 16:52:54|162.55.55.56.
004|López|Cecilia|Compras|25/01/2001 1:54:00|10.68.5.15
005|Ugarte|Luís|||10.68.25.75
006|Ugarte|Luís|||10.68.15.7
Nota: Si se decide realizar este punto optativo (con Pipes) puede obviarse el punto obligatorio (campos
separados por LF).
NOTA IMPORTANTE: La longitud de cada campo es desconocida, por lo que debe utilizarse memoria
dinámica para leer una línea completa del archivo (para ambos casos, obligatorio y opcional), y lo mismo
para el arreglo de estructuras.
Forma de invocación:
El programa en modo consola, denominado "visitas.exe", debe ser invocado sin argumentos, y el archivo
de entrada se supone que estará ubicado en el mismo directorio que el ejecutable (por razones de seguridad,
aunque esto presenta ciertas desventajas).
Generales: Debe preverse que el programa funcione de manera controlada ante los siguientes eventos
inusuales:
• No existe el archivo log en la ruta indicada.
• El archivo existe, pero está vacío (no hubo visitantes).
• Memoria insuficiente.
En los tres casos el pograma no deberá interrumpirse abruptamente, sino que desplegará un mensaje de
error al usuario.
4) Entrega del Trabajo Práctico:
a) Deberá presentarse la correspondiente Documentación de desarrollo del TP, incluyendo:
• estructura lógica y funcional del programa desarrollado.
• explicación de las alternativas y estrategias adoptadas.
• reseña sobre los problemas encontrados en el desarrollo del programa y las soluciones
implementadas para subsanarlos.
b) Deberá entregarse los fuentes (implementación y headers) de los programas desarrollados. NO
entregar archivos de códigos objeto y/o ejecutables.
c) Deberá entregarse un archivo script MAKEFILE de compilación que indique cómo deben ser
compilados los códigos fuentes del punto b) mediante el compilador GCC/DJGPP.
d) Debe entregarse un archivo de entrada para poder probar el programa.
3
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
5) Bibliografía:
Debe incluirse la referencia a toda bibliografía consultada para la realización del presente TP: libros, artículos,
URLs, etc. En el caso de libros, citar el código ISBN, la edición y el nombre de la Editorial.
4
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
ANEXO: Detalles sobre partes optativas del TP
Para la realización optativa (archivo HTML) la operatoria responde al siguiente esquema:
Optativamente, a criterio del alumno, la presentación de resultados puede efectuarse generando dinámicamente
una página web mediante un programa CGI, para lo cual el alumno debe disponer de alguno de los siguientes
servidores web de desarrollo: Personal Web Server (P.W.S.) de Microsoft, Internet Information Server (I.I.S.) de
Microsoft, o Apache Web Server de dominio público (los tres productos mencionados cumplen con el standard HTTP
1.0 del N.C.S.A.).
Para la alternativa CGI, la operatoria responde al siguiente esquema:
Para cualquiera de las dos alternativas (archivo HTML o CGI) se debe disponer de un navegador de Internet
(browser), como por ejemplo Internet Explorer (3.0 ó superior), Netscape Navigator (4.0 ó superior), Konqueror u
Opera.
En cuanto a la presentación tabular de los datos, dado que se supone que este programa debe integrarse a un
sitio web corporativo de una empresa, cuyo departamento de Imagen Corporativa ha determinado una serie de normas
de diseño gráfico e integración de contenidos, debe generarse un archivo HTML/página web que responda a las
siguientes características:
•El título de la página web debe ser "Estadísticas de Visitantes".
5
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
• Debe incluirse el logo de la empresa en el margen izquierdo superior (se ajunta archivo GIF, "adobe.gif"),
sin borde, que presente el texto alternativo "Adobe Argentina S.A.", y con un link a la URL:
http://www.adobe.com.
• Toda la tipografía debe realizarse con tipo de letra "verdana" sobre un fondo de color amarillo
(RGB=ffff99). Los títulos deben estar escritos en negrita, cursiva y subrayados con tamaño de letra "5" y color
bordeaux (RGB=993366). El resto de las letras en tamaño "2" (color a libre elección).
• La tabla de visitantes debe estar centrada , y la frecuencia de visitas resaltada en color rojo (RGB=FF0000).
• Debajo de la tabla deben mostrarse dos links a otras páginas: uno a la página anterior
(http://localhost/informatica.htm), bajo la leyenda "[Volver]", y otro para enviar un correo electrónico a la
dirección 7502@fi.uba.ar, bajo la leyenda "[Contáctenos]".
A modo de ejemplo, se presenta prototipo de la página HTML, y a continuación su código HTML:
<html>
<head>
<title>Estadísticas de Visitantes</title>
</head>
<body bgcolor="#ffff99">
<left>
<a href="http://www.adobe.com">
<img src="adobe.gif" alt="Adobe Argentina S.A." border="0" align="left">
</a>
<br>
<center>
<font face="arial" size="5" color="#993366"><b><i><u>Estadísticas de
Visitantes</b></i></u></font>
6
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
<br>
<Br>
<br>
<table align="center" border="1">
<tr>
<th bgcolor="#aaccff"><font size="2" face=verdana>Apellido y
Nombre</font></th>
<th bgcolor="#aaccff"><font size="2" face=verdana>Sector/Empresa</font></th>
<th bgcolor="#aaccff"><font size="2" face=verdana>Visitas</font></th>
</tr>
<tr>
<td align="center"><font size="2" face=verdana>Beccar, María
Martha</font></td>
<td align="center"><font size="2" face=verdana>Caja</font></td>
<td align="center"><font size="2" face=verdana
color="#ff0000"><b>1</b></font></td>
</tr>
<tr>
<td align="center"><font size="2" face=verdana>López,
Cecilia</font></td>
<td align="center"><font size="2" face=verdana>Compras</font></td>
<td align="center"><font size="2" face=verdana
color="#ff0000"><b>1</b></font></td>
</tr>
<tr>
<td align="center"><font size="2" face=verdana>Perez, Juan</font></td>
<td align="center"><font size="2" face=verdana>Logística</font></td>
<td align="center"><font size="2" face=verdana
color="#ff0000"><b>1</b></font></td>
</tr>
<tr>
<td align="center"><font size="2" face=verdana>Ugarte, Luís</font></td>
<td align="center"><font size="2" face=verdana> </font></td>
<td align="center"><font size="2" face=verdana
color="#ff0000"><b>3</b></font></td>
</tr>
</table>
<BR>
<BR>
<BR>
<a href="http://localhost/informatica.htm"><font size="2"
face=verdana>[Volver]</a>
          
<a href="mailto: 7502@fi.uba.ar"><font size="2"
face=verdana>[Contáctenos]</a>
<br>
<br>
</body>
</html>
7
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
El código HTML del template es:
El código HTML del template es:
<html>
<head>
<title>Estadísticas de Visitantes</title>
</head>
<body bgcolor="#ffff99">
<left>
<a href="http://www.adobe.com">
<img src="adobe.gif" alt="Adobe Argentina S.A." border="0" align="left">
</a>
<br>
<center>
<font face="arial" size="5" color="#993366"><b><i><u>Estadísticas de
Visitantes</b></i></u></font>
<br>
<Br>
<br>
<table align="center" border="1">
<!-- COMIENZO DEL TITULO -->
<tr>
<th bgcolor="#aaccff"><font size="2" face=verdana>Apellido y
Nombre</font></th>
<th bgcolor="#aaccff"><font size="2" face=verdana>Sector/Empresa</font></th>
<th bgcolor="#aaccff"><font size="2" face=verdana>Visitas</font></th>
</tr>
<!-- FIN DEL TITULO -->
<!-- ESTE ELEMENTO SE REPITE PARA CADA VISITANTE à
<tr>
<td bgcolor="#aaccff"><font size="2" face=verdana> [Apellido y Nombre]
</font></td>
<td bgcolor="#aaccff"><font size="2" face=verdana> [Sector/Empresa]
</font></td>
<td bgcolor="#aaccff"><font size="2" face=verdana> [Visitas] </font></td>
</tr>
<!-- FIN DEL ELEMENTO -->
</table>
<BR>
<BR>
<BR>
<a href="http://localhost/informatica.htm"><font size="2"
face=verdana>[Volver]</a>
          
<a href="mailto: 7502@fi.uba.ar"><font size="2"
face=verdana>[Contáctenos]</a>
<br>
<br>
8
Alg. y Prog. I (75.02) - Trabajo Práctico Nº 3 - Memoria Dinámica
_______________________________________________________________________________________________
</body>
</html>
Invocación del programa:
En cuanto a la forma de invocación del programa, para la alternativa de archivo HTML basta con ejecutar el
programa "visitas.exe" y el archivo "visitas.htm" deberá ser generado en el directorio actual del aplicativo, el cual
podrá ser visualizado con un navegador de Internet (browser). No olvidarse de refrescar la pantalla para ver los
resultados.
Para la alternativa II (CGI) el programa debe ser invocado desde la ventana de un navegador o bien desde otra
página web de prueba diseñada libremente por el alumno, con un link a la dirección donde se halle el programa CGI en
cuestión:
NOTA: En ningún caso el programa CGI debe recibir parámetros ("por razones de seguridad informática").
[Esto es además una excepción/restricción intencional para no implicar una complejidad excesiva del presente Trabajo
Práctico].
9
Descargar