<?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>Coder-Blog</title>
	<atom:link href="http://coder-blog.de/feed" rel="self" type="application/rss+xml" />
	<link>http://coder-blog.de</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Fri, 30 Mar 2012 08:43:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Wie man eine MAC-Adresse auf OS X ändert</title>
		<link>http://coder-blog.de/wie-man-eine-mac-adresse-auf-os-x-andert</link>
		<comments>http://coder-blog.de/wie-man-eine-mac-adresse-auf-os-x-andert#comments</comments>
		<pubDate>Fri, 15 Jul 2011 17:53:00 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[mac-adresse ändern]]></category>
		<category><![CDATA[netzwerksicherheit]]></category>
		<category><![CDATA[spoof mac address]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=414</guid>
		<description><![CDATA[Die MAC-Adresse ist eine eindeutige Kennung, die jeder Netzwerkadapter trägt. Sie wird benötigt um ein Gerät mit einem Rechnernetz zu verbinden. Viele Router haben einen MAC-Adressen-Filter eingebaut. Dadurch wird der Zugriff auf diesen Router auf bestimmte Geräte begrenzt. Doch wie wir im Laufe dieses Beitrags lesen werden, bietet diese Einstellung nur eine trügerische Sicherheit. <a href="http://coder-blog.de/wie-man-eine-mac-adresse-auf-os-x-andert">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Die <a title="Wikipedia: MAC-Adresse" href="http://de.wikipedia.org/wiki/MAC-Adresse" target="_blank">MAC-Adresse</a> ist eine eindeutige Kennung, die jeder Netzwerkadapter trägt. Sie wird benötigt um ein Gerät mit einem Rechnernetz zu verbinden. Viele Router haben einen MAC-Adressen-Filter eingebaut. Dadurch wird der Zugriff auf diesen Router auf bestimmte Geräte begrenzt. Doch wie wir im Laufe dieses Beitrags lesen werden, bietet diese Einstellung nur eine trügerische Sicherheit. <span id="more-414"></span></p>
<h4>Wie kann ich meine MAC-Adresse herausfinden?</h4>
<p>Bevor man beginnt seine MAC-Adresse zu ändern, sollte man zunächst in Erfahrung bringen wie die eigene MAC-Adresse lautet. Am einfachsten lässt sich dies mit dem Terminal machen. Das Terminal ist auf OS X 1.6.x in Programme -&gt; Dienstprogramme zu finden. Der Befehl um sich die MAC-Adresse der WLAN-Karte ausgeben zu lassen, könnt ihr hier entnehmen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> en1 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> ether</pre></div></div>

<p>Die Ausgabe sollte dann in etwa so lauten</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ether 00:<span style="color: #000000;">26</span>:ab:2b:af:<span style="color: #000000;">39</span></pre></div></div>

<p>Der Wert hinter &#8220;ether&#8221; ist eure MAC-Adresse. Hier kann man auch die gängige Syntax erkennen: Eine MAC-Adresse besteht aus sechs Hexadezimalzahlen, die durch Doppelpunkte getrennt sind.</p>
<h4>Was ist vor der Änderung der MAC-Adresse zu beachten?</h4>
<p>Bevor man die MAC-Adresse ändern kann, sollte man sich vergewissern, dass man mit keinem Netzwerk verbunden ist. Airport sollte jedoch aktiviert bleiben. Am einfachsten trennt man sich von einem verbundenen Netzwerk, indem man das Kommandozeilen-Tool &#8220;airport&#8221; nutzt. Leider ist es mit den Standardeinstellungen nicht einfach zu erreichen. Um sich lästiges Tippen zu ersparen, kann man sich eine Verknüpfung mit dieser Anweisung anlegen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>System<span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>PrivateFrameworks<span style="color: #000000; font-weight: bold;">/</span>Apple80211.framework<span style="color: #000000; font-weight: bold;">/</span>Versions<span style="color: #000000; font-weight: bold;">/</span>Current<span style="color: #000000; font-weight: bold;">/</span>Resources<span style="color: #000000; font-weight: bold;">/</span>airport <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>airport</pre></div></div>

<p>Einfach diesen Befehl kopieren, ins Terminal einfügen und ausführen. Der Aufruf von &#8220;sudo&#8221; erfordert eine Passworteingabe. Dafür tippt man sein Root-Passwort ein. Schon können wir uns damit von einem Netzwerk trennen</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> airport <span style="color: #660033;">-z</span></pre></div></div>

<p>Dieser Befehl erledigt die ganze Arbeit für uns.</p>
<h4>Wie ändere ich meine MAC-Adresse?</h4>
<p>Nun können wir uns dem eigentlichen Thema widmen. Möchten wir beispielsweise unsere MAC-Adresse zu 00:11:22:33:44:55 ändern, nutzen wir diesen Befehl dafür</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">ifconfig</span> en1 ether 00:<span style="color: #000000;">11</span>:<span style="color: #000000;">22</span>:<span style="color: #000000;">33</span>:<span style="color: #000000;">44</span>:<span style="color: #000000;">55</span></pre></div></div>

<p>Nun sollten wir eine andere MAC-Adresse haben.</p>
<h4>Wie prüfe ich die Änderung der MAC-Adresse?</h4>
<p>Die Änderung der MAC-Adresse zu überprüfen ist gar nicht schwer. Man ruft einfach den bereits oben genutzten Befehl auf.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> en1 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> ether</pre></div></div>

<p>Und siehe da, unsere MAC-Adresse wurde erfolgreich geändert.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ether 00:<span style="color: #000000;">11</span>:<span style="color: #000000;">22</span>:<span style="color: #000000;">33</span>:<span style="color: #000000;">44</span>:<span style="color: #000000;">55</span></pre></div></div>

<p>War doch gar nicht so schwer oder?</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/wie-man-eine-mac-adresse-auf-os-x-andert/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>IP-Sperre umgehen oder IP-Adresse ändern</title>
		<link>http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern</link>
		<comments>http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern#comments</comments>
		<pubDate>Wed, 13 Jul 2011 21:13:45 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[anleitung]]></category>
		<category><![CDATA[ip-adresse ändern]]></category>
		<category><![CDATA[ip-sperre umgehen]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=372</guid>
		<description><![CDATA[Die gesamte Kommunikation im Internet läuft über das Internet Protocol oder kurz gesagt IP. Häuft wird im Sprachgebrauch die IP-Adresse auch als IP bezeichnet. Die IP-Adresse ist jedoch ein Element des Internetprotokolls. Mit Hilfe der IP-Adresse wird festgelegt von welchem Absender zu welchem Empfänger eine Nachricht gehen soll. IP-Adressen müssen deshalb für jedes mit dem Internet verbundenen Gerät eindeutig sein.  <a href="http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Die gesamte Kommunikation im Internet läuft über das Internet Protocol oder kurz gesagt IP. Häuft wird im Sprachgebrauch die <a title="Wikipedia: IP-Adresse" href="http://de.wikipedia.org/wiki/IP-Adresse" target="_blank">IP-Adresse</a> auch als IP bezeichnet. Die IP-Adresse ist jedoch ein Element des Internetprotokolls. Mit Hilfe der IP-Adresse wird festgelegt von welchem Absender zu welchem Empfänger eine Nachricht gehen soll. IP-Adressen müssen deshalb für jedes mit dem Internet verbundenen Gerät eindeutig sein. (Dies stimmt nicht ganz, würde aber hier zu weit führen.)</p>
<p>IP-Adressen unterscheiden sich oft von Land zu Land. Manche IP-Adressen können sogar mit einer Stadt in Verbindung gebracht werden. So liefert uns beispielsweise die Seite <a title="Utrace: IP Lokalisieren" href="http://www.utrace.de/?query=130.149.7.201" target="_blank">http://utrace.de</a>, dass sich die IP-Adresse 130.149.7.201 in Berlin befindet und zur TU-Berlin gehört.</p>
<p>Und so kann auch beispielsweise youtube herausfinden, dass wir uns in Deutschland befinden und uns den Zugriff auf ein Video verweigern. Probieren wir doch mal aus das Lied <a title="Youtube: Linkin Park - The Catalyst" href="http://www.youtube.com/watch?v=51iquRYKPbs&amp;feature=relmfu" target="_blank">&#8220;The Catalyst&#8221;</a> von Linkin Park anzusehen und freuen uns über eine Fehlermeldung.</p>
<p><span id="more-372"></span></p>
<p><a href="http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern/bildschirmfoto-2011-07-13-um-22-25-34" rel="attachment wp-att-373" target="_blank"><img class="alignnone size-medium wp-image-373 wp-caption" title="Youtube IP-Sperre Deutschland" src="http://coder-blog.de/wp-content/uploads/Bildschirmfoto-2011-07-13-um-22.25.34-300x186.png" alt="" width="300" height="186" /></a></p>
<p>Ich bin mir sicher, hätten wir eine IP aus den USA, könnten wir uns das Video problemlos ansehen. Dann sollten wir es doch mal probieren!</p>
<p>Zunächst brauchen wir die IP-Adresse eines <a title="Wikipedia: Proxy (Rechnernetz)" href="http://de.wikipedia.org/wiki/Proxy_(Rechnernetz)" target="_blank">Proxy-Servers</a> aus den USA. Klingt kompliziert &#8211; ist es jedoch gar nicht. Im Internet finden sich eine Menge Seiten, die uns diese IP-Adressen kostenlos und auch noch legal zur Verfügung stellen. Sehen wir uns mal die Seite <a title="Proxy List" href="http://www.proxy-list.org/en/index.php" target="_blank">http://proxy-list.org</a> an. Dort finden wir neben einem Haufen Werbung noch ein kleines Formular mit dem wir nach Proxy-Server suchen können. Den einzigen Wert den wir dabei ändern sollten, ist &#8220;country&#8221; da wir ja einen Proxy aus den USA haben wollen. Hier schnell auf &#8220;United States&#8221; gestellt und unten den korrekten Captcha-Code eingetippt, bekommen wir solch eine Liste zu sehen:</p>
<p><a href="http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern/bildschirmfoto-2011-07-13-um-22-52-42" rel="attachment wp-att-379" target="_blank"><img class="alignnone size-medium wp-image-379 wp-caption" title="Proxy-Liste" src="http://coder-blog.de/wp-content/uploads/Bildschirmfoto-2011-07-13-um-22.52.42-300x86.png" alt="" width="300" height="86" /></a></p>
<p>Nehmen wir doch gleich mal den ersten Eintrag in der Liste (209.136.113.151:808). Wir sehen, dass dieser aus zwei Teilen besteht: Alles was sich vor dem Doppelpunkt befindet, ist die IP-Adresse des Servers; Alles danach ist der Port auf dem der Server auf neue Verbindungen horcht.</p>
<p>Nun haben wir schon alles was wir brauchen. Jetzt müssen wir nur noch unserem Browser bzw. unserem Betriebssystem sagen, dass er den Internetverkehr über diesen Proxy leiten soll.  Ich werde hier nur ein Beispiel am Firefox 5.0 demonstrieren. Bei anderen Browser läuft dies ähnlich.</p>
<p>Den Browser geöffnet, gehen wir auf Einstellungen -&gt; Erweitert -&gt; Netzwerk.</p>
<p><a href="http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern/bildschirmfoto-2011-07-13-um-22-43-59" rel="attachment wp-att-377" target="_blank"><img class="alignnone size-medium wp-image-377 wp-caption" title="Firefox Netzwerkeinstellungen" src="http://coder-blog.de/wp-content/uploads/Bildschirmfoto-2011-07-13-um-22.43.59-300x265.png" alt="" width="300" height="265" /></a></p>
<p>Hier klicken wir auf Einstellungen und wählen den Punkt &#8220;Manuelle Proxy-Konfiguration&#8221; aus. Bei HTTP-Proxy tragen wir die IP-Adresse unseres Proxy-Servers ein (209.136.113.151) und bei Port den Port auf dem der Server horcht (808).</p>
<p><a href="http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern/bildschirmfoto-2011-07-13-um-22-54-09" rel="attachment wp-att-380" target="_blank"><img class="alignnone size-medium wp-image-380 wp-caption" title="HTTP-Proxy Firefox" src="http://coder-blog.de/wp-content/uploads/Bildschirmfoto-2011-07-13-um-22.54.09-300x257.png" alt="" width="300" height="257" /></a></p>
<p>Nun klicken wir auf OK und schließen das Fenster. Nun können wir die Seite <a title="Wieistmeineip.de" href="http://wieistmeineip.de" target="_blank">http://wieistmeineip.de</a> aufrufen und vergewissern, dass wir uns in den USA befinden.</p>
<p><a href="http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern/bildschirmfoto-2011-07-13-um-22-54-20" rel="attachment wp-att-381" target="_blank"><img class="alignnone size-medium wp-image-381 wp-caption" title="Wieistmeineip - USA" src="http://coder-blog.de/wp-content/uploads/Bildschirmfoto-2011-07-13-um-22.54.20-300x164.png" alt="" width="300" height="164" /></a></p>
<p>Jetzt brauchen wir nur noch das Youtube-Video aufrufen, das vorher nicht funktioniert hat und uns freuen. <img src='http://coder-blog.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern/bildschirmfoto-2011-07-13-um-22-57-05" rel="attachment wp-att-382" target="_blank"><img class="alignnone size-medium wp-image-382 wp-caption" title="Youtube: Linkin Park - The Catalyst" src="http://coder-blog.de/wp-content/uploads/Bildschirmfoto-2011-07-13-um-22.57.05-300x257.png" alt="" width="300" height="257" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/ip-sperre-umgehen-ip-adresse-aendern/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java-Tutorial: Methoden</title>
		<link>http://coder-blog.de/java-tutorial-methoden</link>
		<comments>http://coder-blog.de/java-tutorial-methoden#comments</comments>
		<pubDate>Fri, 08 Apr 2011 00:08:48 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Java-Tutorials]]></category>
		<category><![CDATA[informatik]]></category>
		<category><![CDATA[java-tutorial]]></category>
		<category><![CDATA[methoden]]></category>
		<category><![CDATA[programmfluss]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=328</guid>
		<description><![CDATA[Methoden dienen dazu, um Coder durch Auslagern übersichtlicher und wartungsfreundlicher zu gestalten. Beim Aufruf einer Methode wird die aufrufende Methode unterbrochen, bis die aufgerufene Methode abgearbeitet wurde. Eine Methode stellt somit ein kleines Unterprogramm dar. <a href="http://coder-blog.de/java-tutorial-methoden">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wie der Titel schon erahnen lässt, beschäftigt sich dieser Beitrag mit Java Methoden. Wer Funktionen aus anderen Programmiersprachen wie beispielsweise PHP, C usw. schon kennt, wird sich mit Methoden schnell anfreunden können. Um zu verdeutlichen wie man mit Methoden arbeitet, sollten wir uns zunächst folgenden Code anschauen.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * Klasse Programm soll die Verwendung von Methoden verdeutlichen.
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> Programm <span style="color: #009900;">&#123;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Methode add addiert zwei uebergebene Parameter und gibt die Summe zurueck
     * @param summand_1 Der erste Summand
     * @param summand_2 Der zweite Summand
     * @return Das Ergebnis der Addition beider  Summanden
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> add<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> summand_1, <span style="color: #000066; font-weight: bold;">int</span> summand_2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> summand_1 <span style="color: #339933;">+</span> summand_2<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Methode hallo gibt ihren Namen aus. Welche weitere Methode sie aufgerufen hat und
     * welches Ergebnis sie von der anderen Methode erhalten hat.
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> hallo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Ich bin die Methode <span style="color: #000099; font-weight: bold;">\&quot;</span>hallo<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Ich rufe die Methode <span style="color: #000099; font-weight: bold;">\&quot;</span>add<span style="color: #000099; font-weight: bold;">\&quot;</span> mit den Parametern 3 und 4 auf&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">int</span> summe <span style="color: #339933;">=</span> add<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Ich habe als Ergebnis die Summe &quot;</span> <span style="color: #339933;">+</span> summe <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; von <span style="color: #000099; font-weight: bold;">\&quot;</span>add<span style="color: #000099; font-weight: bold;">\&quot;</span> erhalten&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Main-Methode wird vom Compiler gesucht und automatisch aufgerufen
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Das ist ein Beispiel, das die Verwendung von Methoden erklaeren soll&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        hallo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hier endet die main-Methode und damit das Programm&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="more-328"></span><br />
Dieses Programm enthält insgesamt drei Methoden, die wir definiert haben. Zunächst ist da die bereits bekannte main-Methode. Diese wird beim Kompilieren und beim Ausführen des Programms gesucht und automatisch aufgerufen. Sie ermöglicht also der JVM den Einstieg in unser Programm. Ohne ihr würde nichts funktionieren. Wichtig ist, dass ein Programm nur eine main-Methode haben darf, da sonst nicht klar ist, welche dieser Methoden ausgeführt werden sollen.<br />
Die zweite Methode ist die Methode &#8220;hallo&#8221;. Sie ähnelt in ihrem Methodenkopf sehr stark der main-Methode. Der einzige Unterschied ist, dass unsere hallo-Methode keine Parameter übergeben bekommt. Parameter sind die Elemente, die von der runden öffnenden und schließenden Klammer, die hinter der Bezeichnung der Methode kommt, eingeschlossen werden. Zu erkennen ist, dass die main-Methode einen Parameter mit der Bezeichnung &#8220;args&#8221; übergeben bekommt. Dieser Parameter ist vom Typ ein String-Array.</p>
<p>Die Methode &#8220;hallo&#8221; ruft in Zeile 22 eine weitere Methode auf, die wir &#8220;add&#8221; genannt haben. Das Ergebnis, dass uns die Methode &#8220;add&#8221; liefert, wird der Variablen &#8220;summe&#8221; zugewiesen. Der Wert der Variablen wird dann in der drauf folgenden Zeile ausgegeben.<br />
Die Methode &#8220;add&#8221; addiert die beiden übergebenen Parameter. Das Ergebnis der Addition wird dann zurückgegeben. Das Zurückgeben erfolgt stets mit dem Schlüsselwort &#8220;return&#8221;. Sobald wir etwas zurückgeben möchten, müssen wir im Methodenkopf notieren welchen Typ die Rückgabe haben wird. Deshalb steht vor der Bezeichnung der add-Methode das Schlüsselwort &#8220;int&#8221;. Zurückgegeben werden können alle erdenklichen Typen wie int, long, float, double, String, Arrays und Objekte. Da wird in der Methode &#8220;hallo&#8221; nichts zurückgeben wollen, sondern nur Ausgaben tätigen, muss vor dem Methodennamen das Schlüsselwort &#8220;void&#8221; stehen. Es heißt soviel wie &#8220;Ich geben nichts zurück&#8221;. Die main-Methode darf per Konvention nur void sein.</p>
<p>Was ist nun der Sinn hinter Methoden? Methoden dienen dazu, um Code durch Auslagern übersichtlicher und wartungsfreundlicher zu gestalten.</p>
<p>Methoden werden nacheinander wie sie im Programm aufgerufen werden abgearbeitet. Methoden, die andere Methoden aufrufen, werden unterbrochen und fahren erst nachdem die aufgerufene Methode beendet ist, in ihrem Programmfluss fort. In unserem Beispiel wird zunächst du die JVM die main-Methode ausgeführt. In dieser Methode rufen wir die Methode &#8220;hallo&#8221; auf. Somit wird die Methode main zunächst unterbrochen und die hallo-Methode ausgeführt. Methode &#8220;hallo&#8221; ruft wiederum die Methode &#8220;add&#8221; auf, der sie die zwei Parameter 3 und 4 übergibt, um dann den eigenen Programmfluss zu unterbrechen und den Weg für &#8220;add&#8221; frei zu machen. Nachdem &#8220;add&#8221; die beiden Parameter addiert hat, kann &#8220;hallo&#8221; fortfahren und ebenfalls beendet werden. Jetzt wird weiter die Methode &#8220;main&#8221; ausgeführt, bis diese abgearbeitet wurde und unser Programm schließlich beendet werden kann.<br />
Den Programmfluss soll das nachfolgende Bild darstellen.</p>
<div id="attachment_338" class="wp-caption aligncenter" style="width: 307px"><a href="http://coder-blog.de/wp-content/uploads/methoden.gif"><img class="size-full wp-image-338 " title="Programmfluss der Methoden" src="http://coder-blog.de/wp-content/uploads/methoden.gif" alt="Programmfluss der Methoden main, hallo und add" width="297" height="201" /></a><p class="wp-caption-text">Programmfluss der Methoden</p></div>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/java-tutorial-methoden/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Wie kann ich Videos von youtube runterladen?</title>
		<link>http://coder-blog.de/wie-kann-ich-videos-von-youtube-runterladen</link>
		<comments>http://coder-blog.de/wie-kann-ich-videos-von-youtube-runterladen#comments</comments>
		<pubDate>Mon, 14 Mar 2011 21:46:35 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[lustige videos]]></category>
		<category><![CDATA[video runterladen]]></category>
		<category><![CDATA[youtube video runterladen]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=298</guid>
		<description><![CDATA[Häufig werde ich von Leuten gefragt, wie man denn Videos von Youtube runterladen kann. Dafür gibt es im Allgemeinen zwei Wege - einen Einfachen und den Manuellen, eher Komplizierten, der hier nicht erwähnt wird ;) <a href="http://coder-blog.de/wie-kann-ich-videos-von-youtube-runterladen">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Häufig werde ich von Leuten gefragt, wie man denn Videos von Youtube runterladen kann. Dafür gibt es im Allgemeinen zwei Wege &#8211; einen Einfachen und den Manuellen, eher Komplizierten, der hier nicht erwähnt wird <img src='http://coder-blog.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3><span style="color: #000000; line-height: 27px;">Der einfache Weg:</span></h3>
<p>Im Internet findet man eine Menge kostenloser Video-Downloader, die man sich installieren kann. Auf <a title="Youtube Downloader und Konverter" href="http://www.dvdvideosoft.com/" target="_blank">http://www.dvdvideosoft.com/</a> kann man sich aus einem ganzen Haufen an Programmen aussuchen, die Youtube-Videos runterladen und diese eventuell in andere Video-Formate umwandeln können.</p>
<p>Die andere Möglichkeit ist es einen der zahlreichen Online-Dienste zu nutzen, die einem Youtube-Videos zum Download anbieten. Hier eine kleine Auswahl:</p>
<ul>
<li><a title="Filsh" href="http://www.filsh.net/" target="_blank">http://www.filsh.net/</a></li>
<li><a title="Media Converter" href="http://www.mediaconverter.org/" target="_blank">http://www.mediaconverter.org/</a></li>
<li><a title="Music Clips" href="http://music-clips.net">http://music-clips.net</a></li>
<li><a title="KeepVid" href="http://keepvid.com/" target="_blank">http://keepvid.com/</a></li>
<li><a title="Clip Converter" href="http://www.clipconverter.cc/" target="_blank">http://www.clipconverter.cc/</a></li>
<li><a title="VideoGET" href="http://www.videoget.net/" target="_blank">http://www.videoget.net/</a></li>
<li><a title="QTube" href="http://www.qtube.de/" target="_blank">http://www.qtube.de</a></li>
<li><a href="http://getvids.de/" title="GetVids" target="_blank">http://getvids.de</a></li>
</ul>
<p><span style="font-size: small;"><span id="more-298"></span>Alle diese Dienste funktionieren relative gleich. Deswegen gebe ich hier nur ein Anleitung zu Filsh.net:</span></p>
<ol>
<li><span style="font-size: small;"><strong>Ein cooles Video aufrufen und den Link aus der Browser-Adressleiste kopieren</strong><a href="http://coder-blog.de/wp-content/uploads/youtube.jpg"><img class="alignnone size-full wp-image-304" title="youtube" src="http://coder-blog.de/wp-content/uploads/youtube.jpg" alt="" width="356" height="267" /></a><br />
</span></li>
<li><span style="font-size: small;"><strong>Link bei Filsh.net einfügen, Nutzungsbestimmungen akzeptieren und auf &#8220;Weiter&#8221; klicken</strong><a href="http://coder-blog.de/wp-content/uploads/filsh.jpg"><img class="alignnone size-full wp-image-305" title="filsh" src="http://coder-blog.de/wp-content/uploads/filsh.jpg" alt="" width="470" height="286" /></a></span></li>
<li><span style="font-size: small;"><strong>Zugucken wie Filsh.net das Video von Youtube runterlädt</strong><a href="http://coder-blog.de/wp-content/uploads/download.jpg"><img class="size-full wp-image-306 alignnone" title="download" src="http://coder-blog.de/wp-content/uploads/download.jpg" alt="" width="472" height="253" /></a></span></li>
<li><span style="font-size: small;"><strong>Auf &#8220;Download&#8221; klicken und Video von Filsh.net downloaden</strong><a href="http://coder-blog.de/wp-content/uploads/final.jpg"><img class="alignnone size-full wp-image-307" title="final" src="http://coder-blog.de/wp-content/uploads/final.jpg" alt="" width="477" height="268" /></a></span></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/wie-kann-ich-videos-von-youtube-runterladen/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MD5 entschlüsseln mittels c0llision-API</title>
		<link>http://coder-blog.de/md5-entschluesseln</link>
		<comments>http://coder-blog.de/md5-entschluesseln#comments</comments>
		<pubDate>Wed, 27 Oct 2010 20:44:57 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Angewandte Informatik]]></category>
		<category><![CDATA[Programmiersprachen]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[informatik]]></category>
		<category><![CDATA[md5 entschlüsseln]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=280</guid>
		<description><![CDATA[Die Seite c0llision.net stellt eine API zur Verfügung, die dazu genutzt werden kann, um einen MD5-Hash zu entschlüsseln. Wie der Zugriff auf die API abläuft und man sie nutzt, soll hier erklärt werden. <a href="http://coder-blog.de/md5-entschluesseln">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Der <a href="http://de.wikipedia.org/wiki/Message-Digest_Algorithm_5" target="_blank">Message-Digest-Algorithm 5</a>, oder kurz MD5 ist ein verbreitetes Verfahren, um einen String zu verschlüsseln. Dabei wird mit Hilfe einer bestimmten Funktion &#8211; der Hashfunktion &#8211; die eingegebene Zeichenkette mittels eines Algorithmus in einen 128-Bit-Hashwert überführt. Dieser Wert wird üblicherweise durch einen 32-stelligen, hexadezimalen String dargestellt.</p>
<p>In vielen Unix-Systemen sind die MD5-Bibliotheken bereits integriert und können über die Konsole genutzt werden.<br />
Auf einem Mac sieht der Aufruf beispielsweise so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">md5 <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;ein string, den ich verschlüsseln will&quot;</span></pre></div></div>

<p>Mit dem Ergebnis:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">MD5 <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;ein string, den ich verschlüsseln will&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> = fbf50beb87218a44ed02a7cf4dca9868</pre></div></div>

<p><span id="more-280"></span><br />
Wie man erkennt entspricht der String &#8220;ein string, den ich verschlüsseln will&#8221; dem MD5-Hash fbf50beb87218a44ed02a7cf4dca9868.</p>
<p>Ein Merkmal der MD5-Funktion besteht darin, dass ein Hash-Wert nicht ohne Weiteres wieder entschlüsselt werden kann.<br />
Deswegen wird MD5 oft genutzt um Passwörter verschlüsselt in Datenbanken zu speichern.</p>
<p>Was macht man nun, wenn man aber mal doch diesen Hash entschlüsselt haben möchte? Da das zurückrechnen nicht möglich ist, verwendet man eine besondere Datenstruktur, die sogenannten <a href="http://de.wikipedia.org/wiki/Rainbow_Table" target="_blank">Rainbow Tables</a>. Im Internet finden sich zahlreiche Seiten, die eine Entschlüsselung von Hashes mittels Rainbow Tables anbieten. Darunter findet man auch die Seite <a href="http://www.c0llision.net/" target="_blank">c0llision.net</a>, die u.a mittels einer API ermöglicht auf ihre Dienste zuzugreifen. Wie man diese nutzt, will ich in den folgenden Textabschnitten erklären. Dabei stütze ich mich auf diese Dokumentation: <a href="http://www.c0llision.net/rest_api_documentation">http://www.c0llision.net/rest_api_documentation</a>.</p>
<p>Der Zugriff auf die API erfolgt über die URL http://api.dev.c0llision.net/. Die API unterstützt drei verschiedene Formate, die einem als Ergebnis einer Anfrage geliefert werden. Zur Auswahl stehen dabei JSON, XML und YAML. Ich habe mich hier für JSON entschieden, da später der Zugriff über PHP bequemer ist. Als Algorithmen werden LM, NTLM und wie eingangs erwähnt MD5 unterstützt. Diese Angaben müssen der URL angehängt werden. Dabei erhält man folgendes Muster, um eine Anfrage an die c0llision API absetzen zu können:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>api.dev.c0llision.net<span style="color: #000000; font-weight: bold;">//</span>crack<span style="color: #000000; font-weight: bold;">//</span></pre></div></div>

<p>Wollen wir nun den MD5-Hash fbf50beb87218a44ed02a7cf4dca9868 entschlüsselt haben und das Ergebnis als JSON zurückgeliefert bekommen, würden wir folgende Anfrage abschicken:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>api.dev.c0llision.net<span style="color: #000000; font-weight: bold;">/</span>json<span style="color: #000000; font-weight: bold;">/</span>crack<span style="color: #000000; font-weight: bold;">/</span>md5<span style="color: #000000; font-weight: bold;">/</span>fbf50beb87218a44ed02a7cf4dca9868</pre></div></div>

<p>Um diese Anfrage bequem per Skript verarbeiten zu können, habe ich folgendes kleines PHP-Programm geschrieben:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;!--</span>?php
  <span style="color: #000000; font-weight: bold;">function</span> crack<span style="color: #009900;">&#40;</span><span style="color: #000088;">$algorithm</span><span style="color: #339933;">,</span> <span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//Convert algorithm to lowercase</span>
    <span style="color: #000088;">$algorithm</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$algorithm</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://api.dev.c0llision.net/json/crack/'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Check algorithm</span>
    <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$algorithm</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'md5'</span><span style="color: #339933;">:</span>
        <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/^([0-9a-f]{32})$/'</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$url</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'md5/'</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'lm'</span><span style="color: #339933;">:</span>
        <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/^([0-9a-f]{32}:[0-9a-f]{32})$/'</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$url</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'lm/'</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'ntlm'</span><span style="color: #339933;">:</span>
        <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/^([0-9a-f]{32})$/'</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$url</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'ntlm/'</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Check hash</span>
    <span style="color: #000088;">$check</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pattern</span><span style="color: #339933;">,</span> <span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span> <span style="color: #339933;">===</span> <span style="color: #000088;">$check</span> <span style="color: #339933;">||</span> <span style="color: #009900; font-weight: bold;">FALSE</span> <span style="color: #339933;">===</span> <span style="color: #000088;">$check</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Build final URL</span>
    <span style="color: #000088;">$url</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$hash</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Initialize CURL and set options</span>
    <span style="color: #000088;">$curl_handle</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$curl_handle</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$curl_handle</span><span style="color: #339933;">,</span> CURLOPT_HEADER<span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$curl_handle</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$curl_handle</span><span style="color: #339933;">,</span> CURLOPT_TIMEOUT<span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Execute CURL request</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$curl_handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$curl_handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">function</span> crackMD5<span style="color: #009900;">&#40;</span><span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> crack<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'md5'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">function</span> crackLM<span style="color: #009900;">&#40;</span><span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> crack<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'lm'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">function</span> crackNTLM<span style="color: #009900;">&#40;</span><span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> crack<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ntlm'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
?<span style="color: #339933;">--&gt;</span></pre></div></div>

<p>Das Programm definiert eine Prozedur &#8220;crack&#8221;, welche die ganze Funktionalität liefert. In ihr wird zunächst ein Teil der URL gespeichert, auf die im weiteren Programmablauf mittels cURL zugegriffen wird. Nachdem die Variable &#8220;url&#8221; gesetzt wurde, wird überprüft ob ein korrekter Algorithmus gewählt wurde und das Muster des Hashs zum Algorithmus passt. Beispielsweise darf ein MD5-Hash lediglich aus 32 hexadezimalen Zahlen bestehen. Ist ein gültiger Hash übergeben, wird er an die URL gehängt. Diese ist nun vollständig zusammengebaut. Mittels cURL wird nun eine GET-Anfrage abgesetzt, die Antwort in die result-Variable gespeichert und zurückgegeben. Die weiteren Funktionen &#8220;crackMD5&#8243;, &#8220;crackLM&#8221; und &#8220;crackNTLM&#8221; nutzen lediglich &#8220;crack&#8221;, indem sie ihr die entsprechenden Parameter übergeben.<br />
Die crackMD5-Funktion wollen wir nun nutzen, um den Hash 098f6bcd4621d373cade4e832627b4f6 zu entschlüsseln.<br />
Ein PHP-Skript könnte zum Beispiel so aussehen:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;!--</span>?php
  <span style="color: #000088;">$hash</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'098f6bcd4621d373cade4e832627b4f6'</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> crackMD5<span style="color: #009900;">&#40;</span><span style="color: #000088;">$hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$json</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">FALSE</span> <span style="color: #339933;">!==</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$json</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// HTTP 200 received</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">200</span> <span style="color: #339933;">!==</span> <span style="color: #000088;">$json</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'response'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'status'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'code'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Server response: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$json</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'response'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'status'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'code'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">// Hash already cracked</span>
    <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">TRUE</span> <span style="color: #339933;">!==</span> <span style="color: #000088;">$json</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'response'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'result'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cracked'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Sorry, your hash has not been cracked yet'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$json</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'response'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'result'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'plaintext'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'raw'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
?<span style="color: #339933;">--&gt;</span></pre></div></div>

<p>Es setzt eine Anfrage durch die Funktion &#8220;crackMD5&#8243; an die c0llision API ab und speichert die Antwort in die Variable &#8220;result&#8221;. Hat &#8220;crackMD5&#8243; eine gültige Antwort zurückgegeben, so dekodieren wir den JSON-String mittels der PHP-Funktion &#8220;<a href="http://php.net/manual/de/function.json-decode.php">json_decode</a>&#8220;. Dann wird geprüft, ob der Server mit einem HTTP-200-Status geantwortet hat und der zu entschlüsselnde Hash bereits gecrackt wurde. Ist dies der Fall, wird der entsprechende Klartext des Hashs ausgegeben.</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/md5-entschluesseln/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Volksphone</title>
		<link>http://coder-blog.de/volksphone</link>
		<comments>http://coder-blog.de/volksphone#comments</comments>
		<pubDate>Wed, 23 Sep 2009 09:25:47 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=193</guid>
		<description><![CDATA[Wie schon im letzten Jahr mit dem Befreiphone, findet dieses Jahr wieder ein SEO-Contest statt. Dabei geht es darum mit dem Begriff Volksphone am 23.09.2009 um 22:00 Uhr auf Platz eins  der Google-Suche zu landen. Zu gewinnen gibt es wie &#8230; <a href="http://coder-blog.de/volksphone">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wie schon im letzten Jahr mit dem Befreiphone, findet dieses Jahr wieder ein SEO-Contest statt.</p>
<p>Dabei geht es darum mit dem Begriff <a title="Volksphone" href="http://www.trafficmaxx.de/blog/google/volksphone-seo-contest" target="_blank">Volksphone</a> am 23.09.2009 um 22:00 Uhr auf Platz eins  der Google-Suche zu landen. Zu gewinnen gibt es wie letztes Jahr auch ein iPhone &#8211; diesmal handelt es sich dabei um das iPhone 3GS 32GB.</p>
<p>Trafficmaxx, der Gewinner des letztjährigen Wettbewerbs, versucht auch dieses Jahr seinen Platz zu verteidigen. Sollte sich Trafficmaxx wieder als Sieger behaupten können, so soll laut <a title="Volksphone Trafficmaxx-Weblog" href="http://www.trafficmaxx.de/blog/google/volksphone-seo-contest" target="_blank">trafficmaxx Weblog</a> das Volksphone zu einem guten Zweck öffentlich versteigert werden.</p>
<p>Also Leuts, jetzt ist Endspurt angesagt. Bloggt fleißig für den Volksphone &#8211; Contest!</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/volksphone/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wenig Zeit und viel Escort-Spam</title>
		<link>http://coder-blog.de/wenig-zeit-und-viel-escort-spam</link>
		<comments>http://coder-blog.de/wenig-zeit-und-viel-escort-spam#comments</comments>
		<pubDate>Wed, 10 Jun 2009 21:39:30 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[bachelor-studium]]></category>
		<category><![CDATA[easy-peasy]]></category>
		<category><![CDATA[escort]]></category>
		<category><![CDATA[fedora-core-11]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux-mint]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[studium]]></category>
		<category><![CDATA[uni-informatik]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=152</guid>
		<description><![CDATA[Mein Studium verschlingt irgendwie doch so viel Zeit, dass ich nicht mehr dazu komme hier mein Blog mit Leben zu füllen und es wartet noch ein anderes Projekt auf Bearbeitung. Das Bachelor-Studium ist mal echt kein Spaß und ist für &#8230; <a href="http://coder-blog.de/wenig-zeit-und-viel-escort-spam">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mein Studium verschlingt irgendwie doch so viel Zeit, dass ich nicht mehr dazu komme hier mein Blog mit Leben zu füllen und es wartet noch ein anderes Projekt auf Bearbeitung. Das Bachelor-Studium ist mal echt kein Spaß und ist für mich ein wenig zu viel Input, sodass ich den gelernten Stoff aus dem letzten Semester fast vergessen habe. Nebenbei ist die Kuh bestimmt schon halb verhungert, oder hat sich aus dem Staub gemacht, weil ich mich nicht mehr um sie gekümmert habe. (CowSay)<br />
Was auch recht auffällig ist, dass ich in der letzten Zeit recht viele Emails bekomme, dass neue Kommentare auf Freischaltung warten, die aber allesamt SPAM mit irgendwelchem Escort-Zeugs sind.<br />
<span id="more-152"></span><br />
PFUI!<br />
Scheinbar fällt es denen nicht auf, dass hier Leute nicht einfach Kommentare hier posten können. Ja, ratet mal aus welchem Grund?! Natürlich werde ich ernst gemeinte Kommentare, Anregungen und so gerne freischalten und wenn ihr nebenbei noch eure Website angebt, könnt ihr somit ein wenig SEO betreiben :-/<br />
Vor kurzer Zeit wurde auch das neue <a href="http://fedoraproject.org/">Fedora Core 11</a> veröffentlicht. Ich hab mir das heut mal auf den USB-Stick gezogen und ein wenig experimentiert. <a href="http://www.linuxmint.com/">Linux Mint</a> gefällt mir aber doch besser. Jetzt bin ich gerade dabei mir das <a href="http://www.geteasypeasy.com/">Easy Peasy</a> Linux zu laden. Mal schauen wie das ist &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/wenig-zeit-und-viel-escort-spam/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java-Tutorial: CowSay (Kuh lernt sprechen)</title>
		<link>http://coder-blog.de/java-tutorial-cowsay-kuh-lernt-sprechen</link>
		<comments>http://coder-blog.de/java-tutorial-cowsay-kuh-lernt-sprechen#comments</comments>
		<pubDate>Thu, 09 Apr 2009 20:29:27 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Java-Tutorials]]></category>
		<category><![CDATA[bedingte-anweisungen]]></category>
		<category><![CDATA[coder-blog.de]]></category>
		<category><![CDATA[cowsay]]></category>
		<category><![CDATA[for-schleife]]></category>
		<category><![CDATA[java-lernen]]></category>
		<category><![CDATA[java-tutorial]]></category>
		<category><![CDATA[objektorientierte programmierung]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=78</guid>
		<description><![CDATA[Dieses Java-Tutorial beschreibt wie wir unser Java cowsay mit mehr Funktionalität ausstatten, sodass unsere Kuh nun sprechen lernt <a href="http://coder-blog.de/java-tutorial-cowsay-kuh-lernt-sprechen">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lange versprochen wenden wir uns jetzt unserer Kuh aus dem zweiten Java-Tutorial zu. Schauen wir uns noch einmal an wie das Unix-Programm cowsay funktioniert.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">cowsay <span style="color: #ff0000;">'Java rocks!'</span></pre></div></div>

<p>Die Ausgabe dazu sollte so aussehen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"> _____________
<span style="color: #000000; font-weight: bold;">&lt;</span> Java rocks<span style="color: #000000; font-weight: bold;">!</span> <span style="color: #000000; font-weight: bold;">&gt;</span>
 <span style="color: #660033;">-------------</span>
           ^__^
           <span style="color: #7a0874; font-weight: bold;">&#40;</span>oo<span style="color: #7a0874; font-weight: bold;">&#41;</span>_______
           <span style="color: #7a0874; font-weight: bold;">&#40;</span>__<span style="color: #7a0874; font-weight: bold;">&#41;</span>       <span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span>
              <span style="color: #000000; font-weight: bold;">||</span>----w <span style="color: #000000; font-weight: bold;">|</span>
              <span style="color: #000000; font-weight: bold;">||</span>     <span style="color: #000000; font-weight: bold;">||</span></pre></div></div>

<p>Diese Funktionalität möchten wir nun nachbauen, dass wir unser cowsay mit diesem Befehl ausführen können und das Ergebnis genauso aussehen soll wie das original cowsay aus Unix.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java cowsay <span style="color: #ff0000;">'Java rocks!'</span></pre></div></div>

<p>Der Vorteil dabei ist jedoch, dass wir dieses Programm auf Windows, Linux, Mac OSX und allen anderen Betriebssystemen nutzen können, die auch von dem Java Runtime Environment unterstützt werden.<span id="more-78"></span><br />
Okay, fangen wir dann mal an. Zunächst erstellen wir uns eine Klasse cowsay, die auch die main-Methode enthält:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> cowsay
<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Zunächst sollten wir klären wie wir es schaffen, dass der Text, den wir beim Aufruf des cowsay-Programms mitgeben auch in unseren Java-Code kommt. Dazu ist dieses String[] args da! Wie wir in den letzten Tutorials gelernt haben, handelt es sich hierbei um ein Array des Typs String. Darin finden wir die Argumente, die wir an unser Programm in der Konsole übergeben haben. Bei unserem cowsay brauchen wir lediglich auf args[0] zuzugreifen, denn wir übergeben nur ein Argument. Sollten wir jedoch mehrere Argumente übergeben wollen, so trennen wir diese durch ein Leerzeichen im Programmaufruf und finden diese in args[0] … args[n] wieder. Je nachdem wie viele davon wir übergeben hatten.<br />
Ein Problem auf das wir stoßen werden, ist dass wir die Fehlermeldung &#8220;ArrayIndexOutOfBoundException&#8221; erhalten, wenn wir beim Programmaufruf keine Nachricht übergeben. Dies werden wir mit einer bedingten Anweisung lösen und eine Standardnachricht angeben.<br />
Deshalb waren mir auch die letzten Tutorials so wichtig, bevor wir dieses hier bearbeiten konnten.<br />
Bauen wir uns dazu nun folgenden Code:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> cowsay
<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>args.<span style="color: #006633;">length</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      args <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      args<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Ich sage nix&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">//Hier geht es noch weiter</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Hier prüfen wir mit args.length == 0, ob das args Array einen Wert zugewiesen bekommen hat. Ist dies der Fall, so ist die Länge des Arrays größer 0! Sollte es nun so sein, dass keine Nachricht eingegeben wurde, definieren wir args als ein String-Array-Objekt mit einer Länge von eins. Nun speichern wir die Standardnachricht &#8220;Ich sage nix&#8221; in das Array an der Stelle 0.</p>
<p>Wenden wir uns jetzt der Sprechblase zu. Wir müssen dabei darauf achten, dass die Größe dieser abhängig von der Länge der eingegeben Nachricht ist. Dieses Problem werden wir mit einer Schleife lösen können. Dies zeigt uns das folgende Code-Fragment:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> cowsay
<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>args.<span style="color: #006633;">length</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      args <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      args<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Ich sage nix&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #003399;">String</span> message <span style="color: #339933;">=</span> args<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> messageLength <span style="color: #339933;">=</span> message.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">//Laenge der Nachricht</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/*********************************************
    *           Sprechblase erzeugen
    *********************************************/</span>
    <span style="color: #003399;">String</span> top <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">//Obere Linie der Sprechblase</span>
    <span style="color: #003399;">String</span> bottom <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>             <span style="color: #666666; font-style: italic;">//Untere Linie der Sprechblase</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Linke und rechte Grenze mit Nachricht der Sprechblase</span>
    <span style="color: #003399;">String</span> contentAndBorders <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt; &quot;</span> <span style="color: #339933;">+</span> message <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; &gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Gesamte Sprechblase</span>
    <span style="color: #003399;">String</span> speechBubble<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Obere + untere Linie erzeugen</span>
    <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;=</span> messageLength <span style="color: #339933;">+</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      top <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;_&quot;</span><span style="color: #339933;">;</span>
      bottom <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;-&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    speechBubble <span style="color: #339933;">=</span> top <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    speechBubble <span style="color: #339933;">+=</span> contentAndBorders <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    speechBubble <span style="color: #339933;">+=</span> bottom <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Jetzt folgt noch die Kuh</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Die ersten Zeilen sind die gleichen wie im obigen Code. Wir weisen der Variablen message den Inhalt des Arrays an der Stelle 0 zu, damit wir uns das Schreiben der eckigen Klammern sparen können und diese Variable einfach sprechender ist, als ein args[0].<br />
Die Variable messageLength bekommt die Länge unserer Nachricht zugewiesen, da wir diese für die Schleife brauchen werden. Als nächstes erzeugen wir uns die Variablen top und bottom, die die Zeichen für die obere bzw. untere Linie enthalten werden. Diese bekommen jeweils zunächst ein Leerzeichen zugewiesen. Damit stellen wir sicher, dass über / unter der öffnenden spitzen Klammer keine Striche stehen werden.<br />
Die Variable messageAndBorders enthält die Nachricht und den linken und rechten Begrenzer gefolgt von einem Leerzeichen, damit links und rechts von der Nachricht etwas Platz bleibt. &#8211; Sieht einfach besser aus. Dadurch müssen wir aber auch die Schleife um zwei Durchläufe erweitern, um dies auszugleichen. In dieser Schleife werden die Variablen top und bottom mit den entsprechenden Zeichen &#8220;_&#8221; und &#8220;-&#8221; gefüllt. Es werden so viele Zeichen erstellt wie die Nachricht – verlängert um zwei – lang ist.<br />
Die Variable speechBubble soll die gesamte Sprechblase enthalten und bekommt deshalb top, contentAndBorders und bottom – jeweils gefolgt von einer &#8220;newline&#8221; – zugewiesen.</p>
<p>Jetzt fehlt uns nur noch die Kuh. Eigentlich könnten wir einfach den Code aus dem CowSay-Tutorial verwenden, denn es ändert sich hierbei nichts. Um aber so viele System.out.println zu vermeiden, speichern wir die Kuh in die kuh Variable und erstellen uns eine Variable cowsay, die die Sprechblase und die Kuh enthält, die wir dann schließlich ausgeben werden.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> cowsay
<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>args.<span style="color: #006633;">length</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      args <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      args<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Ich sage nix&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #003399;">String</span> message <span style="color: #339933;">=</span> args<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> messageLength <span style="color: #339933;">=</span> message.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">//Laenge der Nachricht</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/*********************************************
    *           Sprechblase erzeugen
    **********************************************/</span>
    <span style="color: #003399;">String</span> top <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">//Obere Linie der Sprechblase</span>
    <span style="color: #003399;">String</span> bottom <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>             <span style="color: #666666; font-style: italic;">//Untere Linie der Sprechblase</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Linke und rechte Grenze mit Nachricht der Sprechblase</span>
    <span style="color: #003399;">String</span> contentAndBorders <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt; &quot;</span> <span style="color: #339933;">+</span> message <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; &gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Gesamte Sprechblase</span>
    <span style="color: #003399;">String</span> speechBubble<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Die Kuh</span>
    <span style="color: #003399;">String</span> kuh<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Die gesamte Ausgabe</span>
    <span style="color: #003399;">String</span> cowsay<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Obere + untere Linie erzeugen</span>
    <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;=</span> messageLength <span style="color: #339933;">+</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      top <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;_&quot;</span><span style="color: #339933;">;</span>
      bottom <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;-&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    speechBubble <span style="color: #339933;">=</span> top <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    speechBubble <span style="color: #339933;">+=</span> contentAndBorders <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    speechBubble <span style="color: #339933;">+=</span> bottom <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Die Kuh erzeugen</span>
    kuh <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;          ^__^&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    kuh <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;          (oo)_______&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    kuh <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;           (__)       )/&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    kuh <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;               ||----w |&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span>
    kuh <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot;               ||     ||&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    cowsay <span style="color: #339933;">=</span> speechBubble <span style="color: #339933;">+</span> kuh<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>cowsay<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Jetzt ist unsere Kuh eigentlich fertig und kann auch verwendet werden. Wir werden sie aber noch in späteren Tutorials umbauen. Freut euch schon mal drauf.</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/java-tutorial-cowsay-kuh-lernt-sprechen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java-Tutorial: Arrays</title>
		<link>http://coder-blog.de/java-tutorial-arrays</link>
		<comments>http://coder-blog.de/java-tutorial-arrays#comments</comments>
		<pubDate>Tue, 07 Apr 2009 14:29:40 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Java-Tutorials]]></category>
		<category><![CDATA[coder-blog.de]]></category>
		<category><![CDATA[erweiterte-for-Schleife]]></category>
		<category><![CDATA[for-schleife]]></category>
		<category><![CDATA[java-arrays]]></category>
		<category><![CDATA[java-lernen]]></category>
		<category><![CDATA[java-tutorial]]></category>
		<category><![CDATA[uni-informatik]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=133</guid>
		<description><![CDATA[Dieses Tutorial zeigt uns die Verwendung von Arrays in Java <a href="http://coder-blog.de/java-tutorial-arrays">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wenden wir uns in diesem Tutorial einmal den Arrays in Java zu. Ein Array – auch Feld und Reihung genannt &#8211;  kann man mit einem Setzkasten vergleichen, dessen Plätze von 0 bis 1 durchnummeriert sind. In diese Plätze können Werte gespeichert werden ähnlich wie bei einer Variablen. Ein Array enthält jedoch mehrere Werte, die über einen ganzzahligen Index angesprochen werden können. Bei späteren Berechnungen sollte man daran denken, dass ein Array mit dem Index 0 beginnt.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zahlArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
zahlArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span>
zahlArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
zahlArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
zahlArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span></pre></div></div>

<p>Mit den eckigen Klammern nach dem Typ sagen wir, dass wir ein Array erzeugen möchten. Die eckigen Klammern hinter die Bezeichnung des Arrays zu setzen ist auch möglich. Mit dem Schlüsselwort &#8220;new&#8221; erzeugen wir ein neues Array-Objekt, das Integer-Werte enthält und 4 Felder groß ist. Dabei können in einem Array nur Werte gespeichert werden, die auch zu dem angegebenen Typ passen. Würden wir nun versuchen einen String in unser Array zu speichern, bekämen wir eine Fehlermeldung.<span id="more-133"></span><br />
Java bietet uns noch eine andere Möglichkeit Arrays zu erstellen:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> zahlArray<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Damit haben wir den obigen Code auf eine Zeile reduziert. Beides kann jedoch nicht kombiniert werden, sodass etwas wie dies nicht möglich ist und uns unweigerlich einen Compilerfehler bringt:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zahlArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
zahlArray <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Dies können wir jedoch mit einem kleinen Trick umgehen:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zahlArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zahlen <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
zahlArray <span style="color: #339933;">=</span> zahlen<span style="color: #339933;">;</span></pre></div></div>

<p>Sowohl ist dies auch möglich:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zahlArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Das größte Speichern von Arrays bringt uns nichts, wenn wir nicht auch auf die Werte darin zugreifen können. Dazu schreiben wir einfach hinter den Namen des Arrays in eckige Klammern den Indexwert, in denen unser gewünschter Wert gespeichert worden ist.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zahlArray <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>zahlArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Mit zahlArray[0] greifen wir auf den Wert im Array zu, der unter dem Index 0 abgelegt worden ist. Da die Indizes bei Arrays mit 0 beginnen, erhalten wir als Ausgabe unsere 5.<br />
Einige werden sich auch schon sicher Gedanken dazu machen wie man ein ganzes Array durchlaufen könnte, um auf alle Werte zugreifen zu können. Mit Array.length können wir bequem auf die Länge unseres Arrays zugreifen und somit mit Hilfe einer Schleife – zum Beispiel – alle Elemente ausgeben.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zahlArray <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> zahlArray.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>zahlArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Hierbei erzeugen wir wie in den obigen Beispielen das Array zahlArray und befüllen es mit den entsprechenden Werten. Mit der for-Schleife ist es uns nun möglich auf die Indizes von 0 bis 3 (zahlArray.length – 1) zuzugreifen.<br />
Versuchen wir auf ein Element zuzugreifen, dass außerhalb des Arrays liegt – also wenn wir bei uns auf zahlArray[4] zugreifen würden – bekommen wir eine ArrayIndexOutOfBoundsException Fehlermeldung.</p>
<p>Wie in anderen Programmiersprachen ist es uns in Java auch möglich mehrdimensionale Arrays zu erstellen. Mehrdimensionale Arrays kann man sich als Arrays von Arrays vorstellen. Somit könnten wir beispielsweise Koordinaten speichern und auf diese zugreifen, oder uns eine Matrix simulieren.<br />
Dies erfolgt folgendermaßen:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> matrixEins <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Alternativen</span>
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> matrixZwei<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> matrixDrei<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Mit diesem Code haben wir uns so gesehen drei Matrizen erzeugt, die jeweils aus zwei Zeilen und drei Spalten bestehen. Nun kommen wir zur Verwendung eines dieser mehrdimensionalen Arrays:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> matrixEins <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> matrixEins.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> row <span style="color: #339933;">=</span> matrixEins<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> j <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> j <span style="color: #339933;">&lt;</span> row.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span>row<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Zunächst erzeugen wir uns wie schon weiter oben beschrieben ein zweidimensionales Array und befüllen es mit den Werten 1 und 2. Danach durchlaufen wir dieses Array mit zwei ineinander geschachtelten for-Schleifen, um auch alle Elemente zu erwischen. Dazu müssen wir uns ein neues Array anlegen, dass die jeweilige Zeile enthält und durchlaufen dieses neue Array mit der zweiten for-Schleife, um uns die Werte auszugeben, die in der aktuellen Zeile stecken. Ist diese Schleife abgearbeitet, wird dem row-Array die zweite Zeile des matrixEins-Arrays zugewiesen und die innere Schleife wird noch einmal abgearbeitet. Als Ausgabe wollten wir etwas sehen wie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000;">111</span>
<span style="color: #000000;">222</span></pre></div></div>

<p>Ein letztes Thema in diesem Tutorial ist die erweiterte for-Schleife, die von den Java-Entwicklern erstellt worden ist, um uns ein wenig Tipparbeit abzunehmen.<br />
Mit der erweiterten for-Schleife könnten wir unseren obigen Code in das umwandeln:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> matrixEins <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
matrixEins<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> row <span style="color: #339933;">:</span> matrixEins<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> value <span style="color: #339933;">:</span> row<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Vom Prinzip her funktioniert die erweiterte for-Schleife wie die normale for-Schleife, unterscheidet sich jedoch in der Syntax:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span> Typ Bezeichner <span style="color: #339933;">:</span> <span style="color: #003399;">Array</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
…
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Die erweiterte for-Schleife wird solange durchlaufen, bis das ganze Array abgearbeitet ist. Dabei wird der Variablen vor dem Doppelpunkt immer der aktuelle Wert aus dem Array übergeben, den wir zum Beispiel ausgeben können. Ist der Code im Rumpf abgearbeitet, wird der Variablen der nächste Wert, der im Array steckt übergeben, der dann wieder verarbeitet werden kann.</p>
<p>Somit hätten wir das Kapitel der Arrays in Java bearbeitet und können nun unsere Kuh vom Anfang endlich zum sprechen bringen. Dies jedoch im nächsten Tutorium.</p>
<p>Ansonsten bei Fragen fragen.</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/java-tutorial-arrays/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java-Tutorial: Schleifen</title>
		<link>http://coder-blog.de/java-tutorial-schleifen</link>
		<comments>http://coder-blog.de/java-tutorial-schleifen#comments</comments>
		<pubDate>Sun, 05 Apr 2009 19:57:35 +0000</pubDate>
		<dc:creator>Eugen</dc:creator>
				<category><![CDATA[Java-Tutorials]]></category>
		<category><![CDATA[coder-blog.de]]></category>
		<category><![CDATA[do-while-schleife]]></category>
		<category><![CDATA[for-schleife]]></category>
		<category><![CDATA[java-lernen]]></category>
		<category><![CDATA[java-tutorial]]></category>
		<category><![CDATA[javakurs]]></category>
		<category><![CDATA[schleifen]]></category>
		<category><![CDATA[while-schleife]]></category>

		<guid isPermaLink="false">http://coder-blog.de/?p=129</guid>
		<description><![CDATA[Dieses Java-Tutorial zeigt uns wie wir Schleifen dazu benutzen, um Code mehrmals auszufüheren. <a href="http://coder-blog.de/java-tutorial-schleifen">mehr <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In diesem Tutorial werden wir uns den Schleifen zuwenden. Um zu verdeutlichen was Schleifen sind, schauen wir und zunächst einmal diesen Code an:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">//Ausgabe: 0</span>
i<span style="color: #339933;">++;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">//Ausgabe: 1</span>
i<span style="color: #339933;">++;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">//Ausgabe: 2</span>
i<span style="color: #339933;">++;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">//Ausgabe: 3</span></pre></div></div>

<p>Wie wir sehen, erzeugen wir uns zunächst eine Variable, die einen Wert von 0 zugewiesen bekommt und dann der Wert der Variablen ausgegeben wird. Danach wird der Wert der Variablen um eins erhöht und es erfolgt wieder eine Ausgabe … usw. Nun, da Programmierer schreibfaul sind und dieser Code einfach zu umständlich erscheint, gibt es in vielen Programmiersprachen Schleifen, die dazu dienen einen bestimmten Code mehrmals auszuführen. Programmiersprachen, die keine Schleifen unterstützen, verwenden oft das Konzept der Rekursion &#8211; dies unterstützt Java auch.</p>
<p>Java kennt hierbei drei Arten von Schleifen:</p>
<ul>
<li><strong>while-Schleife</strong></li>
<li><strong> do-while-Schleife</strong></li>
<li><strong> for-Schleife</strong></li>
</ul>
<p>Schleifen bestehen immer aus einer Schleifenbedingung und dem Rumpf. In der Schleifenbedingung befindet sich ein boolescher Ausdruck, der der Schleife sagt wie lange der im Rumpf stehende Programmcode wiederholt werden soll.<span id="more-129"></span></p>
<p>Wenden wir uns zunächst der while-Schleife zu und betrachten dazu den oben abgewandelten Code in &#8220;Schleifen-Schreibweise&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  i<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Compilieren wir nun dieses Code-Fragment, so sollten wir das gleiche Ergebnis wie oben erhalten. Doch was passiert nun hier? Zunächst erstellen wir wie oben die Variable i und weisen ihr den Wert 0 zu. Danach sehen wir die while-Schleife in Gebrauch. In den runden Klammern finden wir die Bedingung, die der Schleife sagt, wie lange sie wiederholt werden soll – nämlich so lange wie unser i kleiner-gleich drei ist. Nun gelangen wir in den Rumpf der Schleife. Wie wir sehen findet dort lediglich die Ausgabe von i statt. Danach wird i um eins erhöht. Das Erhöhen der Variablen dürfen wir nicht vergessen, denn sonst bekämen wir eine Endlosschleife, die theoretisch unendlich lang ausgeführt wird. Naja, Theorie und Praxis sehen hierbei anders aus, denn entweder erkennt unser Betriebssystem, dass es sich hier um Code handelt, der nicht vorwärts kommt und bricht diesen ab, oder wir brechen ihn selber ab, weil es uns zu doof ist so lange zu warten, oder uns schmiert irgendwann das System ab und wir müssen den Rechner neu starten. <img src='http://coder-blog.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <br />
Schauen wir uns nun den obigen Code umgewandelt in eine for-Schleife an:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Was macht nun dieses Stück Code? In der for-Schleife deklarieren wir die Variable in den runden Klammern und weisen ihr den Wert 0 zu. Nach dem Semikolon folgt dann die Bedingung, die die gleiche ist wie bei der while-Schleife. Ein Semikolon weiter schreiben wir das rein, was mit unserer Zählvariablen i gemacht werden soll – sie wird um eins erhöht.<br />
Die Syntax einer for-Schleife sieht folgendermaßen aus:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>Zählvariable<span style="color: #339933;">;</span> Bedingung<span style="color: #339933;">;</span> Erhöhung der Zählvariablen<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
Code im Rumpf
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Der Code im Rumpf der Schleife wird so lange wiederholt, bis i den Wert von drei übersteigt.</p>
<p>Jetzt tun uns noch die do-while-Schleife und haben dieses Kapitel auch hinter uns <img src='http://coder-blog.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />
Zunächst einmal wenden wir uns wieder einem Code-Beispiel zu:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  i<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Okay, die do-while-Schleife unterscheidet sich von der while-Schleife einmal, dass da das &#8220;do&#8221; vor dem &#8220;while&#8221; steht und dadurch, dass eine do-while-Schleife mindestens einmal ausgeführt wird. Haben wir also eine Bedingung, die von vornherein &#8220;false&#8221; ist, so findet bei der while- und der for-Schleife keine Ausführung des Codes im Rumpf statt &#8211; jedoch bei der do-while-Schleife.</p>
<p>Nun sollte sich die Frage stellen wann man welche Schleife verwenden sollte. Bei der do-while-Schleife sollte es klar sein, dass man diese nutzt, um Code mindestens einmal ausgeführt zu haben. Bei der for- und while-Schleife ist es Wurschd, denn vom Aufwand her sollten beide gleich sein.</p>
<p>Also, noch ein fröhliches Coden … =)</p>
]]></content:encoded>
			<wfw:commentRss>http://coder-blog.de/java-tutorial-schleifen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.872 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-19 07:23:37 -->

