netkit: Ein neues Netzwerkgerät

Der Kernel 6.7 bringt ein neues Netzwerkgerät „netkit“, das BPF-programmierbar ist und den Overhead für Gastsysteme und Container mit viel Netzwerkverkehr reduzieren kann (so dass quasi native Netzwerkperformance erreicht werden kann).

Eine Beschreibung findet sich bei LWN <https://lwn.net/Articles/949960/>.

cyclopts: Ein neues CLI-Framework für Python

(Update 2024-01-05)

cyclopts ist ein einfaches CLI-Framework, das auf type annotations basiert („so wie typer eigentlich sein sollte“, „cyclopts ist knapper, lesbarer und intuitiver zu benutzen“, kann z.B. auch Unions verwenden); es enthält auch eine Aufrufmöglichkeit für eine interaktive Shell.

Im Gegensatz zu typer benutzt es nicht Click unter Putz und kann sich deshalb von dessen Besonderheiten befreien. Ob Kommandoargumente per Position oder Schlüsselwort (oder auch alternativ beidem!) adressiert werden, leitet es von den Funktionsargumenten ab (wie z.B. f(a, /, b, *, c); deshalb ggf. Argumentliste mit * beginnen!). Choices sind besser implementiert (auch per Literal[…] möglich). Union-Typen werden akzeptiert (und der Reihe nach geprüft). Auch wenn nicht mehrere Subkommandos definiert sind, kann der Subkommandoname (Funktionsname) optional angegeben werden. Helptexte können als Docstrings bereitgestellt werden.

Django mit Ammoniak bleichen: nh3

(Update 2024-01-28)

Bisher wurde oft bleach benutzt, um in Django vom Benutzer kommende HTML-/XML-Strings von unerwünschten Tags zu säubern. Allerdings wird bleach nicht mehr weiterentwickelt und gilt als deprecated.

Ein guter Ersatz dafür ist nh3, das sich noch im Alphastadium befindet, aber schon verlässlich zu sein scheint. Ein Artikel beschreibt, wie man's macht.

Nach eigenen Angaben ist nh3 zwanzigmal schneller als bleach.

django-nh3 stellt Modell- und Formularfelder bereit, deren Inhalte mit nh3 automatisch bereinigt werden.

Typvariablen sind in Python 3.12 leichter zu handhaben

In Python 3.12 ist die Benutzung von Typvariablen viel einfacher geworden. Sie müssen nicht vorab (auf seltsame Art) erzeugt werden, sondern können in einer Funktionsdefinition durch Auflisten nach dem Funktionsnamen deklariert werden:

>>> def m[T](a: T, b: T) -> T:
...     return a if a > b else b
...
>>> m(3, 4)
4

Freie Cheatsheets im Paket

cht.sh (auch als Debian-Paket cht.sh) ist eine Sammlung von Cheatsheets zu ganz vielen Themen, die per curl abgerufen oder mit einem Kommandozeilentool geholt und angezeigt werden können.