Tag: "madcats.welt"

Einige werden sich fragen, warum ich als primärer PHP- und C#-Entwickler nun über eine Java-IDE schreibe: Seit Version 6.5 hat Netbeans eine offizielle PHP-Unterstützung. Zwar bieten das viele Entwicklungsumgebungen, aber wirklich überzeugen konnte ich mich bisher keine. Zumal mein geliebtes UE Studio teilweise auch entsprechende Funktionen bietet.

Netbeans dagegen gefiel mir auf anhieb. Es ist klar strukturiert, nicht überfrachtet und hat eine funktionale grafische Oberfläche. Dazu beherrschaft die Code-Vervollständigung sogar noch CSS und Javascript – bei letzterem werden sogar Browser-Kompatbilitäten der verschiedenen Methoden angezeigt.

Plug-Ins sind für nahezu alle wichtigen Zwecke vorhanden, egal ob C/C++, Ruby, SOA oder CVS/SVN. Außerdem lassen sie sich bequem über das GUI auswählen bzw. verwalten.

Die PHP-Unterstützung ist stellenweise noch etwas holprig. So bietet z.B. das SVN-Modul noch keine Möglichkeit, ein neues Projekt direkt aus einem Checkout zu erstellen. Und es gesellen sich noch ein paar kleinere Bugs dazu. Dennoch kann ich nur empfehlen, Netbeans 6.5 zumindest auszuprobieren. Mit etwas Feinschliff ist genug Potenzial verhanden, eine der besten PHP-IDEs anzubieten. Weiter so, Sun!

Ich habe mich dazu entschlossen, die Weiterentwicklung von Ruby und vor allem Sapphire in Netbeans zu übernehmen. Den bereits vorhandenen Code von Sapphire habe ich gelöscht und das Projekt neu begonnen. Meine bisherigen Konzepte haben sich schnell als nicht praktikabel herausgestellt.

Manchmal hätte ich große Lust, PHP zum Teufel zu jagen und alles mit C# bzw. ASP.NET zu machen, aber ein Windows-Webserver kommt definitiv nicht in Frage. Hierzu werde ich in den nächsten Tagen noch etwas ausführlicher schreiben.

Änderungen gegenüber der Alpha 2:

  • Klasse Config:
    1. Methode delVar() entfernt
    2. Methode delete() hinzufügt:
      Vereinheitlicht das Namensschema und ist in der Lage mehrere Konfigurationsvariablen auf einmal zu löschen.
    3. Magische Methode __toString() implementiert.
      Gibt alle gespeicherten Konfigurationsvariablen mittels print_r() zurück.
    4. Magische Methode __get() gibt nun eine Fehlermeldung zurück, wenn auf eine nicht verfügbare Konfigurationsvariable zugegriffen wird.
    5. Konfigurationsvariablen ScriptName, ScriptDir, ScriptRoot, ScriptURL, TemplateDir, TemplateURL, TemplateName, TemplateDateFormat, TemplateTimeFormat und TemplateDateTimeFormat wurden in die Unterobjekte script und template der Klasse Data zugeorndet. Die Präfixe Template und Script entfallen. Außerdem beginnen die Eigenschaften alle mit Kleinbuchstaben.
  • Klasse MySmarty:
    1. Es ist nicht länger notwendig, die Smarty-Methoden assign() und assign_by_ref() zu verwenden, um Smarty Variablen zuzuweisen. Stattdessen wird über die magischen Methoden __get() und __set() dem Smarty-Objekt der entsprechende Wert übergeben.
    2. Magische Methoden __get(), __set(), __isset() und __unset() implementiert.
      Ermöglichen og. Vereinfachungen, um Smarty mit Variablen zu füttern.
  • Vereinheitlichtes Namensschema aller Konfigurationsvariablen entsprechend og. Änderungen zu Kleinbuchstaben am Namensbeginn.
  • Vereinheitlichte Klassennamen im Core-System.
  • Datenbankschnittstelle über PDO hinzugefügt, Ausnahmen werden über die Klasse PDOException statt DbException gehandhabt.
  • Die verfügbaren Datenbankschnittstellen MySQL, MySQLi und PDO lassen sich über die Konfigurationsdatei anwählen.
  • Markup-Vereinfachungen im Standard-Layout
  • Update auf Smarty 2.6.20 und jQuery 1.2.6
  • Anpassungen aller Klassen und Templates an das neue Namensschema und Smarty-Variablen-Handling.
  • Funktion json_encode() wird hinzugefügt, falls PHP 5.2 ohne JSON-Erweiterung kompiliert wurde.
  • Grundsätzliche Funktionalität, um falsch als Spam oder Ham erkannte Kommentare an Akismet zu melden.
  • Weitere kleine Optimierungen und Vereinfachungen der Core- und Modul-Klassen.

