Ein Blog

Posts mit Tag "tools"

Kennt Ihr jq? Damit könnt Ihr Jsonpath-Querys auf JSON im Terminal werfen. So kann man ganz gut strukturierte Daten in Bash-Skripten verarbeiten.

xq kann das mit XML.

Für YAML gibt es zwei verschiedene, einmal yq (einen jq-Wrapper für XML, YAML und TOML) und yq (jq nur für ausschließlich YAML). Leider haben beide denselben Namen.

Dann gibt es noch q. Mit q kann man SQL-Querys auf CSV-Dateien absetzen.

Hatte neulich Tools verlinkt, mit denen man auf Dateiinhalte Querys absetzen kann.

Heute springt mit das Tool fselect entgegen. Da kann man SQL-like Abfragen auf das Dateisystem machen, um z. B. eine Datei zu finden. Falls man nicht so fluent in find ist.

Beispiele aus der README:

fselect "name from /tmp where (name = *.tmp and size = 0) or (name = *.cfg and size > 1000000)"
fselect "LOWER(name), UPPER(name), LENGTH(name), YEAR(modified) from /home/user/Downloads"
fselect size, path from /home/user where name = '*.cfg' or name = '*.tmp'
fselect size, abspath from ./tmp where size gt 2g

Ich habe ja schonmal über jq, xq, yq, q und fselect berichtet.

Da gibt es noch eins: htmlq. Das ist wie jq, nur für HTML und als Abfragesprache hat man CSS-Selektoren.

Vor ein paar Tagen habe ich Hurl kennengelernt. Das ist ein CLI-HTTP-Client, wie cURL. Der Unterschied ist: Hurl holt sich die Request-Parameter aus einer Datei.

Warum ist das so viel anders als cURL? Man kann mehrere HTTP-Anfragen in einer Datei abbilden. Diese Anfragen können Daten aus den Ergebnissen der vorherigen Anfrage verwenden. Aus dem README:

# Get home:
GET https://example.net

HTTP/1.1 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"

# Do login!
POST https://example.net/login?user=toto&password=1234
X-CSRF-TOKEN: {% raw %}{{csrf_token}}{% endraw %}

HTTP/1.1 302

Wie Ihr seht, kann man damit auch XPath-Querys auf die Antworten absetzen. Natürlich geht auch JSONPath. Das kann man mit einem [Asserts] kombinieren und sich somit HTTP-Tests bauen:

POST https://api.example.net/tests
{
    "id": "456",
    "evaluate": true
}

HTTP/1.1 200
[Asserts]
jsonpath "$.status" == "RUNNING"      # Check the status code
jsonpath "$.tests" count == 25        # Check the number of items

Intern verwendet das Tool natürlich cURL; man muss das Rad ja auch nicht neu erfinden.

Ein ls-Ersatz, geschrieben in Rust: exa

Verwende ich schon etwas länger und hab mich mittlerweile an den bunten Output gewöhnt. Ist leider kein Drop-In-Replacement, da die CLI-Params nicht gleich sind.

Ein kleines 2x10-Zellen-Excel. Ist vielleicht ganz praktisch, wenn man etwas schnell ausrechnen muss, man ber kein Excel/Calc zur Hand hat. Ich persönlich nehme dann meistens ein Python- oder Node.js-REPL. Aber manchmal will man ja eher sowas.

Ein Tool für Timestamps. Zeigt einen QR-Code der aktuellen Uhrzeit an.

time.fyi hat eine hübsche Darstellung von Zeitzonenvergleich.

dockerc kann aus Docker-Images standalone-Binarys machen. Quasi AppImage für Leute, die kein AppImage wollen.

Ich benutze seit bestimmt schon einer Dekade bei Outlook den vorgegebenen Kalender “Deutsche Feiertage”. Der schreibt nicht nur Silvester mit y, sondern hat auch alle Feiertage aller Bundesländer drin. Das ist etwas nervig, wenn man in einem Bundesland wohnt, das am wenigsten Feiertage hat.

ics.tools hat eine ICS für jedes Bundesland und für die Ferien separat. Ist offen und wird über GitHub gepflegt.

TUI-Ping mit History-Plot: Nping

presenterm: A markdown terminal slideshow tool

cURL kann nativ S3-v4-Signaturen: AWS SigV4 requests with curl

copyparty: Portable file server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps.

dumb pipe: Easy, direct connections that punch through NATs & stay connected as network conditions change.

Empfänger macht:

$ ./dumbpipe listen
using secret key 23ryys7pgvjrr57pcrvyivdrhvqyykg2tv3leou5grm66xfd7zzq
Listening. To connect, use:
./dumbpipe connect nodeecsxraxjtqtneathgplh6d5nb2rsnxpfulmkec2rvhwv3hh6m4rdgaibamaeqwjaegplgayaycueiom6wmbqcjqaibavg5hiaaaaaaaaaaabaau7wmbq

Sender:

echo "hello" | ./dumbpipe connect nodeecsxraxjtqtneathgplh6d5nb2rsnxpfulmkec2rvhwv3hh6m4rdgaibamaeqwjaegplgayaycueiom6wmbqcjqaibavg5hiaaaaaaaaaaabaau7wmbq

ffmpeg hat jetzt built-in-support für Whisper über Whisper.cpp. Ich hab Whisper.cpp schonmal auf ein paar TB Videos laufen lassen müssen. Die Ergebnisse sind releativ gut, wenn es sich bei de mVideo tatsächlich um viel gesprochenes handelt. Wenn es etwas stiller wird oder gar keine Stimmen zu hören sind, halluziniert es sehr doll.

Die Models werden bei ffmpeg nicht mit ausgeliefert und man muss eigene Model-Dateien angeben. Vielleicht taucht da irgendwo noch ein besseres Model auf.