<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2germanfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>SUCKUP.de: Mein IT-Blog</title>
	
	<link>http://suckup.de</link>
	<description>Mein IT-Blog, in welchem ich über Linux, Windows, Programmierung und dem Web 2.0 schreibe, halt alles was ich selber nicht vergessen möchte.</description>
	<lastBuildDate>Sat, 16 Feb 2013 10:51:05 +0000</lastBuildDate>
	<language>de-DE-lite</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/suckup" /><feedburner:info uri="suckup" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>suckup</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsuckup" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><item>
		<title>php – Regular Expression Schnipsel – Escaping “/”</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/Jz9U-SlYeWw/</link>
		<comments>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 09:56:00 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Beispiel]]></category>
		<category><![CDATA[Delimiter #]]></category>
		<category><![CDATA[RegEx]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5405</guid>
		<description><![CDATA[Hier ein kleines Beispiel wie man die Lesbarkeit von RegEx durch den Delimiter  &#8220;#&#8221; verbessern kann &#8230;  
$zeichenkette = "suckup.de Informationen / test, lall / Linux / lall123";
#$suchmuster = "/^[^\/]*\/[^\/]*\/[^\/]*\/[^\/]/";
$suchmuster = "#^[^/]*/[^/]*/[^/]*/[^/]#";
preg_match($suchmuster,  [...]]]></description>
				<content:encoded><![CDATA[<p>Hier ein kleines Beispiel wie man die Lesbarkeit von RegEx durch den <em>Delimiter</em>  &#8220;#&#8221; verbessern kann &#8230; <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre>$zeichenkette = "suckup.de Informationen / test, lall / Linux / lall123";
#$suchmuster = "/^[^\/]*\/[^\/]*\/[^\/]*\/[^\/]/";
$suchmuster = "#^[^/]*/[^/]*/[^/]*/[^/]#";
preg_match($suchmuster, $zeichenkette, $treffer);
print_r($treffer);
</pre>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">Ausgabe:</span></p>
<p>Array ( [0] =&gt; suckup.de Informationen / test, lall / Linux / )</p>

<div class="wp_rp_wrap  wp_rp_plain" id="wp_rp_first"><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5364" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="php &#8211; Regular Expression Schnipsel &#8211; Links aus &lt;a&gt;-Tags" /></a>10. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_title">php &#8211; Regular Expression Schnipsel &#8211; Links aus <a>-Tags</a></li><li data-position="1" data-poid="in-528" data-post-type="none" >9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li><li data-position="2" data-poid="in-839" data-post-type="none" ><a href="http://suckup.de/howto/php-optimieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/20.jpg" alt="PHP optimieren" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/php-optimieren/" class="wp_rp_title">PHP optimieren</a></li><li data-position="3" data-poid="in-5394" data-post-type="none" ><a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/17.jpg" alt="UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;" /></a>24. September 2012 -- <a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_title">UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=Jz9U-SlYeWw:9_Ex2Vu6dUQ:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=Jz9U-SlYeWw:9_Ex2Vu6dUQ:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Jz9U-SlYeWw:9_Ex2Vu6dUQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Jz9U-SlYeWw:9_Ex2Vu6dUQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Jz9U-SlYeWw:9_Ex2Vu6dUQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Jz9U-SlYeWw:9_Ex2Vu6dUQ:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=Jz9U-SlYeWw:9_Ex2Vu6dUQ:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/Jz9U-SlYeWw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/</feedburner:origLink></item>
		<item>
		<title>UTF-8 Byte Order Mark (BOM) in php-Dateien …</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/ODW7owzMjkM/</link>
		<comments>http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/#comments</comments>
		<pubDate>Mon, 24 Sep 2012 14:45:26 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[BOM]]></category>
		<category><![CDATA[Byte_Order_Mark]]></category>
		<category><![CDATA[entfernen]]></category>
		<category><![CDATA[remove]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5394</guid>
		<description><![CDATA[for Linux (shell):
&#160;
BOM aus allen PHP-Dateien entfernen:

find . -type f -iname "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;

&#160;
PHP-Dateien mit BOM anzeigen:

find . -type f -iname "*.php" -exec grep -l $'\xEF\xBB\xBF' {} \;

&#160;
mehr Infos: 
sed &#8211; suckup.de/linux/streameditor-sed
find &#8211;  [...]]]></description>
				<content:encoded><![CDATA[<p>for Linux (shell):</p>
<p>&nbsp;</p>
<p>BOM aus allen PHP-Dateien entfernen:</p>
<p>
<pre>find . -type f -iname "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;</pre>
</p>
<p>&nbsp;</p>
<p>PHP-Dateien mit BOM anzeigen:</p>
<p>
<pre>find . -type f -iname "*.php" -exec grep -l $'\xEF\xBB\xBF' {} \;</pre>
</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">mehr Infos: </span></p>
<p>sed &#8211; <a title="sed" href="http://suckup.de/linux/streameditor-sed/">suckup.de/linux/streameditor-sed</a></p>
<p>find &#8211; <a title="find" href="http://suckup.de/linux/find-linux/">suckup.de/linux/find-linux</a></p>
<p>Byte Order Mark &#8211; <a title="Byte_Order_Mark (BOM)" href="http://de.wikipedia.org/wiki/Byte_Order_Mark" target="_blank">http://de.wikipedia.org/wiki/Byte_Order_Mark</a></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5364" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="php &#8211; Regular Expression Schnipsel &#8211; Links aus &lt;a&gt;-Tags" /></a>10. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_title">php &#8211; Regular Expression Schnipsel &#8211; Links aus <a>-Tags</a></li><li data-position="1" data-poid="in-5405" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; " /></a>25. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_title">php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; </a></li><li data-position="2" data-poid="in-528" data-post-type="none" >9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li><li data-position="3" data-poid="in-350" data-post-type="none" ><a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_thumbnail"><img width="102" height="84" src="http://suckup.de/wp-content/uploads//2010/02/php.jpg" class="attachment-thumbnail" alt="php - Logo" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_title">APC + eAccelerator + XCache</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=ODW7owzMjkM:qYDPr7Y8qrs:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=ODW7owzMjkM:qYDPr7Y8qrs:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=ODW7owzMjkM:qYDPr7Y8qrs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=ODW7owzMjkM:qYDPr7Y8qrs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=ODW7owzMjkM:qYDPr7Y8qrs:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=ODW7owzMjkM:qYDPr7Y8qrs:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=ODW7owzMjkM:qYDPr7Y8qrs:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/ODW7owzMjkM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/</feedburner:origLink></item>
		<item>
		<title>php – Regular Expression Schnipsel – Links aus -Tags</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/M819LtXKrHE/</link>
		<comments>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/#comments</comments>
		<pubDate>Mon, 10 Sep 2012 21:29:42 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Regular Expression Schnipsel]]></category>
		<category><![CDATA[Reguläre Ausdrücke]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5364</guid>
		<description><![CDATA[Habe zu dem Thema (&#8220;Regul&#228;re Ausdr&#252;cke&#8221;) bereits ausf&#252;hrlicher geschrieben -&#62; http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/ &#60;- daher folgt hier einfach ein Beispiel, welches man sicherlich noch optimieren kann &#8230;  
&#60;?php
$lall =' lall lall123
&#60;a style="gfsedfd;"  [...]]]></description>
				<content:encoded><![CDATA[<p>Habe zu dem Thema (&#8220;Regul&auml;re Ausdr&uuml;cke&#8221;) bereits ausf&uuml;hrlicher geschrieben -&gt; <a href="http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/">http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/</a> &lt;- daher folgt hier einfach ein Beispiel, welches man sicherlich noch optimieren kann &#8230; <img src='http://suckup.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre>&lt;?php
$lall =' lall lall123
&lt;a style="gfsedfd;" href="http://test1.de"&gt;test
&lt;a style="gfsedfd;" href="test2.php" target="_blank&gt;test&lt;/a&gt; dsadsa
&lt;a style="gfsedfd;" href="http://test3.de" target="_blank&gt;test&lt;/a&gt;
dsads
';

$lall = str_ireplace("\r", '', $lall);
$lall = str_ireplace("\n", '', $lall);
$lall = str_ireplace("\t", '', $lall);
preg_match_all('/&lt;a [^&gt;].*href="(.*)".*&gt;/i', $lall, $lall_new);
$allLinks = explode("&lt;/a&gt;", $lall_new[0][0]);
foreach ($allLinks as $key =&gt; $val) {
  $val = trim($val);
  if ($val != '') {
    $data =preg_replace('/.*&lt;a [^&gt;].*href\s*=\s*(["\'])(.*?)\1.*&gt;.*/i',"$2",$val);
    echo $data . "\n";
  }
}
?&gt;
</pre>
<pre>php testtest.php</pre>
<p>http://test1.de<br /> test2.php<br /> http://test3.de</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5405" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; " /></a>25. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_title">php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; </a></li><li data-position="1" data-poid="in-350" data-post-type="none" ><a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_thumbnail"><img width="102" height="84" src="http://suckup.de/wp-content/uploads//2010/02/php.jpg" class="attachment-thumbnail" alt="php - Logo" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_title">APC + eAccelerator + XCache</a></li><li data-position="2" data-poid="in-5394" data-post-type="none" ><a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/17.jpg" alt="UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;" /></a>24. September 2012 -- <a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_title">UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;</a></li><li data-position="3" data-poid="in-528" data-post-type="none" >9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=M819LtXKrHE:mDNuNMvYVe0:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=M819LtXKrHE:mDNuNMvYVe0:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=M819LtXKrHE:mDNuNMvYVe0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=M819LtXKrHE:mDNuNMvYVe0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=M819LtXKrHE:mDNuNMvYVe0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=M819LtXKrHE:mDNuNMvYVe0:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=M819LtXKrHE:mDNuNMvYVe0:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/M819LtXKrHE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/</feedburner:origLink></item>
		<item>
		<title>PHP-Sicherheit erhöhen – Teil 2</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/FAtPDWR-1QE/</link>
		<comments>http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/#comments</comments>
		<pubDate>Mon, 04 Jun 2012 14:17:04 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php - regex]]></category>
		<category><![CDATA[php - regulären Ausdrücke]]></category>
		<category><![CDATA[php-isset]]></category>
		<category><![CDATA[php-sicherheit]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5336</guid>
		<description><![CDATA[Kein Programm ist 100% sicher, aber wir wollen es potenziellen Angreifern auch nicht zu leicht machen, daher folgen ein paar Grundlegende Regeln zur Sicherheit von PHP. Ich gehe hier davon aus, dass die installierte PHP-Version auf dem aktuellen Stand ist und somit weniger Angriffsfl&#228;che bietet. -&#62;  [...]]]></description>
				<content:encoded><![CDATA[<p>Kein Programm ist 100% sicher, aber wir wollen es potenziellen Angreifern auch nicht zu leicht machen, daher folgen ein paar Grundlegende Regeln zur Sicherheit von PHP. Ich gehe hier davon aus, dass die installierte <a title="de.php.net - phpinfo()" href="http://de.php.net/manual/de/function.phpinfo.php" target="_blank">PHP-Version</a> auf dem <a title="Download PHP" href="http://php.net/downloads.php" target="_blank">aktuellen Stand</a> ist und somit weniger Angriffsfl&auml;che bietet. -&gt; <a title="PHP-Sicherheit erh&ouml;hen - Teil 1" href="http://suckup.de/linux/ubuntu/php-sicherheit-erhoehen-teil-1/%20" target="_blank">PHP-Sicherheit erh&ouml;hen &#8211; Teil 1</a></p>
<h3>1.) &#8220;register_globals&#8221; sollten deaktiviert sein!!!</h3>
<p>Falls diese Option aktiv ist, ist das &Uuml;berschreiben lokaler Variablen via GET / POST m&ouml;glich z.B.:</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />if (!isset($test)) <br />{ <br />  $test = 1; <br />} <br />echo 'Der Wert von test ist: '.$test; <br />?&gt; </pre>
</p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?test=2</p>
<p>Ab PHP 4.2 ist diese Option (php.ini -&gt; register_globals = Off) jedoch bereits standardm&auml;&szlig;ig auf &#8220;Off&#8221; gesetzt.</p>
<p>&nbsp;</p>
<h3>2.) &#8220;Type Casting&#8221; verwenden</h3>
<p>Casting bedeutet so viel wie Umwandeln einer Variable in einen bestimmten Type z.B. wird aus &#8220;123z&#8221; -&gt; &#8220;123&#8243; wenn wir dies zu einer Ganzzahl (int) casten. z.B.</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />$zahl = (int)$_GET['zahl']; <br />?&gt;</pre>
</p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?zahl=123z</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br />Type Casting -&gt; <a title="PHP: Type Casting" href="http://de2.php.net/manual/de/language.types.type-juggling.php" target="_blank">http://de2.php.net/manual/de/language.types.type-juggling.php</a></p>
<p>&nbsp;</p>
<h3>3.) Variablen pr&uuml;fen</h3>
<p>Allgemein kann man pr&uuml;fen, ob die Variablen &uuml;berhaupt vorhanden/gesetzt sind.</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />if (empty($_GET['zahl']) { [...]<br />if (!isset(($_GET['zahl']) { [...]<br />if (!$_GET['zahl']) { [...] // Warnung ("Notice") falls "error_reporting(E_ALL)" und die Variable nicht definiert wurde</pre>
</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br />empty() -&gt; <a title="PHP: empty()" href="http://php.net/manual/de/function.empty.php" target="_blank">http://php.net/manual/de/function.empty.php</a><br />isset() -&gt; <a title="PHP: isset()" href="http://php.net/manual/de/function.isset.php" target="_blank">http://php.net/manual/de/function.isset.php</a></p>
<p>&nbsp;</p>
<h3>4.) Variablen &#8220;Type&#8221; pr&uuml;fen</h3>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />if (gettype($_GET['zahl']) == "integer") { $zahl = $_GET['zahl']; }<br />else { $zahl = (int) $_GET['zahl']; }<br />?&gt;</pre>
</p>
<p>Alternative: if (is_int($_GET['zahl'])) { [...]</p>
<p>&nbsp;</p>
<h3>5.) &#8220;Ctype&#8221; Funktionen</h3>
<p>Es gibt noch weitere php-Module z.B. &#8220;ctype&#8221; mit denen sich Variablen &uuml;berpr&uuml;fen lassen, ich will jedoch als n&auml;chstes einen allgemein g&uuml;ltigen Ansatz via &#8220;regul&auml;ren Ausdr&uuml;cken&#8221; zeigen.</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: ctype" href="http://de2.php.net/manual/de/ref.ctype.php" target="_blank">http://de2.php.net/manual/de/ref.ctype.php</a><br />    <br />    </p>
<h3>6.) Variablen pr&uuml;fen / zuschneiden via &#8220;regul&auml;ren Ausdr&uuml;cke&#8221;</h3>
<p>Regul&auml;re Ausdr&uuml;cke sind Muster, mit denen Zeichenketten beschrieben werden k&ouml;nnten!</p>
<p>Wer die Syntax noch nicht im Kopf hat sollte sich einmal &#8220;The Regex Coach&#8221; anschauen -&gt; <a title="PHP: regex-coach" href="http://weitz.de/regex-coach/" target="_blank">http://weitz.de/regex-coach/</a></p>
<div id="attachment_5338" class="wp-caption aligncenter" style="width: 287px"><a href="http://suckup.de/wp-content/uploads//2012/06/The-Regex-Coach_2011-11-28_15-22-03.png"><img class="size-medium wp-image-5338" title="The Regex Coach" src="http://suckup.de/wp-content/uploads//2012/06/The-Regex-Coach_2011-11-28_15-22-03-277x300.png" alt="The Regex Coach" width="277" height="300" /></a><p class="wp-caption-text">The Regex Coach</p></div>
<p>&nbsp;</p>
<p>Zusammenfassung:<br />&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><strong>[abc]</strong> -&gt; a oder b oder c<br /><strong>[^abc]</strong> -&gt; nicht a oder b oder c<br /><strong>[a-z]</strong> -&gt; von a bis z -&gt; alle Kleinbuchstaben<br /><strong>[A-Z]</strong> -&gt; von A bis Z -&gt; alle Gro&szlig;buchstaben<br /><strong>[a-zA-Z]</strong> -&gt; Buchstaben</p>
<p><strong>[0-9]</strong> -&gt; von 0 bis 9 -&gt; Ziffern<br /><strong>\d</strong> -&gt; von 0 bis 9 -&gt; Ziffern<br /><strong>\D</strong> -&gt; keine Ziffer</p>
<p><strong>[a-zA-Z0-9_]</strong> -&gt; Buchstaben, Ziffern, Unterstrich<br /><strong>\w</strong> -&gt; Buchstaben, Ziffern, Unterstrich<br /><strong>\W</strong> -&gt; keine Buchstaben, Ziffern, Unterstrich</p>
<p><strong>[\r\n\t\f]]</strong> -&gt; Wagenr&uuml;cklauf, New Line, Tabulatur, Seitenwechsel -&gt; Leerzeichen<br /><strong>\s</strong> -&gt; Leerzeichen<br /><strong>\S</strong> -&gt; keine Leerzeichen</p>
<p><strong>\b</strong> -&gt; Wortanfang bzw. Wortende z.B. &#8220;/\bWort\b/&#8221;<br /><strong>\B</strong> -&gt; kein Wortanfang bzw. Wortende z.B. &#8220;/\BWort\B/&#8221;</p>
<p><strong>.</strong> -&gt; ein beliebiges Zeichen (Punkt)</p>
<p><strong>x{m}</strong> -&gt; &#8220;x&#8221; muss genau &#8220;m&#8221;-Mal vorkommen<br /><strong>x{m,}</strong> -&gt; &#8220;x&#8221; muss min. &#8220;m&#8221;-Mal vorkommen (Ende offen)<br /><strong>x{,n}</strong> -&gt; &#8220;x&#8221; darf max. &#8220;n&#8221;-Mal vorkommen (Anfang offen)<br /><strong>x{m,n}</strong> -&gt; &#8220;x&#8221; muss zwischen &#8220;m&#8221;- und &#8220;n&#8221;-Mal vorkommen<br /><strong>x?</strong> -&gt; &#8220;x&#8221; kann, muss aber nicht an dieser Stelle vorkommen =&gt; x{0,1}<br /><strong>x*</strong> -&gt; &#8220;x&#8221; kann kein, ein oder mehrmals an dieser Stelle vorkommen =&gt; x{0,}<br /><strong>x+</strong> -&gt; &#8220;x&#8221; kann ein oder mehrmals an dieser Stelle vorkommen =&gt; x{1,}</p>
<p><strong>^</strong> -&gt; markiert den Beginn einer Zeichenkette<br /><strong>$</strong> -&gt; markiert das Ende einer Zeichenkette</p>
<p><strong>|</strong> -&gt; Alternative z.B. &#8220;/ae|a/&#8221;</p>
<p><strong>\</strong> -&gt; Maskierung (Escape-Zeichen) f&uuml;r z.B. einen Punkt &#8220;\.&#8221;</p>
<p><strong>[]</strong> -&gt; Zusammenfassung von Mustern</p>
<p><strong>()</strong> -&gt; Zusammenfassung von Mustern + selektieren und an PHP zur&uuml;ckgeben</p>
<h6> </h6>
<h5>6.1) ein Beispiel</h5>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br />if((!empty($_GET['Text'])) &amp;&amp; (preg_match("/^(T|t)est(ing*){0,1}$/",$_GET['Text'])))<br />{<br />    $variable = "OK"; <br />} else {<br />    $variable = "nicht OK";<br />}<br />echo 'Der Wert ist '.$variable; <br />?&gt;</pre>
</p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?Text=Test -&gt; OK -&gt; (T|t)est<br />&#8230;/test.php?Text=test -&gt; OK -&gt; test(ing){0,1} = test(ing)?<br />&#8230;/test.php?Text=testing -&gt; OK -&gt; test(ing){0,1} = test(ing)?<br />&#8230;/test.php?testinggggg -&gt; OK -&gt; g*</p>
<p>&nbsp;</p>
<h5>6.2) noch ein Beispiel</h5>
<p>Hier sind nur Zahlen zugelassen &#8230;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br />if((!empty($_GET['Text'])) &amp;&amp; (preg_match("/^\d+([\.,]\d+)?$/",$_GET['Text'])))<br />{<br />    $variable = "OK"; <br />} else {<br />    $variable = "nicht OK";<br />}<br />echo 'Der Wert ist '.$variable; <br />?&gt;</pre>
</p>
<p>Info: <br />&#8212;&#8211;<br /><strong>/^\d+([\.,]\d+)?$/</strong> -&gt; ist gleich -&gt; <strong>/^[0-9]{1,}([\.,][0-9]{1,})?$/</strong></p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?Text=1 -&gt; OK -&gt; [0-9]{1,}<br />&#8230;/test.php?Text=123456789 -&gt; OK -&gt; [0-9]{1,}<br />&#8230;/test.php?Text=1.9 -&gt; OK -&gt; [0-9][\.,][0-9]<br />&#8230;/test.php?Text=123.789 -&gt; OK -&gt; [0-9]{1,}[\.,][0-9]{1,}<br />&#8230;/test.php?Text=123,789 -&gt; OK -&gt; [0-9]{1,}[\.,][0-9]{1,}</p>
<p>&nbsp;</p>
<h5>6.3) und noch ein Beispiel</h5>
<p>Hier schneiden wir einen Teil aus einen String aus und geben diesen aus &#8230;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;</p>
<p>
<pre>&lt;?php <br />$imagemap = "&lt;map id=\"imgmap201111415460\" name=\"imgmap201111415460\"&gt;&lt;area shape=\"rect\" alt=\"\" title=\"\" coords=\"151,58,221,148\" href=\"\" target=\"\" /&gt;&lt;/map&gt;";</pre>
</p>
<p>$imagemap_name = preg_replace(&#8216;/^&lt;map(.+)name=\&#8221;(.+)\&#8221;&gt;&lt;area(.+)/i&#8217;, &#8220;$2&#8243;, $imagemap);</p>
<p>echo &#8216;Imagemap-Name: &#8216;.$imagemap_name;<br />?&gt;</p>
<p>Ausgabe =&gt; Imagemap-Name: imgmap201111415460</p>
<p>Info: <br />&#8212;&#8211;<br /><strong>(.+) -&gt; ist gleich -&gt; (.{1,})</strong></p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: preg-replace()" href="http://de3.php.net/manual/de/function.preg-replace.php" target="_blank">http://de3.php.net/manual/de/function.preg-replace.php</a></p>
<p>&nbsp;</p>
<h3>7.) Maskieren von Strings zur Nutzung in Datenbanken</h3>
<p>Sobald Daten in einer Datenbank gespeichert werden, sollte man diese via &#8220;<em>mysql_real_escape_string</em>&#8221; bzw. &#8220;<em>mysqli_real_escape_string</em>&#8221; maskieren, so dass &#8220;SQL Injection Angriffe&#8221; verhindert werden.</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: mysql-real-escape-string()" href="http://php.net/manual/de/function.mysql-real-escape-string.php" target="_blank">http://php.net/manual/de/function.mysql-real-escape-string.php</a></p>
<p>&nbsp;</p>
<h3>8.) Ein-Weg-Verschl&uuml;sselung</h3>
<p>Bei der Ein-Weg-Verschl&uuml;sselung wird nicht die original Eingabe, sondern ein Hash-Wert davon gespeichert z.B. md5</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php $passwort = 'mein_Pwd';<br />echo md5($passwort); ?&gt;</pre>
</p>
<p>Ausgabe: b4e28e9d7dbf6d41d6e609b3eb46fac4</p>
<p>Das Problem ist jedoch, dass man diese Verschl&uuml;sselung via &#8220;Brute-Force-Attacke&#8221; erraten bzw. in einer &#8220;b&ouml;sen&#8221;-Datenbank <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  mit vielen Kombinationen aus md5-hash und original-Wert auslesen kann.<br />Daher kann man z.B. auch sha1() anstelle von md5() nutzen, was zwar den Zeitaufwand bei &#8220;Brute-Force-Attacke&#8221; erh&ouml;ht, jedoch nicht die Schwachstellen der Ein-Weg-Verschl&uuml;sselung behebt.</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: md5()" href="http://de.php.net/manual/de/function.md5.php" target="_blank">http://de.php.net/manual/de/function.md5.php</a><br /><a title="PHP: sha1" href="http://de.php.net/manual/de/function.sha1.php" target="_blank">http://de.php.net/manual/de/function.sha1.php</a></p>
<p>&nbsp;</p>
<h3>9.) Zwei-Wege-Verschl&uuml;sselung</h3>
<p>Bei der Zwei-Wege-Verschl&uuml;sselung werden Daten &uuml;ber einen Schl&uuml;ssel verschl&uuml;sselt, so dass diese auch wieder entschl&uuml;sselt werden k&ouml;nnen.</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br /> function encryptData($value){ <br /> $key = "top secret key"; <br /> $text = $value; <br /> $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); <br /> $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); <br /> $crypttext = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB, $iv); <br /> return $crypttext; <br /> } </pre>
</p>
<p>function decryptData($value){ <br /> $key = &#8220;top secret key&#8221;; <br /> $crypttext = $value; <br /> $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); <br /> $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); <br /> $decrypttext = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $crypttext, MCRYPT_MODE_ECB, $iv); <br /> return trim($decrypttext); <br /> }</p>
<p>$test = encryptData(&#8220;Dies ist ein TEST!!!&#8221;);</p>
<p>echo $test; <br /> echo &#8220;&lt;br&gt;&lt;br&gt;&#8221;; <br /> echo decryptData($test); <br />?&gt;</p>
<p>&nbsp;</p>
<p>Algorithmus:<br />&#8212;&#8212;&#8212;&#8212;<br />-&gt; MCRYPT_BLOWFISH (blowfish)<br />-&gt; MCRYPT_TRIPLEDES (tripledes)<br />-&gt; MCRYPT_RJINDAEL_256 (rjindael-256)<br />-&gt; MCRYPT_CAST_256 (cast-256)</p>
<p>&nbsp;</p>
<p>Modus:<br />&#8212;&#8212;<br />-&gt; MCRYPT_MODE_ECB (electronic codebook): f&uuml;r kurze Zeichenketten<br />-&gt; MCRYPT_MODE_CBC (cipher block chaining): zur Dateiverschl&uuml;sselung<br />-&gt; MCRYPT_MODE_CFB (cipher feedback): f&uuml;r Bytestr&ouml;me, mit Verschl&uuml;sselung einzelner Bytes<br />-&gt; [...]</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: mcrypt-encrypt()" href="http://php.net/manual/de/function.mcrypt-encrypt.php" target="_blank">http://php.net/manual/de/function.mcrypt-encrypt.php</a></p>
<p>&nbsp;</p>
<p>Unter MySQL ist die &#8220;Zwei-Wege-Verschl&uuml;sselung&#8221; einfacher zu handhaben, es gibt nur zwei Alternativen</p>
<p>- AES (Advanced Encryption Standard)<br />- DES: TripleDES</p>
<p>z.B.:<br />AES_DECRYPT(verschluesselt,schluessel)<br />AES_ENCRYPT(text,schluessel)</p>
<p>&nbsp;</p>
<p>dev.mysql.com:<br />&#8212;&#8212;&#8212;&#8212;&#8211;<br /><a title="dev.mysql.com: encryption-functions" href="http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html" target="_blank">http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html</a></p>
<p>&nbsp;</p>
<h3>10.) SSL (Secure Socket Layer)</h3>
<p>Da das HTTP-Protokoll Daten plain (unverschl&uuml;sselt) &uuml;bertr&auml;gt, ist eine SSL- bzw. HTTPS-Verschl&uuml;sselung immer dann sinnvoll, wenn sensible Daten &uuml;bertragen werden. So k&ouml;nnen die Daten beim Transport &uuml;ber das Internet nicht von dritten mitgelesen (Sniffing) werden.</p>
<p>&nbsp;</p>
<h3>11.) Cross-Site-Scripting (XSS)</h3>
<p>Es geht darum Code auszuf&uuml;hren, der von einer fremden Webseite, in die aktuelle Webseite eingeschleust wird. Es ist ein Oberbrgriff f&uuml;r unterschiedliche Arten (serverseitiges &amp; clientseitiges Cross-Site-Scripting) von Angriffen.</p>
<p>&nbsp;</p>
<p>wikipedia.org:<br />&#8212;&#8212;&#8212;&#8212;&#8211;<br /><a title="wiki - Cross-Site-Scripting" href="http://de.wikipedia.org/wiki/Cross-Site-Scripting" target="_blank">http://de.wikipedia.org/wiki/Cross-Site-Scripting</a></p>
<p>&nbsp;</p>
<h5>11.1) Serverseitiges Cross-Site-Scripting</h5>
<p>Hier wird der &#8220;b&ouml;se&#8221; Code direkt auf dem Server der angegriffenen Webseite ausgef&uuml;hrt (z.B.: von PHP) &#8230;</p>
<p>&#8230; es folgt ein sehr schwerwiegender Programmierfehler, eine include &amp; GET kombination, um serverseitiges XSS zu demonstrieren.</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br /> inculde($_GET['skript'];<br /> // etc.<br /> ...<br /> ?&gt;</pre>
</p>
<p>Info: Clientseitiges Cross-Site-Scripting -&gt; Hier wird der &#8220;b&ouml;se&#8221; Code via Browser-Technologien (z.B. via JavaScript, ActiveX &#8230;) eingeschleust.</p>
<p>&nbsp;</p>
<h5>11.2) SQL Injection</h5>
<p>&nbsp;</p>
<p>wikipedia.org:<br />&#8212;&#8212;&#8212;&#8212;&#8211;<br /><a title="wiki - SQL-Injection" href="http://de.wikipedia.org/wiki/SQL-Injection" target="_blank">http://de.wikipedia.org/wiki/SQL-Injection</a></p>
<p>&nbsp;</p>
<p>Auch dies ist eine Art des serverseitiges Cross-Site-Scriptings und das Ziel des Angreifers ist die Datenbank.</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br /> [...] <br /> $sql = "SELECT * FROM tabelle WHERE id=" . $id; <br /> [...] <br /> ?&gt; </pre>
</p>
<p>Wenn die Variable die nun per GET, POST oder Cookie &uuml;berschrieben werden kann, wird eine neue SQL-Query an die Datenbank gesendet. Dabei wird die Tatsache ausgenutzt, dass man mehrere SQL-Befehle mit <br />Simikolon getrennt, ausf&uuml;hren kann.</p>
<p><strong>Gegenma&szlig;nahmen:</strong></p>
<p>-&gt; <em>Anf&uuml;hrungsstriche verwenden</em></p>
<p>Anf&uuml;hrungsstriche werden dazu verwendet um Variablen in SQL-Queries zu benutzen.</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>[...] SELECT * FROM xyz WHERE id = '$Test' [...]</pre>
</p>
<p>&nbsp;</p>
<p>Ein Angreifer, der $Test ver&auml;ndert kann nicht aus den Anf&uuml;hrungsstrichen ausbrechen, sloange $Test geparst wurde und alle &#8216; mit \&#8217; maskiert sind. <br />Es gibt jedoch noch weitere M&ouml;glichkeiten um sich vor solchen Angriffen zu sch&uuml;tzen.</p>
<p>&nbsp;</p>
<p>-&gt; <em>Keine Strings in numerischen Variablen zulassen</em></p>
<p>Die Funktion settype wandelt Variablen (var) in einen Integer (int) um:</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>[...]<br />settype($Variable, 'integer');<br />[...]</pre>
</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br />settype -&gt; <a title="PHP: settype()" href="http://www.php.net/manual/de/function.settype.php" target="_blank">http://www.php.net/manual/de/function.settype.php</a></p>
<p>&nbsp;</p>
<p>-&gt; <em>Datenbankverbindungen mit eingeschr&auml;nkten Rechten</em></p>
<p>Gehe sparsam mit der Rechtevergabe an die Web (User) um, so dass im Notfall nicht die komplette Datenbank (DROP DATABASE name) betroffen ist. <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>-&gt; <em>Werte maskieren</em></p>
<p>Mit der Funktion mysql(i)_real_escape_string bietet PHP eine einfache M&ouml;glichkeit SQL-Befehle zu maskieren.</p>
<p>Hinweis: Neben dem Semikolon ist auch ein doppelter Bindestrich (Kommentar in MySQL) dazu geeignet SQL-Kommandos nach dem eingeschleusten Code abzubrechen.</p>
<p>&nbsp;</p>
<p><strong>Zusammenfassung:</strong> Wenn man generell Anf&uuml;hrungszeichen in den SQL-Kommandos benutzt und Variablen immer maskiert, w&uuml;rde dies zirka wie folgt aussehen&#8230;</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>[...] <br /> if (!isset($_GET['id'])) { $id = 0; } <br /> else { $id = $_GET['id']; } </pre>
</p>
<p>if (gettype($id) == &#8220;integer&#8221;) { $zahl = $id; } <br /> else { $zahl = settype($id, &#8216;integer&#8217;); }</p>
<p>$sql = &#8220;SELECT * FROM tabelle <br /> WHERE id=&#8217;&#8221; . mysqli_real_escape_string($zahl) . &#8220;&#8216; <br /> AND user=&#8217;test&#8217; <br /> &#8220;; <br /> [...]</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5178" data-post-type="none" ><a href="http://suckup.de/linux/ubuntu/php-sicherheit-erhoehen-teil-1/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2012/01/Unbenannt-1-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="PHP-Sicherheit erh&ouml;hen &#8211; Teil 1" title="" /></a>16. Januar 2012 -- <a href="http://suckup.de/linux/ubuntu/php-sicherheit-erhoehen-teil-1/" class="wp_rp_title">PHP-Sicherheit erh&ouml;hen &#8211; Teil 1</a></li><li data-position="1" data-poid="in-528" data-post-type="none" >9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li><li data-position="2" data-poid="in-5405" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; " /></a>25. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_title">php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; </a></li><li data-position="3" data-poid="in-249" data-post-type="none" ><a href="http://suckup.de/linux/cdrecord-iso-erstellen-und-brennen/" class="wp_rp_thumbnail"><img src="cdrecord - ISO erstellen und CD brennen" alt="cdrecord &#8211; ISO erstellen und CD brennen" /></a>31. Januar 2010 -- <a href="http://suckup.de/linux/cdrecord-iso-erstellen-und-brennen/" class="wp_rp_title">cdrecord &#8211; ISO erstellen und CD brennen</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=FAtPDWR-1QE:HLkk8uwdros:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=FAtPDWR-1QE:HLkk8uwdros:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=FAtPDWR-1QE:HLkk8uwdros:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=FAtPDWR-1QE:HLkk8uwdros:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=FAtPDWR-1QE:HLkk8uwdros:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=FAtPDWR-1QE:HLkk8uwdros:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=FAtPDWR-1QE:HLkk8uwdros:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/FAtPDWR-1QE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/</feedburner:origLink></item>
		<item>
		<title>Rewrite-Rules: Apache vs Nginx</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/57f2_JQ69Gc/</link>
		<comments>http://suckup.de/howto/rewrite-rules-apache-vs-nginx/#comments</comments>
		<pubDate>Tue, 29 May 2012 08:03:43 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[Nginx-config]]></category>
		<category><![CDATA[php-fpm config]]></category>
		<category><![CDATA[Rewrite-Regeln]]></category>
		<category><![CDATA[Rewrite-Rules]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5310</guid>
		<description><![CDATA[Bei dem Apache Webserver wird das URL-Handling (Rewrite-Rules) via .htaccess gesteuert, sobald sich eine Datei mit diesem Namen in einem Verzeichnis befindet, werden die darin enthaltenen Befehle vom Apache umgesetzt. Da dieses Verfahren jedoch voraussetzt, dass alle Verzeichnisse zuvor auf eine  [...]]]></description>
				<content:encoded><![CDATA[<p>Bei dem Apache Webserver wird das URL-Handling (Rewrite-Rules) via <a title=".htaccess &amp; Mod-Rewrite - suckup.de" href="http://suckup.de/howto/htaccess-mod-rewrite/" target="_blank">.htaccess</a> gesteuert, sobald sich eine Datei mit diesem Namen in einem Verzeichnis befindet, werden die darin enthaltenen Befehle vom Apache umgesetzt. Da dieses Verfahren jedoch voraussetzt, dass alle Verzeichnisse zuvor auf eine solche Datei gepr&uuml;ft, diese anschlie&szlig;end eingelesen und verarbeitet werden muss, macht es Sinn wie z.B. beim Nginx Webserver diese in die Konfiguration des Webs aufzunehmen. Leider ist die Syntax und Logik dieser beiden Rewrite-Rules nicht kompatibel, daher folgt eine Einf&uuml;hrung in dieses Thema &#8230; au&szlig;erdem habe ich auf <a title="github.com/voku - suckup.de Config" href="https://github.com/voku/CONFIG--nginx---php-fpm---mysql" target="_blank">github.com/voku/ </a>meine kompletten Konfigurationsdaten f&uuml;r Nginx + PHP + MySQL hochgeladen. </p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> einfache Weiterleitung</h3>
<p>&nbsp;</p>
<p><em><strong>Apa­che</strong>: </em></p>
<p>Redirect /altes_Verzeichnis/alte_Seite.html http://suckup.de/</p>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em> </p>
<p>rewrite /altes_Verzeichnis/alte_Seite.html http://suckup.de/ last;</p>
<p>&nbsp;</p>
<p>Falls &#8220;/altes_Verzeichnis/alte_Seite.html&#8221; hinter deiner Domain in der URL steht, wird die Anfrage auf die Domain &#8220;meine_domain.de&#8221; umgeleitet.</p>
<p>z.B. <a href="http://suckup.de/altes_Verzeichnis/alte_Seite.html">http://suckup.de/altes_Verzeichnis/alte_Seite.html</a></p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> Domain Weiterleitung</h3>
<p>&nbsp;</p>
<p><em><strong>Apa­che</strong>:</em></p>
<p>RewriteCond %{HTTP_HOST} ^voku-online.de$ [NC]<br />RewriteRule ^(.*)$ http://www.suckup.de/$1 [R=301,L]</p>
<p>&nbsp;</p>
<p>%{HTTP_HOST} -&gt; Hostname</p>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em> </p>
<p>if ($host ~* voku-online.de) {<br /> rewrite ^(.*)$ http://suckup.de$1 permanent;<br /> }</p>
<p>&nbsp;</p>
<p>Fall der Hostname &#8220;voku-online.de&#8221; ist, dann wird dieser zu &#8220;suckup.de&#8221; umgeschrieben und alles was hinter der urspr&uuml;nglichen Hostnamen stand, wird hinter den neuen gesetzt. </p>
<p>^ -&gt; Anfang </p>
<p>.* -&gt; &#8220;.&#8221; ein beliebiges Zeichen, &#8220;*&#8221; Wiederholung =&gt; alle beliebigen Zeichen</p>
<p>( ) -&gt; erstes Vorkommen der einfachen Klammern wird zur ersten Variable $1 &#8230; u.s.w.</p>
<p>$ -&gt; Ende</p>
<p>z.B. <a href="http://voku-online.de/altes_Verzeichnis/alte_Seite.html">http://voku-online.de/altes_Verzeichnis/alte_Seite.html</a></p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> entferne doppelte &#8220;/&#8221;</h3>
<p>&nbsp;</p>
<p><em><strong>Apa­che</strong>:</em></p>
<p>RewriteCond %{REQUEST_URI} ^(.*)//(.*)$<br />RewriteRule . %1/%2 [R=301,L]</p>
<p>&nbsp;</p>
<p> %{REQUEST_URI} -&gt; URL ohne Parameter</p>
<p> ( ) -&gt; erstes Vorkommen der einfachen Klammern in der &#8220;RewriteCond&#8221;-Bedingung wird zur ersten Variable %1 &#8230; u.s.w.</p>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em> <br /> if ($request_uri ~* &#8220;\/\/&#8221;) {<br /> rewrite ^(.*)$ $scheme://$host$1 permanent;<br /> }</p>
<p>&nbsp;</p>
<p>\/ -&gt; Escapezeichen &#8220;\&#8221; vor &#8220;/&#8221;</p>
<p>$scheme -&gt; http bzw. https</p>
<p>$host -&gt; Hostname</p>
<p>permanent -&gt; gibt den Statuscode 301 zur&uuml;ck</p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> statische Dateien (.css/.js/.html) beschleunigen</h3>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em></p>
<p>## static files are served directly<br />location ~* \.(?:js|css|htm?|js\?ver.*|css\?ver.*)$ {<br />        set $betterForCache  0;</p>
<p>        if ($args ~* ver=(.*)$) {<br />                set $betterForCache  1;<br />        }<br />        if ($request_uri ~* &#8220;/wp-admin&#8221;) {<br />                set $betterForCache  0;<br />        }<br />        if ($betterForCache = 1) {<br />                rewrite ^(.*) $scheme://$host$uri? last;<br />        }</p>
<p>        gzip_static on;</p>
<p>        autoindex off;<br />        expires 1d;<br />        add_header Pragma public;<br />        # We bypass all delays in the post-check and pre-check parameters of Cache-Control. Both set to 0.<br />        add_header Pragma public;<br />        add_header Cache-Control &#8220;public, must-revalidate, proxy-revalidate, post-check=0, pre-check=0&#8243;;<br />        ## No need to bleed constant updates. Send the all shebang in one<br />        ## fell swoop.<br />        tcp_nodelay off;<br />        ## Set the OS file cache.<br />        open_file_cache max=3000 inactive=120s;<br />        open_file_cache_valid 45s;<br />        open_file_cache_min_uses 2;<br />        open_file_cache_errors off;<br />        break;<br />}</p>
<p>Verschachtelte if-Abfragen kann man einfach via Hilfsvariablen (z.B. $betterForCache) erstellen &#8230;</p>
<p>$uri -&gt; URL ohne Parameter</p>
<p>z.B.: <a href="view-source:http://suckup.de/wp-content/themes/mystique/css/core.css?ver=3.3.2">http://suckup.de/wp-content/themes/mystique/css/core.css?ver=3.3.2</a></p>
<p>&nbsp;</p>
<p><strong><em>weitere Infos:</em></strong></p>
<p>- Nginx &amp; HttpRewriteModule:  <a href="http://wiki.nginx.org/HttpRewriteModule">http://wiki.nginx.org/HttpRewriteModule</a></p>
<p>- Apache &amp; mod_rewrite: <a href="http://httpd.apache.org/docs/current/mod/mod_rewrite.html">http://httpd.apache.org/docs/current/mod/mod_rewrite.html</a></p>
<p>- Beispiel-Konfiguration (WordPress Multi: Nginx + PHP-FPM): <a title="SUCKUP.de - Server Config" href="https://github.com/voku/CONFIG--nginx---php-fpm---mysql" target="_blank">https://github.com/voku/CONFIG&#8211;nginx&#8212;php-fpm&#8212;mysql</a></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-1571" data-post-type="none" ><a href="http://suckup.de/linux/ubuntu/nginx-php5-fpm-auf-debianubuntu/" class="wp_rp_thumbnail"><img src="Nginx + PHP5-fpm auf Debian/Ubuntu" alt="Nginx + PHP5-fpm auf Debian/Ubuntu" /></a>31. Juli 2010 -- <a href="http://suckup.de/linux/ubuntu/nginx-php5-fpm-auf-debianubuntu/" class="wp_rp_title">Nginx + PHP5-fpm auf Debian/Ubuntu</a></li><li data-position="1" data-poid="in-775" data-post-type="none" ><a href="http://suckup.de/linux/webseiten-beschleunigen/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/07/tacho3-150x150.gif" class="attachment-thumbnail wp-post-image" alt="Webseiten beschleunigen &#8211; &Uuml;bersicht" title="" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/webseiten-beschleunigen/" class="wp_rp_title">Webseiten beschleunigen &#8211; &Uuml;bersicht</a></li><li data-position="2" data-poid="in-836" data-post-type="none" ><a href="http://suckup.de/linux/webserver-beschleunigen/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/03/nginx-300x153-150x150.png" class="attachment-thumbnail wp-post-image" alt="Webserver beschleunigen" title="" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/webserver-beschleunigen/" class="wp_rp_title">Webserver beschleunigen</a></li><li data-position="3" data-poid="in-1766" data-post-type="none" ><a href="http://suckup.de/howto/debian-ubuntu-paket-selber-bauen-nginx/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/07/nginx_logo_klein2-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="Debian/Ubuntu Paket selber bauen (Nginx)" title="" /></a>21. August 2010 -- <a href="http://suckup.de/howto/debian-ubuntu-paket-selber-bauen-nginx/" class="wp_rp_title">Debian/Ubuntu Paket selber bauen (Nginx)</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=57f2_JQ69Gc:_LrNa502ZRA:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=57f2_JQ69Gc:_LrNa502ZRA:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=57f2_JQ69Gc:_LrNa502ZRA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=57f2_JQ69Gc:_LrNa502ZRA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=57f2_JQ69Gc:_LrNa502ZRA:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=57f2_JQ69Gc:_LrNa502ZRA:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=57f2_JQ69Gc:_LrNa502ZRA:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/57f2_JQ69Gc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/howto/rewrite-rules-apache-vs-nginx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://suckup.de/howto/rewrite-rules-apache-vs-nginx/</feedburner:origLink></item>
		<item>
		<title>Scrollen via jQuery</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/XVmJmZiGZ0Y/</link>
		<comments>http://suckup.de/howto/jquery/scrollen-via-jquery/#comments</comments>
		<pubDate>Tue, 22 May 2012 11:50:35 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5298</guid>
		<description><![CDATA[Hier ein kurzes Beispiel, wie man via jQuery die Position eines Elements herausfindet und automatisch an diese Stelle scrollen kann. Wer sich noch nicht so gut mit jQuery- / CSS-Selektoren auskennt, sollte sich einmal folgenden Beitrag durchlesen.  [...]]]></description>
				<content:encoded><![CDATA[<p>Hier ein kurzes Beispiel, wie man via jQuery die Position eines Elements herausfindet und automatisch an diese Stelle scrollen kann. Wer sich noch nicht so gut mit jQuery- / CSS-Selektoren auskennt, sollte sich einmal folgenden Beitrag durchlesen. -&gt; <a href="http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/">http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/</a></p>
<p>&nbsp;</p>
<p>.scrollTop() -&gt; gibt die Scrollbar Position eines bestimmten Elements zur&uuml;ck </p>
<p>.scroll() -&gt; wird ausgef&uuml;hrt, wenn gescrollt wird (event handler)</p>
<p>.animate() -&gt; erzeugt animations Effekte via numerischer CSS-Einstellungen</p>
<p>.offset() -&gt; gibt die Koordinaten (x,y) eines Elements zur&uuml;ck </p>
<p>.height() -&gt; gibt die H&ouml;he eines Elements zur&uuml;ck</p>
<p>&nbsp;</p>
<p><strong>Beispiel:</strong> <a title="jQuery_scroll.html - Beispiel" href="http://suckup.de/jQuery_scroll.html" target="_blank">jQuery_scroll.html</a></p>
<p>&nbsp;</p>
<p>onClick=&#8221;$(&#8216;#box&#8217;).show(); $(&#8216;html,body&#8217;).stop(true,true); var target = $(&#8216;#box&#8217;); var bottom = target.offset().top+target.height()-250; $(&#8216;html,body&#8217;).animate({scrollTop: bottom}, 500); return false;&#8221;</p>
<p>&nbsp;</p>
<p>-&gt; bei &#8220;Klick&#8221; [onClick] </p>
<p>    -&gt; zeige das Element mit der ID &#8220;box&#8221; [#box] an</p>
<p>        -&gt; halte alle Animationen an [stop(true,true)]</p>
<p>          -&gt; die H&ouml;he des Elements auf den x-Koordinate daraufrechnen [offset().top+target.height()]</p>
<p>            -&gt; zu der neuen Koordinate des Elements scrollen [animate({scrollTop: bottom}, 500)]</p>
<p>&nbsp;</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-4974" data-post-type="none" ><a href="http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2011/10/250x400-150x150.png" class="attachment-thumbnail wp-post-image" alt="Crashkurs: jQuery-Selektoren" title="" /></a>16. Oktober 2011 -- <a href="http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/" class="wp_rp_title">Crashkurs: jQuery-Selektoren</a></li><li data-position="1" data-poid="in-4206" data-post-type="none" ><a href="http://suckup.de/linux/c-programm-umgebungsvariablen-unter-linux/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="C-Programm – Umgebungsvariablen unter Linux" /></a>16. Januar 2011 -- <a href="http://suckup.de/linux/c-programm-umgebungsvariablen-unter-linux/" class="wp_rp_title">C-Programm – Umgebungsvariablen unter Linux</a></li><li data-position="2" data-poid="in-4218" data-post-type="none" ><a href="http://suckup.de/linux/jabber-xmpp-studivz-facebook/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2011/01/Jabber_logo-150x150.png" class="attachment-thumbnail wp-post-image" alt="Jabber &#8211; XMPP + StudiVZ &#8211; Facebook " title="" /></a>20. Januar 2011 -- <a href="http://suckup.de/linux/jabber-xmpp-studivz-facebook/" class="wp_rp_title">Jabber &#8211; XMPP + StudiVZ &#8211; Facebook </a></li><li data-position="3" data-poid="in-318" data-post-type="none" ><a href="http://suckup.de/linux/lvm-logical-volume-manager/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/02/lvm-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="LVM &#8211; Logical Volume Manager" title="" /></a>7. Februar 2010 -- <a href="http://suckup.de/linux/lvm-logical-volume-manager/" class="wp_rp_title">LVM &#8211; Logical Volume Manager</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=XVmJmZiGZ0Y:VRkTwQ2bZEE:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=XVmJmZiGZ0Y:VRkTwQ2bZEE:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=XVmJmZiGZ0Y:VRkTwQ2bZEE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=XVmJmZiGZ0Y:VRkTwQ2bZEE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=XVmJmZiGZ0Y:VRkTwQ2bZEE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=XVmJmZiGZ0Y:VRkTwQ2bZEE:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=XVmJmZiGZ0Y:VRkTwQ2bZEE:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/XVmJmZiGZ0Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/howto/jquery/scrollen-via-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://suckup.de/howto/jquery/scrollen-via-jquery/</feedburner:origLink></item>
		<item>
		<title>MySQL: Zahl in Datum umwandeln</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/Y_V4UW8VQwo/</link>
		<comments>http://suckup.de/howto/mysql-howto/mysql-zahl-in-datum-umwandeln/#comments</comments>
		<pubDate>Tue, 22 May 2012 11:12:49 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5295</guid>
		<description><![CDATA[Falls jemand mal z.B. einen Int-Wert in ein Datum umwandeln muss, kann &#8220;CONVERT&#8221; bzw. &#8220;CAST&#8221; weiterhelfen. Auch wenn man eigentlich die Datenbank im Vorhinein so gestalten sollte, dass &#8220;date&#8221; / &#8220;datetime&#8221; / &#8230; / als Datentyp verwendet wird.  
&#160;
Beispiel-Datenbank:
CREATE TABLE `lall` ( `Id` int(11)  [...]]]></description>
				<content:encoded><![CDATA[<p>Falls jemand mal z.B. einen Int-Wert in ein Datum umwandeln muss, kann &#8220;CONVERT&#8221; bzw. &#8220;CAST&#8221; weiterhelfen. Auch wenn man eigentlich die Datenbank im Vorhinein so gestalten sollte, dass &#8220;date&#8221; / &#8220;datetime&#8221; / &#8230; / als Datentyp verwendet wird. <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p><strong>Beispiel-Datenbank:</strong>
<pre>CREATE TABLE `lall` (<br /> `Id` int(11) NOT NULL AUTO_INCREMENT,<br /> `IntDate` int(11) NOT NULL DEFAULT '0',<br /> PRIMARY KEY (`Id`)<br /> ) ENGINE=MyISAM DEFAULT CHARSET=utf8;</pre>
</p>
<p>
<pre>INSERT INTO `lall` VALUES (1,201001);<br /> INSERT INTO `lall` VALUES (2,201002);<br /> INSERT INTO `lall` VALUES (3,201003);<br /> INSERT INTO `lall` VALUES (4,0);<br /> INSERT INTO `lall` VALUES (5,201011);<br /> INSERT INTO `lall` VALUES (6,201012);<br /> INSERT INTO `lall` VALUES (7,201205);</pre>
</p>
<p><strong>SQL:</strong>
<pre>SELECT * FROM lall<br /> WHERE ((CONVERT(CONCAT(IntDate, '01'), datetime))&gt;NOW() - INTERVAL 12 MONTH OR IntDate=0)<br /> </pre>
</p>
<p>&lt; &#8211; dieses SELECT-Statement zeigt alle Datens&auml;tze an, welche nicht &auml;lter als 12 Monate sind oder als (int) Datum &#8220;0&#8243; eingetragen haben.</p>
<p>CONVERT -&gt; <a title="mysql.com - convert" href="http://dev.mysql.com/doc/refman/5.1/de/charset-convert.html" target="_blank">http://dev.mysql.com/doc/refman/5.1/de/charset-convert.html</a><br /> CONCAT -&gt; <a title="mysql.com - string-functions" href="http://dev.mysql.com/doc/refman/5.1/de/string-functions.html#id571625" target="_blank">http://dev.mysql.com/doc/refman/5.1/de/string-functions.html#id571625</a><br /> NOW -&gt; <a title="mysql.com - date-and-time-functions" href="http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html#id586485" target="_blank">http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html#id586485</a></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-840" data-post-type="none" ><a href="http://suckup.de/linux/debian/mysql-server-optimieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="MySQL-Server optimieren" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/debian/mysql-server-optimieren/" class="wp_rp_title">MySQL-Server optimieren</a></li><li data-position="1" data-poid="in-5310" data-post-type="none" ><a href="http://suckup.de/howto/rewrite-rules-apache-vs-nginx/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/07/nginx_logo_klein2-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="Rewrite-Rules: Apache vs Nginx" title="" /></a>29. Mai 2012 -- <a href="http://suckup.de/howto/rewrite-rules-apache-vs-nginx/" class="wp_rp_title">Rewrite-Rules: Apache vs Nginx</a></li><li data-position="2" data-poid="in-385" data-post-type="none" ><a href="http://suckup.de/linux/mysql-root-passwort-zuruecksetzen/" class="wp_rp_thumbnail"><img width="128" height="85" src="http://suckup.de/wp-content/uploads//2010/02/logoMysql.jpg" class="attachment-thumbnail" alt="logoMysql" /></a>8. Februar 2010 -- <a href="http://suckup.de/linux/mysql-root-passwort-zuruecksetzen/" class="wp_rp_title">MySQL root Passwort zur&uuml;cksetzen</a></li><li data-position="3" data-poid="in-625" data-post-type="none" ><a href="http://suckup.de/linux/greensql-mysql-firewall/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/02/greensql-architecture-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="GreenSQL &#8211; MySQL Firewall" title="" /></a>14. Februar 2010 -- <a href="http://suckup.de/linux/greensql-mysql-firewall/" class="wp_rp_title">GreenSQL &#8211; MySQL Firewall</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=Y_V4UW8VQwo:PKB7-e-EUoI:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=Y_V4UW8VQwo:PKB7-e-EUoI:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Y_V4UW8VQwo:PKB7-e-EUoI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Y_V4UW8VQwo:PKB7-e-EUoI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Y_V4UW8VQwo:PKB7-e-EUoI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=Y_V4UW8VQwo:PKB7-e-EUoI:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=Y_V4UW8VQwo:PKB7-e-EUoI:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/Y_V4UW8VQwo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/howto/mysql-howto/mysql-zahl-in-datum-umwandeln/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://suckup.de/howto/mysql-howto/mysql-zahl-in-datum-umwandeln/</feedburner:origLink></item>
		<item>
		<title>Cross-Compiling Android Kernel – Samsung GalaxyS2</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/yAPsZ_erpQo/</link>
		<comments>http://suckup.de/howto/cross-compiling-android-kernel-samsung-galaxys2/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 20:13:10 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[Android 4.0.4]]></category>
		<category><![CDATA[CM9]]></category>
		<category><![CDATA[Galaxy S2]]></category>
		<category><![CDATA[GalaxyS2]]></category>
		<category><![CDATA[Samsung]]></category>
		<category><![CDATA[SGS2]]></category>
		<category><![CDATA[SiyahKernel]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5280</guid>
		<description><![CDATA[Das GalaxyS2 l&#228;uft ziemlich gut mit dem neuen nightly-builds von CM9 (Android 4.0.4) &#38; den neusten Google-Apps &#38; dem SiyahKernel.
Ich m&#246;chte hier kurz erkl&#228;ren, wie du einen Kernel f&#252;r das Samsung S2 (CM9) auf Basis vom SiyahKernel kompilierst.   
&#160;
1.) Installiere Linux + Cross-Compiler 
Als  [...]]]></description>
				<content:encoded><![CDATA[<p>Das GalaxyS2 l&auml;uft ziemlich gut mit dem neuen <a title="SGS2 Nightly Builds CM9 | Android 4" href="http://download.cyanogenmod.com/?device=galaxys2" target="_blank">nightly-builds von CM9</a> (Android 4.0.4) &amp; den neusten <a title="die nueste Google Apps | Android" href="http://goo.im/gapps" target="_blank">Google-Apps</a> &amp; dem <a title="gokhanmoral.com" href="http://www.gokhanmoral.com/" target="_blank">SiyahKernel</a>.</p>
<p>Ich m&ouml;chte hier kurz erkl&auml;ren, wie du einen Kernel f&uuml;r das Samsung S2 (CM9) auf Basis vom <a title="SiyahKernel for SGS2 | CM9" href="http://www.gokhanmoral.com/" target="_blank">SiyahKernel</a> kompilierst. <img src='http://suckup.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>&nbsp;</p>
<h3><strong>1.) Installiere Linux + <a title="Cross-Compiler - Wiki" href="http://de.wikipedia.org/wiki/Cross-Compiler" target="_blank">Cross-Compiler</a></strong><strong> </strong></h3>
<p>Als erstes solltest du Linux bereits installiert haben (z.B. <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>, <a href="http://www.debian.org/" target="_blank">Debian</a> &#8230;) ggf. einfach auf einen virtuellen PC z.B. via <a href="http://www.virtualbox.org/" target="_blank">VirtualBox</a>. F&uuml;r Ubuntu gibt es bereits ab Werk <a title="Ubuntu - Ergebnisse der Debian-Paketsuche - gcc arm" href="http://packages.ubuntu.com/search?suite=default&amp;section=all&amp;arch=any&amp;lang=de&amp;searchon=names&amp;keywords=gcc+arm" target="_blank">GCC f&uuml;r ARM</a>, bei Debian habe ich bisher folgende Paket-Quellen ( /etc/apt/sources.list ) mit aufgenommen und anschlie&szlig;end gcc-4.6-arm installiert, jedoch bisher nur mit Debian *sid* getestet.</p>
<p>
<pre>deb http://www.emdebian.org/debian/ unstable main</pre>
</p>
<p>Install:</p>
<p>
<pre>sudo apt-get install build-essential git gcc-4.5-arm-linux-gnueabi wget libncurses5-dev</pre>
</p>
<p>&nbsp;</p>
<h3><strong>2.) Download der Quellen via github</strong></h3>
<p><a title="Fork - github.com" href="http://help.github.com/fork-a-repo/" target="_blank">Fork</a> via github die <a title="gokhanmoral | github | sgs2" href="https://github.com/gokhanmoral" target="_blank">Quellen</a> welche du kompilieren m&ouml;chtest und lade deine eigenen &#8220;Sources&#8221; herunter, um sp&auml;ter ggf. &#8220;Pull Requests&#8221; zu stellen. Daher musst du bei den folgenden Befehlen &#8220;voku&#8221; durch deinen eigenen User-Namen bei github ersetzen.</p>
<p>
<pre> mkdir -p ~/sgs2/kernel/</pre>
</p>
<p>
<pre>cd ~/sgs2/kernel/</pre>
</p>
<p>
<pre>git clone https://github.com/voku/siyahkernel3</pre>
</p>
<p>
<pre>git clone https://github.com/voku/initramfs3</pre>
</p>
<p>PS: &#8220;~&#8221; (tilde) = home-Verzeichnis -> <a title="Linux - Info" href="http://www.unixguide.net/linux/linuxshortcuts.shtml" target="_blank">info</a></p>
<p>Falls du nun einen anderen Cross-Compiler installiert hast als ich, musst du in der Datei (<a title="git - siyahkernel3" href="https://github.com/voku/siyahkernel3/blob/master/build_kernel.sh" target="_blank">build_kernel.sh</a>) die CROSS_COMPILE Variable anpassen. (whereis &#8211; locate the binary, source, and manual page files for a command)</p>
<p>
<pre>cd ~/sgs2/kernel/siyahkernel3</pre>
</p>
<p>
<pre>./build_kernel.sh</pre>
</p>
<p>&nbsp;</p>
<p>Sobald der Kernel kompiliert wurde findest du folgende Datei &#8220;zImage&#8221;, welche wiederum der Kernel selber ist. <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>PS: hier meine Version kompiliert mit gcc-4.6 &amp; <a title="gcc 4.6" href="http://gcc.gnu.org/gcc-4.6/changes.html" target="_blank">-Ofast</a> &amp; neuem Tweak-Script ->  <a href="http://samdroid.voku-online.de/index.php?action=list&amp;dir=SGS2&amp;order=name&amp;srt=yes">http://samdroid.voku-online.de/index.php?action=list&amp;dir=SGS2&amp;order=name&amp;srt=yes</a></p>
<p>&nbsp;</p>
<p><strong>Tipps:</strong> </p>
<p>- CyanogenMod 9 Flashen -> <a title="AOSP 4.0.4 Cyanogen (mod) 9 Flash Anleitung" href="http://www.android-hilfe.de/custom-roms-fuer-samsung-galaxy-s2/220145-rom-imm76d-aosp-4-0-4-cyanogen-mod-9-flash-anleitung-faq-11-04-2012-a.html" target="_blank">AOSP 4.0.4 Cyanogen (mod) 9 Flash Anleitung</a></p>
<p>- keine Angst vor git -> man braucht meistens nur ein paar Befehle -> &#8220;git pull&#8221; &amp; &#8220;git  push&#8221; &amp; &#8220;git add &#8211;all&#8221; </p>
<p>- git? -> <a title="Git - HowTo - deutsch" href="http://rogerdudler.github.com/git-guide/index.de.html" target="_blank">http://rogerdudler.github.com/git-guide/index.de.html </a></p>
<p>- Kernel-Config -> ~/sgs2/kernel/siyahkernel3/arch/arm/configs/siyah_defconfig </p>
<p>- Tweak Skript ->  <a title="Tweak SGS2" href="https://github.com/voku/initramfs3/blob/master/sbin/ext/thunderbolt.sh" target="_blank">~/sgs2/kernel/initramfs3/sbin/ext/thunderbolt.sh</a></p>
<p>- Makefile ->  ~/sgs2/kernel/siyahkernel3/Makefile </p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-1773" data-post-type="none" ><a href="http://suckup.de/howto/android-2-2-froyo-cyanogenmod-samsung-galaxy-spica-i5700/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/08/Android-Dosenfischer-150x150.png" class="attachment-thumbnail wp-post-image" alt="Android 2.2 Froyo (CyanogenMod) &#8211; Samsung GALAXY SPICA I5700" title="" /></a>23. August 2010 -- <a href="http://suckup.de/howto/android-2-2-froyo-cyanogenmod-samsung-galaxy-spica-i5700/" class="wp_rp_title">Android 2.2 Froyo (CyanogenMod) &#8211; Samsung GALAXY SPICA I5700</a></li><li data-position="1" data-poid="in-4671" data-post-type="none" ><a href="http://suckup.de/linux/screenshots-von-android-via-shell/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/14.jpg" alt="Screenshots von Android via shell" /></a>9. Juni 2011 -- <a href="http://suckup.de/linux/screenshots-von-android-via-shell/" class="wp_rp_title">Screenshots von Android via shell</a></li><li data-position="2" data-poid="in-4553" data-post-type="none" ><a href="http://suckup.de/howto/optimized-android-apps-mit-linux-erstellen/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/5.jpg" alt="Optimized Android-Apps mit Linux erstellen" /></a>6. M&auml;rz 2011 -- <a href="http://suckup.de/howto/optimized-android-apps-mit-linux-erstellen/" class="wp_rp_title">Optimized Android-Apps mit Linux erstellen</a></li><li data-position="3" data-poid="in-1096" data-post-type="none" ><a href="http://suckup.de/linux/android/free-android-app-sammlung/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/07/CAP201007232027-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="Free Android-App Sammlung " title="" /></a>28. Juli 2010 -- <a href="http://suckup.de/linux/android/free-android-app-sammlung/" class="wp_rp_title">Free Android-App Sammlung </a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=yAPsZ_erpQo:oGLzSpAn2vQ:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=yAPsZ_erpQo:oGLzSpAn2vQ:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=yAPsZ_erpQo:oGLzSpAn2vQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=yAPsZ_erpQo:oGLzSpAn2vQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=yAPsZ_erpQo:oGLzSpAn2vQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=yAPsZ_erpQo:oGLzSpAn2vQ:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=yAPsZ_erpQo:oGLzSpAn2vQ:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/yAPsZ_erpQo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/howto/cross-compiling-android-kernel-samsung-galaxys2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://suckup.de/howto/cross-compiling-android-kernel-samsung-galaxys2/</feedburner:origLink></item>
		<item>
		<title>C-Programm &amp; Cflags</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/3QxwxO75bfU/</link>
		<comments>http://suckup.de/linux/c-programm-und-cflags/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 13:48:04 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[0Fast]]></category>
		<category><![CDATA[c programm]]></category>
		<category><![CDATA[C-Flag]]></category>
		<category><![CDATA[CFlags]]></category>
		<category><![CDATA[Geschwindigkeit]]></category>
		<category><![CDATA[OFast]]></category>
		<category><![CDATA[SPEED]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5224</guid>
		<description><![CDATA[Ich habe vor einiger Zeit das Prinzip von Makefiles anhand eines kleines Beispiels gezeigt -&#62; http://suckup.de/howto/c/c-programm-primzahlen-makefiles/ &#60;- den selben Quelltext kompilieren wir heute mit verschiedenen C-Flags und 1000000 Schleifendurchl&#228;ufen &#8230;
&#160;
1.)  ohne C-Flags
gcc -lm primzahlen.c  [...]]]></description>
				<content:encoded><![CDATA[<p>Ich habe vor einiger Zeit das Prinzip von Makefiles anhand eines kleines Beispiels gezeigt -&gt; <a href="http://suckup.de/howto/c/c-programm-primzahlen-makefiles/">http://suckup.de/howto/c/c-programm-primzahlen-makefiles/</a> &lt;- den selben Quelltext kompilieren wir heute mit verschiedenen C-Flags und 1000000 Schleifendurchl&auml;ufen &#8230;</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>1.)  ohne C-Flags</strong></span></p>
<pre lang="bash">gcc -lm primzahlen.c -o primzahlen_slow</pre>
<p>&nbsp;</p>
<p>Output: time ./primzahlen_slow</p>
<pre lang="bash">[...]

999961
999979
999983

real 0m1.760s
user 0m1.420s
sys 0m0.164s</pre>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>2.)  ohne C-Flags &amp; ohne &#8220;math.h&#8221; (sqrt)</strong></span></p>
<pre lang="bash">gcc primzahlen.c -o primzahlen_slow</pre>
<p>&nbsp;</p>
<p>Output: time ./primzahlen_slow</p>
<pre lang="bash">[...]

999961
999979
999983

real 0m1.407s
user 0m0.988s
sys 0m0.192s</pre>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>3.)  -O2 &amp; ohne &#8220;math.h&#8221; (sqrt)</strong></span></p>
<pre lang="bash">gcc -O2 primzahlen.c -o primzahlen_2</pre>
<p>&nbsp;</p>
<p>Output: time ./primzahlen_slow</p>
<pre lang="bash">[...]

999961
999979
999983

real 0m1.405s
user 0m0.976s
sys 0m0.188s</pre>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>4.) -Ofast (<a href="http://gcc.gnu.org/gcc-4.6/changes.html">http://gcc.gnu.org/gcc-4.6/changes.html</a>) &amp; ohne &#8220;math.h&#8221; (sqrt)</strong></span></p>
<pre lang="bash">gcc -Ofast primzahlen.c -o primzahlen_fast</pre>
<p>&nbsp;</p>
<p>Output: time ./primzahlen_fast</p>
<pre lang="bash">[...]

999961
999979
999983

real 0m1.377s
user 0m0.980s
sys 0m0.180s</pre>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>5.) -Ofast + amdfam10 (<a href="http://en.gentoo-wiki.com/wiki/Safe_Cflags/AMD#Athlon_X2_7x50.2C_Phenom_X3.2FX4.2C_Phenom_II.2C_Athlon_II_X2.2FX3.2FX4">http://en.gentoo-wiki.com/wiki/Safe_Cflags/AMD#Athlon_X2_7x50.2C_Phenom_X3.2FX4.2C_Phenom_II.2C_Athlon_II_X2.2FX3.2FX4</a>) </strong></span></p>
<p>Ein paar spezielle CFlags f&uuml;r meine CPU. <img src='http://suckup.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (cat /proc/cpuinfo)</p>
<pre lang="bash">gcc -Ofast -funsafe-math-optimizations -funsafe-loop-optimizations -m64 -mtune=amdfam10 -mabm -msse4a -floop-parallelize-all -ftree-parallelize-loops=4 -floop-strip-mine -floop-block -funroll-all-loops -fbranch-target-load-optimize -lm primzahlen.c -o primzahlen_fast</pre>
<p>&nbsp;</p>
<p>Output: time ./primzahlen_fast</p>
<pre lang="bash">[...]

999961
999979
999983

real 0m1.327s
user 0m0.944s
sys 0m0.172s</pre>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>Fazit: </strong></span></p>
<p>Sobald ich -O1, -O2, -O3 oder -Ofast bei diesem kleinen Beispiel nutze ist der Geschwindigkeitsunterschied minimal und es ist egal, ob vorgefertigte mathematische Funktionen genutzt werden oder nicht.</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-780" data-post-type="none" ><a href="http://suckup.de/allgemein/mein-neuer-it-blog/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="mein neuer IT-Blog" /></a>26. Juli 2010 -- <a href="http://suckup.de/allgemein/mein-neuer-it-blog/" class="wp_rp_title">mein neuer IT-Blog</a></li><li data-position="1" data-poid="in-4571" data-post-type="none" ><a href="http://suckup.de/linux/android/tweak-skript-fuer-android-spica/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/4.jpg" alt="Tweak-Skript f&uuml;r Android / Spica" /></a>10. M&auml;rz 2011 -- <a href="http://suckup.de/linux/android/tweak-skript-fuer-android-spica/" class="wp_rp_title">Tweak-Skript f&uuml;r Android / Spica</a></li><li data-position="2" data-poid="in-3835" data-post-type="none" ><a href="http://suckup.de/howto/c/c-programm-primzahlen-makefiles/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/26.jpg" alt="C-Programm – Primzahlen &amp; Makefiles" /></a>1. November 2010 -- <a href="http://suckup.de/howto/c/c-programm-primzahlen-makefiles/" class="wp_rp_title">C-Programm – Primzahlen &#038; Makefiles</a></li><li data-position="3" data-poid="in-4206" data-post-type="none" ><a href="http://suckup.de/linux/c-programm-umgebungsvariablen-unter-linux/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="C-Programm – Umgebungsvariablen unter Linux" /></a>16. Januar 2011 -- <a href="http://suckup.de/linux/c-programm-umgebungsvariablen-unter-linux/" class="wp_rp_title">C-Programm – Umgebungsvariablen unter Linux</a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=3QxwxO75bfU:_DxiVDC0WVc:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=3QxwxO75bfU:_DxiVDC0WVc:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=3QxwxO75bfU:_DxiVDC0WVc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=3QxwxO75bfU:_DxiVDC0WVc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=3QxwxO75bfU:_DxiVDC0WVc:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=3QxwxO75bfU:_DxiVDC0WVc:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=3QxwxO75bfU:_DxiVDC0WVc:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/3QxwxO75bfU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/linux/c-programm-und-cflags/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://suckup.de/linux/c-programm-und-cflags/</feedburner:origLink></item>
		<item>
		<title>Google Chrome App für Android 4</title>
		<link>http://feedproxy.google.com/~r/suckup/~3/t-aXt4U8mv8/</link>
		<comments>http://suckup.de/browser/google-chrome-app-fuer-android-4/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 20:44:59 +0000</pubDate>
		<dc:creator>voku</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome .apk Android]]></category>
		<category><![CDATA[Chrome App]]></category>
		<category><![CDATA[Google App Chrome]]></category>

		<guid isPermaLink="false">http://suckup.de/?p=5196</guid>
		<description><![CDATA[Gerade bei Twitter gelesen: &#8220;Google ver&#246;ffentlicht Chrome f&#252;r Android&#8220;. Leider ist die neue Google Chrome App nur f&#252;r Android 4.0 &#8220;Ice Cream Sandwich&#8221; und f&#252;r bestimmte L&#228;nder verf&#252;gbar&#8230; aber da ich seit einigen Wochen ein Galaxy S2 mit CyanogenMod9 nutze, ist das kein Problem f&#252;r mich.    [...]]]></description>
				<content:encoded><![CDATA[<p>Gerade bei Twitter gelesen: &#8220;Google ver&ouml;ffentlicht <a title="Chrome Beta .apk Market" href="https://market.android.com/details?id=com.android.chrome">Chrome f&uuml;r Android</a>&#8220;. Leider ist die neue Google Chrome App nur f&uuml;r Android 4.0 &#8220;Ice Cream Sandwich&#8221; und f&uuml;r <a title="&Uuml;berpr&uuml;fen Sie, ob Chrome f&uuml;r Android Beta f&uuml;r Ihr Ger&auml;t und Ihren Standort verf&uuml;gbar ist." href="https://support.google.com/chrome/bin/answer.py?hl=de&amp;answer=2393487&amp;p=mktg_mobile_countries">bestimmte L&auml;nder</a> verf&uuml;gbar&#8230; aber da ich seit einigen Wochen ein Galaxy S2 mit CyanogenMod9 nutze, ist das kein Problem f&uuml;r mich. <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />    </p>
<p><div id="attachment_5198" class="wp-caption alignleft" style="width: 210px"><a href="http://www.heise.de/mobil/meldung/Google-veroeffentlicht-Chrome-fuer-Android-1430179.html"><img class="size-medium wp-image-5198 " title="Google ver&ouml;ffentlicht Chrome f&uuml;r Android" src="http://suckup.de/wp-content/uploads//2012/02/Twitter_Chrome_App1-300x230.png" alt="Google ver&ouml;ffentlicht Chrome f&uuml;r Android" width="200" height="153" /></a><p class="wp-caption-text">Google ver&ouml;ffentlicht Chrome f&uuml;r Android</p></div> <div id="attachment_5197" class="wp-caption alignleft" style="width: 210px"><a href="http://winfuture.de/news,68002.html"><img class="size-medium wp-image-5197 " title="Google Chrome f&uuml;r Android Beta ist da - Alle Infos" src="http://suckup.de/wp-content/uploads//2012/02/Twitter_Chrome_App-300x211.png" alt="Google Chrome f&uuml;r Android Beta ist da - Alle Infos" width="200" height="141" /></a><p class="wp-caption-text">Google Chrome f&uuml;r Android Beta ist da - Alle Infos</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Tabs: </strong>ge&ouml;ffnete Tabs vom PC k&ouml;nnen auf&#8217;s Smartphone &uuml;bertragen werden, zudem kann man zwischen den Tabs sehr einfach Navigieren und bereits ge&ouml;ffnete Tabs werden auf Chrome-Startseite angezeigt</p>
<p><div id="attachment_5201" class="wp-caption aligncenter" style="width: 190px"><a href="http://suckup.de/wp-content/uploads//2012/02/07.02.12-3.png"><img class="size-medium wp-image-5201" title="Google_Chrome_Tabs" src="http://suckup.de/wp-content/uploads//2012/02/07.02.12-3-180x300.png" alt="Google_Chrome_Tabs" width="180" height="300" /></a><p class="wp-caption-text">Google_Chrome_Tabs</p></div>
<p>&nbsp;</p>
<p><strong>Chrome + Google Suche: </strong>nat&uuml;rlich ist die Google Suche direkt in der URL integriert </p>
<p><div id="attachment_5199" class="wp-caption aligncenter" style="width: 190px"><a href="http://suckup.de/wp-content/uploads//2012/02/07.02.12-5.png"><img class="size-medium wp-image-5199" title="Chrome_Google" src="http://suckup.de/wp-content/uploads//2012/02/07.02.12-5-180x300.png" alt="Chrome_Google" width="180" height="300" /></a><p class="wp-caption-text">Chrome_Google</p></div>
<p>&nbsp;</p>
<p><strong>Synchronisieren: </strong>Lesezeichen synchronisieren, an Google Diensten (z.B. Google Mail) automatisch anmelden, automatisch Formular Vervollst&auml;ndigung &#8230; </p>
<p><div id="attachment_5202" class="wp-caption aligncenter" style="width: 190px"><a href="http://suckup.de/wp-content/uploads//2012/02/07.02.12-2.png"><img class="size-medium wp-image-5202" title="Chrome_Google_Synchronisieren" src="http://suckup.de/wp-content/uploads//2012/02/07.02.12-2-180x300.png" alt="Chrome_Google_Synchronisieren" width="180" height="300" /></a><p class="wp-caption-text">Chrome_Google_Synchronisieren</p></div>
<p>&nbsp;</p>
<p><strong>Entwickler:</strong> via adb kann man die Webseite direkt vom Computer aufrufen und so anzeigen lassen, wie diese auch auf dem Smartphone angezeigt wird. Wer nicht wei&szlig; was &#8220;adb&#8221; ist, kann dies hier nachlesen -&gt; <a href="http://suckup.de/windows/android-debug-bridge-adb-howto/">http://suckup.de/windows/android-debug-bridge-adb-howto/</a></p>
<p><div id="attachment_5203" class="wp-caption aligncenter" style="width: 190px"><a href="http://suckup.de/wp-content/uploads//2012/02/07.02.12-1.png"><img class="size-medium wp-image-5203" title="Chrome_App_Develop" src="http://suckup.de/wp-content/uploads//2012/02/07.02.12-1-180x300.png" alt="Chrome_App_Develop" width="180" height="300" /></a><p class="wp-caption-text">Chrome_App_Develop</p></div>
<p>&nbsp;</p>
<p>mehr Infos: <a href="http://www.google.com/intl/de/chrome/android/features.html">http://www.google.com/intl/de/chrome/android/features.html</a></p>
<p><iframe frameborder="0" height="315" src="http://www.youtube.com/embed/lVjw7n_U37A" width="560"></iframe></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-1773" data-post-type="none" ><a href="http://suckup.de/howto/android-2-2-froyo-cyanogenmod-samsung-galaxy-spica-i5700/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/08/Android-Dosenfischer-150x150.png" class="attachment-thumbnail wp-post-image" alt="Android 2.2 Froyo (CyanogenMod) &#8211; Samsung GALAXY SPICA I5700" title="" /></a>23. August 2010 -- <a href="http://suckup.de/howto/android-2-2-froyo-cyanogenmod-samsung-galaxy-spica-i5700/" class="wp_rp_title">Android 2.2 Froyo (CyanogenMod) &#8211; Samsung GALAXY SPICA I5700</a></li><li data-position="1" data-poid="in-1127" data-post-type="none" ><a href="http://suckup.de/linux/android/android-launcher/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/07/CAP201007261720-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="Android-Launcher" title="" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/android/android-launcher/" class="wp_rp_title">Android-Launcher</a></li><li data-position="2" data-poid="in-4234" data-post-type="none" ><a href="http://suckup.de/windows/screencasts-direkt-vom-android/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/08/Android-Dosenfischer-150x150.png" class="attachment-thumbnail wp-post-image" alt="Screencasts direkt vom Android" title="" /></a>20. Januar 2011 -- <a href="http://suckup.de/windows/screencasts-direkt-vom-android/" class="wp_rp_title">Screencasts direkt vom Android</a></li><li data-position="3" data-poid="in-1096" data-post-type="none" ><a href="http://suckup.de/linux/android/free-android-app-sammlung/" class="wp_rp_thumbnail"><img width="150" height="150" src="http://suckup.de/wp-content/uploads//2010/07/CAP201007232027-150x150.jpg" class="attachment-thumbnail wp-post-image" alt="Free Android-App Sammlung " title="" /></a>28. Juli 2010 -- <a href="http://suckup.de/linux/android/free-android-app-sammlung/" class="wp_rp_title">Free Android-App Sammlung </a></li></ul><div class="wp_rp_footer"><a class="wp_rp_backlink" target="_blank" rel="nofollow" href="http://www.zemanta.com/?wp-related-posts">Zemanta</a></div></div></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/suckup?a=t-aXt4U8mv8:stt6kOnVsX0:NOtau7UU-s0"><img src="http://feeds.feedburner.com/~ff/suckup?i=t-aXt4U8mv8:stt6kOnVsX0:NOtau7UU-s0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=t-aXt4U8mv8:stt6kOnVsX0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/suckup?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=t-aXt4U8mv8:stt6kOnVsX0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/suckup?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=t-aXt4U8mv8:stt6kOnVsX0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/suckup?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/suckup?a=t-aXt4U8mv8:stt6kOnVsX0:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/suckup?i=t-aXt4U8mv8:stt6kOnVsX0:-BTjWOF_DHI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/suckup/~4/t-aXt4U8mv8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://suckup.de/browser/google-chrome-app-fuer-android-4/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://suckup.de/browser/google-chrome-app-fuer-android-4/</feedburner:origLink></item>
	</channel>
</rss>
