Adventskalender 6. Dezember 2022 - Xtended Memory

Smalltalk
Antworten
Benutzeravatar
mn77de
Beiträge: 155
Registriert: 23.11.2003 16:53:53
Wohnort: Übersee
Kontaktdaten:

Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von mn77de » 06.12.2022 10:06:28

Zur Feier des Tages darf ich heute an meinem Geburtstag das 6.Türchen öffnen und mein eigenes Tool "Xtended Memory" oder kurz "Xemy" präsentieren. 8)

Hintergrund
Man kann sich einfach nicht alles merken. Es geht schlichtweg nicht.
Befehlszeilen, Abläufe, Texte, ...
Teils hat man lange recherchiert um endlich das gewünschte Ergebnis zu erhalten ... und dann? Wohin mit den Informationen?
Manches braucht man relativ oft, manches vielleicht nie mehr ... oder doch?

So sammelten sich bei mir anfangs viele Textdateien, später setzte ich auf MoinWiki, dann DokuWiki, schlussendlich schrieb ich mein eigenes Tool.
Dieses ist mittlerweile in der zweiten Generation und definitiv eines meiner wichtigsten Werkzeuge.

Kurzbeschreibung
Xemy speichert Texte, welche mit einer vereinfachten Creole-Wiki-Syntax erstellt werden.
Diese Einträge werden dann in einem oder mehreren "Stores" gespeichert. Ein Store kann z.B. eine SQLite3-Datenbank, eine MariaDB-Datenbank oder auch ein Verzeichnis mit Textdateien sein.
Die Verwaltung erfolgt hauptsächlich über ein Command-Line-Interface. Zum Bearbeiten können unterschiedliche Editoren verwendet werden, zur Ausgabe werden mehrere Styles und verschiedene Programme unterstützt.

Installation (als Root)
Xemy kann über mein privates Repository installiert werden.
Dazu muss zuerst der GPG-Schlüssel heruntergeladen werden:

Code: Alles auswählen

cd /etc/apt/trusted.gpg.d/
wget http://deb.mn77.de/mn77.archive.key.2022.gpg
Danach noch das Repository hinzufügen:

Code: Alles auswählen

echo "deb http://deb.mn77.de/stable ./" >> /etc/apt/sources.list
Nun das Paketsystem aktualisieren und Xemy installieren:

Code: Alles auswählen

apt update
apt install xemy
Starten
Als normaler Benutzer kann Xemy nun gestartet werden: Dabei wird bereits alles initialisiert und Xemy ist sofort einsatzbereit.

Wer es noch einfacher möchte, kann sich z.B. ein Alias oder einen Link von 'x' zu 'xemy' anlegen (als Root):

Code: Alles auswählen

ln -s /usr/bin/xemy /usr/local/bin/x
Danach sollte xemy mit einem einfachen 'x' aufgerufen werden können.

Eintrag erstellen
Wenn Xemy läuft, können wir nun den ersten Eintrag anlegen. Dazu tippen wir kurz ein "n" oder "new" und schicken den Befehl mit 'Enter' ab. Nun landen wir im Standard-Text-Editor und können dort den Eintrag verfassen. Zu beachten ist das "= " in der ersten Zeile, hinter dem der Seitentitel angefügt wird.

Code: Alles auswählen

= Mein erster Eintrag
Hallo Xemy!
Der Rest kann frei bearbeitet werden. Die Formatierung ist dabei:

Code: Alles auswählen

= Erste Überschrift
== Zweite Überschrift
=== Dritte Überschrift
==== Vierte Überschrift
'  ' Zwei Leerzeichen am Anfang erzeugen einen Code-Block
**fett**
//kursiv//
__unterstrichen__
--durchgestrichen--
---- Horizontale Linie
Nach Bearbeiten und Beenden des Editors fragt Xemy noch, welche Tags wir dem neuen Eintrag geben wollen.
Hier können mehrere Schlagwörter mit Leerzeichen getrennt eingegeben werden. Ggf. kann die Eingabe mit 'Enter' einfach beendet werden.

