• Sie finden uns bei

    MM Newmedia bei Feedburner.com Add to Technorati Favorites Bloggeramt.de
  • Kontakt

    My status

Online Vergleichsrechner auf dem Prüfstand bei Öko-Test

In ihrer Februar Ausgabe bewertet ÖKO-TEST die aktuellen Tarife zur Wohngebäudeversicherung. Unter anderem werden hier auch die Online Vergleichsrechner diverser Finanz-Portale unter die Lupe genommen. Was habe ich mich gefreut, als ich die Info bekam, dass der von mir entwickelte Vergleichsrechner zur Gebäudeversicherung für vergleichen-und-sparen.de ebenfalls getestet wird. Endlich mal ein Artikel in einem deutschlandweit bekannten Magazin. Die Ernüchterung folgte nach Veröffentlichung des Artikels.

Eigentlich bekommen alle Finanz-Portale im Netz ihr Fett weg. Die angezeigten Ergebnisse wären zu ungenau und weichen oftmals stark von den offiziellen Prämien der Versicherer ab und überhaupt würde es so aussehen, dass einige Anbieter ihre Ergebnisse manipulieren. Auf einigen Portalen würden sogar ein und die selben Vergleichsrechner eingesetzt. Ich, als Entwickler eines der getesteten Vergleichsrechner, stehe dem Artikel bzw. dem dort Vorgeworfenem sehr skeptisch gegenüber.

So schreibt die Öko-Test z.B.:

Nur wenige Anbieter im Vergleichsportal …

… und spielt damit auf die zu gering eingeschätzte Anzahl von angebotenen Gesellschaften in den Vergleichsrechnern an. Das Portal vergleichen-und-sparen.de steht mit den 19 Gesellschaften im Vergleich gar nicht so schlecht mit Hinblick auf andere namenhafte Portale da. Allerdings wird bemängelt, dass es weitaus mehr Gesellschaften mit einem Angebot zur Wohngebäudeversicherung gibt. Ja, die gibt es wirklich.
Allerdings ist der Pflegeaufwand für einen derartigen Vergleichsrechner dermaßen hoch, dass es schon wirtschaftlich keinen Sinn macht alle diese Gesellschaften anzubieten. Einige Gesellschaften sind nicht in der Lage technische Gegebenheiten, wie z.B. einen Soap Webservice oder eine anderweitige Schnittstellen zur Tarifierung und Policierung anzubieten. Alternativ kann man die Daten mangels Schnittstelle auch selbst pflegen, was aber einen immensen Pflegeaufwand darstellt. Andere Gesellschaften widerum machen aus ihren Daten fast ein Staatsgeheimnis, so dass man sie in einem Vergleich mangels Daten gar nicht berücksichtigen kann. Es können momentan also gar nicht alle Gesellschaften angeboten werden, da es an auszuwertenden Daten mangelt. Ich spreche hier allein von den Daten, die zu einer Berechnung herangezogen werden müssen. Entscheidungen, welche Gesellschaften im Pool vorhanden sind, die ein Makler aus betriebswirtschaftlichen Gründen trifft, lasse ich mal außer Acht.

Weiterhin schreibt die Öko-Test

Wenig erfreulich ist das Ergebnis auch für vergleichen-und-sparen.de. Eine ganze Reihe nachvollziehbarer Berechnungen weichen von den Daten der Versicherer ab. Die Spanne reicht von minus 100 bis plus 33 Euro. Der Rechner ist eine Eigenentwicklung des Maklers. Nach Zuspielung der Testergebnisse durch ÖKO-TEST wurde der Rechner verbessert, so das Unternehmen.

Richtig ist, dass die hier angesprochenen Berechnungen von den Prämien, die von den Gesellschaften selbst ausgewiesen werden, abweichen. Richtig ist auch, dass es sich bei vergleichen-und-sparen.de um einen Makler handelt. Ich als Entwickler des Vergleichsrechners weiß, dass ein Makler mit den Gesellschaften durchaus Rabatte aushandeln kann, die er, sofern er gewillt ist, an seine Kunden weiterreichen kann. Also weichen viele Prämien nicht von den Daten der Versicherer ab, weil der Rechner ungenau rechnet oder die Berechnungen gar vom Makler selbst manipuliert sind, sondern weil hier einfach Maklerrabatte an die Endkunden weitergegeben werden.
Der Vergleichsrechner wurde aber nun dahingehend angepasst, dass die rabattierten Tarife im Ergebnis und nochmals im Online-Antrag gekennzeichnet werden, so dass nachvollziehbar ist, wieso eine günstigere Prämie angeboten wird.
Ich möchte keinesfalls sagen, dass jede Prämie auf den Cent genau ausgerechnet wird. Dafür sind die Rechenwege unter Beachtung aller möglichen Einschlüsse und Zusätze zur Gebäudeversicherung schlichtweg zu umfangreich. Allerdings ist die Aussage eines wenig erfreulichen Ergebnisses einfach zu vorschnell getätigt worden. Hier hätte man genauer hinschauen müssen oder noch besser: man hätte nachfragen können. Beachtet man dies, stellt man fest, dass die Tarife auf vergleichen-und-sparen.de überwiegend auf den Cent genau berechnet werden – auch unter beachtung von zusätzlichen Einschlüssen. Rechenfehler, die auftreten und auf den Vergleichsrechner (nicht auf die Daten des Versicherers) zurückzuführen sind, werden schnellstmöglich behoben. Letztendlich ist dem Makler auch daran gelegen richtige Prämien auszuweisen, um Probleme bei der Policierung zu vermeiden.

