<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Logaholic.de &#187; Technik</title>
	<atom:link href="http://www.logaholic.de/category/technik/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.logaholic.de</link>
	<description>queer as code!</description>
	<lastBuildDate>Fri, 05 Feb 2010 10:00:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Reading browser history with css and javascript</title>
		<link>http://www.logaholic.de/2009/10/04/reading-browser-history-with-css-and-javascript/</link>
		<comments>http://www.logaholic.de/2009/10/04/reading-browser-history-with-css-and-javascript/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 19:16:15 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=398</guid>
		<description><![CDATA[This small script demonstrates how to check if a user has visited a particular url with his browser using css and javascript. Simple trick, small script, but could be dangerous &#8211; and you don&#8217;t see a damn thing.
The only protection against this of which i know is NoScript or just turning off JavaScript in your [...]


Related posts:<ol><li><a href='http://www.logaholic.de/2009/04/24/twiddling-with-obfuscated-javascript-code/' rel='bookmark' title='Permanent Link: Twiddling with obfuscated JavaScript code'>Twiddling with obfuscated JavaScript code</a></li><li><a href='http://www.logaholic.de/2009/05/18/uncompressing-zip-files-with-subfolders-in-air-applications-via-javascript/' rel='bookmark' title='Permanent Link: Uncompressing Zip-files with subfolders in AIR applications via JavaScript'>Uncompressing Zip-files with subfolders in AIR applications via JavaScript</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><a title="reading browser history via css and javascript" href="http://www.logaholic.de/showroom/css_js_browser_history/" target="_blank">This small script demonstrates how to check if a user has visited a particular url with his browser using css and javascript</a>. Simple trick, small script, but could be dangerous &#8211; and you don&#8217;t see a damn thing.</p>
<p>The only protection against this of which i know is NoScript or just turning off JavaScript in your browser&#8230;</p>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2009/04/24/twiddling-with-obfuscated-javascript-code/' rel='bookmark' title='Permanent Link: Twiddling with obfuscated JavaScript code'>Twiddling with obfuscated JavaScript code</a></li><li><a href='http://www.logaholic.de/2009/05/18/uncompressing-zip-files-with-subfolders-in-air-applications-via-javascript/' rel='bookmark' title='Permanent Link: Uncompressing Zip-files with subfolders in AIR applications via JavaScript'>Uncompressing Zip-files with subfolders in AIR applications via JavaScript</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/10/04/reading-browser-history-with-css-and-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rotating dom elements with css3 and jscript/jquery animation</title>
		<link>http://www.logaholic.de/2009/09/24/rotating-dom-elements-with-css3-and-jscriptjquery-animation/</link>
		<comments>http://www.logaholic.de/2009/09/24/rotating-dom-elements-with-css3-and-jscriptjquery-animation/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 14:04:27 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[rotating]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=393</guid>
		<description><![CDATA[If you want to rotate dom elements, webkit offers you
-webkit-transform: rotate(0deg);
and firefox offers you
-moz-transform: rotate(0deg);
I hacked together a small demo rotating dom elements with css including some animation with jscript/jquery.


Related posts:Uncompressing Zip-files with subfolders in AIR applications via JavaScript


Related posts:<ol><li><a href='http://www.logaholic.de/2009/05/18/uncompressing-zip-files-with-subfolders-in-air-applications-via-javascript/' rel='bookmark' title='Permanent Link: Uncompressing Zip-files with subfolders in AIR applications via JavaScript'>Uncompressing Zip-files with subfolders in AIR applications via JavaScript</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>If you want to rotate dom elements, webkit offers you</p>
<pre>-webkit-transform: rotate(0deg);</pre>
<p>and firefox offers you</p>
<pre id="line1">-moz-transform: rotate(0deg);</pre>
<p>I hacked together a small <a title="demo rotating dom elements with css including some animation with jscript/jquery" href="http://www.logaholic.de/showroom/css3_rotator/">demo rotating dom elements with css including some animation with jscript/jquery</a>.</p>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2009/05/18/uncompressing-zip-files-with-subfolders-in-air-applications-via-javascript/' rel='bookmark' title='Permanent Link: Uncompressing Zip-files with subfolders in AIR applications via JavaScript'>Uncompressing Zip-files with subfolders in AIR applications via JavaScript</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/09/24/rotating-dom-elements-with-css3-and-jscriptjquery-animation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios: NRPE: Unable to read output error &#8211; check_apachestatus_auto.pl</title>
		<link>http://www.logaholic.de/2009/08/16/nagios-nrpe-unable-to-read-output-error-check_apachestatus_auto-pl/</link>
		<comments>http://www.logaholic.de/2009/08/16/nagios-nrpe-unable-to-read-output-error-check_apachestatus_auto-pl/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 13:55:35 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[NRPE]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=388</guid>
		<description><![CDATA[Today I solved a problem I had with check_apachestatus_auto.pl executed via NRPE.
Running the command as root worked fine but, running as user &#8220;nagios&#8221; just gave no output &#8211; which translated to the error message &#8220;NRPE: Unable to read output error&#8221; on the Nagios NRPE Client.
After checking file permissions, any debug modes and logs i found&#8230; [...]


Related posts:<ol><li><a href='http://www.logaholic.de/2009/06/04/error-0-on-air-application-installation/' rel='bookmark' title='Permanent Link: Error #0 on AIR application installation'>Error #0 on AIR application installation</a></li><li><a href='http://www.logaholic.de/2009/05/11/apache-ssl-and-phpundercontrol/' rel='bookmark' title='Permanent Link: Apache, SSL and phpUnderControl'>Apache, SSL and phpUnderControl</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Today I solved a problem I had with check_apachestatus_auto.pl executed via NRPE.</p>
<p>Running the command as root worked fine but, running as user &#8220;nagios&#8221; just gave no output &#8211; which translated to the error message &#8220;NRPE: Unable to read output error&#8221; on the Nagios NRPE Client.</p>
<p>After checking file permissions, any debug modes and logs i found&#8230; i finally got to /tmp and there was it: &#8220;127.0.0.1&#8230;&#8230;&#8221;, a temporary file created by that particular check plugin. Since i tested the plugin first as root, the file had root-only permissions, and the plugin executed as nagios just stopped somewhere while not being able to use/overwrite that file.</p>
<p>I deleted that particular file, and everything works fine now&#8230;</p>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2009/06/04/error-0-on-air-application-installation/' rel='bookmark' title='Permanent Link: Error #0 on AIR application installation'>Error #0 on AIR application installation</a></li><li><a href='http://www.logaholic.de/2009/05/11/apache-ssl-and-phpundercontrol/' rel='bookmark' title='Permanent Link: Apache, SSL and phpUnderControl'>Apache, SSL and phpUnderControl</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/08/16/nagios-nrpe-unable-to-read-output-error-check_apachestatus_auto-pl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OCZ Apex SSD 120GB and How to move a vista boot partition to a new drive</title>
		<link>http://www.logaholic.de/2009/06/07/ocz-apex-ssd-120gb-and-how-to-move-a-vista-boot-partition-to-a-new-drive/</link>
		<comments>http://www.logaholic.de/2009/06/07/ocz-apex-ssd-120gb-and-how-to-move-a-vista-boot-partition-to-a-new-drive/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 22:38:22 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Acronis True Image]]></category>
		<category><![CDATA[Bootpartition]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[OCZ Apex]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[Vista]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=345</guid>
		<description><![CDATA[My newest toy arrived today: OCZ Apex SSD 120Gb &#8211; a very fast Solid State Drive. The manufacturer tags it with &#8220;230mb/s read, 160mb/s write, &#60;0.3ms access time&#8221;.
After my six hour hassle of (trying to&#8230;) moving the boot partition from my old harddrive to the new one (see the full report/steps below), I was curious [...]


Related posts:<ol><li><a href='http://www.logaholic.de/2008/08/27/wubi-partition-anpassen/' rel='bookmark' title='Permanent Link: Wubi-Partition anpassen'>Wubi-Partition anpassen</a></li><li><a href='http://www.logaholic.de/2008/07/23/windows-vista-und-nfs/' rel='bookmark' title='Permanent Link: Windows Vista und NFS'>Windows Vista und NFS</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>My newest toy arrived today: <a title="OCZ Apex SSD" href="http://www.ocztechnology.com/products/flash_drives/ocz_apex_series_sata_ii_2_5-ssd" target="_blank">OCZ Apex SSD 120Gb</a> &#8211; a very fast Solid State Drive. The manufacturer tags it with &#8220;230mb/s read, 160mb/s write, &lt;0.3ms access time&#8221;.</p>
<p>After my six hour hassle of (trying to&#8230;) moving the boot partition from my old harddrive to the new one (see the full report/steps below), I was curious about the first performance test, which I used <a title="HD Tune" href="http://www.hdtune.com/" target="_blank">HD Tune</a> for.</p>
<p>This is the result for my <strong>old harddrive</strong>, a <a title="Samsung HD642JJ" href="http://www.samsung.com/global/business/hdd/productmodel.do?type=61&amp;subtype=63&amp;model_cd=322" target="_blank">Samsung HD642JJ</a>:</p>
<p><img class="aligncenter size-full wp-image-346" title="hdtune_benchmark_samsung_hd642jj" src="http://www.logaholic.de/wp-content/uploads/2009/06/hdtune_benchmark_samsung_hd642jj.png" alt="hdtune_benchmark_samsung_hd642jj" width="570" height="458" /></p>
<p>Raw data:</p>
<blockquote><p>HD Tune: SAMSUNG HD642JJ Benchmark</p>
<p>Transfer Rate Minimum : 55.0 MB/sec<br />
Transfer Rate Maximum : 102.8 MB/sec<br />
Transfer Rate Average : 83.0 MB/sec<br />
Access Time           : 13.2 ms<br />
Burst Rate            : 135.3 MB/sec<br />
CPU Usage             : 4.5%<br />
Temperature           : 25°C</p></blockquote>
<p>And this is the result for my <strong>new SSD</strong> (<a title="OCZ Apex SSD" href="http://www.ocztechnology.com/products/flash_drives/ocz_apex_series_sata_ii_2_5-ssd" target="_blank">OZC Apex SSD 120GB</a>):</p>
<p><img class="aligncenter size-full wp-image-347" title="hdtune_benchmark_ocz_apex_ssd" src="http://www.logaholic.de/wp-content/uploads/2009/06/hdtune_benchmark_ocz_apex_ssd.png" alt="hdtune_benchmark_ocz_apex_ssd" width="570" height="458" /></p>
<p>Raw data:</p>
<blockquote><p>HD Tune: OCZ APEX_SSD Benchmark</p>
<p>Transfer Rate Minimum : 1.4 MB/sec<br />
Transfer Rate Maximum : 172.7 MB/sec<br />
Transfer Rate Average : 138.1 MB/sec<br />
Access Time           : 0.2 ms<br />
Burst Rate            : 129.5 MB/sec<br />
CPU Usage             : 5.5%<br />
Temperature           : 44°C</p></blockquote>
<p>As I said before, I moved my bootpartition to the new drive. These are my subjective feelings about the new system:</p>
<ul>
<li>The Windows bootup isn&#8217;t that much faster, but I didn&#8217;t measure the startup time of the old harddrive. (Still too long&#8230;)</li>
<li>Applications start much faster now. I think this really is the point where the ridiculous low access time of the SSD kicks in. Zend Studio i.e. is down from ~30 secs to 12. (And I haven&#8217;t switched the projects/workspace to a new SSD partition yet!)</li>
</ul>
<p>The application startup speed, and working with big filecount-intensive projects were the main reasons for me to try out a SSD. So far (this still is my impression after only 2-3 hours of usage) I am very satisfied with the results.</p>
<p>The temperature of the SSD is ~20° warmer, but I think even 44°C is not high enough to care about.</p>
<p>In about one month I will provide you with even more subjective feedback <img src='http://www.logaholic.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>The steps for the Vista bootpartition-move, using <a title="Acronis True Image" href="http://www.acronis.com/homecomputing/products/trueimage/" target="_blank">Acronis True Image</a>, should be these:</h3>
<ol>
<li>Boot from the <a title="Acronis True Image" href="http://www.acronis.com/homecomputing/products/trueimage/" target="_blank">Acronis True Image</a> CD</li>
<li>Backup your boot partition from the old drive</li>
<li>Restore the backup to the new drive, mark the new partition active (Cloning didn&#8217;t work, because the SSD is much smaller, and the UI doesn&#8217;t let me clone just one partition)</li>
<li>Reboot from your Vista Installation disc</li>
<li>Repair the installation on your new drive (the log should show something about &#8220;missing bootmanager &#8211; fixed&#8221;)</li>
<li>Boot from your new SSD</li>
<li>If your bootpartition is not C, fix it this way: <a title="How to restore the system/boot drive letter in Windows" href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;223188" target="_blank">How to restore the system/boot drive letter in Windows</a></li>
<li>Done. Finished. Hopefully.. (At least, you should have 2 layers of backups to restart if something screws up&#8230;)</li>
</ol>
<h3>Just two small things OCZ could improve:</h3>
<ul>
<li>Inform me as a customer, that there is no SATA cable in the retail box. Every other retail (SATA) harddrive I bought up to this day had at least one packed.</li>
<li>As most of the customers will be &#8220;switchers&#8221; imho, ship something to help with the partition migration process. I will happily pay some more bucks, if it just works.</li>
</ul>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2008/08/27/wubi-partition-anpassen/' rel='bookmark' title='Permanent Link: Wubi-Partition anpassen'>Wubi-Partition anpassen</a></li><li><a href='http://www.logaholic.de/2008/07/23/windows-vista-und-nfs/' rel='bookmark' title='Permanent Link: Windows Vista und NFS'>Windows Vista und NFS</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/06/07/ocz-apex-ssd-120gb-and-how-to-move-a-vista-boot-partition-to-a-new-drive/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error #0 on AIR application installation</title>
		<link>http://www.logaholic.de/2009/06/04/error-0-on-air-application-installation/</link>
		<comments>http://www.logaholic.de/2009/06/04/error-0-on-air-application-installation/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 08:09:23 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[Installer]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=338</guid>
		<description><![CDATA[I got this errormessage on &#8220;some&#8221; places while trying to install an AIR application package, while other places just worked fine.
The application could not be installed. Try installing it again. If the problem persists, contact the application author. Error #0
The first step debugging this was to find out where the AIR application installer logs errors [...]


Related posts:<ol><li><a href='http://www.logaholic.de/2009/08/16/nagios-nrpe-unable-to-read-output-error-check_apachestatus_auto-pl/' rel='bookmark' title='Permanent Link: Nagios: NRPE: Unable to read output error &#8211; check_apachestatus_auto.pl'>Nagios: NRPE: Unable to read output error &#8211; check_apachestatus_auto.pl</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I got this errormessage on &#8220;some&#8221; places while trying to install an AIR application package, while other places just worked fine.</p>
<p><em>The application could not be installed. Try installing it again. If the problem persists, contact the application author. Error #0</em></p>
<p>The first step debugging this was to find out where the AIR application installer logs errors &#8211; which by default he does not. To activate installer logging, you have to put two files in your home directory (C:\Users\youraccountname\ on Vista or C:\Documents and Settings\youraccoutname\ on XP) called <strong>.airappinstall.log</strong> and <strong>.airinstall.log</strong>.</p>
<p>If those two files are present, the logging writes to them automagically.</p>
<p>The error I found there looked like this:</p>
<pre class="brush: plain;">Installing C:\Dokumente und Einstellungen\***\Lokale Einstellungen\Temp\fla12.tmp\setup.msi
Error occurred; beginning rollback: [ErrorEvent type=&quot;error&quot; bubbles=false cancelable=false eventPhase=2 text=&quot;1603&quot; errorID=0]</pre>
<p>From here on I was very sure that it has to do with privileges&#8230; (No, there is no context menu entry on AIR packages to &#8220;install as Administrator&#8221; or &#8220;run as&#8221;&#8230;)</p>
<p>Finally, I checked the windows event log, and found this:</p>
<pre class="brush: plain;">Product: *** -- Error 1925. You do not have sufficient privileges to complete this installation for all users of the machine.  Log on as administrator and then retry this installation.</pre>
<p>Why can&#8217;t they show this error at the installer instead of error #0?&#8230;</p>
<p>Yes, <strong>installing as Administrator solved the problem</strong>!</p>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2009/08/16/nagios-nrpe-unable-to-read-output-error-check_apachestatus_auto-pl/' rel='bookmark' title='Permanent Link: Nagios: NRPE: Unable to read output error &#8211; check_apachestatus_auto.pl'>Nagios: NRPE: Unable to read output error &#8211; check_apachestatus_auto.pl</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/06/04/error-0-on-air-application-installation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to install cruisecontrol/phpUnderControl in Debian Etch</title>
		<link>http://www.logaholic.de/2009/05/30/how-to-install-cruisecontrol-phpundercontrol-under-debian-etch/</link>
		<comments>http://www.logaholic.de/2009/05/30/how-to-install-cruisecontrol-phpundercontrol-under-debian-etch/#comments</comments>
		<pubDate>Sat, 30 May 2009 00:43:49 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[CruiseControl]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Etch]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[phpUnderControl]]></category>
		<category><![CDATA[phpUnit]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=305</guid>
		<description><![CDATA[This is how I install cruisecontrol/phpUnderControl, including all dependencies, in a fresh Debian Etch machine.

# add the backport mirror for java and subversion
echo &#34;deb http://www.backports.org/debian etch-backports main contrib non-free&#34; &#62;&#62; /etc/apt/sources.list

# add the backport mirror key
gpg --keyserver hkp://pgp.mit.edu --recv-keys 16BA136C
gpg --armor --export 16BA136C &#124; apt-key add -

apt-get update

# install backports (java and subversion)
apt-get -t etch-backports [...]


Related posts:<ol><li><a href='http://www.logaholic.de/2010/02/05/how-to-install-cruisecontrolphpundercontrol-in-debian-lenny/' rel='bookmark' title='Permanent Link: How to install cruisecontrol/phpUnderControl in Debian Lenny'>How to install cruisecontrol/phpUnderControl in Debian Lenny</a></li><li><a href='http://www.logaholic.de/2009/05/11/apache-ssl-and-phpundercontrol/' rel='bookmark' title='Permanent Link: Apache, SSL and phpUnderControl'>Apache, SSL and phpUnderControl</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>This is how I install <a title="cruisecontrol" href="http://cruisecontrol.sourceforge.net/" target="_blank">cruisecontrol</a>/<a title="phpUnderControl" href="http://www.phpundercontrol.org/" target="_blank">phpUnderControl</a>, including all dependencies, in a fresh Debian Etch machine.</p>
<pre class="brush: bash; auto-links: false; gutter: false; html-script: false; ruler: false;">
# add the backport mirror for java and subversion
echo &quot;deb http://www.backports.org/debian etch-backports main contrib non-free&quot; &gt;&gt; /etc/apt/sources.list

# add the backport mirror key
gpg --keyserver hkp://pgp.mit.edu --recv-keys 16BA136C
gpg --armor --export 16BA136C | apt-key add -

apt-get update

# install backports (java and subversion)
apt-get -t etch-backports install sun-java6-bin sun-java6-jre
apt-get -t etch-backports install subversion

# install apache (mainly for phpmyadmin) and php5 + cli
apt-get install apache2-mpm-prefork
apt-get install php5 php5-cli php5-dev
apt-get install php-pear make

# install xdebug (needed for phpunit)
pecl install xdebug
echo &quot;zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so&quot; &gt;&gt; /etc/php5/cli/php.ini

# install phpunit and phpundercontrol via pear
pear upgrade --force pear
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear install phpunit/phpunit
pear install --force --alldeps channel://components.ez.no/Graph
pear install --force --alldeps channel://pear.phpunit.de/phpundercontrol-0.4.7

# get and extract cruisecontrol
apt-get install unzip wget
cd ~
wget http://freefr.dl.sourceforge.net/sourceforge/cruisecontrol/cruisecontrol-bin-2.8.2.zip
unzip cruisecontrol-bin-2.8.2.zip -d /opt
cd /opt
ln -s cruisecontrol-bin-2.8.2 cruisecontrol

# run phpundercontrol modifications against cruisecontrol
phpuc install /opt/cruisecontrol

# first testrun
cd /opt/cruisecontrol
./cruisecontrol.sh
</pre>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2010/02/05/how-to-install-cruisecontrolphpundercontrol-in-debian-lenny/' rel='bookmark' title='Permanent Link: How to install cruisecontrol/phpUnderControl in Debian Lenny'>How to install cruisecontrol/phpUnderControl in Debian Lenny</a></li><li><a href='http://www.logaholic.de/2009/05/11/apache-ssl-and-phpundercontrol/' rel='bookmark' title='Permanent Link: Apache, SSL and phpUnderControl'>Apache, SSL and phpUnderControl</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/05/30/how-to-install-cruisecontrol-phpundercontrol-under-debian-etch/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Balsamiq Mockups &#8211; impressive software with an even more impressive story</title>
		<link>http://www.logaholic.de/2009/05/24/balsamiq-mockups-impressive-software-with-an-even-more-impressive-story/</link>
		<comments>http://www.logaholic.de/2009/05/24/balsamiq-mockups-impressive-software-with-an-even-more-impressive-story/#comments</comments>
		<pubDate>Sun, 24 May 2009 21:55:28 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Balsamiq]]></category>
		<category><![CDATA[Mockups]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=278</guid>
		<description><![CDATA[Since the first time I have seen Balsamiq Mockups, it rocked my world. It is now a pleasure to create mockups. With Mockups, this is a fast and intuitive process, for everyone. Yes, I like this tool as a developer, and I am sure that any non-developer will also like it as much!
There are a [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-295" title="mockups_fpa" src="http://www.logaholic.de/wp-content/uploads/2009/05/mockups_fpa.jpg" alt="mockups_fpa" width="370" height="285" style="float: right; margin-left: 5px;" />Since the first time I have seen <a title="Balsamiq Mockups" href="http://www.balsamiq.com/products/mockups" target="_blank">Balsamiq Mockups</a>, it rocked my world. It is now a pleasure to create mockups. With Mockups, this is a fast and intuitive process, for everyone. Yes, I like this tool as a developer, and I am sure that any non-developer will also like it as much!</p>
<p>There are a lot of shapes one can choose like a browser window, iphone window, any other window, webcontrols, etc. The result can be exported as PNG or saved as XML. With XML files one can even diff/merge mockups <img src='http://www.logaholic.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Short overview:</p>
<div id="bd">
<blockquote>
<ul>
<li><em>Create software mockups in minutes</em></li>
<li><em>Collaborate with your team</em></li>
<li><em>Focus on creating your product</em></li>
</ul>
</blockquote>
</div>
<p>The guy/company behind Mockups, Giacomo ‘Peldi’ Guilizzoni, is even more impressive. There is a very good interview over at 37 signals (see Sources):</p>
<blockquote><p><em><span id="extended">&#8220;I never really understood the concept of building a company with the goal to sell it, or why one should have an ‘exit strategy.’ I just don’t get it. If you’re doing what you love, why would you want to ‘exit’? Maybe it’s because I am Italian, but I see nothing wrong with a business staying small in the long run. As long as we do great work, are happy to do it, and make people happy with it, I see no reason to change anything.&#8221;</span></em></p></blockquote>
<p>Thank you again for the kind response to my email, Balsamiq Team, and the chance to review this very nice (and therefore rare) piece of software.</p>
<p><strong>Sources:</strong>
<ul>
<li><a title="Balsamiq Mockups" href="http://www.balsamiq.com/products/mockups" target="_blank">Balsamiq Mockups</a></li>
<li><a title="Interview with CEO Peldi Guilizzoni about the growth of Balsamiq" href="http://www.37signals.com/svn/posts/1733-interview-with-ceo-peldi-guilizzoni-about-the-growth-of-balsamiq" target="_blank">Interview with CEO Peldi Guilizzoni about the growth of Balsamiq</a></li>
<li><a title="Balsamiq Blog - Bootstrapping a Micro ISV, Exposed" href="http://www.balsamiq.com/blog/" target="_blank">Balsamiq Blog &#8211; Bootstrapping a Micro ISV, Exposed</a></li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/05/24/balsamiq-mockups-impressive-software-with-an-even-more-impressive-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving to Feedburner</title>
		<link>http://www.logaholic.de/2009/05/24/moving-to-feedburner/</link>
		<comments>http://www.logaholic.de/2009/05/24/moving-to-feedburner/#comments</comments>
		<pubDate>Sun, 24 May 2009 19:12:19 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[feedburner]]></category>
		<category><![CDATA[Rss]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=290</guid>
		<description><![CDATA[Just as a short notice, I moved my feed to feedburner. The new feed url is this: http://feeds2.feedburner.com/logaholic
I did this to &#8220;outsource&#8221; my feed traffic and improve statistics for analyzing what you like to read  
Yes, I also moved the subscribe button/links to a more prominent position (top right, larger icon).
Update: Automagic redirection in [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Just as a short notice, I moved <a title="Logaholic.de Feed" href="http://feeds2.feedburner.com/logaholic" target="_blank">my feed</a> to <a title="Google Feedburner" href="http://www.feedburner.com" target="_blank">feedburner</a>. The new feed url is this: <a title="Logaholic.de Feed" href="http://feeds2.feedburner.com/logaholic" target="_blank">http://feeds2.feedburner.com/logaholic</a></p>
<p>I did this to &#8220;outsource&#8221; my feed traffic and improve statistics for analyzing what you like to read <img src='http://www.logaholic.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Yes, I also moved the subscribe button/links to a more prominent position (top right, larger icon).</p>
<p><strong>Update: Automagic redirection in place. You shouldn&#8217;t need to update anything <img src='http://www.logaholic.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </strong></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/05/24/moving-to-feedburner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure backups with push and pull strategies via amazon s3</title>
		<link>http://www.logaholic.de/2009/05/21/secure-backups-with-push-and-pull-strategies-via-amazon-s3/</link>
		<comments>http://www.logaholic.de/2009/05/21/secure-backups-with-push-and-pull-strategies-via-amazon-s3/#comments</comments>
		<pubDate>Thu, 21 May 2009 16:05:45 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Amazon S3]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=271</guid>
		<description><![CDATA[Note: If you don&#8217;t want to or cannot by company-rule trust Amazon S3, this is probably not what you want to read.
I&#8217;m going to show you how one could improve the security of his production environment backups. In this setup the production environment can never harm any old backup. There is another offsite backup location [...]


Related posts:<ol><li><a href='http://www.logaholic.de/2009/06/07/ocz-apex-ssd-120gb-and-how-to-move-a-vista-boot-partition-to-a-new-drive/' rel='bookmark' title='Permanent Link: OCZ Apex SSD 120GB and How to move a vista boot partition to a new drive'>OCZ Apex SSD 120GB and How to move a vista boot partition to a new drive</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><em>Note: If you don&#8217;t want to or cannot by company-rule trust <a title="Amazon S3" href="http://aws.amazon.com/s3/" target="_blank">Amazon S3</a>, this is probably not what you want to read.</em></p>
<p>I&#8217;m going to show you how one could improve the security of his production environment backups. In this setup the production environment can never harm any old backup. There is another offsite backup location if Amazon S3 should fail &#8211; for us being our office, this is also perfect for up-to-date testing/development database snapshots.</p>
<p>We will need two separate Amazon S3 accounts and any s3 console tool (like <a title="s3-bash" href="http://code.google.com/p/s3-bash/" target="_blank">s3bash</a>).</p>
<p><strong>The production environment</strong>, with its own (restricted to put and get files) s3 user, will push backups to our s3 bucket. It is not allowed to delete backups there. It does not have any access to the offsite location. If someone gets access to our production environment, he can not delete our backups on s3 per their acl, and can never harm our offsite backups. This is kind of an one-way solution and represents the &#8220;<strong>push-strategy</strong>&#8220;.</p>
<p><strong>The offsite location</strong>, with the second, full privileged s3 account, will pull the backups from s3 every night. There are also tools for backup verification and testing-environment updates. This is the &#8220;<strong>pull-strategy</strong>&#8220;. The offsite location has access to the production environment for maintenance task and deployment.</p>
<p>Small graphic:</p>
<p><img class="alignnone size-full wp-image-272" title="securebackups" src="http://www.logaholic.de/wp-content/uploads/2009/05/securebackups.png" alt="securebackups" width="583" height="380" /></p>
<p>I wanted to mention this setup since i read a blogpost about a <a title="Offsite backups are important" href="http://nsslive.net/2009/05/13/backups-are-important/" target="_blank">worst case scenario</a>:</p>
<blockquote><p><em>&#8220;A huge flight sim site was hacked and destroyed this weekend  &#8211; avsim.com. An important lesson on why off-site backups are critical! They had two servers, and had a backup of A on B, and B on A. Both were taken out.&#8221;</em></p></blockquote>
<h3>Downsides:</h3>
<ul>
<li>Access to our office network/offsite backups would be bad.</li>
<li>Bruteforcing/getting access to our administrative S3 Account would be bad.</li>
<li>you have to trust Amazon with your data</li>
</ul>
<h3>Conclusion:</h3>
<p>Always combine different backup strategies and test your backups. One day you will need them!</p>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2009/06/07/ocz-apex-ssd-120gb-and-how-to-move-a-vista-boot-partition-to-a-new-drive/' rel='bookmark' title='Permanent Link: OCZ Apex SSD 120GB and How to move a vista boot partition to a new drive'>OCZ Apex SSD 120GB and How to move a vista boot partition to a new drive</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/05/21/secure-backups-with-push-and-pull-strategies-via-amazon-s3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Uncompressing Zip-files with subfolders in AIR applications via JavaScript</title>
		<link>http://www.logaholic.de/2009/05/18/uncompressing-zip-files-with-subfolders-in-air-applications-via-javascript/</link>
		<comments>http://www.logaholic.de/2009/05/18/uncompressing-zip-files-with-subfolders-in-air-applications-via-javascript/#comments</comments>
		<pubDate>Mon, 18 May 2009 14:52:30 +0000</pubDate>
		<dc:creator>Karsten Deubert</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Subfolders]]></category>
		<category><![CDATA[Uncompress]]></category>
		<category><![CDATA[Zip]]></category>

		<guid isPermaLink="false">http://www.logaholic.de/?p=260</guid>
		<description><![CDATA[I am currently building an AIR application with JavaScript (jQuery + jQuery UI), one function downloads zipped files and has to extract the contents somewhere to the local filesystem. Since the files may contain subfolders, i didn&#8217;t find any working example supporting subfolders in the docs or via google.
I found an Adobe Tutorial for basic [...]


Related posts:<ol><li><a href='http://www.logaholic.de/2009/04/24/twiddling-with-obfuscated-javascript-code/' rel='bookmark' title='Permanent Link: Twiddling with obfuscated JavaScript code'>Twiddling with obfuscated JavaScript code</a></li><li><a href='http://www.logaholic.de/2009/10/04/reading-browser-history-with-css-and-javascript/' rel='bookmark' title='Permanent Link: Reading browser history with css and javascript'>Reading browser history with css and javascript</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I am currently building an AIR application with JavaScript (jQuery + jQuery UI), one function downloads zipped files and has to extract the contents somewhere to the local filesystem. Since the files may contain subfolders, i didn&#8217;t find any working example supporting subfolders in the docs or via google.</p>
<p>I found an Adobe Tutorial for basic Zip files (see Sources), and after reading the zip specs there was just one small change to their code to get it working with subfolders.</p>
<p><strong>The spec says that entries in the zip file which are directories just end with an &#8216;/&#8217;. Skipping them is the whole magic.</strong> (see line 48)</p>
<p>Thankfully, the air.FileStream autocreates director ies, so writing the files to the subfolders does not need any change to the code. I added a basepath as parameter to the outFile function, to complete the for me intuitive function <strong>unzipFile(sourceFile, targetPath)</strong>.</p>
<p>Here is the code:</p>
<pre class="brush: javascript; highlight: [48];"> function unzipFile(sourceFile, targetPath)
{
	var bytes = new air.ByteArray();
	var fileName = new String();
	var flNameLength;
	var xfldLength;
	var offset;
	var compSize;
	var uncompSize;
	var compMethod;
	var signature; 

	var zfile = air.File.applicationStorageDirectory.resolvePath(sourceFile);
	var zStream = new air.FileStream();
	zStream.open(zfile, air.FileMode.READ);
	bytes.endian = air.Endian.LITTLE_ENDIAN;

	while (zStream.position &lt; zfile.size)
    {
		// read fixed metadata portion of local file header
        zStream.readBytes(bytes, 0, 30);

		bytes.position = 0;
        signature = bytes.readInt();
        // if no longer reading data files, quit
        if (signature != 0x04034b50)
        {
            break;
        }

		bytes.position = 8;
        compMethod = bytes.readByte();  // store compression method (8 == Deflate)

		offset = 0;    // stores length of variable portion of metadata
        bytes.position = 26;  // offset to file name length
        flNameLength = bytes.readShort();    // store file name
        offset += flNameLength;     // add length of file name
        bytes.position = 28;    // offset to extra field length
        xfldLength = bytes.readShort();
        offset += xfldLength;    // add length of extra field

		// read variable length bytes between fixed-length header and compressed file data
        zStream.readBytes(bytes, 30, offset);

		bytes.position = 30;
        fileName = bytes.readUTFBytes(flNameLength); // read file name 

		if (fileName.substr(fileName.length - 1, 1) != '/')
		{
			bytes.position = 18;
			compSize = bytes.readUnsignedInt(); // store size of compressed portion
			bytes.position = 22; // offset to uncompressed size
			uncompSize = bytes.readUnsignedInt(); // store uncompressed size 

			// read compressed file to offset 0 of bytes; for uncompressed files
			// the compressed and uncompressed size is the same
			zStream.readBytes(bytes, 0, compSize);

			if (compMethod == 8 ) // if file is compressed, uncompress
			{
				bytes.uncompress(air.CompressionAlgorithm.DEFLATE);
			}
			outFile(targetPath, fileName, bytes); // call outFile() to write out the file
		}
	}
}</pre>
<p>This is the outFile function which writes the uncompressed files to the local file system.</p>
<pre class="brush: javascript;"> function outFile(baseDir, fileName, data)
{
    var outFile = air.File.applicationStorageDirectory;
    outFile = outFile.resolvePath(baseDir+air.File.separator+fileName);
    var outStream = new air.FileStream();
    outStream.open(outFile, air.FileMode.WRITE);
    outStream.writeBytes(data, 0, data.length);
    outStream.close();
}</pre>
<p><strong>Sources:</strong></p>
<ul>
<li><a title="Adobe Air 1.1 - ByteArray example: Reading a .zip file" href="http://help.adobe.com/en_US/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7d53.html" target="_blank">Adobe Air 1.1 &#8211; ByteArray example: Reading a .zip file</a></li>
<li><a title=".Zip File Format Specification" href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT" target="_blank">PKWARE &#8211; .Zip File Format Specification</a></li>
</ul>


<p>Related posts:<ol><li><a href='http://www.logaholic.de/2009/04/24/twiddling-with-obfuscated-javascript-code/' rel='bookmark' title='Permanent Link: Twiddling with obfuscated JavaScript code'>Twiddling with obfuscated JavaScript code</a></li><li><a href='http://www.logaholic.de/2009/10/04/reading-browser-history-with-css-and-javascript/' rel='bookmark' title='Permanent Link: Reading browser history with css and javascript'>Reading browser history with css and javascript</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.logaholic.de/2009/05/18/uncompressing-zip-files-with-subfolders-in-air-applications-via-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
