OpenSource - lieben, hassen - oder beides?

vorhergehende Artikel in: Linux Rants
31.07.2022

Ich habe neulich zwei verschiedene Ideen verfolgt, die mich beide dazu brachten, OpenSource-Projekte mit meinem Input zu veredeln. Dabei sah ich, was schlecht an OpenSource-Projekten ist und warum deren Existenz trotzdem eine richtig gute Sache ist!

HyperSQL oder HSQLDB

Die erste Idee war, mein Plugin zur Logdatei-Analyse für die sQLshell zu erweitern: derzeit wird ein von mir erstellter rudimentärer CSV-JDBC-Treiber benutzt. HSQLDB unterstützt aber ebenfalls CSV-Dateien als Tabellen und die SQL-Unterstützung ist dort wesentlich weiter gediehen als bei meiner eigenen Implementierung.

Meine Implementierung unterstützt aber ebenfalls Datentypen: Damit ist es möglich, die einzelnen Spalten in einer CSV-Datei nicht nur als Text zu interpretieren, sondern als Zahlen, Timestamps,...

Ich wollte vor der Umstellung des Plugins zunächst sehen, ob HSQL das auch kann. In der Anleitung zu diesem Thema sah es zunächst so aus - ich konnte aber in der Anleitung keine Informationen darüber finden, wie man das exakte Format eines Timestamps (oder eines Datums, einer Zeitangabe,...) spezifiziert.

Also probierte ich einfach mit einer Beispieldatei und das schlug prompt mit der Meldung timestamp typ: org.hsqldb.HsqlException: data exception: invalid datetime format fehl. Eine Suche im Internet brachte das korrekte Format an den Tag: 2022-07-31 13:22:33.

Daraufhin recherchierte ich in den Quellen von HSQL - oder ich hatte vor, danach zu suchen, denn es stellte sich heraus, dass es nicht so einfach war, diese überhaupt zu finden. Ich wollte eigentlich auch einen Pull-Request einreichen, der darin bestanden hätte, dieses Format konfigurierbar - idealerweise sogar pro Spalte - zu gestalten. Als ich diese Information nicht finden konnte und sah, dass die Quellen nur per SVN zur Verfügung gestellt wurden, kühlte meine Leidenschaft stark ab.

Ich fand im Netz noch einen Idealisten, der die Quellen in Github hochgeladen hatte - allerdings wurden sie dort das letzte Mal vor vier Jahren aktualisiert.

Der Quelltext schreckte mich dann vollends davon ab, meine Zeit hier zu investieren: Die Anwendung implementiert eine eigene Lösung, um Daten mittels Formatstrings zu formatieren und zu parsen - nicht, dass der Autor nicht wüsste, dass es im JDK entsprechende Klassen dafür gibt: HSQL bietet sogar Funktionen zur Umwandlung der eigenen in die SimpleDateFormat-Syntax!

HSQLDB ist zwar eine famose Sache, aber ich denke, dass auch in diesem Projekt mal ein größerer Overhaul stattfinden müsste, um die Codebasis auf den aktuellsten Stand zu bringen. Aber dieses Projekt ist halt ebenso wie Log4j davon geplagt, dass es von tausenden anderen Projekten eingesetzt wird und (ich adressiere hier besonders die Konzerne, die das tun) keinerlei Mittel oder Ressourcen zur Weiterentwicklung und/oder Wartung zur Verfügung stellen!

Gnuplot neue Terminals

Das zweite Projekt, bei dem ich kurz überlegt hatte, einen Beitrag zu leisten war Gnuplot - ich hatte ja bereits darüber berichtet, was man alles mit Gnuplot im Terminal tun kann - aber das Aussehen der Plots im Terminal war zugegebenermaßen eher nur etwas für Liebhaber.

Nun ist es aber möglich, ansprechende Graphiken (nicht nur mit Gnuplot) auch im Terminal anzuzeigen - nur eben nicht in allen: Stellt man die beiden Funktionen

und

und deren Differenz in einem Terminal dar, das sixel unterstützt - zum Beispiel, indem man XTerm mit einer entsprechenden Option xterm -ti vt340 startet, kommt bei Verwendung eines entsprechenden Skripts

set xrange [0:15]
set yrange [-0.6:0.6]
set grid
set arrow from 0.57, graph 0 to 0.57, graph 1 nohead lc rgb 'red'
set arrow from 2.4, graph 0 to 2.4, graph 1 nohead lc rgb 'red'
set arrow from 8.25, graph 0 to 8.25, graph 1 nohead lc rgb 'red'
#set object 1 circle at 0,0 size scr 0.01 fc rgb "navy"
set object 2 circle at 0.57,0.425 size scr 0.01 fc rgb "navy"
set object 3 circle at 2.4,0.355 size scr 0.01 fc rgb "navy"
set object 4 circle at 8.25,0.12 size scr 0.01 fc rgb "navy"
plot -0.04*x+0.45 t'f(x)', x/(1+x**2) t'g(x)', -x/(1+x**2) -0.04*x+0.45 t'f(x)-g(x)

folgendes heraus:

Screenshot Darstellung durch Gnuplot im Terminal mit einem Sixel-fähigen Terminal-Emulator (xterm -ti vt340)

So weit - so bekannt. Ich bin aber im vergangenen Jahr immer wieder mal auf die Idee gestoßen, Graphik im Terminal mittels Braille-Zeichen darzustellen, die im Unicode-Standard tatsächlich Codepunkte haben. Und so kam ich auf die Idee, diese Variante der Darstellung auch für Gnuplot verwenden zu wollen. Gerade, als ich mich also hinsetzte und beginnen wollte, im Quellcode nach den Voraussetzungen zu suchen, ein solches neues Terminal hinzuzufügen, stieß ich auf neue Informationen, die auf Seite 26 angaben, dass ab Version 5.5 exakt ein solches bereits implementiert ist!

Nun setzte also die Suche nach einem Paket ein, das diese Version zur Verfügung stellte. Dabei war ich nicht erfolgreich - da aber auch Gnuplot OpenSource ist, checkte ich kurzerhand den aktuellen Entwicklungsstand aus und übersetzte es selbst. Dabei war zu beachten, dass das neue Terminal block standardmäßig nicht mit gebaut wird - man muss sich das explizit wünschen.

Nachdem das Binary vorlag, startete ich es - ebenfalls im xterm - und führte das oben angegebene Skript erneut aus, nachdem ich das Terminal mittels set term block braille konfiguriert hatte. Das Ergebnis:

Screenshot Darstellung durch Gnuplot im xterm mit Terminal namens block

Ich versuchte dann, den Schwierigkeitsgrad mittels set term block braille ansi etwas zu erhöhen - Gnuplot meisterte das aber auch hervorragend:

Screenshot Farbige Darstellung durch Gnuplot im xterm mit Terminal namens block

Artikel, die hierher verlinken

BeanShell 3.0.0-SNAPSHOT Fork sofort aktualisieren!

12.09.2022

Ich habe heute einen Bug in der OpenSource-Variante der BeanShell auf GutHub gefunden, dessen Behandlung mich wieder einmal ziemlich sprachlos zurückgelassen hat...

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Multi-User-WebDAV, Docker, GitHub

    17.11.2019

    Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...

    Weiterlesen...

Neueste Artikel

  • Migration der Webseite und aller OpenSource Projekte

    In eigener Sache...

    Weiterlesen...
  • AutoHideToolbar für Java Swing

    Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.

    Weiterlesen...
  • Integration von EBMap4D in die sQLshell

    Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.