Á propose Beachtung aller möglichen Einschlüsse. Im Artikel wird ebenfalls Folgendes geschrieben:

Elementarschutz wird wichtiger

Ja, das wird es wirklich. ÖKO-TEST hat in seinen Testfällen B, D und F mit dem zusätzlichen Elementarschadenschutz gerechnet. Allerdings frage ich mich, wie die angegebenen Testfälle auf den im Artikel genannten Finanz-Portalen getestet wurden? Nicht alle Portale bieten in Ihren Vergleichsrechnern den Einschluss einer Elementarversicherung an und berechnen diese auch erst gar nicht. Aus meiner Sicht vergleicht man in diesem Bereich Äpfel mit Birnen.

Ich persönlich habe mich auf den ÖKO-TEST Artikel sehr gefreut, wurde aber eher enttäuscht. Ich hatte eigentlich erwartet, dass man auf die Usability und die Möglichkeiten der verschiedenen Vergleichsrechner eingeht. Einerseits verständlich, dass dies nicht geschehen ist, da der Fokus anscheinend nur auf der Tarifierung lag. Andererseits ist ein direkter Vergleich von Vergleichsportalen so nur sehr schwer möglich. Wie schon erwähnt, wurde noch nicht einmal beachtet, ob ein Vergleichsrechner überhaupt Einschlüsse zur Wohngebäudeversicherung beachtet. Statt dessen ein ziemlich desaströses, pauschalisiertes Bild von Internet Vergleichen, welches ich persönlich so, wie es in diesem Artikel gezeichnet wird, einfach nicht nachvollziehen kann.

cURL, DOM und XPath effektiv mit PHP nutzen

Habt ihr Euch schon mal mit Partner-Angeboten im Web auseinandergesetzt? Dann wisst ihr sicherlich auch, dass die kleinen Anbieter lediglich mit iframe-Lösungen aufwarten oder nur minimal APIs anbieten. Ich arbeite momentan an einem eigenen Projekt, welches auf dem IAK Partnerprogramm basiert. Leider beschränkt sich dieses Partnerprogramm lediglich auf die gerade genannte iframe-Lösung, die in meinen Augen nicht gerade ein Design-Highlight ist.

Letzendlich leben wir aber im Zeitalter des Web 2.0 und somit gibt es auch für dieses Problem eine eigentlich recht simple Lösung. Vereinfacht ausgedrückt holen wir uns einfach den Inhalt des iframes, ermitteln in diesem ermittelten Inhalt Komponenten, die für das eigene Projekt benötigt werden und bilden diese dann im eigenen Projekt ab. Am Ende habe ich somit meine individuell gestalltete Applikation, mit der ich das Partnerprogramm trotz fehlender API nutzen kann.

PHP bietet für derartige Vorhaben die entsprechenden Werkzeuge: die cURL Library und das Document Object Model.

Hier nun ein kleines Praxisbeispiel, wie man diese beiden Libraries anwendet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// curl handle erzeugen
$curl = curl_init('https://www.vergleichen-und-sparen.de/hundehaftpflicht-vergleichsrechner.php');
 
// curl optionen setzen
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FILETIME, true);
 
// Quellcode der aufgerufenen Website speichern 		
$content = curl_exec($curl);
curl_close($curl);
 
// Quellcode als DomDocument
$dom = new DomDocument();
$dom->loadHTML($content);
 
// XPath zum ermitteln der benötigten DOM Elemente
$xpath = new DOMXPath($dom);
$elements = $xpath->query('//*[starts-with(@id, "element")]');
 
// irgendwas mit den ermittelten elementen machen
foreach ($elements as $element) {
    ...
}

In diesem kurzen Beispiel wird das erste Eingabeformular des Vergleichsrechners zur Hundehaftpflichtversicherung der iak GmbH geladen. Den ermittelten HTML Quellcode lesen wir dann mit dem DomDocument Objekt ein und suchen im DOM Element-Baum dann mittels XPath nach allen Elementen, die ein ID Attribut besitzen, welches mit “element” beginnt. Hierfür nutzen wir die XPath String Funktion starts-with().

Mit den cURL Funktionen kann ich das ermittelte Eingabeformular dann auch wieder absenden und die darauf folgende Antwort des entfernten Servers parsen und somit den kompletten Vergleichsrechner nachbilden.

