Synology: Dateisystem im laufenden Betrieb ändern

Ich habe meine DS213j (lies: Ein 2-Bay-NAS der kleinsten (“j”-) Reihe von Synology in der Version von 2013) gegen die aktuelle Version DS223j getauscht. Das geht, was die Hardware angeht, erstaunlich einfach: Platten raus aus der 213, in derselben Reihenfolge rein in die 223, dem Wizard folgen, fertig ✨

meine Beweggründe waren initial:

  • USB 3.x, denn 3TB über USB 2 zu backupen macht keinen Spaß.
  • Gigabit Netzwerk. Vollformat RAW-Fotos über 100MBit macht nämlich auch keinen Spaß. Außerdem ist es kontraproduktiv, wenn die Internetverbindung schneller ist (hier 300 MBit) als die Netzwerkschnittstelle des NAS 🤓

Inzwischen habe ich dann gelernt, dass die DS223j die erste DiskStation der “j”-Reihe ist, die Btrfs unterstützt. Sprich: Snapshots, Kompression, Prüfsummen, … Das will ich, und sei es nur für besagte Fotos!

Nun sagt Synology, dafür müsse man alle Daten extern zwischenspeichern, die Platten platt machen und als Btrfs neu aufsetzen – btrfs-convert scheint hier unbekannt. Es gibt allerdings einen Weg, das “live” zu tun 😎 Das Folgende basiert stark auf diesem Post, der aber für ein 4-bay-NAS geschrieben wurde, auch ansonsten sehr zu detailliert ist, und dabei trotzdem einige nützliche Details vermissen lässt:

Einschub: Es wird am Ende ein “Synology Hybrid Raid” (SHR) mit “One-Drive Fault Tolerance” sein, was RAID 1 entspricht. Der – dann einzige – Speicherpool wird “Speicherpool 2” heißen, das – dann einzige – Volume wird “Volume 2” heißen.

  1. Mach genug Backups, um Dich angesichts der Gefahr eines kompletten Datenverlusts auf dem NAS an sich “wohlzufühlen”.
    • PS: Die NAS-Konfiguration wird inzwischen zwar automatisch in der Cloud gespeichert, aber unter Systemsteuerung > Aktualisieren & Wiederherst. > Konfigurationssicherung kann man sie selber auch noch mal exportieren
  2. Prüfe alle Backups – das ist wichtig, bei mir schlug eine Prüfung fehl!
    • Tipp: Man kann auch mal eine Datei aus einem Backup öffnen, das scheint mir insbesondere bei datenbankbasierter Speicherung ratsam
  3. Prüfe alle Platten auf Integrität
    • PS: “Datenbereinigung” ist nur verfügbar auf Btrfs, sowie SHR mit mindestens drei Laufwerken. Nicht in meinem Szenario, will ich sagen.
  4. Jetzt wird Platte 2 (!) deaktiviert: Speicher Manager > HDD/SSD > Rechtsklick auf Laufwerk 2 > Laufwerk deaktivieren
    • Nun wird das NAS wild piepen, das kann man stummschalten unter Systemsteuerung > Hardware & Energie > Signaltonsteuerung > Stummschalten
  5. Hier sagt der verlinkte Post, man müsse/könne/solle Platte 2 ausbauen und an einem anderen Rechner formatieren. Das wollte ich auch tun, aber mein SATA-USB-Adapter ging irgendwie nicht. Ich habe die Platte unverändert wieder eingebaut, wo das Folgende dann trotzdem problemlos möglich war.
  6. Neuen Speicherpool im Speicher-Manager anlegen. Neues Volume darin anlegen (maximale Größe, Btrfs natürlich)
  7. Dann kann die Migration losgehen. Dafür gibt es zwei Möglichkeiten:
    1. Systemsteuerung > Freigegebener Ordner > Rechtsklick auf jeden Ordner > Bearbeiten > “Ort” ändern. Wichtig: Außerdem unter “Erweitert” die “Daten-Prüfsumme”, denn das kann man nachträglich nicht mehr!
      • Vorteile: Sehr einfach, die Zuordnung zu Backup-Tasks bleibt rudimentär erhalten
      • Nachteil: Kann nach beliebiger Zeit schiefgehen! Dann hat man den Platz auf Volume 2 bereits belegt, die Dateien werden aber in der File Station nicht angezeigt! Lösung ist, sich per SSH einzuloggen (Aktivierung unter Systemsteuerung > Terminal & SNMP), Dateien unter /volume2/@tmp/ manuell löschen (du half mir). Die Zeit ist natürlich trotzdem verloren
    2. Unter Systemsteuerung > Freigegebener Ordner neue Ordner anlegen, und die Daten dann manuell rüberschieben
      • Nachteil: Aufwändiger
      • Vorteile: Flexibler, schlägt früher fehl
      • PS: Das ist auch ein praktikabler Weg, um nachträglich Prüfsummen einzuschalten
  8. Irgendwann ist Platte 1 “leer” (1.4GB waren bei mir trotzdem noch belegt; laut SSH für DSM, nginx, etc.) und kann selbst im Speicher-Manager entfernt werden – DSM wird dann warnen, dass eine gewisse Menge Apps davon betroffen sind. Diese Apps sollt man idealerweise manuell deinstallieren, bevor man Platte 1 wirklich entfernt! Gute Gelegenheit, auch hier mal aufzuräumen. PS: Man kann pro App entscheiden, ob Settings erhalten bleiben sollen.
  9. Jetzt wird Platte 1 wirklich entfernt (dauert kurz), danach der Speicherpool 1 an sich.
  10. Unter Speicherpool 2 kann man via “Laufwerk hinzufügen” Platte 1 hinzufügen – Achtung, der Prozess dauert eine ganze Weile, denn hier werden die Daten ja erneut gespiegelt. Bei mir mit 1.4 belegten TB von insgesamt 2.7 TB (“3” TB) dauert es gut 7 Stunden.
  11. Nun kann man Aufräumen, Apps neu installieren, Datenbereinigung ausführen, und – wenn man unter Punkt 7.2. umsortiert hat – direkt ein neues Backup anlegen. Spätestens damit sollte dann aber alles fein sein.
    • PS: Man erschreckt erst ein wenig, weil Volume 1 weg ist, aber ein Klick auf Speicherpool 2 oder Volume 2 zeigt, dass nun beide Laufwerke diesem zugeordnet sind. Nein, Stand heute kann man die nicht umbenennen 🤷🏼‍♂️

 

