<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Technik Howtos]]></title><description><![CDATA[Technik Howtos]]></description><link>https://blog.mastersven.ddnss.de/</link><image><url>https://blog.mastersven.ddnss.de/favicon.png</url><title>Technik Howtos</title><link>https://blog.mastersven.ddnss.de/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Mon, 20 Apr 2026 11:34:05 GMT</lastBuildDate><atom:link href="https://blog.mastersven.ddnss.de/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Raspi mittels SSD starten]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://tutorials-raspberrypi.de/raspberry-pi-usb-boot-per-stick-ssd-einrichten/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Raspberry Pi: USB Boot per Stick oder SSD Festplatte einrichten</div><div class="kg-bookmark-description">Raspberry Pi per USB Stick oder SSDs booten lassen: Backups, Einrichtung und zuk&#xFC;nftige Updates - worauf ist zu achten? Festplatten sind langlebiger als SD Karten.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://tutorials-raspberrypi.de/wp-content/uploads/cropped-rpi-favicon-270x270.png" alt><span class="kg-bookmark-author">Tutorials for Raspberry Pi</span><span class="kg-bookmark-publisher">Felix</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://tutorials-raspberrypi.de/wp-content/uploads/Raspberry-Pi-USB-Boot-per-Stick-oder-SSD-Festplatte-einrichten.jpg" alt></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-debian-10-de"><div class="kg-bookmark-content"><div class="kg-bookmark-title">So installieren Sie Docker Compose unter Debian 10</div></div></a></figure>]]></description><link>https://blog.mastersven.ddnss.de/raspi-mittels-ssd-starten/</link><guid isPermaLink="false">63bde4db3b8eb3000190b5f3</guid><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Tue, 10 Jan 2023 22:22:14 GMT</pubDate><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://tutorials-raspberrypi.de/raspberry-pi-usb-boot-per-stick-ssd-einrichten/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Raspberry Pi: USB Boot per Stick oder SSD Festplatte einrichten</div><div class="kg-bookmark-description">Raspberry Pi per USB Stick oder SSDs booten lassen: Backups, Einrichtung und zuk&#xFC;nftige Updates - worauf ist zu achten? Festplatten sind langlebiger als SD Karten.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://tutorials-raspberrypi.de/wp-content/uploads/cropped-rpi-favicon-270x270.png" alt><span class="kg-bookmark-author">Tutorials for Raspberry Pi</span><span class="kg-bookmark-publisher">Felix</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://tutorials-raspberrypi.de/wp-content/uploads/Raspberry-Pi-USB-Boot-per-Stick-oder-SSD-Festplatte-einrichten.jpg" alt></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-debian-10-de"><div class="kg-bookmark-content"><div class="kg-bookmark-title">So installieren Sie Docker Compose unter Debian 10 | DigitalOcean</div><div class="kg-bookmark-description">Docker ist ein hervorragendes Tool zur Automatisierung der Bereitstellung von Linux-Anwendungen in Software-Containern. Um jedoch das volle Potenzial dieser &#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.digitalocean.com/_next/static/media/android-chrome-512x512.5f2e6221.png" alt><span class="kg-bookmark-author">DigitalOcean</span><span class="kg-bookmark-publisher">Kathleen Juell</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.digitalocean.com/_next/static/media/intro-to-cloud.d49bc5f7.jpeg" alt></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/oznu/docker-homebridge/issues/434"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Since 4-23-2022 image container won&#x2019;t start with s6-overlay-suexec: fatal: can only run as pid 1 &#xB7; Issue #434 &#xB7; oznu/docker-homebridge</div><div class="kg-bookmark-description">Describe Your Problem: Since latest version pushed to Docker Hub yesterday, container wont start for me with message s6-overlay-suexec: fatal: can only run as pid 1. Rolling back to previous tag fo...</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">oznu</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/1acab166e2e9ac251330adce135951ff73783f7a94c84bbf3f5ed24faec0dd1f/oznu/docker-homebridge/issues/434" alt></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://withblue.ink/2020/06/24/docker-and-docker-compose-on-raspberry-pi-os.html"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Docker and Docker Compose on Raspberry Pi OS | With Blue Ink</div><div class="kg-bookmark-description">How to install Docker on RPi 2, 3 and 4 with the new Raspberry Pi OS, for 32 and 64-bit</div><div class="kg-bookmark-metadata"><span class="kg-bookmark-author">With Blue Ink</span><span class="kg-bookmark-publisher">Alessandro Segala</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://withblue.ink/images/docker-rpi/_cover.jpg" alt></div></a></figure><p>docke</p>]]></content:encoded></item><item><title><![CDATA[Vodafone Bridgemode Fritz!Box 6660 Cable]]></title><description><![CDATA[<p>Als n&#xE4;chstes habe ich eine neue Fritz!Box 6660 besorgt und die config Datei bearbeitet. Folgendes habe ich eingestellt:<br><br>lanbridges_gui_hidden = yes; ---&gt; lanbridges_gui_hidden = no;<br>erouter_enabled = yes; ---&gt; erouter_enabled = no;<br><br>Die Checksum habe ich noch anpassen m&#xFC;ssen in der</p>]]></description><link>https://blog.mastersven.ddnss.de/vodafone-bridgemode-fritz-box-6660-cable/</link><guid isPermaLink="false">6052523f29e20c0001f7b0a8</guid><category><![CDATA[Vodafone]]></category><category><![CDATA[Bridgemode]]></category><category><![CDATA[6660]]></category><category><![CDATA[Fritz!Box]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Wed, 17 Mar 2021 19:07:08 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1606814540563-5c02d62fd409?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDZ8fGZpYnJlfGVufDB8fHx8MTYxNjAwNzk4Mw&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1606814540563-5c02d62fd409?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDZ8fGZpYnJlfGVufDB8fHx8MTYxNjAwNzk4Mw&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" alt="Vodafone Bridgemode Fritz!Box 6660 Cable"><p>Als n&#xE4;chstes habe ich eine neue Fritz!Box 6660 besorgt und die config Datei bearbeitet. Folgendes habe ich eingestellt:<br><br>lanbridges_gui_hidden = yes; ---&gt; lanbridges_gui_hidden = no;<br>erouter_enabled = yes; ---&gt; erouter_enabled = no;<br><br>Die Checksum habe ich noch anpassen m&#xFC;ssen in der Datei. <br>Das geht hier recht gut:</p><p><br><a href="http://www.mengelke.de/Projekte/FritzBoxJSTool">http://www.mengelke.de/Projekte/FritzBoxJSTool</a><br><br>Dann die config wieder in die Fritz!Box gespielt und neu gestartet.<br><br>Dann Internet--&gt;Zugangsdaten--&gt;Bridgeanschluss Lan 4 und 2 ausgew&#xE4;hlt. 2 war ein versehen. Aber ich erw&#xE4;hne es mal.<br>Jetzt den WAN der UDM Pro mit dem LAN 5 verbinden. ( die Beschriftung im gut und auf der box passen nicht zusammen. )<br><br>Im UDM Pro dann in WAN noch das Pr&#xE4;fix auf 56 gestellt und, warum auch immer, unten einen ipv4 DNS Server eingetragen.</p><p>Quelle:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.vodafonekabelforum.de/viewtopic.php?t=43289"><div class="kg-bookmark-content"><div class="kg-bookmark-title">[VFKD] Fritz!Box 6660 Bridge mode Dual Stack - Inoffizielles Vodafone-Kabel-Forum</div><div class="kg-bookmark-description">Das inoffizielle Vodafone-Kabel-Forum ist eine Support- und Diskussionsplattform rund um den Kabelnetzbetreiber Vodafone Kabel Deutschland bzw. Vodafone West (ehem. Unitymedia).</div><div class="kg-bookmark-metadata"><span class="kg-bookmark-author">Inoffizielles Vodafone-Kabel-Forum</span><span class="kg-bookmark-publisher">Beitrag von theranione &#xBB; 05.12.2020, 19:49</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.vodafonekabelforum.de/images/header/head_kabelbw.gif" alt="Vodafone Bridgemode Fritz!Box 6660 Cable"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Docker auf Ubuntu 20.04]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-de"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Installieren und Verwenden von Docker unter Ubuntu 20.04 | DigitalOcean</div><div class="kg-bookmark-description">Docker ist eine Anwendung, die die Verwaltung von Anwendungsprozessen in Containern vereinfacht. In Containern k&#xF6;nnen Anwendungen in ressourcenisolierten Prozessen ausgef&#xFC;hrt werden. Container &#xE4;hneln virtuellen Computern, sind jedoch besser&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.digitalocean.com/assets/community/android-icon-192x192-4d13e6664f412f6904a78be76d626004bcbbd59671f6c755919628134003c2a8.png"><span class="kg-bookmark-author">DigitalOcean</span><span class="kg-bookmark-publisher">Brian Hogan</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.digitalocean.com/assets/community/illustrations/DigitalOcean_Community-e00e73a18df20667c3117725e727f3ade330204dff619ad8153050ded7341627.jpg"></div></a></figure>]]></description><link>https://blog.mastersven.ddnss.de/untitled/</link><guid isPermaLink="false">600c1ff4708b880001b84e4f</guid><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Fri, 05 Feb 2021 16:54:25 GMT</pubDate><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-de"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Installieren und Verwenden von Docker unter Ubuntu 20.04 | DigitalOcean</div><div class="kg-bookmark-description">Docker ist eine Anwendung, die die Verwaltung von Anwendungsprozessen in Containern vereinfacht. In Containern k&#xF6;nnen Anwendungen in ressourcenisolierten Prozessen ausgef&#xFC;hrt werden. Container &#xE4;hneln virtuellen Computern, sind jedoch besser&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.digitalocean.com/assets/community/android-icon-192x192-4d13e6664f412f6904a78be76d626004bcbbd59671f6c755919628134003c2a8.png"><span class="kg-bookmark-author">DigitalOcean</span><span class="kg-bookmark-publisher">Brian Hogan</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.digitalocean.com/assets/community/illustrations/DigitalOcean_Community-e00e73a18df20667c3117725e727f3ade330204dff619ad8153050ded7341627.jpg"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Gitmigration]]></title><description><![CDATA[<!--kg-card-begin: markdown--><pre><code>git clone --mirror &lt;url_of_old_repo&gt;
cd &lt;name_of_old_repo&gt;
git remote add new-origin &lt;url_of_new_repo&gt;
git push new-origin --mirror
</code></pre>
<!--kg-card-end: markdown-->]]></description><link>https://blog.mastersven.ddnss.de/git-zu-neuen-server/</link><guid isPermaLink="false">6003096d4c14f90001fa7cd7</guid><category><![CDATA[git]]></category><category><![CDATA[C#]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Thu, 14 Jan 2021 08:48:26 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1556075798-4825dfaaf498?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MXwxMTc3M3wwfDF8c2VhcmNofDR8fEdpdHxlbnwwfHx8&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><pre><code>git clone --mirror &lt;url_of_old_repo&gt;
cd &lt;name_of_old_repo&gt;
git remote add new-origin &lt;url_of_new_repo&gt;
git push new-origin --mirror
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Raspi als VPN Gateway mit Policy Based VPN Routing]]></title><description><![CDATA[<ol><li>Anlage WAN Interface -&gt; eth1</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image.png" class="kg-image" alt loading="lazy"></figure><p>2. &#xC4;ndern die IP des LAN Interfaces, weg von 192.168.1.1 <br>z.B. auf 192.168.111.1</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-1.png" class="kg-image" alt loading="lazy"></figure><p>Im Anschluss ein neues Netzwerk Interface anlegen.</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-2.png" class="kg-image" alt loading="lazy"></figure><p>-------------------------------------------------------------------------&#x2014;</p><p><strong>VPN Konfigurieren</strong><br>Hochladen der OpenVPN Konfiguration</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-7.png" class="kg-image" alt loading="lazy"></figure><p>Hinterlegen der Anmeldedatei und im unteren Feld die</p>]]></description><link>https://blog.mastersven.ddnss.de/raspi-als-vpn-gateway-mit-policy-based-vpn-routing/</link><guid isPermaLink="false">6003096d4c14f90001fa7cd5</guid><category><![CDATA[VPN]]></category><category><![CDATA[Openvpn]]></category><category><![CDATA[Routing]]></category><category><![CDATA[Raspberry Pi]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Wed, 28 Oct 2020 21:06:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1591719316521-6c9795c6cdaa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MXwxMTc3M3wwfDF8c2VhcmNofDE1fHxyYXNwYmVycnklMjBwaXxlbnwwfHx8&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" medium="image"/><content:encoded><![CDATA[<ol><li>Anlage WAN Interface -&gt; eth1</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure><img src="https://images.unsplash.com/photo-1591719316521-6c9795c6cdaa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MXwxMTc3M3wwfDF8c2VhcmNofDE1fHxyYXNwYmVycnklMjBwaXxlbnwwfHx8&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080" alt="Raspi als VPN Gateway mit Policy Based VPN Routing"><p>2. &#xC4;ndern die IP des LAN Interfaces, weg von 192.168.1.1 <br>z.B. auf 192.168.111.1</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-1.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure><p>Im Anschluss ein neues Netzwerk Interface anlegen.</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-2.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure><p>-------------------------------------------------------------------------&#x2014;</p><p><strong>VPN Konfigurieren</strong><br>Hochladen der OpenVPN Konfiguration</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-7.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure><p>Hinterlegen der Anmeldedatei und im unteren Feld die Anmelde Daten<br>1. Zeile. Benutzername<br>2. Zeile Kennwort</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-8.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure><p>VPN auf Enable stellen und starten.</p><p>DNS Anpassen, Domainname damit alles um mhk.local erweitert wird und zus&#xE4;tzlich den DNS Sever 192.168.1.2 f&#xFC;r mhk.local hinterlegen</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-3.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure><p>Zum Schluss VPN Policy-Based Routing definieren und aktiveren und starten.<br>Alle Netze / IP Adressen, URLS die durch das VPN laufen sollen m&#xFC;ssen hier eingetragen werden.</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-5.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure><p><em><strong>Optional</strong></em><br>Firewall Regeln f&#xFC;rs VPN festlegen</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/10/image-9.png" class="kg-image" alt="Raspi als VPN Gateway mit Policy Based VPN Routing" loading="lazy"></figure>]]></content:encoded></item><item><title><![CDATA[Asterisk auf Hetzner Cloud Server]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Bei <a href="https://accounts.hetzner.com/login">Hetzner</a> einen Cloud Server anlegen.<br>
In meinem Fall habe ich mich f&#xFC;r den CPX11 entschieden mit Standort Falkenstein und dem Ubunto 18.0 Image.</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/04/image.png" class="kg-image" alt loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/04/image-1.png" class="kg-image" alt loading="lazy"></figure><!--kg-card-begin: markdown--><pre><code>aptitude install asterisk
aptitude install fail2ban
</code></pre>
<!--kg-card-end: markdown--><p>Asterisk und Fail2ban installiert. Fail2ban um ungebetene G&#xE4;ste zu bannen.</p><p>Dazu habe ich in der</p>]]></description><link>https://blog.mastersven.ddnss.de/asterisk-auf-hetzner-cloud-server/</link><guid isPermaLink="false">6003096d4c14f90001fa7cd4</guid><category><![CDATA[Asterisk]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[Fritz]]></category><category><![CDATA[Hetzner]]></category><category><![CDATA[Iphone]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Wed, 29 Apr 2020 12:38:41 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1450818074504-fb9713fe584e?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1450818074504-fb9713fe584e?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Asterisk auf Hetzner Cloud Server"><p>Bei <a href="https://accounts.hetzner.com/login">Hetzner</a> einen Cloud Server anlegen.<br>
In meinem Fall habe ich mich f&#xFC;r den CPX11 entschieden mit Standort Falkenstein und dem Ubunto 18.0 Image.</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/04/image.png" class="kg-image" alt="Asterisk auf Hetzner Cloud Server" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/04/image-1.png" class="kg-image" alt="Asterisk auf Hetzner Cloud Server" loading="lazy"></figure><!--kg-card-begin: markdown--><pre><code>aptitude install asterisk
aptitude install fail2ban
</code></pre>
<!--kg-card-end: markdown--><p>Asterisk und Fail2ban installiert. Fail2ban um ungebetene G&#xE4;ste zu bannen.</p><p>Dazu habe ich in der /etc/fail2ban/jail.conf<br>folgendes im <strong>[DEFAULT] </strong>hinterlegt:</p><!--kg-card-begin: markdown--><pre><code>nano /etc/fail2ban/jail.conf
</code></pre>
<pre><code>[DEFAULT]
bantime = 36h
findtime =100m
maxretry =4
backend =auto
</code></pre>
<p>zudem habe ich einen extra Eintrag f&#xFC;r den Asterisk hinzugef&#xFC;gt</p>
<pre><code>[asterisk-iptables]
# if more than 4 attempts are made within 6 hours, ban for 24 hours
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
              sendmail[name=ASTERISK, dest=you@yourmail.co.uk, sender=fail2ban@local.local]
