<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.alexander-kluge.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>Alexander&#039;s Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alexander-kluge.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spezial:Beitr%C3%A4ge/Admin"/>
	<updated>2026-05-15T10:54:50Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1531</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1531"/>
		<updated>2024-05-14T20:24:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* MySQL Pfad ändern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Festplatte einrichten ==&lt;br /&gt;
&lt;br /&gt;
==== Festplatten herausfinden ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mgl. Audgabe&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Disk /dev/mmcblk0: 3.71 GiB, 3980394496 bytes, 7774208 sectors&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: dos&lt;br /&gt;
Disk identifier: 0xe79dff76&lt;br /&gt;
&lt;br /&gt;
Device         Boot  Start     End Sectors  Size Id Type&lt;br /&gt;
/dev/mmcblk0p1        8192  532479  524288  256M  c W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2      532480 7774207 7241728  3.5G 83 Linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sda: 55.9 GiB, 60022479872 bytes, 117231406 sectors&lt;br /&gt;
Disk model: Storage Device&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: F7EE58D9-0A49-8C48-A507-E0855B5F47BE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte partitionieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk /dev/sda&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* g   create a new empty GPT partition table&lt;br /&gt;
*usw.&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Eine GPT-Partitionierung, oder &amp;quot;GUID Partition Table&amp;quot;, ist ein modernes Partitionsschema, das eine Vielzahl von Vorteilen gegenüber dem älteren MBR-Schema (&amp;quot;Master Boot Record&amp;quot;) bietet. Hier sind die wichtigsten Punkte:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;GUID&amp;#039;&amp;#039;&amp;#039;: GPT steht für &amp;quot;GUID Partition Table&amp;quot;, wobei &amp;quot;GUID&amp;quot; für &amp;quot;Globally Unique Identifier&amp;quot; steht. Jede Partition hat eine eindeutige Kennung, die weltweit einzigartig ist.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kapazität&amp;#039;&amp;#039;&amp;#039;: GPT ermöglicht die Partitionierung von Festplatten mit Größen von bis zu 9,4 Zettabyte (sehr viel größer als MBR, das auf 2 Terabyte begrenzt ist). Das macht GPT ideal für moderne, große Festplatten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Anzahl der Partitionen&amp;#039;&amp;#039;&amp;#039;: GPT erlaubt bis zu 128 Partitionen, während MBR nur vier primäre Partitionen zulässt (obwohl mit &amp;quot;erweiterten&amp;quot; Partitionen eine Umgehung möglich ist). Dies bietet mehr Flexibilität bei der Partitionierung.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datensicherheit&amp;#039;&amp;#039;&amp;#039;: GPT hat einen &amp;quot;Schutz-MBR&amp;quot; am Anfang der Partitionstabelle, um MBR-basierte Tools daran zu hindern, die GPT-Daten zu beschädigen. Darüber hinaus enthält GPT eine Backup-Partitionstabelle am Ende der Festplatte, um die Datenintegrität zu verbessern.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kompatibilität&amp;#039;&amp;#039;&amp;#039;: GPT ist Teil des UEFI-Standards (Unified Extensible Firmware Interface), der den herkömmlichen BIOS-Standard ablöst. GPT-Partitionierung ist ein Muss für UEFI-basierte Systeme, da sie auf MBR verzichten. Es kann jedoch auch mit Legacy-Systemen verwendet werden, wenn entsprechende Tools vorhanden sind.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Bootfähigkeit&amp;#039;&amp;#039;&amp;#039;: GPT ist die empfohlene Methode für bootfähige Partitionen auf UEFI-Systemen. Beachte jedoch, dass ältere Systeme, die nur BIOS unterstützen, möglicherweise nicht in der Lage sind, von GPT zu booten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
sda           8:0    0 55.9G  0 disk&lt;br /&gt;
└─sda1        8:1    0 55.9G  0 part&lt;br /&gt;
mmcblk0     179:0    0  3.7G  0 disk&lt;br /&gt;
├─mmcblk0p1 179:1    0  256M  0 part /boot&lt;br /&gt;
└─mmcblk0p2 179:2    0  3.5G  0 part /&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte formatieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte mounten ====&lt;br /&gt;
&lt;br /&gt;
* UUID des Geräts herausfinden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
blkid /dev/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dev/sda1: PARTUUID=&amp;quot;a2a27a35-b49d-004b-8ad0-2b8e77714d1e&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mountpoint erstellen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /mnt/usb_hdd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Hinzufügen zur &amp;#039;/etc/fstab&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/fstab&lt;br /&gt;
&lt;br /&gt;
Aufbau:&lt;br /&gt;
UUID=&amp;lt;UUID&amp;gt; &amp;lt;Mountpoint&amp;gt; &amp;lt;Dateisystem&amp;gt; &amp;lt;Optionen&amp;gt; &amp;lt;Dump&amp;gt; &amp;lt;Pass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
UUID=a2a27a35-b49d-004b-8ad0-2b8e77714d1e /mnt/usb_hdd ext4 defaults 0 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Überprüfen und Testen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MySQL Pfad ändern ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/mysql/mariadb.conf.d/50-server.conf&lt;br /&gt;
&lt;br /&gt;
datadir=/mnt/usb_hdd/mysql-data&lt;br /&gt;
&lt;br /&gt;
cd /var/lib/mysql&lt;br /&gt;
cp * -R /mnt/usb_hdd/mysql-data/&lt;br /&gt;
chown mysql /mnt/usb_hdd/mysql-data/ -R&lt;br /&gt;
chgrp mysql /mnt/usb_hdd/mysql-data/ -R&lt;br /&gt;
&lt;br /&gt;
service mysql restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1530</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1530"/>
		<updated>2024-05-14T20:11:37Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Festplatte einrichten ==&lt;br /&gt;
&lt;br /&gt;
==== Festplatten herausfinden ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mgl. Audgabe&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Disk /dev/mmcblk0: 3.71 GiB, 3980394496 bytes, 7774208 sectors&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: dos&lt;br /&gt;
Disk identifier: 0xe79dff76&lt;br /&gt;
&lt;br /&gt;
Device         Boot  Start     End Sectors  Size Id Type&lt;br /&gt;
/dev/mmcblk0p1        8192  532479  524288  256M  c W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2      532480 7774207 7241728  3.5G 83 Linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sda: 55.9 GiB, 60022479872 bytes, 117231406 sectors&lt;br /&gt;
Disk model: Storage Device&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: F7EE58D9-0A49-8C48-A507-E0855B5F47BE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte partitionieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk /dev/sda&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* g   create a new empty GPT partition table&lt;br /&gt;
*usw.&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Eine GPT-Partitionierung, oder &amp;quot;GUID Partition Table&amp;quot;, ist ein modernes Partitionsschema, das eine Vielzahl von Vorteilen gegenüber dem älteren MBR-Schema (&amp;quot;Master Boot Record&amp;quot;) bietet. Hier sind die wichtigsten Punkte:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;GUID&amp;#039;&amp;#039;&amp;#039;: GPT steht für &amp;quot;GUID Partition Table&amp;quot;, wobei &amp;quot;GUID&amp;quot; für &amp;quot;Globally Unique Identifier&amp;quot; steht. Jede Partition hat eine eindeutige Kennung, die weltweit einzigartig ist.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kapazität&amp;#039;&amp;#039;&amp;#039;: GPT ermöglicht die Partitionierung von Festplatten mit Größen von bis zu 9,4 Zettabyte (sehr viel größer als MBR, das auf 2 Terabyte begrenzt ist). Das macht GPT ideal für moderne, große Festplatten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Anzahl der Partitionen&amp;#039;&amp;#039;&amp;#039;: GPT erlaubt bis zu 128 Partitionen, während MBR nur vier primäre Partitionen zulässt (obwohl mit &amp;quot;erweiterten&amp;quot; Partitionen eine Umgehung möglich ist). Dies bietet mehr Flexibilität bei der Partitionierung.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datensicherheit&amp;#039;&amp;#039;&amp;#039;: GPT hat einen &amp;quot;Schutz-MBR&amp;quot; am Anfang der Partitionstabelle, um MBR-basierte Tools daran zu hindern, die GPT-Daten zu beschädigen. Darüber hinaus enthält GPT eine Backup-Partitionstabelle am Ende der Festplatte, um die Datenintegrität zu verbessern.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kompatibilität&amp;#039;&amp;#039;&amp;#039;: GPT ist Teil des UEFI-Standards (Unified Extensible Firmware Interface), der den herkömmlichen BIOS-Standard ablöst. GPT-Partitionierung ist ein Muss für UEFI-basierte Systeme, da sie auf MBR verzichten. Es kann jedoch auch mit Legacy-Systemen verwendet werden, wenn entsprechende Tools vorhanden sind.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Bootfähigkeit&amp;#039;&amp;#039;&amp;#039;: GPT ist die empfohlene Methode für bootfähige Partitionen auf UEFI-Systemen. Beachte jedoch, dass ältere Systeme, die nur BIOS unterstützen, möglicherweise nicht in der Lage sind, von GPT zu booten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
sda           8:0    0 55.9G  0 disk&lt;br /&gt;
└─sda1        8:1    0 55.9G  0 part&lt;br /&gt;
mmcblk0     179:0    0  3.7G  0 disk&lt;br /&gt;
├─mmcblk0p1 179:1    0  256M  0 part /boot&lt;br /&gt;
└─mmcblk0p2 179:2    0  3.5G  0 part /&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte formatieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte mounten ====&lt;br /&gt;
&lt;br /&gt;
* UUID des Geräts herausfinden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
blkid /dev/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dev/sda1: PARTUUID=&amp;quot;a2a27a35-b49d-004b-8ad0-2b8e77714d1e&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mountpoint erstellen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /mnt/usb_hdd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Hinzufügen zur &amp;#039;/etc/fstab&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/fstab&lt;br /&gt;
&lt;br /&gt;
Aufbau:&lt;br /&gt;
UUID=&amp;lt;UUID&amp;gt; &amp;lt;Mountpoint&amp;gt; &amp;lt;Dateisystem&amp;gt; &amp;lt;Optionen&amp;gt; &amp;lt;Dump&amp;gt; &amp;lt;Pass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
UUID=a2a27a35-b49d-004b-8ad0-2b8e77714d1e /mnt/usb_hdd ext4 defaults 0 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Überprüfen und Testen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MySQL Pfad ändern ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/mysql/mariadb.conf.d/50-server.conf&lt;br /&gt;
&lt;br /&gt;
datadir=/mnt/usb_hdd/mysql-data&lt;br /&gt;
&lt;br /&gt;
service mysql restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1529</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1529"/>
		<updated>2024-05-14T19:55:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Festplatte einrichten ==&lt;br /&gt;
