Seminarinformationen
Seminar - Ziel
In dieser 4-tägigen Schulung „LFD301 Einführung in Linux, Open-Source-Entwicklung und GIT" lernen Sie, Ihre Karriere in der Linux-Entwicklung erfolgreich zu starten – die Nachfrage nach Linux-Entwicklern ist so hoch wie nie zuvor. Dieser Kurs führt Sie in die Welt der Linux-Entwicklung ein und vermittelt Ihnen den notwendigen Hintergrund sowie die praktische Ausbildung, um sicher mit Linux arbeiten zu können. Wenn Sie darüber nachdenken, in die Linux-Entwicklung einzusteigen, ist dies der ideale Einstiegskurs.
In diesem Kurs lernen Sie die Geschichte von Linux kennen und verstehen, was es von anderen UNIX-ähnlichen Betriebssystemen unterscheidet. Sie erhalten einen Überblick über die zentralen Bestandteile eines Linux-Systems und deren Anwendung. Darüber hinaus werden die Grundlagen der Systemadministration behandelt, darunter Benutzer- und Gruppenverwaltung, essenzielle Linux-Befehle, Dateisysteme, Sicherheit sowie weiterführende Themen. Weitere Inhalte umfassen Netzwerk- und Threading-Modelle, Aspekte des Kompilierens und der Nutzung von Bibliotheken sowie die Arbeit mit Java unter Linux und weitere praxisrelevante Entwicklungsaspekte.
Der Arbeitsmarkt für Linux-Entwickler ist derzeit sehr stark nachgefragt. Dieser Kurs bereitet Sie gezielt darauf vor, sich den Reihen professioneller Linux-Entwickler anzuschließen.
Teilnehmer - Zielgruppe
Kurs - Voraussetzungen
Dieser Kurs richtet sich an Teilnehmer, die bereits erfahrene Computeranwender eines anderen Betriebssystems sind, jedoch nur geringe oder keine Erfahrung in einer Linux-Umgebung haben.
Seminardauer
- 4 Tage
- 09:00 Uhr bis 17:00 Uhr
Schulungsunterlagen
Seminar-Inhalt / Agenda
Einführung
- Ziele und Zielgruppe
- Wer du bist?
- The Linux Foundation
- Urheberrecht und keine vertraulichen Informationen
- Linux Foundation Training
- Zertifizierungsprogramme und Digital Badging
- Die Linux Foundation THRIVE-ONE-Abonnements
- Linux Distributions
- Platformen
- Vorbereiten deines Systems
- Benutzen und runterladen einer virtuellen Maschine
- Dokumentation und Links
- Änderungen in Linux und Open Source Projects
Open Source Software
- Was ist Open Source Software?
- Was ist proprietäre (Closed Source) Software?
- Pragmatismus vs. Idealismus
- Geschichte der Open Source Software
- Open Source Governance-Modelle
Warum Open Source Software nutzen?
- Kollaborative Entwicklung
- Sicherheit und Qualität des Quellcodes
- Nutzer: Flexibilität
- Unternehmen: Kollaborative Entwicklung
- Business: Marketing
- Bildung: Schulen (K-12) / öffentliche Systeme
- Bildung: Universität
- Entwickler: Größere Sichtbarkeit
- Labs
Beispiele erfolgreicher OSS-Projekte
- Linux Kernel
- git
- Apache
- Python, Perl und andere Programmiersprachen
- TeX und LaTeX
- GNU: gcc, gdb etc.
- X und Desktop-Umgebungen
- OpenStack, Kubernetes und andere Projekte
Arbeiten in OSS-Projekten
- Überblick über korrekte Beitragsprozesse
- Woher kommt der Code: DCO und CLA
- Nah an der Mainline für Sicherheit und Qualität bleiben
- Projekt-DNA studieren und verstehen
- Herausfinden, welches Problem man lösen möchte
- Maintainer und deren Workflows und Methoden identifizieren
- Früh Feedback einholen und offen arbeiten
- Kleine inkrementelle Beiträge statt großer Code-Dumps
- Ego zurückstellen: nicht empfindlich reagieren
- Geduldig sein, langfristige Beziehungen aufbauen, hilfreich sein
Continuous Integration
- Warum Continuous Integration?
- Kontinuierliche Bereitstellung und Auslieferung
- Kosten und Nutzen
- Tools
- Beispiel: Linux Kernel Continuous Integration Project
- The Continuous Delivery Foundation
OSS-Lizenzierung und rechtliche Aspekte
- Restriktive vs. permissive Lizenzierung
- FUD (Fear, Uncertainty and Doubt)
- Softwarepatente
- Patente und Lizenzen
- Auswahl einer Lizenz
- Kombination von Lizenzen
- Labs
Führung vs. Kontrolle und warum Projekte scheitern
- Führung vs. Kontrolle
- Lockerung von Kontrolle
- Mentoring
- Vertrauen aufbauen
- Warum OSS-Projekte scheitern
- Labs
GitHub und andere Hosting-Anbieter
- GitHub
- Öffentlich vs. privat
- GUI vs. Kommandozeile
- Labs
Linux und das Betriebssystem
- Kernel vs. Betriebssystem und Tools
- Geschichte von Linux
- UNIX und Linux
- Linux-Distributionen
- Linux Standard Base (LSB)
- Labs
Grafische Umgebungen und Schnittstellen
- Grafische Ebenen
- X Window System
- Window Manager
- Desktop-Manager
- Terminal-Fensteroptionen
- Labs
Systemadministration
- Installation
- Softwareverwaltung und Packaging
- Upgrades und Patching
- Benutzerverzeichnisse, Umgebungen etc.
- Log-Dateien
Hilfe finden
- Dokumentationsquellen
- man Pages
- info
- --help und help
- Grafische Schnittstellen
Texteditoren
- Verfügbare Editoren
- vi
- emacs
Shells, Bash und Kommandozeile
- Shells
- Shell-Initialisierung
- Aliase
- Umgebungsvariablen
- Anpassung der Kommandozeilen-Prompt
- Sonderzeichen
- Umleitung (Redirection)
- Pipes
- Command Substitution und Ausdrücke
Dateisystemstruktur, Partitionen, Pfade und Links
- Dateisystemstruktur
- Partitionen
- Überlegungen zur Partitionierung
- Pfade
- Hard- und Softlinks (symbolische Links)
Systeminitialisierung
- Systemstart
- Systeminitialisierung
Speicher- und Performance-Konzepte
- Speicher
- Swap
- Threading-Modelle
Netzwerke
- Netzwerk und Netzwerkschnittstellen
Wichtige Kommandos und Utilities
- Basis-Kommandos und Utilities
- Dateiübertragungs-Tools
- Monitoring- und Performance-Tools
- Grafische Monitoring-Tools
- Kernel-Module laden/entladen
- Geräteverwaltung
- Systemdienste verwalten
Benutzer, Gruppen und Berechtigungen
- Grundlagen von Benutzern und Gruppen
- Benutzer und Gruppen hinzufügen/entfernen
- Dateien, Benutzer und Berechtigungen
- root Benutzer, su und sudo
Linux-Dateisysteme
- Dateisysteme und VFS
- ext2, ext3 und ext4
- Journaling-Dateisysteme
- btrfs
- Einhängen (Mounting) von Dateisystemen
- RAID
- LVM
Wichtige Kommandozeilen-Tools
- Dateien und Verzeichnisse auflisten, erstellen, löschen, umbenennen
- Dateien finden: find und locate
- Text suchen: grep
- Text ersetzen: sed
Bash Scripting
- Script-Grundlagen
- Bedingungen (Conditionals)
- Schleifen (Loops)
- Funktionen
Dateien und Berechtigungen
- Dateitypen
- Berechtigungen und Zugriffsrechte
- Berechtigungen und Ownership ändern
Kompilieren, Linken und Libraries
- gcc
- Weitere Compiler
- Wichtige gcc Optionen
- Statische Bibliotheken
- Dynamische Bibliotheken (Shared Libraries)
- Linking von Libraries
- Debugging mit gdb
Java Installation und Umgebung
- Write Once and Use Anywhere?
- Java Installation unter Linux
- Umgang mit mehreren JREs und JDKs (alternatives System)
- Umgebungsvariablen und Classpaths
- Integrierte Entwicklungsumgebungen (IDE)
RPM- und Debian-Pakete bauen
- Warum Package Management nutzen?
- Vorteile von Packaging-Systemen
- Linux-Distributionen und Package Management
- RPM Erstellung
- RPM spec Datei
- Details zu spec Sections
- RPM Abhängigkeiten
- Debian Package Workflow
Einführung in Git
- Versionsverwaltung
- Die Herkunft der Quellcodes nachvollziehen: DCO CLA
- Verfügbare Versionsverwaltungssysteme
- Grafische Benutzeroberfläche
- Dokumentation
Git und Versionskontrollsysteme
- Konvertieren zwischen zwei verschiedenen Systemen
- RCS and CVS
- Subversion
- git
- Git und verteilende Entwicklung
Using Gilt. Beispiele
- Basis Kommandos
- Einfache Beispiele
Git Installation
- Binäre Installation
- Installieren aus dem Quellcode
Git Konzepte und Architektur
- Konzepte
- Design-Features
- Repositories
- Objekte und Index
- Content vs. Pfadnamen
- Commit vs. Publishing
- Upstream und Downstream
- Forking
Dateien und Index verwalten
- Dateikategorien
- Basis-Dateikommandos
Commits
- Commit erstellen
- Identifiers und Tags
- Commit-Historie anzeigen
- Revert und Reset
- Repositories bereinigen
- Wer ist verantwortlich? (Blame)
- Bisecting
Branches und Diffs
- Was ist ein Branch?
- Branch-Namen vs Tags
- Branch erstellen
- Branch Checkout
- Frühere Versionen von Dateien wiederherstellen
Diffs
- Differenzieren von Dateien
- Diffing in Git
Merging und Rebase
- Was ist Merging?
- Merge-Kommandos
- Rebase
Remote Collaboration
- Arbeiten mit anderen
- Cloning
- Projekt veröffentlichen
- Fetching, Pulling
Patch-basierte Entwicklung
- Warum Patches verwenden?
- Patches erzeugen
- E-Mail Versand
- Patches anwenden
Erweiterte Git Interfaces: Gerrit
- Modi verteilter Entwicklung
- Gerrit
- Review-Prozess
Abschluss und Evaluationsumfrage
Weitere Schulungen zu Thema Linux Foundation
- u.a. in Nürnberg, Berlin, Stuttgart, München, KölnIn diesem 3-tägigen Seminar „LFD459 Kubernetes für App-Entwickler“ lernen Sie, wie Sie Anwendungen in einem Multi-Node-Cluster containerisieren, hosten, bereitstellen und konfigurieren. Sie beginnen mit einem einfachen Python-Skript, definieren Anwendungsressourcen und ...
- u.a. in Nürnberg, Berlin, Stuttgart, München, KölnIn diesem 4-tägigen Seminar „LFS458 Kubernetes Administration“ erhalten Sie fundiertes Wissen zu den grundlegenden Konzepten und herstellerunabhängigen Werkzeugen für den Aufbau und die Verwaltung von Kubernetes-Clustern in Produktionsumgebungen. Sie setzen sich mit ...
- u.a. in Paderborn, Düsseldorf, Mannheim, Virtual Classroom, MarburgIn diesem 4-tägigen Seminar „LFD420 Linux Kernel Internals und Development“ erwerben Sie ein tiefgehendes Verständnis für die Entwicklung im Linux-Kernel. Sie lernen die Architektur von Linux kennen, machen sich mit grundlegenden Entwicklungsmethoden im Kernel vertraut ...
- u.a. in Paderborn, Zürich, Dresden, Essen, ErfurtIn dieser 4‑tägigen Schulung „LFD473 PyTorch in Practice: An Applications-First Approach" liegt der Fokus darauf, Ihnen praxisorientierte Kenntnisse zu PyTorch zu vermitteln und Sie zu befähigen, KI‑Applikationen zu prototypen. Sie starten mit der Entwicklung von ...