PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : jazzrul


jazzrul
13.04.2011, 01:01
Hallo Gemeinde,

habe vor ca 18 Monaten die Pflege eines, auf der gotthummer-source basierenden, Trackers mit geschlossener Gemeinschaft übernommen. Seitdem hunderte von Änderungen gemacht. SQL-Optimierungen, Schleifen-Laufzeiten verbessert, neues AJAX Upload-Formular, AJAX für Shout- u. Teambox, Shoutcast-Anzeige, TS3, etc.
Welche Codebasis ist die hier aktuell "gültige"? Damit ich Patches erstellen kann, mit denen die Community hier etwas anfangen kann und eine Diskussionsgrundlage definiert ist.
Ich würde gerne mit einer Community zusammenarbeiten, statt alleine vor mich hin zu wuseln. Bin zufällig heute über dieses Board gestolpert. Die Source, die ich damals übernahm war leider schon von 2 - 3 Leuten vor mir "bearbeitet" worden, weshalb ich nicht sagen kann, welche Teile hier überhaupt anerkannt, bzw. einigermaßen allgemeingültig sind.

Bin für jede Anregung bezüglich der weiteren Vorgehensweise dankbar.

Gruß
jazzrul

Cerberus
13.04.2011, 06:51
Also ich würde empfehlen, als Basis die Default-NV von Gartenzwerg zu nutzen.
Wenn die Sachen "sauber" sind, passen sie ohne Probleme in ca. 90% der Sourcen :)

Stifler
13.04.2011, 10:06
Der beste Patch meiner Meinung nach für den NV ist, das Teil zu löschen und selbst von Zeile 1 aufwärts einen zu schreiben!

bastelfreak
13.04.2011, 15:02
Kann ich Stifler nur zustimmen. Die NV ist so alt und schlecht geschrieben, da lohnt sich keine Arbeit für.

jazzrul
13.04.2011, 17:33
natürlich kann man das alles, aus heutiger Sicht gesehen, als suboptimal bezeichnen. Nun gab es vor 2-3 Jahren nicht sooo viele Alternativen, die signifikant besser gewesen wären. Also betrachten wir doch einfach die Tatsachen der vorhanbdenen Source, sparen uns die Arbeit, bei 0 anzufangen, nehmen die funktionierenden Teile und verbessern die nicht ganz so tollen Stücke. Dass dies teilweise auch ein neudesign erfordert, ist mir klar und wurde von mir an der ein oder anderen Stelle schon gemacht.
Leider lässt sich die ursprüngliche Intension der Autoren nicht mehr an jeder Stelle nachvollziehen, so dass ich stellenweise erhebliche Verständnisprobleme habe, was da eigentlich wirklich passiert. (Ein Beispiel ist die Art und Weise, wie in der announce.php der Status "connectable" ermittelt wird) Hinzu kommt, dass mir in der praktischen PHP-Programmierung einige Grundlagen nicht wirklich geläufig sind und ich da nur Vermutungen habe (z.B. register Functions, oder scope von Variablen), was mir das logische Nachvollziehen der gewünschten Funktion erschwert.
Ich komme aus der C++ / Perl Ecke und zu dem mir anvertrauten Quellcode, wie die Jungfrau zum Kind. Aber ich bin diese Verpflichtung eingegangen und will sie auch erfüllen. Ich sehe ein großes Potential in der Source-Entwicklung durch eine Community, in der man sich gegenseitig geistig befruchten kann und damit einen synergie-effekt erreicht.

Danke Cerberus für Deine Empfehlung.
Die anderen: Äußerungen ala " alles Dreck und neu schreiben" sind nicht wirklich konstruktiv, ohne das Aufzeigen von Alternativen. Wobei ich tatsächlich fast jede Datei bisher anfassen musste, um grobe Fehler rauszuholen.
Wenn jemand einen Tip für ein vollständiges Grundgerüst hat, das mindestens die gleiche Funktionalität bietet, bin ich dem durchaus aufgeschlossen.

Gruß
jazzrul

bolzen
13.04.2011, 17:42
als grundgerüst kann ich dir standart TBDev empfehlen auf der eigentlich auch die NV Source basiert.

Die source is wesentlich sauberer gecodet und bietet die selbe funktionalität wie die NV nur schneller

gruß aggro