Suchen und Finden
Mit dem Befehl "a" oder "all" lassen sich nun alle Einträge auflisten. Der Befehl "s" oder "search" durchsucht Titel und Inhalt nach den genannten Wörtern.

Code: Alles auswählen

search foo bar
Der Befehl "f" oder "find" durchsucht nur den Titel und zeigt einen gefundenen Artigel gleich an.

Code: Alles auswählen

find foo
Mit "t" oder "tag" lassen sich alle Einträge mit diesem Tag auflisten:

Code: Alles auswählen

tag foo
Anzeigen
Für die einfachere Handhabung wird jedem Eintrag im Suchergebnis eine Nummer zugewiesen.
So steht im Suchergebnis der jeweilige Schlüssel und daneben der Titel. Die Zahl besteht dabei aus der Nummer des Stores (1-9) und einer fortlaufenden Nummer.

Zum Anzeigen eines Eintrags geben wir die entsprechende Nummer ein. Dabei öffnet sich der Standard-Pager (z.B. less) mit der entsprechenden Seite.

Der Prompt
Der Prompt von Xemy hat 3 mögliche Zustände: Mit "?" kann jederzeit das letzte Suchergebnis angezeigt werden.
Ist ein Eintrag eingemerkt, so kann die Nummer bei Befehlen entfallen.

Bearbeiten
Um einen Eintrag zu bearbeiten, verwenden wir "e" oder "edit". Hierzu muss die entsprechende Nummer angegeben werden:

Code: Alles auswählen

? > edit 10
Ist der Eintrag im Prompt eingemerkt, reicht ein einfaches "edit":

Code: Alles auswählen

10> edit
Hier landen wir wieder im Editor und können den Eintrag bearbeiten.

Beenden
Xemy kann mit folgenden Befehlen beendet werden:

Code: Alles auswählen

q, quit, exit
STRG + d
Konfiguration
Zum Schluss werfen wir noch einen kurzen Blick in die Config-Datei.
Diese finden wir unter "~/.config/xemy/default.conf" und sollte mehr oder weniger selbsterklärend sein.

Code: Alles auswählen

editor ~/.config/xemy/default.conf
Ohne weitere Konfiguration werden eine SQLite3-Datenbank angelegt, sowie der Standard Pager und Editor verwendet.

Unter "[Stores]" lassen sich die jeweiligen Stores definieren. Hier 3 Beispiele dafür:

Code: Alles auswählen

1 = SQLite3( "/home/foobar/.config/xemy/store.sqlite3" )
2 = MariaDB( "192.168.0.100", "user", "secretpass", "xemydb" )
3 = WikiDir( "/home/foobar/xemy" )
Abschluss
Dieses Tool ist bei mir mittlerweile nicht mehr wegzudenken.
Ich hoffe dass alles so funktioniert wie es soll, Xemy gefällt und auch anderen die Arbeit am PC erleichtert.
Konstruktives Feedback ist gerne willkommen.
OpenSource! :THX:

dasebastian
Beiträge: 1883
Registriert: 12.07.2020 11:21:17

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von dasebastian » 06.12.2022 10:27:15

Das ist ja ein tolles Ding!!

Vor einigen Jahren hatte ich auch mal mit verschiedenen (fertigen) Tools probiert, mir so eine Art persönliches Wiki anzulegen. Mir waren aber die Programme zu bombastisch und die Pflege war dann irgendwie fast schon ein eigenes Hobby, das ist mir dann zu blöd geworden. Mittlerweile hab ich wieder meine Zettel und Kugelschreiber und vereinzelt einfache txt-Dateien.

Würde ich sowas aber wieder angehen, wüsste ich jetzt, was ich als erstes ausprobieren würde. :mrgreen: :THX: :hail:

Benutzeravatar
hikaru
Moderator
Beiträge: 13588
Registriert: 09.04.2008 12:48:59

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von hikaru » 06.12.2022 10:56:27

Das sieht interessant aus!

