172 avsnitt

Der Podcast für Auszubildende, Ausbilder und IHK-Prüfer in den IT-Berufen (Fachinformatiker für Anwendungsentwicklung/Systemintegration/Daten- und Prozessanalyse/Digitale Vernetzung, IT-Systemelektroniker, Kaufmann für IT-Systemmanagement, Kaufmann für Digitalisierungsmanagement). Stefan Macke gibt Tipps für die Ausbildung, die IHK-Prüfungen und alles, was sonst noch mit den Berufsbildern zu tun hat. Aber auch für bereits ausgebildete Softwareentwickler/Programmierer/Administratoren und alle, die Interesse an der Softwareentwicklung oder IT haben, ist bestimmt etwas Interessantes dabei!



https://it-berufe-podcast.de

IT-Berufe-Podcast Stefan Macke

    • Teknologi

Der Podcast für Auszubildende, Ausbilder und IHK-Prüfer in den IT-Berufen (Fachinformatiker für Anwendungsentwicklung/Systemintegration/Daten- und Prozessanalyse/Digitale Vernetzung, IT-Systemelektroniker, Kaufmann für IT-Systemmanagement, Kaufmann für Digitalisierungsmanagement). Stefan Macke gibt Tipps für die Ausbildung, die IHK-Prüfungen und alles, was sonst noch mit den Berufsbildern zu tun hat. Aber auch für bereits ausgebildete Softwareentwickler/Programmierer/Administratoren und alle, die Interesse an der Softwareentwicklung oder IT haben, ist bestimmt etwas Interessantes dabei!



