Ich und meine Intention für diesen Artikel
Hallo, mein Name ist Michael und ich bin schon seit vielen Jahren Anwendungsentwickler. In dieser Zeit habe ich auch schon das ein oder andere private Projekt auf die Beine gestellt. Hierbei geht es mit hauptsächlich um die Nutzung neuer Technologien und die Fähigkeit auch mal über den Tellerrand meiner beruflichen Tätigkeiten hinaus zu schauen.Ich möchte euch heute einmal eines meiner Projekte vorstellen, welches mir bei der Entwicklung besonders viel Spaß gemacht hat. Bei der Entwicklung gab es aber natürlich auch Hindernisse zu überwinden. Ich habe in diesem Artikel mal versucht die wichtigsten Stolpersteine, und die passenden Lösungsansätze dafür zu erläutern. Ich hoffe, dass meine Tipps und Hinweise dem Einen oder Anderen hilfreich sind.
Die gesamte Anwendung ist in PHP 5 entwickelt und stützt sich dabei auf das komponenten-orientierte Zend Framework. Zend habe ich deshalb gewählt, weil es einem sehr viel Basis-Entwicklung abnimmt und zudem das Model-View-Controller (MVC) Prinzip unterstützt. Dadurch lässt sich das Datenmodell, die Präsentation und die Business Logik strukturiert trennen.
Beschreibung des Projekts Shopping Kaiser
Bei dem Projekt handelt sich um die Website Shopping Kaiser, die es ermöglicht, die Angebots-Rosinen aus den Millionen von Auktionen herauszupicken. Die Anwendung ist nun seit ca. 2 ½ Jahren online.Der Nutzen meines kostenlosen Dienstes ist schnell erklärt. Neben den Standard Schnäppchen, die noch auf einem Euro stehen, noch keine Gebote haben oder keine Versandkosten beinhalten, kann man hier auch ganz besondere Auktionen finden.
Sucht man z.B. in den Nachtauktionen, bekommt man nur diejenigen angezeigt, welche zwischen 23 Uhr abends und 6 Uhr morgens auslaufen. Ich war überrascht, wie viele Benutzer von eBay zu diesen Zeiten auslaufende Auktionen einstellen. Da hier die meisten Leute schlafen, lohnt es sich wirklich den Wecker zu stellen, oder einfach wach zu bleiben.
Eine weitere wirkliche Hilfe sind die sogenannten Vertipper-Auktionen, bei denen sich der Ersteller der Auktion im Titel vertan hat. Sei es durch einen Rechtschreibfehler, einen Buchstabendreher oder den klassischen Vertipper. Shopping Kaiser zeigt hier bei Eingabe eines richtig geschriebenen Wortes alle möglichen Auktionen, bei denen sich jemand in der Auktions-Überschrift vertan hat. Da diese Auktionen bei der normalen eBay-Suche nicht gefunden werden, ist man auch hier einer von wenigen Mitbietern.
Bei der Entwicklung meines Schnäppchen Finders, und der Auffindung gerade dieser besonderen Auktionen, habe ich mich bewusst auf echte Auktionen konzentriert. Dass soll heißen, dass eine Schnäppchen-Suche ohne die störenden Händler-Auktionen möglich ist.
Zudem sind die Suchergebnisse immer nach gerade auslaufende Auktionen sortiert. Dadurch wird der Shopping Kaiser quasi zum Just in Time Schnäppchen-Finder.
Nach der Suche gelangt man durch einen Klick auf die entsprechende Auktion sofort zu eBay und kann da die gewohnten Vorteile und Funktionen nutzen. Das besondere an Shopping Kaiser ist, dass der Dienst von eBay zertifiziert ist und damit Sicherheit, Schnelligkeit und Aktualität garantiert. Das Beste aber ist, dass der gesamte Service komplett gratis und unverbindlich ist.
Die Entwicklung und die Hindernisse
Natürlich kann man so eine recht umfangreiche Anwendung nicht mal eben übers Wochenende entwickeln. Geschätzt saß ich ca. 4 Monate an der Umsetzung, wobei ich bedingt durch meinen Vollzeitjob immer nur die Abendstunden und die Wochenenden Zeit hatte.Die gesamte Datenbeschaffung stützt sich hierbei auf das von eBay zur Verfügung gestellte API, welche ich mir zur Echtzeit per SOAP hole. Bestimmte Requests cache ich hierbei um die Performance zu steigern. Grundlegend habe ich aber auf das Caching der Hauptanfragen verzichtet, weil die Echtzeit-Auktionen natürlich immer zeitlich aktuell sein sollen.
Den gesamten Response Mappe ich dann in mein eigenes proprietäres Datenmodell, um bei der Ausgabe und der weiteren Verarbeitung nicht mehr von der Ursprungs-Struktur abhängig zu sein.
Einerseits kann ich dadurch auf Änderungen des API schneller reagieren, da ich nur die Mapping-Klassen anpassen muss, und andererseits konnte ich das gesamte Backend später für weitere Projekte nutzen. Lediglich die Mapping-Klassen musste ich der jeweiligen Schnittstelle anpassen.
Die Themensuchen waren dabei eigentlich recht einfach umzusetzen. Einzig die Suche nach Nachtauktionen und die Suche nach Vertipper-Auktionen stellten eine etwas größere Herausforderung da.
Bei den Nachtauktionen war das Problem, dass die eBay-Schnittstelle die gleichzeitige Eingrenzung zweier Zeitangaben (läuft aus zwischen 23 Uhr und 6 Uhr) einfach nicht unterstützt. Hier musste ich auf einen kleinen Trick zurückgreifen.
Die Suche fängt immer bei den Auktionen an, welche an einem der nächsten Tage ab 23 Uhr endet. Das Ende ist offen, aber sobald ich eine Trefferlistenseite haben, bei der es keine Nachtauktionen mehr gibt, skippe ich diese und springe auf den nächsten Tag mit einer nach 23 Uhr endenden Auktion. Hört sich kompliziert an … und ist es auch ;)
Das zweite Problem hatte ich mit den Vertippern. Es gab zwar etlichen PHP Code aus den Weiten des Internetzes, den ich hätte als Vorlage nehmen können, aber ich habe keine einzige Klasse gefunden, welche meinen Bedürfnissen entsprach.
Die Klasse zur Erstellung aller erdenklichen Tippfehler sollte meinen hohen Ansprüchen genügen. Da ich das Multibyte Character Set (MBCS) UTF-8 durchgehend verwende, sollte auch diese Zeichenkodierungen unterstützt werden. Die Standard PHP String-Funktionen konnte ich also schon mal nicht verwenden um die Zeichen zu tauschen. Hier mussten die UTF-8 unterstützenden „mb_“ Funktionen her, also z.B. mb_substr.
Zudem wollte ich auch noch die unterschiedlichen Tastaturlayouts bei der Logik berücksichtigen. Schließlich tippen nicht alle mit einer qwerty- bzw. qwertz-Tastatur, sondern es gibt z.B. auch noch die azerty-Tastatur in Belgien und Frankreich. Am Ende hatte ich eine Klasse für die Vertipper, bei der ich für jede Sprache ein Tastaurlayout registrieren konnte.
Kaum hatte ich die Klasse fertig, da hatte ich auch schon wieder ein neues Problem mit der eBay Schnittstelle. Die Übergabe der Suchphrase an eBay durfte nur 100 Zeichen lang sein. Da aber bei längeren Wörtern die möglichen Kombinationen von Vertippern, welche ich Oder verknüpfe, extrem zunehmen, musst ich auch noch die Anfragen an eBay sinnvoll stückeln und für den User deutlich machen.
Alles in Allem hat die Arbeit an dem Projekt aber mehr Spaß als Verzweiflung gebracht und ich freue mich heute über jeden User, der den Service nutzt und vor allem dadurch auch ein Schnäppchen findet.
Über jegliche Art von Feedback, Verbesserungsvorschlägen, aber natürlich auch positiver oder konstruktiv negativer Kritik freue ich mich besonders.


Kommentare
Kommentieren