Eine Frage die sich mir stellt ist aber, ob das Tool auch einen Weg vorsieht, Einträge wieder zu löschen.
Und falls ja, was passiert dann mit den Eintragsnummern? Fragmentieren diese, weil gelöschte Einträge einfach als Lücken bestehen bleiben? Oder gibt es einen "Defragmentierungsalgorithmus"?
Wäre so ein Algorithmus überhaupt praktikabel? Ein wesentlicher Punkt des Systems scheint ja zu sein, sich wichtige Eintragsnummern merken zu können, was erschwert würde, wenn sie sich wegen Defragmentierung öfter ändern.

Die Standarddarstellunsmethode ist aber weiterhin ein grafischer Webbrowser, richtig? Oder wie sonst wird die Wiki-Syntax repräsentiert?

TuxPeter
Beiträge: 1965
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von TuxPeter » 06.12.2022 11:25:26

Hi,
ich muss sagen, das klingt für mich sehr interessant. Bislang habe ich nur ein Verzeichnis mit - Moment mal - 93 (Text-)Dateien und 8 Ordnern, in denen sich auch wieder jeweils ein paar Dateien befinden ... Da wäre so ein Ordnungs-Tool gewiss angemessen.
Auf jeden Fall Dank für die Anregung!

Benutzeravatar
mn77de
Beiträge: 155
Registriert: 23.11.2003 16:53:53
Wohnort: Übersee
Kontaktdaten:

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von mn77de » 06.12.2022 11:36:31

Eine Frage die sich mir stellt ist aber, ob das Tool auch einen Weg vorsieht, Einträge wieder zu löschen.
Ja, Einträge können mit "d" oder "del" in den Papierkorb befördert werden:

Code: Alles auswählen

del 10
Ein erneuter Aufruf löscht den Eintrag dann endgültig.
... was passiert dann mit den Eintragsnummern? Fragmentieren diese, weil gelöschte Einträge einfach als Lücken bestehen bleiben? Oder gibt es einen "Defragmentierungsalgorithmus"?
Wäre so ein Algorithmus überhaupt praktikabel? Ein wesentlicher Punkt des Systems scheint ja zu sein, sich wichtige Eintragsnummern merken zu können, was erschwert würde, wenn sie sich wegen Defragmentierung öfter ändern.
Das mit den Nummern merken hat sich recht schnell als nicht praktikabel herauskristallisiert. Ich habe mittlerweile fast 3000 Einträge in der Datenbank, so viele Nummern kann ich mir nicht mehr merken. :lol:
Zudem geht es ja darum, dass man sich eben weniger merken muss und dafür eine gute Suchfunktion hat.

Ich hab' da schon einige Versuche durch. Effektiv ließ ich mich von "Buku" inspirieren, was sich für mich als praktikabelste und kürzeste Lösung gezeigt hat.
Die Nummer besteht nun eben aus der Store-Nummer und einer fortlaufenden Zahl im Suchergebnis.

Ein absoluter Aufruf ist aber auch möglich. Zum Beispiel kann so der Eintrag mit der Datenbank-ID "123" im Store "1" direkt aufgerufen werden:

Code: Alles auswählen

1#123
Das System wird klar, wenn man sich die "map" anzeigen lässt:
3971
Die Standarddarstellunsmethode ist aber weiterhin ein grafischer Webbrowser, richtig? Oder wie sonst wird die Wiki-Syntax repräsentiert?
Es ist möglich, dass die Seiten mit HTML im Browser angezeigt werden.
Ich persönlich lasse mir die Seiten als farbigen und formatierten Text per "less" anzeigen. Damit bleibe ich auch im Terminal.
Zuletzt geändert von mn77de am 21.02.2023 07:34:35, insgesamt 1-mal geändert.
OpenSource! :THX:

Benutzeravatar
mn77de
Beiträge: 155
Registriert: 23.11.2003 16:53:53
Wohnort: Übersee
Kontaktdaten:

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von mn77de » 07.12.2022 14:13:25

Kurze Ergänzung ... alle Informationen zu Xemy sind nun hier zusammengefasst:
http://xemy.mn77.de/de.html
OpenSource! :THX:

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von Meillo » 07.12.2022 14:33:52

