Facebook
Twitter
Google+
Kommentare
37

rsslounge von Tobias Zeising

Heute wollen wir mal wieder ein Projekt eines Lesers vorstellen. Normalerweise sind es zwar die Blogs die wie hier anpreisen, widmen uns aber heute mal einem kompletten Projekt, dass vielleicht auch für euch interessant sein könnte. Genug aber von mir, ich gebe das Wort an Tobias Zeising ab:

Jeder kennt sie, die morgendliche Runde, mit der man sich im Netz informiert wie der Stand der Dinge ist. Meistens ist das ein fester Satz an Seiten, die man durchklickt und überfliegt. Daneben gibt es aber eine riesige Fülle an Blogs, Communitys, Portalen und Projekten, die einen interessiert, die man aber nur unregelmäßig abklopft. Gerade Entwickler entdecken dann früher oder später RSS, legen sich einen RSS Reader zu und behalten so alles im Auge. Um so überraschter war ich, als ich mich auf die Suche nach einem webbasierten RSS Reader begeben habe: die Auswahl ist überschaubar und klein.

Am verbreitesten ist der Google Reader, der für mich aus datenschutztechnischen Gründen nicht in Frage kommt (ich verfolge weit mehr als 100 Feeds der verschiedensten Themen, was neben meinem Leseverhalten umfangreiche Rückschlüsse auf mein Persönlichkeitsprofil zulässt). Die meisten Dienste, welche man im Netz findet, sind für eine größere Menge an RSS Feeds ungeeignet, unpraktisch in der Bedienung oder sind schlicht unübersichtlich. Die wenigen Programme, welche sich auf einen eigenen Server installieren lassen, werden entweder nicht weiter gepflegt (gregarius) oder konnten mich von der Bedienbarkeit nicht überzeugen (tiny tiny rss). Also habe ich mich entschlossen selbst Reader zu entwickeln und all die Features einzubauen, die ich bisher bei keinem anderen Reader entdeckt habe:

  • Er soll eine schlichte und übersichtliche Oberfläche haben.
  • Ich fotografiere gerne und verfolge viele Fotografen im Netz, also soll der Reader einfach und komfortabel Fotoblogs lesen können und neue Bilder übersichtlich darstellen.
  • Abhängig von meiner beruflichen Auslastung habe ich mal viel, mal wenig Zeit: der Reader soll also Prioritäten unterstützen und unwichtige Feeds bei Bedarf einfach ausblenden können (deren Einträge kann ich ja dann auch am Wochenende lesen).
  • Viele Seiten bieten kein RSS Feed. Solche will ich auch verfolgen können. Der Reader muss also ein flexibles Pluginsystem haben, über das ich z.B. auch Seiten parsen und verarbeiten kann.
  • Der Reader sollte möglichst auf jedem 0815 Webhosting Server lauffähig sein.

Nachdem die Anforderungen klar waren, habe ich nach einer letzten verweifelten Suche nach so einem Reader dann angefangen zu programmieren. ‚rsslounge‘ heißt das Ergebnis, wobei der Name und das Logo an die morgendliche Runde erinnern soll, wo man bei einer Tasse Tee/Kaffeeentspannt seine News checkt.

screenshot_1Einige Monate habe ich die Anwendung dann selbst benutzt und getestet und mich mittlerweile so daran gewöhnt, so dass ich mich garnicht daran erinnern kann, wie ich das vorher gemacht habe. rsslounge basiert natürlich auf PHP und baut auf dem Zend Framework auf. Eine kleine, eigene Pluginschnittstelle erlaubt es weitere „Datenquellen“ an den Reader anzubinden und natürlich werden Bilderblogs unterstützt. Nachdem in den letzten Monaten einige Verbesserungen eingeflossen sind steht nun die Version 1 zum freien Download zur Verfügung. Das ganze Projekt steht unter GPLv3 Lizenz und kann unter Google Code genau verfolgt werden.