&lt;br /&gt;
==== Festplatten herausfinden ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mgl. Audgabe&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Disk /dev/mmcblk0: 3.71 GiB, 3980394496 bytes, 7774208 sectors&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: dos&lt;br /&gt;
Disk identifier: 0xe79dff76&lt;br /&gt;
&lt;br /&gt;
Device         Boot  Start     End Sectors  Size Id Type&lt;br /&gt;
/dev/mmcblk0p1        8192  532479  524288  256M  c W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2      532480 7774207 7241728  3.5G 83 Linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sda: 55.9 GiB, 60022479872 bytes, 117231406 sectors&lt;br /&gt;
Disk model: Storage Device&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: F7EE58D9-0A49-8C48-A507-E0855B5F47BE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte partitionieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk /dev/sda&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* g   create a new empty GPT partition table&lt;br /&gt;
*usw.&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Eine GPT-Partitionierung, oder &amp;quot;GUID Partition Table&amp;quot;, ist ein modernes Partitionsschema, das eine Vielzahl von Vorteilen gegenüber dem älteren MBR-Schema (&amp;quot;Master Boot Record&amp;quot;) bietet. Hier sind die wichtigsten Punkte:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;GUID&amp;#039;&amp;#039;&amp;#039;: GPT steht für &amp;quot;GUID Partition Table&amp;quot;, wobei &amp;quot;GUID&amp;quot; für &amp;quot;Globally Unique Identifier&amp;quot; steht. Jede Partition hat eine eindeutige Kennung, die weltweit einzigartig ist.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kapazität&amp;#039;&amp;#039;&amp;#039;: GPT ermöglicht die Partitionierung von Festplatten mit Größen von bis zu 9,4 Zettabyte (sehr viel größer als MBR, das auf 2 Terabyte begrenzt ist). Das macht GPT ideal für moderne, große Festplatten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Anzahl der Partitionen&amp;#039;&amp;#039;&amp;#039;: GPT erlaubt bis zu 128 Partitionen, während MBR nur vier primäre Partitionen zulässt (obwohl mit &amp;quot;erweiterten&amp;quot; Partitionen eine Umgehung möglich ist). Dies bietet mehr Flexibilität bei der Partitionierung.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datensicherheit&amp;#039;&amp;#039;&amp;#039;: GPT hat einen &amp;quot;Schutz-MBR&amp;quot; am Anfang der Partitionstabelle, um MBR-basierte Tools daran zu hindern, die GPT-Daten zu beschädigen. Darüber hinaus enthält GPT eine Backup-Partitionstabelle am Ende der Festplatte, um die Datenintegrität zu verbessern.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kompatibilität&amp;#039;&amp;#039;&amp;#039;: GPT ist Teil des UEFI-Standards (Unified Extensible Firmware Interface), der den herkömmlichen BIOS-Standard ablöst. GPT-Partitionierung ist ein Muss für UEFI-basierte Systeme, da sie auf MBR verzichten. Es kann jedoch auch mit Legacy-Systemen verwendet werden, wenn entsprechende Tools vorhanden sind.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Bootfähigkeit&amp;#039;&amp;#039;&amp;#039;: GPT ist die empfohlene Methode für bootfähige Partitionen auf UEFI-Systemen. Beachte jedoch, dass ältere Systeme, die nur BIOS unterstützen, möglicherweise nicht in der Lage sind, von GPT zu booten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
sda           8:0    0 55.9G  0 disk&lt;br /&gt;
└─sda1        8:1    0 55.9G  0 part&lt;br /&gt;
mmcblk0     179:0    0  3.7G  0 disk&lt;br /&gt;
├─mmcblk0p1 179:1    0  256M  0 part /boot&lt;br /&gt;
└─mmcblk0p2 179:2    0  3.5G  0 part /&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte mounten ====&lt;br /&gt;
&lt;br /&gt;
* UUID des Geräts herausfinden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
blkid /dev/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dev/sda1: PARTUUID=&amp;quot;a2a27a35-b49d-004b-8ad0-2b8e77714d1e&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mountpoint erstellen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /mnt/usb_hdd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Hinzufügen zur &amp;#039;/etc/fstab&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/fstab&lt;br /&gt;
&lt;br /&gt;
Aufbau:&lt;br /&gt;
UUID=&amp;lt;UUID&amp;gt; &amp;lt;Mountpoint&amp;gt; &amp;lt;Dateisystem&amp;gt; &amp;lt;Optionen&amp;gt; &amp;lt;Dump&amp;gt; &amp;lt;Pass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
UUID=a2a27a35-b49d-004b-8ad0-2b8e77714d1e /mnt/usb_hdd ext4 defaults 0 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Überprüfen und Testen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1528</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1528"/>
		<updated>2024-05-14T19:46:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Festplatte einrichten ==&lt;br /&gt;
&lt;br /&gt;
==== Festplatten herausfinden ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mgl. Audgabe&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Disk /dev/mmcblk0: 3.71 GiB, 3980394496 bytes, 7774208 sectors&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: dos&lt;br /&gt;
Disk identifier: 0xe79dff76&lt;br /&gt;
&lt;br /&gt;
Device         Boot  Start     End Sectors  Size Id Type&lt;br /&gt;
/dev/mmcblk0p1        8192  532479  524288  256M  c W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2      532480 7774207 7241728  3.5G 83 Linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sda: 55.9 GiB, 60022479872 bytes, 117231406 sectors&lt;br /&gt;
Disk model: Storage Device&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: F7EE58D9-0A49-8C48-A507-E0855B5F47BE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte partitionieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk /dev/sda&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* g   create a new empty GPT partition table&lt;br /&gt;
*usw.&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Eine GPT-Partitionierung, oder &amp;quot;GUID Partition Table&amp;quot;, ist ein modernes Partitionsschema, das eine Vielzahl von Vorteilen gegenüber dem älteren MBR-Schema (&amp;quot;Master Boot Record&amp;quot;) bietet. Hier sind die wichtigsten Punkte:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;GUID&amp;#039;&amp;#039;&amp;#039;: GPT steht für &amp;quot;GUID Partition Table&amp;quot;, wobei &amp;quot;GUID&amp;quot; für &amp;quot;Globally Unique Identifier&amp;quot; steht. Jede Partition hat eine eindeutige Kennung, die weltweit einzigartig ist.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kapazität&amp;#039;&amp;#039;&amp;#039;: GPT ermöglicht die Partitionierung von Festplatten mit Größen von bis zu 9,4 Zettabyte (sehr viel größer als MBR, das auf 2 Terabyte begrenzt ist). Das macht GPT ideal für moderne, große Festplatten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Anzahl der Partitionen&amp;#039;&amp;#039;&amp;#039;: GPT erlaubt bis zu 128 Partitionen, während MBR nur vier primäre Partitionen zulässt (obwohl mit &amp;quot;erweiterten&amp;quot; Partitionen eine Umgehung möglich ist). Dies bietet mehr Flexibilität bei der Partitionierung.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datensicherheit&amp;#039;&amp;#039;&amp;#039;: GPT hat einen &amp;quot;Schutz-MBR&amp;quot; am Anfang der Partitionstabelle, um MBR-basierte Tools daran zu hindern, die GPT-Daten zu beschädigen. Darüber hinaus enthält GPT eine Backup-Partitionstabelle am Ende der Festplatte, um die Datenintegrität zu verbessern.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kompatibilität&amp;#039;&amp;#039;&amp;#039;: GPT ist Teil des UEFI-Standards (Unified Extensible Firmware Interface), der den herkömmlichen BIOS-Standard ablöst. GPT-Partitionierung ist ein Muss für UEFI-basierte Systeme, da sie auf MBR verzichten. Es kann jedoch auch mit Legacy-Systemen verwendet werden, wenn entsprechende Tools vorhanden sind.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Bootfähigkeit&amp;#039;&amp;#039;&amp;#039;: GPT ist die empfohlene Methode für bootfähige Partitionen auf UEFI-Systemen. Beachte jedoch, dass ältere Systeme, die nur BIOS unterstützen, möglicherweise nicht in der Lage sind, von GPT zu booten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
sda           8:0    0 55.9G  0 disk&lt;br /&gt;
└─sda1        8:1    0 55.9G  0 part&lt;br /&gt;
mmcblk0     179:0    0  3.7G  0 disk&lt;br /&gt;
├─mmcblk0p1 179:1    0  256M  0 part /boot&lt;br /&gt;
└─mmcblk0p2 179:2    0  3.5G  0 part /&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte mounten ====&lt;br /&gt;
&lt;br /&gt;
* UUID des Geräts herausfinden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
blkid /dev/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/dev/sda1: PARTUUID=&amp;quot;a2a27a35-b49d-004b-8ad0-2b8e77714d1e&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1527</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1527"/>
		<updated>2024-05-14T19:41:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Festplatte einrichten ==&lt;br /&gt;
&lt;br /&gt;
==== Festplatten herausfinden ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mgl. Audgabe&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Disk /dev/mmcblk0: 3.71 GiB, 3980394496 bytes, 7774208 sectors&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: dos&lt;br /&gt;
Disk identifier: 0xe79dff76&lt;br /&gt;
&lt;br /&gt;
Device         Boot  Start     End Sectors  Size Id Type&lt;br /&gt;
/dev/mmcblk0p1        8192  532479  524288  256M  c W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2      532480 7774207 7241728  3.5G 83 Linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sda: 55.9 GiB, 60022479872 bytes, 117231406 sectors&lt;br /&gt;
Disk model: Storage Device&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: F7EE58D9-0A49-8C48-A507-E0855B5F47BE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte partitionieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk /dev/sda&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* g   create a new empty GPT partition table&lt;br /&gt;
*usw.&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Eine GPT-Partitionierung, oder &amp;quot;GUID Partition Table&amp;quot;, ist ein modernes Partitionsschema, das eine Vielzahl von Vorteilen gegenüber dem älteren MBR-Schema (&amp;quot;Master Boot Record&amp;quot;) bietet. Hier sind die wichtigsten Punkte:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;GUID&amp;#039;&amp;#039;&amp;#039;: GPT steht für &amp;quot;GUID Partition Table&amp;quot;, wobei &amp;quot;GUID&amp;quot; für &amp;quot;Globally Unique Identifier&amp;quot; steht. Jede Partition hat eine eindeutige Kennung, die weltweit einzigartig ist.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kapazität&amp;#039;&amp;#039;&amp;#039;: GPT ermöglicht die Partitionierung von Festplatten mit Größen von bis zu 9,4 Zettabyte (sehr viel größer als MBR, das auf 2 Terabyte begrenzt ist). Das macht GPT ideal für moderne, große Festplatten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Anzahl der Partitionen&amp;#039;&amp;#039;&amp;#039;: GPT erlaubt bis zu 128 Partitionen, während MBR nur vier primäre Partitionen zulässt (obwohl mit &amp;quot;erweiterten&amp;quot; Partitionen eine Umgehung möglich ist). Dies bietet mehr Flexibilität bei der Partitionierung.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datensicherheit&amp;#039;&amp;#039;&amp;#039;: GPT hat einen &amp;quot;Schutz-MBR&amp;quot; am Anfang der Partitionstabelle, um MBR-basierte Tools daran zu hindern, die GPT-Daten zu beschädigen. Darüber hinaus enthält GPT eine Backup-Partitionstabelle am Ende der Festplatte, um die Datenintegrität zu verbessern.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kompatibilität&amp;#039;&amp;#039;&amp;#039;: GPT ist Teil des UEFI-Standards (Unified Extensible Firmware Interface), der den herkömmlichen BIOS-Standard ablöst. GPT-Partitionierung ist ein Muss für UEFI-basierte Systeme, da sie auf MBR verzichten. Es kann jedoch auch mit Legacy-Systemen verwendet werden, wenn entsprechende Tools vorhanden sind.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Bootfähigkeit&amp;#039;&amp;#039;&amp;#039;: GPT ist die empfohlene Methode für bootfähige Partitionen auf UEFI-Systemen. Beachte jedoch, dass ältere Systeme, die nur BIOS unterstützen, möglicherweise nicht in der Lage sind, von GPT zu booten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
sda           8:0    0 55.9G  0 disk&lt;br /&gt;
├─sda1        8:1    0 53.6G  0 part&lt;br /&gt;
├─sda2        8:2    0    1K  0 part&lt;br /&gt;
└─sda5        8:5    0  2.3G  0 part&lt;br /&gt;
mmcblk0     179:0    0  3.7G  0 disk&lt;br /&gt;
├─mmcblk0p1 179:1    0  256M  0 part /boot&lt;br /&gt;
└─mmcblk0p2 179:2    0  3.5G  0 part /&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1526</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1526"/>
		<updated>2024-05-11T05:45:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Festplatte einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Festplatte einrichten ==&lt;br /&gt;
