XSL / XSLT als Templatesystem

Bekanntlich setzt das papaya CMS bereits seit Version 1 (um 2000) auf XSL / XSLT als Templatesystem. Auch wenn der Standard schon viele Jahre besteht und z.B. im professionellen Umfeld (große Softwareprojekte, insbesondere im Java Bereich) eine große Wertschätzung und Verbreitung genießt, so ist die Wahrnehmung bei vielen PHP Entwicklern leider noch anders. Und das obwohl XSL / XSLT ein offener Standard ist, der die vielbeschworene Trennung von Logik, Inhalt und Layout sauber implementiert und der nicht zuletzt beliebige Ausgabeformate (HTML, XML, PDF u.v.m.) ermöglicht.

Umso erfreulicher ist es immer, wenn die mannigfaltigen Vorteile gegenüber proprietären Script- und Templatesprachen die Runde machen – wie aktuell in einem lesenswerten Beitrag von phpmonkeys.de.

Fazit der Autoren:

Der Vorteil von XSL ist, dass man dieses Verfahren mit jeder Programmiersprache einsetzen kann, die einen XSLTProzessor mitbringt. Und dabei können Template- und Layout-Dateien ohne Aufwand migriert werden. Man benötigt nur eine ähnliche Implementierung wie der HTMLGenerator und Logik, die die XML-Daten generiert.

…das völlig korrekt – neben weiteren Vorteilen:

  • offener Standard des W3C, keine proprietäre Lösung
  • in die Einarbeitung investierte Zeit ist nicht auf ein Produkt begrenzt, sondern kann in verschiedenen Projekten angewandt werden
  • hervorragend dokumentierter Standard, viel Literatur verfügbar
  • hohe Verbreitung in der Java-Welt
  • mächtiges Werkzeug/Programmiersprache
  • gut nutzbar für Internationalisierung der Ausgabe
  • und viele, viele mehr… ;-)

Mantis BT (Mantis Bugtracker) – Notizen

Wir nutzen bei papaya sehr intensiv Mantis als Bugtracker für die Entwicklung des Open Source Content Management Systems “papaya CMS”, gleichermaßen auch in Kundenprojekten. Für ein Projekt kam die Frage auf, ob man nicht in Ergänzung zu unserer bestehenden Zeiterfassungslösung eine rudimentäre Time Tracking Lösung gleich an die Bugs anhängen könne.

Laut Mantis Featureliste soll dies gehen – leider ist aber genau diese Seite in der Mantis Dokumentation leer (!)  ;-)

Da es keinen Button zum Aktivieren des Mantis Time Tracking Modules gibt (und wegen missing documentation) hat es ein paar Minuten länger gedauert, ist dann aber ganz einfach:

  • Datei config_defaults_inc.php öffnen
  • die entsprechende Stelle in der Datei finden (Suchen nach * Time tracking *)
  • die relevanten Konfigurationsoptionen kopieren und in die Datei config_inc.php kopieren
  • ggf. hier noch Anpassungen nach eigenem Gusto vornehmen
  • fertig…

Irgendwie ein eher ungewöhnlicher Weg, um Leistungsmerkmale einer Software zu verstecken ;-)
(Wenn man das aber einmal gesehen hat ist es aber ziemlich selbsterklärend.)

Interessant sind für meinen geplanten Anwendungsfall innerhalb der Scrum-basierten Zusammenarbeit mit einem Kunden vor allem die Funktionen zum Erfassen von Aufwandsschätzungen und zur Zeiterfassung. Diese werden mit folgenden Parametern angeschaltet:

Zeitprognosen

/**
* Enable or disable usage of the ETA field.
* @global int $g_enable_eta
*/
$g_enable_eta = ON;

Zeiterfassung

/*****************
* Time tracking *
*****************/

/**
* Turn on Time Tracking accounting
* @global int $g_time_tracking_enabled
*/
$g_time_tracking_enabled = ON;

/**
* A billing sums
* @global int $g_time_tracking_with_billing
*/
$g_time_tracking_with_billing = ON;

/**
* Stop watch to build time tracking field
* @global int $g_time_tracking_stopwatch
*/
$g_time_tracking_stopwatch = ON;

/**
* access level required to view time tracking information
* @global int $g_time_tracking_view_threshold
*/
$g_time_tracking_view_threshold = DEVELOPER;

