Die Jahre vergingen und mit der Zettelsammlung wuchs auch der Wunsch nach ein wenig bling-bling. Ich wollte ein wenig Formatierung, also musste eine bessere GUI her!
Nichts gegen eigene Süppchen, aber wenn ich darüber nachdenke, was ich noch gerne haben möchte (Syntax-highlighting, Tabellen, funktionierende Querverweise, ...), sollte ich mir langsam eingestehen, daß Andere das Problem längst besser gelöst haben als ich. Ein "richtiges" Notizprogramm musste her!
Davon gibt es zahlreiche. Ich habe damals™ ein wenig rumprobiert und fand zuerst einmal TiddlyWiki charmant.
Seinerzeit noch eine einzelne HTML-Datei, die alles enthielt, inkl. der Notizen.
Die Pflege der Notizen war aber schnell zur Bonusaufgabe geworden, weit weg von der Einfachheit von Textdateien. Außerdem entwickelten sich Browser weiter und es wurde immer lästiger, das in der Form noch weiterzuverwenden. Ein neues Tool musste her!
Davon gibt es zahlreiche. Ich habe damals™ ein wenig rumprobiert und fand als nächstes CherryTree charmant.
Es hatte alles, was ich wollte, sogar Bilder waren fortan kein Problem mehr. Die Performance rockt, das Interface ist angenehm kompakt.
Einige Jahre war Cherrytree mein Notizklotzbegleiter der Wahl.
Es ist kompakt, bietet tolle Funktionen und ist sehr schnell. Aber eins hat mich immer gestört: Alles liegt in einer einzelnen Datenbankdatei.
Das ist kein besonders nachhaltiges Format und außerdem muss zum synchronisieren der Notizen die gesamte DB transferiert werden, selbst wenn ich nur ein Wort ändere.
Ich schaue mich also ein weiteres Mal auf dem freien Markt um. Und finde... Zim. Zim ist ein großartiges Program, es kann alles was es soll, sogar noch ein wenig mehr (zum Beispiel ein Inhaltsverzeichnis für einzelne Seiten).
Außerdem benutzt es wieder einfache Textdateien mit Wiki-Markup. Es performt super und noch dazu ist es python geschrieben, so kann ich Kleinigkeiten nach meinem Gutdünken einfach anpassen.
Und dann, rundum glücklich mit Zim, begegne ich plötzlich Obsidian.
Statt Wiki-Syntax verwendet es Markdown, der Editor ist großartig, das Interface sehr sexy und prima anpassbar (CSS, s.u.) und obwohl es auf Electron basiert, performt es sehr gut und fühlt sich stellenweise sogar flüssiger an als Zim (vor allem in Codeblocks).
Natürlich muss ich noch gründlicher testen, aber der erste Flirt war überraschend heiß!
Junge, Junge, was mach ich hier bloß?! Electron! Closed Source¹! Bloated!
Aber es ist auch kostenlos für privat, sehr crossplatform (Electron hat nicht nur Nachteile), und neben AppImage und Flatpak ist es auch in den arch-repos.
Ich glaube, ich lasse mich mal auf eine Affaire ein. Aber zuvor muss ich noch ein paar Furunkel entfernen:
Ich mag es nicht, wenn Programme ihre eigene Titelleiste verwenden. Das ist und bleibt Aufgabe des Windowmanagers.
Ich würde gerne `Esc` drücken können um es zu beenden oder noch besser² in den Systray zu minimieren.
Außerdem soll es ein Icon haben. Schlimm, daß ich sowas nachrüsten muss!
Den mitgelieferten Updater/Launcher benötige ich nicht. Den wegzulassen spart nochmal ne Viertelsekunde
Ich kann zwar ein bisschen JS aber electron ist mir neu. Na mal schauen. Ich werde das erstmal in situ hacken und falls möglich später daraus ein Plugin machen.
Also laden wir erstmal das Paket und entpacken es zum weiteren Sezieren:
wget "https://github.com/obsidianmd/obsidian-releases/releases/download/v0.14.2/obsidian-0.14.2.asar.gz"
gunzip "obsidian-0.14.2.asar.gz"
asar extract "obsidian-0.14.2.asar" "obsidian_asar"
cd "obsidian_asar"
# Haggedi-hack in der main.js...
patch --binary -p2 < "../my-patches.diff"
# Eine index.js erstellen, um den Starter zu umgehen
# Die benötigt noch @electron/remote 2.0.4
# also noch node_modules aus der app.asar kopieren
# oder npm --install "@electron/remote"
cd ..
# zum testen:
electron17 obsidian_asar
# oder gepackt:
asar pack obsidian_asar obsidian-own.asar
electron17 obsidian-own.asar
Dazu ein schniekes Theme (Minimal), ein paar Plugins (Advanced Tables, Hider, Minimal Theme Settings)
und ein wenig custom CSS und schon sieht das doch nach was aus.
Jetzt noch fix ein kurzes Skript zum Konvertieren des Markups und schon kann ich damit arbeiten:
Und jetzt ab in den Praxistest. Mal sehen
1: Quasi. Welche Electron-App ist schon wirklich closed-source...
2: Die Startzeit ist unter 2s, was OK ist, aber instant ist immer besser.
Tja, was soll man machen, der Akku braucht ne Ladung und die 18650-Halter sind noch nicht geliefert oder auch nur bestellt. [TODO]
Ladegerät hab' ich quasi da. Ein regelbares Netzteil. Solange man Spannung und Strom begrenzen kann, ist alles gut.
Mein Netzteil hat eine serielle Schnittstelle, also kann ich auch gleich den Ladevorgang aufzeichen.
Diesen "Logger" für mein Voltcraft PPS-11360 hab ich mir in python zurechtgeschustert.
Der Code ist eher hässlich, daher ist das bisher nicht öffentlich.
Diese Version ist für Terminal, ich hab da auch ne GTK-Variante. Die sieht von innen noch schlimmer aus.
Wenn ich mal dazu komme das alles etwas aufzuräumen, werd ich das auch mal hochladen... [TODO]
Aber eigentlich geht es ja ohnehin nur darum, Daten zu loggen. Das geht auch ohne Fancy (aber mit is geiler).
Wie immer war ich zu zaghaft mit dem Ladestrom und hab unnötig lange gewartet, aber wieviel Saft habe ich denn nun reingepumpt?
Die Taschenlampe hat ½W Leistung, ich kann also hoffentlich ca. 9 Stunden rumleuchten, bis der Akku wieder halbleer ist.
Ich probiere von Zeit zu Zeit ganz gern mal neue Tools aus. Sei es um meinen Werkzeugkoffer zu erweitern oder als Ersatz zu bestehenden Tools.
Mein Stammeditor/IDE ist seit langer Zeit Geany (und wird es vermutlich auch bleiben), aber auch Geany hat so seine Ecken...
Und da kommt CudaText daher... sieht auf den ersten Blick vielversprechend aus, also zeig' mal.
Als erstes sind mir 2 Sachen positiv aufgefallen: Sehr schnell, sehr portabel (Keine Installation, ich kann das Programmverzeichnis inkl. meiner Konfig & Plugins einfach auf den nächsten Rechner kopieren, fertig).
Dann habe ich ein paar Stunden (!) mit der Konfiguration verbracht. Das ist nicht nötig, der funktioniert schon ab Werk, aber ich will ja wissen, was so alles geht. Ein paar der zahlreichen Plugins ausprobiert, Farbschema, Darstellung, Lexer nachinstallieren, sowas halt. Da ist sehr viel Konfigurierbar. Ein Füllhorn an Möglichkeiten. An der Stelle kann ich auch gleich die Dokumentation loben. Sie ist a) vorhanden, b) gut auffindbar und c) Umfangreich. Es gibt ein Wiki, ein Forum, Github und ich habe das Gefühl, der Hauptentwickler ist ganz gut hinterher.
Ähnlich wie mein aktueller GUI-Filemanger der Wahl (DoubleCommander) ist CudaText in Lazarus & Free Pascal gebaut. Damit ist das gleich mal so richtig crossplatform: Windows, Linux (Gtk2 oder Qt), macOS, *BSD... es gibt sogar einen inoffiziellen Haiku-Build...
Alles Zusammen geht der jetzt in Runde 2: Ich werd den mal in der Praxis verwenden und gucken, was mich nervt oder begeistert.
Ein paar Sachen sind mir schon aufgefallen:
Primary Copy-und-Paste per Auswahl und Mittelklick funktioniert nicht wie erwartet. Ja, man muss das vorher in der Konfig anschalten, aber auch dann fügt ein Mittelklick an der aktuellen Textcursorposition ein und nicht an der Mausposition. Das ist... seltsam.
Ich habe auch keine Option gefunden, mit der man das Mittelklick-Verhalten auf "nativ" stellen kann.
Es gibt nur ein Sidepanel mit "Tabs" für Symbolbaum, Projektbrowser, Dokumentliste und was man sonst noch so an Seitenleisten-Plugins an hat. Das ist bei Geany auch so, dort habe ich mir ein Plugin gebaut, damit ich den Symbolbaum extra habe, so daß Projektbrowser und Symbolbaum zeitgleich sichtbar sind. Ich bin noch nicht sicher, ob es mir möglich sein wird, das auch als Plugin in CudaText umzusetzen (wohl nicht).
Ich finde es schade, daß im Projektbrowser immer nur genau ein Projekt angezeigt werden kann. Das macht den Projekt-Wurzelknoten irgendwie obsolet.
Die Session-Verwaltung per Plugin fühlt sich umständlich an.
Aber es gibt eben auch echt coole Features:
Multicursor ist flexibler als die strikte Spaltenauswahl bei Geany
Tabs können wahlweise coloriert werden, man kann sich dateitypabhängige Symbole darin anzeigen lassen.
bessere Calltips und Autocompletion
Subblöcke in anderer Sprache (sowas wie ne HTML-Datei mit nem <style>-Block und nem <script>-Block) werden mit anderem Hintergrund versehen und im Gegensatz zu Geany korrekt gesyntaxhighlightet.
Horizontales Lineal brauche ich eher selten, aber schön daß es da ist. Ist jedenfalls einfacher ablesbar als die Spaltennummer im Footer
Dateivorschau bei Auswahl im Projektbrowser, inkl. Bilder!
Nun muss die Zeit zeigen, ob ich mir für die Negativpunkte Workarounds baue bzw. die Konfig verfeinere oder ob ich Geany treu bleibe und auf die paar coolen Features verzichte...
Ich hab' da diese "Loungeball"-LED, eine Farbwechsel-RGB-LED, die von sich aus einen langsamen Farbübergang wiedergibt.
Man sieht schön die 3 einzelnen Chips für rot, grün und blau und links den Controller.
Und wenn man dann noch 'ne Milchglaskuppel drüberstülpt kann man wunderbar die aus dem Physikunterricht bekannte additive Farbmischung sehen.
Und hier die Magie der LED, der Milchglaskuppel und der additiven Farbmischung in modernster Bewegtbildtechnik:
Im Video sieht man besonders gut, wie schwer es Digitalkameras haben, das typische LED-blau (bei 0:13) korrekt abzubilden, vermutlich weil es so nah am UV-Bereich ist.
╔═════════════════════════════════════════════════════════════════════╗
║ [Bild] Kitsch on the water, fire in the sky ║
║ Samstag, 5. Juni 2021, 23:53eloi ║
╚═════════════════════════════════════════════════════════════════════╝
Da guckt man Abends zum Runterkommen noch nebenbei ein wenig klassisches Männer-TV: BBC Robot Wars. Natürlich aus rein akademischem Interesse und nicht zu schnöden Unterhaltungszwecken, weil sich da 2 oder mehr ferngesteuerte Roboter auf die Fresse hauen.
Zwischen den Kämpfen interviewt Philippa Forrester die Teams in der Boxengasse. Und weil Roboterkämpfe komischerweise auch bei Kindern gut ankommen ist bei ca. jedem 2. Team ein Kind mit bei. Die Roboter sind ja ohnehin oft so ein Familie-und-co-Ding, also warum nicht.
In Staffel 1-3 hat mich aber immer tierisch aufgeregt daß Philippa es nicht lassen konnte an den fremden Kindern rumzuklaren und rumzuknuddeln. Das schien vor Ort niemanden gestört zu haben, aber ich als kinderlos zuschauender Mensch von woanders und über 20 Jahre später fühlte mich an den Stellen immer unbehaglich.
In Staffel 4 schließlich wurde Philippa aus Mutterschutzgründen vertreten.
Gerade habe ich den Großteil von Staffel 5 durch und anstatt mich auf ein spannendes Halbfinale und über innovative Fortschritte bei den Robotern zu freuen (endlich mehr CO₂-Flipper! und endlich anständige Spinner!), freue ich mich, daß Philippa bis jetzt bei keinem Interview mit einem Team, bei dem ein Kind dabei ist ständig an selbigem rumgrabbeln musste. Das ist mir in jeder einzelnen Folge mind. 1x positiv aufgefallen.
Ist es, weil sie ihren Knuddeltrieb jetzt Zuhause ausleben kann? Oder weil sie erkannt hat, daß es echt unangenehm ist, wenn fremde Personen dem eigenen Kind so auf den Pelz rücken. Oder bin ich wieder nur zu norddeutsch und seh das alles zu eng?
Nicht, daß ich akut Bedarf hätte, aber zum Einen wollte ich eine etwas feinere Spitze im Sortiment haben, zum Anderen ist es nicht verkehrt einen ordentliches Gleichstrombrateisen zu haben, für falls mal Lötbedarf aber keine Steckdose vorhanden ist. Man weiß ja nie.
Also hab ich mir 'n TS100 gekauft. Tausend Youtuber können nicht irren. Kam gestern an, musste ich heute direkt mal probefahren.
Das Teil braucht 12-24V (Zigarettenanzünder, Akkupack, Netzteil, whatever), ich nehm' erstmal mein Tischnetzteil, da seh ich gleich wie doll es strömt und ich kann ihm bequem verschiedene Eingangspannungen testen.
Nu noch was zum löten: 5x5 5mm-LED-panel. In diesem Fall bestückt mit so farbwechselnden LEDs und brav einem Vorwiderstand pro LED. Das ganze dann einseitig auf Lochraster geroutet (was ein Akt! Und würde man 7x7 auch noch ohne Schummeln hinbekommen?).
Testfahrt bestanden, der kann was. Handhabung geht klar, Heizen geht schnell genug, Lochraster im üblichen Rahmen klappt prima, auch bei 12V. Aber bei 24V schon doch deutlich besser. Klar, da hat er beinahe vierfache Leistung, das merkt man.
Wenn man gut Masse zu erhitzen hat (z.B. der fette +5V-Trace unten rechts), braucht man bei 12V-Betrieb Geduld. Oder man dreht vorher bisschen wärmer¹.
Den automagischen gyroskopbasierten Standbymodus find ich pfiffig: Wenn das Teil einige Zeit nicht wackelt (also rumliegt), fährt es auf die Temperatur runter und wenn man es dann anfässt wieder hoch. Und nach langer Bewegungslosigkeit geht es auch ganz aus.
Fazit: Er wird meine Ersa-Station zuhause nicht ersetzen (außer falls ich mal 0402 oder kleiner löten muss), aber als Feldkolben isser perfekt.
1: In der alternativen Firmware von Ralim kann man per Knopfdruck temporär die Temperatur erhöhen. Das könnte in einem Fall wie diesem oder z.B. für das Verzinnen von dicken Kabeln bei Zigarettenanzünderbetrieb im Kraftfahrzeugsbereich hilfreich sein.
Zufall is manchmal gruselig. Vorhin beim Pubquiz kam die Frage "Was war neben 'Schwarz Rot Gold' noch auf der DDR-Fahne?"
Klar, Hammer und Zirkel. Meine Lalasynapsen dachten sofort an das einzige Lied einer gleichnamigen Hiphopkapelle in meiner Sammlung ("Herr Günther ausm Ersten").
Und nun sitze ich hier, schreibe Bericht und was spielt der Shuffle? Genau.
(O.O)
Ich meine... wie groß is die Wahrscheinlichkeit? (Verdammt, ich kann nachgucken: genau 1:35839, wenn man nach der Anzahl der Lieder geht, auf Spieldauer bezogen ca. 1:48371 ... krass.)
╔═════════════════════════════════════════════════════════════════════╗
║ neues curl in altem kernel ║
║ Donnerstag, 17. Oktober 2019, 01:16errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Ich hab hier ein Gerät (ARMv5) in meinem LAN daß aus Gründen™ ein antikes Arch-Linux mit Kernel 2.6.35 (2010) fährt.
Der Rest der Software ist daran angepasst und so frisch es damals ging. (glibc 2.16 von 2012 und openssl 1.0.0 von 2014).
Dieses Gerät muss mit einem aktuell gehalten Server über https kommunizieren.
Auf dem Server habe ich gerade ein paar antike Cypher deaktiviert, weswegen diese Kommunikation nun fehlschlägt.
Mein naheliegender erster Gedanke war curl+openssl zu aktualisieren und aktuelle Verschlüsselung zu benutzen.
Das ist die saubere Lösung und natürlich die lästigste.
Variante zwei wäre, einen der alten Cypher wieder zu reaktivieren. Nun bin ich kein Security-experte, aber es wird schon seinen Grund haben, daß da normalerweise von abgeraten wird.
Variante drei wäre, Klartext zu reden - immerhin ist die Kommunikation komplett lokal und inhaltlich unkritisch. Dennoch fühlt sich das falsch an, bei einem update zu downgraden.
Also versuchen wir die erste Variante und aktualisieren zuerst OpenSSL. Klar, über die Paketverwaltung.
wget ...
pacman -U ...
und schon geht alles kaputt.
ssh, wget, curl, wpa_supplicant, pacman,... alles. OK, das kam nicht soo überraschend, aber wie bekomme ich denn jetzt die alte lib wieder zurück aufs Gerät um handlungsfähig zu bleiben?
Ah, ich weiß! Klartext reden! Einfach per netcat, ist ja für den Moment egal. Und ich mag netcat.
Also auf 'nem anderen PC das backup-image von vorher einhängen (Jap, hab 'n Backup, bin lernfähig):
tar c * | nc -l -p 42024
und auf dem Gerät:
nc 192.168.42.23 42024 | tar x
Pustekuchen, kein netcat installiert. Mist. Ich war schon kurz davor irgend 'ne Krücke in 10 Zeilen python hinzurotzen, aber zum Glück geht es weit eleganter, denn bash kann das auch selbst:
tar x </dev/tcp/192.168.42.23/42024
Whoa, praktisch¹! Also fix wieder zurück auf den alten Stand und OpenSSL 1.1.1 aus den Quellen kompilieren.
Auf besagtem Device (ein Freescale i.MX233 454MHz mit 64MB RAM) dauert das, aber was solls, es lief immerhin sauber durch.
Gut, openssl ist also in Version 1.0.0 und 1.1.1 vorhanden, das müsste passen, kann ich ja nun curl updaten.
Am besten auch aus den Quellen. Aber irgendwie kommt der beim Kompilieren durcheinander.
Configure sagt mir, daß die korrekte OpenSSL-Version benutzt wird, aber make wirft einen Fehler, der auf die falsche (1.0.0) API hindeutet.
Nach zahllosen, zeitfressenden und ergebnislosen Versuchen habe ich aufgegeben.
Ich bin auch einfach nicht so drin in der C-Welt und muss bei den meisten Flags und Schalten raten. Zum Glück kann curl auch diverse andere SSL-Bibliotheken verwenden, daher ist der nächste Versuch WolfSSL (die Entscheidung fiel relativ wahllos, hauptsache keine weiteren Abhängigkeiten).
Für WolfSSL genügte es, die Quellen zu laden und
./configure
make
make install
Anschließend konnte ich mit den richtigen Parametern (auch das erforderte einige Versuche) sowohl configure als auch make von curl sauber durchführen. Und zwar so:
Und siehe! Curl ist im Jahr 2019 angekommen und ich brauche keinen schmutzigen Workaround für meinen https-zugriff auf den Server. Sehr gut.
Warum das jetzt mit genau dieser Kombination ging weiß ich zwar nicht, insbesondere ist mir nicht ganz klar, warum ich threading abschalten musste, aber die ganze Odysee dauert nun schon fünf Tage und ich habe keine Lust mehr, dem auf den Grund zu gehen. Es läuft. Das genügt.
Ich bin gespannt was das wird, wenn mir dann in 2-3 Jahren SSH um die Ohren fliegt...
1: Wobei Fefe auch nicht ganz unrecht hat: Warum muss eine Shell tcp können? Das bringt nur unnötige Komplexität und Angriffsfläche rein. Ich finde es trotzdem praktisch.
Ich habe gerade gemerkt, wie ich unbewusst Fehlerrouting betreibe. Kennst du die Captchas von SolveMedia? (is eig. egal)
Die Ladefunktion timed manchmal out und dann gibts n fallback-captcha, was immer "adventure awaits" ist.
Immer wenn ich nun so ein Captcha habe, daß nicht instant läd, tippe ich schonmal los... wieder ne Sekunde gespart.
Das passiert übrigens immer, wenn es ein "sponsored captcha" ist. Da is dann normalerweise ein Markenlabel zum abzutippen, aber mein Adblocker verhindert das.
Ich vermute mit dieser Information kann man ResolveMedia-Captchas knacken, aber ohne jetzt weiter recherchieren zu wollen vermute ich mal, daß die eh schon geknackt sind.