Um mich über neue Programmversionen bei beispielsweise Github auf dem Laufendem zu halten, verwende ich meist RSS-Feeds. Inzwischen sind das aber so viele geworden, dass ich langsam den Überblick verliere, welche Projekte ist beobachte. Ich habe daher einfach mal geschaut, ob es Tools gibt, die mir eine bessere allgemeine Übersicht liefern können. Und ja, die gibt es.
Argus wäre solch ein Programm. Es ist in Golang geschrieben und daher auch leicht auf einen Server installierbar. Ich habe es eben auf meinen Server im LAN installiert und mittels reverse Proxy (Caddy) im Internet erreichbar gemacht.
Argus bietet im Grunde genommen eine grafische Übersicht über den Browser welche Projekte man beobachtet und bei welchen es eine neue Version gibt. Zudem besteht die Möglichkeit, dass man im Falle einer neuen Version beispielsweise ein Script ausführt, welches die eigene Installation aktualisiert. Diese Funktion ist aber optional und man kann diese in der grafischen Oberfläche bei Bedarf bei einzelnen Versionen auch ablehnen.
Weiterhin kann man über diverse Dienste wie Matrix, E-Mail oder Discord eine Benachrichtigung erhalten, wenn es eine neue Version gibt.
Unter https://release-argus.io/demo haben die Entwickler eine Demo-Version installiert, sodass man sich einen ersten Eindruck verschaffen kann. Das Repository des Projekts, welches unter der Apache 2.0 Lizenz veröffentlicht wird, findet man unter https://github.com/release-argus/Argus
Braucht man Argus? Vermutlich nicht. Aber ich finde die Anzeige recht nett. Ob ich allerdings tatsächlich zu Argus wechsle oder weiterhin bei RSS-Feeds bleibe, ist noch abzuwarten.
Vor längerem habe ich diverse lokale Kalenderprogramme getestet. Unter anderem Kalendar und Merkuro. Damit soll per CalDAV auf einen Nextcloud-Kalender zugegriffen werden. Nach einigen Tests und irgendwelchen Änderungen konnte ich irgendwann unter Merkuro keine neuen Termine mehr anlegen. Jeder Versuch hat zur Fehlermeldung “Invalid parent collection” geführt. Alle Lösungen, die ich über eine Suchmaschine gefunden habe, hatten nicht funktioniert. Die Lösung in meinem Fall hat mich einige Zeit gekostet und war “interessant”.
Was ich alles probiert hatte was nicht funktioniert hat, werde ich nicht erzählen. Zum einen, weil es zu viel wäre. Aber auch, weil ich mich nicht mehr an alles erinnern kann. Ich werde daher nur beschreiben was schlussendlich zur Lösung geführt hat.
Erst mal habe ich mir die Konfigurationsdatei von Merkuro angesehen.
Nicht besonders aussagekräftig aber auf den ersten Blick auch nicht fehlerhaft. Irgendwann bin ich dann auf die Idee gekommen, mir die Konfigurationsdatei von Kalendar anzusehen, weil damit das Anlegen von Terminen funktioniert.
Hierbei ist mir aufgefallen, dass die Nummer der Selection bzw. Collection in den beiden Konfigurationsdateien unterschiedlich ist. Da mir nichts mehr eingefallen ist, wollte ich die Nummer aus der Konfigurationsdatei von Merkuro löschen. Allerdings habe ich versehentlich die falsche Konfigurationsdatei erwischt und lastUsedEventCollection=41 gelöscht. Als ich dann unter Merkuro einen neuen Termin anlegen wollte, habe ich keine Fehlermeldung mehr erhalten. Der Termin wurde aber nicht eingetragen, da scheinbar der Button “Eintragen” nun klickbar aber funktionslos war. Als ich meinen Irrtum bemerkt hatte und die Zeile wieder in die Konfigurationsdatei ~/.config/kalendarrc eingetragen hatte, hat der Button wieder funktioniert und besagte Fehlermeldung erzeugt. Was zur Hölle? Warum wirkt sich ein Eintrag in der Konfigurationsdatei von Kalendar auf Merkuro aus?
Mehrere vergebliche Versuche später.
Ich war inzwischen so weit, mir die Datenbank von Akonadi direkt anzusehen. Weil mir die unterschiedlichen Nummern immer noch keine Ruhe lassen. Was mich schlussendlich zur Lösung geführt hat.
mariadb \
--socket=/run/user/$(id -u)/akonadi/mysql.socket \
-D akonadi \
-e 'SELECT * FROM resourcetable;'+----+---------------------------------+-----------+
| id | name | isVirtual |+----+---------------------------------+-----------+
|1| akonadi_search_resource |1||3| akonadi_maildir_resource_0 |0||4| akonadi_contacts_resource_0 |0||11| akonadi_davgroupware_resource_4 |0|+----+---------------------------------+-----------+
Mit dieser Datenbankabfrage habe ich mir den Namen der vorhandenen Ressourcen in der Akonadi-Datenbank anzeigen lassen. In meinem Fall betrifft es die Ressource mit der id 11.
mariadb --auto-vertical-output --socket=/run/user/$(id -u)/akonadi/mysql.socket -D akonadi -e "
SELECT
c.id,
c.name,
c.parentId,
c.resourceId,
c.remoteId,
r.name AS resource
FROM collectiontable c
LEFT JOIN resourcetable r ON r.id = c.resourceId
WHERE r.name = 'akonadi_davgroupware_resource_4'
ORDER BY c.id;
"*************************** 1. row ***************************
id: 49 name: akonadi_davgroupware_resource_4
parentId: NULL
resourceId: 11 remoteId: akonadi_davgroupware_resource_4
resource: akonadi_davgroupware_resource_4
*************************** 2. row ***************************
id: 50 name: https://example.com/remote.php/dav/calendars/Fryboyter/Kalendername/
parentId: 49resourceId: 11 remoteId: https://example.com/remote.php/dav/calendars/Fryboyter/Kalendername/
resource: akonadi_davgroupware_resource_4
Mit diesem Befehl habe ich mir anzeigen lassen, was alles mit dieser Ressource verknüpft ist. Was in dem Fall mein Nextcloud-Kalender mit der id 50 ist. Die Konfigurationsdatei von Merkuro müsste also korrekt sein. Was ist aber Collection 41 die in der anderen Konfigurationsdatei genannt wird?
mariadb \
--socket=/run/user/$(id -u)/akonadi/mysql.socket \
-D akonadi \
-e "
SELECT
id,
name,
parentId,
resourceId,
remoteId
FROM collectiontable
WHERE id = 41;
"
Der Befehl zeigt nichts an. Es gibt keine Collection mit der id 41.
Da ich nichts zu verlieren habe, habe ich in der Datei ~/.config/kalendarrc die Zeile lastUsedEventCollection=41 auf lastUsedEventCollection=50 geändert.
Und schon konnte ich wieder neue Termine in Merkuro anlegen.
Wie es zu den unterschiedlichen ID-Nummern gekommen ist, kann ich nicht sagen. Warum Merkuro scheinbar auch, zumindest teilweise, die Konfigurationsdatei von Kalendar berücksichtigt, entzieht sich auch meiner Kenntnis. Allerdings vermute ich, dass es damit zusammenhängt, dass Merkuro auf Kalendar basiert.
Wer auf fryboyter.de aktuell die Suchfunktion verwendet, lädt erst einmal eine JSON-Datei herunter. An sich eine feine Sache, da die Suche somit lokal erfolgt. Allerdings wird diese Index-Datei immer größer. Aktuell über einem Megabyte.
Ich habe mich daher schon vor längerer Zeit überlegt eine andere Lösung zu nutzen. Schlussendlich bin ich bei Pagefind gelandet. Der damit erzeugte Index besteht nicht aus einer großen Datei, sondern aus mehreren kleinen Dateien von denen nur die geladen werden die für die jeweilige Suche benötigt werden. Es spart also Bandbreite für den jeweiligen Nutzer.
Mit Pagefind gab es bei meinen bisherigen Tests allerdings ein Problem. Die Artikelüberschrift wurde zweimal genannt. Einmal als Titel des Suchergebnisses in Form eines Links. Und einmal sozusagen im angezeigten Artikeltest. Also beispielsweise so.
Neuer Betreuer für das Hugo-Theme Ananke gesucht
Betreuer für das Hugo-Theme Ananke gesucht. Blablabla. Veröffentlicht am 16. September 2024|
Das ist jetzt nicht unbedingt schlimm aber es ist irgendwie nervig. Eine Lösung hatte ich bisher nicht gefunden. Was aber an mir und nicht an Pagefind lag. Im Grunde ist die Lösung ziemlich einfach. Bisher sieht die Datei single.html, mit der die einzelnen Artikel angezeigt werden, wie folgt aus.
Entscheidend ist hierbei in dem Fall hauptsächlich, dass man der Artikelüberschrift data-pagefind-meta=“title” zuweist und erhält dann beispielsweise folgende Anzeige.
Neuer Betreuer für das Hugo-Theme Ananke gesucht
der MIT-Lizenz) für den statischen Website-Generator Hugo. Für dieses Theme wird nun
Einige werden sich nun fragen, warum der Artikeltext im Suchergebnis mit “der MIT-Lizenz)” anfängt. Pagefind zeigt in der Standardkonfiguration die Zeile an, in der der Suchbegriff das erste Mal erscheint. Ich bin mir nicht sicher, ob mir das so gefällt.
Alternativ könnte man auch das anzeigen, was im Tag <meta name="description"> steht. Was ich für wesentlich besser halte. Nur habe ich diesen Eintrag bisher nie erstellt. Also seit 2009. Das nachzuholen würde einige hundert Artikel betreffen. Worauf ich manuell keine Lust habe. Daher bin ich aktuell dabei eine Lösung zu testen die mir anhand zweier lokaler LLM eine sinnvolle Beschreibung liefert. Welche ich aber selbstverständlich prüfen werde, falls ich diese Lösung nutzen werde. Aber das ist Stoff für einen anderen Artikel. Vielleicht.
Wenn ich unterwegs bin, möchte oder muss ich ab und zu Notizen erstellen. Da mir in solch einem Fall teilweise nur ein Browser und ein Internetzugang zur Verfügung stehen, habe ich seit längerem HedgeDoc verwendet. So ganz zufrieden war ich damit aber nie.
HedgeDoc hat für mich vor allem zwei Nachteile. Zum einen ist das Programm ein ziemlicher Brocken (Node.js, Datenbank usw.). Und zum anderen verwendet HedgeDoc zwar Markdown für die Notizen, speichert diese aber in der Datenbank und nicht in einzelnen Markdown-Dateien. Was einen Export umständlicher macht.
Die Alternativen, die ich bisher angesehen habe, haben mir alle nicht zugesagt. Oft war es die Bedienung. Oder es wird eine Technik vorausgesetzt, die mein Webspace nicht anbietet. Docker zum Beispiel. Oder die Entwicklung ist eingeschlafen, obwohl es noch genug offene Probleme gibt. Oder oder oder. Irgendwas war immer.
Gestern bin ich zufällig auf LeafWiki gestoßen. Und auch wenn es nicht perfekt ist, bin ich erstaunt, wie gut es meinen Wünschen entspricht. Wie wenn ich es selbst programmiert hätte, wenn ich programmieren könnte.
Fangen wir mal mit der Installation an. LeafWiki besteht im Grunde nur aus einer, mit Golang erstellten, Datei. Grob gesagt, reicht es also fast schon, die Datei herunterzuladen und auszuführen. Bei Uberspace.de habe ich für die Installation (inkl. dem Anlegen eines Web-Backends, eines Services und der Subdomain) geschätzt keine 5 Minuten benötigt. Für die reine Installation von HedgeDoc brauche ich merklich länger.
Was den Funktionsumfang betrifft, kann LeafWiki nicht mit HedgeDoc mithalten, bietet aber eigentlich alles, was ich will.
Tags
Organisation in einer Baumansicht
Suchfunktion
Verlinkung
Metadaten
WYSIWYG-Ansicht
Mehr brauche ich eigentlich nicht, sodass HedgeDoc eigentlich schon immer zu überladen war. LeafWiki bietet aber aktuell noch weitere Funktionen wie Drag and Drop oder auf TOTP basierende 2FA. Andere Funktionen sind zudem geplant. Wie zum Beispiel die Lokalisierung der Oberfläche. Die nächste Version wird somit voraussichtlich auch in Deutsch und nicht nur in Englisch angeboten werden.
Ich habe diese Woche endlich mal Urlaub und zudem auch nichts fest geplant.
Ab heute und in den nächsten Tagen erfolgen daher einige Änderungen an fryboyter.de (wie beispielsweise ein neues Logo im Header).
Diese Änderungen werde ich aber nach und nach ausrollen und auch einige Dinge ausprobieren. Somit wird die Seite vermutlich öfters mal “fehlerhaft” oder gar angezeigt werden. Im Laufe dieser Woche ist das also, ausnahmsweise, Absicht.