IT-Berufe-Podcast Archiv
214 Episoden
34 Minuten
Einige Tipps zur Paketverwaltung unter Linux gibt es in der neunzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Nachdem ich SSH abgesichert habe, richte ich meinen Linux-Webserver mit hilfreichen Werkzeugen für die Kommandozeile ein und halte die Konfiguration mit Git fest. Du erfährst, wie du laufende Dienste und offene Ports prüfst, damit du überflüssige Pakete entfernen kannst. Mit regelmäßigen Updates schließt du bekannte Sicherheitslücken; ein nächtlicher Cronjob kann dich auf neue Paketversionen hinweisen. Kapitelmarken [00:00:00] Einführung in die Paketverwaltung auf dem eigenen Server [00:01:10] SSH vor weiteren Arbeiten absichern [00:02:30] Dateien mit wget herunterladen [00:03:38] Webseiten mit dem Textbrowser Lynx aufrufen [00:05:39] Dateien mit locate finden und den Index aktualisieren [00:08:10] DNS-Einträge mit dig prüfen [00:09:13] Konfigurationsdateien mit Git versionieren [00:10:10] Werkzeuge unter Debian installieren [00:10:28] Änderungen durch Paketupdates mit Git nachvollziehen [00:11:50] Das Verzeichnis /etc mit Git sichern [00:13:31] Überflüssige Dienste und Pakete entfernen [00:15:09] Dateien verschlüsselt mit SCP übertragen [00:16:14] Telnet und Samba auf dem Webserver prüfen [00:18:08] Offene Ports mit netstat untersuchen [00:19:02] Den eigenen Server mit Nmap scannen [00:20:46] Bekannte Ports und bewusst freigegebene Dienste [00:21:54] Laufende Prozesse mit ps prüfen [00:22:49] Grenzen der Prozessprüfung bei Rootkits [00:23:43] Prozesse mit kill beenden [00:24:55] Paketlisten und installierte Pakete aktualisieren [00:26:47] Sicherheitslücken durch regelmäßige Updates schließen [00:27:59] Nächtliche Updateprüfung und E-Mail-Benachrichtigung [00:28:36] Updates automatisieren und häufig durchführen [00:30:02] Ausblick auf die Firewall und weitere Serverthemen [00:31:16] Shownotes und Newsletter [00:32:07] Historische Hörbuchaktion und Checklisten zur Abschlussprüfung [00:32:53] Linux mit dem Kofler vertiefen Inhalt Hilfreiche Tools installieren wget: Download von Dateien über die Kommandozeile lynx: Browser für die Kommandozeile locate: Suchwerkzeug analog zu Everything (bereits erwähnt in Die hilfreichsten (Windows-)Tools für Softwareentwickler) dnsutils: enthält dig für DNS-Anfragen git: Versionsverwaltung (siehe Einführung in die Versionsverwaltung mit Git (Teil 1)) /etc versionieren! cd /etc && git init . && git add -A && git commit -m "Initial commit" Ungenutzte Pakete/Programme deinstallieren und Dienste ausschalten FTP, Telnet, Samba mit netstat oder nmap nach offenen Ports scannen mit ps -ef nach laufenden Prozessen suchen Pakete aktualisieren apt-get update && apt-get upgrade Literaturempfehlungen Wie schon in den letzten beiden Wochen ist die "Linux-Bibel" von Michael Kofler* mein einziger Literaturtipp. *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts vServer bei 1blu* Top 30 Nmap Command Examples For Sys/Network Admins Offene Ports und Anwendungen finden mit netstat, lsof und nmap 10 Linux DIG Command Examples for DNS Lookup apt-get(8) - Linux man page ps(1): report snapshot of current processes - Linux man page Zusammenfassung SSH zuerst absichern Ich beginne bei einem neuen Webserver mit SSH, bevor ich weitere Software installiere. Wenn dabei der Zugang verloren geht, lässt sich das System über das Backend des Hosters neu installieren, ohne dass bereits mehrere Stunden Arbeit in anderen Diensten stecken. Für meine weiteren Schritte funktioniert die Anmeldung mit einem Public Key, wobei SSH auf einem anderen Port als 22 läuft. Root werde ich nach der Anmeldung über su. Die SSH-Konfiguration kannst du mit einem vorhandenen Texteditor wie vi oder nano bearbeiten. Werkzeuge für die Kommandozeile installieren Auf meinem Linux-Server arbeite ich ausschließlich über die Kommandozeile. Dafür installiere ich folgende Pakete: wget: Mit wget URL lädst du eine Datei herunter, die anschließend lokal auf der Festplatte liegt. Webanwendungen wie WordPress lade ich als Quellcode herunter, damit ich selbst bestimmen kann, wie ich sie konfiguriere und aktualisiere. Lynx: Der Textbrowser erlaubt dir, direkt auf dem Server Webseiten aufzurufen oder den lokalen Webserver zu testen. Über Links kannst du auch Downloads starten. Wie gut sich eine Seite bedienen lässt, hängt unter anderem davon ab, ob sie barrierefrei aufgebaut ist. locate: Das Werkzeug findet Dateien anhand einer zuvor aufgebauten Datenbank. Mit updatedb erstellst beziehungsweise erneuerst du diesen Index. Wenn sich der Dateibestand verändert, muss die Datenbank erneut eingelesen werden. Dafür kannst du einen nächtlichen Cronjob einrichten oder den Befehl manuell ausführen. dnsutils: Unter Debian enthält dieses Paket das Werkzeug dig, mit dem du DNS-Einträge abfragen kannst, etwa MX-Records für Mailserver. Ich prüfe damit die DNS-Konfiguration meiner Domains und suche nach Fehlern. Git: Damit halte ich die Stände meiner Konfigurationsdateien lokal fest und kann später nachvollziehen, was sich geändert hat. Unter Debian installierst du diese Pakete mit einem Befehl: bash apt-get install wget lynx locate dnsutils git Die Konfiguration mit Git festhalten Bevor ich am System weiterarbeite, lege ich für /etc ein lokales Git-Repository an. Ein Remote-Repository ist dafür entbehrlich. Den ersten funktionsfähigen Stand hältst du so fest: bash cd /etc git init . git add -A git commit -m "Initial commit" Auch vor Paketupdates committe ich den aktuellen Stand. Pakete können beim Aktualisieren Konfigurationsdateien verändern, etwa weil neue Parameter hinzukommen oder bisherige Einstellungen angepasst werden. Mit git diff siehst du anschließend, welche Änderungen in deinen versionierten Dateien aufgetreten sind, und kannst entscheiden, welche du übernehmen möchtest. Falls beim Bearbeiten etwas schiefgeht, lassen sich ältere Stände wiederherstellen. Mit git checkout -- . kannst du Änderungen an bereits versionierten Dateien auf den zuletzt festgehaltenen Stand zurücksetzen. Überflüssige Dienste entfernen Je nach gewähltem Serverimage sind bereits Dienste installiert, die du für deinen Webserver gar nicht brauchst. Ich entferne solche Pakete, weil erreichbare Dienste zusätzliche Angriffsmöglichkeiten bieten. Prüfe insbesondere diese Pakete: FTP: Ein ungeschützter FTP-Server überträgt Daten unverschlüsselt. Wenn du einen öffentlichen FTP-Dienst betreiben möchtest, musst du ihn entsprechend absichern. Telnet: Die Shell-Verbindung läuft unverschlüsselt. Für den Zugang zu meinem Server verwende ich SSH. Samba: Damit lassen sich unter Linux Freigaben für ein Windows-Netzwerk bereitstellen. Auf meinem Webserver entferne ich Samba, sofern es dort keinen vorgesehenen Zweck erfüllt. Dateien übertrage ich per SCP über die vorhandene SSH-Verbindung. Unter Windows kannst du dafür beispielsweise WinSCP verwenden. Dabei stehen dir die Zugangsdaten beziehungsweise Schlüssel deines SSH-Zugangs zur Verfügung, während die Dateien verschlüsselt übertragen werden. Offene Ports und laufende Prozesse prüfen Mit netstat schaust du nach, welche Verbindungen bestehen und auf welchen Ports dein Server lauscht. Gehe die Liste durch und prüfe bei jedem Dienst, ob du ihn kennst und nach außen anbieten möchtest. Zu Beginn sollten der eingerichtete SSH-Zugang und die von dir ausdrücklich vorgesehenen Dienste erreichbar sein. Bekannte Beispiele sind HTTP auf Port 80 und SMTP auf Port 25. Für einen Portscan installiere ich bei Bedarf Nmap. Das Werkzeug kann deinen eigenen Server auf offene Ports prüfen und anhand der Antworten erkennen, welche Dienste dahinterstehen. Solche Prüfungen lassen sich auch später im laufenden Betrieb wiederholen. Mit ps -ef erhältst du eine Liste der laufenden Prozesse aller Benutzer:innen. Unbekannte Einträge solltest du untersuchen, wobei Linux selbst zahlreiche notwendige Systemprozesse ausführt. Auch vergessene Tests oder noch laufende Skripte können dabei auffallen. Zum Beenden eines Prozesses dient kill PID. Der Prozess erhält dabei zunächst die Aufforderung, sich zu beenden. Mit kill -9 PID erzwingst du sein Ende. Rootkits können sich vor Prozesslisten verstecken, sodass diese Prüfung allein keinen verlässlichen Nachweis für ein schadsoftwarefreies System liefert. Pakete regelmäßig aktualisieren Unter Debian führe ich die Befehle in dieser Reihenfolge aus: bash apt-get update apt-get upgrade apt-get update fragt die eingerichteten Paketquellen ab und speichert die verfügbaren Versionen in lokalen Paketlisten. Danach vergleicht apt-get upgrade diese Angaben mit den installierten Paketen und bietet neuere Versionen zum Installieren an. Updates enthalten unter anderem Sicherheitspatches. Bei einem direkt aus dem Internet erreichbaren Server können bekannte Lücken in veralteter Software für Angriffe ausgenutzt werden. Ich lasse deshalb mindestens einmal pro Nacht einen Cronjob nach neuen Paketversionen suchen. Wenn Updates verfügbar sind, bekomme ich eine E-Mail und führe das Upgrade anschließend selbst aus. Du kannst auch das Aktualisieren automatisieren. Durch häufige Updates bleiben Änderungen an der Konfiguration überschaubar und lassen sich zeitnah bearbeiten. Weiterführende Inhalte Als nächstes Thema habe ich die Firewall vorgesehen. Wenn du deinen eigenen Server administrierst, gehört auch dazu, dich tiefer mit Linux zu beschäftigen. Dafür empfehle ich den Kofler, die im Podcast als Linux-Bibel bezeichnete Fachlektüre. Die Shownotes stehen unter anwendungsentwicklerpodcast.de/90. Über meinen Newsletter erhältst du wöchentlich Informationen und Links, auch von meinen IT-Azubis, sowie kostenlose Checklisten für die Abschlussprüfung. Die erwähnte Aktion mit 20 Prozent Rabatt auf mein Hörbuch zum Fachgespräch bezog sich auf die Veröffentlichung am 30. Januar 2017 und die beiden folgenden Tage. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:00] Herzlich Willkommen zum Anwendungsentwickler-Pod
37 Minuten
Die Absicherung des eigenen Linux-Servers - im Speziellen des SSH-Zugangs - ist das Thema der neunundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Ich empfehle dir, deinen eigenen Server direkt nach dem Start abzusichern, weil automatisierte Angriffe öffentlich erreichbare Systeme laufend prüfen. Beginne beim SSH-Zugang: Verlege den Standardport und sperre die direkte Anmeldung als root. Für den SSH-Login richtest du anschließend Public-Key-Authentifizierung ein, wobei du deinen privaten Schlüssel sicher aufbewahrst und mit einem Passwort schützt. Für deine übrigen Zugänge helfen dir lange, unterschiedliche Passwörter, die du in einem Passwort-Safe wie KeePass speichern kannst. Kapitelmarken [00:00:00] Einstieg: Den eigenen Server absichern [00:01:12] Automatisierte Angriffe und Verantwortung für deinen Server [00:04:44] Überblick über die geplanten Schritte [00:07:17] Betriebssystem auswählen und Debian installieren [00:11:17] Erster SSH-Zugang und PuTTY unter Windows [00:14:55] SSH als Angriffsziel und die Rechte von root [00:15:48] SSH-Port verlegen und Security through Obscurity [00:18:20] Den SSH-Client anpassen und zusätzlicher Aufwand [00:20:04] Direkte Root-Anmeldung sperren [00:22:38] Administrative Befehle mit sudo ausführen [00:24:14] SSH-Schlüssel und lange Passwortsätze [00:28:01] Passwörter mit KeePass verwalten [00:29:41] Symmetrische und asymmetrische Kryptografie [00:31:02] Öffentlichen Schlüssel hinterlegen und privaten Schlüssel schützen [00:34:24] Empfohlene SSH-Einstellungen und weiterführende Anleitungen [00:36:25] Newsletter und Hinweis auf das Hörbuch Inhalt Betriebssystem installieren * SSH-Zugang absichern Port umlegen root-Zugang abschalten Pulic-Key-Authentifizierung einrichten Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts vServer bei 1blu* Secure Shell – Wikipedia Security through obscurity – Wikipedia Absicherung eines Debian Servers – Thomas-Krenn-Wiki Root Server absichern (Ubuntu 14.04) – Rechenkraft (Virtual)Server gegen Hacking-Attacken schützen Teil 2: Den Server absichern - Pro-Linux KeePass Password Safe KeeFox :: Add-ons für Firefox Using PuTTYgen :: WinSCP Remote Desktop Protocol – Wikipedia Zusammenfassung Warum du deinen Server sofort absichern solltest Sobald dein Server im Internet erreichbar ist, können automatisierte Skripte nach offenen Diensten suchen und versuchen, sich anzumelden. Ein übernommener Server lässt sich etwa in ein Botnetz einbinden, über das Angreifer:innen weitere Ziele attackieren. Über die IP-Adresse führen solche Aktivitäten zu deinem Anschluss beziehungsweise deinem Server zurück. Als Betreiber:in trägst du Verantwortung dafür, deinen Server abzusichern. Ich beginne dafür beim SSH-Zugang, über den du deinen Server aus der Ferne verwaltest. Wer hier Zugriff mit Root-Rechten erhält, kann das gesamte System verändern oder löschen. Betriebssystem auswählen und installieren Bei einem V-Server wählst du das Betriebssystem üblicherweise über die Weboberfläche deines Hosting-Anbieters aus. Für den Einstieg empfehle ich Debian, mit dem ich seit vielen Jahren auf meinem eigenen Server arbeite. Es eignet sich für einen schlanken Server, den du über die Kommandozeile bedienst. Die folgenden Hinweise beziehen sich auf Debian; grundlegende Konzepte wie Dateirechte gelten auch bei anderen Linux-Distributionen. Achte beim Installieren auf die Hinweise im Backend: Wenn du einen vorhandenen Server neu aufsetzt, können dessen bisherige Inhalte gelöscht werden. Nach dem Installieren erhältst du die Zugangsdaten, darunter üblicherweise ein Root-Passwort. Mit SSH auf den Server zugreifen Über SSH, die Secure Shell, öffnest du eine entfernte Kommandozeile. Deine eingegebenen Befehle laufen auf dem Server, während die Ergebnisse auf deinem Rechner erscheinen. SSH verschlüsselt die übertragenen Daten einschließlich der Zugangsdaten und arbeitet standardmäßig auf Port 22. Unter Windows empfehle ich den kostenlosen SSH-Client PuTTY. Darin kannst du Verbindungsprofile speichern und den verwendeten Port einstellen. Auf einem Linux-Rechner steht üblicherweise bereits ein SSH-Client für die Kommandozeile bereit. Für deine Prüfung als Fachinformatiker:in Anwendungsentwicklung solltest du den SSH-Standardport kennen. Ebenfalls erwähnt wird RDP auf Port 3389, über das du eine grafische Sitzung auf einem entfernten Windows-System öffnen kannst. Den SSH-Port verlegen Viele automatisierte Angriffe suchen auf Port 22 nach einem SSH-Dienst. Wenn du SSH auf einen anderen Port legst, laufen diese Standardversuche ins Leere. Anschließend musst du den neuen Port auch in PuTTY oder deinem anderen SSH-Client eintragen. Ein gespeichertes Profil erleichtert dir spätere Verbindungen. Dieses Vorgehen heißt Security through Obscurity, weil du den Dienst an einer weniger erwarteten Stelle erreichbar machst. Bei einem gezielten Angriff kann ein Portscan den verlegten Dienst weiterhin finden. Deshalb gehört das Verlegen des Ports zu mehreren Schritten, mit denen du SSH absicherst. Die direkte Root-Anmeldung sperren Das Linux-Konto root besitzt umfassende Rechte. Richte SSH deshalb so ein, dass du dich zunächst mit einem normalen Benutzerkonto anmeldest. Wenn du anschließend Root-Rechte brauchst, kannst du mit su das Konto wechseln und dafür das separate Root-Passwort eingeben. Vergib für dein Benutzerkonto und für root jeweils ein eigenes Passwort. Sollte jemand dein Benutzerpasswort erbeuten, verfügt diese Person zunächst über die Rechte dieses Kontos. Dazu kann auch gehören, deine Dateien zu lesen. Für die tägliche Arbeit empfehle ich ein normales Benutzerkonto. Mit sudo kannst du gezielt einzelne administrative Befehle mit erhöhten Rechten ausführen. Welche Benutzerkonten welche Befehle ausführen dürfen und ob dafür ein Passwort erforderlich ist, lässt sich konfigurieren. Für die ersten Schritte gehe ich hier vereinfacht davon aus, dass du administrative Arbeiten als root erledigst. SSH mit einem Schlüsselpaar einrichten Für deinen SSH-Login empfehle ich Public-Key-Authentifizierung. Dafür erzeugst du ein zusammengehöriges Paar aus einem öffentlichen und einem privaten Schlüssel: Den Public Key hinterlegst du auf dem Server. Diesen öffentlichen Schlüssel darfst du weitergeben. Den Private Key behältst du unter deiner Kontrolle und hinterlegst ihn in deinem SSH-Client, etwa PuTTY. Bewahre die Datei sicher auf und schütze sie zusätzlich mit einem Passwort. Für den Zugang muss der passende private Schlüssel vorhanden sein. Der zusätzliche Passwortschutz schützt die Schlüsseldatei auch dann, wenn beispielsweise der USB-Stick mit der Datei gestohlen wird. Richte SSH entsprechend für die Anmeldung per Schlüssel ein und schalte den Passwort-Login ab. Zum prüfungsrelevanten Hintergrund gehört, dass symmetrische Verfahren zum Ver- und Entschlüsseln denselben Schlüssel verwenden. Bei asymmetrischen Verfahren gehören ein öffentlicher und ein privater Schlüssel zusammen. Was mit dem öffentlichen Schlüssel verschlüsselt wurde, lässt sich mit dem zugehörigen privaten Schlüssel entschlüsseln. Für die Prüfung solltest du dich weitergehend mit diesen Verfahren beschäftigen. Lange und unterschiedliche Passwörter verwalten Für Passwörter empfehle ich deutlich mehr als zwölf Zeichen, beispielsweise etwa 20 Zeichen. Ein selbst gewählter Passwortsatz lässt sich gut merken. Achte dabei auf Groß- und Kleinschreibung sowie Satzzeichen und darauf, dass sich der Satz durch Wörterbuchangriffe schwer erraten lässt. Jeder Zugang braucht ein eigenes Passwort. Wenn ein mehrfach verwendetes Passwort bekannt wird, sind auch weitere Konten gefährdet. Ich verwende KeePass, um für jeden Zugang ein langes, zufällig erzeugtes Passwort zu speichern. Die Passwortdatenbank ist ihrerseits mit einem sicheren Passwort geschützt, das ich mir merke. Über ein passendes Browser-Plugin lassen sich die gespeicherten Zugangsdaten in Login-Felder übertragen. Weitere angekündigte Schritte Für die weiteren Teile der Reihe habe ich folgende Themen vorgesehen: Hilfreiche Werkzeuge installieren, die dir das Arbeiten auf dem Server erleichtern. Das Verzeichnis /etc versionieren, damit du geänderte Einstellungen nachvollziehen und frühere Stände wiederherstellen kannst. Überflüssige Programme und Dienste entfernen, um mögliche Angriffsziele zu reduzieren. Installierte Pakete aktualisieren und Sicherheitsupdates zeitnah einspielen. Die Firewall restriktiv einrichten, damit ausschließlich die vorgesehenen Dienste erreichbar sind. Die Shell über .bashrc und den Editor passend einstellen. Backups einrichten, aus denen du deinen Server wiederherstellen kannst. Dabei gehört der Unterschied zwischen Datensicherheit und Datensicherung auch zu möglichen Prüfungsfragen. Extern überwachen lassen, ob der Server erreichbar ist, sofern dein Hosting-Anbieter das anbietet. Bei einem Ausfall kannst du beispielsweise per E-Mail informiert werden. Schritt-für-Schritt-Anleitungen zum Verlegen des SSH-Ports und zum Einrichten der Schlüssel findest du in meinen Shownotes zur Episode 89. Dort sind auch Hinweise zum Erzeugen des Schlüsselpaars und zum Einrichten von PuTTY verlinkt. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:00] Herzlich Willkommen zum Anwendungsentwickler-Podcast, dem Podcast rund um die Ausbildung zum Fachinformatiker [0:09] für Anwendungsentwicklung. In dieser Episode geht es um die erste Absicherung deines eigenen [0:15] Webservers. Viel Spaß! [0:16] Hallo und herzlich Willkommen zur 89. Episode des Anwendungsentwickler-Podcasts. Mein Name [0:27] ist Stefan Macke und heute geht es weiter mit einer kleinen Episodenreihe zur Einrichtung [0:32] deines eigenen Webservers. Ich sage immer Webserver, aber du kannst mit dem Server natürlich [0:37] auch irgendwas anderes machen, Mail-Server und wie auch immer. Es geht mir eigentlich [0:39] um einen Server, der im Internet irgendwo steht und mit dem du irgendwelche Dinge tun [0:43] kannst....
44 Minuten
Warum es schon für Auszubildende sinnvoll ist, einen eigenen (Web-)Server zu betreiben, erkläre ich in der achtundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Ich empfehle dir als IT-Azubi einen eigenen Linux-Server, mit dem du prüfungsrelevante Themen praktisch lernst und deine eigenen Anwendungen veröffentlichst. Darauf lassen sich auch E-Mails, private Repositories und eine eigene Cloud betreiben, deren Daten du selbst verwaltest. Die genannten Linux-V-Server beginnen bei etwa 5 Euro im Monat; für den Einstieg reichen überschaubare Ressourcen. Plane Zeit ein, um dich einzuarbeiten, und kümmere dich um sichere Zugänge sowie regelmäßige Backups. Wenn du Linux erst kennenlernst, kannst du die Schritte zunächst in einer lokalen VM ausprobieren und wiederkehrende Aufgaben später mit Skripten automatisieren. Kapitelmarken [00:00:00] Eigener Webserver als Thema [00:03:10] Praktisch lernen mit einem eigenen Server [00:05:36] Eigene Dienste und selbst verwaltete Daten [00:08:07] E-Mail-Adresse unter deiner eigenen Domain [00:09:15] Websites und weitere Dienste auf deinem Server [00:10:13] Eigener Mailserver und private Repositories [00:11:12] ownCloud für Dateien und Kalender [00:11:52] Build-Server und Firefox-Sync [00:13:03] Kosten und Anbieter für den Einstieg [00:16:46] Passende Leistung und Speicherplatz [00:18:47] Verantwortung für einen öffentlich erreichbaren Server [00:20:29] Domain-Daten und rechtliche Pflichten [00:24:22] Backups selbst einrichten [00:25:41] Zeitaufwand und Managed Server [00:27:10] Debian installieren und sichere Zugänge vorbereiten [00:28:13] Zuerst in einer lokalen VM üben [00:29:23] Wiederkehrende Aufgaben mit Skripten automatisieren [00:30:51] Eine passende Domain auswählen [00:33:34] Freie Domains mit Variomedia prüfen [00:34:41] Fantasienamen und Zugang ohne eigene Domain [00:36:13] Rückblick auf Kosten und laufende Aufgaben [00:39:31] Eigene Websites teilen und verlinken lassen [00:40:01] Shownotes und Literatur für Linux [00:40:56] Weitere Hosting-Angebote und Domain-Prüfwerkzeug [00:42:07] Newsletter und Fachartikel der IT-Azubis [00:43:44] Ausblick auf technische Folgen Inhalt Warum sollte ich mir überhaupt einen Server aufsetzen? Besser kann man den professionellen Umgang mit Infrastruktur nicht lernen. Keine Abhängigkeiten von Dienstanbietern. Freiheit bei der Auswahl der Dienste. Plattform für eigene Projekte. Daten liegen in der eigenen Hoheit. Weil es Spaß macht. Weil es cool ist, eine eigene Domain (z.B. für E-Mail-Adressen) zu haben. Was könnte ich mit einem eigenen Server machen? Webserver Website, Blog, Wiki, RSS-Reader Mailserver Git-Repositorys OwnCloud Build-Server Application Server Firefox-Sync-Server Was kostet das? Je nach Anbieter und Leistung ab 5 Euro im Monat für einen vServer auf Linux. Windows kostet deutlich mehr, da Lizenzen fällig werden. .de-Domains gibt es ab ca. 0,50 EUR pro Monat. Ich empfehle 1blu*. Welche Leistung brauche ich? Hängt vom Betriebssystem ab. Linux benötigt nur wenige Ressourcen (falls keine grafische Oberfläche gewünscht ist). 2 CPU-Kerne, 2 GB RAM, 500 GB Festplatte reichen schon. Mehr Leistung ist natürlich immer besser. Heute gibt es schon günstige Server mit SSDs und mehreren GB RAM. Welche (rechtlichen) Konsequenzen gibt es? Dein Name mit Anschrift steht im Impressum bzw. bei der DENIC. Du musst dich an den rechtlichen Rahmen halten und ggfs. Impressum und Datenschutzerklärung erstellen. Wenn dein Server missbraucht wird, bist du dafür haftbar. Du bist für alles selbst verantwortlich: Backups, Sicherheit usw. Mit welchem Aufwand ist zu rechnen? Übliche Administration: Installation, Konfiguration, Backup, Patching, Updates einspielen, evtl. Migration auf neuen Server. Automatisierung ist in vielen Bereichen möglich und absolut sinnvoll. Spart viel Zeit und Nerven. Aber muss erstmal eingerichtet/gescriptet werden. Welche Domain sollte ich registrieren? Kommt auf deine Ziele an. Willst du z.B. deinen Namen bekannt machen oder dich anonym bewegen? Empfehlung: Domainüberprüfung bei variomedia.de. Dort gibt es viele und auch "neue" TLDs zum Prüfen auf Verfügbarkeit und registrieren. Literaturempfehlungen Wer in Linux einsteigen will, der kommt um die "Linux-Bibel" von Michael Kofler* nicht herum. Es lässt eigentlich keine Wünsche offen :-) *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts vServer bei 1blu* Das Impressum – Rechtsbelehrung Folge 3 (Jura-Podcast mit der neuen Bildersuche, Likes und der Impressumspflicht) Die Datenschutzerklärung – Rechtsbelehrung Folge 4 (Jura-Podcast) Zusammenfassung Was du mit einem eigenen Server lernst Ich unterstütze meine IT-Azubis dabei, eigene Server aufzusetzen. Wenn du selbst einen Server betreibst, beschäftigst du dich praktisch mit Linux und lernst, wie du Dienste sicher einrichtest. Dazu gehören auch DNS und die Frage, wie deine Domain auf die IP-Adresse deines Servers zeigt. Solche Themen begegnen dir als Fachinformatiker:in Anwendungsentwicklung auch in der Prüfung. Ein eigenes Projekt gibt dir ein konkretes Ziel beim Lernen. Sobald dein Server im Internet erreichbar ist, übernimmst du Verantwortung für ihn und musst dich mit möglichen Angriffen beschäftigen. Dabei lernst du beispielsweise, eine Firewall einzurichten und Daten aus einem Backup wiederherzustellen. Auf deinem Server kannst du selbst entscheiden, welche Software läuft. Auch eigene Programme lassen sich dort veröffentlichen. Deine Daten verwaltest du selbst, während du Dienste einrichtest, für die du bisher externe Anbieter:innen herangezogen hast. Ich betreibe unter anderem meine E-Mails und meine Kalender auf meiner eigenen Infrastruktur. Welche Dienste du betreiben kannst Websites und Webanwendungen: Du kannst deinen Blog oder ein Wiki veröffentlichen. Mit Tiny Tiny RSS liest du deine RSS-Feeds online. Auch eigene Webprojekte finden dort einen Platz. E-Mail: Mit Postfix und einem IMAP-Server richtest du eigene Postfächer ein. Du kümmerst dich dabei auch um verschlüsselte Zugänge. Repositories: GitLab ermöglicht dir private und öffentliche Git-Repositories, bei denen du anderen Personen gezielt Rechte gibst. Auch Subversion kommt infrage. Eigene Cloud: Mit ownCloud synchronisierst du Dateien zwischen deinen Geräten. Zusätzlich lassen sich Kontakte und Kalender einbinden. Ich synchronisiere darüber auch Daten mit meinem Android-Handy. Dienste für deine Softwareprojekte: Ein Application-Server führt deine Anwendungen aus. Mit Jenkins kannst du Projekte automatisch bauen und deployen lassen. Firefox-Sync: Ein eigener Sync-Server gleicht beispielsweise deine Lesezeichen zwischen verschiedenen Geräten ab. Eine E-Mail-Adresse unter deiner eigenen Domain kannst du langfristig behalten, auch wenn du den Anbieter wechselst. Dafür brauchst du bereits eine eigene Domain, während ein selbst betriebener Server eine zusätzliche Möglichkeit ist. Welche Kosten ich als Beispiele nenne Für einen Linux-V-Server nenne ich etwa 5 Euro pro Monat als Einstieg. Mit rund 10 Euro monatlich lässt sich auch etwas mehr Leistung einplanen. Bei Windows-Servern kommen Lizenzkosten hinzu; mein genanntes günstiges Beispiel liegt bei etwa 15 Euro monatlich. Für kleine V-Server empfehle ich aus meiner Erfahrung EinsBlue. Das vorgestellte Angebot kostet in den ersten sechs Monaten jeweils 1 Euro, anschließend 7,90 Euro monatlich. Daraus ergeben sich ungefähr 55 Euro für das erste Jahr. Eine .de-Domain und ein SSL-Zertifikat sind in diesem Beispiel enthalten. Nach dem ersten Jahr gelten die höheren monatlichen Kosten. Eine zusätzliche .de-Domain veranschlage ich mit ungefähr 50 Cent pro Monat. Die Angebote ändern sich, weshalb du beim Anbieter nach den jeweiligen Preisen und Leistungen schauen solltest. Meinen eigenen dedizierten Server betreibe ich bei Hetzner, weil ich dort ein eigenes Stück Hardware im Rechenzentrum bekomme, das zu meinen Anforderungen passt. Wie viel Leistung du brauchst Als grobe Richtwerte für kleinere Dienste nenne ich: etwa zwei CPU-Kerne, wobei auch ein Kern reichen kann, 2 GB RAM, ungefähr 500 GB Speicherplatz. Der benötigte Speicher hängt davon ab, welche Daten du ablegen möchtest. Eine SSD kommt infrage, wenn dir schnelle Zugriffe wichtig sind und du mit weniger Speicherplatz auskommst. Für umfangreichere Java-Anwendungen mit einer Jenkins-Pipeline kann später ein größeres Serverpaket erforderlich werden. Welche Verantwortung du übernimmst Du bist als Betreiber:in dafür verantwortlich, deinen Server abzusichern und dich darum zu kümmern, was darüber geschieht. Dazu gehört, mögliche Angriffe und einen Missbrauch des Servers im Blick zu behalten. Bei den rechtlichen Fragen spreche ich die Angaben an, die du für eine Domain hinterlegen musst, sowie deren beschriebene öffentliche Sichtbarkeit bei der DENIC. Außerdem geht es um Impressum und Datenschutzerklärung. Ich gehe zunächst von einer kleinen privaten Website oder einem eigenen Mailserver aus. Sobald du beispielsweise Affiliate-Links einbindest, Spenden sammelst oder Dienste für andere Personen anbietest, musst du dich mit weiteren Pflichten beschäftigen. Auch ein Gewerbe kann dann zum Thema werden. Ich gebe dazu keine Rechtsberatung. In den Shownotes verweise ich auf Folgen des Podcasts Rechtsbelehrung mit Rechtsanwalt Dr. Schwenke, die sich mit Impressum und Datenschutzerklärung beschäftigen. Für deine Backups bist du ebenfalls selbst zuständig. Anbieter stellen dafür häufig einen separaten Backup-Server bereit, den du etwa über SSH oder FTP erreichst. Du musst die regelmäßigen Backups selbst einrichten, damit du deine Daten nach einem Ausfall wiederherstellen kannst. Wie du einsteigst und den Aufwand begrenzt Ich empfehle Debian Linux. Bei einem Anbieter lässt sich das Betriebssystem häufig über dessen Verwaltungsoberfläche installieren. Danach folgen sichere SSH-Zugänge mit Schlüsseln und eine Firewall. Wenn du Linux erst kennenlernst,...
43 Minuten
Wie könnte eine moderne Abschlusspräsentation aussehen? Das diskutiere ich in der siebenundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Bei meinen Projektpräsentationen setze ich auf Bilder und einen persönlichen Stil, damit die fachlichen Inhalte verständlich ankommen. Für deine Abschlussprüfung eignen sich anschauliche Geschichten aus dem Projekt und passender Humor, wenn du dich damit wohlfühlst und diese Art zu präsentieren bereits geübt hast. Wähle ein Medium, das du beherrschst, und halte dich an die Vorgaben deiner IHK. Kapitelmarken [00:00:01] Moderne Projektpräsentationen [00:01:23] Anlass: Diskussion über die Foliengestaltung [00:02:05] Eigene Erfahrungen und Vorgaben der IHK [00:04:42] Mythen der Projektpräsentation [00:05:10] Fortschrittsbalken und Corporate Design [00:06:58] Erwartungen und Offenheit der Prüfer:innen [00:09:32] Entscheidungen begründen und den Vortrag strukturieren [00:11:01] Aufmerksamkeit und Emotionen im Prüfungsvortrag [00:13:32] Fachliche Inhalte und passende Bilder [00:15:40] Den eigenen Präsentationsstil wählen [00:17:54] Medium und Werkzeug sicher beherrschen [00:19:32] IHK-Vorgaben und Hinweise aus der Berufsschule [00:21:31] Mit einer Projektgeschichte einsteigen [00:24:57] Das Ende der Präsentation gestalten [00:26:02] Passenden Humor einsetzen [00:28:28] Technische Inhalte visuell darstellen [00:30:06] Eigene Fotos für einen persönlichen Bezug [00:33:34] Individuelle Agenda und Zwischenfolien [00:35:19] Persönliche Fotos und Geschichten aus dem Projekt [00:37:29] Gestaltungsspielraum und verbindliche Vorgaben [00:39:15] Presentation Zen und weitere Materialien [00:40:43] Buchprojekt und Newsletter [00:42:37] Ausblick auf weitere Angebote zur Prüfungsvorbereitung Inhalt Die guten alten Mythen der Projektpräsentation. Fortschrittsbalken, Corporate Design und Seitenzahlen sollten in Zeiten von Presentation Zen* als überholt gelten und Relikte der Vergangenheit sein. Die Mär von den "alteingesessenen" Prüfern. Es ist immer wieder spannend zu hören, wie viele "alte" (und damit meine ich nicht das Alter, sondern die Einstellung) Prüfer es angeblich in den IT-Berufen gibt. "Das haben wir schon immer so gemacht!" Nur als Begründung für wichtige Entscheidungen im Projekt lassen wir das nicht gelten... Prüfer sind auch nur Menschen (die unterhalten werden wollen). Die Projektpräsentation ist kein Zirkus. Es geht mir nicht darum, Witzigkeit und Oberflächlichkeit zu fordern. Ich möchte die Inhalte des Projekts bestmöglich transportiert bekommen. Der Stil muss zu dir passen. Verstell dich nicht für die Projektpräsentation. Das bezieht sich allerdings auch auf die "alte" Art zu präsentieren. Du darfst dich auch einmal etwas trauen. Wähle das beste Medium. Es geht immer um den Inhalt! Die Folien sind nur Beiwerk. Weder PowerPoint noch Prezi (noch Tool X) führen automatisch zu guten Präsentationen. Aber genauso wenig zu schlechten. Halte formale Vorgaben deiner IHK ein. Wenn du ein wenig recherchierst, wirst du wahrscheinlich feststellen, dass es nur wenige "harte" Vorgaben gibt. Frag deine Lehrer, wenn du keine Vorgaben findest. Oder ignoriere alles und mach dein eigenes Ding! Überrasche die Prüfer. Wähle einen spannenden/ungewohnten Einstieg in die Präsentation. Verzichte auf die üblichen Floskeln wie "Vielen Dank für die Aufmerksamkeit.". Setze gezielt Humor ein. Aber bitte mit Bedacht und ein wenig Intelligenz. Präsentiere visuell und nicht textuell. Wenn du ein wenig nachdenkst und experimentierst, wirst du fast alle deine Inhalte visuell darstellen und auf Text fast vollständig verzichten können. Gib deiner Präsentation eine persönliche Note. Verwende eigene Bilder anstatt Stock-Fotos. Mit den Handys von heute ist das kein Problem mehr. Alternativ verwendest du eine vernünftige Kamera*. Gestalte deine Agenda oder sogar alle Folien mit Bezug zu deinem Projekt. Zeige ein Foto von dir selbst. Baue sinnvolle Geschichten zum Projekt in deine Präsentation ein. Literaturempfehlungen Wie immer, wenn es um die Abschlusspräsentation geht, kann ich nur wärmstens die Lektüre von Presentation Zen* empfehlen. Niemand will mehr langweilige Textwüsten sehen! * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Mythen der Projektpräsentation (Blog-Artikelreihe) Ansprechende Gestaltung der Projektpräsentation – Anwendungsentwickler-Podcast #62 Präsentation - Abschlussprojekte (Fachinformatiker.de) Einsatz von Prezi für die Projektpräsentation Weitere Infos zur ProjektpräsentationDu suchst noch mehr Tipps rund um die Projektpräsentation? Dann schau doch mal in diese Artikel- und Podcast-Kategorie: Alle Artikel rund um die Projektpräsentation.Und wenn du dich für meinen Newsletter einträgst, kannst du dir jetzt sofort meine Checkliste für die Projektpräsentation herunterladen.Jetzt anmelden! Zusammenfassung Was bei deiner Projektpräsentation zählt Aus meiner Praxis als Ausbilder und Prüfer stammen die folgenden Empfehlungen für deine Abschlussprüfung als Fachinformatiker:in Anwendungsentwicklung. Meine eigenen IT-Azubis präsentieren nach diesem Ansatz; zwei ihrer Präsentationen wurden zum Zeitpunkt der Aufnahme mit 100 Prozent bewertet. Welche Anforderungen für dich gelten, erfährst du bei deiner IHK und deinem Prüfungsausschuss. Bei der Bewertung haben die fachlichen Inhalte das größte Gewicht. Dein Projekt muss vollständig und korrekt nachvollziehbar werden, wobei auch deine Methodik erkennbar sein soll. Wie du etwas zeigst, richtet sich danach, wie die Prüfer:innen den jeweiligen Inhalt am besten verstehen können. Vorgaben vorab klären Erkundige dich vor dem Gestalten deiner Präsentation nach den Regeln deiner IHK. Viele IHKs lassen bei den Folien mehr Freiraum als bei der Projektdokumentation, für die etwa Schriftgrößen und Zeilenabstände vorgegeben werden. Verbindliche Vorlagen oder konkrete Anforderungen hältst du ein. Bei offenen Fragen kannst du deine Berufsschullehrer:innen ansprechen. Im Prüfungsausschuss sind Berufsschullehrer:innen vertreten, sodass du dort Hinweise zu den Erwartungen deines Ausschusses bekommen kannst. Wer von verbindlichen Vorgaben abweicht, trägt das Risiko für die eigene Note. Dazu rate ich dir ausdrücklich nicht. Platz für deine Inhalte schaffen Auf meinen Folien verzichte ich auf eine ständig eingeblendete Agenda und Fortschrittsbalken. Solche Elemente beanspruchen Fläche, während ihre kleine Schrift oft schwer lesbar ist. Auch ein Firmenlogo auf jeder Folie lenkt Aufmerksamkeit vom Projektinhalt ab. Sofern deine Vorgaben dir diesen Freiraum lassen, kannst du wiederkehrende Gestaltungselemente weglassen: Firmenlogos lassen sich auf der Startfolie oder am Ende platzieren. Foliennummern haben für meinen Ausschuss keinen entscheidenden Wert, wenn die Inhalte verständlich und fachlich richtig ankommen. Zwischenfolien mit einer Agenda zeigen den roten Faden und den aktuellen Projektabschnitt. Große Grafiken bekommen genügend Platz, damit die Prüfer:innen Details erkennen können. Eine passende Begrüßung und ein sinnvoller Einstieg gehören weiterhin zum Vortrag. Durch die Agenda und nachvollziehbare Übergänge bleibt erkennbar, wie dein Projekt aufgebaut ist. Prüfer:innen ansprechen In den Ausschüssen, die ich kenne, engagieren sich Praktiker:innen und Lehrer:innen ehrenamtlich. Sie möchten junge Menschen fördern und bleiben fachlich auf dem Laufenden. Bei Projekten erwarten sie begründete Entscheidungen: Dass ein Unternehmen beispielsweise immer Java verwendet, reicht als fachliche Begründung allein nicht aus. Auch bei der Präsentation gehört für mich dazu, durchdacht vorzugehen. Nach mehreren Vorträgen an einem Prüfungstag kann eine ansprechende Präsentation Aufmerksamkeit wecken. Die Prüfer:innen müssen jede Leistung objektiv bewerten, während Bilder oder eine direkte Ansprache den Vortrag angenehmer machen können. Sachliche Projektinhalte lassen sich mit Emotionen und dosiertem Humor vermitteln. Ein Yoda-Bild eignet sich beispielsweise, um eine:n erfahrene:n Entwickler:in darzustellen, mit dem oder der du ein Code-Review durchgeführt hast. Voraussetzung ist, dass das Bild zum Inhalt passt und die Anspielung für dein Publikum verständlich ist. Bei Memes oder Jugendsprachwitz besteht das Risiko, dass die Prüfer:innen den Bezug nicht verstehen. Selbstironie über einen umständlichen Papierprozess im eigenen Unternehmen bietet einen nachvollziehbaren Anlass für Humor. Deinen Stil und dein Werkzeug beherrschen Wähle eine Art zu präsentieren, mit der du dich wohlfühlst und die du bereits geübt hast. Wenn du zurückhaltend auftrittst, darf dein Vortrag dazu passen. Ein ungewohnter Stil, den du erstmals für die Abschlussprüfung ausprobierst, erschwert es dir, bei Problemen sicher zu reagieren. Für dein Werkzeug gilt dasselbe. PowerPoint kommt ebenso infrage wie Prezi oder Reveal.js. Auch Live-Coding, ein Flipchart und ausgedruckte Codeausschnitte sind mögliche Formen. Entscheidend ist, ob das Medium zu deinen Inhalten passt und du bei technischen Schwierigkeiten damit umgehen kannst. Einstieg und Ende bewusst gestalten Mit einer kurzen Geschichte über das Ausgangsproblem kannst du direkt ins Projekt einführen. Beschreibe beispielsweise, wie im Unternehmen große Excel-Tabellen ausgedruckt und von Hand bearbeitet wurden und welche Webanwendung du dafür entwickelt hast. Darin lassen sich das Projektziel und der Umfang bereits vermitteln. Anschließend stellst du dich und dein Unternehmen vor. Für die ersten 30 Sekunden verweise ich auf eine Untersuchung, nach der Zuhörer:innen früh entscheiden, ob sie einem Vortrag weiter folgen möchten. In der Bewertungsmatrix meines Ausschusses wird ein sinnvoller Einstieg verlangt; dessen konkrete Form kannst du gestalten. Auch für die letzte Folie eignet sich ein Bild mit Bezug zum Projekt. Die Einladung zu Fragen kannst du mündlich aussprechen. Anfang und Ende bleiben besonders in Erinnerung. Technische Inhalte anschaulich zeigen ...
36 Minuten
Wir beenden das ISO/OSI-Modell mit den letzten drei Schichten in der sechsundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Ich gehe mit dir die anwendungsorientierten Schichten 5 bis 7 des ISO-OSI-Modells durch und ordne bekannte Netzwerkprotokolle ein. Die Sitzungsschicht verbindet zusammengehörige Anfragen und Antworten zu einem Dialog, während die Darstellungsschicht dafür sorgt, dass beteiligte Systeme die übertragenen Daten verstehen. Auf der Anwendungsschicht erhalten Daten und Befehle ihre Bedeutung für das jeweilige Protokoll. Anhand einer E-Mail lässt sich nachvollziehen, wie alle sieben Schichten zusammenarbeiten und welche Aufgaben sie beim Übertragen übernehmen. Kapitelmarken [00:00:00] Begrüßung und Abschluss der Reihe zum ISO-OSI-Modell [00:01:48] Transportorientierte und anwendungsorientierte Schichten [00:03:12] Schicht 5: Sitzungsschicht und zusammengehörige Anfragen [00:05:20] Warenkorb als Beispiel und Websessions auf Anwendungsebene [00:06:38] Wiederaufsetzpunkte bei unterbrochenen Verbindungen [00:07:36] Schichtübergreifende Komponenten und RPC [00:09:02] Schicht 6: Darstellungsschicht und Syntax der Daten [00:10:59] Zeichenkodierung, Verschlüsseln und Komprimieren [00:13:31] Zeilenenden zwischen Windows und Linux [00:14:18] Datenstrukturen mit ASN.1 beschreiben [00:16:12] Schicht 7: Anwendungsschicht als Einstiegspunkt für Programme [00:18:10] Semantik und Bedeutung von Befehlen [00:19:27] Firewalls auf Anwendungsebene [00:20:41] Proxyserver: Stellvertreter, Cache und Inhaltsfilter [00:22:17] Anfragen mit einem Loadbalancer verteilen [00:23:14] Gateways zwischen unterschiedlichen Technologien [00:25:21] Bekannte Protokolle auf Anwendungsebene [00:26:52] Rückblick auf die Schichten 5 bis 7 [00:29:36] Eine E-Mail durch alle sieben OSI-Schichten [00:32:31] Prüfungswissen und Fehlersuche in der Praxis [00:33:49] Feedback, Begleitmaterial und Podcastpause Inhalt 5: Sitzungsschicht (Session Layer) Wie wird eine dauerhafte Kommunikation von Netzwerkteilnehmern aus unterschiedlichen Anfragen und Antworten (Dialog) ermöglicht? Einheit: Daten Zusätzliche Informationen: Zuordnung von Anfragen und Antworten zueinander, Wiederaufsetzpunkte bei Ausfall der Kommunikation Hardware: siehe Anwendungsschicht Protokolle: RPC, siehe Anwendungsschicht 6: Darstellungsschicht (Presentation Layer) Wie können Daten unabhängig von der konkreten Repräsentation auf den beteiligten Systemen verständlich ausgetauscht werden? Einheit: Daten Zusätzliche Informationen: Syntax der Daten, Encoding, Verschlüsselung, Kompression Hardware: siehe Anwendungsschicht Protokolle: ASN.1, siehe Anwendungsschicht 7: Anwendungsschicht (Application Layer) Wie können anwendungsspezifische Daten und Befehle ein- und ausgegeben werden? Einheit: Daten Zusätzliche Informationen: Semantik der Daten Hardware: Gateway, Load Balancer, Proxy, Firewall Protokolle: HTTP, FTP, SMTP Literaturempfehlungen * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts OSI-Modell Das OSI-Referenzmodell Zusammenfassung Die oberen Schichten des ISO-OSI-Modells Zum Abschluss meiner Reihe zum ISO-OSI-Modell gehe ich mit dir die anwendungsorientierten Schichten 5 bis 7 durch. Als IT-Azubi zum/zur Fachinformatiker:in Anwendungsentwicklung brauchst du dieses Wissen für die Prüfung und für die Fehlersuche im Alltag. Die Schichten 1 bis 4 übernehmen den Transport. Darauf bauen die oberen Schichten auf, deren übertragene Einheit jeweils Daten heißt. Protokolle und Netzwerkkomponenten können Aufgaben auf mehreren dieser oberen Schichten übernehmen, weshalb sich ihre Funktionen teilweise über die Schichtgrenzen erstrecken. Schicht 5: Sitzungsschicht, Session Layer Wenn mehrere Anfragen zusammengehören, muss die Kommunikation ihren Zusammenhang erhalten. Die Sitzungsschicht ordnet Anfragen und Antworten einander zu, sodass zwischen den beteiligten Systemen ein Dialog entsteht. Dabei greift sie auf die Dienste der Transportschicht zurück. Über Wiederaufsetzpunkte lässt sich eine unterbrochene Kommunikation fortführen. Wird beispielsweise eine große Datei übertragen und die Verbindung bricht nach einem bereits übertragenen Teil ab, kann der Austausch an einer passenden Stelle weitergehen. Am Warenkorb eines Onlineshops lässt sich das Prinzip zusammengehöriger Anfragen veranschaulichen: Wenn du einen Artikel hineinlegst und später den Warenkorb aufrufst, muss der Server beide Vorgänge miteinander verbinden. Solche Websessions werden auf Anwendungsebene verwaltet, etwa über eine Session-ID und serverseitig gespeicherte Daten. Die Sitzungsschicht behandelt den Zusammenhang auf einer technischeren Ebene. Als Beispiel für diese Schicht dient RPC, Remote Procedure Call. Wenn auf einem entfernten Rechner eine Funktion aufgerufen wird, müssen die ausgetauschten Daten dem Aufruf zugeordnet werden können. Schicht 6: Darstellungsschicht, Presentation Layer Damit unterschiedliche Systeme dieselben Daten verstehen, brauchen sie gemeinsame Regeln für deren Darstellung. Auf Schicht 6 geht es um die Syntax, also darum, wie Daten aufgebaut und dargestellt werden. Zeichenkodierung: Zeichensätze wie ASCII und Unicode müssen beim Austausch berücksichtigt und gegebenenfalls umgewandelt werden. Verschlüsselte Daten: Auf der Gegenseite müssen die Daten entschlüsselt werden, damit sie gelesen werden können. Verschlüsseln dient der Geheimhaltung. Komprimierte Daten: Vor dem Darstellen werden die Daten wieder entpackt. Komprimieren spart Speicherplatz und verringert die zu übertragende Datenmenge. Zeilenenden: Beim Austausch von Textdateien zwischen Windows und Linux kann eine Anpassung nötig sein. Windows verwendet Carriage Return und Line Feed, Linux verwendet Line Feed. Mit ASN.1, Abstract Syntax Notation One, lassen sich Datenstrukturen unabhängig von einem konkreten Endsystem beschreiben. Die Beschreibungssprache kennt beispielsweise Boolean und Integer. Ihre Aufgabe lässt sich mit XML vergleichen, wobei ASN.1 eine eigene Syntax hat. Über gemeinsame Regeln können beteiligte Systeme die übertragenen Daten wieder in ihre jeweilige Darstellung zurückführen. Schicht 7: Anwendungsschicht, Application Layer Ein E-Mail-Programm wie Thunderbird greift auf die Anwendungsschicht zu, um mit einem Mailserver Befehle auszutauschen. Diese Schicht bildet den Einstiegspunkt für Programme, die über das Netzwerk kommunizieren. Die darunterliegenden Schichten übernehmen die weiteren Aufgaben des Austauschs. Zur Form der Daten kommt hier ihre Semantik hinzu: Welche Bedeutung hat ein Befehl innerhalb des Protokolls, und passt er zum jeweiligen Ablauf? Bei SMTP führen bestimmte Befehle dazu, dass eine E-Mail auf dem Mailserver angelegt wird. Zu den bekannten Protokollen auf Anwendungsebene gehören HTTP und FTP sowie SSH, SMTP, IMAP und POP3. HTTP definiert beispielsweise die Methoden GET, POST, PUT, DELETE, HEAD und PATCH. Diese Protokolle solltest du für die Prüfung kennen. Ihre Funktionen können auch Aufgaben der Sitzungsschicht und der Darstellungsschicht umfassen. Komponenten auf den oberen Schichten Je nachdem, welche Daten eine Komponente auswertet und welche Aufgaben sie übernimmt, arbeitet sie auf unterschiedlichen Ebenen des Modells. Firewall: Eine Firewall auf Anwendungsebene kann übertragene Inhalte prüfen und gefährliche Daten erkennen. Dafür muss sie die Bedeutung der Daten verstehen können. Proxy: Er stellt stellvertretend Anfragen und nimmt Antworten entgegen. Wenn er Antworten zwischenspeichert, kann er wiederholte Anfragen aus seinem Cache bedienen. Außerdem kann er Inhalte prüfen oder bestimmte URLs sperren. Loadbalancer: Er verteilt Anfragen auf mehrere Server. Auf höheren Schichten kann er anhand einer URL entscheiden, an welchen Server eine Anfrage geht, oder verschiedene Protokolle unterschiedlich behandeln. Gateway: Es übersetzt zwischen unterschiedlichen Technologien oder Protokollen. Ein SMS-Gateway kann beispielsweise eine per E-Mail eingehende Nachricht als SMS weitergeben. Ein Fax-Gateway kann empfangene Faxe per E-Mail ins interne Netzwerk schicken. Das in der IP-Konfiguration angegebene Standard-Gateway bezeichnet den Router, an den Pakete für Ziele außerhalb des eigenen Netzwerks geschickt werden. Ein Gateway auf den oberen Schichten übernimmt das Übersetzen zwischen Technologien. Eine E-Mail durch alle sieben Schichten Am Beispiel einer versendeten E-Mail gehe ich den Weg von oben nach unten durch: Anwendungsschicht: Das E-Mail-Programm tauscht anwendungsspezifische SMTP-Befehle mit dem Mailserver aus. Darstellungsschicht: Sie regelt, wie die Daten dargestellt werden, und berücksichtigt dabei etwa die Zeichenkodierung oder eine verschlüsselte Verbindung. Sitzungsschicht: Zusammengehörige Anfragen werden miteinander in Beziehung gesetzt. Transportschicht: TCP sorgt dafür, dass die Segmente vollständig und in der richtigen Reihenfolge ankommen und wieder zusammengesetzt werden können. Ports gehören zu dieser Schicht. Vermittlungsschicht: IP-Adressen bezeichnen logische Ziele. Router leiten die Pakete durch die beteiligten Netzwerke weiter. Sicherungsschicht: Hier werden Frames übertragen und MAC-Adressen herangezogen. Ein Switch kann darüber entscheiden, an welchem Anschluss das Ziel erreichbar ist. Bitübertragungsschicht: Die Bits werden über das jeweilige Medium übertragen, beispielsweise über Kabel oder WLAN. Für die Prüfung und die Fehlersuche Wenn du untersuchst, weshalb ein Ping keine Antwort liefert, hilft dir das Modell dabei, die beteiligten Vorgänge einzuordnen. Bekannte Protokolle aus deinem Alltag lassen sich ihren Aufgaben im Modell zuordnen, wodurch du dir die Schichten leichter merken kannst. Begleitmaterial und Podcastpause In den Shownotes zu Episode 86 habe ich weiterführende Wikipedia-Artikel verlinkt. Auch ein IT-Handbuch eignet sich, um die behandelten Inhalte nachzulesen. Nach dieser letzten Episode des Podcastjahres 2016 ist die nächste Folge für den 9. Januar 2017 angekündigt....
33 Minuten
Weiter geht es mit der Schicht 4, der Transportschicht, in Teil 3 meiner Reihe zum ISO/OSI-Modell in der fünfundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Auf OSI-Schicht 4, der Transportschicht, erreiche ich über Ports einen bestimmten Dienst auf einem Rechner. TCP überträgt Daten zuverlässig und stellt ihre Reihenfolge mithilfe von Sequenznummern wieder her; eine Verbindung beginnt mit dem Three-Way-Handshake aus SYN, SYN-ACK und ACK. UDP arbeitet verbindungslos und mit weniger Steuerdaten, etwa bei digitaler Telefonie. Für deine Prüfung und beim Einrichten einer Firewall brauchst du die gängigen Ports, weil darüber einzelne Dienste freigegeben oder gesperrt werden können. Kapitelmarken [00:00:01] Einstieg in die Transportschicht des OSI-Modells [00:01:14] Aufgaben, Segmente und Datagramme [00:03:11] Ports und Ende-zu-Ende-Kommunikation [00:04:51] Standardports und Schreibweise [00:06:52] Ports in Prüfung und Praxis [00:07:31] Gängige Protokolle und ihre Ports [00:08:08] E-Mails mit POP3 und IMAP abrufen [00:09:13] HTTPS, Windows-Freigaben und die Datei services [00:11:00] Eigenschaften von TCP und UDP [00:12:46] UDP für Telefonie und Streaming [00:13:36] Steuerdaten in Segmenten und Datagrammen [00:14:25] Paketreihenfolge und TCP-Sequenznummern [00:16:15] Firewalls als Paketfilter auf Schicht 3 und 4 [00:18:38] Antworten erkennen und gefälschte Pakete abwehren [00:20:16] TCP-Verbindungen mit dem Three-Way-Handshake aufbauen [00:24:27] SYN und ACK als Flags im TCP-Header [00:26:01] Verbindungen mit FIN beenden und TCP-Overhead [00:27:26] Rückblick und Ausblick auf die weiteren OSI-Schichten [00:30:44] Prüfungsvorbereitung und weiterführende Quellen [00:31:22] Newsletter, Social Media und Kontakt Inhalt 4: Transportschicht (Transport Layer) Wie kommen auch große Datenmengen vollständig und in der korrekten Reihenfolge beim richtigen Dienst des Empfängers an? Einheit: Segment bzw. Datagramm Zusätzliche Informationen: Ports, Ende-zu-Ende-Kommunikation möglich Hardware: Firewall, siehe Anwendungsschicht Protokolle: TCP, UDP Sonstiges Three-Way-Handshake: SYN - SYN/ACK - ACK Wichtige Protokolle und Ports: Telnet (23), FTP (21), SSH (22), SMTP (25), HTTP (80), POP3 (110), IMAP (143), SMB (137-139), HTTPS (443), Doom (666) ;-) Literaturempfehlungen * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts OSI-Modell Das OSI-Referenzmodell Zusammenfassung Dienste über Ports erreichen Wenn ich auf einem Server einen Webdienst und einen Maildienst betreibe, können beide über dieselbe IP-Adresse erreichbar sein. Jeder Dienst lauscht auf einem eigenen Port, sodass du gezielt mit dem gewünschten Programm kommunizieren kannst. Diese Kommunikation zwischen Diensten auf dem sendenden und empfangenden Rechner heißt Ende-zu-Ende-Kommunikation. Die Transportschicht, auf Englisch Transport Layer, ist Schicht 4 des OSI-Modells. Sie setzt auf Schicht 3 auf, auf der IP für die Adressen und das Routing zuständig ist. Auf Schicht 4 kommen Quellport und Zielport hinzu. Die beiden zentralen Protokolle heißen TCP und UDP. Bei TCP heißt die Dateneinheit Segment, bei UDP Datagramm. Ein Port wird mit 16 Bit dargestellt, wodurch 65.536 mögliche Werte entstehen. Bei einer IPv4-Adresse kannst du ihn mit einem Doppelpunkt anhängen, etwa 1.2.3.4:80. Für viele Dienste gibt es festgelegte Standardports, die als Well-Known Ports bekannt sind. Wenn ein Webdienst auf einem abweichenden Port läuft, musst du diesen in der URL angeben. Ports für deine Prüfung und die Praxis In meinen Lernzielkontrollen frage ich gängige Ports ab, weil du sie auch bei praktischen Prüfungsaufgaben brauchst. Sollst du beispielsweise HTTP durch eine Firewall lassen, musst du den zugehörigen Port kennen. | Port | Protokoll oder Dienst | Wofür du ihn brauchst | | --- | --- | --- | | 21 | FTP | Dateien übertragen | | 22 | SSH | Eine entfernte Verbindung zu einem Server herstellen | | 25 | SMTP | E-Mails versenden beziehungsweise an einen Mailserver übermitteln | | 53 | DNS | Namen in IP-Adressen auflösen und umgekehrt | | 80 | HTTP | Webseiten abrufen | | 110 | POP3 | E-Mails vom Server herunterladen | | 143 | IMAP | Auf E-Mails zugreifen, die auf dem Server verbleiben | | 443 | HTTPS | Webseiten verschlüsselt abrufen | | 137 bis 139 | Windows-Freigaben | Auf Freigaben zugreifen, etwa mit Samba | Mit IMAP bleiben die E-Mails auf dem Server verfügbar, sodass du sie von deinem Laptop und deinem Handy aus lesen kannst. Bei einer URL mit https:// verwendet der Browser automatisch Port 443. Die Datei services enthält Zuordnungen zwischen Ports und Diensten. Dort findest du auch Port 666, den id Software für das Netzwerkspiel Doom reserviert hat. Daten mit TCP übertragen Wenn ich eine TCP-Verbindung zu einem Server aufbaue, kann ich darüber Daten senden und Antworten empfangen. TCP, ausgeschrieben Transmission Control Protocol, arbeitet verbindungsorientiert und sorgt dafür, dass die übertragenen Daten vollständig und in der richtigen Reihenfolge bereitstehen. Fehlende Daten können erneut angefordert werden. IP-Pakete können unterwegs unterschiedliche Routen nehmen. Dadurch kann ein später abgeschicktes Paket früher eintreffen. Im TCP-Header stehen Sequenznummern, mit denen der empfangende Rechner die Reihenfolge wiederherstellen und fehlende Daten erkennen kann. Diese Nummern werden entsprechend der übertragenen Nutzdaten weitergezählt. Die Steuerdaten im Header und die zusätzlichen Nachrichten beim Aufbauen einer Verbindung verursachen Overhead. TCP kommt zum Einsatz, wenn die Daten zuverlässig übertragen werden sollen. Datagramme mit UDP senden Bei einem digitalen Telefongespräch möchte ich die Sprache ohne lange Wartezeiten übertragen. Erneut gesendete Daten und das Warten auf fehlende Teile können den Gesprächsfluss verzögern. Für solche Anwendungen wird UDP, das User Datagram Protocol, eingesetzt; als weiteres Beispiel werden Streamingdienste genannt. UDP arbeitet verbindungslos und mit wenigen Steuerdaten. Das Protokoll garantiert weder, dass sämtliche Daten eintreffen, noch deren Reihenfolge. Falls eine Anwendung diese Eigenschaften braucht, muss sie selbst dafür sorgen. Ein UDP-Datagramm enthält die Nutzdaten und die Ports, mit denen die beteiligten Dienste angesprochen werden. Eine TCP-Verbindung aufbauen Bevor ich über TCP kommuniziere, wird die Verbindung mit dem Three-Way-Handshake hergestellt: Der Client sendet SYN an den Server. SYN steht für Synchronize. Der Server antwortet mit SYN-ACK, um die Anfrage zu bestätigen und sich ebenfalls abzugleichen. Der Client bestätigt diese Antwort mit ACK. Die Abkürzung steht für Acknowledgement. Die letzte Nachricht bestätigt dem Server, dass seine Antwort den Client erreicht hat. Auch beim Aufbauen einer Verbindung können Pakete verloren gehen. SYN und ACK sind Flags im TCP-Header, die als einzelne Bits gesetzt werden. Bei SYN-ACK sind beide Bits gesetzt. Das FIN-Flag dient dazu, eine Verbindung zu schließen. Auch beim Beenden wird durch Nachrichten und Bestätigungen dafür gesorgt, dass die Gegenseite davon erfährt. Den genauen Aufbau des Headers kannst du in einem Buch oder einem passenden Artikel nachlesen. Netzwerkverkehr mit einer Firewall filtern Wenn ich einen öffentlich erreichbaren Webserver betreibe, kann ich eingehenden HTTP-Verkehr auf Port 80 erlauben. Für einen Mailserver kann ich SMTP auf Port 25 freigeben. Solche Regeln lassen sich über die IP-Adressen und Ports festlegen. Eine Firewall kann als Software oder Hardware eingehenden und ausgehenden Netzwerkverkehr filtern. Ein einfacher Paketfilter prüft die Quelladresse und die Zieladresse anhand vorgegebener Regeln. Damit arbeitet er auf Schicht 3. Sobald Ports in die Entscheidung einfließen, bezieht er Schicht 4 ein. Gesperrte Pakete werden beispielsweise verworfen, sodass sie die andere Seite nicht erreichen. Rufe ich aus meinem Netzwerk eine Webseite auf, muss die Antwort des Webservers wieder hineingelassen werden. Eine Firewall kann sich dazu merken, welche Kommunikation von innen begonnen wurde, und eingehende Antworten zuordnen. Ein:e Angreifer:in kann Pakete fälschen, damit sie wie Antworten aussehen. Die Firewall muss prüfen, ob sie zu einer erlaubten Anfrage gehören. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:01] Herzlich Willkommen zum Anwendungsentwickler-Podcast, dem Podcast rund um die Ausbildung zum Fachinformatiker [0:08] für Anwendungsentwicklung. In dieser Episode geht es weiter mit Schicht 4 des OSI-Modells. Viel Spaß! [0:20] Hallo und herzlich Willkommen zur 85. Episode des Anwendungsentwickler-Podcasts. [0:27] Mein Name ist Stefan Macke und heute geht es ohne groß umzuschweifen direkt weiter mit dem ISO-OSI-Modell, [0:35] was wir bei der letzten Episode letzte Woche verlassen haben auf Schicht 3. [0:41] Das war die Schicht, wo wir zum ersten Mal mit dem IP-Protokoll in Berührung gekommen sind, [0:46] wo wir also logische Adressen jetzt nutzen können, um unsere Ziele in unserem Netzwerk erreichen zu können. [0:53] Und diese Woche setzen wir direkt auf der Schicht 3 auf mit Schicht 4, und zwar der Transportschicht. [0:59] Diesmal auf Englisch auch passenderweise Transport Layer, da muss man sich jetzt also nicht wieder drei verschiedene oder zwei immer nur Begriffe merken, [1:06] sondern Transport Layer und Transportschicht, das kann man ja nun wirklich 1 zu 1 übersetzen. [1:10] Okay, auf jeden Fall, was passiert in dieser Schicht 4 jetzt? [1:14] Ich habe das mal so ein bisschen überschrieben mit, wie kommen auch große Datenmengen vollständig [1:19] und in der korrekten Reihenfolge beim richtigen Dienst des Empfängers an. [1:23] Da ist jetzt schon einiges drin, was wir vielleicht einmal durchgehen sollten. [1:27] Wir fangen aber, wie bei den anderen Schichten auch, nochmal einmal mit der Einheit an, mit der wir hier arbeiten. [1:33] Und das sind jetzt gleich zwei verschiedene, die da möglich sind auf der Schicht 4, ...
36 Minuten
Die Schichten 2 und 3 (Sicherungs- und Vermittlungsschicht) des ISO/OSI-Modells sind das Thema der vierundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Ich gehe mit dir die Sicherungsschicht und die Vermittlungsschicht des ISO-OSI-Modells durch, deren Begriffe und Protokolle für deine IT-Prüfung relevant sind. Auf Schicht 2 enthalten Frames die MAC-Adressen der beteiligten Geräte sowie eine Prüfsumme, mit der sich Übertragungsfehler erkennen lassen. Schicht 3 ergänzt logische IP-Adressen, damit Router Pakete über Netzwerkgrenzen hinweg zum Ziel weiterleiten können. Dazu gehören auch CSMA/CD, das den Umgang mit Kollisionen regelt, und ARP, mit dem sich die MAC-Adresse zu einer IP-Adresse ermitteln lässt. Kapitelmarken [00:00:20] Einstieg und Prüfungsrelevanz [00:01:17] Aufgaben der Sicherungsschicht [00:01:58] MAC und LLC als Unterschichten [00:02:59] Aufbau und Eigenschaften von MAC-Adressen [00:05:09] Frames und Quell- und Zieladressen [00:06:31] Header, Trailer und Prüfsummen [00:08:33] Bridges und ihre Aufgaben [00:10:44] Switches und MAC-Adresstabellen [00:12:29] WLAN-Access-Points [00:14:04] Ethernet und IEEE 802.11 [00:15:08] CSMA/CD und der Umgang mit Kollisionen [00:18:23] ARP und die Zuordnung von IP- und MAC-Adressen [00:19:33] Vermittlungsschicht und logische Adressen [00:22:31] Routing und Pakete [00:25:03] Router verbinden Netzwerke [00:28:35] IP und ICMP: Erreichbarkeit mit Ping prüfen [00:29:49] IP als Grundlage des Internets und IPv6 [00:30:58] Rückblick auf die OSI-Schichten 2 und 3 [00:33:06] Shownotes und IT-Handbuch für die Prüfung [00:34:36] Ausblick und Newsletter [00:35:40] Fachliches Feedback und Kommentare Inhalt Auf den beiden Schichten arbeiten viele bekannte Hardwaregeräte und Protokolle, die auch für die Abschlussprüfung hochgradig relevant sind. 2: Sicherungsschicht (Data Link Layer) Wie kommen die Daten sicher (vollständig und fehlerfrei) beim korrekten Empfänger (physikalische Zieladresse) an? Die Schicht ist unterteilt in MAC und LLC. Einheit: Frame Zusätzliche Informationen: physikalische Adressen Hardware: Bridge, Switch, Wireless Access Point Protokolle: Ethernet, CSMA/CD, IEEE 802.11 (WLAN), ARP 3: Vermittlungsschicht (Network Layer) Wie kommen die Daten auch über Netzwerkgrenzen hinweg beim korrekten Empfänger (logische Zieladresse) an? Einheit: Paket Zusätzliche Informationen: Logische Adressen Hardware: Router Protokolle: IP, ICMP Literaturempfehlungen * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts OSI-Modell Das OSI-Referenzmodell Zusammenfassung Schicht 2: Sicherungsschicht Nachdem die Bitübertragungsschicht die physikalische Verbindung bereitstellt, geht es auf der Sicherungsschicht, englisch Data Link Layer, darum, Daten an das richtige Gerät zu schicken und Übertragungsfehler zu erkennen. Ich gehe mit dir die dazugehörigen Adressen und Verfahren durch, die du als IT-Azubi für deine Prüfung kennen solltest. Die Sicherungsschicht hat zwei Unterschichten: MAC: Media Access Control, die untere Unterschicht. LLC: Logical Link Control, die darüberliegende Unterschicht. MAC-Adressen Eine MAC-Adresse ist die physikalische Adresse einer Netzwerkkarte. Sie ist 48 Bit lang und wird meistens hexadezimal geschrieben, wobei jeweils zwei Ziffern durch Doppelpunkte oder Bindestriche getrennt werden. Die ersten 24 Bit kennzeichnen den Hersteller. Mit den übrigen 24 Bit vergibt dieser individuelle Adressen für seine Netzwerkkarten. Pro Herstellerpräfix stehen damit ungefähr 16 Millionen Kombinationen zur Verfügung; große Hersteller können mehrere Präfixe haben. Die Adresse ist normalerweise an die Hardware gebunden. Sie lässt sich allerdings verändern oder nachbilden, etwa bei virtuellen Maschinen. Frames und Prüfsummen Auf Schicht 2 heißt die Dateneinheit Frame. Darin stehen die MAC-Adressen des sendenden und des empfangenden Geräts zusammen mit den eigentlichen Nutzdaten. Zusätzliche Angaben vor den Nutzdaten heißen Header, Angaben dahinter Trailer. Ein Ethernet-Frame kann nach dem hier behandelten Standard maximal 1518 Byte umfassen, von denen 18 Byte für Header und Trailer vorgesehen sind. Im Trailer steht eine Prüfsumme, die aus den übertragenen Daten berechnet wird. Das empfangende Gerät berechnet sie erneut und vergleicht das Ergebnis mit dem mitgeschickten Wert. So lassen sich Fehler beim Übertragen erkennen. Geräte auf Schicht 2 Eine Bridge verbindet Netzwerkbereiche innerhalb eines lokalen Netzsegments. Dabei können unterschiedliche Netzwerktechnologien beteiligt sein, etwa Ethernet und Token Ring. Als Beispiel dient eine Laserbridge, die räumlich getrennte Gebäude verbindet. Ein Switch lernt aus dem Datenverkehr, welche MAC-Adresse an welchem Port erreichbar ist, und hält diese Zuordnung in einer Tabelle fest. Kennt er das Ziel, schickt er den Frame an den passenden Port weiter. Bei einem unbekannten Ziel verteilt er die Daten zunächst über seine Ports. Ein WLAN-Access-Point stellt den Zugang zum Funknetz bereit und verbindet dieses mit dem kabelgebundenen LAN. Er arbeitet dabei wie eine Bridge zwischen WLAN und Ethernet. Ethernet, WLAN und CSMA/CD Ethernet und der WLAN-Standard IEEE 802.11 beschreiben sowohl Aspekte der Bitübertragungsschicht als auch der Sicherungsschicht. Dazu gehört auf Schicht 2, wie Geräte adressiert werden. CSMA/CD steht für Carrier Sense Multiple Access Collision Detection. Das Verfahren regelt, wie Geräte auf ein gemeinsam verwendetes Medium zugreifen und auf Kollisionen reagieren: Ein Gerät hört zunächst das Medium ab und beginnt zu senden, sobald es frei ist. Mehrere Geräte können gleichzeitig ein freies Medium erkennen und anfangen zu senden, wodurch eine Kollision entsteht. Sobald die beteiligten Geräte die Kollision erkennen, brechen sie das Senden ab und geben ein Jam-Signal aus. Nach einer zufällig langen Wartezeit versuchen sie es erneut. Dadurch sinkt die Wahrscheinlichkeit, dass sie wieder gleichzeitig beginnen. Daneben gibt es CSMA/CA, ausgeschrieben Carrier Sense Multiple Access Collision Avoidance, das auf das Vermeiden von Kollisionen ausgerichtet ist. ARP zwischen Schicht 2 und Schicht 3 Mit ARP, dem Address Resolution Protocol, lässt sich zu einer logischen IP-Adresse die zugehörige physikalische MAC-Adresse ermitteln. Eine ARP-Tabelle hält die Zuordnung zwischen beiden Adressen fest. Das Protokoll verbindet damit die Sicherungsschicht mit der Vermittlungsschicht. Schicht 3: Vermittlungsschicht Auf der Vermittlungsschicht, englisch Network Layer, werden Daten über Netzwerkgrenzen hinweg weitergeleitet. Dafür kommen logische Adressen zum Einsatz, im Internet die IP-Adressen. Welche IP-Adresse dein Gerät erhält, hängt vom Netzwerk ab, in dem es sich befindet. Wenn du deinen Laptop vom heimischen WLAN ins WLAN am Arbeitsplatz mitnimmst, kann er dort eine andere IP-Adresse bekommen. Pakete und Routing Die Dateneinheit auf Schicht 3 heißt Paket. Ihr Header enthält unter anderem die IP-Adressen von Quelle und Ziel. Diese Angaben ermöglichen Routing: Pakete werden über Zwischenstationen durch mehrere Netzwerke zum Ziel geschickt. Ich verwende dafür das Beispiel eines Postpakets. Du gibst die Zieladresse an, während die beteiligten Verteilstationen entscheiden, über welche Station es weitertransportiert wird. Ein Router verbindet Netzwerke, die unterschiedliche IP-Adressbereiche haben können. Beim Heimanschluss verbindet er beispielsweise das lokale Netz mit dem Netz des Internetanbieters. Dabei können auch unterschiedliche Technologien wie Ethernet und PPPoE für DSL beteiligt sein. Zu Hause kommen häufig private IP-Adressen zum Einsatz, im Internet öffentliche Adressen. Anhand der Zieladresse entscheidet der Router, wohin ein Paket als Nächstes geht. Kann er das Ziel direkt erreichen, leitet er es dorthin weiter. Andernfalls schickt er es an den nächsten Router, der wiederum über den weiteren Weg entscheidet. IP und ICMP IP, das Internet Protocol, ist das zentrale Protokoll auf Schicht 3 und bildet die Grundlage des Internets. IPv6 ist eine weitere Version dieses Protokolls. Zum vertiefenden Lernen gehören auch Fragen dazu, wie IP-Adressen vergeben werden und wie Subnetting funktioniert. ICMP steht für Internet Control Message Protocol. Es kommt beispielsweise bei Ping zum Einsatz: Ein Gerät schickt eine Anfrage an das Ziel und wartet auf eine passende Antwort. Damit kannst du prüfen, ob ein Gerät auch über mehrere Netzwerke hinweg erreichbar ist. Material für deine Prüfung Für deine Prüfung solltest du die Fachbegriffe einschließlich ihrer ausgeschriebenen Abkürzungen kennen. Unter anwendungsentwicklerpodcast.de/84 habe ich Links zum Nachlesen zusammengestellt, hauptsächlich zu Wikipedia-Artikeln. Als Nachschlagewerk empfehle ich dir das IT-Handbuch, in dem du die behandelten Geräte und den Aufbau der Dateneinheiten nachlesen kannst. Über meinen kostenlosen Newsletter erhältst du montags Neuigkeiten von der Website und Links zu weiterem Material. Du kannst dich jederzeit über den Link im Newsletter abmelden. Fachliche Ergänzungen oder Korrekturen kannst du als Kommentar bei den Shownotes hinterlassen. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:01] Herzlich Willkommen zum Anwendungsentwickler-Podcast, dem Podcast rund um die Ausbildung zum Fachinformatiker [0:09] für Anwendungsentwicklung. In dieser Episode geht es weiter mit dem ISO-OSI-Modell. Viel Spaß! [0:20] Hallo und herzlich Willkommen zur 84. Episode des Anwendungsentwickler-Podcasts. [0:26] Mein Name ist Stefan Macke und heute geht es weiter mit dem ISO-OSI-Modell. Nachdem ich letzte Woche ja erst eine einzige Schicht geschafft habe, [0:34] nämlich die allerunterste, die BIT-Übertragungsschicht, geht es heute weiter mit, ich hoffe mal, zwei Schichten. [0:40] Ich versuche mal mein Bestes, gebe ein bisschen Gas und kloppe mal die ersten beiden Schichten nach Schicht 1, [0:46] nämlich Nummer 2, die Sicherungsschicht, und Nummer 3, die Vermittlungsschicht, hier durch. ...
32 Minuten
Eine allgemeine Einführung in das OSI-Referenzmodell und seine erste Schicht (Bitübertragungsschicht bzw. Physical Layer) sind das Thema der dreiundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Ich gehe mit dir durch die Grundlagen des OSI-Modells und seine erste Schicht, die Bitübertragungsschicht (Physical Layer). Das herstellerunabhängige Modell beschreibt mit sieben Schichten, wie Systeme über ein Netzwerk kommunizieren. Auf Schicht 1 werden Bits über ein Trägermedium übertragen, wobei unter anderem Kabel und Funkfrequenzen festgelegt werden. Für deine Prüfung als IT-Azubi solltest du Hub und Repeater dieser Schicht zuordnen können und Standards wie Ethernet, RS-232 sowie IEEE 802.11 kennen. Kapitelmarken [00:00:20] OSI-Modell als Prüfungsthema für IT-Azubis [00:01:28] Veröffentlichung auf fachinformatiker.de [00:03:06] Was OSI und ISO bedeuten [00:05:22] Das herstellerunabhängige Referenzmodell [00:06:24] Dienste und Schnittstellen zwischen den Schichten [00:08:25] Transportorientierte und anwendungsorientierte Schichten [00:10:26] Bitübertragungsschicht und Physical Layer [00:11:37] Trägermedien und Funkfrequenzen [00:12:59] Bits und physikalische Signale [00:15:20] Kabel, Stecker und weitere Hardware [00:17:27] Wie ein Hub arbeitet [00:19:53] Wie ein Repeater die Reichweite erweitert [00:21:29] Was ein Protokoll festlegt [00:22:49] SMTP als Beispiel für einen geregelten Austausch [00:25:09] Ethernet, RS-232 und IEEE 802.11 [00:27:05] Rückblick auf die erste OSI-Schicht [00:28:31] Shownotes und Literatur zum Nachlesen [00:29:59] Weitere OSI-Schichten und Fragen für kommende Episoden Inhalt Allgemeines Das ISO-/OSI-Modell ist ein herstellerunabhängiges Referenzmodell in Form einer Schichtenarchitektur für Kommunikationssysteme. Es beschreibt die Netzwerkkommunikation von der konkreten Bitübertragung z.B. über ein Glasfaserkabel bis hin zu den Anwendungen, die abstrakte Befehle austauschen. Die Schichten stellen der jeweils darüber liegenden Schicht über definierte Schnittstellen ihre Dienste bereit. Die Schichten 1 bis 4 sind die transportorientierten Schichten, 5 bis 7 die anwendungsorientierten Schichten. 1: Bitübertragungsschicht (Physical Layer) Wie kommen die Daten physikalisch vom Sender zum Empfänger? Beispiele: Glasfaser, Kupferkabel, Funk. Einheit: Bit Hardware: Repeater, Hub, Kabel, Antenne. Protokolle: Ethernet, RS-232 (serielle Schnittstelle), IEEE 802.11 (WLAN) Literaturempfehlungen * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts OSI-Modell Das OSI-Referenzmodell Zusammenfassung Das OSI-Modell in deiner IT-Ausbildung Ich gehe mit dir durch die erste Schicht des OSI-Modells und die Grundlagen, die du dafür brauchst. Als IT-Azubi begegnet dir das Thema in schriftlichen und mündlichen Prüfungen, auch wenn du Fachinformatiker:in für Anwendungsentwicklung wirst. Dabei werden unter anderem Geräte und Protokolle den jeweiligen Schichten zugeordnet. Du solltest außerdem die deutschen und englischen Schichtnamen kennen. Was OSI und ISO bedeuten OSI steht für Open Systems Interconnection. Das Modell beschreibt herstellerunabhängig, wie Systeme über ein Netzwerk miteinander kommunizieren. Seine sieben Schichten erfassen den Weg von den Daten einer Anwendung bis zu den Signalen auf einem Übertragungsmedium. Die International Organization for Standardization (ISO) hat das Modell standardisiert. Daher begegnet dir auch der Name ISO-OSI-Modell. Die ISO kümmert sich um internationale Standards und lässt sich in dieser Rolle mit dem Deutschen Institut für Normung, kurz DIN, vergleichen. Wie die Schichten zusammenarbeiten Wenn du eine E-Mail versendest, arbeitet deine Anwendung mit Diensten der darunterliegenden Schichten. Jede Schicht stellt der jeweils höheren Schicht eine Schnittstelle bereit und übernimmt bestimmte Aufgaben. So kümmert sich die erste Schicht beispielsweise darum, Daten in Lichtsignale umzuwandeln. Die darüberliegende Schicht greift auf diesen Dienst zu, ohne die konkrete Hardware selbst ansteuern zu müssen. Mit jeder höheren Schicht kommen weitere Informationen und Dienste hinzu. Die Schnittstellen werden dabei abstrakter. Zu den Anwendungsprotokollen gehören beispielsweise HTTP für Websites und FTP für Dateien. SMTP regelt, wie E-Mails übertragen werden. Die sieben Schichten heißen von unten nach oben: Bitübertragungsschicht Sicherungsschicht Vermittlungsschicht Transportschicht Sitzungsschicht Darstellungsschicht Anwendungsschicht Schicht 1 bis 4 heißen transportorientierte Schichten und befassen sich damit, wie Daten durch das Netzwerk gelangen. Auf den anwendungsorientierten Schichten 5 bis 7 liegen Dienste, mit denen du als Anwender:in eher direkt in Kontakt kommst, etwa wenn dein Mailserver eine Nachricht annimmt. Schicht 1: Bitübertragungsschicht Auf dem Physical Layer werden Nullen und Einsen zwischen Endpunkten übertragen. Die Informationseinheit dieser Schicht ist das Bit. Voraussetzung ist eine physikalische Verbindung über ein geeignetes Trägermedium. Dafür kommen verschiedene Signalformen infrage: In Glasfaserkabeln werden Bits als Lichtsignale übertragen. Kupferkabel übertragen elektrische Signale. Bei WLAN oder Mobilfunk erfolgt die Übertragung über Funkwellen. Auch ein Laser kann Informationen übertragen. Zur ersten Schicht gehören Festlegungen zu Kabeln und deren Abschirmung, ebenso zu Steckern und ihrer Belegung. Bei Funkverbindungen müssen die Frequenzbereiche festgelegt werden, damit unterschiedliche Systeme parallel arbeiten können. Hardware auf Schicht 1 Beim klassischen Netzwerkstecker solltest du die Bezeichnung RJ45 kennen. Auch Antennen gehören zur Hardware dieser Schicht. Ältere kabelgebundene Netze konnten mit T-Stücken verbunden werden und benötigten Endwiderstände an den beiden Enden des Kabelstrangs. Solche Bauteile müssen zueinander passen, damit die Geräte kommunizieren können. Hub An einen Hub lassen sich mehrere Geräte anschließen. Eingehende Signale verteilt er an die angeschlossenen Teilnehmer:innen. Dabei ordnet er den Ports keine Zielgeräte zu und leitet die Daten ohne gezielte Auswahl weiter. Dieses physikalische Weitergeben gehört zur ersten OSI-Schicht. Repeater Ein Repeater empfängt ein Signal und sendet es erneut aus. Am Beispiel eines WLAN-Repeaters lässt sich zeigen, wie damit die Reichweite vergrößert wird: Zwischen Accesspoint und einem schlecht versorgten Bereich aufgestellt, gibt er das empfangene Signal weiter. Auch dieses Gerät wird hier der Bitübertragungsschicht zugeordnet. Was ein Protokoll festlegt Damit zwei Systeme miteinander kommunizieren können, müssen sie sich an gemeinsame Regeln halten. Ein Protokoll legt die erlaubten Nachrichten und deren Format fest. Außerdem regelt es, in welcher Reihenfolge Befehle ausgetauscht werden, welche Antworten möglich sind und wie bei Fehlern vorgegangen wird. Bei SMTP, dem Simple Mail Transfer Protocol, beginnt der beschriebene Austausch mit einer Begrüßung über HELO und dem Namen des sendenden Servers. Anschließend wird mit MAIL FROM die Absenderadresse angegeben. Nachdem der Server geantwortet hat, folgt die Empfängeradresse. Die Antworten des Servers bestimmen, wie der Austausch weitergeht. Standards mit Bezug zur Bitübertragungsschicht Ethernet legt unter anderem physikalische Eigenschaften eines kabelgebundenen LANs fest. Es beschreibt außerdem Teile der zweiten OSI-Schicht. RS-232 bezeichnet eine serielle Schnittstelle. Dazu gehören Festlegungen zu Steckern und Pins sowie zur Signalübertragung. IEEE 802.11 ist der WLAN-Standard und umfasst unter anderem Vorgaben für Funkfrequenzen. Hinter IEEE steht das Institute of Electrical and Electronics Engineers, das den genannten WLAN-Standard festgelegt hat. Manche Standards beschreiben Aufgaben auf mehreren OSI-Schichten. Material zum Nachlesen In meinen Shownotes zu Episode 83 findest du Wikipedia-Artikel zu den angesprochenen Begriffen, die das Thema mit Bildern und Beispielen erläutern. Das IT-Handbuch von Hübscher enthält technische Angaben zu Standards und Datenraten sowie Abkürzungen. Dort wird das OSI-Modell auf wenigen Seiten behandelt. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:01] Herzlich Willkommen zum Anwendungsentwickler-Podcast, dem Podcast rund um die Ausbildung zum Fachinformatiker [0:09] für Anwendungsentwicklung. In dieser Episode geht es um die erste Schicht des OSI-Modells. Viel Spaß! [0:20] Hallo und herzlich Willkommen zur 83. Episode des Anwendungsentwickler-Podcasts. [0:27] Mein Name ist Stefan Macke und heute geht es mal ans Eingemachte. [0:31] Heute gehen wir mal richtig hart in die Technik rein und zwar mit einem ganz beliebten Prüfungsthema, [0:37] sowohl in der schriftlichen Prüfung als auch in der mündlichen Prüfung. [0:40] Das wird eigentlich durch die Bank weg, überall abgefragt, mal hier und da und immer wieder. [0:45] Und auch bei allen IT-Berufen, das ist das Spannendere daran. [0:48] Das heißt, heute geht es mal um etwas, was nicht nur für Anwendungsentwickler relevant ist oder hauptsächlich für Anwendungsentwickler, [0:53] sondern wirklich für alle IT-Berufe, nämlich das ISO-OSI-Modell. [0:57] Das muss eigentlich jeder ITler drauf haben und da kann man so schöne Prüfungsfragen zu stellen, [1:03] dass wir uns das heute mal im Detail anschauen wollen. [1:06] Und ich fange mal mit den ersten Schichten an. Das OSI-Modell besteht ja aus insgesamt sieben Schichten, [1:11] die man als Prüfling sicherlich alle genauestens unter Lupe nehmen sollte [1:15] und auch alle möglichen Dinge zu beantworten können sollte, also Fragen dazu gestellt bekommt. [1:20] Und die gehen wir jetzt heute mal durch und ich schaue mal, wie weit ich komme mit meiner halben Stunde, [1:25] die ich mir so wieder als Ziel gesetzt habe für heute. [1:28] Ich habe heute mal was Neues gemacht und zwar veröffentliche ich diese Episode des Podcasts [1:32] auch parallel auf fachinformatiker.de als Fachinformatiker-Podcast. ...
44 Minuten
Die Organisation und Durchführung einer eigenen Konferenz ist das Thema der zweiundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Bei meiner ersten Softwareentwicklungskonferenz in Vechta kamen 53 Teilnehmer:innen zusammen. Auch als IT-Azubi kannst du eine eigene Veranstaltung auf die Beine stellen und Erfahrungen weitergeben, die andere Entwickler:innen interessieren. Damit die Tickets deine Ausgaben decken, brauchst du eine sorgfältige Kostenrechnung, in die auch kostenlose Plätze für Referent:innen einfließen. Stimme den Termin frühzeitig ab und kümmere dich um passende Räume samt Verpflegung; für das Programm kommen neben Vorträgen auch Workshops infrage. Aus meiner Erfahrung gehören Ersatztechnik und direkt eingeholtes Feedback ebenso dazu wie Werbung, die Menschen in deiner Region erreicht. Kapitelmarken [00:00:01] Eine eigene Softwareentwicklungskonferenz organisieren [00:01:30] Warum das Thema für IT-Azubis interessant ist [00:03:56] Mit einer internen Veranstaltung anfangen [00:05:35] Kosten berechnen und das finanzielle Risiko einschätzen [00:07:04] Räume und Verpflegung einkalkulieren [00:09:40] Konferenzunterlagen und Namensschilder [00:12:17] Kostenlose Plätze für Referent:innen einplanen [00:13:24] Sponsorengelder und Ticketpreis berechnen [00:14:53] Unternehmen als Sponsor:innen gewinnen [00:17:32] Einen geeigneten Veranstaltungsort finden [00:19:30] Ausstattung und Technik vor Ort prüfen [00:21:10] Termin und Veranstaltungsort frühzeitig abstimmen [00:23:28] Verfügbarkeit der Referent:innen berücksichtigen [00:24:18] Verpflegung und Pausen planen [00:25:17] Das Thema der Konferenz festlegen [00:26:10] Referent:innen über einen Call for Presentations finden [00:27:52] Workshops und Barcamps als weitere Formate [00:28:53] Website und Werbung für die Konferenz [00:30:04] Anzeigen bei Xing, Facebook und Google [00:32:10] Kostenfreie regionale Veranstaltungskalender [00:32:50] Nach der Konferenz sichtbar bleiben [00:33:46] Erfahrungen: Ersatztechnik vorbereiten [00:34:49] Mit Early-Bird-Tickets früh Interesse erkennen [00:35:46] Fristen für Konferenzunterlagen setzen [00:36:30] Feedback direkt vor Ort einholen [00:37:40] Fotos vorab organisieren [00:38:58] Rückblick auf die Planung [00:40:22] Mit einem Zeitungsartikel Aufmerksamkeit schaffen [00:41:04] Kurs und Materialien zur weiteren Vorbereitung [00:42:39] Eigene Erfahrungen und Rückmeldungen teilen Inhalt Nachdem ich letzte Woche erzählt habe, wie wir unseren Softwareentwickler-Stammtisch ins Leben gerufen haben, geht es dieses Mal weiter mit der Organisation einer eigenen Konferenz. Eine Konferenz organisieren Kostenkalkulation Location Verpflegung Konferenzunterlagen (Druck, Mappen, Blöcke/Stifte) Badges Ticket/Bezahlung/Geschenke für Referenten Sponsoring Sponsoren finden eigener Arbeitgeber und Arbeitgeber der Teilnehmer bekannte Unternehmen der Region Suche bei Xing* nach Softwareunternehmen aus der Region Location Infrastruktur: WLAN, Leinwand, Beamer, Stühle/Tische, ggfs. Beschallung Termin Wochentag vs. Freitag (Empfehlung) vs. Wochenende an globalen Veranstaltungen teilnehmen (z.B. Global Day of Coderetreat) Verpflegung Frühstück, Mittagessen, Kuchen und/oder Abendessen anbieten? Vorträge bzw. Konferenzprogramm ggfs. Konferenzthema festlegen rechtzeitig Call for Presentations starten Referenten bei Terminfindung berücksichtigen andere Konzepte (z.B. Workshops, Barcamp) in Erwägung ziehen Werbung machen Website einrichten Xing*-Event, Facebook-Event Werbung bei AdWords, Facebook, Xing* schalten Veranstaltungskalender lokaler Zeitungen oder Städte nutzen lokale Zeitungen ansprechen Präsentationen nach der Konferenz online stellen Meine Lessons Learned Gehe immer davon aus, dass irgendetwas schief laufen wird (z.B. Ersatzbeamer mitnehmen). Biete einen Early Bird für die Tickets an, um schnell das Interesse zu klären (und schlaflose Nächte zu vermeiden). Sammle frühzeitig die Konferenzunterlagen (insb. Flyer) ein, um doppelte Arbeit zu vermeiden. Hole das Feedback der Teilnehmer direkt am Ende der Konferenz ein. Kläre vorab, wer (gute) Fotos der Konferenz macht. Empfehlungen für Konferenzmaterial (Mappen und Badges) Die Konferenzunterlagen (Agenda, Feedbackbogen, Flyer der Sponsoren) habe ich in diesen Dokumententaschen* im Format DIN A4 zusammengestellt. Sie machen trotz des geringen Preises einen stabilen Eindruck und es passten locker alle Unterlagen hinein. * Für die Namensschilder habe ich Etiketten von Herma* verwendet. * Die habe ich dann in die passenden Ausweishüllen* gesteckt und an einem blauen Halsband* befestigt. Da Blau die Konferenzfarbe war, passte das sehr gut. Es gibt die Bänder aber natürlich noch in anderen Farben. * * Literaturempfehlungen Der Pluralsight-Kurs "Starting and Running a Successful User Group", den ich bereits letzte Woche empfohlen habe, enthält auch ein separates Modul zum Thema Konferenzplanung. Daher kann ich ihn auch für dieses Thema wärmstens empfehlen. Ich selbst habe den Kurs gerade noch rechtzeitig vor der SEROM angeschaut und konnte dadurch noch ein paar kleine Fehler vermeiden. Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Zusammenfassung Eine eigene Konferenz als IT-Azubi Bei meiner ersten Softwareentwicklungskonferenz im Rahmen einer Usergroup in Vechta kamen 53 Teilnehmer:innen zusammen. Die Veranstaltung war ausverkauft und endete einschließlich der Sponsorengelder bei ungefähr null Euro. Als IT-Azubi bringst du bereits Erfahrungen mit, die für andere Entwickler:innen interessant sind. Was du in deinem Ausbildungsbetrieb schon kennengelernt hast, etwa testgetriebene Entwicklung oder Continuous Integration, beschäftigt andere Unternehmen noch als offene Frage. Auch Erfahrungen mit einer Programmiersprache lassen sich weitergeben. Selbst wenn zwei Unternehmen dasselbe Framework einsetzen, können daraus unterschiedliche Erfahrungen entstehen. Für den Einstieg eignet sich auch eine interne Veranstaltung in deiner Abteilung, bei der du dich mit Kolleg:innen austauschst und gemeinsam mit ihnen lernst. Kosten und Ticketpreis berechnen Bevor du Tickets anbietest, rechne aus, welche Ausgaben anfallen und wie viele zahlende Teilnehmer:innen du brauchst, um sie zu decken. Bei einer festen Raummiete bleibt der Betrag unabhängig davon bestehen, wie viele Menschen kommen. Sobald du mehr Tickets verkaufst, verteilt er sich auf mehr Personen. Ein Preis pro Person lässt sich direkt in den Ticketpreis einrechnen. Berücksichtige dabei folgende Posten: Räume: Kläre, ob du eine feste Miete oder einen Betrag pro Person bezahlst. Essen und Getränke: Falls du einen separaten Cateringbetrieb beauftragst, rechne dessen Kosten zusätzlich ein. Technik: Prüfe, welche Geräte vorhanden sind und was du selbst beschaffen musst. Unterlagen: Zu den Ausgaben gehören Mappen samt Schreibmaterial sowie gedruckte Agenden und Feedbackbögen. Namensschilder: Auch Hüllen und Halsbänder kosten Geld. Bei meiner Recherche lagen eine Mappe und ein vollständiges Namensschild jeweils bei ungefähr einem Euro. Für 50 Personen ergeben sich daraus bereits rund 100 Euro. Referent:innen: Plane mindestens den kostenlosen Eintritt ein. Für diese Plätze fallen ebenfalls Kosten für Räume und Verpflegung an. Falls du Honorare oder Geschenke vorsiehst, gehören sie in deine Rechnung. Mein Ticketpreis betrug 39 Euro, wobei neun Referent:innen kostenlos teilnahmen. Für sie musste ich entsprechend Geld einplanen. Meine eigene Arbeitszeit habe ich als privat investierte Freizeit behandelt. Mit einer Excel-Tabelle habe ich verschiedene Teilnehmer:innenzahlen durchgerechnet und die Sponsorengelder einbezogen. Ein Veranstaltungsort, der Räume samt Catering zu einem festen Betrag pro Person anbietet, erleichtert diese Rechnung. Unternehmen als Sponsor:innen gewinnen Mein eigener Ausbildungsbetrieb beziehungsweise Arbeitgeber ist eine erste Anlaufstelle. Frage außerdem bei den Unternehmen deiner Referent:innen und Teilnehmer:innen nach. Kontakte aus einer bestehenden Usergroup helfen dabei, passende Unternehmen zu erreichen. Sechs Unternehmen unterstützten meine Konferenz. Sie kamen aus meinem bisherigen Umfeld oder waren über die beteiligten Personen verbunden. Schon 100 oder 200 Euro können bei einer kleinen Veranstaltung den Ticketpreis senken. Unternehmen können auch Sachleistungen beisteuern. Mittwald stellte beispielsweise eine Palette Energydrinks bereit. Für Unternehmen ist die Konferenz eine Gelegenheit, mit ihrem Logo sichtbar zu werden und potenzielle Kolleg:innen zu erreichen. Über soziale Netzwerke kannst du weitere regionale Unternehmen suchen, die Softwareentwickler:innen beschäftigen, und sie direkt anschreiben. Räume und Technik auswählen Für meine Suche habe ich Hotels angefragt und auch ein Kino geprüft. Geeignet sind ebenso Landgasthäuser oder Säle, in denen größere Feiern stattfinden. Dort gibt es häufig passende Möbel und ein eigenes Cateringangebot. Achte vor Ort auf: Kostenfreies WLAN, besonders wenn der Mobilfunkempfang schwach ist. Eine Leinwand oder geeignete Projektionsfläche und einen Beamer, dessen Helligkeit zum Raum passt. Ausreichend Platz: Bei mehreren Stunden Programm sind Tische zum Mitschreiben angenehm. Zwischen den Reihen sollten Wege frei bleiben. Gut hörbare Vorträge: Kläre, ob Mikrofone und Lautsprecher erforderlich sind und wer sie bereitstellt. Platz für Gespräche: Bei meiner Konferenz gab es neben dem Vortragsraum einen zweiten Raum mit Bar und Stehtischen. Schon bei 53 Personen waren leise sprechende Referent:innen teilweise schwer zu verstehen. Besprich deshalb auch bei einer kleineren Konferenz, wie sich die Stimme verstärken lässt. Den Termin frühzeitig abstimmen Ich habe den Veranstaltungsort etwa drei Monate vorher angefragt. Gerade Räume, die oft für Hochzeiten gebucht werden, brauchen Vorlauf. Stimme mögliche Termine mit den Referent:innen ab, bevor du einen davon festlegst. Dafür habe ich Doodle verwendet....
34 Minuten
Die Organisation und Durchführung einer eigenen User Group ist das Thema der einundachzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Aus meinen Erfahrungen mit einem Softwareentwicklungsstammtisch im Oldenburger Münsterland gebe ich dir Tipps für deine eigene Usergroup. Als IT-Azubi kannst du dort andere Entwickler:innen kennenlernen und dich über Technologien außerhalb deines Ausbildungsbetriebs austauschen. Prüfe zuerst, welche Treffen es in deiner Region bereits gibt, und suche Interessierte in deinem Umfeld oder über soziale Netzwerke. Für den Einstieg reicht ein reservierter Tisch im Restaurant, an dem jede Person selbst bezahlt; den Termin stimmst du frühzeitig ab, während sich Gesprächsthemen meist vor Ort ergeben. Kapitelmarken [00:00:01] Thema: Eine eigene Usergroup starten [00:01:18] Fachlicher Austausch außerhalb des Ausbildungsbetriebs [00:03:11] Interessierte für eine Usergroup finden [00:04:38] Kolleg:innen ansprechen und Lunch and Learn ausprobieren [00:06:53] Kontakte aus Berufsschule und Hochschule [00:08:07] Interessierte über soziale Netzwerke erreichen [00:10:53] Meetup, bestehende Gruppen und passende Themen [00:12:25] Treffpunkt, Verpflegung und technische Ausstattung [00:14:35] Erfahrungen mit Restauranttreffen und Firmenräumen [00:16:02] Termine wählen und frühzeitig ankündigen [00:17:35] Termine über Doodle abstimmen [00:18:38] Gesprächsthemen für den Stammtisch [00:20:15] Mit einem eigenen Vortrag starten [00:21:09] Zusagen, Ausfälle und kleine Gesprächsrunden [00:23:35] Kosten und finanzielles Risiko beim Start [00:25:21] Beiträge und finanzielle Unterstützung durch Unternehmen [00:26:21] Rückblick auf die Tipps zum Start einer Usergroup [00:30:13] Ausblick auf die eigene Konferenz [00:30:43] Erfahrungen teilen und Kontakt aufnehmen [00:32:03] Konferenzmaterial und visuell gestaltete Vortragsfolien Inhalt Am vergangenen Freitag, den 04.11.2016 fand im Fizz in Vechta die erste Softwareentwicklungskonferenz SEROM statt. Das Motto der Veranstaltung war Softwareentwicklung im Mittelstand. Da ich die Organisation dieser Konferenz übernommen habe, erzähle ich in der aktuellen Podcast-Episode ein wenig über meine Erfahrungen. Diese Woche geht es los mit der Organisation einer User Group und beim nächsten Mal geht es dann um die Planung einer eigenen Konferenz. Start einer User Group Potentielle Interessierte finden Kollegen, Kommilitonen, Mitschüler, Lehrer Soziale Netzwerke, z.B. Xing*, Facebook, Twitter, Meetup Location Wie läuft die Verpflegung (Getränke, Essen)? Sind Beamer und eine Leinwand oder ein Bildschirm vorhanden? Termin Empfehlung: an einem Wochentag (Dienstag bis Donnerstag) früh genug ankündigen Abstimmung über Doodle Themen ergeben sich meist beim Stammtisch ggfs. mit eigenen Vorträgen starten Kosten am besten ohne Beitrag starten, jeder trägt Verzehr selbst später können Sponsoren unterstützen Mein Vortrag auf der SEROM Ich selbst habe auf der SEROM auch einen kurzen Fachvortrag gehalten: Wer braucht eigentlich Microservices - Aktuelle Trends der Softwareentwicklung in der Praxis. Die Folien gibt es bei SlideShare oder direkt hier eingebettet: Wer braucht eigentlich Microservices - Aktuelle Trends der Softwareentwicklung in der Praxis from Stefan Macke Literaturempfehlungen Den Pluralsight-Kurs "Starting and Running a Successful User Group" habe ich für mich persönlich leider etwas zu spät entdeckt. Ich habe ihn erst vor ein paar Wochen durchgearbeitet, aber der Stammtisch existiert ja bereits seit 2014. Wenn du noch ganz am Anfang stehst, wirst du sicherlich ein paar gute Tipps mitnehmen können. Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Zusammenfassung Was dir eine Usergroup bringt In Vechta habe ich Ende 2013 einen Softwareentwicklungsstammtisch angestoßen, aus dem später eine eigene Konferenz entstanden ist. Solche Treffen geben dir als IT-Azubi Gelegenheit, mit Entwickler:innen aus anderen Unternehmen ins Gespräch zu kommen. Dabei erfährst du, welche Technologien sie einsetzen, und kannst deine eigene Programmiersprache besser kennenlernen. Gerade in einem kleinen Ausbildungsbetrieb mit wenigen Kolleg:innen eröffnet dir das zusätzliche Möglichkeiten, dazuzulernen. Bestehende Gruppen finden Bevor du selbst ein Treffen organisierst, suche bei Meetup oder über Google nach Angeboten in deiner Region. Als Suchbegriffe eignen sich dein Ortsname zusammen mit "Softwareentwicklung" oder einer Programmiersprache. Einer passenden Gruppe kannst du dich direkt anschließen. Wie eng du das Thema deiner eigenen Usergroup fasst, hängt davon ab, wie viele Interessierte du erreichst. Für meinen Stammtisch auf dem Land habe ich allgemein nach Menschen gesucht, die sich für Softwareentwicklung interessieren. Eine Gruppe zu einer einzelnen Sprache braucht genügend Interessierte vor Ort. Interessierte ansprechen Beim ersten Stammtisch kam etwa die Hälfte der Teilnehmenden aus meinem Unternehmen. Für deinen Start kannst du folgende Kontakte ansprechen: Kolleg:innen, die sich auch außerhalb ihrer täglichen Aufgaben mit Softwareentwicklung beschäftigen. Mitschüler:innen aus der Berufsschule oder Kommiliton:innen. Lehrer:innen und Dozent:innen, die Kontakte vermitteln oder selbst einen Vortrag halten können. Menschen in sozialen Netzwerken, deren Profile zu deinem Thema und deiner Region passen. Ich habe bei Xing gezielt nach Orten und fachlichen Interessen gesucht, passende Personen direkt angeschrieben und sie in die Gruppe "Softwareentwicklung im Oldenburger Münsterland" eingeladen. Auch Menschen, die als Hobby programmieren, waren willkommen. Im Podcast kommen außerdem Facebook, LinkedIn und Meetup als mögliche Plattformen vor. Über weitergeleitete Einladungen erreichst du zusätzliche Interessierte. Die Teilnahme bleibt freiwillig. Ob jemand kommen möchte, hängt auch vom Thema ab. Wenn eine Einladung wenig Resonanz bekommt, kannst du ein anderes Thema ausprobieren. Im Unternehmen anfangen Mit einem "Lunch and Learn" kannst du zunächst im eigenen Betrieb testen, ob Interesse besteht: Ein:e Kolleg:in hält während der Mittagspause einen ungefähr 30-minütigen Vortrag, während die Teilnehmenden etwas essen. Als Thema eignet sich beispielsweise ein Framework, das im Unternehmen eingesetzt wird. Dabei kannst du das Vortragen üben. Wenn dein:e Vorgesetzte:r zustimmt, lässt sich ein solcher fachlicher Austausch auch während der Arbeitszeit einplanen. Einen passenden Treffpunkt wählen Für meinen ersten Stammtisch habe ich einen Tisch in einer Tapasbar reserviert. Etwa 15 bis 16 Personen kamen, wobei jede Person das eigene Essen und die Getränke bezahlte. Teile den Eingeladenen mit, unter welchem Namen du reserviert hast, damit sie den Tisch finden. Für Gespräche brauchst du einen ausreichend ruhigen Ort. Bei einem meiner Treffen störte ein Konzert vor dem Restaurant den Austausch erheblich. Wenn du Vorträge oder Workshops anbieten möchtest, kläre vorher, welche Technik vorhanden ist. Dazu können ein Beamer mit Leinwand, WLAN oder ein kabelgebundenes Netzwerk gehören. Ein Konferenzraum in einem Unternehmen kommt dafür infrage. Dort musst du die Öffnungszeiten und mögliche Sicherheitsregeln klären, ebenso den Zugang zum Netzwerk und die Frage, wer Essen oder Getränke bereitstellt. Bei einem agilen Stammtisch in Lingen habe ich eine weitere Möglichkeit kennengelernt: Nach dem fachlichen Teil im Firmenraum ging es zum Essen in die Stadt. Jede Person konnte selbst entscheiden, ob sie mitkommen wollte. Den Termin frühzeitig abstimmen Meine Stammtische fanden gewöhnlich nach Feierabend statt, häufig ab 18 Uhr. Ich empfehle dafür einen Wochentag von Dienstag bis Donnerstag. Am Wochenende sind viele Personen bereits durch private Termine gebunden. Über Doodle habe ich mehrere Termine zur Wahl gestellt und den Termin mit den meisten Stimmen ausgewählt. Kündige das Treffen rechtzeitig an, damit Interessierte den Abend freihalten können. Erinnerungen helfen, wenn zwischen Einladung und Treffen einige Zeit liegt. Gespräche und Vorträge Bei meinen Stammtischen ergaben sich die Themen im Gespräch. Auch mit fünf oder sechs Personen waren drei bis vier Stunden gefüllt. Neben technischen Fragen kamen persönliche Themen zur Sprache. Durch einen Platzwechsel kannst du weitere Teilnehmende kennenlernen. Ein Vortrag eignet sich ebenfalls als Einstieg. Dafür brauchst du jemanden, der ihn vorbereitet; gerade am Anfang kannst du diese Aufgabe selbst übernehmen. Als Initiator:in gehört es dazu, aktiv etwas beizutragen. Mit weniger Teilnehmenden rechnen Ich habe mehrfach erlebt, dass trotz mehr als zehn Zusagen nur vier oder fünf Personen erschienen. Eine Zusage per Klick bedeutet, dass später noch etwas dazwischenkommen kann. Plane deshalb mit Ausfällen. In einer kleinen Runde bleibt Raum, mit jeder Person ausführlicher zu sprechen. Die Kosten überschaubar halten Für den Anfang empfehle ich dir einen kostenfreien Stammtisch, bei dem jede Person den eigenen Verzehr bezahlt. Mit einem reservierten Tisch kannst du das Treffen ausprobieren, ohne Geld für Essen oder Räume vorzustrecken. Wenn du später Verpflegung bereitstellst und Beiträge erst vor Ort einsammelst, können ausgebliebene Teilnehmende dazu führen, dass du auf Ausgaben sitzen bleibst. Für größere Treffen kannst du deinen Ausbildungsbetrieb oder andere lokale Unternehmen um finanzielle Unterstützung bitten. Als Gegenleistung kommt beispielsweise ein Firmenlogo oder ein Link auf der Website der Gruppe infrage. Material und Kontakt Nach mehreren Jahren mit Stammtischen habe ich eine erste Konferenz organisiert. Die ausführlichen Erfahrungen dazu gehören zur nächsten Podcastfolge. Unter serom.de findest du Fotos und Vortragsfolien der Konferenz, darunter meinen Vortrag "Wer braucht eigentlich Microservices?". Darin hinterfrage ich auch mögliche Nachteile moderner Technologien. Die Folien enthalten viele Grafiken und wenig Text, sodass du sie als Beispiel für eine visuell gestaltete Abs
52 Minuten
Der Ablauf des Bewerbungsverfahrens für Azubis zum Fachinformatiker Anwendungsentwicklung bzw. auf das duale Studium der Wirtschaftsinformatik ist das Thema der achzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Bei der Alte Oldenburger Krankenversicherung in Vechta begleite ich die Auswahl künftiger IT-Azubis durch vier Schritte: schriftliche Bewerbung, Vorstellungsgespräch, Einstellungstest und Vorstellungstag. Dabei zählen dein Interesse am Beruf und die Frage, wie gut du mit dem Team zusammenarbeitest; Schulnoten und Testergebnisse fließen ebenfalls ein. Programmieren lernst du während der Ausbildung, wobei erste Erfahrungen durch Praktika oder eigene Projekte helfen, den Beruf einzuschätzen. Für deine Bewerbung solltest du dich über den Ausbildungsberuf und das Unternehmen informieren, eigene Fragen vorbereiten und offen zeigen, wer du bist. Kapitelmarken [00:00:01] Thema der Episode [00:00:20] Video und Präsentation zur Podcastfolge [00:01:40] Das Bewerbungsverfahren bei der Alte Oldenburger [00:02:31] Die vier Schritte im Überblick [00:04:08] Schriftliche Bewerbung und E-Mail [00:05:30] Interesse am Beruf und Schulnoten [00:07:23] Mathematik als Anhaltspunkt [00:08:50] Englisch in der Anwendungsentwicklung [00:10:18] Verständlich auf Deutsch schreiben [00:11:56] Informatikkurse und praktische Erfahrungen [00:13:15] Aufgaben der verschiedenen IT-Berufe [00:15:14] Auswahl für das Vorstellungsgespräch [00:15:48] Ablauf des Gesprächs und erwartete Vorkenntnisse [00:17:21] Persönlichkeit und Zusammenarbeit im Team [00:18:52] Interesse am Beruf und lebenslanges Lernen [00:20:34] Das Unternehmen kennenlernen [00:22:42] Vergütung und Arbeitsalltag im Gespräch [00:24:30] Rolle und Dauer des Einstellungstests [00:27:04] Mathematikaufgaben im Test [00:28:01] Englische Fachtexte verstehen [00:29:25] Allgemeines IT-Wissen [00:30:25] Programmieraufgaben und logisches Denken [00:32:30] Einladung zum Vorstellungstag [00:34:15] Rundgang und Feedback zum Test [00:35:54] Gemeinsam Java-Aufgaben bearbeiten [00:39:21] Gespräch mit aktuellen IT-Azubis [00:41:20] Beruf und Ablauf der Ausbildung recherchieren [00:43:16] Eigene Gründe für die Berufswahl erklären [00:44:16] Informationen über das Unternehmen sammeln [00:45:40] Eigene Fragen vorbereiten [00:47:15] Die eigene Bewerbung kennen und mitbringen [00:47:55] Pünktlich zum Gespräch erscheinen [00:48:58] Smalltalk und Umgang mit anderen Personen [00:49:53] Offen auftreten und du selbst bleiben [00:50:47] Feedback und Shownotes Inhalt Falls du noch ganz am Anfang stehst, habe ich hier konkrete Tipps zur Bewerbung um eine Ausbildung als Anwendungsentwickler/in. Schriftliche Bewerbungen Aus den eingegangenen schriftlichen Bewerbungen sortieren wir zunächst die vielversprechendsten Kandidaten aus. Dabei schauen wir nicht allein auf die Zeugnisnoten, sondern insb. auch darauf, ob ein Interesse am angestrebten Beruf vorhanden ist. Viel wichtiger als perfekte Noten sind daher zum Beispiel Praktika in anderen Unternehmen mit Bezug zur Softwareentwicklung. Aber natürlich sind auch die Noten interessant für uns. Dabei schauen wir vor allem auf die Noten in den Fächern Mathe, Deutsch und Englisch. Englisch, da fast alle wichtigen und interessanten Texte zur Programmierung auf Englisch vorliegen. Mathe, weil meiner Meinung nach ein gewisser Bezug zwischen der logischen Denkweise der Mathematik und der Programmierung besteht. Und Deutsch, weil es bei der Softwareentwicklung nicht nur um das Erzeugen von Code geht, sondern auch um die schriftliche Kommunikation z.B. mit Kunden und natürlich auch die Dokumentation von Anwendungen. Interessant sind für uns auch immer mehrere Zeugnisse, um einen Trend erkennen zu können. Außerdem gibt es z.B. in der Mathematik ganz unterschiedliche Themenbereiche (z.B. Kurvendiskussion und Stochastik), die dem Bewerber leichter oder schwerer fallen, und eine einzelne Note ist dann wenig aussagekräftig. Sehr gut ist es natürlich auch, wenn die Kandidaten Kurse in Informatik belegt haben. Aber nicht, weil wir Vorwissen erwarten, sondern weil das (wie bereits oben erwähnt) ein gewisses Interesse am Beruf zeigt. Vorstellungsgespräche Die interessantesten Kandidaten laden wir zu einem Vorstellungsgespräch zu uns ein. Üblicherweise sprechen wir ca. eine halbe Stunde mit den Bewerbern. Das gestaltet sich als ein eher lockeres Gespräch. Wir machen keine Leistungsabfragen oder fragen Fachbegriffe ab. Vielmehr muss deutlich werden, dass der Bewerber ins Team passt, und ein gewisses Engagement und Initiative mitbringt. Er sollte einfach glaubhaft vermitteln, dass der Beruf des Anwendungsentwicklers der richtige für ihn ist. Ein paar allgemeine Informationen setzen wir beim Bewerber allerdings auch voraus. So macht es einen sehr schlechten Eindruck, wenn der Kandidat nicht mehr weiß, auf welchen Beruf er sich beworben hat (ist leider schon vorgekommen) oder in welchem Unternehmen er eigentlich gerade sitzt. Das Geschäftsfeld und ein wenig über die Historie des Unternehmens sollten dem Bewerber also durchaus bekannt sein. Das Internet bietet zahlreiche Möglichkeiten, um sich darüber umfassend zu informieren. Aber auch der potentielle Azubi soll natürlich über das Unternehmen informiert werden. So sind z.B. die Arbeitszeiten, die Ausbildungsvergütung und die Sozialleistungen sowie das Betriebsumfeld Themen des Gesprächs. Einstellungstest Nach dem Vorstellungsgespräch absolvieren die Bewerber dann einen ca. anderthalbstündigen schriftlichen Einstellungstest. Dabei geht es vor allem um die Bereiche Mathematik und Englisch, die jeder Bewerber aus der Schule kennen sollte. Außerdem werden auch ein paar allgemeine Fragen aus der IT gestellt, die auf ein allgemeines Interesse am Beruf schließen lassen, z.B. was HTTP ist oder welche Betriebssysteme es so gibt. Einen separaten Bereich zum Thema Programmierung gibt es auch. Wir erwarten allerdings auf keinen Fall, dass unsere Bewerber schon programmieren können. Dennoch bieten viele Schulen inzwischen Programmierkurse an. Und falls Vorwissen vorhanden ist, gibt uns der Test einen kleinen Aufschluss über die vorhandenen Erfahrungen. Konkrete Programmieraufgaben gibt es allerdings nur sehr wenige. Vielmehr geht es um einfache logische Zusammenhänge, für die man nicht programmieren können muss. Vorstellungstag Die vielversprechendsten Kandidaten aus Vorstellungsgesprächen und Tests laden wir üblicherweise für einen halben Tag noch einmal zu uns ein. An diesem Nachmittag gehen wir z.B. einmal durch unser Bürogebäude, schauen uns den Serverraum an und besuchen die Kollegen aus der Abteilung, damit die Bewerber sich ein besseres Bild ihres zukünftigen Arbeitsplatzes machen können. Außerdem gehen wir den Einstellungstest des Kandidaten durch und geben ein Feedback zu den Ergebnissen. Aber auch wir wollen natürlich einen guten Eindruck des Kandidaten bekommen, daher ist der Großteil des Tages für ein gemeinsames Programmieren reserviert. Dabei lösen wir zusammen kleine Programmieraufgaben, die ich so auch in den ersten Wochen der Ausbildung mit den zukünftigen Azubis bearbeiten würde. Auch hier geht es wieder einmal nicht darum, schon programmieren zu können, sondern darum, herauszufinden, ob zwischenmenschlich eine Zusammenarbeit zwischen Azubi und Ausbilder denkbar wäre, und ob ein gewisses Verständnis für die Programmierung vorhanden ist. Außerdem bietet der Vorstellungstag die Gelegenheit, noch offene Fragen beider Seiten zu klären. Das beinhaltet bei uns auch ein Gespräch "unter vier Augen" mit den aktuellen Azubis des Unternehmens, die bestimmte Fragen sicherlich besser beantworten können, als der böse Ausbilder ;-) Am Ende dieses Tages sollen das Ausbildungsunternehmen und der potentielle Azubi ein gutes Bild von der zukünftigen Zusammenarbeit haben, sodass sowohl wir als auch der Bewerber diese wichtige Entscheidung für die nächsten drei Jahre treffen kann. Tipps zur Vorbereitung auf das Bewerbungsverfahren Informationen zum Berufsbild einholen (z.B. übliche Aufgaben, Tagesablauf). Informationen zur Ausbildung einholen (z.B. Ort der Berufsschule, Dauer). Argumentation für die eigene Berufswahl zurechtlegen (warum möchtest du Anwendungsentwickler werden?). Informationen zum Unternehmen einholen (z.B. Geschäftsfeld, Größe, Historie). Eigene Fragen an das Unternehmen vorbereiten (z.B. Vergütung, Ablauf der Ausbildung, Inhalte der Ausbildung). Eigene Bewerbung mitnehmen (z.B. bei Fragen zu Zeugnisnoten oder Inhalten des Anschreibens). Pünktlich erscheinen, aber auch nicht überpünktlich (10-15 Minuten vorher da sein reicht aus). Ggfs. aktuelles Tagesgeschehen für Smalltalk verfolgen (z.B. Nachrichten). Grundsätzlich: offen und ehrlich sein, nicht verstellen. Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Tipps zur Bewerbung um eine Ausbildung als Anwendungsentwickler/in Ablauf des Bewerbungsverfahrens für Fachinformatiker Anwendungsentwicklung - YouTube Ausbildungsvergütung: Welcher Azubi bekommt wie viel Gehalt? - SPIEGEL ONLINE Hypertext Transfer Protocol – Wikipedia Gerda Feldhaus als landesbeste Anwendungsentwicklerin Niedersachsens ausgezeichnet Zusammenfassung So läuft das Verfahren ab Bei der Alte Oldenburger Krankenversicherung in Vechta begleite ich das Verfahren, mit dem künftige Fachinformatiker:innen für Anwendungsentwicklung ausgewählt werden. Die beschriebenen Abläufe stammen aus dem Verfahren für den Ausbildungsstart 2017. Andere Unternehmen gestalten ihre Auswahl anders und führen beispielsweise zusätzlich ein Assessment-Center durch. Das Verfahren umfasst vier Schritte: Die schriftlichen Bewerbungen werden gesichtet, bevor ausgewählte Bewerber:innen eine Einladung erhalten. Ein Vorstellungsgespräch dauert etwa 30 Minuten. Direkt anschließend folgt ein schriftlicher Einstellungstest mit 90 Minuten Zeit. Zwei bis drei Bewerber:innen werden zu einem Vorstellungstag eingeladen, der etwa zwei bis vier Stunden dauert. ...
42 Minuten
Eine Lernzielkontrolle zu Exceptions (in Java) gibt es in der neunundsiebzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Mit meiner Lernzielkontrolle zu Exceptions kannst du dein Wissen über Fehler beim Programmieren prüfen und dich auf Fragen im Fachgespräch vorbereiten. Eine Exception kennzeichnet eine Ausnahmesituation und unterbricht den normalen Programmfluss, bis ein passender catch-Block sie auffängt. An Java zeige ich dir, wie du Exceptions gezielt behandelst oder weiterreichst, was Checked Exceptions bedeuten und wie try-with-resources Ressourcen automatisch schließt. Der Stacktrace hilft dir, Fehler zu finden; weil sein Erzeugen Aufwand verursacht, gehören Exceptions in die Ausnahmebehandlung. Kapitelmarken [00:00:01] Hinweis zum Fachgespräch [00:00:37] Lernzielkontrolle zu Exceptions mit Java [00:02:38] Fragen fürs Fachgespräch und ergänzendes Hörbuch [00:03:30] Was eine Exception ist [00:05:03] Die Analogie vom Werfen und Fangen [00:06:38] Exceptions behandeln oder weiterreichen [00:08:38] Die passende Stelle für den Umgang mit Fehlern [00:10:49] Exceptions mit try und catch auffangen [00:12:30] finally und das Schließen von Ressourcen [00:15:39] try-with-resources und AutoCloseable [00:17:13] Exceptions mit throw auslösen [00:19:53] throws und Checked Exceptions [00:22:10] Mehrere Exception-Typen gezielt auffangen [00:23:36] Unchecked Exceptions [00:25:46] Eigene Exception-Klassen und zusätzliche Attribute [00:27:54] Call-Stack und Stacktrace bei der Fehlersuche [00:30:38] Aufwand von Exceptions und regulärer Programmablauf [00:32:08] Die Java-Hierarchie mit Throwable, Error und Exception [00:35:08] Was Exceptions beim Umgang mit Fehlern ermöglichen [00:37:42] Prüfungsbezug und Quellen zum Vertiefen [00:39:50] Hörbuch-Tipp: What If von Randall Munroe [00:41:20] Ausblick auf weitere Lernzielkontrollen Inhalt Exceptions Was ist eine "Exception"? Eine unerwartete Ausnahmesituation in einem Programm, meistens ein Fehler. Oder: Die Klasse, die dieses Konzept in der Programmiersprache repräsentiert. Was ist die Analogie zur Erklärung der Behandlung von Exceptions? Man "wirft" und "fängt" Exceptions wie einen Ball. Wie kann man grundsätzlich mit Exceptions umgehen? Man kann sie entweder direkt fangen (und das Problem lösen) oder dies an den Aufrufer delegieren (weiterwerfen). Wie behandelt man eine Exception in Java? Mittels try, catch und finally. Wann braucht man einen finally-Block? Wenn eine Operation unter allen Umständen nach try/catch ausgeführt werden muss (insb. wenn im catch-Block potentiell auch Fehler auftreten können). Was ist try-with-resources? Ein Sprachkonstrukt in Java, das dafür sorgt, dass Ressourcen nach ihrer Nutzung sauber wieder geschlossen werden, egal ob eine Exception auftritt oder nicht. Die Ressource muss dafür java.lang.AutoCloseable implementieren. Entspricht using in .NET. Was macht das Schlüsselwort throw? Wirft eine Exception. Was macht das Schlüsselwort throws? Markiert eine Methode als potentiell fehleranfällig und zwingt den Aufrufer zur Fehlerbehandlung. Was ist der Unterschied zwischen "checked" und "unchecked" Exceptions? Checked Exceptions (die es nur in Java gibt), müssen behandelt werden (der Compiler prüft das). Unchecked Exceptions (z.B. nicht vorhersehbare Laufzeitfehler wie "Speicher voll") müssen nicht behandelt werden. Wie erzeugt man seine eigenen Exceptions? Man kann eigene Klassen von Exception erben lassen. Diese können dann auch "echte" Attribute und Methoden beinhalten. Was ist der "Call Stack"? Der Aufrufstack enthält die Rücksprungadressen aller im bisherigen Programmablauf aufgerufenen Methoden. Darüber kann man nachvollziehen, wie das Programm zur aktuellen Position gelangt ist. Jede Exception hat den Call Stack bis zu ihrem Auftreten als Attribut. Sollte man Exceptions zur Steuerung des Programmablaufs einsetzen? Nein, da Exceptions - z.B. wegen des Call Stacks - recht "teuer" sind. Wie sieht die Hierarchie von Exceptions in Java grob aus? Throwable: Basisklasse aller Exceptions in Java. Error: "Echte" Fehler, die ein Programm normalerweise nicht behandeln kann (z.B. StackOverflowError). Exception: Fehler, die das Programm behandeln können sollte. RuntimeException: Unchecked Exceptions wie z.B. ArithmeticException bei Division durch 0. Was sind die Vorteile von Exceptions gegenüber direkter Fehlerbehandlung? Produktivcode und Fehlerbehandlungscode werden stärker getrennt. Man kann das Behandeln von Fehlern an den Aufrufer delegieren. Man kann einfacher zwischen verschiedenen Fehlern unterscheiden. Literaturempfehlungen Die Java-Insel* beschreibt in einem eigenen Kapitel ausführlich den Umgang mit Exceptions in Java (siehe Exceptions). *(direkt beim Rheinwerk-Verlag bestellen*) Und auch Clean Code* enthält ein komplettes Kapitel zum Umgang mit Exceptions und Fehlersituationen. * Meine Hörbuch-Empfehlung der Woche: What if?* von Randall Munroe * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Lesson: Exceptions (The Java Tutorials - Essential Classes) The try-with-resources Statement (The Java Tutorials - Essential Classes - Exceptions) Call stack - Wikipedia, the free encyclopedia Exception Hierarchy in Java The Truth Behind the Big Exceptions Lie | Java Code Geeks - 2016 Zusammenfassung Exceptions als Thema für IT-Azubis Für meine IT-Azubis ergänze ich die Aufgaben aus dem Java-Tutorial mit Lernzielkontrollen. Die Fragen zu Exceptions eignen sich auch, wenn du dich als Fachinformatiker:in Anwendungsentwicklung auf dein Fachgespräch vorbereitest. Fehler beim Programmieren zu behandeln, ist ein allgemeines Thema; die technischen Details beziehen sich hier auf Java. Auch C# und Ruby kennen Exceptions. Was eine Exception bedeutet Wenn während eines Programmlaufs eine unerwartete Situation auftritt, spricht man von einer Exception, also einer Ausnahme. Der Begriff bezeichnet außerdem die Klasse beziehungsweise das Objekt, das diese Situation im Programm repräsentiert. Eine Ausnahme kann durch einen Fehler entstehen oder durch ein Verhalten, das vom erwarteten Ablauf abweicht. Beim Umgang mit Exceptions hilft das Bild eines Balls: Ich werfe eine Exception, die an einer passenden Stelle aufgefangen wird. Dazu passen die Schlüsselwörter throw und catch. Exceptions auffangen und weiterreichen Du kannst eine Exception dort auffangen, wo dein Code sinnvoll auf sie reagieren kann. Wenn sich die Datenbank vorübergehend nicht erreichen lässt, kann ich beispielsweise fünf Sekunden warten und erneut versuchen, mich zu verbinden. Nach einem erfolgreichen Versuch läuft das Programm weiter. Bleibt die Datenbank unerreichbar, reicht die Methode den Fehler an die aufrufende Methode weiter. Eine grafische Oberfläche kann daraufhin der/dem Benutzer:in eine verständliche Meldung anzeigen. Exceptions wandern automatisch durch den Call-Stack, bis ein passender Block sie auffängt. Dadurch kannst du die Stelle, an der ein Fehler entsteht, von der Stelle trennen, an der dein Code darauf reagiert. Entscheidend ist, welche Methode mit der konkreten Situation umgehen kann. Ein zentraler catch-Block in der main-Methode kann Exceptions auffangen, die bis dorthin gelangen. Ich empfehle, Fehler gezielt an einer geeigneten Stelle zu behandeln, weil beim Auffangen in main häufig nur noch das Beenden des Programms bleibt. Wie try, catch und finally arbeiten In einem try-Block steht Code, bei dem eine Exception auftreten kann. Für eine Datenbankabfrage würde ich dort die entsprechenden Aufrufe unterbringen. Sobald eine Exception auftritt, wird der normale Ablauf an dieser Stelle unterbrochen. Das Programm sucht einen passenden catch-Block und führt dessen Code aus. Wenn der try-Block erfolgreich durchläuft, wird der catch-Block übersprungen. Eine unbehandelte Exception kann zum Programmabbruch führen und auf der Konsole ausgegeben werden. Der optionale finally-Block wird beim Verlassen dieser Struktur ausgeführt, auch wenn während des Ablaufs oder im catch-Block eine Exception auftritt. Dort kann ich Ressourcen schließen, die nach dem Zugriff wieder freigegeben werden müssen. Das betrifft beispielsweise eine geöffnete Datenbankverbindung. Auch beim Schließen einer Verbindung kann eine weitere Exception entstehen. Code, der erst hinter der gesamten try-catch-Struktur steht, wird in einem solchen Fall möglicherweise übersprungen. Für Aufräumarbeiten ist deshalb der finally-Block vorgesehen. Ressourcen automatisch schließen Wenn ich mit Ressourcen arbeite, verwende ich in Java try-with-resources. Die Ressource wird in den Klammern hinter try angegeben und am Ende automatisch geschlossen, auch wenn eine Exception auftritt. Das eignet sich etwa für Datenbankverbindungen und Dateihandles. Voraussetzung ist, dass die Ressource das Interface java.lang.AutoCloseable implementiert. In C# gibt es mit dem using-Block eine entsprechende Möglichkeit. Mit throw eine Exception auslösen Durch throw löst du selbst eine Exception aus. Dahinter steht das Objekt, das geworfen wird, beispielsweise eine neu erzeugte Instanz einer Exception-Klasse. Ich gebe einer Exception eine aussagekräftige Fehlermeldung und wähle einen passenden Typ. Eine DatabaseNotAvailableException macht erkennbar, dass die Datenbank fehlt. Ein darauf abgestimmter catch-Block kann gezielt auf diesen Fehler reagieren. throws und Checked Exceptions Mit throws gibst du an einer Java-Methode an, welche Exceptions beim Aufrufen auftreten können. Mehrere Typen lassen sich dort ebenfalls aufführen. Bei Checked Exceptions prüft der Compiler, ob die aufrufende Methode mit den möglichen Fehlern umgeht. Dafür gibt es zwei Wege: Du fängst die Exception mit einem passenden catch-Block auf. Du reichst sie weiter und führst sie im throws-Teil der aufrufenden Methode auf. Der Compiler weist dadurch auf fehlende Schritte beim Umgang mit diesen Exceptions hin. Wenn ich sie durch viele Methoden weiterreiche,...
30 Minuten
Um Kapitel 13 (Datenbanken) des Handbuchs für Fachinformatiker geht es in der achtundsiebzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Im elften Teil meines Buchclubs zum Handbuch für Fachinformatiker steht das Datenbankkapitel im Mittelpunkt. Für dich als IT-Azubi gehören relationale Datenbanken mit ihren Tabellenmodellen ebenso zum Prüfungsstoff wie SQL, besonders SELECT-Abfragen und JOINs. Die ersten drei Normalformen sowie Transaktionen mit den ACID-Prinzipien solltest du anhand von Beispielen erklären können. Das Handbuch bietet einen Einstieg, den du durch Fachliteratur und Aufgaben vertiefen solltest; auch NoSQL gehört zum Wissen für die Praxis. Kapitelmarken [00:00:01] Einstieg in den Buchclub: Datenbanken und Prüfungsbezug [00:01:49] Vorlage für die Projektdokumentation mit LibreOffice [00:04:29] Datenbankgrundlagen und Fachbegriffe [00:05:13] Datenbanktypen und NoSQL im Handbuch [00:06:36] Relationale Datenbanken und Tabellenmodelle [00:08:43] Normalformen und ihre Bedeutung für die Prüfung [00:10:08] Transaktionen und ACID-Prinzipien [00:10:39] Objektorientierte Datenbanken und fünf NoSQL-Typen [00:12:28] MySQL installieren und produktspezifisches Wissen [00:14:01] MariaDB als MySQL-Fork [00:14:52] SQL und DDL: Tabellen anlegen und verändern [00:15:53] SELECT-Abfragen und JOINs [00:17:06] INSERT, UPDATE, DELETE und Transaktionen [00:17:44] MySQL-Administration und übertragbare SQL-Befehle [00:19:13] Datenbankprogrammierung mit JDBC [00:20:00] CouchDB und dokumentenorientierte Datenbanken [00:20:50] Buchempfehlung: Seven Databases in Seven Weeks [00:22:14] Ergänzende Podcastfolgen und Shownotes [00:23:02] Hörbücher mit Audible [00:24:45] Deep Work und konzentriertes Arbeiten [00:27:12] Schulhunde-Blog und Fotografie [00:28:13] Rabattcodes für die Dokumentationsvorlagen [00:29:22] Ausklang und Verabschiedung Inhalt Kapitel 13 (Datenbanken) Die verschiedenen Datenbanktypen Absolutes Grundlagenwissen, das jeder ITler für die Prüfung - aber auch für die Praxis - drauf haben muss! Normalformen (bis zur 3.) muss man in- und auswendig kennen und gut erklären können. Am besten mit Beispielen. NoSQL kommt mir zu kurz und sollte definitiv mit weiterer Literatur gelernt werden. MySQL – ein konkretes RDBMS Produktspezifika sind für die IHK-Prüfung irrelevant und veralten recht schnell in der Praxis. MySQL selbst ist eigentlich schon durch MariaDB abgelöst. SQL-Abfragen Eine Kernkompetenz für jeden Entwickler! Und mit absoluter Regelmäßigkeit ein zentrales Thema in jeder (!) IHK-Prüfung. Häufig sogar in GH2. Für den Einstieg gut geeignet, aber nicht ausreichend für die Prüfungsvorbereitung. MySQL-Administration s.o. Grundlagen der Datenbankprogrammierung Eine (sehr) kurze Einführung in die Datenbankprogrammierung mit JDBC. Nett zu wissen, aber für die Praxis nicht ausreichend und für die Prüfung irrelevant. Die Kurzeinführung in CouchDB auf einer Seite reicht auch bei Weitem nicht aus, um sich Wissen für die Prüfung anzueignen. Literaturempfehlungen *(direkt beim Rheinwerk-Verlag bestellen*) * Meine Hörbuch-Empfehlung der Woche: Deep Work: Rules for Focused Success in a Distracted World von Cal Newport bei Amazon (Affiliate)* * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Relationale Datenbanken - Häufige Fragen im Fachgespräch - Anwendungsentwickler-Podcast #17 SQL - Häufige Fragen im Fachgespräch - Anwendungsentwickler-Podcast #19 Datenbankmodellierung (Lernzielkontrolle zum Entity-Relationship-Modell) – Anwendungsentwickler-Podcast #48 Datenbankmodellierung (Lernzielkontrolle zum relationalen Tabellenmodell) – Anwendungsentwickler-Podcast #49 Wie funktioniert eigentlich eine relationale Datenbank? MariaDB – Wikipedia Zusammenfassung Datenbanken in der IT-Ausbildung Für den elften Teil meines Buchclubs zum Handbuch für Fachinformatiker von Sascha Kersten nehme ich Kapitel 13 zu Datenbanken durch. Die Aussagen zu Prüfungen und Produkten beziehen sich auf den Stand von Oktober 2016. Als IT-Azubi begegnet dir das Thema in schriftlichen Prüfungen ebenso wie im Fachgespräch und bei deiner Projektarbeit. Auch im damaligen gemeinsamen Prüfungsteil für die IT-Berufe kommen SQL-Aufgaben und gelegentlich Aufgaben zum Datenmodell vor. Grundlagen und relationale Datenbanken Du solltest erklären können, was eine Datenbank ist und welche Vorteile sie gegenüber einer Textdatei bietet. Zum Grundwissen gehören außerdem die Begriffe Stammdaten und Bewegungsdaten. Das Handbuch beschreibt sie kurz. Im Buch führt eine Einzeltabellendatenbank, etwa eine Excel-Tabelle, zu den relationalen Datenbanken hin. Für deine Prüfung solltest du folgende Inhalte beherrschen: Ein ER-Modell beschreibt ein Datenmodell auf einer abstrakten Ebene. Daraus lässt sich ein Tabellenmodell ableiten. Zum Tabellenmodell gehören Relationen sowie Primär- und Fremdschlüssel. Beziehungen können als 1:1, 1:n oder m:n vorliegen. Eine m:n-Beziehung wird im relationalen Modell über eine Zuordnungstabelle abgebildet. Auf Grundlage der Tabellen kannst du mit SQL Daten abfragen. Die Beispiele im Handbuch helfen dir, Tabellen und ihre Beziehungen zu verstehen. Zum Vertiefen empfehle ich weitere Quellen, weil diese Grundlagen häufig in Prüfungen vorkommen. Normalformen und Transaktionen Die erste bis dritte Normalform solltest du erklären und anhand von Beispielen zeigen können. Sie sind für die Praxis relevant und werden in mündlichen Prüfungen häufig abgefragt. Das Buch behandelt außerdem die Boyce-Codd-Normalform sowie die vierte und fünfte Normalform. In meinen bisherigen schriftlichen Prüfungen kamen die höheren Normalformen nicht vor. Im Fachgespräch kannst du damit zusätzliches Wissen zeigen; auch bei Datenmodellen im Arbeitsalltag können sie dir weiterhelfen. Bei Transaktionen und den ACID-Prinzipien brauchst du ebenfalls ein Verständnis, das über die kurzen Abschnitte im Handbuch hinausgeht. Du solltest jeden Bestandteil von ACID anhand eines Beispiels erklären können und wissen, welche Folgen es hat, wenn eine Eigenschaft verletzt wird. Das Buch greift die Prinzipien später im SQL-Teil erneut auf, behandelt sie insgesamt aber knapp. NoSQL und objektorientierte Datenbanken Das Handbuch konzentriert sich auf relationale Datenbanken. Für NoSQL empfehle ich ergänzende Fachliteratur, da diese Datenbanken auch in der Praxis eingesetzt werden. Zu den NoSQL-Typen zähle ich hier: objektorientierte Datenbanken, spaltenorientierte Datenbanken, dokumentenorientierte Datenbanken beziehungsweise Document Stores, Key-Value-Datenbanken, Graphdatenbanken. Du solltest ihren Aufbau und ihre Funktionsweise grob erklären können, einschließlich ihrer Vor- und Nachteile. Wenn du NoSQL in deiner Projektdokumentation erwähnst, etwa bei der Wahl eines Datenbanksystems, musst du deine Aussagen im Fachgespräch erläutern können. Objektorientierte Datenbanken erhalten im Handbuch vergleichsweise viel Raum. Für die Prüfung lege ich den Schwerpunkt auf relationale Datenbanken. SQL für die Prüfung Tabellen anlegen und verändern Mit der Data Definition Language, kurz DDL, legst du Tabellenstrukturen fest oder änderst sie. Das Handbuch zeigt dazu Befehle wie CREATE TABLE und ALTER TABLE; mit DROP TABLE entfernst du eine Tabelle. Es stellt außerdem Datentypen und Beispiele für die Syntax vor. Daten mit SELECT abfragen Nach meiner Erfahrung machen SELECT-Abfragen den größten Teil der SQL-Prüfungsaufgaben aus. Im Buch findest du dazu unter anderem: DISTINCT, Bedingungen mit WHERE und OR, Aggregatfunktionen, JOINs, einschließlich INNER JOIN und OUTER JOIN. Da Prüfungsaufgaben häufig mehrere Tabellen einbeziehen, solltest du JOINs gezielt üben. Für eine gründliche Vorbereitung empfehle ich zusätzliche Literatur und praktische Aufgaben. Daten schreiben und Rechte vergeben Mit INSERT fügst du Datensätze ein. UPDATE verändert vorhandene Daten, während DELETE Datensätze löscht. Auch diese Befehle gehören zum Prüfungsstoff. Das Kapitel zur MySQL-Administration enthält zudem GRANT-Statements. Diese SQL-Befehle lassen sich auf andere Systeme übertragen und sind als allgemeines SQL-Wissen interessant. MySQL, MariaDB und JDBC Die Abschnitte zu MySQL zeigen, wie du das System unter Linux oder Windows installierst. Weitere Seiten behandeln Benutzer:innen und deren Rechte sowie den Import und Export von Daten. Auch Konfigurations- und Logdateien kommen vor. Diese Inhalte helfen dir beim praktischen Betrieb eines Systems. Für die Prüfung stehen allgemeine Konzepte im Vordergrund. Produktspezifische Einstellungen und Abläufe ordne ich hier als Stoff für die Praxis ein. Im Unternehmen arbeite ich zum Zeitpunkt der Aufnahme mit MariaDB, einem Fork von MySQL. Nach meiner damaligen Erfahrung lassen sich die beschriebenen MySQL-Konfigurationen auch für MariaDB übernehmen. Der kurze Abschnitt zur Datenbankprogrammierung führt in JDBC, Java Database Connectivity, ein. Wenn du mit Java entwickelst, solltest du wissen, wie du damit auf eine Datenbank zugreifst. Die wenigen Seiten im Handbuch erfordern ergänzende Literatur, um das Thema gründlich zu lernen. Bücher und ergänzende Materialien CouchDB wird auf weniger als einer Seite als dokumentenorientierte Datenbank vorgestellt. Als weiteren bekannten Vertreter nennt das Kapitel MongoDB. Für einen breiteren Überblick empfehle ich dir Seven Databases in Seven Weeks. Das Buch verbindet Theorie mit praktischen Beispielen und behandelt relationale Datenbanken sowie NoSQL-Konzepte. Aus derselben Buchreihe empfehle ich auch Seven Languages in Seven Weeks. Meine ergänzenden Folgen zu ER-Modellen und Tabellenmodellen sowie zu SQL findest du in den Shownotes der Episode 78 unter anwendungsentwicklerpodcast.de. Dort stehen auch Links zu Artikeln und den erwähnten Büchern. Weitere Hinweise aus der Episode Unter dieperfekteprojektdokumentation.de biete ich meine Vorlage für die Projektdokumentation als Paket für Word und LibreOffice an. Die ODT-Version habe ich mit LibreOffice erstellt und dessen Funkt
36 Minuten
Die noch offenen Fragen zur Versionsverwaltung mit Git sind der Inhalt der siebenundsiebzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Vor jedem Commit prüfe ich mit git status und git diff, welche Dateien und Inhalte sich geändert haben. Über den Index wählst du aus, was in deinen nächsten Commit kommt, dessen Nachricht den fachlichen Grund beschreibt. Mit den passenden Git-Befehlen kannst du Commits übertragen und ältere Stände anschauen; Branches und Tags helfen dir dabei, parallel zu entwickeln und bestimmte Versionen wiederzufinden. Für die Arbeit in deinem Ausbildungsbetrieb klärst du außerdem, welche Repositories du bearbeiten darfst und welche Regeln für Commit-Nachrichten sowie Branches gelten. Kapitelmarken [00:00:20] Einstieg und Rückblick auf Commits [00:01:10] Änderungen mit git diff und git status prüfen [00:04:25] Arbeitskopie, Index und Repository [00:05:40] Änderungen auswählen und kleine Commits erstellen [00:07:09] Änderungen mit git add aufnehmen und committen [00:08:04] Commit-Nachrichten eingeben und fachlich begründen [00:10:34] Den letzten Commit mit amend korrigieren [00:11:45] Commits mit git push übertragen [00:12:46] Vor dem Push Änderungen mit git pull holen [00:14:33] Die Historie mit git log anschauen [00:15:24] Ältere Commits auschecken und die Arbeitskopie vorbereiten [00:18:21] Commits über ihren Hash auswählen [00:19:27] Branches und parallele Entwicklung [00:22:04] Entwicklungszweige durch einen Merge zusammenführen [00:23:18] Automatische Merges und manuelle Konfliktlösung [00:25:28] Der Hauptzweig master [00:26:03] Versionen mit Tags benennen [00:28:23] Fragen für deinen Ausbildungsbetrieb [00:29:11] Einsatzgebiete der Versionsverwaltung im Betrieb [00:29:56] Git am eigenen Arbeitsplatz einrichten [00:30:46] Repositories finden und Zugriffsrechte klären [00:31:53] Betriebliche Regeln für Commit-Nachrichten [00:32:52] Branching-Strategie und Namen der Branches klären [00:33:46] Git praktisch kennenlernen und weiterlernen [00:34:53] Shownotes und Fragen als Markdown-Datei Inhalt Allgemeine Fragen Welche Befehle musst du ausführen, um dir die aktuellen Änderungen in deiner Arbeitskopie anzuschauen? Welche Befehle musst du ausführen, um deine Änderungen zu "committen"? Was ist der Index? Wie ist eine sinnvolle Commit-Nachricht aufgebaut? Welche Befehle musst du ausführen, um Inhalte im letzten Commit zu korrigieren/ergänzen? Welche Befehle musst du ausführen, um deine eigenen Commits in ein entferntes Repository zu übertragen? Welche Befehle musst du ausführen, um den Inhalt deiner Arbeitskopie auf einen alten Commit zurückzusetzen? Welche Befehle musst du ausführen, um dir die Commit-Historie eines Repositorys anzuschauen? Was ist ein Branch? Was ist ein Merge? Wie heißt der Standard-Branch in Git? Wie in SVN? Was ist ein Tag? Fragen zum Ausbildungsbetrieb Wofür setzt dein Unternehmen Git/SVN ein? Was musst du tun, um Git an deinem eigenen Arbeitsplatz nutzen zu können? Wo kannst du dir die Repositorys deines Unternehmens anschauen? Welche besonderen Regeln für Commit-Nachrichten gibt es bei deinem Unternehmen? Welche Branching-Strategie verfolgt dein Unternehmen? Literaturempfehlungen Git Tutorial – The Ultimate Guide (Julen Pardo) * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Wie man eine gute Git-Commit-Nachricht schreibt Ein sinnvoller Git-Workflow Zusammenfassung Änderungen vor dem Commit prüfen Vor meinen Commits führe ich git status und anschließend git diff aus. Damit kontrolliere ich, ob die vorgesehenen Dateien und Inhalte zum nächsten Commit gehören. git status zeigt dir, welche Dateien sich geändert haben. git diff zeigt die Unterschiede zeilenweise mit etwas Kontext. Farblich hervorgehobene Stellen helfen dir, hinzugefügte oder entfernte Inhalte zu erkennen. Dabei kannst du auch Schreibfehler und falsche Einrückungen entdecken. Ein Commit hält einen Versionsstand fest. Dazu gehören die betroffenen Dateien sowie Metadaten, etwa die Nachricht, das Datum und der/die Autor:in. Über den Index festlegen, was du committest Wenn du Dateien in deiner Arbeitskopie bearbeitest, kannst du die gewünschten Inhalte anschließend in den Index, auch Stage genannt, aufnehmen. git commit erstellt daraus einen Commit im lokalen Repository. Du kannst ganze Dateien oder einzelne geänderte Zeilen auswählen. Hast du in einer Datei an mehreren Features gearbeitet, lässt sich dadurch für jedes Feature ein eigener Commit erstellen. Kleine, fachlich zusammenhängende Commits lassen sich leichter beschreiben. Auch beim späteren Merge mit den Änderungen anderer Entwickler:innen bleiben sie überschaubar. Für den gezeigten Ablauf verwendest du: bash git add . --all git commit Mit git add . --all übernimmst du die Änderungen im aktuellen Verzeichnis in den Index, einschließlich gelöschter Dateien. Danach erstellt git commit den Commit und öffnet einen Texteditor für die Commit-Nachricht. Wenn du die Nachricht direkt auf der Kommandozeile eingeben möchtest, verwendest du: bash git commit -m "Deine Commit-Nachricht" Den fachlichen Grund in die Commit-Nachricht schreiben In deiner Commit-Nachricht hältst du fest, warum du etwas geändert hast. Das kann eine geänderte Anforderung aus dem Fachbereich sein oder ein Fehler, den du beheben musstest. Git speichert bereits, welche Inhalte geändert wurden und wer sie wann bearbeitet hat. Durch deine Nachricht wird auch der Anlass nachvollziehbar, sodass dein:e Kolleg:in den Commit später einordnen kann. Weitere Regeln zum Aufbau und zur Formulierung von Commit-Nachrichten sind in meinen Shownotes verlinkt. Den letzten Commit korrigieren Wenn dir unmittelbar nach einem Commit ein Fehler auffällt und du ihn noch nicht an das entfernte Repository übertragen hast, kannst du ihn mit folgendem Befehl bearbeiten: bash git commit --amend Damit lässt sich beispielsweise ein Tippfehler in der Commit-Nachricht korrigieren. Auch der Inhalt des letzten Commits kann angepasst werden. Für das beschriebene Vorgehen befindet sich deine Arbeitskopie zunächst auf dem Stand dieses Commits. Commits an das Remote Repository übertragen Mit git push überträgst du deine lokalen Commits an ein entferntes Repository. Git kann mit mehreren Remote Repositories arbeiten. Als ausdrücklich angegebenes Ziel wird hier folgendes Beispiel verwendet: bash git push origin master Bei passend konfiguriertem Git reicht git push aus. Wenn ein:e Kolleg:in zwischenzeitlich neue Commits übertragen hat, musst du diese zunächst lokal übernehmen. Git kann deinen Push sonst ablehnen, weil dir Änderungen aus dem Remote Repository fehlen. Ich führe deshalb vor jedem Push einen Pull aus: bash git pull git push Dafür habe ich mir den eigenen Alias git pp eingerichtet, der beide Schritte nacheinander ausführt. Eigene Aliase werden in einer Konfigurationsdatei hinterlegt. Die Historie und ältere Stände anschauen Über git log kannst du die Commit-Historie durchgehen. Die neuesten Commits stehen oben. Du findest dort Angaben zu den Autor:innen und zum Zeitpunkt sowie die Commit-Nachrichten. Möchtest du einen früheren Stand anschauen oder darin etwas ausprobieren, kannst du dessen Hash aus der Log-Ausgabe übernehmen: bash git checkout Git holt die Dateien dieses Commits aus deinem lokalen Repository in die Arbeitskopie. Ein eindeutig zuordenbarer Anfang des Hashes reicht dafür aus; häufig genügen sechs bis sieben Zeichen. Für diesen Ablauf brauchst du eine saubere Arbeitskopie, in der deine Änderungen bereits committet sind. Wenn beim Wechsel noch offene Änderungen verloren gehen würden, verweigert Git viele entsprechende Befehle. Mit git checkout kannst du auch wieder einen neueren Commit auswählen. In Branches parallel entwickeln Wenn du ein Feature getrennt vom Hauptentwicklungszweig ausprobieren möchtest, kannst du dafür einen Branch anlegen. Darin entstehen eigene Commits, während der Hauptzweig weiterentwickelt werden kann. Später kannst du das Feature übernehmen oder verwerfen. Branches sind in Git leichtgewichtig, weil sie als Zeiger auf Commits dienen. Das Anlegen und Wechseln geht dadurch schnell. Eine mögliche Arbeitsweise besteht darin, für jedes Feature einen eigenen Branch zu erstellen. Der Hauptzweig trägt im beschriebenen Ablauf den Namen master. Bei Subversion heißt der entsprechende Stamm trunk. Branches zusammenführen und Konflikte lösen Durch einen Merge führst du Entwicklungszweige zusammen. Der beschriebene Merge-Commit hat zwei Parent-Commits, sodass beide Entwicklungswege in der Historie verbunden bleiben. Git kann viele Änderungen automatisch zusammenführen. Das gilt beispielsweise, wenn unterschiedliche Dateien bearbeitet wurden oder wenn Änderungen verschiedene Stellen derselben Datei betreffen. Haben zwei Entwickler:innen dieselbe Zeile unterschiedlich geändert, kann ein Konflikt entstehen. Dann entscheidest du, welchen Inhalt die Datei erhalten soll. Dafür kann auch eine neue gemeinsame Lösung erforderlich sein. Versionen mit Tags benennen Für eine veröffentlichte Version kannst du dem zugehörigen Commit einen Tag geben, etwa v1.0. Dieser Name verweist auf einen bestimmten Stand und erleichtert dir, ihn später wiederzufinden. bash git tag v1.0 git checkout v1.0 Der Tag-Name lässt sich beim Checkout als Verweis auf die gewünschte Version angeben. Tags können auch in der Log-Ausgabe erscheinen. Fünf Fragen für deinen Ausbildungsbetrieb Diese Fragen habe ich meinem IT-Azubi mitgegeben, damit er die betrieblichen Abläufe mit Kolleg:innen klärt. Die Antworten bekommst du direkt in deinem Ausbildungsbetrieb. Wofür wird Versionsverwaltung eingesetzt? Kläre, welche Software eingesetzt wird und welche Inhalte damit versioniert werden. In meinem Betrieb werden beispielsweise auch Dokumente im Fachbereich mit Subversion verwaltet. Git kommt unter anderem für Quellcode und Textdokumente zum Einsatz. Wie richtest du deinen Arbeitsplatz ein? Frage dein:e Ausbilder:in oder eine:n Administrator:in,...
37 Minuten
Einige grundsätzliche Fragen zur Versionsverwaltung mit Git sind der Inhalt der sechsundsiebzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Ich führe dich als IT-Azubi in die Grundlagen von Git ein, damit du Änderungen an deinem Quellcode nachvollziehen und gespeicherte Stände wiederherstellen kannst. Git hält die Projekthistorie lokal vor, wodurch du auch offline arbeiten und eigene Commits vor dem Teilen korrigieren kannst. Du erfährst, wie Repository und Arbeitskopie zusammenhängen, wie du mit git clone und git pull einsteigst und welche Informationen zu einem Commit gehören. Kapitelmarken [00:00:01] Einführung in Git [00:00:33] Fragen zum Selbstlernen und Material zum Herunterladen [00:01:57] Git in der Ausbildung und im Betrieb [00:03:14] Tutorials und weiterführende Lernangebote [00:04:58] Allgemeine Grundlagen und betriebliche Fragen [00:06:14] Wozu Versionsverwaltung dient [00:07:55] Gespeicherte Stände und Änderungen nachvollziehen [00:11:09] Subversion als zentrale Versionsverwaltung [00:12:01] Lokal und offline mit Git arbeiten [00:14:10] Eigene Versionen korrigieren und lauffähige Stände teilen [00:16:11] Repository und der Ordner .git [00:19:44] Ein Repository mit git clone kopieren [00:23:06] Die Arbeitskopie und ältere Stände auschecken [00:25:42] Änderungen mit git pull holen [00:27:49] Commits und ihre Kennung [00:29:09] Hashes als Prüfsummen und Commit-IDs [00:31:45] Angaben im Commit und Parent-Commits [00:33:45] Weitere Fragen und Fortsetzung der Git-Einführung [00:34:58] Podcast-Empfehlung Together We Make IT [00:36:01] Git für eigene Projekte und Texte Inhalt Allgemeine Fragen Wofür braucht man eine Versionsverwaltungssoftware? Was sind die Vorteile einer Versionsverwaltungssoftware? Was ist SVN? Was ist Git? Was sind die Vorteile von Git gegenüber SVN? Was ist ein Repository? Welche Befehle musst du ausführen, um dir ein Repository zu klonen? Was ist eine Arbeitskopie? Welche Befehle musst du ausführen, um deine Arbeitskopie aus einem entfernten Repository zu aktualisieren? Was ist ein Commit? Literaturempfehlungen Git Tutorial – The Ultimate Guide (Julen Pardo) * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Git Git Cheat Sheet Zusammenfassung Git in deiner IT-Ausbildung Für meine IT-Azubis habe ich Fragen zusammengestellt, die du mithilfe eines Tutorials selbst bearbeitest und anschließend mit meinen Antworten abgleichst. Dabei geht es um die Grundlagen von Git sowie um Regeln, die du für die Arbeit in deinem Ausbildungsbetrieb kennen musst. Versionsverwaltung gehört zum Handwerkszeug als Fachinformatiker:in Anwendungsentwicklung und ist auch für die Prüfung relevant. Ich arbeite bei neuen Projekten mit Git und verwalte damit auch eigene Texte. In meinem Betrieb kommt Git für die meisten Repositories zum Einsatz; einige ältere Projekte liegen noch in Subversion. Dateien versionieren und Änderungen nachvollziehen Wenn du an einem Programm weiterarbeitest, kannst du einzelne Stände in einer Versionsverwaltung speichern und später wiederherstellen. Die Historie zeigt dir, welche Person eine Datei zu welchem Zeitpunkt verändert hat. Eine aussagekräftige Commit-Nachricht hält außerdem fest, warum etwas geändert wurde. Änderungen ansehen: Ein Diff zeigt die Unterschiede zwischen zwei Ständen. Bei Textdateien lassen sich hinzugefügte oder entfernte Zeilen gezielt erkennen, etwa wenn ich einen Text von dir korrigiere. Zu einem gespeicherten Stand zurückkehren: Falls du beim Ausprobieren eine Datei löschst oder dein Programm beschädigst, kannst du einen früheren Stand wiederherstellen. Fehler untersuchen: Über die Historie findest du heraus, wer eine betroffene Codezeile zuletzt bearbeitet hat und in welchem Zusammenhang das passiert ist. Quellcode im Browser ansehen: Über eine passende Weboberfläche kannst du Dateien und ihre Änderungen durchgehen. Textdateien eignen sich besonders gut zum Versionieren, weil sich ihre Unterschiede zeilenweise darstellen lassen. Auch Bilder und andere binäre Dateien können verwaltet werden, wobei neue Stände mehr Speicherplatz beanspruchen können. Wie Subversion und Git arbeiten Subversion Bei Subversion, kurz SVN, liegt das Repository auf einem zentralen Server. Du bearbeitest deine Dateien lokal und überträgst einen fertigen Stand an diesen Server, der die neue Version mit den zugehörigen Angaben speichert. Für solche Schritte muss der Server erreichbar sein. Die gespeicherten Versionen heißen Revisionen und erhalten fortlaufende Nummern. Git Mit Git liegt die gesamte Projekthistorie auf deiner Festplatte. Dadurch kannst du offline neue Versionen erzeugen und frühere Änderungen ansehen. Viele Arbeitsschritte laufen lokal und entsprechend schnell ab. Solange du eigene Commits noch mit niemandem geteilt hast, kannst du sie korrigieren, beispielsweise wenn du eine Datei vergessen hast. Für die Zusammenarbeit lässt sich dein lokales Repository mit einem entfernten Remote-Repository abgleichen. Dort liegen deine Daten zusätzlich außerhalb deines Rechners. Bevor du einen Stand mit Kolleg:innen teilst, sollte das Programm lauffähig und zumindest kompilierbar sein, damit sie damit weiterarbeiten können. Repository und Arbeitskopie Im Repository, häufig kurz Repo genannt, speichert Git die Versionen deines Projekts samt Historie. Du kannst es dir als Datenbank vorstellen. Lokal liegen diese Informationen im Ordner .git innerhalb deines Projektverzeichnisses. Wenn du diesen Ordner löschst oder seinen Inhalt von Hand veränderst, kannst du deine lokale Historie verlieren oder beschädigen. Lass Git diesen Ordner verwalten. In der Arbeitskopie liegen die Dateien eines konkreten Stands, die du im Editor öffnest und bearbeitest. Nach dem Klonen stellt Git normalerweise den aktuellen Stand bereit. Du kannst auch eine ältere Version auschecken, etwa um dort einen Fehler zu untersuchen oder einen Patch einzuspielen. Wenn du Dateien in deiner Arbeitskopie bearbeitest, musst du die Änderungen anschließend ausdrücklich als neue Version im Repository speichern. Ein vorhandenes Projekt holen Mit git clone kopierst du ein vorhandenes Repository auf deinen Rechner. Die Adresse kann beispielsweise auf einen lokalen Pfad oder auf ein Repository zeigen, das über HTTPS beziehungsweise SSH erreichbar ist. Welche Adresse und welchen Zugang du brauchst, klärst du in deinem Ausbildungsbetrieb. Beim normalen Klonen erhältst du die vollständige Historie des entfernten Repositories und eine Arbeitskopie, in der du direkt weiterarbeiten kannst. Bei großen Projekten dauert das Herunterladen entsprechend länger. Neue Änderungen holen Wenn Kolleg:innen neue Stände im Remote-Repository bereitgestellt haben, holst du sie mit git pull. Im beschriebenen einfachen Fall, in dem du zwischenzeitlich selbst nichts geändert hast, gelangen die neuen Versionen in dein lokales Repository und deine Arbeitskopie wird aktualisiert. Mit Push überträgst du eigene Versionen an ein Remote-Repository, um sie dort bereitzustellen. Was zu einem Commit gehört Eine gespeicherte Version heißt bei Git Commit. Zu ihr gehören: der gespeicherte Stand der Dateien, die Angaben zum/zur Autor:in und der Zeitpunkt, die Commit-Nachricht, der Bezug zum vorherigen Commit, dem Parent-Commit. Ein Commit kann auch zwei Parent-Commits haben. Dieses Thema folgt später. Git berechnet aus den zugehörigen Informationen einen Hash, der als Commit-ID dient. Eine Hashfunktion erzeugt aus Daten variabler Länge einen Wert fester Länge, der sich als Prüfsumme verwenden lässt. Schon kleine Änderungen an den Ausgangsdaten führen bei einem geeigneten Verfahren zu einem deutlich anderen Hash. Die Commit-ID wird hexadezimal dargestellt. Um die zeitliche Reihenfolge der Commits nachzuvollziehen, brauchst du die Historie und die Beziehungen zu den Parent-Commits. Über die ID kannst du einen gespeicherten Commit gezielt aufrufen. Material zum Selbstlernen In meinen Shownotes zur Episode 76 findest du die Fragen und weiterführende Links. Über meinen Newsletter erhältst du die Fragen auch als Markdown-Datei zum Bearbeiten oder Ausdrucken. Java Code Geeks: Das kostenlose Git-Tutorial umfasst ungefähr 40 Seiten und enthält Beispiele zum Mitmachen. Pro Git von Scott Chacon: Das Buch ist als kostenloses E-Book und als gedruckte Ausgabe erhältlich. Pluralsight: Ich verweise auf einen Einstiegskurs und erwähne einen weiteren Kurs zu den internen Abläufen von Git. Die weiteren Fragen folgen in einer nächsten Episode. Dazu gehören auch betriebliche Konventionen und der Zugang zu den Repositories deines Ausbildungsbetriebs. Für weitere IT-Grundlagen empfehle ich Together We Make IT. Dort werden unter anderem Firewall und Cloud Computing verständlich behandelt. Die Folgen dauern meist etwa 20 bis 30 Minuten und enthalten Begriffe, die dir auch bei der Abschlussprüfung begegnen. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:01] Herzlich Willkommen zum Anwendungsentwickler-Podcast, den Podcast rund um die Ausbildung zum Fachinformatiker für Anwendungsentwicklung. [0:10] In dieser Episode gibt es eine Einführung in die Versionsverwaltungssoftware Git. Viel Spaß dabei! [0:20] Hallo und herzlich Willkommen zur 76. Episode des Anwendungsentwickler-Podcasts. [0:26] Mein Name ist Stefan Macke und heute mache ich mal was Neues, was ich bislang noch nicht gemacht habe hier im Podcast. [0:33] Ich habe nämlich mal mir ein fachliches Thema vorgenommen und zwar Git, die Versionsverwaltungssoftware Git, die du vielleicht sogar schon kennst oder ich hoffe es mal, ist ja sehr verbreitet heutzutage. [0:41] Und ich habe mir mal so ein paar Fragen dazu aufgeschrieben, die ich vor ein, zwei Wochen meinem aktuellen Azubi mitgegeben habe, [0:48] damit er sich mal mit einem Tutorial, was ich ihm gleich mitgeschickt habe, so ein bisschen darauf vorbereitet, quasi selbst so ein bisschen recherchiert, ausprobiert, das Ding abarbeitet und dann mir die Fragen beantwortet. ...