https://it-berufe-podcast.de

    Anforderungsermittlung (nicht nur für dein Abschlussprojekt) – IT-Berufe-Podcast #159

    Anforderungsermittlung (nicht nur für dein Abschlussprojekt) – IT-Berufe-Podcast #159

    Um die Ermittlung und Dokumentation von Anforderungen für Projekte geht es in der einhundertneunundfünfzigsten Episode des IT-Berufe-Podcasts.



    Inhalt

    Spätestens für das Abschlussprojekt im dritten Ausbildungsjahr müssen alle Azubis in den IT-Berufen Anforderungen ermitteln. Wen man dabei berücksichtigen sollte, wie man die Anforderungen erhebt und wie man sie verständlich dokumentiert, das erkläre ich hier.

    Qualität

    Beginnen wir zunächst mit den Anforderungen selbst. Dabei starte ich gerne mit dem Begriff der Qualität. Qualität ist definiert als Übereinstimmung mit den Anforderungen. Dabei können diese Anforderungen von sehr unterschiedlichen Personen oder Personengruppen gestellt werden. Daher ist es wichtig, alle am Projekt beteiligten Personen zu befragen.

    Anforderungen

    Es gibt grundsätzlich zwei verschiedene Arten von Anforderungen: funktionale und nicht-funktionale. Funktionale Anforderungen beziehen sich direkt auf die zu erbringende Leistung des Produkts, bspw. die Möglichkeit, Text in einer Textverarbeitungssoftware fett darzustellen.



    Nicht-funktionale Anforderungen beschreiben den ganzen Rest „drumherum“, also z.B. die Performance, Sicherheit, Stabilität, Fehlertoleranz, Benutzbarkeit usw. Sie sind meistens sehr schwer zu definieren, da sie oftmals nicht bewusst wahrgenommen, sondern einfach erwartet werden. Daher werden sie oft vergessen oder können nur schwer quantifiziert werden. Es ist unsere Aufgabe als Projektleiter diese Anforderungen trotzdem so gut es geht zu dokumentieren, damit es am Ende kein böses Erwachen gibt, wenn sie nicht umgesetzt sind.



    Eine gute Übersicht über die zahlreichen möglichen nicht-funktionalen Anforderung bietet die Norm ISO 9126, die den Begriff der Softwarequalität definiert.

    Stakeholder

    Wer definiert überhaupt die Anforderungen an eine Software (oder allgemein an ein zu fertigendes Produkt)? Ein Stakeholder ist jede Person, Gruppe oder Institution, die an dem zu entwickelnden Produkt oder dessen Herstellungsprozess in irgendeiner Weise – positiv oder negativ – interessiert ist.

    Hier kommt eine nicht vollständige Liste möglicher Stakeholder unserer Projekte.



    * Kunde: Der Kunde bezahlt uns für das Projekt. Seine Anforderungen sollten wir auf jeden Fall berücksichtigen.

    * Anwender: Der Anwender ist die Person, die letztendlich mit unserem Produkt täglich arbeiten muss.

    * Management: Auch das Management könnte Anforderungen an unser Produkt stellen.

    * Marketing: Aus dem Bereich des Marketings kommen Anforderungen wie die Corporate Identity.

    * Entwickler: Die Entwickler haben ganz eigene Anforderungen, wie z.B. eine Versionverwaltung.

    * Support: Der Support muss nach Einführung des Produkts den Anwendern Hilfestellung leisten und bringt seine ganz eigenen Anforderungen mit.

    * Gesetzgeber: In fast jedem Projekt gilt es auch bestimmte Gesetze und Richtlinien einzuhalten.

    * Standards: Gerade in der IT gibt es eine Fülle von Standards, an die wir uns halten sollten, z.B. HTTP für Webserver.

    * Auditoren: Wirtschaftsprüfer und andere Auditoren stellen ebenfalls Anforderungen an unsere Software, wie z.B. die Nachvollziehbarkeit von Benutzeraktionen.

    * Kulturkreis: Auch der Kulturkreis, in dem die Software eingesetzt wird, hat bestimmte Anforderungen. So kann sich z.B. die Sprache je nach Land deutlich unterscheiden.



    Methoden zur Anforderungsermittlung

    Wenn wir wissen, wenn wir nach Anforderungen fragen müssen, ist die nächste Aufgabe, die Anforderungen auch wirklich aus diesen Menschen herauszukommen. Dafür gibt es neben dem Interview auch verschiedene weitere Methoden.



    * Interview: Die einfachste Methode ist wohl, den Stakeholder direkt zu befragen.

    * Selbstaufschreibung: Wenn dies nicht möglich ist,

    • 1 tim.
    Buchclub: Funktionale Programmierung in Java von Herbert Prähofer – IT-Berufe-Podcast #158

    Buchclub: Funktionale Programmierung in Java von Herbert Prähofer – IT-Berufe-Podcast #158

    Um den Buchclub zu Funktionale Programmierung in Java geht es in der einhundertachtundfünfzigsten Episode des IT-Berufe-Podcasts.



    Inhalt

    Die folgenden Inhalte werden im Buch besprochen. Meiner Meinung nach sollte jeder Azubi zum Fachinformatiker Anwendungsentwicklung diese Begriffe wenigstens einmal gehört haben, besser noch sie mit eigenen Worten erklären können. Die funktionale Programmierung ist neben der Objektorientierung heutzutage sicherlich eine gängige Vorgehensweise.

    Für die anderen IT-Berufe sind viele Inhalte sicherlich etwas zu speziell. Allerdings sollte jeder ITler zumindest die verbreiteten Programmierparadigmen auseinanderhalten können. Und dazu zählen meiner Meinung nach auch einige wichtige Schlagworte. So wie bei der Objektorientierung Vererbung und Polymorphie erklärt werden müssen, sollte man bei der funktionalen Programmierung Funktionen höherer Ordnung oder reine Funktionen erläutern können.

    Grundlagen



    * Lambda-Ausdrücke: Anonyme Funktionen in einer kurzen Schreibweise, meist mit einem „Pfeil“ als Trenner zwischen Methodenkopf und -rumpf (z.B. ->).

    * Typinferenz: Implizite Ableitung der Datentypen z.B. von Funktionsparametern aus dem Kontext, z.B. var text = "Text" (text ist „automatisch“ ein String).

    * Algebraische Datentypen



    * Produkttypen: Der Datentyp wird definiert durch die Kombination verschiedener Werte. Das sind letztlich unsere bekannten Objekte bzw. Structs.

    * Summentypen: Der Datentyp wird definiert als Liste möglicher Alternativen bzw. Varianten, z.B. ist eine Krankenversicherung entweder eine GesetzlicheKrankenversicherung oder eine PrivateKrankenversicherung. Hierbei müssen die Alternativen nicht in einer Vererbungsbeziehung stehen, wie man am Beispiel vermuten könnte.





    * Pattern Matching: Kontrollstruktur, die Datentypen „zerlegen“ kann. Quasi switch „on steroids“.

    * Generics: Datentypen, die mit anderen Datentypen parametriert werden können. Sie bieten allgemeingültige Algorithmen an, die auf mehreren Datentypen ausgeführt werden können.

    * Ko- und Kontravarianz: Legen fest, welche Verallgemeinerungen bzw. Spezialisierungen bei Typparametern von generischen Klassen erlaubt sind. Beispiele:



    * Kovarianz: List students = new List();

    * Kontravarianz: List students = new List();







    Prinzipien der funktionalen Programmierung



    * Funktionsobjekte (first class citizens): Funktionen sind fester Bestandteil der Sprache und können z.B. Variablen zugewiesen oder als Parameter übergeben werden.

    * Reine Funktionen (pure functions): Funktionen haben keine Seiteneffekte. Sie liefern zum gleichen Input immer den gleichen Output.

    * Funktionen höherer Ordnung (higher order functions): Funktionen, die andere Funktionen zurückgeben oder als Parameter bekommen.

    * Bedarfsauswertung (lazy evaluation): Ein Ausdruck wird erst dann ausgewertet, wenn sein Wert auch wirklich benötigt wird.

    * Unveränderbarkeit (immutability): Bestehende Werte sollen nicht mehr verändert werden. Stattdessen werden immer neue Werte erzeugt.

    * Rekursion (recursion): Das Mittel der Wahl zur Iteration ohne veränderliche Variablen.

    * Referentielle Transparenz (referential transparency): Ein Ausdruck kann jederzeit durch seinen Wert ersetzt werden und umgekehrt.



    Funktionale Datenstrukturen



    * Funktoren: Bieten die Funktion map() an, um den enthaltenen Datentypen in einen anderen zu transformieren. Beispiel: Optional.

    * Monoide: Mit Monoiden kann man eine Menge von Elementen zu einem Gesamtergebnis verknüpfen, es also reduzieren (fold). Dafür wird ein neutrales Element und eine Reduktionsfunktion benötigt. Beispiel: Addition ganzer Zahlen mit neutralem Element 0.

    • 1 tim. 20 min
    Datenschutz vs. Datensicherheit vs. Datensicherung – IT-Berufe-Podcast #157

    Datenschutz vs. Datensicherheit vs. Datensicherung – IT-Berufe-Podcast #157

    Um den Unterschied zwischen Datenschutz, Datensicherheit und Datensicherung geht es in der einhundertsiebenundfünfzigsten Episode des IT-Berufe-Podcasts.



    Datenschutz vs. Datensicherheit vs. Datensicherung

    In dieser Episode werden die drei Begriffe zunächst oberflächlich erläutert und abgegrenzt. Über jedes einzelne Thema kann man aber noch im Detail sprechen und Prüflinge müssen sich auch intensiv damit auseinandersetzen.

    Die Begriffe klingen zwar sehr ähnlich, sind aber klar voneinander abzugrenzen und insb. in Prüfungen sauber auseinanderzuhalten. In der Novellierung der IT-Berufe im Jahr 2018 wurden die Begriffe Datenschutz und Datensicherheit explizit in den Ausbildungsrahmenplan mit aufgenommen. Und auch in der Neuordnung 2020 gehören sie zum festen Bestandteil der Berufsausbildung in den IT-Berufen.

    Datenschutz



    * Datenschutz ist der Schutz personenbezogener Daten natürlicher Personen vor Missbrauch durch Dritte.

    * Personenbezogene Daten sind laut DSGVO „alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person […] beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind“. Beispiele: Name, Adresse, IP-Adresse, Bankdaten, Gesundheitsdaten, Standortdaten.

    * Das Recht auf informationelle Selbstbestimmung sichert jedem Bürger das Recht zu, über die Verwendung seiner Daten selbst zu bestimmen.



    Das sogenannte Recht auf informationelle Selbstbestimmung wurde vom Bundesverfassungsgericht im Volkszählungsurteil von 1983 aus dem Grundgesetz abgeleitet. Dort heißt es:



    Jeder hat das Recht auf die freie Entfaltung seiner Persönlichkeit, soweit er nicht die Rechte anderer verletzt und nicht gegen die verfassungsmäßige Ordnung oder das Sittengesetz verstößt. (Grundgesetz, Artikel 2, Satz 1)



    Warum ist das wichtig? Menschen sollen in ihrer persönlichen Freiheit nicht eingeschränkt werden. Sie würden sich aber ggfs. anders verhalten, wenn anderen Menschen (zu) persönliche Daten über sie bekannt wären, wie z.B. Krankheiten oder sexuelle Vorlieben. Außerdem würden viele Menschen sich einschränken, wenn sie befürchten müssten, dass ihr Verhalten protokolliert würde.



    Das Grundgesetz gewährleistet jeder Bürgerin und jedem Bürger das Recht, über Verwendung und Preisgabe seiner persönlichen Daten zu bestimmen (Grundrecht auf informationelle Selbstbestimmung). Geschützt werden also nicht Daten, sondern die Freiheit der Menschen, selbst zu entscheiden, wer was wann und bei welcher Gelegenheit über sie weiß. (Bundesbeauftragter für den Datenschutz und die Informationsfreiheit)



    Die EU formuliert es noch deutlicher:



    Jede Person hat das Recht auf Schutz der sie betreffenden personenbezogenen Daten. (a href="https://www.europarl.europa.

    • 39 min
    Law of Demeter (LoD) – Wissenshäppchen #8

    Law of Demeter (LoD) – Wissenshäppchen #8

    Law of Demeter (LoD)

    Um das Law of Demeter (Gesetz von Demeter) in der Softwareentwicklung geht es im achten Wissenshäppchen.



    Inhalt

    Das Law of Demeter sagt aus, dass eine Methode nur Zugriff auf die folgenden Objekte/Methoden haben sollte:



    * Andere Instanzmethoden in ihrer eigenen Klasse

    * Ihre Parameter

    * Methoden in Objekten, die sie selbst erzeugt

    * Globale Variablen



    Eine einfache andere Definition lautet: Verkette keine Methodenaufrufe („method chaining“). Oder: Verwende nicht mehr als einen ., wenn du auf etwas zugreifst. Ein anderer Name für das LoD ist „Prinzip des geringsten Wissens“ („principle of least knowledge“).

    Der Name stammt von Demeter, einer griechischen Göttin. Der „Erfinder“ des Prinzips entwickelte in den 80er-Jahren ein System mit diesem Namen.

    Erklärung



    * Vorweg: Globale Variablen waren in den 80ern hip, heute nicht mehr. Bitte verwende sie am besten gar nicht.

    * Je mehr „Punkte“ in einer Aufrufhierarchie auftreten, desto mehr Kenntnis hat eine Komponente vom „Innenleben“ der aufgerufenen Komponenten.

    * Je mehr Kenntnis eine Komponente über die von ihr verwendeten Komponenten hat, desto stärker bindet sie sich an diese. Wenn sich die genutzten Komponenten ändern, muss sie sich mit ändern bzw. ist kaputt.

    * Das verletzt das Geheimnisprinzip und die Kapselung, nach der wir eigentlich in der Objektorientierung arbeiten wollen.

    * Je mehr solcher Abhängigkeiten eine Methode hat, desto schwerer ist sie zu verstehen und zu testen.

    * Code, der sich an das LoD hält, gilt auch als „schüchtern“, weil er „nur mit seinen Freunden spricht“.



    Beispielcode

    Um an den Gesamtbeitrag einer Versicherungspolice zu kommen, ist die Kenntnis über die darin enthaltenen versicherten Personen und deren Tarife nötig. Da es sich dabei jeweils um Listen handelt, ist sogar noch ein „Flachklopfen“ der Strukturen nötig. Der Code sieht vielleicht cool aus, ist aber stark an die Strukturen gekoppelt. Das heißt, ein Test müsste sehr viel Aufwand betreiben, um die nötigen Strukturen zu schaffen (z.B. mit Mocks).

    class Tarif

    def initialize(name)

    @name = name

    end



    def beitrag

    123.45

    end

    end



    class VersichertePerson

    def initialize(name)

    @name = name

    @tarife = [ Tarif.new("KFZ"), Tarif.new("Hausrat") ]

    end



    def tarife

    @tarife

    end

    end



    class Versicherungspolice

    def initialize

    @versicherte_personen = [ VersichertePerson.new("Stefan Macke"), VersichertePerson.new("Klaus Meyer") ]

    end



    def versicherte_personen

    @versicherte_personen

    end

    end



    # cool, aber schwer verständlich, anfällig für Anpassungen und auch schwer zu testen

    puts Versicherungspolice.new

    .versicherte_personen

    .flat_map { |vp| vp.tarife }

    .inject(0){|summe,tarif| summe + tarif.beitrag }

    Um dies zu vermeiden, können die einzelnen Klassen von ihren inneren Strukturen abstrahieren und stellen simple Zugriffsmethoden für die gewünschten Ergebnisse bereit. Der finale Aufruf sieht nun schon fast langweilig aus. Dafür liegt die fachliche Berechnungslogik da wo sie hingehört: in den jeweiligen Klassen und nicht beim Aufrufer.

    class Tarif

    def initialize(name)

    @name = name

    end



    def beitrag

    123.45

    end

    end



    class VersichertePerson

    def initialize(name)

    @name = name

    @tarife = [ Tarif.new("KFZ"), Tarif.

    • 21 min
    Effektive Informationsrecherche mit Suchmaschinen (insb. Google) – IT-Berufe-Podcast #156

    Effektive Informationsrecherche mit Suchmaschinen (insb. Google) – IT-Berufe-Podcast #156

    Um den effektiven Umgang mit Suchmaschinen wie Google zur Recherche von Informationen geht es in der einhundertsechsundfünfzigsten Episode des IT-Berufe-Podcasts.



    Inhalt



    * Warum ist die richtige Suche im Internet wichtig?



    * Reines Faktenwissen ist nicht mehr zeitgemäß. Dafür haben wir Suchmaschinen.

    * Die „falsche“ Suche führt dich ggfs. zu veralteten oder falschen Informationen. Das behindert dich in der täglichen Arbeit.

    * Gerade für ITler ist die Suchmaschine ein tägliches Werkzeug. Wir können nicht alle Programmiersprachen oder Konfigurationseinstellungen auswendig kennen.

    * Es ist wichtig, dass du deinen Verstand bemühst und die Ergebnisse bewertest. Überlass der Suchmaschine nicht das Denken für dich!





    * Wie „google“ ich richtig? Allgemeine Tipps zum Umgang mit Suchmaschinen.



    * Denk nicht wie ein Mensch, sondern wie eine Maschine! Formuliere also keine Prosatexte, sondern kurze und knappe Suchanfragen mit den wichtigsten Suchbegriffen. Statt „Wie öffne ich eine Datei in Java?“ solltest du nach „java datei öffnen“ suchen.

    * Suche so spezifisch wie möglich, indem du einschränkende weitere Suchbegriffe hinzufügst. Statt „java dateiverarbeitung“ solltest du nach „java datei schreiben anhängen“, wenn du etwas an eine Datei anhängen möchtest.

    * Verwende gerade im IT-Umfeld Englisch als Sprache für deine Suchanfragen. Das wird zu deutlich mehr Ergebnissen führen. Statt „java datei öffnen“ solltest du also nach „java file open“ suchen.

    * Vermeide sogenannte Stopwords und Satzzeichen, die von der Suchmaschine ohnehin ignoriert werden. Statt „how do i open a file in java?“ solltest du also nach „java file open“ suchen.

    * Manchmal kann es sinnvoll sein, „anonym“ zu suchen, damit die Suchergebnisse nicht anhand deines Profils angepasst werden oder die Suchmaschine ein solches von dir erstellt.





    * Produktivitätstipps



    * Ignoriere Groß-/Kleinschreibung bei deiner Suche. Die Suchmaschine ignoriert das eh.

    * Stelle deine Browser-Suche direkt auf deine Standard-Suchmaschine ein, z.B. Google. Dadurch kannst du durch die Eingabe von Suchbegriffen in der Adresszeile direkt eine Suche starten.

    * Richte dir Such-Abkürzungen für häufig verwendete Suchmaschinen im Browser ein. Dadurch kannst du mit wenigen Tastendrücken direkt in der gewünschten Suchmaschine suchen. Das geht auch für interne Anwendungen wie dein Ticket-System.



    * Es gibt nicht nur Google! Je nachdem, was du suchst, kann die direkte Suche bei YouTube oder Amazon sinnvoller sein. Und wenn du umweltbewusster suchen willst, empfehle ich dir Ecosia.





    * Bewertung von Suchergebnissen



    * Unterscheide zwischen organischen und bezahlten Suchergebnissen. Erstere sind meist die bessere Wahl.

    * Platz 1 ist nicht automatisch das beste Ergebnis für dich. Viele Websites verdienen ihr Geld mit Suchmaschinenoptimierung und tun alles dafür, auf den ersten Plätzen zu landen. Sie müssen aber nicht unbedingt den besten Inhalt bieten.

    * Öffne auch mal die zweite Suchergebnisseite. Im sogenannten Long Tail verbergen sich durchaus auch Perlen.

    * Achte auf das Erstelldatum der Seite. Gerade in der IT sind aktuelle Inhalte wichtig.

    * Achte auf korrekte Versionen der verwendeten Software. Eine Anleitung zu Java 6 hilft dir nicht, wenn du mit Java 11 arbeitest.





    * (Google-)Suchoperatoren zur treffgenaueren Suche



    * Unpassende Wörter ausschließen: -. Beispiel: javascript dom -react

    * Exakt passende Treffer (wörtliche Suche): "". Beispiel: a href="https://www.

    • 53 min
    Plain-Text-Markup-Formate für Texte (Markdown, Asciidoc) – IT-Berufe-Podcast #155

    Plain-Text-Markup-Formate für Texte (Markdown, Asciidoc) – IT-Berufe-Podcast #155

    Um die Vorteile und Einsatzgebiete von Plain-Text-Markup-Formaten für längere Texte geht es in der einhundertfünfundfünfzigsten Episode des IT-Berufe-Podcasts.



    Inhalt

    Plain-Text-Formate sind Formate, die in reinen (menschenlesbaren) Text-Dateien abgelegt werden, also keine binären Formate wie z.B. in Microsoft Word oder LibreOffice.

    Vorteile von Plain-Text-Formaten



    * Versionierung: Diff, Merge, Branches möglich

    * Langlebigkeit: Keine proprietäre Bearbeitungssoftware nötig, keine Abhängigkeit von Herstellern

    * Produktivität: Arbeit ausschließlich mit der Tastatur ohne Maus

    * Flexibilität: Konvertierbar, zur Not selbst parsbar, mit jedem beliebigen Editor änderbar

    * Automatisierung: Mächtige Tools zur Manipulation vorhanden



    Beispiele für Formate



    * Markdown



    * leicht zu lernen, geringer Sprachumfang

    * Output hauptsächlich HTML

    * breite Unterstützung in Tools, z.B. WordPress, GitHub





    * AsciiDoc



    * sehr großer Sprachumfang, sogar geeignet für Bücher

    * viele verschiedene Output-Formate, z.B. HTML, PDF, EPUB

    * gut in übliche Build-Prozesse integriert, z.B. in Gradle





    * Textile



    * ähnelt der Wiki-Syntax

    * Redmine





    * LaTeX



    * komplettes Textsatz-System, „perfekter“ Textsatz

    * geeignet für komplette Bücher inkl. Verzeichnissen, Index, Literaturverzeichnis





    * PlantUML



    * Gestaltung von UML-Diagrammen

    * kann u.a. in LaTeX und AsciiDoc eingebunden werden, aber auch in Wikis







    Tools



    * Pandoc: Konvertiert automatisch Dateien zwischen beliebigen Formaten

    * VSCode: Editor für beliebige Markup-Formate inkl. Preview-Funktion

    * MarkdownPad: Editor für Markdown



    Quelltextbeispiele

    Es folgen Beispiele für das gezeigte HTML-Fragment in den unterschiedlichen Markup-Sprachen.

    HTML

    Markup-Sprachen: HTML

    Ein normaler Absatz in HTML.


    Überschrift

    Fetter Text und kursiver Text.


    Listen



    Ungeordnete Liste



    Mit Unterpunkten

    Noch ein Unterpunkt



    Noch ein Punkt





    Geordnete Liste



    Mit Unterpunkten

    Noch ein Unterpunkt



    Noch ein Punkt



    Links

    IT-Berufe-Podcast


    Bilder



    Bildbeschreibung



    Code

    Inline Code mit code.


    public static void main(String[] args) {

    System.

    • 45 min

Mest populära podcaster inom Teknologi

Andra som lyssnade prenumererar på