<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">

<channel>
	<title>daff.neyeon-digital.de</title>
	
	<link>http://daff.neyeon-digital.de/blog</link>
	<description>Daffs Blog</description>
	<pubDate>Mon, 17 Nov 2008 17:42:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/daffblog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="daffblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Using Zend Framework 1.6 and Doctrine 1.0.3  (I)</title>
		<link>http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 03:53:02 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://localhost/web/daffblog/?p=229</guid>
		<description><![CDATA[Sorry for the language change but at the moment it's just way more convenient for me 
Since Tobi blogged about the Zend Framework some time ago, I was tempted to try it for myself again and I'm really impressed by the improvements between versions 0.9.x/1.0 and 1.6 (Download). The whole framework has become easier to [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry for the language change but at the moment it's just way more convenient for me <img src='http://daff.neyeon-digital.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Since Tobi <a href="http://blog.aditu.de/2008/09/30/Zend-Framework-ein-Ueberblick" target="_blank">blogged about the Zend Framework</a> some time ago, I was tempted to try it for myself again and I'm really impressed by the improvements between versions 0.9.x/1.0 and 1.6 (<a href="http://www.zendframework.com/" target="_blank">Download</a>). The whole framework has become easier to handle and better structured despite offering a huge number of components.<br />
I lately became a very big fan of <a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">object relational mapper</a> frameworks because it fits pretty much every task I had to face by now and allowed me to avoid writing SQL statements and repeatedly mapping it objects (damn, I'm a lazy programmer ;). Therefore I was a little dissapointed to discover that the Zend_Db component is not an ORM layer in my understanding of this technology.<br />
Fortunately I followed the development of a very powerful ORM for PHP named <a href="http://www.doctrine-project.org/" target="_blank">Doctrine</a> which became stable not a long time ago.<br />
There are many articles on how to include Doctrine as your model in the Zend Framework (ZF) but due to the rapid development of both frameworks most of them are already outdated (and I guess that this article will suffer the same fate pretty soon, too, even though both frameworks are very mature in my opinion).</p>
<p>I decided to write a tutorial on how to connect Doctrine and ZF by adapting <a href="http://www.zendframework.com/docs/quickstart" target="_blank">the original quick start tutorial</a> and - as I like it to do with my blog tutorials - splitting it up in multiple parts. The first part will be about the installation, putting both frameworks together and performing the basic steps. The next part will deal with the GuestBook demo from the ZF tutorial.</p>
<p><span id="more-229"></span></p>
<p><strong>1. Creating folder structure and download libraries</strong></p>
<p>Since ZF is configurable in any way I decided to use a very clear and simple folder structure as shown in the picture below:<br />
<a href="http://daff.neyeon-digital.de/blog/wp-content/uploads/2008/11/folders.jpg"><img src="http://daff.neyeon-digital.de/blog/wp-content/uploads/2008/11/folders.jpg" alt="The framework folder structure" title="folders" width="153" height="199" class="size-medium wp-image-232" /></a><br />
The public folder should usually be the only publicly accessible folder for the Webserver.<br />
Now download the full <a href="http://www.zendframework.com/download/latest" target="_blank">Zend Framework latest release</a> (1.6.2 at this time, registration required) and copy the contents of the library folder in the archive in the libraries folder of our webapplication.<br />
Download the <a href="http://www.doctrine-project.org/download" target="_blank">Doctrine library</a> (currently 1.0.3) and copy the contents of the lib folder in the archive to the webapplication libraries folder as well.</p>
<p><strong>2. Creating an index.php and bootstrap.php file</strong></p>
<p>Create the index.php file in the public folder with the following content:</p>
<div class="igBar"><span id="lphp-7"><a href="#" onclick="javascript:showPlainTxt('php-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-7">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// APPLICATION_PATH is a constant pointing to our application/ subdirectory.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/define"><span style="color:#000066;">define</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'APPLICATION_PATH'</span>, <a href="http://www.php.net/realpath"><span style="color:#000066;">realpath</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/dirname"><span style="color:#000066;">dirname</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span> . <span style="color:#FF0000;">'/../application/'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/set_include_path"><span style="color:#000066;">set_include_path</span></a><span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#FF0000;">'/../libraries'</span> . PATH_SEPARATOR . <a href="http://www.php.net/get_include_path"><span style="color:#000066;">get_include_path</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// DOCTRINE initializing</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">require_once</span> <span style="color:#FF0000;">"Doctrine.php"</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// DOCTRINE autoloader</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">spl_autoload_register<span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Doctrine'</span>, <span style="color:#FF0000;">'autoload'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// ZEND initializing</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">require_once</span> <span style="color:#FF0000;">"Zend/Loader.php"</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// ZEND autoloader</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Zend_Loader::<span style="color:#006600;">registerAutoload</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// REQUIRE APPLICATION BOOTSTRAP: Perform application-specific setup</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">try</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">require</span> APPLICATION_PATH . <span style="color:#FF0000;">'/bootstrap.php'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">catch <span style="color:#006600; font-weight:bold;">&#40;</span>Exception <span style="color:#0000FF;">$exception</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#FF0000;">'&lt;html&gt;&lt;body&gt;&lt;center&gt;'</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;. <span style="color:#FF0000;">'An exception occured while bootstrapping the application.'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/defined"><span style="color:#000066;">defined</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'APPLICATION_ENVIRONMENT'</span><span style="color:#006600; font-weight:bold;">&#41;</span> &amp;&amp; APPLICATION_ENVIRONMENT != <span style="color:#FF0000;">'production'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#FF0000;">'&lt;br /&gt;&lt;br /&gt;'</span> . <span style="color:#0000FF;">$exception</span>-&gt;<span style="color:#006600;">getMessage</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> . <span style="color:#FF0000;">'&lt;br /&gt;'</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;. <span style="color:#FF0000;">'&lt;div align=&quot;left&quot;&gt;Stack Trace:'</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;. <span style="color:#FF0000;">'&lt;pre&gt;'</span> . <span style="color:#0000FF;">$exception</span>-&gt;<span style="color:#006600;">getTraceAsString</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> . <span style="color:#FF0000;">'&lt;/pre&gt;&lt;/div&gt;'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#FF0000;">'&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.php.net/exit"><span style="color:#000066;">exit</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC66CC;color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// DISPATCH:&nbsp; Dispatch the request using the front controller.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Zend_Controller_Front::<span style="color:#006600;">getInstance</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="color:#006600;">dispatch</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>This is basically the standard index.php file of the ZF MVC components except for the two lines of Doctrine file inclusion and auto loader registration (which belongs in here imho).<br />
Now it's time to create the boostrap.php file in the application directory:</p>
<div class="igBar"><span id="lphp-8"><a href="#" onclick="javascript:showPlainTxt('php-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-8">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// APPLICATION CONSTANTS - Set the constants to use in this application.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/defined"><span style="color:#000066;">defined</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'APPLICATION_PATH'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; or <a href="http://www.php.net/define"><span style="color:#000066;">define</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'APPLICATION_PATH'</span>, <a href="http://www.php.net/dirname"><span style="color:#000066;">dirname</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/defined"><span style="color:#000066;">defined</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'APPLICATION_ENVIRONMENT'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; or <a href="http://www.php.net/define"><span style="color:#000066;">define</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'APPLICATION_ENVIRONMENT'</span>, <span style="color:#FF0000;">'development'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> __bootstrap<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// FRONT CONTROLLER - Get the front controller.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$frontController</span> = Zend_Controller_Front::<span style="color:#006600;">getInstance</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// CONTROLLER DIRECTORY SETUP - Point the front controller to controller directory</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$frontController</span>-&gt;<span style="color:#006600;">setControllerDirectory</span><span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#FF0000;">'/controllers'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// APPLICATION ENVIRONMENT - Set the current environment</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$frontController</span>-&gt;<span style="color:#006600;">setParam</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'env'</span>, APPLICATION_ENVIRONMENT<span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// LAYOUT SETUP - Setup the layout component</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Zend_Layout::<span style="color:#006600;">startMvc</span><span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#FF0000;">'/views/layouts'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// VIEW SETUP - Initialize properties of the view object</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$view</span> = Zend_Layout::<span style="color:#006600;">getMvcInstance</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="color:#006600;">getView</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$view</span>-&gt;<span style="color:#006600;">doctype</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'XHTML1_STRICT'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$view</span>-&gt;<span style="color:#006600;">setScriptPath</span><span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#FF0000;">'/views'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// CONFIGURATION - Setup the configuration object&nbsp; &nbsp;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$configuration</span> = <span style="color:#000000; font-weight:bold;">new</span> Zend_Config_Xml<span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#FF0000;">'/configuration.xml'</span>, APPLICATION_ENVIRONMENT<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Bootstrap doctrine</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Doctrine_Manager::<span style="color:#006600;">connection</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$configuration</span>-&gt;<span style="color:#006600;">database</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Doctrine_Manager::<span style="color:#006600;">getInstance</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="color:#006600;">setAttribute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'model_loading'</span>, <span style="color:#FF0000;">'conservative'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Doctrine::<span style="color:#006600;">loadModels</span><span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#FF0000;">'/models'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// REGISTRY - setup the application registry</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$registry</span> = Zend_Registry::<span style="color:#006600;">getInstance</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$registry</span>-&gt;<span style="color:#006600;">configuration</span> = <span style="color:#0000FF;">$configuration</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">__bootstrap<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>I use the __bootstrap() function so that you don't have to manually unregister all variables (by putting all bootstrapping in the function all variables are scoped locally, anyway.<br />
The beginning of this function is the standard Zend MVC initialization with the paths from the folder structure I introduced.<br />
ZF introduced configuration files which are a perfect place to store the Doctrine connection string. Personally I prefer the XML adapter which I'm using here and requires the configuration.xml file in the application directory with the following minimal content:</p>
<div class="igBar"><span id="lxml-9"><a href="#" onclick="javascript:showPlainTxt('xml-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">XML:</span>
<div id="xml-9">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">"utf-8"</span>?<span style="font-weight: bold; color: black;">&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;configdata<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;development<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;database<span style="font-weight: bold; color: black;">&gt;</span></span></span>mysql://root:@localhost/zendtests<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/database<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/development<span style="font-weight: bold; color: black;">&gt;</span></span></span>&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/configdata<span style="font-weight: bold; color: black;">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Using this information Doctrine will be bootstrapped using the <a href="http://www.doctrine-project.org/documentation/manual/1_0/_chapter_lang%3Fsf_culture/en?chapter=getting-started#auto-loading-models" target="_blank">conservative model loading</a> and the models path.</p>
<p><strong>3. Creating layout and index controller and layout</strong></p>
<p>In the end of this part of the tutorial we will create the needed index controller and view and the layout.<br />
I won't spend much time on this part (no error pages, no CSS) since it is already part of the Zend framework tutorial and the main focus is on including doctrine.<br />
application/controller/IndexController.php</p>
<div class="igBar"><span id="lphp-10"><a href="#" onclick="javascript:showPlainTxt('php-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-10">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">/**</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * IndexController is the default controller for this application</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * </span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * Notice that we do not have to require 'Zend/Controller/Action.php', this</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * is because our application is using &quot;autoloading&quot; in the bootstrap.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> *</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> * @see http://framework.zend.com/manual/en/zend.loader.html#zend.loader.load.autoload</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;"> */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> IndexController extends Zend_Controller_Action </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#008000;">/**</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;* The &quot;index&quot; action is the default action for all controllers -- the </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;* landing page of the site.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;*</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;* Assuming the default route and default router, this action is dispatched </span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;* via the following urls:</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;*&nbsp; &nbsp;/</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;*&nbsp; &nbsp;/index/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;*&nbsp; &nbsp;/index/index</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;*</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;* @return void</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public <span style="color:#000000; font-weight:bold;">function</span> indexAction<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// $user = Doctrine::getTable('User')-&gt;find(1);&nbsp;&nbsp;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// print_r($user-&gt;toArray(true));</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>application/views/index/index.phtml</p>
<div class="igBar"><span id="lhtml-11"><a href="#" onclick="javascript:showPlainTxt('html-11'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-11">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold;">&lt;h1&gt;</span></a></span>Index controller<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">This is the index controller action </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>application/views/layouts/layout.phtml</p>
<div class="igBar"><span id="lphp-12"><a href="#" onclick="javascript:showPlainTxt('php-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-12">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?</span>= <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">doctype</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#000000; font-weight:bold;">?&gt;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;html xmlns=<span style="color:#FF0000;">"http://www.w3.org/1999/xhtml"</span>&gt; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;head&gt;&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;meta http-equiv=<span style="color:#FF0000;">"Content-Type"</span> content=<span style="color:#FF0000;">"text/html; charset=utf-8"</span> /&gt; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;title&gt;Zend Framework + Doctrine Demo&lt;/title&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/head&gt; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;body&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;div style=<span style="color:#FF0000;">"width: 80%; border: 1px solid #505050; padding: 20px;"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">&lt;?</span>= <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">layout</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="color:#006600;">content</span> <span style="color:#000000; font-weight:bold;">?&gt;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/div&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/body&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/html&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>The final folder structure for this part should now look like this:</p>
<p><a href="http://daff.neyeon-digital.de/blog//wp-content/uploads/2008/11/folders_final.jpg"><img src="http://daff.neyeon-digital.de/blog//wp-content/uploads/2008/11/folders_final.jpg" alt="" title="Final folder structure" width="136" height="300" class="alignnone size-medium wp-image-238" /></a></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d229').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d229" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;exttitle=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;title=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;title=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;title=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;bm_description=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;title=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;title=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/&amp;t=Using+Zend+Framework+1.6+and+Doctrine+1.0.3++%28I%29" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d229').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/11/17/using-zend-framework-16-and-doctrine-103-i/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eclipse 3.4 Java EE + PDT + Aptana</title>
		<link>http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 19:35:58 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[j2ee]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=122</guid>
		<description><![CDATA[Alle Jahre wieder kommt ein neues Eclipse Release. Es ist zwar schon etwas her, aber manchmal ist es auch nicht schlecht etwas zu warten bis alle verwendeten Plugins angepasst worden sind.
Die Installation meiner Lieblingskombintation mit den EE Tools, PDT und Aptana ist noch etwas umst&#228;ndlich, daf&#252;r bekommt man aber die aktuellsten Versionen.
Folgende Schrittemusste ich f&#252;r [...]]]></description>
			<content:encoded><![CDATA[<p>Alle Jahre wieder kommt ein neues Eclipse Release. Es ist zwar schon etwas her, aber manchmal ist es auch nicht schlecht etwas zu warten bis alle verwendeten Plugins angepasst worden sind.<br />
Die Installation meiner <a href="http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/">Lieblingskombintation</a> mit den EE Tools, PDT und Aptana ist noch etwas umst&#228;ndlich, daf&#252;r bekommt man aber die aktuellsten Versionen.<br />
Folgende Schrittemusste ich f&#252;r die Lauff&#228;hige Version vornehmen:<br />
<a href="http://www.eclipse.org/downloads/" target="_blank">Download</a> Eclipse 3.4 Classic (notwendig f&#252;r Integration von Aptana)<br />
Befolgen der <a href="http://howtoforge.com/setting-up-eclipse-pdt2.0-on-eclipse3.4-ganymede" target="_blank">auf HowToForge beschriebenen Schritte</a>.<br />
F&#252;r PDT habe ich den<a href="ownload.eclipse.org/tools/pdt/downloads/release.php?release=I20080722" target="_blank"> Integration build vom 22.07.2008</a> geladen (die Abh&#228;ngigkeiten der neueren Builds waren mir nicht ganz klar).<br />
F&#252;r die Installation von Aptana einfach wieder der <a href="http://www.aptana.com/docs/index.php/Plugging_Aptana_into_an_existing_Eclipse_configuration#Eclipse_3.4_Instructions" target="_blank">Anleitung inkl. der Eclipse 3.4 Schritte</a> folgen.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d228').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d228" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;exttitle=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;title=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;title=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;title=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;bm_description=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;title=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;title=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/&amp;t=Eclipse+3.4+Java+EE+%2B+PDT+%2B+Aptana" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d228').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/09/19/eclipse-34-java-ee-pdt-aptana/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hibernate Custom ID Generator</title>
		<link>http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 09:16:51 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[hibernate]]></category>

		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=120</guid>
		<description><![CDATA[Ich kann nicht genau sagen, ob die Dokumentation f&#252;r eigene Hibernate Sequence (Primary Key) Generatoren f&#252;r mich zu &#252;berladen, zu sp&#228;rlich oder einfach nichtssagend war, jedenfalls war es im Endeffekt wesentlich einfacher was zum laufen zu bekommen, als das Beispiel vermuten l&#228;sst:
PLAIN TEXT
JAVA:




package com.example.customid;


&#160;


import java.io.Serializable;


import java.util.Date;


import java.util.Random;


&#160;


import org.hibernate.HibernateException;


import org.hibernate.engine.SessionImplementor;


import org.hibernate.id.AbstractUUIDGenerator;


&#160;


public class CustomGeneratorextends AbstractUUIDGenerator


&#123;


&#160; &#160; @Override


&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Ich kann nicht genau sagen, ob die <a href="http://www.hibernate.org/296.html" target="_blank">Dokumentation f&#252;r eigene Hibernate Sequence (Primary Key) Generatoren</a> f&#252;r mich zu &#252;berladen, zu sp&#228;rlich oder einfach nichtssagend war, jedenfalls war es im Endeffekt wesentlich einfacher was zum laufen zu bekommen, als das Beispiel vermuten l&#228;sst:</p>
<div class="igBar"><span id="ljava-15"><a href="#" onclick="javascript:showPlainTxt('java-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVA:</span>
<div id="java-15">
<div class="java">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">package com.<span style="color: #006600;">example</span>.<span style="color: #006600;">customid</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import java.io.Serializable;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import java.util.Date;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import java.util.Random;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import org.hibernate.HibernateException;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import org.hibernate.engine.SessionImplementor;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import org.hibernate.id.AbstractUUIDGenerator;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CustomGeneratorextends AbstractUUIDGenerator</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; @Override</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?q=allinurl%3ASerializable+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Serializable</span></a> generate<span style="color: #66cc66;">&#40;</span>SessionImplementor arg0, <a href="http://www.google.com/search?q=allinurl%3AObject+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Object</span></a> arg1<span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> HibernateException</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Generate some custom pseudo random stuff</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <a href="http://www.google.com/search?q=allinurl%3ALong+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Long</span></a>.<span style="color: #006600;">toHexString</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?q=allinurl%3ALong+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Long</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?q=allinurl%3ADate+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Date</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getTime</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?q=allinurl%3ARandom+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Random</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">nextInt</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;color:#800000;">1000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Der generierte Wert taugt nat&#252;rlich rein gar nichts als echte unique ID, zeigt aber hoffentlich ein etwas &#252;bersichtlicheres Beispiel auf dem man aufbauen kann.</p>
<p>Eine Beispielklasse, die die Hibernate Annotations zur Konfiguration verwendet sieht dann so aus:</p>
<div class="igBar"><span id="ljava-16"><a href="#" onclick="javascript:showPlainTxt('java-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVA:</span>
<div id="java-16">
<div class="java">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">package com.<span style="color: #006600;">example</span>.<span style="color: #006600;">customid</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import javax.persistence.GeneratedValue;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import javax.persistence.Id;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import org.hibernate.annotations.GenericGenerator;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Dummy</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">String</span></a> id;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">&nbsp; &nbsp;&nbsp; * @return the id</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">&nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; @Id @GeneratedValue<span style="color: #66cc66;">&#40;</span>generator=<span style="color: #ff0000;">"test"</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; @GenericGenerator</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name = <span style="color: #ff0000;">"test"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strategy = <span style="color: #ff0000;">"com.example.customid.CustomGenerator"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">String</span></a> getId<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> id;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">&nbsp; &nbsp;&nbsp; * @param id the id to set</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">&nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">void</span> setId<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">String</span></a> id<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006600;">id</span> = id;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d227').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d227" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;exttitle=Hibernate+Custom+ID+Generator" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;title=Hibernate+Custom+ID+Generator" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;title=Hibernate+Custom+ID+Generator" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;title=Hibernate+Custom+ID+Generator" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;bm_description=Hibernate+Custom+ID+Generator" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;title=Hibernate+Custom+ID+Generator" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;title=Hibernate+Custom+ID+Generator" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/&amp;t=Hibernate+Custom+ID+Generator" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d227').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/07/25/hibernate-custom-id-generator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HowTo: Subversion + Reposstyle</title>
		<link>http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 19:59:51 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=117</guid>
		<description><![CDATA[Im dritten und letzten Teil des Subversion HowTo's geht es nun dadrum die konfigurierte Web Darstellung etwas zu versch&#246;nern und zu erweitern.
Die sch&#246;nste und einfachste Variante habe ich in Reposstyle gefunden, wo man von der Seite die aktuellste Version (2.0b funktioniert bei mir tadellos) laden sollte und den Inhalt nach /home/svn/repository/ entpackt.
Um den Ordner mit [...]]]></description>
			<content:encoded><![CDATA[<p>Im dritten und letzten Teil des Subversion HowTo's geht es nun dadrum die <a href="http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/" target="_blank">konfigurierte Web Darstellung</a> etwas zu versch&#246;nern und zu erweitern.<br />
Die sch&#246;nste und einfachste Variante habe ich in <a href="http://www.reposstyle.com/" target="_blank">Reposstyle</a> gefunden, wo man von der Seite die aktuellste Version (2.0b funktioniert bei mir tadellos) laden sollte und den Inhalt nach /home/svn/repository/ entpackt.<br />
Um den Ordner mit den Dateien verf&#252;gbar zu machen muss nun zuerst einmal der Alias /repos-web in der Apache Konfiguration gesetzt werden:</p>
<p><code>Alias /repos-web /home/svn/repository/repos-web/<br />
&lt;Directory /home/svn/repository/repos-web/&gt;<br />
    Options Indexes FollowSymLinks<br />
    AllowOverride All<br />
    Order allow,deny<br />
    Allow from all<br />
&lt;/Directory&gt;</code></p>
<p>Ebenfall in der Konfiguration muss die <em>Location</em> Direktive f&#252;r das SVN um die Zeile</p>
<p><code>SVNIndexXSLT "/repos-web/view/repos.xsl"</code></p>
<p>erweitert werden.<br />
Nun sollte nach einem Webserver Neustart das Repository schon in neuem Glanz erscheinen.</p>
<p>Ein weiteres nettes Feature von Reposstyle ist die Anzeige der letzten History Eintr&#228;ge mit einem PHP Skript.<br />
Dazu muss man die /home/svn/repository/repos-web/open/log/index.php editieren und die Variable in unserem Fall auf</p>
<p><code>$repo = "file:///home/svn/repository/";</code></p>
<p>setzen.<br />
Dort sieht man dann mit einem Klick auf Folder history die letzten x (Anzahl ebenfalls in der index.php &#252;ber die Variable $limit einstellbar) Commit Eintr&#228;gen inklusive Kommentaren und den aktualisierten Dateien. Meiner Meinung nach ein sehr n&#252;tzliches Feature f&#252;rs Repository Browsing.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d226').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d226" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;exttitle=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;title=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;title=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;title=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;bm_description=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;title=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;title=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/&amp;t=HowTo%3A+Subversion+%2B+Reposstyle" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d226').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/07/11/howto-subversion-reposstyle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HowTo: Subversion + Apache + Authentifizierung</title>
		<link>http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 21:56:24 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=114</guid>
		<description><![CDATA[Nachdem jetzt wie im ersten Teil aufgezeigt Subversion inkl. Repository laufen und auch schon rudiment&#228;r &#252;ber den Apachen serviert werden hier der n&#228;chste Teil, in dem die anst&#228;ndige Userauthentifizierung erkl&#228;rt werden soll.
1. Subversion Authentifizierung &#252;ber MySQL
Das Modul f&#252;r die Authentifizierung gegen MySQL gibt es nicht im Etch Repository deshalb gehts hier ans muntere Kompilieren. F&#252;r [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem jetzt wie im <a href="http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/" target="_blank">ersten Teil aufgezeigt</a> Subversion inkl. Repository laufen und auch schon rudiment&#228;r &#252;ber den Apachen serviert werden hier der n&#228;chste Teil, in dem die anst&#228;ndige Userauthentifizierung erkl&#228;rt werden soll.</p>
<p><strong>1. Subversion Authentifizierung &#252;ber MySQL</strong></p>
<p>Das Modul f&#252;r die Authentifizierung gegen MySQL gibt es nicht im Etch Repository deshalb gehts hier ans muntere Kompilieren. F&#252;r die Kompilierung und Aktivierung von mod_auth_mysql <a href="https://www.adminlife.net/howto/mod_auth_mysql-apache-22-und-debian-etch/" target="_blank">hat matthias von adminlife.net ein tolles Tutorial geschrieben</a>, das bei mir auf Anhieb funktionert hat und zu dem es eigentlich nicht mehr viel hinzuzuf&#252;gen gibt. Nur das <em>AuthMySQLUserCondition "active = 1"</em> sollte man rausnehmen, wenn es die Spalte nicht gibt ;).</p>
<p>In Kombintation mit Subversion sieht die Einstellung dann so aus (Authentifizierungsinformationen werden hier aus der Datenbank userdb, der Tabelle users und den spalten username und password genommen):</p>
<p><code><br />
&lt;Location /svn&gt;<br />
    DAV svn<br />
    SVNPath /home/svn/repository<br />
    AuthName "Subversion"</p>
<p>    AuthType Basic<br />
    AuthBasicAuthoritative Off<br />
    AuthGroupFile /dev/null<br />
    AuthUserFile /dev/null<br />
    AuthMySQLEnable On<br />
    AuthMySQLHost localhost<br />
    AuthMySQLUser sqluser<br />
    AuthMySQLPassword password<br />
    AuthMySQLDB userdb<br />
    AuthMySQLUserTable users<br />
    AuthMySQLNameField username<br />
    AuthMySQLPasswordField password<br />
    # MD5 Verschl&#252;sselung der Spalte mit dem Passwort ist nat&#252;rlich sinnvoll<br />
    AuthMySQLPwEncryption md5</p>
<p>    AuthMySQLAuthoritative On<br />
    require valid-user<br />
&lt;/Location&gt;<br />
</code></p>
<p><strong>2. Authentifizierung &#252;ber die User Accounts</strong></p>
<p>Obwohl die Authentifizierung per Datenbank nat&#252;rlich die meist eleganteste L&#246;sung ist sei hier noch die M&#246;glichkeit vorgestellt sich gegen die Linux Useraccount zu authentifizieren,<del datetime="2008-06-29T22:26:22+00:00"> was z.B. zum Einsatz kommen kann, wenn man von CVS auf Subversion umstellt</del>.<br />
Dazu kommt hier das Apache Module <a href="http://mod-auth-shadow.sourceforge.net/" target="_blank">mod_auth_shadow</a> zum Einsatz. F&#252;r die Kompilierung sei erw&#228;hnt, dass sich z.B. unter SuSe apxs2 nicht im voreingestellten Ordner des Makefiles befindet, weshalb dieser angepasst werden muss.<br />
Das Debian Package f&#252;r das Modul gibt es mit<br />
<code>apt-get install libapache-mod-auth-shadow</code></p>
<p>Nach der Installation geschieht die Konfiguration f&#252;r das Subversion repository wie folg:</p>
<p><code><br />
&lt;Location /svn&gt;<br />
    DAV svn<br />
    SVNPath /home/svn-user/svnroot<br />
    AuthBasicAuthoritative Off<br />
    AuthName whateveryoulike<br />
    AuthShadow on<br />
    AuthType Basic<br />
    require valid-user<br />
&lt;/Location&gt;<br />
</code></p>
<p>Nach einem Apache Neustart sollte es nun m&#246;glich sein sich mit einem Linux Account zu authentifizieren.</p>
<p><strong>3. Schreibrechte f&#252;r den Apache</strong></p>
<p>Nun m&#252;ssen noch dem Apache User (da dieser ja beim Zugriff &#252;ber HTTP eventuell auch auf das Repository schreibt) dort auch die Schreibrechte erteil werden. Am einfachsten so:<br />
<code>linux:~# chown -R www-data:www-data /home/svn/repostiory </code></p>
<p>Nachdem der Zugriff jetzt richtig funktioniert sollte geht es dann im letzten Teil um eine einfache M&#246;glichkeit die Browseransicht der Subversion Repositories zu versch&#246;nern und zu erweitern.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d225').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d225" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;exttitle=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;title=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;title=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;title=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;bm_description=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;title=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;title=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/&amp;t=HowTo%3A+Subversion+%2B+Apache+%2B+Authentifizierung" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d225').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/06/29/howto-subversion-apache-authentifizierung/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Key Kram: Neuer Public Key</title>
		<link>http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 15:03:57 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=116</guid>
		<description><![CDATA[Trotz einer inzwischen recht robusten Backup Strategie habe ich auch ein paar Ordner die nicht synchronisiert werden und nur bei einer Neuinstallation gesichert werden (wie z.B. die Einstellungen der Programme im Home Ordner). Das habe ich vor dem gestrigen Sommerputz (f&#252;r Ubuntu 8.04) auch getan, aber wie es scheint nicht anst&#228;ndig, bzw. ohne zu &#252;berpr&#252;fen, [...]]]></description>
			<content:encoded><![CDATA[<p>Trotz einer inzwischen recht robusten Backup Strategie habe ich auch ein paar Ordner die nicht synchronisiert werden und nur bei einer Neuinstallation gesichert werden (wie z.B. die Einstellungen der Programme im Home Ordner). Das habe ich vor dem gestrigen Sommerputz (f&#252;r Ubuntu 8.04) auch getan, aber wie es scheint nicht anst&#228;ndig, bzw. ohne zu &#252;berpr&#252;fen, ob auch alles dr&#252;ben ist, was dazu f&#252;hrte, das mein Private Key im Nirvana verschwunden ist. Zum Gl&#252;ck hatte ich irgendwo in meinem Daten Chaos noch das R&#252;ckruf Zertifikat gefunden.<br />
Nach einem Import des eigenen Public Keys und des R&#252;ckrufs in den Keyring kann man den wiederrufenen Public Key auf den Keyserver laden um zu verhindern, dass damit in Zukunft noch Mails verschl&#252;sselt werden.</p>
<p>Meinen neuen Public Key <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&#038;search=0x57C047B9" target="_blank">gibts wieder auf den Keyservern</a></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d224').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d224" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;exttitle=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;title=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;title=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;title=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;bm_description=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;title=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;title=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/&amp;t=Key+Kram%3A+Neuer+Public+Key" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d224').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/06/29/key-kram-neuer-public-key/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HowTo: Subversion + Apache</title>
		<link>http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 19:44:03 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=113</guid>
		<description><![CDATA[Ein anst&#228;ndiges Versionsmanagement ist bei mehreren Entwicklern - aber auch im Grunde f&#252;r den einzelg&#228;ngerischen Programmierer - unerl&#228;sslich. In den letzten Jahren setzt sich dort Subversion immer mehr als Open Source state of the art durch mit dessen Installation und Einrichtung auch ich mich aus mehreren Gr&#252;nden n&#228;her befassen musste.
Die Standalone Variante ist unter Debian [...]]]></description>
			<content:encoded><![CDATA[<p>Ein anst&#228;ndiges Versionsmanagement ist bei mehreren Entwicklern - aber auch im Grunde f&#252;r den einzelg&#228;ngerischen Programmierer - unerl&#228;sslich. In den letzten Jahren setzt sich dort <a href="http://subversion.tigris.org" target="_blank">Subversion</a> immer mehr als Open Source state of the art durch mit dessen Installation und Einrichtung auch ich mich aus mehreren Gr&#252;nden n&#228;her befassen musste.<br />
Die Standalone Variante ist unter Debian auch recht schnell und einfach aufzusetzen, aber auch wenn mich der zus&#228;tzlich Konfigurationsaufwand, das ganze dann noch an den Apache Webserver anzubinden , abgeschreckt hat, macht es die Arbeit mit Subversion doch noch komfortabler. Hier m&#246;chte ich die Einrichtung meiner aktuellen Konfiguration in drei Akten erkl&#228;ren <img src='http://daff.neyeon-digital.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Teil 1:<br />
Installation von Subversion und erstellen eines einfachen Test Repositories und Anbindung an den Apache Webserver<br />
Teil 2:<br />
User Authentifizierung &#252;ber MySQL Datenbank oder Linux User accounts<br />
Teil 3:<br />
Versch&#246;nern der Webansicht mit Repos style</p>
<p>Ich beschr&#228;nke mich hier wieder auf Debian (hatte auch eine SuSe Installation gemacht, die Unterschiede sind meistens marginal).</p>
<p><strong>1. Installation von Subversion und erstellen eines einfachen Test Repositories</strong></p>
<p>L&#228;sst sich ganz einfach mit einem<br />
<code>linux:~# apt-get install subversion</code><br />
erledigen. In den Edge Repositories befindet sich die Version 1.4.2 ganz aktuell ist 1.4.6 ein Update sollte aber problemlos m&#246;glich sein (Bin&#228;rpakete gibt es auch auf der Subversion Seite).<br />
Nun das Repository erstellen (ich habe es unter /home/svn gelegt, weil ich mich dadran gew&#246;hnt habe alle Daten im Home Verzeichnis liegen zu haben):<br />
<code>linux:~# cd /home/svn<br />
linux:~# svnadmin create repository</code></p>
<p>In der Datei conf/svnserve.conf m&#252;ssten nun noch zum Test die Zeilen<br />
anon-access = read<br />
auth-access = write<br />
einkommentiert werden dann kann schon der Testserver gestartet werden<br />
<code>linux:~# svnserve -d -r /home/svn/repository</code></p>
<p>ein<br />
<code>linux:~# svn list svn://server-ip/</code><br />
sollte dann ohne Fehler laufen.<br />
<code>linux:~# killall svnserve</code><br />
beendet den Server wieder, da das Repository nun &#252;ber den Apachen verf&#252;gbar gemacht werden soll.</p>
<p><strong>2. Anbindung an den Apache Webserver</strong></p>
<p>Der Paketmanager stellt auch hier eine sofort lauff&#228;hige Version des Webservers zur Verf&#252;gung. Der Vollst&#228;ndigkeit halber holen wir uns gleich noch die ben&#246;tigten Module und MySQL mit dem PHPmyAdmin (da bin ich immer ein bischen faul und klicke mir das lieber zusammen <img src='http://daff.neyeon-digital.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<code>linux:~# apt-get install apache2 mysql phpmyadmin libapache2-svn</code></p>
<p>Nun m&#252;ssen die auch im <a href="http://svnbook.red-bean.com/en/1.4/svn-book.pdf" target="_blank">Subversion Buch</a> erkl&#228;rten Einstellungen get&#228;tigt werden (die richtigen Module werden normalerweise schon geladen):</p>
<p>Auch hier bevorzuge ich wieder die einfachste Version das Repository per /etc/apache2.conf &#252;ber einen Alias verf&#252;gbar zu machen:</p>
<p><code>&lt;Location /svn&gt;<br />
DAV svn<br />
SVNPath /home/svn/repository/<br />
&lt;/Location&gt;</code></p>
<p>Nach einem Neustart mit<br />
<code>linux:~# /etc/init.d/apache2 force-reload</code><br />
Ist das Repository schon per http://serverip/svn verf&#252;gbar.</p>
<p>Im n&#228;chsten Beitrag gehts dann um den kniffligeren Teil, n&#228;mlich das ganze mit einer ordentlichen Benutzerauthentifizierung auszustatten.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d223').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d223" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;exttitle=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;title=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;title=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;title=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;bm_description=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;title=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;title=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/&amp;t=HowTo%3A+Subversion+%2B+Apache" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d223').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/06/23/howto-subversion-apache/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Doppel Floats und IE Quirks</title>
		<link>http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 12:50:55 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=105</guid>
		<description><![CDATA[Am liebsten w&#252;rde man ihn ja geflissentlich ignorieren, aufgrund seiner Marktposition sollte man aber wohl bei jeder ernsthafteren Seite auch die Macken des Internet Explorer beachten.
Dazu hier drei vielleicht n&#252;tzliche Links:
Ein ganz fieses Biest ist der sogenannte Quirks Modus,der Kompatibilit&#228;tsmodus der den IE dazu &#252;berredet Seiten mit den alten IE Macken zu rendern. Die Deaktivierung [...]]]></description>
			<content:encoded><![CDATA[<p>Am liebsten w&#252;rde man ihn ja geflissentlich ignorieren, aufgrund seiner Marktposition sollte man aber wohl bei jeder ernsthafteren Seite auch die Macken des Internet Explorer beachten.<br />
Dazu hier drei vielleicht n&#252;tzliche Links:</p>
<p>Ein ganz fieses Biest ist der sogenannte Quirks Modus,der Kompatibilit&#228;tsmodus der den IE dazu &#252;berredet Seiten mit den alten IE Macken zu rendern. Die Deaktivierung ist also durchaus sinnvoll, wenn man nicht am Standardgerechten layouten von Seiten verzweifeln m&#246;chte. Das ganze funktioniert &#252;ber den richtig angebenen Dokumenttyp der Seite. Welche das sind kann man auf <a href="http://en.wikipedia.org/wiki/Quirks" target="_blank">Wikipedia</a> nachlesen.</p>
<p>Ein paar Stunden &#196;rgerei hat mit auch der double-float margin bug im IE 6 bereitet (der ja leider in vielen Firmen noch Standard ist). Die <a href="http://www.medani.at/news/double-float-margin-bug-im-ie" target="_blank">L&#246;sung gabs dann hier</a>.</p>
<p>Auch mal sinnvoll gelesen zu haben: <a href="http://www.satzansatz.de/cssd/onhavinglayout.html" target="_blank">On Having Layout</a></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d222').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d222" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;exttitle=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;title=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;title=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;title=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;bm_description=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;title=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;title=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/&amp;t=Doppel+Floats+und+IE+Quirks" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d222').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/06/04/doppel-floats-und-ie-quirks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Webentwicklungs Toolchain</title>
		<link>http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/#comments</comments>
		<pubDate>Wed, 28 May 2008 12:18:12 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[notizen]]></category>

		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=107</guid>
		<description><![CDATA[Da es wahrscheinlich schon hunderte Blogeintr&#228;ge mit den besten Webdesigner Tools &#038; Co gibt nur kurz als Notiz:
Firefox:
Was keine Webentwickler fehlen darf und wohl auch nirgends fehlt:
Firebug
Sehr n&#252;tzliches Tool mit dem man auch Lokale Seiten und Ausgabe die per JavaScript auf die Seite kam Validieren lassen kann (valides (X)HTML ist eigentlich immer ein guter Ansatz, [...]]]></description>
			<content:encoded><![CDATA[<p>Da es wahrscheinlich schon hunderte Blogeintr&#228;ge mit den besten Webdesigner Tools &#038; Co gibt nur kurz als Notiz:</p>
<p>Firefox:<br />
Was keine Webentwickler fehlen darf und wohl auch nirgends fehlt:<br />
<a href="https://addons.mozilla.org/de/firefox/addon/1843" target="_blank">Firebug</a><br />
Sehr n&#252;tzliches Tool mit dem man auch Lokale Seiten und Ausgabe die per JavaScript auf die Seite kam Validieren lassen kann (valides (X)HTML ist eigentlich immer ein guter Ansatz, dass die Seiten auch Browser&#252;bergreifen funktionieren <img src='http://daff.neyeon-digital.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <a href="https://addons.mozilla.org/de/firefox/addon/249" target="_blank">HTML Validator</a> (edit: komischerweise gibts dort keine Direktinstallation f&#252;r Linux <a href="http://users.skynet.be/mgueury/mozilla/download.html" target="_blank">Download HTML Validator f&#252;r alle Betriebssysteme und in einer neueren Version</a>)</p>
<p>F&#252;r den besten Freund jedes Webdesigners (namentlich Internet Explorer):<br />
<a href="http://daff.neyeon-digital.de/blog/2007/09/12/multiple-ies/" target="_blank">Schon mal erw&#228;hnt</a>: <a href="http://tredosoft.com/Multiple_IE" target="_blank">Multiple IEs</a><br />
Mal was von Microsoft selber (bei weitem nicht so komfortabel wie Firebug, aber war wohl zu erwarten)<br />
<a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&#038;displaylang=en" target="_blank">Internet Explorer Developer Toolbar</a><br />
<a href="http://bueltge.de/web-development-helper-fuer-ie/671/" target="_blank">Via Bueltge.de</a>   bin ich dann vor kurzem auf die <a href="http://www.codeplex.com/webdevhelper" target="_blank">Web Deloper Toolbar</a> gesto&#223;en, die von den Funktionen her schon besser aussieht.<br />
Und Entwicklern unter Linux darf nat&#252;rlich das hier nicht fehlen:<br />
<a href="http://www.tatanka.com.br/ies4linux/page/Main_Page" target="_blank">IEs4Linux</a><br />
(hatte leider noch keine Zeit die obigen IE Plugins in Verbindung mit IEs4Linux auch auf dem heimischen Ubuntu Rechner zu testen).</p>
<p>F&#252;r die Entwicklung dann die <a href="http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/" target="_blank">gestern beschriebene IDE Kombination</a>.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d221').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d221" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;exttitle=Webentwicklungs+Toolchain" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;title=Webentwicklungs+Toolchain" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;title=Webentwicklungs+Toolchain" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;title=Webentwicklungs+Toolchain" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;bm_description=Webentwicklungs+Toolchain" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;title=Webentwicklungs+Toolchain" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;title=Webentwicklungs+Toolchain" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/&amp;t=Webentwicklungs+Toolchain" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d221').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/05/28/webentwicklungs-toolchain/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aptana Studio mit J2EE und PDT</title>
		<link>http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/</link>
		<comments>http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/#comments</comments>
		<pubDate>Tue, 27 May 2008 11:51:21 +0000</pubDate>
		<dc:creator>Daff</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[j2ee]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://daff.neyeon-digital.de/blog/?p=106</guid>
		<description><![CDATA[Es ist zwar nun schon l&#228;nger verf&#252;gbar, aber nun bin ich auch endlich dazu gekommen das Aptana Studio in der Version 1.1. auszutesten.
Das ganze ist inzwischen zumindest in der Professional Version kostenpflichtig geworden, aber auch die Community Edition hat einiges zu bieten, was vor allem die Entwicklung mit JavaScript sehr viel angenehmer macht.
Unter anderem bedingt [...]]]></description>
			<content:encoded><![CDATA[<p>Es ist zwar nun schon l&#228;nger verf&#252;gbar, aber nun bin ich auch endlich dazu gekommen das <a href="http://aptana.com/studio/" target="_blank">Aptana Studio</a> in der Version 1.1. auszutesten.<br />
Das ganze ist inzwischen zumindest in der Professional Version kostenpflichtig geworden, aber auch die Community Edition hat einiges zu bieten, was vor allem die Entwicklung mit JavaScript sehr viel angenehmer macht.<br />
Unter anderem bedingt durch <a href="http://getahead.org/dwr/" target="_blank">DWR</a> ist bei mir f&#252;r Webapplikationen also noch J2EE als Entwicklungsplattform dazugekommen, weshalb diesmal die dicke <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/europa/winter/eclipse-jee-europa-winter-win32.zip" target="_blank">Eclipse Ausgabe f&#252;r J2EE</a> als Grundlage dient.<br />
Aptana Studio l&#228;sst sich dort wie erwartet problemlos als <a href="http://aptana.com/studio/download/" target="_blank">Plugin</a> integrieren. Nach der Installation fallen dann auch gleich die neuen Editoren f&#252;r CSS, HTML und JavaScript positiv auf, da sie wesentlich mehr Features bieten als die Standardversionen von Eclipse.<br />
Die Auto Vervollst&#228;ndigung f&#252;r JavaScript erledigt ihr Arbeit ganz gut. Dass es nie so gut klappt wie man es vielleicht von Java und C++ kennt ist wohl einer der Nachteile, mit dem man bei dynamisch getypten Sprachen leben muss.<br />
Sehr sch&#246;n sind auch die Code Formatierer, ein Feature, das ich pers&#246;nlich sehr zu sch&#228;tzen wei&#223; (vor allem beim modifzieren von fremden Sourcecode bin ich zugegeben ziemlich unflexibel ;).<br />
Die M&#246;glichkeiten f&#252;r die JavaScript Formatierung sind wesentlich gr&#246;&#223;ere als z.B. bei PDT (da gibts einen PHP Formatierer nur im entsprechenden Zend Studio).<br />
Wo man gleich beim Thema PHP w&#228;re. Das gibts n&#228;mlich in Aptana nur in einer Beta Version und ist nicht mehr beim StudioPlugin dabei. Meiner Meinung nach auch besser so, denn PDT macht schon einen wesentlich ausgereifteren Eindruck.<br />
Selbiges lie&#223; sich wie schon in <a href="http://daff.neyeon-digital.de/blog/2007/08/22/web-eclipse-aptana-und-pdt/">der fr&#252;heren Version</a> bequem in der <a href="http://download.eclipse.org/tools/pdt/updates/" target="_blank">Plugin Version</a> dazu installieren (vorsicht: zum jetzigen Zeitpunkt hat der erste Deutsche Mirror in der Liste noch eine <a href="http://dev.eclipse.org/newslists/news.eclipse.tools.pdt/msg00824.html" target="_blank">fehlerhafte Version</a>, die sich nicht installieren l&#228;sst).<br />
PHP Dateien sind diesmal schon direkt verkn&#252;pft weshalb man nur noch pers&#246;nliche Einstellungsarbeiten leisten muss. Ich f&#252;rchte ich habe noch nicht wirklich den &#220;berblick &#252;ber alle Funktionen des Bundles aus J2EE, Aptana Studio und PDT, wenn man aber - wie inzwischen wohl in der modernen Webapplikations Entwicklung unvermeidbar - mit mehr als einer Serverseitigen Sprache und reinem HTML arbeitet wird Eclipse auch f&#252;r diesen Zweck immer mehr <strong>die</strong> IDE der Wahl (mit ein bischen Eigenregie auch ohne kostenpflichtigen Plugins).</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d220').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmarks</em></strong></a>
<br />
<div class="d220" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://yigg.de/neu?action=addurl&amp;exturl=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;exttitle=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;YiGG"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yigg.png" title="Add to&nbsp;YiGG" alt="Add to&nbsp;YiGG" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;title=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;title=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;digg"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;title=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.mister-wong.com/index.php?action=addurl&amp;bm_url=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;bm_description=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;Mister Wong"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/misterwong.png" title="Add to&nbsp;Mister Wong" alt="Add to&nbsp;Mister Wong" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;title=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;title=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://taggly.com/bookmarks.php/pass?action=add&amp;address=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/" title="Add to&nbsp;Taggly"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/taggly.png" title="Add to&nbsp;Taggly" alt="Add to&nbsp;Taggly" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/" title="Add to&nbsp;Technorati"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/&amp;t=Aptana+Studio+mit+J2EE+und+PDT" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://daff.neyeon-digital.de/blog/wp-content/plugins/social_bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d220').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://daff.neyeon-digital.de/blog/2008/05/27/aptana-studio-mit-j2ee-und-pdt/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
