<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Jahnke.im</title><link>https://jahnke.im/</link><description>Spielereien und Projekte rund ums Programmieren</description><language>de-DE</language><lastBuildDate>Fri, 30 Nov 2018 21:01:36 +0100</lastBuildDate><atom:link href="https://jahnke.im/index.xml" rel="self" type="application/rss+xml"/><item><title>PartManager v0.1a</title><link>https://jahnke.im/java/partmanager-v0-1a/</link><pubDate>Fri, 30 Nov 2018 21:01:36 +0100</pubDate><guid>https://jahnke.im/java/partmanager-v0-1a/</guid><category>Java</category><description>Ich war vor einiger Zeit auf der Suche nach einem schlanken Programm zur Verwaltung meiner elektronischen Bauteile. Leider waren die meisten Tools überladen und kompliziert in der Bedienung. Also entschloss ich mich, selbst eines zu schreiben. Bisher habe ich es für meine eigenen Zwecke genutzt, möchte es aber zur freien Nutzung zur Verfügung stellen und auch weiterentwickeln.&#10;Im PartManager können Bauteile und ihre Verfügbarkeit im persönlichen „Lager“ verwaltet werden. Beim Anlegen eines Datensatzes können Informationen von Conrad, Reichelt, Digikey, Pollin, Voelkner, Mouser, Watterott, Farnell, Amazon und Ebay importiert werden. Weiterhin können virtuelle Lagerkisten angelegt werden und diese mit Bauteilen gefüllt werden.</description><content:encoded><![CDATA[<p>Ich war vor einiger Zeit auf der Suche nach einem schlanken Programm zur Verwaltung meiner elektronischen Bauteile. Leider waren die meisten Tools überladen und kompliziert in der Bedienung. Also entschloss ich mich, selbst eines zu schreiben. Bisher habe ich es für meine eigenen Zwecke genutzt, möchte es aber zur freien Nutzung zur Verfügung stellen und auch weiterentwickeln.</p>
<p>Im PartManager können Bauteile und ihre Verfügbarkeit im persönlichen „Lager“ verwaltet werden. Beim Anlegen eines Datensatzes können Informationen von Conrad, Reichelt, Digikey, Pollin, Voelkner, Mouser, Watterott, Farnell, Amazon und Ebay importiert werden. Weiterhin können virtuelle Lagerkisten angelegt werden und diese mit Bauteilen gefüllt werden.</p>
<div id="gallery-0" class="gallery gallery-columns-3" style="--gallery-columns: 3">
	<figure class="gallery-item">
		<a href="https://jahnke.im/uploads/2018/11/PartManager.jpg" data-lightbox="gallery-0"><img src="https://jahnke.im/uploads/2018/11/PartManager_hu_822a420a5cee8ed4.jpg" width="150" height="150" alt="" loading="lazy" decoding="async"></a>
	</figure>
	<figure class="gallery-item">
		<a href="https://jahnke.im/uploads/2018/11/Lager.jpg" data-lightbox="gallery-0"><img src="https://jahnke.im/uploads/2018/11/Lager_hu_d78faab6db22f53f.jpg" width="150" height="150" alt="" loading="lazy" decoding="async"></a>
	</figure>
	<figure class="gallery-item">
		<a href="https://jahnke.im/uploads/2018/11/Bestellung.jpg" data-lightbox="gallery-0"><img src="https://jahnke.im/uploads/2018/11/Bestellung_hu_3c0a2bb90b99e56f.jpg" width="150" height="150" alt="" loading="lazy" decoding="async"></a>
	</figure>
</div>

<p>Der PartManager ist momentan noch im Alpha-Stadium und wird voraussichtlich im Frühling 2019 weiterentwickelt.</p>
<p>Download: <a href="https://jahnke.im/uploads/2018/11/PartManager.zip">PartManager</a></p>
]]></content:encoded></item><item><title>Pi Boy #2 – Display</title><link>https://jahnke.im/projekte/pi-boy/pi-boy-2-display/</link><pubDate>Wed, 03 Aug 2016 14:30:05 +0100</pubDate><guid>https://jahnke.im/projekte/pi-boy/pi-boy-2-display/</guid><category>Pi Boy</category><description>Anfangs wollte ich für den Pi Boy ein SPI-Display mit 3.5″ und einer Auflösung von 320×240 Pixel einsetzten, doch leider gab es massive Probleme mit den Treibern. Also entschied ich mich für ein AV-Display aus einer Rückfahrkamera von Amazon.&#10;Nachdem das Gehäuse geöffnet war, sprang mir direkt ein AP1509 Step Down IC ins Auge, dass die 12V Eingangsspannung auf 5V regelt. Durch Auslöten des IC und Überbrücken der Pins 1 und 2 kann das Display mit 5V direkt betrieben werden.</description><content:encoded><![CDATA[<p><a href="https://jahnke.im/uploads/2016/08/20160803_153444-e1470231594313.jpg"><img src="https://jahnke.im/uploads/2016/08/20160803_153444-e1470231594313-1024x577.jpg" alt="parking-camera-display" width="665" height="375" class="alignnone size-large wp-image-526" /></a></p>
<p>Anfangs wollte ich für den Pi Boy ein SPI-Display mit 3.5″ und einer Auflösung von 320×240 Pixel einsetzten, doch leider gab es massive Probleme mit den Treibern. Also entschied ich mich für ein AV-Display aus einer Rückfahrkamera von <a href="https://www.amazon.de/gp/product/B0056WJP1M" target="_blank">Amazon</a>.</p>
<p>Nachdem das Gehäuse geöffnet war, sprang mir direkt ein AP1509 Step Down IC ins Auge, dass die 12V Eingangsspannung auf 5V regelt. Durch Auslöten des IC und Überbrücken der Pins 1 und 2 kann das Display mit 5V direkt betrieben werden.</p>
<div id="gallery-0" class="gallery gallery-columns-3" style="--gallery-columns: 3">
	<figure class="gallery-item">
		<a href="https://jahnke.im/uploads/2016/08/20160718_204618.jpg" data-lightbox="gallery-0"><img src="https://jahnke.im/uploads/2016/08/20160718_204618_hu_9aaeaa9729aef888.jpg" width="150" height="150" alt="" loading="lazy" decoding="async"></a>
	</figure>
	<figure class="gallery-item">
		<a href="https://jahnke.im/uploads/2016/08/20160718_204731-e1470411512107.jpg" data-lightbox="gallery-0"><img src="https://jahnke.im/uploads/2016/08/20160718_204731-e1470411512107_hu_d6498a1a87d5f921.jpg" width="150" height="150" alt="" loading="lazy" decoding="async"></a>
	</figure>
	<figure class="gallery-item">
		<a href="https://jahnke.im/uploads/2016/08/20160805_172916.jpg" data-lightbox="gallery-0"><img src="https://jahnke.im/uploads/2016/08/20160805_172916_hu_95ecf23bb16a8189.jpg" width="150" height="150" alt="" loading="lazy" decoding="async"></a>
	</figure>
	<figure class="gallery-item">
		<a href="https://jahnke.im/uploads/2016/08/AP1509.jpg" data-lightbox="gallery-0"><img src="https://jahnke.im/uploads/2016/08/AP1509_hu_f831687b3f3d3921.jpg" width="150" height="150" alt="" loading="lazy" decoding="async"></a>
	</figure>
</div>