Geplante Änderungen bis zur ersten Beta-Version:

  • Wegfall der normalen MySQL-Schnittstelle und Unterstützung für MySQL 4.1.
  • Absicherung über vorbereitete SQL-Abfragen mittels der Methode prepare() von MySQLi bzw. PDO.
  • Namespaces für den Core und die Module, sofern PHP 5.3 verfügbar ist.
  • Admin-Bereich für Kategorien/Tags, Kommentare, Bilder, Texte und Konfigurations-Verwaltung.
  • Neues Tag- und Kategorie-Handling im Admin-Bereich.
  • Spam-Schutz ohne Akismet und Captchas.
  • Module Texts und Images implementieren.
  • Multi-Weblog-Unterstützung über mehrere Domains hinweg.
  • json_encode() durch Zend_Json_Encoder::encode() ersetzen.

So, der Umzug ist überstanden. Bei den meisten sollten die DNS-Einträge schon aktualisiert sein.

Dank der neuen Server, läuft nun alles mit MySQL 5. Daher kann ich nun endlich Views (für die zukünftige Multi-Weblog-Funktion) auch außerhalb meiner lokalen Entwicklungsumgebung nutzen, sowie auf MySQLi als objektorientierte Schnittstelle für die Datenbank-Anbindung zurückgreifen.

Letzteres ermöglicht auch ein neues Sicherheitsfeature, das ich momentan in einer alternativen Version zum Testen einsetze: mysqli::prepare(). Damit werden die Werte über einen Platzhalter in die SQL-Abfrage eingefügt und vorher auf Datentyp bzw. SQL-Injections geprüft.

Leider müssen dafür sämtliche Models komplett umgestellt werden, da die Werte nicht mehr direkt in die Abfrage geschrieben werden.

Ein paar kleine Änderungen:

  1. Die Schriftgrößen wurden reduziert:
    • Kopfbereich von 80 auf 50 Pixel, um weniger erschlagend zu wirken.
    • Überschriften von 2 auf 1.7 em.
    • Fließtext von 14 auf 13 Pixel.
  2. Die Tags wurden aus der Sidebar in den Footer verlagert. Dort ist in der Breite wesentlich mehr Platz und die Sidebar ist nicht mehr so überfrachtet.
  3. Alle Inhalte von madcatswelt.org stehen ab sofort unter der Creative Commons 3.0 Lizenz.

Die Lizenz in Kurzform:

  1. Wenn Ihr Inhalte von mir verwendet, muss mein Name genannt werden. Ein einfacher Link mit Namen reicht vollkommen aus.
  2. Falls Ihr etwas an meinem Inhalten ändert, muss die Weitergabe unter derselben oder einer vergleichbaren Lizenz erfolgen.

Warum eine Lizenz?

Ich plane in Zukunft mehr über PHP bzw. Webentwicklung mit entsprechenden Code-Beispielen zu schreiben, daher halte ich eine Lizenz für sinnvoll. Die Creative Commons 3.0 Lizenz erscheint mir hierfür am besten geeignet, da sie nur zwei einfache Bedingungen hat und dafür sorgt, dass der Code auch weiterhin frei verfügbar ist.

Auch wenn das Wetter in diesen Tagen alles andere als an Frühling erinnert, wird es Zeit für eine Renovierung. Parallel zum neuen Layout geht auch mcw[blog] 2.0 an den Start.

An den eigentlichen Funktionen ändert sich nicht viel, abgesehen von »sprechenden« URLs und einer erweiterten Sidebar, deren Einteilung man über ein simples Javascript nach belieben ein- und ausklappen kann.

Intern ist dagegen alles neu, sogar das Datenbank-Schema. Fast alle Code-Teile sind objektorientiert und entsprechen dem Model View Controller-Pattern (MVC). Das mag für ein Weblog übertrieben klingen, aber es lässt sich dadurch sehr einfach erweitern und warten. Die Zeitersparnis ist wirklich enorm, z.B. hat es nur eine gute halbe Stunde gedauert, bis der komplette Feed-Teil (RSS und Atom) fertig war.

Abgesehen vom eigentlichen Weblog-Modul und entsprechenden Zusatzfunktionen wie Kommentare, Kategorien und Feeds, ist aber noch nichts fertig. In der finalen Version wird es möglich sein mit einer Installation mehrere Blogs zu betreiben, die auch auf unterschiedlichen Domains laufen und noch einige andere Dinge, die momentan nur als Konzept existieren – mehr wird nicht verraten.

Und nun wünsche ich allen viel Spaß mit der neuen Version. Kritik, Ideen oder Verbesserungsvorschläge bitte als Kommentar hinterlassen.