<?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>ebene7</title>
	<atom:link href="http://blog.ebene7.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ebene7.com</link>
	<description></description>
	<lastBuildDate>Thu, 02 Feb 2012 15:32:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>CakePHP: Model innerhalb eines anderen Models verwenden</title>
		<link>http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/</link>
		<comments>http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:30:55 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Snippets]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3431</guid>
		<description><![CDATA[Um ein Model im Cake-Framework innerhalb eines anderen Models nutzen zu können, muss dieses offensichtlich manuell instantiiert werden. &#60;?php App::import('model','Bar'); class Foo extends AppModel { public $Bar;            public function __construct($id = false, $table = null, $ds &#8230; <a href="http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um ein Model im Cake-Framework innerhalb eines anderen Models nutzen zu können, muss dieses offensichtlich manuell instantiiert werden.</p>
<pre>&lt;?php
App::import('model','Bar');

class Foo extends AppModel {
  public $Bar;
        
  public function __construct($id = false, $table = null, $ds = null) {
    parent::__construct($id, $table, $ds);
    $this-&gt;Bar = new Bar();
  }      
}</pre>
<p>Danach wie gewohnt aufrufen.</p>
<pre>&lt;?php
$this-&gt;Bar-&gt;find();</pre>
<p>&nbsp;</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-comfeed">
			<a href="http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/feed" rel="nofollow" class="external" title="Abonniere die Kommentare für diesen Beitrag">Abonniere die Kommentare für diesen Beitrag</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden+-+http://bit.ly/AjD6YU+&amp;source=shareaholic" rel="nofollow" class="external" title="Twittere diesen Artikel!">Twittere diesen Artikel!</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/&amp;t=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Facebook">Empfehle diesen Artikel bei Facebook</a>
		</li>
		<li class="sexy-misterwong">
			<a href="http://www.mister-wong.de/addurl/?bm_url=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/&amp;bm_description=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Füge hinzu zu Mister Wong">Füge hinzu zu Mister Wong</a>
		</li>
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/&amp;title=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden" rel="nofollow" class="external" title="Empfehle diesen Artikel bei del.icio.us">Empfehle diesen Artikel bei del.icio.us</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Technorati">Empfehle diesen Artikel bei Technorati</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/&amp;title=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden" rel="nofollow" class="external" title="Bei StumbleUpon einstellen">Bei StumbleUpon einstellen</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/&amp;title=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/&amp;t=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden" rel="nofollow" class="external" title="Sende dies zu MySpace">Sende dies zu MySpace</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/&amp;title=CakePHP%3A+Model+innerhalb+eines+anderen+Models+verwenden&amp;summary=Um%20ein%20Model%20im%20Cake-Framework%20innerhalb%20eines%20anderen%20Models%20nutzen%20zu%20k%C3%B6nnen%2C%20muss%20dieses%20offensichtlich%20manuell%20instantiiert%20werden.%0D%0A%26lt%3B%3Fphp%0D%0AApp%3A%3Aimport%28%27model%27%2C%27Bar%27%29%3B%0D%0A%0D%0Aclass%20Foo%20extends%20AppModel%20%7B%0D%0A%20%20public%20%24Bar%3B%0D%0A%C2%A0%C2%A0%20%C2%A0%C2%A0%C2%A0%20%C2%A0%0D%0A%C2%A0%20public%20function%20__construct%28%24id%20%3D%20false%2C%20%24table%20%3D%20null%2C%20&amp;source=ebene7" rel="nofollow" class="external" title="Empfehle diesen Artikel bei LinkedIn">Empfehle diesen Artikel bei LinkedIn</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://blog.ebene7.com/2012/02/02/cakephp-model-innerhalb-eines-anderen-models-verwenden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Closures in PHP</title>
		<link>http://blog.ebene7.com/2012/01/30/closures-in-php/</link>
		<comments>http://blog.ebene7.com/2012/01/30/closures-in-php/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 05:00:58 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Callback]]></category>
		<category><![CDATA[Closure]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[SPL]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3364</guid>
		<description><![CDATA[Ab der Version 5.3 bietet auch PHP, wie auch schon viele andere Sprachen, die Möglichkeit mit anonymen Funktionen zu arbeiten. Dadurch können z.B. Callback-Funktionen zur Filterung o.Ä. implementiert werden, ohne dass man sich dafür tolle Namen ausdenken muss. Aber was &#8230; <a href="http://blog.ebene7.com/2012/01/30/closures-in-php/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ab der Version 5.3 bietet auch PHP, wie auch schon viele andere Sprachen, die Möglichkeit mit <a href="http://www.php.net/manual/de/functions.anonymous.php" target="_blank">anonymen Funktionen</a> zu arbeiten. Dadurch können z.B. Callback-Funktionen zur Filterung o.Ä. implementiert werden, ohne dass man sich dafür tolle Namen ausdenken muss. Aber was kann man damit noch machen?</p>
<p><span id="more-3364"></span>Bislang musste man Callback-Funktionen gewöhnlich definieren, bevor man sie verwenden konnte.</p>
<pre>&lt;?php
function myCallback($output) {
  return '##' . $output . '##';
}

echo call_user_func('myCallback', 'Hallo Welt');

// Ausgabe:
##Hallo Welt##</pre>
<p>Als Closure geschrieben sähe das dann so aus:</p>
<pre>&lt;?php
echo call_user_func(
  function($output) { return '##' . $output . '##'; },
  'Hallo Welt');

// Ausgabe:
##Hallo Welt##</pre>
<p>Zugegeben, dieses Beispiel hätte man durch einfache Stringverkettung wesentlich einfacher schreiben können und eigentlich war das mit <a href="http://de2.php.net/manual/de/function.create-function.php" target="_blank">create_function()</a> auch schon unter PHP4 möglich.</p>
<p>Wir können die Funktion natürlich wie früher auch schon in einer Variablen speichern und dann weiter verwenden.</p>
<pre>&lt;?php
$myFunction = function($output) {
  return '##' . $output . '##';
};

echo call_user_func($myFunction, 'Hallo Welt') . '&lt;br/&gt;';
echo $myFunction('Hallo Welt') . '&lt;br/&gt;';

//Ausgabe:
##Hallo Welt##
##Hallo Welt##</pre>
<p>Und auch das ist ja noch nichts Neues. Mit Closures haben wir nun aber auch die Möglichkeit, teile unserer &#8220;Umgebung&#8221; zum Zeitpunkt der Funktionsdefinition zu konservieren.</p>
<p>Dazu müssen wir nur die Definition etwas erweitern.</p>
<pre>&lt;?php
$before = '&gt;';
$after = '&lt;';

$myFunction = function($output) use ($before, $after) {
    return $before . $output . $after;
};

echo $myFunction('Hallo Welt') . '&lt;br/&gt;';

//Ausgabe:
&gt;Hallo Welt&lt;</pre>
<p>An dieser Stelle frieren wir mit &#8220;use&#8221; sozusagen die Werte für $before und $after innerhalb unserer Funktion ein. Spätere Änderungen der beiden Variablen haben keine Auswirkungen auf die Funktion.</p>
<pre>$before = 'foo';
$after = 'bar';
echo $myFunction('Hallo Welt') . '&lt;br/&gt;';

//Ausgabe:
&gt;Hallo Welt&lt;</pre>
<p>In PHP wir mittlerweile sehr viel mit Standardinterfaces und -klassen (SPL) abgedeckt und so ist es auch in diesem Fall. In der Variablen $myFunction ist ein Objekt vom Typ &#8220;<a href="http://de2.php.net/manual/en/class.closure.php" target="_blank">Closure</a>&#8221; gespeichert.</p>
<pre>&lt;?php
echo '&lt;pre&gt;' . print_r($myFunction, true) . '&lt;/pre&gt;';

//Ausgabe:
Closure Object
(
  [static] =&gt; Array
    (
      [before] =&gt; &gt;
      [after] =&gt; &lt;
    )
  [parameter] =&gt; Array
    (
      [$output] =&gt;
    )
)</pre>
<p>Will man eigene Objekte wie Funktionen aufrufen, dann geht das mit der magischen Methode <a href="http://de2.php.net/manual/de/language.oop5.magic.php#language.oop5.magic.invoke" target="_blank">__invoke()</a>, die auch hier verwendet wird.</p>
<p>Anfangs erwähnte ich, dass Closure-Callbacks zur Filterung, aber auch zur Manipulation von Array verwendet werden können.</p>
<p>Wenn nur der Inhalt interessant ist, dann kommen wir mit array_map() und einem Parameter aus.</p>
<pre>&lt;?php
$values = array(
  array(
    'a' =&gt; array(
      'b' =&gt; 'foo'
    )
  ),
  array(
    'a' =&gt; array(
      'b' =&gt; 'bar'
    )
  ),
);

$filtered = array_map(
  function ($item) { return $item['a']['b']; },
  $values
);
echo '&lt;pre&gt;' . print_r($filtered, true) . '&lt;/pre&gt;';

// Ausgabe:
Array
(
  [0] =&gt; foo
  [1] =&gt; bar
)</pre>
<p>Wollen wir aber Werte im Array in Abhängigkeit zum Key/Index verändern, dann geht das mit array_walk und einem zweiten Parameter im Callback. Bei beiden kann natürlich auch &#8220;use&#8221; verwendet werden. Der Parameter $value wird dabei als Referenz übernommen.</p>
<pre>$values = array(
  'a' =&gt; 100,
  'b' =&gt; 200,
  'c' =&gt; 300,
);

array_walk(
  $values,
  function (&amp;$value, $key) {
    if ('b' == $key) {
      $value = 42;
    }
  }
);

echo '&lt;pre&gt;' . print_r($values, true) . '&lt;/pre&gt;';

// Ausgabe:
Array
(
  [a] =&gt; 100
  [b] =&gt; 42
  [c] =&gt; 300
)</pre>
<p>Ich hoffe, dass ich ein wenig Licht ins Dunkel bringen konnte und &#8220;Closure&#8221; nun kein geheimnisvolles Zauberwort mehr ist.</p>
<p>Wenn ihr noch gute Ergänzungen oder Anwendungbeispiele habt, dann immer her damit und bitte fleissig kommentieren. <img src='http://blog.ebene7.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-comfeed">
			<a href="http://blog.ebene7.com/2012/01/30/closures-in-php/feed" rel="nofollow" class="external" title="Abonniere die Kommentare für diesen Beitrag">Abonniere die Kommentare für diesen Beitrag</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Closures+in+PHP+-+http://bit.ly/wcKw56+&amp;source=shareaholic" rel="nofollow" class="external" title="Twittere diesen Artikel!">Twittere diesen Artikel!</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.ebene7.com/2012/01/30/closures-in-php/&amp;t=Closures+in+PHP" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Facebook">Empfehle diesen Artikel bei Facebook</a>
		</li>
		<li class="sexy-misterwong">
			<a href="http://www.mister-wong.de/addurl/?bm_url=http://blog.ebene7.com/2012/01/30/closures-in-php/&amp;bm_description=Closures+in+PHP&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Füge hinzu zu Mister Wong">Füge hinzu zu Mister Wong</a>
		</li>
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://blog.ebene7.com/2012/01/30/closures-in-php/&amp;title=Closures+in+PHP" rel="nofollow" class="external" title="Empfehle diesen Artikel bei del.icio.us">Empfehle diesen Artikel bei del.icio.us</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.ebene7.com/2012/01/30/closures-in-php/" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Technorati">Empfehle diesen Artikel bei Technorati</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.ebene7.com/2012/01/30/closures-in-php/&amp;title=Closures+in+PHP" rel="nofollow" class="external" title="Bei StumbleUpon einstellen">Bei StumbleUpon einstellen</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.ebene7.com/2012/01/30/closures-in-php/&amp;title=Closures+in+PHP" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://blog.ebene7.com/2012/01/30/closures-in-php/&amp;t=Closures+in+PHP" rel="nofollow" class="external" title="Sende dies zu MySpace">Sende dies zu MySpace</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.ebene7.com/2012/01/30/closures-in-php/&amp;title=Closures+in+PHP&amp;summary=Ab%20der%20Version%205.3%20bietet%20auch%20PHP%2C%20wie%20auch%20schon%20viele%20andere%20Sprachen%2C%20die%20M%C3%B6glichkeit%20mit%20anonymen%20Funktionen%20zu%20arbeiten.%20Dadurch%20k%C3%B6nnen%20z.B.%20Callback-Funktionen%20zur%20Filterung%20o.%C3%84.%20implementiert%20werden%2C%20ohne%20dass%20man%20sich%20daf%C3%BCr%20tolle%20Namen%20ausdenken%20muss.%20Aber%20was%20kann%20man%20damit%20noch%20machen&amp;source=ebene7" rel="nofollow" class="external" title="Empfehle diesen Artikel bei LinkedIn">Empfehle diesen Artikel bei LinkedIn</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://blog.ebene7.com/2012/01/30/closures-in-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fundsachen KW04/2012</title>
		<link>http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/</link>
		<comments>http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 11:00:31 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Fundsachen]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Online Tool]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Responsive Design]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3374</guid>
		<description><![CDATA[Hier die kleine Sammlung von interessanten Seiten, die ich in letzter Zeit gefunden habe. Onlinetool zum (Neu-)Formatieren von JavaScript-Code http://jsbeautifier.org/ PHP Benchmark gibt einen Überblick über die Performance vergleichbarer Operationen http://www.phpbench.com/ Responsive Design/Layout-Tester (siehe auch meinen Neujahrsartikel ) http://mattkersley.com/responsive/ Abonniere &#8230; <a href="http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hier die kleine Sammlung von interessanten Seiten, die ich in letzter Zeit gefunden habe.</p>
<ul>
<li>Onlinetool zum (Neu-)Formatieren von JavaScript-Code<br />
<a href="http://jsbeautifier.org/" target="_blank">http://jsbeautifier.org/</a></li>
<li>PHP Benchmark gibt einen Überblick über die Performance vergleichbarer Operationen<br />
<a href="http://www.phpbench.com/" target="_blank">http://www.phpbench.com/</a></li>
<li>Responsive Design/Layout-Tester (siehe auch meinen <a href="http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/">Neujahrsartikel</a> <img src='http://blog.ebene7.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )<br />
<a href="http://mattkersley.com/responsive/" target="_blank">http://mattkersley.com/responsive/</a></li>
</ul>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-comfeed">
			<a href="http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/feed" rel="nofollow" class="external" title="Abonniere die Kommentare für diesen Beitrag">Abonniere die Kommentare für diesen Beitrag</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Fundsachen+KW04%2F2012+-+UNKNOWN_ERROR+&amp;source=shareaholic" rel="nofollow" class="external" title="Twittere diesen Artikel!">Twittere diesen Artikel!</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/&amp;t=Fundsachen+KW04%2F2012" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Facebook">Empfehle diesen Artikel bei Facebook</a>
		</li>
		<li class="sexy-misterwong">
			<a href="http://www.mister-wong.de/addurl/?bm_url=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/&amp;bm_description=Fundsachen+KW04%2F2012&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Füge hinzu zu Mister Wong">Füge hinzu zu Mister Wong</a>
		</li>
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/&amp;title=Fundsachen+KW04%2F2012" rel="nofollow" class="external" title="Empfehle diesen Artikel bei del.icio.us">Empfehle diesen Artikel bei del.icio.us</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Technorati">Empfehle diesen Artikel bei Technorati</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/&amp;title=Fundsachen+KW04%2F2012" rel="nofollow" class="external" title="Bei StumbleUpon einstellen">Bei StumbleUpon einstellen</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/&amp;title=Fundsachen+KW04%2F2012" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/&amp;t=Fundsachen+KW04%2F2012" rel="nofollow" class="external" title="Sende dies zu MySpace">Sende dies zu MySpace</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/&amp;title=Fundsachen+KW04%2F2012&amp;summary=Hier%20die%20kleine%20Sammlung%20von%20interessanten%20Seiten%2C%20die%20ich%20in%20letzter%20Zeit%20gefunden%20habe.%0D%0A%0D%0A%09Onlinetool%20zum%20%28Neu-%29Formatieren%20von%20JavaScript-Code%0D%0Ahttp%3A%2F%2Fjsbeautifier.org%2F%0D%0A%09PHP%20Benchmark%20gibt%20einen%20%C3%9Cberblick%20%C3%BCber%20die%20Performance%20vergleichbarer%20Operationen%0D%0Ahttp%3A%2F%2Fwww.phpbench.com%2F%0D%0A%09Responsive%20D&amp;source=ebene7" rel="nofollow" class="external" title="Empfehle diesen Artikel bei LinkedIn">Empfehle diesen Artikel bei LinkedIn</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://blog.ebene7.com/2012/01/27/fundsachen-kw04-2012/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TemplateMethod vs. method_exists()-Prüfung</title>
		<link>http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/</link>
		<comments>http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 07:00:07 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Entwurfsmuster]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Template Method]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3295</guid>
		<description><![CDATA[Das Entwurfsmuster TemplateMethod kennen und nutzen sicherlich viele von euch. Spätestens, wenn irgendein Framework im Einsatz ist, hat man in der Regel damit zu tun, um z.B. an verschiedenen Stellen im Code eigene Funktionen in einen Ablauf einzuhängen. Das Prinzip &#8230; <a href="http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Das Entwurfsmuster <a href="http://de.wikipedia.org/wiki/Template_Method" target="_blank">TemplateMethod</a> kennen und nutzen sicherlich viele von euch. Spätestens, wenn irgendein Framework im Einsatz ist, hat man in der Regel damit zu tun, um z.B. an verschiedenen Stellen im Code eigene Funktionen in einen Ablauf einzuhängen.<span id="more-3295"></span></p>
<p>Das Prinzip ist einfach: in der (abstrakten) Basisklasse wird eine leere Methode definiert, die durch eine konkrete Klasse überschrieben werden kann.</p>
<p>Der Vorteil ist recht offensichtlich. Die Methode kann ohne vorherige Prüfung verwendet werden und das spart an vielen Stellen unnötigen Code. Aus meinem ästhetischem Empfinden der richtige Weg.</p>
<p>Aber auch den anderen Weg habe ich auch schon desöfteren gesehen und mein Bauchgefühl hat ja auch nicht immer recht. Vielleicht ist der schöne Weg ja auch der langsamere?</p>
<p>Gefühl ist gut, Zahlen sind besser! Also habe ich schnell drei Testklassen geschrieben und probiere die verschiedenen Möglichkeiten durch.</p>
<p>Variante 1: Wir verlassen uns darauf, dass die Methode aufgerufen werden kann.</p>
<pre>&lt;?php
class Test1 {
    public function machWas() {
        $this-&gt;machWasAnderes();
    }

    public function machWasAnderes() {
    }
}</pre>
<p>Variante 2: Wir prüfen, ob die Methode existiert und finden nichts.</p>
<pre>&lt;?php
class Test2 {
    public function machWas() {
        if (method_exists($this, 'machWasAnderes')) {
            $this-&gt;machWasAnderes();
        }
    }
}</pre>
<p>Variante 3: Wir prüfen, ob die Methode existiert und rufen sie auf.</p>
<pre>&lt;?php
class Test3 {
    public function machWas() {
        if (method_exists($this, 'machWasAnderes')) {
            $this-&gt;machWasAnderes();
        }
    }

    public function machWasAnderes() {
    }
}</pre>
<p>Zum Vergleich habe ich das folgende Script verwendet.</p>
<pre>&lt;?php
foreach (array('Test1', 'Test2', 'Test3') as $class) {
    $object = new $class();
    $start = microtime(true);

    for($i=0; $i&lt;100000; $i++) {
        $object-&gt;machWas();
    }
    echo $class . ' = ' . round(microtime(true) - $start, 5) . '&lt;br/&gt;';
}</pre>
<p>Ausgabe:</p>
<pre>Test1 = 0.44767
Test2 = 0.48588
Test3 = 0.70881</pre>
<p>In mehreren Durchläufen waren &#8220;Test1&#8243; und &#8220;Test2&#8243; immer fast gleich auf, nur &#8220;Test3&#8243; brauchte etwas länger, weil in der Klasse die Prüfung und die Ausführung der Methode stattfindet.</p>
<p>Fazit: Der Einsatz von Schablonenmethoden lohnt sich doppelt, da der Code übersichtlich bleibt und auch die Geschwindigkeit etwas besser ist.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-comfeed">
			<a href="http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/feed" rel="nofollow" class="external" title="Abonniere die Kommentare für diesen Beitrag">Abonniere die Kommentare für diesen Beitrag</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung+-+http://bit.ly/yTalLB+&amp;source=shareaholic" rel="nofollow" class="external" title="Twittere diesen Artikel!">Twittere diesen Artikel!</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/&amp;t=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Facebook">Empfehle diesen Artikel bei Facebook</a>
		</li>
		<li class="sexy-misterwong">
			<a href="http://www.mister-wong.de/addurl/?bm_url=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/&amp;bm_description=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Füge hinzu zu Mister Wong">Füge hinzu zu Mister Wong</a>
		</li>
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/&amp;title=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung" rel="nofollow" class="external" title="Empfehle diesen Artikel bei del.icio.us">Empfehle diesen Artikel bei del.icio.us</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Technorati">Empfehle diesen Artikel bei Technorati</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/&amp;title=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung" rel="nofollow" class="external" title="Bei StumbleUpon einstellen">Bei StumbleUpon einstellen</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/&amp;title=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/&amp;t=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung" rel="nofollow" class="external" title="Sende dies zu MySpace">Sende dies zu MySpace</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/&amp;title=TemplateMethod+vs.+method_exists%28%29-Pr%C3%BCfung&amp;summary=Das%20Entwurfsmuster%20TemplateMethod%20kennen%20und%20nutzen%20sicherlich%20viele%20von%20euch.%20Sp%C3%A4testens%2C%20wenn%20irgendein%20Framework%20im%20Einsatz%20ist%2C%20hat%20man%20in%20der%20Regel%20damit%20zu%20tun%2C%20um%20z.B.%20an%20verschiedenen%20Stellen%20im%20Code%20eigene%20Funktionen%20in%20einen%20Ablauf%20einzuh%C3%A4ngen.%0D%0A%0D%0ADas%20Prinzip%20ist%20einfach%3A%20in%20der%20%28abstrak&amp;source=ebene7" rel="nofollow" class="external" title="Empfehle diesen Artikel bei LinkedIn">Empfehle diesen Artikel bei LinkedIn</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://blog.ebene7.com/2012/01/11/templatemethod-vs-method-exists-pruefung/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CouchDB jQuery Plugin Referenz</title>
		<link>http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/</link>
		<comments>http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 09:00:55 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3338</guid>
		<description><![CDATA[Vor längerer Zeit hatte ich ja schon verschiedene Artikel zur Dokumentation für CouchDB geschrieben. Jetzt habe ich noch eine englische Referenz von Bradley Holt für das CouchDB jQuery Plugin gefunden. Wer also mal clientseitig mit der Datenbank sprechen will oder muss, &#8230; <a href="http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor längerer Zeit hatte ich ja schon verschiedene Artikel zur <a href="http://blog.ebene7.com/kategorie/entwicklung/datenbank/couchdb/">Dokumentation für CouchDB</a> geschrieben. Jetzt habe ich noch eine englische Referenz von Bradley Holt für das <a href="http://bradley-holt.com/2011/07/couchdb-jquery-plugin-reference/" target="_blank">CouchDB jQuery Plugin</a> gefunden.</p>
<p>Wer also mal clientseitig mit der Datenbank sprechen will oder muss, dem bietet die Referenz einen einfachen Einstieg.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-comfeed">
			<a href="http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/feed" rel="nofollow" class="external" title="Abonniere die Kommentare für diesen Beitrag">Abonniere die Kommentare für diesen Beitrag</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=CouchDB+jQuery+Plugin+Referenz+-+http://bit.ly/zBPyGq+&amp;source=shareaholic" rel="nofollow" class="external" title="Twittere diesen Artikel!">Twittere diesen Artikel!</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/&amp;t=CouchDB+jQuery+Plugin+Referenz" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Facebook">Empfehle diesen Artikel bei Facebook</a>
		</li>
		<li class="sexy-misterwong">
			<a href="http://www.mister-wong.de/addurl/?bm_url=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/&amp;bm_description=CouchDB+jQuery+Plugin+Referenz&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Füge hinzu zu Mister Wong">Füge hinzu zu Mister Wong</a>
		</li>
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/&amp;title=CouchDB+jQuery+Plugin+Referenz" rel="nofollow" class="external" title="Empfehle diesen Artikel bei del.icio.us">Empfehle diesen Artikel bei del.icio.us</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Technorati">Empfehle diesen Artikel bei Technorati</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/&amp;title=CouchDB+jQuery+Plugin+Referenz" rel="nofollow" class="external" title="Bei StumbleUpon einstellen">Bei StumbleUpon einstellen</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/&amp;title=CouchDB+jQuery+Plugin+Referenz" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/&amp;t=CouchDB+jQuery+Plugin+Referenz" rel="nofollow" class="external" title="Sende dies zu MySpace">Sende dies zu MySpace</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/&amp;title=CouchDB+jQuery+Plugin+Referenz&amp;summary=Vor%20l%C3%A4ngerer%20Zeit%20hatte%20ich%20ja%20schon%20verschiedene%20Artikel%20zur%20Dokumentation%20f%C3%BCr%20CouchDB%20geschrieben.%20Jetzt%20habe%20ich%20noch%20eine%20englische%20Referenz%20von%C2%A0Bradley%20Holt%20f%C3%BCr%20das%20CouchDB%20jQuery%20Plugin%20gefunden.%0D%0A%0D%0AWer%20also%20mal%20clientseitig%20mit%20der%20Datenbank%20sprechen%20will%20oder%20muss%2C%20dem%20bietet%20die%20Referen&amp;source=ebene7" rel="nofollow" class="external" title="Empfehle diesen Artikel bei LinkedIn">Empfehle diesen Artikel bei LinkedIn</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://blog.ebene7.com/2012/01/05/couchdb-jquery-plugin-referenz/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Einfache Absicherung von Parametern</title>
		<link>http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/</link>
		<comments>http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 13:30:29 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Parameter]]></category>
		<category><![CDATA[Prüfsumme]]></category>
		<category><![CDATA[Webservice]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3325</guid>
		<description><![CDATA[Für verschiedene Zwecke ist es sinnvoll, eine Liste mit Werten bei der Übertragung mit einem Hashwert abzusichern. Dieser Wert ist eine Prüfsumme, die aus den einzelnen Werten und einer geheimen Zeichenkette (salt) gebildet wird. Beide Seiten, also sowohl der Sender &#8230; <a href="http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Für verschiedene Zwecke ist es sinnvoll, eine Liste mit Werten bei der Übertragung mit einem Hashwert abzusichern. Dieser Wert ist eine Prüfsumme, die aus den einzelnen Werten und einer geheimen Zeichenkette (salt) gebildet wird.<span id="more-3325"></span></p>
<p>Beide Seiten, also sowohl der Sender als auch der Empfänger, kennen diese Zeichenkette und erzeugen auf die selbe Art die Prüfsumme.</p>
<p>Durch die Prüfsumme soll verhindert werden, dass die Daten bei der Übertragung durch Fremde manipuliert werden können. In dem Fall würde der Hashwert nicht mehr stimmen.</p>
<p>Eine sehr einfache Funktion normalisiert das Array durch Sortierung und bildet dann daraus den Hashwert mit einer Rückruffunktion (callback).</p>
<pre>&lt;?php
/**
 * Calculate hashvalue for params
 *
 * @param    array $params
 * @param    string $salt
 * @param    string $callback OPTIONAL (default='sha1')
 * @return   string
 */
function getParamsHash(array $params, $salt, $callback = 'sha1') {
    $params['__SALT__'] = $salt;
    ksort($params);
    return call_user_func($callback, implode(',', $params));
}

$params1 = array(
    'key1' =&gt; 'value1',
    'key2' =&gt; 'value2'
);

$params2 = array(
    'key2' =&gt; 'value2',
    'key1' =&gt; 'value1'
);

$salt = 'blablubb';

echo 'p1-hash: ' . getParamsHash($params1, $salt, 'md5') . '&lt;br/&gt;';
echo 'p2-hash: ' . getParamsHash($params2, $salt, 'md5') . '&lt;br/&gt;';</pre>
<p>Die Ausgabe ist unabhängig von der Reihenfolge der Werte im Array identisch.</p>
<pre>p1-hash: 3e71eda7b8539791ea2fd8f159b5e57b
p2-hash: 3e71eda7b8539791ea2fd8f159b5e57b</pre>
<p>Natürlich kann die Funktion auch auf andere Art den Wert berechnen, nun muss das dann wieder auf beiden Seiten gleich sein.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-comfeed">
			<a href="http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/feed" rel="nofollow" class="external" title="Abonniere die Kommentare für diesen Beitrag">Abonniere die Kommentare für diesen Beitrag</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Einfache+Absicherung+von+Parametern+-+http://bit.ly/wzdF5L+&amp;source=shareaholic" rel="nofollow" class="external" title="Twittere diesen Artikel!">Twittere diesen Artikel!</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/&amp;t=Einfache+Absicherung+von+Parametern" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Facebook">Empfehle diesen Artikel bei Facebook</a>
		</li>
		<li class="sexy-misterwong">
			<a href="http://www.mister-wong.de/addurl/?bm_url=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/&amp;bm_description=Einfache+Absicherung+von+Parametern&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Füge hinzu zu Mister Wong">Füge hinzu zu Mister Wong</a>
		</li>
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/&amp;title=Einfache+Absicherung+von+Parametern" rel="nofollow" class="external" title="Empfehle diesen Artikel bei del.icio.us">Empfehle diesen Artikel bei del.icio.us</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Technorati">Empfehle diesen Artikel bei Technorati</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/&amp;title=Einfache+Absicherung+von+Parametern" rel="nofollow" class="external" title="Bei StumbleUpon einstellen">Bei StumbleUpon einstellen</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/&amp;title=Einfache+Absicherung+von+Parametern" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/&amp;t=Einfache+Absicherung+von+Parametern" rel="nofollow" class="external" title="Sende dies zu MySpace">Sende dies zu MySpace</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/&amp;title=Einfache+Absicherung+von+Parametern&amp;summary=F%C3%BCr%20verschiedene%20Zwecke%20ist%20es%20sinnvoll%2C%20eine%20Liste%20mit%20Werten%20bei%20der%20%C3%9Cbertragung%20mit%20einem%20Hashwert%20abzusichern.%20Dieser%20Wert%20ist%20eine%20Pr%C3%BCfsumme%2C%20die%20aus%20den%20einzelnen%20Werten%20und%20einer%20geheimen%20Zeichenkette%20%28salt%29%20gebildet%20wird.%0D%0A%0D%0ABeide%20Seiten%2C%20also%20sowohl%20der%20Sender%20als%20auch%20der%20Empf%C3%A4nger%2C%20ke&amp;source=ebene7" rel="nofollow" class="external" title="Empfehle diesen Artikel bei LinkedIn">Empfehle diesen Artikel bei LinkedIn</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://blog.ebene7.com/2012/01/04/einfache-absicherung-von-parametern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gesundes neues Jahr und zwei Jahre ebene7!</title>
		<link>http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/</link>
		<comments>http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 19:00:43 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Responsive Design]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3268</guid>
		<description><![CDATA[Aus aktuellem Anlass wünsche ich euch ein gesundes und erfolgreiches Neujahr. Wie ihr vielleicht mitbekommen habt, gibt es ein paar Neuigkeiten. Die beste voran, ebene7 feierte nun schon den zweiten Geburtstag und als Geschenk gab es ein neues Theme und &#8230; <a href="http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aus aktuellem Anlass wünsche ich euch ein gesundes und erfolgreiches Neujahr. Wie ihr vielleicht mitbekommen habt, gibt es ein paar Neuigkeiten. Die beste voran, ebene7 feierte nun schon den zweiten Geburtstag und als Geschenk gab es ein neues Theme und auch ein paar neue Funktionen.</p>
<p><span id="more-3268"></span>Wie zu jedem Jahreswechsel und/oder Geburtstag wird oft das vergangene Jahr resümiert und man macht Pläne für das Nächste. Ohne mich groß in langweiligen Statistiken zu verlieren kann man sagen, dass es hier im Blog recht ruhig war und ich im Vergleich zum Vorjahr wesentlich weniger Artikel verfasst habe.</p>
<p>Der Grund dafür war ein recht turbulentes Jahr und leider zu wenig Zeit zum Schreiben. Dafür bekam das Blog sehr viel Aufmerksamkeit durch diverse Spambots und teilweise mehre Tausend Spamkommentare pro Monat.</p>
<p>Wie ihr sehen könnt, gibt es ein neues Design und ich hoffe es gefällt euch. Als Basis habe ich das freie Theme <a href="http://www.elmastudio.de/wordpress-themes/yoko/" target="_blank">Yoko</a> von <a href="http://www.elmastudio.de/" target="_blank">Elmastudio</a> verwendet. Es bietet unter Anderem responsive layout, d.h. das Layout der Seite passt sich dem Format des jeweiligen Anzeigegerätes an und ist dadurch sowohl auf einem großen Monitor, wie auch auf einem Handy gut zu lesen.</p>
<p>Wer es sich einfach mal im Vergleich ansehen will oder gerade an der eigenen Seite bastelt, dem empfehle ich das <a href="http://mattkersley.com/responsive/?http://blog.ebene7.com" target="_blank">Responsive Design Testing Tool</a> von <a href="http://mattkersley.com/" target="_blank">Matt Kersley</a>.</p>
<p>Technisch habe ich nur ein paar Kleinigkeiten verändert, so werden z.B. statische Inhalte nun &#8220;keksfrei&#8221; über eine andere Subdomain ausgeliefert. Dazu vielleicht bei Gelegenheit einen Artikel.</p>
<p>Im meinem <a href="http://blog.ebene7.com/2011/12/21/ebene7-auf-twitter/">letzten Artikel in 2010</a> habe ich ja schon darüber berichtet, dass <a href="http://twitter.com/ebene7" target="_blank">ebene7 nun auch auf Twitter</a> zu finden ist, ich bin gespannt, wie es angenommen wird und ob es sich lohnt. Ebenso gibt es eine <a href="https://www.facebook.com/ebene7" target="_blank">ebene7-Seite bei Facebook</a>, die aber noch nicht automatisch gefüttert wird. Das kommt mit einer der nächsten Verbesserungen mit.</p>
<p>Zu guter letzt habe ich eine neue <a href="http://blog.ebene7.com/blogroll/">Blogroll</a> eingebaut, weil ich verschiedene Blogs gerne lese und die Links nicht irgendwo in der Sidebar untergehen sollten. Die <a href="http://www.officetrend.de/2684/wordpress-plugin-blogroll-widget-with-rss-feeds/" target="_blank">Rocking Blogroll</a> lässt sich recht leicht in das Blog integrieren und anpassen. Noch habe ich nicht alle Blogs in die Liste eingepflegt und auch die Bilder dazu fehlen noch.</p>
<p>Noch stehen ein paar Sachen auf meiner ToDo-Liste und es wird sich hier in Zukunft sicher noch mal eine Kleinigkeit verändern.</p>
<p>Ich hoffe die Änderungen gefallen euch und ihr lest und kommentiert auch im dritten Jahr wieder fleissig mit. Ich freue mich auf eure Kommentare, Lob, Kritik und was euch sonst so ein- oder auffällt.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-comfeed">
			<a href="http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/feed" rel="nofollow" class="external" title="Abonniere die Kommentare für diesen Beitrag">Abonniere die Kommentare für diesen Beitrag</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21+-+http://bit.ly/uALW1M+&amp;source=shareaholic" rel="nofollow" class="external" title="Twittere diesen Artikel!">Twittere diesen Artikel!</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/&amp;t=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Facebook">Empfehle diesen Artikel bei Facebook</a>
		</li>
		<li class="sexy-misterwong">
			<a href="http://www.mister-wong.de/addurl/?bm_url=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/&amp;bm_description=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Füge hinzu zu Mister Wong">Füge hinzu zu Mister Wong</a>
		</li>
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/&amp;title=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21" rel="nofollow" class="external" title="Empfehle diesen Artikel bei del.icio.us">Empfehle diesen Artikel bei del.icio.us</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/" rel="nofollow" class="external" title="Empfehle diesen Artikel bei Technorati">Empfehle diesen Artikel bei Technorati</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/&amp;title=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21" rel="nofollow" class="external" title="Bei StumbleUpon einstellen">Bei StumbleUpon einstellen</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/&amp;title=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/&amp;t=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21" rel="nofollow" class="external" title="Sende dies zu MySpace">Sende dies zu MySpace</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/&amp;title=Gesundes+neues+Jahr+und+zwei+Jahre+ebene7%21&amp;summary=Aus%20aktuellem%20Anlass%20w%C3%BCnsche%20ich%20euch%20ein%20gesundes%20und%20erfolgreiches%20Neujahr.%20Wie%20ihr%20vielleicht%20mitbekommen%20habt%2C%20gibt%20es%20ein%20paar%20Neuigkeiten.%20Die%20beste%20voran%2C%20ebene7%20feierte%20nun%20schon%20den%20zweiten%20Geburtstag%20und%20als%20Geschenk%20gab%20es%20ein%20neues%20Theme%20und%20auch%20ein%20paar%20neue%20Funktionen.%0D%0A%0D%0AWie%20zu%20jede&amp;source=ebene7" rel="nofollow" class="external" title="Empfehle diesen Artikel bei LinkedIn">Empfehle diesen Artikel bei LinkedIn</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://blog.ebene7.com/2012/01/01/gesundes-neues-jahr-und-zwei-jahre-ebene7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

