anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 20 Jun, 2019 20:42

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: LOGD 0.9.7 OOP
BeitragVerfasst: Sa 14 Mär, 2015 02:27 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Fr 17 Nov, 2006 20:20
Beiträge: 44
Wohnort: Gera
Geschlecht: Männlich
LoGD: --in-arbeit--
Hallöchen Leute,
ich bin etwas langsamer gewesen als Eliwood, doch auch ich habe seit ca. Ende Januar an einer neueren Version für LOGD 0.9.7 gearbeitet, allerdings auf einer anderen objektorientierten Basis.

Doch bevor ich dazu komme, sehe ich wie viele Jahre ich hier nicht mehr gewesen bin bzw. geschrieben habe.^^ Damals stand ich komplett am Anfang von PHP, als ich mein Specials "golddrachen.php" hier veröffentlicht habe. Jetzt absolviere ich ein duales Studium in der Richung "Praktische Informatik" (4.Sem) und bin auf Arbeit professioneller Webentwickler im E-Commerce Bereich. Daraus folgernd haben sich meine Programmierkenntnisse drastisch erhöht :D
Und dann bin ich aus Langerweile auf mein altes LOGD gestoßen, wollte es auf meiner lokalen XAMPP Umgebung zu laufen bekommen (PHP 5.5.19) und es ging nix. Shit und da dachte ich, hmm wieso setzt du dich nicht ran und versuchst mit deinen Kenntnissen ein neues lauffähiges LOGD 0.9.7 zu schreiben ;)
(Mittlerweile läuft es, da ich via vhosts 2 PHP versionen lokal betreibe. 5.2 und 5.5.19 ^^)

Und hier ist es: Jedoch da ich sehr ausgelastet bin bzgl Studium nicht so weit, wie ich es wollte. xD
Was macht dieses LOGD nun aus:
- kompletter Ansatz in OOP
- basiert auf einem einfachen Klassen/Template/View Prinzip:
-> Klassen für die Logik
-> Template für das Grunddesign
-> Views für die Anzeige
- Bootstraping und Autoloading
-> in der bootstrap.php werden alle benötigten Includes der CORE Klassen gesetzt und alle anderen via autolaoding eingebunden. Daraus folgt, dass JEDE KLASSE überall und ohne weitere
inlcudes eingesetzt werden kann!
- Templates auf CSS-Bootstrapping Basis
-> für spätere mobile Entwerfung des Games habe ich das alte Yarbrough Design neu mittels CSS Bootstrapping umgesetzt und das CSS neu geschrieben (für andere Deisgn dann auch anwendbar)
- Einfacher Erweiterbarkeit
-> Durch Klassen im Ordner "game/classes" können alle CORE Klassen erweitert werden, aber ebenso können dort die eignen Klassen eingefügt werden
-> Es können explizit Module eingebunden werden (die vllt auch dem Schema folgen soltlen, wie es bisher ist)
-> Templateerweiterbarkeit ebenso vorhanden, neue Templates die dem neuen Style folgen, werden ohne Probleme funktionieren
-> Nutzung von jquery als JS Bibliothek, so dass man in einer eignen main.js alle nötigen javaSkripte schreiben kann
-> In den Views müssen hauptsächlich nur noch die Anweisungen für addnav/addcharstat etc stehen, mehr wird dort rein theoretisch nicht benötigt, damit sie funktionsfähig ist.
- htaccess Unterstützung für späteres URL-REWRITING
- automatische Einbindung vom Standard CSS/JS vorhanden (logischerweise ;) )
- eigene Fonts können im jeweiligen Ordner hinterlegt und dann via CSS eingebunden werden.
- Templates basieren auf einer .php Datei, die das HTML als string zurückliefert -> mehr Dynamik in den Templates kann eingebaut werden (z.B. wenn es um Bilder geht)
- komplett dokumentierter Quelltext plus PHPDOC! (in Englisch geschrieben)

Das sollte es für den Anfang gewesen sein.
Bisher habe ich nur das Grundgerüst ohne DB-Unterstützuung fertig (Template hat aufgehalten wie sau -.-)
Jedoch hab ich im Rahmen meines Studiums schon eine Klasse geschrieben, welche ich nur noch minimal anpassen muss :D Wird PHP::PDO basierend sein,
so dass es nicht direkt mysql abhängig ist. ;)