<p>Weiteres folgt, sobald ich eine Lösung für das Problem mit den Tasten des Pi Boys gefunden habe.</p>
]]></content:encoded></item><item><title>Pi Boy #1 – Vorbereitungen</title><link>https://jahnke.im/projekte/pi-boy/pi-boy-1-vorueberlegungen/</link><pubDate>Wed, 20 Jul 2016 15:48:27 +0100</pubDate><guid>https://jahnke.im/projekte/pi-boy/pi-boy-1-vorueberlegungen/</guid><category>Pi Boy</category><description>Ich will die Zeit neben meinem Ferienjob in den Semesterferien dazu nutzen, eine Spielekonsole im Gameboy-Gehäuse zu bauen, die mit Hilfe eines Raspberry Pi und diversen Emulatoren Spiele verschiedener Konsolen starten kann.&#10;Zuerst soll abgeschätzt werden, welcher Pi zum Einsatz kommt. Zur Auswahl stehen der Pi 3 und der Pi Zero. Die verschiedenen Emulatoren werden auf beiden Pi’s getestet:&#10;Spiele Pi Zero Pi 3 GameBoy &amp;#10004; &amp;#10004; GameBoy Advance &amp;#10004; &amp;#10004; GameBoy Color &amp;#10004; &amp;#10004; Genesis &amp;#10004; &amp;#10004; MasterSystem &amp;#10004; &amp;#10004; N64 &amp;#10006; (weitere Tests notwendig) &amp;#10004; NES &amp;#10004; &amp;#10004; PlayStation &amp;#10004; &amp;#10004; SNES &amp;#10004; &amp;#10004; Hardware Pi Zero Pi 3 WLAN &amp;#10004; &amp;#10006; Audio-Buchse &amp;#10006; &amp;#10004; Video-Buchse &amp;#10004; &amp;#10004; USB-Anschluss &amp;#10004; (1x Micro USB) &amp;#10004; (4x USB)</description><content:encoded><![CDATA[<p><a href="https://jahnke.im/uploads/2016/07/gameboy-150950_12801.png"><img src="https://jahnke.im/uploads/2016/07/gameboy-150950_12801.png" alt="gameboy-clipart" width="200" class="alignnone size-full wp-image-200" /></a></p>
<p>Ich will die Zeit neben meinem Ferienjob in den Semesterferien dazu nutzen, eine Spielekonsole im Gameboy-Gehäuse zu bauen, die mit Hilfe eines Raspberry Pi und diversen Emulatoren Spiele verschiedener Konsolen starten kann.</p>
<p>Zuerst soll abgeschätzt werden, welcher Pi zum Einsatz kommt. Zur Auswahl stehen der Pi 3 und der Pi Zero. Die verschiedenen Emulatoren werden auf beiden Pi’s getestet:</p>
<table>
<tr>
<th>Spiele</th>
<th>Pi Zero</th>
<th>Pi 3</th>
</tr>
<tr>
<td>GameBoy</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>GameBoy Advance</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>GameBoy Color</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>Genesis</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>MasterSystem</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>N64</td>
<td>&#10006; (weitere Tests notwendig)</td>
<td>&#10004;</td>
</tr>
<tr>
<td>NES</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>PlayStation</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>SNES</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<th>Hardware</th>
<th>Pi Zero</th>
<th>Pi 3</th>
</tr>
<tr>
<td>WLAN</td>
<td>&#10004;</td>
<td>&#10006;</td>
</tr>
<tr>
<td>Audio-Buchse</td>
<td>&#10006;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>Video-Buchse</td>
<td>&#10004;</td>
<td>&#10004;</td>
</tr>
<tr>
<td>USB-Anschluss</td>
<td>&#10004; (1x Micro USB)</td>
<td>&#10004; (4x USB)</td>
</tr>
</table>
]]></content:encoded></item><item><title>Chat mit Socket.io und Node.js</title><link>https://jahnke.im/javascript/chat-mit-socket-io/</link><pubDate>Fri, 03 Jun 2016 01:44:11 +0100</pubDate><guid>https://jahnke.im/javascript/chat-mit-socket-io/</guid><category>Javascript</category><description>Ich bin zufällig auf Socket.io gestoßen und wollte mir das Ganze direkt mal anschauen. Socket.io dient in erster Linie der schnelleren Kommunikation zwischen Server und Clients auf Basis von WebSockets.&#10;In diesem Beitrag beschreibe ich die Installation von Socket.io und den Aufbau eines kleinen Chat-Programms auf Basis der gegebenen Demo auf der Socket.io-Website.&#10;Installation Zuerst wird Node.js benötigt. Es wird heruntergeladen und anschließend installiert:&#10;1 2 curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs Weiter benötigt man das Package Build-Tools, das man ebenfalls installiert:</description><content:encoded><![CDATA[<p>Ich bin zufällig auf Socket.io gestoßen und wollte mir das Ganze direkt mal anschauen. Socket.io dient in erster Linie der schnelleren Kommunikation zwischen Server und Clients auf Basis von WebSockets.</p>
<p>In diesem Beitrag beschreibe ich die Installation von Socket.io und den Aufbau eines kleinen Chat-Programms auf Basis der gegebenen Demo auf der <a href="http://socket.io/get-started/chat/" target="_blank">Socket.io-Website</a>.</p>
<h2>Installation</h2>
<p>Zuerst wird Node.js benötigt. Es wird heruntergeladen und anschließend installiert:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -sL https://deb.nodesource.com/setup_4.x <span class="p">|</span> sudo -E bash -
</span></span><span class="line"><span class="cl">sudo apt-get install -y nodejs
</span></span></code></pre></td></tr></table>
</div>
</div><p>Weiter benötigt man das Package Build-Tools, das man ebenfalls installiert:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt-get install -y build-essential
</span></span></code></pre></td></tr></table>
</div>
</div><h2>Das Framework</h2>
<p>Für unser Projekt erstellen wir einen neuen Ordner, z.B. „chat-example“ und erstellen eine package.json</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;name&#34;</span><span class="o">:</span> <span class="s2">&#34;socket-chat&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;version&#34;</span><span class="o">:</span> <span class="s2">&#34;1.0.0&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;description&#34;</span><span class="o">:</span> <span class="s2">&#34;my first socket.io app&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;dependencies&#34;</span><span class="o">:</span> <span class="p">{}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Den Chat wollen wir mithilfe des Express Frameworks erstellen, also:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">npm install --save express@4.10.2
</span></span></code></pre></td></tr></table>
</div>
</div><h2>Das Server-Script</h2>
<p>Wir erstellen eine index.js und tragen folgenden Code ein:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">var <span class="nv">app</span> <span class="o">=</span> require<span class="o">(</span><span class="s1">&#39;express&#39;</span><span class="o">)()</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">var <span class="nv">http</span> <span class="o">=</span> require<span class="o">(</span><span class="s1">&#39;http&#39;</span><span class="o">)</span>.Server<span class="o">(</span>app<span class="o">)</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">app.get<span class="o">(</span><span class="s1">&#39;/&#39;</span>, <span class="k">function</span><span class="o">(</span>req, res<span class="o">){</span>
</span></span><span class="line"><span class="cl">  res.send<span class="o">(</span><span class="s1">&#39;&lt;h1&gt;Hello world&lt;/h1&gt;&#39;</span><span class="o">)</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="o">})</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">http.listen<span class="o">(</span>3000, <span class="k">function</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl">  console.log<span class="o">(</span><span class="s1">&#39;listening on *:3000&#39;</span><span class="o">)</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="o">})</span><span class="p">;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Der erste Schritt ist getan. Das Script kann nun mit dem Befehl node gestartet werden:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">node index.js
</span></span></code></pre></td></tr></table>
</div>
</div><p>Im Browser ist die im Programm definierte Startseite abrufbar.</p>
<p><a href="https://jahnke.im/uploads/2016/06/sc.jpg"><img src="https://jahnke.im/uploads/2016/06/sc.jpg" alt="Socket.io: Hallo Welt!" width="390" height="201" class="alignnone size-full wp-image-417" /></a></p>
<h2>Der Client</h2>
<p>Man könnte den ganzen HTML-Code per res.send() übertragen, was aber bei größeren Seiten schnell unübersichtlich wird. Wir erstellen also eine separate index.html und tragen unsere Website dort ein:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="o">&lt;!</span><span class="nx">doctype</span> <span class="nx">html</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">html</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="o">&lt;</span><span class="nx">head</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="o">&lt;</span><span class="nx">title</span><span class="o">&gt;</span><span class="nx">Socket</span><span class="p">.</span><span class="nx">IO</span> <span class="nx">chat</span><span class="o">&lt;</span><span class="err">/title&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="o">&lt;</span><span class="nx">style</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="o">*</span> <span class="p">{</span> <span class="nx">margin</span><span class="o">:</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">padding</span><span class="o">:</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">box</span><span class="o">-</span><span class="nx">sizing</span><span class="o">:</span> <span class="nx">border</span><span class="o">-</span><span class="nx">box</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="nx">body</span> <span class="p">{</span> <span class="nx">font</span><span class="o">:</span> <span class="mi">13</span><span class="nx">px</span> <span class="nx">Helvetica</span><span class="p">,</span> <span class="nx">Arial</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="nx">form</span> <span class="p">{</span> <span class="nx">background</span><span class="o">:</span> <span class="err">#</span><span class="mi">000</span><span class="p">;</span> <span class="nx">padding</span><span class="o">:</span> <span class="mi">3</span><span class="nx">px</span><span class="p">;</span> <span class="nx">position</span><span class="o">:</span> <span class="nx">fixed</span><span class="p">;</span> <span class="nx">bottom</span><span class="o">:</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">width</span><span class="o">:</span> <span class="mi">100</span><span class="o">%</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="nx">form</span> <span class="nx">input</span> <span class="p">{</span> <span class="nx">border</span><span class="o">:</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">padding</span><span class="o">:</span> <span class="mi">10</span><span class="nx">px</span><span class="p">;</span> <span class="nx">width</span><span class="o">:</span> <span class="mi">90</span><span class="o">%</span><span class="p">;</span> <span class="nx">margin</span><span class="o">-</span><span class="nx">right</span><span class="o">:</span> <span class="p">.</span><span class="mi">5</span><span class="o">%</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="nx">form</span> <span class="nx">button</span> <span class="p">{</span> <span class="nx">width</span><span class="o">:</span> <span class="mi">9</span><span class="o">%</span><span class="p">;</span> <span class="nx">background</span><span class="o">:</span> <span class="nx">rgb</span><span class="p">(</span><span class="mi">130</span><span class="p">,</span> <span class="mi">224</span><span class="p">,</span> <span class="mi">255</span><span class="p">);</span> <span class="nx">border</span><span class="o">:</span> <span class="nx">none</span><span class="p">;</span> <span class="nx">padding</span><span class="o">:</span> <span class="mi">10</span><span class="nx">px</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="err">#</span><span class="nx">messages</span> <span class="p">{</span> <span class="nx">list</span><span class="o">-</span><span class="nx">style</span><span class="o">-</span><span class="nx">type</span><span class="o">:</span> <span class="nx">none</span><span class="p">;</span> <span class="nx">margin</span><span class="o">:</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">padding</span><span class="o">:</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="err">#</span><span class="nx">messages</span> <span class="nx">li</span> <span class="p">{</span> <span class="nx">padding</span><span class="o">:</span> <span class="mi">5</span><span class="nx">px</span> <span class="mi">10</span><span class="nx">px</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">      <span class="err">#</span><span class="nx">messages</span> <span class="nx">li</span><span class="o">:</span><span class="nx">nth</span><span class="o">-</span><span class="nx">child</span><span class="p">(</span><span class="nx">odd</span><span class="p">)</span> <span class="p">{</span> <span class="nx">background</span><span class="o">:</span> <span class="err">#</span><span class="nx">eee</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="o">&lt;</span><span class="err">/style&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="o">&lt;</span><span class="err">/head&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="o">&lt;</span><span class="nx">body</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="o">&lt;</span><span class="nx">ul</span> <span class="nx">id</span><span class="o">=</span><span class="s2">&#34;messages&#34;</span><span class="o">&gt;&lt;</span><span class="err">/ul&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="o">&lt;</span><span class="nx">form</span> <span class="nx">action</span><span class="o">=</span><span class="s2">&#34;&#34;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="o">&lt;</span><span class="nx">input</span> <span class="nx">id</span><span class="o">=</span><span class="s2">&#34;m&#34;</span> <span class="nx">autocomplete</span><span class="o">=</span><span class="s2">&#34;off&#34;</span> <span class="o">/&gt;&lt;</span><span class="nx">button</span><span class="o">&gt;</span><span class="nx">Send</span><span class="o">&lt;</span><span class="err">/button&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="o">&lt;</span><span class="err">/form&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="o">&lt;</span><span class="err">/body&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/html&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Dem Server muss mitgeteilt werden, dass er ab sofort die Website aus einer Datei lesen soll. Also ersetzen wir res.send() durch:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="nx">res</span><span class="p">.</span><span class="nx">sendFile</span><span class="p">(</span><span class="nx">__dirname</span> <span class="o">+</span> <span class="s1">&#39;/index.html&#39;</span><span class="p">);</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Wir starten das Server-Script erneut und sehen, dass die index.html erfolgreich geladen wurde:</p>
<p><a href="https://jahnke.im/uploads/2016/06/sc2.jpg"><img src="https://jahnke.im/uploads/2016/06/sc2.jpg" alt="Socket.io: index.html" width="510" height="316" class="alignnone size-full wp-image-418" /></a></p>
<h2>Kommunikation zwischen Client und Server</h2>
<p>Es ist an der Zeit, Client und Server kommunikationsfähig zu machen. Hierbei kommt Socket.io ist Spiel, das wir jetzt installieren:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">npm install --save socket.io
</span></span></code></pre></td></tr></table>
</div>
</div><p>Fügen wir nun das Modul zur index.js hinzu:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">)();</span>
</span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">http</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;http&#39;</span><span class="p">).</span><span class="nx">Server</span><span class="p">(</span><span class="nx">app</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">io</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;socket.io&#39;</span><span class="p">)(</span><span class="nx">http</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">  <span class="nx">res</span><span class="p">.</span><span class="nx">sendfile</span><span class="p">(</span><span class="s1">&#39;index.html&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">io</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;connection&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">socket</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;a user connected&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">http</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">3000</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;listening on *:3000&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Hier wird auf eingehende Verbindungen gewartet und jeweils eine Meldung auf der Konsole ausgegeben.<br />
Jetzt fehlt nur noch die Anpassung in der index.html:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span> <span class="nx">src</span><span class="o">=</span><span class="s2">&#34;/socket.io/socket.io.js&#34;</span><span class="o">&gt;&lt;</span><span class="err">/script&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="kd">var</span> <span class="nx">socket</span> <span class="o">=</span> <span class="nx">io</span><span class="p">();</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/script&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Wir starten das Script neu und öffnen die Seite in mehreren Tabs. Bei jeder neuen Verbindung wird eine Meldung auf der Konsole ausgegeben.</p>
<p>Nicht nur eingehende, sondern auch beendete Verbindungen können mit einem Event gebunden werden:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="nx">io</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;connection&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">socket</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;a user connected&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="nx">socket</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;disconnect&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;user disconnected&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2>Events abfeuern</h2>
<p>Zur Kommunikation zwischen Client und Server werden Events abgefeuert. Daten können als Strings, JSON oder binär übertragen werden. In unserem Beispiel werden wir Strings übertragen.</p>
<p>Für unseren Chat brauchen wir als zuerst ein Event, dass die Nachricht an den Server schickt. Nennen wir es chat message:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span> <span class="nx">src</span><span class="o">=</span><span class="s2">&#34;/socket.io/socket.io.js&#34;</span><span class="o">&gt;&lt;</span><span class="err">/script&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span> <span class="nx">src</span><span class="o">=</span><span class="s2">&#34;https://code.jquery.com/jquery-1.11.1.js&#34;</span><span class="o">&gt;&lt;</span><span class="err">/script&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="kd">var</span> <span class="nx">socket</span> <span class="o">=</span> <span class="nx">io</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">  <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;form&#39;</span><span class="p">).</span><span class="nx">submit</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="nx">socket</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;chat message&#39;</span><span class="p">,</span> <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#m&#39;</span><span class="p">).</span><span class="nx">val</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">    <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#m&#39;</span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/script&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>In der index.js empfangen wir das Event:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="nx">io</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;connection&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">socket</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">  <span class="nx">socket</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;chat message&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">msg</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;message: &#39;</span> <span class="o">+</span> <span class="nx">msg</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>nach einem Start der index.js werden alle Nachrichten, die über den Chat abgesendet werden, auf der Konsole ausgegeben.</p>
<h2>Broadcasting</h2>
<p>Der Server hat die Nachricht empfangen und muss sie jetzt an alle Clients verteilen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="nx">io</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;connection&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">socket</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">  <span class="nx">socket</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;chat message&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">msg</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">    <span class="nx">io</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;chat message&#39;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jeder Client benötigt jetzt noch einen Eventhandler:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="kd">var</span> <span class="nx">socket</span> <span class="o">=</span> <span class="nx">io</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">  <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;form&#39;</span><span class="p">).</span><span class="nx">submit</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="nx">socket</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;chat message&#39;</span><span class="p">,</span> <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#m&#39;</span><span class="p">).</span><span class="nx">val</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">    <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#m&#39;</span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl">  <span class="nx">socket</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;chat message&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">msg</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">    <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#messages&#39;</span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="s1">&#39;&lt;li&gt;&#39;</span><span class="p">).</span><span class="nx">text</span><span class="p">(</span><span class="nx">msg</span><span class="p">));</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/script&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Herzlichen Glückwunsch! Das erste Script für Socket.io ist fertig.</p>
<p>Ich habe mir die Mühe gemacht und noch einige Erweiterungen eingebaut:<br />
<a href="https://jahnke.im/uploads/2016/06/sc3.jpg"><img src="https://jahnke.im/uploads/2016/06/sc3.jpg" alt="Socket.io: Erweiterter Chat" width="599" height="355" class="alignnone size-full wp-image-419" /></a></p>
<p>Alle User werden jetzt auf der rechten Seite des Fensters aufgelistet. Per Klick auf einen Namen kann eine private Nachricht versendet werden. Private Nachrichten werden im Chat blau hervorgehoben. Außerdem kann man mit „/nick neuername“ den aktuellen Benutzernamen ändern. Smileys werden per Klick in das Textfeld eingefügt. Zuletzt kann der gesamte Chat-Verlauf der aktuellen Session als Textdatei heruntergeladen werden.</p>
<p>Der Quellcode kann auf Github heruntergeladen werden: <a href="https://github.com/Ditoran/socket.io-chat" target="_blank">Download</a></p>
]]></content:encoded></item><item><title>Kimsufi Crawler</title><link>https://jahnke.im/java/kimsufi-crawler/</link><pubDate>Sun, 28 Feb 2016 23:17:00 +0100</pubDate><guid>https://jahnke.im/java/kimsufi-crawler/</guid><category>Java</category><description>Wenn man sich bei Kimsufi einen neuen Server zulegen möchte, ist das meist mit langen Wartezeiten verbunden. Eine hauseigene Benachrichtigung zur Verfügbarkeit wird leider nicht angeboten und die manuelle Abfrage der Seite ist unter Umständen nicht schnell genug, sodass man einen verfügbaren Server nicht bemerkt. Aus diesem Grund habe ich einen kleinen Crawler geschrieben, der in beliebigen Intervallen die Verfügbarkeit des gewünschten Servers überprüft. Ist der Server verfügbar, so öffnet sich ein Popup und der Browser öffnet direkt den Link zum Bestellformular.</description><content:encoded><![CDATA[<p><a href="https://jahnke.im/uploads/2016/02/kimsuficrawler.jpg" rel="attachment wp-att-368"><img class="alignnone size-full wp-image-368" src="https://jahnke.im/uploads/2016/02/kimsuficrawler.jpg" alt="Kimsufi Crawler" width="677" height="342" /></a></p>
<p>Wenn man sich bei Kimsufi einen neuen Server zulegen möchte, ist das meist mit langen Wartezeiten verbunden. Eine hauseigene Benachrichtigung zur Verfügbarkeit wird leider nicht angeboten und die manuelle Abfrage der Seite ist unter Umständen nicht schnell genug, sodass man einen verfügbaren Server nicht bemerkt. Aus diesem Grund habe ich einen kleinen Crawler geschrieben, der in beliebigen Intervallen die Verfügbarkeit des gewünschten Servers überprüft. Ist der Server verfügbar, so öffnet sich ein Popup und der Browser öffnet direkt den Link zum Bestellformular.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">  1
</span><span class="lnt">  2
</span><span class="lnt">  3
</span><span class="lnt">  4
</span><span class="lnt">  5
</span><span class="lnt">  6
</span><span class="lnt">  7
</span><span class="lnt">  8
</span><span class="lnt">  9
</span><span class="lnt"> 10
</span><span class="lnt"> 11
</span><span class="lnt"> 12
</span><span class="lnt"> 13
</span><span class="lnt"> 14
</span><span class="lnt"> 15
</span><span class="lnt"> 16
</span><span class="lnt"> 17
</span><span class="lnt"> 18
</span><span class="lnt"> 19
</span><span class="lnt"> 20
</span><span class="lnt"> 21
</span><span class="lnt"> 22
</span><span class="lnt"> 23
</span><span class="lnt"> 24
</span><span class="lnt"> 25
</span><span class="lnt"> 26
</span><span class="lnt"> 27
</span><span class="lnt"> 28
</span><span class="lnt"> 29
</span><span class="lnt"> 30
</span><span class="lnt"> 31
</span><span class="lnt"> 32
</span><span class="lnt"> 33
</span><span class="lnt"> 34
</span><span class="lnt"> 35
</span><span class="lnt"> 36
</span><span class="lnt"> 37
</span><span class="lnt"> 38
</span><span class="lnt"> 39
</span><span class="lnt"> 40
</span><span class="lnt"> 41
</span><span class="lnt"> 42
</span><span class="lnt"> 43
</span><span class="lnt"> 44
</span><span class="lnt"> 45
</span><span class="lnt"> 46
</span><span class="lnt"> 47
</span><span class="lnt"> 48
</span><span class="lnt"> 49
</span><span class="lnt"> 50
</span><span class="lnt"> 51
</span><span class="lnt"> 52
</span><span class="lnt"> 53
</span><span class="lnt"> 54
</span><span class="lnt"> 55
</span><span class="lnt"> 56
</span><span class="lnt"> 57
</span><span class="lnt"> 58
</span><span class="lnt"> 59
</span><span class="lnt"> 60
</span><span class="lnt"> 61
</span><span class="lnt"> 62
</span><span class="lnt"> 63
</span><span class="lnt"> 64
</span><span class="lnt"> 65
</span><span class="lnt"> 66
</span><span class="lnt"> 67
</span><span class="lnt"> 68
</span><span class="lnt"> 69
</span><span class="lnt"> 70
</span><span class="lnt"> 71
</span><span class="lnt"> 72
</span><span class="lnt"> 73
</span><span class="lnt"> 74
</span><span class="lnt"> 75
</span><span class="lnt"> 76
</span><span class="lnt"> 77
</span><span class="lnt"> 78
</span><span class="lnt"> 79
</span><span class="lnt"> 80
</span><span class="lnt"> 81
</span><span class="lnt"> 82
</span><span class="lnt"> 83
</span><span class="lnt"> 84
</span><span class="lnt"> 85
</span><span class="lnt"> 86
</span><span class="lnt"> 87
</span><span class="lnt"> 88
</span><span class="lnt"> 89
</span><span class="lnt"> 90
</span><span class="lnt"> 91
</span><span class="lnt"> 92
</span><span class="lnt"> 93
</span><span class="lnt"> 94
</span><span class="lnt"> 95
</span><span class="lnt"> 96
</span><span class="lnt"> 97
</span><span class="lnt"> 98
</span><span class="lnt"> 99
</span><span class="lnt">100
</span><span class="lnt">101
</span><span class="lnt">102
</span><span class="lnt">103
</span><span class="lnt">104
</span><span class="lnt">105
</span><span class="lnt">106
</span><span class="lnt">107
</span><span class="lnt">108
</span><span class="lnt">109
</span><span class="lnt">110
</span><span class="lnt">111
</span><span class="lnt">112
</span><span class="lnt">113
</span><span class="lnt">114
</span><span class="lnt">115
</span><span class="lnt">116
</span><span class="lnt">117
</span><span class="lnt">118
</span><span class="lnt">119
</span><span class="lnt">120
</span><span class="lnt">121
</span><span class="lnt">122
</span><span class="lnt">123
</span><span class="lnt">124
</span><span class="lnt">125
</span><span class="lnt">126
</span><span class="lnt">127
</span><span class="lnt">128
</span><span class="lnt">129
</span><span class="lnt">130
</span><span class="lnt">131
</span><span class="lnt">132
</span><span class="lnt">133
</span><span class="lnt">134
</span><span class="lnt">135
</span><span class="lnt">136
</span><span class="lnt">137
</span><span class="lnt">138
</span><span class="lnt">139
</span><span class="lnt">140
</span><span class="lnt">141
</span><span class="lnt">142
</span><span class="lnt">143
</span><span class="lnt">144
</span><span class="lnt">145
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kn">package</span><span class="w"> </span><span class="nn">im.jahnke.kimsuficrawler</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">java.awt.Desktop</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">java.io.BufferedReader</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">java.io.InputStreamReader</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">java.net.URI</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">java.net.URL</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">java.util.Scanner</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">javax.net.ssl.HttpsURLConnection</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="nn">javax.swing.JOptionPane</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="cm">/**
</span></span></span><span class="line"><span class="cl"><span class="cm"> * KimsufiCrawler is a tool for checking the availability of Kimsufi servers 
</span></span></span><span class="line"><span class="cl"><span class="cm"> * 
</span></span></span><span class="line"><span class="cl"><span class="cm"> */</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">KimsufiCrawler</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">     
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">         
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">Scanner</span><span class="w"> </span><span class="n">sc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Scanner</span><span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="na">in</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">         
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;Kimsufi Server Scanner&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;1 \t KS-1&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;2A \t KS-2A&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;2B \t KS-2B&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;2C \t KS-2C&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;2D \t KS-2D&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;3A \t KS-3A&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;3B \t KS-3B&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;3C \t KS-3C&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;3D \t KS-3D&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;4A \t KS-4A&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;4B \t KS-4B&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;4C \t KS-4C&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;4D \t KS-4D&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;5 \t KS-5&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="s">&#34;Choose Server: &#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">String</span><span class="w"> </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">sc</span><span class="p">.</span><span class="na">nextLine</span><span class="p">())</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;1&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk1&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;2A&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk2&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;2B&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk21&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;2C&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk22&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;2D&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk23&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;3A&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk3&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;3B&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk31&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;3C&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk32&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;3D&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk33&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;4A&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk4&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;4B&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk41&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;4C&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk42&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;4D&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk43&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">case</span><span class="w"> </span><span class="s">&#34;5&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;160sk5&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">default</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">break</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">         
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="s">&#34;Sleeping time in seconds: &#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="kt">int</span><span class="w"> </span><span class="n">sleepingTime</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sc</span><span class="p">.</span><span class="na">nextInt</span><span class="p">()</span><span class="o">*</span><span class="n">1000</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">         
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">sc</span><span class="p">.</span><span class="na">close</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">         
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">while</span><span class="p">(</span><span class="kc">true</span><span class="p">){</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;Scanning for available server...&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">String</span><span class="w"> </span><span class="n">pageContent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getPageContent</span><span class="p">(</span><span class="s">&#34;https://www.kimsufi.com/en/order/kimsufi.cgi?hard=&#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&#34;&amp;dedicatedQuantity=1&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">pageContent</span><span class="p">.</span><span class="na">contains</span><span class="p">(</span><span class="s">&#34;invalide&#34;</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="o">!</span><span class="n">pageContent</span><span class="p">.</span><span class="na">contains</span><span class="p">(</span><span class="s">&#34;rapprovisionnement&#34;</span><span class="p">)){</span><span class="w">                
</span></span></span><span class="line"><span class="cl"><span class="w">                </span><span class="n">Desktop</span><span class="p">.</span><span class="na">getDesktop</span><span class="p">().</span><span class="na">browse</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">URI</span><span class="p">(</span><span class="s">&#34;https://www.kimsufi.com/en/order/kimsufi.cgi?hard=&#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">chosenServer</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&#34;&amp;dedicatedQuantity=1&#34;</span><span class="p">));</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">                </span><span class="n">JOptionPane</span><span class="p">.</span><span class="na">showMessageDialog</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;Alarm&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">                </span><span class="k">return</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">                </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;No free servers found...&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">             
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">Thread</span><span class="p">.</span><span class="na">sleep</span><span class="p">(</span><span class="n">sleepingTime</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">gc</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">     
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">getPageContent</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">url</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">String</span><span class="w"> </span><span class="n">inputLine</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">StringBuffer</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">StringBuffer</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">         
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">URL</span><span class="w"> </span><span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">URL</span><span class="p">(</span><span class="n">url</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">HttpsURLConnection</span><span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">HttpsURLConnection</span><span class="p">)</span><span class="w"> </span><span class="n">obj</span><span class="p">.</span><span class="na">openConnection</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">conn</span><span class="p">.</span><span class="na">setRequestMethod</span><span class="p">(</span><span class="s">&#34;GET&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">conn</span><span class="p">.</span><span class="na">setUseCaches</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">conn</span><span class="p">.</span><span class="na">setRequestProperty</span><span class="p">(</span><span class="s">&#34;User-Agent&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;Mozilla/2.0&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">conn</span><span class="p">.</span><span class="na">setRequestProperty</span><span class="p">(</span><span class="s">&#34;Accept&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">conn</span><span class="p">.</span><span class="na">setRequestProperty</span><span class="p">(</span><span class="s">&#34;Accept-Language&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;en-US,en;q=0.5&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">         
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">try</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">BufferedReader</span><span class="w"> </span><span class="n">in</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">BufferedReader</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">InputStreamReader</span><span class="p">(</span><span class="n">conn</span><span class="p">.</span><span class="na">getInputStream</span><span class="p">()));</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">             
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="k">while</span><span class="w"> </span><span class="p">((</span><span class="n">inputLine</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">in</span><span class="p">.</span><span class="na">readLine</span><span class="p">())</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">                </span><span class="n">response</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">inputLine</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">in</span><span class="p">.</span><span class="na">close</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">conn</span><span class="p">.</span><span class="na">disconnect</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">response</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&#34;invalide&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="n">response</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Das Git-Repository kann hier verfolgt werden: <a href="https://gitlab.com/Ditoran/KimsufiGrabber/tree/master/" target="_blank">Link</a></p>
]]></content:encoded></item><item><title>CH340G Treiber für Arduino</title><link>https://jahnke.im/arduino/treiber-fuer-arduino-mit-ch340g/</link><pubDate>Wed, 24 Feb 2016 11:45:48 +0100</pubDate><guid>https://jahnke.im/arduino/treiber-fuer-arduino-mit-ch340g/</guid><category>Arduino</category><description>Viele Arduino Clones aus China verwenden statt dem Atmega16U2 den günstigeren CH340G. Dieser benötigt einen speziellen Treiber, der leider nicht leicht zu finden und oft nur auf chinesischen Seiten verfügbar ist, dessen Seriösität nicht immer bewertet werden kann.&#10;Download&#10;CH340G Treiber | 135 kB</description><content:encoded><![CDATA[<p><a href="https://jahnke.im/uploads/2016/02/maxresdefault1.jpg" rel="attachment wp-att-338"><img src="https://jahnke.im/uploads/2016/02/maxresdefault1.jpg" alt="Arduino Uno R3 Clone mit CH340G" width="1200" height="792" class="alignnone size-full wp-image-338" /></a></p>
<p>Viele Arduino  Clones aus China verwenden statt dem Atmega16U2 den günstigeren CH340G. Dieser benötigt einen speziellen Treiber, der leider nicht leicht zu finden und oft nur auf chinesischen Seiten verfügbar ist, dessen Seriösität nicht immer bewertet werden kann.</p>
<div class="download-box">
	<a href="https://jahnke.im/uploads/2016/02/CH341SER.zip" title="CH340G Treiber" target="_blank" rel="noopener">Download</a><br>
	CH340G Treiber | 135 kB
</div>

]]></content:encoded></item><item><title>DS3231M I2C Library Arduino</title><link>https://jahnke.im/arduino/ds3231m-i2c-library-arduino/</link><pubDate>Fri, 05 Feb 2016 13:27:54 +0100</pubDate><guid>https://jahnke.im/arduino/ds3231m-i2c-library-arduino/</guid><category>Arduino</category><description>Da es leider keine Bibliothek für den DS3231M gab, die meinen Anforderungen entspricht, habe ich eine eigene entwickelt. Folgende Funktionen sind vorhanden:&#10;Zeit setzen Zeit auslesen Temperatur auslesen Mehrere Module durch freie Adresswahl an einem Bus betreiben Methodenübersicht RTCConnection();&#10;void setAddress(byte address);&#10;byte getSeconds();&#10;byte getMinutes();&#10;byte getHours();&#10;byte getWeekDay();&#10;byte getDay();&#10;byte getMonth();&#10;byte getYear();&#10;void setSeconds(byte seconds);&#10;void setMinutes(byte minutes);&#10;void setHours(byte hours);&#10;void setDay(byte day);&#10;void setMonth(byte month);&#10;void setYear(byte year);&#10;void setTime(byte day, byte month, byte year);&#10;void setTime(byte hours, byte minutes, byte seconds, byte day, byte month, byte year);&#10;float getTemperature();</description><content:encoded><![CDATA[<p>Da es leider keine Bibliothek für den DS3231M gab, die meinen Anforderungen entspricht, habe ich eine eigene entwickelt. Folgende Funktionen sind vorhanden:</p>
<ul>
<li>Zeit setzen</li>
<li>Zeit auslesen</li>
<li>Temperatur auslesen</li>
<li>Mehrere Module durch freie Adresswahl an einem Bus betreiben</li>
</ul>
<details class="spoiler">
	<summary><span class="spoiler__title">Methodenübersicht</span></summary>
	<div class="spoiler__content">
		
