Ideen und Gedanken mit Joplin festhalten

Hin und wieder stolper ich unterwegs und zwischendurch über so allerhand Dinge, Ideen und Gedanken, die ich mir für später aufheben möchte. Oder auch um sie fast immer dabei und abrufbar zu haben … wenn ich auch öfters mal das Mobiltelefon gar nicht dabei habe.

Das mache ich mit Joplin. Es läuft bei mir ganz prima auf Ubuntu, Mac OS X und meinem Androiden. Das Programm ist aber auch für iOS und Windows verfügbar. Und es gibt sogar eine Befehlszeilen-Version.

Joplin ist ein Notizprogramm, welches auch Noch-zu-erledigen-Listen kann, und als Open Source Software verfügbar ist. Es spricht Markdown, beherrscht Verschlüsselung und es kann über diverse Dienste synchronisert werden. Das mache ich über meine eigene Wolke. Eine Nextcloud-Installation in meinem Webspace bei all-inkl.com. Es kann aber auch mit Dropbox, Onedrive und WebDAV synchronisiert werden.

Es können Kategorien angelegt, und jeder Eintrag kann mit Schlüsselwörtern versehen und auch darüber gesucht werden. Bilder können per Drag & Drop den Texten hinzugefügt werden. Ebenso gelangen Notizen oder Listen in andere Kategorien. Bestehende Daten aus Evernote (mit allen Formatierungen und Anhängen) können importiert werden. Desweiteren beherrscht es noch Enex- und JEX-Dateien.

Die Notizen werden als Textdatei mit den zugehörigen Anhängen in Verzeichnissen abgelegt. Das alles kann recht einfach bearbeitet, kopiert und gesichert werden. Zum Anschauen der Notizen oder Listen auf den unterschiedlichen Gerätschaften wird erstmal keine bestehende Internetverbindung benötigt. Änderungen werden abgeglichen, sobald man das möchte oder eine Internetverbindung besteht.

Ein wunderbares Werkzeug also, um so allerhand zu speichern.

Seit der ersten Version ist schon einiges an Zeit vergangen, und der Entwickler hat seit damals schon recht viele Kanten beseitigt, und neue und sinnvolle Funktionen hinzugefügt. Auch auf Wunsch diverser Benutzer hin. Es bleibt hoffentlich weiterhind so lebhaft und spannend.

Ordner & Dateien überwachen und bei Änderungen auf einen FTP-Server hochladen…

…in einer Apple-Umgebung.

Wenn es darum geht, viele Dateien mit sich ständig aktualisierenden Inhalten, im Internet zum herunter laden anzubieten, sollte das automatisch und möglichst im Hintergrund ablaufen. Das heisst: sobald eine entsprechende Datei geändert/hinzugefügt/gelöscht wird, sollte das Hochladen automatisch erfolgen. Gleiches Spiel bei Ordnern (Verzeichnissen).

Händisch ist das sehr aufwendig und Zeit raubend.

Nach einigen Tests mit CaptainFTP und dem zusätzlichen Programm CrowzNest (überwacht Ordner und lädt im Hintergrund mit CaptainFTP die Dateien auf den FTP-Server); Mac OS X Ordnerüberwachung mit gekoppeltem AppleScript, Automator, usw. …

…bin ich bei folgender Lösung gelandet. Alles andere funktionierte nie so, dass es nicht dauernd kontrolliert und neu angeschuckt werden musste. Also sehr unzuverlässig.


Was erledigt nun die Aufgabe? Hier ein kurzer Überblick:

  • per Launchd-Services wird der entsprechende Ordner und/oder die Datei überwacht
  • ein AppleScript wird bei Änderungen des Ordners oder der Datei gestartet
  • Transmit lädt die Dateien auf den FTP-Server hoch
  • im Kundenbereich organisiert ein Skript die Darstellung (Auflistung) und das Herunterladen der Dateien

Wie prüft man mit den Launchd-Services Ordner und Dateien auf Änderungen?

Das funktionierte für mich am besten mit dem Programm LaunchControl (eigentlich kostenpflichtig; funktioniert aber erstmal auch ohne zu bezahlen). Es gibt noch Lingon. Das hat leider nicht so gute Einstellungsmöglichkeiten per grafischer Oberfläche und funktioniert auch nicht so zuverlässig. Jedenfalls in der Umgebung wo der Arbeitsablauf eingerichtet werden musste..

