Hi. Ich bin neu hier... Ich studiere seit Kurzem in Paderborn Informatik und habe mal ein paar Fragen an euch. Im Sommer nächsten Jahres wird in Deutschland die zentraleuropäische Informatik-Olympiade ausgerichtet und ich werde wohl für die Auswertung der Programme der Teilnehmer verantwortlich sein. Zur kurzen Erläuterung: 40 Teilnehmer werden an zwei Tagen jeweils 5 Stunden lang versuchen Informatik-Probleme zu lösen. Die Aufgaben sind so konstruiert, dass es darum geht Algorithmen für bestimmte Probleme zu finden und sie korrekt zu implementieren. Bei jedem Problem müssen Eingabe-Daten aus einer Datei gelesen und die Ausgabe in eine Datei geschrieben werden. Zu jeder Aufgabe gibt es 10 Testfälle, welche die Programme selbstständig lösen können sollen (dafür gibts dann Punkte). Ich denke, das reicht fürs erste an Erläuterung (näheres bei Interesse unter http://olympiads.win.tue.nl/ioi/ - Aufgaben findet man z.B. unter http://olympiads.win.tue.nl/ioi/ioi2001/contest/index.html) Wie gesagt, ich werde wohl für die Auswertung verantwortlich sein. Die Auswertung soll vollständig automatisch und parallel auf mehreren Computern stattfinden. Abgesehen von der Parallelität läuft es schon ganz gut, aber ich suche noch Experten-Rat auf einigen anderen Gebieten: 1) Die Teilnehmer programmieren wahlweise unter Linux oder unter Windows. Wie sammelt man am geschicktesten (und natürlich voll automatisch) die Dateien ein? Ich habe an ssh bzw. scp gedacht, habe da aber mit Windows bedenken... Außerdem scheint scp kein Passwort als Parameter zu wollen, sodass man seinen Public-Key auf alle Rechner bringen muss. Das ist nicht ganz einfach. Weiterhin soll es für die Auswertungssoftware einfach sein, die Daten von einem Rechner zum anderen zu kopieren, für die Teilnehmer aber unmöglich. 2) Die Rechner müssen nach dem ersten Wettbewerbs-Tag komplett wieder in ihren Ursprungszustand versetzt werden. Hat einer Erfahrungen mit Klon-Software? Was würdet ihr empfehlen? Evtl. was kostenloses? Es wäre gut, wenn die Software sowohl Linux- als auch Windows-Partitionen unterstützt und den Bootmanager installieren kann. Wie macht man die Nacharbeiten (IP-Adresse, Hostname, User anlegen, ...) am geschicktesten? Perl-Skript? Alternativ könnte man bestimmt vieles davon zentral erledigen (DHCP, Domäne, ...) aber davon habe ich noch wenig wissen. 3) Wie stellt man sicher, dass die Teilnehmer während des Wettbewerbes nicht miteinander kommunizieren können? Um drucken zu können, sind wir durchgängig auf das Netzwerk angewiesen, d.h. wir können nicht die Switches ausschalten. Gibt es da Hardwarelösungen? IP-Tables/Gateway-Konfigurationen auf Clientseite können wir wegen Windows-Clients wohl nicht nutzen. Ich habe an das loggen des Traffics mit tcpdump gedacht, aber das finde ich nicht so 100%ig... 4) Wir verhindern mit einem Kernel-Modul, dass die Programme der Teilnehmer bei der Auswertung über das Netz kommunizieren können oder nicht erlaubte Dateien öffnen. Zusätzlich laufen die Programme in einem chroot-jail. Es wäre wünschenswert, wenn die Programme was den Speicherkonsum betrifft, beschränkt werden könnten. Hat da einer Erfahrungen mit? Was mit Kernel 2.2.x ganz gut funktioniert, hat unter Kernel 2.4.x anscheinend keine Wirkung. (setrlimit(2)) 5) Was würdet ihr für eine Distribution empfehlen? Es ist wichtig, dass sie gute Internationalisierung enthält und nicht allzuschwer zu administrieren ist... So, das waren jetzt eine Menge Fragen. Viele der Fragen lassen sich auf die Frage nach gescheiter Netzwerkadministration zurück führen. Hat einer interessante Literatur-Tipps / Links diesbezüglich? Ich werde auf jeden Fall mal zum nächsten Treffen in Paderborn kommen und freue mich, euch kennen zu lernen. Habt ihr einen bestimmten Platz im Pub, wo ihr immer sitzt? Oder erkenne ich euch an den thinkgeek.com-T-Shirts? Dominic
Teilnehmer (2)
-
Dominic Battre
-
Florian Lohoff