<p>RTCConnection();<br />
	void setAddress(byte address);<br />
	byte getSeconds();<br />
	byte getMinutes();<br />
	byte getHours();<br />
	byte getWeekDay();<br />
	byte getDay();<br />
	byte getMonth();<br />
	byte getYear();<br />
	void setSeconds(byte seconds);<br />
	void setMinutes(byte minutes);<br />
	void setHours(byte hours);<br />
	void setDay(byte day);<br />
	void setMonth(byte month);<br />
	void setYear(byte year);<br />
	void setTime(byte day, byte month, byte year);<br />
	void setTime(byte hours, byte minutes, byte seconds, byte day, byte month, byte year);<br />
	float getTemperature();</p>

	</div>
</details>

<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;RTC.h&gt;</span><span class="cp"> </span><span class="c1">//RTC library
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">250000</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">RTC</span><span class="p">.</span><span class="n">setSeconds</span><span class="p">(</span><span class="mi">30</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">RTC</span><span class="p">.</span><span class="n">setMinutes</span><span class="p">(</span><span class="mi">7</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">RTC</span><span class="p">.</span><span class="n">setHours</span><span class="p">(</span><span class="mi">12</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">RTC</span><span class="p">.</span><span class="n">setDay</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">RTC</span><span class="p">.</span><span class="n">setMonth</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">RTC</span><span class="p">.</span><span class="n">setYear</span><span class="p">(</span><span class="mi">16</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">RTC</span><span class="p">.</span><span class="n">getDay</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;.&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">RTC</span><span class="p">.</span><span class="n">getMonth</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;.&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">RTC</span><span class="p">.</span><span class="n">getYear</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34; &#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">RTC</span><span class="p">.</span><span class="n">getHours</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;:&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">RTC</span><span class="p">.</span><span class="n">getMinutes</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;:&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">RTC</span><span class="p">.</span><span class="n">getSeconds</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34; Temperature: &#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">RTC</span><span class="p">.</span><span class="n">getTemperature</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">  <span class="n">delay</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>Downloads:</strong></p>
<div class="download-box">
	<a href="https://jahnke.im/uploads/2016/02/DS3231M.pdf" title="DS3231M Datenblatt" target="_blank" rel="noopener">Download</a><br>
	DS3231M Datenblatt | 891 kB
</div>

<div class="download-box">
	<a href="https://jahnke.im/uploads/2016/02/RTCLib.zip" title="RTCLib" target="_blank" rel="noopener">Download</a><br>
	RTCLib | 2 kB
</div>

]]></content:encoded></item><item><title>Project Euler: Problem 23</title><link>https://jahnke.im/project-euler/project-euler-problem-23/</link><pubDate>Sun, 04 Oct 2015 14:23:16 +0100</pubDate><guid>https://jahnke.im/project-euler/project-euler-problem-23/</guid><category>Project Euler</category><description>A perfect number is a number for which the sum of its proper divisors is exactly equal to the number. For example, the sum of the proper divisors of 28 would be 1 + 2 + 4 + 7 + 14 = 28, which means that 28 is a perfect number.&#10;A number n is called deficient if the sum of its proper divisors is less than n and it is called abundant if this sum exceeds n.&#10;As 12 is the smallest abundant number, 1 + 2 + 3 + 4 + 6 = 16, the smallest number that can be written as the sum of two abundant numbers is 24. By mathematical analysis, it can be shown that all integers greater than 28123 can be written as the sum of two abundant numbers. However, this upper limit cannot be reduced any further by analysis even though it is known that the greatest number that cannot be expressed as the sum of two abundant numbers is less than this limit.&#10;Find the sum of all the positive integers which cannot be written as the sum of two abundant numbers.</description><content:encoded><![CDATA[<blockquote>
<p>A perfect number is a number for which the sum of its proper divisors is exactly equal to the number. For example, the sum of the proper divisors of 28 would be 1 + 2 + 4 + 7 + 14 = 28, which means that 28 is a perfect number.</p>
<p>A number <em>n</em> is called deficient if the sum of its proper divisors is less than <em>n</em> and it is called abundant if this sum exceeds <em>n</em>.</p>
<p>As 12 is the smallest abundant number, 1 + 2 + 3 + 4 + 6 = 16, the smallest number that can be written as the sum of two abundant numbers is 24. By mathematical analysis, it can be shown that all integers greater than 28123 can be written as the sum of two abundant numbers. However, this upper limit cannot be reduced any further by analysis even though it is known that the greatest number that cannot be expressed as the sum of two abundant numbers is less than this limit.</p>
<p>Find the sum of all the positive integers which cannot be written as the sum of two abundant numbers.</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Problem23</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kd">static</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span><span class="w"> </span><span class="n">abundant</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kd">static</span><span class="w"> </span><span class="n">Set</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span><span class="w"> </span><span class="n">sumList</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HashSet</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kd">static</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="n">28123</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">getSumOfDivisors</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="n">abundant</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">i</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;Total abundant numbers: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">abundant</span><span class="p">.</span><span class="na">size</span><span class="p">());</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">abundant</span><span class="p">.</span><span class="na">size</span><span class="p">();</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">abundant</span><span class="p">.</span><span class="na">size</span><span class="p">();</span><span class="w"> </span><span class="n">k</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="kt">int</span><span class="w"> </span><span class="n">tempNum</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">tempNum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">abundant</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">j</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">abundant</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">k</span><span class="p">))</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">28123</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">					</span><span class="n">sumList</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">tempNum</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;Sum list generated: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">sumList</span><span class="p">.</span><span class="na">size</span><span class="p">());</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">28123</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">sumList</span><span class="p">.</span><span class="na">contains</span><span class="p">(</span><span class="n">i</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="n">sum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">sum</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">getSumOfDivisors</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">number</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="kt">int</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">2</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="n">sum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">j</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">sum</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Lösung: 4179871</p>
]]></content:encoded></item><item><title>Project Euler: Problem 21</title><link>https://jahnke.im/project-euler/project-euler-problem-21/</link><pubDate>Fri, 03 Apr 2015 12:03:03 +0100</pubDate><guid>https://jahnke.im/project-euler/project-euler-problem-21/</guid><category>Project Euler</category><description>Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n).&#10;If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers.&#10;For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.&#10;Evaluate the sum of all the amicable numbers under 10000.</description><content:encoded><![CDATA[<blockquote><p>Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n).<br />
If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers.</p>
<p>For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.</p>
<p>Evaluate the sum of all the amicable numbers under 10000.</p></blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Problem21</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="kt">int</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">10000</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="kt">int</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">d</span><span class="p">(</span><span class="n">i</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="k">if</span><span class="p">((</span><span class="n">d</span><span class="p">(</span><span class="n">d</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">d</span><span class="p">)){</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="n">sum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">i</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">sum</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">d</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">number</span><span class="p">){</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="kt">int</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">number</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">number</span><span class="o">%</span><span class="n">i</span><span class="o">==</span><span class="n">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">				</span><span class="n">sum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">			</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">sum</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Lösung: 31626</p>
]]></content:encoded></item><item><title>Project Euler: Problem 19</title><link>https://jahnke.im/project-euler/project-euler-problem-19/</link><pubDate>Fri, 03 Apr 2015 10:01:42 +0100</pubDate><guid>https://jahnke.im/project-euler/project-euler-problem-19/</guid><category>Project Euler</category><description>You are given the following information, but you may prefer to do some research for yourself.&#10;1 Jan 1900 was a Monday. Thirty days has September,&#10;April, June and November.&#10;All the rest have thirty-one,&#10;Saving February alone,&#10;Which has twenty-eight, rain or shine.&#10;And on leap years, twenty-nine. A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400. How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?</description><content:encoded><![CDATA[<blockquote>
<p>You are given the following information, but you may prefer to do some research for yourself.</p>
<ul>
<li>1 Jan 1900 was a Monday.</li>
<li>Thirty days has September,<br />
April, June and November.<br />
All the rest have thirty-one,<br />
Saving February alone,<br />
Which has twenty-eight, rain or shine.<br />
And on leap years, twenty-nine.</li>
<li>A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.</ul>
</li>
<p>How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Problem19</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">months</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">28</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="w"> </span><span class="p">};</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kt">int</span><span class="w"> </span><span class="n">days</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kt">int</span><span class="w"> </span><span class="n">sundays</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">1901</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="n">2000</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">months</span><span class="p">.</span><span class="na">length</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">days</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">7</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">sundays</span><span class="o">++</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">1</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">isLeapYear</span><span class="p">(</span><span class="n">i</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">days</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">29</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">days</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">months</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">sundays</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">isLeapYear</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">year</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="p">((</span><span class="n">year</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">4</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">year</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">100</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">0</span><span class="p">)</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">year</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">400</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">0</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Lösung: 171</p>
]]></content:encoded></item><item><title>Project Euler: Problem 15</title><link>https://jahnke.im/project-euler/project-euler-problem-15/</link><pubDate>Thu, 02 Apr 2015 14:18:02 +0100</pubDate><guid>https://jahnke.im/project-euler/project-euler-problem-15/</guid><category>Project Euler</category><description>Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner.&#10;How many such routes are there through a 20×20 grid? Das Ganze wird diesmal ohne ein Java-Programm gelöst, da es den ganzen Aufwand nicht wert wäre.&#10;Entscheidend ist hier folgende Formel</description><content:encoded><![CDATA[<blockquote>
<p>Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner.</p>
<p><a href="https://jahnke.im/uploads/2015/04/manhattan21-e1443965755333.png"><img src="https://jahnke.im/uploads/2015/04/manhattan21-e1443965755333.png" alt="path" width="101" height="600" class="alignnone size-full wp-image-268" /></a></p>
<p>How many such routes are there through a 20×20 grid?
</p></blockquote>
<p>Das Ganze wird diesmal ohne ein Java-Programm gelöst, da es den ganzen Aufwand nicht wert wäre.</p>
<p>Entscheidend ist hier folgende Formel<br />
<a href="https://jahnke.im/uploads/2015/04/4v1p.png"><img src="https://jahnke.im/uploads/2015/04/4v1p.png" alt="4v1p" width="34" height="36" class="alignnone size-full wp-image-269" /></a></p>
<p>wobei n der Kantenlänge des Quadrats entspricht.</p>
<p>Also ergibt ein Quadrat der Kantenlänge n=20</p>
<p><a href="https://jahnke.im/uploads/2015/04/4v1p1.png"><img src="https://jahnke.im/uploads/2015/04/4v1p1.png" alt="4v1p" width="165" height="36" class="alignnone size-full wp-image-270" /></a></p>
<p>Lösung: 137846528820</p>
]]></content:encoded></item><item><title>Project Euler: Problem 11</title><link>https://jahnke.im/project-euler/project-euler-problem-11/</link><pubDate>Thu, 02 Apr 2015 13:42:51 +0100</pubDate><guid>https://jahnke.im/project-euler/project-euler-problem-11/</guid><category>Project Euler</category><description>In the 20×20 grid below, four numbers along a diagonal line have been marked in red.&#10;08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48 The product of these numbers is 26 × 63 × 78 × 14 = 1788696.&#10;What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?</description><content:encoded><![CDATA[<blockquote>
<p>In the 20×20 grid below, four numbers along a diagonal line have been marked in red.</p>
<pre>08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48</pre>
<p>The product of these numbers is 26 × 63 × 78 × 14 = 1788696.</p>
<p>What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?
</p></blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span><span class="lnt">57
</span><span class="lnt">58
</span><span class="lnt">59
</span><span class="lnt">60
</span><span class="lnt">61
</span><span class="lnt">62
</span><span class="lnt">63
</span><span class="lnt">64
</span><span class="lnt">65
</span><span class="lnt">66
</span><span class="lnt">67
</span><span class="lnt">68
</span><span class="lnt">69
</span><span class="lnt">70
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kt">int</span><span class="o">[][]</span><span class="w"> </span><span class="n">numbers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w">		
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="w"> </span><span class="n">8</span><span class="p">,</span><span class="w">  </span><span class="n">2</span><span class="p">,</span><span class="w"> </span><span class="n">22</span><span class="p">,</span><span class="w"> </span><span class="n">97</span><span class="p">,</span><span class="w"> </span><span class="n">38</span><span class="p">,</span><span class="w"> </span><span class="n">15</span><span class="p">,</span><span class="w">  </span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w">  </span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">75</span><span class="p">,</span><span class="w">  </span><span class="n">4</span><span class="p">,</span><span class="w">  </span><span class="n">5</span><span class="p">,</span><span class="w">  </span><span class="n">7</span><span class="p">,</span><span class="w"> </span><span class="n">78</span><span class="p">,</span><span class="w"> </span><span class="n">52</span><span class="p">,</span><span class="w"> </span><span class="n">12</span><span class="p">,</span><span class="w"> </span><span class="n">50</span><span class="p">,</span><span class="w"> </span><span class="n">77</span><span class="p">,</span><span class="w"> </span><span class="n">91</span><span class="p">,</span><span class="w">  </span><span class="n">8</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">49</span><span class="p">,</span><span class="w"> </span><span class="n">49</span><span class="p">,</span><span class="w"> </span><span class="n">99</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">81</span><span class="p">,</span><span class="w"> </span><span class="n">18</span><span class="p">,</span><span class="w"> </span><span class="n">57</span><span class="p">,</span><span class="w"> </span><span class="n">60</span><span class="p">,</span><span class="w"> </span><span class="n">87</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">98</span><span class="p">,</span><span class="w"> </span><span class="n">43</span><span class="p">,</span><span class="w"> </span><span class="n">69</span><span class="p">,</span><span class="w"> </span><span class="n">48</span><span class="p">,</span><span class="w">  </span><span class="n">4</span><span class="p">,</span><span class="w"> </span><span class="n">56</span><span class="p">,</span><span class="w"> </span><span class="n">62</span><span class="p">,</span><span class="w">  </span><span class="n">0</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">81</span><span class="p">,</span><span class="w"> </span><span class="n">49</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">73</span><span class="p">,</span><span class="w"> </span><span class="n">55</span><span class="p">,</span><span class="w"> </span><span class="n">79</span><span class="p">,</span><span class="w"> </span><span class="n">14</span><span class="p">,</span><span class="w"> </span><span class="n">29</span><span class="p">,</span><span class="w"> </span><span class="n">93</span><span class="p">,</span><span class="w"> </span><span class="n">71</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">53</span><span class="p">,</span><span class="w"> </span><span class="n">88</span><span class="p">,</span><span class="w"> </span><span class="n">30</span><span class="p">,</span><span class="w">  </span><span class="n">3</span><span class="p">,</span><span class="w"> </span><span class="n">49</span><span class="p">,</span><span class="w"> </span><span class="n">13</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">65</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">52</span><span class="p">,</span><span class="w"> </span><span class="n">70</span><span class="p">,</span><span class="w"> </span><span class="n">95</span><span class="p">,</span><span class="w"> </span><span class="n">23</span><span class="p">,</span><span class="w">  </span><span class="n">4</span><span class="p">,</span><span class="w"> </span><span class="n">60</span><span class="p">,</span><span class="w"> </span><span class="n">11</span><span class="p">,</span><span class="w"> </span><span class="n">42</span><span class="p">,</span><span class="w"> </span><span class="n">69</span><span class="p">,</span><span class="w"> </span><span class="n">24</span><span class="p">,</span><span class="w"> </span><span class="n">68</span><span class="p">,</span><span class="w"> </span><span class="n">56</span><span class="p">,</span><span class="w">  </span><span class="n">1</span><span class="p">,</span><span class="w"> </span><span class="n">32</span><span class="p">,</span><span class="w"> </span><span class="n">56</span><span class="p">,</span><span class="w"> </span><span class="n">71</span><span class="p">,</span><span class="w"> </span><span class="n">37</span><span class="p">,</span><span class="w">  </span><span class="n">2</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">91</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">22</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">,</span><span class="w"> </span><span class="n">71</span><span class="p">,</span><span class="w"> </span><span class="n">51</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">63</span><span class="p">,</span><span class="w"> </span><span class="n">89</span><span class="p">,</span><span class="w"> </span><span class="n">41</span><span class="p">,</span><span class="w"> </span><span class="n">92</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">54</span><span class="p">,</span><span class="w"> </span><span class="n">22</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">28</span><span class="p">,</span><span class="w"> </span><span class="n">66</span><span class="p">,</span><span class="w"> </span><span class="n">33</span><span class="p">,</span><span class="w"> </span><span class="n">13</span><span class="p">,</span><span class="w"> </span><span class="n">80</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">24</span><span class="p">,</span><span class="w"> </span><span class="n">47</span><span class="p">,</span><span class="w"> </span><span class="n">32</span><span class="p">,</span><span class="w"> </span><span class="n">60</span><span class="p">,</span><span class="w"> </span><span class="n">99</span><span class="p">,</span><span class="w">  </span><span class="n">3</span><span class="p">,</span><span class="w"> </span><span class="n">45</span><span class="p">,</span><span class="w">  </span><span class="n">2</span><span class="p">,</span><span class="w"> </span><span class="n">44</span><span class="p">,</span><span class="w"> </span><span class="n">75</span><span class="p">,</span><span class="w"> </span><span class="n">33</span><span class="p">,</span><span class="w"> </span><span class="n">53</span><span class="p">,</span><span class="w"> </span><span class="n">78</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">84</span><span class="p">,</span><span class="w"> </span><span class="n">20</span><span class="p">,</span><span class="w"> </span><span class="n">35</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">12</span><span class="p">,</span><span class="w"> </span><span class="n">50</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">32</span><span class="p">,</span><span class="w"> </span><span class="n">98</span><span class="p">,</span><span class="w"> </span><span class="n">81</span><span class="p">,</span><span class="w"> </span><span class="n">28</span><span class="p">,</span><span class="w"> </span><span class="n">64</span><span class="p">,</span><span class="w"> </span><span class="n">23</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">10</span><span class="p">,</span><span class="w"> </span><span class="n">26</span><span class="p">,</span><span class="w"> </span><span class="n">38</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">59</span><span class="p">,</span><span class="w"> </span><span class="n">54</span><span class="p">,</span><span class="w"> </span><span class="n">70</span><span class="p">,</span><span class="w"> </span><span class="n">66</span><span class="p">,</span><span class="w"> </span><span class="n">18</span><span class="p">,</span><span class="w"> </span><span class="n">38</span><span class="p">,</span><span class="w"> </span><span class="n">64</span><span class="p">,</span><span class="w"> </span><span class="n">70</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">26</span><span class="p">,</span><span class="w"> </span><span class="n">20</span><span class="p">,</span><span class="w"> </span><span class="n">68</span><span class="p">,</span><span class="w"> </span><span class="n">02</span><span class="p">,</span><span class="w"> </span><span class="n">62</span><span class="p">,</span><span class="w"> </span><span class="n">12</span><span class="p">,</span><span class="w"> </span><span class="n">20</span><span class="p">,</span><span class="w"> </span><span class="n">95</span><span class="p">,</span><span class="w"> </span><span class="n">63</span><span class="p">,</span><span class="w"> </span><span class="n">94</span><span class="p">,</span><span class="w"> </span><span class="n">39</span><span class="p">,</span><span class="w"> </span><span class="n">63</span><span class="p">,</span><span class="w">  </span><span class="n">8</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">91</span><span class="p">,</span><span class="w"> </span><span class="n">66</span><span class="p">,</span><span class="w"> </span><span class="n">49</span><span class="p">,</span><span class="w"> </span><span class="n">94</span><span class="p">,</span><span class="w"> </span><span class="n">21</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">24</span><span class="p">,</span><span class="w"> </span><span class="n">55</span><span class="p">,</span><span class="w"> </span><span class="n">58</span><span class="p">,</span><span class="w">  </span><span class="n">5</span><span class="p">,</span><span class="w"> </span><span class="n">66</span><span class="p">,</span><span class="w"> </span><span class="n">73</span><span class="p">,</span><span class="w"> </span><span class="n">99</span><span class="p">,</span><span class="w"> </span><span class="n">26</span><span class="p">,</span><span class="w"> </span><span class="n">97</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">78</span><span class="p">,</span><span class="w"> </span><span class="n">78</span><span class="p">,</span><span class="w"> </span><span class="n">96</span><span class="p">,</span><span class="w"> </span><span class="n">83</span><span class="p">,</span><span class="w"> </span><span class="n">14</span><span class="p">,</span><span class="w"> </span><span class="n">88</span><span class="p">,</span><span class="w"> </span><span class="n">34</span><span class="p">,</span><span class="w"> </span><span class="n">89</span><span class="p">,</span><span class="w"> </span><span class="n">63</span><span class="p">,</span><span class="w"> </span><span class="n">72</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">21</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">23</span><span class="p">,</span><span class="w">  </span><span class="n">9</span><span class="p">,</span><span class="w"> </span><span class="n">75</span><span class="p">,</span><span class="w">  </span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">76</span><span class="p">,</span><span class="w"> </span><span class="n">44</span><span class="p">,</span><span class="w"> </span><span class="n">20</span><span class="p">,</span><span class="w"> </span><span class="n">45</span><span class="p">,</span><span class="w"> </span><span class="n">35</span><span class="p">,</span><span class="w"> </span><span class="n">14</span><span class="p">,</span><span class="w">  </span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">61</span><span class="p">,</span><span class="w"> </span><span class="n">33</span><span class="p">,</span><span class="w"> </span><span class="n">97</span><span class="p">,</span><span class="w"> </span><span class="n">34</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">33</span><span class="p">,</span><span class="w"> </span><span class="n">95</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">78</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">53</span><span class="p">,</span><span class="w"> </span><span class="n">28</span><span class="p">,</span><span class="w"> </span><span class="n">22</span><span class="p">,</span><span class="w"> </span><span class="n">75</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">15</span><span class="p">,</span><span class="w"> </span><span class="n">94</span><span class="p">,</span><span class="w">  </span><span class="n">3</span><span class="p">,</span><span class="w"> </span><span class="n">80</span><span class="p">,</span><span class="w">  </span><span class="n">4</span><span class="p">,</span><span class="w"> </span><span class="n">62</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">,</span><span class="w"> </span><span class="n">14</span><span class="p">,</span><span class="w">  </span><span class="n">9</span><span class="p">,</span><span class="w"> </span><span class="n">53</span><span class="p">,</span><span class="w"> </span><span class="n">56</span><span class="p">,</span><span class="w"> </span><span class="n">92</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">16</span><span class="p">,</span><span class="w"> </span><span class="n">39</span><span class="p">,</span><span class="w">  </span><span class="n">5</span><span class="p">,</span><span class="w"> </span><span class="n">42</span><span class="p">,</span><span class="w"> </span><span class="n">96</span><span class="p">,</span><span class="w"> </span><span class="n">35</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">47</span><span class="p">,</span><span class="w"> </span><span class="n">55</span><span class="p">,</span><span class="w"> </span><span class="n">58</span><span class="p">,</span><span class="w"> </span><span class="n">88</span><span class="p">,</span><span class="w"> </span><span class="n">24</span><span class="p">,</span><span class="w">  </span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">54</span><span class="p">,</span><span class="w"> </span><span class="n">24</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">29</span><span class="p">,</span><span class="w"> </span><span class="n">85</span><span class="p">,</span><span class="w"> </span><span class="n">57</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">86</span><span class="p">,</span><span class="w"> </span><span class="n">56</span><span class="p">,</span><span class="w">  </span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">48</span><span class="p">,</span><span class="w"> </span><span class="n">35</span><span class="p">,</span><span class="w"> </span><span class="n">71</span><span class="p">,</span><span class="w"> </span><span class="n">89</span><span class="p">,</span><span class="w">  </span><span class="n">7</span><span class="p">,</span><span class="w">  </span><span class="n">5</span><span class="p">,</span><span class="w"> </span><span class="n">44</span><span class="p">,</span><span class="w"> </span><span class="n">44</span><span class="p">,</span><span class="w"> </span><span class="n">37</span><span class="p">,</span><span class="w"> </span><span class="n">44</span><span class="p">,</span><span class="w"> </span><span class="n">60</span><span class="p">,</span><span class="w"> </span><span class="n">21</span><span class="p">,</span><span class="w"> </span><span class="n">58</span><span class="p">,</span><span class="w"> </span><span class="n">51</span><span class="p">,</span><span class="w"> </span><span class="n">54</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">58</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">19</span><span class="p">,</span><span class="w"> </span><span class="n">80</span><span class="p">,</span><span class="w"> </span><span class="n">81</span><span class="p">,</span><span class="w"> </span><span class="n">68</span><span class="p">,</span><span class="w">  </span><span class="n">5</span><span class="p">,</span><span class="w"> </span><span class="n">94</span><span class="p">,</span><span class="w"> </span><span class="n">47</span><span class="p">,</span><span class="w"> </span><span class="n">69</span><span class="p">,</span><span class="w"> </span><span class="n">28</span><span class="p">,</span><span class="w"> </span><span class="n">73</span><span class="p">,</span><span class="w"> </span><span class="n">92</span><span class="p">,</span><span class="w"> </span><span class="n">13</span><span class="p">,</span><span class="w"> </span><span class="n">86</span><span class="p">,</span><span class="w"> </span><span class="n">52</span><span class="p">,</span><span class="w"> </span><span class="n">17</span><span class="p">,</span><span class="w"> </span><span class="n">77</span><span class="p">,</span><span class="w">  </span><span class="n">4</span><span class="p">,</span><span class="w"> </span><span class="n">89</span><span class="p">,</span><span class="w"> </span><span class="n">55</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="w"> </span><span class="n">4</span><span class="p">,</span><span class="w"> </span><span class="n">52</span><span class="p">,</span><span class="w">  </span><span class="n">8</span><span class="p">,</span><span class="w"> </span><span class="n">83</span><span class="p">,</span><span class="w"> </span><span class="n">97</span><span class="p">,</span><span class="w"> </span><span class="n">35</span><span class="p">,</span><span class="w"> </span><span class="n">99</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">,</span><span class="w">  </span><span class="n">7</span><span class="p">,</span><span class="w"> </span><span class="n">97</span><span class="p">,</span><span class="w"> </span><span class="n">57</span><span class="p">,</span><span class="w"> </span><span class="n">32</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">,</span><span class="w"> </span><span class="n">26</span><span class="p">,</span><span class="w"> </span><span class="n">26</span><span class="p">,</span><span class="w"> </span><span class="n">79</span><span class="p">,</span><span class="w"> </span><span class="n">33</span><span class="p">,</span><span class="w"> </span><span class="n">27</span><span class="p">,</span><span class="w"> </span><span class="n">98</span><span class="p">,</span><span class="w"> </span><span class="n">66</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">88</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">68</span><span class="p">,</span><span class="w"> </span><span class="n">87</span><span class="p">,</span><span class="w"> </span><span class="n">57</span><span class="p">,</span><span class="w"> </span><span class="n">62</span><span class="p">,</span><span class="w"> </span><span class="n">20</span><span class="p">,</span><span class="w"> </span><span class="n">72</span><span class="p">,</span><span class="w">  </span><span class="n">3</span><span class="p">,</span><span class="w"> </span><span class="n">46</span><span class="p">,</span><span class="w"> </span><span class="n">33</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">46</span><span class="p">,</span><span class="w"> </span><span class="n">55</span><span class="p">,</span><span class="w"> </span><span class="n">12</span><span class="p">,</span><span class="w"> </span><span class="n">32</span><span class="p">,</span><span class="w"> </span><span class="n">63</span><span class="p">,</span><span class="w"> </span><span class="n">93</span><span class="p">,</span><span class="w"> </span><span class="n">53</span><span class="p">,</span><span class="w"> </span><span class="n">69</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="w"> </span><span class="n">4</span><span class="p">,</span><span class="w"> </span><span class="n">42</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">,</span><span class="w"> </span><span class="n">73</span><span class="p">,</span><span class="w"> </span><span class="n">38</span><span class="p">,</span><span class="w"> </span><span class="n">25</span><span class="p">,</span><span class="w"> </span><span class="n">39</span><span class="p">,</span><span class="w"> </span><span class="n">11</span><span class="p">,</span><span class="w"> </span><span class="n">24</span><span class="p">,</span><span class="w"> </span><span class="n">94</span><span class="p">,</span><span class="w"> </span><span class="n">72</span><span class="p">,</span><span class="w"> </span><span class="n">18</span><span class="p">,</span><span class="w">  </span><span class="n">8</span><span class="p">,</span><span class="w"> </span><span class="n">46</span><span class="p">,</span><span class="w"> </span><span class="n">29</span><span class="p">,</span><span class="w"> </span><span class="n">32</span><span class="p">,</span><span class="w"> </span><span class="n">40</span><span class="p">,</span><span class="w"> </span><span class="n">62</span><span class="p">,</span><span class="w"> </span><span class="n">76</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">20</span><span class="p">,</span><span class="w"> </span><span class="n">69</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">41</span><span class="p">,</span><span class="w"> </span><span class="n">72</span><span class="p">,</span><span class="w"> </span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">23</span><span class="p">,</span><span class="w"> </span><span class="n">88</span><span class="p">,</span><span class="w"> </span><span class="n">34</span><span class="p">,</span><span class="w"> </span><span class="n">62</span><span class="p">,</span><span class="w"> </span><span class="n">99</span><span class="p">,</span><span class="w"> </span><span class="n">69</span><span class="p">,</span><span class="w"> </span><span class="n">82</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">59</span><span class="p">,</span><span class="w"> </span><span class="n">85</span><span class="p">,</span><span class="w"> </span><span class="n">74</span><span class="p">,</span><span class="w">  </span><span class="n">4</span><span class="p">,</span><span class="w"> </span><span class="n">36</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="n">20</span><span class="p">,</span><span class="w"> </span><span class="n">73</span><span class="p">,</span><span class="w"> </span><span class="n">35</span><span class="p">,</span><span class="w"> </span><span class="n">29</span><span class="p">,</span><span class="w"> </span><span class="n">78</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">90</span><span class="p">,</span><span class="w">  </span><span class="n">1</span><span class="p">,</span><span class="w"> </span><span class="n">74</span><span class="p">,</span><span class="w"> </span><span class="n">31</span><span class="p">,</span><span class="w"> </span><span class="n">49</span><span class="p">,</span><span class="w"> </span><span class="n">71</span><span class="p">,</span><span class="w"> </span><span class="n">48</span><span class="p">,</span><span class="w"> </span><span class="n">86</span><span class="p">,</span><span class="w"> </span><span class="n">81</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">,</span><span class="w"> </span><span class="n">23</span><span class="p">,</span><span class="w"> </span><span class="n">57</span><span class="p">,</span><span class="w">  </span><span class="n">5</span><span class="p">,</span><span class="w"> </span><span class="n">54</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">{</span><span class="w"> </span><span class="n">1</span><span class="p">,</span><span class="w"> </span><span class="n">70</span><span class="p">,</span><span class="w"> </span><span class="n">54</span><span class="p">,</span><span class="w"> </span><span class="n">71</span><span class="p">,</span><span class="w"> </span><span class="n">83</span><span class="p">,</span><span class="w"> </span><span class="n">51</span><span class="p">,</span><span class="w"> </span><span class="n">54</span><span class="p">,</span><span class="w"> </span><span class="n">69</span><span class="p">,</span><span class="w"> </span><span class="n">16</span><span class="p">,</span><span class="w"> </span><span class="n">92</span><span class="p">,</span><span class="w"> </span><span class="n">33</span><span class="p">,</span><span class="w"> </span><span class="n">48</span><span class="p">,</span><span class="w"> </span><span class="n">61</span><span class="p">,</span><span class="w"> </span><span class="n">43</span><span class="p">,</span><span class="w"> </span><span class="n">52</span><span class="p">,</span><span class="w">  </span><span class="n">1</span><span class="p">,</span><span class="w"> </span><span class="n">89</span><span class="p">,</span><span class="w"> </span><span class="n">19</span><span class="p">,</span><span class="w"> </span><span class="n">67</span><span class="p">,</span><span class="w"> </span><span class="n">48</span><span class="p">}</span><span class="w">		
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">};</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="kt">int</span><span class="w"> </span><span class="n">max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="c1">//horizontal</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numbers</span><span class="p">.</span><span class="na">length</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">0</span><span class="o">]</span><span class="p">.</span><span class="na">length</span><span class="o">-</span><span class="n">3</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="kt">int</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">i</span><span class="o">][</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">i</span><span class="o">][</span><span class="n">j</span><span class="o">+</span><span class="n">1</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">i</span><span class="o">][</span><span class="n">j</span><span class="o">+</span><span class="n">2</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">i</span><span class="o">][</span><span class="n">j</span><span class="o">+</span><span class="n">3</span><span class="o">]</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">temp</span><span class="o">&gt;</span><span class="n">max</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">temp</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;i: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&#34; j: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">j</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="c1">//vertikal</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">0</span><span class="o">]</span><span class="p">.</span><span class="na">length</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numbers</span><span class="p">.</span><span class="na">length</span><span class="o">-</span><span class="n">3</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="kt">int</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">][</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">1</span><span class="o">][</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">2</span><span class="o">][</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">3</span><span class="o">][</span><span class="n">i</span><span class="o">]</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">temp</span><span class="o">&gt;</span><span class="n">max</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">temp</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;i: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&#34; j: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">j</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="c1">//diagonal left up to down right</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">0</span><span class="o">]</span><span class="p">.</span><span class="na">length</span><span class="o">-</span><span class="n">3</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numbers</span><span class="p">.</span><span class="na">length</span><span class="o">-</span><span class="n">3</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="kt">int</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">][</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">1</span><span class="o">][</span><span class="n">i</span><span class="o">+</span><span class="n">1</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">2</span><span class="o">][</span><span class="n">i</span><span class="o">+</span><span class="n">2</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">3</span><span class="o">][</span><span class="n">i</span><span class="o">+</span><span class="n">3</span><span class="o">]</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">temp</span><span class="o">&gt;</span><span class="n">max</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">temp</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;i: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&#34; j: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">j</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="c1">//diagonal right up to left down</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">0</span><span class="o">]</span><span class="p">.</span><span class="na">length</span><span class="o">-</span><span class="n">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">2</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numbers</span><span class="p">.</span><span class="na">length</span><span class="o">-</span><span class="n">3</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="kt">int</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">][</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">1</span><span class="o">][</span><span class="n">i</span><span class="o">-</span><span class="n">1</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">2</span><span class="o">][</span><span class="n">i</span><span class="o">-</span><span class="n">2</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numbers</span><span class="o">[</span><span class="n">j</span><span class="o">+</span><span class="n">3</span><span class="o">][</span><span class="n">i</span><span class="o">-</span><span class="n">3</span><span class="o">]</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">temp</span><span class="o">&gt;</span><span class="n">max</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">temp</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		    </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;i: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&#34; j: &#34;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">j</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">max</span><span class="p">);</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Lösung: 70600674</p>
]]></content:encoded></item><item><title>Neues CMS online</title><link>https://jahnke.im/allgemein/neues-cms-online/</link><pubDate>Fri, 09 Jan 2015 21:07:21 +0100</pubDate><guid>https://jahnke.im/allgemein/neues-cms-online/</guid><category>Allgemein</category><description>Vor einiger Zeit hatte ich mich dazu entschlossen, von WordPress nach Drupal zu wechseln. Leider brachte das nicht die erwünschten Verbesserungen. Also wurde kurzerhand WordPress wieder eingespielt.</description><content:encoded>&lt;p>Vor einiger Zeit hatte ich mich dazu entschlossen, von WordPress nach Drupal zu wechseln. Leider brachte das nicht die erwünschten Verbesserungen. Also wurde kurzerhand WordPress wieder eingespielt.&lt;/p>
</content:encoded></item><item><title>Java-Programme neustarten</title><link>https://jahnke.im/java/java-programme-neustarten/</link><pubDate>Fri, 02 Jan 2015 21:06:37 +0100</pubDate><guid>https://jahnke.im/java/java-programme-neustarten/</guid><category>Java</category><description>Im Internet taucht immer wieder die Frage auf, wie man Java-Programme im .jar-Format neustarten kann. Lösungen sind allerdings rar. Also habe ich mich umgeschaut und mit den vorhandenen Informationen eine lauffähige Version geschrieben.&#10;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 String javaBin = System.getProperty(&amp;#34;java.home&amp;#34;) + &amp;#34;/bin/java&amp;#34;; File jarFile; try{ jarFile = new File (getClass().getProtectionDomain() .getCodeSource().getLocation().toURI()); } catch(Exception e) { return; } if ( !jarFile.getName().endsWith(&amp;#34;.jar&amp;#34;) ) return; String toExec[] = new String[] { javaBin, &amp;#34;-jar&amp;#34;, jarFile.getPath() }; try{ @SuppressWarnings(&amp;#34;unused&amp;#34;) Process p = Runtime.getRuntime().exec( toExec ); } catch(Exception e) { e.printStackTrace(); return; } System.exit(0);</description><content:encoded><![CDATA[<p>Im Internet taucht immer wieder die Frage auf, wie man Java-Programme im .jar-Format neustarten kann. Lösungen sind allerdings rar. Also habe ich mich umgeschaut und mit den vorhandenen Informationen eine lauffähige Version geschrieben.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">String</span><span class="w"> </span><span class="n">javaBin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">getProperty</span><span class="p">(</span><span class="s">&#34;java.home&#34;</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&#34;/bin/java&#34;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">File</span><span class="w"> </span><span class="n">jarFile</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">try</span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">jarFile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">(</span><span class="n">getClass</span><span class="p">().</span><span class="na">getProtectionDomain</span><span class="p">()</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">.</span><span class="na">getCodeSource</span><span class="p">().</span><span class="na">getLocation</span><span class="p">().</span><span class="na">toURI</span><span class="p">());</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">return</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="n">jarFile</span><span class="p">.</span><span class="na">getName</span><span class="p">().</span><span class="na">endsWith</span><span class="p">(</span><span class="s">&#34;.jar&#34;</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">return</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="n">String</span><span class="w"> </span><span class="n">toExec</span><span class="o">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">javaBin</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;-jar&#34;</span><span class="p">,</span><span class="w"> </span><span class="n">jarFile</span><span class="p">.</span><span class="na">getPath</span><span class="p">()</span><span class="w"> </span><span class="p">};</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">try</span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nd">@SuppressWarnings</span><span class="p">(</span><span class="s">&#34;unused&#34;</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">Process</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Runtime</span><span class="p">.</span><span class="na">getRuntime</span><span class="p">().</span><span class="na">exec</span><span class="p">(</span><span class="w"> </span><span class="n">toExec</span><span class="w"> </span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">return</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="n">System</span><span class="p">.</span><span class="na">exit</span><span class="p">(</span><span class="n">0</span><span class="p">);</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded></item><item><title>LCD an Arduino anschließen</title><link>https://jahnke.im/hardware/lcd-an-arduino-anschliessen/</link><pubDate>Sat, 12 Apr 2014 19:45:19 +0100</pubDate><guid>https://jahnke.im/hardware/lcd-an-arduino-anschliessen/</guid><category>Hardware</category><description>Hier zeige ich, wie man ein handelsübliches 16×2 Display an den Arduino Uno anschließt.&#10;LCD RS an Arduino Digital 12&#10;LCD RW an Arduino Digital 11&#10;LCD E an Arduino Digital 10&#10;LCD D4 an Arduino Digital 6&#10;LCD D5 an Arduino Digital 5&#10;LCD D6 an Arduino Digital 4&#10;LCD D7 an Arduino Digital 3&#10;An VS0 einen 10k Poti für den Kontrast und an A einen Vorwiderstand für die Hintergrundbeleuchtung. Ich habe 1k Ohm genommen.</description><content:encoded><![CDATA[<p><a href="https://jahnke.im/uploads/2015/01/20140412_18373711-11304879251.jpg"><img src="https://jahnke.im/uploads/2015/01/20140412_18373711-11304879251-300x225.jpg" alt="20140412_183737[1][1]-1130487925[1]" width="300" height="225" class="alignnone size-medium wp-image-208" /></a></p>
<p>Hier zeige ich, wie man ein handelsübliches 16×2 Display an den Arduino Uno anschließt.</p>
<p>LCD RS an Arduino Digital 12<br />
LCD RW an Arduino Digital 11<br />
LCD E an Arduino Digital 10<br />
LCD D4 an Arduino Digital 6<br />
LCD D5 an Arduino Digital 5<br />
LCD D6 an Arduino Digital 4<br />
LCD D7 an Arduino Digital 3<br />
An VS0 einen 10k Poti für den Kontrast und an A einen Vorwiderstand für die Hintergrundbeleuchtung. Ich habe 1k Ohm genommen.</p>
<p>Alles nochmal als Bild:</p>
<p><a href="https://jahnke.im/uploads/2015/01/untitled-sketch_steckplatine11-9244947881.png"><img src="https://jahnke.im/uploads/2015/01/untitled-sketch_steckplatine11-9244947881-300x162.png" alt="untitled-sketch_steckplatine[1][1]-924494788[1]" width="300" height="162" class="alignnone size-medium wp-image-209" /></a></p>
<p>Jetzt fehlt nur noch der Arduino-Sketch:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;LiquidCrystal.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"><span class="n">LiquidCrystal</span> <span class="nf">lcd</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span> <span class="c1">//Hier die Ports angeben an denen das Display angeschlossen wurde
</span></span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">lcd</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span> <span class="c1">//Art des Displays
</span></span></span><span class="line"><span class="cl"> <span class="n">lcd</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;This is a test!&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">lcd</span><span class="p">.</span><span class="n">setCursor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">lcd</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">&#34;1234567890&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded></item><item><title>LED-Matrix 29×8</title><link>https://jahnke.im/hardware/led-matrix-29x8/</link><pubDate>Wed, 09 Apr 2014 07:53:52 +0100</pubDate><guid>https://jahnke.im/hardware/led-matrix-29x8/</guid><category>Hardware</category><description>Nach langen Stunden des Lötens und Programmierens ist die Matrix hardwaremäßig endlich fertig. An der Software werde ich noch ein bisschen basteln.&#10;Einkaufsliste:&#10;1 x Lochrasterplatine 229 x 127 mm&#10;232 x LED 5mm&#10;29 x Widerstand 150 Ohm&#10;8 x Widerstand 1k Ohm&#10;10 x Keramikkondensator 100 nF&#10;2 x Keramikkondensator 22 pF&#10;1 x Quarz 16 Mhz&#10;1 x Attiny 85&#10;5 x Schieberegister 74HC595&#10;4 x LED-Treiber ULN2803 50V 0,5A&#10;8 x Transistor NPN 2N2222A 40V 0,8A&#10;Schaltlitze</description><content:encoded><![CDATA[<p>Nach langen Stunden des Lötens und Programmierens ist die Matrix hardwaremäßig endlich fertig. An der Software werde ich noch ein bisschen basteln.</p>
<p>Einkaufsliste:</p>
<p>1 x Lochrasterplatine 229 x 127 mm<br />
232 x LED 5mm<br />
29 x Widerstand 150 Ohm<br />
8 x Widerstand 1k Ohm<br />
10 x Keramikkondensator 100 nF<br />
2 x Keramikkondensator 22 pF<br />
1 x Quarz 16 Mhz<br />
1 x Attiny 85<br />
5 x Schieberegister 74HC595<br />
4 x LED-Treiber ULN2803 50V 0,5A<br />
8 x Transistor NPN 2N2222A 40V 0,8A<br />
Schaltlitze</p>
<p>Schaltplan:</p>
<p><a href="https://jahnke.im/uploads/2015/01/matrix21-4401290581.png"><img src="https://jahnke.im/uploads/2015/01/matrix21-4401290581-300x149.png" alt="matrix[2][1]-440129058[1]" width="300" height="149" class="alignnone size-medium wp-image-200" /></a></p>
<p>Programm:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;digitalWriteFastTiny.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="n">byte</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">byte</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">byte</span> <span class="n">k</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="cp">#define dataPin 2
</span></span></span><span class="line"><span class="cl"><span class="cp">#define shiftPin 1
</span></span></span><span class="line"><span class="cl"><span class="cp">#define storePin 0
</span></span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="n">boolean</span> <span class="n">leds</span><span class="p">[</span><span class="mi">8</span><span class="p">][</span><span class="mi">37</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span>       <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>  <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>  <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>  <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>  <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span>   <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>      <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span>    <span class="nb">false</span><span class="p">,</span>   <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>    <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span>       <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>      <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>    <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span>    <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>    <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span>   <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>      <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>       <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>     <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>  <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>  <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>  <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span>   <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>    <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="n">pinMode</span><span class="p">(</span><span class="n">dataPin</span><span class="p">,</span> <span class="n">OUTPUT</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">dataPin</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">pinMode</span><span class="p">(</span><span class="n">shiftPin</span><span class="p">,</span> <span class="n">OUTPUT</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">shiftPin</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">pinMode</span><span class="p">(</span><span class="n">storePin</span><span class="p">,</span> <span class="n">OUTPUT</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">storePin</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">   
</span></span><span class="line"><span class="cl">  <span class="n">delay</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="k">for</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">k</span><span class="o">&lt;=</span><span class="mi">8</span><span class="p">;</span> <span class="n">k</span><span class="o">++</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">    <span class="n">writeLineToMatrix</span><span class="p">(</span><span class="n">leds</span><span class="p">[</span><span class="n">k</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">k</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="c1">//delay(1);
</span></span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl">   
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">writeLineToMatrix</span><span class="p">(</span><span class="n">boolean</span> <span class="n">line</span><span class="p">[],</span> <span class="n">byte</span> <span class="n">row</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">storePin</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="mi">37</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">    <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">dataPin</span><span class="p">,</span> <span class="n">line</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">    <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">shiftPin</span><span class="p">,</span> <span class="n">HIGH</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">shiftPin</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">dataPin</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">storePin</span><span class="p">,</span> <span class="n">HIGH</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">delayMicroseconds</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><a href="https://jahnke.im/arduino/digitalwritefast-mit-attiny/" title="digitalWriteFast mit ATtiny">digitalWriteFast Library</a></p>
<p>Bilder:</p>
<p><a href="https://jahnke.im/uploads/2015/01/20140409_14304011-8843031041.jpg"><img src="https://jahnke.im/uploads/2015/01/20140409_14304011-8843031041-300x225.jpg" alt="20140409_143040[1][1]-884303104[1]" width="300" height="225" class="alignnone size-medium wp-image-203" /></a><br />
<a href="https://jahnke.im/uploads/2015/01/20140409_14334011-12454258121.jpg"><img src="https://jahnke.im/uploads/2015/01/20140409_14334011-12454258121-300x225.jpg" alt="20140409_143340[1][1]-1245425812[1]" width="300" height="225" class="alignnone size-medium wp-image-204" /></a><br />
<a href="https://jahnke.im/uploads/2015/01/20140409_14335311-11739500241.jpg"><img src="https://jahnke.im/uploads/2015/01/20140409_14335311-11739500241-300x225.jpg" alt="20140409_143353[1][1]-1173950024[1]" width="300" height="225" class="alignnone size-medium wp-image-205" /></a></p>
]]></content:encoded></item><item><title>digitalWriteFast mit ATtiny</title><link>https://jahnke.im/arduino/digitalwritefast-mit-attiny/</link><pubDate>Sat, 29 Mar 2014 22:28:24 +0100</pubDate><guid>https://jahnke.im/arduino/digitalwritefast-mit-attiny/</guid><category>Arduino</category><description>Für ein schnelles Füllen von Schieberegistern ist man auf eine hohe Schaltgeschwindigkeit der einzelnen Pins angewiesen. Mit einem Arduino Uno (@ 16Mhz) dauert das toggeln eines Pins bis zu 12 µs, was bei mehreren in Reihe geschalteten Schieberegistern zu einem Verlust von Rechenzeit führt, mit der die nächsten Elemente berechnet werde müssen.&#10;Es existiert eine Bibliothek namens digitalWriteFast, die in der Lage ist, eine Pin-Toggle in unter 1 µs durchzuführen. Allerdings hat sie so ihre Macken, sobald sie mit einem ATtiny in Berührung kommt. Also habe ich die Bibliothek für ATtinys umgeschrieben.</description><content:encoded><![CDATA[<p>Für ein schnelles Füllen von Schieberegistern ist man auf eine hohe Schaltgeschwindigkeit der einzelnen Pins angewiesen. Mit einem Arduino Uno (@ 16Mhz) dauert das toggeln eines Pins bis zu 12 µs, was bei mehreren in Reihe geschalteten Schieberegistern zu einem Verlust von Rechenzeit führt, mit der die nächsten Elemente berechnet werde müssen.</p>
<p>Es existiert eine Bibliothek namens digitalWriteFast, die in der Lage ist, eine Pin-Toggle in unter 1 µs durchzuführen. Allerdings hat sie so ihre Macken, sobald sie mit einem ATtiny in Berührung kommt. Also habe ich die Bibliothek für ATtinys umgeschrieben.</p>
<div class="download-box">
	<a href="https://jahnke.im/uploads/2015/01/digitalwritefasttiny1.zip" title="digitalwritefasttiny.zip" target="_blank" rel="noopener">Download</a><br>
	digitalwritefasttiny.zip | 1 kB
</div>

<p>Der Ordner digitalWriteFastTiny wird nach C:\Users\Benutzername\Documents\Arduino\libraries bzw. C:\Program Files\Arduino\libraries kopiert und anschließend wie im Beispiel eingebunden.</p>
<p>Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;digitalWriteFastTiny.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"><span class="cp">#define led 0
</span></span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span> <span class="p">{</span>               
</span></span><span class="line"><span class="cl">  <span class="n">pinMode</span><span class="p">(</span><span class="n">led</span><span class="p">,</span> <span class="n">OUTPUT</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">led</span><span class="p">,</span> <span class="n">HIGH</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">delay</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">digitalWriteFast</span><span class="p">(</span><span class="n">led</span><span class="p">,</span> <span class="n">LOW</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="n">delay</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded></item><item><title>LED-Matrix Entwürfe</title><link>https://jahnke.im/hardware/led-matrix-entwuerfe/</link><pubDate>Sat, 15 Mar 2014 23:37:00 +0100</pubDate><guid>https://jahnke.im/hardware/led-matrix-entwuerfe/</guid><category>Hardware</category><description>Die LEDs müssen weg, also weiter zum nächsten Vorhaben. Die Matrix soll eine Größe von 29×8 Pixel haben. Das Layout der Vorderseite steht schon fest:&#10;Und der Schaltplan (vorläufige Version):&#10;Nach jetziger Planung werden Matrix und Steuerung auf zwei getrennten Platinen umgesetzt und per Flachbandkabel verbunden. Die LEDs sind auf die Platine gelötet. Nach ein paar Tests auf dem Breadboard werden diese fest verdrahtet.</description><content:encoded><![CDATA[<p>Die LEDs müssen weg, also weiter zum nächsten Vorhaben. Die Matrix soll eine Größe von 29×8 Pixel haben. Das Layout der Vorderseite steht schon fest:</p>
<p><a href="https://jahnke.im/uploads/2015/01/matrix311-9221280401.png"><img src="https://jahnke.im/uploads/2015/01/matrix311-9221280401-300x81.png" alt="matrix3[1][1]-922128040[1]" width="300" height="81" class="alignnone size-medium wp-image-191" /></a></p>
<p>Und der Schaltplan (vorläufige Version):</p>
<p><a href="https://jahnke.im/uploads/2015/01/matrix411-13471529431.png"><img src="https://jahnke.im/uploads/2015/01/matrix411-13471529431-300x149.png" alt="matrix4[1][1]-1347152943[1]" width="300" height="149" class="alignnone size-medium wp-image-192" /></a></p>
<p>Nach jetziger Planung werden Matrix und Steuerung auf zwei getrennten Platinen umgesetzt und per Flachbandkabel verbunden. Die LEDs sind auf die Platine gelötet. Nach ein paar Tests auf dem Breadboard werden diese fest verdrahtet.</p>
<p><a href="https://jahnke.im/uploads/2015/01/20140328_174959-1783237011.jpg"><img src="https://jahnke.im/uploads/2015/01/20140328_174959-1783237011-300x225.jpg" alt="20140328_174959-178323701[1]" width="300" height="225" class="alignnone size-medium wp-image-193" /></a></p>
<p>Weiteres in den nächsten Tagen…</p>
]]></content:encoded></item><item><title>Binäruhr</title><link>https://jahnke.im/hardware/binaeruhr/</link><pubDate>Sun, 09 Feb 2014 16:36:22 +0100</pubDate><guid>https://jahnke.im/hardware/binaeruhr/</guid><category>Hardware</category><description>Während ich immer noch auf die Box für den LED Cube warte, habe ich mal aus Langeweile eine Binäruhr gebastelt. Auf der Rückseite befinden sich drei Taster. Zwei davon dienen zum Umstellen der Minuten und Stunden. Mit dem dritten Taster kann man die LEDs ein- und ausschalten. Für den Batteriebetrieb kann dies sehr nützlich sein, wenn man nicht jeden Tag die Batterien wechseln möchte.&#10;Mit dem Abspielen wird eine Verbindung zu YouTube (Google) hergestellt. Direkt auf YouTube ansehen</description><content:encoded><![CDATA[<p>Während ich immer noch auf die Box für den LED Cube warte, habe ich mal aus Langeweile eine Binäruhr gebastelt. Auf der Rückseite befinden sich drei Taster. Zwei davon dienen zum Umstellen der Minuten und Stunden. Mit dem dritten Taster kann man die LEDs ein- und ausschalten. Für den Batteriebetrieb kann dies sehr nützlich sein, wenn man nicht jeden Tag die Batterien wechseln möchte.</p>
<div class="video-embed" data-youtube="mRjnm6a5DYE">
	<button type="button" class="video-embed__play" aria-label="YouTube-Video abspielen">
		<svg viewBox="0 0 68 48" width="68" height="48" aria-hidden="true"><path d="M66.5 7.7a8.5 8.5 0 0 0-6-6C55.3.3 34 .3 34 .3s-21.3 0-26.5 1.4a8.5 8.5 0 0 0-6 6C.1 13 .1 24 .1 24s0 11 1.4 16.3a8.5 8.5 0 0 0 6 6C12.7 47.7 34 47.7 34 47.7s21.3 0 26.5-1.4a8.5 8.5 0 0 0 6-6C67.9 35 67.9 24 67.9 24s0-11-1.4-16.3z" fill="#e33"/><path d="M45 24 27 14v20" fill="#fff"/></svg>
	</button>
	<p class="video-embed__note">Mit dem Abspielen wird eine Verbindung zu YouTube (Google) hergestellt.
		<a href="https://www.youtube.com/watch?v=mRjnm6a5DYE" target="_blank" rel="noopener">Direkt auf YouTube ansehen</a></p>
</div>

<p>Kommen wir zur Einkaufsliste:</p>
<ul>
<li>1 x Arduino Uno oder Attiny 2313 (<a href="http://www.conrad.de/ce/de/product/191789/Arduino-UNO-Platine-65139?ref=searchDetail" target="_blank">Conrad Arduino Uno</a>, <a href="http://www.conrad.de/ce/de/product/154166/ATMEL-AVR-RISC-Microcontroller-Atmel-ATTINY2313-20PU-Gehaeuseart-DIL-20-Clock-Speed-20-MHz-Flash-Speicher-2-kB-Speicher?ref=searchDetail" target="_blank">Conrad Attiny</a> + <a href="http://www.conrad.de/ce/de/product/189545/Standard-IC-Fassung-Pole-20-Rastermass-762-mm-Material-Polyamid-66-selbstloeschend-glasfaserverstaerkt-Kontakt-aus-Ph?ref=searchDetail" target="_blank">Sockel</a>)</li>
<li>20 x LED in Wunschfarbe (<a href="http://www.ebay.de/itm/100pcs-5mm-2pin-Round-Diffused-Blue-LED-5K-MCD-Bulb-Light-/130805252305?pt=US_Car_Lighting&amp;hash=item1e7499c0d1" target="_blank">Ebay</a> | <a href="http://www.reichelt.de/LED-5MM-BL/3/index.html?&amp;ACTION=3&amp;LA=446&amp;ARTICLE=61102&amp;artnr=LED+5MM+BL&amp;SEARCH=led+blau" target="_blank">Reichelt</a>) 6 x 330 Ohm Widerstand (<a href="http://www.ebay.de/itm/20-50-100-Metallschicht-Widerstande-1-4W-0-25W-1-Metallfilm-Resistor-Widerstand-/140977797400?pt=Bauteile&amp;var=&amp;hash=item20d2ee7918" target="_blank">Ebay</a> | <a href="http://www.conrad.de/ce/de/product/408107/Metallschicht-Widerstand-330-axial-bedrahtet-0207-025-W-100-St?ref=searchDetail" target="_blank">Conrad</a>)</li>
<li>3 x 10 kOhm Widerstand (<a href="http://www.ebay.de/itm/370866257788" target="_blank">Ebay</a> | <a href="http://www.conrad.de/ce/de/product/403377/Kohleschicht-Widerstand-10-k-axial-bedrahtet-0207-025-W-1-St?ref=searchDetail" target="_blank">Conrad</a>)</li>
<li>1 x Kondensator 100 nF (<a href="http://www.ebay.de/itm/360721980334" target="_blank">Ebay</a> | <a href="http://www.conrad.de/ce/de/product/531855/Keramik-Kondensator-100-nF-50-VDC-10-Holystone-RDCX104K050DKA-1-St?ref=searchDetail" target="_blank">Conrad</a>)</li>
<li>Platine mit Lochraster (<a href="http://www.ebay.de/itm/Lochraster-RM-2-54-mm-Platine-Kupfer-Grose-125x57-mm-Experimentierplatine-LEI1-/251438598192?pt=Elektromechanische_Bauelemente&amp;hash=item3a8ae88830" target="_blank">Ebay</a> | <a href="http://www.conrad.de/ce/de/product/530753/Conrad-Europlatine-Punktraster-SU527769-L-x-B-160-mm-x-100-mm-Rastermass-254-mm-Hartpapier-mit-Cu-Auflage?ref=searchDetail" target="_blank">Conrad</a>) 3 x Taster (<a href="http://www.ebay.de/itm/170947225605?ssPageName=STRK:MEWNX:IT&amp;_trksid=p3984.m1497.l2649" target="_blank">Ebay</a> | <a href="http://www.conrad.de/ce/de/product/701749/Drucktaster-24-VDC-005-A-1-x-AusEin-TE-Connectivity-1825910-2-tastend-1-St?ref=searchDetail" target="_blank">Conrad</a>)</li>
<li>Schaltlitze (<a href="http://www.ebay.de/sch/i.html?_trksid=p2047675.m570.l1311.R5.TR6.TRC2.A0.Xschaltl&amp;_nkw=schaltlitze+0+14&amp;_sacat=0&amp;_from=R40" target="_blank">Ebay</a> | <a href="http://www.conrad.de/ce/de/product/604794/LiY-Schaltlitze-1-x-014-mm-Schwarz-10-m-Conrad?ref=searchDetail" target="_blank">Conrad</a>) Buchsenleiste (<a href="http://www.ebay.de/itm/321304671423" target="_blank">Ebay</a> | <a href="http://www.conrad.de/ce/de/product/738254/Praezisions-Buchsenleiste-RM-254-Pole-1-x-3-153-003-1-50-00-W-P-Products-Inhalt-1-St?ref=searchDetail" target="_blank">Conrad</a>)</li>
<li>Niedervolt-Steckverbinder Buchse (<a href="http://www.conrad.de/ce/de/product/733980/Niedervolt-Steckverbinder-Buchse-Einbau-horizontal-63-mm-2-mm-1-St" target="_blank">Conrad</a>)</li>
<li>Stecker-Netzteil 5V (<a href="http://www.conrad.de/ce/de/product/514216/Stecker-Netzteil-Festspannung-VOLTCRAFT-FPPS-5-3W-5-VDC-600-mA?ref=searchDetail" target="_blank">Conrad</a>)</li>
<li>1 x Bilderrahmen</li>
<li>Sonstiges: Lötkolben, Zange, Saitenschneider, Abisolierzange, …</li>
</ul>
<p>Schaltplan:</p>
<p><a href="https://jahnke.im/uploads/2015/01/Binary-Clock1.png"><img src="https://jahnke.im/uploads/2015/01/Binary-Clock1-300x202.png" alt="Binary-Clock[1]" width="300" height="202" class="alignnone size-medium wp-image-186" /></a></p>
<p>Der Plan ist spiegelverkehrt, um die Lötarbeit zu erleichtern.</p>
<p>Jetzt fehlt nur noch der Code für den Arduino bzw. Attiny:</p>
<div class="download-box">
	<a href="https://jahnke.im/uploads/2015/01/Binary_Clock.txt" title="binary_clock.ino" target="_blank" rel="noopener">Download</a><br>
	binary_clock.ino | 3 kB
</div>

]]></content:encoded></item><item><title>LED Cube 4x4x4</title><link>https://jahnke.im/hardware/led-cube-4x4x4/</link><pubDate>Sun, 02 Feb 2014 00:20:04 +0100</pubDate><guid>https://jahnke.im/hardware/led-cube-4x4x4/</guid><category>Hardware</category><description>Zwischen den Programmierprojekten hatte ich mal Lust auf einen LED-Würfel. Für den Anfang ist ein 4x4x4-Würfel ideal, um sich mal mit der Materie zu beschäftigen. Später kann man dann die Größe auf 8x8x8 erhöhen.&#10;Leider muss ich noch ein paar Tage warten, bis die restlichen Bauteile geliefert werden, um mein „Werk“ zu vollenden. Sobald alles fertig ist, werde ich ein Video hochladen. Auch eine Liste mit den verwendeten Bauteilen und dem Link zum verwendeten Tutorial wird in ein paar Tagen hier veröffentlicht.</description><content:encoded><![CDATA[<p>Zwischen den Programmierprojekten hatte ich mal Lust auf einen LED-Würfel. Für den Anfang ist ein 4x4x4-Würfel ideal, um sich mal mit der Materie zu beschäftigen. Später kann man dann die Größe auf 8x8x8 erhöhen.</p>
<p>Leider muss ich noch ein paar Tage warten, bis die restlichen Bauteile geliefert werden, um mein „Werk“ zu vollenden. Sobald alles fertig ist, werde ich ein Video hochladen. Auch eine Liste mit den verwendeten Bauteilen und dem Link zum verwendeten Tutorial wird in ein paar Tagen hier veröffentlicht.</p>
<div class="video-embed" data-youtube="xhLVGbLSF34">
	<button type="button" class="video-embed__play" aria-label="YouTube-Video abspielen">
		<svg viewBox="0 0 68 48" width="68" height="48" aria-hidden="true"><path d="M66.5 7.7a8.5 8.5 0 0 0-6-6C55.3.3 34 .3 34 .3s-21.3 0-26.5 1.4a8.5 8.5 0 0 0-6 6C.1 13 .1 24 .1 24s0 11 1.4 16.3a8.5 8.5 0 0 0 6 6C12.7 47.7 34 47.7 34 47.7s21.3 0 26.5-1.4a8.5 8.5 0 0 0 6-6C67.9 35 67.9 24 67.9 24s0-11-1.4-16.3z" fill="#e33"/><path d="M45 24 27 14v20" fill="#fff"/></svg>
	</button>
	<p class="video-embed__note">Mit dem Abspielen wird eine Verbindung zu YouTube (Google) hergestellt.
		<a href="https://www.youtube.com/watch?v=xhLVGbLSF34" target="_blank" rel="noopener">Direkt auf YouTube ansehen</a></p>
</div>

<p><strong>Update 12.02.2014:</strong> Alle restlichen Teile sind angekommen und eingebaut. Der Würfel ist endlich fertig! Hier das finale Video:</p>
<div class="video-embed" data-youtube="RUnbUZTEuKg">
	<button type="button" class="video-embed__play" aria-label="YouTube-Video abspielen">
		<svg viewBox="0 0 68 48" width="68" height="48" aria-hidden="true"><path d="M66.5 7.7a8.5 8.5 0 0 0-6-6C55.3.3 34 .3 34 .3s-21.3 0-26.5 1.4a8.5 8.5 0 0 0-6 6C.1 13 .1 24 .1 24s0 11 1.4 16.3a8.5 8.5 0 0 0 6 6C12.7 47.7 34 47.7 34 47.7s21.3 0 26.5-1.4a8.5 8.5 0 0 0 6-6C67.9 35 67.9 24 67.9 24s0-11-1.4-16.3z" fill="#e33"/><path d="M45 24 27 14v20" fill="#fff"/></svg>
	</button>
	<p class="video-embed__note">Mit dem Abspielen wird eine Verbindung zu YouTube (Google) hergestellt.
		<a href="https://www.youtube.com/watch?v=RUnbUZTEuKg" target="_blank" rel="noopener">Direkt auf YouTube ansehen</a></p>
</div>

]]></content:encoded></item></channel></rss>