Schlagwort-Archiv: Source

TrayRSS Sideproject: RssSearch Version 0.0.2

Jump to english version

Hallo da draußen!

Vor nicht all zu langer Zeit trat ein Besucher meiner Webseite mit einer Frage an mich heran:

Für mich ist es wichtig Schlagworte und Phrasen auch auf (oder gerade nur auf) der original News-Webseite zu finden. [...] Kennst du Programme die das leisten?

Zu dem gegebenen Zeitpunkt musste ich dies verneinen. Waren weder TrayRSS noch die mir bekannten Konkurrenz Programme dazu im Stande. Sogleich habe ich diese Funktionalität in die Roadmap von TrayRSS aufgenommen.

http://trayrss.nullpointer.at/bug/roadmap_page.php?version_id=30

Doch leider wird bis dahin noch einiges an Zeit vergehen, stehen, damit alles gut zusammenspielt, doch noch einige andere Änderungen an TrayRSS ins Haus, wie zB. die grafisch überarbeitete Notifikation (Geplant für 1.3.0 – Roadmap von TrayRSS). Diese soll unter anderem leichter um zusätzliche Funktionen erweiterbar sein, um zukünftig mit dem angedachten Feedbrowser, zur Anzeige und Sortierung sämtlicher Feedeinträge, zusammenspielen zu können.

Ohne diesen Feedbrowser wäre eine entsprechende Suchfunktion meiner Meinung nach  nicht sinnvoll umzusetzen. Daher habe ich mich diese Woche hingesetzt und für Alle die eine ähnliche Funktion suchen ein kleines Tool geschrieben:

RssSearch

Dieses Tool ist denkbar simpel gehalten und war ein Vorabtest der Möglichkeiten und der beanspruchten Zeit für eine Tiefensuche. Es bietet dem Benutzer die Möglichkeit Feeds nach einem oder mehreren Schlagwörtern zu durchsuchen.

Geschrieben wurde es in Java und setzt daher ein installiertes Oracle JRE, mindestens in Verison 1.6, voraus. Wenn dies noch nicht vorhanden ist, kann man es hier beziehen.

Das Tool ist rein kommandozeilenbasierend und wird folgendermaßen benutzt:

java -jar RssSearch.jar -o|-a <keyword1> <keyword2> <…> -f <feed1> <feed2> <….>

Wobei -o für ein or – oder – steht und man damit einen oder mehrere Feeds nach nur einer vorhandenen Stelle eines einzelnen der gesamt gegebenen Keywords absucht.

Mit -a für and – und – erhält man nur diejenigen Treffer, die alle angegebenen Keywords enthalten.

Das Programm schreibt dann die Links zu allen Feedeinträgen an, die den angegebenen Kriterien entsprechen. Wurde mit -o gesucht wird zusätzlich noch das gefundene Keyword angegeben.

Damit hoffe ich meinem Besuchern vorab helfen zu können, würde mich aber dennoch freuen, euch bald als TrayRSS User begrüßen zu können. Sobald ich die Suchfunktionimplementiert habe, versteht sich ;)

Natürlich ist auch RssSearch wieder als OpenSource Software unter der GPL 3 verfügbar, die Sourcen können auf GitHub unter https://github.com/thefake/at.nullpointer.rsssearch eingesehen werden.

Selbst bauen kann man sich das Tool mittels Maven. Für diejenigen die sich die Finger daran nicht schmutzig machen wollen hier noch ein Download Link:

RssSearch-0.0.2

Na denn, happy searching!

 

Und noch für die englisch sprachigen unter euch:

Hello everybody!

A few days ago, a visitor of my website contacted me, regarding his problem with searching rss feeds. He wants to find keywords or keyphrases within the source of the feed entry, not only in the entry itself.

TrayRSS couldn’t fullfil this requirements at the given time. That’s why i’ve added this feature request to the roadmap of trayrss.

http://trayrss.nullpointer.at/bug/roadmap_page.php?version_id=30

As you can see, in the complete roadmap, it will take some time till it gets implemented. There are some other major changes going on. As an example, the new notification window has to be redesigend, to fit the requirements of a feedbrowser. In my opinion, without a feedbrowser, showing the entries of the feeds in a sorted way, it isn’t possible to implement any kind of search in a user friendly way.

RssSearch

I made this simple tool to test the requested search method for possible restrictions and excessive timing for a deep search withing an feed entry. It offers the user the possibility to search for one or more keywords.

Written in Java it requires the Oracle JRE installed, in version 1.6 or higher.  You can get it  here.

It is a command line tool, and i’d like to show you how it can be used:

java -jar RssSearch.jar -o|-a <keyword1> <keyword2> <…> -f <feed1> <feed2> <….>

The option -o stands for or and it offers those feed entrys that matches a single of the given keywords

