Archive for the ‘Projekte’ Category
[Release] LeSharp 1.2.1
Ein kleines Problem bei der Erkennung anhörbarer Titel (eng verknüpft übrigens mit dem “Playlist could not be retrieved via API”-Fehler in LastSharp), hat dazu geführt, dass man Lea nicht mehr verwenden konnte.
Diese neue Version passt Lea an die Veränderungen des Last.FM-APIs an. (Die Lösung ist nicht perfekt, und somit werde ich den nächsten größeren Versionssprung mit dem Hauptthema “Stabilität” verknüpfen… EIn bemerkbares Problem wird es dennoch erst geben, wenn Last.FM wieder etwas ändert…)
Download (Sourceforge): http://sourceforge.net/projects/lastsharp/files/lesharp/LeSharp%201.2.1/LeSharp1.2.1.zip/download
Wie entwickle ich meine eigene Scriptsprache? Ein Abenteuer in Teilen.
In diesem Artikel, dem ersten von vielen, geht es um die Entwicklung einer eigenen Script- oder Programmiersprache. Das sei nur für die erwähnt, die sich Angesichts des Vorgeplänkels der nächsten zwei Absätze fragen: “Was wird das denn jetzt?” und dann wieder verschwinden wollen…
Vorspiel
Neben LastSharp und LeSharp, den beiden Tools, die für eine breite Masse gedacht und deshalb auch zumindest ein bisschen nützlich sind, arbeite ich noch an zwei eher theoretischen Projekten: UVD (das im Moment ruht) und Lapicon (Loose API Connection Language).
Letzteres ist eine Scriptsprache zum Senden und Verarbeiten von REST-Requests, also zum Verwenden verschiedenster APIs, z.b. dem von Last.FM. Kein großer Leckerbissen für den Otto-Normal-Benutzer also und auch für Entwickler, die sich mit dem Thema beschäftigen, ist die Sprache nicht der Inbegriff von Eleganz. Deshalb mein Entschluss: Lapicon muss von Grund auf neu entwickelt werden. Das bedeutet: neue Funktionen, mehr Komfort, bessere Performance, usw… Alles in allem keine triviale Aufgabe.
Und dann kam mir die Idee, meinen Versuch zu protokollieren und somit allen, die daran interessiert sind, eine eigene Programmier- oder Scriptsprache zu entwickeln, ein Stückchen weiterzuhelfen. Eine kleine Reise, ein kleines Abenteuer also.
Read the rest of this entry »
[Beta] LastSharp 0.4.4 Beta 1
Aufgrund der anhaltenden Anfragen, wie man den Fehler mit dem Remoteserver-Verbindungsabbruch beseitigt (Die Lösung steht inzwischen in den Kommentaren zu fast jedem Artikel über LastSharp…), habe ich schnell diese Beta-Version zusammengeschustert, die jetzt getestet werden kann. Der Download sollte nun auch funktionieren, wenn die Option “Modifizierte Verbindung” unter “Erweiterte Einstellungen” >> “Verschiedenes” deaktiviert ist. (Ja, das war die oben angesprochene Lösung…)
[Release] LeSharp 1.2
Eigentlich hatte ich ja andauernd behauptet, ich würde (wegen Uni & Co) nicht dazu kommen, an meinen bisherigen Programmen weiterzuarbeiten, aber heute habe ich’s dann doch zu was gebracht: einer neuen Version von LeSharp nämlich!
Neben einigen Bugfixes enthält diese Version hauptsächlich minimale Änderungen in LD3. Man kann Dateien nun per Drag&Drop ins Programm ziehen und sogar ganze Ordner ablegen, die anschließend rekursiv hinzugefügt werden. Des weiteren gibt es nun die Möglichkeit, STRG+A zu verwenden, um alle Dateien zu markieren, sowie ENTF, um eine oder mehrere Dateien zu löschen.
Oh, ganz wichtig: Lea speichert nun die Session eines Users, d.h. man muss nicht mehr bei jeder Benutzung auf “Browser öffnen” klicken, sondern nur noch dann, wenn die Session abgelaufen ist!
Inside Last.FM: Silent Authentication für API 2.0
Update (17.07.2009): Das hier ist (abgesehen von den “Skills”, die ich dabei gebraucht hab) wohl ziemlich überflüssig, wenn man die API-Methode auth.getMobileSession mal genauer betrachtet. Wieder was gelernt: RTFM!
Da im Moment anscheinend wieder Änderungen am Last.FM-Webservice gemacht werden, die dazu geführt haben, dass LastSharp höchstens noch mithilfe der “Modifizierten Verbindung” (unter “Erweiterte Einstellungen” >> “Verschiedenes”) funktioniert, habe ich mir mal das Radio-API angesehen, das ja anscheinend die Zukunft des Radiostreamings bei Last.FM ist. Was mich daran allerdings stört, ist die umständliche Anmeldeprozedur: Token holen, Browser öffnen, auf Authentifizierung warten, Session holen.
Der Umweg über den Browser ist einfach unschön, weshalb ich nach einer Lösung gesucht habe, die den Login sowie die anschließende Bestätigung eines Users im Hintergrund simuliert, sodass er das eigentliche Programm nicht verlassen muss.
Zwischenstand: Universal Version Description (UVD) / Entwickler gesucht
Ich möchte an dieser Stelle einmal auf den aktuellen Stand des hier begonnenen Projekts verweisen, der sich wie folgt darstellt: Ich habe das UVD-Format weiter ausgearbeitet und angepasst und damit begonnen, eine C#-Bibliothek zu schreiben, die dessen Verarbeitung dient.
Als Beispiel sei die UVD von LastSharp gegeben, die wir im folgenden Codebeispiel mithilfe einer XSL-Transformation (DescriptionPage.xsl) in eine HTML-Datei verwandeln. Das soll illustrieren, wie einfach die Verwendung von UVD sein kann, wenn entsprechende Bibliotheken vorhanden sind:
UVD lastsharp = UVD.Create("http://dev.xscheme.de/uvd/lastsharp.uvd.xml");
lastsharp.Save("c:/lastsharp.htm", "http://dev.xscheme.de/uvd/DescriptionPage.xsl");
Nun haben wir eine Datei “lastsharp.htm”, die hier eingesehen werden kann und Beschreibungen in verschiedenen Sprachen und Längen bietet, Downloadlinks, etc… Außerdem sind (wie man bei der Ansicht des Quelltextes feststellen kann) auch die META-Tags zu Schlüsselwörtern und Beschreibungen bereits gesetzt, sodass die Seite auch für Suchmaschinen verwendbar ist.
[Release] LastSharp 0.4.3
Nachdem viele kleine Änderungen in der letzten Version auch viele kleine Baustellen verursacht haben, musste eine Version her, die die aufgerissenen Löcher wieder schließt:
- Ein Timeout-Fehler, der seit Version 0.4.1 vermehrt aufgetreten ist, macht nun vermutlich (!) keine Probleme mehr. (Ob das wirklich so ist, wird die Zeit zeigen…)
- Durch die Einführung der Playlist-Direktanwahl war die Option “Meine Tags” (ohnehin nur für Abonnenten aktiv) nicht mehr normal verwendbar, da das Textfeld deaktiviert blieb. (Dafür wurde es bei “Meine Empfehlungen” unnötigerweise aktiviert…)
- Außerdem hat der Versuch, die AudioPlayer-Resourcen nach dem Abspielen eines Liedes wieder freizugeben, zu Abstürzen beim Liedwechsel geführt.
[Release] LastSharp 0.4.2
Ich hatte einiges, zu tun, was diese Version angeht. Zum einen viele Bugfixes (unendliches Playlist-Nachladen, Abspielfehler im AudioPlayer, Scrobbling funktionierte nicht, …), zum anderen Neuerungen, was die Playlist angeht, sowie Optionen zur Erhöhung der Anpassbarkeit von LastSharp.
Ich habe mich schon mehrmals damit auseinandersetzen müssen, dass der Download der eigenen Playlist erheblich eingeschränkt ist (siehe hier) – und der Grund dafür ist schlicht und einfach, dass Last.FM das Anhören (und somit die Möglichkeit des Herunterladens) der eigenen Playlist nur noch Abonnenten zugesteht. Um dies zu umgehen, gibt es in LastSharp nun den direkten Playlist-Download. Zu beachten ist hierbei, dass unter “Erweiterte Einstellungen” >> “TuneIn” die Playlistlänge für diese Funktion bis zu 60 Titel betragen darf, sowie folgendes:
- Die Methode funktioniert nur mit Titeln, die “in voller Länge” anhörbar sind.
- Es muss die gesamte Playlist abgerufen und untersucht werden (im normalen Modus werden immer bloß fünf Titel übertragen), sodass bei der Playlisterstellung kürzere Listen zu bevorzugen sein sollten.
- Bei der Methode wird automatisch die “modifizierte Verbindung” verwendet, da sie ansonsten nicht funktioniert. D.h., dass es sein kann, dass nicht alle den direkten Playlist-Download nutzen können. Des weiteren kommt eine kurze Verzögerung vor dem Downloadstart hinzu.
Vom Gedankenspiel zum Versuch: Universal Version Description (UVD)
Das Problem der Updates
Ich bin in meinem vorletzten Artikel zum Thema Update-Check bereits darauf eingegangen: Versionsänderungen sind nicht immer leicht zu verfolgen und die Überprüfung auf Updates erfordert meist einen nicht zu unterschätzenden Programmier- und Verwaltungsaufwand. Weiterhin bedeutet es für den Entwickler selbst auch, dass er auf mehreren Hochzeiten tanzen muss: er stellt meist eine eigene Downloadseite bereit, die Links zu verschiedenen Versionen enthält, er aktualisiert gleichzeitig die Dateien, die für die Versionsüberprüfung zuständig sind, er kümmert sich um die Daten, die in irgendwelchen Softwareverzeichnissen (heise, chip.de, etc…) stehen, usw., usw… Als verantwortungsvoller Entwickler mit der Ambition, sein Programm unter die Leute zu bringen, hat man richtiggehend die Pflicht, diese Schritte durchzuführen – und das regelmäßig und mit äußerster Genauigkeit.
Hier nun also das (absolut logische und vernünftige) Konzept, das die meisten Beispiele, die man im Web zu dem Thema “Update-Check” findet, implementieren:

