was ist zeitgeist?
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.TRANSCRIPT
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: [email protected]
Twitter: http://www.twitter.com/DirkSonguer
Sonst noch etwas?Noch Fragen?