Prof. Dr. Detlef Stern

Zettelstore 0.4

Die gute Nachricht für alle Nutzer des Zettelstore: Version 0.4 ist seit heute verfügbar.

Der Schwerpunkt der Änderungen liegt in der verbesserten Zusammenarbeit mit externer (Client-) Software. Am Beispiel einer Software zur Erstellung von Vorlesungsunterlagen („Zettel Presenter“) habe ich validiert, welche Funktionalität wirklich benötigt wird, und welche nicht.

Unter Zettelstore Client steht aktuell eine Go-Bibliothek zur Kommunikation mit einem Zettelstore zur Verfügung. Bisher war die Bibliothek recht einfach gehalten: einige Aufrufe der API gesellen sich zu dafür notwendigen Datentypdeklarationen und Konstanten. Diese wurde im wesentlichen von einigen stud. Projektgruppen genutzt, auch für eine Android-App. Interaktionen waren dabei eher einfach, zeigten aber auch die Grenzen der Bibliothek auf.

Schon länger drückte ich mich um das Einlesen des sog. Syntaxbaums von Zetteln herum. Dieser gibt die Struktur der Zettel bis ins kleinste Detail wieder und ist daher auch etwas komplex gestaltet. Bis ich eines Nachmittags in einer kleinen Spielstunde merkte, dass dies doch recht einfach gehen kann:

dec := json.NewDecoder(resp.Body)
dec.UseNumber()
var result interface{}
err = dec.Decode(&result)
if err != nil {
  return nil, err
}
return result, nil

In resp.Body steht der als JSON kodierte Syntaxbaum und der Rest ist der tatsächliche Quelltext, inkl. Fehlerbehandlung. Mehr war nicht nötig.

Beim Programmieren des Zettel Presenter merkte ich, dass ich den HTML-Kodierer des Zettelstores nur dann nutzen könnte, wenn ich diesen massiv parametrisiere. Ungewiss blieb mir, ob diese Änderung für andere externe Software ausreichen würde. Nein. Also wurde flugs ein Rahmen für einen eigenen HTML-Kodierer in die Bibliothek integriert. Dieser benötigt wiederum manchmal einen Text-Kodierer. Und um Verweise zwischen „Folien“ einer Präsentation herzustellen, muss man auch dies im Zettel Presenter durchführen, nicht zentral im Zettelstore.

Schritt um Schritt räumte ich so den Zettelstore auf, zumeist und passend im Februar. Durchs Aufräumen wurden wieder andere Funktionalitäten nicht mehr benötigt. Wenn man so will, verlagert sich damit einiges vom Zettelstore in die (client-seitige) Bibliothek.

Was so ein Nachmittag, eine Spielstunde alles bewirken kann …

Auf Ebene des Zettelmarkup habe ich ebenfalls ein wenig aufgeräumt. Bisher gab es jeweils zwei Arten, Zitate und nicht-proportionale Zeichen im Text anzugeben. Nun nicht mehr. Der Zettelstore interpretiert Metadaten, deren Schlüssel mit -title endet, ab dieser Vesion als Zettelmarkup. Das ist für den Zettel Presenter (und später andere Software) nützlich.

Schon länger kann man den Zettelstore so betreiben, dass alle Zettel im Hauptspeicher abgelegt werden. Das ist zum Testen vielfältiger Art nützlich. Nun kann man sowohl die maximale Anzahl der Zettel, als auch die Gesamtgröße begrenzen. So ließe sich ein Zettelstore auch öffentlich betreiben, etwa damit andere ihn ausprobieren können. Mal sehen, was mein Hoster dazu sagt.

Bis auf Fehlerkorrekturen ist dies der Umfang der Version 0.4.

Nächste Woche beginnt die Vorlesungszeit. Es könnte ja sein, dass die App weiterentwickelt wird oder etwas anderes neu entwickelt wird. Da ist es gut, wenn die Studierenden etwas aktuelles, brauchbares nutzen können.

Was in der nächsten Version fertiggestellt wird, muss ich mir noch überlegen. Vermutlich werde ich die client-seitige Bibliothek mit einer Versionsnummer versehen und zeitgleich freigeben. Es wird wohl einiges an Verbesserungen kommen, durch Erfahrungen mit dem Zettel Presenter und der Arbeit mit den Studierenden. Vielleicht sind die Erfahrungen so positiv, dass ich dieses Blog durch eine Zettel-basierte Lösung ersetzen kann.

Aber vielleicht kommt noch eine Anregung aus dem Kreis der Nutzer dazu …