Jun 23 2009

Fortschritt, PHP und JavaScript, OOP

Tag: EntwicklungPhoscur @ 11:12

Die Entwicklung des (PHP-)Codes schleicht eher voran, als dass es wirklich vorwärts geht. Dafür formt sich eine Idee, die mehr und mehr auf die browserseitige Scriptsprache JavaScript setzt. Ich habe bereits geschrieben, dass ich Templates mit JavaScript parse, nun sollen ganze Inhalte nur mit JavaScript generiert werden. Views des MVC werden in dieser Sprache geschrieben. Dabei muss man aber extrem auf die Sicherheit aufpassen. Clientseitig darf man nur mit Daten arbeiten, die sowieso öffentlich sind. Ein gewisser Arbeitsaufwand bleibt deshalb immer auf der Serverseite hängen, die bei diesem Projekt mit PHP gebaut ist.

Nun verwende ich zu großen Anteilen die zwei verbreitetsten Websprachen, die beide von vielen Leuten verachtet werden, weil sie vor allem von Amateuren verwendet werden.

Besonders JavaScript scheint eine interessante Vorgeschichte zu haben. Vor einigen Monaten, als ich anfing JS zu lernen, kam ich auf D. Crockford und habe mir seine Videovorträge angesehn. Ich habe JS somit direkt OOP gelernt, wie es sich eigentlich gehört. JS ist sehr objekt-orientiert, Crockford nennt sie “ausdrucksstark”. Die genau Übersetzung ist mir unklar, ist aber auch egal, denke ich.

Ich kann diesen Artikel nur empfehlen, notfalls auch übersetzt, für diejenigen die weniger gut Englisch können. Um Englisch kommt man aber beim Programmieren kaum herum und Crockford schreibt und redet eigentlich ein sehr gut verständliches und deutliches Englisch. Auch seine Videos kann ich nur weiterempfehlen, es lohnt sich!

Ich entwerfe also ein kleines Grundgerüst in JavaScript, das mit dem serverseitigen Teil, den ich in PHP geschrieben habe, zusammenarbeitet. Dabei ist vor allem der ganze AJAX-Kram sehr nervig. Da alles asyncron ist, muss man ständig mit Callbacks arbeiten (Man übergibt die Funktion, die ausgeführt wird, sobald der Request abgeschlossen ist und die Daten zur Verfügung stehen), was ständig zu Verschachtelungen führt, die ich eigentlich umgehen möchte.

Derweil feiere ich mein Abi und mache ein wenig Urlaub mit Freunden. Ich werde also nicht permanent hieran arbeiten, aber hoffentlich dennoch vorwärts kommen.


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.


« Vorige SeiteNächste Seite »