TODO:
- DB-Unterszützung
- Passwörter werden auf eine eigene Weise gespeichert werden (direkte verschlüsselung! plus daraus resultierender Hash)
- Routing umsetzten mittels mod_rewrite und Routing Klasse
-> Bsp: /town/marktet -> index.php?viewfile=town/market
-> die routing klasse wird das dann richtig auflösen, sodass einfach die entsprechende View geladen wird ^^
-> Implementierung einer I18N Klasse (Internationalisierun), damit es einfacher wird das LOGD auf andere Sprachen anzuwenden. Und entsprechende Texte automatisch beim Laden
umgeschrieben werden.
-> todos in den PHPDOC-Kommentaren umsetzen ^^
-> Was sich eben noch ergibt :D

Ziel bei mir ist es natürlich auch ein LOGD zu schreiben, was auf PHP >= 5.5 lauffähig ist und es keinen großen AUfwand ist die alten Erweiterungen/Feautures neu umzuschreiben, damit diese eingebunden werden können (eben hier dann als Klasse :D).
Vllt finden sich ja interessierte oder auch du Eli hast Interesse gemeinsam mitzuwirken :D Wer weiß ^^ Wenn ja, kann ich nen Git Repo einrichten oder SVN xD

Würde mich über das Feedback freuen und heute Abend nach der Leipziger Buchmesse mal schauen, wer so geschrieben hat ^^.

Test-URL mit testcontent xD: http://logd-oop.de.vu/
Source: https://github.com/nedron92/logd-oop

Grüße,
Daniel


Zuletzt geändert von nedron am Mi 08 Jul, 2015 21:59, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LOGD 0.9.7 OOP
BeitragVerfasst: Sa 14 Mär, 2015 13:11 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3919
Wohnort: Basel
Geschlecht: Männlich
Ich hab zwar nicht sowas beabsichtigt mit meinem Post, aber hey, warum nicht, schön dass es noch andere Interessierte gibt.

Schaut interessant aus. Die Frage ist nur, ob ich grossartig mithelfen kann - so extrem wollt ich nicht gehen mit OOP. Kann ich auch gar nicht, ich bin Chemiker, kein Programmierer. Wir könnten aber mal drüber diskutieren, wenn du magst. Ein paar Dinge wollte ich eh stark ändern - charstats zum Beispiel.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LOGD 0.9.7 OOP
BeitragVerfasst: Sa 14 Mär, 2015 13:45 
Offline
Profi
Profi

Registriert: Mo 20 Apr, 2009 00:30
Beiträge: 124
Du weißt aber schon, dass dein jetziges (code)-Design ein einziges Performance-Bottleneck ist?

I18N auf der ToDo aber du verwendest keine mb_* Funktionen, kann nur schief gehen.

Und wenn ich sowas lese:

