<?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"
	>

<channel>
	<title>Andreas Schneider - GlaDiaC's technical blog</title>
	<atom:link href="http://blog.cynapses.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cynapses.org</link>
	<description>Just another weblog for penguins!</description>
	<pubDate>Thu, 17 Jul 2008 18:29:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Pimp my KDE</title>
		<link>http://blog.cynapses.org/2008/07/17/pimp-my-kde/</link>
		<comments>http://blog.cynapses.org/2008/07/17/pimp-my-kde/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 18:28:24 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/?p=33</guid>
		<description><![CDATA[As KDE 4.1 RC1 has been released I&#8217;ve installed it on my notebook and pimped it

I&#8217;ve build the Polyester theme in the openSUSE Build Service for KDE4 and Qt4. krusader for KDE4 is available too, here.
]]></description>
			<content:encoded><![CDATA[<p>As KDE 4.1 RC1 has been released I&#8217;ve installed it on my notebook and pimped it</p>
<p><a href='http://blog.cynapses.org/wp-content/uploads/2008/07/desktop.png'><img src="http://blog.cynapses.org/wp-content/uploads/2008/07/desktop-300x187.png" alt="KDE 4.1 Pimped" title="Desktop" width="300" height="187" class="alignnone size-medium wp-image-34" /></a></p>
<p>I&#8217;ve build the Polyester theme in the openSUSE Build Service for KDE4 and Qt4. krusader for KDE4 is available too, <a href="http://download.opensuse.org/repositories/KDE:/KDE4:/Factory:/Community/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/07/17/pimp-my-kde/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Roaming Home Directories for Linux</title>
		<link>http://blog.cynapses.org/2008/07/04/roaming-home-directories-for-linux/</link>
		<comments>http://blog.cynapses.org/2008/07/04/roaming-home-directories-for-linux/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 10:09:16 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/?p=31</guid>
		<description><![CDATA[An interesting feature of Active Directory is Roaming Profiles. You can login on different workstations and you have all you data with you. If you use a Notebook you have the same and the ability to work offline. As soon as you&#8217;re connected to you network again the data will be automatically synchronized again and [...]]]></description>
			<content:encoded><![CDATA[<p>An interesting feature of Active Directory is Roaming Profiles. You can login on different workstations and you have all you data with you. If you use a Notebook you have the same and the ability to work offline. As soon as you&#8217;re connected to you network again the data will be automatically synchronized again and you have a backup of your data.</p>
<p><img src="http://blog.cynapses.org/wp-content/uploads/2008/07/_roaminghome.png" alt="" title="Roaming Home Directories"class="alignnone size-medium wp-image-32" /></p>
<p>Now the time has come to introduce Roaming Home Directories for Linux. Yesterday I&#8217;ve released a new version of <a href="http://www.csync.org/">csync</a> and the first version of <a href="http://www.csync.org/2008/07/03/pam_csync-0420-alpha1/">pam_csync</a>. With both components you&#8217;re able to use an Active Directory environment to share your data between workstation and notebooks and work offline.</p>
<p>Currently only the SMB protocol is supported but I will write more plugins for other protocols in future. I have sftp and rsync (if doable) in mind. So you will be able to use it at home with you&#8217;re small NAS or in a Linux only company environment.</p>
<p>This is not the only use case. If you have a USB disk with your music collection. You can can attach it to PC1 and synchronize it with your local collection. Go to the next computer and synchronize it there again. As csync is a bidirectional file synchronizer the collection on PC1 and PC2 will be the same.</p>
<p><a href="http://www.csync.org/">http://www.csync.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/07/04/roaming-home-directories-for-linux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>csync 0.42.0 alpha1</title>
		<link>http://blog.cynapses.org/2008/06/02/csync-0420-alpha1/</link>
		<comments>http://blog.cynapses.org/2008/06/02/csync-0420-alpha1/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 15:05:56 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[SUSE]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/?p=29</guid>
		<description><![CDATA[I&#8217;ve released the first alpha version of csync. csync is a client only bidirectional file synchronizer. You can use csync for different things. The intention is to provide Roaming Home Directories for Linux but you can use it to synchronize your music collection or create a backup of a directory. This is *not* intended for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve released the first alpha version of csync. csync is a client only bidirectional file synchronizer. You can use csync for different things. The intention is to provide Roaming Home Directories for Linux but you can use it to synchronize your music collection or create a backup of a directory. This is *not* intended for production environments and is designed for testing purposes only. This version is fully functional and you can sync two local directories or a local directory with a samba share.</p>
<p>More at <a href="http://www.csync.org/">http://www.csync.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/06/02/csync-0420-alpha1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>csync 0.42.0 prealpha test version</title>
		<link>http://blog.cynapses.org/2008/05/06/csync-0420-prealpha-test-version/</link>
		<comments>http://blog.cynapses.org/2008/05/06/csync-0420-prealpha-test-version/#comments</comments>
		<pubDate>Tue, 06 May 2008 15:15:23 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/?p=28</guid>
		<description><![CDATA[I&#8217;ve released the first test version of csync. csync is a client only bidirectional file synchronizer. The intention is to get some testing and feedback about update detection and journal creation.
If you want to help to test click here. Packages for openSUSE are available in the Build Service, here.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve released the first test version of <a href="http://www.csync.org/">csync</a>. csync is a client only bidirectional file synchronizer. The intention is to get some testing and feedback about update detection and journal creation.</p>
<p>If you want to help to test click <a href="http://www.csync.org/2008/05/06/csync-0420-prealpha-test-version/">here</a>. Packages for openSUSE are available in the Build Service, <a href="http://download.opensuse.org/repositories/home:/gladiac/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/05/06/csync-0420-prealpha-test-version/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The history game</title>
		<link>http://blog.cynapses.org/2008/04/14/the-history-game/</link>
		<comments>http://blog.cynapses.org/2008/04/14/the-history-game/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 14:08:18 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/?p=27</guid>
		<description><![CDATA[anschneider@maximegalon:~> history &#124; awk '{a[$2]++ } END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217;&#124;sort -rn&#124;head
139 make
139 cd
105 vi
104 ll
68 man
50 git
46 fg
31 mc
26 grep
23 tests/check_csync_exclude
]]></description>
			<content:encoded><![CDATA[<p><code>anschneider@maximegalon:~> history | awk '{a[$2]++ } END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217;|sort -rn|head<br />
139 make<br />
139 cd<br />
105 vi<br />
104 ll<br />
68 man<br />
50 git<br />
46 fg<br />
31 mc<br />
26 grep<br />
23 tests/check_csync_exclude</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/04/14/the-history-game/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Left-Leaning Red-Black Trees</title>
		<link>http://blog.cynapses.org/2008/03/26/left-leaning-red-black-trees/</link>
		<comments>http://blog.cynapses.org/2008/03/26/left-leaning-red-black-trees/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 11:26:49 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/2008/03/26/left-leaning-red-black-trees/</guid>
		<description><![CDATA[Red-Black Trees were originally designed by taking a 2-3-4 tree and unrolling the big nodes into a cluster of simpler binary tree nodes. The 2-3-4 node operations are mapped to binary tree operations. Now Robert Sedgewick presented a new tree called Left-Leaning Red-Black Tree.
A Red-Black tree has a lot of cases you have to consider, [...]]]></description>
			<content:encoded><![CDATA[<p>Red-Black Trees were originally designed by taking a 2-3-4 tree and unrolling the big nodes into a cluster of simpler binary tree nodes. The 2-3-4 node operations are mapped to binary tree operations. Now <a href="http://www.cs.princeton.edu/%7Ers/">Robert Sedgewick</a> presented a new tree called Left-Leaning Red-Black Tree.</p>
<p>A Red-Black tree has a lot of cases you have to consider, especially if you delete a node. This makes the code complex. Left-Leaning Red-Black Trees are a simpler variant of Red-Black Trees. They are simpler to implement (less code) while maintaining the nice features of Red-Black Trees. Less code means faster insertion and deletion, but there are no benchmarks yet.</p>
<p>Once Bob released his new book this would be a nice improvement for <a href="http://www.csync.org/">csync</a> in the future. You can <a href="http://www.cs.princeton.edu/%7Ers/talks/LLRB/RedBlack.pdf">take a look at the slides</a> of his talk.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/03/26/left-leaning-red-black-trees/feed/</wfw:commentRss>
		</item>
		<item>
		<title>csync source code is online</title>
		<link>http://blog.cynapses.org/2008/02/28/csync-source-code-is-online/</link>
		<comments>http://blog.cynapses.org/2008/02/28/csync-source-code-is-online/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 16:00:39 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/2008/02/28/csync-source-code-is-online/</guid>
		<description><![CDATA[I have released the source code of csync. csync is a user level file synchronizer to provide roaming home directories for Linux. The source code in an early state, but there is a complete prototype available.
Visit the homepage or the trac system for more information.
]]></description>
			<content:encoded><![CDATA[<p>I have <a href="http://www.csync.org/2008/02/28/csync-source-code-is-online/">released the source code of csync</a>. csync is a user level file synchronizer to provide roaming home directories for Linux. The source code in an early state, but there is a complete prototype available.</p>
<p><a href="http://www.csync.org/">Visit the homepage</a> or <a href="https://dev.csync.org/">the trac system</a> for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/02/28/csync-source-code-is-online/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Novell Hack Week</title>
		<link>http://blog.cynapses.org/2008/02/12/novell-hack-week/</link>
		<comments>http://blog.cynapses.org/2008/02/12/novell-hack-week/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 17:02:44 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/2008/02/12/novell-hack-week/</guid>
		<description><![CDATA[The second Hack Week at Novell has started yesterday. I&#8217;m working together with Sven Schober on the rewrite of lomoco. lomoco is a library and a commandline tool to control Logitech mice under Linux. lomoco can configure vendor-specific options on Logitech USB mice (or dual-personality mice plugged into the USB port). All recent devices will [...]]]></description>
			<content:encoded><![CDATA[<p>The second Hack Week at Novell has started yesterday. I&#8217;m working together with <a href="http://sv3sch.sssm.de/">Sven Schober</a> on the rewrite of lomoco. <a href="http://www.lomoco.org/">lomoco</a> is a library and a commandline tool to control Logitech mice under Linux. lomoco can configure vendor-specific options on Logitech USB mice (or dual-personality mice plugged into the USB port). All recent devices will be supported in future (e.g. the MX Air).</p>
<p>You can checkout the code with git:</p>
<p>  <code>git clone git://git.lomoco.org/lomoco.git lomoco</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2008/02/12/novell-hack-week/feed/</wfw:commentRss>
		</item>
		<item>
		<title>dovecot dspam plugin</title>
		<link>http://blog.cynapses.org/2007/09/13/dovecot-dspam-plugin/</link>
		<comments>http://blog.cynapses.org/2007/09/13/dovecot-dspam-plugin/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 13:51:10 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/2007/09/13/dovecot-dspam-plugin/</guid>
		<description><![CDATA[I&#8217;ve found the dovecot dspam plugin and looked at the code. It forks and calls the dspam binary directly for every mail. I didn&#8217;t like this behavior, so
I&#8217;ve migrated it to use libdspam and added support to configure it using variables in dovecot.conf.
This is the dovecot dspam plugin that watches a special folder, the SPAM [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve found the dovecot dspam plugin and looked at the code. It forks and calls the dspam binary directly for every mail. I didn&#8217;t like this behavior, so<br />
I&#8217;ve migrated it to use libdspam and added support to configure it using variables in dovecot.conf.</p>
<p>This is the dovecot dspam plugin that watches a special folder, the SPAM folder. When the MTA delivers a message to the user, it&#8217;ll first run it through the spam classifier. If it is classified as spam, it&#8217;ll be delivered to the SPAM folder instead of the normal filtering file the user may have (maildrop, sieve). Now the user has everything classified as spam in his SPAM folder. Everything else wherever the users wants it.</p>
<p>This is not enough cause our spam scanner needs training. We&#8217;ll occasionally have false positives and false negatives. Now this is the point where the dovecot dspam plugin comes into play. Instead of moving mail into special folders, the user has two actions available:</p>
<ol>
<li>moving it out of the SPAM folder and</li>
<li>moving it into the SPAM folder.</li>
</ol>
<p>The dovecot plugin watches these actions (and additionally prohibits APPENDs to the SPAM folder, more for technical reasons than others) and tells dspam that it made an error and needs to re-classify the message, depending on which of the two actions the user did. The user can now move the message directly into whatever folder the user chooses, and it all works.</p>
<h2>*UPDATE*</h2>
<p>Johannes has written a new plugin and we have merged pieces of the code, please check:</p>
<p>http://johannes.sipsolutions.net/Projects/dovecot-antispam</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2007/09/13/dovecot-dspam-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Qemu (kvm) internal network setup</title>
		<link>http://blog.cynapses.org/2007/07/12/qemu-kvm-internal-network-setup/</link>
		<comments>http://blog.cynapses.org/2007/07/12/qemu-kvm-internal-network-setup/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 19:19:42 +0000</pubDate>
		<dc:creator>GlaDiaC</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[SUSE]]></category>

		<guid isPermaLink="false">http://blog.cynapses.org/2007/07/12/qemu-kvm-internal-network-setup/</guid>
		<description><![CDATA[I got a new notebook, a nice Thinkpad T61 with virtualization technology. I need to run some Windows system for development so I&#8217;ve decided to use the Kernel based Virtual Machine (KVM). The VMs should communicate over an internal network but should have access to the internet and I want access via network to them. [...]]]></description>
			<content:encoded><![CDATA[<p>I got a new notebook, a nice Thinkpad T61 with virtualization technology. I need to run some Windows system for development so I&#8217;ve decided to use the <a href="http://kvm.qumranet.com/">Kernel based Virtual Machine</a> (KVM). The VMs should communicate over an internal network but should have access to the internet and I want access via network to them. So I setup a bridge with TUN/TAP devices masqueraded to my normal interface.</p>
<pre>

               HOST            QEMU GUEST1
        +---------------+   +--------------+
        | 10.10.5.158   |   |              |
 LAN ---+---- eth0      |   |              |
        |               |   |              |    QEMU GUEST2
        |   +------+ +--+---+---- nic0     |   +--------------+
        |   | tap0---+  |   |192.168.100.5 |   |              |
        |   | tap1---+  |   +--------------+   |              |
        |   +------+ |  |                      |              |
        |     br0    +--+----------------------+---- nic0     |
        |192.168.100.254|                      |192.168.100.1 |
        +---------------+                      +--------------+
</pre>
<h3>Needed packages:</h3>
<p>uml-utilities<br />
bridge-utilities<br />
<a href="http://software.opensuse.org/download/home:/kraxel/">kvm</a></p>
<h3>Setup the network:</h3>
<p>Create a file call kvm-network with the following content and make it executeable.</p>
<pre>
#!/bin/bash

# id of the user running qemu (kvm)
USERID=1000

# number of TUN/TAP devices to setup
NUM_OF_DEVICES=5

case $1 in
        start)
                modprobe tun
                echo -n "Setting up bridge device br0"
                brctl addbr br0
                ifconfig br0 192.168.100.254 netmask 255.255.255.0 up
                for ((i=0; i < NUM_OF_DEVICES ; i++)); do
                        echo -n "Setting up "
                        tunctl -b -u $USERID -t qtap$i
                        brctl addif br0 qtap$i
                        ifconfig qtap$i up 0.0.0.0 promisc
                done
        ;;
        stop)
                for ((i=0; i < NUM_OF_DEVICES ; i++)); do
                        ifconfig qtap$i down
                        brctl delif br0 qtap$i
                        tunctl -d qtap$i
                done
                ifconfig br0 down
                brctl delbr br0
        ;;
        *)
                echo "Usage: $(basename $0) (start|stop)"
        ;;
esac
</pre>
<p>br0 is the gateway to the external network.</p>
<h3>Setting up the firewall:</h3>
<p>Edit /etc/sysconfig/SuSEfirewall and set the following variables:</p>
<pre>
FW_DEV_INT="br0 qtap0 qtap1 qtap2 qtap3 qtap4"
FW_ROUTE="yes"
FW_MASQ_NETS="192.168.100.0/24"
FW_PROTECT_FROM_INT="no"
FW_FORWARD_ALWAYS_INOUT_DEV="br0"
</pre>
<p>If you don&#8217;t run a SUSE system use the following lines to setup masquerading:</p>
<pre>
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
</pre>
<p>On the guest you have to set the default gateway to 192.168.100.254 which is the bridge br0 and take a look in /etc/resolv.conf to get the name servers. I run a Windows 2003 Server as a guest which is the dhcp and name server for the other guests (Vista, several Linux installations).</p>
<h3>Setting up qemu</h3>
<h4>Guest 1:</h4>
<pre>
#!/bin/bash

qemu-kvm /path/to/vm.img \
          -net nic,model=rtl8139,macaddr=52:54:00:12:34:56 \
          -net tap,ifname=qtap0,script=no \
          -m 256 \
          -smp 1 \
          -usb \
          -usbdevice tablet \
          -localtime
</pre>
<h4>Guest 2:</h4>
<pre>
#!/bin/bash

qemu-kvm /path/to/vm2.img \
          -net nic,model=rtl8139,macaddr=52:54:00:12:34:57 \
          -net tap,ifname=qtap1,script=no \
          -m 256 \
          -smp 1 \
          -usb \
          -usbdevice tablet \
          -localtime
</pre>
<p>Note that the VMs have different MAC addresses. It took me a long time to find why I couldn&#8217;t ping from one guest to another <img src='http://blog.cynapses.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> By the way, one of the guests is running <a href="http://blog.cynapses.org/wp-content/uploads/2007/07/vista.png">Vista</a>, which runs smoothly on my machine with KVM.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cynapses.org/2007/07/12/qemu-kvm-internal-network-setup/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
