<style type="text/css" >
<!--
.w_tweet_tweet_wrap {
	font-size: 0.8em;
	margin: 5px 0px 20px 0px;
	padding: 5px 0px 15px 0px;
	line-height: 1.3em;
	clear: both;
	}

.w_tweet_tweet_text {
	padding: 0px 0px 2px 0px;
	border-bottom: 1px solid #f0f0f0;
	}

.w_tweet_tweet_time_tweet {
	float: left;
	margin-top: 3px;
	font-size: 0.9em;
	color: gray;
	}

.w_tweet_tweet_source {
	float: right;
	margin-top: 3px;
	font-size: 0.9em;
	text-align: right;
	}

.w_tweet_tweet_status {
	font-size: 0.8em;
	text-align: right;
	border-top: 1px solid lightgray;
	padding: 2px 0px;
	margin-top: 1.0em;
	color: lightgray;
	}

.w_tweet_tweet_photobox {
	float: left;
	border-radius: 3px;
	overflow: hidden;
	}

.w_tweet_tweet_photobox img {
	border: 1px solid lightgray;
	margin-right: 5px;
	margin-bottom: 5px;
	}



.w_tweet_tweet_profile_wrap {
	margin: 10px 0px;
	border-bottom: 1px solid lightgray;
	}

.w_tweet_tweet_profile_icon {
	width: 48px;
	height: 48px;
	border: 1px solid lightgray;
	border-radius: 3px;
	overflow: hidden;
	float: left;
	margin-right: 8px;
	margin-bottom: 4px;
	}

.w_tweet_tweet_profile_username {
	font-size: 1.0em;
	font-weight: bold;
	}

.w_tweet_tweet_profile_location {
	font-size: 0.9em;
	margin-bottom: 4px;
	}

.w_tweet_tweet_profile_description {
	font-size: 0.9em;
	}

.w_tweet_tweet_profile_meta_wrap {
	clear: both;
	}

.w_tweet_tweet_profile_meta {
	font-size: 0.8em;
	color: gray;
	text-align: right;
	padding-bottom: 3px;
	}