Interesse an einem weiteren praktischen Beispiel als Download? Hinterlasst einfach einen Kommentar …

Neues FAQ System auf vergleichen-und-sparen.de

Die nächste Neuentwicklung für die iak GmbH: ein von Grund auf neu programmiertes Fragen und Antworten System für vergleichen-und-sparen.de. Hier möchte ich heute einfach mal die technischen Details diese Neuentwicklung aufzeigen.

Warum eigentlich ein neues FAQ System und keines der vielen frei verfügbaren Systeme? Genau diese Frage stand zu Beginn der Planungen im Raum. Die iak besaß bereits ein phpMyFaq System, welches aber nicht den eigentlichen Anforderungen entsprach. Es war nur mit größerem Aufwand anpassbar und schon gar nicht kompatibel mit dem eingesetzten Framework. Zudem wurden gar nicht alle Funktionalitäten des bereits eingesetzten FAQ Systems benötigt. So entschied man sich dafür ein neues Konzept zu erstellen und auf Basis dessen ein komplett neues FAQ System zu erstellen.

Das neue System basiert auf dem bereits auf vergleichen-und-sparen.de eingesetzten Framework. Im Grunde genommen musste hier für das Frontend nicht viel neu programmiert werden. So wurde hier nur die neue Detailseite, eine Suche und ein Formular für das Einreichen einer neuen Frage entwickelt. Alles wurde in Zusammenarbeit mit dem iak Designer Daniel Saaba abgestimmt. Hier wurde wirklich effizient gearbeitet, so dass das FAQ Frontend relativ schnell für erste Tests bereit stand.

Die eigentliche Herausforderung war der FAQ Verwaltungsbereich für die Mitarbeiter im Hauseigenen internen System. Dieses System ist mit dem eingesetzten Framework, in dem das FAQ Frontend realisiert wurde, nämlich nicht kompatibel. Dennoch habe ich einen Weg gefunden auf die Objekte des Frameworks über das Intranet zuzugreifen. So wurde auch hier so effektiv wie möglich programmiert, indem die bereits vorhandenen FAQ Daten-Objekte aus dem Framework genutzt wurden, und nicht nochmals gesondert für das Intranet programmiert werden mussten.

Am Ende steht nun das neue FAQ System, welches vorerst nur für den neu gestalteten Bereich der Bauherrenhaftpflichtversicherung verfügbar ist. Technisch gesehen kann dieses FAQ System für jeden anderen Bereich der Seite schnell eingebunden werden.

Ihr habt Verbesserungsvorschläge, Kritikpunkte oder Lob? Dann los – schreibt einfach einen Kommentar! Danke schon mal. ;)

Heute mal Lokalpatriotismus

Heute brauche ich mal Eure Hilfe. Einige von Euch wissen ja schon, dass ich ehrenamtlich die Internet AG der Käthe-Kollwitz-Schule in Neubeckum leite. Dort kümmern wir uns um die etwas in die Jahre gekomme Website der Schule. Die Schüler und ich versuchen nun nach und nach die Website auf Vordermann zu bringen. Momentan gehört dazu eher die aufwendige Pflege der Inhalte. Die Website wurde vor der Übernahme der Internet AG nach besten Wissen und Gewissen erstellt. Die Schüler sind hier teilweise das erste Mal mit Webtechniken in Kontakt getreten. Aktuell erstellen wir eine neue, sehr viel kommunikativere Website mit aktuellen Webtechniken und erlernen spielerisch so ganz nebenbei, welche Möglichkeiten es heute gibt.

Worum es den Kids und mir nun geht, ist ein neues Design der Schul-Website. Leider hat’s niemand von uns drauf ein vernünftiges Design zu erstellen und natürlich möchten wir in Zukunft freundlicher und ansprechender erscheinen. Dazu benötigen wir zu allererst ein aktuelles Design. In zeiten von knappen Kassen ist es auch nicht möglich einfach jemanden zu beauftragen. Dennoch möchte ich hier im Namen der Internet AG der Käthe-Kollwitz-Schule einen kleinen Aufruf starten. Helft uns beim Design der neuen Schulwebsite!

Wir brauchen kein aufwendiges State-Of-The-Art Webdesign. Es soll schlicht und einfach verständlich sein und natürlich mit der Käthe-Kollwitz-Schule in Neubeckum zu tun haben. Ein einfaches, zeitgemäßes Webdesign würde uns schon reichen.

Natürlich können wir Euch nicht viel bieten. Ihr würdet natürlich im Impressum der kommenden neuen Seite mit einem Link auf Eure Seite namentlich genannt werden. Zudem tut ihr den Schülern der Käthe-Kollwitz-Schule einen riesigen Gefallen und sorgt dafür, dass ich Ihnen zeigen kann, wie ein geliefertes Design für eine Webseite aufbereitet und verarbeitet wird. Hier wird nämlich am lebenden Objekt “Website” gelernt.