Was habe ich nun gelernt?

  • Datenbankbasierte Backups sind stuhl.
    • ich habe erst heute gelernt, dass eines meiner Backups defekt war. Mit immerhin drei Dateiversionen der fraglichen defekten Datei darin. Sie war noch nie korrekt gespeichert worden, was Hyper Backup aber offenbar nie aufgefallen ist, auch nicht beim (wieder fehlerhaften!) Überschreiben.
    • Man kann das auch nicht reparieren! Schon gar nicht punktuell die eine defekte Datei. Man kann noch aus dem Backup lesen, aber es nicht mehr beschreiben – man muss es komplett neu erstellen dafür (oder man versucht dies)
  • kleinere “Freigegebene Ordner” sind besser!
    • sie sind leichter umzuziehen, siehe Punkt 7
    • sie sind schneller zu backupen, siehe vorheriger Punkt
    • sie sind auch feingranularer freizugeben und/oder zu verschlüsseln und/oder zu komprimieren und/oder mit Prüfsummen zu versehen
  • Man kann (und vermutlich: sollte) seine Daten ein wenig pflegen:
    • Defragmentierung: Ja, das geht! Vielleicht nicht das Schlechteste, nachdem man die Daten gerade 1x auf links gedreht hat.
    • einen SMART-Test haben wir ja gerade durchgeführt, aber man kann den auch planen
    • Apropos planen: Für den Speicherpool kann man eine “Datenbereinigung planen” (Knopf oben) oder – erstmalig – “Jetzt ausführen” (Knopf ca. mittig). Meine ist eben erfolgreich durch 🙂
    • ggf. geplante Integritätsprüfungen für (geplante!?) Backups
    • ggf. regelmäßige Snapshots erstellen, wozu es allerdings einer weiteren App bedarf, siehe auch Details hier

Hm: Nun ist auch dieser Eintrag ziemlich lang geworden 🙂

hth!

Bluetooth Soundausgabe auf Raspberry Pi 3B (nicht 3B+)