-->
</style>
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.gauner.org</title>
	<atom:link href="http://blog.gauner.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gauner.org</link>
	<description></description>
	<lastBuildDate>Mon, 22 Dec 2014 16:36:27 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.3</generator>
	<item>
		<title>rsync: include a subdirectory from an excluded directory</title>
		<link>http://blog.gauner.org/blog/2014/12/22/rsync-include-a-subdirectory-from-an-excluded-directory/</link>
		<comments>http://blog.gauner.org/blog/2014/12/22/rsync-include-a-subdirectory-from-an-excluded-directory/#comments</comments>
		<pubDate>Mon, 22 Dec 2014 16:36:27 +0000</pubDate>
		<dc:creator><![CDATA[Administrator]]></dc:creator>
				<category><![CDATA[Verschiedenes]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1289</guid>
		<description><![CDATA[Messing with rsync Filter-Options tends to get a little bit messy. Imaging you want to backup some machine holding a set of nested, rotated MySQL Backups in paths like this: srv/backup/mysql/{instance}/{daily,weekly,monthly}/{0-9}/ If you were to backup everything you&#8217;d get a lot of noise in your backups, since the numbered directories at the end will get [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Messing with <a class="zem_slink" title="Rsync" href="http://en.wikipedia.org/wiki/Rsync" target="_blank" rel="wikipedia">rsync</a> Filter-Options tends to get a little bit messy.</p>
<p>Imaging you want to backup some machine holding a set of nested, rotated <a class="zem_slink" title="MySQL" href="http://en.wikipedia.org/wiki/MySQL" target="_blank" rel="wikipedia">MySQL</a> Backups in paths like this:</p>
<pre>srv/backup/mysql/{instance}/{daily,weekly,monthly}/{0-9}/</pre>
<p>If you were to backup everything you&#8217;d get a lot of noise in your backups, since the numbered directories at the end will get rotated daily, as well weekly and monthly directories with less frequency.</p>
<p>I certainly did not want that, so I was look for an rsync exclude/filter rule that would exclude the whole /srv/backup/mysql folder but still include the most recent directory (daily/0). Since I did that more once now, I thought it would be good to write it down.</p>
<p>The following list will achieche that. Please note that it&#8217;s important to include <strong>each</strong> directory while excluding the unwanted contents.</p>
<pre>+ srv/backup/mysql/localhost/daily/0/
+ srv/backup/mysql/localhost/daily/
- srv/backup/mysql/localhost/daily/*
+ srv/backup/mysql/localhost/
- srv/backup/mysql/localhost/*
+ srv/backup/mysql/
- srv/backup/mysql/*
- srv/backup/*</pre>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1289&amp;md5=a5305b5f9c67d0588e31abdf5a694aeb"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2014/12/22/rsync-include-a-subdirectory-from-an-excluded-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2014%2F12%2F22%2Frsync-include-a-subdirectory-from-an-excluded-directory%2F&amp;language=en_GB&amp;category=text&amp;title=rsync%3A+include+a+subdirectory+from+an+excluded+directory&amp;description=Messing+with+rsync+Filter-Options+tends+to+get+a+little+bit+messy.+Imaging+you+want+to+backup+some+machine+holding+a+set+of+nested%2C+rotated+MySQL+Backups+in+paths+like+this%3A...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Ntimed</title>
		<link>http://blog.gauner.org/blog/2014/12/22/ntimed/</link>
		<comments>http://blog.gauner.org/blog/2014/12/22/ntimed/#comments</comments>
		<pubDate>Mon, 22 Dec 2014 08:26:40 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Verschiedenes]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1285</guid>
		<description><![CDATA[Ntimed by phk]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/bsdphk/Ntimed">Ntimed by phk</a></p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1285&amp;md5=9cae0f69b3ff2bfb45cb287880dd600d"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2014/12/22/ntimed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2014%2F12%2F22%2Fntimed%2F&amp;language=en_GB&amp;category=text&amp;title=Ntimed&amp;description=Ntimed+by+phk&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Camlistore</title>
		<link>http://blog.gauner.org/blog/2014/02/02/camlistore/</link>
		<comments>http://blog.gauner.org/blog/2014/02/02/camlistore/#comments</comments>
		<pubDate>Sun, 02 Feb 2014 20:20:24 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1278</guid>
		<description><![CDATA[I just gave Camlistore a try. My first impression: uber-cool, but still very rough and suuuper slow. But I have no doubt that the guys behind that project will make it fly. They already did some other pretty cool stuff, like memcached and DJabberd. Camlistore is a personal &#8222;Content-Management-System&#8220;, similar to git-annex.]]></description>
				<content:encoded><![CDATA[<p>I just gave <a href="http://camlistore.org/">Camlistore</a> a try. My first impression: uber-cool, but still very rough and suuuper slow.</p>
<p>But I have no doubt that the guys behind that project will make it fly. They already did some other pretty cool stuff, like <a href="http://memcached.org/">memcached</a> and <a href="https://github.com/djabberd/DJabberd">DJabberd</a>.</p>
<p>Camlistore is a personal &#8222;Content-Management-System&#8220;, similar to <a href="http://git-annex.branchable.com/">git-annex</a>.</p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1278&amp;md5=30d5b5f57c304c42d96709f1a87beb98"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2014/02/02/camlistore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2014%2F02%2F02%2Fcamlistore%2F&amp;language=en_GB&amp;category=text&amp;title=Camlistore&amp;description=I+just+gave+Camlistore+a+try.+My+first+impression%3A+uber-cool%2C+but+still+very+rough+and+suuuper+slow.+But+I+have+no+doubt+that+the+guys+behind+that+project+will+make...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Replace a failed HDD in an SW RAID</title>
		<link>http://blog.gauner.org/blog/2013/09/01/replace-a-failed-hdd-in-an-sw-raid/</link>
		<comments>http://blog.gauner.org/blog/2013/09/01/replace-a-failed-hdd-in-an-sw-raid/#comments</comments>
		<pubDate>Sun, 01 Sep 2013 16:03:03 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1262</guid>
		<description><![CDATA[This post describes how to replace an failed HDD from an Linux Software-RAID while fixing GRUB. This is mostly for my own reference but posted here in the hope that someone may find it useful. If one of your HDDs in a Software-RAID failed and your system is still running you should first mark all [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><em>This post describes how to replace an failed HDD from an Linux Software-RAID while fixing GRUB. This is mostly for my own reference but posted here in the hope that someone may find it useful.</em></p>
<p>If one of your HDDs in a Software-RAID failed and your system is still running you should first mark all partitions of this device as failed. Let&#8217;s assume that /dev/sdb failed.</p>
<p><code>cat /proc/mdstat # check RAID status# mark the devices as failed, neccessary to remove them<br />
mdadm --manage /dev/md0 --fail /dev/sdb1<br />
mdadm --manage /dev/md1 --fail /dev/sdb2<br />
mdadm --manage /dev/md2 --fail /dev/sdb3<br />
cat /proc/mdstat # check RAID status<br />
# remove the failed devices<br />
mdadm --manage /dev/md0 --remove /dev/sdb1<br />
mdadm --manage /dev/md1 --remove /dev/sdb2<br />
mdadm --manage /dev/md2 --remove /dev/sdb3</code></p>
<p>Now you should replace the HDD. Usually this means shutting the system down &#8211; unless you have a very rare setup which allows for hot-plug of non-HW-RAID disks.</p>
<p>If the failed disk was part of the OS paritions you&#8217;ll proably need to boot into some kind of rescue system first to perform the follwing steps.</p>
<p>After the system is back up you have to copy the partition table from the old disk to the new one. This used to be done w/ sfdisk, however since HDDs are getting to big for MBR to handle many system are switching over to using GPT which isn&#8217;t handled by classic UNIX/Linux HDD tools. Thus we&#8217;ll be using GParted.</p>
<p><code>sgdisk -R=/dev/sdb /dev/sdb # copy partition table, be sure to get the devices right<br />
sgdisk -G /dev/sdb # randomize GUID to avoid conflicts w/ first disk</code></p>
<p>Now you can re-assemable the RAID devices:<br />
<code>mdadm --manage /dev/md0 --add /dev/sdb1<br />
mdadm --manage /dev/md1 --add /dev/sdb2<br />
mdadm --manage /dev/md2 --add /dev/sdb3</code></p>
<p>You should let the system run until the RAID arrays have re-synced. You can check the status in /proc/mdstat.</p>
<p>Perhaps your bootloader got corrupted as well, just in case this are the steps necessary to re-install GRUB.<br />
<code>mount /dev/md1 /mnt # mount your /<br />
mount /dev/md0 /mnt/boot # mount your /boot<br />
mount -o bind /dev /mnt/dev # mount /dev, needed by grub-install<br />
mount -o bind /sys /mnt/sys # mount /sys, needed by grub-install<br />
mount -t proc /proc /mnt/proc<br />
cp /proc/mounts /mnt/etc/mtab<br />
chroot /mnt /bin/bash<br />
grub-install --recheck /dev/sda<br />
grub-install --recheck /dev/sdb<br />
update-grub<br />
exit # leave chroot</code></p>
<p>Now you should wait until all MD Arrays are back in shape (check /proc/mdstat), then reboot.</p>
<p><code>reboot # reboot into your fixed system</code></p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1262&amp;md5=39af87fdd81a3af1a1c086fa39683098"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2013/09/01/replace-a-failed-hdd-in-an-sw-raid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2013%2F09%2F01%2Freplace-a-failed-hdd-in-an-sw-raid%2F&amp;language=en_GB&amp;category=text&amp;title=Replace+a+failed+HDD+in+an+SW+RAID&amp;description=This+post+describes+how+to+replace+an+failed+HDD+from+an+Linux+Software-RAID+while+fixing+GRUB.+This+is+mostly+for+my+own+reference+but+posted+here+in+the+hope+that...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Deploying Perl Web-Apps with Puppet</title>
		<link>http://blog.gauner.org/blog/2013/08/29/deploying-perl-web-apps-with-puppet/</link>
		<comments>http://blog.gauner.org/blog/2013/08/29/deploying-perl-web-apps-with-puppet/#comments</comments>
		<pubDate>Thu, 29 Aug 2013 11:37:41 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[moose]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[plack]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1256</guid>
		<description><![CDATA[Since I was asked for I&#8217;d like to show one way of how you can deploy your perl web apps using debian packages and puppet. This post assumes that you want to install some Plack webapps, e.g. App::Standby, Monitoring::Spooler and Zabbix::Reporter. Those are pretty straight-forward Plack Apps built using Dist::Zilla. cd Monitoring-Spooler dzil build I&#8217;ve [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Since<a href="https://twitter.com/raudssus"> I was asked for</a> I&#8217;d like to show one way of how you can deploy your perl web apps using debian packages and puppet.</p>
<p>This post assumes that you want to install some Plack webapps, e.g. <a href="https://metacpan.org/module/App::Standby">App::Standby</a>, <a href="https://metacpan.org/module/Monitoring::Spooler">Monitoring::Spooler</a> and <a href="https://metacpan.org/module/Zabbix::Reporter">Zabbix::Reporter</a>.</p>
<p>Those are pretty straight-forward Plack Apps built using Dist::Zilla.</p>
<pre>cd Monitoring-Spooler
dzil build</pre>
<p>I&#8217;ve built <a href="http://packages.gauner.org/">debian packages</a> of these CPAN modules. Using dh-make-perl this is reasonably easy, although you&#8217;ll need some switches to make dh-make-perl a little less picky:</p>
<pre>dh-make-perl --vcs rcs --source-format "3.0 (native)" Monitoring-Spooler-0.04</pre>
<p>After building and uploading these packages to my repository I continue to use Puppet to install and configure those.</p>
<p>For each of these packages there is a custom puppet module, e.g. app_standby for managing App::Standby. This module create all necessary directories, manages the configuration and installs the package from my repository. It does not, however, set up any kind of webserver or runtime wrapper. This is done by another module: starman.</p>
<p>For running my Plack apps I use Starman which is managed by it&#8217;s own puppet module. It will install the starman package, manage it&#8217;s config and create an apache config. The interesting part is that I use puppet to automatically create an apache config and a simple Plack/PSGI multiplexer app that allows me to handle requests to all three (or more) of these apps using a single starman instance.</p>
<p>If these apps were rather busy I&#8217;d use a separate starman instance for each one, but as it is I&#8217;m more than happy to avoid the overhead of running multiple starman instances.</p>
<p>My starman module is invoked from one of my service classes like this:</p>
<pre>  class { 'starman':
    configure =&gt; {
      mounts    =&gt; {
        'zreporter'     =&gt; '/usr/bin/zreporter-web.psgi',
        'monspooler'    =&gt; '/usr/bin/mon-spooler.psgi',
        'monapi'        =&gt; '/usr/bin/mon-spooler-api.psgi',
        'standby'       =&gt; '/usr/bin/standby-mgm.psgi',
      },
    }
  }</pre>
<p>The starman module itself is pretty straight-forward, but below are the templates for the apache config and the PSGI multiplexer.</p>
<p>apache.conf.erb:</p>
<pre>&lt;IfModule mod_proxy.c&gt;
&lt;% if @configure.has_key?("mounts") -%&gt;
&lt;% @configure["mounts"].keys.sort.each do |mount| -%&gt;
   &lt;Location /&lt;%= mount %&gt;&gt;
      Allow from all
      ProxyPass           http://localhost:&lt;%= @configure.has_key?('starman_port') ? @configure["starman_port"] : '5001' %&gt;/&lt;%= mount %&gt;
      ProxyPassReverse    http://localhost:&lt;%= @configure.has_key?('starman_port') ? @configure["starman_port"] : '5001' %&gt;/&lt;%= mount %&gt;
   &lt;/Location&gt;
&lt;% end -%&gt;
&lt;% end -%&gt;
&lt;/IfModule&gt;</pre>
<p>mount.psgi.erb:</p>
<pre>#!/usr/bin/perl
use strict;
use warnings;

use Plack::Util;
use Plack::Builder;

my $app = builder {
&lt;% if @configure.has_key?("mounts") -%&gt;
&lt;% @configure["mounts"].keys.sort.each do |mount| -%&gt;
   mount '/&lt;%= mount %&gt;'  =&gt; Plack::Util::load_psgi('&lt;%= @configure["mounts"][mount] %&gt;');
&lt;% end -%&gt;
&lt;% end -%&gt;
   mount '/'           =&gt; builder {
        enable 'Plack::Middleware::Static', path =&gt; qr#/.+#, root =&gt; '/var/www';
        my $app = sub { return [ 302, ['Location','/index.html'], [] ]; };
        $app;
   }
};</pre>
<p>&nbsp;</p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1256&amp;md5=2b6e2c0a5c9305eaef5d2eb168e081e1"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2013/08/29/deploying-perl-web-apps-with-puppet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2013%2F08%2F29%2Fdeploying-perl-web-apps-with-puppet%2F&amp;language=en_GB&amp;category=text&amp;title=Deploying+Perl+Web-Apps+with+Puppet&amp;description=Since+I+was+asked+for+I%26%238217%3Bd+like+to+show+one+way+of+how+you+can+deploy+your+perl+web+apps+using+debian+packages+and+puppet.+This+post+assumes+that+you...&amp;tags=debian%2Cmoose%2Cperl%2Cplack%2Cpuppet%2Cblog" type="text/html" />
	</item>
		<item>
		<title>scp over IP6 link local address</title>
		<link>http://blog.gauner.org/blog/2013/01/06/scp-over-ip6-link-local-address/</link>
		<comments>http://blog.gauner.org/blog/2013/01/06/scp-over-ip6-link-local-address/#comments</comments>
		<pubDate>Sun, 06 Jan 2013 20:17:31 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Verschiedenes]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1255</guid>
		<description><![CDATA[When trying to copy some large files between two PCs I was annoyed by the slow wifi and did connect both by a direct LAN cable. But since I didn&#8217;t want to manually configure IPs I did remember that IPv6 would give each interface an unique link-local address immedeately. So I went on to figure [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>When trying to copy some large files between two PCs I was annoyed by the slow wifi and did connect both by a direct LAN cable. But since I didn&#8217;t want to manually configure IPs I did remember that IPv6 would give each interface an unique link-local address immedeately. So I went on to figure out how to correctly pass this address to ssh/scp.</p>
<p>Let&#8217;s assume the link-local address of &#8218;fe80::f4de:ff1f:fa5e:feee&#8216;.</p>
<p>First try: ssh user@fe80::f4de:ff1f:fa5e:feee</p>
<p>This won&#8217;t work because these link-local addresses are only unique on a given link. So you need to specify the interface as well.</p>
<p>Second try: ssh user@fe80::f4de:ff1f:fa5e:feee%en0</p>
<p>Of course you have to change the interface identifier acording to your system. On Linux this would most probably be eth0.</p>
<p>This was find for ssh, but for scp I did also need a remote source directory.</p>
<p>Third try: scp -6 user@fe80::f4de:ff1f:fa5e:feee%en0:/some/path/</p>
<p>This won&#8217;t work because the colons confuse ssh. You need to be more explicit by using square brackets.</p>
<p>Forth and final try: scp -6 user@[fe80::f4de:ff1f:fa5e:feee%en0]:/some/path/ .</p>
<p>Figuring out why this is no auto-generated link-local address is left as an exercise to the reader (but not relevant for this post).</p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1255&amp;md5=b1efb1caece017abf2e693d7cf1fe6cc"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2013/01/06/scp-over-ip6-link-local-address/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2013%2F01%2F06%2Fscp-over-ip6-link-local-address%2F&amp;language=en_GB&amp;category=text&amp;title=scp+over+IP6+link+local+address&amp;description=When+trying+to+copy+some+large+files+between+two+PCs+I+was+annoyed+by+the+slow+wifi+and+did+connect+both+by+a+direct+LAN+cable.+But+since+I+didn%26%238217%3Bt...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>GitLab behind a Reverse-Proxy</title>
		<link>http://blog.gauner.org/blog/2012/12/04/gitlab-behind-a-reverse-proxy/</link>
		<comments>http://blog.gauner.org/blog/2012/12/04/gitlab-behind-a-reverse-proxy/#comments</comments>
		<pubDate>Tue, 04 Dec 2012 17:04:08 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Verschiedenes]]></category>
		<category><![CDATA[git gitlab nginx]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1252</guid>
		<description><![CDATA[Running GitLab behind a (second) Reverse-Proxy over https? In that case you should undefine the &#8222;proxy_set_header X-Forwarded-Proto&#8220; header in the backend nginx and set it in the frontend nginx. Otherwise GitLab/RoR will redirect you to http on various ocasions. You should also set https in the config/gitlab.yml.]]></description>
				<content:encoded><![CDATA[<p>Running GitLab behind a (second) Reverse-Proxy over https?</p>
<p>In that case you should undefine the &#8222;proxy_set_header   X-Forwarded-Proto&#8220; header in the backend nginx and set it in the frontend nginx. Otherwise GitLab/RoR will redirect you to http on various ocasions. You should also set https in the config/gitlab.yml.</p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1252&amp;md5=690878b50c8b5f8e4e67e2c79cefa566"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2012/12/04/gitlab-behind-a-reverse-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2012%2F12%2F04%2Fgitlab-behind-a-reverse-proxy%2F&amp;language=en_GB&amp;category=text&amp;title=GitLab+behind+a+Reverse-Proxy&amp;description=Running+GitLab+behind+a+%28second%29+Reverse-Proxy+over+https%3F+In+that+case+you+should+undefine+the+%26%238222%3Bproxy_set_header+X-Forwarded-Proto%26%238220%3B+header+in+the+backend+nginx+and+set+it+in+the+frontend+nginx.+Otherwise...&amp;tags=git+gitlab+nginx%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Escaping Filenames with Whitespaces for rsync</title>
		<link>http://blog.gauner.org/blog/2012/10/15/escaping-filenames-with-whitespaces-for-rsync/</link>
		<comments>http://blog.gauner.org/blog/2012/10/15/escaping-filenames-with-whitespaces-for-rsync/#comments</comments>
		<pubDate>Mon, 15 Oct 2012 06:47:27 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1246</guid>
		<description><![CDATA[If you need to sync from a source path containing whitespaces you&#8217;ll need to escape those for the remote shell as well as for the local shell, so your command may look like this: rsync -ae ssh &#8218;user@host.tld:/path/with\ some/gaps/&#8216; &#8218;/another/one with/ a gap/&#8216; Don&#8217;t escape the whitespaces on the local side twice or you&#8217;ll end [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>If you need to sync from a source path containing whitespaces you&#8217;ll need to escape those for the remote shell as well as for the local shell, so your command may look like this:</p>
<p>rsync -ae ssh &#8218;user@host.tld:/path/with\ some/gaps/&#8216; &#8218;/another/one with/ a gap/&#8216;</p>
<p>Don&#8217;t escape the whitespaces on the local side twice or you&#8217;ll end up with weired filenames!</p>
<p><a href="http://raamdev.com/2008/escaping-filename-or-directory-spaces-for-rsync/">Via</a></p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1246&amp;md5=3898f32fb16515ba28ca291770945380"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2012/10/15/escaping-filenames-with-whitespaces-for-rsync/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2012%2F10%2F15%2Fescaping-filenames-with-whitespaces-for-rsync%2F&amp;language=en_GB&amp;category=text&amp;title=Escaping+Filenames+with+Whitespaces+for+rsync&amp;description=If+you+need+to+sync+from+a+source+path+containing+whitespaces+you%26%238217%3Bll+need+to+escape+those+for+the+remote+shell+as+well+as+for+the+local+shell%2C+so+your+command...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>git: Rebase vs. Rebase</title>
		<link>http://blog.gauner.org/blog/2012/10/08/git-rebase-vs-rebase/</link>
		<comments>http://blog.gauner.org/blog/2012/10/08/git-rebase-vs-rebase/#comments</comments>
		<pubDate>Mon, 08 Oct 2012 17:44:06 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[GIT]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1243</guid>
		<description><![CDATA[For a some time I&#8217;ve wondered about git rebase. At some point in the past I&#8217;ve realised that there is not one use in git rebase but (at least) two distict ones. On the one hand git rebase is used to rebase a branch onto an updated source branch (source like in origin, not in [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>For a some time I&#8217;ve wondered about git rebase. At some point in the past I&#8217;ve realised that there is not one use in git rebase but (at least) two distict ones.</p>
<ul>
<li>On the one hand git rebase is used to <strong>rebase a branch onto an updated source branch</strong> (source like in origin, not in source code).</li>
<li>On the other hand it&#8217;s used to<strong> rewrite commit history</strong>.</li>
</ul>
<h3><strong>What&#8217;s rebase?</strong></h3>
<p>A rebase makes git <strong>rewind</strong> your commit history up to a certain point and than re-apply your patches onto another starting point. The starting point depends on the exact type of rebase you do and what you tell git.</p>
<h3>Rebase a branch</h3>
<p>Why would you want to rebase a branch onto another one and what does it do?</p>
<p>If you have a feature branch and want this to be merged with your master branch you could of course <strong>merge</strong> it. If you do so and your feature branch is not based of the last commit in master git will create a new merge commit since it has to merge two branches of a tree. If you&#8217;d rebase your feature branch onto the tip of master you&#8217;d have a linear merge history w/o a merge commit instead.</p>
<h3>Rewrite a branch</h3>
<p>Why would you want to rewrite your commit history? What if you make mistakes while crafting a new branch? If you&#8217;re following common VCS advice you&#8217;ll probably commit often. Probably between some mistake you&#8217;ve made and the time you did correct it.</p>
<p>Now you&#8217;d have your shiny new feature commit and two or more commits w/ bugfixes to your initial commit in this feature branch. Some people prefer to keep the history of their mistakes. Those could just merge this new feature branch into their master branch.</p>
<p>Others prefer to keep their commit history clean (you wouldn&#8217;t release a book which includes all mistakes and corrections you&#8217;ve made, would you?). Here comes <strong>git rebase -i</strong><strong></strong> to the rescue. This rebases the current branch onto itself. This may sound a bit silly but it allows you to <strong>drop</strong> commits or more importantly to <strong>combine</strong> (<em>squash</em>) commits together!</p>
<h3>Where to got from here?</h3>
<p>This post wasn&#8217;t meant to give a complete introduction to git rebasing. There are plenty of great tutorials out there. I did just want to highlight some points which were important to me.</p>
<ul>
<li><a href="http://git-scm.com/book/en/Git-Branching-Rebasing">Git-Branching-Rebasing</a></li>
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html">git-rebase(1)</a></li>
<li><a href="http://gitready.com/intermediate/2009/01/31/intro-to-rebase.html">intro to rebase</a></li>
<li><a href="http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html">When to rebase</a> (READ!)</li>
</ul>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1243&amp;md5=c06d181b38ca73b1fdffdca2d2589113"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2012/10/08/git-rebase-vs-rebase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2012%2F10%2F08%2Fgit-rebase-vs-rebase%2F&amp;language=en_GB&amp;category=text&amp;title=git%3A+Rebase+vs.+Rebase&amp;description=For+a+some+time+I%26%238217%3Bve+wondered+about+git+rebase.+At+some+point+in+the+past+I%26%238217%3Bve+realised+that+there+is+not+one+use+in+git+rebase+but+%28at+least%29+two...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Watching 3D Movies in 2D using Mplayer</title>
		<link>http://blog.gauner.org/blog/2012/10/08/watching-3d-movies-in-2d-using-mplayer/</link>
		<comments>http://blog.gauner.org/blog/2012/10/08/watching-3d-movies-in-2d-using-mplayer/#comments</comments>
		<pubDate>Mon, 08 Oct 2012 16:16:38 +0000</pubDate>
		<dc:creator><![CDATA[tex]]></dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.gauner.org/?p=1240</guid>
		<description><![CDATA[In case you&#8217;ve got an 3D Movie w/o an 3D capable output device try mplayer w/ the &#8222;-vo gl:stereo=3&#8243; switch to get it in 2D. It works at least on Linux w/ an Nvidia Card.]]></description>
				<content:encoded><![CDATA[<p>In case you&#8217;ve got an 3D Movie w/o an 3D capable output device try mplayer w/ the &#8222;-vo gl:stereo=3&#8243; switch to get it in 2D. It works at least on Linux w/ an Nvidia Card.</p>
<p><a href="http://blog.gauner.org/?flattrss_redirect&amp;id=1240&amp;md5=2c2134dc881917f0430897902a22fb15"><img src="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white.png, http://blog.gauner.org/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gauner.org/blog/2012/10/08/watching-3d-movies-in-2d-using-mplayer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=tex&amp;popout=1&amp;url=http%3A%2F%2Fblog.gauner.org%2Fblog%2F2012%2F10%2F08%2Fwatching-3d-movies-in-2d-using-mplayer%2F&amp;language=en_GB&amp;category=text&amp;title=Watching+3D+Movies+in+2D+using+Mplayer&amp;description=In+case+you%26%238217%3Bve+got+an+3D+Movie+w%2Fo+an+3D+capable+output+device+try+mplayer+w%2F+the+%26%238222%3B-vo+gl%3Astereo%3D3%26%238243%3B+switch+to+get+it+in+2D.+It+works+at+least+on...&amp;tags=blog" type="text/html" />
	</item>
	</channel>
</rss>