&lt;br /&gt;
==== Festplatten herausfinden ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mgl. Audgabe&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Disk /dev/mmcblk0: 3.71 GiB, 3980394496 bytes, 7774208 sectors&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: dos&lt;br /&gt;
Disk identifier: 0xe79dff76&lt;br /&gt;
&lt;br /&gt;
Device         Boot  Start     End Sectors  Size Id Type&lt;br /&gt;
/dev/mmcblk0p1        8192  532479  524288  256M  c W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2      532480 7774207 7241728  3.5G 83 Linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sda: 55.9 GiB, 60022479872 bytes, 117231406 sectors&lt;br /&gt;
Disk model: Storage Device&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: F7EE58D9-0A49-8C48-A507-E0855B5F47BE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Festplatte partitionieren ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fdisk /dev/sda&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* g   create a new empty GPT partition table&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Eine GPT-Partitionierung, oder &amp;quot;GUID Partition Table&amp;quot;, ist ein modernes Partitionsschema, das eine Vielzahl von Vorteilen gegenüber dem älteren MBR-Schema (&amp;quot;Master Boot Record&amp;quot;) bietet. Hier sind die wichtigsten Punkte:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;GUID&amp;#039;&amp;#039;&amp;#039;: GPT steht für &amp;quot;GUID Partition Table&amp;quot;, wobei &amp;quot;GUID&amp;quot; für &amp;quot;Globally Unique Identifier&amp;quot; steht. Jede Partition hat eine eindeutige Kennung, die weltweit einzigartig ist.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kapazität&amp;#039;&amp;#039;&amp;#039;: GPT ermöglicht die Partitionierung von Festplatten mit Größen von bis zu 9,4 Zettabyte (sehr viel größer als MBR, das auf 2 Terabyte begrenzt ist). Das macht GPT ideal für moderne, große Festplatten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Anzahl der Partitionen&amp;#039;&amp;#039;&amp;#039;: GPT erlaubt bis zu 128 Partitionen, während MBR nur vier primäre Partitionen zulässt (obwohl mit &amp;quot;erweiterten&amp;quot; Partitionen eine Umgehung möglich ist). Dies bietet mehr Flexibilität bei der Partitionierung.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datensicherheit&amp;#039;&amp;#039;&amp;#039;: GPT hat einen &amp;quot;Schutz-MBR&amp;quot; am Anfang der Partitionstabelle, um MBR-basierte Tools daran zu hindern, die GPT-Daten zu beschädigen. Darüber hinaus enthält GPT eine Backup-Partitionstabelle am Ende der Festplatte, um die Datenintegrität zu verbessern.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kompatibilität&amp;#039;&amp;#039;&amp;#039;: GPT ist Teil des UEFI-Standards (Unified Extensible Firmware Interface), der den herkömmlichen BIOS-Standard ablöst. GPT-Partitionierung ist ein Muss für UEFI-basierte Systeme, da sie auf MBR verzichten. Es kann jedoch auch mit Legacy-Systemen verwendet werden, wenn entsprechende Tools vorhanden sind.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Bootfähigkeit&amp;#039;&amp;#039;&amp;#039;: GPT ist die empfohlene Methode für bootfähige Partitionen auf UEFI-Systemen. Beachte jedoch, dass ältere Systeme, die nur BIOS unterstützen, möglicherweise nicht in der Lage sind, von GPT zu booten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
sda           8:0    0 55.9G  0 disk&lt;br /&gt;
├─sda1        8:1    0 53.6G  0 part&lt;br /&gt;
├─sda2        8:2    0    1K  0 part&lt;br /&gt;
└─sda5        8:5    0  2.3G  0 part&lt;br /&gt;
mmcblk0     179:0    0  3.7G  0 disk&lt;br /&gt;
├─mmcblk0p1 179:1    0  256M  0 part /boot&lt;br /&gt;
└─mmcblk0p2 179:2    0  3.5G  0 part /&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1525</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Nextcloud&amp;diff=1525"/>
		<updated>2024-05-10T16:26:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== Festplatte einrichten == &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt; NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT sda           8:0    0 55.9G  0 dis…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Festplatte einrichten ==&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
sda           8:0    0 55.9G  0 disk&lt;br /&gt;
├─sda1        8:1    0 53.6G  0 part&lt;br /&gt;
├─sda2        8:2    0    1K  0 part&lt;br /&gt;
└─sda5        8:5    0  2.3G  0 part&lt;br /&gt;
mmcblk0     179:0    0  3.7G  0 disk&lt;br /&gt;
├─mmcblk0p1 179:1    0  256M  0 part /boot&lt;br /&gt;
└─mmcblk0p2 179:2    0  3.5G  0 part /&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Linux:mount&amp;diff=1524</id>
		<title>Linux:mount</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Linux:mount&amp;diff=1524"/>
		<updated>2024-05-01T22:43:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Samba-Volums */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Linux]]&lt;br /&gt;
&lt;br /&gt;
= Mounten über das Netzwerk =&lt;br /&gt;
== NFS-Volumens ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
mount -t nfs 192.168.1.55:/media/truecrypt1/Samba-Freigabe/ /mnt/HD_b2/FTP/Weiterleitung_SAN/1-TB-Platte/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Samba-Volums ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install cifs-utils&lt;br /&gt;
mount -t cifs -o user=testuser,domain=testdomain,vers=1.0 //192.168.1.100/freigabe /mnt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Webdav ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
apt install davfs2&lt;br /&gt;
mount.davfs https://example.org/webdav /mnt/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== lvm2 ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
apt install lvm2&lt;br /&gt;
&lt;br /&gt;
vgscan #um alle Volumes zu suchen (z.B. ubuntu-vg)&lt;br /&gt;
vgchange -ay ubuntu-vg&lt;br /&gt;
lvdisplay&lt;br /&gt;
mount /dev/ubuntu-vg/root quelle&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SSH ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  apt install sshfs&lt;br /&gt;
  mkdir ~/remoteserv&lt;br /&gt;
  sshfs &amp;lt;username&amp;gt;@&amp;lt;ipaddress&amp;gt;:/remotepath ~/remoteserv&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Lokales Mounten =&lt;br /&gt;
== Mit Rechten ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
mount /dev/mapper/truecrypt2 /media/truecrypt2/ -o umask=0000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Als Loopback-Device ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
mount -o loop ~/Desktop/ubuntu-??.??-alternate-i386.iso /media/cdrom0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=RaspberryPi:PHP8&amp;diff=1523</id>
		<title>RaspberryPi:PHP8</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=RaspberryPi:PHP8&amp;diff=1523"/>
		<updated>2024-02-17T21:57:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Install lsb-release package&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install lsb-release&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den GPG Key für das PHP-Repository herunterladen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl https://packages.sury.org/php/apt.gpg | sudo tee /usr/share/keyrings/suryphp-archive-keyring.gpg &amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Link zum Repository&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/suryphp-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -cs) main&amp;quot; | sudo tee /etc/apt/sources.list.d/sury-php.list&lt;br /&gt;
&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Installation php&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install php8.3 php8.3-fpm php8.3-mysql php8.3-zip php8.3-common php8.3-zip php8.3-xml php8.3-mbstring php8.3-gd php8.3-curl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=RaspberryPi:PHP8&amp;diff=1522</id>
		<title>RaspberryPi:PHP8</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=RaspberryPi:PHP8&amp;diff=1522"/>
		<updated>2024-02-17T21:30:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Install lsb-release package&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install lsb-release&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den GPG Key für das PHP-Repository herunterladen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl https://packages.sury.org/php/apt.gpg | sudo tee /usr/share/keyrings/suryphp-archive-keyring.gpg &amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Link zum Repository&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/suryphp-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -cs) main&amp;quot; | sudo tee /etc/apt/sources.list.d/sury-php.list&lt;br /&gt;