An dieser Stelle will ich gerne alle Leser von phphatesme einladen rsslounge zu verwenden, sich anzusehen und wer will, kann das Programm auch zerpflücken und mir schreiben, was er alles anders machen würde. Denn neben dem Nutzen steht der Lerneffekt für mich bei dem Projekt ganz vorne. Und wer selbst programmiert, der weiß das die Quelle für Ideen nie versiegt und mir natürlich schon viele neue Features im Kopf herum schwirren. Das wichtigste Feature, das ich die nächsten Monate einbauen will: rsslounge soll lernfähig werden. Ähnlich einem Spam Filter eines Email Programms soll man Einträge als interessant oder langweilig markieren können. Basierend auf diesem Wissen werden neue, ungelesene Beiträge dann einsortiert und interessante Artikel erscheinen weiter oben als uninteressante.

Projektseite rsslounge: http://rsslounge.aditu.de
Google Code Seite: http://code.google.com/p/rsslounge/

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

37 Comments

  1. Cooles Projekt und eine sehr schöne Webseite!

    Ich vermisse nur die Möglichkeit dass mir das Projekt auch einen Webspace anbietet a la WordPress. Mein Interesse eine eigene Software auf meinem Webspace zu installieren + diese zu pflegen ist äußerst gering für ein Produkt welches ich mit viel weniger Aufwand auch im Web direkt finden kann (Google Reader). Ist da so etwas geplant?

    Reply
  2. Ich habe versucht das Ding vor einigen Wochen zum Laufen zu bringen, aber hatte leider einen Bug. Laut Bugtracker wird der in der nächsten Version behoben sein, weswegen ich nun mal drauf warten muss^^.

    Aber für mich als „mittelmässigen Zend Framework Benutzer“ ist es immer wieder toll, wenn ich die Umsetzung von fremden Projekten sehe, da man sich fast immer ein paar Ideen mitnehmen kann.

    Reply
  3. Hallo Tobias,

    ich habe mich mittlerweile an netvibes.com gewöhnt, aber dein Projekt gefällt mir trotzdem. Wenn du wirklich eine Lernfähigkeit entwickeln willst, kann ich dir nur empfehlen es nicht wie ein Spamfilter zu machen, sondern mit einem.
    Schau dir Spamassassin oder andere an. Die machen nichts anderes, als konfigurierbare Kriterien auf Texten zu prüfen und eine abschliessende Bewertung abzugeben. Die Kriterien kannst du selber festlegen und durch Benutzung deren Gewichtung trainieren.
    Auch wenn als Eingabeformat oft ein Emailformat erwartet wird, lohnt es sich imho ein solches um den eigentlichen RSS Inhalt „herum zu generieren“.
    Vielleicht ist das ja eine Anregung. 😉

    Reply
  4. @Tobias: Die Webseite sieht wirklich super aus. Der Reader selbst eher nach Programmiererlayout. Im übrigen würde ich @Ulf wohl zustimmen. Wenn du das ganze mit unterschiedlichen Accounts baust und als Service anbietest, würdest du evtl. ein paar mehr Nutzer finden.

    Spamassassin für die Newserkennung/filterung zu verwenden (wie von @Chistian) ist mit ziemlich großen Kanonen auf Spatzen geschossen. Im ZF gibts Lucene um solche Sachen zu machen. Ich würde beginnen alle News in den Index zu tun und versuchen zu verschlagworten. Dann fängst du an Artikel auf Keywords hin zu untersuchen und schließlich diese Keywords nach dem Leseverhalten/Bewertungen des Nutzers zu wichten.

    Reply
  5. Das Teil sieht echt gut aus.

    Ich benutze seit langer Zeit Gregarius um den Überblick zu behalten. Mittlerweile habe ich über 100 Feeds im Reader und manchmal echt Probleme mich da durch zu arbeiten. Gerade nach längeren Auszeiten. Die Möglichkeit der Priorisierung hört sich gut an.

    Was mir noch besonders wichtig ist: Ich möchte den Reader als Feed Handler im Firefox registrieren können. Bisher scheint das nicht zu gehen, oder?

    Ich werde mir das Projekt auf jeden Fall anschauen, danke für den Tipp.

    Reply
  6. Eines verstehe ich nicht: das Projekt in allen Ehren, aber wäre es nicht sinnvoller das Prinzip der Umsetzung zu erklären statt die Vorteile dieses Readers zu besprechen?

    Einen solchen Reader zu schreiben ist so ziemlich das einfachste überhaupt. Denn sämtliche Datenquellen sind XML und die Ausgabe ist auch X(HT)ML. Dazwischen steht nur der XSL-Prozessor und den hat PHP bereits von Haus aus eingebaut.

    Der einzige „Aufwand“ besteht darin die XSL-Templates zu schreiben und etwas statisches HTML. Warum wird Zend-Framework für etwas benutzt, für das es eigentlich einen internationalen Standard des W3C gibt?

    Wozu schreibt man von Hand eine Pluginschnittstelle für etwas, was das Format bereits von Haus aus beherrscht? Es ist doch XML! Für andere Datenquellen, Skins und alternative Layouts braucht man nur das XSLT austauschen. Man kann via XSL:FO sogar PDF exportieren. Mit Saxxon als XSL-Prozessor lassen sich auch ganze Fotoalben generieren ohne proprietäre Schnittstellen, oder auch nur eine einzige zusätzliche Zeile PHP-Code. Es gibt sogar grafische Editoren für XSLT mit denen man neue Templates schreiben kann. Der notwendige Quellcode könnte extrem schlank und wartungsfreundlich sein.

    Wozu gibt es also internationale Webstandards wenn man sie nicht benutzt?

    Reply
  7. Vielen Dank für die ersten Kommentare!!! Ich hab mir tatsächlich schon überlegt den Reader auch als Online-Dienst anzubieten. Macht natürlich auch Sinn, in erster Linie ging es mir aber darum, dass der Reader auf einen eigenen Server installiert werden kann und das Datenschutzproblem damit gelöst wird.

    @ragtek: welcher Bug war das? Hab gestern eine neue Version veröffentlicht, da sind jetzt alle Änderungen der letzten Wochen drinnen.

    @LaMi: wenn du unter Einstellungen schaust, dann kannst du dort ein Bookmark erstellen. Wenn du das anklickst, wird das aktuell geöffnete Feed in rsslounge hinzugefügt.

    Was die Lernfähigkeit angeht, muss ich da echt nochmal recherchieren. Da gibt es mehrere Wege das zu lösen. Ich würde das gerne mit Hilfe eines Bayes-Klassifikator bauen, oder ein anderes intelligentes Verfahren aus der Mustererkennung. Schön wäre es auch die Relevanz mit Hilfe von Sternen festlegen zu können (von langweilig: 1 Stern bis spannend 5 Sterne). Ein guter Tipp mit den Spamfilter, die werde ich mir alle mal anschaun. Wobei Spamfilter es ein wenig einfacher haben: es geht nur um eine Zwei-Klassen-Entscheidung. Für die RSS Einträge sollten es ja Gewichte werden, also ein Funktionalzusammenhang.

    Reply
  8. @Tom: Wenn du einfach nur XML Dateien schön anzeigen willst, dann hast du Recht. Sobald du sie aber priorisieren willst und ähnliches brauchst du doch Logik im Backend. Wie willst du das denn über XSLT lösen?

    Reply
  9. @Tobi: Du hast mich glaube ich nicht richtig verstanden. Man kann im Firefox „content handler“ registrieren. Das heißt, dass ich die URL eines Feeds öffnen kann und dann oben ein Dropdown-Menu angezeigt bekomme welches mir dann die Möglichkeit gibt den Feed, ohne große Kopierorgien in irgendwelche Formulare, in meinen Reader hinzuzufügen.

    Da im Screenshot das Menu meine ich: http://userstyles.org/style_screenshots/3862_before.png

    Die Funktion im FF dazu: https://developer.mozilla.org/En/DOM:window.navigator.registerContentHandler

    Reply
  10. @Tom: sehe ich genauso wie Nils. Die Pluginschnittstelle hat an der Stelle einen entscheidenden Vorteil: es können auch andere Datenquellen angezapft werden, nicht nur XML. So ist auch ein Plugin denkbar, dass z.B. regelmäßig ein Email Konto via IMAP abruft, oder das eine Seite verarbeitet, die kein RSS Feed anbietet.

    @freakysheep: eine iPhone Unterstützung gibt es nicht und ist bisher auch nicht geplant.

    @Sebastian: das UML Diagramm hab ich mit „Dia“ gemacht. Das ist kostenlos (OpenSource) und für Windows und Linux verfügbar. Es gibt auch ein Plugin für Dia, dass PHP Code automatisch in ein Klassendiagramm überführt. Ich hab das aber mit Hand gemacht. Für mich ist das ein wichtiger Teil bei der Entwicklung, denn bei der Erstellung arbeitet man seinen Code nochmal durch und findet oft Stellen wo man nachbessern kann bzw. wo etwas unnütz ist.

    Reply
  11. Gregarius war echt cool, das hab ich vorher benutzt. Der Code war aber auch ziemlich am Stück runter programmiert und am Ende hab ich so viel geändert, dass ich schon fast nen fork hätte machen können 😉 Als es dann einige Probleme mit Feeds gegeben hat und es auch keine Unterstützung für Fotoblogs gab, hab ich aufgegeben.

    Reply
  12. @Nils XSLT erlaubt beliebige Parameter (einerseits). Andererseits erlaubt es auch Skripting. Man sollte diese Möglichkeiten ausschöpfen bevor man etwas baut, was bereits im Standard enthalten ist.

    @Tobi ich wüsste keinen Grund weshalb jemand ein Plugin für einen Newsaggregator schreiben sollte, dass Nicht-XML-Inhalte, insbesondere E-Mails, analog zu RSS-Feeds anzeigt. Das liegt nicht im Einsatzgebiet der Anwendung.
    Für die Integration von News einer fremden Webseite, welche kein RSS anbietet, würde ich zudem eher zu einem CronJob greifen, der (Überraschung) RSS erzeugt, welches man über die vorhandene Standardimplementierung auslesen kann. Ich sehe auch dabei keinen Grund das Rad neu zu erfinden.

    Ich bleibe dabei: ich sehe keinen triftigen Grund existierende internationale Webstandards nicht zu benutzen und stattdessen proprietäre Lösungen zu implementieren.

    Reply
  13. Ich war gestern zu faul, um genaueres zu antworten: Ich habe die rsslounge schon vor einer Woche installiert und im gleichen Atemzug wieder deinstalliert, weil ich keinen einzigen Feed importieren konnte, da ich immer einen cURL error bekommen habe. Ich habe parallel dazu auch in deiner Demo ein paar Feeds versucht zu speichern. Vergebens. Entries werden auch bei dir in der Demo bei diesen Feeds nicht angezeigt.

    Abgesehen davon, dass dieses Teil dem Benutzer aber wirklich absolut keine Information darüber gibt, was es gerade tut oder getan hat (Erfolgs- oder Fehlermeldungen, wurde was importiert oder nicht, usw.) und daher von der Usability nicht gerade Pluspunkte von mir bekommt fehlen simple Features:

    – Feeds manuell auf neue Einträge updaten
    – Tags

    Unklar ist mir außerdem warum die App einfach Feeds löscht, die vor einer Sekunde noch da waren und davor auf „rot“ standen und wieso es nur möglich ist das Teil mit allen Rechten öffentlich zu machen oder gänzlich zu protecten bzw. die Möglichkeit wie bei Gregarius fehlt, dass man Feeds nur als Benutzer hinzufügen darf, aber sehr wohl jeder die Feeds sehen kann. Das wäre für mich die sinnvollere Variante gewesen, als alles freizugeben, samt den Einstellungsmöglichkeiten.

    Ich versteh es ehrlich gesagt nicht: Da machst du ein echt cooles Programm, das auf den ersten Blick sauber programmiert worden zu sein und dann ist es dir scheinbar zu viel Arbeit gewesen Hie und Da mal eine Meldung auszugeben.

    Reply
  14. @Tom: na XSLT scheint ja total der Bringer zu sein. An der Stelle würden mich echt Codebeispiele interessieren. Den Gedanken RSS über ein Gateway zu erstellen hab ich bei Gregarius bereits verwendet. War mir dann aber zu umständlich, weil ich an zwei Ecken geschraubt habe.

    @Evelyne: Na da scheint es ein Problem zu geben, dass mit der Konfiguration/Ausstattung deines Servers zusammenhängt. Das plötzlich Feeds verschwinden ist ein Fehlerbild, dass ich bisher nirgends hatte. Gerne kannst du auch auf google code (http://code.google.com/p/rsslounge/issues/list) ein Issue aufmachen und dein Problem nochmal genau erläutern. Dann suchen wir zusammen nach der Lösung.
    Wenn du genauer sehen willst, was passiert, dann kannst du das Logging aktivieren. Dazu unter config/config.ini folgende Option von
    logger.level = ALERT
    auf
    logger.level = DEBUG
    ändern. Dann wird unter data/logs/default genau protokolliert was passiert.

    Aber ich will jetzt Nils seinen Blog nicht mit Supportantworten zuspamen. Du kannst mir gerne auch nochmal eine Email schreiben.

    Reply
  15. Nils, das hat nichts mit der Herkunft zu tun, sondern mit einer Charaktereigenschaft 😛 – nicht umsonst fragen mich die Leute immer wieder nach meiner Meinung – wahrscheinich weil ich immer ehrlich und direkt bin, ich weiß es nicht.

    Tobi, mach ich gerne, ist wohl auch sinnvoller das direkt bei google.code zu melden, damit auch andere etwas davon haben und nicht nur die phm Leserschaft 🙂

    Ich muss aber ganz ehrlich sagen, dass wir gerade was eigenes in die Richtung programmieren, weil es mir zu mühsam ist Gregarius bzw. rsslounge in der Form umzubauen, wie ich das möchte. Da bin ich von Grund auf schneller, zumal es ja nicht so viel Arbeit ist. Page-Grabbing usw. brauch ich auch.

    Habe gestern den Zend_Feed_Reader ausprobiert: Haben sich die Herrschaften von Zend auch etwas dabei gedacht? Kopfschmerzen (wegen mehrfachen Kopfschüttelns) sind vorprogrammiert…

    Stephan, die Yahoo Pipes hab ich heute ausprobiert und dachte mir schon, dass ich mir da einiges ersparen werde, aber leider: Ist zwar eine nette Sache, aber limitiert und öffentlich 🙁

    Reply
  16. Das mit dem „zu mühsam etwas anderes anzupassen“ kenn ich auch, deshalb habe ich dann auch Gregarius nicht mehr verwendet. Page_Grabbing funktioniert mit dem Zend Framework (Zend_Dom) hervorragend, kann ich da nur empfehlen. Hatte dazu mal einen Blogeintrag geschrieben: http://blog.aditu.de/2008/12/02/fremde_seiten

    Zend_Feed hat mich auch nicht überzeugen können. Als ich angefangen habe, musste man sich noch festlegen ob die Quelle ein Atom oder RSS ist. Mit SimplePie klappt aber alles super, also hab da gar keine Probleme. Kann ich an der Stelle nur empfehlen.

    Gib bescheid wenn dein Projekt in einem vorzeigbaren Stadium ist, bin da natürlich neugierig! 😉

    Reply
  17. Was ich noch anmerken mag: Die rsslounge ist wohl das technisch modernste und sauberst programmierteste Tool, das es derzeit in dem Bereich gibt (ich habe die letzte Woche lange gesucht und vieles ausprobiert und denke das so sagen zu können), aber wie schon erwähnt, finde ich es sehr schade, dass von Usability nicht viel vorhanden ist. Und ja, ich könnte debuggen und und und, aber dazu hab ich keine Lust, wenn ich mir auf die Schnelle ein Tool ansehen möchte, um herauszufinden, ob es das tut was ich möchte/brauche. Wenn ich bei einer Monsterapp wie zB Drupal bei der Installation Probs hab, dann sag ich ok, aber nicht bei einem rssreader 🙂

    Ok, werd ich mir dann mal deinen Artikel durchlesen.

    Wir machen da jetzt mal was auf die Schnelle, weil wir ein paar Seiten benötigen, um etwas zu bewerben und da brauchen wir sehr viel Fremdcontent. Mal schauen, ob wir danach die Zeit finden das dann auch in eine Form zu bringen, damit man’s auch verwenden kann, vor allem ohne einer 10 seitigen Doku 🙂

    Reply
  18. @Tobi
    also einmal find ich rsslounge ziemlich cool, hab bis eben nur die Demo-Version getestest.
    Hab zwar gesehen das es nur für Apache ist aber wollte mich nicht von abhalten es wenigstens mal auf lighty zu probieren.
    Als ich es eben runterladen wollte, bin ich fast vom Stuhl gefallen… 5MB entpackt 22MB??? Naja gut, ist halt mit den Zend libs… trotzdem sehr krass.
    Damit ich es nicht auf meinen Server laden muss, versuchte ich fetch (bsd), wget und curl welche alle mit „HTTP request sent, awaiting response… 500 Internal Server Error“ fehlschlugen :/ (ja mit Fx geht der Download trotzdem, also muss es wohl an deiner Homepage liegen…)
    Nachdem ich es endlich drauf hatte (upload…) wurde mir in rot angezeigt das pdo und pdo_mysql benötigt werden (und das Apache mod_rewrite nicht aktiviert ist)… habe mir dann den Blogpost an der Stelle 3 mal durchgelesen, wo du meintest „Der Reader sollte möglichst auf jedem 0815 Webhosting Server lauffähig sein.“… war dann aber auch kein Problem die („BENÖTIGTEN“) libs zu installieren.
    Bei den Datenbankeinstellungen der Installation ist mir dann noch aufgefallen, dass das Passwortfeld den eigenen eingetragenen Wert entfernt wenn man erneut vom Benutzernamen-Feld in jedes andere beliebige Input-Feld klickt… wtf?!?!… war bissle nervig 😉
    Leider habe ich erst dann bemerkt, dass mod_rewrite (also der Apache) zwingend erforderlich ist… also… da muss ich echt sagen: viel heiße luft… leider wandert auch diesmal ein auf den ersten Blick schöner reader nach /dev/null

    Reply
  19. @tjado: Sorry, aber dein Kommentar ist echt merkwürdig. Wenn du schon Lighty einsetzt, solltest du auch damit rechnen, dass du selbst etwas konfigurieren musst. In der ZF-Anleitung steht sehr genau wie man die Rewrite-Rule unter lighty setzt: http://framework.zend.com/wiki/display/ZFDEV/Configuring+Your+URL+Rewriter?focusedCommentId=9932#comment-9932

    Nichts gegen Lighttpd, den nutze ich auch ab und an für Projekte, aber man muss sich halt mit der Konfiguration auskennen und nicht darauf bauen, dass alle Programme darauf Rücksicht nehmen.

    Reply
  20. hallo,

    ich habe mir gestern auch mal die rss lounge installiert und habe beim aufruf direkt einen ServerFehler 500 bekommen.

    Installation erfolgte auf einer subdomain bei Domainfactory, dort wird der Apache 1.3 verwendet.
    Duch hinzufügen von von „RewriteBase /“ konnte ich allerdings die Installation ohne Probleme durchführen und nutze es jetzt auch 🙂

    Vielleicht hilft es ja den einen oder anderen weiter.

    Anfolgender Stelle in der .htaccess hinzugefügt:

    RewriteEngine on
    RewriteBase /

    Reply
  21. @tjado: Ich habe rsslounge nicht auf allen Webserver getestet und deshalb auch Apache auf die Liste der Anforderungen gesetzt. Der durchschnitts 0815 Webhoster bietet (und das musst du zugeben) die übliche PHP/MySQL Kombi an.
    Grundsätzlich ist es aber kein Problem die Rewrite Regeln auf lighttpd zu übertragen (dort dann in die Konfiguration). Gerne nehme ich die Konfiguration dann auch in die Installationsanleitung auf, ich bin hier also um Feedback sehr dankbar.

    @sven: vielen Dank für die Information. Ich hab das so mal in die FAQ mit aufgenommen. Ein Problem mit RewriteBase scheint es bei mehreren zu geben.

    Reply
  22. @Bastian
    tja jeder hat seinen Schreibstil, ich wollte halt meine ersten 2 min Erfahrung als ganzes wiedergeben… und bitte sag mir nicht womit ich rechnen muss, immerhin hätte man es auch so implementieren können, dass RW nicht benötigt wird.

    @tobi
    ja aber viele 0815 webhoster haben kein pdo geschweige den pdo_mysql…
    Werde dir alles zukommen lassen bezüglich lighty, hätte aber auch gerne ein Feedback bezüglich der anderen Dinge 😛
    Übrigens habe ich das Ding nicht gleich gelöscht, dafür gefiel es mir iwie doch zu gut 😉

    Reply
  23. XSLT funktioniert genau so lange, wie die eingehenden Quellen wohlgeformtes XML sind. Was bei RSS der Fall sein sollte, aber halt nicht immer ist.

    Ich habe in den 2000er Jahren einen Desktop-RSS-Aggregator geschrieben und meine Erfahrungen sammeln dürfen. Der Wunsch, Nicht-XML-Content zu verarbeiten kam damals auch, insofern kann ich die Idee der Pluginschnittstelle absolut nachvollziehen.

    Machen wir uns nichts vor: Solche Projekte entstehen, weil man Bedarf hat oder weil man etwas neues lernen will. Wenn man cron nicht lernen möchte (oder ihn schon kennt), macht man es halt ohne. Wenn dann noch das Ziel, ist auf jedem 0815-PHP-Webspace nutzbar zu sein, fällt cron einfach aus.

    Das proprietär zu nennen, finde ich bei einer OpenSource-Anwendung doch etwas gewagt.

    Reply
  24. @Janek von Hand einen „Quirks-Mode“ für nicht wohlgeformte RSS-Feeds schreiben zu wollen, halte ich für keine gute Idee.

    Ein Tutorial zu RSS via XSLT gibt es übrigens hier. Natürlich mit Codebeispielen. Auch für Foto-Blogs: http://www.pheed.com/pheeder/developer/XSLTexample.html

    Wenn man XSLT für Atom, RSS und OPML verwendet, bräuchte man für einen Reader im Wesentlichen nur noch Login, Menüs und Grafiken schreiben. Der Rest passiert automatisch und ist per se skinable, gut dokumentiert und erweiterungsfähig.

    Falls man einen FO-Prozessor installiert, dann über XSL:FO sogar mit PDF-Export.

    Reply
  25. @Tom: Niemand sagt, dass ein Quirksmode eine gute Idee ist. Das ändert jedoch nichts an der Notwendigkeit.

    Wenn Du einen RSS-Reader schreibst und Nutzer außer Dir selbst hast, wirst Du eines Tages Emails erhalten, in denen man Dir mitteilt, dass RSS-Feed XYZ von Deinem Reader nicht gelesen werden kann, Google Reader und Bloglines das aber sehr wohl beherrscht. Wirst Du dann zu Deinem Nutzer gehen und sagen: Ja, aber das was Google und Bloglines machen ist keine gute Idee? Mein RSS-Reader kann den Feed zwar nicht anzeigen, aber er verhält sich _korrekt_! Dein Nutzer wird Dir den Stinkefinger zeigen und sich einen RSS-Reader suchen, der die Feeds anzeigen kann, die ihn interessieren.

    Es ist ein Fakt, dass RSS-Feeds irgendwann fehlerhaft sein können. Sei es, weil sie von Hand erstellt wurden, das Template, das CMS einen Fehler hat oder weiß der Teufel warum.

    Warum haben die HTML-Browser einen Quirksmode, auch wenn er keine gute Idee ist? Weil es Millionen von Webseiten gibt, die sonst nicht angezeigt werden könnten.

    Gleiches gilt für RSS-Feeds.

    Reply
  26. @Janek was du behauptest, das stimmt einfach nicht! Wenn ein Feed nicht wohlgeformt ist, dann kann kein Reader ihn lesen. Weil sie alle mit XML-Parsern arbeiten und für nicht-wohlgeformte Dateien keinen Strukturbaum erzeugen können.

    Probier doch mal Thunderbird, oder NewsFox, Firefox, Internet Explorer, oder einem anderen Tool ein paar kaputte Feeds vorzusetzen und du wirst sehen was passiert.

    Nicht markierte CData-Blöcke, fehlende Attribute, doppelte Ids oder URLs, fehlende oder doppelte Titel, oder falsch formatierte Datumsangaben mag dir der ein oder andere noch durchgehen lassen. Aber bei Verschachtelungsfehlern ist Schluß.

    Das RSS-Feeds mehrheitlich von Hand erstellt werden, glaube ich im Übrigen nicht. Dazu brauchst du nur für ein paar Feeds den Tag „generator“ anzuschauen. In der Regel wird dort der Name irgendeines Tools stehen.

    Möglicherweise ist dir sogar noch nie ein defekter RSS-Feed im Netz begegnet: denn 1. werden die meisten automatisch erzeugt udn 2. fehlerhafte Feeds fallen schnell auf und werden schnell (meist binnen Stunden) korrigiert – zumindest die größeren.

    Im Übrigen arbeitet auch der Feed von „PHP hates me“ mit XSLT. Das verlinkte Stylesheet ist hier gespeichert: http://feeds2.feedburner.com/~d/styles/rss2full.xsl

    Also: XSLT ist nichts Exotisches, sondern absoluter Standard.

    Falls du aber meinst, dass ein RSS-Reader grundsätzlich mit nicht wohlgeformten Feeds umgehen sollte, dann baue doch absichtlich mal einen Fehler in DEINEN Feed ein und lass zum Beispiel einen „“ Tag weg. Wir werden ja sehen, wie lange es dauert bis sich die Leute bei dir melden 😉

    Reply
  27. @Tom: Ich habe überhaupt nichts gegen XSLT, ich nutze es täglich. In den letzten Jahren habe ich vermutlich mehr XSLT geschrieben als Java oder PHP.

    Vielleicht reden wir auch einfach aneinander vorbei. XSLT als Präsentationsschicht funktioniert natürlich, man muss jedoch sicherstellen, dass nur wohlgeformtes XML den XSLT-Prozessor erreicht.

    Nach meiner Erfahrung als Entwickler eines RSS-Readers ist das bei RSS-Feeds nicht gegeben. Du musst mir nicht glauben, ich bin was RSS-Reader angeht nur ein kleines Licht. Aber hier ist ein Link von Nick Bradbury, der mit Feed Daemon den wahrscheinlich am weitesten verbreiteten RSS-Reader vertreibt: http://nick.typepad.com/blog/2006/09/fixing_funky_fe_1.html.

    Er verdient sein Geld damit, RSS-Feeds anzeigen zu können und sagt, dass ein XML-Parser dafür nicht gut genug ist (bzw. dass die Qualität der RSS-Feeds zu schlecht ist).

    Es gibt den Universal Feed Parser (http://www.feedparser.org/docs/bozo.html) für Python, der Feeds parsen kann, unabhängig davon ob sie wohlgeformt sind oder nicht. Ich weiß von Portierungen dieses Parser nach Ruby und Java. Ich wage zu behaupten, dass es diese Projekte nicht gäbe, wäre bei der Qualität von RSS-Feeds alles in Butter.

    Möglicherweise hast Du andere Erfahrung, was die Qualität von RSS-Feeds angeht. Ich jedenfalls habe meine. Und dabei ist es egal, ob die Feeds automatisch generiert werden oder nicht. Irgendwann macht irgendwer einen Fehler im Template für die Generierung des RSS-Feeds. Und wenn Dein Einkommen davon abhängt, dass Du RSS-Feeds parsen kannst, wirst Du alles tun, auch fehlerhafte RSS-Feeds zu parsen.

    Und sie dann, vielleicht, mit XSLT anzeigen.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen