[{"content":" Der weite Blick im Morgengrauen auf Vetzberg und Gleiberg und im Hintergrund Gießen.\nSamstag, 11.4.2026 05:29 · PENTAX K-1 · f/8 · ISO 100 · 0.5 s · Teilweise bewölkt, 3°C, Wind 5 km/h\nOpenStreetMap\n","permalink":"https://www.weissenrieder.net/posts/2026-06-11/burg-vetzberg-und-burg-gleiberg/","summary":"\u003cp\u003e\nDer weite Blick im Morgengrauen auf Vetzberg und Gleiberg und im Hintergrund Gießen.\u003c/p\u003e\n\u003cp\u003e\n\n\u003clink rel=\"stylesheet\" href=/css/hugo-easy-gallery.css /\u003e\u003cdiv class=\"box\" \u003e\n  \u003cfigure  itemprop=\"associatedMedia\" itemscope itemtype=\"http://schema.org/ImageObject\"\u003e\n    \u003cdiv class=\"img\"\u003e\n      \u003cimg itemprop=\"thumbnail\" src=\"photo.jpg\" /\u003e\n    \u003c/div\u003e\n    \u003ca href=\"photo.jpg\" itemprop=\"contentUrl\"\u003e\u003c/a\u003e\n  \u003c/figure\u003e\n\u003c/div\u003e\n\u003c/p\u003e\n\u003cp\u003e\nSamstag, 11.4.2026 05:29 · PENTAX K-1 · f/8 · ISO 100 · 0.5 s · Teilweise bewölkt, 3°C, Wind 5 km/h\u003c/p\u003e\n\u003cp\u003e\n\n\u003cdiv class=\"box\" \u003e\n  \u003cfigure  itemprop=\"associatedMedia\" itemscope itemtype=\"http://schema.org/ImageObject\"\u003e\n    \u003cdiv class=\"img\"\u003e\n      \u003cimg itemprop=\"thumbnail\" src=\"map.png\" /\u003e\n    \u003c/div\u003e\n    \u003ca href=\"map.png\" itemprop=\"contentUrl\"\u003e\u003c/a\u003e\n  \u003c/figure\u003e\n\u003c/div\u003e\n\u003c/p\u003e\n\u003cp\u003e\n\u003ca href=\"https://www.openstreetmap.org/?mlat=50.6318266666667\u0026amp;mlon=8.61981831666667\u0026amp;zoom=11\"\u003eOpenStreetMap\u003c/a\u003e\u003c/p\u003e","title":"Burg Vetzberg und Burg Gleiberg"},{"content":" Blühende Bäume in der Wetterau Samstag, 18.4.2026 06:21 · PENTAX K-1 · f/8 · ISO 100 · 1/30 s · Bewölkt, 10°C, Wind 11 km/h\nOpenStreetMap\n","permalink":"https://www.weissenrieder.net/posts/2026-06-07/blhende-bume-in-der-wetterau/","summary":"\u003cdiv id=\"outline-container-headline-1\" class=\"outline-2\"\u003e\n\u003ch2 id=\"headline-1\"\u003e\nBlühende Bäume in der Wetterau\n\u003c/h2\u003e\n\u003cdiv id=\"outline-text-headline-1\" class=\"outline-text-2\"\u003e\n\u003cp\u003e\n\n\u003clink rel=\"stylesheet\" href=/css/hugo-easy-gallery.css /\u003e\u003cdiv class=\"box\" \u003e\n  \u003cfigure  itemprop=\"associatedMedia\" itemscope itemtype=\"http://schema.org/ImageObject\"\u003e\n    \u003cdiv class=\"img\"\u003e\n      \u003cimg itemprop=\"thumbnail\" src=\"photo.jpg\" alt=\"Das Bild zeigt eine eindrucksvolle Frühlingsszene in der Wetterau. Mehrere Bäume stehen in voller Blüte und präsentieren ein abwechslungsreiches Farbspiel: Zartes Rosa, strahlendes Weiß und frisches Grün prägen das Landschaftsbild. Dazwischen verleihen Bäume mit rötlich-braunem Laub der Szenerie zusätzliche Tiefe und Kontraste...Besonders auffällig ist der dramatische Himmel im Hintergrund. Dunkle Regenwolken ziehen über die Landschaft, während die tief stehende Sonne die blühenden Bäume hell anstrahlt und ihre Farben intensiv leuchten lässt. Dieses Zusammenspiel von Licht und Schatten erzeugt eine besondere Stimmung und unterstreicht die Schönheit des Frühlings...Ein schlichter Zaun im Vordergrund sowie die natürliche Anordnung der Bäume vermitteln den Eindruck einer typisch ländlichen Landschaft der Wetterau. Das Foto fängt den Kontrast zwischen der aufziehenden Witterung und der lebendigen Blütenpracht auf eindrucksvolle Weise ein und vermittelt die Ruhe und den Charme der Region.\"/\u003e\n    \u003c/div\u003e\n    \u003ca href=\"photo.jpg\" itemprop=\"contentUrl\"\u003e\u003c/a\u003e\n  \u003c/figure\u003e\n\u003c/div\u003e\n\u003c/p\u003e","title":"Blühende Bäume in der Wetterau"},{"content":" Schloss Braunfels im Oktober, leider unscharf es war windig ;( Sonntag, 26.10.2025 07:17 · PENTAX K-1 · f/8 · ISO 100 · 1/10 s\nOpenStreetMap\n","permalink":"https://www.weissenrieder.net/posts/2026-06-06/schloss-braunfels-am-morgen/","summary":"\u003cp\u003e\nSchloss Braunfels im Oktober, leider unscharf es war windig  ;( \u003c/p\u003e\n\u003cp\u003e\n\n\u003clink rel=\"stylesheet\" href=/css/hugo-easy-gallery.css /\u003e\u003cdiv class=\"box\" \u003e\n  \u003cfigure  itemprop=\"associatedMedia\" itemscope itemtype=\"http://schema.org/ImageObject\"\u003e\n    \u003cdiv class=\"img\"\u003e\n      \u003cimg itemprop=\"thumbnail\" src=\"photo.jpg\" alt=\"Das Bild zeigt die Burg Braunfels in den frühen Morgenstunden, eingebettet in eine ruhige und stimmungsvolle Landschaft...Die Burg thront majestätisch auf einem bewaldeten Hügel und wird vom sanften Licht der aufgehenden Sonne angestrahlt. Die warmen goldenen und rosafarbenen Töne des Morgenlichts verleihen den historischen Mauern und den markanten Türmen eine besonders eindrucksvolle Ausstrahlung. Über der Burg zieht sich ein zartes, rosa gefärbtes Wolkenband durch den Himmel, das den friedlichen Charakter der Szene unterstreicht...Am Fuße des Hügels schmiegen sich zahlreiche Fachwerkhäuser und Wohngebäude an den Hang und bilden den malerischen Ortskern von Braunfels. Im Vordergrund rahmen Bäume mit herbstlich gefärbtem Laub das Motiv ein und schaffen eine natürliche Kulisse, die den Blick auf die Burg lenkt...Insgesamt vermittelt das Bild eine ruhige, fast märchenhafte Atmosphäre und zeigt die Burg Braunfels als weithin sichtbares Wahrzeichen, das eindrucksvoll über der Stadt wacht und im weichen Morgenlicht besonders imposant erscheint.\"/\u003e\n    \u003c/div\u003e\n    \u003ca href=\"photo.jpg\" itemprop=\"contentUrl\"\u003e\u003c/a\u003e\n  \u003c/figure\u003e\n\u003c/div\u003e\n\u003c/p\u003e","title":"Schloss Braunfels am Morgen"},{"content":" Morgenstimmung im Tal der Wetterau Burg Münzenberg, Schafe, Nebel, Morgenrot. Kalt wars, schön wars. Samstag, 1.11.2025 07:01 · PENTAX K-1 · f/8 · ISO 100 · 0.7 s\nOpenStreetMap\n","permalink":"https://www.weissenrieder.net/posts/2026-06-06/burg-mnzenberg-im-morgengrauen/","summary":"\u003cdiv id=\"outline-container-headline-1\" class=\"outline-2\"\u003e\n\u003ch2 id=\"headline-1\"\u003e\nMorgenstimmung im Tal der Wetterau\n\u003c/h2\u003e\n\u003cdiv id=\"outline-text-headline-1\" class=\"outline-text-2\"\u003e\n\u003cp\u003e\nBurg Münzenberg, Schafe, Nebel, Morgenrot. \n\n\u003clink rel=\"stylesheet\" href=/css/hugo-easy-gallery.css /\u003e\u003cdiv class=\"box\" \u003e\n  \u003cfigure  itemprop=\"associatedMedia\" itemscope itemtype=\"http://schema.org/ImageObject\"\u003e\n    \u003cdiv class=\"img\"\u003e\n      \u003cimg itemprop=\"thumbnail\" src=\"photo.jpg\" alt=\"Burg Münzenberg zum Sonnenaufgang im November\"/\u003e\n    \u003c/div\u003e\n    \u003ca href=\"photo.jpg\" itemprop=\"contentUrl\"\u003e\u003c/a\u003e\n  \u003c/figure\u003e\n\u003c/div\u003e\n\u003c/p\u003e\n\u003cp\u003e\nKalt wars, schön wars. \u003c/p\u003e\n\u003cp\u003e\nSamstag, 1.11.2025 07:01 · PENTAX K-1 · f/8 · ISO 100 · 0.7 s\u003c/p\u003e\n\u003cp\u003e\n\n\u003cdiv class=\"box\" \u003e\n  \u003cfigure  itemprop=\"associatedMedia\" itemscope itemtype=\"http://schema.org/ImageObject\"\u003e\n    \u003cdiv class=\"img\"\u003e\n      \u003cimg itemprop=\"thumbnail\" src=\"map.png\" alt=\"Aufnahmestandort in Opennstreetmap\"/\u003e\n    \u003c/div\u003e\n    \u003ca href=\"map.png\" itemprop=\"contentUrl\"\u003e\u003c/a\u003e\n  \u003c/figure\u003e\n\u003c/div\u003e\n\u003c/p\u003e\n\u003cp\u003e\n\u003ca href=\"https://www.openstreetmap.org/?mlat=50.4569049833333\u0026amp;mlon=8.75946166666667\u0026amp;zoom=11\"\u003eOpenStreetMap\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e","title":"Burg Münzenberg im Morgengrauen"},{"content":" Ich möchte auf meinen Server zugreifen, der sich hinter einer Fritzbox und sowohl IPv4 CGNAT als auch IPv6 befindet. Die IPv6-Adresse des Servers soll das Präfix der Fritzbox über Stateless Address Autoconfiguration erhalten und ein festes Suffix haben\nEinstellungen in /etc/sysconfig/network/ifcfg-br0 für eine Bridge mit eth0: 1 2 3 4 5 6 7 8 9 10 NETWORK=\u0026#39;\u0026#39; IPV6_PRIVACY=\u0026#39;no\u0026#39; BOOTPROTO=\u0026#39;dhcp4+auto6\u0026#39; IPV6_AUTOCONF=yes STARTMODE=\u0026#39;auto\u0026#39; BRIDGE=\u0026#39;yes\u0026#39; BRIDGE_PORTS=\u0026#39;eth0\u0026#39; BRIDGE_STP=\u0026#39;off\u0026#39; BRIDGE_FORWARDDELAY=\u0026#39;0\u0026#39; POST_UP_SCRIPT=\u0026#34;compat:suse:/etc/sysconfig/network/scripts/ip-token-br0.sh\u0026#34; Geändert habe ich:\nBOOTPROTO: Ich will dhcp für ipv4 + SLAAC für ipv6 IPV6_AUTOCONF: Ich will wirklich SLAAC für ipv6 POST_UP_SCRIPT: Irgendwie war es mir nicht möglich ipv6 tokens für das interface in der config Datei zu setzen, deswegen nach dem Start mit diesem Script:\n1 2 3 #!/usr/bin/bash logger \u0026#34;$(basename $0) called $*\u0026#34; ip -6 token set ::192:168:1:1 dev br0 Fritz Box In der Fritzbox dann über Freigaben den tocken als IPv6 Interface ID hinterlegen. ","permalink":"https://www.weissenrieder.net/posts/2025-07-19/ipv6-zugriff-mit-slacc-+-ip-token/","summary":"\u003cp\u003e\nIch möchte auf meinen \u003cem\u003eServer\u003c/em\u003e zugreifen, der sich hinter einer Fritzbox\nund sowohl IPv4 CGNAT als auch IPv6 befindet. Die IPv6-Adresse des\nServers soll das Präfix der Fritzbox über Stateless Address\nAutoconfiguration erhalten und ein festes Suffix haben\u003c/p\u003e\n\u003cp\u003e\nEinstellungen in \u003ccode\u003e/etc/sysconfig/network/ifcfg-br0\u003c/code\u003e für eine Bridge mit eth0: \u003c/p\u003e\n\u003cdiv class=\"src src-conf-unix\"\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 1\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 2\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 3\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 4\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 5\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 6\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 7\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 8\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 9\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e10\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eNETWORK=\u0026#39;\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eIPV6_PRIVACY=\u0026#39;no\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eBOOTPROTO=\u0026#39;dhcp4+auto6\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eIPV6_AUTOCONF=yes\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eSTARTMODE=\u0026#39;auto\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eBRIDGE=\u0026#39;yes\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eBRIDGE_PORTS=\u0026#39;eth0\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eBRIDGE_STP=\u0026#39;off\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eBRIDGE_FORWARDDELAY=\u0026#39;0\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ePOST_UP_SCRIPT=\u0026#34;compat:suse:/etc/sysconfig/network/scripts/ip-token-br0.sh\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003e\nGeändert habe ich:\u003c/p\u003e","title":"IPV6 mit SLACC + ip token"},{"content":" Get ansible facts as csv adhoc aproach with ansible Simple aproach without any callback plugins, just ansible, perl and jq 1 2 3 4 5 6 hostpattern=\u0026#39;*elastic*\u0026#39; inventory=inventory file or comman seperated list of hosts. if its only one host use host, ansible -i $inventory -m setup -a \u0026#39;filter=ansible_fqdn,ansible_distribution_major_version\u0026#39; $hostpatern --one-line \\ | perl -pne \u0026#39;s/.*SUCCESS =\u0026gt; (.*)$/$1/g\u0026#39; \\ | jq -r \u0026#39;.ansible_facts | \u0026#34;\\(.ansible_fqdn) \\(.ansible_distribution_major_version)\u0026#34; \u0026#39; \\ | sort I do not like the perl in here, that looks fragile to me. I think there should be an \u0026#34;output\u0026#34; plugin, ansible calls them Callback plugins\nwith the callback plugin enable for ansible commands There is an callback json plugin, which makes the output computer readable with jq, you can eather configure it in the ansible.cfg file, but for ad hoc commands its easier to just specifiy some environment variables Here i use the json callback plugin, and enable it for ansible, i.e. the adhoc commands:\n1 2 3 export ANSIBLE_CALLBACK_WHITELIST=json export ANSIBLE_STDOUT_CALLBACK=json export ANSIBLE_LOAD_CALLBACK_PLUGINS=1 then I run ansible and pipe the output through jq to get what I want:\n1 2 3 4 5 ansible -i pseudo_inventory,seperated,hosts,by,comma -m setup \\ -a \u0026#39;filter=ansible_fqdn,ansible_distribution_file_variety,ansible_distribution_major_version\u0026#39; \\ \u0026#39;*\u0026#39; \\ | jq -r \\ \u0026#39;.plays[0].tasks[0].hosts |.[] | \u0026#34;\\(.ansible_facts.ansible_fqdn);\\(.ansible_facts.ansible_distribution_file_variety);\\(.ansible_facts.ansible_distribution_major_version)\u0026#34;\u0026#39; The filter is described in the documentaion of the setup module\nwhat is the name of the ansible fact i am looking for? gron, again the json callback plugin and grep are helpful: Pipe the output of ansible to gron , grep for whatever comes to mind:\n1 2 3 4 export ANSIBLE_CALLBACK_WHITELIST=json export ANSIBLE_STDOUT_CALLBACK=json export ANSIBLE_LOAD_CALLBACK_PLUGINS=1 ansible -i pseudo-inventory, -m setup \u0026#39;*\u0026#39; |gron |grep default_ipv4 TODO playbook aproach with ansible-playbook delegating facts 1 2 3 4 5 6 7 8 9 --- - hosts: app_servers tasks: - name: Gather facts from db servers ansible.builtin.setup: delegate_to: \u0026#34;{{ item }}\u0026#34; delegate_facts: true loop: \u0026#34;{{ groups[\u0026#39;dbservers\u0026#39;] }}\u0026#34; accessible as hostvars[‘dbhost1’][‘ansible_default_ipv4’][‘address’]\nLinks: Documentation of the ansible setup module the json callback documentation ","permalink":"https://www.weissenrieder.net/posts/2024-07-29/","summary":"create an csv with ansible facts","title":"Get a list of vm facts with ansible facts, jq and gron"},{"content":" The goal is to get an easy way to fire up a debian vm to which we can connect via ssh / ansible to configure further. An easy way to do this is the debian cloud images and cloud-init configuration that creates an user configures the authorized_keys file.\nGet the right Debian cloudimage, for me only the generic types worked. The nocloud does not run cloud-init, and the genericcloud probaly does not have a cdrom driver, anyway it did not run my cloudinit. So the one i used was Debian 11 generic variant\nYou also need a copy of genisoimage, that is not availble for opensuse. So grab the source code from the next friendly Debian mirror. To build genisoimage I also needed to install libcap-devel with sudo zypper install libcap-devel\nI wanted to have an virsh pool, so create one: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 dir=~/test-debian2 rm -rf $dir mkdir -p $dir cd $dir POOL_NAME=\u0026#34;debian-test-pool\u0026#34; DIR_PATH=$(pwd) # # Destory the virs pool $POOL_NAME, and create a fresh one # virsh pool-destroy $POOL_NAME virsh pool-undefine debian-test-pool POOL_XML=\u0026#34;${POOL_NAME}_pool.xml\u0026#34; cat \u0026gt; $POOL_XML \u0026lt;\u0026lt;EOF \u0026lt;pool type=\u0026#39;dir\u0026#39;\u0026gt; \u0026lt;name\u0026gt;$POOL_NAME\u0026lt;/name\u0026gt; \u0026lt;target\u0026gt; \u0026lt;path\u0026gt;$DIR_PATH\u0026lt;/path\u0026gt; \u0026lt;/target\u0026gt; \u0026lt;/pool\u0026gt; EOF virsh pool-define $POOL_XML virsh pool-start $POOL_NAME virsh pool-autostart $POOL_NAME rm $POOL_XML echo \u0026#34;Storage pool \u0026#39;$POOL_NAME\u0026#39; created and started using directory $DIR_PATH\u0026#34; Download the image and create a qcow2 derivate from it: 1 2 wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2 qemu-img create -b debian-11-generic-amd64.qcow2 -f qcow2 -F qcow2 debian-testing.img 8G Create the user-data and a meta-data cloud init config files and bake an iso file out of it. yamllint and cloud-init schema --config-file user-data are helpfull to test the syntax of the config files. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # # create the cloud init config # vm_name=debian-whatever cat \u0026lt;\u0026lt; EOF \u0026gt; meta-data instance-id: $vm_name local-hostname: $vm_name EOF cat \u0026lt;\u0026lt; EOF \u0026gt;user-data #cloud-config packages: - openssh - bash runcmd: - systemctl enable sshd - systemctl start sshd users: - name: debian groups: sudo shell: /bin/bash sudo: [\u0026#34;ALL=(ALL) NOPASSWD:ALL\u0026#34;] ssh_authorized_keys: - ssh-rsa $(cat ~/.ssh/id_rsa.pub) EOF /usr/local/bin/genisoimage -output cidata.iso -V cidata -r -J user-data meta-data Thats, all, just fire up the vm, attach the create image and the created iso:\n1 2 3 4 5 6 7 8 9 10 11 # create the vm virt-install --name=$vm_name \\ --ram=2048 \\ --vcpus=2 \\ --import \\ --disk path=debian-testing.img,format=qcow2 \\ --disk path=cidata.iso,device=cdrom \\ --os-variant=debian11 \\ --network bridge=virbr0,model=virtio \\ --graphics vnc,listen=0.0.0.0 \\ --noautoconsole virsh net-dhcp-leases network shows you the ip to connect ansible or ssh to.\n","permalink":"https://www.weissenrieder.net/posts/2024-07-10/debian-vms-with-virsh/","summary":"Create a debian vm in virsh configured with cloud-init","title":"Debian VMS with virsh and cloud-init"},{"content":" Wieder zurück.\n1 echo \u0026#34;Hello World\u0026#34; ","permalink":"https://www.weissenrieder.net/posts/2023-12-17/","summary":"\u003cp\u003e\nWieder zurück.\u003c/p\u003e\n\u003cdiv class=\"src src-bash\"\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e1\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#e5c07b\"\u003eecho\u003c/span\u003e \u003cspan style=\"color:#63c381\"\u003e\u0026#34;Hello World\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e","title":"Hello world"},{"content":" Stephan Weissenrieder sw@nutzerverwaltung.de\n","permalink":"https://www.weissenrieder.net/about/","summary":"\u003cp\u003e\nStephan Weissenrieder\n\u003ca href=\"mailto:sw@nutzerverwaltung.de\"\u003esw@nutzerverwaltung.de\u003c/a\u003e\u003c/p\u003e","title":"About"},{"content":"Git Teil 2\nBranches Branches sind sowas wie Computerspielstände. In meinem Arbeitsverzeichniss kann ich wild zwischen den verschiedenen Branches hin und herwechseln, solange ich vor dem Wechseln commite:\n1 2 3 4 5 6 7 8 9 10 11 git status Auf Branch master nichts zu committen, Arbeitsverzeichnis unverändert ~/Dokumente/gtest/ $\u0026gt; cat meinedatei.txt master stand ~/Dokumente/gtest/ $\u0026gt; git branch chef ~/Dokumente/gtest/ $\u0026gt; git checkout chef Zu Branch \u0026#39;chef\u0026#39; gewechselt ~/Dokumente/gtest/ $\u0026gt; cat meinedatei.txt bla aenderung Wenn ich eine Datei geändert habe und zu einem anderen Branch wechseln will, lässt git das ohne ein commit oder force nicht zu:\n1 2 3 4 5 6 7 8 git checkout master error: Ihre lokalen Änderungen in den folgenden Dateien würden beim Auschecken überschrieben werden: meinedatei.txt Bitte committen oder stashen Sie Ihre Änderungen, bevor Sie Branches wechseln. Abbruch ~/Dokumente/gtest/ $\u0026gt; Ein Branch als Spielwiese Sinnvoll ist einen Branch als Spielwiese zu haben, dort einfach und schnell und häufig zu commiten. Diese Änderungen merged man dann in den Hauptzweig und commitet einmal sauber.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # Branch Spielwiese anlegen und dort hineinwechseln: ~/Dokumente/gtest/ $\u0026gt; git checkout -b spielwiese Zu neuem Branch \u0026#39;spielwiese\u0026#39; gewechselt # 3 änderungen jeweils einzeln commiten: ~/Dokumente/gtest/ $\u0026gt; echo bla \u0026gt;\u0026gt; meinedatei.txt ; git commit -a -m \u0026#39;c1\u0026#39; [spielwiese 161c062] c1 1 file changed, 5 insertions(+) ~/Dokumente/gtest/ $\u0026gt; echo bla \u0026gt;\u0026gt; meinedatei.txt ; git commit -a -m \u0026#39;c2\u0026#39; [spielwiese 5c0885e] c2 1 file changed, 1 insertion(+) ~/Dokumente/gtest/ $\u0026gt; echo bla \u0026gt;\u0026gt; meinedatei.txt ; git commit -a -m \u0026#39;c3\u0026#39; [spielwiese 43d7f62] c3 1 file changed, 1 insertion(+) # jetzt die letzten 3 Commits rebasen: ~/Dokumente/gtest/ $\u0026gt; git rebase -i \u0026#39;HEAD~3\u0026#39; [losgelöster HEAD 9c5630c] Merge branch \u0026#39;spielwiese\u0026#39; Date: Tue Sep 12 18:21:15 2017 +0200 Successfully rebased and updated refs/heads/spielwiese. ~/Dokumente/gtest/ $\u0026gt; Dabei geht ein Editor mit Erklärungen auf, wir squashen das ganze:\n1 2 3 squash 161c062 c1 squash 5c0885e c2 quash 43d7f62 c3 # Rebase von ad519e1..43d7f62 auf ad519e1 (3 Kommandos) Jetzt habe ich nur noch eine Logmeldung und kann mit\n1 2 git checkout master git merge spielwiese den Spielwiese Branch mergen und mit\n1 git branch -d spielwiese den nicht mehr gebrauchten Branch löschen.\n","permalink":"https://www.weissenrieder.net/posts/2017-08-21-git-teil2/","summary":"\u003cp\u003eGit Teil 2\u003c/p\u003e\n\u003ch1 id=\"branches\"\u003eBranches\u003c/h1\u003e\n\u003cp\u003eBranches sind sowas wie Computerspielstände. In meinem\nArbeitsverzeichniss kann ich wild zwischen den verschiedenen\nBranches hin und herwechseln, solange ich vor dem Wechseln commite:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 1\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 2\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 3\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 4\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 5\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 6\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 7\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 8\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 9\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e10\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e11\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-BASH\" data-lang=\"BASH\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e git status\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eAuf Branch master\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003enichts zu committen, Arbeitsverzeichnis unverändert\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  ~/Dokumente/gtest/ $\u0026gt; cat meinedatei.txt \n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003emaster stand\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   ~/Dokumente/gtest/ $\u0026gt;  git branch\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  chef\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  ~/Dokumente/gtest/ $\u0026gt; git checkout chef\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eZu Branch \u003cspan style=\"color:#98c379\"\u003e\u0026#39;chef\u0026#39;\u003c/span\u003e gewechselt\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   ~/Dokumente/gtest/ $\u0026gt; cat meinedatei.txt \n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebla  aenderung \n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cp\u003eWenn ich eine Datei geändert habe und zu einem anderen Branch wechseln\nwill, lässt git das ohne ein commit oder force nicht zu:\u003c/p\u003e","title":"Git Teil2"},{"content":"Connections aus /proc/$PID/fd herausfinden\nWie finde ich aus der Info aus /proc/$PID/fd/ die Connections die ein Programm hat: lsof und Internet Sockets lsof -i zeigt alle \u0026ldquo;Internet network files\u0026rdquo;, kombiniert mit -a (logisches AND) und -p für die Pid bekomme ich alle Internet Connections zu dieser pid: 1 2 3 lsof -i |head COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 23u IPv4 3881 0t0 TCP *:sunrpc (LISTEN) Leider lassen sich die übersetzung der Nummern in Namen nicht ausschalten.\nHier mit -i und -p:\n1 2 3 4 5 lsof -i -a -p 21599 lsof: WARNING: can\u0026#39;t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME chromium 21599 stephan 236u IPv4 35920590 0t0 UDP *:mdns Leider zeigt lsof nur die Inet Sockets an, meistens haben wir aber noch ein paar mehr sockets\nSS und Unix domain sockets Was sind welche Spalten Netid: Eine Kombination aus Typ + Art: ++ U_str: unix_stream ++ u_dgr: unix_datagram ++ tcp: ;-)\nLocal Address: Port bei Unix Stream und Unix Datagram\nss -x\nVerschiedenen Familien: ss -x -a # Alle Unix ss -t -a # Alle Tcp ss -u -a # Alle UDP Welche Sockets gibts überhaupt inet4 und inet6 TCP klar und einfach UDP dccp Datagram Congestion Control Protrocol ++ gleiche Ebene wie UDP+TCP ++ keine Zuverlässigkeitsprüfunung wie in tcp ++ aber eine Session (nicht wie udp) raw: neue Protokolle für inet4|6 in user space sctp: auf Ip bassierend. Verbindungsorientiert, Multihome unix: ipc sockets in dgram oder stream qualität;), nur für locale IPC, haben eine Inode Links: lsof auf Stackexchange(How Do i find out more about socket files in proc fd)[https://unix.stackexchange.com/questions/235979/how-do-i-find-out-more-about-socket-files-in-proc-fd] Unix Sockets (Linux Unix Programmierung)[http://openbook.rheinwerk-verlag.de/linux_unix_programmierung/Kap11-017.htm] ","permalink":"https://www.weissenrieder.net/posts/2017-08-21-infos-zu-sockets/","summary":"\u003cp\u003eConnections aus \u003ccode\u003e/proc/$PID/fd\u003c/code\u003e herausfinden\u003c/p\u003e\n\u003ch1 id=\"wie-finde-ich-aus-der-info-aus--procpidfd-die-connections-die-ein-programm-hat\"\u003eWie finde ich aus der Info aus  /proc/$PID/fd/ die Connections die ein Programm hat:\u003c/h1\u003e\n\u003ch2 id=\"lsof-und-internet-sockets\"\u003elsof und Internet Sockets\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003elsof -i zeigt alle \u0026ldquo;Internet network files\u0026rdquo;, kombiniert mit -a (logisches AND) und -p für die Pid bekomme ich alle Internet Connections zu dieser pid:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e1\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e2\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e3\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-SHELL\" data-lang=\"SHELL\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elsof -i  \u003cspan style=\"color:#abb2bf\"\u003e|\u003c/span\u003ehead\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eCOMMAND     PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esystemd       \u003cspan style=\"color:#d19a66\"\u003e1\u003c/span\u003e   root   23u  IPv4     \u003cspan style=\"color:#d19a66\"\u003e3881\u003c/span\u003e      0t0  TCP *:sunrpc \u003cspan style=\"color:#54b1c7\"\u003e(\u003c/span\u003eLISTEN\u003cspan style=\"color:#54b1c7\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cp\u003eLeider lassen sich die übersetzung der Nummern in Namen nicht ausschalten.\u003c/p\u003e","title":"Infos zu Sockets"},{"content":"Links https://learn.chef.io/modules/manage-a-node-chef-server#/\nServer aufsetzen Wir haben Server die wir verwalten wollen, ein Chefserver und unsere Workstation. Auf dem Chefserver installieren wir git und laden uns den Chef Server von chef.io runter und installieren ihn. ein beherztes chef-server-ctl reconfigure braucht ewig, macht aber was. Leider nicht das richtige - es darf kein Apache laufen wund wir brauchen mehr als 1G Speicher. Mit ohne Apache und 4G läufts dann durch. chef-manage scheint ja toll zu sein, also haben wir das installiert. Workstation Anscheinend machen die SSH mit RSA Keys Wir haben ja Chef manage, also holen wir uns das Starter Kit. Nope haben wir nicht. Dazu brauchts eine Lizenz. Also Wir kopieren die 2 PEM Files (für die Orga und den User) in ein .chef Verzeichniss, das kopieren wir auf den client Erstellen uns eine knife.rb - wichtig hierbei: node_name muss wie unser User heissen, und hinter server_url kommt nohc die organisation Zusammenfassung Ja, geht alles. Warum knife als ssh ersatz und kein richtiges ssh? Warum die Trennung zwischen Workstation und Server?\n","permalink":"https://www.weissenrieder.net/posts/2017-08-01-chef-automation-manage-a-node/","summary":"\u003ch1 id=\"links\"\u003eLinks\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://learn.chef.io/modules/manage-a-node-chef-server#/\"\u003ehttps://learn.chef.io/modules/manage-a-node-chef-server#/\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"server-aufsetzen\"\u003eServer aufsetzen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWir haben Server die wir verwalten wollen, ein Chefserver und unsere Workstation.\u003c/li\u003e\n\u003cli\u003eAuf dem Chefserver installieren wir git und laden uns den Chef Server von chef.io runter und installieren ihn.\u003c/li\u003e\n\u003cli\u003eein beherztes chef-server-ctl reconfigure braucht ewig, macht aber\nwas. Leider nicht das richtige - es darf kein Apache laufen wund wir\nbrauchen mehr als 1G Speicher. Mit ohne Apache und 4G läufts dann durch.\u003c/li\u003e\n\u003cli\u003echef-manage scheint ja toll zu sein, also haben wir das installiert.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"workstation\"\u003eWorkstation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAnscheinend machen die SSH mit RSA Keys\u003c/li\u003e\n\u003cli\u003eWir haben ja Chef manage, also holen wir uns das Starter Kit. Nope haben wir nicht. Dazu brauchts eine Lizenz. Also\u003c/li\u003e\n\u003cli\u003eWir kopieren die 2 PEM Files (für die Orga und den User)  in ein .chef Verzeichniss, das kopieren wir auf den client\u003c/li\u003e\n\u003cli\u003eErstellen uns eine knife.rb - wichtig hierbei: node_name muss wie unser User heissen, und hinter server_url kommt nohc die organisation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"zusammenfassung\"\u003eZusammenfassung\u003c/h2\u003e\n\u003cp\u003eJa, geht alles. Warum knife als ssh ersatz und kein richtiges ssh? Warum die Trennung zwischen Workstation und Server?\u003c/p\u003e","title":"Automatisation mit Chef - Manage a node with Chef"},{"content":"Links Chef bietet einen Kurs unter https://www.ubuntu.com/download/desktop/thank-you?country=DE\u0026amp;version=16.04.2\u0026amp;architecture=amd64\nLearn the Chef Basics Nötige Vorbereitungen Ubuntu herunterladen in einer libvirt umgebung installaieren sudo mv ubuntu-16.04.2-desktop-amd64.iso /var/lib/libvirt/images Ubuntu braucht mindestens 8.X G;( Man sollte mal über ein netzinstall image o.ä nachdenken, den gibts hier: https://www.ubuntu.com/download/server Im Tutorial gibts eine coole Cloud mit Browserzugriff Spcie über Browser? https://cloud.skytap.com/ Änderungen an der Default installation von Ubuntu apt-get install aptitude aptitude install chef - Der Frag nach der Url des Chefservers. Das ignorieren wir mal gekonnt. aptitude install emacs vim Erkenntnisse aus dem 1. Tutorial https://learn.chef.io/modules/learn-the-basics/ubuntu/free/configure-a-resource#/ man kann Dateien anlegen man kann Dateien löschen Ein Rezept (recipe) enthält eine oder mehrere Resourcen. Jede Resource beschreibt welchen State eine Teil des Systems hat. Eine Datei ist z.B eine Resource. (Hä?) Wir haben nciht beschrieben wie man die Datei erstellt, nur das die Datei da sein muss. Resourcen haben Aktionen - hier z.B die :delete Aktion. Die Dokumentation der Resource ist nach Typen (hier Datei aufgegliedert). hello.rb ist ein Rezept. Erkentnisse aus dem 2. Tutorial Ok, wir installieren Apache Ok - unser Chef kennt kein apt_update hm.. ist wohl zu alt: chef-client \u0026ndash;version liefert 12.3.0 - wir suchen mal wie man die neuste Chef installiert. Anscheinden reicht für dieses Tutorial das Develpment kit von: https://packages.chef.io/files/stable/chefdk/2.0.28/ubuntu/16.04/chefdk_2.0.28-1_amd64.deb Die Resourcen werden in der Reihenfolge angewant wie sie im Rezept-Datei stehen. Attribute (wasndas?) können überall stehen. Erkenntnisse aus dem 3. Tutorial cookbooks sind toll werden über folgendes Kommand angelegt: chef generate cookbook cookbooks/learn_chef_apache2 templates will man haben: chef generate template cookbooks/learn_chef_apache2 index.html was eine runlist ist, wird leider nicht erklärt, aber anscheinend gehen cookbooks nur mit runlists: sudo chef-client \u0026ndash;local-mode \u0026ndash;runlist \u0026lsquo;recipe[learn_chef_apache2]\u0026rsquo; anscheinend lassen mich run-lists beschreiben welche Rezepte laufen sollen und in welcher Reihenfolge sie laufen sollen. ","permalink":"https://www.weissenrieder.net/posts/2017-08-01-chef-automation-start/","summary":"\u003ch1 id=\"links\"\u003eLinks\u003c/h1\u003e\n\u003cp\u003eChef bietet einen Kurs unter\n\u003ca href=\"https://www.ubuntu.com/download/desktop/thank-you?country=DE\u0026amp;version=16.04.2\u0026amp;architecture=amd64\"\u003ehttps://www.ubuntu.com/download/desktop/thank-you?country=DE\u0026amp;version=16.04.2\u0026amp;architecture=amd64\u003c/a\u003e\u003c/p\u003e\n\u003ch1 id=\"learn-the-chef-basics\"\u003eLearn the Chef Basics\u003c/h1\u003e\n\u003ch2 id=\"nötige-vorbereitungen\"\u003eNötige Vorbereitungen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUbuntu herunterladen\u003c/li\u003e\n\u003cli\u003ein einer libvirt umgebung installaieren\nsudo mv ubuntu-16.04.2-desktop-amd64.iso  /var/lib/libvirt/images\u003c/li\u003e\n\u003cli\u003eUbuntu braucht mindestens 8.X G;(\u003c/li\u003e\n\u003cli\u003eMan sollte mal über ein netzinstall image o.ä nachdenken, den gibts hier: \u003ca href=\"https://www.ubuntu.com/download/server\"\u003ehttps://www.ubuntu.com/download/server\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIm Tutorial gibts eine coole Cloud mit Browserzugriff Spcie über Browser? \u003ca href=\"https://cloud.skytap.com/\"\u003ehttps://cloud.skytap.com/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"änderungen-an-der-default-installation-von-ubuntu\"\u003eÄnderungen an der Default installation von Ubuntu\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eapt-get install aptitude\u003c/li\u003e\n\u003cli\u003eaptitude install chef - Der Frag nach der Url des Chefservers. Das ignorieren wir mal gekonnt.\u003c/li\u003e\n\u003cli\u003eaptitude install emacs vim\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"erkenntnisse-aus-dem-1-tutorial\"\u003eErkenntnisse aus dem 1. Tutorial\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://learn.chef.io/modules/learn-the-basics/ubuntu/free/configure-a-resource#/\"\u003ehttps://learn.chef.io/modules/learn-the-basics/ubuntu/free/configure-a-resource#/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eman kann Dateien anlegen\u003c/li\u003e\n\u003cli\u003eman kann Dateien löschen\u003c/li\u003e\n\u003cli\u003eEin Rezept (recipe) enthält eine oder mehrere Resourcen. Jede Resource beschreibt welchen State eine Teil des Systems hat. Eine Datei ist z.B eine Resource. (Hä?) Wir haben nciht beschrieben wie man die Datei erstellt, nur das die Datei da sein muss.\u003c/li\u003e\n\u003cli\u003eResourcen haben Aktionen - hier z.B die :delete Aktion.\u003c/li\u003e\n\u003cli\u003eDie Dokumentation der Resource ist nach Typen (hier Datei aufgegliedert).\u003c/li\u003e\n\u003cli\u003ehello.rb ist ein Rezept.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"erkentnisse-aus-dem-2-tutorial\"\u003eErkentnisse aus dem 2. Tutorial\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOk, wir installieren Apache\u003c/li\u003e\n\u003cli\u003eOk - unser Chef kennt kein apt_update hm.. ist wohl zu alt:  chef-client \u0026ndash;version liefert 12.3.0 - wir suchen mal wie man die neuste Chef installiert. Anscheinden reicht für dieses Tutorial das Develpment kit von:  \u003ca href=\"https://packages.chef.io/files/stable/chefdk/2.0.28/ubuntu/16.04/chefdk_2.0.28-1_amd64.deb\"\u003ehttps://packages.chef.io/files/stable/chefdk/2.0.28/ubuntu/16.04/chefdk_2.0.28-1_amd64.deb\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDie Resourcen werden in der Reihenfolge angewant wie sie im  Rezept-Datei stehen.\u003c/li\u003e\n\u003cli\u003eAttribute (wasndas?) können überall stehen.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"erkenntnisse-aus-dem-3-tutorial\"\u003eErkenntnisse aus dem 3. Tutorial\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ecookbooks sind toll werden über folgendes Kommand angelegt: chef generate cookbook cookbooks/learn_chef_apache2\u003c/li\u003e\n\u003cli\u003etemplates will man haben: chef generate template cookbooks/learn_chef_apache2 index.html\u003c/li\u003e\n\u003cli\u003ewas eine runlist ist, wird leider nicht erklärt, aber anscheinend gehen cookbooks nur mit runlists: sudo chef-client \u0026ndash;local-mode \u0026ndash;runlist \u0026lsquo;recipe[learn_chef_apache2]\u0026rsquo;\nanscheinend lassen mich run-lists beschreiben welche Rezepte laufen sollen und in welcher Reihenfolge sie laufen sollen.\u003c/li\u003e\n\u003c/ul\u003e","title":"Automatisation mit Chef - Learn the Chef Basics"},{"content":"Was ist was: Varianz: Berechne die Differenz des Wertes zum Durchschnitt im Quadrat, summiere für alle Werte. Bilde dann den Durchschnitt. Hm. für unbiased wird nicht der Durchschnitt sondern geteilt durch n-1 genommen, man nennt das Bessel\u0026rsquo;s correction Standardabweichung: Quadratwurzel der Varianz, meist Sigma. Korrelations-Koeffizienten: Mass für den Linearen Zusammenhang zwischen 2 Variablen Wert zwischen -1 und 1. 1=\u0026gt; Beide Variabelen hängen linear zusammen -1=\u0026gt; Beide Variablen hängen negativ linear zusammen (d.h eine Steigerung der einen führt zu einer Minderung der anderen 0 =\u0026gt; kein Zusammenhang zwischen den Variablen Multipliziere die Abweichung von X vom mean(X) mit der Abweichung von Y von mean(Y) am gleichen Punkt. Bilde dann die Summe dieser Produkte aller Variablen . Teile das ganze durch das Produkt der Standardabweichungen. Überlegung hierzu: Wir versuchen einen Zusammenhang zwischen der Länge und der Breite eines Schiffes zu finden. Wenn das Schiff nun eine grosse Abweichung vom Durchschnitt in der Länge hat, sollte es, so diese mit der Breite korreliert auch eine grosse Abweichung vom Durchschnitt in der Länge haben. (Wenn ein Schiff \u0026ldquo;besonders\u0026rdquo; gross ist, ist es auch \u0026ldquo;besonders\u0026rdquo; breit. \u0026ldquo;besonders\u0026rdquo; gross ist die Abweichung vom Durchschnitt von gross) Beispielrechnung mit dem Schiffedatensatz aus der Wiki 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # Datensatz einlesen: schiffe \u0026lt;- read.csv(\u0026#39;/home/stephan/schiffe.csv\u0026#39; , header= TRUE , sep=\u0026#39;;\u0026#39; , dec=\u0026#39;,\u0026#39; ) \u0026gt; summary(schiffe$Breite) Min. 1st Qu. Median Mean 3rd Qu. Max. 8.60 13.00 17.50 19.57 27.75 39.00 \u0026gt; summary(schiffe$Länge) Min. 1st Qu. Median Mean 3rd Qu. Max. 85.0 128.5 174.0 164.9 190.0 271.0 # Wir sind faul und sehen uns nur die ersten 10 Schiffe an \u0026gt; faul \u0026lt;- head(schiffe , 10 ) \u0026gt; summary(faul$Breite) Min. 1st Qu. Median Mean 3rd Qu. Max. 13.00 20.25 31.00 26.00 31.75 32.00 \u0026gt; summary(faul$Länge) Min. 1st Qu. Median Mean 3rd Qu. Max. 137.0 188.2 194.0 202.6 224.2 262.0 Tabelle 1 2 3 4 5 6 kable(data.frame(faul$Breite , mean(faul$Breite) , faul$Breite - mean(faul$Breite) , (faul$Breite - mean(faul$Breite))^2 ,faul$Länge, mean(faul$Länge),faul$Länge - mean(faul$Länge), (faul$Länge - mean(faul$Länge))^2 , (faul$Breite - mean(faul$Breite))*(faul$Länge - mean(faul$Länge))) , format=\u0026#34;markdown\u0026#34; , col.names =c(\u0026#34;B\u0026#34; , \u0026#39;mean(B)\u0026#39; , \u0026#34;diff\u0026#34;, \u0026#34;diff^2\u0026#34;, \u0026#34;L\u0026#34; , \u0026#34;mean(L)\u0026#34; , \u0026#34;diff\u0026#34; , \u0026#34;diff^2\u0026#34; ,\u0026#34;Produkt\u0026#34;)) B mean(B) diff diff^2 L mean(L) diff diff^2 Produkt 31 26 5 25 187 203 -15.6 243 -78 31 26 5 25 242 203 39.4 1552 197 32 26 6 36 262 203 59.4 3528 356 32 26 6 36 216 203 13.4 180 80 32 26 6 36 195 203 -7.6 58 -46 31 26 5 25 227 203 24.4 595 122 20 26 -6 36 193 203 -9.6 92 58 17 26 -9 81 175 203 -27.6 762 248 21 26 -5 25 192 203 -10.6 112 53 13 26 -13 169 137 203 -65.6 4303 853 So wenn wir davon den Korrelationskoeffizienten berechnen wollen müssen wir für jede Werte das Produkt aus Breite-Mean(breite) und Länge-Mean(Länge) berechnen und aufsummieren und dann den Durchschnitt ziehen:\n1 2 3 4 5 6 7 \u0026gt; (faul$Breite - mean(faul$Breite)) * (faul$Länge -mean(faul$Länge)) [1] -78 197 356 80 -46 122 58 248 53 853 \u0026gt; sum( (faul$Breite - mean(faul$Breite)) * (faul$Länge -mean(faul$Länge))) [1] 1844 \u0026gt; mean ((faul$Breite - mean(faul$Breite)) * (faul$Länge -mean(faul$Länge))) [1] 184 Dann das durch das Produkt der Standardabweichungen teilen:\n1 2 3 4 5 6 7 8 \u0026gt; sd(faul$Breite) [1] 7.4 \u0026gt; sd (faul$Länge) [1] 36 \u0026gt; sd(faul$Breite)* sd(faul$Länge) [1] 264 \u0026gt; 184/264 [1] 0.7 Direkt in R ausgerechnet:\n1 2 \u0026gt; cor(faul$Breite, faul$Länge) [1] 0.78 Links Varianz in der Wikipedia Standardabweichung in der Wikipedia Korrelationskoeffizient in der Wiki Datensatz Schiffe aus der Wiki Bessels Correction aus der Wiki ","permalink":"https://www.weissenrieder.net/posts/2016-12-02-korrelation-standardabweichung-mit-r/","summary":"\u003ch2 id=\"was-ist-was\"\u003eWas ist was:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarianz: Berechne die  Differenz des Wertes zum Durchschnitt im Quadrat,\nsummiere für alle Werte. Bilde dann den Durchschnitt.  Hm. für unbiased wird\nnicht der Durchschnitt sondern geteilt\ndurch n-1 genommen, man nennt das Bessel\u0026rsquo;s correction\u003c/li\u003e\n\u003cli\u003eStandardabweichung: Quadratwurzel der Varianz, meist Sigma.\u003c/li\u003e\n\u003cli\u003eKorrelations-Koeffizienten:\n\u003cul\u003e\n\u003cli\u003eMass für den Linearen Zusammenhang zwischen 2 Variablen\u003c/li\u003e\n\u003cli\u003eWert zwischen -1 und 1.\n\u003cul\u003e\n\u003cli\u003e1=\u0026gt; Beide Variabelen hängen linear zusammen\u003c/li\u003e\n\u003cli\u003e-1=\u0026gt; Beide Variablen hängen negativ linear zusammen (d.h eine Steigerung der\neinen führt zu einer Minderung der anderen\u003c/li\u003e\n\u003cli\u003e0 =\u0026gt; kein Zusammenhang zwischen den Variablen\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMultipliziere die Abweichung von  X vom mean(X) mit der\nAbweichung  von Y von mean(Y) am gleichen Punkt. Bilde dann die Summe dieser\nProdukte aller Variablen . Teile das ganze durch das Produkt der\nStandardabweichungen. Überlegung hierzu: Wir versuchen einen Zusammenhang\nzwischen der Länge und der Breite eines Schiffes zu finden. Wenn das Schiff\nnun eine grosse Abweichung vom Durchschnitt in der Länge hat, sollte es, so\ndiese mit der Breite korreliert auch eine grosse Abweichung vom Durchschnitt\nin der Länge haben. (Wenn ein Schiff \u0026ldquo;besonders\u0026rdquo; gross ist, ist es auch\n\u0026ldquo;besonders\u0026rdquo; breit. \u0026ldquo;besonders\u0026rdquo; gross ist die Abweichung vom Durchschnitt von\ngross)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"beispielrechnung-mit-dem-schiffedatensatz-aus-der-wiki\"\u003eBeispielrechnung mit dem Schiffedatensatz aus der Wiki\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 1\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 2\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 3\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 4\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 5\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 6\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 7\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 8\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e 9\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e10\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e11\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e12\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e13\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e14\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e15\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e16\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e17\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-R\" data-lang=\"R\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#8a93a5;font-style:italic\"\u003e# Datensatz einlesen:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#aa89ea\"\u003eschiffe\u003c/span\u003e \u003cspan style=\"color:#54b1c7\"\u003e\u0026lt;-\u003c/span\u003e \u003cspan style=\"color:#00b1f7\"\u003eread.csv\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#98c379\"\u003e\u0026#39;/home/stephan/schiffe.csv\u0026#39;\u003c/span\u003e \u003cspan style=\"color:#abb2bf\"\u003e,\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eheader\u003c/span\u003e\u003cspan style=\"color:#54b1c7\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e5c07b\"\u003eTRUE\u003c/span\u003e \u003cspan style=\"color:#abb2bf\"\u003e,\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003esep\u003c/span\u003e\u003cspan style=\"color:#54b1c7\"\u003e=\u003c/span\u003e\u003cspan style=\"color:#98c379\"\u003e\u0026#39;;\u0026#39;\u003c/span\u003e \u003cspan style=\"color:#abb2bf\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#aa89ea\"\u003edec\u003c/span\u003e\u003cspan style=\"color:#54b1c7\"\u003e=\u003c/span\u003e\u003cspan style=\"color:#98c379\"\u003e\u0026#39;,\u0026#39;\u003c/span\u003e \u003cspan style=\"color:#abb2bf\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e \u003cspan style=\"color:#54b1c7\"\u003e\u0026gt;\u003c/span\u003e \u003cspan style=\"color:#00b1f7\"\u003esummary\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003eschiffe\u003c/span\u003e\u003cspan style=\"color:#54b1c7\"\u003e$\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003eBreite\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   \u003cspan style=\"color:#aa89ea\"\u003eMin.\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003est\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e  \u003cspan style=\"color:#aa89ea\"\u003eMedian\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMean\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e3\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003erd\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMax.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   \u003cspan style=\"color:#d19a66\"\u003e8.60\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e13.00\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e17.50\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e19.57\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e27.75\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e39.00\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e \u003cspan style=\"color:#54b1c7\"\u003e\u0026gt;\u003c/span\u003e \u003cspan style=\"color:#00b1f7\"\u003esummary\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003eschiffe\u003c/span\u003e\u003cspan style=\"color:#54b1c7\"\u003e$\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003eLänge\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMin.\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003est\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e  \u003cspan style=\"color:#aa89ea\"\u003eMedian\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMean\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e3\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003erd\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMax.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#d19a66\"\u003e85.0\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e128.5\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e174.0\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e164.9\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e190.0\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e271.0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\t\u003cspan style=\"color:#8a93a5;font-style:italic\"\u003e# Wir sind faul und sehen uns nur die ersten 10 Schiffe an\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e \u003cspan style=\"color:#54b1c7\"\u003e\u0026gt;\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003efaul\u003c/span\u003e \u003cspan style=\"color:#54b1c7\"\u003e\u0026lt;-\u003c/span\u003e \u003cspan style=\"color:#00b1f7\"\u003ehead\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003eschiffe\u003c/span\u003e \u003cspan style=\"color:#abb2bf\"\u003e,\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e10\u003c/span\u003e \u003cspan style=\"color:#abb2bf\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e \u003cspan style=\"color:#54b1c7\"\u003e\u0026gt;\u003c/span\u003e \u003cspan style=\"color:#00b1f7\"\u003esummary\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003efaul\u003c/span\u003e\u003cspan style=\"color:#54b1c7\"\u003e$\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003eBreite\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   \u003cspan style=\"color:#aa89ea\"\u003eMin.\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003est\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e  \u003cspan style=\"color:#aa89ea\"\u003eMedian\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMean\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e3\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003erd\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMax.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   \u003cspan style=\"color:#d19a66\"\u003e13.00\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e20.25\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e31.00\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e26.00\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e31.75\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e32.00\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#54b1c7\"\u003e\u0026gt;\u003c/span\u003e \u003cspan style=\"color:#00b1f7\"\u003esummary\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003efaul\u003c/span\u003e\u003cspan style=\"color:#54b1c7\"\u003e$\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003eLänge\u003c/span\u003e\u003cspan style=\"color:#abb2bf\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   \u003cspan style=\"color:#aa89ea\"\u003eMin.\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003est\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e  \u003cspan style=\"color:#aa89ea\"\u003eMedian\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMean\u003c/span\u003e \u003cspan style=\"color:#d19a66\"\u003e3\u003c/span\u003e\u003cspan style=\"color:#aa89ea\"\u003erd\u003c/span\u003e \u003cspan style=\"color:#aa89ea\"\u003eQu.\u003c/span\u003e    \u003cspan style=\"color:#aa89ea\"\u003eMax.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e   \u003cspan style=\"color:#d19a66\"\u003e137.0\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e188.2\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e194.0\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e202.6\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e224.2\u003c/span\u003e   \u003cspan style=\"color:#d19a66\"\u003e262.0\u003c/span\u003e \n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cp\u003e\u003cimg alt=\"Länge / Breite aus dem Schiffsdatensatz\" loading=\"lazy\" src=\"%7B%7Bsite.url%7D%7D%7B%7Bsite.baseurl%7D%7D/bilder/breite_laenge.png\"\u003e\u003c/p\u003e","title":"Standardabweichung und Korrelation mit R Berechnen"},{"content":"Eine kleine Anleitung für Git\nErstellen eines Git Repros Erzeugen mit:\n1 #\u0026gt; git init Vom Server holen mit:\n1 #\u0026gt; git clone remote user@server:path Abgleich hochschieben git push herunterladen git pull lokales repository mit einem Remote Repository verbinden git remote add origin user@server:path Neues Git Repository anlegen und mit vorhanden Daten befüllen Szenario: Ich habe ein bißchen Sourcecode und möchte den jetzt in ein Git Repository wandeln.\nAuf dem Git Server wird dazu folgendes gemacht\n1 2 3 4 scotty:/home/git # mkdir test2.git scotty:/home/git # cd test2.git/ scotty:/home/git/test2.git # git init --bare Initialisierte leeres Git-Projektarchiv in /home/git/test2.git/ D.h. Zuerst wird ein leeres Verzeichnis angelegt, anschliessend in dieses Verzeichniss gewechselt und dieses dann zu einem git Verzeichnis gemacht. Wenn man einen extra User hat (z.B git), sollte man das entweder unter diesem User tun, oder dem User Schreibreichte auf die Dateien und das erzeugte Verzeichnis geben.\nAuf dem Client mit dem vorhandenem Projektverzeichniss:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ~/Dokumente/ct/ $\u0026gt; git init Initialisierte leeres Git-Projektarchiv in /home/stephan/Dokumente/ct/.git/ ~/Dokumente/ct/ $\u0026gt; git add * ~/Dokumente/ct/ $\u0026gt; git commit -m \u0026#39;Initiales Commit\u0026#39; ~/Dokumente/ct/ $\u0026gt; # git =\u0026gt; der Remote User, # #\u0026gt; scotty Remote Server # test2.git remote Verzeichnis ~/Dokumente/ct/ $\u0026gt; git remote add origin git@scotty:test2.git ~/Dokumente/ct/ $\u0026gt; git push --set-upstream origin master ~/Dokumente/ct/ $\u0026gt; git push Counting objects: 141, done. Delta compression using up to 4 threads. Compressing objects: 100% (132/132), done. Writing objects: 100% (141/141), 111.36 KiB, done. Total 141 (delta 32), reused 0 (delta 0) To git@scotty:test2.git * [new branch] master -\u0026gt; master Branch master set up to track remote branch master from origin. Dieses Verzeichnis woanders wieder auschecken: 1 2 3 4 5 6 7 8 /tmp/ $\u0026gt; git clone git@scotty:test2.git Klone nach \u0026#39;test2\u0026#39;... remote: Counting objects: 141, done. remote: Compressing objects: 100% (100/100), done. remote: Total 141 (delta 32), reused 141 (delta 32) Empfange Objekte: 100% (141/141), 111.36 KiB, done. Löse Unterschiede auf: 100% (32/32), done. /tmp/ $\u0026gt; Änderungen einchecken und hochladen: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /tmp/test2/myapp/ $\u0026gt; git rm \\#schema.sql\\# rm \u0026#39;myapp/#schema.sql#\u0026#39; /tmp/test2/myapp/ $\u0026gt; git commit -m \u0026#39;Emacs Datei entfernt\u0026#39; \\#schema.sql\\# [master 10239e6] Emacs Datei entfernt 1 file changed, 10 deletions(-) delete mode 100644 myapp/#schema.sql# /tmp/test2/myapp/ $\u0026gt; git push Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 285 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To git@scotty:test2.git 884b80a..10239e6 master -\u0026gt; master /tmp/test2/myapp/ $\u0026gt; Änderungen in anderem Verzeichnis übernehmen: 1 2 3 4 ~/Dokumente/ct/ $\u0026gt; git log commit 884b80a9467b48837b8a120a176ec15ce36da921 Author: Stephan Weissenrieder \u0026lt;sw@nutzerverwaltung.de\u0026gt; Date: Thu Apr 4 14:23:24 2013 +0200 Initiales Einchecken\n1 2 3 4 5 6 7 8 9 10 11 ~/Dokumente/ct/ $\u0026gt; git pull remote: Counting objects: 5, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. Von scotty:test2 884b80a..10239e6 master -\u0026gt; origin/master Aktualisiere 884b80a..10239e6 Fast-forward myapp/#schema.sql# | 10 ---------- 1 file changed, 10 deletions(-) ","permalink":"https://www.weissenrieder.net/posts/2016-12-01-git-cheat-sheet/","summary":"\u003cp\u003eEine kleine Anleitung für Git\u003c/p\u003e\n\u003ch2 id=\"erstellen-eines-git-repros\"\u003eErstellen eines Git Repros\u003c/h2\u003e\n\u003cp\u003eErzeugen mit:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e1\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#8a93a5;font-style:italic\"\u003e#\u0026gt; git init \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cp\u003eVom Server holen mit:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f\"\u003e1\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#8a93a5;font-style:italic\"\u003e#\u0026gt; git clone remote user@server:path \u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003ch2 id=\"abgleich\"\u003eAbgleich\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ehochschieben \u003ccode\u003egit push \u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eherunterladen \u003ccode\u003egit pull\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003elokales repository mit einem Remote Repository verbinden \u003ccode\u003e git remote add origin user@server:path\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"neues-git-repository-anlegen-und-mit-vorhanden-daten-befüllen\"\u003eNeues Git Repository anlegen und mit vorhanden Daten befüllen\u003c/h2\u003e\n\u003cp\u003eSzenario: Ich habe ein bißchen Sourcecode und möchte den jetzt in ein Git\nRepository wandeln.\u003c/p\u003e","title":"Git Cheat Sheet"},{"content":"YAPC::Europe 2013 \u0026ldquo;No, I\u0026rsquo;m not going to explain it. If you can\u0026rsquo;t figure it out, you didn\u0026rsquo;t want to know anyway… :-)\u0026rdquo;\nLarry Wall\nYAPC Europe 2013 Vorträge Bread::Board by example Monitoring with Perl and Unix::Statgrab How to speak manager Youtube Ein perl cron Ersatz YAPC Europe 2013 Ideen: 0MQ Things I learned at YAPC::Europe 2013 in Kiev YAPC NA - Youtube Kanal: http://www.youtube.com/yapcna Neuer Youtube Kanal ","permalink":"https://www.weissenrieder.net/posts/2013-08-13/2013-08-13-yapc-europe/","summary":"\u003ch1 id=\"yapceurope-2013\"\u003eYAPC::Europe 2013\u003c/h1\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;No, I\u0026rsquo;m not going to explain it. If you can\u0026rsquo;t figure it out, you didn\u0026rsquo;t want to know anyway… :-)\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eLarry Wall\u003c/p\u003e\n\u003ch1 id=\"yapc-europe-2013-vorträge\"\u003eYAPC Europe 2013 Vorträge\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"http://act.yapc.eu/ye2013/talk/4850\"\u003eBread::Board by example\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://act.yapc.eu/ye2013/talk/4909\"\u003eMonitoring with Perl and Unix::Statgrab\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://act.yapc.eu/ye2013/talk/4860\"\u003eHow to speak manager \u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.youtube.com/watch?v=fUwY3K35yAc\"\u003eYoutube Ein perl cron Ersatz\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"yapc-europe-2013-ideen\"\u003eYAPC Europe 2013 Ideen:\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"http://zguide.zeromq.org/page:all\"\u003e0MQ\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://domm.plix.at/perl/2013_08_things_i_learned_at_yapc_europe_2013.html\"\u003eThings I learned at YAPC::Europe 2013 in Kiev\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"yapc-na---youtube-kanal\"\u003eYAPC NA - Youtube Kanal:\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"http://www.youtube.com/yapcna\"\u003ehttp://www.youtube.com/yapcna\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.youtube.com/user/yapctv/videos\"\u003eNeuer Youtube Kanal\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","title":"Vorträge dich ich gerne auf der YAPC::Europe 2013 gesehen hätte"},{"content":"Xargs Cheatsheet Xargs Cheatsheet - unter anderen als \u0026ldquo;poor mans parallel\u0026rdquo;\nXargs als \u0026ldquo;Pivot Tabelle\u0026rdquo; (Nutzt hier aus das der default Befehl von Xargs echo ist):\nls |xargs Xargs mit Kommandos welche den Dateinamen nicht als letztes Argument verwenden (z.B scp)\nfind . -... -print0 |xargs -0 -i{} scp \u0026quot;{}\u0026quot; root@wohin_auch_immer:/ Leerzeichen, Sonderzeichen und der ganze Rest -0\nfind .. -print0 |xargs -0 Xargs zur parallel Ausführung:\nfind . -... -print0 |xargs -0 -P 12 -i{} scp \u0026quot;{}\u0026quot; root@wohin_auch_immer:/ Das ist wirklich \u0026ldquo;poor mans parallel\u0026rdquo;, für sowas sollte man wohl fast immer ts Task Spooler oder Gnu parallel verwenden.\nWieviel Bytes kann ich den so auf der Kommandozeile verarbeiten:\nxargs --show-limits der zeitlose Klassiker - xargs mit find\nfind . -type f -name \u0026quot;*.pl\u0026quot; -print0 |xargs -0 grep 'use strict' /dev/null find . -type f -mtime +1 -print0 |xargs -no-run-if-emtpy -0 rm -f Hier beschäftigt sich Chris Siebenmann noch mit \u0026ndash;no-run-if-emtpy.\n","permalink":"https://www.weissenrieder.net/posts/2013-04-24-xargs-poor-mans-parallel/","summary":"\u003ch1 id=\"xargs-cheatsheet\"\u003eXargs Cheatsheet\u003c/h1\u003e\n\u003cp\u003eXargs Cheatsheet - unter anderen als \u003cem\u003e\u0026ldquo;poor mans parallel\u0026rdquo;\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eXargs als \u003cem\u003e\u0026ldquo;Pivot Tabelle\u0026rdquo;\u003c/em\u003e (Nutzt hier aus das der default Befehl von Xargs echo ist):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e    ls |xargs \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eXargs mit Kommandos welche den Dateinamen nicht als letztes Argument verwenden (z.B scp)\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e   find . -... -print0 |xargs -0 -i{} scp \u0026quot;{}\u0026quot; root@wohin_auch_immer:/\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLeerzeichen, Sonderzeichen und der ganze Rest -0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e   find .. -print0 |xargs -0 \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eXargs zur parallel Ausführung:\u003c/p\u003e","title":"Xargs Poor Mans Parallel"}]