Mai 10 2009

News

Tag: EntwicklungPhoscur @ 21:56

Nein, ich habe nicht aufgegeben, nur weil ich einen Monat nicht geschrieben habe, auch wenn ich weder Ideen für Blogartikel, noch Zeit fürs Coden hatte. Ich war tief im Abiturstress, erst Donnerstag habe ich meine letzte Prüfung hinter mir gelassen, dass weitere folgen ist unwahrscheinlich. Ich warte nun auf meine Ergebnisse, das kann ein wenig dauern, aber sehr froh bin ich trotzdem. Der ganze Schulstress fällt von mir ab. Ich fahre jetzt (morgen) für zehn Tage nach Spanien – Abifahrt.

Danach geht es richtig los. Ich habe quasi jeden ganzen Tag Zeit mich dem Projekt zu widmen. Auch wenn ich nicht den ganzen Tag vor der Kiste hocken werden, wird sich viel tun. Ich bin gespannt, ob ich es schaffe, dass im Sommer schon etwas steht, aber ankündigen werde ich vorsorglich nichts. UGamela und die Phlame Engine bleiben mein liebstes Hobbyprojekt, so schnell ändert sich da nichts.


Apr 04 2009

JavaScript / AJAX: Callbacks umgehen, Verkettung von Befehlen

Tag: Allgemein, EntwicklungPhoscur @ 15:12

Ich beschäftige mich zur Zeit intensiv mit JavaScript, da es mir clientseitig einige Arbeit abnehmen soll.

Beispiel: JavaScript Templateparser

Ich stehe immer noch zu OOP und auch JavaScript untersützt OOP hochgradig, allerdings in einer für PHPler ungewohnten Form: mit Prototypes, ohne Klassen. Überhaupt ist in JavaScript alles ein Objekt oder – noch besser – eine Funktion! Ich habe hier keine Zeit eine JavaScript Einführung zu geben, ich bitte daher um selbständige Fortbildung um diesen Artikel verstehen zu können.

Weiterlesen “JavaScript / AJAX: Callbacks umgehen, Verkettung von Befehlen”


Mrz 02 2009

Fortschritt der Entwicklung, interessante Fehlermeldungen

Tag: EntwicklungPhoscur @ 22:56

Ich dachte ich notiere einfach mal den letzten Fortschritt und verbundene Pleiten, Pech und Pannen.

Mein Pseudo-Mapper ist quasi fertig, das heißt ein sehr wichtiges Grundgerüst steht. Das hat mich einigen Schweiß gekostet, denn mein lokaler Apache ist derweil kaputt gegangen und hat nicht gerade zu meinem “Ah, jetzt gehts”-Denken beigetragen. Ich war das Wochenende am Debuggen um ein wenig Ordnung in mein Klassengewurschtel zu bekommen. Derweil hat sich nicht selten mein Debugger einfach verabschiedet.

Fatal error: Exception thrown without a stack frame in Unknown on line 0

ist mein Lieblingsfehler, direkt nach dem kompletten Absturz. Das bedeutet soviel wie “Beim Aufräumen und somit in den Destruktoren ist etwas schief gegangen”, aber wo genau, das ist meist das nächste Problem herauszufinden.

Parent: child process exited with status 3221225477 -- Restarting.

War die einzige Fehlermeldung, die mir der Apache gab. Ich habe heute erst verstanden, dass dies nichts mit meinem Destruktorproblem zu tun hatte. Es handelt sich um ein momentanes Problem mit dem MySQL Treiber auf Vista. Ich installiere gerade eine Locale Maschine mit Ubuntu, um solchen Problemen zukünfitig aus dem Weg zu gehen (Apache&PHP laufen grundsätzlich besser auf Linux). Eigentlich will ich schon seit Monaten auf ein Linux umsteigen, hatte aber ein paar Startschwierigkeiten und wollte mein Vista nicht ganz aufgeben.

Soviel für heute. Ich denke ich bin eine gutes Stück weitergekommen, nun folgt die Entwicklung des MVC Modells, vor allem zugehörige JavaScript Algorithmen und mein JS-TemplateParser. Schätzen, wann es fertig wird traue ich mich noch nicht, besonders weil mein Abitur bevorsteht.


Feb 24 2009

Design Patterns: Dekorierer (Decorator) [vs. Vererbung]

Tag: AllgemeinPhoscur @ 18:10

Hab ja schon lange nichts mehr geschrieben, greife nun den Gedanken etwas über Design Patterns zu schreiben wieder auf.

Vorerst muss ich darauf hinweisen, dass ich kein Profi bin und hier meine subjektive Meinung vertrete. Dies wird also kein Eintrag wie aus dem Lehrbuch, ich versuche nur etwas auf meine Weise klar zu machen.

Einleitung der GoF: Favorisiere Zusammensetzung vor Vererbung (“Favor object composition over class inheritance”)

Vererbung sollte für jeden, der schon mal ein paar Klassen geschrieben hat, klar sein; Stichwort dazu ist (in PHP) “extends”. Zusammensetzung ist schon ein wenig schwieriger. Ich bin mir nicht mal sicher, ob das auch wirklich die perfekte Übersetzung für Composition ist. Die wichtigste Rolle spielt hier der Dekorierer. Weiterlesen “Design Patterns: Dekorierer (Decorator) [vs. Vererbung]“


Jan 25 2009

Vergleich PHP vs. Python

Tag: AllgemeinPhoscur @ 22:55

PHP und Python unterscheiden sich stark, daher wird dieser Vergleich vor allem auf die Verwendbarkeit für ein Browsergame abzielen.

