<?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>TheHippo</title>
	<atom:link href="http://blog.thehippo.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thehippo.de</link>
	<description>if (i=1) throw null;</description>
	<lastBuildDate>Thu, 04 Mar 2010 15:27:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Use Skype from Pidgin</title>
		<link>http://blog.thehippo.de/2010/03/tools-and-software/use-skype-from-pidgin/</link>
		<comments>http://blog.thehippo.de/2010/03/tools-and-software/use-skype-from-pidgin/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 19:39:32 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Tools and Software]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[Instant messager]]></category>
		<category><![CDATA[Pidgin]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=202</guid>
		<description><![CDATA[I am using different instant messager protocol. ICQ, IRC, sometimes MSN and Skype. It always bugged me to have 2 programs open. Pidgin for all protocols except Skype and Skype.
Today I found a really good working plug-in for Pidgin which allows you to use the most Skype features directly from Pidgin: http://code.google.com/p/skype4pidgin/
You still need Skype [...]]]></description>
			<content:encoded><![CDATA[<p>I am using different instant messager protocol. <a title="ICQ" href="http://en.wikipedia.org/wiki/Icq" target="_blank">ICQ</a>, <a title="Internet Relay Chat" href="http://en.wikipedia.org/wiki/Internet_Relay_Chat" target="_self">IRC</a>, sometimes MSN and <a title="Skype" href="http://en.wikipedia.org/wiki/Skype" target="_blank">Skype</a>. It always bugged me to have 2 programs open. <a title="Pidgin" href="http://www.pidgin.im/" target="_blank">Pidgin</a> for all protocols except Skype and <a title="Skype" href="http://www.skype.com" target="_blank">Skype</a>.</p>
<p>Today I found a really good working plug-in for Pidgin which allows you to use the most Skype features directly from Pidgin: <a title="Skype 4 Pidgin" href="http://code.google.com/p/skype4pidgin/" target="_blank">http://code.google.com/p/skype4pidgin/</a></p>
<p>You still need Skype to be running, but you got all you contacts in you Pidgin list. If you make a call the standard Skype dialog appears, all message communication is done via the usual Pidgin conversation windows.</p>
<p><span id="more-202"></span></p>
<div id="attachment_204" class="wp-caption aligncenter" style="width: 545px"><a href="http://blog.thehippo.de/wp-content/uploads/2010/03/skype1.png"><img class="size-full wp-image-204" title="Skype 4 Pidgin" src="http://blog.thehippo.de/wp-content/uploads/2010/03/skype1.png" alt="Skype 4 Pidgin" width="535" height="356" /></a><p class="wp-caption-text">Skype 4 Pidgin</p></div>
<div id="attachment_207" class="wp-caption aligncenter" style="width: 415px"><a href="http://blog.thehippo.de/wp-content/uploads/2010/03/skype.png"><img class="size-full wp-image-207" title="Skype 4 Pidgin" src="http://blog.thehippo.de/wp-content/uploads/2010/03/skype.png" alt="Skype 4 Pidgin" width="405" height="261" /></a><p class="wp-caption-text">Skype 4 Pidgin</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2010/03/tools-and-software/use-skype-from-pidgin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to download a YouTube video and convert it to a mp3 file</title>
		<link>http://blog.thehippo.de/2010/02/tools-and-software/download-youtube-video-convert-mp3/</link>
		<comments>http://blog.thehippo.de/2010/02/tools-and-software/download-youtube-video-convert-mp3/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 21:29:31 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Tools and Software]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[flv]]></category>
		<category><![CDATA[lame]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[youtube]]></category>
		<category><![CDATA[youtube-dl]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=186</guid>
		<description><![CDATA[How to download a video from Youtube and convert it into a mp3 file? (Or a mpeg video, or&#8230;). The most complicated part was to actually download the flv-movie. After you got this on your harddrive it is quite easy to perform more conversation to diffent file formats. Here the are my instructions for downloading [...]]]></description>
			<content:encoded><![CDATA[<p>How to download a video from <a title="Youtube" href="http://www.youtube.com" target="_blank">Youtube</a> and convert it into a <a title="Wikipedia: mp3" href="http://en.wikipedia.org/wiki/Mp3" target="_blank">mp3</a> file? (Or a mpeg video, or&#8230;). The most complicated part was to actually download the <a title="Wikipedia: FLV" href="http://en.wikipedia.org/wiki/Flash_Video" target="_blank">flv</a>-movie. After you got this on your harddrive it is quite easy to perform more conversation to diffent file formats. Here the are my instructions for downloading and converting to mp3.<span id="more-186"></span></p>
<h1>Downloading</h1>
<p id="clone-url-https">I used a small python script <a title="youtube-dl" href="http://bitbucket.org/rg3/youtube-dl/src/tip/youtube-dl" target="_blank">youtube-dl</a> for downloading the video data.</p>
<ul>
<li>It is available in the Ubuntu repositories
<pre>sudo apt-get install youtube-dl</pre>
</li>
<li> If you encounter some problems you also could do a source checkout from BitBucket (requires that Mercurial is installed):
<pre>hg clone <a class="linkification-ext" title="Linkification: http://bitbucket.org/rg3/youtube-dl/" href="http://bitbucket.org/rg3/youtube-dl/">http://bitbucket.org/rg3/youtube-dl/</a></pre>
</li>
<li>Download the video from a terminal:
<pre> youtube-dl <a class="linkification-ext" title="Linkification: http://www.tube.com/watch?v=videoid" href="http://www.tube.com/watch?v=videoid">http://www.tube.com/watch?v=videoid</a></pre>
</li>
<li>After the download you will find a videoid.flv in your folder</li>
</ul>
<h1>Getting the audio data</h1>
<p>For extracting the audio data I used <a title="ffmpeg" href="http://www.ffmpeg.org/" target="_blank">ffmpeg</a>.</p>
<ul>
<li>If you haven&#8217;t installed it already:
<pre>sudo apt-get install ffmpeg</pre>
</li>
<li>We will extract the audio data to a simple wave file. This file is gonna be large, so make sure you delete it afterwards.
<pre>ffmpeg -i videoid.flv output.wav</pre>
</li>
</ul>
<h1>Converting to MP3</h1>
<p>For converting the wav file to a mp3 file I used <a title="Lame" href="http://lame.sourceforge.net/" target="_blank">lame</a>.</p>
<ul>
<li>Run (the &#8220;-b&#8221; arguments sets the bitrate of the mp3):
<pre>lame -b 192 -h output.wav output.mp3</pre>
</li>
</ul>
<h2>Notes</h2>
<ul>
<li>There a lot of other ways to get the data. Instead of lame you could use <a title="MPlayer" href="http://www.mplayerhq.hu" target="_blank">mplayer</a>, but this way I alway ended with broken mp3 files.</li>
<li>Instead of converting to wave file you also could create a mpeg video and then create the mp3 file directly from this video.</li>
<li>Lame and also ffmpeg have tons of options available from the command line, which could increase speed and quality of the conversation.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2010/02/tools-and-software/download-youtube-video-convert-mp3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Buddy &#8211; a PHPMyAdmin alternative</title>
		<link>http://blog.thehippo.de/2009/12/tools-and-software/sqlbuddy-a-phpmyadmin-alternative/</link>
		<comments>http://blog.thehippo.de/2009/12/tools-and-software/sqlbuddy-a-phpmyadmin-alternative/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 04:05:09 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Tools and Software]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHPMyAdmin]]></category>
		<category><![CDATA[SQL Buddy]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=169</guid>
		<description><![CDATA[In the last time I am back to a lot of server development. This also means a lot of database engineering. For the most the time I have used PHPMyAdmin for nearly every I have to work with a MySQL database. After a while a got a little bit disappointed, because PHPMyAdmin is a kind [...]]]></description>
			<content:encoded><![CDATA[<p>In the last time I am back to a lot of server development. This also means a lot of database engineering. For the most the time I have used <a href="http://www.phpmyadmin.net" target="_blank">PHPMyAdmin</a> for nearly every I have to work with a MySQL database. After a while a got a little bit disappointed, because PHPMyAdmin is a kind of bloated and sometimes it&#8217;s just take to long to perform a simple operation.<span id="more-169"></span></p>
<h2>The offline alternative</h2>
<p>A looked around for some alternatives and the first found was the MySQL Query Browser which is part of the <a href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank">MySQL GUI Tools</a>. It is fast (okay, it is a installed application, but still its fast) and very comfortable for editing and creating tables and databases and also okay for just filling / editing some data inside the tables. Also nice is that is free.</p>
<div id="attachment_171" class="wp-caption aligncenter" style="width: 611px"><a href="http://blog.thehippo.de/wp-content/uploads/2009/12/mysql-query-browser-1.png"><img class="size-full wp-image-171" title="MySQL Query Browser" src="http://blog.thehippo.de/wp-content/uploads/2009/12/mysql-query-browser-1.png" alt="MySQL Query Browser" width="601" height="453" /></a><p class="wp-caption-text">MySQL Query Browser - result view</p></div>
<div id="attachment_172" class="wp-caption aligncenter" style="width: 548px"><a href="http://blog.thehippo.de/wp-content/uploads/2009/12/mysql-query-browser-2.png"><img class="size-full wp-image-172" title="MySQL Query Browser" src="http://blog.thehippo.de/wp-content/uploads/2009/12/mysql-query-browser-2.png" alt="MySQL Query Browser - Table option view" width="538" height="384" /></a><p class="wp-caption-text">MySQL Query Browser - Table option view</p></div>
<p>In the MySQL GUI Tools there is also a so called MySQL Administrator which is nice for some statistics, setting up users and creating and restoring backups.</p>
<h2>The online alternative</h2>
<p>There is only one but a big con with the MySQL Query browser. I can not run it on my server, because therefore I needed to open the MySQL port and that one thing I definitely will not do.</p>
<p>So I searched for a while on the web and the tool which looked best for me was <a href="http://www.sqlbuddy.com/" target="_blank">SQL Buddy</a>:</p>
<ul>
<li>PHP-based</li>
<li>makes heavy use of AJAX</li>
<li>enough options for the most common operations</li>
<li>size just 1 MB (instead of 11 MB for the full version of PHPMyAdmin)</li>
</ul>
<div id="attachment_179" class="wp-caption aligncenter" style="width: 620px"><a href="http://blog.thehippo.de/wp-content/uploads/2009/12/SQL-Buddy-1.png"><img class="size-full wp-image-179 " title="SQL Buddy" src="http://blog.thehippo.de/wp-content/uploads/2009/12/SQL-Buddy-1.png" alt="SQL Buddy - result view" width="610" height="437" /></a><p class="wp-caption-text">SQL Buddy - result view</p></div>
<div id="attachment_180" class="wp-caption aligncenter" style="width: 620px"><a href="http://blog.thehippo.de/wp-content/uploads/2009/12/SQL-Buddy-2.png"><img class="size-full wp-image-180 " title="SQL Buddy" src="http://blog.thehippo.de/wp-content/uploads/2009/12/SQL-Buddy-2.png" alt="SQL Buddy - Table option view" width="610" height="437" /></a><p class="wp-caption-text">SQL Buddy - Table option view</p></div>
<p>For the most common tasks SQL Buddy is perfect. It is nearly as fast as installed application and easy to use.</p>
<p>But nobody is perfect, there are few thing I found out, that could not be archived with SQL Buddy. There is no option to create and import xx.sql.bz2 files, and currently no handling of the different storage engines, which means that you could not use foreign keys for example.</p>
<h2>Conclusion</h2>
<p>For you local computer you are okay with the MySQL GUI Tools and SQL Buddy, on the server I will use SQL Buddy but for the more complex tasks I will stick to PHPMyAdmin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/12/tools-and-software/sqlbuddy-a-phpmyadmin-alternative/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minefield &#8211; Firefox preview</title>
		<link>http://blog.thehippo.de/2009/10/tools-and-software/minefield-firefox-preview/</link>
		<comments>http://blog.thehippo.de/2009/10/tools-and-software/minefield-firefox-preview/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 09:10:39 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Tools and Software]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Sunspider]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=112</guid>
		<description><![CDATA[
I make no secret of that I am a big fan of the Firefox web browser. Except of a few things that I will name later I am/was always impressed by the speed improvements that are made over the past few years, which seems very important to me, because many pages you use in you [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-144 alignleft" src="http://blog.thehippo.de/wp-content/uploads/2009/10/minefield-icon.png" alt="Minefield icon" width="128" height="128" /></p>
<p>I make no secret of that I am a big fan of the <a title="Firefox" href="http://www.firefox.com/" target="_blank">Firefox</a> web browser. Except of a few things that I will name later I am/was always impressed by the speed improvements that are made over the past few years, which seems very important to me, because many pages you use in you daily life are more and more based on heavy JavaScript functionalities. A few days ago I decided to give a try to the newest development version of the Firefox &#8211; named <a title="Minefield" href="http://www.mozilla.org/projects/minefield/" target="_blank">Minefield</a> &#8211; and make some tests.<span id="more-112"></span></p>
<h2>Building</h2>
<p>Instead of using a nightly build I decided to to compile it by myself, which was not that hard. If you like to do it yourself could simply follow the instruction on that page: <a title="Simple Firefox build" href="https://developer.mozilla.org/En/Simple_Firefox_build" target="_blank">Simple Firefox build</a>. I used slightly modified the <a title="Configuring Build Options" href="https://developer.mozilla.org/en/Configuring_Build_Options" target="_blank">mozconfig</a> file in hope to get the best performance:</p>
<pre>. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-ff-release
mk_add_options MOZ_MAKE_FLAGS="-j4"
ac_add_options --disable-tests
ac add_options --disable-crashreporter</pre>
<h2>Testing</h2>
<p>As performance test I used the <a title="Sunspider JavaScript Benchmark" href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html" target="_blank">Sunspider JavaScript Benchmark</a> from the <a title="WebKit" href="http://webkit.org/" target="_blank">Webkit</a> developers. To make it short, here are the result for 3 versions of Firefox:</p>
<div id="attachment_116" class="wp-caption aligncenter" style="width: 558px">a<img class="size-full  wp-image-116" title="total results" src="http://blog.thehippo.de/wp-content/uploads/2009/10/totalresults.png" alt="total results" width="548" height="419" /><p class="wp-caption-text">time in milliseconds, faster is better</p></div>
<div id="attachment_115" class="wp-caption aligncenter" style="width: 609px"><img class="size-full wp-image-115" title="Results of different parts of Sunspider benchmark" src="http://blog.thehippo.de/wp-content/uploads/2009/10/partresults.png" alt="Results of different parts of Sunspider benchmark" width="599" height="438" /><p class="wp-caption-text">time in milliseconds, faster is better</p></div>
<h2>Results</h2>
<p>When I switched from from Firefox 3.0.x to the 3.5 branch of Firefox I was really amazed by the performance boost gained through the new JavaScript engine <a title="Tracemonkey on John Resig's blog" href="http://ejohn.org/blog/tracemonkey/" target="_blank">Tracemonkey</a>. As the results above show the next Firefox releases will get another boost. Good news!</p>
<p>P.S.: Other things I like Firefox for is because of all the very useful add-ons, I hardly could imagine  a day as a web-developer without the use of <a title="Firebug" href="http://getfirebug.com/" target="_blank">Firebug</a>. <a title="AdBlock" href="https://addons.mozilla.org/de/firefox/addon/1865" target="_blank">AdBlock</a> saves my nerves every day. <a title="Linkification" href="https://addons.mozilla.org/en-US/firefox/addon/190" target="_blank">Linkification</a>, <a title="TinyURL generator" href="https://addons.mozilla.org/en-US/firefox/addon/10586" target="_blank">TinyURL generator</a> and <a title="Greasemonkey" href="https://addons.mozilla.org/de/firefox/addon/748" target="_blank">Greasemonkey</a> are just a few other I really like and  needed to be named here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/10/tools-and-software/minefield-firefox-preview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to convert a animated gif into a flash movie</title>
		<link>http://blog.thehippo.de/2009/09/tools-and-software/how-to-convert-a-animated-gif-into-a-flash-movie/</link>
		<comments>http://blog.thehippo.de/2009/09/tools-and-software/how-to-convert-a-animated-gif-into-a-flash-movie/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 14:20:26 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Tools and Software]]></category>
		<category><![CDATA[animated]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[swfmill]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=97</guid>
		<description><![CDATA[Today I tried to load a animated loading animation as a gif image into the Flash Player and discovered that he is not able to play them. It only shows the first frame.
My loading.gif:





So how to convert this gif animation into a swf file, which the Flash Player could play? (And of course I only [...]]]></description>
			<content:encoded><![CDATA[<p>Today I tried to load a animated loading animation as a gif image into the Flash Player and discovered that he is not able to play them. It only shows the first frame.<br />
My<em> loading.gif</em>:</p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_98" class="wp-caption aligncenter" style="width: 42px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-98" title="loading.gif" src="http://blog.thehippo.de/wp-content/uploads/2009/09/loading.gif" alt="loading.gif" width="32" height="32" /></dt>
</dl>
</div>
<p>So how to convert this gif animation into a swf file, which the Flash Player could play? (And of course I only want to use open source tools.) It was very easy:<span id="more-97"></span></p>
<ul>
<li>Make sure you have <a title="ImageMagick" href="http://www.imagemagick.org" target="_blank">ImageMagick</a> installed.</li>
<li>Open a console and go to the directory where the gif file is located:
<pre>convert +adjoin -coalesce loading.gif frame%02d.png</pre>
</li>
<li>Now we have a png for every frame of the gif animation. Why png? Because swfmill does not support gif as file format and png it the only available format with support for transparency.</li>
<li>Create a XML file that look similar to this one:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;utf-8&quot;</span> <span class="re2">?&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;movie</span> <span class="re0">width</span>=<span class="st0">&quot;32&quot;</span> <span class="re0">height</span>=<span class="st0">&quot;32&quot;</span> <span class="re0">framerate</span>=<span class="st0">&quot;25&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;background</span> <span class="re0">color</span>=<span class="st0">&quot;#ffffff&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;frame<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;library<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;clip</span> <span class="re0">id</span>=<span class="st0">&quot;frame00&quot;</span> <span class="re0">import</span>=<span class="st0">&quot;frame00.png&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/library<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;place</span> <span class="re0">id</span>=<span class="st0">&quot;frame00&quot;</span> <span class="re0">depth</span>=<span class="st0">&quot;1&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/frame<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;frame<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;library<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;clip</span> <span class="re0">id</span>=<span class="st0">&quot;frame01&quot;</span> <span class="re0">import</span>=<span class="st0">&quot;frame01.png&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/library<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;place</span> <span class="re0">id</span>=<span class="st0">&quot;frame01&quot;</span> <span class="re0">depth</span>=<span class="st0">&quot;1&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/frame<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;frame<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;library<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;clip</span> <span class="re0">id</span>=<span class="st0">&quot;frame02&quot;</span> <span class="re0">import</span>=<span class="st0">&quot;frame02.png&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/library<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;place</span> <span class="re0">id</span>=<span class="st0">&quot;frame02&quot;</span> <span class="re0">depth</span>=<span class="st0">&quot;1&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/frame<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&#8230;.</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/movie<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
</li>
<li>Finally merge the single frame images together with <a href="http://swfmill.org/" target="_blank" title="swfmill">swfmill</a>:
<pre>swfmill simple input.xml output.swf</pre>
</li>
<li>That&#8217;s all.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/09/tools-and-software/how-to-convert-a-animated-gif-into-a-flash-movie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Suppress Apache to give away to much information</title>
		<link>http://blog.thehippo.de/2009/09/server/suppress-apache-to-give-away-to-much-information/</link>
		<comments>http://blog.thehippo.de/2009/09/server/suppress-apache-to-give-away-to-much-information/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 12:48:53 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=68</guid>
		<description><![CDATA[Just for fun I looked at the headers generated by website I made and where I am responsible for the administration of the Apache server I discovered this:
HTTP/1.1 200 OK
Date: Sun, 06 Sep 2009 11:44:56 GMT
Server: Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6
X-Powered-By: PHP/5.2.4-2ubuntu5.7
Connection: close
Content-Type: text/html
Actually I think no one needs to know which PHP version is running [...]]]></description>
			<content:encoded><![CDATA[<p>Just for fun I looked at the <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" target="_blank">headers</a> generated by website I made and where I am responsible for the administration of the <a title="Apache" href="http://httpd.apache.org/" target="_blank">Apache</a> server I discovered this:</p>
<pre>HTTP/1.1 200 OK
Date: Sun, 06 Sep 2009 11:44:56 GMT
Server: Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6
X-Powered-By: PHP/5.2.4-2ubuntu5.7
Connection: close
Content-Type: text/html</pre>
<p>Actually I think no one needs to know which <a title="PHP" href="http://www.php.net/" target="_blank">PHP</a> version is running on this machine and that there also a <a title="SVN" href="http://subversion.tigris.org/" target="_blank">Subversion</a> is running on that machine. Even the name of the operating system and the version of the Apache is not needed in most cases.</p>
<p><strong>So how suppress these information?</strong></p>
<h2><span id="more-68"></span>Disable the &#8220;X-Powered-By&#8221;</h2>
<ul>
<li>Log in to your server as root user.</li>
<li>Open you <em>php.ini</em> file in a editor of you choice. My <em>php.ini</em> is located at <em>/etc/php5/cgi/</em> (as I use <a href="http://blog.thehippo.de/2009/08/server/crashing-virtual-servers-2/" target="_blank">mod_fcgid</a> to server PHP content)</li>
<li>Search and edit:
<pre>; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = Off</pre>
<p>If you like you read in the official <a title="expose_php documentation" href="www.php.net/manual/ini.core.php">PHP documentation</a>.</li>
<li>Save and reload you Apache:
<pre>/etc/init.d/apache2 force-reload</pre>
</li>
</ul>
<h2>Disable the &#8220;Server&#8221;-header</h2>
<p>After searching for  while I figured out that disabling the &#8220;Server&#8221;-header is not possible, without recompiling the Apache. (The Apache developers <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=40026" target="_blank">claim this as a feature</a>.)  But you could decide between some level of information that will be provided.</p>
<ul>
<li>If you are not logged in, log in as root user.</li>
<li>Open you Apache configuration, for me it was <em>/etc/apache2/apache2.conf</em></li>
<li>Search for and edit the following lines:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1"># ServerTokens</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># This directive configures what you return as the Server HTTP response</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Header. The default is &#8216;Full&#8217; which sends information about the OS-Type</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># and compiled in modules.</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1"># Set to one of: &nbsp;Full | OS | Minor | Minimal | Major | Prod</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># where Full conveys the most information, and Prod the least.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">ServerTokens</span> Full</div>
</li>
</ol>
</div>
</li>
<li>Replace the <em>Full</em> with some of the options given in the comment. Here are some examples what these options are meaning:<br />
<table border="0">
<tbody>
<tr>
<td>Full</td>
<td>Server: Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6</td>
</tr>
<tr>
<td>OS</td>
<td>Server: Apache/2.2.8 (Ubuntu)</td>
</tr>
<tr>
<td>Minor</td>
<td>Server: Apache/2.2.8</td>
</tr>
<tr>
<td>Minimal</td>
<td>Server: Apache/2.2</td>
</tr>
<tr>
<td>Major</td>
<td>Server: Apache/2</td>
</tr>
<tr>
<td>Prod</td>
<td>Server: Apache</td>
</tr>
</tbody>
</table>
<p>If you like you could also read the <a title="mod_core documentation" href="http://httpd.apache.org/docs/2.2/mod/core.html#servertokens" target="_blank">official documentation</a>.</li>
<li>Save and reload you Apache:
<pre>/etc/init.d/apache2 force-reload</pre>
</li>
</ul>
<h2>Result</h2>
<p>I had chosen <em>Major</em> in the last step. Now the headers look like this:</p>
<pre>HTTP/1.1 200 OK
Date: Sun, 06 Sep 2009 12:16:40 GMT
Server: Apache/2
Connection: close
Content-Type: text/html</pre>
<p id="firstHeading"><strong>Important note</strong>: This does not improve the security of the server, because you are only hiding information. Maybe you want to read: <a title="Security through obscurity" href="http://en.wikipedia.org/wiki/Security_through_obscurity" target="_blank">Security through obscurity</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/09/server/suppress-apache-to-give-away-to-much-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crashing virtual servers II</title>
		<link>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers-2/</link>
		<comments>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers-2/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 15:48:32 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=54</guid>
		<description><![CDATA[In my last post I wrote about some problems that I had with my virtual server that freezes under heavy load. The improvements I suggested worked really nice but the server still sometimes freezes &#8211; not often as before but it still happened. So I &#8220;googled&#8221; around and also asked at ServerFault.com.
It seems that keeping [...]]]></description>
			<content:encoded><![CDATA[<p>In my last <a title="Crashing Virtual Servers" href="http://blog.thehippo.de/2009/08/server/crashing-virtual-servers/" target="_blank">post</a> I wrote about some problems that I had with my virtual server that freezes under heavy load. The improvements I suggested worked really nice but the server still sometimes freezes &#8211; not often as before but it still happened. So I &#8220;googled&#8221; around and also asked at <a title="Serverfault question" href="http://serverfault.com/questions/54943/virtual-server-freeze-apache" target="_blank">ServerFault.com</a>.</p>
<p>It seems that keeping up the the apache mpm_prefork and mod_php will not be the solution anymore. Most sites suggested to use mpm_worker instead, because it uses less memory (and my problem was, that my Apache consumed all my memory). On the other hand there could be some problems with thread-safety, but I liked to give it a try. PHP will not me used as an Apache module any more. Instead we will run PHP as a <a title="FastCGI" href="http://en.wikipedia.org/wiki/FastCGI" target="_blank">FastCGI</a> script.<span id="more-54"></span></p>
<p>A short step by step tutorial for switching from mpm_prefork to mpm_worker with using PHP.</p>
<ul>
<li>Open a terminal session as a root user.
<pre>apt-get install apache2-mpm-worker libapache2-mod-fcgid php5-cgi</pre>
<p>apt will complain about a few things and will remove some of the previous installed packages. After installation make sure that mod_fcgid is enabled.</li>
<li>Edit you /etc/apache2/apache2.conf or /etc/apache2/httpd.conf or any config file that will be parsed by apache and add this:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">AddHandler</span> fcgid-<span class="kw1">script</span> .php</div>
</li>
<li class="li1">
<div class="de1">FCGIWrapper /usr/lib/cgi-bin/php5 .php</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Options</span> ExecCGI <span class="kw2">FollowSymlinks</span> Indexes</div>
</li>
</ol>
</div>
</li>
<li>Now enter you /etc/apache2/sites-available directory and edit all the the files there. Every file should contain at least one &#8220;VirtualHost&#8221; node. Within these &#8220;VirtualHost&#8221; nodes there should be one or two &#8220;Directory&#8221; nodes. If not already there add a new line starting with &#8220;Options&#8221; and add &#8220;Indexes&#8221; and &#8220;ExecCGI&#8221; as parameters on these lines. It should be look like this one:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">Options</span> Indexes <span class="kw2">FollowSymLinks</span> MultiViews ExecCGI</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">AllowOverride</span> AuthConfig</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">Order</span> <span class="kw1">allow</span>,<span class="kw1">deny</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">allow</span> <span class="kw1">from</span> <span class="kw1">all</span></div>
</li>
</ol>
</div>
</li>
<li>Restart apache:
<pre>/etc/init.d/apache2 restart</pre>
</li>
</ul>
<p>Hopefully now everything should work as before. If you had enabled eAccelerator or any other byte code cache system or if you had mode some modifications on you php.ini you now have to copy them to your &#8220;new&#8221; php.ini located at /etc/php5/cgi/php.ini</p>
<p>A few things wont work as before, e.g. when use user authentication by PHP and not by htaccess. There are also a few issues I read about, but nothing which affect my sites.</p>
<p>As a result I would say spending this hours messing around with Apache and mod_fcgid was a good investment. My server now need only 90 MB Ram when idle, it was 250 MB Ram before. Even under load memory consumption stays lower as before. I hope this will be the last tweak for I longer time.</p>
<p>Using PHP as a FastCGI script gives you a lot of new options. So if you have a lot of time to spent or very worried about the security of you web server you could use the Apache module <a title="suexec" href="http://httpd.apache.org/docs/1.3/suexec.html" target="_blank">suexec</a> which then could execute the script as a special user and not as the default web server user www-data. It could even use multiple user for each virtual host / directory.</p>
<p>Interesting links:</p>
<ul>
<li><a href="http://brian.moonspot.net/2008/02/13/apache-worker-and-php/" target="_blank">http://brian.moonspot.net/2008/02/13/apache-worker-and-php/</a></li>
<li><a href="http://www.ibm.com/developerworks/linux/library/l-tune-lamp-2.html" target="_blank">http://www.ibm.com/developerworks/linux/library/l-tune-lamp-2.html</a> Tuning Apache and PHP</li>
<li><a href="http://www.ibm.com/developerworks/library/l-tune-lamp-3.html" target="_blank">http://www.ibm.com/developerworks/library/l-tune-lamp-3.html</a> Tuning MySQL</li>
<li><a href="http://ivan.gudangbaca.com/installing_apache2_and_php5_using_mod_fcgid" target="_blank">http://ivan.gudangbaca.com/installing_apache2_and_php5_using_mod_fcgid</a> More detailed instruction how to install mpm_worker and PHP via mod_fcgid</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Crashing virtual servers</title>
		<link>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers/</link>
		<comments>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 11:14:36 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[1und1]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[vHost]]></category>
		<category><![CDATA[virtual server]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=36</guid>
		<description><![CDATA[After leaving my last company I rented a small virtual server at 1und1. I took the XL vHost package which contains:

20 GB Raid 5 Storage
512 MB RAM, max 2 GB RAM
2 TB Traffic

At this time I thought it would be nice to install every thing by myself, so I choose a plain &#8220;Ubuntu 8.04 LTS [...]]]></description>
			<content:encoded><![CDATA[<p>After leaving my last company I rented a small virtual server at <a title="1und1" href="http://www.1und1.info" target="_blank">1und1</a>. I took the <a title="1und1 XL virtual host package" href="http://www.1und1.info/xml/order/VirtualServerXL" target="_blank">XL vHost</a> package which contains:</p>
<ul>
<li>20 GB Raid 5 Storage</li>
<li>512 MB RAM, max 2 GB RAM</li>
<li>2 TB Traffic</li>
</ul>
<p>At this time I thought it would be nice to install every thing by myself, so I choose a plain &#8220;Ubuntu 8.04 LTS 64 bit minimal&#8221; as operating system for my vHost. I installed Apache2, PHP5, MySQL and all the stuff I needed. It all works fine and I was really impressed by the speed of this virtual server.</p>
<p>Then I moved <a title="www.sportinleipzig.de" href="http://www.sportinleipzig.de" target="_blank">sportinleipzig.de</a>, which I made during the time at my last company to this new server. This page does not have a very high traffic (200 unique visitors a day), but a lot of content (at least 5000 &#8220;static&#8221; pages). After 2 days the server crashed the first time, whereas crash means, that he is still alive, but does not respond to anything more then a simple ping. I restarted the server over the admin panel. Half a week later the server crashed the next time. Investigating the cause for these crashed I found out a few interesting things.<span id="more-36"></span></p>
<p>First a blamed <a title="mod_tora" href="http://ncannasse.fr/blog/mod_tora" target="_blank">mod_tora</a> which I installed on this virtual server to check if it is ready to use for some production code. Then I deactivated <a title="eAccelerator" href="http://blog.thehippo.de/2009/08/server/eaccelerator-on-ubuntu/" target="_blank">eAccelerator</a>, because I thought it could be possible that it has some memory leaks. I even deactivated <a title="Piwik" href="http://piwik.org/" target="_blank">Piwik</a> which I use as a tracking system for all the visitors on the pages of this server. (It is very nice! If you need some visitor tracking, give it a try.) But the server still crashed ever few days.</p>
<p>Later I recognized that these crashes possibly occur when Google starts to crawl the page, as the page was not completely indexed anymore. So I started to do some load test on the server. A good page to start is <a title="loadimpact.com" href="http://loadimpact.com" target="_blank">loadimpact.com</a> and the Apache command line tool <a title="Apache Benchmark" href="http://httpd.apache.org/docs/2.0/programs/ab.html" target="_blank">ab</a>, which both give you the possibility to run a lot of requests on you own server. Having a ssh session open and refreshing the status page of the Virtuozzo panel it became more and more clear. These kind of virtual server are very restricted how many resources they could consume and there a few limit that are easy to reach:</p>
<ul>
<li><strong>kmemsize</strong>:<br />
<blockquote><p>The size of unswappable kernel memory allocated for the internal kernel structures for the processes of a particular VPS.</p></blockquote>
</li>
<li><strong>shmpages</strong>:<br />
<blockquote><p>The total size of shared memory (including IPC, shared anonymous mappings and tmpfs objects) allocated by the processes of a particular VPS, in pages.</p></blockquote>
</li>
<li><strong>numproc</strong> (maximum set to 128!):<br />
<blockquote><p>The maximal number of processes the VPS may create.</p></blockquote>
</li>
<li><strong>numfile</strong> (maximum set to 8192, this is okay):<br />
<blockquote><p>The number of files opened by all VPS processes.</p></blockquote>
</li>
<li><strong>numtcpsock</strong> and <strong>numothersock</strong> (both set to 720, means: no socket servers on virtual servers!):<br />
<blockquote><p>he number of TCP sockets (PF_INET family, SOCK_STREAM type). This parameter limits the number of TCP connections and, thus, the number of clients the server application can handle in parallel.</p></blockquote>
<blockquote><p>The number of sockets other than TCP ones. Local (UNIX-domain) sockets are used for communications inside the system. UDP sockets are used, for example, for Domain Name Service (DNS) queries. UDP and other sockets may also be used in some very specialized applications (SNMP agents and others).</p></blockquote>
</li>
</ul>
<p>There are a lot of other limits set to the server, but the first three are these limits that made my server crash, when having tons of requests on the Apache.</p>
<p>I am using the Apache2 in the prefork mode (this is default if you install it via the Ubuntu repositories). This means the Apache spawns a few processes to handle the requests. If load raises more processes will be created, if load goes down unused processes will be destroyed. Forking new processes cost a little bit time so the Apache keeps some processes ready just in the case of load peak. During the time google crawls the page many processes where created to handle the load. The problem was that these processes consumed to much memory (probably this could be a memory leak in one of the PHP  scripts) and some of some became zombies, leading the virtual server to consume all resources and then crash.</p>
<p><strong>The solution</strong>:<br />
Edit you &#8220;/etc/apache2/apache2.conf&#8221;. Search for this section:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1"># prefork MPM</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># StartServers: number of server processes to start</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># MinSpareServers: minimum number of server processes which are kept spare</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># MaxSpareServers: maximum number of server processes which are kept spare</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1"># MaxClients: maximum number of server processes allowed to start</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># MaxRequestsPerChild: maximum number of requests a server process serves</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">StartServers</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">MinSpareServers</span> &nbsp; &nbsp; &nbsp;<span class="nu0">10</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">MaxSpareServers</span> &nbsp; &nbsp; &nbsp;<span class="nu0">20</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">MaxClients</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">100</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">MaxRequestsPerChild</span> <span class="nu0">500</span></div>
</li>
</ol>
</div>
<p>You could read in the comment of the config the impact of every parameter. The important one is the last one which is set to &#8220;0&#8243; by default, which means that processes live as long as possible. Setting it to &#8220;500&#8243;, which is quite conservative, makes every process ends after serving 500 request. This also makes sure that all the allocated memory is freed. That causes that processes need to be created more often, so I also raised &#8220;MinSpareServers&#8221; and &#8220;MaxSpareServers&#8221;, which are the processes keept ready for load peak.<br />
In conclusion my server spends a little more time on spawning new Apache processes, but this makes sure memory is cleaned more often and finally solved my problem!</p>
<p>P.S.: I don&#8217;t know if this is on all virtual servers, but the vHosts at 1und1 have a &#8220;/proc/&#8221;-entry for reading the limits of you server. You type into the terminal:</p>
<pre>root@foo:~# cat /proc/user_beancounters</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/08/server/crashing-virtual-servers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>eAccelerator on Ubuntu</title>
		<link>http://blog.thehippo.de/2009/08/server/eaccelerator-on-ubuntu/</link>
		<comments>http://blog.thehippo.de/2009/08/server/eaccelerator-on-ubuntu/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 17:34:43 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[eAccelerator]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=19</guid>
		<description><![CDATA[On the last blog I wrote for was an article which described who to install eAccelerator on a Ubuntu server. As this blog entry had a lot of visits I decided to put it on this blog again:
PHP is not the fastest scripting language, that truly a fact. Except from optimizing the scripts there a [...]]]></description>
			<content:encoded><![CDATA[<p>On the last blog I wrote for was an article which described who to install eAccelerator on a <a title="Ubuntu" href="http://www.ubuntu.com" target="_blank">Ubuntu</a> server. As this blog entry had a lot of visits I decided to put it on this blog again:</p>
<p><a title="PHP" href="http://www.php.net" target="_blank">PHP</a> is not the fastest scripting language, that truly a fact. Except from optimizing the scripts there a few possibilities to speed everything up. One is to install a byte code optimizer and cache on your server. They cache the byte code created by the PHP parser and try to optimise it. So every time some one requests for a page on your server the script does not have to be parsed again. This brings a speedup of 120 &#8211; 250% depending on you script. There are several byte code caching program available, the one I like most is <a title="eAccelerator" href="http://www.eaccelerator.net/" target="_blank">eAccelerator</a>. Sadly eAccelerator is not available through the Ubuntu repositories so you have install them yourself. Here is a short description how to archive this!<br />
<span id="more-19"></span>Everything is done from the terminal as a root user.</p>
<ul>
<li>Prepare you system for compiling a PHP extension:
<pre>apt-get install build-essential php5-dev</pre>
</li>
<li>Choosing a folder for build process. I used &#8220;/usr/local/src/&#8221;</li>
<li>Getting the sources from the eAccelerator site:
<pre>wget <a class="linkification-ext" title="Linkification: http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip" href="http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip">http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip</a></pre>
</li>
<li>Extract and delete the archive
<pre>unzip eaccelerator-0.9.5.3.zip &amp;&amp; rm eaccelerator-0.9.5.3.zip</pre>
</li>
<li>Enter the folder
<pre>cd eaccelerator-0.9.5.3</pre>
</li>
<li>Prepare as a new PHP extension and compilation
<pre>phpize
./configure --enable-eaccelerator=shared</pre>
</li>
<li>Compile and install
<pre>make
make install</pre>
<p>The install process prints out a folder where eAccelerator has been installed. Remember or copy it, you will need this later.</li>
<li>Enabling eAcceletor: Editing your &#8220;php.ini&#8221; or create a new ini file in you conf.d directory of PHP. (You can find them here: &#8220;/etc/php5/&#8221;.) Insert the following:
<pre>zend_extension                  = "/usr/lib/php5/20060613+lfs/eaccelerator.so"
eaccelerator.shm_size           = "0"
eaccelerator.cache_dir          = "/var/cache/eaccelerator"
eaccelerator.enable             = "1"
eaccelerator.optimizer          = "1"
eaccelerator.check_mtime        = "1"
eaccelerator.debug              = "0"
eaccelerator.filter             = ""
eaccelerator.shm_max            = "0"
eaccelerator.shm_ttl            = "0"
eaccelerator.shm_prune_period   = "0"
eaccelerator.shm_only           = "0"
eaccelerator.compress           = "1"
eaccelerator.compress_level     = "7"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"</pre>
<p>In the first line enter the path printed out during the install. In the last line you could enter a directory for the eAccelerator admin tool, if you want to use it.</li>
<li>Create the cache directory:
<pre>mkdir /var/cache/eaccelerator
chown www-data.www-data /var/cache/eaccelerator</pre>
</li>
<li>Restart you Apache!
<pre>/etc/init.d/apache2 restart</pre>
</li>
</ul>
<p>There are a lot of setting in the ini file. The whole list and the description of them could be found here:  <a title="eAccelerator Ini-settings" href="http://eaccelerator.net/wiki/Settings" target="_blank">Ini-settings</a>.</p>
<p>To check if everything is working open up a page on the server that contains the &#8220;php_info();&#8221; command. There should be some thing like this:</p>
<div id="attachment_32" class="wp-caption aligncenter" style="width: 617px"><img class="size-full wp-image-32" title="eAccelerator" src="http://blog.thehippo.de/wp-content/uploads/2009/08/eacclerator.jpg" alt="eAccelerator" width="607" height="98" /><p class="wp-caption-text">eAccelerator</p></div>
<p>Enjoy the speed!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/08/server/eaccelerator-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>First post</title>
		<link>http://blog.thehippo.de/2009/08/general/first-post/</link>
		<comments>http://blog.thehippo.de/2009/08/general/first-post/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 15:48:42 +0000</pubDate>
		<dc:creator>Hippo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.thehippo.de/?p=7</guid>
		<description><![CDATA[Welcome to my blog!
After a while I decided to start a blog again and here is my first post.  (I think this is the third try, so we will see how long this experiment will  last.) Most of the blog entries will be about typical nerd and computer stuff like linux servers, programming, etc. I [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to my blog!</p>
<p>After a while I decided to start a blog again and here is my first post.  (I think this is the third try, so we will see how long this experiment will  last.) Most of the blog entries will be about typical nerd and computer stuff like linux servers, programming, etc. I hope there will be some interesting topics for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thehippo.de/2009/08/general/first-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
