<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <title>MarcoOderkerk.de</title>
    <link href="https://test.marcooderkerk.de/feed.xml" rel="self" />
    <link href="https://test.marcooderkerk.de" />
    <updated>2026-06-07T15:34:43+02:00</updated>
    <author>
        <name>Marco Oderkerk</name>
    </author>
    <id>https://test.marcooderkerk.de</id>

    <entry>
        <title>Diese Seite wird aktuell komplett überarbeitet</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/diese-seite-wird-aktuell-komplett-ueberarbeitet/index.html"/>
        <id>https://test.marcooderkerk.de/diese-seite-wird-aktuell-komplett-ueberarbeitet/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/67/newviewphotography-apocalypse-8154585.png" medium="image" />

        <updated>2026-06-07T15:32:15+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/67/newviewphotography-apocalypse-8154585.png" alt="Bild von ravi teja auf Pixabay" />
                    Da das Wordpress 7 Update massive Probleme gemacht hat , baue ich diee Seite auf einem neuen technologiestack kompett neu auf. Es kann also zwischen durch zu Problemen kommen. Ob ich alle Infos von der alten Seite übernehme muss ich mir noch überlegen.
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/67/newviewphotography-apocalypse-8154585.png" class="type:primaryImage" alt="Bild von ravi teja auf Pixabay" /></p>
                <address> </address>