logpath  = /var/log/asterisk/messages
maxretry = 4
findtime = 21600
bantime = 86400
</code></pre>
<!--kg-card-end: markdown--><p>Um zu pr&#xFC;fen welche IPs ggf gespeert wurden einfach mittels</p><!--kg-card-begin: markdown--><p>Um zu pr&#xFC;fen welche IPs ggf gesperrt wurden einfach mittels pr&#xFC;fen</p>
<pre><code>iptables -L -n
</code></pre>
<p>Im n&#xE4;chsten Step den Asterisk vorbereiten:</p>
<pre><code>mkdir /var/backup/Asterisk
cd /etc/asterisk/

mv sip.conf /var/backup/Asterisk/sip.conf
mv extensions.conf /var/backup/Asterisk/extensions.conf
mv voicemail.conf /var/backup/Asterisk/voicemail.conf
touch sip.conf
touch extensions.conf
touch voicemail.conf
</code></pre>
<pre><code>nano sip.conf
</code></pre>
<pre><code>[general]
language=de
port=5060
disallow=all
allow=g722
allow=alaw
allow=ulaw
allow=gsm
nat=no
canreinvite=no
bindaddr=0.0.0.0
transport=udp
sipdebug=no
allowguest=no
alwaysauthreject=yes

;Sipgate
register =&gt;**sipId**:**passwd**@sipgate.de/**sipId**
;FritzBox
register =&gt;**benutzername**:**password**@**dyndns.XX**/**benutzername**

[20]
type=friend
callerid=Sven &lt;20&gt;
secret=**1234**
host=dynamic
context=default

[21]
type=friend
secret=**1234**
host=dynamic
context=default

;Sipgate
[**sipId**]
type=friend
context=sipgate_in
username=**sipId**
fromuser=**sipId**
secret=**passwd**
host=sipgate.de
fromdomain=sipgate.de
qualify=yes
insecure=port,invite
nat=no

[fritzbox](!)
type=friend
directmedia = yes
host=fritz.box
port=5060
qualify=no
qualifyfreq=600
dtmfmode=rfc2833
fromdomain=fritz.box
insecure=port,invite
srvlookup=no

[**benutzername**](fritzbox)
type=friend
context=asterisk79_in
username=**benutzername**
fromuser=**benutzername**
secret=**passwd**
host=**dyndns**
</code></pre>
<p>als n&#xE4;chtest die <strong>extension.conf</strong></p>
<pre><code>nano extensions.conf
[default]
exten =&gt; _2X,1,Dial(SIP/${EXTEN},60)
exten =&gt; _2X,n,Voicemail(${EXTEN},u)

[sipgate_in]
exten =&gt; **sipId**,1,Dial(SIP/20)
exten =&gt; **sipId**,n,Hangup

[asterisk79_in]
exten =&gt; **benutzername**,1,Dial(SIP/20)
exten =&gt; **benutzername**,n,Hangup
</code></pre>
<p>jetzt noch die Voicemail</p>
<pre><code>[general]
format = gsm
maxmessage = 600

[default]
20 =&gt; 888,Sven
21 =&gt; 888,sonstige
</code></pre>
<!--kg-card-end: markdown--><p>3CX EInstellung f&#xFC;r FritzBOX</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/05/image.png" class="kg-image" alt="Asterisk auf Hetzner Cloud Server" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/05/image-1.png" class="kg-image" alt="Asterisk auf Hetzner Cloud Server" loading="lazy"></figure>]]></content:encoded></item><item><title><![CDATA[Canon SELPHY CP710 und Windows 10]]></title><description><![CDATA[<p>Die Datei <a href="https://hk.canon/en/support/0100224202">cp710w764</a>.exe &#xA0;herunterladen und ausf&#xFC;hren. Vor dem schlie&#xDF;en der folgenden Meldung </p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/01/image.png" class="kg-image" alt loading="lazy"></figure><p><br>die Dateien aus dem Verzeichnis kopieren und Sichern.</p><!--kg-card-begin: markdown--><p><code>%temp%\CanonUPW_000\INST\Windows7_64\CP710\DRIVER</code></p>
<!--kg-card-end: markdown--><p>Jetzt den Drucker manuell zum System hinzuf&#xFC;gen. USB Anschluss entsprechende ausw&#xE4;hlen. Bei</p>]]></description><link>https://blog.mastersven.ddnss.de/canon-selphy-cp710-und-windows-10/</link><guid isPermaLink="false">6003096d4c14f90001fa7cd1</guid><category><![CDATA[Canon]]></category><category><![CDATA[SELPHY]]></category><category><![CDATA[Windows]]></category><category><![CDATA[Treiber]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Sat, 18 Jan 2020 15:14:56 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1551781069-73a1da89e333?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1551781069-73a1da89e333?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Canon SELPHY CP710 und Windows 10"><p>Die Datei <a href="https://hk.canon/en/support/0100224202">cp710w764</a>.exe &#xA0;herunterladen und ausf&#xFC;hren. Vor dem schlie&#xDF;en der folgenden Meldung </p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2020/01/image.png" class="kg-image" alt="Canon SELPHY CP710 und Windows 10" loading="lazy"></figure><p><br>die Dateien aus dem Verzeichnis kopieren und Sichern.</p><!--kg-card-begin: markdown--><p><code>%temp%\CanonUPW_000\INST\Windows7_64\CP710\DRIVER</code></p>
<!--kg-card-end: markdown--><p>Jetzt den Drucker manuell zum System hinzuf&#xFC;gen. USB Anschluss entsprechende ausw&#xE4;hlen. Bei der Treiberauswahl auf die kopierten Daten gehen.</p>]]></content:encoded></item><item><title><![CDATA[Docker Befehlssammlung]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Alle Docker anzeigen</p>
<pre><code>docker ps -a
</code></pre>
<p>Docker system aufr&#xE4;umen. <strong>Achtung, es werden alle angehaltenen Docker gel&#xF6;scht</strong></p>
<pre><code>docker system prune -a
</code></pre>
<p>In die Bash eines Docker Containers</p>
<pre><code>docker exec -it [Dockercontainer] bash
</code></pre>
<p>Docker Compose</p>
<pre><code>docker-compose up -d
</code></pre>
<p>Docker Log ansehen</p>
<pre><code>docker logs [Dockercontainer]
</code></pre>
<!--kg-card-end: markdown-->]]></description><link>https://blog.mastersven.ddnss.de/docker-befehlssammlung/</link><guid isPermaLink="false">6003096d4c14f90001fa7ccf</guid><category><![CDATA[Docker]]></category><category><![CDATA[Raspberry Pi]]></category><category><![CDATA[Batch]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Wed, 01 Jan 2020 16:27:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1494412519320-aa613dfb7738?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1494412519320-aa613dfb7738?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Docker Befehlssammlung"><p>Alle Docker anzeigen</p>
<pre><code>docker ps -a
</code></pre>
<p>Docker system aufr&#xE4;umen. <strong>Achtung, es werden alle angehaltenen Docker gel&#xF6;scht</strong></p>
<pre><code>docker system prune -a
</code></pre>
<p>In die Bash eines Docker Containers</p>
<pre><code>docker exec -it [Dockercontainer] bash
</code></pre>
<p>Docker Compose</p>
<pre><code>docker-compose up -d
</code></pre>
<p>Docker Log ansehen</p>
<pre><code>docker logs [Dockercontainer]
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[.Net Core Anwendung auf Raspberry im Docker]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p><strong>.Net Core f&#xFC;r den Raspi</strong></p>
<pre><code>docker run --rm -it microsoft/dotnet:2.1-sdk
</code></pre>
<p><strong>Dockerfile anlegen</strong></p>
<pre><code>nano Dockerfile
</code></pre>
<p><strong>Dockerfile inhalt</strong></p>
<pre><code>FROM microsoft/dotnet:2.1-sdk
COPY . /app
WORKDIR /app
ENV ASPNETCORE_URLS http://*:7500
VOLUME [&quot;/app/Database&quot;,&quot;/app/wwwroot/Gallery&quot;]
EXPOSE 7500
ENTRYPOINT [&quot;dotnet&</code></pre>]]></description><link>https://blog.mastersven.ddnss.de/net-core-anwendung-auf-raspberry-im-docker/</link><guid isPermaLink="false">6003096d4c14f90001fa7cce</guid><category><![CDATA[Docker]]></category><category><![CDATA[C#]]></category><category><![CDATA[Raspberry Pi]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Sun, 22 Dec 2019 12:46:03 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p><strong>.Net Core f&#xFC;r den Raspi</strong></p>
<pre><code>docker run --rm -it microsoft/dotnet:2.1-sdk
</code></pre>
<p><strong>Dockerfile anlegen</strong></p>
<pre><code>nano Dockerfile
</code></pre>
<p><strong>Dockerfile inhalt</strong></p>
<pre><code>FROM microsoft/dotnet:2.1-sdk
COPY . /app
WORKDIR /app
ENV ASPNETCORE_URLS http://*:7500
VOLUME [&quot;/app/Database&quot;,&quot;/app/wwwroot/Gallery&quot;]
EXPOSE 7500
ENTRYPOINT [&quot;dotnet&quot;, &quot;kt.dll&quot;]
</code></pre>
<p><strong>Docker bauen</strong></p>
<pre><code>docker build -t klassentreffen .
</code></pre>
<p>Docker starten</p>
<pre><code>docker run -d --publish 7500:7500 --name klassentreffen --volume /home/pirate/klassentreffen/db:/app/Database:Z --volume /home/pirate/klassentreffen/gallery:/app/wwwroot/Gallery:Z --restart always klassentreffen:latest
</code></pre>
<p><strong>Alle Docker anzeigen</strong></p>
<pre><code>docker ps [-a]
</code></pre>
<p><strong>Docker aufr&#xE4;umen</strong></p>
<pre><code>docker system prune -a
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Gitlab auf Synology als Docker laufen lassen]]></title><description><![CDATA[<p>sudo docker run --detach <br>--hostname [DNSNAME]<br>--publish 20443:443 --publish 20080:80 --publish 20022:22 <br>--name gitlab <br>--restart always <br>--volume /volume1/docker/gitlab/config:/etc/gitlab:Z <br>--volume /volume1/docker/gitlab/logs:/var/log/gitlab:Z <br>--volume /volume1/docker/gitlab/data:/var/opt/gitlab:Z <br>gitlab/gitlab-ce:latest</p><p>Verwendet wird</p>]]></description><link>https://blog.mastersven.ddnss.de/gitlab-auf-synology-als-docker-laufen-lassen/</link><guid isPermaLink="false">6003096d4c14f90001fa7ccd</guid><category><![CDATA[git]]></category><category><![CDATA[gitlab]]></category><category><![CDATA[Code]]></category><category><![CDATA[Source]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Mon, 09 Dec 2019 19:07:32 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1531030874896-fdef6826f2f7?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1531030874896-fdef6826f2f7?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Gitlab auf Synology als Docker laufen lassen"><p>sudo docker run --detach <br>--hostname [DNSNAME]<br>--publish 20443:443 --publish 20080:80 --publish 20022:22 <br>--name gitlab <br>--restart always <br>--volume /volume1/docker/gitlab/config:/etc/gitlab:Z <br>--volume /volume1/docker/gitlab/logs:/var/log/gitlab:Z <br>--volume /volume1/docker/gitlab/data:/var/opt/gitlab:Z <br>gitlab/gitlab-ce:latest</p><p>Verwendet wird das folgende Docker Image</p><figure class="kg-card kg-image-card"><img src="https://blog.mastersven.ddnss.de/content/images/2019/12/image.png" class="kg-image" alt="Gitlab auf Synology als Docker laufen lassen" loading="lazy"></figure>]]></content:encoded></item><item><title><![CDATA[WPF Listview Sortable Datagrid]]></title><description><![CDATA[<p></p><!--kg-card-begin: markdown--><p>In der <code>&lt;ListView /&gt;</code> Event <code>GridViewColumnHeader.Click=&quot;&quot;</code></p>
<pre><code>        GridViewColumnHeader _lastHeaderClicked = null;
        ListSortDirection _lastDirection = ListSortDirection.Ascending;

        void GridViewColumnHeaderClickedHandler(object sender,
            RoutedEventArgs e)
        {
            var headerClicked = e.OriginalSource as GridViewColumnHeader;
            ListSortDirection direction;

            if (headerClicked != null)
            {
                if (headerClicked.Role != GridViewColumnHeaderRole.Padding)
                {
                    if (headerClicked != _lastHeaderClicked)
                    {
                        direction = ListSortDirection.Ascending;
                    }
                    else
                    {
                        if (_lastDirection == ListSortDirection.Ascending)</code></pre>]]></description><link>https://blog.mastersven.ddnss.de/wpf-listview-sortable-datagrid/</link><guid isPermaLink="false">6003096d4c14f90001fa7ccb</guid><category><![CDATA[WPF]]></category><category><![CDATA[C#]]></category><category><![CDATA[ListView]]></category><category><![CDATA[DataGrid]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Fri, 13 Sep 2019 05:45:24 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1518773553398-650c184e0bb3?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1518773553398-650c184e0bb3?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="WPF Listview Sortable Datagrid"><p></p><!--kg-card-begin: markdown--><p>In der <code>&lt;ListView /&gt;</code> Event <code>GridViewColumnHeader.Click=&quot;&quot;</code></p>
<pre><code>        GridViewColumnHeader _lastHeaderClicked = null;
        ListSortDirection _lastDirection = ListSortDirection.Ascending;

        void GridViewColumnHeaderClickedHandler(object sender,
            RoutedEventArgs e)
        {
            var headerClicked = e.OriginalSource as GridViewColumnHeader;
            ListSortDirection direction;

            if (headerClicked != null)
            {
                if (headerClicked.Role != GridViewColumnHeaderRole.Padding)
                {
                    if (headerClicked != _lastHeaderClicked)
                    {
                        direction = ListSortDirection.Ascending;
                    }
                    else
                    {
                        if (_lastDirection == ListSortDirection.Ascending)
                        {
                            direction = ListSortDirection.Descending;
                        }
                        else
                        {
                            direction = ListSortDirection.Ascending;
                        }
                    }

                    var columnBinding = headerClicked.Column.DisplayMemberBinding as Binding;
                    var sortBy = columnBinding?.Path.Path ?? headerClicked.Column.Header as string;

                    Sort(sortBy, direction);

                    if (direction == ListSortDirection.Ascending)
                    {
                        headerClicked.Column.HeaderTemplate =
                            Resources[&quot;HeaderTemplateArrowUp&quot;] as DataTemplate;
                    }
                    else
                    {
                        headerClicked.Column.HeaderTemplate =
                            Resources[&quot;HeaderTemplateArrowDown&quot;] as DataTemplate;
                    }

                    // Remove arrow from previously sorted header
                    if (_lastHeaderClicked != null &amp;&amp; _lastHeaderClicked != headerClicked)
                    {
                        _lastHeaderClicked.Column.HeaderTemplate = null;
                    }

                    _lastHeaderClicked = headerClicked;
                    _lastDirection = direction;
                }
            }
        }
        private void Sort(string sortBy, ListSortDirection direction)
        {
            ICollectionView dataView =
                CollectionViewSource.GetDefaultView(lvBinding.ItemsSource);

            dataView.SortDescriptions.Clear();
            SortDescription sd = new SortDescription(sortBy, direction);
            dataView.SortDescriptions.Add(sd);
            dataView.Refresh();
        }
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Postbuildereignis im VS 2019]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Kopieren der Setup.iss ,nur in Release Konfiguration, f&#xFC;r den Inno Setup Installer aus Installverzeichnis und Release Verzeichnis. Im Anschluss Erstellung der Setup.exe.</p>
<pre><code>if &quot;$(ConfigurationName)&quot; == &quot;Release&quot;  (
xcopy $(TargetDir)\Install\setup.iss $(TargetDir)
&quot;C:\Program Files (x86)\Inno Setup 6\ISCC.exe&quot;</code></pre>]]></description><link>https://blog.mastersven.ddnss.de/postbild/</link><guid isPermaLink="false">6003096d4c14f90001fa7cca</guid><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Tue, 10 Sep 2019 09:17:30 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1515879218367-8466d910aaa4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1515879218367-8466d910aaa4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Postbuildereignis im VS 2019"><p>Kopieren der Setup.iss ,nur in Release Konfiguration, f&#xFC;r den Inno Setup Installer aus Installverzeichnis und Release Verzeichnis. Im Anschluss Erstellung der Setup.exe.</p>
<pre><code>if &quot;$(ConfigurationName)&quot; == &quot;Release&quot;  (
xcopy $(TargetDir)\Install\setup.iss $(TargetDir)
&quot;C:\Program Files (x86)\Inno Setup 6\ISCC.exe&quot; $(TargetDir)setup.iss
)
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[VLC HTTP Streamserver]]></title><description><![CDATA[<p>vlc filename --sout &apos;#standard{access=http,mux=flv,dst=:8080}&apos;</p><p></p><p>--sout &apos;#http{mux=ffmpeg{mux=flv},dst=:8080}&apos;</p>]]></description><link>https://blog.mastersven.ddnss.de/vlc-streamserver/</link><guid isPermaLink="false">6003096d4c14f90001fa7cc8</guid><category><![CDATA[VLC]]></category><category><![CDATA[Streaming]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Fri, 16 Aug 2019 13:39:51 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1556132877-ded3bb0173b5?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1556132877-ded3bb0173b5?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="VLC HTTP Streamserver"><p>vlc filename --sout &apos;#standard{access=http,mux=flv,dst=:8080}&apos;</p><p></p><p>--sout &apos;#http{mux=ffmpeg{mux=flv},dst=:8080}&apos;</p>]]></content:encoded></item><item><title><![CDATA[Batch Remove Prefix]]></title><description><![CDATA[<p>Als Batchfile. </p><!--kg-card-begin: markdown--><pre><code>::RemovePrefix.bat  prefix  fileMask
@echo off
setlocal
for %%A in (&quot;%~1%~2&quot;) do (
  set &quot;fname=%%~A&quot;
  call ren &quot;%%fname%%&quot; &quot;%%fname:*%~1=%%&quot;
)
</code></pre>
<!--kg-card-end: markdown--><p>oder</p><!--kg-card-begin: markdown--><p><code>rename &quot;abcd*.txt&quot; &quot;////*.txt&quot;</code><br>
der Slash muss mit der Anzahl der zu entfernen Zeichen</p>]]></description><link>https://blog.mastersven.ddnss.de/batch-remove-prefix/</link><guid isPermaLink="false">6003096d4c14f90001fa7cc7</guid><category><![CDATA[Batch]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Wed, 14 Aug 2019 05:10:20 GMT</pubDate><content:encoded><![CDATA[<p>Als Batchfile. </p><!--kg-card-begin: markdown--><pre><code>::RemovePrefix.bat  prefix  fileMask
@echo off
setlocal
for %%A in (&quot;%~1%~2&quot;) do (
  set &quot;fname=%%~A&quot;
  call ren &quot;%%fname%%&quot; &quot;%%fname:*%~1=%%&quot;
)
</code></pre>
<!--kg-card-end: markdown--><p>oder</p><!--kg-card-begin: markdown--><p><code>rename &quot;abcd*.txt&quot; &quot;////*.txt&quot;</code><br>
der Slash muss mit der Anzahl der zu entfernen Zeichen &#xFC;bereinstimmen.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[DI with Unity]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>DependencyInjector.cs</p>
<pre><code>    public static class DependencyInjector
    {
        private static readonly UnityContainer UnityContainer = new UnityContainer();
        public static void Register&lt;I, T&gt;() where T : I
        {            
            UnityContainer.RegisterType&lt;I, T&gt;(new ContainerControlledLifetimeManager());
        }
        public static void InjectStub&lt;I&gt;(I instance)
        {
            UnityContainer.RegisterInstance(instance, new ContainerControlledLifetimeManager());
        }
        public static T Retrieve&</code></pre>]]></description><link>https://blog.mastersven.ddnss.de/di/</link><guid isPermaLink="false">6003096d4c14f90001fa7cc6</guid><category><![CDATA[C#]]></category><category><![CDATA[Unity]]></category><category><![CDATA[DI]]></category><category><![CDATA[IOC]]></category><dc:creator><![CDATA[Sven Eilenberger]]></dc:creator><pubDate>Tue, 06 Aug 2019 09:19:56 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1538333702852-c1b7a2a93001?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1538333702852-c1b7a2a93001?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="DI with Unity"><p>DependencyInjector.cs</p>
