von Maximilian
Freitag, 2. Juli 2010 20:14
Ich habe wieder etwas Zeit in meinen feedCarrier investiert. Dabei ist das kleine Benachrichtigungsfenster komplett gewichen und stattdessen gibt es eine Übersicht über alle Feeds mit der Anzeige der neuen Artikel. Demzufolge sieht man bei neuen Artikeln keine Beschreibungen mehr sondern nur noch die Titel. Aber Bilder sagen mehr als tausend Worte, deshalb hier nun ein paar Screenshots:

Neu ist auch die Benachrichtigung mittels der Balloninfo. Diese kann optional dazugeschaltet- sowie die Anzeigedauer bestimmt werden. Auch das Trayicon selbst verändert sich bei neuen Artikeln. Gibt es nichts zu lesen ist das Icon grau, ansonsten weiß-organge.
Bei unerwarteten Programmfehlern gibt es nun einen ausführlichen Fehlerdialog welcher direkt die Möglichkeit bietet mir diesen Report zukommen zu lassen. Dabei werden natürlich keine privaten Daten übertragen.
Die neue Version kann hier heruntergeladen werden: feedCarrier.zip
von Maximilian
Montag, 24. Mai 2010 20:00
Wie versprochen gibt es nun ein Update von dem Ergebnis meines letzten Weekend Coding Stunts, dem feedCarrier. Vorweg: Einiges was ich selbst auf meiner Todo-List hatte und was mir im nachhinein Vorgeschlagen wurde, konnte ich auf Grund von Zeitmangelns noch nicht umsetzen, aber das wird mit den nächsten Versionen seinen Weg ins Programm finden. Hier nun eine Übersicht aller Neuerungen:
- Im Benachrichtigungsfenster können neue Artikel mit der rechten Pfeiltaste geladen werden.
- Die neuen Artikel sind nun nach Veröffentlichungsdatum sortiert.
- Das Veröffentlichungsdatum wird im unteren Teil des Benachrichtigungsfensters angezeigt.
- Bei den Feedeinstellungen können Benutzerinformationen angegeben, so dass sich auch Feeds herunterladen lassen, welche eine Anmeldung erfordern, wie zum Beispiel die Twitter Timeline.
- Es kann eine Sounddatei ausgewählt werden, welche bei neuen Feeds wiedergegeben wird (derzeit werden nur Sounddateien im Wave (*.wav) Format unterstützt.
- Es gibt eine globale Fehlerbehandlung.
- Der lokale Cache der gelesenen Feeds kann automatisch bereinigt werden um Speicherplatz zu sparen. Diese können entweder nach Datum oder eine bestimmten Anzahl gelöscht werden.
- Die Suche nach neuen Artikeln kann unterbrochen werden wenn der Benutzer den PC nicht benutzt. (Hierzu besten Dank an Thomas der das Feature Vorgeschlagen hat sowie an Tommy der mir den Code für den IDLE-Modus zur Verfügung gestellt hat)
- Das Programm verfügt nun über eine Autoupdate Funktion die dafür sorgt, dass das Programm immer aktuell gehalten wird. Spätere Versionen sind auch über diese zu beziehen.
- feedCarrier kann wahlweise direkt beim Windowsstart gestartet werden.
- Credits im “Über…”-Bereich hinzugefügt.
Die aktuelle Version gibt es hier zum Download: feedCarrier_Beta2.zip
Und wie immer gilt: Featurevorschläge sind ausdrücklich Willkommen, Fehlermeldungen eher weniger aber was muss das muss.
von Maximilian
Montag, 17. Mai 2010 00:36
Nun zum zweiten Teil meines Weekend Coding Stunts. Heute war ich auf Grund mangelnder Motivation nicht so produktiv wie ich es geplant hatte. Dennoch habe ich meinen kleinen Feednotifer zum Funktionieren gebracht. Alle Funktionen konnte ich zwar nicht umsetzen aber das elementare, dass zeitgesteuerte Abfragen von beliebigen Feeds im RSS-Format, funktioniert.


Mit einem Klick auf den Titel wird der Artikel im Standardbrowser zum weiterlesen geöffnet. Wie schon erwähnt ist noch nicht alles implementiert was ich mir vorgenommen hatte. Das kommt noch in den nächsten Tagen:
- Benachrichtigungsoptionen (Ton abspielen, Fensterblinken, etc.)
- Automatisch mit Windows starten
- Import und Export von Feeds im OPML-Format
- Anpassen des Benachrichtigungsfensters
- Unterstützung von ATOM-Feeds
- Autoupdate
Ist also noch ein klein wenig was zu tun. Nun aber noch ein paar Informationen zu der technischen Umsetzung.
Im Gegensatz zum normalen XmlDocument nimmt sich Linq2Xml beim Auslesen nicht viel. Man spart bei einfachen Abfragen nur unwesentlich was an Code. Geschwindigkeitsvorteile konnte ich auch nicht erkennen, dies hängt in erster Linie aber wohl mit der Internetverbindung zusammen um überhaupt die XML-Datei herunterzuladen. Linq2Xml muss ich dann bei Gelegenheit nochmal zum Erstellen von Dateien testen.
Was das Observer Pattern angeht ist dies in .NET leichter umzusetzen als ich Gedacht habe. Ich habe in meiner Benachrichtigungsklasse das Singleton Pattern implementiert und in dieser Events definiert welche bei Veränderungen von globalen Eigenschaften wie die Settings oder das hinzufügen von ungelesenen Feeds gefeuert werden. Alle Controllerklassen haben sich dann an die Events gehängt die sie benötigten und wurden so über neue Feeds oder sich ändernde Einstellungen informiert.
Zum Schluss noch der Download der Beta1: feedCarrier_Beta1.zip
Kleine Anmerkung: Es gibt noch keine Fehlerbehandlung, wenn also irgendwo was schief geht knallt es entweder komplett oder ihr seht die Standard .NET Fehlermeldung. In jedem Fall mir bitte per Mail oder IM Bericht erstatten, ich kümmere mich dann darum.
von Maximilian
Samstag, 15. Mai 2010 11:02
Es ist mal wieder soweit. Nach knapp 5 Monaten habe ich mir wieder einen Weekend Coding Stunt überlegt welchen ich dieses Wochenende umsetzen werden.
Die Anwendung welche ich entwickeln möchte ist nichts besonderes und garantiert nicht einmalig, aber ich möchte mich gerne mit Linq2Xml auseinandersetzen und was bietet sich da mehr an als ein Feed Reader? Denn wie man weiß sind RSS und ATOM Feeds ja auch nichts anderes als XML-Dateien. Ok, ich plane keinen kompletten Reader sondern viel mehr eine kleine Benachrichtigungsanwendung welche regelmäßig nach neuen Feedeinträgen sucht und eine Vorschau des oder der Artikel anzeigt und diesen bei Interesse dann zum lesen im Browser öffnet.
Bei der Planung habe ich dann festgestellt, dass ich mich zusätzlich zu LINQ noch mit den Observer Pattern auseinandersetzen muss, um zwischen UI- Application- und Feedcontroller interagieren zu können. Mal schauen ob ich das an diesem Wochenende alles unter bekomme, zumindest Linq2Xml sollte nicht so schwer sein, da ich mich in der Vergangenheit schon ein wenig mit LINQ-Queries auseinandergesetzt habe.
Mehr zum Fortschritt dann heute Abend oder Morgen.