$this->bbcode_second_pass_code('', '
if(isset($_GET['op']) && $_GET['op'] == 'redirect')
{
$data = $_GET['data'];
$count = count(explode('/',$data));
$direct = '';
for($i = 0; $i < $count-1; $i++) $direct=$direct.'../';

Header('Location: '.$direct.'public/');
}
')

Da sollten die Alarmglocken angehen.

Dein Versuch in allen Ehren, aber sowas sollte man anständig angehen, da du eh erst ein paar Zeilen geschrieben hast, ist der Verlust zu vernachlässigen.

Ein Lotgd-Rewrite sollte unter anderem:

  1. performant
  2. zukunftssicher
  3. sicher
  4. ohne PHP, SQL, JS Kenntnisse anpassbar und erweiterbar

sein.

Kohana zu klonen, ist da schon mal der falsche Ansatz.

Trotzdem noch viel Erfolg :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LOGD 0.9.7 OOP
BeitragVerfasst: So 15 Mär, 2015 19:24 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Fr 17 Nov, 2006 20:20
Beiträge: 44
Wohnort: Gera
Geschlecht: Männlich
LoGD: --in-arbeit--
Hallöchen,
also Kritik entgegengenommen und soweit verstanden.

Nur frage ich mich, wo der bottleneck bitte ist? Wo ist denn der Performance-Einbruch?
Nagut, stimmt schon - multibyte sollte man bei I18N verwenden - da ja alles im prototypen verläuft zurzeit, hab ich da am Anfang nicht gedacht :D Argh, das ärgert mich gerade ein wenig ^^

Zum Codeauszug -> Jap, das war von Anfang an überarbeitungswürdig, nur fällt mir keine bessre Alternative ein (außer direkt alles über mod_rwrite abzuwicklen bei sowas) /:. Der Gedanke ist ja, dass man umgeleitet wird, sofern man irgendwie versucht direkt außerhalb des "public" Bereiches darauf zuzugreifen^^.

Zu den anderen Punkten: 1-3 ist ein MUSS, das ist wahr. Nur sehe ich den Punkt 4 minimal anders. Zumindest Grundkenntnisse sollten in PHP vorhanden sein - aber das ist nur meine Meinung. So ganz ohne PHP Kenntnisse, hm, wie stellt man sich dann eine Erweiterbarkeit vor (außer zum Beispiel eben Templates oder Textsachen - da weiß ich nicht was du so dir dabei denkst? ^^)

Und naja Kohana klon ich ja nicht direkt xD Es ist nur so, dass das autoloading eine Sache ist, die Kohana da (meiner Ansischt nach) gut gelöst hatte. :D Natürlich könnte man sich eigene Gedanken amchen (Versuche gabs auch, nur hat es nicht so geklappt, wie ichs wollte. /: Das war noch unperformanter). Was mich natürlich selber gerade nervt, dass ich bisher kein Caching eingebaut habe, denn sowas ist auch zum Beispiel Pflicht :D
Da ich merke, dass du dich da doch gut auskennst - was wäre dein Vorschlag das autoloading umzusetzen? Würde mich natürlich über jede Hilfe freuen. :)


und @Eli
Klar können wir gerne machen, sobald ich wieder Zeit habe. Nächste woche sieht es mau aus (blöde Projektarbeiten im Studium sind nervtötend -.-, obwohl sie natürlich auch nützlich sind xD)

Grüße und Danke :)

NACHTRAG: @Bathory Okay, habe gerade deinen Post beim Thema von Eli gelesen :D Ich glaube ich versteh was du meinst, mit ohne Kenntnisse erweiterbar. Das ist natürlich dann eine ganz feine Sache. Muss eben nur sehr viel in die Db unter anderem ausgelagert werden. Aber da kommt man ja ohnehin nicht drumherum xD


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LOGD 0.9.7 OOP
BeitragVerfasst: So 15 Mär, 2015 21:51 
Offline
Profi
Profi

Registriert: Mo 20 Apr, 2009 00:30
Beiträge: 124
nedron hat geschrieben:
Nur frage ich mich, wo der bottleneck bitte ist? Wo ist denn der Performance-Einbruch?


1) bei jedem Aufruf werden alle module geladen, das widerspricht dem Prinzip des Lazy Loading. Man sollte nur Module laden, die auch gebraucht und benutzt werden.
2) Deine auto_load (diese find_file ist ein echter Performance-Alptraum xD) und load_modules sind extrem unperformant, da es mehrere IO-Ops gibt und string Operationen. Und das beim laden von jeder Class / Module bei jedem Request.

Gerade die IO-Ops machen sich erst negativ bemerkbar, wenn viele Spieler online sind und lassen sich somit beim entwicklen schlecht als Bottleneck erkennen.

nedron hat geschrieben:
Der Gedanke ist ja, dass man umgeleitet wird, sofern man irgendwie versucht direkt außerhalb des "public" Bereiches darauf zuzugreifen^^.


Ordner, mit Dateien welche nicht direkt aufgerufen werden dürfen sollten eine .htaccess mit folgendem Inhalt haben:

$this->bbcode_second_pass_code('', 'Order deny,allow
Deny from all')

Das lässt sich auch nicht umgehen.

nedron hat geschrieben:
So ganz ohne PHP Kenntnisse, hm, wie stellt man sich dann eine Erweiterbarkeit vor (außer zum Beispiel eben Templates oder Textsachen - da weiß ich nicht was du so dir dabei denkst? ^^)


Um ein CMS zu verwenden muss man auch keine PHP-Kenntnisse haben und trotzdem kann der Laie damit seine Seite nach seinen Wünschen erstellen.
Module und Plugins werden natürlich durch Entwickler zur Verfügung gestellt.

nedron hat geschrieben:
was wäre dein Vorschlag das autoloading umzusetzen? Würde mich natürlich über jede Hilfe freuen. :)


