<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title />
	
	<link>http://meshfields.de</link>
	<description>Portfolio and Blog about Web design and IT</description>
	<lastBuildDate>Thu, 02 Feb 2012 14:22:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/meshfields" /><feedburner:info uri="meshfields" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/2.5/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by/2.5/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>meshfields</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Update an iframe’s height according to its content</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/eV8J9LcDgPY/</link>
		<comments>http://meshfields.de/update-iframe-height/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 14:21:41 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1623</guid>
		<description><![CDATA[In case you have an iFrame which serves content of unknown size to your main page, you can add a little script that reads out the actual size of the iframe and alters the iframe container&#8217;s size. An additional div &#8230; <a href="http://meshfields.de/update-iframe-height/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In case you have an iFrame which serves content of unknown size to your main page, you can add a little script that reads out the actual size of the iframe and alters the iframe container&#8217;s size. </p>
<p>An additional div is implemented to be double sure to hide unwanted overlapping and to make sure the area is correctly collapsed.</p>
<p><span id="more-1623"></span></p>
<p>Put this code into your iFrame body:<br />
&nbsp;<br />
<code class="js">window.onload = function() { </p>
<p>    // instance vars<br />
    var my_parent;<br />
    var my_iFrame;<br />
    var my_html;<br />
    var my_scrollHeight; </p>
<p>    my_parent = parent.document.getElementById('UniqueDivID');<br />
    my_iFrame = my_parent.getElementsByTagName('iframe')[0].contentWindow.document;<br />
    my_iFrame.body.height = "1px";<br />
    my_html = my_iFrame.documentElement;<br />
    my_scrollHeight = Math.max(meshfields_iFrame.body.scrollHeight, my_iFrame.body.offsetHeight, my_html.clientHeight, my_html.scrollHeight, my_html.offsetHeight );<br />
     &nbsp;<br />
    // check if content is bigger than 60 pixel, you can alter this or delete the if clause<br />
    if( my_scrollHeight > 60 ) {</p>
<p>        my_parent.getElementsByTagName('iframe')[0].style.height =<br />
        my_scrollHeight + "px";<br />
        my_parent.style.height = my_scrollHeight + "px";<br />
    }<br />
    &nbsp;<br />
    // collapse div container and iframe if content is bigger than 60 pixel<br />
    else if ( my_scrollHeight < 60 ) {<br />
        my_parent.getElementsByTagName('iframe')[0].style.height = "0px";<br />
        my_parent.style.height = "0px";<br />
    }<br />
}</code></p>
<p>In case you found this to be useful please consider upvoting it or follow me on Twitter at @nottinhill.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/xECwrMVxoz46sZQrPOWTcDSGYHE/0/da"><img src="http://feedads.g.doubleclick.net/~a/xECwrMVxoz46sZQrPOWTcDSGYHE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xECwrMVxoz46sZQrPOWTcDSGYHE/1/da"><img src="http://feedads.g.doubleclick.net/~a/xECwrMVxoz46sZQrPOWTcDSGYHE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/eV8J9LcDgPY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/update-iframe-height/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://meshfields.de/update-iframe-height/</feedburner:origLink></item>
		<item>
		<title>GitHub: Permission denied (publickey).</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/pVfpCN_lO3Y/</link>
		<comments>http://meshfields.de/github-permission-denied-publickey/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 14:03:14 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1619</guid>
		<description><![CDATA[I decided that the famous GitHub error Permission denied (publickey) is worth a blog entry, even if a short one. We all heard the useless tipp: &#8216;Go and add your ssh-keys in the GitHub FrontEnd.&#8217; Let me suggest a different &#8230; <a href="http://meshfields.de/github-permission-denied-publickey/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I decided that the famous GitHub error <span>Permission denied (publickey)</span> is worth a blog entry, even if a short one.</p>
<p>We all heard the useless tipp: &#8216;Go and add your ssh-keys in the GitHub FrontEnd.&#8217;</p>
<p>Let me suggest a different solution entirely. It might very well be that you mistyped your project name when adding it to your local git.<br />
&nbsp;<br />
<span id="more-1619"></span></p>
<h1>Remove and Add Origins</h1>
<p>Let&#8217;s remove the old name:<br />
<br />
<code class="php">git remote rm origin</code></p>
<p>&nbsp;<br />
Add it again, and don&#8217;t mistype this time:<br />
<br />
<code class="php">git remote add origin git&#64;github.com&#58;Username/Projectname</code><br />Voilà I hope that helps.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Dt5chd-BNl8jnSyDiOQ7SFsz8VA/0/da"><img src="http://feedads.g.doubleclick.net/~a/Dt5chd-BNl8jnSyDiOQ7SFsz8VA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Dt5chd-BNl8jnSyDiOQ7SFsz8VA/1/da"><img src="http://feedads.g.doubleclick.net/~a/Dt5chd-BNl8jnSyDiOQ7SFsz8VA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/pVfpCN_lO3Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/github-permission-denied-publickey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://meshfields.de/github-permission-denied-publickey/</feedburner:origLink></item>
		<item>
		<title>Spider and parse any big Web site</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/ImzHNywudP4/</link>
		<comments>http://meshfields.de/spide-parse/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 13:16:20 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[crawl]]></category>
		<category><![CDATA[crawler]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[fsf]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[spider]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1616</guid>
		<description><![CDATA[Ok, the title is not for the light-hearted, but neither is this tutorial. First of all you will need a full-fledged gnu/Linux Operating System, or as we Free Software followers say, you&#8217;ll need a real operating system. &#160; Now let&#8217;s &#8230; <a href="http://meshfields.de/spide-parse/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ok, the title is not for the light-hearted, but neither is this tutorial. First of all you will need a full-fledged gnu/Linux Operating System, or as we Free Software followers say, you&#8217;ll need a <em>real</em> operating system.<br />
&nbsp;<br />
Now let&#8217;s suppose you need to know how many ad-tags your target Web site has coded into its source code. I assume that you are not the owner of that page and you have no idea of its page structure nor how deep the rabbit hole goes. </p>
<p><span id="more-1616"></span><br />
</p>
<h1>Prerequisites</h1>
<p>You will need to download <a href="http://j-spider.sourceforge.net/">JSpider</a> for this tutorial. After extraction change directory into the <span>bin</span> folder. I highly recommend you to read the documentation of JSpider, on how to use a Proxy Server, how to limit the crawling depth and so forth. Even if it is just to get a feeling of this powerfool free software tool.</p>
<p>If GEO location is an issue, you should think about changing to a different proxy server by editing this configuration file: <span>jspider.properties</span> in the <span>conf/checkErrors</span> folder.</p>
<p>In the first step we will start crawling the page in the default settings and redirect the raw output to a textfile.</p>
<p>&nbsp;<br />
<code class="php">./jspider.sh http://www.allthingsbeautiful.org > atb.txt</code>&nbsp;<br />Now, this is going to take a while. Depending on the size of the Web site and in particular the depth of your configuration, this might take a while.</p>
<p>When you are done, now let&#8217;s get to the interesting part, parsing. <span>jspider-tool.sh</span> is another nice tool shipped with the Jspider package.</p>
<p>&nbsp;</p>
<h1>JSpider-tool</h1>
<p>With the Jspider-tool you can grab HTTP <span>headers</span>, mime-types, <span>download</span> the resource or <span>fetch</span> and display it. We will focus on fetching the entire Web site or to be more specific the pages your JSpider config finds being worthy of getting parsed.</p>
<p>Before putting jspider-tool to use let&#8217;s filter that textfile we produced earlier for the keyword &#8220;<span>parsed</span>&#8220;.<br />
&nbsp;<br />
<code class="php">cat abt.txt | grep parsed</code><br />
Hopefully above command did output a line similar to the following: </p>
<p><span>[Plugin] http://www.abt.org/about parsed (handled)</span></p>
<p>In the final step we will send above URL to <span>jpider-tool</span> and fetch its source by utilising xargs&#8217; handy <span>replace string</span> switch. </p>
<p>Finally we count the number of occurrences of the keyword &#8216;ads&#8217; with <span>grep -c</span>.</p>
<p>This is what I&#8217;m using to parse a Web site and count the occurrences of any keyword.<br />
&nbsp;<br />
<code class="php">cat abt.txt | grep parsed | awk -F " " '{print $2}' | xargs -I replaceStr ./jspider-tool.sh fetch replaceStr | grep ads</code>&nbsp;<br />Please note that the phrase <span>replaceStr</span> is just a variable name and you could use any name, like foobar. <span>awk -F &#8221; &#8220;</span> sets the delimiter to a whitespace. A whitepsace is the default, but I use it anyway. The output of above line should be some number like 1337. </p>
<p>If jspider-tool doesn&#8217;t work for you, you can use <span>curl replaceStr?AnyParameters | grep keyword</span>.</p>
<p>&nbsp;</p>
<h1>Summary</h1>
<p>We used a license-free, extensible free software solution in above tutorial to spider virtually any huge Tier 1 digital property and count the number of occurrences of any keyword. Take a step back and think of the possibilities here. </p>
<p>Now go and try that on patent-restricted software. Exactly. </p>
<p>Hint: It&#8217;s never too late to ask your manager for approving you a Free Software box. Step over to <em>our</em> world..</p>

<p><a href="http://feedads.g.doubleclick.net/~a/AiO06PenLgrD4O8YL_lIyoJok48/0/da"><img src="http://feedads.g.doubleclick.net/~a/AiO06PenLgrD4O8YL_lIyoJok48/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AiO06PenLgrD4O8YL_lIyoJok48/1/da"><img src="http://feedads.g.doubleclick.net/~a/AiO06PenLgrD4O8YL_lIyoJok48/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/ImzHNywudP4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/spide-parse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://meshfields.de/spide-parse/</feedburner:origLink></item>
		<item>
		<title>Bitcoin Mining on Fedora Core 15</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/SehO4YEuPPk/</link>
		<comments>http://meshfields.de/bitcoin-fedora/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 14:30:58 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bitcoin]]></category>
		<category><![CDATA[bitcoins]]></category>
		<category><![CDATA[btc]]></category>
		<category><![CDATA[currency]]></category>
		<category><![CDATA[f15]]></category>
		<category><![CDATA[fc15]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mining]]></category>
		<category><![CDATA[modding]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[rig]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1603</guid>
		<description><![CDATA[I think BitCoin is a great project by a few University enthusiasts worth of my support. Therefore I will mine a few cryptological sequences on my ATI graphics card to support the project and see where it goes. To evenly &#8230; <a href="http://meshfields.de/bitcoin-fedora/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I think BitCoin is a great project by a few University enthusiasts worth of my support. Therefore I will mine a few cryptological sequences on my ATI graphics card to support the project and see where it goes.<br />
<span id="more-1603"></span><br />
To evenly spread the mined coins, mining pools were founded by very friendly people and they are glad if you can help them out at <a href="https://github.com/jine" target="_blank">GitHub</a> as I did.</p>
<p>Let&#8217;s go. First you need a running ATI Graphics Card under Linux. For this task you WILL need the proprietery driver by ATI/AMD, because it has to work seamlessly together with the AMD SDK which we will install, too.</p>
<p>Add RPM Fusion NoArch Repos.<br />
 <br />
<code class="php">rpm -Uv http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm</code><br />
We need some libraries (libGLU) from here:<br />
 <br />
<code class="php">yum install openssl-devel mesa-libGLU-devel</code><br />
Get the AMD APP SDK version 2.1 and if you have to version 2.4, e.g. http://developer.amd.com/Downloads/ati-stream-sdk-v2.1-lnx64.tgz</p>
<p>Untar the SDK anywhere convenient, e.g. <span>/opt</span><br />
 <br />
<code class="php">cd /opt<br />
sudo mv Downloadlocation/ati-stream-sdk-v2.1-lnx64.tgz /opt<br />
sudo tar xfzv ati-stream-sdk-v2.1-lnx64.tgz</code><br />
Download http://developer.amd.com/Downloads/icd-registration.tgz and unpack it into root directory.<br />
 <br />
<code class="php">cd /<br />
sudo mv Downloadlocation/icd-registration.tgz /<br />
tar zxfv icd-registration.tgz</code><br />
Add these lines to your <span>.bash_rc</span> in your user&#8217;s home directory and NOT in your <span>/etc/profile</span> or <span>.bash_rc</span>, since that won&#8217;t work.<br />
 <br />
<code class="php">LD_LIBRARY_PATH=/opt/ati-stream-sdk-v2.1-lnx64/lib/x86_64/:$LD_LIBRARY_PATH<br />
export LD_LIBRARY_PATH<br />
</code><br />
Do an additional manual export for the current session with<br />
 <br />
<code class="php">export LD_LIBRARY_PATH=/opt/ati-stream-sdk-v2.1-lnx64/lib/x86_64/:$LD_LIBRARY_PATH</code><br />
Now -and no other Tutorial got these steps right- rewrite Xorg.conf with<br />
 <br />
<code class="php">sudo aticonfig --initial -f --adapter=all</code><br />
Reboot X or your whole computer system.</p>
<p>Then test:<br />
 <br />
<code class="php">./CLInfo |grep CL_DEVICE_TYPE_GPU</code><br />
You have to see 3 GPUs here &#8211; don&#8217;t continue this tutorial until it outputs three dstinct lines saying <span>Device Type: CL_DEVICE_TYPE_GPU</span></p>
<p>Troubleshooting above step:<br />
 <br />
<code class="php">export DISPLAY=:0<br />
aticonfig --list-adapters<br />
aticonfig --crossfire=off --adapter=all<br />
</code><br />
Finally, the Miners:</p>
<p>Do a numpy package install through the KDE or Gnome panel, which works for many.</p>
<p>Download PyOpenCL<br />
 <br />
<code class="php">cd /home/YourUser/Downloads/ &amp;&amp; wget http://pypi.python.org/packages/source/p/pyopencl/pyopencl-0.92.tar.gz &amp;&amp; tar zxfv pyopencl-0.92.tar.gz &amp;&amp; yum install scipy libboost* gcc-c++ subversion git-core -y &amp;&amp;./configure.py --cl-inc-dir=/opt/ati-stream-sdk-v2.1-lnx64/include/ --cl-lib-dir=/opt/ati-stream-sdk-v2.1-lnx64/lib/x86_64 &amp;&amp; make &amp;&amp; sudo make install</code><br />
Wheww.. hang in there, we are almost finished, now get and install pyopencl:<br />
 <br />
<code class="php">cd pyopencl-0.92 &amp;&amp;./configure.py --cl-inc-dir=/opt/ati-stream-sdk-v2.1-lnx64/include/ --cl-lib-dir=/opt/ati-stream-sdk-v2.1-lnx64/lib/x86_64 &amp;&amp; make &amp;&amp; sudo make install</code><br />
Download, configure and install python-jsonrpc<br />
 <br />
<code class="php">svn checkout http://svn.json-rpc.org/trunk/python-jsonrpc &amp;&amp; cd python-jsonrpc &amp;&amp; sudo python setup.py install &amp;&amp; git clone git://github.com/m0mchil/poclbm poclbm &amp;&amp; cd poclbm &amp;&amp; chmod +x poclbm.py</code><br />
Get Phoenix:</p>
<p><a href="http://forum.bitcoin.org/?topic=6458.0" target="_blank">http://forum.bitcoin.org/?topic=6458.0</a></p>
<p>That&#8217;s it! Congratulations.</p>
<p>Now keep in mind that you have to control fan, clock and memory speeds and monitor temperature closely in order to mine efficiently and not overheat your precious hardware. In Linux one would use ATI&#8217;s command-line tool aticonfig, which is excellent. However, it gets tiresome to start-up all cards and set-up all parameters after a reboot. So I wrote a graphical app for that. You can grab it <a href="http://meshfields.de/apps/">here</a>. Of course it&#8217;s totally free, as in freedom.</p>
<p>To give everything a nice finish, why not install Compiz? I like to mine with style. This step is completely optional!<br />
 <br />
<code class="php">yum install ccsm emerald-themes compizconfig-backend-kconfig fusion-icon-qt emerald compiz-fusion libcompizconfig compiz-bcop compiz compizconfig-python compiz-fusion-extras compiz-kde compiz-manager</code><br />
Don&#8217;t forget: it&#8217;s not about the money &#8211; it&#8217;s about modding and fun! Money comes and goes, especially if its easy money &#8211; it won&#8217;t stay for long with its owner.<br />
 </p>
<div id="attachment_1607" class="wp-caption aligncenter" style="width: 390px"><a href="http://meshfields.de/wp-content/uploads/2011/06/mining-rig2.jpg"><img class="size-full wp-image-1607" title="mining-rig2" src="http://meshfields.de/wp-content/uploads/2011/06/mining-rig2.jpg" alt="" width="380" height="506" /></a><p class="wp-caption-text">Asia style.</p></div>
<p><img style="float: left; margin-right: 10px; margin-bottom: 5px;" src="http://meshfields.de/wp-content/themes/beta/img/BC_nBG_48px.png" alt="BitCoin Logo" width="126" height="48" />If you found this tutorial helpful why not donate a tiny amount of Bitcoins to my address: <strong>15DNbzruPy6b6MDutAqRE6BnruhpktGbiH</strong> and let me know in the comments below.</p>
<div class="sources">Sources:<br />
<a href="http://forum.bitcoin.org/?topic=3359.0;all" target="_blank">http://forum.bitcoin.org/?topic=3359.0;all</a><br />
<a href="http://forums.amd.com/devforum/messageview.cfm?catid=390&amp;threadid=147002" target="_blank">http://forums.amd.com/devforum/messageview.cfm?catid=390&amp;threadid=147002</a><br />
<a href="http://www.overclock.net/linux-unix/517861-how-overclocking-ati-cards-linux.html" target="_blank">http://www.overclock.net/linux-unix/517861-how-overclocking-ati-cards-linux.html</a></div>

<p><a href="http://feedads.g.doubleclick.net/~a/zkOCJH1oQqQioY68asJEm5MXVmY/0/da"><img src="http://feedads.g.doubleclick.net/~a/zkOCJH1oQqQioY68asJEm5MXVmY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/zkOCJH1oQqQioY68asJEm5MXVmY/1/da"><img src="http://feedads.g.doubleclick.net/~a/zkOCJH1oQqQioY68asJEm5MXVmY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/SehO4YEuPPk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/bitcoin-fedora/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://meshfields.de/bitcoin-fedora/</feedburner:origLink></item>
		<item>
		<title>Build Linux drivers for ATI 6450 on FC15</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/Hir2S6srTB8/</link>
		<comments>http://meshfields.de/linux-drivers-ati-6450-fc15/#comments</comments>
		<pubDate>Sat, 28 May 2011 18:06:20 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[4650]]></category>
		<category><![CDATA[ati]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[f15]]></category>
		<category><![CDATA[fc15]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[radeon]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1597</guid>
		<description><![CDATA[The 6450 is a great card, it&#8217;s cheap, cool and needs only 8 Watts. Powered by Renewable Energy I can use this card as yet another point made against energy waste. Let&#8217;s get it to running in Linux.. I sold &#8230; <a href="http://meshfields.de/linux-drivers-ati-6450-fc15/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The 6450 is a great card, it&#8217;s cheap, cool and needs only 8 Watts. Powered by Renewable Energy I can use this card as yet another point made against energy waste. Let&#8217;s get it to running in Linux..<br />
<span id="more-1597"></span><br />
I sold my iMac and build two high performing Intel SandyBridges with Intel SSD&#8217;s from the proceeds. I decided there&#8217;s no going back to Windows nor MacOSX, that would be a step back. So Linux it is. Fedora Core 15 with Gnome3 was released yesterday, so I take that one, of course you can always switch to KDE or another Window Manager.</p>
<p>&nbsp;</p>
<h1>Preparation of the Kernel</h1>
<p>
Become root for the ease of use of this tutorial.<br />
<br />
<code class="php">yum update</code><br />Reboot.<br />
<br />
<code class="php">yum install kernel-headers kernel-devel gcc </code><br />Check if <span>lib/modules/`uname -r`/source</span> is correctly linked to build and if the kernel headers with the correct kernel version (<span>uname -r</span>) are in the build directory. Maybe you have to reboot into the correct kernel version first after doing <span>update</span>.<br />
&nbsp;</p>
<h1>Installation of the ATI drivers</h1>
<p>Download the drivers from the ATI homepage and finally install them.<br />
<br />
<code class="php">bash ati-driver-installer-11-5-x86.x86_64.run</code><br />Check in Ati install log if the drivers compiled a kernel module against the kernel headers with <span>cat /usr/shr/ati/fglrx-install.log</span></p>
<p>Reboot and test your install.<br />
<br />
<code class="php">fglrxinfo<br />
</code><br />This is what you want to see in the end:<br />
<br />
<code class="php">display: :0  screen: 0<br />
OpenGL vendor string: ATI Technologies Inc.<br />
OpenGL renderer string: AMD Radeon HD 6450<br />
OpenGL version string: 4.1.10750 Compatibility Profile Context<br />
</code><br />Test your framerate:<br />
<br />
<code class="php">fgl_glxgears<br />
</code><br />You should see at least 200/300 FPS (depending on your GPU) in Gnome3<br />
<br />
<code class="php">Using GLX_SGIX_pbuffer<br />
1539 frames in 5.0 seconds = 307.800 FPS<br />
1838 frames in 5.0 seconds = 367.600 FPS<br />
1828 frames in 5.0 seconds = 365.600 FPS<br />
1835 frames in 5.0 seconds = 367.000 FPS<br />
</code></p>
<p></code><br />This is what I got in KDE with Compiz-Fusion<br />
<br />
<code class="php">Using GLX_SGIX_pbuffer8002 frames in 5.0 seconds = 1600.277 FPS<br />
7999 frames in 5.0 seconds = 1597.831 FPS<br />
8106 frames in 5.0 seconds = 1621.128 FPS<br />
6598 frames in 5.0 seconds = 1319.523 FPS<br />
</code></p>
<p>Above great framerates I achieved with the propietary drivers. However, I get a nasty right corner sticky-mouse bug with Compiz. Users of other distributions are also repporting this with the 11.5 ATI drivers. That's why I switched to the akmod drivers, they lack 3D support (glxgears at 60fps I call hardly 3D support), but 2D is fine with Compiz - and no bugs.</p>
<p>&nbsp;</p>
<h1>Troubleshooting</h1>
<p>If you screw up during install and cannot get back into the system you have to check with your BIOS and boot from USB or LiveCD and try to fix your drive or re-install. With nowadays Processor power and a SSD a OS reinstall should take below 60 seconds. Try to beat that while charging no money for your OS, Microshaft and Crapple!</p>
<p>For instance I did reboot without checking if ATI did compile a kernel module (you will need that one!). So  my OS (FC15) hanged during the boot sequence when entering init.rd, maybe when switching to runlevel 5. I therefore booted to the live usb stick and mounted my system disk, which can be a bit confusing if you are new to Logical Volume Groups.<br />
<br />
<code class="php">pvs<br />
lvdisplay /dev/VolumeGroupName<br />
vgchange -a y VolumeGroupName<br />
mkdir /mnt/system<br />
mount /dev/VolumeGroupName/lv_root /mnt/system/<br />
</code><br />You now can edit either edit Xorg <span>mnt/system/etc/X11/xorg.conf</span> or switch of automatic boot to the XServer with <span>/etc/inittab</span>. However, in Fedora Core 15 the Init Dameon is legacy (there goes the usefullness of your LPIC or RHCL certification). So we have to link to the text-mode, which was referred to as initlevel 3.<br />
<br />
<code>rm /mnt/system/etc/systemd/system/default.target<br />
ln -s /mnt/system/lib/systemd/system/runlevel3.target /mnt/system/etc/systemd/system/default.target<br />
</code><br />
In case you need to <span>chroot</span> to your mounted system, do it like this. It will load the proper environment variables and add a reminder that you are chrooted to your shell:<br />
<br />
<code class="php">chroot /mnt/gentoo /bin/bash<br />
env-update<br />
source /etc/profile<br />
export PS1="(chroot) $PS1"</code></p>
<p>&nbsp;</p>
<h1>Switch to OpenSource Drivers</h1>
<p>It might be necessary to uninstall the ATI drivers. Remember to keep your important files somewhere hidden on a USB HDD or NAS during re-install and cutting edge experiments like this.<br />
<br />
Remove ATI propietary drivers<br />
<br />
<code class="php">sudo yum remove xorg-x11-drv-ati<br />
</code><br />Force them to vanish (could lead to errors)<br />
<br />
<code class="php">sudo /usr/share/ati/amd-uninstall.sh --force<br />
</code><br />Repair Mesa<br />
<br />
<code class="php">yum reinstall mesa-libGL<br />
</code><br />Install the F15 Drivers from the RPM-Fusion repository<br />
<br />
<code class="php">rpm -Uvh  http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm   http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm<br />
yum install akmod-catalyst xorg-x11-drv-catalyst xorg-x11-drv-catalyst-libs.i686<br />
</code><br />
&nbsp;</p>
<h1>Conclusion</h1>
<p>
Overall it can be quite the hassle to getting OpenGL work in Linux, especially if you are a newbie. However it's absolutely worth the effort. I ditched Gnome3 because it's absolutely bollocks. I use KDE with Compiz-Fusion now and it's absolutely goregous <em>(<a href="http://www.youtube.com/watch?v=Y4wB3GUemVw" target="_blank">http://www.youtube.com/watch?v=Y4wB3GUemVw</a>)</em>.</p>
<p>Suddenly MacOSX or Windows 7 feels like going by foot, while KDE 4.6.3. with a 2.8 Linux Kernel empowered by yum package management feels like riding a Full Suspension Bike. So good bye WindoZe and WackOS, I am home.<br />
</p>
<div class="sources">Links:<br />
<a target="_blank" href="http://www.linuxquestions.org/questions/linux-hardware-18/kernel-module-build-environment-not-found-trying-to-install-ati-drivers-759893/">Build Kernel Modules</a><br />
<a target="_blank" href="http://www.x.org/wiki/radeonBuildHowTo">Official Xorg How-To</a><br />
<a target="_blank" href"https://wiki.ubuntu.com/X/Troubleshooting/FglrxInteferesWithRadeonDriver#Problem:%20%20Need%20to%20fully%20remove%20-fglrx%20and%20reinstall%20-ati%20from%20scratch">fglrx interferes with radeon driver problem</a><br />
<a target="_blank" href="http://www.if-not-true-then-false.com/2010/fedora-13-ati-catalyst-proprietary-drivers-fglrx/">Fedora 13 ATI Catalyst (fglrx) 10.11 Drivers Install/Uninstall</a><br />
The only error I get with ATI 11.5 drivers: <a target="_blank" href="http://forum.xfce.org/viewtopic.php?id=5972&#038;p=1">Right Corner Sticky</a>
</div>

<p><a href="http://feedads.g.doubleclick.net/~a/G79bdMMZGeuYcbMugkpZRktSBvY/0/da"><img src="http://feedads.g.doubleclick.net/~a/G79bdMMZGeuYcbMugkpZRktSBvY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/G79bdMMZGeuYcbMugkpZRktSBvY/1/da"><img src="http://feedads.g.doubleclick.net/~a/G79bdMMZGeuYcbMugkpZRktSBvY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/Hir2S6srTB8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/linux-drivers-ati-6450-fc15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://meshfields.de/linux-drivers-ati-6450-fc15/</feedburner:origLink></item>
		<item>
		<title>Code review of my.fdp.de</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/W8qiXTVYM5Y/</link>
		<comments>http://meshfields.de/fdp/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 16:38:18 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[deutschland]]></category>
		<category><![CDATA[fdp]]></category>
		<category><![CDATA[germany]]></category>
		<category><![CDATA[liberalen]]></category>
		<category><![CDATA[liberals]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[westerwelle]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1586</guid>
		<description><![CDATA[The ruling german party, the center-right FDP, offers Internet services to voters and party members via an online portal. Their latest idea is to form a regional association called LV Net, where they supposedly will discuss Web related politics. As &#8230; <a href="http://meshfields.de/fdp/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The ruling german party, the center-right FDP, offers Internet services to voters and party members via an online portal. Their latest idea is to form a regional association called LV Net, where they supposedly will discuss Web related politics. As a member of the german Piratenpartei I felt it was my responsibility to do a quick code review of their Web portal <a href="http://my.fdp.de" target="_blank">http://my.fdp.de</a>.<br />
<span id="more-1586"></span><br />
Let&#8217;s go.<br />
&nbsp;<br />
<strong>Line 1</strong><br />
- legacy Html 4, hatched in 1997.</p>
<p><strong>Line 3</strong><br />
- legacy Charset Windows-1252, from 1998. 8 bit (e.g. UTF-8 has 4 Byte thus 11.000 times more characters than the Microsoft format the FDP uses (2^21/191).</p>
<p><strong>Line 8 (et seq.)</strong><br />
- multiple external, self-hosted Javascript files. Thus useless HTTP requests occur, resulting in very bad usability.<br />
- a torrent of global variables, for instance referenced to with <span>x, y</span> (!sic), far from being compatible to ECMA Script 5.<br />
- bug-prone coding style, e.g. multiple boolean operators without parentheses, <span>a &#038;&#038; b || c != d</span>.<br />
- vulnerable to type cohersion by not using triple equality operators like in <span>wmtt != null</span>.<br />
- Semicolon insertion possible by not using 1TBS (One True Brace Style).<br />
- The DOM is accessed before it has even started to load. Ouch!<br />
- Tables. Ow!</p>
<p>The list even goes on, like they&#8217;ve not already made every single error there is to make. But for the sake of the health of your eyes, I will stop here.</p>
<p>All in all, I give the page a F for fail. And I would suggest you don&#8217;t vote for the FDP if you want Germany to play at least a minor role in the future of the World Wide Web. Let me kindly suggest participating at <a href="http://piratenpartei.de" target="_blank">http://piratenpartei.de</a> as an alternative. Voting is overrated.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/EMdK_GM_mvZuDLX9rHkAICtfQEk/0/da"><img src="http://feedads.g.doubleclick.net/~a/EMdK_GM_mvZuDLX9rHkAICtfQEk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/EMdK_GM_mvZuDLX9rHkAICtfQEk/1/da"><img src="http://feedads.g.doubleclick.net/~a/EMdK_GM_mvZuDLX9rHkAICtfQEk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/W8qiXTVYM5Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/fdp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://meshfields.de/fdp/</feedburner:origLink></item>
		<item>
		<title>What is Usability Design?</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/rLWjt34cFwM/</link>
		<comments>http://meshfields.de/usability-design/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 05:20:07 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1559</guid>
		<description><![CDATA[Weather you are a Web designer, programmer or project manager &#8211; if you want to know how to create competitive Web sites, software as a service applications or mobile phone software you have to know about Usability Design, in short &#8230; <a href="http://meshfields.de/usability-design/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Weather you are a Web designer, programmer or project manager &#8211; if you want to know how to create competitive Web sites, software as a service applications or mobile phone software you have to know about Usability Design, in short UX. <span id="more-1559"></span><br />
&nbsp;<br />
This tutorial is mostly, but not completely copied from <em><a title="Author bio" href="http://www.useit.com/jakob/">Jakob Nielsen</a></em>, one of the most important figures in Usability Design. He bundled together and described in great detail 3 Design models to maximize usability of any application, weather off- or online.<br />
</p>
<ul>
<li>Competitive testing</li>
<li>Parallel design</li>
<li>Iterative design</li>
</ul>
<p>You have to try (and test) <strong>multiple design ideas</strong>.  Competitive, parallel, and iterative testing are simply 3 different ways  to consider design alternatives. By <strong>combining</strong> them, you get <strong>wide  diversity </strong>at a<strong> lower cost</strong> <strong>than</strong> simply sticking to a <strong>single approach</strong>.</p>
<p><strong>Iterative</strong>: Keep going for as many iterations as your budget allows. Test iterations via Heuristic Evaluation.</p>
<p>The goal of <strong>heuristic</strong> evaluation is to find the usability problems in  the design so that  they can be attended to as part of an iterative  design process.  Heuristic evaluation involves having a small set of  evaluators examine  the interface and judge its compliance with  recognized usability  principles (the &#8220;heuristics&#8221;).</p>
<p>3-5 evaluators check the proposed Design/Wireframe against the Heuristic list each iteration.<br />
&nbsp;</p>
<blockquote><p>
<strong>&#8216;Heuristic</strong> (pronounced <a title="Wikipedia:IPA for English" href="http://en.wikipedia.org/wiki/Wikipedia:IPA_for_English">/hjʉˈrɪstɨk/</a>) or <strong>heuristics</strong> (from the <a title="Greek language" href="http://en.wikipedia.org/wiki/Greek_language">Greek</a> &#8220;Εὑρίσκω&#8221; for <strong>&#8220;find&#8221;</strong> or <strong>&#8220;discover&#8221;</strong>) refers to experience-based techniques for problem solving, learning, and discovery.&#8217; &#8211; Wikipedia.</p></blockquote>
<p>&nbsp;</p>
<h1>Parallel Design</h1>
<p>In a parallel design process, you create <strong>multiple alternative designs</strong> at the same time. You can do this either by encouraging a single  designer to really push their creativity or by assigning different  design directions to <strong>different designers</strong>, each of whom makes one draft  design.</p>
<p>Use <strong>cheap methods </strong>if parallel designing, e.g. <strong>Wireframing</strong></p>
<p>&nbsp;<br />
<span style="border: 0pt none;"><img class="aligncenter size-full wp-image-1562" title="Bildschirmfoto 2011-03-04 um 00.29.01" src="http://meshfields.de/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-00.29.01.png" alt="" width="442" height="635" /></span></p>
<p>&nbsp;<br />
After wireframing you could go to interactive wireframing and then the actual visual design. Let the the user test up to 2-3 designs. The first one will be the one where the testers are the freshest, so variate the order. When finished <strong>take the best elements</strong> out of all different designs and <strong>merge the designs</strong>. Then refine this new design with iterative testing.</p>
<ul>
<li>Out of 4 parallel versions,  pick the best one and iterate on it. This approach resulted in measured usability 56% higher than the average of the 4 designs.</li>
<li>Follow the recommended process and use a merged design, instead of picking a winner. Here, measured usability was 70% higher.</li>
<li>After one iteration, measured usability was 152% higher.</li>
</ul>
<p><strong>Stanford</strong> University took this approach to the domain of Internet advertising. <strong>Ads</strong> created through a parallel design process <strong>performed 67% better</strong>.</p>
<p>In a competitive usability study, you <strong>test your own design and 3–4 other companies&#8217; designs</strong>. Competitive testing is advantageous in that you don&#8217;t spend resources creating early design alternatives. But as always, quantitative measurements provide weaker insights than qualitative research.</p>
<p>Combining these 3 methods prevents you from being stuck with your best  idea and maximizes your chances of hitting on something better.</p>
<p>At each step, you should be sure to <strong>judge the designs based on empirical observations</strong> of real user behavior instead of your own preferences.</p>
<p>&nbsp;</p>
<h1>Ten Usability Heuristics</h1>
<p>These are ten general principles for user interface design. They are  called &#8220;heuristics&#8221; because they are more in the nature of rules of  thumb than specific usability guidelines.</p>
<p>&nbsp;</p>
<dl>
<dt><strong>Visibility of system status</strong> </dt>
<dd>The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1571" style="padding-left: 125px;" title="basecamp" src="http://meshfields.de/wp-content/uploads/2011/03/basecamp.png" alt="" width="312" height="98" /><br />
BaseCamp by 37Signals<br />
&nbsp;</p>
</dd>
<dt><strong>Match between system and the real world</strong> </dt>
<dd>The system should speak the users&#8217; language, with words,  phrases and concepts familiar to the user, rather than system-oriented  terms. Follow real-world conventions, making information appear in a  natural and logical order. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1572" title="itunes" src="http://meshfields.de/wp-content/uploads/2011/03/itunes.png" alt="" width="163" height="233" /><br />
iTunes </dd>
<p>&nbsp;</p>
<dt><strong>User control and freedom</strong> </dt>
<dd>Users often choose system functions by mistake and will need a  clearly marked &#8220;emergency exit&#8221; to leave the unwanted state without  having to go through an extended dialogue. Support undo and redo. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1565" title="Bildschirmfoto 2011-03-04 um 02.49.11" src="http://meshfields.de/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-02.49.11.png" alt="" width="500" height="329" /><br />
&nbsp;<br />
CollabFinder </dd>
<p>&nbsp;</p>
<dt><strong>Consistency and standards</strong> </dt>
<dd>Users should not have to wonder weather different words,  situations, or actions mean the same thing. Follow platform conventions</dd>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1573" title="gmail" src="http://meshfields.de/wp-content/uploads/2011/03/gmail.png" alt="" width="129" height="169" /><br />
Gmail </dd>
<p>&nbsp;</p>
<dt><strong>Error prevention</strong> </dt>
<dd>Even better than good error messages is a careful design which  prevents a problem from occurring in the first place. Either eliminate  error-prone conditions or check for them and present users with a  confirmation option before they commit to the action. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1583" title="webform" src="http://meshfields.de/wp-content/uploads/2011/03/webform.png" alt="" width="320" height="114" /><a href="http://meshfields.de/wp-content/uploads/2011/03/Bildschirmfoto-2011-03-04-um-02.57.27.png"><br />
</a>Web Form Design by Luke W. </dd>
<p>&nbsp;</p>
<dt><strong>Recognition rather than recall</strong> </dt>
<dd>Minimize the user&#8217;s memory load by making objects, actions, and  options visible. The user should not have to remember information from  one part of the dialogue to another. Instructions for use of the system  should be visible or easily retrievable whenever appropriate. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1574" title="keynote" src="http://meshfields.de/wp-content/uploads/2011/03/keynote.png" alt="" width="275" height="227" /><br />
Keynote </dd>
<p>&nbsp;</p>
<dt><strong>Flexibility and efficiency of use</strong> </dt>
<dd>Accelerators &#8212; unseen by the novice user &#8212; may often speed up  the interaction for the expert user such that the system can cater to  both inexperienced and experienced users. Allow users to tailor frequent  actions. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1575" title="numbers" src="http://meshfields.de/wp-content/uploads/2011/03/numbers.png" alt="" width="387" height="235" /><br />
Numbers </dd>
<p>&nbsp;</p>
<dt><strong>Aesthetic and minimalist design</strong> </dt>
<dd>Dialogues should not contain information which is irrelevant or  rarely needed. Every extra unit of information in a dialogue competes  with the relevant units of information and diminishes their relative  visibility. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1576" title="kontain" src="http://meshfields.de/wp-content/uploads/2011/03/kontain.png" alt="" width="313" height="251" /><br />
Kontain </dd>
<p>&nbsp;</p>
<dt><strong>Help users recognize, diagnose, and recover from errors</strong> </dt>
<dd>Error messages should be expressed in plain language (no  codes), precisely indicate the problem, and constructively suggest a  solution. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1577" title="digg" src="http://meshfields.de/wp-content/uploads/2011/03/digg.png" alt="" width="289" height="169" /><br />
&nbsp;<br />
Digg </dd>
<p>&nbsp;</p>
<dt><strong>Help and documentation</strong> </dt>
<dd>Even though it is better if the system can be used without  documentation, it may be necessary to provide help and documentation.  Any such information should be easy to search, focused on the user&#8217;s  task, list concrete steps to be carried out, and not be too large. </dd>
<p>&nbsp;</p>
<dd style="text-align: center;"><img class="aligncenter size-full wp-image-1578" title="flickr" src="http://meshfields.de/wp-content/uploads/2011/03/flickr.jpg" alt="" width="450" height="552" /><br />
Flickr </dd>
</dl>
<p>&nbsp;<br />
Heuristic evaluation is performed by having each individual evaluator <strong> inspect the interface alone</strong>. This procedure is important in order to ensure  independent and <strong>unbiased evaluations </strong>from each evaluator. The results of  the evaluation can be recorded either as written reports from each  evaluator or by having the evaluators <strong>verbalize their comments</strong> to an  observer as they go through the interface.</p>
<p>During the evaluation session, the evaluator goes through the interface  several times and inspects the various dialogue elements and compares  them with a list of recognized usability principles (the heuristics).</p>
<p>&nbsp;</p>
<h1>Software specific Heuristics</h1>
<p>One way of building a supplementary list of category-specific heuristics  is to perform <strong>competitive analysis</strong> and user testing of existing  products in the given category and try to abstract principles to explain  the usability problems that are found (Dykstra 1993).</p>
<p>One approach that has been applied successfully is to <strong>supply</strong> the evaluators with a <strong>typical usage scenario</strong>, listing the various steps a user would take to perform a sample set of realistic tasks.</p>
<p>The <strong>output</strong> from using the heuristic evaluation method is a <strong>list of  usability problems</strong> in the interface with references to those usability  principles that were <strong>violated</strong> by the design in each case in the opinion  of the evaluator. Detailed answers are needed.</p>
<p><strong>Debriefing Meeting</strong>: A debriefing is also a good opportunity for discussing the positive  aspects of the design, since heuristic evaluation does not otherwise  address this important issue.</p>
<p>&nbsp;</p>
<h1>Example Interface</h1>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1582" title="deviant" src="http://meshfields.de/wp-content/uploads/2011/03/deviant.png" alt="" width="547" height="400" />DeviantArt (Creative Commons)</p>
<p>&nbsp;</p>
<h1>Accessibility</h1>
<p>A good site, service or application also takes into account if it needs to be used by the hearing impaired and a screen reader, or weather your users use mobile devices, such as smartphones, tablet PCs or others. Evaluate if your users prefer or are bound to a keyboard and provide shortcuts.<br />
&nbsp;<br />
I hope you enjoyed this tutorial on Usability. Why don&#8217;t you subscribe to my RSS feed? I also appreciate any comments in the section below. Thanks for reading.</p>
<div class="sources">
Sources: <a target="_blank" href="http://designingwebinterfaces.com/6-tips-for-a-great-flex-ux-part-5">http://designingwebinterfaces.com/6-tips-for-a-great-flex-ux-part-5</a></div>

<p><a href="http://feedads.g.doubleclick.net/~a/cH8xjD9alADBJ1V21HZ9Qw3uNk0/0/da"><img src="http://feedads.g.doubleclick.net/~a/cH8xjD9alADBJ1V21HZ9Qw3uNk0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cH8xjD9alADBJ1V21HZ9Qw3uNk0/1/da"><img src="http://feedads.g.doubleclick.net/~a/cH8xjD9alADBJ1V21HZ9Qw3uNk0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/rLWjt34cFwM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/usability-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://meshfields.de/usability-design/</feedburner:origLink></item>
		<item>
		<title>Mindtouch 400 Bad Request / Response Status Code: 0</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/Uf_lxl3tr2M/</link>
		<comments>http://meshfields.de/mindtouch-400-bad-request/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 13:08:59 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[dekiwiki]]></category>
		<category><![CDATA[mindtouch]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1556</guid>
		<description><![CDATA[In case you receive a 400 Bad Request when creating new Mindtouch Wiki Pages or your API won&#8217;t load at all and returns HTTP Response Status Code: 0, it is most certainly a permissions problem on your server infrastructure. Make &#8230; <a href="http://meshfields.de/mindtouch-400-bad-request/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In case you receive a <span>400 Bad Request</span> when creating new Mindtouch Wiki Pages or your API won&#8217;t load at all and returns HTTP Response Status Code: 0, it is most certainly a permissions problem on your server infrastructure.<br />
<span id="more-1556"></span><br />
Make sure the group under which your Web server runs, has write permissions to the cache directory of Mindtouch.</p>
<p>&nbsp;</p>
<pre><code class="php">sudo chmod 775 -R /var/www/html/dekiwiki/bin/cache/luceneindex/</code></pre>
<p>If that doesn&#8217;t help you might want to tweak the mod_rewrite settings in your apache configuration. Just add deki to the mod rewrites, this could solve issues you might experience when using Mindtouch with SSL, for instance if the WYSIWYG ckEditor 3.0 doesn&#8217;t load.<br />
&nbsp;</p>
<pre><code class="php">RewriteCond %{REQUEST_URI} !^/(@api|editor|skins|config|deki)/</code></pre>
<p>You can also empty the cache in the backend of Mindtouch to work around issues. Also give the Wiki&#8217;s error log file a visit to pinpoint the root cause.<br />
&nbsp;</p>
<pre><code class="php">tail -n 20 /var/log/dekiwiki/deki-api.log</code></pre>
<p>That&#8217;s it for now, but I might extend this troubleshooting document at a later date. </p>
<p>In case you enjoyed this tutorial, please leave a comment below &#8211; every comment enlightens my day.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/EBBFORlFQYB5XlsheL94BAqM-iw/0/da"><img src="http://feedads.g.doubleclick.net/~a/EBBFORlFQYB5XlsheL94BAqM-iw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/EBBFORlFQYB5XlsheL94BAqM-iw/1/da"><img src="http://feedads.g.doubleclick.net/~a/EBBFORlFQYB5XlsheL94BAqM-iw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/Uf_lxl3tr2M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/mindtouch-400-bad-request/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://meshfields.de/mindtouch-400-bad-request/</feedburner:origLink></item>
		<item>
		<title>Wikileaks</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/TJ5UwRKEuO0/</link>
		<comments>http://meshfields.de/wikileaks/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 15:04:56 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accord]]></category>
		<category><![CDATA[afghan]]></category>
		<category><![CDATA[boys]]></category>
		<category><![CDATA[cablegate]]></category>
		<category><![CDATA[censorship]]></category>
		<category><![CDATA[climate]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[dancing]]></category>
		<category><![CDATA[manipulation]]></category>
		<category><![CDATA[spain]]></category>
		<category><![CDATA[usa]]></category>
		<category><![CDATA[wikileaks]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1546</guid>
		<description><![CDATA[This is the first non-technical post of meshfields ever. It is a break because I never wanted to pollute this blog with politics. You might disagree with my opinions. And that is perfectly fine. &#160; One could arguably say that &#8230; <a href="http://meshfields.de/wikileaks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is the first non-technical post of meshfields ever. It is a break because I never wanted to pollute this blog with politics. You might disagree with my opinions. And that is perfectly fine.<br />
&nbsp;<br />
One could arguably say that Wikileaks is breaking United States law. But Wikileaks servers are not located in the United States. The US is shutting down Wikileaks DNS records without any involvement of the judiciary.<span id="more-1546"></span> Moreover a US senator called for the assassination of Julian Assange, the founder of Wikileaks.</p>
<p>I leave it up to you to decide who is breaking the law in this case.<br />
&nbsp;</p>
<h1>Disclosures</h1>
<p>If you are still not sure if more transparency in our governments is a good thing, then maybe the following selection of the 2010 Wikileak cables will change your mind.</p>
<p>Foreign contractors hired Afghan &#8216;dancing boys&#8217;<br />
<a href="http://j.mp/hXNvtV" target="_blank">http://j.mp/hXNvtV </a></p>
<p>US manipulated climate accord in Copenhagen<br />
<a href="http://j.mp/hGvkw0" target="_blank">http://j.mp/hGvkw0 </a></p>
<p>US wrote Spain&#8217;s proposed copyright law<br />
<a href="http://bit.ly/epFDf5" target="_blank">http://bit.ly/epFDf5</a></p>
<p>&nbsp;</p>
<h1>Supporters</h1>
<p>An US Senator from Texas says:</p>
<p><a href="http://meshfields.de/wp-content/uploads/2010/12/ronpaul.png" style="border:none;"><img src="http://meshfields.de/wp-content/uploads/2010/12/ronpaul.png" alt="" title="ronpaul" width="641" height="393" class="aligncenter size-full wp-image-1547" /></a></p>
<p>&nbsp;<br />
You can follow Ron Paul on <a href="http://twitter.com/#!/RepRonPaul/status/10716266021003264" target="_blank">Twitter</a>.</p>
<p><a href="http://bit.ly/gRpfT8" target=_bla">Youtube</a>: Ron Paul &#8211; Don&#8217;t Blame Wikileaks!</p>
<p>I also want to quote John F. Kennedy, the assassinated US President, who once said:<br />
&nbsp;</p>
<blockquote><p>&#8216;The very word secrecy is repugnant in a free and open society. Inherently and historically, we as a people are opposed to secret proceedings and concealment.&#8217;</p></blockquote>
<p>&#8211; John F. Kennedy, New York City, April 27, 1961</p>
<p>&nbsp; <br />
&nbsp; <br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/xhZk8ronces?fs=1&amp;hl=de_DE"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/xhZk8ronces?fs=1&amp;hl=de_DE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>&nbsp;</p>
<h1>How can you help?</h1>
<p>In case you also think, that a free and open society should not penalize individuals who reveal findings of greater public interest, even if it is classified, you can support WikiLeaks by sending them money or join your state&#8217;s <a href="http://www.pp-international.net/" target="_blank">Pirate Party</a> at the next election. </p>
<p>I myself decided to quit PayPal and just received my last shipment ever from Amazon as both companies pulled their support of wikileaks with no legal obligation in my opinion, but I am no law expert, so I leave it up to you. I for my part look forward to conduct my christmas shopping at alternative online-stores.</p>
<p>If you want to, you can also help by using this iconset to spice up your Social Media Avatar. <em><a href='http://meshfields.de/wp-content/uploads/2010/12/wikileaks-avatar.zip'>(wikileaks-avatar.zip)</a></em></p>
<p>If you are not confident with Graphics you can just grab one of these:<br />
&nbsp;<br />
<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support3.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support7.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support2.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support5.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support1.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support6.jpg" alt="" width="88" height="88"><br />
&nbsp;</p>
<p><img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support10.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support11.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support12.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support13.jpg" alt="" width="88" height="88"> &nbsp; <img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support14.jpg" alt="" width="88" height="88"> &nbsp;<img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support17.jpg" alt="" width="88" height="88"><br />
&nbsp;</p>
<p><img src="http://meshfields.de/wp-content/uploads/2010/12/wikileaks-support16.jpg" alt="" width="88" height="88"><br />
&nbsp;</p>
<h1>Links</h1>
<p>I put together a link list mostly containing links to the free press and media, which I found to be interesting.</p>
<p> <a href="http://bit.ly/gCwn1L" target="_blank">CNN</a>: Times and NYT editors discuss Wikileaks</p>
<p><a href="http://www.washingtontimes.com/news/2010/dec/2/wave-goodbye-to-internet-freedom/" target="_blank">Washington Times</a>: Wave goodbye to Internet freedom</p>
<p><a href="http://gaw.kr/Wikidiocy" target="_blank">Gawker</a>: US gov starts censoring Foxnews.com, CNN.com, MSNBC.com </p>
<p><a href="http://www.youtube.com/watch?v=v5b7M04xPRE" target="_blank">Ron Paul</a> calls Wikileaks Heros in speech</p>
<p><a href="http://www.slate.com/id/2276312/" target="_blank">Slate.com</a>: Why I Love WikiLeas <em>by Jack Shafer</em></p>
<p><a href="http://en.rsf.org/wikileaks-hounded-04-12-2010,38958.html" target="_blank">Reporters Without Borders</a> condemns the blocking, cyber-attacks and political pressure being directed at wikileaks.org.</p>
<p><a href="http://twitter.com/#!/KeithOlbermann/status/11500623224639488" target="_blank">MSNBC</a>: Assange &#8216;rape&#8217; accuser has CIA ties.</p>
<p><a href="http://j.mp/gJZzy6" target="_blank">Rixstep Blog</a>: Julian Assange &#038; Anna Ardin: The person behind the police complaint identified.</p>
<p><a href="http://i8-d.com/2010/12/05/mirror-wikileaks-anonymously-on-your-android-phone/" target="_blank">Google Android</a>: Host a WikiLeaks mirror from your phone.</p>
<p><a href="http://www.couriermail.com.au/news/swedens-justice-system-may-become-a-laughing-stock-over-the-rape-charges-against-wikileaks-figurehead-julian-assange/story-e6freon6-1225965652205">The Sunday Mail (Qld)</a>: Sweden&#8217;s justice system may become a laughing stock over the rape charges against Wikileaks figurehead Julian Assange by <em>James D Catlin</em></p>
<p><a href="http://www.pikchur.com/5tC" target="_blank">USA, UK, Canada, Australia</a> join China in blocking the Internet.</p>
<p><a href="http://www.youtube.com/watch?v=72g7qmeP1dE&#038;feature=player_embedded" target="_blank">Youtube</a>: Transparency will be the touchstones of this presidency. <em>By B Obama</em></p>
<p>&nbsp;<br />
After some thorough evaluation weather to put direct links to Wikileaks on this site I came to the conclusion that it was the right thing to do to support those who are censored and hunted. Let me say it with the words of Beatrice Hall:<br />
&nbsp;</p>
<blockquote><p>&#8216;I detest what you write, but I would give my life to make it possible for you to continue to write&#8217;
</p></blockquote>
<p>   &#8212; Evelyn Beatrice Hall in The Friends of Voltaire (1906)</p>
<p>&nbsp;<br />
Hence since the cyber attacks from the &#8216;dark&#8217; continue &#8212; if you are a responsible journalist &#8212; you can reach Wikileaks on any of <a href="http://wikimirrors.piratskapartija.com" target="_blank">these mirrors</a> or directly <a href="http://wklks.be" target="_blank">here</a>. I also recommend to read about developments on the Guardian, Time Magazine, El Pais, Der Spiegel, other independent media and the blogosphere.</p>
<p>Please follow the independent media like blogs, twitter, facebook, tumblr, identi.ca since the USA and other governments have started to censor their heart out. This censorship agenda of the States and the EU is the biggest threat to freedom of speech, thought and press, that the world has ever faced.</p>
<p>It comes to no surprise that the US is planning to roll out programs like SHIELD and ACTA<a href="http://www.stopacta.info/" target="_blank">*</a> that will effectively silence the media. ACTA<a href="http://www.youtube.com/watch?v=trarJtxixM8&#038;feature=related">*</a> was signed by the EU member states last week.  Senator Liebermann said they will charge the New York Times with espionage and censor US media for ever. You also know from the cables who created the European censorship law and with what unlawful methods.</p>
<p>Our Corporate world made it very clear from the beginning on which side they are on. Google already stopped indexing new Wikileaks mirrors and Mastercard, Visa, Amazon and Paypal have withdrawn without legal obligation their business relationship to Wikileaks. Only the Web 2.0 with Reddit, Twitter and Facebook seems -so far- not willing to join in into this beginning era of censorship. However keep in mind Twitters OAuth is anything but secure as every OAuth allowance you have nodded to can manipulate your account anytime.</p>
<p>I would be interested in your thoughts on weather wikileaks is right or wrong and any other useful links in the comments section below. </p>

<p><a href="http://feedads.g.doubleclick.net/~a/ifuRvXS08mP2WJcH6Ih0LUUZ-vA/0/da"><img src="http://feedads.g.doubleclick.net/~a/ifuRvXS08mP2WJcH6Ih0LUUZ-vA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ifuRvXS08mP2WJcH6Ih0LUUZ-vA/1/da"><img src="http://feedads.g.doubleclick.net/~a/ifuRvXS08mP2WJcH6Ih0LUUZ-vA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/TJ5UwRKEuO0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/wikileaks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://meshfields.de/wikileaks/</feedburner:origLink></item>
		<item>
		<title>SFTP with chroot jail on CentOS</title>
		<link>http://feedproxy.google.com/~r/meshfields/~3/nxuidaQhkeY/</link>
		<comments>http://meshfields.de/sftp-chroot-centos/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 05:28:53 +0000</pubDate>
		<dc:creator>Stephan Kristyn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[5]]></category>
		<category><![CDATA[5.5]]></category>
		<category><![CDATA[5.6]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[RHEL]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://meshfields.de/?p=1463</guid>
		<description><![CDATA[SFTP which uses openssh was engineered by the IETF 2001-2007. It has the potential to replace the insecure and legacy FTP. Another alternative would be WebDAV. It seems like a great alternative to SFTP since it uses HTTP/TCP pipelining and &#8230; <a href="http://meshfields.de/sftp-chroot-centos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>SFTP which uses openssh was engineered by the IETF 2001-2007. It has the potential to replace the insecure and legacy FTP. Another alternative would be WebDAV. It seems like a great alternative to SFTP since it uses HTTP/TCP pipelining and should considerably speed up file transfers. However if you want WebDAV to be secure you would have go through the pain of creating a valid SSL connection.<br />
<span id="more-1463"></span><br />
SFTP should work out of the box if ssh is running on your server. Just connect from your client machine with<br />
&nbsp;</p>
<pre><code class="php">sftp user@hostname.tld
</code></pre>
<p>The connection itself is tunneled over SSH now. However the user will have access to your entire file system and even worse if anyone gained these credentials, he could login via ssh to your server.</p>
<p>Since we don&#8217;t want that, we will have to chroot (jail root) the sftp user and forbid him to use ssh itself. For this you will need openSSH 5 or greater. At the time of this blog post, CentOS 5.5 still ships with the year old openSSH 4.6. Therefore we will have to make a rpm package with the latest openSSH 5.6 sources and install it on our CentOS.<br />
&nbsp;</p>
<pre><code class="php">rpm -qa | grep ssh
yum -y install gcc automake autoconf libtool make openssl-devel pam-devel rpm-build
wget http://ftp.halifax.rwth-aachen.de/openbsd/OpenSSH/portable/openssh-5.6p1.tar.gz
wget http://ftp.halifax.rwth-aachen.de/openbsd/OpenSSH/portable/openssh-5.6p1.tar.gz.asc
wget -O- http://ftp.halifax.rwth-aachen.de/openbsd/OpenSSH/portable/DJM-GPG-KEY.asc | gpg --import
gpg openssh-5.6p1.tar.gz.asc
tar zxvf openssh-5.6p1.tar.gz
cp openssh-5.6p1/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/
cp openssh-5.6p1.tar.gz /usr/src/redhat/SOURCES/
cd /usr/src/redhat/SPECS/
perl -i.bak -pe 's/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/' openssh.spec
rpmbuild -bb openssh.spec
cd /usr/src/redhat/RPMS/`uname -i`
uname -i
ls -l
rpm -Uvh openssh*rpm
/etc/init.d/sshd restart
</code></pre>
<p>Alright what does all this command lines do? First yum installs the gnu compiler with important tools like make, then yum installs openssl development packages and rpm-build. Then I choose a repository from Aachen, Germany, which is nearest from my server&#8217;s location. We also get the gpg signature and import it to our local gpg databse then we check it. The rest is building the rpm package; without GUI support like X11 or gnome, because it&#8217;s not really usable on a server. I must credit some of these steps to someone else on the interwebs: <em><a href="http://binblog.info/2009/02/27/packaging-openssh-on-centos/" target="_blank">http://binblog.info/2009/02/27/packaging-openssh-on-centos/</a></em><br />
I found <span>perl -i.bak -pe &#8216;s/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/&#8217; openssh.spec </span> to be very elegant and I liked also <span>cd /usr/src/redhat/RPMS/`uname -i`</span> very cool. The latter changes directory to the correct build version of your kernel. </p>
<p>Did I mention you should be root to do this?</p>
<p>I do it in one go, absolute hardcore.<br />
&nbsp;</p>
<pre><code class="php">rpm -qa | grep ssh &#038;&#038; yum -y install gcc automake autoconf libtool make openssl-devel pam-devel rpm-build &#038;&#038; wget http://ftp.halifax.rwth-aachen.de/openbsd/OpenSSH/portable/openssh-5.6p1.tar.gz &#038;&#038; wget http://ftp.halifax.rwth-aachen.de/openbsd/OpenSSH/portable/openssh-5.6p1.tar.gz.asc &#038;&#038; wget -O- http://ftp.halifax.rwth-aachen.de/openbsd/OpenSSH/portable/DJM-GPG-KEY.asc | gpg --import &#038;&#038; gpg openssh-5.6p1.tar.gz.asc  &#038;&#038; tar zxvf openssh-5.6p1.tar.gz &#038;&#038; cp openssh-5.6p1/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/ &#038;&#038; cp openssh-5.6p1.tar.gz /usr/src/redhat/SOURCES/ &#038;&#038; cd /usr/src/redhat/SPECS/ &#038;&#038; perl -i.bak -pe 's/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/' openssh.spec  &#038;&#038; rpmbuild -bb openssh.spec &#038;&#038; cd /usr/src/redhat/RPMS/`uname -i` &#038;&#038; uname -i &#038;&#038; ls -l &#038;&#038; rpm -Uvh openssh*rpm
</code></pre>
<p>Better check if it worked.<br />
&nbsp;</p>
<pre><code class="php">rpm -qa | grep ssh
openssh-clients-5.6p1-1
openssh-5.6p1-1
openssh-server-5.6p1-1
</code></pre>
<p>This were the pre-requisites for using chroot with SFTP. I will show how to setup SFTP and prepare your directory structure.</p>
<p>First, setup two new groups. One group <span>fullssh</span> is going to have full access to the Linux filesystem. Just add your main user to the <span>fullssh</span> supplementary group. The other group is called <span>sftponly</span> for our SFTP users that will be jailed to a particular directory.<br />
&nbsp;</p>
<pre><code class="php">groupadd sftponly
useradd pete
usermod -aG sftponly pete
</code></pre>
<p>In above snippet one could also use <span>useradd -G sftponly pete</span>, but in case the user pete exists already the <span>-a</span> switch ensures he is added to the supplemental group <span>sftponly</span> instead of deleting existing supplemental groups.</p>
<p>Now go into <span>/etc/ssh/sshd_config</span> and comment out the default entry for the sftp service.<br />
&nbsp;</p>
<pre><code class="php">#Subsystem      sftp    /usr/lib64/misc/sftp-server
Subsystem       sftp    internal-sftp
AllowGroups fullssh sftponly

Match Group sftponly
        ChrootDirectory /var/www/html
        ForceCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no
</code></pre>
<p>Now let&#8217;s set permissions on the directory structure. This has to be done with great care.<br />
&nbsp;</p>
<pre><code class="php">chown root:sftponly /var/www/html
chmod 755 /var/www/html
mkdir -p /var/www/html/yourDomain
chown pete:sftponly /var/www/html/yourDomain
</code></pre>
<p>Some tutorials on the web suggest setting permissions to 750, but as it turns out this will lock out apache and produces a HTTP 403 Forbidden when accessing your website. We don&#8217;t want that.<br />
With <span>chown</span> you change the owners of the directory to root user-wise and to sftponly group-wise. The user pete should be a member of that group by now. You can check that with <span>groups pete</span>. </p>
<p>Creating the directory with the <span>-p</span> shouldn&#8217;t be necessary in above example, but I included it nonetheless. The switch would take care of creating all necessary parent folders. </p>
<p>This is how the permissions must look like in order to make the ssh / sftp login chain to work.<br />
&nbsp;</p>
<pre><code class="php">ls -lishad /var/www/html
inode 4.0K drwxr-xr-x 3 root sftponly 4.0K Nov  9 10:27 /var/www/html

ls -lishad /var/www/html/yourDomain
inode 4.0K drwxr-xr-x 8 joe sftponly 4.0K Nov  9 11:33 /var/www/html/yourDomain
</code></pre>
<p>Now if you login, ssh has root permissions and handles the login process until the user pete is authenticated. The user is then jail chrooted to the <span>yourDomain</span> directory, at least in my understanding. With SFTP we don&#8217;t need a proper chroot environment with access to /dev or any hardlinks &#8211; therefore it should be rather difficult for an attacker to escape the jail. There exists an exploit [1] since 1999. That is why Solaris and Linux stopped to consider chroot a secure solution. However it is possible to harden [2] a shell chroot environment.</p>
<p>I hope you enjoyed this article. I would appreciate any thoughts on the topic of server security in the comments below. </p>
<p>&nbsp;<br />
<strong>References</strong>
<div class="sources">
[1] chroot exploit<br />
<a href="http://www.bpfh.net/simes/computing/chroot-break.html" target="_blank">http://www.bpfh.net/simes/computing/chroot-break.html</a></p>
<p>[2] chroot HowTo<br />
<a href="http://debian.chains.ch/chroot/chroot.html" target="_blank">http://debian.chains.ch/chroot/chroot.html</a></p>
<p><a href="http://v2.robbyt.com/2008/howto" target="_blank">http://v2.robbyt.com/2008/howto</a>/chrooted-sftp-with-openssh-5/
</div>

<p><a href="http://feedads.g.doubleclick.net/~a/rcHPnqiI9XkfQ4WwIFGJT6JmVJo/0/da"><img src="http://feedads.g.doubleclick.net/~a/rcHPnqiI9XkfQ4WwIFGJT6JmVJo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rcHPnqiI9XkfQ4WwIFGJT6JmVJo/1/da"><img src="http://feedads.g.doubleclick.net/~a/rcHPnqiI9XkfQ4WwIFGJT6JmVJo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/meshfields/~4/nxuidaQhkeY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://meshfields.de/sftp-chroot-centos/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		<feedburner:origLink>http://meshfields.de/sftp-chroot-centos/</feedburner:origLink></item>
	</channel>
</rss>

