Die Community zu .NET und Classic VB.
Menü

Weihnachtsausschreibung 2005

 von 

Beschreibung  

Einleitung

Wie im letzten Jahr weihnachtet es auch dieses Jahr wieder bei ActiveVB. Und genau deshalb hat sich das Team dazu entschlossen, erneut eine Weihnachtsausschreibung ins Leben zu rufen. So gibt es auch dieses Mal wieder Aufgaben über die Feiertage, welche mit Bücherpreisen entlohnt werden.

Kurzinfo

  • Titel: Weihnachtsausschreibung 2005
  • Ausschreibungsbeginn: 01.12.2005
  • Einsendeschluß: 31.12.2005
  • Auftraggeber:
  • Preise:
    • Als Hauptpreis ein frei zu wählendes Buch in Höhe von etwa 50 EUR.
    • 2x "Webdienste mit dem .NET-Framework entwickeln"
    • 2x "Von Microsoft VB6 nach Microsoft VB.NET"

Bedingungen

Die Einsendung muss in VB6 oder VB.NET erfolgen.

Neben den Standard-VB-Komponenten und Aufrufen der Windows-API darf im Falle einer VB6-Einsendung folgende Komponente verwendet werden:

Zur Lösung dürfen Auszüge aus unseren Tipps oder aus dem weiteren Angebot von ActiveVB eingesetzt werden, sofern die Quellen genannt werden.

Das Programm sollte unter allen gängigen Windows-Versionen ab Windows 98 laufen. Für Einsendungen in VB.NET sollte die Einsendung auf allen Systemen laufen, auf denen die jeweilige Frameworkversion lauffähig ist.

Weitere Regelungen

Einsendungen müssen per E-Mail an gesandt werden.

Die Themen dürfen im Forum diskutiert werden, Einsendungen werden jedoch bis zum Einsendeschluß geheimgehalten.

Alle Einsendungen dürfen nach Einsendeschluß von ActiveVB veröffentlicht werden.

Preise

Die Einsender werden gebeten, mit ihrer Einsendung gleich die Lieferadresse und den gewünschten Preis anzugeben.

Der Rechtsweg ist ausgeschlossen!

Aufgabenstellung  

Die folgenden Aufgaben stehen zur Wahl. Es muß nur eine dieser Aufgaben gelöst werden.

  • IMAP-Klasse
  • Sanduhr
  • ML-Label

IMAP-Klasse

Das Internet Message Access Protocol (IMAP) ist ein Protokoll, mit dem E-Mails auf einem Mailserver verwaltet werden können. E-Mails bleiben auf dem Mailserver gespeichert, ein IMAP-Client holt sich vom Server nur jene Daten, die gerade gebraucht werden.
Geboten werden sollte eine korrekte Implementierung des IMAP-Protokolls (IMAP4rev1), aktuelle Authentifizierungsmechanismen und die Decodierung von unterschiedlich kodierten Dateianhängen. Natürlich dürfen auch Erweiterungen des IMAP-Protokolls implementiert sein.

Die folgenden RFCs sind sicherlich äußerst hilfreich um eine korrekte Implementierung zu erreichen:

Informationen zu Erweiterungen finden sich über die Suchmaschine des RFC-Editors durch eine Suchanfrage mit dem Begriff "IMAP".

Sanduhr

Die Sanduhr soll ein Ersatz für den Fortschrittsbalken darstellen. Der Sand rieselt aus dem oberen Teil herab und türmt sich im unteren Teil auf. Liegen zwei Sandkörner übereinander, soll das obere Sandkorn nach links oder rechts fallen, je nachdem, wo noch kein Sandkorn liegt.
Das Projekt soll ein Steuerelement mit der gewünschten Funktion enthalten; der Entwickler soll die Größe der Sanduhr selbst festlegen können und die Sanduhr muss sich natürlich gut in unterschiedliche Anwendungen integrieren lassen.

ML-Label

Ziel ist es, ein Steuerelement zu schreiben, welches wie ein Label funktioniert, als Eingabe jedoch einfache Textauszeichnungssprachen (engl. markup language; wie z. B. reduziertes HTML oder eine ähnliche Textauszeichnungssprache wie in unseren Foren) gestattet und dieses auch entsprechend darstellt. Gewünscht sind die Formatierungen fett, kursiv und unterstrichen, Hoch- und Tiefstellung von Zeichen sowie Schriftart- und Farbänderungen innerhalb des Textes.

Die Verwendung des WebBrowser-Steuerelements und des RichTextBox-Steuerelementes ist nicht erlaubt.

Auswertung  

Ermittlung der Gewinner

