Was ist Zeitgeist?

Preview:

DESCRIPTION

Ich entwickle mit ein paar Freunden und Ex-Kollegen seit Anfang 2007 browserbasierte Onlinespiele und Webapplikationen. Das Herzstück dabei ist ein auf Basis von PHP selbst entwickeltes Framework, das uns bei der Entwicklung unterstützt (Zeitgeist). Die Entwicklung (und anderes) wird auf unserem Blog www.zeitalter3.de dokumentiert.

Citation preview

Und andere Erklärungen, was wir so in unserer Freizeit tunWAS IST ZEITGEIST?

Lange AntwortDie zwar kurz aussieht, aber eine lange Geschichte zusammenfasst

Anfang 2007 saß ich mit zwei Kollegen meiner ehemaligen Agentur in einem Cafe und äußerte die dummen, wie auch folgenschweren Worte: „Lasst uns doch mal ein Browsergame schreiben“.

Retrospektiv etwas größenwahnsinnig, aber das kann auch mal gesund sein.

Ich entwickle mit ein paar Freunden und Ex-Kollegen seit Anfang 2007 browserbasierte Onlinespiele und Webapplikationen.

Das Herzstück dabei ist ein auf Basis von PHP selbst entwickeltes Framework, das uns bei der Entwicklung unterstützt (Zeitgeist).

Die Entwicklung (und anderes) wird auf unserem Blog www.zeitalter3.de dokumentiert.

Kurze AntwortDie nur so aussieht, als wäre sie länger als die Lange Antwort

„Weil ich es kann!“

Einmal Entwickler, immer Entwickler

5-10 Stunden die Woche sind mehr als genug, um ordentlich Schaden anzurichten

Nur einmal Zeit haben das „ideale Framework“ zu bauen

Wozu das alles?„Kann es sein, dass du zu viel Freizeit hast?“

Bild durch Klicken auf Symbol hinzufügen

Ziele des FrameworksWas wäre, wenn ich mein ideales Framework zusammenstellen könnte?

Framework

Ziele des FrameworksTrennung von Framework- und Projektcode

Framework

Projektcode

Ziele des FrameworksTrennung von Projektcode und Präsentationsschicht

Framework

Projektcode

Präsentations-schicht

Ziele des FrameworksTransparenter Eingabefilter

Framework

Projektcode

Präsentations-schicht

Eingabefilter

Ziele des FrameworksTransparente Fehlerbehandlung

Framework

Projektcode

Präsentations-schicht

Eingabefilter

Fehlerbehandlung

Ziele des FrameworksNachrichten- und Objektsystem

Framework

Projektcode

Präsentations-schicht

Eingabefilter

Fehlerbehandlung

Nachrichten- und Objektsystem

Ziele des FrameworksCaching durch die Datenbank

Framework

Projektcode

Präsentations-schicht

Eingabefilter

Fehlerbehandlung

Nachrichten- und Objektsystem

Datenbank-Cache

Framework

Projektcode

Präsentations-schicht

Eingabefilter

Fehlerbehandlung

Nachrichten- und Objektsystem

Datenbank-Cache

Ablaufsteuerung

Ziele des FrameworksSinnvolle Ablaufsteuerung

Was ist davon umgesetzt worden?

?

Debug-Nachrichten

Fehlerbehandlung

Profiling (Code, SQL)

Function Guarding (Tracing)

Applikationsabbild in der Datenbank speichern (Trace der Applikation z.B. zur Dokumentation von Fehlern)

Debugging-Klasse

Der Eventhandler übernimmt die Ablaufsteuerung

Einzelne Aufgaben sind Aktionen

Aktionen sind in Modulen gesammelt

Übernimmt Rechteverwaltung, Sicherheitsmaßnahmen und Konfiguration

Kann durch Nutzereingaben oder durch die Applikation angestoßen werden

Ablaufsteuerung

Globale Nachrichtenklasse für Textnachrichten

Globale Objektklasse für beliebige Objekte

Beide durch Function Guarding überwacht

Können mit Typen versehen werden

Transparent in der Datenbank speicherbar

Objekt- und Nachrichtensystem

Eingabefilter für GET, POST und COOKIE

Wird zwingend vom Eventhandler aufgerufen bevor der Applikationscode ausgeführt wird

Eingaben werden gegen Erwartungswerte geprüft (Regexp, Static, Auswahl an Typen)

Eingabefilter

Ein Benutzer hat Rechte für einzelne Aktionen

Rollen sind Sammlungen von Rechten

Projektabhängig frei definierbare Benutzerdaten

Stellt Funktionalitäten bereit (Login, Logout, Anmeldung, Ändern der Nutzerdaten, ..)

Nutzerverwaltung

Generisches System für Konfigurationen

Grundlage sind .ini-Dateien

Wird genutzt für Modul- und Aktionskonfiguration, Eingabefilter, Lokalisierung, ..

Symbolische Links zwischen den Konfigurationen

Werden in der Datenbank gecached

Konfigurationsverwaltung

HTML Template-System, basierend aufDreamweaver-Templates

Datenserver (Events mit XML / JSON Output)

Datenbank-Abstraktion für MySQL

Formular-Handler

Sonstige Nettigkeiten

Ziele des FrameworksBenutzbares Framework: check!

Framework

Projektcode

Präsentations-schicht

Eingabefilter

Fehlerbehandlung

Nachrichten- und Objektsystem

Datenbank-Cache

Ablaufsteuerung

ZeitgeistSchichtenmodell eines Zeitgeist-Projekts

Datenbank

Framework - Kern

Framework - Module

Applikation - Arbeiterklassen

Applikation – Module

Präsentationsschicht

ZeitgeistSchichtenmodell eines Zeitgeist-Projekts

Datenbank

Framework - Kern

Framework - Module

Applikation - Arbeiterklassen

Applikation – Module

Präsentationsschicht

Durchgängiger Einsatz von PHPdoc

Unit Tests (SimpleTest, für Framework und Applikation)

Automatisierte Applikationstests (Serenity)

Etwa alle 3 Monate 1 Monat nur für Refactoring

SVN („Check in early and often“)

Best Practices

Aptana (PHP IDE)

Dreamweaver (HTML- / Templates)

MySQL GUI Tools

SVN + Tortoise

Serenity

MS Office (Word, Excel, Visio)

Tools

Absolut kein Druck (Go Live = „When it‘s done“)

Der Weg ist das Ziel

Das alles könnte auch Vaporware sein, wer weiß?

Die bittere Pille„Hey, wieso sehe ich noch nichts von dem Framework oder dem Spiel?“

Blog: http://blog.zeitalter3.de

Mail: dirk@zeitalter3.de

Twitter: http://www.twitter.com/DirkSonguer

Sonst noch etwas?Noch Fragen?

Recommended