Programmierwettbewerb, Runde 2

vom 1. January 2009

Da der erste Programmierwettbewerb so großen Andrang hatte und ich schon mehrfach angesprochen wurde, ob es denn nicht einen zweiten Teil geben wird, habe ich mir wieder eine kleine Programmieraufgabe ausgedacht. Ideal also, um die neuen Vorsätze fürs neue Jahr auf die Probe zu stellen und das Wochenende "sinnvoll" zu nutzen :-)

Die Aufgabe (ca. 2-4 Stunden Aufwand)

Es gilt, einen Chat-Client zu programmieren, der mit einem von mir gestellten Chat-Server kommunizieren kann. Die Programmiersprache ist frei wählbar, solange sie unter Linux, OSX und Windows interpretiert oder compiliert werden kann. Es dürfen alle eingebauten Features der gewählten Programmiersprache verwendet werden, jedoch keine externen "fertigen Lösungen". Eine Socket-Lib, GUI-Toolkit o.ä. ist natürlich erlaubt.

Der Chat-Client sollte eine Eingabemöglichkeit haben, um Befehle und Chatnachrichten an den Server zu schicken. Zudem sollte er einen Textbereich o.ä. besitzen, um Statusnachrichten und Chat-Nachrichten darzustellen. Eine sich aktualisierende Liste mit den aktuellen im Chat befindlichen Usern ist nicht notwendig, macht aber mehr her :-)

Bewertet werden: Features, Codedesign, Nutzung der Sprachfeatures und Usability.

Der Server

Der Chat-Server ist unter dem Host "aaron-mueller.de" mit dem Port "2009" erreichbar. Der Server kann mit Befehlen - ähnlich wie ein IRC-Server - gesteuert werden. Sendet der Client bspw. den Befehl "/quit" an den Server, trennt dieser die Verbindung zum Client. Weitere Befehle sind "/nick NeuerBenutzername" um den Benutzernamen zu ändern und "/users" um alle im Chat befindlichen User auszugeben. Alle Statusnachrichten, die vom Server kommen, haben einen *(Stern) am Anfang. Die Kommunikation läuft über PlainText-Nachrichten.

Am besten ist es, wenn man sich mit dem Server zuerst mit Telnet oder einem anderen Tool vertraut macht, und dann an die Programmierung geht.

Ziel

Jeder der am Sonntag den 11.01.2009 um 19:00 Uhr mit seinem eigenen Chat-Client in den Chat kommt und seinen Code per E-Mail an mail@aaron-mueller.de abgibt, hat die Aufgabe gemeistert. (Wer an dem Sonntag nicht kann, macht natürlich trotzdem mit :-) Der Gewinner erhält von mir eine Überraschung!

Ich freue mich über jeden Beitrag! Viel Erfolg!

Nachtrag: Ich habe noch ein paar kleinere Bugs im Server korrigiert. Danke an Marc und Florian fürs Testen und Bugs finden.

delicious bookmark del.icio.us,


Kommentare


Thomas am 3. January 2009
Schade, kann leider aus zeitlichen Gründen nicht mitmachen. Höchstens es wird auch ein Telnet-Wrapper akzeptiert :D
Beim nächsten Wettbewerb bin ich aber sicher wieder am Start.

nougad am 4. January 2009
Erstmal: Coole Sache! Bin natürlich dabei

Paar kurze Anmerkungen: Evtl. wäre es nicht schlecht wenn die motd und das User-Listing vom Rest abgegrenzt wird. Zudem kann man sein Nick in alles umbenennen. (Könnte spätestens zum Problem werden wenn der Nick mit * beginnt oder wenn es schon ein User mit dem Namen gibt (dann bekommt nur eine Connection die Nachrichten))

Und was mich noch interessieren würde: Muss die Lösung auf Linux, Unix UND Windows laufen? Weil du oben geschrieben hast es soll darauf interpretiert und compiliert werden.

Ruben am 6. January 2009
Geile Idee!

Bin ich dabei, hoffe ich packe es zeitlich. :)

Uwe K. am 10. January 2009
Hab meinen Client gestern an Aaron geschickt :)

rocartiaree am 2. November 2009
An elevator or lift (in British English) is a vertical transport [url=http://www.jindaofloors.com][b]raised floor[/b][/url] vehicle that efficiently moves people or goods between floors of a building. They are generally powered by charged motors that either drive traction cables and counterweight [url=http://www.jindaofloors.com][b]raised floor[/b][/url] systems, or concentrate hydraulic fluid to raise a cylindrical piston.Because of wheelchair access laws, elevators are often a legal sine qua non in new multi-story buildings, especially where wheelchair ramps [url=http://www.jindaofloors.com][b]raised floor[/b][/url] would be impractical.

Kommentar schreiben