Es werden alle Einsendungen ausgewertet, die bis Einsendeschluss eingegangen sind. Die Gewinner werden durch die Vergabe von Punkten ermittelt. Jedes der drei Jurymitglieder vergibt 0-50 Punkte. Einsendungen, die nicht auf allen Testsystemen laufen, erhalten einen Punktabzug. 10 Punkte werden auf "Kreativität" vergeben. Hier werden z. B. spezielle Features oder gute Ideen bewertet.

Strukturierung10 Punkte
Verständlichkeit10 Punkte
Eleganz10 Punkte
Kommentierung10 Punkte
Kreativität10 Punkte

Lösung  

Nach schier endloser Wartezeit nun endlich die Auswertung. Uns erreichten insgesamt acht Zusendungen. Allesamt waren in VB6 geschrieben. Sieben Einsender haben sich mit dem ML-Label, einer mit der Sanduhr-Aufgabe befasst.

Wir möchten den Einsendern noch einmal nahelegen, in Zukunft die Regeln zu beachten. So verwendeten einige Einsendungen Fremdcode oder waren erst durch Modifikationen zum Laufen zu bringen. In solchen Fällen haben die Juroren Punkte abgezogen. Normalerweise hätte eine Disqualifikation erfolgen müssen. Aufgefallen ist den Juroren auch, dass die Variablenbenennung oft verwirrend war oder Kommentare teils in englisch, teils in deutsch verfasst waren.

Gewonnen hat Philipp Serrer mit seinem ML-Label. Gefallen hat der gute Parser (XML) und die Ausgabe per GDI+. Schwierigkeiten gab es teilweise beim Laden des Projekts bzw. des Steuerelements, zudem war der Code nicht intuitiv verständlich, obwohl er interessante Funktionen enthielt. Phillip erhält den Hauptpreis: Ein Buch seiner Wahl bis zu einem Wert von 50 Euro.

Zweiter Sieger wurde Andreas Fuchs ebenfalls mit einem ML-Label. Hier war der Code prinzipiell verständlich, wenn es auch Inkonsistenzen bei der Variablenbennenung gab. Bei einem Juror war der Code ohne kleinere Korrekturen jedoch nicht lauffähig. Die Hilfeseite war schön gestaltet. Da Andreas kein Wunschbuch angegeben hat, erhält er "Webdienste mit dem .NET-Framework entwickeln".

Den dritten Platz holte sich Simon Taddiken auch mit einem ML-Label. Auch hier gab es bei einem Juror Schwierigkeiten beim kompilieren, dazu hätte die Kommentierung umfangreicher sein können. Positiv zu erwähnen sind Tokenizer und Parser, die in eine Klasse ausgelagert sind und somit leichter um zusätzliche Tags erweiterbar sind. Simon erhält sein Wunschbuch "Von Microsoft VB6 nach Microsoft VB.NET".

Dennis Nübel erreicht mit seinem Sanduhr-Control den vierten Rang. Gut gefallen hat uns der saubere Code, weniger gut, dass die Sanduhr nicht von alleine laufen kann und nicht gerade hübsch anzusehen ist. Zumden ist die CPU-Auslastung zu hoch. Dennis erhält ebenfalls sein gewünschtes Buch "Von Microsoft VB6 nach Microsoft VB.NET".

Kay Posmyk bekommt für sein ML-Laben den fünften Platz. Gut gefallen hat uns, dass beliebige Zeichenketten für die Tags möglich sind, außerdem ist es das einzige Projekt, das eine Eigenschaften-Seite bietet. Der Quellcode war im Verhältnis zur Leistungsfähigkeit jedoch recht kompliziert, die Kommentierung fast schon zu ausführlich. Kay bekommt "Webdienste mit dem .NET-Framework entwickeln", da sein Wunschbuch leider schon an den dritten und vierten Sieger vergeben wurde.

Leider keinen Preis erhalten Thorsten Kühl, Mathias Hörtnagel und Stefan Ziems mit ihren ML-Labeln, wenn auch der Punktabstand zum fünften Platz gering war. Thorsten hat Fremdcode verwendet, hat aber immerhin seine Quellen genannt. Sein Projekt ist interessant, jedoch ist die Syntax sehr kompliziert, was einen Praxiseinsatz erschwert. Bei Mathias hat uns gestört, dass kein Beispiel mitgeliefert wurde, zudem ließen sich Tags nur bedingt schachteln. Bei Stefan funktionierte Hoch- und Tiefstellen hintereinander nicht richtig, jedoch ist das Projekt übersichtlich gestaltet.

Wir bedanken uns bei allen Teilnehmern und gratulieren den Siegern! Außerdem möchten wir uns noch einmal für die lange Wartezeit entschuldigen, wir geloben Besserung! Wer sich selber ein Bild von den Einsendungen machen möchte, kann sie sich hier herunterladen:

Einsendungen zur Weihnachtsausschreibung 2005