Neue Programmieraufgaben/Ideen

Vorschlag nach: [HaBo] - Smileys (+- 20 Einträge)

1. Challenge (einfach)
Apache Logs generieren.
Mit echten Useragenten, validen IPs (sowohl v4 als auch v6)
Ausgabe in das übliche Apachelogformat: Log Files - Apache HTTP Server
Code:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

2. Challenge (mittel)
Apache Logs auswerten.
Dabei sollen folgende Statistiken und Angaben erstellt werden:
(n, m sind dabei ein Laufzeitparameter)
-Liste der n häufigsten Useragenten
-Liste der n häufigsten Besucher
-Liste der n häufigsten URLs und Hosts
-Liste der n Stoßzeiten der Größe m (Zeitraum) (Stoßzeit: Zeitraum in dem 25 % mehr Anfragen pro Sekunde bedient wurden, als im Durchschnitt)

3. Challenge (schwer) - evtl. weglassen?
Graphen rendern.
-Pie-Charts für die Listen aus 2.
-Zugriffsstatistikgraph.
Die Graphen können entweder als SVG oder in einem anderen verbreiteten Format (PNG, GIF, JPG, BMP, TGA) ausgegeben werden. Eine Graphenbibliothek darf dabei nicht verwendet werden.

Ich würde dann vorschlagen, dass unter einheitlichen Bedingungen von einer neutralen Person (nicht-Teilnehmer) die Geschwindigkeit aller Programme getestet wird. Der Teilnehmer mit den meisten schnellen Programmen gewinnt. (Wer in allen Kategorien schnellster ist gewinnt, wer in zwei Kategorien schnellster ist=>zweiter Platz usw. usf.)
 
Zuletzt bearbeitet:
wo nimmt man so viele echte User-Agenten
icon12.gif
? Und Random-ips werden sich im generierten Log kaum wiederholen, wogegen real diese deutlich anders verteilt auftreten.
Das Gleiche für URL/Hosts (immer zufällige Strings?).
Das wird sich auch auf die Geschwindigketismessung auswirken - ein langsameres Programm generiert "bessere" Logs. Eins mit "schlechten" Logs ist dafür schnell. Welches ist nun besser?

Teil 2 und Teil 3 wäre aber ok so. Nur bräuchte man eben "realistische" Logs.

Zudem ist das Benchmarken nicht ganz so einfach (Compilerversion, Flags, eingesetzten Maschine + Betriebssystem - das dürfte viel Rumgemeckere geben. Z.B "unter Linux xyz und GCC zyx und 64 Bit ist das viel schneller, als unter ..." ;)).
 
CDW seit wann geht es in den Programmieraufgaben um Benchmarks?
Vermischt du vielleicht meinen "Java ist langsamer als C" Flame mit der Challange? ;)

MfG
Inliferty
 
Weiß gar nicht ob du gestern da warst: Aber schau einfach mal ins Shoutbox Archiv dann siehst du wie die Idee entstanden ist ;-).
 
Ja, die Leute wollen eben unbedingt zeigen, dass ihr Compiler der _schnellste_ ist ;).
Ich würde allerdings dazu tendieren, dass jeder für sich selbst benchmarken kann - eigenes Programm und die "Konkurenz".
Für Streitigkeiten gibt es dann PMs. Und wenn man unbeding beim "benchen" mitmachen möchte, so soll man auch die Compilerflags/usw. mitposten, für die der eigene Code am schnellsten sein soll.

Den größten Unterschied macht sowieso der Algorithmus aus - und der ist nunmal in modernen Sprachen deutlich schneller und einfacher umgesetzt, als in C ;).

PS: andere Ideen sind auch willkommen. Ziel ist es, eine realistische Aufgabe (keine Primzahl/100200 PI-Stellen Rechnung oder Numbercrunching - viele eher Datenverarbeitung und andere typische Tätigkeiten), die man in ein paar Stunden programmieren kann und die sich dann (wenn es unbeding sein muss) auch ohne viel Aufwand (wie es z.B beim HTTP-Server der Fall wäre ;) ) benchmarken lassen.
 
Die Aufgabe mit dem Graphen finde ich intressant.
Jedoch mit Graphenbibliothek?
Ich hätte keine Lust meine fertige Bit-Map in die verschiedenen Formate umzurechnen, bzw. kenne ich den Aufbau von vielen Datei-Formaten garnicht (z.B. TIFF, GIF, PNG)
Oder meinst du mit Graphenbibliothek eher etwas in die Richtung:
CreatePieChart(<Wert1>, <Wert2>, <Wert3>, ...);

OffTopic:
Also um meinen Flame zu widerlegen/beweisen würde ich eine eher unrealistische Aufgabe wählen (Mandelbrot-Menge, Primzahlen, PI, ...)

MfG
Inliferty
 
Zurück
Oben