Wenn Ihr Lust und Zeit haben solltet legt einfach los. Frau Gehrke, die Leiterin der Käthe-Kollwitz-Schule in Neubeckum, und ich stehen Euch gern mit Rat und Tat zur Seite.
Wenn ihr keine Designer seid, könnt ihr uns dennoch einen rieisigen Gefallen tun, und den Link zu diesem Artikel so weit wie nur möglich verbreiten. Teilt und Like’t auf Facebook, re-tweetet auf Twitter oder was auch immer.

Wir freuen uns auf Euer Feedback!

Der neue Bauherrenhaftpflicht-Vergleichsrechner der iak GmbH

Endlich ist es soweit! Der neue Vergleichsrechner zur Bauherrenhaftpflichtversicherung der iak! GmbH ist online. Nach einer Entwicklungszeit von knapp 4 Monaten wurde der Vergleichsrechner von Grund auf neu programmiert. Welche technischen Fortschritte der Rechner im Vergleich zur Vorgängerversion gemacht hat, werde hier hier nun kurz zusammenfassen.

Das neue Layout

Der Vergleichsrechner erscheint ab sofort in einem neuen, ansprechenderem Layout. Im direkten Vergleich zur Vorgängerversion erscheint der Rechner nun sehr viel präsenter und freundlicher auf dem Bildschirm.

Verbesserte Usability

Die Formulare des Vergleichsrechners wurden ebenfalls grundlegend überarbeitet. Die Eingabefelder sind nun größer und werden farblich markiert, sobald sie aktiviert werden. So sieht der User zu jeder Zeit, an welchem Punkt des jeweiligen Eingabeformulares er sich befindet. Klickflächen wurden vergrößert, so dass Hilfe- und sonstige Zusatzangebote sehr viel leichter in der Blickfled fallen. Die Hilfetexte zu den Eingabefeldern erscheinen nun, sobald ein Eingabefeld aktiviert wird. Die Möglichkeit Hilfetexte mit einem Klick auf ein Hilfesymbol anzeigen zu lassen, blieb natürlich bestehen.
Die praktische Fortschrittsanzeige zeigt dem User an, wo er sich zwischen Eingabe der Daten zur Berechnung und Antragsstellung befindet. Ein paar von Euch werden es kennen. Endlosformulare ausfüllen, wobei das Ende nicht abzusehen ist. Soetwas demotiviert und lässt viele User abspringen. Im Vergleichsrechner wurden die Formulare so eingerichtet, dass sie lediglich die Daten Abfragen, die aufgrund des gewählten Tarifes auch unbedingt notwendig sind.

Momentan befindet sich die Einbindung der Facebook OpenGraph API noch in der Planung. Die Einbindung würde weitere Vereinfachungen beim Ausfüllen der Formulare mit sich bringen. Persönliche Daten könnten somit zum Beispiel direkt via Facebook Connect ermittelt werden, so dass das Antragsformular “Persönliche Daten” bereits mit den bei Facebook hinterlegten Daten vorausgefüllt wäre.

Das Ergebnis erscheint nun strukturierter in einer sortierbaren Tabelle, so dass der User wählen kann, nach welchen Kriterien der Vergleichsrechner die Ergebnisse anzeigen soll. Alle Klickflächen wurden hier auch nochmals überarbeitet, so dass auf den ersten Blick ersichtlich ist, was eigentlich passiert, wenn man irgendwo klickt. Ich persönlich finde die Ergebnisansicht des Rechners ziemlich gut.

Technische Details

Eine Vorgabe war es, den Rechner besonders Ressourcen-schonend zu gestalten. So wurden weitestgehend Cache Objekte an vielen Stellen im Rechner integriert, die die ermittelten Daten zwischenspeichern und nicht wieder erneut aus einer Datenbank oder anderen Quellen auslesen. Während im zuvor entwickelten Vergleichsrechner zur Gebäudeversicherung das Ergebnis auch neu berechnet wurde, wenn es gar nicht hätte neu berechnet werden müssen, wurde hier darauf geachtet, dass das Ergebnis, sofern die Daten zur Berechnung sich nicht ändern, nicht neu berechnet wird, sondern aus dem Zwischenspeicher kommt.
Ein kleines Beispiel, wie drastisch die Cache Objekte arbeiten, wären die E-Mail Templates für die E-Mails, die nach Absenden des Antrages versendet werden. Die Vorgängerversion war so eingerichtet, dass alle E-Mail Templates bei Bedarf direkt aus der Datenbank ermittelt wurden. Praktisch bedeutete dies, dass bei 200 versendeten Anträgen aus dem Vergleichsrechner auch 200 Datenbankabfragen stattgefunden haben. Das Cache Objekt reduziert die Anzahl der Datenbankabfragen auf 2 pro Tag.

