Python für Ingenieure – Kurs 65.000 Rubel. von Slurm, Ausbildung 3 Monate, Datum 15. Januar 2024.
Verschiedenes / / November 27, 2023
Techlead, Dateningenieur bei Skyeng / ehemals Slurm, ISPsystem, Grid Dynamics
Sr. Softwareentwickler bei Test, Auriga, ehemaliges ISPsystem
#1: Grundlegende Python-Syntax und -Strukturen
Warum: Die Logik von Python-Programmen verstehen zu lernen und einfache Programme zu schreiben, ist die wichtigste Aufgabe. „Großartig“, wenn Sie mit der Python-Syntax nicht vertraut sind.
- Datentypen und Variablen, veränderliche/unveränderliche und einfache/zusammengesetzte Datentypen, Debugging-Techniken.
- Bedingte Anweisung – logische Operatoren, einfache Bedingungen, verschachtelte Bedingungen und Ersetzung von Switch-Anweisungen.
- Grundlegende Schleifen – while- und for-Schleifen, Iteratoren, Schleifeninterrupts.
- Funktionen, Methoden von Strings, Listen und Wörterbüchern.
- Ausnahmen generieren und behandeln.
Übung: eine Reihe kleiner Mikroaufgaben für jede Lektion.
#2: Verbesserte Python-Kenntnisse: Optimierungen und OOP
Warum: Lassen Sie uns die Funktionen von Python beherrschen – ihnen ist es zu verdanken, dass es so einfach und praktisch ist. Wir werden auch die Bedeutung dieser drei Buchstaben (wir sprechen von OOP) enthüllen, ohne akademische Theorie und mit einem klaren Zweck
- Fortgeschrittene Arbeit mit Schleifen – Yield-Anweisung und Generatoren, Einblicke in Schleifen in Python, else-Anweisung in einer Schleife, Optimierung von Comprehensions-Schleifen usw.
- Spezielle Arten von Strukturen: Frozendict, Defaultdict usw.
- Grundlegende OOP-Konzepte: Klassen, Klasseninstanzen, Kapselung, Vererbung und Polymorphismus.
- Kontextmanager für Ihre Typen erstellen: das with-Konstrukt.
Übung: eine Reihe kleiner Mikroaufgaben für jede Lektion.
Fortgeschrittene Praxis: Service-Nutzungsaudit.
Der CTO begann zu vermuten, dass einige Dienste von den Teams nicht mehr genutzt wurden. Das Problem ist, dass das Modul zur Überwachung genutzter Dienste seit zehn Jahren nicht mehr aktualisiert wurde: Das ist nicht der Fall kann aggregierte Daten hochladen und das Format der zurückgegebenen Werte entspricht nicht den allgemein akzeptierten Standards. Sie wurden ausgewählt, um die erfassten Metriken zu extrahieren, sie nach Typ und Team zusammenzufassen und diese Informationen dem CTO für eine erste Einschätzung des Ausmaßes des Problems zur Verfügung zu stellen.
#3: Netzwerkverbindungen
Warum: Fast jeder Dienst verfügt über eine Schnittstelle für die Verbindung über ein Netzwerkprotokoll. Und ohne Verbindung ist Interaktion unmöglich. Glücklicherweise verfügt das Python-Ökosystem über Clientmodule für fast jedes Protokoll.
- Pip-Paket und Installation von Modulen von Drittanbietern.
- Paramiko-Modul zum Ausführen von Befehlen über SSH.
- Das Anforderungsmodul zum Senden von HTTP-Anfragen.
- Übersicht über Module für die Arbeit mit Datenbanken und Message Brokern.
Üben. Das Entwicklungsteam führt eine neue Methodik ein: Wenn Sie zulassen, dass eine Warnung auftritt, erhalten Sie eine Aufgabe. Das analytische Subsystem sucht nur nach ausgewählten Fehlern und sendet Meldungen darüber an den Kafka-Nachrichtenbroker. Ihre Aufgabe besteht darin, den Zyklus der Rückmeldung von Fehlern an Entwickler abzuschließen: Ihr Verbraucher sollte automatisch Aufgaben mit der erforderlichen Beschreibung und Priorität in Trello erstellen.
Nr. 4: Arbeiten mit Text in verschiedenen Formaten
Warum: Die Verbindung zum Dienst ist nur die halbe Miete. Die andere Hälfte ist der Informationsaustausch. Und Informationen sind oft eine Reihe von Textzeichen in einem bestimmten Format. Module helfen Ihnen beim Dekodieren und Kodieren. Sie benötigen nicht alle Informationen? Mithilfe regulärer Ausdrücke können Sie das Wichtige extrahieren und den Rest verwerfen.
- Das re-Modul und reguläre Ausdrücke.
- Module zum Arbeiten mit Daten in verschiedenen Formaten: getrennte Werte, JSON, Yaml, XML.
- Verwenden von Befehlszeilenargumenten: argparse-Modul.
Übung: Erstellen einer Quelle für Dienstnutzungsdaten.
Bei der Prüfung der Nutzung von Dienstleistungen haben Sie wichtige Informationen für das Unternehmen identifiziert, sogar der CEO hat Interesse geweckt. Es wurde beschlossen, das verlorene Geld zu analysieren und zu verhindern, dass sich solche Situationen wiederholen. Dazu müssen Sie den Analysten ein Datenerfassungstool zur Verfügung stellen, damit sie Berichte erstellen können. Das Problem besteht darin, dass das Überwachungsmodul Servicelimits für eine separate Anfrage im Yaml-Format zurückgibt und Preise für Services vom Abrechnungssystem im XML-Format zurückgegeben werden. Es ist notwendig, Daten zur aktuellen Auslastung mit Limits und Preisen zu kombinieren. Die Analyseabteilung forderte aggregierte Informationen im JSON-Format mit der Möglichkeit, ein Zeitintervall und einen Aggregationsschritt anzugeben.
Nr. 5: Interaktion mit dem Betriebssystem
Warum: Die Bedeutung der Interaktion mit dem Betriebssystem muss nicht weiter erläutert werden. Wie Sie es mit Python verbinden, erfahren Sie in dieser Lektion.
- Dateien lesen und schreiben.
- OS-Modul - Umgebungsvariablen lesen, mit Verzeichnissen und Rechten arbeiten, mit Prozessen arbeiten.
- Das Unterprozessmodul zur interaktiven Interaktion mit Prozessen.
Praxis: Automatische Bereitstellung des Zugriffs auf Server.
Während der Kampagne zur Aufgabe ungenutzter Dienste kam es zu einer merkwürdigen Situation: einem Lebensmittelverkäufer Teams wurden heruntergefahren, aber das Infrastrukturteam nutzte es regelmäßig als Host für Inszenierung. Es stellte sich heraus, dass das Produktteam es nicht nutzte, weil in regelmäßigen Abständen jemand seine Einstellungen mit seinen eigenen überschrieb. Es wurde beschlossen, dass die Ressource jetzt nur noch Mitgliedern eines Teams zugewiesen wird und die Automatisierung dazu beitragen wird, Fehler zu vermeiden. Als derjenige, der dieses Chaos verursacht hat, müssen Sie einen Agenten schreiben, der das Rechteverwaltungssystem regelmäßig abfragt Nehmen Sie Änderungen an der Rechtekonfiguration innerhalb installierter Dienste vor und geben Sie den Diensten bei Bedarf einen Befehl zum erneuten Lesen Konfigurationen.
Nr. 6: K8S-Operator in Python (Live-Coding-Stream)
13. Oktober um 19:00 Uhr
Warum: Lassen Sie uns die Fähigkeiten von K8S entsprechend Ihren Aufgaben erweitern.
Nr. 7: Unser eigenes Modul für Ansible schreiben
Warum: Ansible ist ein leistungsstarkes Konfigurationsmanagementsystem und sogar mit eigenen Modulen erweiterbar. Was für ein Zufall, dass es selbst und die meisten Module in Python geschrieben sind.
- Schreiben Sie Ihre eigenen Module für Ansible.
Übung: Schreiben eines Rechteverwaltungsmoduls.
Vor langer Zeit, in einer weit, weit entfernten Galaxie, haben Sie bereits einen Agenten angeschrieben, um Rechte für bestimmte Dienste zu vergeben. Es ist Zeit, Pull auf Push umzustellen, und Ansible wird Ihnen dabei helfen. Sie benötigen lediglich ein Modul.
Nr. 8: Erstellung und Anwendungsfälle Ihrer API
Warum: Die Vorbereitung des Codes für die Bereitstellung ist eine der wichtigsten Aufgaben. Unsere eigenen Skripte für Stage-Pipelines tragen dazu bei, diesen Prozess flexibler und komfortabler zu gestalten.
- Erstellen einer REST-API in Flask.
- Erstellen Sie Ihren eigenen Prometheus-Exporter mit Prometheus Python Client und Flask.
Übung: Hochladen von Daten in ein Überwachungssystem eines Drittanbieters.
Die Kosten für ungenutzte Ausrüstung übertrafen sogar pessimistische Prognosen. Jetzt hat das Engineering-Team einen weiteren Verantwortungsbereich – die Überwachung ungenutzter Dienste. Dazu müssen Sie das Abrechnungssystem regelmäßig über Ihr Skript abfragen und die Daten an Prometheus übergeben. Das Format der empfangenen Daten ist immer noch nicht geeignet. Sie müssen einen Connector implementieren. Und schreiben Sie gleichzeitig einen Endpunkt, damit die Analyseabteilung immer aktuelle Informationen im JSON-Format zur Hand hat.
AMA-Sitzung + INFORMELLES Treffen mit Kursrednern
28. Oktober um 19:00 Uhr
Wir treffen uns, um Anliegen der Kursteilnehmer zu besprechen.
#9: Testen Sie die API Ihrer Anwendung
Warum: Manchmal ist es besser, keinen Code zu haben als Code, der instabil ist. Um keine Angst davor zu haben, Ihren Code zu beschädigen, müssen Sie Tests schreiben.
- Arten von Tests: Unit, Integration und End-to-End.
- Übersicht über das Pyhamcrest-Modul und seine Matcher.
- Architektur und Funktionen von Pytest.
- Verwenden von Pytest und Pyhamcrest zum Schreiben von Komponententests.
Übung: Schreiben von Tests mit Pytest und Pyhamcrest für Ihre API.
Nr. 10: Interaktion mit CVS- und DevOps-Systemen
- Verwendung von Drittanbietermodulen am Beispiel der Integration in Gitlab-Pipelines.
- Verwenden von Pygit, um Informationen über Codeänderungen abzurufen.
Übung: Erstellen eines Änderungsprotokolls aus Commits.
Dem Engineering-Team gefielen Ihre Lösungen so gut, dass sie sich davon inspirieren ließen und begannen, eigene Lösungen zu schreiben. Aber die Leute vergessen immer, Beschreibungen für Veröffentlichungen zu schreiben. Um dies zu erreichen, beschloss das Team, Commit-Konventionen zu implementieren und Änderungsprotokolle direkt aus Commits zu generieren Zusammenführen des Entwicklungszweigs mit dem Release-Zweig. Wenn der Name des Commits nicht den Commit-Konventionen entspricht, lassen Sie Merge-Request erst zu verschmelzen.
#11: Chatops mit Errbot in Python
Warum: Die Hauptgeschäftsprobleme sind nicht die Anwendungsleistung oder gar Fehler im Code. Die gravierendsten Probleme entstehen, wenn die Mitarbeiterkommunikation ineffektiv ist. Chatops ist eine Möglichkeit, dieses Problem zu lösen.
- Chatops-Konzept: Welche Probleme löst Chatops?
- Errbot-Framework: Installation, Erstellung einer grundlegenden Plugin-Vorlage, Konfiguration und Start.
- Errbot-Framework: Erstellen Sie Ihr eigenes Plugin für Chatops mit verschiedenen Optionen zur Nachrichtenverarbeitung.
Abschlussprojekt
Fristenüberprüfung und Schutz für Interessenten
Nach dem Kurs haben Sie ein Git-Projekt: Sie können Ihre Arbeitsaufgabe automatisieren oder eine der vorgeschlagenen Optionen ausführen.
Das fertige Projekt kann als Portfolio-Case verwendet und bei der Bewerbung gezeigt werden.