Nach langer Zeit ist es nun mal wieder so weit: eine neue Version von rsslounge ist verfügbar. Es gibt einige Änderungen und Optimierungen. Neue Features und größere Umbauten sind immer eine Frage der Zeit. Ich habe ja einiges auf der Wunschliste und auch im Forum haben einige Wünsche geäußert. Besonders interessant ist eine Funktion, so dass aus den gesammelten Feedbeiträgen wieder ein RSS Feed erzeugt wird. Das kann dann an beliebiger Stelle (z.B. in einer Android RSS App) eingebunden werden.
An dieser Stelle vielen Dank an alle, die mich mit Sprachdateien versorgt haben und mir Feedback geben. Sofern ich die Zeit finde, versuche ich sinnvolle Neuerungen einzubauen. Die Performance zu optimieren (besonders das erstmalige Laden von rsslounge zu beschleunigen) war im aktuellen Update mein primäres Anliegen. Die Änderungsliste ist im Changelog zu finden.
Download: rsslounge 1.7
In letzter Zeit habe ich wieder etwas mehr Muse zu bloggen und werde auch die nächsten Wochen hier etwas aktiver sein. Besonders rsslounge, das ich die letzten Monate arg vernachlässigt habe, kommt auf die Agenda. Ein neuen Release mit einigen kleinen Verbesserungen wird es also bald geben. Darüber hinaus möchte ich wieder etwas mehr über interessante Dinge aus dem Bereich Softwareentwicklung und Fotografie schreiben.
In diesem Sinne bis zum nächsten Post. Ich hoffe es gibt noch einige interessierte Leser!
Häufig kommt es vor, dass Sprachdateien nicht vollständig sind. Ich habe den Effekt bei rsslounge, da ich hier von verschiedenen Personen Sprachdateien bekomme. Da ich nicht sicherstellen kann, ob auch wirklich jeder Key der Sprachdatei übersetzt wurde (außer ich prüfe manuell die gesamte Datei), bietet es sich an, einfach als Fallback-Lösung die entsprechende englische Übersetzung zu verwenden.
Zend_Translate bietet hier eine einfache Möglichkeit “Routen” zu erstellen. Das heißt man kann festlegen, welche Sprache alternativ verwendet werden soll. Dabei können sogar Ketten gebildet werden (z.B. wenn Französisch nicht gefunden wurde, dann in der deutschen Übersetzung suchen und wenn dort auch nichts gefunden wird, in der englischen). Wobei sich mir der Sinn von so einer Verkettung nicht ganz erschließt.
Das setzen einer Route ist sehr einfach. Folgendes Beispiel scanned ein übergebenes Verzeichnis nach CSV Dateien und übernimmt deren Inhalt als Übersetzung. Mit dem Key “route” wird definiert, wie die Sprachen verkettet werden sollen. In diesem Beispiel ist Englisch die Fallbacksprache für Deutsch und Französisch.
$language = new Zend_Translate(
'csv', // Typ der Quelle: hier csv Dateien
'locale', // Quell-Verzeichnis
'en', // Standard Sprache
array( // Optionen
'scan' => Zend_Translate::LOCALE_DIRECTORY,
'route' => array( 'de' => 'en', 'fr' => 'en' )
));
Der sauberste Weg ist es natürlich alle Schlüssel auf zu übersetzen. Beim Aufspüren von fehlenden Übersetzungen hilft Zend_Translate ebenfalls.
Ein Projekt, das schon länger auf der ToDo Liste steht, habe ich nun heute etwas genauer in Augenschein genommen:
Bei HeadJS handelt es sich um ein kleines JavaScript Skript, welches in der Lage ist, weitere JavaScript Dateien nachzuladen:
head.js(
"/path/to/jquery.js",
"/google/analytics.js",
"/js/site.js",
function() {
// all done
}
);
Der Vorteil ist die Tatsache, dass die weiteren Skriptdateien kontrolliert parallelisiert heruntergeladen werden. Wird dieser Aufruf am Ende der Website durchgeführt (also vor dem schließenden body Tag), so kann die HTML Seite, sowie die Stylesheets ungehindert geladen und gerendert werden, bevor mit der Verarbeitung von JavaScript Dateien begonnen wird. Das Ergebnis: die Seite wird schneller angezeigt. Mit 2,3 kB ist das Skript auch schön kompakt und klein.
Weitere Features sind eine bessere HTML5 Kompatibilität, automatisch gesetzte CSS Klassen (z.B. für bestimmte Browser) und noch einige weitere Schmankerl. Es lohnt sich also das kleine Skript genauer anzusehen. Im Einsatz habe ich es bei rsslounge (ab Version 1.7, die ich in wenigen Tagen online stellen will).
Zur headJS Webseite: http://headjs.com/
Ich hatte ja bereits in einem früheren Beitrag erwähnt, dass ich mich daran versucht habe den RSS Reader rsslounge lernfähig zu machen. Dazu sollte der Benutzer neue Beiträge als interessant oder uninteressant klassifizieren können. Ausgehend von der Bewertung dieser bestehenden Einträgen durch den Benutzer, sollten dann neue Feed-Beiträge automatisch weiter nach oben (Interessantes) oder nach unten (Uninteressantes) einsortiert werden.
Hierfür habe ich verschiedene Verfahren der Test-Klassifikation aus dem Information Retrieval in Betracht gezogen und hinsichtlich ihrer Eignung bezüglich des Problems untersucht. Anschließend habe ich als Referenz die Lernfähigkeit mittels dem naiven Bayes-Klassifikators implementiert. Als zweite Lösung habe ich das k-nächste-Nachbarn Verfahren, basierend auf dem simulierten Abkühlen implementiert und untersucht, ob eine der beiden Lösungen für dieses Problem in Frage kommt. Das Ergebnis ist ist leider sehr ernüchternd.
Trotzdem möchte ich hierzu das Paper, das ich dazu verfasst habe, veröffentlichen. Zum einen gibt es einen guten Überblick und eine gute Einführung in die gängigen Verfahren der Text-Klassifikation, zum anderen halte ich das optimierte k-nächste-Nachbarn Verfahren für sehr leistungsfähig. Für passende Problemstellungen ist das ein praxistauglicher Lösungsweg.
Nachdem ich die gesamte Entwicklung von rsslounge offen gelegt habe, halte ich es für sinnvoll auch diesen Versuch (und das damit verbundene Paper) zu veröffentlichen. Vielleicht inspiriere ich jemanden, oder liefere für weitere Arbeiten eine Grundlage bzw. Informationen.
Das Paper als PDF zum Download (1.5MB): Automatisiertes Priorisieren von RSS Feed Beiträgen mittels maschinellem Lernen
Nachdem sich Supportanfragen mittlerweile häufen und immer wieder die gleichen Fragen aufkommen, habe ich nun ein Forum eingerichtet. Dort können Fragen gestellt und Probleme diskutiert werden. Vielleicht reagiert ja jemand schneller, zudem ist so ein Forum immer ein ganz gutes Informationsarchiv.
Nun ist es soweit: die neueste Version von rsslounge ist online. Zahlreiche neue Features sind mit an Bord und können sicherlich den ein oder anderen Skeptiker überzeugen, der bisher noch gezögert hat. Ich will nun nicht groß werben oder rumtexten und so gibt es hier einfach die wichtigsten Änderungen im Überblick:
- Verbesserte Oberfläche (neue Menüs für Filtereinstellungen)
- Neue Sortiermöglichkeit nach Priorität
- rsslounge arbeitet nun auch auf dem Internet Explorer 7+
- rsslounge arbeitet nun auch auf dem iPad
- Neuer öffentlicher Modus für einen Gastzugriff. Alle Einträge werden auch nicht authentifizierten Benutzern schreibgeschützt angezeigt
- alle Änderungen gibt es im Changelog
Wenn etwas bei euch nicht klappt, ihr Probleme beim Aktualisieren habt oder einfach so etwas los werden wollt, dann schreibt mir eine Email oder nutzt einfach das Kontaktformular auf http://rsslounge.aditu.de