An Performance nicht zu schlagen, ist der PHP eigene Autoloader (bei der Verwendung von Namespaces)

$this->bbcode_second_pass_code('', 'spl_autoload_extensions(".php");
spl_autoload_register();//ohne Argumente')

nedron hat geschrieben:
NACHTRAG: @Bathory Okay, habe gerade deinen Post beim Thema von Eli gelesen :D Ich glaube ich versteh was du meinst, mit ohne Kenntnisse erweiterbar. Das ist natürlich dann eine ganz feine Sache. Muss eben nur sehr viel in die Db unter anderem ausgelagert werden. Aber da kommt man ja ohnehin nicht drumherum xD


Alles andere wäre aber nicht mehr zeitgemäß :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LOGD 0.9.7 OOP
BeitragVerfasst: Mo 16 Mär, 2015 20:50 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Fr 17 Nov, 2006 20:20
Beiträge: 44
Wohnort: Gera
Geschlecht: Männlich
LoGD: --in-arbeit--
Zitat:
1) bei jedem Aufruf werden alle module geladen, das widerspricht dem Prinzip des Lazy Loading. Man sollte nur Module laden, die auch gebraucht und benutzt werden.
2) Deine auto_load (diese find_file ist ein echter Performance-Alptraum xD) und load_modules sind extrem unperformant, da es mehrere IO-Ops gibt und string Operationen. Und das beim laden von jeder Class / Module bei jedem Request.


Oh mist, ja das stimmt allerdings. Wenn ich so darüber nachdenke, da ahst du allerdings recht ^^. Steht auf der Todo Liste ;)

Zitat:
Ordner, mit Dateien welche nicht direkt aufgerufen werden dürfen sollten eine .htaccess mit folgendem Inhalt haben:


Okay, klar - manchmal kommt man aus Berufskrankheit nicht mehr auf die einfachen Sachen :bash:

Zitat:
Um ein CMS zu verwenden muss man auch keine PHP-Kenntnisse haben und trotzdem kann der Laie damit seine Seite nach seinen Wünschen erstellen.
Module und Plugins werden natürlich durch Entwickler zur Verfügung gestellt.


Das stimmt, ich habe schon so einige Ideen, sofern ich Zeit habe und meine Datenbank.Klasse eingebunden habe xD Und der PHP Autoloader genommen wird^^ (Das wird ein Spaß allen Klassen den Namespace zu geben xD).
Das heißt, ich muss auch die Struktur verändern, weil es darauf ausgelegt war - das erweiterte Klassen des Cores im game Ordner sind und die Grundstruktur si erweitern können, ohne die Core-Klassen direkt anzufassen. Da lass ich mir noch was einfallen ^^.

Zitat:
Alles andere wäre aber nicht mehr zeitgemäß :)

Das ist wahr, ich meine Module hätte ich eh ausgelagert :D Aber so weiß ich, was alles ca ausgelagert werden kann. ^^ Grob geschätzt XD


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: LOGD 0.9.7 OOP
BeitragVerfasst: Di 07 Jul, 2015 09:16 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Fr 17 Nov, 2006 20:20
Beiträge: 44
Wohnort: Gera
Geschlecht: Männlich
LoGD: --in-arbeit--
Es ist etwas länger her, aber da ich mit Studium/Arbeit beschäftigt war - hatte ich weder Lust noch Zeit daran weiter zu arbeiten (bzw. nicht viel).
Den aktuellen Stand wird es vermutlich heute Abend auf github geben - der Link wird dann noch ergänzt.
Wer mir mithelfen möchte, kann sich auch gerne mal melden.
Ich hab eine komplette Umstrukturierung des Codes im Kopf und würde gerne mit jemanden mal diskutieren.
Würde mich über Unterstützung freuen :)

Viele Grüße

EDIT: Git-Repo hinzugefügt. Siehe ersten Beitrag


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum