Selbstreferenzierende Bäume - klein - einfach - schnell
Immer wieder stellt sich die Aufgabe aus einer Datenbank eine hierarchische Struktur, also einen Baum zu erstellen.
In der Webprogrammierung sind die häufigsten Aufgaben das Erstellen von Strukturen für Produkte, Rubriken, Themen, Berechtigungen (Gruppen in Gruppen), Seitenstrukturen, usw. Die beiden wohl am meisten verbreiteten Arten zur Abbildung von Bäumen in Datenbanken sind die klassischen Parent - Child Bäume und Nested Sets. Nested Sets sind schick, lesend super schnell aber irgendwie sind sie doch meistens zu kompliziert sobald es dran geht den Baum schreibend zu pflegen. Die klassischen Parent - Child Bäume haben dagegen den Ruf zwar einfach pflegbar, aber im lesenden Zugriff (vor allem auf Teilbäume) eher inperformant zu sein. Oft kommen hier rekursive Funktionen zum Einsatz, vor allem um von einem Blatt wieder zurück zur Root zu kommen. Wenn man den Baum aber "nur" aus Referenzen auf eine "flache" Liste der Knoten aufbaut, hat man damit einen schnellen, einfachen und direkten Zugriff auf alle Teilbäume. "Selbstreferenzierende Bäume - klein - einfach - schnell" vollständig lesen
Autor: Jens Giessmann
in DB, PHP
am
Donnerstag, 28. Dezember 2006
um
22:21
Kommentare (0) | Trackbacks (0) PHP5 macht Spaß, und tut auch gar nicht weh!
Laut den Statistiken über die Verbreitung der verschiedenen PHP Versionen auf www.nexen.net laufen immer noch die meisten Server mit PHP4 und nur ~12% mit PHP5!
Ja ich weiß was jetzt kommt: Das liegt ja vor allem an den Providern, die für Ihre Kunden immer noch kein PHP5 bereitstellen. Da ich selber bei einem ISP arbeite kann ich (zumindest für uns) sagen: Das ist nur die Halbe Wahrheit. Wir würden gerne mehr PHP5 Installationen haben aber viele Kunden wollen es nicht. Und da man PHP4 und 5 nicht paralell (als Apache Modul) laufen lassen kann sind eben auch bei uns noch die meisten Server mit PHP4 am laufen. Anfragen von Kunden die von sich aus migrieren wollen kommen so gut wie gar nicht. Lediglich für Neuentwicklungen werden ab und zu 5er Versionen angefordert. Da wird lieber noch ein Upgrade auf PHP 4.4 gemacht (bei dem man eventuell vorhandene Referenz-Parameter Übergaben auch ändern muss) anstatt gleich auf PHP5 zu migrieren. Ich habe oft das Gefühl viele Entwickler haben Ihre bestehenden Applikationen noch nicht mal unter PHP5 getestet um mal zu sehen ob und wo es hakeln könnte, sondern gehen einfach davon aus, dass der Umstieg ganz viel Aufwand macht den dann keiner bezahlen will.... never change a running.... etc. Schaut man sich die Applikationen dann aber mal genauer an, ist das meiste 0815 Code ohne viel OO oder DOM. Das Meiste davon würde bestimmt auch ohne große Umstellung unter PHP5 weiterlaufen. OK es würde ein paar E_NOTICE bzw. E_STRICT Ausgaben mehr geben, das war's dann aber auch schon. Stabilität und Geschwindigkeit sind auch keine Gründe (mehr) die gegen PHP5 sprechen. Security-Bugs werden in PHP5 deutlich schneller behoben als in der 4er Versionen und die Performance der aktuellen 5er Versionen sind auch besser. Hier also noch mal für alle, die es noch nicht mitbekommen haben: PHP5 macht Spaß, und tut auch gar nicht weh!
Autor: Jens Giessmann
in PHP
am
Donnerstag, 14. Dezember 2006
um
21:31
Kommentare (0) | Trackbacks (0) Tags für diesen Artikel: php, programming
s9y embedded in bestehende Seite eingebaut
So, jetzt läuft s9y embedded in den bisherigen handcode.de Seiten funktionert soweit und sieht im Grossen und Ganzen auch so aus, wie ich das wollte.
Ich war überrascht, wie einfach das im Prinzip war. Serendipity scheint eine gute Wahl gewesen zu sein, auch wenn mich das eine oder andere nicht ganz überzeugt. Angenehm überrascht hat mich, die recht gute Strukturierung von s9y, die Installation ging ratzfatz und das Einarbeiten um ein paar kleine Änderungen machen zu können, ging recht schnell. Findet man so ja (leider) nicht in jeder PHP-Applikation ;-) Ich hadere aber noch mit Smarty, was aber nicht an Smarty an sich, sondern an dieser Art Template-Engine im Allgemeinen liegt. Mir ist schon klar warum so eine Template-Engine verwendet wird. Für mich als PHP-Programierer wäre es aber einfacher, praktischer und schneller wenn ich simple PHP-Template Files hätte, über die ich selektiv einfachen Zugriff auf die einzelnen Teile des Outputs hätte. Vor allem wenn s9y wie hier embedded läuft könnte ich dann die s9y Ausgabeblöcke einfacher und besser in die bestehenden Seiten integrieren. Ich weiss zum Beispiel noch nicht genau wie ich die header-Infos und link-Tags für CSS aus den sy9-Templates in mein bestehendes Framework übernehmen kann. Da muss ich mir noch was einfallen lassen. Im Moment wird halt die komplette s9y Ausgabe mit php output-buffering in eine Variable übernommen und an der passenden Stelle im drüber liegenden Framework-Template (reines PHP :-)) ausgegeben. PHP: In "normalen" PHP Templates würde ich einfach mit 2 (oder mehreren) output-buffern die AusgabeTeile in verschiedene Variablen schreiben und diese dann an den entsprechenden Stellen in die Templates einfügen. Was kostet die Ausgabe von Strings?
PHP bietet verschiedene Möglichkeiten mit echo Strings auszugeben in denen Variablen vorhanden sind.
Je nach persöhnlicher Vorliebe oder dem Grad der Faultheit nimmt man die eine oder andere Möglichkeit. - geht doch prima zusammen vermischt mit doppelten Anführungszeichen - concat wegen der Übersichtlichkeit - heredoc - .... Aber was kosten die verschiedenen Varianten und lohnt es sich überhaupt sich über so etwas Gedanken zu machen? Ja, das lohnt sich. Sara Golemon hat dazu einen sehr anschaulichen und lesenswerten Artikel geschrieben. Braucht die Welt noch ein Blog?
Nein wohl nicht. Zumindest wohl nicht meins.
Die Welt kommt sich auch ohne meinen "Senf dazu" zurecht. Warum fange ich dann doch an damit? Gute Frage. So ganz genau kann ich das noch gar nicht sagen. Optimistisch gesagt hoffe ich, dass ich dem Einen oder Anderen auf der Suche nach Informationen behilflich sein kann. Nun ja, wir werden sehen.
Autor: Jens Giessmann
in Allerlei
am
Donnerstag, 7. Dezember 2006
um
22:29
Kommentare (0) | Trackbacks (0)
(Seite 1 von 1, insgesamt 5 Einträge)
|
blog powered by Serendipity