mn77de hat geschrieben: ↑ zum Beitrag ↑
07.12.2022 14:13:25
Kurze Ergänzung ... alle Informationen zu Xemy sind nun hier zusammengefasst:
http://xemy.mn77.de/de.html
Toll, dass unser Adventskalender die Motivation dafuer erzeugt hat. :THX:
Use ed once in a while!

Benutzeravatar
mn77de
Beiträge: 155
Registriert: 23.11.2003 16:53:53
Wohnort: Übersee
Kontaktdaten:

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von mn77de » 07.12.2022 17:27:36

Es freut mich sehr wenn mein Programm gefällt. 8)
Wenn es jemand konkret einsetzt, schreibt mir doch bitte eine Privatnachricht oder Email und berichtet von Euren Erfahrungen.
Dieses Feedback hilft mir sehr bei der Weiterentwicklung. :idea:
OpenSource! :THX:

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von heisenberg » 07.12.2022 17:56:38

Ist eine "Shell" die einzige Möglichkeit für die Kommandoeingabe oder kann man auch per Parameter arbeiten?

also z. B. ich suche "nfs" und gebe in der Bash ein ...

Code: Alles auswählen

x search nfs

# passende Bash-Funktion dazu:
xs() { x search "$1" ; }
oder ich möchte (ich selbst, oder ein Script von mir) einen Beitrag erstellen und starte mit ...

(Mal so ein Spontanbeispiel)

Code: Alles auswählen

echo -e "= Dokumentation Konfigänderung postfix 7.12.2022\n$(diff -Nru /etc/postfix.saved /etc/postfix)" | x new --content -
Zuletzt geändert von heisenberg am 07.12.2022 18:06:24, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von Meillo » 07.12.2022 17:57:57

@mn77de: Du kannst gerne auch einen Thread dafuer im Forum aufmachen, wenn du willst. Freie Projekt von Forenusern, die von anderen Forenusern genutzt werden, duerfen gerne einen Platz hier haben.
Use ed once in a while!

Benutzeravatar
mn77de
Beiträge: 155
Registriert: 23.11.2003 16:53:53
Wohnort: Übersee
Kontaktdaten:

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von mn77de » 07.12.2022 19:07:48

heisenberg hat geschrieben: ↑ zum Beitrag ↑
07.12.2022 17:56:38
Ist eine "Shell" die einzige Möglichkeit für die Kommandoeingabe oder kann man auch per Parameter arbeiten?
In der jetzigen Version können alle Befehle auch direkt als Parameter übergeben werden. Der Befehl wird dann ausgeführt und das Programm gleich wieder beendet. Die Ausgabe lässt sich natürlich per Pipe oder mittels $() weiter verwenden. Es ist auch möglich, dass die Ausgabe eines Artikels direkt erfolgt und kein Pager verwendet wird.

Code: Alles auswählen

xemy search nfs | grep -i problem
Oder:

Code: Alles auswählen

FOO=$(xemy search nfs)
echo $FOO
Dass der Content für einen Eintrag direkt gepiped wird, ist derzeit nicht möglich. Die Idee finde ich aber gut. :THX:
OpenSource! :THX:

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von heisenberg » 07.12.2022 19:17:04

Dann das ganze noch selektiv und verlinkt auf den Webserver packen, also das was öffentlich sein darf, und damit durch auch durch Google indizieren lassen.

Dann findet man mit Google gelegentlich eigene Xemy-Ergebnisse wieder. :mrgreen:
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
mn77de
Beiträge: 155
Registriert: 23.11.2003 16:53:53
Wohnort: Übersee
Kontaktdaten:

Re: Adventskalender 6. Dezember 2022 - Xtended Memory

Beitrag von mn77de » 07.12.2022 19:35:36

Der Aufbau der Datenbank ist (abgesehen von der Formatierung) sehr einfach gehalten. Es sollte kein Problem darstellen, dazu ein Webfrontend zu basteln. :wink:
Eine funktional abgespeckte GUI ist übrigens in Arbeit ... braucht aber noch etwas.
OpenSource! :THX:

Antworten