With -a meaning and the tool will show only those feeds, that matches all of the given keywords.

As the result the link to every given feed entry matching the conditions will be displayed to the user. If searched with the -o parameter, the matching keywords will be displayed too.

Hopefully this will help my users searching within feeds. And as soon as i can offer this function in TrayRSS i’m hoping to gain you as a user of it.

RssSearch is published under the GPL 3 as Open Source. If you would like to see the sources, just visit GitHub https://github.com/thefake/at.nullpointer.rsssearch.

You can build the tool on your own with Maven out of the sources, but for faster results, just get it here:

RssSearch-0.0.2

So long, happy searching!

Ähnliche Artikel:

RSSOwl_thumb.png

Ein Blick über den Tellerrand: RSSOwl

Beim Blick über den Tellerrand liegt der Fokus nicht auf der Funktionalität der Software, sondern auf der Organisation der Entwicklung und am Aufbau des Sourcecodes. Hier geht es darum von anderen Projekten zu lernen und die eigene Organisation zu verbessern. Daher erfolgt der hier präsentierte Blick auf die Software protokollartig durch meine Augen und entlang meiner Lernkurve.

Überblick

RSS Owl versteht sich selbst als komfortable Software um RSS, RDF und Atom News Feeds zu organisieren, zu suchen und zu lesen. Als besondere Stärken führt man die gemerkten Suchen, die Benachrichtigung aus dem Tray, schnelle Volltextsuche und die übersichtliche und saubere GUI ins Feld.

Auch ich hatte RSS Owl bereits eingesetzt und kann diese Stärken bestätigen. Damit steht es in direkter Konkurrenz zu dem Google Reader, der plattformunabhängig übers Web jederzeit den aktuellen Datenbestand zur Verfügung stellt.

Erhältlich ist RSS Owl unter der Eclipse Public License unter folgender URL: http://www.rssowl.org

Nun aber schnell mal per SVN die zuletzt veröffentlichte Version 2.0.6 auf die Platte ausgechecken!

Facts

Während das passiert, ein paar Facts rund um die Entwicklung. RSS Owl ist seit Juli 2003 ein Projekt auf Sourceforge unter der Leitung von Benjamin Pasero. Neben Benjamin Pasero entwickelt derzeit noch ein weiterer Entwickler an dem Programm mit. Es hatte bereits Anfang 2005 die 10.000 Downloads/Monat Marke durchbrochen, welche es seither verteidigt. Letztes Jahr wuchs das Projekt mit 359 Commits (also fast täglich) und es wurden 3.310 Files dabei hochgeladen. Insgesamt steht RSS Owl zum Zeitpunkt des Verfassens meines Artikels bei 7538 Commits. Macht fast 95 Commits je Monat.

Organisation

Homepage

Die Homepage ist einfach gehalten, was ich als durchaus positiv werte. Als Benutzer kommt man so schnell zu dem was einem interessiert. Interessanter versteckter Hinweis: RSSOwl nutzt den YourKit Java Profiler um die eigene Software zu analysieren und Schwachstellen aufzudecken. Auch den RSS Feed zur Verfolgung der Veränderungen im Source finde ich eine gute Sache.

Bugtracker

Bei der Suche nach einem BugTracker stößt man leider auf kleinere Hürden, der alte Link http://dev.rssowl.org der immernoch in der Wiki zu finden ist, sperrt uns mit einer Passwortfrage aus. Der neuere Link http://project.rssowl.org auf dem die Software Ratioal Team Concert zur Verwaltung der Entwicklung diente ist mittlerweile ebenfalls nicht mehr erreichbar. Bei den Entwicklern nachgefragt stellte sich heraus, dass der RTC Server nicht mehr in Verwendung ist. Um trotzdem einen kleinen Überblick zu erhalten konnte ich auf Youtube ein Video entdecken, in dem der Entwickler das Zusammenspiel zwischen Projekt Verwaltung, User und Entwickler aufzeigt.:

Rational Team Concert for open source development: RSSOwl

Da es sich hierbei vermutlich nur um ein temporäres Problem handelt, würde es sich lohnen später nochmal vorbeizusehen um einen persönlichen Eindrück zu gewinnen.

Source

RSSOwl Package ExplorerBuild

Das Ding das erste mal selbst zu bauen wirkt gar nicht so trivial wie erhofft. Und schon bin ich auch in die erste kleine Falle gelaufen. Selbst Schuld kann man sagen, haben die Entwickler doch in der  Wiki den Build Prozess von RSSOwl ausreichend erklärt, wie man an ein funktionierendes Projekt Set kommt. Der vorgeschlagene Weg ist flott eingeschlagen und schon ist man mit einer Liste an Projekten konfrontiert. Noch die Launch Konfiguration für mein Eclipse angepasst und schon ist das Programm von Eclipse aus zu starten. Ein Problemloser Einstieg, eigentlich.

