<?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>Coding Blog</title>
	<atom:link href="http://www.coding-blog.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.coding-blog.de</link>
	<description>Der Blog rund ums Programmieren</description>
	<lastBuildDate>Fri, 17 Dec 2010 10:34:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>jQuery Object zu DOM Object konvertieren</title>
		<link>http://www.coding-blog.de/2010/12/jquery-object-zu-dom-object-konvertieren/</link>
		<comments>http://www.coding-blog.de/2010/12/jquery-object-zu-dom-object-konvertieren/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 10:34:53 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[konvertieren]]></category>
		<category><![CDATA[objekt]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=306</guid>
		<description><![CDATA[Ein jQuery-Objekt ist ein wrap von einem DOM-Objekt,  aber dennoch ist es kein &#8216;richtiges&#8217; DOM-Objekt. Damit man aus einem jQuery-Objekt ein DOM-Objekt macht hilft einem die get()-Methode von jQuery. Zum Beispiel, wenn das jQuery-Objekt nur ein DOM-Objekt enthält, kann man $(&#34;div&#34;).get(0) oder $(&#34;div&#34;)[0] aufrufen und man hat ein DOM-Objekt. Wenn man jedoch mehrere DOM-Objekte hat [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<div id="_mcePaste">Ein jQuery-Objekt ist ein wrap von einem DOM-Objekt,  aber dennoch ist es kein &#8216;richtiges&#8217; DOM-Objekt.</div>
<div>Damit man aus einem jQuery-Objekt ein DOM-Objekt macht hilft einem die get()-Methode von jQuery.</div>
<div></div>
<div id="_mcePaste">Zum Beispiel, wenn das jQuery-Objekt nur ein DOM-Objekt enthält, kann man</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">
<pre class="brush: php">$(&quot;div&quot;).get(0)</pre>
</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">oder</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">
<pre class="brush: php">$(&quot;div&quot;)[0]</pre>
</div>
<div></div>
<div>aufrufen und man hat ein DOM-Objekt.</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Wenn man jedoch mehrere DOM-Objekte hat macht man</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">
<pre class="brush: php">$(&quot;div&quot;).get()</pre>
</div>
</div>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=306" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/12/jquery-object-zu-dom-object-konvertieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java: IP zu long konvertieren</title>
		<link>http://www.coding-blog.de/2010/12/java-ip-zu-long-konvertieren/</link>
		<comments>http://www.coding-blog.de/2010/12/java-ip-zu-long-konvertieren/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 10:34:38 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[konvertieren]]></category>
		<category><![CDATA[long]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=303</guid>
		<description><![CDATA[Da Java standartmäßig keine Funktion biete eine IP zu einer long-Variable zu konvertieren habe ich ein bisschen recherchiert und folgende Funktion gebastelt: long ipToLong (String ip) { try { String[] splittedIP = ip.split(&#34;\\.&#34;); if (splittedIP.length &#62; 0) { int A = Integer.parseInt (splittedIP[0]); int B = Integer.parseInt (splittedIP[1]); int C = Integer.parseInt (splittedIP[2]); int D [...]]]></description>
			<content:encoded><![CDATA[<p>Da Java standartmäßig keine Funktion biete eine IP zu einer long-Variable zu konvertieren habe ich ein bisschen recherchiert und folgende Funktion gebastelt:</p>
<pre class="brush: java">
long ipToLong (String ip)
    {
    	try
    	{
	    	String[] splittedIP = ip.split(&quot;\\.&quot;);
	    	if (splittedIP.length &gt; 0) {
		    	int A = Integer.parseInt (splittedIP[0]);
		    	int B = Integer.parseInt (splittedIP[1]);
		    	int C = Integer.parseInt (splittedIP[2]);
		    	int D = Integer.parseInt (splittedIP[3]);

		    	return (A * (256*256*256) + B * (256*256) + C * 256 + D);
	    	}

	    	return 0;
	    } catch (Exception e) {
    		System.out.println (&quot;IP Convert failed: &quot; + e);
    		return 0;
    	}

    }
</pre>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=303" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/12/java-ip-zu-long-konvertieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java: Int zu String Convert</title>
		<link>http://www.coding-blog.de/2010/12/java-int-zu-string-convert/</link>
		<comments>http://www.coding-blog.de/2010/12/java-int-zu-string-convert/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 09:45:41 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[integer]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[valueof]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=298</guid>
		<description><![CDATA[Wie konvertiert man eine Integer Variable zu einer String Variable in Java? Zuerst hab ich es so versucht: int i = 12; System.out.println(i.toString ()); so bekommt man allerdings einen unschönen &#8220;Can´t invoke a method on an int.&#8221; Fehler Also bin ich auf folgende 2 Lösungen gekommen: int i = 12; System.out.println (&#34;&#34; + i); // [...]]]></description>
			<content:encoded><![CDATA[<p>Wie konvertiert man eine Integer Variable zu einer String Variable in Java?<br />
Zuerst hab ich es so versucht:</p>
<pre class="brush: java">
int i = 12;
System.out.println(i.toString ());
</pre>
<p>so bekommt man allerdings einen unschönen <strong>&#8220;Can´t invoke a method on an int.&#8221;</strong> Fehler</p>
<p>Also bin ich auf folgende 2 Lösungen gekommen:</p>
<pre class="brush: java">
int i = 12;

System.out.println (&quot;&quot; + i); // die unschöne Variante

System.out.println (String.valueOf(i)); // die wohl beste Lösung
</pre>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=298" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/12/java-int-zu-string-convert/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java: String zu InputStream und zurück</title>
		<link>http://www.coding-blog.de/2010/11/java-string-zu-inputstream-und-zuruck/</link>
		<comments>http://www.coding-blog.de/2010/11/java-string-zu-inputstream-und-zuruck/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 16:32:10 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[inputstream]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[konvertieren]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=292</guid>
		<description><![CDATA[Heute dreht sich mal alles um Java. Soeben stand ich vor dem Problem wie man einen String zu InputStream konvertiert und dann wieder zurück. Folgendes ist in Java die Lösung. Von String zu InputStream ist das nur ein Einzeiler: // Die benötigten Imports import java.io.ByteArrayInputStream; import java.io.InputStream; String text = &#34;test&#34;; InputStream is = new [...]]]></description>
			<content:encoded><![CDATA[<p>Heute dreht sich mal alles um Java.<br />
Soeben stand ich vor dem Problem wie man einen String zu InputStream konvertiert und dann wieder zurück.<br />
Folgendes ist in Java die Lösung.</p>
<p>Von String zu InputStream ist das nur ein Einzeiler:</p>
<pre class="brush: java">
// Die benötigten Imports
import java.io.ByteArrayInputStream;
import java.io.InputStream;

String text = &quot;test&quot;;
InputStream is = new ByteArrayInputStream(text.getBytes(&quot;UTF-8&quot;));
</pre>
<p>Von InputStream zu String sind es allerdings ein paar Zeilen mehr <img src='http://www.coding-blog.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<pre class="brush: java">
// Die benötigten Imports
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.io.Writer;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class StreamToString {

    public static void main(String[] args) throws Exception {
        StreamToString sts = new StreamToString();

        /*
         * Get input stream of our data file. This file can be in
         * the root of you application folder or inside a jar file
         * if the program is packed as a jar.
         */
        InputStream is =
                sts.getClass().getResourceAsStream(&quot;/data.txt&quot;);

        /*
         * Call the method to convert the stream to string
         */
        System.out.println(sts.convertStreamToString(is));
    }

    public String convertStreamToString(InputStream is)
            throws IOException {
        /*
         * To convert the InputStream to String we use the
         * Reader.read(char[] buffer) method. We iterate until the
         * Reader return -1 which means there&#039;s no more data to
         * read. We use the StringWriter class to produce the string.
         */
        if (is != null) {
            Writer writer = new StringWriter();

            char[] buffer = new char[1024];
            try {
                Reader reader = new BufferedReader(
                        new InputStreamReader(is, &quot;UTF-8&quot;));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                is.close();
            }
            return writer.toString();
        } else {
            return &quot;&quot;;
        }
    }
}
</pre>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=292" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/11/java-string-zu-inputstream-und-zuruck/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ext JS 3.3 ist fertig</title>
		<link>http://www.coding-blog.de/2010/10/ext-js-3-3-ist-fertig/</link>
		<comments>http://www.coding-blog.de/2010/10/ext-js-3-3-ist-fertig/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 05:54:55 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[datagrid]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[google calender]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=284</guid>
		<description><![CDATA[Sencha hat seine Javascript-Bibliothek Ext JS in der Version 3.3 veröffentlicht. Sie bietet neue Komponenten wie Pivotgrid und Calender. Ext JS 3.3 umfasst rund 200 Neuerungen und bringt auch komplett neue Komponenten mit. Dazu zählt unter anderem Pivotgrid, ein Werkzeug zur Datenzusammenfassung in Tabellenform. Damit lassen sich große Datenmengen verdichten und in ein verständliches Format [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Sencha hat seine Javascript-Bibliothek Ext JS in der Version 3.3 veröffentlicht. Sie bietet neue Komponenten wie Pivotgrid und Calender.</strong><br />
<span id="more-284"></span><br />
Ext JS 3.3 umfasst rund 200 Neuerungen und bringt auch komplett neue Komponenten mit. Dazu zählt unter anderem Pivotgrid, ein Werkzeug zur Datenzusammenfassung in Tabellenform. Damit lassen sich große Datenmengen verdichten und in ein verständliches Format bringen, beispielsweise um Verkaufsdaten nach Städten auszuwerten.</p>
<div id="_mcePaste">Die <a href="http://dev.sencha.com/deploy/ext-3.3.0/examples/pivotgrid/simple.html" target="_blank">Pivotgrids</a> lassen sich mit bestehenden Daten-Stores verbinden und sollten sich so mit wenigen Codezeilen in bestehende Applikationen auf Basis von Ext JS einbinden lassen.</div>
<div>&nbsp;</div>
<div>
<div>Neu sind auch <a href="http://dev.sencha.com/deploy/ext-3.3.0/examples/calendar/index.html" target="_blank">Komponenten zur Kalenderdarstellung</a>, die stark an Googles Kalender erinnern. Damit lassen sich Termine nach Tagen, Wochen und Monaten anzeigen, eintragen und verschieben. Allerdings werden die Kalender-Komponenten derzeit nur als Beispiele im Rahmen des SDK mitgeliefert, sie sind noch nicht Bestandteil der Datei ext-all.js.</div>
<div>&nbsp;</div>
<div>Darüber hinaus wurde die Grid-Komponente um eine Aktionsspalte (Actioncolumn) erweitert. Mit kleinen Icons lassen sich bestimmte Aktionen aus einer Tabelle heraus aufrufen.</div>
<div>&nbsp;</div>
<div><a href="http://www.sencha.com/products/js/" target="_blank">Ext JS</a> steht unter der GPL, kann aber für proprietäre Applikationen auch unter einer kommerziellen Lizenz genutzt werden. Die Preise beginnen bei 729 US-Dollar.<a href="http://www.golem.de/sonstiges/impressum.html" target="_blank"> (ji)</a></div>
</div>
<div>&nbsp;</div>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=284" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/10/ext-js-3-3-ist-fertig/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Evercookie &#8211; Das fast unlöschbare Cookie</title>
		<link>http://www.coding-blog.de/2010/09/evercookie-das-fast-unloschbare-cookie/</link>
		<comments>http://www.coding-blog.de/2010/09/evercookie-das-fast-unloschbare-cookie/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 16:51:12 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[javascript api]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=276</guid>
		<description><![CDATA[Samy Kamkar hat mit Evercookie ein Javascript-API veröffentlicht, das sehr schwer zu löschende Cookies bei Nutzern platziert. Evercookie kombiniert acht Wege, um Daten beim Nutzer zu speichern. Damit wird er eindeutig identifizierbar, auch wenn er seine Cookies regelmäßig löscht. &#160; Evercookie kombiniert verschiedene Techniken, um Cookiedaten zu speichern. Das sind zunächst einmal herkömmliche HTTP-Cookies und [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Samy Kamkar hat mit Evercookie ein Javascript-API veröffentlicht, das sehr schwer zu löschende Cookies bei Nutzern platziert. Evercookie kombiniert acht Wege, um Daten beim Nutzer zu speichern. Damit wird er eindeutig identifizierbar, auch wenn er seine Cookies regelmäßig löscht.</div>
<div><span id="more-276"></span>
<div>&nbsp;</div>
<p> Evercookie kombiniert verschiedene Techniken, um Cookiedaten zu speichern. Das sind zunächst einmal herkömmliche HTTP-Cookies und sogenannte Flash-Cookies (Local Shared Objects) sowie diverse HTML5-Techniken: Session Storage, Local Storage, Global Storage und <a href="http://dev.w3.org/html5/webdatabase/" target="_blank">Database Storage</a> via SQLite.</div>
<div id="_mcePaste">Hinzu kommen zwei ungewöhnliche Methoden: So versteckt Kamkar Cookiedaten zusätzlich in den RGB-Werten einer PNG-Datei, die für jeden Nutzer automatisch erstellt und von dessen Browser gecacht wird. Über das HTML5-Canvas-Tag liest er dann die Pixeldaten wieder ein und rekonstruiert seine Cookiedaten.</div>
<div>&nbsp;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Zu guter Letzt greift Kamkar eine von <a href="http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-youve-been.html" target="_blank">Jeremiah Grossman entwickelte Technik</a> auf, wobei <a href="http://samy.pl/csshack/" target="_blank">Daten in der Browserhistory</a> untergebracht werden.</div>
<div>&nbsp;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Stellt Evercookie nun fest, dass ein Nutzer die über einzelne Speichermethoden abgelegten Daten gelöscht hat, erstellt es die Daten aus noch verfügbaren Daten erneut. Nur wenn alle Speicherorte gleichzeitig gelöscht werden, lässt sich das Cookie also wieder loswerden. Zudem soll in Safari der Modus Privates Surfen die Funktion von Evercookie wirksam unterbinden, was vermutlich auch auf ähnliche Funktionen in anderen Browsern zutreffen dürfte.</div>
<div>&nbsp;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Damit aber nicht genug: Kamkar will Evercookie um weitere Speichermethoden erweitern. Auf seiner Liste stehen Unterstützung für Silverlights Isolated Storage, HTTP ETags, Window.name-Caching und Java, um aus den Daten der Netzwerkkarte eine eindeutige Kennung zu erzeugen.</div>
<div>&nbsp;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Evercookie ist laut Kamkar Open Source, kommt aber ohne konkrete Lizenz daher. Details zu Evercookie finden sich unter <a href="http://samy.pl/evercookie" target="_blank">samy.pl/evercookie</a>. <a href="http://www.golem.de/sonstiges/impressum.html" target="_blank">(ji)</a></div>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=276" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/09/evercookie-das-fast-unloschbare-cookie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wie wichtig ist das unsetten von Klassen, Variablen&#8230; in PHP</title>
		<link>http://www.coding-blog.de/2010/09/wie-wichtig-ist-das-unsetten-von-klassen-variablen-in-php/</link>
		<comments>http://www.coding-blog.de/2010/09/wie-wichtig-ist-das-unsetten-von-klassen-variablen-in-php/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 16:12:11 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[klassen]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[performace]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[unset]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=255</guid>
		<description><![CDATA[Da ich mich das auch gefragte habe, dachte ich mir ich mach einfach einen Test&#8230; Also wie wichtig ist es nun wirklich das ich Variablen,  Klassen und Methoden im PHP Code unsette? Ich habe den Test gemacht und das Ergebnis ist nicht verwunderlich. Das ist mein PHP Code ohne des unsetten der Klassen: &#60;?php class [...]]]></description>
			<content:encoded><![CDATA[<p>Da ich mich das auch gefragte habe, dachte ich mir ich mach einfach einen Test&#8230;<br />
Also wie wichtig ist es nun wirklich das ich Variablen,  Klassen und Methoden im PHP Code unsette?</p>
<p>Ich habe den Test gemacht und das Ergebnis ist nicht verwunderlich.<span id="more-255"></span></p>
<p>Das ist mein PHP Code ohne des unsetten der Klassen:</p>
<pre class="brush: php">
&lt;?php
class Foo
{
    public $var = &#039;3.1415962654&#039;;
}

$baseMemory = memory_get_usage();

for ( $i = 0; $i &lt;= 100000; $i++ )
{
        $a = new Foo;
        $a-&gt;self = $a;
}

echo ((memory_get_peak_usage()) / 1024 /024). &quot; MB\n&quot;;
echo ((memory_get_usage() - $baseMemory) / 1024 / 1024) . &quot; MB\n&quot;;
?&gt;
</pre>
<p>Dabei kam folgendes Resultat heraus:</p>
<p>Der Memory Peak lad bei unglaublichen <b>3395,21 MB Das sind 3,3GB!!!</b><br />
Und der ganze Memory Verbrauch lad bei <b>66,23 MB</b>.<br />
[/sourcecode]</p>
<p>Also habe ich das ganze nochmal mit unsetten der Klasse im PHP Code gemacht:</p>
<pre class="brush: php">
&lt;?php
class Foo
{
    public $var = &#039;3.1415962654&#039;;

    // Das ist die neue Funktion zum vernichten der Klasse
    function destroy()
    {
        $this-&gt;self = null;
    }

}

$baseMemory = memory_get_usage();

for ( $i = 0; $i &lt;= 100000; $i++ )
{
        $a = new Foo;
        $a-&gt;self = $a;
        $a-&gt;destroy(); // Hier wird die Klasse bei jedem Aufruf vernichtet
}

echo ((memory_get_peak_usage()) / 1024 /024). &quot; MB\n&quot;;
echo ((memory_get_usage() - $baseMemory) / 1024 / 1024) . &quot; MB\n&quot;;
?&gt;
</pre>
<p><strong>Und siehe da&#8230;. es ist sogar sehr wichtig, dass wir in unserem PHP Code Klassen, Variablen und Mehtoden unsetten!</strong></p>
<p>Der Memory Peak beträgt jetzt nur noch <b>5,10 MB!!!</b><br />
Und der komplette Memory Verbraucht liegt bei gerade mal 0,0014 MB was ca. <b>1,4 KB</b> sind.</p>
<p>Hier nochmal die Zusammenfassung mit und ohne unsetten der Klassen im PHP Code.</p>
<pre class="brush: php">
Verbraucht mit reset:
5.1078125 MB
0.00140380859375 MB

Verbrauch ohne reset:
3395.219140625 MB
66.230880737305 MB
</pre>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=255" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/09/wie-wichtig-ist-das-unsetten-von-klassen-variablen-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DPI eines Bildes in PHP auslesen</title>
		<link>http://www.coding-blog.de/2010/09/dpi-eines-bildes-in-php-auslesen/</link>
		<comments>http://www.coding-blog.de/2010/09/dpi-eines-bildes-in-php-auslesen/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 11:06:33 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[bild]]></category>
		<category><![CDATA[dpi]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=246</guid>
		<description><![CDATA[Gerade eben habe ich eine Funktion gefunden mit der es möglich ist die DPI eines Bildes per PHP auszulesen. Und das schönste daran ist das man weder die GD-Libary noch ImageMagick braucht. &#160; Und so sieht die Funktion aus: function get_dpi($filename){ // open the file and read first 20 bytes. $a = fopen($filename,&#039;r&#039;); $string = [...]]]></description>
			<content:encoded><![CDATA[<p>Gerade eben habe ich eine Funktion gefunden mit der es möglich ist die DPI eines Bildes per PHP auszulesen.<br />
Und das schönste daran ist das man weder die GD-Libary noch ImageMagick braucht.</p>
<div>&nbsp;</div>
<p>Und so sieht die Funktion aus:</p>
<pre class="brush: php">
function get_dpi($filename){

    // open the file and read first 20 bytes.
    $a = fopen($filename,&#039;r&#039;);
    $string = fread($a,20);
    fclose($a);

    // get the value of byte 14th up to 18th
    $data = bin2hex(substr($string,14,4));
    $x = substr($data,0,4);
    $y = substr($data,4,4);
    return array(hexdec($x),hexdec($y));

}
</pre>
<div>&nbsp;</div>
<p>Die Funktion funktioniert allerdings nicht bei Bildern von einer Digitalkamera&#8230;<br />
Wenn man z.B. ein Bild in Photoshop erstellt kann man die exakten DPI auslesen.</p>
<p>Und natürlich gibt es auch wie immer ein Stück Sample Code dazu:</p>
<pre class="brush: php">
print_r(get_dpi2(&#039;filename.jpg&#039;));
</pre>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=246" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/09/dpi-eines-bildes-in-php-auslesen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jailbreak mit iOS4.1! Wie offen ist Apples neues Betriebssytem?</title>
		<link>http://www.coding-blog.de/2010/09/jailbreak-mit-ios4-1-wie-offen-ist-apples-neues-betriebssytem/</link>
		<comments>http://www.coding-blog.de/2010/09/jailbreak-mit-ios4-1-wie-offen-ist-apples-neues-betriebssytem/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 13:13:59 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[Apple iOS]]></category>
		<category><![CDATA[ios4.1]]></category>
		<category><![CDATA[sicherheitsproblem]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=241</guid>
		<description><![CDATA[Wenige Stunden nach der Freigabe von iOS 4.1 4.1 für iPhone und Co. sind die ersten Hacks dafür erschienen. Nun mehren sich Berichte über ein grundlegendes Sicherheitsproblem, das Apple in die neue Version seines Handheld-Betriebssystems eingebaut haben könnte. Während das iPhone-Dev-Team iOS 4.1 anfangs noch als &#8220;Falle&#8221; bezeichnete, haben die Hacker nun unter anderem einen [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Wenige Stunden nach der Freigabe von iOS 4.1 4.1 für iPhone und Co. sind die ersten Hacks dafür erschienen. Nun mehren sich Berichte über ein grundlegendes Sicherheitsproblem, das Apple in die neue Version seines Handheld-Betriebssystems eingebaut haben könnte.</div>
<div><span id="more-241"></span></div>
<div id="_mcePaste">
<div id="_mcePaste">
<p>Während das iPhone-Dev-Team iOS 4.1 anfangs noch als &#8220;<em>Falle</em>&#8221; bezeichnete, haben die Hacker nun unter anderem einen Weg gefunden, die an neuer Stelle gespeicherten Signaturen von iOS 4.1 auszulesen, wie <a href="http://twitter.com/pod2g/status/23950781610" target="_blank">einem Twitter-Post</a> des iPhone-Hackers &#8220;pod2g&#8221; zu entnehmen ist.</p>
</div>
<div>
<p>Der Grund der Aufregung in der Hackerszene: Apple hat mit iOS 4.0 und Version 4.1 zahlreiche Sicherheitslücken geschlossen. Solche Fehler sind aber die Grundlage, um überhaupt Code in die Geräte einzuschleusen und so Apples Sperre gegen nichtautorisierte Programme zu umgehen.</p>
</div>
</div>
<div>
<p>Seit Jahren liefern sich Apple und die Hacker hier ein Katz-und-Maus-Spiel. Einer der langlebigsten Angriffe, der lange nicht verhindert werden konnte, richtete sich beispielsweise gegen die Firmware der Funkbausteine. Die aber kann ein Smartphone-Hersteller selten selbst ändern. Zudem war es zeitweise auch möglich, ein iPhone nur durch den Besuch einer speziell präparierten Webseite zu entsperren. In diesem Fall war ein Fehler im Browser das Einfallstor.&#8221;</p>
</div>
<div>
<p>Wie die britische Website <a href="http://www.theregister.co.uk/2010/09/09/ios_4_dot_1_jailbreak/" target="_blank">The Register</a> berichtet, hat sich Apple durch ein neues Boot-ROM aber möglicherweise ein grundlegendes Sicherheitsproblem eingefangen. Vergleichbar einem PC-BIOS steuert das Boot-ROM das Laden des Betriebssystems. Wie The Register von mehreren iPhone-Hackern erfahren haben will, richten sich die jüngsten Angriffe direkt auf das Boot-ROM und den Baustein, in dem es steckt.</p>
</div>
<div>Unklar ist noch, ob es sich dabei um ein nicht wiederbeschreibbares ROM handelt oder um einen Flash-Baustein. Sollte der Code des Boot-ROMs nicht per Software zu aktualisieren sein, wären die so ausgestatteten Geräte ohne Änderungen an der Hardware dauerhaft Angriffen ausgesetzt. Alle seit dem November 2009 ausgelieferten iOS-Geräte, also iPhone, iPod touch und iPad, sollen laut The Register das fragliche ROM besitzen. <a href="http://www.golem.de/sonstiges/impressum.html" target="_blank">(nie)</a></div>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=241" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/09/jailbreak-mit-ios4-1-wie-offen-ist-apples-neues-betriebssytem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple lockert Einschränkungen für Entwickler</title>
		<link>http://www.coding-blog.de/2010/09/apple-lockert-einschrankungen-fur-entwickler/</link>
		<comments>http://www.coding-blog.de/2010/09/apple-lockert-einschrankungen-fur-entwickler/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 09:13:28 +0000</pubDate>
		<dc:creator>garkeinplan</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[einschränkung]]></category>

		<guid isPermaLink="false">http://www.coding-blog.de/?p=231</guid>
		<description><![CDATA[Apple passt mit sofortiger Wirkung seine iOS-Entwickler-Richtlinien an und zieht einige Anfang 2010 eingeführte Einschränkungen zurück. Zudem veröffentlicht Apple erstmals seine internen Richtlinien für die Zulassung zum App Store. Anfang 2010 hatte Apple die Lizenzbedingungen für iOS-Entwickler verändert und unter anderem die Verwendung von Entwicklerwerkzeugen eingeschränkt, was zu heftigen Diskussionen führte. Damals hatte Apple festgelegt: [...]]]></description>
			<content:encoded><![CDATA[<p>Apple passt mit sofortiger Wirkung seine iOS-Entwickler-Richtlinien an und zieht einige Anfang 2010 eingeführte Einschränkungen zurück. Zudem veröffentlicht Apple erstmals seine internen Richtlinien für die Zulassung zum App Store.<span id="more-231"></span></p>
<div id="_mcePaste">Anfang 2010 hatte Apple die Lizenzbedingungen für iOS-Entwickler verändert und unter anderem die Verwendung von Entwicklerwerkzeugen eingeschränkt, was zu heftigen Diskussionen führte. Damals hatte Apple festgelegt:</p>
<div>&nbsp;</div>
<p><em>&#8220;Applikationen müssen ursprünglich in Objective-C, C, C++ oder Javascript, wie es von der Webkit-Engine des iPhone OS ausgeführt wird, geschrieben sein, und nur Code, der in C, C++ und Objective-C geschrieben ist, darf direkt mit den dokumentierten APIs kompiliert oder verlinkt werden (beispielsweise sind Applikationen, die gegen die dokumentierten APIs über eine zwischengeschaltete Übersetzung oder Kompatibilitätsschicht oder -werkzeug gelinkt sind, verboten).&#8221;</em></div>
<div>&nbsp;</div>
<div>Diese Änderung <a href="http://www.apple.com/pr/library/2010/09/09statement.html" target="_blank">nimmt Apple mit sofortiger Wirkung zurück</a> und passt ebenfalls mit sofortiger Wirkung die Abschnitte 3.3.1, 3.3.2 und 3.3.9 seines iOS-Developer-Program-Lizenzabkommens an. Insbesondere hebt es alle Beschränkungen hinsichtlich der Verwendung von Entwicklungswerkzeugen zum Entwickeln von iOS-Applikationen auf, &#8220;so lange die dadurch entstehenden Apps keinen Code herunterladen&#8221;.</div>
<div>&nbsp;</div>
<p><strong>App Store Review Guidelines </strong></p>
<p><span style="font-weight: normal;">Auch in einem zweiten, oft kritisierten Punkt geht Apple auf seine Kritiker zu: Das Unternehmen veröffentlicht erstmals die Richtlinien, die beim Prüfen einer App für die Zulassung im App Store angewandt werden. Die </span><a href="https://developer.apple.com/appstore/resources/approval/guidelines.html" target="_blank"><span style="font-weight: normal;">App Store Review Guidelines</span></a><span style="font-weight: normal;"> sollen Entwicklern helfen zu verstehen, wie Apple eingereichte Apps prüft. </span></p>
<p><span style="font-weight: normal;">Darüber hinaus bietet Apple ein Formular an, mit dem Entwickler, deren Applikationen abgelehnt wurden, Einspruch einlegen und weitere Details zur Funktion ihrer Applikationen einreichen können.</p>
<p>Letztendlich will Apple damit dem Argument begegnen, Applikationen würden willkürlich abgelehnt und Investitionen in eine Entwicklung von iOS-Applikationen seien entsprechend unsicher. In einem Punkt, der vor allem für Verlage relevant ist, aber bleibt Apple hart: Entwickler dürfen ohne explizite Erlaubnis von Apple keine weiteren Funktionen oder Inhalte für eine Applikation freischalten, es sei denn, sie verwenden dafür Apples Funktion für In-App-Verkäufe. <a href="http://www.golem.de/sonstiges/impressum.html" target="_blank">(ji)</a><br />
</span></p>
 <img src="http://www.coding-blog.de/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=231" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.coding-blog.de/2010/09/apple-lockert-einschrankungen-fur-entwickler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.coding-blog.de/feed/ ) in 0.93703 seconds, on Feb 6th, 2012 at 10:00 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 6th, 2012 at 11:00 am UTC -->