Stifler
13.04.2011, 18:06
Was heißt hier neudesign?
Mit der grafischen Oberfläche hat das ganze überhaupt nichts zu tun.
Die Sourcecode Struktur ist einfach unübersichtlich und die zusätzlichen "Hacks" tun ihr übriges dazu.

connectable:
Da wird mit dem fsockopen Befehl eine Socketverbindung (eine Art Ping) zum user (IP+Port) aufgebaut!
Ist der Port offen (Pong) ist er connectable, kann keine Verbindung aufgebaut werden ist er Unerreichbar!
Auf die gleiche Weise kann man auch überprüfen ob eine Website erreichbar ist!

jazzrul
13.04.2011, 19:00
bolzen: du meinst TBDev.net ?

Stifler: mit Design meine ich bestimmt nicht das Aussehen der Oberfläche :D, ich rede von dem Kram, den ich in Schriftform in meinem Editor bewundern darf, dem Code-Design (den Begriff gibt es tatsächlich). Zu meinem Beispiel: es wird in der announce.php eine Variable $connectable verwendet, deren definition und initialisierung ich nirgens finden kann. Evtl. ist PHP da was besonderes, aber in allen mir geläufigen Programmiersprachen muss ich den Wert einer Variablen erst irgendwo definieren, bevor ich sie verwenden kann, bzw, verlässlich das Vorhandensein eines bestimmten Wertes prüfen kann (in diesem Fall 'yes' oder 'no', da das mit dem "yes/no - enum" der DB korrelliert.) Meine ganz konkrete Frage ist also: Wo wird $connectable mit dem aktuellen realwert initialisiert? Und kann dies auch ausserhalb der betreffenden PHP-Datei geschehen? (Da hätten wir eine der erwähnten Wissenslücken meinerseits, bezüglich Variablenscope).

Auf jeden Fall schonmal Danke für die Beteiligung und Hilfe.

Stifler
13.04.2011, 19:05
Such mal nach einer $sock!

normalerweise

$sock = fsockopen(ip,port,...);
if($sock) {
$connectable = "yes";
fclose();
} else {
$connectable = "no";
}

jazzrul
13.04.2011, 19:14
Danke Stifler.

Da hat wohl einer meiner Vorgänger Mist gebaut und vor dem setzen von $connectable = 'no'; ein if($connectable == 'no') eingebaut.
Ich werde wohl nicht umhinkommen den ganzen Tracker von unten her neu aufzubauen, ohne dass die User das merken (seufz). Bis jetzt ging halt irgendwie, aber es wird immer schwieriger, bei Ungereimtheiten die wahre Ursache zu entdecken.

Da dies hier eigentlich der Thread zum Vorstellen der Person ist, werde ich weitere Kommunikation zu diesem spezifischen Thema in einem dazu eingerichteten Zweig dieses Forums äussrn. Welcher Kanal passt da eurer Meinung am besten?

Stifler
13.04.2011, 19:38
Web-Programmierung-> NetVision

bolzen
13.04.2011, 19:56
ja ich meine TBDev.net

da musst du dir nur einig sein ob du die 09er die multi language aufgebaut ist benutzen willst oder aber die 08er wobei ich die 08er bevorzuge

Bluesteel
14.04.2011, 08:57
Das dafür Zuständige Unterforum ist wie schon Stiffler sagte Webprogrammierung-> NV und falls du noch ein gewisses grundgerüsst suchst dann probier es mit Solstice seine Wc3 confirmen Standart NV sie ist dann schon einmal einen schritt weiter wie die normale Standart NV zu finden ist sie Im download bereich unter NV sourcen ;)

Cerberus
16.04.2011, 11:52
PHP braucht kein Variablen-Init, da die Zend-Engine das erldigt ...

Vorteil -- einfach nen Namen schreiben und verwenden
Nachteil -- unstrukturiert und "Logik-Frei" ...

Ich versuche in meinem neuen Code auch ale Variablen vorher zu initialisieren ...

PS: ich komm aus der echten Coder-Schiene (Assembler, C, Delphi, Pascal) :)

bl0bb
16.04.2011, 13:23
weitere Nachteile:
* Sicherheitsrisiko da man nicht weiß ob die Variable mit dem korrekten Defaultwert initialisiert wird (abhängig von der Serverconf)
* falsche Wertzuweisungen wenn mehrere Skripte dieselben Variablennamen nutzen
* idR Warningflood der Error Log

Also man sollte Varaiblen immer initialisieren. Damit lässt sich so manch unerwartetes Ergebnis vermeiden ;)