Weiterlesen “Vergleich PHP vs. Python”


Jan 23 2009

Umstieg auf Python und PostgreSQL

Tag: AllgemeinPhoscur @ 21:47

Ich würde gerne abstimmen und bei Bedarf diskutieren:

Link zum Thema im Forum


Jan 05 2009

MySQL Multi Update

Tag: Allgemein, EntwicklungPhoscur @ 16:56

Ich traue mich jetzt einfach mal einen Artikel über Performance zu verfassen. Ein paar Leute meinten schon ich würde mir viel zu viel Sorgen über Performance und Optimisation machen, dabei möchte ich es doch nur gleich beim ersten Anlauf richtig machen.

Multi Update: Mehrere Datensätze einer Tabelle haben sich geändert und sollen aktualisiert werden. Anstatt nun jede Menge einzelne Queries zu schreiben gibts es nun zwei Methoden dies möglichst schnell ablaufen zu lassen.

Weiterlesen “MySQL Multi Update”


Jan 01 2009

Fortschritt, Probleme: OR-Mapper

Tag: Allgemein, EntwicklungPhoscur @ 17:45

Ich bin nicht untätig in den Ferien, wobei ich mich allerdings eher der Schule widmen sollte, als meinem Projekt hier…

Die letzten Tage habe ich erste Tests meines Pseudo OR-Mappers (ObjektRelational) gemacht und bin auf ein bzw. mehrere Probleme gestoßen, die ich leider nicht so leicht ausräumen kann.

Ich wollte in einem einfachen Ansatz einer ORM ähnlichen Struktur Objekte um Arrays “mappen” und einen Mechanismus einbauen der ein automatisches Update ermöglicht, das heißt Veränderungen in den Objekten würden ohne weiteren Codeaufwand selbstständig in die Datenbank geschrieben.

Dabei sollte das Array im Objekt versteckt (private) werden, die einzelnen Eigenschaften (protected) sollten auf Werte des Arrays referenzieren. Diese PRIVATE <-> PROTECTED Relation ist nicht möglich – was auch logisch erscheint, wenn man darüber nachdenkt. Ich werde mir was anderes einfallen lassen.

Gleichzeitig informiere ich mich über OR-Mapper im Allgemeinen. Und stelle fest, dass mein Entwurf lange nicht alle Fähigkeiten der ganzen Idee deckt. Aber das möchte ich gar nicht. Ich versuche ein leichtgewichtiges Basisgerüst zu schaffen. Ich hoffe bald zu den JS Templates übergehen zu können, aber vorher wird es ein erstes Release geben. Damit etwaige interessierte Entwickler erste Schritte mit dem Aufbau machen können.


Dez 19 2008

Typen von Referenzen in PHP, Objekte löschen

Tag: Allgemein, EntwicklungPhoscur @ 14:59

Wieder was gelernt:

Es gibt in PHP zwei Typen von Objektreferenzen, auch wenn es keine Dokumentation dazu gibt (Wer eine findet bitte sagen..!).

Im Handbuch steht nur: Objekte werden immer als Referenz übergeben

Das stimmt natürlich, nur ist es nicht ganz so einfach. Das Problem fällt allerdings erst auf, wenn man Objekte kontrolliert zerstören will.

$obj = NULL; # (1)

Sollte ein Objekt zerstören, wie unset(). Doch was wenn man vorher

$obj2 = $obj;

gemacht hat? Plötzlich zerstört der erste Befehl (1) nichtmehr, er setzt nur die erste Variable auf NULL. Nun das selbe ein bischen verändert:

$obj2 = &$obj; # & für Referenz sollte eigentlich nicht nötig sein

(1) Führt nun dazu, dass beide Variablen NULL sind. Huch?

Diese Referenzen heißen entweder hard/soft oder echt/unecht, wie auch immer.


Dez 18 2008

JavaScript Template Parser

Tag: EntwicklungPhoscur @ 15:11

Bin eigentlich zur Zeit weniger mit dem Template beschäftigt und dachte, dass ich mir bereits sicher sei, wie ich es lösen würde, doch mir kommt nun eine neue Idee:

Ich werde das Parsen der Templates auf den Client verlegen. Neuladen soll die Seite sowieso nicht mehr, Ajax wird eine große Rolle spielen.

Der Client läd zweierlei Dinge wenn er eine Seite anzeigen soll:

  • Das Template, HTML Code mit Platzhaltern
  • Die Daten als JSON oder XML

Der Browser füllt dann die Daten in das Template. Dabei kann man auch Schleifen für Listen verwenden.

Dabei wird praktischerweise der Server entlastet. Weniger Traffic und schnelleres Seitenladen sind weitere Folgen. Für Widgets, die sowieso oft aktualisiert werden müssen, wird nicht immer wieder das Template neu geladen, sondern immer nur neue Daten eingefüllt.

Dennoch werden einige Dinge nicht einfach zu implementieren. Erstens möchte ich mir nicht alles verbauen, das Spiel, wenn auch minimal ohne JavaScript laufen zu lassen, zumal es immer noch einige Browser gibt, die das nicht können (Handys). Des weiteren muss eine Art zurück/vorwärts-Funktion erstellt werden, da ja das Neuladen der Seite wegfällt.

Ich muss Wege finden, vereinzelte kleine Abfragen schnell durch den Komplex des Spiels zu schicken oder diesen zu umgehen um Zeit und Rechenleistung zu sparen. Dabei dürfen keine Sicherheitslücken entstehen.


« Vorige SeiteNächste Seite »