Da nicht alle Versicherungsunternehmen die Bauherrenhaftpflichtversicherung gleich berechnen, kann der neue Rechenkern alle abweichenden Berechnungen berücksichtigen und rechnet somit ebenfalls Cent-genau. So war es auch möglich 600 verschiedene Tarife in den Vergleichsrechner zu integrieren. Der alte Vergleichsrechner berücksichtigte gerade mal 150 Tarife … glaube ich.

Der Vergleichsrechner ist direkt mit dem Verwaltungsprogramm der iak! GmbH verbunden, so dass die Mitarbeiter direkt aufgelaufene Anträge einsehen und bearbeiten können. Ebenfalls können hier optional auch Webservices von Versicherungsunternehmen integriert werden, welche die besonders schnelle Verarbeitung von Anträgen garantieren.

Fazit

Die Programmierarbeiten in Zusammenarbeit mit den zuständigen Abteilungen der iak! GmbH waren ziemlich aufwendig, machten aber Spaß, weil die Planung derartiker Applikationen immer besser wird. In Anbetracht der vielen technischen Verbesserungen des Vergleichsrechners bin ich gespannt, was noch alles kommen wird. Aus meiner Sicht ist die Weiterentwicklung mit Blick auf das iak Partnerprogramm ziemlich spannend. Wird es diesmal eine REST Schnittstelle geben, mit der der Rechner bedient werden kann? Zunächst bin ich aber mal gespannt, wie das Feedback zum neuen Vergleichsrechner zu Bauherrenhaftpflicht sein wird.

Verbesserungsvorschläge, Feedback und Kritik als solche sind natürlich erwünscht und können hier als Kommentar hinterlassen werden.

Sichtbarkeit von Eigenschaften ermitteln

Da die letzten beiden “Immer wieder freitags” Artikel aus Zeitmangel ausgefallen sind, heute mal ein kurzer, knackiger Beitrag über die Sichtbarkeiten von Objekteigenschaften und wie man diese ermitteln kann. Das Thema Eigenschaften und deren Sichtbarkeiten ist eigentlich recht schnell an einem praktischen Beispiel erklärt.

1
2
3
4
5
6
7
8
9
class MeinTest {
    public $meineErsteVariable = 'Var1';
    public $meineZweiteVariable = 'Var2';
    protected $eineProtectedVariable = 'Protected';
    private $einePrivateVariable = 'Private';
}
 
$meinTest = new MeinTest();
echo $meinTest->meineErsteVariable; // ergibt: Var1

Jede der Objekteigenschaften hat hier eine Sichtbarkeit, die entweder public, protected oder private ist. Soweit also ein alltäglicher Einblick einer ganz normalen Klasse, wie man sie hier und da mal sieht. Was passiert nun, wenn wir auf die öffentlichen (public) Eigenschaften einer Klasse zugreifen müssen, diese aber nicht kennen? Nicht möglich? Oh doch! Die Reflection API ab PHP5 bietet Methoden, um an die Eigenschaften von Objekten zu gelangen.
Für ein praktisches Beispiel erweitern wir unsere Klasse von gerade einfach mal um einen Konstruktor:

1
2
3
4
5
6
7
public function __construct() {
    $this->meineErsteVariable = 'Bla1';
    $reflector = new ReflectionClass($this);
    foreach ($reflector->getProperties(ReflectionProperty::IS_PUBLIC) as $prop) {
        echo $prop->getName() . " => " . $prop->getValue($this) . "<br />";
    }
}