Man kann die Datei natürlich auch von Hand anlegen/bearbeiten. Wer es möchte … mir war der Weg mit benutzerfreundlicher Klickoberfläche lieber.

Über LaunchControl habe ich dann Launchd-Jobs angelegt, die die entsprechenden Verzeichnisse oder eine einzelne Datei auf Änderungen prüft. Sobald eine Datei geändert, hinzugefügt oder auch nur das Verzeichnis geöffnet wird, startet die Synchronisierung.

Über Watch paths kann man Verzeichnisse und Dateien überwachen. Eine Überwachung am besten wie im unteren Bildschirmfoto gezeigt zusammen stellen. Allerdings hatte ich nach einigen Tests festgestellt, dass es durchaus auf einem anderen System leicht anders aussehen kann.

Unter Mac OS X Snow Leopard lief es wie unten gezeigt am besten und eben zuverlässig.

launchcontrol

Ganz Wichtig!
Bei Program to run nicht auf die .app verlinken. Den Paketinhalt anzeigen lassen und auf das Applet darin verlinken. Das AppleScript kann hieraus nicht direkt gestartet werden.


Die Synchronisierung

Über die Launchd-Services wird jeweils ein AppleScript gestartet, welches Transmit (FTP-Client) mit der Synchronisation der Dateien auf dem Server beauftragt. Es werden auch nur die Dateien hochgeladen, die verändert wurden. Das funktioniert mit Transmit ganz hervorragend.

Transmit benutze ich auch, wenn es darum geht, diverse Skripte im Internet zu aktualisieren. Der Abgleich, was alt aufm Server ist und gegen lokale Dateien ausgetauscht werden muss, funktioniert wirklich wunderbar. Ist zum Beispiel bestens dazu geeignet, CMS-Skripte aktuell zu halten, die keine integrierte Aktualisierungs-Option eingebaut haben.

sync


Das AppleScript

Die ursprüngliche Version hab ich mir hier besorgt. Das funktioniert so schon richtig gut. Auch als Ordneraktion.

Für meinen Fall musste ich es aber nocht etwas anpassen;

  • das Skript soll prüfen, ob ein gewisses Server-Volume schon vorhanden (auf dem Schreibtisch angemeldet) ist
  • wenn nicht: das Volume holen, etwas warten und das Skript neu starten

Mein AppleScript-Wissen war/ist leider etwas eingerostet. Ich weiss nicht, ob man es mit den eingebauten Schleifen nicht noch etwas optimieren kann. Wer mag kann das. Freu mich über Tipps und/oder eine neue Version des Skriptes. Ansonsten kann jeder das vorhandene Skript benutzen/erweitern/verbreiten wie er grad Lust und Zeit hat.

Sofern das unter der GNU General Public Lizenz erfolgt.

Oder eben die Einstellungen (sind im Skript markiert) anpassen und selbst verwenden.

Hier kann man es herunter laden (die neue Version 1.1 ist seit dem 2. Februar 2016 online; neu ist eine zusätzliche Schleife, die verhindert, dass das Server-Volume zu oft geholt wird).

Vielleicht hilft es ja bei der einen oder anderen Problemlösung.

Manchmal kommt es zu Problemen (wofür ich keine Problemlösung im Skript habe):

  • wenn das Volume sich nicht einhängen (anmelden) lässt und eine zu lange Schleife entsteht (ich denke, das habe ich mit der Version 1.1 behoben)
  • die Verbindung zu einem FTP-Server nicht funktioniert

Aber meistens (in 97% der Fälle) läuft es zuverlässig. Bei den oben genannten Problemen hilft etwas Geduld. Die Skripte beenden, Transmit ebenso. Etwas warten, denn der Prozess läuft ja im Hintergrund, und sollte bald erneut starten. Auf jeden Fall zu dem Moment, sobald etwas in den angegebenen Pfaden verändert wird.


Dieses Skript und Ideen zu den LaunchdJobs werden in der Hoffnung zur Verfügung gestellt, dass es hilfreich und nützlich sein kann. Ohne Garantie. Also am besten nicht gleich in laufende Arbeitsabläufe integrieren. Besser in einer Testumgebung.