<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Einsteiger Archive - Informatik Guru</title>
	<atom:link href="https://informatik-guru.de/tag/einsteiger/feed/" rel="self" type="application/rss+xml" />
	<link>https://informatik-guru.de</link>
	<description>Dinge die Ihr Lehrer nicht kapiert</description>
	<lastBuildDate>Tue, 10 May 2022 05:29:47 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.4</generator>
	<item>
		<title>SHA-256 und Bitcoin &#8211; feat. Stableblocks</title>
		<link>https://informatik-guru.de/featured/sha-256-und-bitcoin/</link>
					<comments>https://informatik-guru.de/featured/sha-256-und-bitcoin/#respond</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Mon, 14 Feb 2022 12:14:27 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Recent]]></category>
		<category><![CDATA[bitcoin]]></category>
		<category><![CDATA[BSI]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[Programmieren ist keine Mathematik auch wenn es so aussieht]]></category>
		<category><![CDATA[sha]]></category>
		<category><![CDATA[sha-1]]></category>
		<category><![CDATA[sha-2]]></category>
		<category><![CDATA[sha-256]]></category>
		<category><![CDATA[sha256]]></category>
		<category><![CDATA[Stableblocks]]></category>
		<guid isPermaLink="false">https://informatik-guru.de/?p=827</guid>

					<description><![CDATA[<p>Lernt jetzt etwas über Bitcoin und SHA. Historie, Funktionen und Beispiele. Informatikguru feat. Stableblocks</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/featured/sha-256-und-bitcoin/">SHA-256 und Bitcoin &#8211; feat. Stableblocks</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Heute präsentieren wir Euch unseren ersten Gastbeitrag. Dieser wurde freundlicherweise zur Verfügung gestellt von <a href="https://stable-blocks.com/" target="_blank" rel="noreferrer noopener">Stable Blocks</a>.</p>



<p><strong>Bitcoin und SHA</strong></p>



<p>Das Bitcoin-Protokoll gilt als sicher. Zu verdanken hat das Protokoll diese Eigenschaft unter anderem einem speziellen Algorithmus. Bitcoin verwendet für den Miningprozess, das Kreieren von Adressen und der Verifikation von Transaktionen eine Sha-256 Funktion. Das Bitcoin-Protokoll nutzt eine doppelte SHA-256 Funktion, was bedeutet, die Funktion wird auf die Ausgabe der Funktion angewandt. SHA-256 findet jedoch auch Anwendung in manchen der meistgenutzten Authentifizierung und Sicherheitsprotokollen wie SSL, TLS, IPsec, SSH und PGP. Auch in Unix und Linux wird der Algorithmus zum hashen von Passwörtern genutzt. Wie der Name vermuten lässt, ist der Output der Funktion 256 Bits lang.</p>



<h2><strong>Eine kurze Historie zu SHA-256</strong></h2>



<p>SHA-256 wurde 2002 als Reaktion auf erfolgreiche Angriffe auf die SHA-1 Hashfunktionen von der NSA entwickelt und vorgestellt. Auf einer National Institute of Standards and Technology (NIST) Konferenz im Jahr 2005 wurde die Umstellung von SHA-1 auf SHA-2 empfohlen und als Standard etabliert. Im Jahr 2012 wurde Keccak zum SHA-3 Algorithmus gewählt. SHA-256 sowie einige andere Algorithmen der SHA-2 Familie werden vom Bundesamt für Sicherheit in der Informationstechnik (BSI) jedoch immer noch als sicher eingestuft.</p>



<h2><strong>Die Eigenschaften von SHA-256</strong></h2>



<p>Es gibt 3 Eigenschaften welche den Grundstein des SHA-256 Algorithmus und seiner Sicherheit liefern. Um die nachfolgenden Eigenschaften einzuordnen, hilft es sich zu verdeutlichen, dass 2<sup>256</sup> mehr ist als die Anzahl der Atome in dem uns bekannten Universum.</p>



<ol type="1"><li>Es ist nahezu unmöglich die ursprünglichen Daten aus dem Hashwert zu rekonstruieren. Angenommen dies wäre das Ziel eines Angreifers, so müsste dieser mit einer Exhaustionsmethode (Bute-Force Attack) 2<sup>256</sup> Versuche durchführen. Die Anzahl der benötigten Versuche ist schier zu groß, um dies überhaupt in Erwägung zu ziehen.</li><li>Es ist äußerst unwahrscheinlich zweimal denselben Hashwert zu erhalten, da es 2<sup>256 </sup>verschiedene Möglichkeiten gibt.</li><li>Eine minimale Veränderung der Daten verändert den Hashwert so, dass nicht ersichtlich ist, dass der neue Hashwert aus einem ähnlichen Datensatz kreiert wurde.</li></ol>



<h2><strong>Beispiel Output der SHA-256 Funktion</strong></h2>



<p>Um die Funktionsweise und Punkt 3 zu verdeutlichen ein Nehmen wir die Wörter &#8222;Beispiel&#8220; und &#8222;Beispiele&#8220;.</p>



<p>Der Output der SHA-256 Funktion als Hexadezimal von &#8222;Beispiel&#8220; ist: 2071c7736acd16f6cea3727d3b7ecde53f4c2e97b421f3550248e19d7309c636</p>



<p>Der Output der SHA-256 Funktion als Hexadezimal von &#8222;Beispiele&#8220; ist: 147790983143d584d88c22ad1a14f128c3d55e3dea3d92ec400e930a04031fb9</p>



<p>Es lässt sich offensichtlich, anhand der Hashwerte, kein Rückschluss auf die Daten ziehen.</p>



<p>SHA Funktionen bilden das Fundament einer Vielzahl von Authentifizierung und Sicherheitsprotokollen.</p>



<p>Auch Blockchain Protokolle wie z.B. Bitcoin nutzen diese und ähnliche Algorithmen, um Sicherheit Ihrer Transaktionen und des Miningprozesses zu gewährleisten. Die SHA-256 Funktion bietet eine optimale Balance zwischen Kollisionsresistenz und Effizienz für das Bitcoin Protokoll. Die Länge der Daten welche gehasht werden ist für die Länge des Outputs irrelevant. Dieser beträgt immer 256 bits. Der 64 Zeichen lange Hexadezimalwert, welcher z.B. einen Block der Bitcoin Blockchain repräsentiert eignet sich somit optimal um zu gewährleisten das die Daten eines Blocks unverändert sind. Jeder Knotenpunkt (Node) kann somit die Integrität eines Blockes validieren. Da eine Blockchain neue Blöcke chronologisch ankettet und der Hash des aktuellen Blocks auf dem vorhergehenden Block basiert, sind Daten unveränderbar auf der Blockchain gespeichert.</p>



<p></p>



<p>Hat Euch dieser Beitrag gefallen? Lasst uns und dem Auto <a href="https://stable-blocks.com/" target="_blank" rel="noreferrer noopener">Stable Blocks</a> ein Like da und kommentiert was das Zeug hält!</p>



<p></p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/featured/sha-256-und-bitcoin/">SHA-256 und Bitcoin &#8211; feat. Stableblocks</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/featured/sha-256-und-bitcoin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sieb des Eratosthenes &#8211; Primzahlen sieben in PowerShell</title>
		<link>https://informatik-guru.de/coding/sieb-des-eratosthenes-powershell/</link>
					<comments>https://informatik-guru.de/coding/sieb-des-eratosthenes-powershell/#respond</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Thu, 30 Sep 2021 08:20:22 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[FIAE]]></category>
		<category><![CDATA[FISI]]></category>
		<category><![CDATA[Primzahlen]]></category>
		<category><![CDATA[Programmieraufgabe]]></category>
		<category><![CDATA[Programmieren ist keine Mathematik auch wenn es so aussieht]]></category>
		<category><![CDATA[Programmierübung]]></category>
		<category><![CDATA[Projekt Euler]]></category>
		<category><![CDATA[Tutorial]]></category>
		<guid isPermaLink="false">https://informatik-guru.de/?p=808</guid>

					<description><![CDATA[<p>Heute erläutern wir den Sieb des Eratosthenes anhand einer beispielhaften, vereinfachten, Implementierung in PowerShell. Beim Sieb des Eratosthenes handelt es sich um ein Verfahren zur Bestimmung aller Primzahlen bis zu einer vorgegebenen Zahl. Die Zahlen werden von Klein nach Groß durchgegangen und alle Vielfachen werden jeweils elimiert. Das führt dazu, dass ausschließlich Primzahlen übrig bleiben. [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/sieb-des-eratosthenes-powershell/">Sieb des Eratosthenes &#8211; Primzahlen sieben in PowerShell</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Heute erläutern wir den Sieb des Eratosthenes anhand einer beispielhaften, vereinfachten, Implementierung in PowerShell. Beim Sieb des Eratosthenes handelt es sich um ein Verfahren zur Bestimmung aller Primzahlen bis zu einer vorgegebenen Zahl. Die Zahlen werden von Klein nach Groß durchgegangen und alle Vielfachen werden jeweils elimiert. Das führt dazu, dass ausschließlich Primzahlen übrig bleiben.</p>



<h2>Beispiel</h2>



<p>Wenn wir bspw. einen Zahlenstrahl von 2 bis 100 sieben wollen, so starten wir zunächst mit der 2. Diese wird als Primfaktor erkannt, woraufhin alle Vielfachen gestrichen werden, also 4,6,8,10,12 usw.<br>Sind alle Vielfachen der 2 eliminiert, fahren wir mit der 3 fort. Also werden 6,9,12,15,18,21 usw. gestrichen. Hierbei können die bereits als Vielfache von 2 identifizierten, also bereits gestrichenen, Zahlen natürlich übersprungen werden. Anschaulich visualisiert sieht das so aus:</p>



<p><a href="https://commons.wikimedia.org/wiki/File:Animation_Sieb_des_Eratosthenes.gif#/media/Datei:Animation_Sieb_des_Eratosthenes.gif"><img src="https://upload.wikimedia.org/wikipedia/commons/6/63/Animation_Sieb_des_Eratosthenes.gif" alt="Animation Sieb des Eratosthenes.gif"></a><br>Von https://en.wikipedia.org/wiki/de:User:SKopp&#8220; als eigenes Werk im deutschen Wikipedia veröffentlich




<h2>Implementierung</h2>



<h4>Zahlenstrahl</h4>



<p>Lasst uns das Ganze nun Step-by-Step als Programm umsetzen.<br>Hierfür definieren wir als erstes unsere Endzahl, also die Obergrenze des Zahlenstrahls den wir sieben möchten, sowie die Wurzel dieser Zahl. Denn wenn wir die Vielfachen aller Zähler, welche größer als die Wurzel der Zahl sind, eliminiert haben sind alle übrigen Elemente automatisch Primzahlen.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-8.png" alt="" class="wp-image-811" width="250" height="39"/><figcaption>Definition des Zahlenstrahls</figcaption></figure>



<p>Wie anfänglich gesagt geht es um eine stark vereinfachte und keinesfalls optimierte Variante. Wir &#8222;streichen&#8220; also als erstes die 1, damit diese abschließend nicht in der Ausgabe unserer Primfaktoren erscheint:</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="178" height="20" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-9.png" alt="" class="wp-image-812"/><figcaption>&#8222;Streichen&#8220; der 1</figcaption></figure>



<h4>Durchlauf der potenziellen Primfaktoren</h4>



<p>Nun benötigen wir zunächst eines äußere Schleife in der wir alle Potenziellen Primfaktoren, also die Zahlen von 2 bis zur Wurzel unserer Endzahl durchlaufen, gefolgt von einer Prüfung, ob die betreffende Zahl bereits &#8222;gestrichen&#8220; wurde:</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="308" height="41" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-11.png" alt="" class="wp-image-814" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-11.png 308w, https://informatik-guru.de/wp-content/uploads/2021/09/image-11-300x40.png 300w" sizes="(max-width: 308px) 100vw, 308px" /><figcaption>Durchlauf der Zähler</figcaption></figure>



<h4>Streichen der Vielfachen</h4>



<p>Ist die Zahl noch nicht als Vielfaches eines vorangegangenen Primfaktors erkannt und somit noch im Rennen, so streichen wir ihre Vielfachen:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-12.png" alt="" class="wp-image-815" width="346" height="55" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-12.png 340w, https://informatik-guru.de/wp-content/uploads/2021/09/image-12-300x48.png 300w" sizes="(max-width: 346px) 100vw, 346px" /><figcaption>&#8222;Streichen&#8220; der Vielfachen</figcaption></figure>



<p>Hierbei beginnen wir absichtlich mit dem zweifachen des Primfaktors, sodass dieser selbst in unserem Zahlenstrahl verbleibt.</p>



<h4>Ausgabe des gesiebten Zahlenstrahl</h4>



<p>Abschließend erfolgt eine Ausgabe aller verbliebenen Zahlen:</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="443" height="22" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-13.png" alt="" class="wp-image-816" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-13.png 443w, https://informatik-guru.de/wp-content/uploads/2021/09/image-13-300x15.png 300w" sizes="(max-width: 443px) 100vw, 443px" /><figcaption>Ausgabe der nicht gestrichenen Zahlen</figcaption></figure>



<p>Inklusive der Ausgabe aller gefundenen Primzahlen, sowie der benötigten Laufzeit ergibt sich dann folgendes kleine Script:</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="664" height="269" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-14.png" alt="" class="wp-image-817" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-14.png 664w, https://informatik-guru.de/wp-content/uploads/2021/09/image-14-300x122.png 300w" sizes="(max-width: 664px) 100vw, 664px" /><figcaption>Kurzes vereinfachtes Beispiel anhand eines Zahlenstrahls bis 10.000</figcaption></figure>



<h2>Optimierungen</h2>



<p>Um die Laufzeit und die Speichernutzung zu optimieren gibt es hier nun unterschiedliche Optimierungsansätze. Der erste, einfachste und effektivste wäre es alle geraden Zahlen bereits beim Aufbau des Zahlenstrahls außenvor zu lassen. Bei einem so kleinen Zahlenstrahl wie in unserem Beispiel fällt der Unterschied nicht wirklich auf, wenn man jedoch eine deutlich größere Menge Zahlen sieben möchte, so ist der Unterschied immens. Denn hier gilt die ersten Durchläufe benötigen am längst, da hier, wie oben in der Grafik schön abgebildet ist, die meisten Zahlen gestrichen werden müssen. Mit zunehmendem Fortschritt wird das Streichen der Vielfachen immer schneller und schneller.</p>



<p></p>



<p></p>



<p>Hat Euch dieser Beitrag gefallen? Dann lasst uns doch einen Like auf Facebook oder Instagram da, oder kommentiert einfach direkt hier! Schickt uns gerne Eure Implementierungen oder Verbesserungsvorschläge des Sieb des Eratosthenes. Welche Siebe kennt Ihr noch ? Habt ihr Interesse an einer schematischen Implementierung des Atkins Sieve? Schreibt uns!</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/sieb-des-eratosthenes-powershell/">Sieb des Eratosthenes &#8211; Primzahlen sieben in PowerShell</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/sieb-des-eratosthenes-powershell/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PDF-Dateien auslesen mit Powershell</title>
		<link>https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/</link>
					<comments>https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/#respond</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Mon, 27 Sep 2021 07:58:06 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Admin-Life]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[gets the job done]]></category>
		<category><![CDATA[iTextSharp]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[workflow]]></category>
		<category><![CDATA[Zeitersparnis]]></category>
		<guid isPermaLink="false">http://informatik-guru.de/?p=738</guid>

					<description><![CDATA[<p>In diesem Step-by-Step-Tutorial erklären wir Euch wie ihr automatisiert PDF-Dateien mit Powershell auslesen könnt.</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/">PDF-Dateien auslesen mit Powershell</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Wer sich von Euch mit Workflows im Büro oder im Kontext EDI beschäftigt, hat sich sicherlich bereits das ein oder andere Mal die Frage gestellt, ob es nicht eine einfache Möglichkeit gibt eine Vielzahl PDFs automatisiert auszulesen und zu verarbeiten.<br>Diese Möglichkeit gibt es! Dieses Tutorial zum Thema PDF-Dateien auslesen mit Powershell wurde von unseren Freunden von <a href="https://caspar-it-solutions.de/" target="_blank" rel="noreferrer noopener">Caspar IT Solutions</a> für Euch erarbeitet!<br>Falls Ihr mit PowerShell bisher keine Berührungspunkte hattet, startet Ihr als Einstieg besser mit diesem Beitrag:<br><a href="https://informatik-guru.de/coding/einstieg-powershell/
">Einstieg Powershell<br></a></p>



<p>Im folgenden möchte ich Euch Step-by-Step näher bringen, wie ihr PDFs automatisiert auslesen, filtern und verarbeiten könnt. Ziel ist es eine Funktion in PowerShell zu haben, welche Ihr ganz einfach in Eure bestehenden Ideen oder Abläufe einbinden könnt.</p>



<p>Hierfür verwenden wir im folgenden iTextSharp. iTextSharp könnt ihr hier herunterladen: <br><a data-type="URL" data-id="https://www.nuget.org/packages/iTextSharp/5.5.13" href="https://www.nuget.org/packages/iTextSharp/5.5.13">iTextSharp Download</a></p>



<h3>iTextSharp einbinden</h3>



<p>Um iTextSharp nun innerhalb unseres PowerShell Scripts zu verwenden um PDFs automatisiert auszulesen müssen die es zunächst einbinden.<br>Dies geschieht so:</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="569" height="104" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-1.png" alt="" class="wp-image-784" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-1.png 569w, https://informatik-guru.de/wp-content/uploads/2021/09/image-1-300x55.png 300w" sizes="(max-width: 569px) 100vw, 569px" /></figure>



<p>Nun stehen uns im weiteren Verlauf Objekte und Methoden hieraus zur Verfügung.</p>



<h3>Reader initialisieren</h3>



<p>Zunächst beginnen wir mit einem Reader, der uns die jeweilige Datei erst einmal lesend zur Verfügung stellt. Hier kommt es darauf an ob wir von einem Datei-Objekt oder einem Pfad ausgehen. Wenn wir also bspw. in der Variable $filepath den Pfad zur Datei stehen haben legen wir so los:</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="608" height="38" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-2.png" alt="" class="wp-image-785" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-2.png 608w, https://informatik-guru.de/wp-content/uploads/2021/09/image-2-300x19.png 300w" sizes="(max-width: 608px) 100vw, 608px" /></figure>



<p>Im Prinzip haben wir hier eine Dopplung und innerhalb des Reader-Aufrufs könnten wir auch einfach $filepath verwenden, auf die hier gezeigte Weise haben wir allerdings noch die Möglichkeit $filepath mit einem Wildcard zu übergeben(Kunde1234*.pdf).</p>



<h3>Seitenweiser Durchlauf der PDF</h3>



<p>Nun empfiehlt es sich meines Erachtens die Datei seitenweise zu durchlaufen. Bevor wir die weiteren Schritte erarbeiten sollten wir uns auch Gedanken darüber machen wie unsere entsprechende Datei strukturiert ist. Also welche wiederkehrenden Zeilen wir auslesen möchten und auf welchen Seiten diese sich befinden. In unserem Beispiel durchlaufen wir immer die ersten beiden Seiten einer Datei.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="768" height="45" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-3.png" alt="" class="wp-image-786" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-3.png 768w, https://informatik-guru.de/wp-content/uploads/2021/09/image-3-300x18.png 300w, https://informatik-guru.de/wp-content/uploads/2021/09/image-3-696x41.png 696w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<h3>Zeilenweise durchlaufen</h3>



<p>Innerhalb des seitenweisen Durchlaufs lesen wir jetzt jeweils den Inhalt der aktuell zu verarbeitenden Seite zeilenweise in ein String-Array. Um das fehlerfrei tun zu können müssen wir das Zeichen kennen, welches als Zeilenumbruch verwendet wird. Hier liegt nicht unbedingt ein Carriage Return oder ein Newline vor, je nach Quelle der PDF-Datei und somit ihrem Aufbau kann das Zeilen-Trennzeichen unterschiedlich sein. In unserem Fall ist es der Character 0x000A.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="775" height="37" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-4.png" alt="" class="wp-image-787" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-4.png 775w, https://informatik-guru.de/wp-content/uploads/2021/09/image-4-300x14.png 300w, https://informatik-guru.de/wp-content/uploads/2021/09/image-4-768x37.png 768w, https://informatik-guru.de/wp-content/uploads/2021/09/image-4-696x33.png 696w" sizes="(max-width: 775px) 100vw, 775px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="336" height="54" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-5.png" alt="" class="wp-image-788" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-5.png 336w, https://informatik-guru.de/wp-content/uploads/2021/09/image-5-300x48.png 300w" sizes="(max-width: 336px) 100vw, 336px" /></figure>



<h3>Zeilen identifizieren</h3>



<p>Die Zeilen prüfe wir mit einem regulären Ausdruck auf einen Match unserer Wahl.<br>Nehmen wir als Beispiel eine PDF-Datei welche immer an einer beliebigen Position die Zeile &#8222;Kunden-Nr.:&lt;unterschiedlich viel Whitespace&gt;123456&#8220; enthält.<br>Wir möchten also die 123456, bzw. in der Praxis natürlich echte Kundennummern auslesen.<br>Hierfür überprüfen wir zunächst ob die Zeile mit dem String &#8222;Kunden-Nr.:&#8220; beginnt und verwenden vorangestellt den Anker <strong>^</strong>. Dann trennen wir die Zeile mit .split anhand unseres Trennzeichens &#8222;:&#8220; und wählen das zweile zurückgelieferte Element [1], woraufhin wir uns noch von überflüssigem Whitespace verabschieden mit -replace &#8218;\s&#8216;,&#8220;.<br>Anschließend steht in unserer Variable $Kundennummer lediglich die gewünschte 123456.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="430" height="55" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-6.png" alt="" class="wp-image-789" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-6.png 430w, https://informatik-guru.de/wp-content/uploads/2021/09/image-6-300x38.png 300w" sizes="(max-width: 430px) 100vw, 430px" /></figure>



<p>Somit haben wir unsere PDF-Datei ausgelesen und übrig bleibt nur den Reader zu schließen mit $reader.close().</p>



<h2>Zusammenfassung</h2>



<p>Das Ganze lässt sich nun sehr einfach in eine wieder verwendbare Subfunktion wrappen.<br>Hier stellt sich dann nur die Frage, was wir als Parameter verwenden möchten.<br>Wollen wir bspw. die Anzahl Seiten die zu prüfen sind beim Aufruf direkt mit angeben?<br>Den regulären Ausdruck anhand dessen die Zeile identifiziert werden soll?<br>Das Trennzeichen?<br>Den Dateinamen sowie den gewünschten Rückgabewert benötigen wir in jedem Fall.<br>Zusammengefasst könnte die Funktion zum automatisierten Auslesen einer Kundennummer aus einer PDF in PowerShell bspw. so aussehen:</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="917" height="580" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-7.png" alt="" class="wp-image-790" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-7.png 917w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-300x190.png 300w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-768x486.png 768w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-696x440.png 696w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-664x420.png 664w" sizes="(max-width: 917px) 100vw, 917px" /></figure>



<p>Diese Technik zum automatisierten Auslesen von PDF-Dateien lässt sich recht einfach auf den jeweiligen Anwendungsfall adaptieren und spart je nach Büroumgebung oder Auftrag im EDI-Kontext viel händische Arbeit.</p>



<p></p>



<p>Hat Euch dieser Beitrag gefallen?<br>Lasst uns gerne Feedback, Ideen oder Kritik zukommen.<br>Gerne könnt Ihr diesen Beitrag auch teilen und uns einen Besuch auf einem unserer Social Media Kanäle abstatten und wenn Ihr möchtet ein Herzchen oder einen Daumen nach oben da lassen.<br><br>Wenn Ihr Euch für mehr PowerShell- oder iTextSharp-Content interessiert schreibt uns!</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/">PDF-Dateien auslesen mit Powershell</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Project Euler 2 &#8211; Powershell Edition</title>
		<link>https://informatik-guru.de/coding/project-euler-2-posh/</link>
					<comments>https://informatik-guru.de/coding/project-euler-2-posh/#respond</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Thu, 15 Apr 2021 15:30:00 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[Einsteiger Powershell]]></category>
		<category><![CDATA[FIAE]]></category>
		<category><![CDATA[FISI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[Powershell Newbie]]></category>
		<category><![CDATA[Powershell Tutorial]]></category>
		<category><![CDATA[Programmieraufgabe]]></category>
		<category><![CDATA[Programmieren ist keine Mathematik auch wenn es so aussieht]]></category>
		<category><![CDATA[Programmierübung]]></category>
		<category><![CDATA[projecteuler]]></category>
		<category><![CDATA[Projekt Euler]]></category>
		<guid isPermaLink="false">https://informatik-guru.de/?p=775</guid>

					<description><![CDATA[<p>Heute nehmen wir uns der zweiten Project Euler Aufgabe an und setzen diese in einer einfachen Variante in Windows Powershell um.Sehen wir uns als erstes mal die Problembeschreibung an: Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-2-posh/">Project Euler 2 &#8211; Powershell Edition</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Heute nehmen wir uns der zweiten <a rel="noreferrer noopener" href="https://projecteuler.net/index.php?section=problems&amp;id=002" target="_blank">Project Euler Aufgabe</a> an und setzen diese in einer einfachen Variante in Windows Powershell um.<br>Sehen wir uns als erstes mal die Problembeschreibung an:<br><br><em>Each new term in the <a href="https://de.wikipedia.org/wiki/Fibonacci-Folge" target="_blank" rel="noreferrer noopener">Fibonacci sequence</a> is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:<br>1, 2, 3, 5, 8, 13, 21, 34, 55, 89, &#8230;<br>By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.</em><br><br>Unsere Aufgabe besteht also darin die Summe aller geraden Elemente der <a href="https://de.wikipedia.org/wiki/Fibonacci-Folge" target="_blank" rel="noreferrer noopener">Fibonacci-Reihe</a> unter vier Millionen zu finden.<br>Doch wie fangen wir hier an?<br>Zunächst einmal müssen wir, wie bei allen Problemen in der Programmierung zunächst, das große Problem in mehrere kleine Probleme zerlegen.<br><br>Da wir wieder die Laufzeit unseres Scripts tracken wollen benötigen wir, wie auch bei der <a href="https://informatik-guru.de/coding/project-euler-1-powershell-edition/">ersten Euler-Aufgabe</a> eine Stoppuhr. Auch hier benutzen wir wieder die .NET-Klasse, wie im letzten Beitrag erklärt.<br>Dies wird sich nun wie ein roter Faden durch die kommenden Aufgaben ziehen, damit wir immer sehen wie performant oder unperformant unsere Implementierung läuft.</p>



<pre class="wp-block-code scrollable"><code>#Starten der "Stoppuhr" unter Zuhilfenahme der .NET-Klasse system.diagnostics.stopwatch$timetracker = &#91;system.diagnostics.stopwatch]::startNew()

#In $elapsedtime werden die zur Verarbeitung benötigten Sekunden seit dem Start der Stoppuhr geschrieben

#Ausgabe der Laufzeit des Scripts
write-host $timetracker.Elapsed.seconds "Sekunden`t" $timetracker.Elapsed.Milliseconds "Millisekunden"</code></pre>



<p>Als nächstes gehen wir das Hauptproblem an, das Hochzählen der <a rel="noreferrer noopener" href="https://de.wikipedia.org/wiki/Fibonacci-Folge" target="_blank">Fibonacci-Reihe</a>.<br>Die Fibonacci-Reihe ist die unendliche Folge natürlicher Zahlen, beginnend mit 0,1,1, in welcher sich die nächste Zahl immer aus der Summe der beiden vorangegangenen ergibt.<br>Sie weist einige interessante mathematische Besonderheiten auf und steht in Zusammenhang mit dem Pascalschen Dreieck, sowie dem goldenen Schnitt, aber das ist eine andere Geschichte.<br></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="900" height="250" src="https://informatik-guru.de/wp-content/uploads/2021/04/image-5.png" alt="" class="wp-image-777" srcset="https://informatik-guru.de/wp-content/uploads/2021/04/image-5.png 900w, https://informatik-guru.de/wp-content/uploads/2021/04/image-5-300x83.png 300w, https://informatik-guru.de/wp-content/uploads/2021/04/image-5-768x213.png 768w, https://informatik-guru.de/wp-content/uploads/2021/04/image-5-696x193.png 696w" sizes="(max-width: 900px) 100vw, 900px" /></figure></div>



<p>Hierfür benötigen wir einen Ausgangspunkt, sowie drei Variablen. In einer der beiden speichern wir die Summe und tauschen dann die Werte durch vor der nächsten Summenbildung.<br>Bspw: A = 1; B = 1 => C = 2<br>Im nächsten Durchlauf wäre es dann: A = 1; B = 2 => C = 3<br><br>Um die Operation im Rahmen der Schleife, welche wir benötigen um den Durchlauf zu automatisieren bis zur Grenze von 4.000.000, zu wiederholen müssen wir also die Werte tauschen.<br>Anhand unseres obenstehenden Beispiels wäre das dann nach dem ersten Durchlauf<br>A = B; B = C<br>In Summe ergibt das:</p>



<pre class="wp-block-code"><code>$fibosumme = 1;
$fibonacci1 = 0;
$fibonacci2 = 1;

while($fibosumme -lt 4000000){
    $fibosumme = $fibonacci1 + $fibonacci2;
    $fibonacci1 = $fibonacci2;
    $fibonacci2 = $fibosumme;
}</code></pre>



<p>Zuletzt müssen wir beim hochzählen der Fibonacci-Folge lediglich noch prüfen, ob die nächste gefundene Zahl gerade ist und diese gegebenenfalls aufaddieren.</p>



<pre class="wp-block-code scrollable"><code>if($fibosumme % 2 -eq 0){
    $gesamtsumme += $fibosumme;
}</code></pre>



<p>Nun müssen wir das Ganze nur noch zusammensetzen und mit einer Ausgabe versehen, welche uns die Summe präsentiert und die Aufgabe ist gelöst:<br></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="707" height="370" src="https://informatik-guru.de/wp-content/uploads/2021/04/image-7.png" alt="" class="wp-image-779" srcset="https://informatik-guru.de/wp-content/uploads/2021/04/image-7.png 707w, https://informatik-guru.de/wp-content/uploads/2021/04/image-7-300x157.png 300w, https://informatik-guru.de/wp-content/uploads/2021/04/image-7-696x364.png 696w" sizes="(max-width: 707px) 100vw, 707px" /></figure></div>



<p>Weitere Project Euler-Aufgaben und andere Tutorials und Tipps im Kontext Powershell werden zeitnah folgen.<br>Apropos folgen, folgt Ihr uns eigentlich schon auf Facebook oder Instagram?<br>Falls nicht ist jetzt der perfekte Zeitpunkt das nachzuholen.<br>Gerne könnt Ihr Euch mit Kommentaren hier oder auf einem der Social Media Kanäle mit Ideen, Wünschen oder Kritik einbringen.<br>Wenn Ihr eine konkrete Frage zu Powershell Scripting oder Programmierung allgemein habt, könnt Ihr diese ebenfalls gerne auf den oben genannten Kanälen stellen wo wir diese gerne aufgreifen und entweder persönlich beantworten oder im Rahmen eines Beitrags thematisieren!<br></p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-2-posh/">Project Euler 2 &#8211; Powershell Edition</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/project-euler-2-posh/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Project Euler 1 &#8211; Powershell Edition</title>
		<link>https://informatik-guru.de/coding/project-euler-1-powershell-edition/</link>
					<comments>https://informatik-guru.de/coding/project-euler-1-powershell-edition/#comments</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Wed, 14 Apr 2021 14:52:37 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[Einsteiger Powershell]]></category>
		<category><![CDATA[FIAE]]></category>
		<category><![CDATA[FISI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[Powershell Newbie]]></category>
		<category><![CDATA[Powershell Tutorial]]></category>
		<category><![CDATA[Programmieraufgabe]]></category>
		<category><![CDATA[Programmieren ist keine Mathematik auch wenn es so aussieht]]></category>
		<category><![CDATA[Programmierübung]]></category>
		<category><![CDATA[projecteuler]]></category>
		<category><![CDATA[Projekt Euler]]></category>
		<guid isPermaLink="false">https://informatik-guru.de/?p=769</guid>

					<description><![CDATA[<p>Wie kürzlich versprochen starten wir nun einen kleinen betreuten Programmieransatz in Powershell.Ebenso wie in einer Zeit vor früher mit Perl, wollen wir uns hier zunächst ein wenig bei Project Euler austoben.Wer Project Euler noch nicht kennt, hierbei handelt es sich um eine größer werdende Ansammlung unterschiedlichster mehr oder weniger mathematischer Probleme für Programmierer.Zumindest die ersten [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-1-powershell-edition/">Project Euler 1 &#8211; Powershell Edition</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Wie kürzlich versprochen starten wir nun einen kleinen betreuten Programmieransatz in Powershell.<br>Ebenso wie in einer Zeit vor früher mit Perl, wollen wir uns hier zunächst ein wenig bei Project Euler austoben.<br>Wer Project Euler noch nicht kennt, hierbei handelt es sich um eine größer werdende Ansammlung unterschiedlichster mehr oder weniger mathematischer Probleme für Programmierer.<br>Zumindest die ersten paar Aufgaben sind sehr einsteigerfreundlich und auch für echte Newbies geeignet!</p>



<p>Wir starten hier nun erstmal bei Aufgabe 1 von Project Euler in Powershell.<br>Dafür sehen wir uns zunächst einmal die Problemstellung an die auf der Website ( <a href="https://projecteuler.net/index.php?section=problems&amp;id=001">Euler 1</a> ) wie folgt beschrieben wird:<br><br></p>



<p><em>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.<br>Find the sum of all the multiples of 3 or 5 below 1000.</em></p>



<p><br>Wir suchen also die Summe aller Vielfachen von 3 und 5 unter 1000.</p>



<p>Hierfür gibt es nun mehrere Ansätze, da es sich um eine Herangehensweise für Anfänger handeln soll, belassen wir es bei der einfachen Lösung.<br><br>Sehen wir uns die Bausteine des Scripts zunächst mal der Reihe nach an:<br><br>Zunächst starten wir unter Zuhilfenahme der .NET-Klasse system.diagnostics.stopwatch eine Stoppuhr um die Laufzeit unseres Scripts zu messen. Bei den ersten paar Aufgaben werden wir hier kaum merkliche Unterschiede feststellen mit unterschiedlichen Lösungsvarianten, was sich allerdings mit zunehmender Schwierigkeit und Komplexität der Probleme von Aufgabe zu Aufgabe drastisch ändert.</p>



<pre class="wp-block-code scrollable"><code>#Starten der "Stoppuhr" unter Zuhilfenahme der .NET-Klasse system.diagnostics.stopwatch$timetracker = &#91;system.diagnostics.stopwatch]::startNew()

#In $elapsedtime werden die zur Verarbeitung benötigten Sekunden seit dem Start der Stoppuhr geschrieben
$elapsedtime = $timetracker.Elapsed.Seconds

#Ausgabe der Laufzeit des Scripts
write-host "Die Gesamtlaufzeit betrug " $elapsedtime " Sekunden."</code></pre>



<p>Warum haben wir uns hier für eine entliehene .NET-Klasse entschieden anstatt das über ein Powershell-Kommando wie bspw. das CMDlet Measure-Command zu lösen?<br>Ganz einfach: Aus Gewohnheit und weil bei Measure-Command ohne weiteres pipen die Ausgabe der zu erfolgenden Kommandos nie im stdout, also für uns sichtbar in der Konsolenausgabe landen.<br></p>



<p>Als nächster Baustein folgt die Schleife mit der wir über die gewünschten Zahlen iterieren, das &#8222;Herzstück&#8220; des Scripts. Hierbei initialisieren wir im Schleifenkopf einen Zähler, welcher auch als aktuell zu prüfende Zahl dient. Vorab deklarieren wir eine Summenvariable, in welcher wir gleich die entsprechenden Zahlen aufaddieren werden und weisen dieser den Wert 0 zu.</p>



<pre class="wp-block-code scrollable"><code>#Initialisieren der Summenvariable
$Summe = 0

#Kopf der For-Schleife, mit welcher wir die Zahlen von 1 bis 999 durchlaufen
for($zaehler = 1;$zaehler -lt 1000; $zaehler ++){

#Prüfung ob die aktuelle Zahl durch 3 oder 5 teilbar ist
    if($zaehler % 3 -eq 0 -or $zaehler % 5 -eq 0){

#Falls ja, wird die aktuelle Zahl zur bisherigen Summe addiert
        $Summe = $Summe + $zaehler
    }
}</code></pre>



<p>Als letzten Baustein fügen wir abschließend noch eine Ausgabe unseres Ergebnisses hinzu.<br>Hier verwenden wir des Weiteren den Parameter -NoNewline für das Kommando Write-Host, welcher das automatische Anfügen eines Zeilenumbruches unterbindet. Dadurch können wir die Summe selbst farbig innerhalb der selben Zeile ausgeben wie die vorangestellte Info.<br>Das ist zwar nicht Teil der Aufgabe, dient aber der Übersichtlichkeit unserer zugegebenermaßen kleinen Ausgabe und wir lernen schonmal einen neuen Parameter kennen.</p>



<pre class="wp-block-code"><code>#Ausgabe der Info bzgl. der Summe
write-host "Die Summe der Vielfachen von 3 oder 5 unter 1000 lautet:`t" -NoNewline  

#Ausgabe der Summe selbst
write-host $Summe -ForegroundColor Yellow
</code></pre>



<p>Zusammengesetzt ergibt sich hieraus nun folgendes kleine Script, welches die Problemstellung der Aufgabe 1 von Project Euler erfolgreich absolviert:<br></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="704" height="290" src="https://informatik-guru.de/wp-content/uploads/2021/04/image-4.png" alt="" class="wp-image-772" srcset="https://informatik-guru.de/wp-content/uploads/2021/04/image-4.png 704w, https://informatik-guru.de/wp-content/uploads/2021/04/image-4-300x124.png 300w, https://informatik-guru.de/wp-content/uploads/2021/04/image-4-696x287.png 696w" sizes="(max-width: 704px) 100vw, 704px" /></figure></div>



<p>Weitere Project Euler-Aufgaben und andere Tutorials und Tipps im Kontext Powershell werden zeitnah folgen.<br>Apropos folgen, folgt Ihr uns eigentlich schon auf Facebook oder Instagram?<br>Falls nicht ist jetzt der perfekte Zeitpunkt das nachzuholen.<br>Gerne könnt Ihr Euch mit Kommentaren hier oder auf einem der Social Media Kanäle mit Ideen, Wünschen oder Kritik einbringen.<br>Wenn Ihr eine konkrete Frage zu Powershell Scripting oder Programmierung allgemein habt, könnt Ihr diese ebenfalls gerne auf den oben genannten Kanälen stellen wo wir diese gerne aufgreifen und entweder persönlich beantworten oder im Rahmen eines Beitrags thematisieren!<br></p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-1-powershell-edition/">Project Euler 1 &#8211; Powershell Edition</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/project-euler-1-powershell-edition/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Einstieg Powershell &#8211; Was ist diese blaue cmd?</title>
		<link>https://informatik-guru.de/coding/einstieg-powershell/</link>
					<comments>https://informatik-guru.de/coding/einstieg-powershell/#comments</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Wed, 14 Apr 2021 09:48:21 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[Einsteiger Powershell]]></category>
		<category><![CDATA[FIAE]]></category>
		<category><![CDATA[FISI]]></category>
		<category><![CDATA[POSH]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[Powershell Newbie]]></category>
		<category><![CDATA[Powershell Tutorial]]></category>
		<category><![CDATA[Programmieraufgabe]]></category>
		<category><![CDATA[Programmieren ist keine Mathematik auch wenn es so aussieht]]></category>
		<category><![CDATA[Programmierübung]]></category>
		<category><![CDATA[projecteuler]]></category>
		<category><![CDATA[Projekt Euler]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[windows powershell]]></category>
		<guid isPermaLink="false">https://informatik-guru.de/?p=761</guid>

					<description><![CDATA[<p>Ein kleiner Einstieg in die große Welt der Powershell.<br />
Mehr zum Thema to be soon</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/einstieg-powershell/">Einstieg Powershell &#8211; Was ist diese blaue cmd?</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die Windows PowerShell ist eine objektorientierte Skript- und Programmiersprache mit deren Hilfe sich alle möglichen Systemfunktionen und weitere Aufgaben automatisieren lassen.<br>Ähnlich der cmd.exe  ist die Windows Powershell inzwischen fester Bestandteil des Betriebssystems.<br>Manche mögen bereits zur Zeit von Windows XP mit ihr gearbeitet haben, da stand sie jedoch nur als Download zur Verfügung und hatte einen deutlich geringeren Funktionsumfang als heute.<br>Seit 2016 ist Powershell als Open Source Projekt auch plattformübergreifend für andere Betriebssysteme verfügbar.<br><br>Ähnlich wie die CMD ist die Windows Powershell ein Kommandozeileninterface, welche insbesondere unter IT-Administratoren besonderen Anklang findet.<br>Sie beinhaltet in heutiger Fassung eine vollumfängliche IDE die Powershell ISE.<br><br>Starten könnt Ihr die Powershell indem ihr den Ausführen-Dialog startet mit der Windowstaste + R und &#8222;powershell&#8220; eingebt, gefolgt von Enter oder OK. Genauso geht es über die Windows Suche im Startmenü.<br>Wollt ihr die ISE Starten, gebt ihr einfach zusätzlich ISE ein:<br></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://informatik-guru.de/wp-content/uploads/2021/04/image.png" alt="" class="wp-image-762" width="383" height="270" srcset="https://informatik-guru.de/wp-content/uploads/2021/04/image.png 778w, https://informatik-guru.de/wp-content/uploads/2021/04/image-300x212.png 300w, https://informatik-guru.de/wp-content/uploads/2021/04/image-768x542.png 768w, https://informatik-guru.de/wp-content/uploads/2021/04/image-100x70.png 100w, https://informatik-guru.de/wp-content/uploads/2021/04/image-696x491.png 696w, https://informatik-guru.de/wp-content/uploads/2021/04/image-595x420.png 595w" sizes="(max-width: 383px) 100vw, 383px" /></figure>



<p><br><br><br>Innerhalb der ISE habt ihr, wie ihr es ggf. aus anderen IDEs gewohnt seid, viele Comfort-Funktionen, wie bspw. automatische Vorschläge von Parametern, eine Befehlsübersicht oder bspw. automatisches einfügen von Code-Snippets wenn Ihr STRG + J drückt.<br>Gerade letzteres kann ich aus meinem Alltag in der Nutzung von Powershell wärmstens empfehlen.<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="555" src="https://informatik-guru.de/wp-content/uploads/2021/04/image-1-1024x555.png" alt="" class="wp-image-763" srcset="https://informatik-guru.de/wp-content/uploads/2021/04/image-1-1024x555.png 1024w, https://informatik-guru.de/wp-content/uploads/2021/04/image-1-300x163.png 300w, https://informatik-guru.de/wp-content/uploads/2021/04/image-1-768x416.png 768w, https://informatik-guru.de/wp-content/uploads/2021/04/image-1-1536x832.png 1536w, https://informatik-guru.de/wp-content/uploads/2021/04/image-1-696x377.png 696w, https://informatik-guru.de/wp-content/uploads/2021/04/image-1-1068x579.png 1068w, https://informatik-guru.de/wp-content/uploads/2021/04/image-1-775x420.png 775w, https://informatik-guru.de/wp-content/uploads/2021/04/image-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>Zur Nutzung der Powershell kann ich alles in allem sagen, dass ich sie für die eierlegende Wollmilchsau der Script- bzw. Programmiersprachen für viele, viele Aufgaben unter Windows halte.<br><br>Unabhängig davon ob man nun Betriebssystemaufgaben automatisieren, davon unabhängige Tasks programmieren, einfach etwas rumspielen (bspw. Projekt Euler 😉 ) oder seine Azure Cloud orchestrieren möchte, Powershell hat für unwahrscheinlich viele Ansätze die richtigen Werkzeuge parat.</p>



<p>Zum einen gibt es wahnsinnig viele mitgelieferte sogenannte CMDlets, über welche Ihr euch mit dem Befehl Get-Command einen Überblick verschaffen könnt, zum anderen gibt es reichhaltige Angebote seitens einer stetig wachsenden Community aus Entwicklern.<br><br>Ich für meinen Teil arbeite dienstlich viel mit der iTextsharp-Bibliothek, welche unter anderem das automatisierte Auslesen und Befüllen von PDF-Dokumenten ermöglicht um nur ein Beispiel von vielen zu nennen.<br><br>In kommenden Block-Beiträgen werden werden wir auf Besonderheiten, Tipps, Kniffe und Code-Beispiele in Powershell eingehen.<br><br>Wenn ihr Vorschläge, Eindrücke, Wünsche oder Ideen zum Thema habt, postet diese gerne hier, oder auf einem unserer Social Media Kanäle als Kommentar und bringt euch ein.<br>Thematisch gilt hier ganz klar:<br></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="1024" height="573" src="https://informatik-guru.de/wp-content/uploads/2021/04/image-3-1024x573.png" alt="" class="wp-image-765" srcset="https://informatik-guru.de/wp-content/uploads/2021/04/image-3-1024x573.png 1024w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-300x168.png 300w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-768x430.png 768w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-1536x860.png 1536w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-2048x1147.png 2048w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-696x390.png 696w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-1068x598.png 1068w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-750x420.png 750w, https://informatik-guru.de/wp-content/uploads/2021/04/image-3-1920x1075.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption><br><br></figcaption></figure></div>



<p><br><br><br></p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/einstieg-powershell/">Einstieg Powershell &#8211; Was ist diese blaue cmd?</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/einstieg-powershell/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Project Euler 2 &#8211; Perl for beginners</title>
		<link>https://informatik-guru.de/coding/project-euler-2-perl-for-beginners/</link>
					<comments>https://informatik-guru.de/coding/project-euler-2-perl-for-beginners/#respond</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Fri, 01 Mar 2019 07:37:01 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[FIAE]]></category>
		<category><![CDATA[FISI]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[perl monk]]></category>
		<category><![CDATA[Programmieraufgabe]]></category>
		<category><![CDATA[Programmieren ist keine Mathematik auch wenn es so aussieht]]></category>
		<category><![CDATA[Programmierübung]]></category>
		<category><![CDATA[projecteuler]]></category>
		<category><![CDATA[Projekt Euler]]></category>
		<guid isPermaLink="false">https://informatik-guru.de/?p=751</guid>

					<description><![CDATA[<p>Teil 2 unserer Tutorial-Reihe zu projecteuler und Perl für Einsteiger.</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-2-perl-for-beginners/">Project Euler 2 &#8211; Perl for beginners</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Heute geht es in Teil 2 unserer Reihe wieder um Perl und Projekt Euler (https://projecteuler.net).<br>Hierbei handelt es sich um eine große Ansammlung von Programmierübungen, welche meiner Meinung nach einen guten Einstieg in die Anwendung von erlernten Kontrollstrukturen und ähnlichem darstellen, ganz gleich in welcher Sprache.<br><br>Im Folgenden wollen wir das zweite &#8222;Problem&#8220; aus der Aufgabenliste in Perl lösen.<br><br>Die Aufgabenstellung lautet wie folgt:<br><br></p>



<p>Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:</p>



<p>1, 2, 3, 5, 8, 13, 21, 34, 55, 89, &#8230;</p>



<p>By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.</p>



<p><br></p>



<p>Wir wollen also die Summe aller geraden Fibonacci-Zahlen unter 4.000.000 finden.</p>



<p><br>Eine mögliche Lösung kann man in Perl wie folgt umsetzen:<br><br><br></p>



<pre class="wp-block-code scrollable"><code>#Aufgabenstellung
#Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

#1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

#By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.



#übliche Shebang-Zeile
#!/usr/bin/perl

#Compiler-Flags die übliche Programmierfehler erkennen und aufzeigen
use strict;
use warnings;

#Deklaration der Variablen
my $fiboone = 1;
my $fibotwo = 1;
my $result = 0;
my $sum = 0;
#Schleifenkopf der While-Schleife, welche läuft bis $result, unsere Variable für den Dreieckstausch der Zahlen 4.000.000 erreicht
while($result &lt; 4000000){
  #If-Condition welche überprüft ob der in $result befindliche Wert gerade ist (Modulo 2 = 0)
  if(($result % 2) == 0){
    #Falls ja wird der $result befindliche Wert zur Summe aller bisher gefunden geraden Fibonacci-Zahlen addiert
    $sum += $result;
  }
  #Dreieckstausch der beiden Zahlen-Variablen sowie der Hilfsvariable
  $result = $fiboone + $fibotwo;
  $fibotwo = $fiboone;
  $fiboone = $result;
}
#Ausgabe des Ergebnis
print "\nDas Ergebnis lautet:  $sum";

</code></pre>



<p>Dies ist natürlich nur eine mögliche Lösung und sie wurde des Weiteren nicht in Sachen Performance optimiert.<br>Wenn Ihr Optimierungsvorschläge, oder alternative Lösungen habt, so postet sie doch hier oder lasst sie uns per Mail an senpai@informatik-guru.de zukommen.<br><br>Wenn Euch der Beitrag gefallen hat, so kommentiert ihn doch, oder lasst uns ein Like auf Facebook oder ein Follow auf Instagram da.<br>Gerne könnt Ihr auch unseren Newsletter abbonieren, um immer über die neuesten Entwicklungen des Informatik-Guru auf dem Laufenden gehalten zu werden.</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-2-perl-for-beginners/">Project Euler 2 &#8211; Perl for beginners</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/project-euler-2-perl-for-beginners/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Project Euler 1 &#8211; Perl for beginners</title>
		<link>https://informatik-guru.de/coding/project-euler-1-perl-for-beginners/</link>
					<comments>https://informatik-guru.de/coding/project-euler-1-perl-for-beginners/#respond</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Thu, 21 Feb 2019 19:24:03 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[FIAE]]></category>
		<category><![CDATA[FISI]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[perl monk]]></category>
		<category><![CDATA[Programmieraufgabe]]></category>
		<category><![CDATA[Programmieren ist keine Mathematik auch wenn es so aussieht]]></category>
		<category><![CDATA[Programmierübung]]></category>
		<category><![CDATA[projecteuler]]></category>
		<category><![CDATA[Projekt Euler]]></category>
		<guid isPermaLink="false">http://informatik-guru.de/?p=743</guid>

					<description><![CDATA[<p>Heute beschäftigen wir uns mal mit Perl und Projekt Euler (https://projecteuler.net).Hierbei handelt es sich um eine große Ansammlung von Programmierübungen, welche meiner Meinung nach einen guten Einstieg in die Anwendung von erlernten Kontrollstrukturen und ähnlichem darstellen, ganz gleich in welcher Sprache. Im Folgenden wollen wir das erste &#8222;Problem&#8220; aus der Aufgabenliste in Perl lösen. Die [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-1-perl-for-beginners/">Project Euler 1 &#8211; Perl for beginners</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Heute beschäftigen wir uns mal mit Perl und Projekt Euler (https://projecteuler.net).<br>Hierbei handelt es sich um eine große Ansammlung von Programmierübungen, welche meiner Meinung nach einen guten Einstieg in die Anwendung von erlernten Kontrollstrukturen und ähnlichem darstellen, ganz gleich in welcher Sprache.<br><br>Im Folgenden wollen wir das erste &#8222;Problem&#8220; aus der Aufgabenliste in Perl lösen.<br><br>Die Aufgabenstellung lautet wie folgt:<br><br>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.</p>



<p>Find the sum of all the multiples of 3 or 5 below 1000.<br><br>Wir wollen also die Summe aller durch 3 oder 5 teilbaren Zahlen unter 1000 finden.<br><br>Eine mögliche Lösung kann man in Perl wie folgt umsetzen:<br><br><br></p>



<pre class="wp-block-code scrollable"><code>#übliche Shebang-Zeile
#!/usr/bin/perl

#Compiler-Flags, die übliche Programmierfehler erkennen und aufzeigen
use warnings;
use strict;

#Deklaration eines Zahlenfeldes von 1 bis 999 sowie der Variable, welche wir später für das Errechnen der Summe verwenden
my @zahlenfeld = 1..999;
my $summe = 0;

#Schleifenkopf einer Foreach-Schleife, welche alle Elemente des oben deklarierten Zahlenfeldes durchläuft
foreach(@zahlenfeld){
  #If-Condition, welche True liefert, also ausgelöst wird, wenn die aktuell bearbeitete Zahl weder durch 3 noch durch 5 teilbar ist
  if($_ % 3 != 0 &amp;&amp; $_ % 5 != 0){
    #Die aktuelle Zahl als auf "undef" setzen, wonach sie keinen Wert mehr enthält
    $_ = undef;
  } #Ende IF
} #Ende der Schleife

#Schleifenkopf einer Foreach-Schleife, welche alle Elemente des oben deklarierten Zahlenfeldes durchläuft
foreach(@zahlenfeld){
  #If-Condition, welche ausgelöst wird, wenn das aktuelle Element einen Wert enthält, also nicht "undef" ist
  if($_){
    #Hier wird der Summe der aktuelle Wert hinzugefügt
    $summe += $_;
  } #Ende IF
} #Ende der Schleife

#Zum Abschluss eine Ausgabe, welche uns das Ergebnis präsentiert
print "Die Summe aller durch 3 oder 5 teilbaren Zahlen unter 1000 lautet:\n$summe\n";
</code></pre>



<p>Wir werden uns bald weiteren projecteuler-Aufgaben annehmen und diese in unterschiedlichen Programmier- und Scriptsprachen lösen.<br>Gerne könnt Ihr eure Variante der Lösung in den Kommentaren posten.<br>Falls Ihr eine coole Idee habt, welches Programmierproblem wir hier thematisieren könnten, so lasst uns davon wissen.<br><br>Wenn Euch der Beitrag gefallen hat, so kommentiert ihn doch, oder lasst uns ein Like auf Facebook oder ein Follow auf Instagram da.<br>Gerne könnt Ihr auch unseren Newsletter abbonieren, um immer über die neuesten Entwicklungen des Informatik-Guru auf dem Laufenden gehalten zu werden.</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/project-euler-1-perl-for-beginners/">Project Euler 1 &#8211; Perl for beginners</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/project-euler-1-perl-for-beginners/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
