CSS variables

Mit CSS-Variablen (offizieller Name: CSS custom properties) können Stylesheets parametrisiert werden, ohne dass eine Vorverarbeitung (beispielsweise mit scss) erforderlich wird. Die Variablen sollten CSS-typische Namen tragen (Kleinbuchstaben mit Bindestrichen gruppiert), die mit zwei Bindestrichen beginnen.

Wenn eine CSS-Variable in einem Element definiert wird, ist sie in dessen Kindelementen verfügbar. Soll sie also global verfügbar sein, definiert man sie zweckmäßigerweise im Root-Element:

:root {
  --main-bg-color: brown;
}

Sollen zusätzlich auch Attribute der Variablen gesetzt werden, kann stattdiessen die at-Regel @property genutzt werden:

@property --main-bg-color {
  syntax: "<color>";
  inherits: false;
  initial-value: brown;
  }

Ansonsten ist die Vererbbarkeit (inherits:) immer true.

Verwendet werden sie durch Aufruf der Funktion var():

p {
  background-color: var(--main-bg-color);
  }

Dies ist nur in Attributwerten möglich, nicht als (Teil von) Namen oder Selektoren! WeasyPrint lässt Variablen zudem nur als vollständige Attributwerte zu, nicht als Teile von mehrwertigen Attributen.

Auch von JavaScript aus können die Variablen (mit CSS.registerProperty) definiert werden.

Referenzen:

marimo: Ein alternatives Python-Notebook

marimo ist eine reaktive Notebook-Implementierung für Python, gewissermaßen in Konkurrenz zu den Jupyter-Notebooks.

Es kommt mit interaktiven Elementen (z.B. Sliders) und legt Wert auf eine deterministische Reihenfolge der Ausführung.

Marimo verfolgt den Datenfluss und mag es daher nicht, dass eine Variable, die in einer Zelle verwendet wurde, in einer folgenden Zelle neu definiert wird (“no two cells may define the same variable”).

Das Notebook wird als Python-Skript gespeichert (nicht als JSON wie bei Jupyter).

Zum Ausprobieren: neues venv anlegen, marimo (und typing-extensions!) hinein installieren, marimo edit mytest.py; das startet das Notebook in einem neuen Browser-Tab. Ein eingebautes Tutorial kann mit marimo intro [--help] aufgerufen werden.

Doit zur Automatisierung voneinander abhängiger Verarbeitungen

doit kann die Make-Aufgaben übernehmen, die mit Abhängigkeiten zu tun haben.

Die Aufgaben werden mit Python-Code beschrieben; doit analysiert die Verknüpfungen, kann einen Abhängigkeitsgraphen ausgeben und führt dann die Aktionen in geeigneter Reihenfolge aus.

Features:

  • durch Plugins erweiterbar

  • Debug-Unterstützung

  • API

  • parallele Ausführung von Aktionen

  • mögliches Caching von Ergebnissen

  • kann als watcher Veränderungen erkennen und die zugehörigen Aktionen auslösen

Just als Alternative zu Phony-Targets von Make

just ist ein in Rust geschriebenes „verbessertes Make“, jetzt auch verfügbar als Debian-Paket.

Die justfiles sind den bekannten Makefiles sehr ähnlich, aber anwenderfreundlicher (kein Zwangs-Tab!). Die Fehlerbehandlung und die „Hilfefunktion“ sind besser, die Rezepte können in beliebigen Programmiersprachen geschrieben sein (beispielsweise in Python …), und das justfile muss nicht im aktuellen Verzeichnis liegen.

nushell, eine neue Shell

nushell ist ein Projekt zur Entwicklung einer neuen, modernen Shell (Doku hierzu).

Installation:

apt install pkg-config libssl-dev
cargo install nu --locked --features=dataframe
sudo cp ~/.cargo/bin/nu /usr/local/bin  # sofern gewünscht
nu --help

Besonderheiten:

  • Nushell-Skripte werden kompiliert, nicht zeilenweise interpretiert.

  • Variablen sind vom let-Typ (allerdings mit der Möglichkeit des Shadowing); dadurch können Kommandos in der Shell parallelisiert werden.

  • Wie andere (Unix-) Shells unterstützt Nushell Pipelines, aber diese transportieren vorzugsweise Datenstrukturen (Tabellen) anstelle reiner Textzeilen.