/**
* access level required to add/edit time tracking information
* @global int $g_time_tracking_edit_threshold
*/
$g_time_tracking_edit_threshold = DEVELOPER;

/**
* access level required to run reports
* @global int $g_time_tracking_reporting_threshold
*/
$g_time_tracking_reporting_threshold = MANAGER;

/**
* allow time tracking to be recorded without a bugnote
* @global int $g_time_tracking_without_note
*/
$g_time_tracking_without_note = ON;

VirtualBox Images kopieren; Netzwerkinterfaces eth0, eth1, eth2…; Netzwerk funktioniert nicht?

Kopiert man VirtualBox Images mit Linux-Systemen als Gast (zumindest Ubuntu und Debian, ggf. weitere), funktionieren oftmals die Netzwerkeinstellungen nicht mehr.

Dies liegt daran, dass bei VirtualBox i.d. Regel nur das Festplatten-Image, nicht jedoch die Konfiguration der virtuellen Hardware kopiert wird (wie das z.B. bei vmWare der Fall ist). Vergleichbar ist dies also mit dem Einbau der Festplatte in eine andere Rechner-Hardware.

Um zu verhindern, dass Netzwerkkonfigurationen z.B. durch den Einbau neuer Hardware ungültig werden, werden die Konfigurationen (z.B. für das Device eth0) an die Hardwareadresse (MAC-Adresse) der jeweiligen Netzwerkkarte gebunden.

Das heisst also:

  • bei der Neuinstallation eines Linux-Systems befindet sich eine Netzwerkkarte im Rechner
  • diese wird als etho, also als erstes Netzwerkdevice am Bus identifiziert
  • das Betriebssystem speichert in der Datei /etc/udev/rules.d/70-persistent-net.rules die Zuordnung dieser Netzwerkkarte (über die MAC-Adresse) zum Devicenamen “eth0″
  • die Netzwerkkarte bzw. das Netzwerk wird konfiguriert (feste IP-Adresse vs. DHCP etc.) in der Datei /etc/network/interfaces

Der Eintrag in o.g. /etc/udev/rules.d/70-persistent-net.rules sieht ungefähr wie folgt aus:

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="6c:62:6d:0d:9c:93", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Wird nun das Festplattenimage auf einen anderen Rechner kopiert, so wird i.d. Regel eine neue virtuelle Maschine angelegt, wobei VirtualBox automatisch eine zufällige MAC-Adresse für die virtuelle Netzwerkkarte erzeugt.

Beim Start erkennt das Linux-System dann ein neues Interface und trägt dieses in der Datei /etc/udev/rules.d/70-persistent-net.rules ein. Da die bisher verwendete ID (in unserem Beispiel eth0) ja bereits vergeben ist, wird entsprechend hochgezählt: Die neue virtuelle Karte erhielte dann z.B. eth1.

Da in /etc/network/interfaces die Konfiguration jeweils für das spezifische Device definiert wird (z.B. eth0), greift sie entsprechend für eth1, eth2, eth3 etc. nicht – das Netzwerk funktioniert also nicht, da das in der VM verfügbare Netzwerkdevice noch unkonfiguriert ist.

Es muss also vor dem Start des Gastes manuell eingegriffen werden. Hierfür kommen 3 Optionen in Betracht:
weiterlesen »

Agile Entwicklung vs. Wasserfallmodell & Co.

Dass agile Entwicklung bisweilen erhebliche Vorteile gegenüber althergebrachten Entwicklungsmethoden hat ist hinlänglich bekannt. In diesem Zusammenhang sehr interessant ist die nüchterne Betrachtung des Projekterfolgs je nach Vorgehensweise, den Eberhard Huber im “projekt (B)LOG” vollzieht:

Quelle: projekt (B)LOG - http://www.pentaeder.de/

Serviert wird diese Grafik unter der Überschrift…

Das Wasserfallmodell bleibt problematisch

- eine Aussage, die wir eindeutig teilen.

Ebenso wie die Schlußworte des Autors:

Es bleibt m.E. problematisch, dass das Wasserfallmodell immer noch in 30% der Projekte eingesetzt wird.

Nebenbei: Das projekt(B)LOG ist es m.E. in jedem Falle wert, den Weg in den RSS Reader zu finden.

Java 4 ever

Eigentlich ist ja PHP unser Kerngeschäft, aber das ist schlichtweg zu genial, um die werten Leser nicht damit zu erfreuen ;-)

Medium: www.youtube.com
Link: www.youtube.com