Da ich einfach mal Bock habe und sehen möchte, was so passiert, eröffne ich hiermit das Mitmachquiz, über dessen Sinn und Nutzen weiterhin hier diskutiert werden kann: http://www.php.de/off-topic-diskussi...eser-site.html .
Bei diesem Quiz kann jeder User von php.de mitmachen und eine eigene Lösung für das gestellte Problem entwickeln. Natürlich können sich auch mehrere User zusammenschließen und an einer gemeinsamen Lösung feilen, sollte das Know-How des Einzelnen für die Aufgabe noch nicht ausreichend genug sein.
Das Ziel dieser Übung soll sein, selbständig eine Lösung für ein gegebenes Problem zu entwickeln und umzusetzen.
Am Ende, nach Ablauf der Abgabefrist, würde ich mich über mehrere unterschiedliche Lösungen freuen, an denen man verschiedene Ansätze für ein und dasselbe Problem analysieren und bewerten kann.
[Aufgabenstellung]
Es soll ein Gästebuch für eine Webanwendung programmiert werden, das sich dadurch auszeichnet, dass es durch wenige Anpassungen eine beliebige andere Datenbank (MySQL-Datenbank, Textdateien, .xml-Dateien, .csv-Dateien, o.ä.) zur Speicherung der Einträge nutzen kann.
Für diese Aufgabe sind mindestens 2 verschiedene Datenquellen zu nutzen.
Gefordert sind pro Gästebucheintrag 2 Angaben, die über ein HTML-Formular von Besuchern der Website eingegeben werden müssen:
Außerdem soll noch das Datum und die Uhrzeit des Eintrags abgespeichert werden. Ein Datensatz besteht also aus 3 Werten (bzw. 4, wenn man Datum und Uhrzeit voneinander getrennt betrachtet). Es soll nur das Schreiben der Daten in die Datenbank und das Auslesen implementiert werden. Eine Löschfunktion ist für diese Aufgabe nicht vorgesehen.
Die Austauschbarkeit der Datenbank sollte so einfach wie möglich für einen Programmierer ausführbar sein.
Betrachtet man eine Datenbank als ein Objekt, dass nicht im geringsten etwas über die eigentliche Anwendung weiß und lediglich Daten abspeichert und festhält, sollte es der Anwendung nicht viel ausmachen, wenn man ein Datenbankobjekt gegen ein Anderes austauscht. Lediglich das Auslesen und das Eintragen der Daten durch die Applikation unterscheidet sich von Datenbank zu Datenbank und sollte dazu angepasst werden müssen, da MySQL-Abfragen zum Beispiel bei einer Textdateien-Datenbank natürlich wenig Sinn machen.
Ein unvorteilhafter Ansatz nutzt Code zum Auslesen der Werte direkt an der Stelle, an der die Werte benötigt werden:
Ein Austausch der MySQL-Datenbank mit z.B. einer .xml-Dateien-Datenbank hätte zur Folge, dass sämtliche Datenbankabfragen in sämtlichen Dateien entfernt und durch entsprechende Abfragen zum Auslesen der Daten aus einer XML-Datei ersetzt werden müssten. Damit erst mal genug zu den Vorüberlegungen!
Welche 2 Datenbanken für diese Aufgabe genutzt werden, bleibt euch überlassen.
In der Abgabe sollte deutlich werden, wie das Austauschen der Datenbank funktionieren soll, also an welchen Stellen der Programmierer beim Austausch erneut Hand anlegen müsste.
Der Sinn dieser Aufgabe besteht darin, für das Thema Schichtenarchitektur einer Softwareanwendung sensibilisiert zu werden. Die Datenschicht soll größtmöglich von der Präsentationsschicht (dem Front-End) und der Logikschicht entkoppelt werden, um einen einfachen Austausch der Datenbank zu ermöglichen. Das muss kein objektorientierter Ansatz sein.
[Der Ablauf]
Ich habe leider keine Erfahrung, wie viel Zeit für die Bearbeitung einer solchen Aufgabe sinnvoll sein könnte, daher will ich einfach mal einen Zeitraum von 1 Monat angeben, in der die Aufgabe gelöst sein muss. Die Abgaben können direkt hier in diesem Thread eingereicht werden, eine andere Möglichkeit sehe ich im Moment nicht. Allerdings sollte die Lösung frühestens 1 Woche vor Ablauf der Frist hier gepostet werden. Im eigenen Interesse sollten andere User diese Lösungen dann nicht einfach abkupfern, sondern so fair sein (auch sich selbst gegenüber) und auf copy & paste verzichten.
Während des Quiz' können natürlich grundsätzliche Fragen zum Thema gestellt werden. Fragen nach Fehlern im Code oder Teillösungen möchte ich aber bitte nicht in diesem Thread finden. Es geht hierbei um Eigenleistung (ob alleine oder wie gesagt in einer kleinen Gruppe), Programmfehler sind also selbst zu lösen. Wer sicht nicht motiviert fühlt, ein Problem ohne Hilfe aus den Programmierforen lösen zu wollen, ist hier falsch und sollte auf eine Teilnahme verzichten.
Standardquellen für aufkommende Fragen sind:
PHP: Hypertext Preprocessor
Wikipedia – Die freie Enzyklopädie
Google
Auch sollten die Programmierforen nicht dazu missbraucht werden, Fragen zu dieser Aufgabe zu stellen. Sämtliche Fragen also bitte ausschließlich und direkt in diesem Thema stellen.
Abgabefrist: 31.08.2010 (frühester Zeitpunkt für die Abgabe: 24.08.2010)
Bei Verbesserungshinweisen zur Aufgabenstellung, Unklarheiten o.ä. bitte einfach posten. Sollte die Abgabefrist zu kurz oder zu lang sein, bitte ebenfalls hier beschweren.
Hinweis: User, die teilnehmen möchten, sollten sich mit einem kurzen Posting hier melden, damit man einen Überblick über die Nachfrage erhält und weitere User sich einfacher mit bereits teilnehmenden Usern zusammenschließen können.
[verspätetes Update]
[Alle Abgaben auf einen Blick]
Bei diesem Quiz kann jeder User von php.de mitmachen und eine eigene Lösung für das gestellte Problem entwickeln. Natürlich können sich auch mehrere User zusammenschließen und an einer gemeinsamen Lösung feilen, sollte das Know-How des Einzelnen für die Aufgabe noch nicht ausreichend genug sein.
Das Ziel dieser Übung soll sein, selbständig eine Lösung für ein gegebenes Problem zu entwickeln und umzusetzen.
Am Ende, nach Ablauf der Abgabefrist, würde ich mich über mehrere unterschiedliche Lösungen freuen, an denen man verschiedene Ansätze für ein und dasselbe Problem analysieren und bewerten kann.
[Aufgabenstellung]
Es soll ein Gästebuch für eine Webanwendung programmiert werden, das sich dadurch auszeichnet, dass es durch wenige Anpassungen eine beliebige andere Datenbank (MySQL-Datenbank, Textdateien, .xml-Dateien, .csv-Dateien, o.ä.) zur Speicherung der Einträge nutzen kann.
Für diese Aufgabe sind mindestens 2 verschiedene Datenquellen zu nutzen.
Gefordert sind pro Gästebucheintrag 2 Angaben, die über ein HTML-Formular von Besuchern der Website eingegeben werden müssen:
- der Name des Autors
- der Text/die Nachricht
Außerdem soll noch das Datum und die Uhrzeit des Eintrags abgespeichert werden. Ein Datensatz besteht also aus 3 Werten (bzw. 4, wenn man Datum und Uhrzeit voneinander getrennt betrachtet). Es soll nur das Schreiben der Daten in die Datenbank und das Auslesen implementiert werden. Eine Löschfunktion ist für diese Aufgabe nicht vorgesehen.
Die Austauschbarkeit der Datenbank sollte so einfach wie möglich für einen Programmierer ausführbar sein.
Betrachtet man eine Datenbank als ein Objekt, dass nicht im geringsten etwas über die eigentliche Anwendung weiß und lediglich Daten abspeichert und festhält, sollte es der Anwendung nicht viel ausmachen, wenn man ein Datenbankobjekt gegen ein Anderes austauscht. Lediglich das Auslesen und das Eintragen der Daten durch die Applikation unterscheidet sich von Datenbank zu Datenbank und sollte dazu angepasst werden müssen, da MySQL-Abfragen zum Beispiel bei einer Textdateien-Datenbank natürlich wenig Sinn machen.
Ein unvorteilhafter Ansatz nutzt Code zum Auslesen der Werte direkt an der Stelle, an der die Werte benötigt werden:
PHP-Code:
<?php
$sql = "SELECT
`author` ,
`text` ,
DATE_FORMAT(`date`, '%d.%m.%Y') as `date_format`
FROM
`table`
ORDER BY
`date`";
$result = mysql_query($sql) OR die (mysql_error());
while ($row = mysql_fetch_assoc($result)) {
?>
<p>
<?php echo $row['author'] . ' - ' . $row['date_format']; ?>
</p>
<p>
<?php echo $row['text']; ?>
</p>
<?php
}
Welche 2 Datenbanken für diese Aufgabe genutzt werden, bleibt euch überlassen.
In der Abgabe sollte deutlich werden, wie das Austauschen der Datenbank funktionieren soll, also an welchen Stellen der Programmierer beim Austausch erneut Hand anlegen müsste.
Der Sinn dieser Aufgabe besteht darin, für das Thema Schichtenarchitektur einer Softwareanwendung sensibilisiert zu werden. Die Datenschicht soll größtmöglich von der Präsentationsschicht (dem Front-End) und der Logikschicht entkoppelt werden, um einen einfachen Austausch der Datenbank zu ermöglichen. Das muss kein objektorientierter Ansatz sein.
[Der Ablauf]
Ich habe leider keine Erfahrung, wie viel Zeit für die Bearbeitung einer solchen Aufgabe sinnvoll sein könnte, daher will ich einfach mal einen Zeitraum von 1 Monat angeben, in der die Aufgabe gelöst sein muss. Die Abgaben können direkt hier in diesem Thread eingereicht werden, eine andere Möglichkeit sehe ich im Moment nicht. Allerdings sollte die Lösung frühestens 1 Woche vor Ablauf der Frist hier gepostet werden. Im eigenen Interesse sollten andere User diese Lösungen dann nicht einfach abkupfern, sondern so fair sein (auch sich selbst gegenüber) und auf copy & paste verzichten.
Während des Quiz' können natürlich grundsätzliche Fragen zum Thema gestellt werden. Fragen nach Fehlern im Code oder Teillösungen möchte ich aber bitte nicht in diesem Thread finden. Es geht hierbei um Eigenleistung (ob alleine oder wie gesagt in einer kleinen Gruppe), Programmfehler sind also selbst zu lösen. Wer sicht nicht motiviert fühlt, ein Problem ohne Hilfe aus den Programmierforen lösen zu wollen, ist hier falsch und sollte auf eine Teilnahme verzichten.
Standardquellen für aufkommende Fragen sind:
PHP: Hypertext Preprocessor
Wikipedia – Die freie Enzyklopädie
Auch sollten die Programmierforen nicht dazu missbraucht werden, Fragen zu dieser Aufgabe zu stellen. Sämtliche Fragen also bitte ausschließlich und direkt in diesem Thema stellen.
Abgabefrist: 31.08.2010 (frühester Zeitpunkt für die Abgabe: 24.08.2010)
Bei Verbesserungshinweisen zur Aufgabenstellung, Unklarheiten o.ä. bitte einfach posten. Sollte die Abgabefrist zu kurz oder zu lang sein, bitte ebenfalls hier beschweren.
Hinweis: User, die teilnehmen möchten, sollten sich mit einem kurzen Posting hier melden, damit man einen Überblick über die Nachfrage erhält und weitere User sich einfacher mit bereits teilnehmenden Usern zusammenschließen können.
[verspätetes Update]
Mit dem Einverständnis der Moderatoren gilt nun für alle Teilnehmer: Für die Abgabe erstellt ihr bitte ein eigenes Thema im Forum OffTopic mit dem Threadtitel-Präfix [Abgabe:Mitmachquiz]
Kommentar