Es ist 1 wenig tricky, Soundausgabe via Bluetooth auf einem pi3b (b, nicht b+!) ans Laufen zu bekommen. Und ich spreche hier von “auf der Kommandozeile”, auf dem Desktop habe ich das imho irgendwann mal recht schnell zusammengeklickt.

Warum ist das so knifflig? Erstens: Weil Raspberry Pi OS für den 3B, Stand heute, auf Debian 11/”Bullseye” basiert – was weder bei Release des 3B so war (da war es 8/”Jessie”, immerhin 3 Major Versions zurück!), noch die aktuellste Version ist (das wäre dann 12/”Bookworm”). Wikipedia behauptet zwar, auch 12/”Bookworm” wäre kompatibel, aber der Raspberry Pi Imager bietet für den 3B nur 11/”Bullseye” an. Es gibt auch kein “Tested image” von 12/”Bookworm” für den 3B, und meiner bootet dann auch mit keinem der dort angebotenen (oder findet vielleicht auch nur das WLAN nicht, was in meinem Fall auf dasselbe rauskommt).

(Diese UNSITTE, eingängige Nummerierung durch völlig willkürliche Strings zu ersetzen 😡 Looking at you, macOS. Apropos Macs, auch schön: Auf meinem, zugegebenermaßen knapp 13 Jahre alten MacBook kann ich den Raspberry Pi Imager nicht mehr nutzen! Weil gegen eine inkompatible Version von qt kompiliert, wenn ich das richtig verstehe. Aber ich schweife ab.)

Man findet also drölf Tutorials, aber keines davon passt (es gibt sogar Stimmen, die sagen, das geht auf dem 3B gar nicht). Also schreibe ich halt noch eines 🙂 Und zwar explizit für Debian 11/”Bullseye”, bzw. “Raspberry Pi OS (Legacy, 32-bit) Lite (Veröffentlicht: 2023-12-05)”, wie es im Imager genannt wird – was laut lsb_release -a aber dasselbe ist. Achtung: Das System nicht upgraden (everybody says that)! Update: Da hatte ich in einem der Foren gelesen, und auch selber den Eindruck, dass ich nach einem apt upgrade keine Verbindung mehr bekam – jetzt wollte ich noch dieses Detail debuggen und lösen, da tritt es nicht mehr auf. Keine Ahnung.

Zuerst probiere ich stumpf, ob es vielleicht schon geht (ich überspringe hier der Übersichtlichkeit halber Scanning, Trusting, Pairing):

Das Internet ist voll von entsprechenden Meldungen mit n+1 Ursachen. Es hilft zur Eingrenzung, in einem zweiten Fenster btmon zu starten (erfordert sudo). Dort sehe ich:

= bluetoothd: src/service.c:btd_service_connect() a2dp-sink profile connect failed for FC:58:FA:3D:32:12: Protocol… 5.320743

“a2dp”? 🤔 Ist quasi Audio-über-Bluetooth. Was Sinn ergibt, denn FC:58:FA:3D:32:12 ist ein Lautsprecher, ein “sink” von Audio. Wie bekommt man so ein “sink profile”? Über die Installation von PulseAudio oder PipeWire. Quasi das zweite Problem, denn beide haben ihre eigene Fan-Base (bzw. ihre eigenen Probleme, aus Sicht des jeweils anderen Lagers) und ihre eigenen Tutorials. Wie auch immer, die oben verlinkte Seite sagt, man solle PulseAudio verwenden:

PulseAudio is the default audio server in Debian. Unless you know what you’re doing, you probably want to follow these instructions

, und dieser Post sagt das auch. Also:

Und: Geht 🥳

Die auf im Post genannten Module benötige ich nicht. Kurzer Test:

Auch das tut (haha: “tut”! Wie in “Sound”! TUUT TUUT!? Ich finde alleine raus …)