<pre><code>    public static class DependencyInjector
    {
        private static readonly UnityContainer UnityContainer = new UnityContainer();
        public static void Register&lt;I, T&gt;() where T : I
        {            
            UnityContainer.RegisterType&lt;I, T&gt;(new ContainerControlledLifetimeManager());
        }
        public static void InjectStub&lt;I&gt;(I instance)
        {
            UnityContainer.RegisterInstance(instance, new ContainerControlledLifetimeManager());
        }
        public static T Retrieve&lt;T&gt;()
        {
            return UnityContainer.Resolve&lt;T&gt;();
        }
        
    }
</code></pre>
<p>Bootstrapper.cs</p>
<pre><code>    public static class Bootstrapper
    {
        public static void Init()
        {
            DependencyInjector.Register&lt;IConfigurationRespository, ConfigurationRespository&gt;();
            DependencyInjector.Register&lt;IRestClient, RestClient&gt;();
            DependencyInjector.Register&lt;ISerializer, JsonSerializer&gt;();
            DependencyInjector.Register&lt;IUrlManager, UrlManager&gt;();
            DependencyInjector.Register&lt;ILinkRepository, LinkRespositoryJson&gt;();
            DependencyInjector.Register&lt;IProviderRespository,ProviderJson&gt;();
            DependencyInjector.Register&lt;ILinkValidation,LinkValidation&gt;();
            DependencyInjector.Register&lt;ILinkInformationUpdater,LinkInformationUpdater&gt;();
        }
    

    }
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>