Skip to content

Instantly share code, notes, and snippets.

View TorstenC's full-sized avatar

Torsten C. TorstenC

  • 06:58 (UTC +02:00)
View GitHub Profile

Python Logging mit -v, -vv, Konsole, Log-Datei und unterschiedlichen Formaten

Du möchtest Logging-Ausgaben in Python sauber steuern?

  • Du möchtest Logs in der Konsole abhängig von -v oder -vv ausgeben?
  • Du möchtest optional zusätzlich in eine Log-Datei schreiben?
  • Du möchtest auf der Konsole ein anderes Format verwenden als in der Log-Datei?
  • Du möchtest in der Konsole Symbole wie ℹ️, ⚠️ oder je nach Log-Level anzeigen?
  • Du möchtest Logging aus mehreren selbst geschriebenen Modulen zentral konfigurieren?
@TorstenC
TorstenC / README.md
Last active May 19, 2026 23:47
Query RDAP registration and last-changed events for a domain using curl + jq. No registry lookup table needed — rdap.org bootstraps automatically.

rdap-domain-events.sh

A minimal Bash script to query registration and last changed dates for any domain name using the RDAP protocol — the modern, structured replacement for WHOIS.

$ whois2 google.com
registration: 1997-09-15T04:00:00Z
last changed: 2019-09-09T15:39:04Z

$ whois2 adskahsjdk.ai; echo $?
@TorstenC
TorstenC / slistc.sh
Created April 15, 2026 21:56
`snapper list` with "#" "Date" "Type" "Pre #" "Cleanup" "Changes" "Used Space" "Description"
#!/usr/bin/env bash
set -euo pipefail
if sudo btrfs quota status / | grep -q 'Inconsistent:.*yes'; then
echo "qgroup data inconsistent -> running rescan" >&2
sudo btrfs quota rescan -w /
fi
sudo btrfs qgroup show -reF /
echo # Leerzeile

Hier sind die 17 magischen Wörter bzw. Phrasen aus dem Video "Exactly What to Say" von Phil M. Jones, wie sie im Transkript des Videos https://www.youtube.com/watch?v=TUS8E-_Swuc erwähnt werden. Jede Phrase wird mit einem kurzen Anwendungsfall und dem erwarteten Ergebnis auf Deutsch aufgelistet:

  1. "Wären Sie dafür offen?"

    • Anwendungsfall: Neue Ideen oder Vorschläge unterbreiten, ohne aufdringlich zu wirken.
    • Erwartetes Ergebnis: Die Person ist eher geneigt, den Vorschlag zu akzeptieren, da sie als aufgeschlossen wahrgenommen werden möchte.
  2. "Nur aus Neugier"

    • Anwendungsfall: Sanft nachfragen, um mehr Informationen zu erhalten, ohne konfrontativ zu sein.
  • Erwartetes Ergebnis: Die Person gibt eine ehrlichere oder detailliertere Antwort, da sie sich nicht angegriffen fühlt.
@TorstenC
TorstenC / Vermeide_any.md
Created August 17, 2025 07:36
🛟 TypeScript Best Practice

🧩 Vergleichstabelle: Rückgabetypen in TypeScript

Typ Bedeutung Wann verwenden?
null „Es gibt keinen Wert, und das ist absichtlich so.“ Wenn du explizit sagen willst: „Kein Ergebnis“ oder „Nicht gefunden“.
undefined „Es wurde kein Wert gesetzt.“ Wenn ein Wert nicht initialisiert wurde oder optional ist.
unknown „Es gibt einen Wert, aber Typ ist unbekannt.“ Wenn du dynamische Daten hast (z. B. aus JSON.parse) und prüfen willst.
any „Es gibt einen Wert, und du willst keine Typprüfung erzwingen.“ Nur in Aus
@TorstenC
TorstenC / Pandoc-vs-AsciiDoc.md
Created May 19, 2025 01:56
🛟 Pandoc vs. AsciiDoc

Welches Format ist das beste Ausgangsformat

Was ist das "beste" Ausgangsformat?

Pandoc unterstützt eine Vielzahl von Ausgabeformaten (“output formats”), darunter Dokumentformate, Präsentationsformate, HTML-Varianten, E-Book-Formate und viele mehr. Hier eine Übersicht der wichtigsten Formate:

Wichtige Pandoc-Ausgabeformate:

  • Markdown (verschiedene Varianten, z.B. pandoc, GitHub, CommonMark)
  • HTML (HTML5, HTML4)
  • LaTeX / PDF (über LaTeX)
@TorstenC
TorstenC / README.md
Last active April 24, 2025 01:38
SVG Symbole, wenn Emojis fehlen

SVG Symbole, wenn Emojis fehlen

Vorgehensweise:

  1. Beginne mit rect x="0" y="0" width="100" height="100" stroke="red"
  2. Positioniere ein M mit font-size="150" in dem Quadrat
  3. Füge 🟨 mit den Koordinaten des M ein (x="50.37" y="99.6" font-size="150"), um die Größe und die Position des Emoji-Bereiches zu ermitteln.
    Die Größe ist width="148" height="148".
  4. Positioniere ein Quadrat der gleichen Größe (x="-23.6" y="-27.25" width="148" height="148"), um den Emoji-Bereich auszufüllen.
@TorstenC
TorstenC / WPF-Blazor-App.md
Last active May 1, 2024 22:53
Shared Code für WPF-Anwendung und Blazor-Anwendung

Shared Code für WPF-Anwendung und Blazor-Anwendung

Da Blazor und WPF unterschiedliche Technologien mit eigenen Best Practices sind, müssen einige architektonische Überlegungen zu beachen, um eine maximale Wiederverwendung zu ermöglichen. Während direkte Wiederverwendung von View und ViewModel zwischen WPF und Blazor oft nicht praktikabel ist, kannst du das Design, die Architektur und vor allem das Model sowie Dienste oft wiederverwenden. Durch kluge Abstraktion und das Trennen von UI-spezifischer Logik und Geschäftslogik kannst du die Wiederverwendbarkeit maximieren und gleichzeitig die Plattform-spezifischen Stärken von WPF und Blazor nutzen.

Grundsätzliches

Strukturelle Überlegungen

  1. Model (M): Das Model, welches die Geschäftslogik und Datenzugriffsschicht beinhaltet, sollte idealerweise so gestaltet sein, dass es technologieunabhängig ist. Das bedeutet, dass es weder spezifische Abhängigkeiten von WPF noch von Blazor hat. Dies erleichtert die Wiederverwendung des Models sowohl in WPF als
@TorstenC
TorstenC / MVVM.md
Created May 1, 2024 19:01
🇩🇪 Model-View-ViewModel Architektur

Model-View-ViewModel Architektur

Das "Model" im MVVM-Schema enthält die Daten und die Logik, die direkt mit diesen Daten verbunden ist.
Das "ViewModel" transformiert diese Daten in eine Form, die für die Darstellung auf der Benutzeroberfläche geeignet ist und verwaltet die Interaktion zwischen der UI und den Modellen. Es verbindet die UI-Anforderungen (wie sie im View geäußert werden) mit den Datenoperationen, die im Model definiert sind.

  1. Model: Das erste M in MVVM repräsentiert das "Model". In dieser Rolle fungiert es als die Repräsentation der Datenstruktur, zusammen mit der Geschäftslogik, die Daten manipuliert. Das Modell ist verantwortlich für:
    • Den Zugriff auf die Datenquelle (z.B. Datenbank, Webdienste).
    • Die Implementierung der Geschäftsregeln oder Logik, die spezifisch für die Daten oder die Domäne sind.
    • Die Aufrechterhaltung des Zustands der Daten (aber nicht des Zustands der UI).
  • Benachrichtigungen über Änderungen in seinen Daten durch Implementierungen wie INotifyP
@TorstenC
TorstenC / Processor.ExecuteWaitExit.cs
Last active March 23, 2023 21:14
This class externalizes boiler plate code to run an external process with catching StandardOutput and StandardError.
/// <summary> This class externalizes boiler plate code to run an external process
/// with catching StandardOutput and StandardError. </summary>
public class Processor
{
public ProcessStartInfo StartInfo { get; set; }
public Exception? Exception { get; set; }
public Processor(string pathToExe, params string[] arguments) : this()
{
StartInfo.FileName = pathToExe;
if (1 == arguments.Length) StartInfo.Arguments = arguments[0];