Zunächst ändern wir einmal den Inhalt der Klassen-Eigenschaft “meineErsteVariable” auf “Bla1″. Danach reflektieren wir in diesem Beispiel die initialisierte Klasse und holen uns mittels ReflectionClass:getProperties() alle Eigenschaften. Indem hier die Klassen-Konstante IS_PUBLIC übergeben wurde, werden nur alle öffentlich zugänglichen Eigenschaften ermittelt. Alle öffentlichen Eigenschaften werden dann in einer foreach()-Schleife ausgegeben.
Wie wendet man sowas praktisch an? Ich habe es bei einer Validierung von Eingabedaten im Woltlab Comunity Framework eingesetzt. Alle Eingabemöglichkeiten / Variablen sind als öffentliche Eigenschaften gesetzt und somit lassen sich alle Angaben auch entsprechend abfragen. Hier das praktische Anwendungsbeispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protected function validate() {
    $reflection = new ReflectionClass($this);
    foreach ($reflection->getProperties(ReflectionProperty::IS_PUBLIC) as $prop) {
        try {
            if (!strlen($prop->getValue($this))) {
                throw new UserInputException($prop->getName(), 'empty');
            }
        } catch (UserInputException $e) {
            $this->errorType[$e->getField()] = $e->getType();
        }
    }
 
    if (count($this->errorType)) {
        die(json_encode($this->errorType));
    }

Was haltet ihr von der Reflection API und setzt ihr diese bereits und wenn ja, wo? Fragen über Fragen …

Immer wieder freitags (KW 42)

Hm? Aber heute ist doch Montag! Leider habe ich es bis heute nicht geschafft den wöchentlichen Report über die MM Newmedia Entwicklungen zu schreiben. Immerhin wird momentan das Büro neu geplant und umgebaut. Fotos davon übrigens später. Jetzt erstmal der Stand der Dinge zu den in dieser Woche durchgeführten Arbeiten.

Bauherrenhaftpflicht nimmt Formen an

Der neue Vergleichsrechner zur Bauherrenhaftpflichtversicherung für vergleichen-und-sparen.de wurde diese Woche einem netten Facelift unterzogen. So hat man sich mal grundlegend Gedanken über die Usability gemacht und das Feedback von Benutzern ausgewertet. Dabei kam heraus, dass viele Benutzer das Hilfe Icon gar nicht oder erst nach langer Suche finden. So wurde das Hilfe Icon jetzt umplatziert, so dass es direkt vor den Eingabemöglichkeiten erscheint. Die Eingabe-Hinweise erscheinen nun auch nicht mehr erst, wenn der Benutzer auf das Hilfe-Icon klickt, sondern dirket bei Aktivierung des Eingabefeldes. Weiterhin wurden die Eingabefelder vergrößert und mit einem Hover/Focus Effekt belegt, so dass der Benutzer zu jeder Zeit nachvollziehen kann, wo er sich gerade befindet.

Nicht ganz so glücklich verlief die Integration der Gesellschaftslogos in der Ergebnisübersicht des Vergleichsrechners. Hier kam es leider zu Verzögerungen, weil die Koordination innerhalb des Developer Teams nicht ganz rund lief. Eventuell schreibe ich später noch mal einen ausführlichen Artikel über die Wichtigkeit der Dokumentation von Entwicklungen und die klare Definition von Standards innerhalb eines Teams von mehr als zwei Programmierern.
Letztendlich wurde sich aber auch hier auf eine sinnvolle neue Vorgehensweise geeinigt, die allen Seiten Vorteile bietet. Die Abteilung zur Datenpflege hat nun vereinfachte Möglichkeiten zur Pflege der Daten bekommen, das Developer Team hat nun einen gültigen Standard bzgl. der Gesellschafts-Logi innerhalb von Vergleichsrechnern und alles läuft wieder rund.

Die Antragsformulare innerhalb des Vergleichsrechners wurden auch noch mal umgestellt, so dass die Usability nochmals gesteigert wurde. Hierzu wurde abermals das Feedback von Usern ausgewertet, die schon Erfahrungen mit den Vergleichsrechnern der iak GmbH haben. Was genau hier gemacht wurde, um den User besser zu führen, werde ich in einem ausführlichen Artikel schreiben. Dieser wird kommen, wenn der Rechner für jeden von Euch zugänglich ist.

Was haben wir gelernt? Feedback ist wichtig! Wenn ihr also Ideen habt oder Euch etwas auffällt, schreibt einfach einen Kommentar hier im Blog oder nutzt das Kontaktformular.

Liviwell goes Paypal

Der von mir umgesetzte Liviwell Shop wurde um die Paypal Zahlweise ergänzt. Hierbei konnte ich glücklicherweise auf das bewährte Oxid eFire System zurückgreifen, welches die Integration des Paypal Moduls sehr einfach machte. Aus meiner Sicht ein sehr guter Service von Oxid eSales.
Weiterhin wurde auch Google Analytics auf der liviwell Website und im Shop integriert. Dies ermöglicht die komfortable Analyse von Besucherströmen.

So … und jetzt ab in die neue Woche!

Immer wieder freitags …

Heute fällt der Startschuss für eine wöchentlich wiederkehrende Artikelserie und ihr seid live dabei! Jeden Freitag wird nun ein Artikel über die während der Woche abgearbeiteten Projekte erscheinen. Warum? Damit ihr nicht immer wieder fragt, was ich eigentlich den lieben langen Tage mache! Nei,n nicht wirklich. Zugegeben ist diese Serie nicht ganz ohne Eigennutz. Neben den vielen Ah’s und Oh’s, dem massiven Beifall und den vielen zu erwartenden Danksagungen seid ihr es nämlich, die aus dieser Serie ihren Vorteil ziehen könnt. Ihr erfahrt in kurzen, knackigen Artikeln, was MM Newmedia leisten kann. Eventuell ja auch für Euch.

Lasst uns beginnen! Was ist diese Woche passiert?

Website und Stellenmarkt Faktor 24 / 7

Zusammen mit Benny von ZwoEins Marketing habe ich die letzten Monate eine Website für die Firma Faktor24/7 entwickelt, die nun in die letzte Phase der Entwicklung geht. Die Testphase hat quasi begonnen und neben ein paar kleineren Bugs stehen die Hauptfunktionen der Seite. So wurde eine eigentständige Stellenbörse mit Bewerberverwaltung in die Seite integriert. Neben einer für den Anwender leicht verständlichen Führung durch das Bewerber-Formular ist Facebook auch ein großes Thema gewesen. So kann die Firmen-Seite bei Facebook zukünftig direkt aus dem Backend der Website mit neuen Artikeln bestückt werden. Zwei Fliegen mit einer Klappe geschlagen. Ebenso können alle eingestellten Stellenanzeigen via Facebook weiterempfohlen werden. So werden Informationen heutzutage schnellstmöglich verbreitet.

Ein ausführlicher Bericht erfolgt nach Release der Seite.

Bauherrenhaftpflicht einfach vergleichen

Für Vergleichen und Sparen arbeite ich momentan am neuen Vergleichsrechner zur Bauherrenhaftpflichtversicherung. Nachdem der alte Rechner etwas in die Jahre gekommen ist, wird nun ein neuer Rechner entwickelt. Und wenn ich sage neu, dann meine ich wirklich neu! Die alte Technik wurde komplett eingestampft. Die Entwicklungen, die bereits im Vergleichsrechner zur Gebäudeversicherung eingeflossen sind, finden nun auch Einzug in den neuen Bauherrenhaftpflicht Rechner. Das automatisierte Formularsystem, ein neuer Rechenkern, neue Cache Funktionen zur Erhöhung der Geschindigkeit des Rechners und ein nagelneues Design!

Wenn die Entwicklung abgeschlossen ist, wird es hier einen ausführlichen Artikel über den neuen Vergleichsrechner zur Bauherrenhaftpflicht geben.

Die Hirsch Apotheke in Beckum

In Zusammenarbeit mit Anja von kommunikativ wurde vor einiger Zeit die komplette Website für die Hirsch Apotheke neu konzipiert und programmiert. Mit inbegriffen ist ein einfaches Artikelsystem mit einem readktionell gepflegten Kommentar-Bereich. Sowohl das Artikelsystem, als auch das Kommentarsystem wurden nochmals überarbeitet und in ein anderes Layout gebracht. Herr Graf, Apotheker der Hirsch Apotheke in Beckum, steht nun drekt mit seinen Kunden und Kollegen in Kontakt und schreibt nun regelmäßig interessante Artikel über das Gesundheitssystem in Deutschland. Hierfür hat Herr Graf viele Funktionen zur Textformatierung mittels eines WYSIWYG Editors an die Hand bekommen, so dass die Artikel nach Belieben gestaltet werden können.
Während der Programmierung des Artikelsystems wurde darauf geachtet, dass die Kommentar-Funktion ohne großen Aufwand auch öffentlich zugänglich gemacht werden kann, so dass die redaktionelle Pflege ab einem bestimmten Zeitpunkt wegfallen könnte. Weiterhin wurde die Kommentarfunktion so eingerichtet, dass auch auf einen bereits abgegebenen Kommentar geantwortet werden kann. Somit wäre eine Möglichkeit zur Interaktion zwischen den Lesern gegeben.

Der neue liviwell Shop

In einer quasi Übernacht-Aktion wurde der liviwell Online Shop in kürzester zeit ins Leben gerufen. Das schon bestehende Design der liviwell Website wurde für den Shop übernommen. Besonders wichtig war die Gutschein Funktion, die bereits in der Oxid Software vorhanden ist und für liviwell leicht angepasst wurde. Bestellungen können ab sofort getätigt werden.

Eigentlich recht viel für diese Woche. Nächsten Freitag dann das nächste Update.

Das ArrayObject in der SPL

Endlich mal wieder etwas Neues vom Marcel. Ich muss mich auch direkt mal wegen des unregelmäßigen Erscheinens von Artikeln entschuldigen. Ich gelobe Besserung … wirklich! Aber nun zu unserem eigentlichen Thema: Das ArrayObject aus der Standard PHP Library.

Das ArrayObject ist bei Weitem kein Wunderwerk, erleichtert aber doch die Arbeit im objektorientierten Umfeld und ist in einigen Bereichen sogar schneller, als das einfacher Array Handling über die bisher bekannten PHP Array Funktionen. Zudem implementiert es wesentliche Interfaces aus der SPL, um das Handling innerhalb des ArrayObject so komfortabel wie möglich zu gestalten.

Beispiele

// Ein ganz normales Array
$besatzung = array(
	'Kapitaen' => 'Marcel',
	'Maat' => 'Johannes',
	'Matrose' => 'Hendrik'
);
 
// Wir weisen unser ArrayObject an die Inhalte des Array als 
// Eigenschaften zu behandeln
$besatzungObject = new ArrayObject($besatzung, ArrayObject::ARRAY_AS_PROPS);
 
// Hinzufügen von Werten
$besatzungObject->Smutje = 'Fabian';
 
// Ausgabe: Hendrik
echo $besatzungObject->Matrose;

In diesem Beispiel erstellen wir ein einfaches ArrayObject mit einem simplen Array. Der zweite Parameter gibt an, wie die Array Inhalte behandelt werden sollen. In diesem Beispiel behandeln wir die Array Inhalte wie Eigenschaften einer Klasse, was aus dem objektorientierten Blickwinkel Sinn macht.

1
2
3
4
5
6
7
// Das Array mit dem Iterator durchlaufen
// Ausgabe: Marcel ist ein Kapitaen, etc.
$iterator = $besatzungObject->getIterator();
while ($iterator->valid()) {
	echo $iterator->current() . ' ist ein ' . $iterator->key() . "<br />";
	$iterator->next();
}

Hier durchlaufen wir das Array mit der Methode ArrayObject::getIterator(), welche ein ArrayIterator Objekt zurück gibt, mit dem wir durch das ganze Array iterieren können. Ich persönlich finde das ziemlich praktisch, zumal ich auch direkt beim Erzeugen einer ArrayObject Instanz mit einem dritten Parameter meine ArrayIterator Klasse benennen kann. In unserem Beispiel haben wir keinen dritten Parameter angegeben. Somit ist die ArrayIterator Klasse als Standard hinterlegt.

Besonderheiten

1
2
3
4
5
6
// erzeugt einen Fehler
echo implode(",", array_values($besatzungObject));
 
// so wird's richtig gemacht
$meineBesatzung = (array) $besatzungObject;
echo implode(", ", array_values($meineBesatzung));

Einfache PHP Array Funktionen können nicht ohne Weiteres auf ein ArrayObject angewendet werden. Hierzu muss das ArrayObject erst per expliziter Typisierung als Array gekennzeichnet werden. Erst dann greifen die PHP Array Funktionen wieder problemlos.

Zusammengefasst gleicht das ArrayObject eher einer genaueren Typisierung von Arrays innerhalb des objektorientierten Kontexts. Auf jeden Fall kann ich somit Arrays und sogar Objekte wie Arrays behandeln. Die Iterator Funktionalitäten sind verdammt schnell. Lediglich die etwas umständliche Einbindung der Standard Array Funktionen bremst ein wenig aus. Wirklich Sinn macht dieser Teil der SPL aber erst, wenn man sich in der objektorientierten Programmierung bewegt.

Was meint Ihr zum ArrayObject?

Verschwindet die PHP MySQL Extension bald?

Schon letzte Woche war zu lesen, dass die PHP Core Developer planen die PHP MySQL Extension nach und nach aus PHP zu verbannen. Wenn also jemand von Euch da draußen nach wie vor auf die PHP MySQL Extension setzt, werdet ihr wohl über kurz oder lang auf ernstzunehmende Probleme stoßen. Den ursprünglichen Vorschlag zur Verbannung der MySQL Extension aus der PHP Distribution könnt ihr in einem internen Mailing der PHP Core Developer nachlesen.

Der Plan die MySQL Extension zu verbannen ist aus meiner Sicht auch durchaus nachvollziehbar. Die alten MySQL Funktionen sind nicht unbedingt sicher. Wir kennen das Problem, dass gerade Anfänger oftmals vergessen, dass Werte, die in die Datenbank eingefügt werden, mit entsprechenden MySQL Funktionen escaped werden müssen. Die MySQL Extension birgt nach wie vor einige immense Sicherheitslücken, die eigentlich durch die Einführung von PHP5 mit zwei Alternativen behoben wurden. Einerseits gibt es die PDO und darüber hinaus bietet PHP auch die MySQLi Extension. Der Hauptfocus der PHP Core Developer wird zukünftig auf der PDO Extension liegen. Dies macht Sinn, da die PDO Extension sehr viel sicherer und auch schneller ist, als die bisherige MySQL Extension.

Fraglich ist nur, wie konsequent die Verbannung der MySQL Extension aus der PHP Distribution durchgeführt wird. Ich glaube wir erinnern uns an die Einführung von PHP5 im Jahre 2004. Da diese damals neue Version komplett abwärtskompatibel zu PHP4 war, hat sich ein Großteil der Entwickler gar nicht drum geschert auf PHP5 umzusteigen. PHP4 lief noch viele Jahre lang, bevor PHP5 von der breiten Masse eingesetzt wurde. Die mit PHP5 eingeführten Deprecated Notices konnten leicht umgangen werden und flogen in späteren Distributionen sogar raus, weil sie keinen Effekt hatten.
Gleiches Problem sehe ich bei der Verbannung der MySQL Extension. Es sind in zukünftigen Distributionen zwar Deprecated Notices angedacht, allerdings sind diese eben durch gezieltes Einstellen des Error Reportings leicht zu umgehen.

Trotz aller Schwierigkeiten eine solche populäre Extension zu entfernen, bleibt es spannend, wie sich die PHP Core Developer hier entscheiden werden. Ich persönlich begrüße den Vorschlag, dass die MySQL Extension nach und nach verschwinden soll, da ich ausschließlich mit PDO arbeite. Wie denkt ihr über den Vorschlag die MySQL Extension zu verbannen?