Tests

Auch die JUnit Tests laufen wie geschmiert. 842 Tests überprüfen die Funktionstüchtigkeit von RSSOwl, von denen 2 Failures gemeldet wurden. Mit einem raschen Blick auf die Fehler Ursache stellt sich heraus, dass hier die unterschiedliche Zeitzone die Schuld trägt. Mehrere Tests wurden auch ignoriert, viell. in Zusammenhang mit den Nullpointer Exceptions die beim Zugriff auf das Plugin “org.eclipse.equinox.common” geworfen wurden. Dem gehe ich nun aber nicht weiter nach.

Die Tests sind umfangreich, großes Lob meinerseits! Auch sind die Testfälle ausreichend beschrieben und weisen Verweise auf gemeldete Bugs auf. Wie mit JUnit üblich existiert eine TestSuite mit mehreren Untergruppen. Dabei lässt sich bereits etwas über die Struktur des Programmes herauslesen. So gibt es Gruppen für den Core, für Funktionen die das Netzwerk benötigen und für welche die es nicht tun, für die Performance und für Spezialbereiche wie der PasswordProvider oder die JobQueue.

Packages/Module

Die eigentliche Anwendung selbst wurde aufgeteilt in die Komponenten Core und UI. Innerhalb der jeweiligen Subprojekte wurden die Klassen nach Funktionalität in verschiedenste Packages aufgeteilt. Hier sieht alles recht normal aus. Die relativ geringe Modularisierung wurde durch Programmierung gegen Interfaces ausgeglichen.

Das Projekt setzt auf SWT zur GUI Erzeugung. Im Speziellen wird hier Eclipse als Rich Client Plattform eingesetzt und die Ähnlichkeit im laufenden Betrieb lässt sich auch kaum leugnen. Vorteil davon ist ein professionelles Erscheinungsbild, und viele Sorgen die einem die Plattform abnimmt.

Alleine der Core von RSS Owl umfasst 365 Klassen, und so ist die Einstiegshürde bereits recht hoch. Um dennoch einen Einblick zu gewinnen, liefern einem die Authoren eine entsprechende Übersicht: Architecture and Extension Points

Comments

Die Authoren haben ihren Code durchgehend mit Kommentaren (Javadoc und andere Erklärungen) versehen. Zahlreiche Kommentare dienen als Lesestütze für den Sourcecode. Dabei haben sie gute Arbeit getan, die die Einstiegshürde für weitere helfenden Hände verringert und auch den alten Hasen dienlich ist.

Libs

RSSOwl nutzt db4o als Datenbank, greift auf die RSS Feeds mithilfe von Apaches httpclient zu und wertet sie mittels JDOM aus. Die angepriesene flotte Volltextsuche realisiert RSSOwl mithilfe von Lucene, ebenfalls ein Apache Projekt.

Da ich bisher noch kein Eclipse RCP Projekt gesehen habe sind die Abhängigkeiten zwischen den Projekten noch etwas undurchsichtig für mich. Prinzipiell bleibt zu sagen dass für jede genutzte fremde Library ein eigenes (Sub-)Projekt, ein sogenanntes Plugin, angelegt wurde, in dem neben der Binary Jar und den Sourcen noch richtigerweise die Lizenz der jeweiligen Bibliothek. In dem Zusammenhang stellt sich mir unabhängig von RSSOwl die Frage, wie in Maven derartiges mit Open Source Abhängigkeiten behandelt wird, schließlich ist je nachdem mindestens die Lizenz ein muss!?

Distribution

Dank der Nutzung von Eclipse RCP steht einer Veröffentlichung für die gängigen Plattformen Linux, Windows und Mac OS X nichts im Wege, außer vielleicht die Suche nach dem wie. Hier lässt die Wiki aus und der Haufen an XML Datein ist nicht sprechend genug. Meine Vermutung ist, dass ich eines der Goals aus der build.xml des Projekts org.rssowl.build verwenden müsste. Auch hier hilft mir der Author weiter, und meine Vermuting war nahe dran. In org.rssowl.build liegt eine rssowl.product Datei über die man den Eclipse Export Wizard anschmeißen kann. Auch das ist recht schnell geschehen.

Fazit

Für meinen nächsten Tellerrand muss ich mir mehr Zeit nehmen. Eine Eclipse RCP Anwendung nur aus flüchtigen Blicken in einen Source heraus zu verstehen ist nicht so einfach, mehr Basics müssen her.

Trotzdem hat sich gezeigt, dass RSSOwl sehr gut organisiert ist. Strukturierter gut kommentierter Code helfen einem sich im Projekt zurecht zu finden. Wirkt nach einer soliden Basis, die das Programm auch in Zukunft gut dastehen lassen wird.

Ähnliche Artikel: