]> git.llucax.com Git - software/sercom-old.git/blob - doc/README
Bugfix.
[software/sercom-old.git] / doc / README
1 Corrector Automático para Taller de Programación I (75.42)
2 Universidad de Buenos Aires - Facultad de Ingeniería
3
4 Este programa requiere el siguiente los siguientes programas y bibliotecas:
5 * php4-cli
6 * php4-imap
7 * php4-pear
8 * php4 PEAR DB_DataObject (1.7.2 o superior) (# pear install -a DB_DataObject)
9 * make
10 * python2.4
11 * python2.4-sqlobject (0.6.2 o superior)
12
13 La base de datos a utilizar es a elección, pero se recomienda SQLite, con la
14 que fue desarrollado y la única probada, por lo tanto los siguientes paquetes
15 son también necesarios en condiciones normales:
16 * sqlite (para crear la base de datos y tareas de mantenimiento)
17 * php4-sqlite
18 * python2.4-sqlite
19
20 En el directorio /etc/sercom se encuentran los archivos de configuración,
21 debería darle una mirada antes de correr el servidor.
22
23 /etc/sercom/log.ini es un poco más complejo y sirve para configurar el nivel
24 de log. El formato está descripto en:
25 http://docs.python.org/lib/logging-config-fileformat.html
26 Se lo provee de una forma bastante razonable, probablemente haya que cambiar
27 la sección [handler_mail] para poner un servidor SMTP y direcciones de mail
28 válidas solamente.
29
30 Los archivos de configuración originales se encuentran en
31 /usr/share/doc/sercom/examples, por si fuera necesario recuperarlos.
32
33 En /var/lib/sercom están los archivos de datos del programa. Contiene:
34 - Makefile de ejemplo ('Makefile' para C y 'Makefile-cpp' para C++).
35 - Directorio 'intentos' donde los intentos de entrega que llegan por mail
36   de los alumnos. Su estructura es:
37   intentos/año.cuatrimestre/curso.ejercicio.entrega/padron.intento
38   dentro de cada directorio están los archivos fuente enviados por el alumno.
39 - Directorio 'ejercicios' donde los datos sobre los ejercicios deben ser
40   guardados, incluyendo los archivos para casos de prueba. Su estructura es:
41   ejercicios/[id]/Makefile
42                   casos_de_prueba/[nombre]/{stdin}
43                                            {stdout}
44                                            {stderr}
45                                            {entradas/[archivo]}
46                                            {salidas/[archivo]}
47   [algo] significa que algo es una variable. {algo} indica que puede no existir.
48   id: es el identificador de ejercicio en la base de datos.
49   nombre: es el nombre del caso de prueba
50   stdin/stdout/stderr: es la entrada estándar, salida estándar y salida de error
51     esperada (la entrada es la que espera el programa a probar y las salidas son
52     las que espera el corrector para saber si la corrida fue correcta).
53   entradas: los 'archivo's de entradas son los archivos que espera tener
54     presente el programa para correr el caso de prueba.
55   salidas: los 'archivo's de salidas son los archivos que espera que genere (o
56     modifique si estaba presente también en entradas) el corrector y con el que
57     serán comparados dichos archivos generados para evaluar si la corrida fue
58     correcta.
59 - Archivo de base de datos: la configuración por omisión espera la base de datos
60   en /var/lib/sercom/corrector.sqlite, con la estructura descripta en
61   /usr/share/doc/sercom/schema.sql. Para crear la base de datos vacía:
62   sqlite /var/lib/sercom/corrector.sqlite < /usr/share/doc/sercom/schema.sql
63   Pero recuerde que también habrá que cargar la base de datos con los datos
64   mínimos para que el corrector funcione (entregas, ejercicios, cursos,
65   docentes, inscriptos, casos de prueba).
66   Para agregar o listas 'objetos' de la base de datos, se puede utilizar el
67   programa sc_dbq, que permite ABMCL sobre la DB de manera simple.
68
69 Por omisión el programa guarda el archivo de log en /var/log/sercom.log.
70
71 Una aclaración sobre el servidor de correo a utilizar. El corrector, al
72 finalizar una entrega, envía un mail a cada alumno avisando qué intento fue
73 tomado como final para corregir. Esto significa que el corrector enviará una
74 ráfaga de N mails (siendo N la cantidad de alumnos que entregaron, generalmente
75 en el orden de los 100 para la primera entrega). Generalmente los servidores de
76 mail tienen una protección y aceptan M conexiones por minuto, siendo M del orden
77 de 50 (claro que puede variar, y mucho).
78 En el caso particular de inetd, esto se puede configurar, agregando un punto '.'
79 y la cantidad máxima de conexiones a aceptar por minuto luego del parámetro
80 'wait' (o 'no wait'). Por ejemplo, una configuración apropiada para utilizar el
81 corrector bajo inetd+exim sería:
82 smtp            stream  tcp     nowait.200      mail    /usr/sbin/exim exim -bs
83 (donde el 200 significa que se aceptan hasta 200 conexiones por minuto)
84
85  -- Leandro Lucarella <llucare@fi.uba.ar>, sáb mar  5 22:16:29 ART 2005