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 Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    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, muß 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 GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.