<p>Da das Wordpress 7 Update massive Probleme gemacht hat , baue ich diee Seite auf einem neuen technologiestack kompett neu auf. Es kann also zwischen durch zu Problemen kommen. Ob ich alle Infos von der alten Seite übernehme muss ich mir noch überlegen.</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>KI Marketing vs Realität</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/ki-marketing-vs-realitaet/index.html"/>
        <id>https://test.marcooderkerk.de/ki-marketing-vs-realitaet/index.html</id>
            <category term="KI-AI"/>

        <updated>2026-06-07T12:16:45+02:00</updated>
            <summary type="html">
                <![CDATA[
                    <figure class="post__image"><img loading="lazy"  src="https://test.marcooderkerk.de/media/posts/66/e62e3c6a-9215-4031-b258-1b73d4d9cda2.png" alt="Ai Marketing VS Reality" width="1536" height="1024" sizes="(max-width: 1920px) 100vw, 1920px" srcset="https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-xs.png 640w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-sm.png 768w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-md.png 1024w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-lg.png 1366w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-xl.png 1600w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-2xl.png 1920w"></figure>
<p>Seit längere Zeit wird KI immer wichtiger in der Welt und besonders im Bereich der Softwareentwicklung. Doch meiner Meinung nach ist zwischen Marketingversprechen und der Realität stellenweise ein ziemlich tiefer Abhang. <br>Hier teile ich mal meine private Einschätzung. </p>

                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <figure class="post__image"><img loading="lazy"  src="https://test.marcooderkerk.de/media/posts/66/e62e3c6a-9215-4031-b258-1b73d4d9cda2.png" alt="Ai Marketing VS Reality" width="1536" height="1024" sizes="(max-width: 1920px) 100vw, 1920px" srcset="https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-xs.png 640w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-sm.png 768w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-md.png 1024w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-lg.png 1366w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-xl.png 1600w ,https://test.marcooderkerk.de/media/posts/66/responsive/e62e3c6a-9215-4031-b258-1b73d4d9cda2-2xl.png 1920w"></figure>
<p>Seit längere Zeit wird KI immer wichtiger in der Welt und besonders im Bereich der Softwareentwicklung. Doch meiner Meinung nach ist zwischen Marketingversprechen und der Realität stellenweise ein ziemlich tiefer Abhang. <br>Hier teile ich mal meine private Einschätzung. </p>

<h2 data-section-id="nxki2c" data-start="131" data-end="167">Was KI heute tatsächlich gut kann</h2>
<h3 data-section-id="vsmbgv" data-start="169" data-end="202">Routine-Code beschleunigen</h3>
<p data-start="204" data-end="227">KI spart viel Zeit bei:</p>
<ul data-start="229" data-end="331">
<li data-section-id="q1czbc" data-start="229" data-end="240">CRUD-Code</li>
<li data-section-id="1j41nvo" data-start="241" data-end="247">DTOs</li>
<li data-section-id="x5325z" data-start="248" data-end="258">Mappings</li>
<li data-section-id="1eimksr" data-start="259" data-end="271">Unit Tests</li>
<li data-section-id="1p1olo1" data-start="272" data-end="286">SQL-Abfragen</li>
<li data-section-id="1cgiv13" data-start="287" data-end="300">API-Clients</li>
<li data-section-id="pegxiq" data-start="301" data-end="316">Dokumentation (Wer hat das nicht gehasst ?)</li>
<li data-section-id="nw5mm9" data-start="317" data-end="331">Refactorings</li>
<li data-section-id="nw5mm9" data-start="317" data-end="331">Schnellere Recherche bei Issues. </li>
<li data-section-id="nw5mm9" data-start="317" data-end="331">Wissen komprimieren</li>
</ul>
<p data-start="333" data-end="401">Ein erfahrener Entwickler kann dadurch oft 20–50 % schneller werden.</p>
<h3 data-section-id="1wyx4f8" data-start="655" data-end="678">KI als Sparringspartner / Pairingpartner</h3>
<p data-start="680" data-end="702">Ein guter Einsatz ist:</p>
<blockquote data-start="704" data-end="809">
<p data-start="706" data-end="734">"Bewerte meine Architektur."</p>
<p data-start="739" data-end="774">"Welche Risiken hat dieser Ansatz?"</p>
<p data-start="779" data-end="809">"Welche Alternativen gibt es?"</p>
</blockquote>
<p data-start="811" data-end="851">Das funktioniert häufig erstaunlich gut.</p>
<p data-start="811" data-end="851"> </p>
<h2 data-start="811" data-end="851">Was KI schlecht kann</h2>
<h3>Große Systeme verstehen</h3>
<p data-start="915" data-end="925">Marketing sagt:</p>
<blockquote data-start="927" data-end="971">
<p data-start="929" data-end="971">"Die KI versteht deine gesamte Codebasis."</p>
</blockquote>
<p data-start="973" data-end="982">Realität zeigt:</p>
<p data-start="984" data-end="1030">Bei einigen tausend Dateien wird es schwierig.</p>
<p data-start="1032" data-end="1045">Die KI kennt:</p>
<ul data-start="1047" data-end="1155">
<li data-section-id="q60eml" data-start="1047" data-end="1087">nicht alle historischen Entscheidungen</li>
<li data-section-id="1lr8a64" data-start="1088" data-end="1116">nicht alle Geschäftsregeln</li>
<li data-section-id="21avt" data-start="1117" data-end="1155">nicht alle impliziten Abhängigkeiten</li>
</ul>
<p data-start="1157" data-end="1202">Genau dort entstehen viele Produktionsfehler.</p>
<h2>Fachlichkeit</h2>
<h4>Ideenfindung und Konzeption</h4>
<p>Marketing sagt:</p>
<blockquote>
<p>„KI generiert komplette Konzepte in Minuten.“</p>
<p>„Produktideen entstehen automatisch.“</p>
<p>„KI ersetzt Workshops.“</p>
</blockquote>
<p>In Wirklichkeit liefert KI <em>Rohmaterial</em>, aber kein tragfähiges Konzept und Fachbereiche müssen trotzdem priorisieren, validieren, entscheiden.<br>KI erzeugt oft <em>zu viele Optionen</em>, was Entscheidungen verlangsamt.<br>Effekt auf TTM : 10-20%</p>
<h4>Domänenwissen:</h4>
<blockquote>
<p>"Was darf das System überhaupt tun?"</p>
</blockquote>
<p>KI kennt die Domäne oft nur oberflächlich, wie soll die KI dann rechtssichere Antworten geben. <br>Beispiel : etwas was in einem Logistik-System vielleicht erlaubt ist, kann in einem Banken oder gar medizinischen System verboten sein. </p>
<p>Solange KI Modelle nicht vollen, isolierten Zugriff auf alle relevanten Informationen der Domäne haben und nur die Daten der Domäne für die Arbeit nutzen, ist jede Entscheidung detailiert zu reviewen und zu hinterfragen.<br><br>Marketing sagt: </p>
<blockquote>
<ul>
<li>
<p>„KI schreibt automatisch User Stories, Epics, Akzeptanzkriterien.“</p>
</li>
<li>
<p>„Keine Requirements Engineers mehr nötig.“</p>
</li>
</ul>
</blockquote>
<p>Realität : K<span style="font-size: inherit;">I kann Stories generieren, aber </span>oft unpräzise, <span style="font-size: inherit;">nicht domain‑spezifisch, w</span><span style="font-size: inherit;">idersprüchlich, d.h. </span><span style="font-size: inherit;">Teams müssen alles reviewen, korrigieren, priorisieren.<br>Aber bei guten Prompts und einer klaren Architektur ist die Auswirkung auf TTM 20%-40%</span></p>
<h2>Softwareentwicklung</h2>
<p>Marketing sagt: </p>
<blockquote>
<p>„KI schreibt 80 % des Codes.“</p>
<p>„Entwickler werden zu Reviewern.“</p>
<p>„MVP in Wochen statt Monaten.“</p>
</blockquote>
<p>In der Realität kann es klappen, aber bei größeren Systemen kann die KI zwar Code generieren., aber sehr oft ist der Code nicht buildfähing und es sind mehrere Durchgänge notwendig.  Auch die Kompatibilität mit der bestehenden  Architektur , gerade in gewachsenen Systemen ist sehr oft nicht gegeben. Auch die Sicherstellung , dass keine Sicherheitslücken eingebaut werden , ist nicht 100%ig gegeben. Aus eigener Erfahrung weiß ich , dass gerade bei der Nutzung von Dritt-Anbieter-Libraries nicht unbedingt von der KI die aktuellsten Versionen eingebaut werden, sondern die Version, die beim Anlernen des Modells aktuell waren. Um dieses Sicherzustellen, bräuchte die KI eigentlich Zugang zu aktuellen CVE Informationen und den Versionsinformartionen.<br><br>Und dann haben wir noch die Testqualität, die KI hat aktuell noch Probleme bei der Edge-Cases Berücksichtigung. Als Entwickler kenne ich den Einfallsreichtum der Anwender und auf welche Ideen diese kommen können. Eine KI hat hier Probleme. <br>Auch Testfehler in Unit Tests sind des öfters eine Herausforderung der KI. Die KI hat die Methode gebaut die getestet wird und es kommt ein falsches Ergebnis raus. Hat nun die Methode einen Fehler oder der Testfall. Hier verhält sich die KI ab und zu echt menschlich. Passt das Ergebnis nicht zum erwarteten , passe ich einfach das erwartete Ergebnis an , auch wenn das Ergebnis falsch ist. Der Test ist auf jeden fall grün.</p>
<p>Aus meiner Sicht verbringen Entwickler aufgrund dieser Punkte mehr Zeit mit Debugging, Refactoiring und Architektur-Alignment. <br><br>Der Effekt auf das TTM ist hier meiner Meinung nach nur max. 30% , bei machen Legacy-Systemen sogar eher negativ. Kleiner Änderungen sind kein Problem , aber bei neuen Features , bei dem das ganze System mit der bisherigen Architektur bekannt sein muss , sehe ich skeptisch entgegen, es sei denn man hat unlimited Token um das ganze System als Kontext mitgeben zu können. <br><br>Ich denke bei Neuentwicklungen siehts viel besser aus. Aber wann startet man mal auf der grünen Wiese.<br><br>Noch ein kleiner Zusatz zu den Tests.</p>
<p>Marketing sagt:  </p>
<blockquote>
<p>„KI generiert automatisch Unit‑Tests, Integrationstests, E2E‑Tests.“</p>
<p>„Qualität steigt automatisch.“</p>
</blockquote>
<p>Wie schon oben gesagt , sieht die Realität teilweise anders aus. Jeder Test ist erstmal besser als kein Test. Aber ich habe festgestellt , das manchmal Tests redundant angelegt werden , nicht nach der ersten Generierung laufen bzw. wartbar sind.<br>Und je nach Anwendungsgebiet, müssen sinnvolle Testdaten noch manuell geliefert werden. Auch Mocks von externen Systemen müssen teilweise manuell bereitgestellt werden, da diese nicht im Kontext der KI stehen und die KI nur raten kann wir der Mock aussehen muss. <br>Daher würde ich sagen in Bezug auf Tests ist positive Auswirkung auf TTM bei max. 20%, wen es sich um moderne , modulare Codebasen handelt. </p>
<h2>Deployment und Betrieb</h2>
<p>Marketing sagt:</p>
<blockquote>
<p>„KI automatisiert DevOps.“</p>
<p>„CI/CD wird selbstoptimierend.“</p>
<p>„Zero‑Ops.“</p>
</blockquote>
<p>Das stimmt aus meiner Sicht teilweise. KI kann die entsprechenden Konfigurationen, pipelines , Dockerfiles ,... erstellen Aber schauen wir uns doch mal die Punkte Security‑Policies, Secrets, Compliance und Infrastruktur an. Aus wirtschaftlicher Sicht hatte ich echt probleme , wenn die KI eigenständig sich um ihre Hardware kümmen könnte und z.B frei VPS bestellen könnte. Oder das Thema Passwörter. Einer KI Passwörter anzuvertrauen , ohne zu Wissen , was mit den input Token bei den Toolherstellern wirklich passiert, würde mir massive Bauchschmerzen bereiten. <br>Aber bezüglich Zugangsdaten , wurde ja schon öfters in verschiedesten Quellen erzählt, das Zugangsdaten in Klartext im Sourcecode hinterlegt wurden. Ich selber hab das mal bei einem Testprojekt ausprobiert und die KI hat es auch gemacht. Auf die Frage , warum dieKI das gemacht hat , kam die Antwort , das könnte man später nochmal refactoren , aber erstmal geht es darum einen produktionsreifen MVP zu bekommen. </p>
<p>Daher meine Bewertung bzgl. dem Effekt auf TTM : 5-20 %.</p>
<h2>Verantwortung</h2>
<p data-start="1470" data-end="1505">Wenn ein Fehler in Produktion geht:</p>
<ul data-start="1507" data-end="1563">
<li data-section-id="mvy4x4" data-start="1507" data-end="1547">Der Entwickler "haftet" beruflich dafür.</li>
<li data-section-id="1t6dd90" data-start="1548" data-end="1563">Nicht die KI.</li>
</ul>
<p data-start="1565" data-end="1601">Deshalb bleibt Review unverzichtbar.<br>Aber der durch das Marketing angedeutete Geschwindigkeitsgewinn kann hier zum Gegenspieler werden. <br>KI entwickelt Code , Entwickler muss die Lösungsstrategie der KI erkennen und verstehen, den Code analysieren, Tests auf sinnhaftigkeit prüfen und so weiter.<br><br>Die Aussage <em>,,KI hat das programmiert''</em> zieht leider nicht. <br>Da das Marketing sagt , dass Software Entwickler  zu Reviewern werden, kann ich nicht unterstützen. Ich würde eher sagen dass Entwickler zu KI Lotsen werden , sie steuern die K, ähnlich ie Fluglotsen die Flugzeuge. Und da ein Fluglotze max. 4 Stunden am Stück das machen dürfen, damit keine Fehler geschehen, überlegt mal was bei Entwicklern nach 8h KI Steuerung und Output reviews passieren kann. <br>Ich habe mal 2 Modelle gefragt und beide Modelle haben mir gesagt, dass bis zu 30% bis 40% mehr Fehler in Produktion landen könnten. </p>
<p data-start="1565" data-end="1601"> </p>
<h2 data-start="1565" data-end="1601">Wer profitiert nun von der KI Nutzung am meisten? </h2>
<p data-start="1565" data-end="1601">Wer glaubt, dass es Anfänger sind, der wird enttäuscht sein. Anfänger sind es nicht , da sie oft falsche Antworten, Sicherheitsprobleme und ungünstige Architekturen nicht erkennen. Und ob Anfänger etwas lernen und Berufserfahrung sammeln, wenn sie nur auf "Keep All" klicken, bezweifel ich. Es gibt natürlich auch hier Ausnahmen wie wirkliuch verstehen wollen , was das gebaut wird , aber bei vielen Vibe-Codern ist das nicht der Fall.<br><br>Senior Entwickler können allerdings von der KI profitieren. Sie erkennen sofort, was gut , was Unsinn ist und was fehlt.  KI kann hier wirklich zum Pairingpartner werden. </p>
<h2 data-start="1565" data-end="1601">Welche Jobs werden verschwinden?</h2>
<p>Marketing sagte in der Vergangenheit immer , durch KI können viele Arbeitsplätze entfallen und massive Einsparungen durchgeführt werden. (Zum Thema Kostenentwicklung werde ich noch einmal einen weiteren Beitrag schreiben) </p>
<p>Ich sehe das etwas anders :</p>
<h4 data-section-id="1s41p8p" data-start="2067" data-end="2080">Gefährdet</h4>
<p data-start="2082" data-end="2111">Reine "Code-Monkey"-Aufgaben:</p>
<ul data-start="2113" data-end="2179">
<li data-section-id="1v7ifha" data-start="2113" data-end="2128">Standard-CRUD</li>
<li data-section-id="bx6c9f" data-start="2129" data-end="2149">einfache Webseiten</li>
<li data-section-id="ydf3yz" data-start="2150" data-end="2163">Boilerplate</li>
<li data-section-id="jt7l54" data-start="2164" data-end="2179">einfache APIs</li>
</ul>
<h4 data-section-id="wmmpt8" data-start="2186" data-end="2207">Weniger gefährdet</h4>
<p data-start="2209" data-end="2227">Aufgaben mit viel:</p>
<ul data-start="2229" data-end="2304">
<li data-section-id="7vccxc" data-start="2229" data-end="2242">Architektur</li>
<li data-section-id="1qqcujs" data-start="2243" data-end="2258">Kommunikation</li>
<li data-section-id="jwu2s9" data-start="2259" data-end="2273">Fachlichkeit</li>
<li data-section-id="1h58wsw" data-start="2274" data-end="2289">Verantwortung</li>
<li data-section-id="1cqhbjz" data-start="2290" data-end="2304">Systemdesign</li>
</ul>
<p>Denn wir müssen im Kopf behalten: </p>
<blockquote>
<p>Unternehmen bezahlen selten für Codezeilen, sonderndafür,  dass ein Problem korrekt gelöst wurde.</p>
</blockquote>
<p data-start="2446" data-end="2471">Viele Entwickler glauben:</p>
<p data-start="2475" data-end="2504"><strong>"KI schreibt meinen Job weg."</strong></p>
<p data-start="2506" data-end="2520">Ich sehe eher:</p>
<p data-start="2524" data-end="2594"><strong>Entwickler, die KI gut nutzen, ersetzen Entwickler, die KI ignorieren.</strong></p>
<p data-start="2596" data-end="2615">Ähnlich wie früher:</p>
<ul data-start="2617" data-end="2728">
<li data-section-id="wntdmk" data-start="2617" data-end="2649">Git ersetzte keine Entwickler.</li>
<li data-section-id="dpwnir" data-start="2650" data-end="2684">IDEs ersetzten keine Entwickler.</li>
<li data-section-id="go8p78" data-start="2685" data-end="2728">Stack Overflow ersetzte keine Entwickler.</li>
</ul>
<p data-start="2730" data-end="2773">Aber die Produktivitätserwartungen stiegen und stiegen.</p>
<h2 data-section-id="85x858" data-start="2780" data-end="2843">Was sich in den nächsten 5 Jahren wahrscheinlich ändern wird</h2>
<p data-start="2845" data-end="2876">Der Alltag verschiebt sich von:</p>
<div class="relative w-full mt-4 mb-1">
<div class="">
<div class="contents">
<div class="relative">
<div class="h-full min-h-0 min-w-0">
<div class="h-full min-h-0 min-w-0">
<div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl">
<div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback">
<div class="pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1"> </div>
<div class="relative">
<div class="pe-11 pt-3">
<div class="relative z-0 flex max-w-full">
<div id="code-block-viewer" class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr">
<div class="cm-scroller">
<pre class="cm-content q9tKkq_readonly m-0"><code>80 % Code schreiben<br>20 % Denken</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="">
<div class=""><span style="font-size: inherit;">zu eher:</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="relative w-full mt-4 mb-1">
<div class="">
<div class="contents">
<div class="relative">
<div class="h-full min-h-0 min-w-0">
<div class="h-full min-h-0 min-w-0">
<div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl">
<div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback">
<div class="relative">
<div class="pe-11 pt-3">
<div class="relative z-0 flex max-w-full">
<div id="code-block-viewer" class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr">
<div class="cm-scroller">
<pre class="cm-content q9tKkq_readonly m-0"><code>30 % Code schreiben<br>70 % Prüfen, Entwerfen, Entscheiden</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="">
<div class=""><span style="font-size: inherit;">Das eigentliche Engpass-Thema wird weniger die Syntax von Java oder Spring, oder was auch immer sein, sondern mehr:</span></div>
</div>
</div>
</div>
</div>
</div>
<ul data-start="3093" data-end="3184">
<li data-section-id="vg29x4" data-start="3093" data-end="3118">Anforderungen verstehen</li>
<li data-section-id="13qa2pm" data-start="3119" data-end="3138">Systeme entwerfen</li>
<li data-section-id="1fat0u3" data-start="3139" data-end="3157">Risiken erkennen</li>
<li data-section-id="f1c181" data-start="3158" data-end="3184">KI-Ergebnisse validieren</li>
</ul>
<h2 data-section-id="1v1gaui" data-start="3191" data-end="3204">Mein Fazit</h2>
<p data-start="3206" data-end="3303">Für einen Java-Entwickler im Jahr 2026ff ist KI kein Ersatz für Fachwissen, sondern ein Verstärker.  Wer nur Framework-Methoden auswendig kennt, bekommt wahrscheinlich Probleme.</p>
<p data-start="3383" data-end="3404">Wer dagegen versteht:</p>
<ul data-start="3406" data-end="3498">
<li data-section-id="7vccxc" data-start="3406" data-end="3419">Architektur</li>
<li data-section-id="11rzlgz" data-start="3420" data-end="3439">Datenmodellierung</li>
<li data-section-id="1xqrfpo" data-start="3440" data-end="3459">Verteilte Systeme</li>
<li data-section-id="3v9f2o" data-start="3460" data-end="3473">Performance</li>
<li data-section-id="m26efy" data-start="3474" data-end="3484">Security</li>
<li data-section-id="7sny2r" data-start="3485" data-end="3498">Fachdomänen</li>
</ul>
<p data-start="3500" data-end="3541">wird mit KI oft produktiver als je zuvor.</p>
<p data-start="3543" data-end="3795" data-is-last-node="" data-is-only-node="">Die größte Gefahr ist nicht, dass KI alle Entwickler ersetzt. Die größere Gefahr ist, dass man ihre Stärken und Schwächen falsch einschätzt: Manche erwarten Magie, andere ignorieren sie komplett. Beide Extreme führen meist zu schlechten Entscheidungen.<br><br>Mir tun nur die Junior-Entwickler leid.Wenn wir uns mal ansehn, was Junior Entwicker früher gemacht haben:</p>
<ul data-start="268" data-end="357">
<li data-section-id="2itr4" data-start="268" data-end="292">einfache CRUD-Services</li>
<li data-section-id="kp0qft" data-start="293" data-end="310">kleine Bugfixes</li>
<li data-section-id="1615ujf" data-start="311" data-end="329">Boilerplate-Code</li>
<li data-section-id="kke0pn" data-start="330" data-end="357">einfache UI/API-Endpunkte</li>
</ul>
<p data-start="359" data-end="462">Genau diese Sachen kann KI heute ziemlich gut → dadurch gibt es <strong data-start="423" data-end="461">weniger reine Low-Complexity Tasks</strong>.</p>
<p data-start="359" data-end="462">Man beginnt klein und arbeitet sich hoch. Und das kleine verschwindet zum größten Teil.</p>
<h3 data-section-id="sll53c" data-start="469" data-end="509">Einstiegshürde ist höher geworden</h3>
<p data-start="510" data-end="554">Viele Teams erwarten inzwischen von Juniors:</p>
<ul data-start="556" data-end="738">
<li data-section-id="62xea5" data-start="556" data-end="580">Git sicher beherrschen</li>
<li data-section-id="1hh27a6" data-start="581" data-end="617">grundlegende Architektur verstehen</li>
<li data-section-id="19w0rv8" data-start="618" data-end="642">Tests schreiben können</li>
<li data-section-id="u7q452" data-start="643" data-end="687">nicht nur Code kopieren, sondern verstehen</li>
<li data-section-id="18eebyw" data-start="688" data-end="738">KI-Tools sinnvoll nutzen (z. B. ChatGPT/Copilot)</li>
</ul>
<p data-start="740" data-end="824">Das wirkt wie “schwieriger Einstieg”, ist aber eher eine <strong data-start="797" data-end="823">Erwartungsverschiebung</strong>.<br><br></p>
<p data-start="1426" data-end="1452"><strong>Ein Junior war früher oft:</strong></p>
<blockquote data-start="1454" data-end="1488">
<p data-start="1456" data-end="1488">“Ich lerne Programmieren im Job”</p>
</blockquote>
<p data-start="1490" data-end="1501"><strong>Heute eher:</strong></p>
<blockquote data-start="1503" data-end="1570">
<p data-start="1505" data-end="1570">“Ich kann schon programmieren und lerne Systementwicklung im Job”</p>
</blockquote>
<p data-start="1572" data-end="1596"><strong>Das ist der Unterschied.</strong></p>
<p data-start="1657" data-end="1679">Paradox, aber wichtig:</p>
<ul data-start="1681" data-end="1735">
<li data-section-id="1wgjgrr" data-start="1681" data-end="1704">Einstieg ist schwerer</li>
<li data-section-id="1aacl8" data-start="1705" data-end="1735">aber Lernkurve ist schneller</li>
</ul>
<p data-start="1737" data-end="1772">Mit KI kann ein guter Junior heute:</p>
<ul data-start="1774" data-end="1891">
<li data-section-id="17eaoqn" data-start="1774" data-end="1802">schneller produktiv werden</li>
<li data-section-id="6q7kfo" data-start="1803" data-end="1851">schneller verstehen, wie Systeme gebaut werden</li>
<li data-section-id="aw7qlw" data-start="1852" data-end="1891">früher komplexere Aufgaben übernehmen</li>
</ul>
<p data-start="3543" data-end="3795" data-is-last-node="" data-is-only-node=""> </p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>IT Shorts : Threadmodelling</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/it-shorts-threadmodelling/index.html"/>
        <id>https://test.marcooderkerk.de/it-shorts-threadmodelling/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/65/cyber-security-gdc7b1547d_640.webp" medium="image" />
            <category term="Security"/>

        <updated>2026-06-06T13:17:00+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/65/cyber-security-gdc7b1547d_640.webp" alt="" />
                    In der IT-Sicherheit bezieht sich Threadmodelling auf einen Prozess, bei dem potenzielle Bedrohungen und Angriffsvektoren identifiziert werden, um Sicherheitslücken zu erkennen und Gegenmaßnahmen zu entwickeln. Es hilft dabei, Schwachstellen im System zu verstehen und angemessene Sicherheitsvorkehrungen zu treffen. Ein Beispiel für Threadmodelling in der IT-Sicherheit&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/65/cyber-security-gdc7b1547d_640.webp" class="type:primaryImage" alt="" /></p>
                <p class="wp-block-paragraph">In der IT-Sicherheit bezieht sich Threadmodelling auf einen Prozess, bei dem potenzielle Bedrohungen und Angriffsvektoren identifiziert werden, um Sicherheitslücken zu erkennen und Gegenmaßnahmen zu entwickeln. Es hilft dabei, Schwachstellen im System zu verstehen und angemessene Sicherheitsvorkehrungen zu treffen.</p>
<p class="wp-block-paragraph">Ein Beispiel für Threadmodelling in der IT-Sicherheit könnte sich auf die Entwicklung einer E-Commerce-Website beziehen:</p>
<p class="wp-block-paragraph">Identifizierung der Bedrohungen:</p>
<ul class="wp-block-list">
<li>Unbefugter Zugriff auf Benutzerdaten</li>
<li>Injection-Angriffe (z.B. SQL-Injection)</li>
<li>Cross-Site Scripting (XSS)</li>
<li>Denial-of-Service-Angriffe (DoS)</li>
<li>Brute-Force-Angriffe auf Benutzerkonten</li>
</ul>
<p class="wp-block-paragraph">Analyse der potenziellen Auswirkungen:</p>
<ul class="wp-block-list">
<li>Diebstahl von Benutzerdaten (z.B. Kreditkarteninformationen)</li>
<li>Manipulation von Datenbankinhalten</li>
<li>Kompromittierung von Benutzerkonten</li>
<li>Beeinträchtigung der Verfügbarkeit der Website</li>
</ul>
<p class="wp-block-paragraph">Bewertung der bestehenden Sicherheitsmaßnahmen:</p>
<ul class="wp-block-list">
<li>Verwendung von sicheren Verschlüsselungsprotokollen (z.B. HTTPS)</li>
<li>Implementierung von Input-Validierung und Datenbereinigung</li>
<li>Einsatz von Web Application Firewalls (WAF)</li>
<li>Überwachung und Erkennung von Anomalien im Datenverkehr</li>
</ul>
<p class="wp-block-paragraph">Entwicklung von Gegenmaßnahmen:</p>
<ul class="wp-block-list">
<li>Umsetzung von Zugriffskontrollen und Authentifizierung</li>
<li>Implementierung von Sicherheitspatches und regelmäßige Updates</li>
<li>Schulung der Entwickler in sicherer Codierung und sicheren Entwicklungsmethoden</li>
<li>Durchführung von Penetrationstests und Sicherheitsaudits</li>
</ul>
<p class="wp-block-paragraph">Durch das Threadmodelling in der IT-Sicherheit können potenzielle Bedrohungen und Schwachstellen erkannt werden, um angemessene Schutzmaßnahmen zu implementieren und die Sicherheit des Systems zu verbessern.</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>OPSEC: Der Schlüssel zu Sicherheit in der digitalen Welt</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/opsec-der-schluessel-zu-sicherheit-in-der-digitalen-welt/index.html"/>
        <id>https://test.marcooderkerk.de/opsec-der-schluessel-zu-sicherheit-in-der-digitalen-welt/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/53/1390518392-800px-750x430.png" medium="image" />
            <category term="Security"/>

        <updated>2026-06-06T13:05:40+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/53/1390518392-800px-750x430.png" alt="https://openclipart.org/user-detail/fundacionacceso Security" />
                    In einer zunehmend vernetzten Welt, in der fast jeder Schritt von uns online nachvollziehbar ist, wird der Schutz der eigenen Informationen immer wichtiger. Der Begriff OPSEC (Operational Security) beschreibt eine Reihe von Maßnahmen, die darauf abzielen, sensible Informationen vor unbefugtem Zugriff zu schützen. Ursprünglich aus&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/53/1390518392-800px-750x430.png" class="type:primaryImage" alt="https://openclipart.org/user-detail/fundacionacceso Security" /></p>
                <p class="wp-block-paragraph">In einer zunehmend vernetzten Welt, in der fast jeder Schritt von uns online nachvollziehbar ist, wird der Schutz der eigenen Informationen immer wichtiger. Der Begriff OPSEC (Operational Security) beschreibt eine Reihe von Maßnahmen, die darauf abzielen, sensible Informationen vor unbefugtem Zugriff zu schützen. Ursprünglich aus dem militärischen Bereich stammend, hat OPSEC heute auch in der zivilen Nutzung eine große Bedeutung erlangt, insbesondere in Bezug auf Datenschutz, Cybersicherheit und die allgemeine Vorsicht im Umgang mit persönlichen Daten.</p>
<p class="wp-block-paragraph"><strong>Was ist OPSEC?</strong></p>
<p class="wp-block-paragraph">OPSEC steht für „Operational Security“, was übersetzt so viel wie „Betriebs- oder Einsatzsicherheit“ bedeutet. Es handelt sich um eine Strategie, die darauf abzielt, die Schwächen und Bedrohungen eines Systems zu erkennen und zu minimieren, um zu verhindern, dass sensible Informationen in die falschen Hände geraten. Der Fokus liegt dabei auf der Identifikation und Reduzierung von „Kritischen Informationen“, die von einem Angreifer genutzt werden könnten.</p>
<p class="wp-block-paragraph">Im Wesentlichen geht es bei OPSEC darum, durch vorausschauende Maßnahmen die Wahrscheinlichkeit zu minimieren, dass jemand Informationen über deine Aktivitäten, dein Verhalten oder deine Ressourcen erlangt, die dann gegen dich verwendet werden können.</p>
<p class="wp-block-paragraph"><strong>Warum ist OPSEC wichtig?</strong></p>
<p class="wp-block-paragraph">In der heutigen digitalen Welt, in der nahezu jede Handlung in irgendeiner Form erfasst wird, sind Informationen eine wertvolle Ressource – sowohl für Angreifer als auch für Unternehmen, Regierungen und Organisationen. Persönliche Daten, Passwörter, Kontoinformationen und sogar scheinbar harmlose Details über den eigenen Alltag können von Cyberkriminellen ausgenutzt werden, um Identitätsdiebstahl zu begehen oder finanzielle Schäden zu verursachen.</p>
<p class="wp-block-paragraph">Darüber hinaus wird OPSEC nicht nur von Hackern oder Cyberkriminellen in Angriff genommen. Auch Staaten, Unternehmen oder andere Organisationen sammeln Daten, um das Verhalten von Individuen zu analysieren oder sogar um gezielte Werbung und Manipulation zu betreiben. Deshalb geht es bei OPSEC nicht nur um den Schutz vor „bösen Akteuren“, sondern auch um den Schutz der eigenen Privatsphäre und Kontrolle über persönliche Daten.</p>
<p class="wp-block-paragraph"><strong>Die fünf Schritte des OPSEC-Prozesses</strong></p>
<p class="wp-block-paragraph">Der OPSEC-Prozess besteht aus fünf grundlegenden Schritten, die dabei helfen, sicherzustellen, dass keine sensiblen Informationen ungewollt preisgegeben werden:</p>
<ol class="wp-block-list">
<li><strong>Identifikation kritischer Informationen</strong><br>Zunächst gilt es, herauszufinden, welche Informationen für den eigenen Betrieb oder die eigene Person besonders schützenswert sind. Dabei können es sich nicht nur um personenbezogene Daten handeln, sondern auch um Geschäftsgeheimnisse, IP-Adressen, Pläne für Projekte oder persönliche Vorlieben und Aktivitäten.</li>
<li><strong>Analyse von Bedrohungen</strong><br>Wer könnte an diesen Informationen interessiert sein? Hier gilt es, potenzielle Bedrohungen zu erkennen. Cyberkriminelle, Konkurrenten, staatliche Akteure, aber auch unachtsame Dritte könnten an den kritischen Informationen interessiert sein und versuchen, auf sie zuzugreifen.</li>
<li><strong>Schwächen identifizieren</strong><br>Wo liegen die Schwächen, die Angreifer ausnutzen könnten? Dies können offene Netzwerke, unverschlüsselte Datenübertragungen oder ungesicherte Geräte sein. Auch menschliche Fehler, wie das Weitergeben von Informationen in sozialen Netzwerken oder das Verwenden von unsicheren Passwörtern, stellen häufige Schwachstellen dar.</li>
<li><strong>Maßnahmen zur Risikominderung festlegen</strong><br>Sobald die Schwächen erkannt wurden, ist es wichtig, entsprechende Maßnahmen zu ergreifen, um diese zu beheben. Dazu gehören technische Lösungen wie die Verwendung von Verschlüsselung, Firewalls und sicheren Passwörtern sowie praktische Maßnahmen wie das Minimieren der Weitergabe von Informationen in sozialen Netzwerken oder die Schulung von Mitarbeitern im sicheren Umgang mit Daten.</li>
<li><strong>Überwachung und Anpassung</strong><br>OPSEC ist ein fortlaufender Prozess. Neue Bedrohungen entstehen ständig, daher müssen Schutzmaßnahmen regelmäßig überprüft und angepasst werden. Eine kontinuierliche Überwachung der eigenen Informationssicherheit hilft dabei, frühzeitig auf neue Risiken zu reagieren.</li>
</ol>
<p class="wp-block-paragraph"><strong>OPSEC im Alltag: Praktische Tipps</strong></p>
<p class="wp-block-paragraph">OPSEC muss nicht nur in der Arbeitswelt, sondern auch im privaten Bereich beachtet werden. Hier sind einige einfache, aber effektive Tipps, um die eigene Sicherheit zu erhöhen:</p>
<ul class="wp-block-list">
<li><strong>Verschlüssele deine Kommunikation</strong>: Nutze Ende-zu-Ende-verschlüsselte Nachrichten-Apps wie Signal oder WhatsApp, um sicherzustellen, dass nur der beabsichtigte Empfänger deine Nachrichten lesen kann.</li>
<li><strong>Starke Passwörter und Zwei-Faktor-Authentifizierung (2FA)</strong>: Verwende für jeden Account ein einzigartiges, starkes Passwort und aktiviere, wo möglich, die Zwei-Faktor-Authentifizierung. Dies erhöht die Sicherheit erheblich.</li>
<li><strong>Vermeide das Teilen sensibler Informationen</strong>: Sei vorsichtig, was du in sozialen Netzwerken teilst. Manchmal reicht es aus, nur wenige Informationen preiszugeben, um ein vollständiges Profil einer Person zu erstellen.</li>
<li><strong>Sei vorsichtig mit öffentlichen WLANs</strong>: Vermeide es, in öffentlichen Netzwerken sensible Transaktionen wie Online-Banking oder das Eingeben von Passwörtern durchzuführen. Falls nötig, nutze ein VPN (Virtual Private Network).</li>
<li><strong>Schütze deine Geräte</strong>: Verwende Passcodes oder biometrische Sperren (Fingerabdruck, Gesichtserkennung) für deine mobilen Geräte und sichere deine Daten regelmäßig.</li>
</ul>
<p class="wp-block-paragraph"><strong>OPSEC und Datenschutz: Eine unerlässliche Kombination</strong></p>
<p class="wp-block-paragraph">OPSEC und Datenschutz sind eng miteinander verknüpft. Während OPSEC darauf abzielt, zu verhindern, dass kritische Informationen in die falschen Hände geraten, schützt Datenschutz die Rechte des Individuums in Bezug auf seine persönlichen Daten. Es geht dabei nicht nur um die technische Sicherheit von Informationen, sondern auch um die Wahrung der Privatsphäre und die Kontrolle über die eigenen Daten.</p>
<p class="wp-block-paragraph">In vielen Ländern gibt es mittlerweile Gesetze und Vorschriften (wie die Datenschutz-Grundverordnung der EU), die den Umgang mit personenbezogenen Daten regeln. Unternehmen und Einzelpersonen müssen sich dieser Verantwortung bewusst sein, um den rechtlichen Anforderungen gerecht zu werden und ihre Daten entsprechend zu schützen.</p>
<p class="wp-block-paragraph"><strong>Fazit: OPSEC als unverzichtbares Sicherheitskonzept</strong></p>
<p class="wp-block-paragraph">In der digitalen Ära ist OPSEC nicht nur für Militärs oder Unternehmen von Bedeutung, sondern auch für jeden einzelnen von uns. Es geht darum, sich der Risiken bewusst zu werden, die in der heutigen vernetzten Welt lauern, und gezielte Maßnahmen zu ergreifen, um die eigenen Informationen zu schützen. Indem wir bewusster mit unseren Daten umgehen, sichere Kommunikationskanäle nutzen und uns regelmäßig über aktuelle Bedrohungen informieren, können wir unsere digitale Sicherheit erheblich erhöhen und die Gefahren von Cyberkriminalität und Datenmissbrauch minimieren.</p>
<p class="wp-block-paragraph">Letztendlich gilt: Sicherheit ist kein einmaliges Ziel, sondern ein fortwährender Prozess. Und OPSEC ist ein wichtiger Bestandteil dieses Prozesses.</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>IPv4 im Mobilfunk</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/ipv4-im-mobilfunk/index.html"/>
        <id>https://test.marcooderkerk.de/ipv4-im-mobilfunk/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/51/earth-2254769_640-1.webp" medium="image" />
            <category term="infrastruktur"/>

        <updated>2026-06-06T13:02:23+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/51/earth-2254769_640-1.webp" alt="Image by Pete Linforth from Pixabay Infrastruktur" />
                    Im Mobilfunknetz erfolgt die Vergabe von IPv4-Adressen dynamisch und läuft in der Regel über ein Verfahren namens DHCP (Dynamic Host Configuration Protocol). Hier ist der Prozess im Detail erklärt: Wenn sich ein mobiles Endgerät (Smartphone, Tablet oder anderes Gerät) mit dem Mobilfunknetz verbindet, wird eine Verbindung zur Basisstation (Funkzelle) hergestellt. Diese&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/51/earth-2254769_640-1.webp" class="type:primaryImage" alt="Image by Pete Linforth from Pixabay Infrastruktur" /></p>
                <p class="wp-block-paragraph">Im Mobilfunknetz erfolgt die Vergabe von <strong>IPv4-Adressen</strong> dynamisch und läuft in der Regel über ein Verfahren namens <strong>DHCP</strong> (Dynamic Host Configuration Protocol). Hier ist der Prozess im Detail erklärt:</p>
<h3 class="wp-block-heading">1. <strong>Verbindung zum Mobilfunknetz</strong></h3>
<p class="wp-block-paragraph">Wenn sich ein mobiles Endgerät (Smartphone, Tablet oder anderes Gerät) mit dem Mobilfunknetz verbindet, wird eine Verbindung zur <strong>Basisstation</strong> (Funkzelle) hergestellt. Diese Basisstation ist Teil des <strong>Zugangsnetzes</strong> des Mobilfunkanbieters und stellt die erste Instanz für die Netzwerkkonfiguration des Geräts dar.</p>
<h3 class="wp-block-heading">2. <strong>Anfrage für IP-Adresse über das Kernnetz</strong></h3>
<p class="wp-block-paragraph">Nachdem das mobile Endgerät im Zugangsnetz registriert ist, stellt es eine Anfrage an das <strong>Kernnetzwerk</strong> des Mobilfunkanbieters, um eine IP-Adresse zu erhalten. In modernen Netzwerken erfolgt dies in der Regel automatisch und nahtlos, ohne dass der Nutzer eingreifen muss. Hier kommt <strong>DHCP</strong> zum Einsatz.</p>
<ul class="wp-block-list">
<li>Das mobile Gerät sendet eine <strong>DHCP-Anfrage</strong> (Discovery), um eine IP-Adresse zu erhalten.</li>
<li>Der DHCP-Server des Mobilfunknetzbetreibers erhält diese Anfrage und weist dem Gerät eine IPv4-Adresse zu. Diese IP-Adresse stammt in der Regel aus einem Pool dynamischer IP-Adressen, die für die Kunden des Netzwerks reserviert sind.</li>
</ul>
<h3 class="wp-block-heading">3. <strong>NAT (Network Address Translation) im Mobilfunknetz</strong></h3>
<p class="wp-block-paragraph">Aufgrund der begrenzten Anzahl an verfügbaren <strong>IPv4-Adressen</strong> weltweit verwenden Mobilfunkanbieter in der Regel eine Technik namens <strong>NAT</strong> (Network Address Translation). Dabei erhält das mobile Endgerät eine <strong>private IPv4-Adresse</strong>, die nur innerhalb des Netzwerks des Mobilfunkanbieters gültig ist.</p>
<ul class="wp-block-list">
<li><strong>Private IP-Adresse</strong>: Innerhalb des Mobilfunknetzes werden Adressen aus den für private Netzwerke reservierten Bereichen (wie z.B. 10.0.0.0/8 oder 192.168.0.0/16) genutzt.</li>
<li><strong>Öffentliche IP-Adresse</strong>: Wenn das Gerät auf das Internet zugreifen möchte, wandelt der NAT-Router des Netzbetreibers die private IP-Adresse in eine <strong>öffentliche IPv4-Adresse</strong> um, damit der Datenverkehr über das Internet weitergeleitet werden kann.</li>
</ul>
<h3 class="wp-block-heading">4. <strong>Carrier-Grade NAT (CGNAT)</strong></h3>
<p class="wp-block-paragraph">Da die Anzahl der öffentlichen IPv4-Adressen begrenzt ist, verwenden viele Mobilfunkbetreiber <strong>Carrier-Grade NAT (CGNAT)</strong>. Dies bedeutet, dass mehrere mobile Geräte im selben Netzwerk dieselbe öffentliche IPv4-Adresse teilen und die Unterscheidung über unterschiedliche <strong>Portnummern</strong> erfolgt. CGNAT stellt sicher, dass die knappen IPv4-Adressen effizient verwendet werden können, indem viele Geräte eine einzige öffentliche IP-Adresse nutzen.</p>
<h3 class="wp-block-heading">5. <strong>Lease-Zeiten und dynamische Vergabe</strong></h3>
<p class="wp-block-paragraph">Die zugewiesene IPv4-Adresse hat eine sogenannte <strong>Lease-Zeit</strong>, also einen Zeitraum, in dem das Gerät diese IP-Adresse verwenden kann. Nach Ablauf dieser Zeit muss die IP-Adresse entweder erneuert oder eine neue Adresse angefordert werden. Dieser dynamische Prozess sorgt dafür, dass IP-Adressen effizient wiederverwendet werden und keine Adressen dauerhaft belegt werden, wenn sie nicht aktiv genutzt werden.</p>
<h3 class="wp-block-heading">6. <strong>IPv6 als langfristige Lösung</strong></h3>
<p class="wp-block-paragraph">Da die Verfügbarkeit von IPv4-Adressen immer knapper wird, setzen immer mehr Mobilfunkanbieter auf <strong>IPv6</strong>. IPv6 bietet einen praktisch unerschöpflichen Adressraum und löst viele der Probleme, die mit der dynamischen Zuweisung und NAT-Techniken bei IPv4 einhergehen.</p>
<p class="wp-block-paragraph">Zusammengefasst: Im Mobilfunknetz wird die <strong>IPv4-Adresse</strong> in der Regel dynamisch durch einen <strong>DHCP-Server</strong> zugewiesen, häufig über <strong>NAT</strong> oder <strong>CGNAT</strong>, um die begrenzten öffentlichen IPv4-Adressen effizient zu nutzen.</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Systemkontext kurz erklärt</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/systemkontext-kurz-erklaert/index.html"/>
        <id>https://test.marcooderkerk.de/systemkontext-kurz-erklaert/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/45/blueprint-3194878_640-640x430.webp" medium="image" />
            <category term="architektur"/>

        <updated>2026-06-05T22:52:33+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/45/blueprint-3194878_640-640x430.webp" alt="" />
                    Der Systemkontext beschreibt den Scope einer Entwicklung im Zusammenspiel mit anderen Systemen in einer Anwendungslandschaft. Ganz einfach, man will sein System (weiter-)entwickeln und sich nicht um Fremdsysteme bei der Entwicklung und dem Design kümmern müssen. Daher sollte man früh festlegen , welche Komponenten und Systembestandteile&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/45/blueprint-3194878_640-640x430.webp" class="type:primaryImage" alt="" /></p>
                <p class="wp-block-paragraph">Der Systemkontext beschreibt den Scope einer Entwicklung im Zusammenspiel mit anderen Systemen in einer Anwendungslandschaft.</p>
<p><span id="more-3785"></span></p>
<h2 class="wp-block-heading"><br>Warum ist es nun wichtig , den Systemkontext so früh wie möglich festzulegen ?</h2>
<p class="wp-block-paragraph">Ganz einfach, man will sein System (weiter-)entwickeln und sich nicht um Fremdsysteme bei der Entwicklung und dem Design kümmern müssen. Daher sollte man früh festlegen , welche Komponenten und Systembestandteile zum eigenen System gehören und welche als Blackbox betrachtet werden können. Man legt also die Systemgrenzen fest.</p>
<h2 class="wp-block-heading">Wie legt man den Systemkontext fest?</h2>
<p class="wp-block-paragraph">Im Zuge einer Systemkontextanalyse ermittelt man unter anderem die folgenden Punkte:</p>
<ul class="wp-block-list">
<li>Stakeholder, Infrastrukturadministratoren</li>
<li>alle benötigten Prozesse</li>
<li>benötigte Schnittstellen</li>
</ul>
<p class="wp-block-paragraph">Zusätzlich zu diesen Punkten ist man ggf. gezwungen Gesetztesgrundlagen und Normen zu beachten. Diese sollten ebenfalls in den Systemkontext einbezogen werden.</p>
<p class="wp-block-paragraph">Und wie immer : Es stehen zum Zeitpunkt der Analyse nicht alle Informationen und Entscheidungen zur Verfügung. Daher kann es durchaus vorkommen , dass man die Analyse und den Kontext im Projektverlauf wiederholen und anpassen muss.</p>
<h2 class="wp-block-heading">Darstellungsform</h2>
<p class="wp-block-paragraph">Als Darstellungsform kann man die im UML2.0 enthaltene Anwendungsfalldiagramme oder ein Kompositionsstrukturdiagramme<br>genutzt werden.</p>
<figure class="post__image"><img loading="lazy"  src="https://test.marcooderkerk.de/media/posts/45/7c41dfa5.webp" alt="" width="449" height="486" sizes="(max-width: 1920px) 100vw, 1920px" srcset="https://test.marcooderkerk.de/media/posts/45/responsive/7c41dfa5-xs.webp 640w ,https://test.marcooderkerk.de/media/posts/45/responsive/7c41dfa5-sm.webp 768w ,https://test.marcooderkerk.de/media/posts/45/responsive/7c41dfa5-md.webp 1024w ,https://test.marcooderkerk.de/media/posts/45/responsive/7c41dfa5-lg.webp 1366w ,https://test.marcooderkerk.de/media/posts/45/responsive/7c41dfa5-xl.webp 1600w ,https://test.marcooderkerk.de/media/posts/45/responsive/7c41dfa5-2xl.webp 1920w"></figure>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Scrum eine kurze Einführung</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/scrum-eine-kurze-einfuehrung/index.html"/>
        <id>https://test.marcooderkerk.de/scrum-eine-kurze-einfuehrung/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/39/sheep-3379578_640.webp" medium="image" />
            <category term="IT-Grundlagen"/>

        <updated>2026-06-05T22:11:03+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/39/sheep-3379578_640.webp" alt="" />
                    Definition Bei Scrum handelt es sich um ein Vorgehensmodell/Framework des Agilen Projektmanagements. In den 1990er hat sich das Vorgehensmodell von einem rein auf Softwareentwicklung fokussierenden Modell zu einer allgemein gültigen Projektmanagment-Methode entwickelt. In Scrum gibt es nur 3 Rollen: Im Gegensatz zu anderen Projektmanagement Methoden&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/39/sheep-3379578_640.webp" class="type:primaryImage" alt="" /></p>
                <h4 class="wp-block-heading">Definition</h4>
<p class="wp-block-paragraph">Bei Scrum handelt es sich um ein Vorgehensmodell/Framework des Agilen Projektmanagements. In den 1990er hat sich das Vorgehensmodell von einem rein auf Softwareentwicklung fokussierenden Modell zu einer allgemein gültigen Projektmanagment-Methode entwickelt.</p>
<h4 class="wp-block-heading">Rollen in Scrum</h4>
<p class="wp-block-paragraph">In Scrum gibt es nur 3 Rollen:</p>
<table class="wp-block-table">
<tbody>
<tr>
<td>Rolle</td>
<td>Beschreibung</td>
</tr>
<tr>
<td>Product Owner</td>
<td>Verantwortlich für die Eigenschaften und die Wirtschaftlichkeit eines<br>Produktes.<br>Definition und Priorisierung der zu entwickelnden Eigenschaften.<br>Im Gegensatz zu anderen Projektmanagementmethoden ist der PO<br>immer eine Einzelperson.</td>
</tr>
<tr>
<td>Entwickler-<br>team</td>
<td>Verantwortet die Lieferung der Produkteigenschaftengemäß der<br>Vorgaben des PO</td>
</tr>
<tr>
<td>Scrum Master</td>
<td>Überwachung das Scrum funktioniert. Moderation von Meetings<br>und Verantwortlich für die Abschirmung des Entwicklerteams vor<br>Störungen von außen.</td>
</tr>
</tbody>
</table>
<h4 class="wp-block-heading">Artefakte in Scrum</h4>
<p class="wp-block-paragraph">Im Gegensatz zu anderen Projektmanagement Methoden fokussiert sich Scrum auf 3 Artefakte</p>
<table class="wp-block-table">
<tbody>
<tr>
<td>Artefakt</td>
<td>Beschreibung</td>
</tr>
<tr>
<td>Product Backlog</td>
<td>Beim Product Backlog handelt es sich um eine Sammlung von<br>Requirements für zukünftige Sprints. Der PO priorisiert dieses und<br>ist alleinig verantwortlich. Anforderungen sollten in Userstories<br>fachlich beschrieben werden. Die Eigenschaften jeder Userstory<br>sollte dem Akronym INVEST folgen :<br><strong>Independent </strong>– unabhängig.<br>Sie sollte nach Möglichkeit nicht von anderen User<br>Stories abhängen.<br><strong>Negotiable </strong>– verhandelbar.<br>So lange das Produkt nicht ausgeliefert ist,<br>können Änderungen vorgenommen werden.<br><strong>Valuable </strong>– nützlich.<br>Ihre Umsetzung erhöht den Gebrauchswert des Produkts für<br>den Endkunden.<br><strong>Estimable </strong>– quantifizierbar. Der Aufwand für die Umsetzung<br>muss abschätzbar sein.<br><strong>Small </strong>– klein. Der Aufwand für die Umsetzung<br>sollte überschaubar sein.<br>Erstrebenswert sind einige Arbeitstage, maximal einige Wochen.<br><strong>Testable </strong>– überprüfbar. Ihre erfolgreiche Umsetzung<br>sollte sich mit objektiven Kriterien überprüfen lassen.</td>
</tr>
<tr>
<td>Sprint Backlog</td>
<td>Beinhaltet alle Anforderungen die innerhalb des Sprints umgesetzt<br>werden sollen.</td>
</tr>
<tr>
<td>Product<br>Implemet</td>
<td>Funktionsfähige Produktversion , die nach dem Sprint zur<br>Verfügung steht. Hierbei muss es sich nicht um die finale Version<br>handeln.</td>
</tr>
</tbody>
</table>
<h4 class="wp-block-heading">Regelmäßige Aktivitäten / Events</h4>
<p class="wp-block-paragraph">Wie in jeder Projektmanagement Methode gibt es fixe Veranstaltungen.</p>
<table class="wp-block-table">
<tbody>
<tr>
<td>Aktivtät/Event</td>
<td>Beschreibung</td>
</tr>
<tr>
<td>Spring Planung</td>
<td>Workshop in dem die Anforderungen für den nächsten Spring<br>in Tasks mit einer Laufzeit von ~ 1 Tag zerlegt und eingeplant<br>werden.</td>
</tr>
<tr>
<td>Daily</td>
<td>Täglicher Informationsaustausch des Entwicklungsteams.<br>Max. 15 min Dauer. Falls Themen oder Probleme nicht im 15 min<br>Zeitfenster behandelt werden können, werden diese an den Scrum<br>Master übergeben.</td>
</tr>
<tr>
<td>Review</td>
<td>Nach jedem Spring werden die Ergebnisse geprüft<br>und ggf das Backlog angepasst. Außerdem werden Rückmeldungen<br>vom PO und den Stakeholdern eingeholt.</td>
</tr>
<tr>
<td>Retrospective</td>
<td>Überprüfung der Arbeitsweise für kontinuierliche Verbesserung .</td>
</tr>
<tr>
<td>Product Backlog<br>Refinement</td>
<td>Der PO und das Entwicklerteam gehen das Product Backlog<br>gemeinsam durch. Aktivitäten wird das Product Backlog geordnet,<br>unwichtiges entfernt, neue Einträge aufgenommen,<br>Anforderungen detailliert , geschätzt und Releases geplant.</td>
</tr>
</tbody>
</table>
<figure class="post__image"><video loading="lazy" width="1024" height="512" controls="controls">
<source src="hbttps://www.marcooderkerk.de/media/scrum.mp4" type="video/mp4" /></video></figure>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Python3 – Teil 5 Dictonaries (Key Values)</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/python3-teil-5-dictonaries-key-values/index.html"/>
        <id>https://test.marcooderkerk.de/python3-teil-5-dictonaries-key-values/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/35/snake-390174_1280-750x430.webp" medium="image" />
            <category term="Python"/>

        <updated>2026-06-05T21:47:03+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/35/snake-390174_1280-750x430.webp" alt="" />
                    In diesem Beitrag schauen wir uns kurz Dictonaries an. Mit Hilfe von Dictionaries können wir Key Values / Mappings speichern. Kurz gesagt besteht ein Dictionary aus einem Key (assoziatives Feld) und seinem Value. Schauen wir uns das ganze mal an einem Beispiel an. Wir haben&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/35/snake-390174_1280-750x430.webp" class="type:primaryImage" alt="" /></p>
                <p class="wp-block-paragraph">In diesem Beitrag schauen wir uns kurz Dictonaries an. Mit Hilfe von Dictionaries können wir Key Values / Mappings speichern. Kurz gesagt besteht ein Dictionary aus einem Key (assoziatives Feld) und seinem Value.<br>Schauen wir uns das ganze mal an einem Beispiel an.<br>Wir haben eine Anzahl von Tieren und deren lateinischen Namen in einem Dictionary.</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class="">
<div><span class="enlighter-text">tiere = </span><span class="enlighter-g1">{</span><span class="enlighter-s0">'Hund'</span><span class="enlighter-text">:</span><span class="enlighter-s0">'Canis'</span><span class="enlighter-text">,</span><span class="enlighter-s0">'Katze'</span><span class="enlighter-text">:</span><span class="enlighter-s0">'feles'</span><span class="enlighter-text">,</span><span class="enlighter-s0">'Maus'</span><span class="enlighter-text">:</span><span class="enlighter-s0">'Mus'</span><span class="enlighter-g1">}</span></div>
</div>
<div class="">
<div><span class="enlighter-m0">print</span><span class="enlighter-g1">(</span><span class="enlighter-text">tiere</span><span class="enlighter-g1">[</span><span class="enlighter-s0">'Hund'</span><span class="enlighter-g1">])</span></div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Führen wir das Beispiel aus, erhalten wir den Wert „Canis“ als Ausgabe.</p>
<p class="wp-block-paragraph">Das hinzufügen von Einträgen zu einem Dictionary ist ebenfalls möglich. Hier ein Beispiel :</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
<div class="">
<div>
<pre class="language-python"><code>tiere = {'Hund':'Canis','Katze':'feles','Maus':'Mus'}
tiere['Schwein'] = 'sus'
print(tiere)
</code></pre>
</div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Als Ausgabe erhalten wir nun</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class="">
<pre class="language-python"><code>{'Hund': 'Canis', 'Katze': 'feles', 'Maus': 'Mus', 'Schwein': 'sus'}</code></pre>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Zusammengefasst &lt;DictionaryName&gt;[&lt;Key&gt;]= &lt;Value&gt;.<br>Um Werte zu updaten kann man ebenfalls diese Syntax nutzen, indem wir einen bestehenden Key nutzen.<br>Wichtig an dieser Stelle noch zu sagen, ist dass das Value keine Liste sein kann. Die Verwendung von Tuples ist allerdings erlaubt.</p>
<p class="wp-block-paragraph">Zum Löschen von Einträgen kann man die Dictionary-Methode pop() nutzen.</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class="">
<pre class="language-python"><code>tiere.pop('Katze')</code></pre>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">und schon ist die Katze Geschichte.</p>
<p class="wp-block-paragraph">Möchte man 2 Dictionaries zusammenfügen , kann man dieses über die update() Methode machen. Sind in beiden Dictionaries identische Keys vorhanden , so werden die Werte des ersten Dictionaries beim Merge überschrieben.</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
<div class="">
<div>
<pre class="language-python"><code>tiere = {'Hund':'Canis','Katze':'feles','Maus':'Mus'}
tiere2 = {'Schwein':'sus' }
tiere.update(tiere2)
print(tiere)</code></pre>
</div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Möchte man nu alle Einträge eines Dictionaries durchgehen , kann man dieses mittels einer For Schleife auf die Rückgabe der Dictionarymethode items() machen:</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
</div>
</div>
</div>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-generic enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class="">
<div>
<pre class="language-python"><code>tiere = {'Hund':'Canis','Katze':'feles','Maus':'Mus'}
for deutsch, latein in tiere.items():
print('Der lateinische Name für ' + deutsch + ' ist ' + latein)
Der lateinische Name für Hund ist Canis
Der lateinische Name für Katze ist feles
Der lateinische Name für Maus ist Mus</code></pre>
</div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Als Varianten hierzu kann man mittels der Dictionarymehtoden keys() alle Keys und über die Methode values() alle Values durchgehen.</p>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Python3 – Teil 4 If else elif</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/python3-teil-4-if-else-elif/index.html"/>
        <id>https://test.marcooderkerk.de/python3-teil-4-if-else-elif/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/34/snake-390174_1280-750x430.webp" medium="image" />
            <category term="Python"/>

        <updated>2026-06-05T21:44:39+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/34/snake-390174_1280-750x430.webp" alt="" />
                    Wie in jeder anderen Programmiersprachen werden if Anweisungen zum Test von Bedingungen und der Reaktion auf das Prüfungsergebnis genutzt. Auch in Python werden die arithmetischen Vergleichsoperatoren unterstützt : Neben diesen Standardoperatoren gibt es zum „Suchen“ in Listen noch den „in“ und zur Prüfung, ob ein&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/34/snake-390174_1280-750x430.webp" class="type:primaryImage" alt="" /></p>
                <div class="entry-content clearfix single-post-content">
<div class="continue-reading-content close">
<p class="wp-block-paragraph">Wie in jeder anderen Programmiersprachen werden if Anweisungen zum Test von Bedingungen und der Reaktion auf das Prüfungsergebnis genutzt.<br>Auch in Python werden die arithmetischen Vergleichsoperatoren unterstützt :</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Beschreibung</th>
<th>Operator</th>
</tr>
</thead>
<tbody>
<tr>
<td>Gleichheit</td>
<td>==</td>
</tr>
<tr>
<td>kleiner als</td>
<td>&lt;</td>
</tr>
<tr>
<td>kleiner oder gleich als</td>
<td>&lt;=</td>
</tr>
<tr>
<td>größer</td>
<td>&gt;</td>
</tr>
<tr>
<td>größer oder gleich als</td>
<td>&gt;=</td>
</tr>
<tr>
<td>Ungleichheit</td>
<td>!=</td>
</tr>
</tbody>
</table>
<figcaption class="wp-element-caption">Vergleichsoperatoren</figcaption>
</figure>
<p class="wp-block-paragraph">Neben diesen Standardoperatoren gibt es zum „Suchen“ in Listen noch den „in“ und zur Prüfung, ob ein Eintrag nicht in einer Liste ist „not in“ Operator.</p>
<h3 class="wp-block-heading">Hier ein paar Beispiele</h3>
<p class="wp-block-paragraph">Einfaches If :<br>Wenn das Alter kleiner gleich 17 ist , dann gibt eine Meldung aus.</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
<div class="">
<div>
<pre class="language-python"><code>if alter &lt;=17:
print('Du kommst hier nicht rein')</code></pre>
</div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Einfaches If Else Beispiel :<br>Wenn Alter &lt; 18 , dann Lieblinksgetränk ist Milch, ansonsten Whisky.</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
<div class="">
<div>
<pre class="language-python"><code>if alter &lt; 18:
lieblingsgetraenk = 'Milch'
else:
lieblingsgetraenk = 'Whisky'</code></pre>
</div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Natürlich gibt es kompliziertere Beispiele :<br>Wenn Alter &lt; 16 , dann Lieblinksgetränk ist Milch. Wenn Alter &gt;=16 aber &lt; 18 dann Bier ansonsten Whisky. Also eine klassische If ElseIf Else abfrage. Da Wir in Python aber auf gut lesbaren Code stehen , heißt bei uns das ElseIf nicht ElseIf sondern ElIf.</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
<div class="">
<div>
<pre class="language-python"><code>if alter &gt;= 18:
lieblingsgetraenk = 'Whisky'
elif alter &gt;= 16:
lieblingsgetraenk = 'Bier'
else:
lieblingsgetraenk = 'Milch'
</code></pre>
</div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Wie Ihr sicherlich schon gemerkt habt, sind in Python die Blöcke mit der Logik nicht wie in anderen Sprachen durch geschweifte Klammern gekapselt , sondern durch Einrückungen.</p>
<p class="wp-block-paragraph">Dabei ist es egal , wie viele Anweisungen ausgeführt werden sollen :</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
<div class="">
<div>
<pre class="language-python"><code>if alter &lt; 18:
lieblingsgetraenk = 'Milch'
lieblingsfarbe = 'blau'
else:
lieblingsgetraenk = 'Whisky'
lieblingsfarbe = 'rot'</code></pre>
</div>
</div>
</div>
</div>
</div>
<p class="wp-block-paragraph">Auf der einen Seite erleichtert diese Schreibweise die Lesbarkeit , ist aber auch eine leichte Fehlerquelle, da bereits eine Verschiebung um ein Zeichen , dem Interpreter Probleme bereitet.<br><br>Zu guter Letzt noch ein ein Beispiel für die Abfrage in Listen :</p>
<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-python enlighter-hover enlighter-linenumbers ">
<div class="enlighter-code">
<div class="enlighter">
<div class=""> </div>
<div class="">
<div>
<pre class="language-python"><code>x = ['Hund','Katze','Maus']
if 'Katze' in x:
print('Mensch , das gibt Ärger')
</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="shariff shariff-align-center shariff-widget-align-left" data-services="facebook" data-url="https://www.marcooderkerk.de/python3-teil-4-if-else-elif/" data-timestamp="1730283416" data-hidezero="1" data-backendurl="https://www.marcooderkerk.de/wp-json/shariff/v1/share_counts?"><br><br></div>
</div>
</div>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Toronto 2008</title>
        <author>
            <name>Marco Oderkerk</name>
        </author>
        <link href="https://test.marcooderkerk.de/toronto-2008/index.html"/>
        <id>https://test.marcooderkerk.de/toronto-2008/index.html</id>
        <media:content url="https://test.marcooderkerk.de/media/posts/7/file_104.jpg" medium="image" />
            <category term="Kanada 2008"/>

        <updated>2026-05-30T10:20:01+02:00</updated>
            <summary type="html">
                <![CDATA[
                        <img src="https://test.marcooderkerk.de/media/posts/7/file_104.jpg" alt="Skyline Toronto vom Wasser" />
                    Hier war hauptsächlich Relaxen angesagt.Aber etwas Sightseeing musste natürlich auch sein. Als erstes hab ich wie in Montreal eine Amphibienbus Tour gemacht (hier fährt man mit “Hippos” ) Kartenmarkierung C und am nächsten Tag eine Stadtrundfahrt im Doppeldeckerbus mit Hafenrundfahrt. Den Rest des Tages hab&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                    <p><img src="https://test.marcooderkerk.de/media/posts/7/file_104.jpg" class="type:primaryImage" alt="Skyline Toronto vom Wasser" /></p>
                <p>Hier war hauptsächlich Relaxen angesagt.Aber etwas Sightseeing musste natürlich auch sein.</p>
<p><span id="more-1044"></span></p>
<p>Als erstes hab ich wie in Montreal eine Amphibienbus Tour gemacht (hier fährt man mit “Hippos” ) Kartenmarkierung C und am nächsten Tag eine Stadtrundfahrt im Doppeldeckerbus mit Hafenrundfahrt. Den Rest des Tages hab ich auf den Erholungsinseln vor Toronto verbracht. Hier stehen Schilder “ Bitte den Rasen betreten” , da kann sich so mache Stadt mal eine Scheibe von abschneiden.Dann war ich noch im Zoo von Toronto, CN Tower und im Rogercenter in dem nicht nur Eishockeyspiele stattfinden. Und natürlich auf Yonge Street shoppen.<br><br></p>
<div class="gallery-wrapper gallery-wrapper--wide"><div class="gallery" data-is-empty="false" data-translation="Add images" data-columns="3">
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_098.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_098-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_099.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_099-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_100.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_100-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_101.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_101-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_102.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_102-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_103.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_103-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_104.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_104-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_105.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_105-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_106.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_106-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_107.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_107-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_108.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_108-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_109.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_109-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_110.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_110-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_111.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_111-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_113.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_113-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_114.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_114-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_115.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_115-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_116.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_116-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_117.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_117-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_118.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_118-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_119.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_119-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_120.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_120-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_121.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_121-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_122.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_122-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_123.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_123-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_124.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_124-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_125.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_125-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_126.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_126-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_127.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_127-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_128.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_128-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_129.jpg" data-size="1024x683"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_129-thumbnail.jpg" alt="" width="720" height="480"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_130.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_130-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_131.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_131-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_132.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_132-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
<figure class="gallery__item"><a href="https://test.marcooderkerk.de/media/posts/7/gallery/file_133.jpg" data-size="683x1024"><img loading="lazy" src="https://test.marcooderkerk.de/media/posts/7/gallery/file_133-thumbnail.jpg" alt="" width="683" height="1024"></a></figure>
</div></div>
            ]]>
        </content>
    </entry>
</feed>