Augenscheinliche Probleme hierbei:
- Die Verwaltung der Programmdaten läuft (beim Otto-Normal-Programmierer) meist von Hand ab, d.h. man bearbeitet die Update-Datei (die nicht, wie im Beispiel, im XML-Format vorliegen kann), lädt sie von Hand auf den eigenen Webserver und ist aus Kompatibilitätsgründen meist an ein (demnach schwer erweiterbares) Format und an einen bestimmten Dateinamen gebunden.
- Je nachdem, wie detailliert die Update-Informationen sind (nur Versionsnummer vs. Versionsnummer, Änderungsdatum, Changelog, …), kann das Bearbeiten der Versionsdatei eine Heidenarbeit bedeuten.
- Der Entwickler muss das Programm erst einmal dazu bringen, einen funktionierenden Versions-Check durchzuführen.
- Und was passiert bei Programmen, die mehrsprachig funktionieren und beworben werden?
Die Idee im erwähnten Artikel war es also, den “Update Notification Server” nicht mehr als Eigentum des Entwicklers zu sehen, sondern als über ein API zugängliche Plattform im Internet, die Verwaltungsfunktionen komfortabel bereitstellt. Gleichzeitig wären verschiedene Bibliotheken für das API nötig, um dem Programmierer die Implementierung der Versionsprüfung fast gänzlich abzunehmen.
Was folgte, war ein Einspruch.
[Release] LeSharp 1.1
In dieser Version gab es ein paar Bugfixes, sowie Einstellungsmöglichkeiten für Lea, welcher Browser wie verwendet werden soll. Das war es im Grunde auch schon.
Download (SourceForge): https://sourceforge.net/project/showfiles.php?group_id=255668&package_id=319742
Informationen auf der LeSharp-Seite.