&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=RaspberryPi:PHP8&amp;diff=1521</id>
		<title>RaspberryPi:PHP8</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=RaspberryPi:PHP8&amp;diff=1521"/>
		<updated>2024-02-17T19:52:37Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „Install lsb-release package&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; apt install lsb-release &amp;lt;/syntaxhighlight&amp;gt;Den GPG Key für das PHP-Repository herunterladen&amp;lt;syntaxhigh…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Install lsb-release package&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install lsb-release&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den GPG Key für das PHP-Repository herunterladen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl https://packages.sury.org/php/apt.gpg | sudo tee /usr/share/keyrings/suryphp-archive-keyring.gpg &amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:Mocking&amp;diff=1520</id>
		<title>Spring:Mocking</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:Mocking&amp;diff=1520"/>
		<updated>2023-12-05T09:41:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 @Spy&lt;br /&gt;
 private ItemMapper itemMapper = Mappers.getMapper(ItemMapper.class);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Or alternativly to enable spring dependency injection via&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@SpringBootTest(classes = {ItemMapperImpl.class}).&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.when(compoundDocumentRepository.save(Mockito.any(CompoundDocumentEntity.class)))&lt;br /&gt;
        .thenAnswer(invocation -&amp;gt;&lt;br /&gt;
                {&lt;br /&gt;
                    CompoundDocumentEntity compoundDocumentEntity = invocation.getArgument(0);&lt;br /&gt;
                    compoundDocumentEntity.setCreatedAt(Instant.now());&lt;br /&gt;
                    compoundDocumentEntity.setUpdatedAt(Instant.now());&lt;br /&gt;
                    return compoundDocumentEntity;&lt;br /&gt;
                }&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;#039;&amp;#039;&amp;#039;Wenn man eigentlich kein return hat:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;(Klammern beachten)&amp;#039;&amp;#039;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
doAnswer((i) -&amp;gt; {&lt;br /&gt;
  List&amp;lt;ServiceState&amp;gt; status = i.getArgument(4);&lt;br /&gt;
  status.add(ServiceState.OK);&lt;br /&gt;
  return null;&lt;br /&gt;
}).when(commentService).updateReply(any(), any(), any(), any(), anyList());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.when(session.getUser()).thenReturn(user);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ReflectionTestUtils.setField(compoundDocument, &amp;quot;dbId&amp;quot;, 5L);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.anyList()&lt;br /&gt;
Mockito.any()&lt;br /&gt;
Mockito.any(String.class)&lt;br /&gt;
Mockito.anyBoolean()&lt;br /&gt;
Mockito.anyInt()&lt;br /&gt;
Mockito.anyString()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Winget-Powershell&amp;diff=1519</id>
		<title>Winget-Powershell</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Winget-Powershell&amp;diff=1519"/>
		<updated>2023-08-04T07:24:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt; PS C:\dev&amp;gt; winget search Microsoft.PowerShell  Name               Id                           Version Source ------------------…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
PS C:\dev&amp;gt; winget search Microsoft.PowerShell&lt;br /&gt;
&lt;br /&gt;
Name               Id                           Version Source&lt;br /&gt;
---------------------------------------------------------------&lt;br /&gt;
PowerShell         Microsoft.PowerShell         7.3.6.0 winget&lt;br /&gt;
PowerShell Preview Microsoft.PowerShell.Preview 7.4.0.4 winget&lt;br /&gt;
&lt;br /&gt;
PS C:\dev&amp;gt; winget install --id Microsoft.Powershell --source winget&lt;br /&gt;
&lt;br /&gt;
Found PowerShell [Microsoft.PowerShell] Version 7.3.6.0&lt;br /&gt;
This application is licensed to you by its owner.&lt;br /&gt;
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.&lt;br /&gt;
Downloading https://github.com/PowerShell/PowerShell/releases/download/v7.3.6/PowerShell-7.3.6-win-x64.msi&lt;br /&gt;
  ██████████████████████████████   100 MB /  100 MB&lt;br /&gt;
Successfully verified installer hash&lt;br /&gt;
Starting package install...&lt;br /&gt;
Successfully installed&lt;br /&gt;
&lt;br /&gt;
PS C:\dev&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:Datenbanken&amp;diff=1518</id>
		<title>Spring:Datenbanken</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:Datenbanken&amp;diff=1518"/>
		<updated>2023-05-16T07:49:37Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Codesnippets ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    @Autowired&lt;br /&gt;
    private EntityManagerFactory entityManagerFactory;&lt;br /&gt;
    &lt;br /&gt;
    public Session getSession()&lt;br /&gt;
    {&lt;br /&gt;
        SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);&lt;br /&gt;
        Session session = sessionFactory.openSession();&lt;br /&gt;
        return session;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    @Test&lt;br /&gt;
    void whenCreateOneRule_thenItShouldBePossible()&lt;br /&gt;
    {&lt;br /&gt;
        Transaction tx = getSession().beginTransaction();&lt;br /&gt;
        // ...&lt;br /&gt;
        tx.commit();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Set Up or Tear Down Outside of a Transaction&amp;lt;ref&amp;gt;Marco Behler, [https://www.marcobehler.com/guides/spring-transaction-management-transactional-in-depth &amp;quot;Spring Transaction Management: @Transactional In-Depth&amp;quot;]&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
You can annotate a &amp;lt;code&amp;gt;public void&amp;lt;/code&amp;gt; method with &amp;lt;code&amp;gt;@BeforeTransaction&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@AfterTransaction&amp;lt;/code&amp;gt;. This indicates to Spring that this method should be run before or after a test method is run within a transaction.&lt;br /&gt;
&lt;br /&gt;
=====CGlib &amp;amp; JDK Proxies - @Transactional under the covers=====&lt;br /&gt;
Spring cannot really rewrite your Java class, like I did above, to insert the connection code (unless you are using advanced techniques like bytecode weaving, but we are ignoring that for now).&lt;br /&gt;
&lt;br /&gt;
Your registerUser() method really just calls userDao.save(user), there’s no way to change that on the fly.&lt;br /&gt;
&lt;br /&gt;
But Spring has an advantage. At its core, it is an IoC container. It instantiates a UserService for you and makes sure to autowire that UserService into any other bean that needs a UserService.&lt;br /&gt;
&lt;br /&gt;
Now whenever you are using @Transactional on a bean, Spring uses a tiny trick. It does not just instantiate a UserService, but also a transactional &amp;#039;&amp;#039;proxy&amp;#039;&amp;#039; of that UserService.&lt;br /&gt;
&lt;br /&gt;
It does that through a method called &amp;#039;&amp;#039;proxy-through-subclassing&amp;#039;&amp;#039; with the help of the [https://github.com/cglib/cglib Cglib library]. There are also other ways to construct proxies (like [https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/proxy.html Dynamic JDK proxies]), but let’s leave it at that for the moment.&lt;br /&gt;
&lt;br /&gt;
Let’s see proxies in action in this picture:&lt;br /&gt;
[[Datei:Spring proxy transaction.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see from that diagram, the proxy has one job.&lt;br /&gt;
&lt;br /&gt;
* Opening and closing database connections/transactions.&lt;br /&gt;
* And then delegating to the &amp;#039;&amp;#039;real UserService&amp;#039;&amp;#039;, the one you wrote.&lt;br /&gt;
* And other beans, like your UserRestController will never know that they are talking to a proxy, and not the &amp;#039;&amp;#039;real&amp;#039;&amp;#039; thing.&lt;br /&gt;
&lt;br /&gt;
Quellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1517</id>
		<title>3D-Drucker</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1517"/>
		<updated>2023-04-27T21:27:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Einstellung der E-Steps (Extruder Schritte) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Elegoo Neptune 3 Plus ===&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update ===&lt;br /&gt;
https://github.com/NARUTOfzr/Neptune_3_Pro_Plus_Max/blob/main/README-en.md&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der E-Steps (Extruder Schritte) ===&lt;br /&gt;
Installation des Druckertreiber&lt;br /&gt;
&lt;br /&gt;
Download und Start von Pronterface&lt;br /&gt;
&lt;br /&gt;
Verbinden&lt;br /&gt;
&lt;br /&gt;
M503 senden -&amp;gt; Einstellungen&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
SENDING:M503&lt;br /&gt;
echo:; Linear Units:&lt;br /&gt;
echo:  G21 ; (mm)&lt;br /&gt;
echo:; Temperature Units:&lt;br /&gt;
echo:  M149 C ; Units in Celsius&lt;br /&gt;
echo:; Filament settings (Disabled):&lt;br /&gt;
echo:  M200 S0 D1.75&lt;br /&gt;
echo:; Steps per unit:&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E390.00&lt;br /&gt;
echo:; Max feedrates (units/s):&lt;br /&gt;
echo:  M203 X300.00 Y300.00 Z5.00 E25.00&lt;br /&gt;
echo:; Max Acceleration (units/s2):&lt;br /&gt;
echo:  M201 X700.00 Y700.00 Z100.00 E1000.00&lt;br /&gt;
echo:; Acceleration (units/s2) (P&amp;lt;print-accel&amp;gt; R&amp;lt;retract-accel&amp;gt; T&amp;lt;travel-accel&amp;gt;):&lt;br /&gt;
echo:  M204 P3000.00 R3000.00 T3000.00&lt;br /&gt;
echo:; Advanced (B&amp;lt;min_segment_time_us&amp;gt; S&amp;lt;min_feedrate&amp;gt; T&amp;lt;min_travel_feedrate&amp;gt; X&amp;lt;max_jerk&amp;gt; Y&amp;lt;max_jerk&amp;gt; Z&amp;lt;max_jerk&amp;gt; E&amp;lt;max_jerk&amp;gt;):&lt;br /&gt;
echo:  M205 B20000.00 S0.00 T0.00 X10.00 Y10.00 Z0.40 E5.00&lt;br /&gt;
echo:; Home offset:&lt;br /&gt;
echo:  M206 X0.00 Y0.00 Z0.00&lt;br /&gt;
echo:; Auto Bed Leveling:&lt;br /&gt;
echo:  M420 S0 Z2.00 ; Leveling OFF&lt;br /&gt;
echo:; Material heatup parameters:&lt;br /&gt;
echo:  M145 S0 H200.00 B50.00 F0&lt;br /&gt;
echo:  M145 S1 H240.00 B80.00 F0&lt;br /&gt;
echo:  M145 S2 H220.00 B60.00 F0&lt;br /&gt;
echo:  M145 S3 H200.00 B50.00 F0&lt;br /&gt;
echo:; Hotend PID:&lt;br /&gt;
echo:  M301 P22.20 I1.80 D119.00&lt;br /&gt;
echo:; Power-loss recovery:&lt;br /&gt;
echo:  M413 S1 ; ON&lt;br /&gt;
echo:; Z-Probe Offset:&lt;br /&gt;
echo:  M851 X-28.50 Y22.00 Z0.00 ; (mm)&lt;br /&gt;
echo:; Skew Factor:&lt;br /&gt;
echo:  M852 I0.000000 J0.000000 K0.000000 ; XY, XZ, YZ&lt;br /&gt;
echo:; Filament load/unload:&lt;br /&gt;
echo:  M603 L0.00 U100.00 ; (mm)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;...&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
M92 E410.52&lt;br /&gt;
M500&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Neuer Wert:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E410.52&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.youtube.com/watch?v=uwWITeWgTQM&lt;br /&gt;
&lt;br /&gt;
=== Flow (Materialfluss) ===&lt;br /&gt;
&lt;br /&gt;
=== Bettausgleich ===&lt;br /&gt;
&lt;br /&gt;
=== Z-Offset ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10:19&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1516</id>
		<title>3D-Drucker</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1516"/>
		<updated>2023-04-27T21:05:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Leveln (Kalibrieren der Z-Achse) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Elegoo Neptune 3 Plus ===&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update ===&lt;br /&gt;
https://github.com/NARUTOfzr/Neptune_3_Pro_Plus_Max/blob/main/README-en.md&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der E-Steps (Extruder Schritte) ===&lt;br /&gt;
Installation des Druckertreiber&lt;br /&gt;
&lt;br /&gt;
Download und Start von Pronterface&lt;br /&gt;
&lt;br /&gt;
Verbinden&lt;br /&gt;
&lt;br /&gt;
M503 senden -&amp;gt; Einstellungen&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
SENDING:M503&lt;br /&gt;
echo:; Linear Units:&lt;br /&gt;
echo:  G21 ; (mm)&lt;br /&gt;
echo:; Temperature Units:&lt;br /&gt;
echo:  M149 C ; Units in Celsius&lt;br /&gt;
echo:; Filament settings (Disabled):&lt;br /&gt;
echo:  M200 S0 D1.75&lt;br /&gt;
echo:; Steps per unit:&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E390.00&lt;br /&gt;
echo:; Max feedrates (units/s):&lt;br /&gt;
echo:  M203 X300.00 Y300.00 Z5.00 E25.00&lt;br /&gt;
echo:; Max Acceleration (units/s2):&lt;br /&gt;
echo:  M201 X700.00 Y700.00 Z100.00 E1000.00&lt;br /&gt;
echo:; Acceleration (units/s2) (P&amp;lt;print-accel&amp;gt; R&amp;lt;retract-accel&amp;gt; T&amp;lt;travel-accel&amp;gt;):&lt;br /&gt;
echo:  M204 P3000.00 R3000.00 T3000.00&lt;br /&gt;
echo:; Advanced (B&amp;lt;min_segment_time_us&amp;gt; S&amp;lt;min_feedrate&amp;gt; T&amp;lt;min_travel_feedrate&amp;gt; X&amp;lt;max_jerk&amp;gt; Y&amp;lt;max_jerk&amp;gt; Z&amp;lt;max_jerk&amp;gt; E&amp;lt;max_jerk&amp;gt;):&lt;br /&gt;
echo:  M205 B20000.00 S0.00 T0.00 X10.00 Y10.00 Z0.40 E5.00&lt;br /&gt;
echo:; Home offset:&lt;br /&gt;
echo:  M206 X0.00 Y0.00 Z0.00&lt;br /&gt;
echo:; Auto Bed Leveling:&lt;br /&gt;
echo:  M420 S0 Z2.00 ; Leveling OFF&lt;br /&gt;
echo:; Material heatup parameters:&lt;br /&gt;
echo:  M145 S0 H200.00 B50.00 F0&lt;br /&gt;
echo:  M145 S1 H240.00 B80.00 F0&lt;br /&gt;
echo:  M145 S2 H220.00 B60.00 F0&lt;br /&gt;
echo:  M145 S3 H200.00 B50.00 F0&lt;br /&gt;
echo:; Hotend PID:&lt;br /&gt;
echo:  M301 P22.20 I1.80 D119.00&lt;br /&gt;
echo:; Power-loss recovery:&lt;br /&gt;
echo:  M413 S1 ; ON&lt;br /&gt;
echo:; Z-Probe Offset:&lt;br /&gt;
echo:  M851 X-28.50 Y22.00 Z0.00 ; (mm)&lt;br /&gt;
echo:; Skew Factor:&lt;br /&gt;
echo:  M852 I0.000000 J0.000000 K0.000000 ; XY, XZ, YZ&lt;br /&gt;
echo:; Filament load/unload:&lt;br /&gt;
echo:  M603 L0.00 U100.00 ; (mm)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
Neuer Wert:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E410.52&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.youtube.com/watch?v=uwWITeWgTQM&lt;br /&gt;
&lt;br /&gt;
=== Flow (Materialfluss) ===&lt;br /&gt;
&lt;br /&gt;
=== Bettausgleich ===&lt;br /&gt;
&lt;br /&gt;
=== Z-Offset ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10:19&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1515</id>
		<title>3D-Drucker</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1515"/>
		<updated>2023-04-27T21:00:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Einstellung der E-Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Elegoo Neptune 3 Plus ==&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der E-Steps (Extruder Schritte) ===&lt;br /&gt;
Installation des Druckertreiber&lt;br /&gt;
&lt;br /&gt;
Download und Start von Pronterface&lt;br /&gt;
&lt;br /&gt;
Verbinden&lt;br /&gt;
&lt;br /&gt;
M503 senden -&amp;gt; Einstellungen&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
SENDING:M503&lt;br /&gt;
echo:; Linear Units:&lt;br /&gt;
echo:  G21 ; (mm)&lt;br /&gt;
echo:; Temperature Units:&lt;br /&gt;
echo:  M149 C ; Units in Celsius&lt;br /&gt;
echo:; Filament settings (Disabled):&lt;br /&gt;
echo:  M200 S0 D1.75&lt;br /&gt;
echo:; Steps per unit:&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E390.00&lt;br /&gt;
echo:; Max feedrates (units/s):&lt;br /&gt;
echo:  M203 X300.00 Y300.00 Z5.00 E25.00&lt;br /&gt;
echo:; Max Acceleration (units/s2):&lt;br /&gt;
echo:  M201 X700.00 Y700.00 Z100.00 E1000.00&lt;br /&gt;
echo:; Acceleration (units/s2) (P&amp;lt;print-accel&amp;gt; R&amp;lt;retract-accel&amp;gt; T&amp;lt;travel-accel&amp;gt;):&lt;br /&gt;
echo:  M204 P3000.00 R3000.00 T3000.00&lt;br /&gt;
echo:; Advanced (B&amp;lt;min_segment_time_us&amp;gt; S&amp;lt;min_feedrate&amp;gt; T&amp;lt;min_travel_feedrate&amp;gt; X&amp;lt;max_jerk&amp;gt; Y&amp;lt;max_jerk&amp;gt; Z&amp;lt;max_jerk&amp;gt; E&amp;lt;max_jerk&amp;gt;):&lt;br /&gt;
echo:  M205 B20000.00 S0.00 T0.00 X10.00 Y10.00 Z0.40 E5.00&lt;br /&gt;
echo:; Home offset:&lt;br /&gt;
echo:  M206 X0.00 Y0.00 Z0.00&lt;br /&gt;
echo:; Auto Bed Leveling:&lt;br /&gt;
echo:  M420 S0 Z2.00 ; Leveling OFF&lt;br /&gt;
echo:; Material heatup parameters:&lt;br /&gt;
echo:  M145 S0 H200.00 B50.00 F0&lt;br /&gt;
echo:  M145 S1 H240.00 B80.00 F0&lt;br /&gt;
echo:  M145 S2 H220.00 B60.00 F0&lt;br /&gt;
echo:  M145 S3 H200.00 B50.00 F0&lt;br /&gt;
echo:; Hotend PID:&lt;br /&gt;
echo:  M301 P22.20 I1.80 D119.00&lt;br /&gt;
echo:; Power-loss recovery:&lt;br /&gt;
echo:  M413 S1 ; ON&lt;br /&gt;
echo:; Z-Probe Offset:&lt;br /&gt;
echo:  M851 X-28.50 Y22.00 Z0.00 ; (mm)&lt;br /&gt;
echo:; Skew Factor:&lt;br /&gt;
echo:  M852 I0.000000 J0.000000 K0.000000 ; XY, XZ, YZ&lt;br /&gt;
echo:; Filament load/unload:&lt;br /&gt;
echo:  M603 L0.00 U100.00 ; (mm)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
Neuer Wert:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E410.52&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.youtube.com/watch?v=uwWITeWgTQM&lt;br /&gt;
&lt;br /&gt;
=== Leveln (Kalibrieren der Z-Achse) ===&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1514</id>
		<title>3D-Drucker</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=3D-Drucker&amp;diff=1514"/>
		<updated>2023-04-27T20:59:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== Elegoo Neptune 3 Plus ==  === Einstellung der E-Steps === Installation des Druckertreiber  Download und Start von Pronterface  Verbinden  M503 senden -&amp;gt; Ein…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Elegoo Neptune 3 Plus ==&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der E-Steps ===&lt;br /&gt;
Installation des Druckertreiber&lt;br /&gt;
&lt;br /&gt;
Download und Start von Pronterface&lt;br /&gt;
&lt;br /&gt;
Verbinden&lt;br /&gt;
&lt;br /&gt;
M503 senden -&amp;gt; Einstellungen&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
SENDING:M503&lt;br /&gt;
echo:; Linear Units:&lt;br /&gt;
echo:  G21 ; (mm)&lt;br /&gt;
echo:; Temperature Units:&lt;br /&gt;
echo:  M149 C ; Units in Celsius&lt;br /&gt;
echo:; Filament settings (Disabled):&lt;br /&gt;
echo:  M200 S0 D1.75&lt;br /&gt;
echo:; Steps per unit:&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E390.00&lt;br /&gt;
echo:; Max feedrates (units/s):&lt;br /&gt;
echo:  M203 X300.00 Y300.00 Z5.00 E25.00&lt;br /&gt;
echo:; Max Acceleration (units/s2):&lt;br /&gt;
echo:  M201 X700.00 Y700.00 Z100.00 E1000.00&lt;br /&gt;
echo:; Acceleration (units/s2) (P&amp;lt;print-accel&amp;gt; R&amp;lt;retract-accel&amp;gt; T&amp;lt;travel-accel&amp;gt;):&lt;br /&gt;
echo:  M204 P3000.00 R3000.00 T3000.00&lt;br /&gt;
echo:; Advanced (B&amp;lt;min_segment_time_us&amp;gt; S&amp;lt;min_feedrate&amp;gt; T&amp;lt;min_travel_feedrate&amp;gt; X&amp;lt;max_jerk&amp;gt; Y&amp;lt;max_jerk&amp;gt; Z&amp;lt;max_jerk&amp;gt; E&amp;lt;max_jerk&amp;gt;):&lt;br /&gt;
echo:  M205 B20000.00 S0.00 T0.00 X10.00 Y10.00 Z0.40 E5.00&lt;br /&gt;
echo:; Home offset:&lt;br /&gt;
echo:  M206 X0.00 Y0.00 Z0.00&lt;br /&gt;
echo:; Auto Bed Leveling:&lt;br /&gt;
echo:  M420 S0 Z2.00 ; Leveling OFF&lt;br /&gt;
echo:; Material heatup parameters:&lt;br /&gt;
echo:  M145 S0 H200.00 B50.00 F0&lt;br /&gt;
echo:  M145 S1 H240.00 B80.00 F0&lt;br /&gt;
echo:  M145 S2 H220.00 B60.00 F0&lt;br /&gt;
echo:  M145 S3 H200.00 B50.00 F0&lt;br /&gt;
echo:; Hotend PID:&lt;br /&gt;
echo:  M301 P22.20 I1.80 D119.00&lt;br /&gt;
echo:; Power-loss recovery:&lt;br /&gt;
echo:  M413 S1 ; ON&lt;br /&gt;
echo:; Z-Probe Offset:&lt;br /&gt;
echo:  M851 X-28.50 Y22.00 Z0.00 ; (mm)&lt;br /&gt;
echo:; Skew Factor:&lt;br /&gt;
echo:  M852 I0.000000 J0.000000 K0.000000 ; XY, XZ, YZ&lt;br /&gt;
echo:; Filament load/unload:&lt;br /&gt;
echo:  M603 L0.00 U100.00 ; (mm)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
Neuer Wert:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
echo:  M92 X80.00 Y80.00 Z400.00 E410.52&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.youtube.com/watch?v=uwWITeWgTQM&lt;br /&gt;
&lt;br /&gt;
=== Leveln (Kalibrieren der Z-Achse) ===&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Storage&amp;diff=1513</id>
		<title>Storage</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Storage&amp;diff=1513"/>
		<updated>2023-03-29T07:30:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „{| class=&amp;quot;wikitable&amp;quot; |+ !Freenas !Debian !Serial !Size !Pool (Freenas) |- |ada0 | |02416081500100000134 |111,79 GiB |freenas-boot |- |ada1 | |WD-WXE907E38150 |…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Freenas&lt;br /&gt;
!Debian&lt;br /&gt;
!Serial&lt;br /&gt;
!Size&lt;br /&gt;
!Pool (Freenas)&lt;br /&gt;
|-&lt;br /&gt;
|ada0&lt;br /&gt;
|&lt;br /&gt;
|02416081500100000134&lt;br /&gt;
|111,79 GiB&lt;br /&gt;
|freenas-boot&lt;br /&gt;
|-&lt;br /&gt;
|ada1&lt;br /&gt;
|&lt;br /&gt;
|WD-WXE907E38150&lt;br /&gt;
|232,89 GiB&lt;br /&gt;
|pool1&lt;br /&gt;
|-&lt;br /&gt;
|ada2&lt;br /&gt;
|&lt;br /&gt;
|WD-WCC4MPZCF7A6&lt;br /&gt;
|1.82 TiB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ada3&lt;br /&gt;
|&lt;br /&gt;
|WFL2Q5QQ&lt;br /&gt;
|1.82 TiB&lt;br /&gt;
|COPY&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:Mocking&amp;diff=1512</id>
		<title>Spring:Mocking</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:Mocking&amp;diff=1512"/>
		<updated>2023-03-22T12:11:50Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 @Spy&lt;br /&gt;
 private ItemMapper itemMapper = Mappers.getMapper(ItemMapper.class);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Or alternativly to enable spring dependency injection via&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@SpringBootTest(classes = {ItemMapperImpl.class}).&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.when(compoundDocumentRepository.save(Mockito.any(CompoundDocumentEntity.class)))&lt;br /&gt;
        .thenAnswer(invocation -&amp;gt;&lt;br /&gt;
                {&lt;br /&gt;
                    CompoundDocumentEntity compoundDocumentEntity = invocation.getArgument(0);&lt;br /&gt;
                    compoundDocumentEntity.setCreatedAt(Instant.now());&lt;br /&gt;
                    compoundDocumentEntity.setUpdatedAt(Instant.now());&lt;br /&gt;
                    return compoundDocumentEntity;&lt;br /&gt;
                }&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
doAnswer((i) -&amp;gt; {&lt;br /&gt;
  List&amp;lt;ServiceState&amp;gt; status = i.getArgument(4);&lt;br /&gt;
  status.add(ServiceState.OK);&lt;br /&gt;
  return null;&lt;br /&gt;
}).when(commentService).updateReply(any(), any(), any(), any(), anyList());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.when(session.getUser()).thenReturn(user);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ReflectionTestUtils.setField(compoundDocument, &amp;quot;dbId&amp;quot;, 5L);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.anyList()&lt;br /&gt;
Mockito.any()&lt;br /&gt;
Mockito.any(String.class)&lt;br /&gt;
Mockito.anyBoolean()&lt;br /&gt;
Mockito.anyInt()&lt;br /&gt;
Mockito.anyString()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:Mocking&amp;diff=1511</id>
		<title>Spring:Mocking</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:Mocking&amp;diff=1511"/>
		<updated>2023-03-07T12:44:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 @Spy&lt;br /&gt;
 private ItemMapper itemMapper = Mappers.getMapper(ItemMapper.class);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Or alternativly to enable spring dependency injection via&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@SpringBootTest(classes = {ItemMapperImpl.class}).&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.when(compoundDocumentRepository.save(Mockito.any(CompoundDocumentEntity.class)))&lt;br /&gt;
        .thenAnswer(invocation -&amp;gt;&lt;br /&gt;
                {&lt;br /&gt;
                    CompoundDocumentEntity compoundDocumentEntity = invocation.getArgument(0);&lt;br /&gt;
                    compoundDocumentEntity.setCreatedAt(Instant.now());&lt;br /&gt;
                    compoundDocumentEntity.setUpdatedAt(Instant.now());&lt;br /&gt;
                    return compoundDocumentEntity;&lt;br /&gt;
                }&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.when(session.getUser()).thenReturn(user);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ReflectionTestUtils.setField(compoundDocument, &amp;quot;dbId&amp;quot;, 5L);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Mockito.anyList()&lt;br /&gt;
Mockito.any()&lt;br /&gt;
Mockito.any(String.class)&lt;br /&gt;
Mockito.anyBoolean()&lt;br /&gt;
Mockito.anyInt()&lt;br /&gt;
Mockito.anyString()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1510</id>
		<title>Mockito</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1510"/>
		<updated>2023-01-24T20:35:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Mocking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dependencies für Spring ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mocking ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertEquals;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertNotEquals;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertNotNull;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertTrue;&lt;br /&gt;
import static org.mockito.AdditionalAnswers.returnsFirstArg;&lt;br /&gt;
import static org.mockito.ArgumentMatchers.any;&lt;br /&gt;
import static org.mockito.Mockito.when;&lt;br /&gt;
import static org.assertj.core.api.Assertions.assertThat;&lt;br /&gt;
&lt;br /&gt;
@SpringBootTest(classes = { CommentService.class })&lt;br /&gt;
class CommentServiceTest&lt;br /&gt;
{&lt;br /&gt;
    @Autowired&lt;br /&gt;
    protected CommentService                  commentService;&lt;br /&gt;
    @MockBean&lt;br /&gt;
    protected DocumentService                 documentService;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
        when(commentRepository.findByDocumentId(any())).thenReturn(List.of(&lt;br /&gt;
                Comment.builder().commentId(commentId1).build(),&lt;br /&gt;
                Comment.builder().commentId(commentId2).build()&lt;br /&gt;
        ));&lt;br /&gt;
        &lt;br /&gt;
        when(replyPersistencePort.save(any())).thenAnswer(invocation -&amp;gt;&lt;br /&gt;
                invocation.getArgument(0)&lt;br /&gt;
        );&lt;br /&gt;
        &lt;br /&gt;
        when(commentPersistencePort.save(any())).then(returnsFirstArg());&lt;br /&gt;
        &lt;br /&gt;
        assertThat(status.get(0)).isEqualTo(ServiceState.OK);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:Test&amp;diff=1509</id>
		<title>Spring:Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:Test&amp;diff=1509"/>
		<updated>2023-01-24T09:50:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Navigation ==&lt;br /&gt;
&lt;br /&gt;
* [[Spring:Mocking]]&lt;br /&gt;
* [[Mockito]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1508</id>
		<title>Mockito</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1508"/>
		<updated>2023-01-24T09:48:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Mocking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dependencies für Spring ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mocking ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertEquals;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertNotEquals;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertNotNull;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertTrue;&lt;br /&gt;
import static org.mockito.AdditionalAnswers.returnsFirstArg;&lt;br /&gt;
import static org.mockito.ArgumentMatchers.any;&lt;br /&gt;
import static org.mockito.Mockito.when;&lt;br /&gt;
&lt;br /&gt;
@SpringBootTest(classes = { CommentService.class })&lt;br /&gt;
class CommentServiceTest&lt;br /&gt;
{&lt;br /&gt;
    @Autowired&lt;br /&gt;
    protected CommentService                  commentService;&lt;br /&gt;
    @MockBean&lt;br /&gt;
    protected DocumentService                 documentService;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
        when(commentRepository.findByDocumentId(any())).thenReturn(List.of(&lt;br /&gt;
                Comment.builder().commentId(commentId1).build(),&lt;br /&gt;
                Comment.builder().commentId(commentId2).build()&lt;br /&gt;
        ));&lt;br /&gt;
        &lt;br /&gt;
        when(replyPersistencePort.save(any())).thenAnswer(invocation -&amp;gt;&lt;br /&gt;
                invocation.getArgument(0)&lt;br /&gt;
        );&lt;br /&gt;
        &lt;br /&gt;
        when(commentPersistencePort.save(any())).then(returnsFirstArg());&lt;br /&gt;
        &lt;br /&gt;
        assertThat(status.get(0)).isEqualTo(ServiceState.OK);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1507</id>
		<title>Mockito</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1507"/>
		<updated>2023-01-24T09:46:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Mocking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dependencies für Spring ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mocking ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertEquals;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertNotEquals;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertNotNull;&lt;br /&gt;
import static org.junit.jupiter.api.Assertions.assertTrue;&lt;br /&gt;
import static org.mockito.AdditionalAnswers.returnsFirstArg;&lt;br /&gt;
import static org.mockito.ArgumentMatchers.any;&lt;br /&gt;
import static org.mockito.Mockito.when;&lt;br /&gt;
&lt;br /&gt;
        when(commentRepository.findByDocumentId(any())).thenReturn(List.of(&lt;br /&gt;
                Comment.builder().commentId(commentId1).build(),&lt;br /&gt;
                Comment.builder().commentId(commentId2).build()&lt;br /&gt;
        ));&lt;br /&gt;
        &lt;br /&gt;
        when(replyPersistencePort.save(any())).thenAnswer(invocation -&amp;gt;&lt;br /&gt;
                invocation.getArgument(0)&lt;br /&gt;
        );&lt;br /&gt;
        &lt;br /&gt;
        when(commentPersistencePort.save(any())).then(returnsFirstArg());&lt;br /&gt;
        &lt;br /&gt;
        assertThat(status.get(0)).isEqualTo(ServiceState.OK);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1506</id>
		<title>Mockito</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Mockito&amp;diff=1506"/>
		<updated>2023-01-24T09:42:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== Dependencies für Spring == &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt; &amp;lt;dependency&amp;gt;   &amp;lt;/dependency&amp;gt; &amp;lt;/syntaxhighlight&amp;gt;  == Mocking ==“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dependencies für Spring ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mocking ==&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:Test&amp;diff=1505</id>
		<title>Spring:Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:Test&amp;diff=1505"/>
		<updated>2023-01-24T09:39:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== Navigation ==“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Navigation ==&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1504</id>
		<title>IDE:IntelliJ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1504"/>
		<updated>2023-01-22T16:13:07Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Plugins (Ctrl + Alt + S) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IntelliJ - Community Edition ==&lt;br /&gt;
&lt;br /&gt;
=== Plugins (Ctrl + Alt + S) ===&lt;br /&gt;
&lt;br /&gt;
* Spring Boot Assistant (yaml Sythax)&lt;br /&gt;
* KS-Explorer (Keystore)&lt;br /&gt;
*Jenkins Control&lt;br /&gt;
*&amp;lt;s&amp;gt;OpenAPI (Swagger) Editor (42Crunch)&amp;lt;/s&amp;gt;&lt;br /&gt;
*OpenAPI Generator (Jim Schubert)&lt;br /&gt;
*PlantUML Diagram Generator&lt;br /&gt;
*PlantUML Integration&lt;br /&gt;
*Save Action&lt;br /&gt;
*Docker&lt;br /&gt;
*SonarAnalyzer&lt;br /&gt;
*SonarLint&lt;br /&gt;
*Swagger (Zalando SE)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1503</id>
		<title>IDE:IntelliJ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1503"/>
		<updated>2023-01-22T15:44:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Plugins (Ctrl + Alt + S) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IntelliJ - Community Edition ==&lt;br /&gt;
&lt;br /&gt;
=== Plugins (Ctrl + Alt + S) ===&lt;br /&gt;
&lt;br /&gt;
* Spring Boot Assistant (yaml Sythax)&lt;br /&gt;
* KS-Explorer (Keystore)&lt;br /&gt;
*Jenkins Control&lt;br /&gt;
*OpenAPI (Swagger) Editor (42Crunch)&lt;br /&gt;
*OpenAPI Generator (Jim Schubert)&lt;br /&gt;
*PlantUML Diagram Generator&lt;br /&gt;
*PlantUML Integration&lt;br /&gt;
*Save Action&lt;br /&gt;
*Docker&lt;br /&gt;
*SonarAnalyzer&lt;br /&gt;
*SonarLint&lt;br /&gt;
*Swagger (Zalando SE)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1502</id>
		<title>IDE:IntelliJ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1502"/>
		<updated>2023-01-22T15:32:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Plugins (Ctrl + Alt + S) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IntelliJ - Community Edition ==&lt;br /&gt;
&lt;br /&gt;
=== Plugins (Ctrl + Alt + S) ===&lt;br /&gt;
&lt;br /&gt;
* Spring Boot Assistant (yaml Sythax)&lt;br /&gt;
* KS-Explorer (Keystore)&lt;br /&gt;
*Jenkins Control&lt;br /&gt;
*OpenAPI (Swagger) Editor&lt;br /&gt;
*OpenAPI Generator&lt;br /&gt;
*PlantUML Diagram Generator&lt;br /&gt;
*PlantUML Integration&lt;br /&gt;
*Save Action&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Home:Netzwerk&amp;diff=1501</id>
		<title>Home:Netzwerk</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Home:Netzwerk&amp;diff=1501"/>
		<updated>2023-01-20T14:12:44Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SAN/NAS =&lt;br /&gt;
&lt;br /&gt;
== Speziikation für NAS ==&lt;br /&gt;
=== Software ===&lt;br /&gt;
* OpenMediaVault&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* Raspberry Pi 3&lt;br /&gt;
&lt;br /&gt;
== Spezifikation für SAN ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
* [[FreeNAS]]&lt;br /&gt;
** FreeBSD&lt;br /&gt;
** [[Dateisysteme:ZFS|ZFS]]&lt;br /&gt;
** Docker Support&lt;br /&gt;
** Veracrypt Support&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* CPU:&lt;br /&gt;
** ECC Unterstützung&lt;br /&gt;
** AES &lt;br /&gt;
** min. 4 Kerne&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;I&amp;#039;&amp;#039;&amp;#039;ntegrierter &amp;#039;&amp;#039;&amp;#039;G&amp;#039;&amp;#039;&amp;#039;rafik &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;ro&lt;br /&gt;
&lt;br /&gt;
z.B. &amp;#039;&amp;#039;&amp;#039;AMD Ryzen 3 2200G&amp;#039;&amp;#039;&amp;#039; ca. 80€&lt;br /&gt;
&lt;br /&gt;
* Mainboard:&lt;br /&gt;
** ECC Unterstützung&lt;br /&gt;
** Chipsätze (AMD): B350, B450, X370 oder X470&lt;br /&gt;
&lt;br /&gt;
z.B. MSI B450M Bazooka Plus ca. 87€&lt;br /&gt;
&lt;br /&gt;
* RAM&lt;br /&gt;
** ECC&lt;br /&gt;
** 16GB&lt;br /&gt;
z.B. ca. 90&lt;br /&gt;
&lt;br /&gt;
=== Referenz: ===&lt;br /&gt;
* Synology DiskStation DS1618+ &amp;#039;&amp;#039;&amp;#039;ca. 788€&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** CPU: Quad-Core 2,1 GHz (Intel Atom C3538)&lt;br /&gt;
** RAM: 4 GB DDR4&lt;br /&gt;
** 6 Festplatten&lt;br /&gt;
&lt;br /&gt;
* Synology DiskStation DS1019+ &amp;#039;&amp;#039;&amp;#039;ca. 690€&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** CPU: Quad-Core 1,5 GHz (Intel Celeron J3455)&lt;br /&gt;
** RAM: 8 GB DDR3&lt;br /&gt;
** 5 Festplatten&lt;br /&gt;
&lt;br /&gt;
== Grafiktreiber ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  lspci -v | perl -ne &amp;#039;/VGA/../^$/ and /VGA|Kern/ and print&amp;#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  #GeForce 8 und 9 series, GeForce 100 bis 300 series&lt;br /&gt;
  apt-get install nvidia-340&lt;br /&gt;
  apt-get install nvidia-340-updates&lt;br /&gt;
  apt-get install nvidia-settings nvidia-settings-updates&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Dateisysteme:ZFS&amp;diff=1500</id>
		<title>Dateisysteme:ZFS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Dateisysteme:ZFS&amp;diff=1500"/>
		<updated>2023-01-20T14:11:42Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== Speicher-Pools ==“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Speicher-Pools ==&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Rezept:Pizza&amp;diff=1499</id>
		<title>Rezept:Pizza</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Rezept:Pizza&amp;diff=1499"/>
		<updated>2022-12-27T17:12:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für 6 Pizzen:&lt;br /&gt;
&lt;br /&gt;
* 1 kg Mehl 405&lt;br /&gt;
* 650 ml&lt;br /&gt;
* 5 gr frische Hefe / 2,5 gr Trockenhefe&lt;br /&gt;
* 32 gr Salz&lt;br /&gt;
&lt;br /&gt;
# Wasser anfangen&lt;br /&gt;
# Hefe im Wasser auflösen&lt;br /&gt;
# Mehl dazu&lt;br /&gt;
# min. 5 min Kneten&lt;br /&gt;
# aufgelöstes Salz dazu&lt;br /&gt;
30 - 35 min gehen lassen&lt;br /&gt;
&lt;br /&gt;
san marzano tomaten + salz + basilikum (nicht pürieren, weil kerne machen bitter)&lt;br /&gt;
&lt;br /&gt;
280 gr = eine Pizza; Bällchen formen (6 - 8 h gehen lassen)&lt;br /&gt;
&lt;br /&gt;
Ölivenöl auf die Hände damit nicht klebt&lt;br /&gt;
&lt;br /&gt;
Hartweisen darunter beim&lt;br /&gt;
&lt;br /&gt;
90 - 100 gr. Tomatenpammpe&lt;br /&gt;
&lt;br /&gt;
1,5 - 2 min. 450°C von oben, 360 - 370&lt;br /&gt;
&lt;br /&gt;
150° -&amp;gt; 15 - 20 min.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Rezept:Pizza&amp;diff=1498</id>
		<title>Rezept:Pizza</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Rezept:Pizza&amp;diff=1498"/>
		<updated>2022-12-27T17:02:33Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für 6 Pizzen:&lt;br /&gt;
&lt;br /&gt;
* 1 kg Mehl 405&lt;br /&gt;
* 650 ml&lt;br /&gt;
* 5 gr frische Hefe / 2,5 gr Trockenhefe&lt;br /&gt;
* 32 gr Salz&lt;br /&gt;
&lt;br /&gt;
# Wasser anfangen&lt;br /&gt;
# Hefe im Wasser auflösen&lt;br /&gt;
# Mehl dazu&lt;br /&gt;
# min. 5 min Kneten&lt;br /&gt;
# aufgelöstes Salz dazu&lt;br /&gt;
30 - 35 min gehen lassen&lt;br /&gt;
&lt;br /&gt;
san marzano tomaten + salz + basilikum (nicht pürieren, weil kerne machen bitter)&lt;br /&gt;
&lt;br /&gt;
280 gr = eine Pizza; Bällchen formen (6 - 8 h gehen lassen)&lt;br /&gt;
&lt;br /&gt;
Ölivenöl auf die Hände damit nicht klebt&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Rezept:Pizza&amp;diff=1497</id>
		<title>Rezept:Pizza</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Rezept:Pizza&amp;diff=1497"/>
		<updated>2022-12-27T16:51:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „Für 6 Pizzen:  * 1 kg Mehl 405 * 650 ml * 5 gr frische Hefe / 2,5 gr Trockenhefe * 32 gr Salz  # Wasser anfangen # Hefe im Wasser auflösen # Mehl dazu # min.…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für 6 Pizzen:&lt;br /&gt;
&lt;br /&gt;
* 1 kg Mehl 405&lt;br /&gt;
* 650 ml&lt;br /&gt;
* 5 gr frische Hefe / 2,5 gr Trockenhefe&lt;br /&gt;
* 32 gr Salz&lt;br /&gt;
&lt;br /&gt;
# Wasser anfangen&lt;br /&gt;
# Hefe im Wasser auflösen&lt;br /&gt;
# Mehl dazu&lt;br /&gt;
# min. 5 min Kneten&lt;br /&gt;
# aufgelöstes Salz dazu&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=React&amp;diff=1496</id>
		<title>React</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=React&amp;diff=1496"/>
		<updated>2022-12-26T21:35:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Erstellung einer React-Anwendung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
* Herunterladen und installieren von Node &amp;gt;= 14.0.0 and npm &amp;gt;= 5.6 (https://nodejs.org/de/)&lt;br /&gt;
* Dann hat man auch das package runner tool npx zur Verfügung&lt;br /&gt;
&lt;br /&gt;
=== Erstellung einer React-Anwendung ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
npx create-react-app@latest my-app&lt;br /&gt;
cd my-app&lt;br /&gt;
npm start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Dann läuft die Anwendung auf localhost:3000&lt;br /&gt;
&lt;br /&gt;
== Entwicklung ==&lt;br /&gt;
&lt;br /&gt;
=== Verzeichnisstruktur ===&lt;br /&gt;
index.js zeigt auf App.js&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1495</id>
		<title>IDE:IntelliJ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1495"/>
		<updated>2022-12-01T20:59:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IntelliJ - Community Edition ==&lt;br /&gt;
&lt;br /&gt;
=== Plugins (Ctrl + Alt + S) ===&lt;br /&gt;
&lt;br /&gt;
* Spring Boot Assistant (yaml Sythax)&lt;br /&gt;
* KS-Explorer (Keystore)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1494</id>
		<title>IDE:IntelliJ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=IDE:IntelliJ&amp;diff=1494"/>
		<updated>2022-12-01T20:55:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== IntelliJ - Community Edition ==  === Plugins ===“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IntelliJ - Community Edition ==&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=IDE:Integrated-Development-Environment&amp;diff=1493</id>
		<title>IDE:Integrated-Development-Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=IDE:Integrated-Development-Environment&amp;diff=1493"/>
		<updated>2022-12-01T10:50:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: Leere Seite erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=SPRING&amp;diff=1492</id>
		<title>SPRING</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=SPRING&amp;diff=1492"/>
		<updated>2022-10-25T09:11:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Spring Framework ===&lt;br /&gt;
&lt;br /&gt;
* [[Spring:MVC]]&lt;br /&gt;
*[[Spring:Security]]&lt;br /&gt;
&lt;br /&gt;
=== Spring Test ===&lt;br /&gt;
&lt;br /&gt;
* [[Spring:@TestContainers]]&lt;br /&gt;
* [[Spring:@TestConfiguration]]&lt;br /&gt;
*[[Spring:@Mock vs @MockBean]]&lt;br /&gt;
*[[Spring:Mocking]]&lt;br /&gt;
*[[Spring:Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Code Snippets ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private PopupWindow popupWindow1;&lt;br /&gt;
    private PopupWindow popupWindow2;&lt;br /&gt;
&lt;br /&gt;
    @Autowired&lt;br /&gt;
    private ApplicationContext applicationContext;&lt;br /&gt;
&lt;br /&gt;
        @PostConstruct&lt;br /&gt;
        public void init(){&lt;br /&gt;
          popupWindow1 = applicationContext.getBean(PopupWindow.class);&lt;br /&gt;
          popupWindow2 = applicationContext.getBean(PopupWindow.class);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:MockWebServer&amp;diff=1491</id>
		<title>Spring:MockWebServer</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:MockWebServer&amp;diff=1491"/>
		<updated>2022-10-20T11:57:07Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt; class MathServiceTest {     private MathService service;     private MockWebServer server;          @BeforeEach     void setUp()…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class MathServiceTest {&lt;br /&gt;
    private MathService service;&lt;br /&gt;
    private MockWebServer server;&lt;br /&gt;
    &lt;br /&gt;
    @BeforeEach&lt;br /&gt;
    void setUp() throws IOException {&lt;br /&gt;
        server = new MockWebServer();&lt;br /&gt;
        server.start();&lt;br /&gt;
        String rootUrl = server.url(&amp;quot;/api/&amp;quot;).toString();&lt;br /&gt;
        service = new MathService(WebClient.create(rootUrl));&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // TODO: write tests&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:WebTestClient&amp;diff=1490</id>
		<title>Spring:WebTestClient</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:WebTestClient&amp;diff=1490"/>
		<updated>2022-10-20T11:54:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class ...Test {          @Test     void ...()     {…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)&lt;br /&gt;
class ...Test {&lt;br /&gt;
    &lt;br /&gt;
    @Test&lt;br /&gt;
    void ...()&lt;br /&gt;
    {&lt;br /&gt;
        WebTestClient.ResponseSpec response = webTestClient&lt;br /&gt;
                .get()&lt;br /&gt;
                .uri(&amp;quot;uri/protocol/openid-connect/certs&amp;quot;)&lt;br /&gt;
                .header(ACCEPT, APPLICATION_JSON_VALUE)&lt;br /&gt;
                .exchange();&lt;br /&gt;
&lt;br /&gt;
        response.expectStatus()&lt;br /&gt;
                .is2xxSuccessful()&lt;br /&gt;
                .expectHeader()&lt;br /&gt;
                .contentType(APPLICATION_JSON)&lt;br /&gt;
                .expectBody()&lt;br /&gt;
                .jsonPath(&amp;quot;$.length()&amp;quot;).isEqualTo(3)&lt;br /&gt;
                .jsonPath(&amp;quot;$[0].id&amp;quot;).isEqualTo(1)&lt;br /&gt;
                .jsonPath(&amp;quot;$[0].name&amp;quot;).isEqualTo(&amp;quot;duke&amp;quot;)&lt;br /&gt;
                .jsonPath(&amp;quot;$[0].tags&amp;quot;).isNotEmpty();&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Jenkins&amp;diff=1489</id>
		<title>Jenkins</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Jenkins&amp;diff=1489"/>
		<updated>2022-09-30T10:00:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Pipeline ==&lt;br /&gt;
&lt;br /&gt;
=== Script-Anfang ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;groovy&amp;quot;&amp;gt;&lt;br /&gt;
#!groovy&lt;br /&gt;
pipeline {&lt;br /&gt;
    agent {&lt;br /&gt;
        label &amp;#039;ec2-fleet&amp;#039;&lt;br /&gt;
    }&lt;br /&gt;
    environment {&lt;br /&gt;
        AWS_CREDS = credentials(&amp;#039;AWS Jenkins&amp;#039;)&lt;br /&gt;
        EMAIL_TO = &amp;#039;me@example.com&amp;#039;&lt;br /&gt;
    }&lt;br /&gt;
    options {&lt;br /&gt;
        buildDiscarder(logRotator(artifactNumToKeepStr: &amp;#039;10&amp;#039;, numToKeepStr: &amp;#039;10&amp;#039;))&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Git-Checkout ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;groovy&amp;quot;&amp;gt;&lt;br /&gt;
    stages {&lt;br /&gt;
        stage(&amp;quot;GIT Checkout&amp;quot;) {&lt;br /&gt;
            parallel {&lt;br /&gt;
                stage(&amp;#039;Checkout for Multibranch Pipeline&amp;#039;) {&lt;br /&gt;
                    when {&lt;br /&gt;
                        allOf {&lt;br /&gt;
                            expression { env.repositoryNames == null }&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    steps {&lt;br /&gt;
                        checkout scm&lt;br /&gt;
&lt;br /&gt;
//                is equivalent&lt;br /&gt;
//                checkout([&lt;br /&gt;
//                        $class                           : &amp;#039;GitSCM&amp;#039;,&lt;br /&gt;
//                        branches                         : scm.branches,&lt;br /&gt;
//                        doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,&lt;br /&gt;
//                        extensions                       : scm.extensions,&lt;br /&gt;
//                        userRemoteConfigs                : scm.userRemoteConfigs&lt;br /&gt;
//                ])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    }&lt;br /&gt;
                }                        &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Post-Declaration ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;groovy&amp;quot;&amp;gt;&lt;br /&gt;
    post {&lt;br /&gt;
        always {&lt;br /&gt;
            echo &amp;quot;This block always runs.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        changed {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is different than the previous one.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        fixed {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is success and the previous one was failed or unstable.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        regression {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is anything except success but the previous one was successful.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        unstable {&lt;br /&gt;
            echo &amp;quot;This block runs if the current status is marked unstable.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        aborted {&lt;br /&gt;
            echo &amp;quot;This block runs when the build process is aborted.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        failure {&lt;br /&gt;
            echo &amp;quot;This block runs when the build is failed.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        success {&lt;br /&gt;
            echo &amp;quot;This block runs when the build is succeeded.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        unsuccessful {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is anything except success.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        cleanup {&lt;br /&gt;
            echo &amp;quot;This block always runs after other conditions are evaluated.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Jenkins&amp;diff=1488</id>
		<title>Jenkins</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Jenkins&amp;diff=1488"/>
		<updated>2022-09-29T13:03:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== Pipeline ==  === Git-Checkout ===  === Post-Declaration === &amp;lt;syntaxhighlight lang=&amp;quot;groovy&amp;quot;&amp;gt;     post {         always {             echo &amp;quot;This block always…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Pipeline ==&lt;br /&gt;
&lt;br /&gt;
=== Git-Checkout ===&lt;br /&gt;
&lt;br /&gt;
=== Post-Declaration ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;groovy&amp;quot;&amp;gt;&lt;br /&gt;
    post {&lt;br /&gt;
        always {&lt;br /&gt;
            echo &amp;quot;This block always runs.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        changed {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is different than the previous one.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        fixed {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is success and the previous one was failed or unstable.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        regression {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is anything except success but the previous one was successful.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        unstable {&lt;br /&gt;
            echo &amp;quot;This block runs if the current status is marked unstable.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        aborted {&lt;br /&gt;
            echo &amp;quot;This block runs when the build process is aborted.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        failure {&lt;br /&gt;
            echo &amp;quot;This block runs when the build is failed.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        success {&lt;br /&gt;
            echo &amp;quot;This block runs when the build is succeeded.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        unsuccessful {&lt;br /&gt;
            echo &amp;quot;This block runs when the current status is anything except success.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        cleanup {&lt;br /&gt;
            echo &amp;quot;This block always runs after other conditions are evaluated.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Docker:Network&amp;diff=1487</id>
		<title>Docker:Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Docker:Network&amp;diff=1487"/>
		<updated>2022-09-21T12:16:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anzeigen der Netzwerke&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker network ls&lt;br /&gt;
&lt;br /&gt;
NETWORK ID     NAME             DRIVER    SCOPE&lt;br /&gt;
1a1b39f6887e   bridge           bridge    local&lt;br /&gt;
699566f7a588   host             host      local&lt;br /&gt;
cc3e0432c59a   none             null      local&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Im Netzwerk bridge die nutzenden Container anschauen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker network inspect bridge&lt;br /&gt;
&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;Name&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
        &amp;quot;Id&amp;quot;: &amp;quot;1a1b39f6887e87aa7a3c2215ea5bea86f3e7e1c9ba138d0d0bf8371a887b279c&amp;quot;,&lt;br /&gt;
        &amp;quot;Created&amp;quot;: &amp;quot;2022-09-21T11:35:00.1179896Z&amp;quot;,&lt;br /&gt;
        &amp;quot;Scope&amp;quot;: &amp;quot;local&amp;quot;,&lt;br /&gt;
        &amp;quot;Driver&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
        &amp;quot;EnableIPv6&amp;quot;: false,&lt;br /&gt;
        &amp;quot;IPAM&amp;quot;: {&lt;br /&gt;
            &amp;quot;Driver&amp;quot;: &amp;quot;default&amp;quot;,&lt;br /&gt;
            &amp;quot;Options&amp;quot;: null,&lt;br /&gt;
            &amp;quot;Config&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;Subnet&amp;quot;: &amp;quot;172.17.0.0/16&amp;quot;,&lt;br /&gt;
                    &amp;quot;Gateway&amp;quot;: &amp;quot;172.17.0.1&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;Internal&amp;quot;: false,&lt;br /&gt;
        &amp;quot;Attachable&amp;quot;: false,&lt;br /&gt;
        &amp;quot;Ingress&amp;quot;: false,&lt;br /&gt;
        &amp;quot;ConfigFrom&amp;quot;: {&lt;br /&gt;
            &amp;quot;Network&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;ConfigOnly&amp;quot;: false,&lt;br /&gt;
        &amp;quot;Containers&amp;quot;: {&lt;br /&gt;
            &amp;quot;d74b8d5f9714b3063f66fcf4f60c1dcf5fc541656f070aa7a46312989e16f702&amp;quot;: {&lt;br /&gt;
                &amp;quot;Name&amp;quot;: &amp;quot;strange_lovelace&amp;quot;,&lt;br /&gt;
                &amp;quot;EndpointID&amp;quot;: &amp;quot;16754aeb446af03532ca737fd64df61321523ec4d88a5f5ad62bcba5473c1a54&amp;quot;,&lt;br /&gt;
                &amp;quot;MacAddress&amp;quot;: &amp;quot;02:42:ac:11:00:02&amp;quot;,&lt;br /&gt;
                &amp;quot;IPv4Address&amp;quot;: &amp;quot;172.17.0.2/16&amp;quot;,&lt;br /&gt;
                &amp;quot;IPv6Address&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;Options&amp;quot;: {&lt;br /&gt;
            &amp;quot;com.docker.network.bridge.default_bridge&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
            &amp;quot;com.docker.network.bridge.enable_icc&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
            &amp;quot;com.docker.network.bridge.enable_ip_masquerade&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
            &amp;quot;com.docker.network.bridge.host_binding_ipv4&amp;quot;: &amp;quot;0.0.0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;com.docker.network.bridge.name&amp;quot;: &amp;quot;docker0&amp;quot;,&lt;br /&gt;
            &amp;quot;com.docker.network.driver.mtu&amp;quot;: &amp;quot;1500&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;Labels&amp;quot;: {}&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quellen:&lt;br /&gt;
&lt;br /&gt;
https://docs.docker.com/network/network-tutorial-standalone/&lt;br /&gt;
&lt;br /&gt;
https://www.freecodecamp.org/news/how-to-get-a-docker-container-ip-address-explained-with-examples/&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Docker:Network&amp;diff=1486</id>
		<title>Docker:Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Docker:Network&amp;diff=1486"/>
		<updated>2022-09-21T12:10:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anzeigen der Netzwerke&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker network ls&lt;br /&gt;
&lt;br /&gt;
NETWORK ID     NAME             DRIVER    SCOPE&lt;br /&gt;
1a1b39f6887e   bridge           bridge    local&lt;br /&gt;
402b0fa82cc0   docker_default   bridge    local&lt;br /&gt;
699566f7a588   host             host      local&lt;br /&gt;
c1796f4e5acc   minikube         bridge    local&lt;br /&gt;
cc3e0432c59a   none             null      local&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Quellen:&lt;br /&gt;
&lt;br /&gt;
https://docs.docker.com/network/network-tutorial-standalone/&lt;br /&gt;
&lt;br /&gt;
https://www.freecodecamp.org/news/how-to-get-a-docker-container-ip-address-explained-with-examples/&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Docker:Network&amp;diff=1485</id>
		<title>Docker:Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Docker:Network&amp;diff=1485"/>
		<updated>2022-09-20T08:37:19Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „https://www.freecodecamp.org/news/how-to-get-a-docker-container-ip-address-explained-with-examples/&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; $ docker network ls &amp;lt;/syntaxhi…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://www.freecodecamp.org/news/how-to-get-a-docker-container-ip-address-explained-with-examples/&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker network ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Docker:Nexus&amp;diff=1484</id>
		<title>Docker:Nexus</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Docker:Nexus&amp;diff=1484"/>
		<updated>2022-09-19T09:14:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: Die Seite wurde neu angelegt: „== Vorüberlegung ==  == Analyse ==  == Entscheidung ==  === Quelle === https://hub.docker.com/r/sonatype/nexus3/  === Datenpersistierung === &amp;lt;syntaxhighlight…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorüberlegung ==&lt;br /&gt;
&lt;br /&gt;
== Analyse ==&lt;br /&gt;
&lt;br /&gt;
== Entscheidung ==&lt;br /&gt;
&lt;br /&gt;
=== Quelle ===&lt;br /&gt;
https://hub.docker.com/r/sonatype/nexus3/&lt;br /&gt;
&lt;br /&gt;
=== Datenpersistierung ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker volume create --name nexus-data&lt;br /&gt;
$ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;alternative&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir /some/dir/nexus-data &amp;amp;&amp;amp; chown -R 200 /some/dir/nexus-data&lt;br /&gt;
$ docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starten (1), Stoppen (2) und Test (3) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3&lt;br /&gt;
$ docker stop --time=120 nexus&lt;br /&gt;
$ curl http://localhost:8081/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Spring:Flyway&amp;diff=1483</id>
		<title>Spring:Flyway</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Spring:Flyway&amp;diff=1483"/>
		<updated>2022-08-25T06:52:12Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Flyway in maven-Skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Flyway in SpringBoot-Projekt ==&lt;br /&gt;
In pom.xml&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.flywaydb&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;flyway-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;${flyway.version}&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.flywaydb&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;flyway-mysql&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;${flyway.version}&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In application.yaml&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
spring:&lt;br /&gt;
  flyway:&lt;br /&gt;
    enabled: true&lt;br /&gt;
    baselineOnMigrate: true&lt;br /&gt;
    check-location: true&lt;br /&gt;
    # schemas: public&lt;br /&gt;
    # unfortunately flyway cannot distinct between mysql and mariadb by {vendor}&lt;br /&gt;
    locations: classpath:db/migration/{vendor},classpath:db/migration/all #, filesystem:/opt/migration/{vendor}&lt;br /&gt;
    user: user&lt;br /&gt;
    password: password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flyway in maven-Skript ==&lt;br /&gt;
flyway.conf in &lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;installDir/conf/flyway.conf&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;userhome/flyway.conf&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;workingDir/flyway.conf&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;properties&amp;quot;&amp;gt;&lt;br /&gt;
# Settings are simple key-value pairs&lt;br /&gt;
flyway.key=value&lt;br /&gt;
# Single line comment start with a hash&lt;br /&gt;
&lt;br /&gt;
# Long properties can be split over multiple lines by ending each line with a backslash&lt;br /&gt;
flyway.locations=filesystem:my/really/long/path/folder1,\&lt;br /&gt;
filesystem:my/really/long/path/folder2,\&lt;br /&gt;
filesystem:my/really/long/path/folder3&lt;br /&gt;
&lt;br /&gt;
# These are some example settings&lt;br /&gt;
flyway.url=jdbc:mydb://mydatabaseurl&lt;br /&gt;
flyway.schemas=schema1,schema2&lt;br /&gt;
flyway.placeholders.keyABC=valueXYZ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Befehle:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
mvn flyway:info&lt;br /&gt;
mvn flyway:migrate&lt;br /&gt;
mvn flyway:repair&lt;br /&gt;
mvn compile flyway:migrate -D&amp;#039;flyway.configFiles&amp;#039;=${project.build.directory}/target/classes/configs/lea-dev-plateg.conf &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flyway callbacks ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package de.itzbund.egesetz.bmi.lea.persistence;&lt;br /&gt;
&lt;br /&gt;
import lombok.extern.log4j.Log4j2;&lt;br /&gt;
import org.flywaydb.core.api.callback.Callback;&lt;br /&gt;
import org.flywaydb.core.api.callback.Context;&lt;br /&gt;
import org.flywaydb.core.api.callback.Event;&lt;br /&gt;
&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.ResultSet;&lt;br /&gt;
import java.sql.SQLException;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
&lt;br /&gt;
@Log4j2&lt;br /&gt;
public class FlywayCallback implements Callback&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    private static final String CLEANUP_FAILED_MIGRATIONS = &amp;quot;DELETE FROM flyway_schema_history WHERE success = 0;&amp;quot;;&lt;br /&gt;
    private static final String GET_FAILED_MIGRATIONS     = &amp;quot;SELECT count(*) FROM flyway_schema_history WHERE success = 0;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public boolean supports(Event event, Context context)&lt;br /&gt;
    {&lt;br /&gt;
        // case BEFORE_VALIDATE no more necessary&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public boolean canHandleInTransaction(Event event, Context context)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void handle(Event event, Context context)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        switch (event)&lt;br /&gt;
        {&lt;br /&gt;
        case BEFORE_VALIDATE:&lt;br /&gt;
            repairFailedMigrations(context.getConnection());&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    private void repairFailedMigrations(Connection connection)&lt;br /&gt;
    {&lt;br /&gt;
        if (connection != null)&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            if (getFailedMigrations(connection) &amp;gt; 0)&lt;br /&gt;
            {&lt;br /&gt;
                try (Statement statement = connection.createStatement())&lt;br /&gt;
                {&lt;br /&gt;
                    statement.execute(CLEANUP_FAILED_MIGRATIONS);&lt;br /&gt;
                } catch (SQLException e)&lt;br /&gt;
                {&lt;br /&gt;
                    log.debug(&amp;quot;Got Exception while cleanup flyway {}, but will continue.&amp;quot;, e);&lt;br /&gt;
                }&lt;br /&gt;
            } else&lt;br /&gt;
            {&lt;br /&gt;
                log.debug(&amp;quot;No failed migrations detected.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        } else&lt;br /&gt;
        {&lt;br /&gt;
            log.debug(&amp;quot;Connection is null&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    private int getFailedMigrations(Connection connection)&lt;br /&gt;
    {&lt;br /&gt;
        int fails = 0;&lt;br /&gt;
&lt;br /&gt;
        try (Statement statement = connection.createStatement())&lt;br /&gt;
        {&lt;br /&gt;
            ResultSet rs = statement.executeQuery(GET_FAILED_MIGRATIONS);&lt;br /&gt;
            if (rs != null)&lt;br /&gt;
            {&lt;br /&gt;
                rs.next();&lt;br /&gt;
                fails = rs.getInt(1);&lt;br /&gt;
&lt;br /&gt;
                log.debug(&amp;quot;{} previous failed scripts where found. We will cleanup.&amp;quot;, fails);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (SQLException e)&lt;br /&gt;
        {&lt;br /&gt;
            log.debug(&amp;quot;Got Exception while getting informations on flyway {}, but will continue.&amp;quot;, e);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return fails;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public String getCallbackName()&lt;br /&gt;
    {&lt;br /&gt;
        return FlywayCallback.class.getSimpleName();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alexander-kluge.de/index.php?title=Software:Architektur&amp;diff=1482</id>
		<title>Software:Architektur</title>
		<link rel="alternate" type="text/html" href="https://wiki.alexander-kluge.de/index.php?title=Software:Architektur&amp;diff=1482"/>
		<updated>2022-08-01T10:10:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Requirement Typen ==&lt;br /&gt;
&lt;br /&gt;
* Features des System&lt;br /&gt;
** Functional requirements&lt;br /&gt;
* Qualitätseigenschaften&lt;br /&gt;
** Non-Functional requirements&lt;br /&gt;
* Systembeschränkungen&lt;br /&gt;
** Limitations and boundaries&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
==== UseCase ====&lt;br /&gt;
&lt;br /&gt;
* Benutzer des Systems identifizieren&lt;br /&gt;
* Alle möglichen Szenarien beschreiben&lt;br /&gt;
* User Flow beschreiben (Sequenzdiagramm)&lt;br /&gt;
** Action&lt;br /&gt;
** Data&lt;br /&gt;
&lt;br /&gt;
=== Qualität ===&lt;br /&gt;
&lt;br /&gt;
* Messbar und Testierbarkeit&lt;br /&gt;
* Kompromisse&lt;br /&gt;
* Machbarkeit&lt;br /&gt;
&lt;br /&gt;
=== Systembeschränkungen ===&lt;br /&gt;
&lt;br /&gt;
* Technische Beschränkungen&lt;br /&gt;
* Business constraints&lt;br /&gt;
* Gesetzliche Beschränkungen&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>