<?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>Jan Fanslau</title>
	<atom:link href="http://www.jan-fanslau.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jan-fanslau.de</link>
	<description></description>
	<lastBuildDate>Tue, 23 Nov 2010 14:23:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ein toll gemachtes und hoch interessantes Video</title>
		<link>http://www.jan-fanslau.de/fundstucke/ein-toll-gemachtes-und-hoch-interessantes-video/</link>
		<comments>http://www.jan-fanslau.de/fundstucke/ein-toll-gemachtes-und-hoch-interessantes-video/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 16:18:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Youtube]]></category>
		<category><![CDATA[Zeichentrick]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=737</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object width="640" height="390"><param name="movie" value="http://www.youtube.com/v/u6XAPnuFjJc&#038;hl=en_US&#038;feature=player_embedded&#038;version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/u6XAPnuFjJc&#038;hl=en_US&#038;feature=player_embedded&#038;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/fundstucke/ein-toll-gemachtes-und-hoch-interessantes-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook &#8211; Post an Fanpage &#8211; Wall</title>
		<link>http://www.jan-fanslau.de/facebook/facebook-post-an-fanpage-wall/</link>
		<comments>http://www.jan-fanslau.de/facebook/facebook-post-an-fanpage-wall/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 13:12:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[facebook]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Lösung]]></category>
		<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=583</guid>
		<description><![CDATA[Wenn Ihr von eurer Webseite aus auf eine Fanpage-Wall posten wollt, dann habt Ihr hier ein kleines Tutorial: 1. Bei Facebook anmelden (http://www.facebook.com) 2. Eine neue Facebook-App erstellen (http://www.facebook.com/developers/createapp.php) 3. Der App muss nun ein Name gegeben werden und die Sicherheitsabfrage muss ausgefüllt werden 4. Wichtig sind jetzt die Anwendungs ID (Application ID) und der [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn Ihr von eurer Webseite aus auf eine Fanpage-Wall posten wollt, dann habt Ihr hier ein kleines Tutorial:</p>
<p>1. Bei Facebook anmelden (http://www.facebook.com)</p>
<p>2. Eine neue Facebook-App erstellen (http://www.facebook.com/developers/createapp.php)</p>
<p>3. Der App muss nun ein Name gegeben werden und die Sicherheitsabfrage muss ausgefüllt werden</p>
<p>4. Wichtig sind jetzt die Anwendungs ID (Application ID) und der API-Schlüssen (API-Key)<br />
<span id="more-583"></span><br />
5. In eurem PHP-Code müsst Ihr jetzt folgende Codes einfügen</p>
<pre><code class="php">&lt;?php

define('FACEBOOK_APP_ID', 'XXXXXXXXXXXXXX'); #APPLICATION ID
define('FACEBOOK_SECRET', 'XXXXXXXXXXXXXX'); #API-KEY

function get_facebook_cookie($app_id, $application_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key =&amp;gt; $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {
return null;
}
return $args;
}

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);

?&gt;</code></pre>
<p>5. So als nächstes solltet Ihr noch ein Snippet schreiben das checkt ob Ihr bei Facebook eingeloggt seid:</p>
<pre><code>&lt;?php if ($cookie) { ?&gt;
      Your user ID is &lt;?= $cookie['uid'] ?&gt;
    &lt;?php } else { ?&gt;
      &lt;fb:login-button perms="publish_stream"&gt;&lt;/fb:login-button&gt;
    &lt;?php } ?&gt;</code></pre>
<p>6. Damit der FB-Login-Button anständig gerendert wird muss in euren HTML-Quelltext direkt nach &lt;body&gt;:</p>
<pre><code>&lt;div id="fb-root"&gt;&lt;/div&gt;
&lt;script&gt;
//XXX = Facebook App - ID
  window.fbAsyncInit = function() {
    FB.init({
      appId  : 'XXXXXXXXXXXXXXXX',
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });
  };

  (function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());
&lt;/script&gt;</code></pre>
<p>7. Ihr braucht eine Funktion die für euch den Request an die Graph-Api von Facebook stellt:</p>
<pre><code>function makeRequest($url, $params, $ch=null) {
if (!$ch) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
}</code>

$opts = array(
CURLOPT_CONNECTTIMEOUT =&gt; 10,
CURLOPT_RETURNTRANSFER =&gt; true,
CURLOPT_TIMEOUT        =&gt; 60,
CURLOPT_USERAGENT      =&gt; 'facebook-php-2.0',
);
$opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&amp;');
$opts[CURLOPT_URL] = $url;
print_r($opts);
curl_setopt_array($ch, $opts);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}</pre>
<p>8. So und als letztes fehlt noch der Aufruf der den Request abschickt und die Daten an Facebook übermittelt.</p>
<pre><code>$params['message'] = 'This is a test';
		$params['access_token']=$cookie['access_token'];
		$url = 'https://graph.facebook.com/XXXXXXXXXXXXX/feed'; #XXXXXXXX = ID der Fanpage
		//print_r(makeRequest($url, $params));
	//	print_r(json_decode(file_get_contents($url)));
		print_r(makeRequest($url, $params));</code></pre>
<p>Ich werde das wenn ich mal ein bischen Ruhe habe, in eine schöne downloadbare Version hacken. Bis dahin hoffe ich, dass ihr mit dem Code was anfangen könnt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/facebook/facebook-post-an-fanpage-wall/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Facebook &#8211; Connect: Image Upload mit PHP SDK</title>
		<link>http://www.jan-fanslau.de/codeschnipsel/facebook-connect-image-upload-mit-php-sdk/</link>
		<comments>http://www.jan-fanslau.de/codeschnipsel/facebook-connect-image-upload-mit-php-sdk/#comments</comments>
		<pubDate>Mon, 10 May 2010 08:07:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Codeschnipsel]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[connect]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=532</guid>
		<description><![CDATA[Der Image Upload mit der graph-api von Facebook ist ziemlich einfach und gut zu benutzen: Nachfolgend gibts zwei Codeschnipsel mit dem man A. Alben anlegt und B. Photos hochlädt. Dazu habe ich mir die Graph-PHP-Api ein bischen erweitert. private function createAlbum(){ $params = array(); if (!isset($params['access_token'])) { $session = $this-&#38;gt;getSession(); // either user session signed, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="padding-right: 10px;" title="Facebook" src="http://farm1.static.flickr.com/225/503165914_a680a56c77_m_d.jpg" alt="" width="240" height="90" />Der Image Upload mit der graph-api von Facebook ist ziemlich einfach und gut zu benutzen:</p>
<p>Nachfolgend gibts zwei Codeschnipsel mit dem man A. Alben anlegt und B. Photos hochlädt. Dazu habe ich mir die Graph-PHP-Api ein bischen erweitert.<span id="more-532"></span></p>
<pre><code>private function createAlbum(){
 $params = array();
 if (!isset($params['access_token'])) {
 $session = $this-&amp;gt;getSession();
 // either user session signed, or app signed
 if ($session) {
 $params['access_token'] = $session['access_token'];
 } else {
 // TODO (naitik) sync with abanker
 //$params['access_token'] = $this-&amp;gt;getAppId() .'|'. $this-&amp;gt;getApiSecret();
 }
 }
 $params['name'] = "test";
 $params['message'] = "my new Test-Album";
 $url ="https://graph.facebook.com/me/albums";
 return $this-&amp;gt;makeRequest($url, $params);
 }</code></pre>
<p>Bildupload zu Facebook</p>
<pre><code>private function uploadImageData($albumId, $image){

 $params = array();
 if (!isset($params['access_token'])) {
 $session = $this-&amp;gt;getSession();
 // either user session signed, or app signed
 if ($session) {
 $params['access_token'] = $session['access_token'];
 } else {
 // TODO (naitik) sync with abanker
 //$params['access_token'] = $this-&amp;gt;getAppId() .'|'. $this-&amp;gt;getApiSecret();
 }
 }

 $file= $image;
 $args = array(
 'message' =&amp;gt; 'Photo from application',
 );
 $args[basename($file)] = '@' . realpath($file);
 $ch = curl_init();
 $url ="https://graph.facebook.com/".$albumId."/photos?access_token=".$params['access_token'];
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, false);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
 $data = curl_exec($ch);
 //returns the photo id
 print_r(json_decode($data,true));
 }</code></pre>
<p>Ich hoffe Ihr könnt Damit was anfangen. Sicherlich gibts später noch mehr dazu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/codeschnipsel/facebook-connect-image-upload-mit-php-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Piwik die Tracking-Alternative</title>
		<link>http://www.jan-fanslau.de/tools/piwik-die-tracking-alternative/</link>
		<comments>http://www.jan-fanslau.de/tools/piwik-die-tracking-alternative/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:51:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[blog-fussball.de]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Lösung]]></category>
		<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Piwik]]></category>
		<category><![CDATA[Tracking]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=522</guid>
		<description><![CDATA[So wie es ausschaut, wird Google wohl ab demnächst ein globales Browser Plugin veröffentlichen, mit dem jeder User selbst entscheiden kann, ob er per Google-Analytics erfasst werden kann oder nicht. Das macht in der Regel ja auch Sinn, denn jeder User soll selber entscheiden welche Daten er welchem Konzern überlassen möchte. Das Problem der User [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jan-fanslau.de/tools/piwik-die-tracking-alternative/"><img class="alignleft size-full wp-image-523" title="piwik" src="http://www.jan-fanslau.de/wp-content/uploads/piwik.png" alt="" width="577" height="74" /></a></p>
<div class="clearFloat">So wie es ausschaut, wird<a title="Golem.de " href="http://www.golem.de/1003/73957.html" target="_blank"> Google wohl ab demnächst ein globales Browser Plugin veröffentlichen,</a> mit dem jeder User selbst entscheiden kann, ob er per Google-Analytics erfasst werden kann oder nicht. Das macht in der Regel ja auch Sinn, denn jeder User soll selber entscheiden welche Daten er welchem Konzern überlassen möchte. Das Problem der User ist auch nicht, das die Daten von den Webseitenbetreibern ausgewertet werden um das Angebot für die User zu verbessern, sondern das die Datenkrake Google durch die Fülle der zur Verfügung stehenden Daten Bewegungsprofile einzelner User erstellen kann.</p>
<p>Wenn es denn also kommen sollte, das User die Möglichkeit besitzen GA-Tracking auszuschalten, sollte man jedoch noch eine Alternative in Petto haben. Dazu hat sich die OpenSource-Alternative <a title="Piwik - The Google Analytics Alternative" href="http://piwik.org/" target="_blank">Piwik</a> auserkoren. Piwik bietet in etwa die gleichen Daten wie Google-Analytics und lässt Sie zudem auch noch genauso gut aussehen.</p>
<p>Ich werde es gleich mal auf <a title="90 Minuten ein Leben lang - Blog Fussball" href="http://blog-fussball.de" target="_blank">blog-fussball.de</a> ausprobieren, vielleicht ist es ja wirklich so gut wie sie auf ihrer Webseite ankündigen.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/tools/piwik-die-tracking-alternative/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Projektmanagement mit Omniplan 1.6.4</title>
		<link>http://www.jan-fanslau.de/tools/projektmanagement-mit-omniplan-1-6-4/</link>
		<comments>http://www.jan-fanslau.de/tools/projektmanagement-mit-omniplan-1-6-4/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 11:46:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Milestones]]></category>
		<category><![CDATA[Omniplan]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=506</guid>
		<description><![CDATA[Nach langer Abstinenz im Blog, kann ich nun mal wieder mit einer Software-Empfehlung aufwarten. Jedem Programmierer, der mit größeren Projekten zu tun hat kann ich nur empfehlen sich mal die Projektmanagement-Software &#8220;Omniplan&#8221; anzuschauen. Hier lassen sich relativ schnell Prozesse abbilden, Ressourcen anlegen, Preise kalkulieren und Timetables erstellen. Auf der Webseite des Anbieters finden sich kurze [...]]]></description>
			<content:encoded><![CDATA[<p>Nach langer Abstinenz im Blog, kann ich nun mal wieder mit einer Software-Empfehlung aufwarten.</p>
<p>Jedem Programmierer, der mit größeren Projekten zu tun hat kann ich nur empfehlen sich mal die Projektmanagement-Software &#8220;<a href="http://www.omnigroup.com/applications/omniplan/" target="_blank">Omniplan</a>&#8221; anzuschauen.<br />
Hier lassen sich relativ schnell Prozesse abbilden, Ressourcen anlegen, Preise kalkulieren und Timetables erstellen. Auf der Webseite des Anbieters finden sich kurze Video-Tutorials mit denen der Einstieg noch leichter fällt.<br />
Ich arbeite jetzt zwar erst eine Woche mit der Software aber sie hat mich voll und ganz überzeugt. Was noch fehlt ist eine Art Community-Feature um den gesamten Prozessplan mit dem Auftraggeber / Chef und CDO abzustimmen. Solange das nicht existiert kann man aber die umfangreiche Export-Funktion nutzen. Neben der klassischen Möglichkeit den Plan als PDF zu verschicken kann man sich auch eine HTML-Seite erstellen lassen, in der jeder Mitarbeiter sehen kann was er wann zu tun hat. Dabei lassen sich die Termine im iCal-Kalender speichern.</p>
<p>Also einfach mal runterladen, zwei Wochen testen und dann vielleicht sogar zuschlagen. Bei mir ist die Entscheidung schnell gefallen! Für die ganz interessierten kann man sich auch im OmniBlog ein wenig über die Firma und deren (teilweise freakigen) Mitarbeiter informieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/tools/projektmanagement-mit-omniplan-1-6-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hier mal wieder was schickes&#8230;</title>
		<link>http://www.jan-fanslau.de/allgemeines/hier-mal-wieder-was-schickes/</link>
		<comments>http://www.jan-fanslau.de/allgemeines/hier-mal-wieder-was-schickes/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 15:00:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=502</guid>
		<description><![CDATA[Was für ein toller Sound]]></description>
			<content:encoded><![CDATA[<p>Was für ein toller Sound<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/dsU3B0W3TMs&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=de_DE&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/dsU3B0W3TMs&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=de_DE&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/allgemeines/hier-mal-wieder-was-schickes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend Framework &#8211; bin ich zu langsam?</title>
		<link>http://www.jan-fanslau.de/fundstucke/zend-framework-bin-ich-zu-langsam/</link>
		<comments>http://www.jan-fanslau.de/fundstucke/zend-framework-bin-ich-zu-langsam/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 16:50:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[ausraster]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierstuff]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=475</guid>
		<description><![CDATA[Ich habe gestern das Zend Framework Version 1.8 runter geladen, weil ich dachte, ok, im April oder so da hatte ich Version 1.7, mal schauen was ich mit 1.8 in meinen Quelltexten alles ändern darf&#8230; So, heute schaue ich nochmals auf die Seite und siehe da: Version 1.9 wird da heute angepriesen&#8230; Also entweder hatte [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe gestern das Zend Framework Version 1.8 runter geladen, weil ich dachte, ok, im April oder so da hatte ich Version 1.7, mal schauen was ich mit 1.8 in meinen Quelltexten alles ändern darf&#8230;</p>
<p>So, heute schaue ich nochmals auf die Seite und siehe da: Version 1.9 wird da heute angepriesen&#8230;</p>
<p>Also entweder hatte ich einfach nen schlechtes Timing, oder die Entwicklung des Zend-Frameworks geht schneller als sich überhaupt Bücher für die Aktuelle Version drucken lassen.</p>
<p>Naja, jetzt schau ich mal was Version 1.9 bringt, und wer weiß, vielleicht gibts morgen ja schon Version 2.0 <img src='http://www.jan-fanslau.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/fundstucke/zend-framework-bin-ich-zu-langsam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Zend-Tutorial for beginners ever !!!</title>
		<link>http://www.jan-fanslau.de/fundstucke/best-zend-tutorial-for-beginners-ever/</link>
		<comments>http://www.jan-fanslau.de/fundstucke/best-zend-tutorial-for-beginners-ever/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 18:48:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[Anfänger]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Milestones]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=473</guid>
		<description><![CDATA[Zend, eines der großen PHP-Frameworks hat eine ganz entscheidene Schwäche. Die Doku ist mäßig bis schlecht. Man findet zwar zu jeder Methode einen passenden Artikel, doch leider immer so aus dem Kontext gerissen, dass es schwierig ist zu folgen. Zudem sind die Verlinkungen innerhalb der Doku schlicht und einfach nicht vorhanden&#8230; Nun, auf dem Weg [...]]]></description>
			<content:encoded><![CDATA[<p>Zend, eines der großen PHP-Frameworks hat eine ganz entscheidene Schwäche. Die Doku ist mäßig bis schlecht. Man findet zwar zu jeder Methode einen passenden Artikel, doch leider immer so aus dem Kontext gerissen, dass es schwierig ist zu folgen. Zudem sind die Verlinkungen innerhalb der Doku schlicht und einfach nicht vorhanden&#8230;</p>
<p>Nun, auf dem Weg mich halbwegs anständig mit dem Zend-Framework vertraut zu machen bin ich schon einiges durchs Netz gesurft und habe hunderte von Tutorials  gefunden, aber entweder haben sie nicht funktioniert, waren auf französisch oder schlicht und einfach für Zend 1.0</p>
<p>Heute dann endlich die Erlösung und endlich der große Einstieg, der mir für mein nächstes großes Projekt den Anschub gegeben hat.</p>
<p>Wer ein wirklich gutes, wenn nicht sogar das beste Zend-Tutorial durcharbeiten möchte, der muss hier hin surfen!</p>
<p><a title="PHP everyday" href="http://www.phpeveryday.com" target="_blank">www.phpeveryday.com</a></p>
<p><a title="Zend Tutorial Intro" href="http://www.phpeveryday.com/pack/Zend-Framework-Intro-Step-By-Step-Tutorial" target="_blank">Intro Tutorial</a></p>
<p><a title="Zend ActionController Tutorial" href="http://www.phpeveryday.com/pack/Zend-Framework-Action-Step-By-Step-Tutorial" target="_blank">ActionController Tutorial</a></p>
<p><a title="Zend Database Tutorial" href="http://www.phpeveryday.com/pack/Zend-Framework-Database-Step-By-Step-Tutorial" target="_blank">Database Tutorial</a></p>
<p><a title="Zend Registry Tutorial" href="http://www.phpeveryday.com/pack/Zend-Framework-Registry-Step-By-Step-Tutorial" target="_blank">Registry Tutorial</a></p>
<p><a title="Zend Config Tutorial" href="http://www.phpeveryday.com/pack/Zend-Framework-Config-Step-By-Step-Tutorial" target="_blank">Config Tutorial</a></p>
<p><a title="Zend Login Tutorial" href="http://www.phpeveryday.com/pack/Zend-Framework-Login-Step-By-Step-Tutorial" target="_blank">Login Tutorial</a></p>
<p><a title="Zend Session Tutorial" href="http://www.phpeveryday.com/pack/Zend-Framework-Session-Step-By-Step-Tutorial" target="_blank">Session Tutorial</a></p>
<p>Die lohnen sich alle, am besten alle von Anfang bis Ende durch rocken!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/fundstucke/best-zend-tutorial-for-beginners-ever/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache Listview mit mod_autoindex</title>
		<link>http://www.jan-fanslau.de/tools/apache-listview-mit-mod_autoindex/</link>
		<comments>http://www.jan-fanslau.de/tools/apache-listview-mit-mod_autoindex/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 17:10:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mod_autoindex]]></category>
		<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[virtueller Server]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=464</guid>
		<description><![CDATA[Auf der Suche nach einer einfachen Möglichkeit meinen Kunden einen &#8211; für sie übersichtlichen &#8211; Downloadbereich zu erstellen bin ich über mod_autoindex gestolpert. An dem Modul führt kein Weg vorbei. Noch viel besser wird es allerdings, wenn sich das ganze Aussehen noch steuern läßt. Dazu habe ich ein geniales Howto auf http://recurser.com/ gefunden. Das komplette [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-469" style="margin-right: 10px;" title="index-style1" src="http://www.jan-fanslau.de/wp-content/uploads/index-style1.png" alt="index-style1" width="259" height="259" /></p>
<p>Auf der Suche nach einer einfachen Möglichkeit meinen Kunden einen &#8211; für sie übersichtlichen &#8211; Downloadbereich zu erstellen bin ich über mod_autoindex gestolpert. An dem Modul führt kein Weg vorbei.</p>
<p>Noch viel besser wird es allerdings, wenn sich das ganze Aussehen noch steuern läßt.</p>
<p>Dazu habe ich ein geniales Howto auf <a title="recurser" href="http://recurser.com/" target="_blank">http://recurser.com/</a> gefunden.</p>
<p>Das komplette Howto findet Ihr <a title="Styling apache directory listing with mod_autoindex" href="http://recurser.com/articles/2008/12/29/styling-apache-directory-listings-with-mod_autoindex/" target="_blank">hier</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/tools/apache-listview-mit-mod_autoindex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trac auf Apache aufsetzen unter SUSE</title>
		<link>http://www.jan-fanslau.de/trac/trac-auf-apache-aufsetzen-unter-suse/</link>
		<comments>http://www.jan-fanslau.de/trac/trac-auf-apache-aufsetzen-unter-suse/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 16:41:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[trac]]></category>
		<category><![CDATA[Bugtracking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Milestones]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SUSE]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://www.jan-fanslau.de/?p=397</guid>
		<description><![CDATA[SVN läuft, Trac läuft  und nun stellt sich die eigentlich alles entscheidene Frage, an der ich selber mehrmals gescheitert bin: &#8220;Wie setze ich Trac jetzt für Apache auf, damit ich meinen Kunden zugriff auf das Bugtracking-Tool geben kann???&#8221; Ersteinmal vorne weg: Plesk ist sehr sehr anstrengend, ich musste mehrmals die angelegte trac-Subdomain löschen, weil sich [...]]]></description>
			<content:encoded><![CDATA[<p>SVN läuft, Trac läuft  und nun stellt sich die eigentlich alles entscheidene Frage, an der ich selber mehrmals gescheitert bin: &#8220;Wie setze ich Trac jetzt für Apache auf, damit ich meinen Kunden zugriff auf das Bugtracking-Tool geben kann???&#8221;</p>
<p>Ersteinmal vorne weg:</p>
<p><strong>Plesk ist sehr sehr anstrengend, ich musste mehrmals die angelegte trac-Subdomain löschen, weil sich Plesk irgendwann nur noch verhaspelt hat und einfach nicht mehr auf .htaccess-Dateien oder vhost.conf &#8211; Dateien reagiert hat.</strong></p>
<p>Also legen wir los. Als erstes solltet Ihr in Plesk eine Subdomain anlegen über die Ihr später euer Trac erreichen wollt. z.B.: http://trac.irgendeine-domain.de<br />
Wenn diese dann über das Netz erreichbar ist, dann legen wir los und müssen ein wenig an den Apache-Konfigurations-Dateien herumschrauben. Das klingt alles allerdings alles komplizierter als es ist.</p>
<p>Um fortzufahren solltet ihr die vorherigen vier Artikel gelesen und durchgearbeitet haben, da wir dort alle notwendigen Pakete installiert haben. Zum schnellen navigieren innerhalb der Ordnerstruktur eures Servers empfehle ich euch noch den MidnightCommander (mc) zu installieren. Damit kann man nämlich nicht nur navigieren, sondern auch sehr sehr einfach editieren, ohne das man sich 500.000 Tastenkombinationen merken muss.</p>
<p>Nun geht ihr in den Ordner in dem die Konfigurationsdateien für die virtuellen Hosts liegen</p>
<pre><code>cd /srv/www/vhosts/irgendeine-domain.de/subdomains/trac/conf</code></pre>
<p>und bearbeitet die datei vhost.conf (im MidnightCommander die Datei auswählen und F4 drücken)</p>
<p>In die Datei kommt folgender Inhalt (Einfügen im MC-Editor: Umsch+Einf) :</p>
<pre><code>&amp;lt;Location /&amp;gt;
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnv /opt/trac/projects/meinProjekt
   PythonOption TracUriRoot /
&amp;lt;/Location&amp;gt;
&amp;lt;Location /login&amp;gt;
  AuthType Basic
  AuthName "trac"
  AuthUserFile /opt/trac/passwordfiles/meinProjekt.htpasswd
  Require valid-user
&amp;lt;/Location&amp;gt;</code></pre>
<p>Mit F10 kann der Editor wieder geschlossen werden und die Speichern-Abrage sollte mit Yes bestätigt werden.<br />
In der drittletzten Zeile steht AuthUserFile /opt/trac/passwordfiles/meinProjekt.htpasswd</p>
<p>Diese bezieht sich auf eine Datei, die wir noch nicht erstellt haben und dient dazu Logins zum Administrationsbereich von Trac zu speichern.<br />
Wir erstellen nun einen Login und kreieren dabei gleichzeitig die Passwort-Datei.</p>
<p>Befehle:</p>
<pre><code>mkdir /opt/trac/passwordfiles
htpasswd2 -c /opt/trac/passwordfiles/meinProjekt.htpasswd username</code></pre>
<p>Für username tragt ihr bitte einen benutzername ein, überlegt euch ein passwort und tragt es zweimal ein. Achtung, unter Linux ist es nicht üblich für Passwörter Sternchen(*) oder sonstige Zeichen anzuzeigen.<br />
Denkt daran die Passwörter am besten gleich in <a title="Keepass - Tool" href="http://www.jan-fanslau.de/tools/keepass-der-passwort-safe-schlechthin/" target="_blank">Keepass</a> zu speichern.</p>
<p>Jetzt sollte Apache eigentlich fertig konfiguriert sein.</p>
<p>Mit folgenden Befehlen werden die virtuellen Hosts rekonfiguriert, also die eben geänderte vhost.conf neu eingelesen und danach der Apache-Server neugestartet:</p>
<pre><code>/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=irgendeine-domain.de
httpd2 -k restart</code></pre>
<p>Was noch fehlt ist der Administratorzugang für den user den wir weiter oben angelegt haben. Trac muss ja wissen welcher Benutzer auf die Adminoberfläche zugreifen darf. Der Befehl hierfür lautet:</p>
<pre><code>trac-admin /opt/trac/projects/meinProject permission add username</code></pre>
<p>Wobei username hier durch den username ersetzt werden muss, den wir mit htpasswd2 angelegt haben.</p>
<p>Der Zugriff auf Trac über trac.irgendeine-domain.de sollte nun funktionieren. Über den Link &#8220;login&#8221; öffnet sich jetzt ein Login-Fenster und nach eingeben von Benutzername und Passwort ist der Zugang zum Trac-Admin-Part frei.</p>
<p>Im nächsten Schritt werden wir Trac aus der Single-Projekt-Verdammung ziehen und schauen, wie Trac sich mit mehren Projekten betreiben lässt.</p>
<h3>Artikelübersicht:</h3>
<p><a title="Installation SVN unter SUSE" href="http://www.jan-fanslau.de/trac/installation-svn-unter-suse/" target="_self">1. Installation SVN</a></p>
<p><a title="Installation Python unter SUSE" href="http://www.jan-fanslau.de/trac/installation-python-unter-suse-103" target="_self">2. Installation Python</a></p>
<p><a title="Installation Trac" href="http://www.jan-fanslau.de/trac/installation-von-trac-unter-suse-103/">3. Installation Trac</a></p>
<p><a title="Trac Umgebung unter SUSE" href="http://www.jan-fanslau.de/trac/erstellen-einer-trac-umgebung-unter-suse/" target="_self">4. Erstellen einer Umgebung für ein Trac-Projekt</a></p>
<p><a title="Trac auf Apache aufsetzen unter Suse" href="http://www.jan-fanslau.de/trac/trac-auf-apache-aufsetzen-unter-suse/" target="_self">5. Trac auf Apache aufseten</a></p>
<p>6. Trac für mehrere Projekte (in Planung)</p>
<p>7. Trac Usermanagement mit dem TracAccountManager (in Planung)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jan-fanslau.de/trac/trac-auf-apache-aufsetzen-unter-suse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