PS, das o.g. zusammenzustellen, hat mich einige Versuche mit frischen Images gekostet. Hier einige weitere Learnings aus diesen Versuchen:

  • Bei einem der Versuche hat dann der Lautsprecher angefangen, eine dritte Dimension von Problemen zu machen: Er wollte einen PIN haben 🙂 Zu sehen war das aber auch nur in btmon. Jedes Gerät kann hier seinen eigenen Unsinn veranstalten. Es kann dann helfen (wie gesagt, inzwischen benötige ich es nicht mehr), bluetoothctl mit einem anderen Agent zu starten. Die Idee ist, dem Gegenüber zu sagen, dass man keinen PIN eingeben kann, um in einen anderen Pairing-Modus zu gehen. Oder dass man einen eingeben kann, um den entsprechenden Prompt zu triggern. Bei mir half bluetoothctl --agent KeyboardDisplay, was zwar überhaupt nichts triggerte, aber dann ging es. Hier alle Agents.
  • service bluetooth status zeigt den aktuellen Status; dabei ist “active (running)” (in grün) gut, etwaige Fehlermeldungen (in Rot), wie bspw. “Sap driver initialization failed” oder “Failed to set privacy: Rejected” sind irrelevant. Mein Speaker tut (…) trotz dieser Meldungen.
  • busctl tree org.bluez zeigt die Devices:

(die beiden untersten Zeilen sieht man nur, wenn das Gerät verbunden ist; es können also sowohl bekannte, wie auch verbundene Devices angezeigt werden)

HTH!

Dazn Fehlercode 51-132-403

Wer auch immer die Webseite von DAZN programmiert hat, …

Erstens: Sechs Zeichen, Sonderzeichen explizit nicht erlaubt, das ist nicht direkt State of the Art.

Zweitens: “Fehlercode 51-132-403” ist nicht unbedingt sprechend. Internet sagt

Bitte stelle sicher, dass du noch nicht bei uns registriert bist, da es sich hierbei um einen häufigen Grund für diesen Fehler handelt.

