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

<channel>
	<title>Andreas Löer</title>
	<atom:link href="http://www.andreas-loeer.de/feed" rel="self" type="application/rss+xml" />
	<link>http://www.andreas-loeer.de</link>
	<description>Softwareentwicklung</description>
	<lastBuildDate>Wed, 16 May 2012 10:04:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Erweitertes Testen des Restcontrollers</title>
		<link>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/erweitertes-testen-des-restcontrollers</link>
		<comments>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/erweitertes-testen-des-restcontrollers#comments</comments>
		<pubDate>Tue, 15 May 2012 15:58:11 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Zend-Framework]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=249</guid>
		<description><![CDATA[Für effektiveres Testen der JSON-Antwort eines Controllers entwickle ich eine Ableitung der Klasse Zend_Test_PHPUnit_ControllerTestCase. In dieser Klasse sollen die Funktionalitäten zum Zugriff auf in die JSON-Daten, ähnlich der DomQuery-Assertmethoden. In einem ersten Schritt existiert eine Methode die prüft, ob die Daten auch im JSON-Format vorliegen. Wenn der Controller noch Fehlermeldungen an die Daten anhängt, wird [...]]]></description>
			<content:encoded><![CDATA[<p>Für effektiveres Testen der JSON-Antwort eines Controllers entwickle ich eine Ableitung der Klasse Zend_Test_PHPUnit_ControllerTestCase. In dieser Klasse sollen die Funktionalitäten zum Zugriff auf in die JSON-Daten, ähnlich der DomQuery-Assertmethoden.<br />
In einem ersten Schritt existiert eine Methode die prüft, ob die Daten auch im JSON-Format vorliegen. Wenn der Controller noch Fehlermeldungen an die Daten anhängt, wird durch die Dekodierung eine Exception geworfen. Diese wird hier in eine PHPUnit_Framework_ExpectationFailedException umgewandelt.</p>
<pre>
class PMLib_Test_PHPUnit_ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{

    public function assertResponseIsJson ( $message = '' ) {
        $this->_incrementAssertionCount();
        $bodyData = $this->getResponse()->getBody();
        try {
            $decode = Zend_Json::decode($bodyData);
        }
        catch (Zend_Json_Exception $exception ) {
            $message .= "\nFailed asserting JSON format";
            throw new PHPUnit_Framework_ExpectationFailedException( $message );
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/erweitertes-testen-des-restcontrollers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend: Testen des Restcontrollers</title>
		<link>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/zend-testen-des-restcontrollers</link>
		<comments>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/zend-testen-des-restcontrollers#comments</comments>
		<pubDate>Thu, 10 May 2012 14:35:19 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Zend-Framework]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[RESTFul]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=232</guid>
		<description><![CDATA[Das automatische Testen des Restcontrollers funktioniert im Prizip genauso wie das Testen der anderen Controller. Allerdings sind hier einige Details zu beachten: Der angegebene Controller muss darf nicht den Namen des Controllers enthalten (der ist normalerweise großgeschrieben), sondern muss genauso wie der Controlleranteil des Links geschrieben werden. Der ID-Parameter muss an die URL angehängt werden, [...]]]></description>
			<content:encoded><![CDATA[<p>Das automatische Testen des Restcontrollers funktioniert im Prizip genauso wie das Testen der anderen Controller. Allerdings sind hier einige Details zu beachten:</p>
<ul>
<li>Der angegebene Controller muss darf nicht den Namen des Controllers enthalten (der ist normalerweise großgeschrieben), sondern muss genauso wie der Controlleranteil des Links geschrieben werden.</li>
<li>Der ID-Parameter muss an die URL angehängt werden, da der Link sonst nicht genauso aussieht wie einer, der von einem Restclient geliefert wird.</li>
<li>Die Methode muss explizit gesetzt werden.</li>
</ul>
<p>&nbsp;</p>
<p>Beispiel für den Action <em>delete</em> Link<em> /rest/1</em></p>
<pre>    public function testDeleteAction()
    {
        $params = array('action' =&gt; 'index', 'controller' =&gt; 'rest', 'module' =&gt; 'default');
        $urlParams = $this-&gt;urlizeOptions($params);
        $url = $this-&gt;url($urlParams);
        $url .= '/1';
        $this-&gt;getRequest()
                -&gt;setMethod('delete')
                -&gt;setHeader('X_REQUESTED_WITH','XMLHttpRequest');

        $this-&gt;dispatch($url);

        // assertions
        $this-&gt;assertModule($urlParams['module']);
        $this-&gt;assertController($urlParams['controller']);
        $this-&gt;assertAction('delete');

        $this-&gt;assertResponseCode('204');
        $this-&gt;assertContentType('application/json');
    }</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/zend-testen-des-restcontrollers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ControllerTestCase &#8211; Liste mit Assert-Funktionen</title>
		<link>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/controllertestcase-liste-mit-assert-funktionen</link>
		<comments>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/controllertestcase-liste-mit-assert-funktionen#comments</comments>
		<pubDate>Wed, 09 May 2012 08:43:48 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Zend-Framework]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=225</guid>
		<description><![CDATA[Hier ist eine Liste mit den Assert-Funktionen, die im Controllertest des Zend-Frameworks (Zend_Test_PHPUnit_ControllerTestCase) implementiert sind. Diese Klasse ist eine Ableitung vom bekannten PHPUnit_Framework_TestCase. Assert-Funktionen zum Testen des DOM aus der Response public function assertQuery($path, $message = '') public function assertNotQuery($path, $message = '') public function assertQueryContentContains($path, $match, $message = '') public function assertNotQueryContentContains($path, $match, $message [...]]]></description>
			<content:encoded><![CDATA[<p>Hier ist eine Liste mit den Assert-Funktionen, die im Controllertest des Zend-Frameworks (Zend_Test_PHPUnit_ControllerTestCase) implementiert sind. Diese Klasse ist eine Ableitung vom bekannten PHPUnit_Framework_TestCase.</p>
<p>Assert-Funktionen zum Testen des DOM aus der Response<br />
<code><br />
public function assertQuery($path, $message = '')<br />
public function assertNotQuery($path, $message = '')<br />
public function assertQueryContentContains($path, $match, $message = '')<br />
public function assertNotQueryContentContains($path, $match, $message = '')<br />
public function assertQueryContentRegex($path, $pattern, $message = '')<br />
public function assertNotQueryContentRegex($path, $pattern, $message = '')<br />
public function assertQueryCount($path, $count, $message = '')<br />
public function assertNotQueryCount($path, $count, $message = '')<br />
public function assertQueryCountMin($path, $count, $message = '')<br />
public function assertQueryCountMax($path, $count, $message = '')<br />
public function assertXpath($path, $message = '')<br />
public function assertNotXpath($path, $message = '')<br />
public function assertXpathContentContains($path, $match, $message = '')<br />
public function assertNotXpathContentContains($path, $match, $message = '')<br />
public function assertXpathContentRegex($path, $pattern, $message = '')<br />
public function assertNotXpathContentRegex($path, $pattern, $message = '')<br />
public function assertXpathCount($path, $count, $message = '')<br />
public function assertNotXpathCount($path, $count, $message = '')<br />
public function assertXpathCountMin($path, $count, $message = '')<br />
public function assertXpathCountMax($path, $count, $message = '')<br />
</code><br />
Assert-Funktionen zum Testen des Headers aus der Response<br />
<code><br />
public function assertRedirect($message = '')<br />
public function assertNotRedirect($message = '')<br />
public function assertRedirectTo($url, $message = '')<br />
public function assertNotRedirectTo($url, $message = '')<br />
public function assertRedirectRegex($pattern, $message = '')<br />
public function assertNotRedirectRegex($pattern, $message = '')<br />
public function assertResponseCode($code, $message = '')<br />
public function assertNotResponseCode($code, $message = '')<br />
public function assertHeader($header, $message = '')<br />
public function assertNotHeader($header, $message = '')<br />
public function assertHeaderContains($header, $match, $message = '')<br />
public function assertNotHeaderContains($header, $match, $message = '')<br />
public function assertHeaderRegex($header, $pattern, $message = '')<br />
public function assertNotHeaderRegex($header, $pattern, $message = '')<br />
</code><br />
Assert-Funktinonen zum Testen des Ablaufs.</p>
<p>Hier kann getestet werden, ob dir Response von dem erwarteten Modzl, Controller, Action erzeugt wurde.<br />
<code><br />
public function assertModule($module, $message = '')<br />
public function assertNotModule($module, $message = '')<br />
public function assertController($controller, $message = '')<br />
public function assertNotController($controller, $message = '')<br />
public function assertAction($action, $message = '')<br />
public function assertNotAction($action, $message = '')<br />
public function assertRoute($route, $message = '')<br />
public function assertNotRoute($route, $message = '')<br />
</code></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/controllertestcase-liste-mit-assert-funktionen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extjs &#8211; Form sendet keinen X_REQUESTED_WITH</title>
		<link>http://www.andreas-loeer.de/softwareentwicklung/extjs/extjs-form-x_requested-with</link>
		<comments>http://www.andreas-loeer.de/softwareentwicklung/extjs/extjs-form-x_requested-with#comments</comments>
		<pubDate>Tue, 08 May 2012 12:34:06 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Extjs]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=222</guid>
		<description><![CDATA[Wird in Extjs eine Form verwendet, so wird beim Speichern kein X_REQUESTED_WITH-Header gesendet. Grund ist laut der Dokumentation in den Quellen eine generierte versteckte Form, die per Submit die Daten absendet. Diese Form wird nach dem Empfang der Antwort wieder entfernt. Zu beachten ist ausserdem , das wenn eine JSON-Antwort gesendet wird muss der Content-Type [...]]]></description>
			<content:encoded><![CDATA[<p>Wird in Extjs eine Form verwendet, so wird beim Speichern kein X_REQUESTED_WITH-Header gesendet. Grund ist laut der Dokumentation in den Quellen eine generierte versteckte Form, die per Submit die Daten absendet. Diese Form wird nach dem Empfang der Antwort wieder entfernt.</p>
<p>Zu beachten ist ausserdem , das wenn eine JSON-Antwort gesendet wird muss der Content-Type der Antwort &#8220;text/html&#8221; sein. Diese Anwort wird vom Browser in das Document eingetragen und erst dann vom Extjs in ein XMLHttpRequest-Objekt kopiert.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwareentwicklung/extjs/extjs-form-x_requested-with/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend &#8211; Restcontroller</title>
		<link>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/zend-restcontroller</link>
		<comments>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/zend-restcontroller#comments</comments>
		<pubDate>Mon, 07 May 2012 08:50:39 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Zend-Framework]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=216</guid>
		<description><![CDATA[Das Zendframework stellt neben dem normalen Controllern auch einen Controller für eine REST-Schnittstelle zur Verfügung. Dieser ist eine Ableitung des normalen Actioncontrollers und stellt eine Methodendefinition für die HTTP-Request-Methoden Get, Put, Post und Delete bereit. Diese sind als abstrakte Methoden definiert und müssen im Controller abgeleitet werden. Der Restcontroller wird in der einfachsten Variante einfach in [...]]]></description>
			<content:encoded><![CDATA[<p>Das Zendframework stellt neben dem normalen Controllern auch einen Controller für eine REST-Schnittstelle zur Verfügung. Dieser ist eine Ableitung des normalen Actioncontrollers und stellt eine Methodendefinition für die HTTP-Request-Methoden Get, Put, Post und Delete bereit. Diese sind als abstrakte Methoden definiert und müssen im Controller abgeleitet werden.</p>
<p>Der Restcontroller wird in der einfachsten Variante einfach in der Bootstrap initalisiert. Um automatische Tests verwenden zu können müssen die Defaultroutes noch am Ende hinzugefügt werden.</p>
<pre>    public function _initRest () {
        $front     = Zend_Controller_Front::getInstance();
        $restRoute = new Zend_Rest_Route($front, array(), array('default' =&gt; array('rest')));
        $front-&gt;getRouter()-&gt;addRoute('rest', $restRoute);
        $front-&gt;getRouter()-&gt;addDefaultRoutes();
    }</pre>
<p>&nbsp;</p>
<p>Das Gerüst für eine Rest-Controller sieht so aus:</p>
<pre>class RestController extends Zend_Rest_Controller
{

  public function init()
  {
  }

  public function indexAction()
  {
  }

  public function getAction()
  {
  }

  public function postAction()
  {
  }

  public function putAction()
  {
  }

  public function deleteAction()
  {
  }

}</pre>
<p>Nach der Bearbeitung von REST- Funktionalitäten sollten am Ende die richtigen Statuscodes zurückgeliefert werden.</p>
<p>200 OK: Diese Antwort sollte auf ein GET senden, wenn die Datenausgeliefert werden. Wenn nichts gefunden wurde, liefert es ein 404.</p>
<p>201 Created: Diese Antwort sollte auf ein POST senden, wenn die Resource angelegt worden ist. Es muss eine Antwort gesendet werden, die den gesamten Datensatz enthält.</p>
<p>204 No Content: Diese Antwort sendet ein DELETE, wenn die Resource gelöscht worden ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwareentwicklung/zend-framework/zend-restcontroller/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Test mit frischer Datenbank</title>
		<link>http://www.andreas-loeer.de/softwaretest/zend-test-mit-frischer-datenbank</link>
		<comments>http://www.andreas-loeer.de/softwaretest/zend-test-mit-frischer-datenbank#comments</comments>
		<pubDate>Fri, 04 May 2012 13:42:04 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Softwaretest]]></category>
		<category><![CDATA[Zend-Framework]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=211</guid>
		<description><![CDATA[Füe einen Test ist das wichtig das die Datenbank in einen definierten Zustand vorliegt, damit die Testergebnisse immer die gleichen sind. Im Zend-Framework werden die automatischen Tests unter dem Verzeichnis &#8220;tests&#8221; zu finden. Hier gibt es die Datei phpunit.xml die die Tests definiert. Bevor die Tests ausgeführt werden, wird die Datei Bootstrap.php ausgeführt. Dies ist [...]]]></description>
			<content:encoded><![CDATA[<p>Füe einen Test ist das wichtig das die Datenbank in einen definierten Zustand vorliegt, damit die Testergebnisse immer die gleichen sind.<br />
Im Zend-Framework werden die automatischen Tests unter dem Verzeichnis &#8220;tests&#8221; zu finden. Hier gibt es die Datei phpunit.xml die die Tests definiert.<br />
Bevor die Tests ausgeführt werden, wird die Datei Bootstrap.php ausgeführt. Dies ist der ideale Ort um eine frische Datenbank zu erstellen.<br />
Diese Datenbank sollte eine Instanz sein, die in der Application.ini defniert wird.<br />
<code><br />
[testing : production]<br />
doctrine.conn.dbname = 'datenbank_test'<br />
</code><br />
In der Bootstrap.php können nun die entsprechenden Routinen angehängt werden:<br />
<code><br />
//// Do the setup of the Database<br />
$application = new Zend_Application(<br />
    'testing',<br />
    APPLICATION_PATH . '/configs/application.ini'<br />
);</p>
<p>// Bootstrap the application<br />
$bootstrap = $application->bootstrap()->getBootstrap();</p>
<p>// Retrieve the Doctrine 2 entity manager<br />
$registry = Zend_Registry::getInstance();<br />
$em = $registry->entitymanager;</p>
<p>// Instantiate the schema tool<br />
$tool = new Doctrine\ORM\Tools\SchemaTool($em);</p>
<p>// Retrieve all of the mapping metadata<br />
$classes = $em->getMetadataFactory()->getAllMetadata();</p>
<p>// Delete the existing test database schema<br />
$tool->dropSchema($classes);</p>
<p>// Create the test database schema<br />
$tool->createSchema($classes);<br />
</code><br />
Initialdaten aus Yaml-Datei einlesen.<br />
In der 1.3 von Doctrine gab es die Funktion loadData(<FILE>)die in der 2.0 entfallen ist. Diese Funktionalität lasst sich aber leicht nachbilden:<br />
<code><br />
// Setup the fixture data<br />
require_once('Symfony\yaml\sfYaml.php');<br />
$data = sfYaml::load(dirname(__FILE__)."/data/fixtures.sql");<br />
foreach ($data as $tableName => $rows) {<br />
    if (!isset($rows)) {<br />
        $rows = array();<br />
    }</p>
<p>    if (!is_array($rows)) {<br />
        continue;<br />
    }</p>
<p>    foreach ( $rows as $row ) {<br />
        $table = new $tableName();<br />
        foreach( $row as $columnName => $value ) {<br />
            $setter = "set" . ucfirst($columnName);<br />
            $table->$setter($value);<br />
        }<br />
        $em->persist($table);<br />
        unset($table);<br />
    }<br />
}<br />
$em->flush();<br />
</code><br />
Die Datenbankverbindung muss nun noch geschlossen werden, da es sonst zu Schwierigkeiten mit den Tests kommt:<br />
<code><br />
// Close the connection<br />
$em->getConnection()->close();<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwaretest/zend-test-mit-frischer-datenbank/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend mit Doctrine</title>
		<link>http://www.andreas-loeer.de/allgemein/zend-mit-doctrine</link>
		<comments>http://www.andreas-loeer.de/allgemein/zend-mit-doctrine#comments</comments>
		<pubDate>Fri, 04 May 2012 13:11:23 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=203</guid>
		<description><![CDATA[Die Anleitung wie Doctrine in das Zendframework eingebunden werden kann gibt es im Netz in Mengen. Hier nur nochmal der Schnellüberblick. Das Model wird über Annotations definiert. Für die Zwischenspeicherung für Doctrine-Dateien wird unter dem Hauptverzeichnis der Ordner &#8220;Proxies&#8221; angelegt. Application.ini ; Datenbankverbindung für den OR-Mapper doctrine.conn.host = 'localhost' doctrine.conn.user = 'user' doctrine.conn.pass = 'password' [...]]]></description>
			<content:encoded><![CDATA[<p>Die Anleitung wie Doctrine in das Zendframework eingebunden werden kann gibt es im Netz in Mengen. Hier nur nochmal der Schnellüberblick.<br />
Das Model wird über Annotations definiert. Für die Zwischenspeicherung für Doctrine-Dateien wird unter dem Hauptverzeichnis der Ordner &#8220;Proxies&#8221; angelegt.</p>
<p>Application.ini<br />
<code><br />
; Datenbankverbindung für den OR-Mapper<br />
doctrine.conn.host = 'localhost'<br />
doctrine.conn.user = 'user'<br />
doctrine.conn.pass = 'password'<br />
doctrine.conn.driv = 'pdo_mysql'<br />
doctrine.conn.dbname = 'database'<br />
doctrine.path.models = APPLICATION_PATH "/models"<br />
</code><br />
bootstrap.php<br />
<code><br />
/**<br />
* Initialize auto loader of Doctrine<br />
*<br />
* @return Doctrine_Manager<br />
*/<br />
public function _initDoctrine() {<br />
require_once 'Doctrine/Common/ClassLoader.php';</p>
<p>$doctrineConfig = $this-&gt;getOption('doctrine');</p>
<p>$classLoader = new \Doctrine\Common\ClassLoader('Doctrine');<br />
$classLoader-&gt;register();</p>
<p>$config = new \Doctrine\ORM\Configuration();</p>
<p>$cache = new \Doctrine\Common\Cache\ArrayCache;<br />
$config-&gt;setMetadataCacheImpl($cache);<br />
$config-&gt;setQueryCacheImpl($cache);</p>
<p>$driverImpl = $config-&gt;newDefaultAnnotationDriver(APPLICATION_PATH.'/models');<br />
$config-&gt;setMetadataDriverImpl($driverImpl);</p>
<p>$config-&gt;setProxyDir(APPLICATION_PATH . '/../Proxies');<br />
$config-&gt;setProxyNamespace('App\Proxies');</p>
<p>$config-&gt;setAutoGenerateProxyClasses(true);</p>
<p>$connectionOptions = array(<br />
'driver' =&gt; $doctrineConfig['conn']['driv'],<br />
'user' =&gt; $doctrineConfig['conn']['user'],<br />
'password' =&gt; $doctrineConfig['conn']['pass'],<br />
'dbname' =&gt; $doctrineConfig['conn']['dbname'],<br />
'host' =&gt; $doctrineConfig['conn']['host']<br />
);</p>
<p>$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);</p>
<p>$registry = Zend_Registry::getInstance();<br />
$registry-&gt;entitymanager = $em;</p>
<p>return $em;<br />
}<br />
</code></p>
<p>Der Enitymanager ist nun in der Registry eingetragen und kann in der Anwendlung verwendet werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/allgemein/zend-mit-doctrine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation  Zend/Doctrine/PHPUnit mit Pear</title>
		<link>http://www.andreas-loeer.de/softwaretest/installation-zenddoctrinephpunit-mit-pear</link>
		<comments>http://www.andreas-loeer.de/softwaretest/installation-zenddoctrinephpunit-mit-pear#comments</comments>
		<pubDate>Fri, 04 May 2012 09:56:57 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Softwaretest]]></category>
		<category><![CDATA[Zend-Framework]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=152</guid>
		<description><![CDATA[Für die Installation der Komponeten Zend-Framework, Doctrine und PHPUnit sind einige Schritte notwendig: pear channel-discover pear.zfcampus.org pear install zfcampus/zf pear channel-discover pear.symfony.com pear channel-discover pear.doctrine-project.org pear install doctrine/DoctrineCommon pear install doctrine/DoctrineORM pear channel-discover pear.phpunit.de pear install phpunit/PHPUnit pear install phpunit/dbUnit]]></description>
			<content:encoded><![CDATA[<p>Für die Installation der Komponeten Zend-Framework, Doctrine und PHPUnit sind einige Schritte notwendig:</p>
<p><code><br />
pear channel-discover pear.zfcampus.org<br />
pear install zfcampus/zf</p>
<p>pear channel-discover pear.symfony.com</p>
<p>pear channel-discover pear.doctrine-project.org<br />
pear install doctrine/DoctrineCommon<br />
pear install doctrine/DoctrineORM</p>
<p>pear channel-discover pear.phpunit.de<br />
pear install phpunit/PHPUnit<br />
pear install phpunit/dbUnit<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwaretest/installation-zenddoctrinephpunit-mit-pear/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN-Serverdienst unter Win7</title>
		<link>http://www.andreas-loeer.de/softwareentwicklung/svn-serverdienst-unter-win7</link>
		<comments>http://www.andreas-loeer.de/softwareentwicklung/svn-serverdienst-unter-win7#comments</comments>
		<pubDate>Wed, 22 Feb 2012 11:06:19 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=147</guid>
		<description><![CDATA[Ein SVN-Server wird immer wieder benötigt. Die Einrichtung unter Windows ist 2 Schritte aufwändiger als unter Debian. Erstmal ein passendes Installationspaket finden und ausführen. Ich habe ein Paket bei Sourceforge gefunden: http://sourceforge.net/projects/win32svn/ Nach der Installation kann svnserv dann als Dienst installiert und gestartet werden: sc create svnserve binpath= "\"c:\Program Files\Subversion\bin\svnserve.exe\" --service --root c:\var\svn" displayname= "Subversion" [...]]]></description>
			<content:encoded><![CDATA[<p>Ein SVN-Server wird immer wieder benötigt. Die Einrichtung unter Windows ist 2 Schritte aufwändiger als unter Debian.</p>
<p>Erstmal ein passendes Installationspaket finden und ausführen. Ich habe ein Paket bei Sourceforge gefunden:</p>
<p>http://sourceforge.net/projects/win32svn/</p>
<p>Nach der Installation kann svnserv dann als Dienst installiert und gestartet werden:<br />
<code><br />
sc create svnserve binpath= "\"c:\Program Files\Subversion\bin\svnserve.exe\" --service --root c:\var\svn" displayname= "Subversion" depend= tcpip start= auto<br />
sc start svnserve<br />
</code><br />
Hierzu muss die Eingabeaufforderung als Administrator ausgeführt werden.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/softwareentwicklung/svn-serverdienst-unter-win7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pear: possible symlink attack</title>
		<link>http://www.andreas-loeer.de/allgemein/pear-possible-symlink-attack</link>
		<comments>http://www.andreas-loeer.de/allgemein/pear-possible-symlink-attack#comments</comments>
		<pubDate>Tue, 07 Feb 2012 09:30:52 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.andreas-loeer.de/?p=129</guid>
		<description><![CDATA[Bei der Installation von Pear-Paketen unter Win7 kann folgende Fehlermeldung auftreten: SECURITY ERROR: Will not write to C:\Users\andreas\AppData\Local\Temp\pear\cache\27ea434482206c056c92f274832da110rest.cacheid as it is symlinked to C:\Users\andreas\AppData\Local\Temp\pear\cache\27ea434482206c056c92f274832da110rest.cacheid - Possible symlink attack Hier scheint das Pear mit seinen Cachedateien durcheinander zukommen. In meine Fall konnte ich das Problem damit lösen, die Dateinen, die sich in dem Cacheverzeichnis (C:\Users\andreas\AppData\Local\Temp\pear\cache)  befanden [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Installation von Pear-Paketen unter Win7 kann folgende Fehlermeldung auftreten:</p>
<p><code><br />
SECURITY ERROR: Will not write to C:\Users\andreas\AppData\Local\Temp\pear\cache\27ea434482206c056c92f274832da110rest.cacheid as it is symlinked to C:\Users\andreas\AppData\Local\Temp\pear\cache\27ea434482206c056c92f274832da110rest.cacheid - Possible symlink attack<br />
</code></p>
<p>Hier scheint das Pear mit seinen Cachedateien durcheinander zukommen. In meine Fall konnte ich das Problem damit lösen, die Dateinen, die sich in dem Cacheverzeichnis (C:\Users\andreas\AppData\Local\Temp\pear\cache)  befanden zu löschen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-loeer.de/allgemein/pear-possible-symlink-attack/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

