<?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>nerdcenter</title>
	<atom:link href="http://nerdcenter.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://nerdcenter.de</link>
	<description>IT-Kniffe eines Webentwicklers.</description>
	<lastBuildDate>Tue, 01 Sep 2009 08:51:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>suPHP und PHP Opcode Caches</title>
		<link>http://nerdcenter.de/suphp-php-opcode-cache/</link>
		<comments>http://nerdcenter.de/suphp-php-opcode-cache/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 11:02:37 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Linux / Unix]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/?p=63</guid>
		<description><![CDATA[

Eigentlich ist suPHP eine nette Sache. Das Apache Modul mod_suphp sorgt in Kombination mit einem SetUID Binary dafür, dass PHP-Skripte mit den Berechtigungen des Benutzers, dem sie gehören, ausgeführt werden. Damit das funktioniert muss man in Binär-Distributionen wie etwa Debian Linux nicht mehr tun, als dass Modul zu installieren, einen Blick auf dessen Konfiguration zu [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Eigentlich ist suPHP eine nette Sache. Das Apache Modul mod_suphp sorgt in Kombination mit einem SetUID Binary dafür, dass PHP-Skripte mit den Berechtigungen des Benutzers, dem sie gehören, ausgeführt werden. Damit das funktioniert muss man in Binär-Distributionen wie etwa Debian Linux nicht mehr tun, als dass Modul zu installieren, einen Blick auf dessen Konfiguration zu werfen und es anschließend zu aktivieren. Vielleicht ist es gerade diese Einfachheit (deren Preis die Starrheit ist), die es so beliebt macht.</p>
<p>Ein großes Problem tut sich aber dann auf, wenn man PHP-Caches wie APC, TurckMM oder eAccelerator verwenden möchte. Denn all diese Caches funktionieren nicht im Zusammenspiel mit suPHP. Zwar lässt sich eine solche Kombination verwenden, doch ist sie leider nutzlos, da nichts gecached wird.</p>
<p>Eine wundervolle Alternative zu der Verwendung von suPHP ist eine Kombination aus Apache, SuExec, FCGID und PHP-CGI. Mit dieser Kombination funktioniert auch das Caching problemlos. Eine Anleitung zum Aufsetzen dieser Kombination findet sich bei <a href="http://wiki.hetzner.de/index.php/Apache_PHP5_fcgi_und_SuExec">Hetzner.de</a>.</p>
<p>Wer seine Websites nicht in dem von der jeweils genutzten Linux Distribution dafür vorgesehenen Verzeichnis ablegt sondern stattdessen beispielsweise in /home/*/public_html/ muss darauf achten, SuExec selbst zu kompilieren oder auf Debian-Systemen die gepatchte Version apache2-suexec-common zu verwenden. Aus Sicherheitsgründen erwartet SuExec bereits bei der Kompilierung den Pfad zum Docroot. Bei der Verwendung von apache2-suexec-common lässt sich das Docroot in der Datei /etc/apache2/suexec/www-data angeben.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/suphp-php-opcode-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress Update</title>
		<link>http://nerdcenter.de/wordpress-update/</link>
		<comments>http://nerdcenter.de/wordpress-update/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 10:21:35 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/?p=61</guid>
		<description><![CDATA[

Lange Zeit habe ich davor gescheut, meine Wordpress-Installation zu aktualisieren. Hauptsächlich, weil ich Angst vor dem Aufwand hatte, schließlich habe ich noch Wordpress 2.1 benutzt (aktuell ist 2.8.4) und daher mit zahlreichen Inkompabilitäten gerechnet. Letzte Nacht habe ich es dann trotzdem gewagt und das Wordpress Update durchgeführt.
Und es geht doch&#8230;
&#8230;uralte Wordpress-Installationen problemlos zu aktualisieren. Sogar [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Lange Zeit habe ich davor gescheut, meine Wordpress-Installation zu aktualisieren. Hauptsächlich, weil ich Angst vor dem Aufwand hatte, schließlich habe ich noch Wordpress 2.1 benutzt (aktuell ist 2.8.4) und daher mit zahlreichen Inkompabilitäten gerechnet. Letzte Nacht habe ich es dann trotzdem gewagt und das Wordpress Update durchgeführt.</p>
<p><strong>Und es geht doch&#8230;</strong><br />
&#8230;uralte Wordpress-Installationen problemlos zu aktualisieren. Sogar ziemlich einfach. Orientiert habe ich mich dabei an <a href="http://www.wordpress-buch.de/2009/01/wordpress-ohne-risiko-auf-27-updaten/">diesem Artikel</a>. Mir persönlich erschien es dabei aber sauberer, die neue Version herunter zu laden und die paar Sachen (Bilder), die ich aus der der alten Installation benötigte in die neue hinein zu kopieren. Dies ermöglicht es einem, eine Subdomain anzulegen, auf der man die neue Installation erst einmal testen kann. Anschließend kann man mit einem Symlink einfach die verwendete Installation wechseln.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/wordpress-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XEN Loop Disk Image vergrößern</title>
		<link>http://nerdcenter.de/xen-loop-disk-image-vergrosern/</link>
		<comments>http://nerdcenter.de/xen-loop-disk-image-vergrosern/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 11:47:13 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Linux / Unix]]></category>
		<category><![CDATA[XEN]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[domU]]></category>
		<category><![CDATA[grow]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[vergrößern]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/xen-loop-disk-image-vergrosern/</guid>
		<description><![CDATA[

Das Loop Disk Image einer XEN DomU ist zu klein geworden? Solang die Festplatte des Hypervisors noch genügend Platzreserven hat, ist das glücklicherweise kein unlösbares Problem. Loop Disk Images können mit Bordmitteln vergrößert werden. Zwei kleine Beispiele für die Vorgehensweise bei EXT2, EXT3 und XFS Dateisystem:
EXT2 / EXT3 Dateisystem
VM herunterfahren:
xm shutdown domu.blub.local
Image um 30GB vergrößern:
dd [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Das Loop Disk Image einer XEN DomU ist zu klein geworden? Solang die Festplatte des Hypervisors noch genügend Platzreserven hat, ist das glücklicherweise kein unlösbares Problem. Loop Disk Images können mit Bordmitteln vergrößert werden. Zwei kleine Beispiele für die Vorgehensweise bei EXT2, EXT3 und XFS Dateisystem:</p>
<p><strong>EXT2 / EXT3 Dateisystem</strong><br />
VM herunterfahren:</p>
<pre>xm shutdown domu.blub.local</pre>
<p>Image um 30GB vergrößern:</p>
<pre>dd if=/dev/zero bs=1024k count=30720 >> disk.img</pre>
<p>Fehler im Dateisystem korrigieren:</p>
<pre>e2fsck -f disk.img</pre>
<p>Dateisystem auf die Größe des Images vergrößern:</p>
<pre>resize2fs disk.img</pre>
<p><strong>XFS Dateisystem</strong><br />
VM herunterfahren:</p>
<pre>xm shutdown domu.blub.local</pre>
<p>Image um 30GB vergrößern:</p>
<pre>dd if=/dev/zero bs=1024k count=30720 >> disk.img</pre>
<p>Fehler im Dateisystem korrigieren:</p>
<pre>xfs_repair -f disk.img</pre>
<p>Dateisystem auf die Größe des Images vergrößern:</p>
<pre>mount disk.img /mnt/tmp/ -o loop
xfs_growfs -d /mnt/tmp/</pre>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/xen-loop-disk-image-vergrosern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webdesign-Kunden im Alltag</title>
		<link>http://nerdcenter.de/webdesign-kunden-im-alltag/</link>
		<comments>http://nerdcenter.de/webdesign-kunden-im-alltag/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 14:22:21 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Kunden]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/webdesign-kunden-im-alltag/</guid>
		<description><![CDATA[

Einfach nur herrlich dieser Clip. Es trifft zwar glücklicher Weise nur auf wenige potentielle Auftraggeber zu aber dennoch begegnet einem diese Spezies immer wieder: Menschen mit dem Wunsch die perfekte Website innerhalb kürzester Zeit zu erhalten &#8211; selbstverständlich zum Ramschpreis. Das Video zeigt, wie sie außerhalb ihrer geschäftlichen Tätigkeit agieren.


]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Einfach nur herrlich dieser Clip. Es trifft zwar glücklicher Weise nur auf wenige potentielle Auftraggeber zu aber dennoch begegnet einem diese Spezies immer wieder: Menschen mit dem Wunsch die perfekte Website innerhalb kürzester Zeit zu erhalten &#8211; selbstverständlich zum Ramschpreis. Das Video zeigt, wie sie außerhalb ihrer geschäftlichen Tätigkeit agieren.</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/JI3Df7-KFtw&#038;hl=de&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/JI3Df7-KFtw&#038;hl=de&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/webdesign-kunden-im-alltag/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MacBook iSight Kamera funktioniert nicht</title>
		<link>http://nerdcenter.de/macbook-isight-kamera-funktioniert-nicht/</link>
		<comments>http://nerdcenter.de/macbook-isight-kamera-funktioniert-nicht/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 11:56:55 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[MacBook]]></category>
		<category><![CDATA[defekt]]></category>
		<category><![CDATA[funktioniert nicht]]></category>
		<category><![CDATA[geht nicht]]></category>
		<category><![CDATA[iSight]]></category>
		<category><![CDATA[Kamera]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/macbook-isight-kamera-funktioniert-nicht/</guid>
		<description><![CDATA[

Mein MacBook hat sich heute morgen geweigert zu starten. Fünf Anläufe waren nötig, damit das Teil endlich lief. Als es dann endlich geklappt hat, konnte ich mir erst einmal die Schweißperlen von der Stirn wischen, die bei dem Gedanken an meine Abschlussarbeit auf dem Gerät entstanden. Aber etwas war anders als sonst: Die Grüne LED [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Mein MacBook hat sich heute morgen geweigert zu starten. Fünf Anläufe waren nötig, damit das Teil endlich lief. Als es dann endlich geklappt hat, konnte ich mir erst einmal die Schweißperlen von der Stirn wischen, die bei dem Gedanken an meine Abschlussarbeit auf dem Gerät entstanden. Aber etwas war anders als sonst: Die Grüne LED neben der iSight Kamera leuchtete plötzlich permanent auf. Eigentlich zeigt diese an, dass die Kamera aktiv ist, was aber nicht der Fall war. In Photo Booth blieb das Bild schwarz. Neustart &amp; co brachten keine Besserung. Folgendes hingegen schon:</p>
<ul>
<li>MacBook ausschalten</li>
<li>Netzteil-Kabel entfernen und Batterie herausnehmen</li>
<li>5 Sekunden auf den Einschalter drücken</li>
<li>Batterie wieder einlegen, Netzteil-Kabel wieder ran und tata &#8211; alles funktioniert wieder wie gewünscht</li>
</ul>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/macbook-isight-kamera-funktioniert-nicht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Serverumzug</title>
		<link>http://nerdcenter.de/magento-server-wechseln-umziehen/</link>
		<comments>http://nerdcenter.de/magento-server-wechseln-umziehen/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 14:15:04 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/magento-server-wechseln-umziehen/</guid>
		<description><![CDATA[

Magento gestaltet einen Serverumzug leider schwieriger, als er sein müsste. Die Entwickler haben zahlreiche Stolpersteine versteckt, die es eigentlich gar nicht geben müsste (etwa das speichern vollständiger URLs in der Datenbank). Dennoch ist ein Serverwechsel einfacher, als man mancherorts liest:
1. Im Magento Backend unbedingt den Cache deaktivieren, zumindest den Konfigurations-Cache, denn auch die MySQL Zugangsdaten [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p><strong>Magento</strong> gestaltet einen <strong>Serverumzug</strong> leider schwieriger, als er sein müsste. Die Entwickler haben zahlreiche Stolpersteine versteckt, die es eigentlich gar nicht geben müsste (etwa das speichern vollständiger URLs in der Datenbank). Dennoch ist ein Serverwechsel einfacher, als man mancherorts liest:</p>
<p>1. Im Magento Backend unbedingt den Cache deaktivieren, zumindest den Konfigurations-Cache, denn auch die MySQL Zugangsdaten werden gecached, was dazu führt, dass nach dem Umzug nichts funktioniert und keine Möglichkeit dazu besteht, mit akzeptablen Aufwand den Cache zu leeren &#8211; der Login im Adminbereich geht dann nämlich auch nicht mehr.</p>
<p>2. SQL-Dump erzeugen:</p>
<pre>mysqldump -uBENUTZER -pPASSWORT DATENBANK &gt; magento.sql</pre>
<p>3. Leider speichert Magento Komplette URLs in der Datenbank, etwa die Base URL und die Secure Base URL.<br />
Daher ist es notwendig, die verwendeten IPs / Domains in dem Dump zu suchen und zu ersetzen, sofern sich diese geändert haben.<br />
Den Dump dazu einfach in mit dem Lieblings-Texteditor (z.B. nano) öffnen oder alternativ mit reichlich Kommandozeilen-Magic (grep, sed). Ersteres geht in diesem Fall ausnahmsweise schneller <img src='http://nerdcenter.de/wp-includes/images/smilies/icon_wink.gif' alt="Icon Wink in Magento Serverumzug" class='wp-smiley' /> </p>
<p>4. GZIP-komprimiertes Tararchiv aus dem Magento-Rootverzeichnis und dem SQLdump erzeugen: </p>
<pre>tar cfz magento.tgz ~/public_html/magento magento.sql</pre>
<p>5. Das Archiv per SCP oder FTP auf den neuen Server schieben, z.B.:</p>
<pre>scp magento.tgz user@host:/absoluter_verzeichnis_pfad/</pre>
<p>6. Das Archiv auf dem neuen Server entpacken:</p>
<pre>tar xfz magento.tgz</pre>
<p>7. Falls notwendig die entpackten Dateien / Verzeichnisse via <em>mv</em> ins neue htdocs verschieben&#8230;</p>
<p>8. Den entpackten Dump in die neue Datenbank einspielen:</p>
<pre>mysql -uBENUTZER -pPASSWORT DATENBANK &lt; magento.sql</pre>
<p>9. Leider speichert Magento absolute Pfade, die für die Installation von Erweiterungen via Pear (bzw. Magento Connect als Frontend) verwendet werden.<br />
Um diese Pfade zu aktualisieren muss man ins neue Magento-Wurzelverzeichnis wechseln und dort folgenden befehl ausführen:</p>
<pre>./pear mage-setup</pre>
<p>Ansonsten ist es nicht möglich Erweiterungen via Magento Connect einzuspielen!</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/magento-server-wechseln-umziehen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP: Bit Flags</title>
		<link>http://nerdcenter.de/php-bit-flags/</link>
		<comments>http://nerdcenter.de/php-bit-flags/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 16:02:53 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[flags]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/php-bit-flags/</guid>
		<description><![CDATA[

In manchen Fällen können Bit Flags in PHP-Skripten sehr nützlich sein. Etwa wenn es darum geht,
anhand eines &#8220;action&#8221;-Parameters zu entscheiden, welche Objekte instanziiert werden sollen. U.a. auf diese Weise kann
- sonst redundanter &#8211; Code gesparrt werden.
Kennern des binären Zahlensystems sollten also mal einen Blick darauf werfen. Alle anderen sollten dringend zu
diesen Kennern werden &#8211; das [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>In manchen Fällen können Bit Flags in PHP-Skripten sehr nützlich sein. Etwa wenn es darum geht,<br />
anhand eines &#8220;action&#8221;-Parameters zu entscheiden, welche Objekte instanziiert werden sollen. U.a. auf diese Weise kann<br />
- sonst redundanter &#8211; Code gesparrt werden.</p>
<p>Kennern des binären Zahlensystems sollten also mal einen Blick darauf werfen. Alle anderen sollten dringend zu<br />
diesen Kennern werden &#8211; das macht nicht nur das Verständniss des folgenden Codesnippets sondern das ganze (IT-) Leben einfacher <img src='http://nerdcenter.de/wp-includes/images/smilies/icon_wink.gif' alt="Icon Wink in PHP: Bit Flags" class='wp-smiley' /> </p>
<p>Das Prinzip ist eigentlich ganz einfach: Es werden einzelne Bits einer Integer Variablen gesetzt. Mit einer<br />
logisch AND Verknüpfung kann dann geprüft werden, ob einzelne Bits gesetzt wurden. Mit AND können Bits gelöscht werden,<br />
mit OR werden sie hinzu addiert. Jedes Bit stellt ein Flag dar. Ist ein Flag gesetzt werden entsprechende Aktionen ausgeführt.</p>
<p>Ein kleines Beispiel zu Bit Flags in PHP5:</p>
<pre>class example_controller {
	/**
	 * Flags set by $this-&gt;setFlags()
	 *
	 * @var int
	 */
	private		$flags			=	0;
	/**
	 * Instantiate the renderer object if this flag is set
	 *
	 * @var int
	 */
	const		FLAG_RENDERER		=	1;
	/**
	 * Do something cool if this flag is set
	 *
	 * @var int
	 */
	const		FLAG_DO_COOL_STUFF	=	2;
	/**
	 * Do even more cool stuff if this flag is set
	 *
	 * @var int
	 */
	const		FLAG_EVEN_MORE_STUFF	=	4;

	/**
	 * Initializes this object
	 *
	 */
	public function init() {
		$this-&gt;setFlags();
		$this-&gt;processFlags();
	}

	/**
	 * Setting the flags according to parameters
	 *
	 */
	private function setFlags() {
		if(!empty($_GET['action'])) {
			switch($_GET['action']) {
				case 'createFoo':
					$this-&gt;flags |= self::FLAG_RENDERER;
					break;
				case 'saveFoo':
					$this-&gt;flags |= self::FLAG_RENDERER;
					$this-&gt;flags |= self::FLAG_DO_COOL_STUFF;
					break;
			}
		}
	}

	/**
	 * Instantiates objects by flags
	 *
	 */
	private function processFlags() {
		// instantiate renderer
		if(($this-&gt;flags &#038; self::FLAG_RENDERER) > 0) {
			require_once(EXTENSION_LIBPATH . 'class.example_renderer.php');
			$this-&gt;renderer = example_renderer::getInstance();
			$this-&gt;renderer-&gt;init();
		}
		// do cool stuff
		if(($this-&gt;flags &#038; self::FLAG_DO_COOL_STUFF) > 0) {
			require_once('./lib/class.cool_stuff_factory.php');
			$myCoolStuff = cool_stuff_factory::makeInstance();
			$myCoolStuff-&gt;save();
		}
		// do even more cool stuff
		if(($this-&gt;flags &#038; self::FLAG_EVEN_MORE_STUFF) > 0) {
			require_once('./lib/class.even_more_stuff.php');
		}
	}
}</pre>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/php-bit-flags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X kernel_task CPU-Usage</title>
		<link>http://nerdcenter.de/os-x-kernel_task-cpu-usage/</link>
		<comments>http://nerdcenter.de/os-x-kernel_task-cpu-usage/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 20:25:33 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[kernel_task]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/os-x-kernel_task-cpu-usage/</guid>
		<description><![CDATA[

Als ich heute in der Firma saß wurden sämtliche Anwendungen, die auf meinem MacBook liefen, plötzlich ziemlich langsam. Doch welcher Prozess sorgte dafür?
Zu meiner Überraschung fand sich der Prozess kernel_task bezüglich seines CPU Appetits auf Platz Eins wieder. Wenn ich das ganze richtig verstanden habe ist kernel_task eine Zusammenfassung sämtlicher Kernelprozesse (inkl. derer von Kernel [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Als ich heute in der Firma saß wurden sämtliche Anwendungen, die auf meinem MacBook liefen, plötzlich ziemlich langsam. Doch welcher Prozess sorgte dafür?</p>
<p>Zu meiner Überraschung fand sich der Prozess kernel_task bezüglich seines CPU Appetits auf Platz Eins wieder. Wenn ich das ganze richtig verstanden habe ist kernel_task eine Zusammenfassung sämtlicher Kernelprozesse (inkl. derer von Kernel Extensions (.kext Dateien), welche als Thread dieses Prozesses laufen. Diese Prozesse werden also anders als etwa bei Linux und BSD zusammengefasst dargestellt. Wenn man auf der Suche nach der Ursache für den von mir beobachteten Leistungsabfall ist, stört das ganz ungemein, denn man kann z.B. nicht sofort erkennen ob das Problem etwa vom Kernel Modul für das verwendete Dateisystem herrührt.</p>
<p>Eine Google Suche offenbarte zwar diverse Foren- und Mailinglistenbeiträge, bei denen sehr ähnliche Probleme geschildert wurden, eine Lösung fand sich jedoch nicht. So blieb mir nur noch Raten. Da ich am Vortrag Virtualbox installiert habe, wodurch auch einige Kernelmodule mitinstalliert wurden, lag dort mein erster Verdacht. Also Virtualbox samt der Module mit dem mitgelieferten Shell (Bash?) -Skript deinstalliert. Die Module wurden sofort unloaded (hm, irgendwie fällt mir gerade kein sinnvolles, deutsches Wort dafür ein&#8230; entladen oder ausladen klingt doof) doch die Prozessor-Auslastung nahm nicht ab. Aus einem komplett anderen Grund habe ich später die Dateirechte Reparieren Funktion von Disk Util angehauen. Keine sofortige Veränderung. Irgendwann ausgeschaltet.</p>
<p>Als ich das MacBook gerade wieder eingeschaltet habe ist wieder alles super. Da ich zwischenzeitlich diverse Versuche mit anschließenden Neustarts (etwa PRAM reset) versucht habe, glaube ich, dass eine der beiden Aktionen etwas bewirkt hat. Sie waren das letzte, was ich gemacht habe. Irgendwie fände ich es logisch wenn es die erstere gewesen ist aber vielleicht war es ja auch einfach Magie <img src='http://nerdcenter.de/wp-includes/images/smilies/icon_wink.gif' alt="Icon Wink in OS X kernel_task CPU-Usage" class='wp-smiley' /> </p>
<p>Mein System ist übrigens ein 10.5.6.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/os-x-kernel_task-cpu-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TYPO3: Frontend Renderer als Singleton</title>
		<link>http://nerdcenter.de/typo3-frontend-renderer-als-singleton/</link>
		<comments>http://nerdcenter.de/typo3-frontend-renderer-als-singleton/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 22:18:13 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Renderer]]></category>
		<category><![CDATA[Singleton]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/typo3-frontend-renderer-als-singleton/</guid>
		<description><![CDATA[

Renderer sind stets einmalig. Das Singleton Design Pattern bilded genau dies ab: Es wird lediglich eine einzige Instanz der Klasse erzeugt und zurückgegeben. Die folgende Klasse kann als Basis für die View-Schicht der eigenen TYPO3 Extension verwendet werden. Sie ist von pi_base abgeleitet und bietet so den gewohnten Funktionsumfang. Der Codeschnipsel stammt aus einer mini [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Renderer sind stets einmalig. Das Singleton Design Pattern bilded genau dies ab: Es wird lediglich eine einzige Instanz der Klasse erzeugt und zurückgegeben. Die folgende Klasse kann als Basis für die View-Schicht der eigenen TYPO3 Extension verwendet werden. Sie ist von pi_base abgeleitet und bietet so den gewohnten Funktionsumfang. Der Codeschnipsel stammt aus einer mini TYPO3 Extension, an der ich gerade privat bastel.</p>
<pre>&lt;?php
/***************************************************************
*  Copyright notice
*
*  (c) 2009 Thorsten Boock &lt;thorsten (at) nerdcenter.de&gt;
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

require_once(PATH_tslib . 'class.tslib_pibase.php');

/**
 * Frontend Renderer
 * Till PHP 5.3 this class has to be declared as final because
 * we don't know the names of the classes extending this one.
 *
 * @author Thorsten Boock &lt;thorsten (at) nerdcenter.de&gt;
 */
final class tx_tbwhoisonline_renderer_fe extends tslib_pibase {
	/**
	 * Instance of this class (Singleton Design Pattern)
	 *
	 * @var tx_whoisonline_renderer_fe
	 */
	private static		$instance					=	null;
	/**
	 * Path to the template file used for rendering
	 *
	 * @var string
	 */
	private				$templateFile				=	'';
	/**
	 * The contents of the file $this-&gt;templateFile
	 *
	 * @var string
	 */
	private				$templateHTML				=	'';

	/**
	 * Empty constructor (Singleton Design Pattern)
	 *
	 */
	private function __construct() {

	}

	/**
	 * Empty clone function (Singleton Design Pattern)
	 *
	 */
	private function __clone() {

	}

	/**
	 * Instantiating this object (Singleton Design Pattern)
	 *
	 * @return tx_tbwhoisonline_renderer_fe
	 */
	public static function getInstance() {
		if(self::$instance == null) {
			self::$instance = new tx_tbwhoisonline_renderer_fe();
		}
		return self::$instance;
	}

	/**
	 * Initializing this object
	 *
	 * @param array $conf
	 */
	public function init($conf) {
		// init tslib_pibase
		$this-&gt;conf = $conf;
		$this-&gt;pi_setPiVarDefaults();
		$this-&gt;pi_loadLL();
		// get cObj instance and load template
 		$this-&gt;cObj = t3lib_div::makeInstance('tslib_cObj');
 		$this-&gt;templateHTML = $this-&gt;cObj-&gt;fileResource($this-&gt;templateFile);
		// override defaults with typoscript configuration
		foreach($this-&gt;conf as $key =&gt; $value) {
			$key = str_replace('.', '', $key);
			if(isset($this-&gt;$key)) {
				$this-&gt;$key = $value;
			}
		}
	}
}
?&gt;</pre>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/typo3-frontend-renderer-als-singleton/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Module &#8216;json&#8217; already loaded in Unknown on line 0</title>
		<link>http://nerdcenter.de/module-json-already-loaded-in-unknown-on-line-0/</link>
		<comments>http://nerdcenter.de/module-json-already-loaded-in-unknown-on-line-0/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 22:35:32 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Linux / Unix]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nerdcenter.de/module-json-already-loaded-in-unknown-on-line-0/</guid>
		<description><![CDATA[

Mir sind gerade fast die Augen rausgefallen als ich bei einem Blick ins Error-Log des Apache Webservers unter Debian Etch abertausende Zeilen mit der Fehlermeldung &#34;PHP Warning: Module &#8216;json&#8217; already loaded in Unknown on line 0&#34; sah. Jeder Seitenaufruf erzeugte diesen Fehler. Die installierten Pakete (php5-cgi + Module sowie apache2 + Module) entstammen dem offiziellen [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Mir sind gerade fast die Augen rausgefallen als ich bei einem Blick ins Error-Log des Apache Webservers unter Debian Etch abertausende Zeilen mit der Fehlermeldung <strong>&quot;PHP Warning: Module &#8216;json&#8217; already loaded in Unknown on line 0&quot;</strong> sah. Jeder Seitenaufruf erzeugte diesen Fehler. Die installierten Pakete (php5-cgi + Module sowie apache2 + Module) entstammen dem offiziellen Debian Etch Repository, das Problem betrifft also wahrscheinlich auch noch viele weitere Systeme, bei denen nicht ständig ins Error-Log geschaut wird. Wahrscheinlich wird beim Start des php-cgi Prozesses noch eine andere Konfigurationsdatei als <em>/etc/php5/cgi/php.ini</em>, mit der Anweisung das Modul zu laden, ausgelesen.</p>
<p>Beheben lässt sich das Problem durch das Editieren von <em>/etc/php5/cgi/php.ini</em>. Dort die Zeile, die das json-Modul lädt, einfach auskommentieren und den Apache neustarten.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/module-json-already-loaded-in-unknown-on-line-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