, aber ich habe noch kein Konto da. Stellt sich raus, drittens: Pi Hole (/Ad-Blocking) aus, dann geht es. m(

WordPress: onclick

Es gibt eine neue Unterseite: tools. Darin ist noch fast nichts, nur ein Link, der mir ein “breitenloses Leerzeichen” in die Zwischenablage kopiert. Gut zu gebrauchen auf Mastodon, um bspw. das Plural-S von #hashtags abzutrennen. Aber das ist nicht der Grund, warum ich das poste.

Der Grund, warum ich das poste, ist dass es nicht offensichtlich ist, wie man WordPress einen JS-Link beibringt. onclick wird (offenbar?!) rausgefiltert, das altmodische href="javascript:" ebenfalls. Wie folgt geht es:

Das macht sich Gutenberg-Syntax zunutze, was aber auch im Classic-Editor erhalten bleibt.

Gradle: Gezippte Dependency verwenden

via, und/bzw.

Darauf zugreifen kann man dann bspw. in anderen Tasks mittels

PS: Mir ist bewusst, dass ${buildDir} deprecated ist, aber ${layout.buildDirectory} ging aus irgendeinem Grund nicht.

Gradle: Task mit bestimmtem JRE ausführen

Edit zur Erklärung: Gradle benötigt Java, und bspw. ein installiertes JDK 17 kann natürlich Language Level 8 kompilieren. Aber es ist trotzdem ein JDK 17 und enthält bspw. kein JAXB mehr. Die Aufgabe ist hier, einen Gradle-Task unabhängig von meiner Java Version mit einem 8er JRE auszuführen. Das verwendete Plugin lädt alles dafür benötigte herunter.

Original Post below:

settings.gradle:

build.gradle:

via, und, Danke Nils!

Mastodon in WordPress Menü

Whoop whoop 🥳 Nachdem Elmo Twitter kaputt gemacht hatte, war ich letzten November endgültig zu Mastodon gewechselt. Das Widget im Menü hier hatte ich gelöscht. Nun habe ich in neues gefunden, das analog für Mastodon funktioniert: include-mastodon-feed.

Folgender Shortcode kommt zum Einsatz (might change):

include-mastodon-feed instance=”troet.cafe” account=”109371466136964927″ limit=”1″ excludeBoosts=”true” excludeReplies=”true” excludeConversationStarters=”true” linkTarget=”_blank” showPreviewCards=”false” text-permalinkPre=”am” date-locale=”de-DE” date-options=”{year:undefined, month:’long’, day:’numeric’, hour:’numeric’, minute:’numeric’}” text-permalinkPost=”:”

Ergänzt um etwas css:

Slow Movie Player: PHP controlled

Um meinen Slow Movie Player via PHP zu “steuern” (aka den Service ein- und auszuschalten erst mal nur), bedurfte es eigentlich nur einer Änderung: Ich musste dem entsprechenden User (hier: www-data) das Recht geben, den Service per systemctl zu starten und zu stoppen: $ sudo visudo, dann

Achtung: Die Zeile muss an das Ende der Datei!

Dann ist das ziemlich einfach:

Achtung: systemctl ist hier in /usr/bin, nicht in /bin!

Zwischendurch habe ich zum Debuggen

  • den User www-data zu sudo hinzugefügt: sudo usermod -aG sudo www-data (und dann aber wieder entfernt: sudo gpasswd --delete www-data sudo)
  • dem User www-data eine Shell (und ein Home-Verzeichnis und ein Passwort) zugewiesen, damit er sich einloggen kann (und dann wieder entfernt)

PS, zum Einsatz kommt PHP 8.2, mittels Umweg über sury.org.

Lauterbach

Ich bleibe dabei: Lauterbach ist die Enttäuschung der Ampel.

(Ich meine, von einem FDP-Verkehrsminister hat man immerhin nie was erwartet!)

Lasst mich erklären.

Vorab: Warum maße ich eine Meinung an, ich bin doch gar kein Arzt? Das ist richtig, aber ich bin mit einer Hausärztin einer Kleinstadt verheiratet. Und ich arbeite Teilzeit, um das zu ermöglichen, kümmere mich danach um Kinder und Haus. Insofern bin auch ich finanziell abhängig von Lauterbachs Entscheidungen, und mittelbar betroffen von dem folgenden Quatsch.

Heute morgen also lese ich diesen Artikel auf Spon. Ich gehe ihn mal der Reihe nach durch:

  1. “Lauterbach zu Ärztestreik […] Viele Arztpraxen bleiben am Montag geschlossen – aus Protest gegen die Gesundheitspolitik von Minister Karl Lauterbach” Das ist falsch. Der 2. Oktober ist seit langem als Brückentag von der Kassenärztlichen Vereinigung (“KV”) als Brückentag vorgegeben (genau wie Ende Oktober vor dem Reformationstag übrigens). In manchen Praxen wird Urlaub vorab fürs Jahr verplant, das ist alles deutlich vor der aktuellen Diskussion passiert. Heute wird protestiert, richtig! Aber explizit an einem Tag, an dem die Praxen eh zu sind! Gestreikt wird nicht.
  2. “Am Brückentag bleiben viele Praxistüren verschlossen. Unmittelbar vor einem bundesweiten Ärztestreik an diesem Montag hat Bundesgesundheitsminister Karl Lauterbach Forderungen nach mehr Geld infrage gestellt.” Siehe 1. Jetzt muss man sagen, dass ja nicht Lauterbach diesen Artikel geschrieben hat, sondern der Spiegel. Warum also denkt der Spiegel, dass das ein Streik sei? Siehe 3:
  3. Lauterbach schrub auf Twitter: “Am Brückentag schließen viele Praxen, wie die Apotheker wollen auch sie mehr Geld.” Das ist Korrelation, nicht Kausalität, aber er formuliert das natürlich bewusst irreführend. Und sie wollen als Praxis mehr Geld, bspw. um die gestiegenen Tarifgehälter der MFAs zu bezahlen, sie wollen nicht als Arzt mehr Geld.
  4. Lauterbach schrub weiterhin: “Im Mittel (Median) verdienen sie aber nach Abzug aller Kosten um die 230.000 Euro pro Jahr” Diese Zahl ist absurd. Ich sage nicht mal, dass sie falsch ist, denn das weiß ich nicht. Vielleicht ist sie falsch, das wäre natürlich krass. Außerdem schreibt er “Praxen”, nicht “Ärzte” – angesichts von 3) nehme ich an, dass auch das eine bewusste Irreführung ist. Aber mal angenommen, die Zahl stimmt, und sie wäre der mittlere Gewinn (“nach Abzug aller Kosten”) eines Arztes – das wäre dann ein Problem, allerdings ein anderes. Denn in der Praxis meiner Frau liegt der Gewinn eines Arztes bei einem Bruchteil davon, einem niedrigeren zweistelligen Prozentanteil. Wenn der Median trotzdem so hoch ist, bedeutete das ein krasses Ungleichgewicht, und das müsste man angehen, nicht “DeN bEiTrAgSsAtZ”.
  5. Lauterbach fragt: “Soll der Beitragssatz für Arbeitnehmer steigen, damit das Honorar weiter steigt?” Auch das vorsätzliche Irreführung, denn das Honorar soll primär nicht steigen, es soll nicht sinken! Letzteres ist aber der Fall. Während Lohnkosten für die MFAs steigen; Miete, Strom, etc. natürlich ebenfalls (was beides unmittelbar auf “dEn GeWiNn” der Ärzte durchschlägt!), wurde der Vergütungsschlüssel seitens der KV so geändert, dass es weniger Geld für die Praxen = die Ärzte gibt.
  6. “Tausende Haus- und Fachärzte wollen an diesem Montag aus Protest gegen die Gesundheitspolitik ihre Praxen nicht öffnen. ” siehe oben
  7. “Der Verband […] spricht von einem […] Nettoeinkommen […] von 85.555 Euro”, immer noch höher als das eines Hausarztes, aber deutlich realistischer. Übrigens, Kinderärzte liegen noch darunter.

Als Arzt hat man 13 Jahre Schule, 7 Jahre Studium (Median Humanmedizin, eben gegoogelt), 5-6 Jahre Facharztausbildung hinter sich. Kann man sich ja ausrechnen, wer das noch auf sich nimmt, um danach damit rechnen zu müssen, dass das Einkommen gekürzt wird, während man gleichzeitig so dargestellt wird. Die Anzahl an niedergelassenen Ärzten wird also weiter sinken. Wer sich heute schon über Ärztemangel beklagt: Wendet euch an Lauterbach!

Und es kommt noch ein Aspekt dazu: Besagter Vergütungsschlüssel beinhaltet nämlich einen Aspekt, um den Verdienstausfall abzufedern (nicht auszugleichen): Mehr Patienten behandeln. Masse statt Klasse. Wer sich also darüber beschwert, dass Ärzte keine Zeit mehr für den Patienten hätten: Wendet euch an Lauterbach!

Mittelfristig wird es nicht anders gehen, als MFAs einzusparen oder nach der Ausbildung nicht zu übernehmen. Wer also heute schon Probleme hat, telefonisch beim Arzt durchzukommen: Wendet euch an Lauterbach!

Denn alternativ geht es nur, wenn die Ärzte monatsweise auf Gehalt verzichten. Oder eben wirklich “zu machen”, statt einen offiziellen Brückentag wahrzunehmen. Was ja ebenfalls heute schon passiert, wenn zum Ende des Quartals das per Dekret von der KV zugestandene Geld aufgebraucht ist, wird halt für eine Woche dichtgemacht, statt für lau weiterzubehandeln. So etwas wird zunehmen.

Deshalb: So wie Volker “VW” Wissing sich eher als Auto- denn als Verkehrsminister geriert, scheint mir Lauterbach eher der Krankenkassen- als der Gesundheitsminister zu sein. Was mich nach seinem Auftreten während Corona doch immer noch enttäuscht.

Slow Movie Player: Casablanca

(Vorab: Anders als sonst linken dieses mal alle Bilder zu einer größeren Version)

Über diese News auf raspberrypi.com (und den zugehörigen Medium-Post) bin ich auf dieses Repo gestoßen (Fork). Was ich so cool fand, dass ich es nachgebaut habe, und just während ich diesen Eintrag tippe, steht meine Version vor mir und spielt Casablanca – in 1-Sek/24-Frames-Sprüngen alle 5 Minuten 🤓

Und eigentlich gibt es dazu nicht so viel zu zu sagen, das ist alles ziemlich straight forward. Ein paar Details wollte ich aber festhalten:

  • der Pi wird von hinten, das Display von vorn mit Heißkleber an die Rückwand des Rahmens geklebt
  • ergänzt wird der Rahmen um ein Passepartout und “Museumsglas” von arsvendo.de. Das Ikea-Passepartout habe ich genutzt, um das Display einzufassen (mit Aussparungen für den Heißkleber):

  • Casablanca ist natürlich eigentlich 4:3. Um mir die schwarzen Balken zu ersparen, habe ich ihn mit HandBrake und folgenden Settings gecroppt (tatsächlich habe ich auch Intro/Outro abgeschnitten, Ton/Subtitles/Kapitel weggeworfen, etc. Hier geht es nur ums Cropping, zum Rest siehe Wiki):

Und das funktioniert bildausschnittstechnisch meistens ziemlich gut: