KI-unterstütztes Programmieren mit OpenAI und ChatGPT

Nachdem ich erst vorgestern aus Graz von neuen Videoaufnahmen bei LinkedIn Learning (LiL) zurückgekommen bin, habe ich direkt eine Mail von LiL zu einer internationaler Aktion erhalten, in der Kurse über künstlichen Intelligenz (KI) im Mittelpunkt stehen und auch ein Kurs von mir dabei wäre (Python für die Datenanalyse 2: Machine Learning von Lillian Pierson und Ralph Steyer). LinkedIn Learning hat weltweit etwa 100 LinkedIn Learning-Kursen zum Thema KI (engl. Artificial Intelligence oder kurz AI), die in der Kampange ab sofort bis zum 15. Juni kostenlos angeboten werden. Schon in dem Blogbeitrag zu der Aktion habe ich angekündigt, dass sehr bald von mir ein weiteres Training zum Thema KI folgen wird. Und tatsächlich ist es heute bereits soweit.

Das Videotraining „KI-unterstütztes Programmieren mit OpenAI und ChatGPT“ wurde veröffentlicht.

„KI-unterstütztes Programmieren mit OpenAI und ChatGPT“ weiterlesen

ASP.NET MVC, Codespace & Docker

Webanwendungen mit ASP.NET MVC und Razor Ein kompakter und praxisnaher EinstiegIch habe eine neue Webseite erstellt. Das ist nicht ungewöhnlich und kaum eines Posts wert. Zumal die  Webseite nicht der Burner ist. Weder vom Design, noch dem Inhalt. Es ist im Grunde nur etwas Werbung für mein Buch zu „Webanwendungen mit ASP.NET MVC und Razor – Ein kompakter und praxisnaher Einstieg„, das ich vor einiger Zeit beim Springer-Verlag veröffentlicht habe. Also wozu der Hussle?

Nun – wenn man den Link zu der Webseite anklickt, fällt vielleicht der ungewöhnliche Port auf (33333). Der eigentliche Anlass für die neue Webseite war die Vorbereitung für eine Schulung mit ASP.NET im kommenden Januar. Ich will einfach einige Praxisseiten zum Zeigen von ein paar Sachen haben.

Ich betreibe meine Webseiten nun aber mit einem Apache-Webserver unter Linux. Die neue Webseite ist jedoch – aus besagten Gründen – mit ASP.NET MVC und Razor gemacht. Und das braucht – eigentlich – einen Windows-Server mit IIS oder so. Also auf jeden Fall .NET. Lokal auf einem Windows-PC bzw. direkt aus Visual Studio kein Problem. Aber wenn man „In-the-wild“ nur Linux verwendet? „ASP.NET MVC, Codespace & Docker“ weiterlesen

Schulungsjahr 2022 beendet

Gestern habe ich meinen letzten Schulungstag 2022 (falls nicht noch ganz kurzfristig was aufläuft) gehalten (zu Python) und eben habe ich die letzte Rechnung für eine Schulung erstellt und versendet. Damit schließe ich das Schulungsjahr 2022 ab. Allerdings kommt vor Weihnachten noch eine Woche mit Videoaufnahmen bei LinkedIn Learning in Graz, worauf ich mich richtig freue.

Einführung in JavaFX/OpenJFX

Wenn ich die Schulungen dieses Jahr durchgehe, kamen wieder eine ganze Reihe an Themen vor. Wie üblich mit einigen Schwerpunkten, die sich im Vergleich zu den Jahren zuvor aber teils verschoben haben. Andere Themen sind komplett weggebrochen oder ich habe sie nicht annehmen können und ich muss mir überlegen, ob ich die weiter im Schulungsprogramm behalte. Auch wenn ich sie persönlich meist immer noch interessant finde (etwa F#, GWT oder Perl) bzw. unabhängig von direkten Schulungen oft verwende (etwa Eclipse oder alles rund um mein Lieblingsbetriebssystem Linux, wofür ich aber keine aktuelles Schulungsagenda mehr ausgearbeitet habe – zu nahezu allen anderen Schulungthemen habe ich ja eigene Bücher und Schulungsunterlagen und/oder Videotraining bei LiL erstellt).

„Schulungsjahr 2022 beendet“ weiterlesen

Mein neuer LiL-Python-Kurs ist bei der internationalen GitHub Codespaces-Aktion dabei

Der Python-Kurs, den ich im Sommer neu aufgenommen habe, ist gestern freigeschaltet worden. Mittlerweile sind schon sehr viele Kurse von mir bei LinkedIn Learning erschienen (aktuell sind 62 Kurse online verfügbar), aber diese Code Challenge ist dennoch etwas Besonderes.

Denn das Training ist Teil einer internationalen Kampagne, bei der in der Tech-Library von LiL gestern auf einen Schlag über 50 internationale Programmierkurse veröffentlicht wurden, die sich durch Integration in die ebenfalls brandneue Cloud-basierte Entwicklungsumgebung (IDE) Github Codespaces auszeichnen. Mein Python-Kurs,ist eben als einer von nur 3 deutschsprachigen Kurse dabei. „Mein neuer LiL-Python-Kurs ist bei der internationalen GitHub Codespaces-Aktion dabei“ weiterlesen

Radikalschnitt

Die letzten Wochen standen bei mir ganz im Zeichen sehr vieler Schulungstage. Zuerst im Rahmen mehrerer Fachinformatikerausbildungen zu Python und MySQL, aber die letzten 3 Wochen komplett zu Java und JavaFX/OpenJFX. Dabei ging es bei purem Java um eine „Werkstatt“ im Rahmen der Fachinformatikerausbildung, bei der noch mit Swing gearbeitet wurde.

Bei dem Kurs zu JavaFX habe ich hingegen professionelle Java-Entwickler einer Berliner Behörde geschult, die vorher bei einem anderen Trainer einen Kurs zu Maven gemacht hatten und danach eben noch JavaFX kennenlernen sollten. Zum Teil hatten die aber auch schon vorher mit JavaFX gearbeitet.

Der JavaFX-Kurs war bereits früher angesetzt gewesen, aber der
eingeplante Trainer war ausgefallen und ich habe den Kurs mit einem neuen Termin kurzfristig übernommen. Die beiden Tage habe ich zwar recht schwer untergebracht und eigentlich war ich bereits so ausgelastet, dass ich im Grunde keine Termine mehr annehmen wollte. „Radikalschnitt“ weiterlesen

Auf dem Rückweg aus Hamburg

Ich sitze am Gate und warte auf meinen Flieger. Der Tripp nach Hamburg ist also so gut wie erledigt und es war in der Tat mal wieder interessant/nett auf Tour zu sein. Ich mag Hamburg und war in einer schönen Ecke im Norden, wo ich bisher noch nicht war.

Das Hotel war zwar eine Katastrophe und die Liste der Mängel länger als die längste Praline der Welt, aber trotzdem habe ich mich dort gar nicht so unwohl gefühlt, wie es objektiv der Fall sein müsste (eigentlich müsste ich vom Hotel Geld zurückfordern).

Auf dem Weg vom Schulungsraum zum Flughafen in HH habe ich mir einen e-Scooter geleistet. Das erste Mal habe ich so ein Ding ausprobiert, was hier in HH massenhaft für den Nahverkehr genutzt wird. Macht Spass damit zu fahren, aber ist schon recht teuer und muss ich nur als Gag nicht haben. Für kurze Entfernungen gut, aber die kann ich meist auch laufen. Aber neben „mal wieder mit einem Flguzeug in die Luft zu gehen“ war der e-Scooter ein Teil der eben interessanten Abwechselung gewesen, die dieser Tripp mit sich gebracht hat. Und die Entfernung zum Flughafen ist auch fast 4,5 Kilometer gewesen und da hat der e-Scooter schon Sinn gemacht.

Allerdings ist insgesamt der Reiseaufwand schon der Abtörner. Auto zu viel Stau und zu lange Zeit, Bahn unzuverlässig, teuer und aufwändig und mit dem Flieger sind die ganzen Aktionen vor dem eigentlichen Flug mit Sicherheitskontrolle etc. auch nicht wirklich das, was ich so brauche. „Auf dem Rückweg aus Hamburg“ weiterlesen

HH-Schulung hat begonnen

Die Schulung in Hamburg hat begonnen. Ich habe offiziell 9 Teilnehmer, aber 2 haben sich krank gemeldet. Mit dem Rest mache ich Python. Genaugenommen ist das eine Python-Werkstatt mit hauptsächlich Praxis. Normalerweise halte ich vorher eine Python-Schulung, aber die hat ein Kollege übernommen, da ich letzte Woche noch mit einer MySQL-Schulung für die Kölner Gruppe beschäftigt war.

Die Schulung letzte Woche war remote und mit der Hamburger Gruppe kommt nächste Woche auch MySQL dran – aber dann auch remote. Das bedeutet, ich fliege am Freitag wieder zurück und wir treffen uns dann auf Teams. Ich wollte einmal nicht über das Wochenende in HH ausharren und schon gar nicht für 3 Tage wieder hierher fliegen. Das hätte ich auch nicht geregelt bekommen, denn ab Donnerstag nächster Woche übernehme ich wieder die Wiesbadener Gruppe. Das wäre mit einer Rückreise am Mittwochabend einfach zu eng geworden.

Django bzw. 2-facher Doppelschlag

„Doppelschlag“ aus der Überschrift kann man auf zwei Arten verstehen:

  1. In der Woche wurden bei LinkedIn Learning (LiL) gleich 2 neue Video-Training von mir veröffentlicht. Anfang der Woche die Überarbeitung meines Grundlagen-Trainings zu C und gestern dann ein brandneues Django-Training.
  2. Mit dem neuen Django Grundkurs verbinde ich die beiden IT-Technologien (Python und Web-Programmierung), die ich in den letzten Jahren wohl am meisten verwendet habe.

Django ist ein quelloffenes und serverseitiges Webframework, das die Programmiersprache Python mit einer modernen Architektur zur Generierung der klassischen Webtechnologien für den Client kombiniert. In meinem Grundlagenkurs zeige ich die Philosophie des Frameworks und beschreibe ausführlich die Installation und den Dateiaufbau eines Django-Projekts sowie den Betrieb in einer virtuellen Umgebung. Weitere Filme beschreiben den Unterschied zwischen einem Projekt und einer App, beleuchten das MVT-Schema, Views und Templates, und Sie sehen, wie Sie mittels QuerySets auf Datenbanken zugreifen. Schritt für Schritt lernen Sie, wie Sie ein eigenes Projekt starten und eine eigene Webapplikation entwickeln.

Python-Weeklies laufen aus

Meine neuen Videoaufnahmen für LinkedIn Learning sind fertig. Ich habe ein neues Training rund um Python aufgenommen, das in den Kontext einer neuen Serie bzw. Konzeption als eines der ersten Testtraining eingefügt werden soll. In einem gleichartigen Konzept werden dazu Training von verschiedenen Trainern und mit unterschiedlichen Sprachen veröffentlicht. Wenn sich die Strategie bewährt, werden irgendwann auch anderer Trainer und Themen folgen. Es gibt bereits US-Versionen, an denen wir uns orientieren. Aber fachlich als auch in Details sind wir eigenständig und ich lege Wert darauf, dass ich meinen eigenen Stil dennoch beibehalte und eigene Themen bereitstelle.

 

Zusätzlich habe ich noch 2 Erweiterungsfilme eines meiner Training zu JavaScript aufgenommen. Durch die fortschreitende Unterstützung von JavaScript in den verschiedenen Browsern war es mir wichtig, dass diese modernen Themen rund um asynchrone Programmierung und DOM-Selektion ergänzt werden.

Die Aufnahmen waren die Woche mit einigen technischen und organisatorischen Problemen behaftet, sind aber dennoch flott durchgegangen. Auch wenn die Hitze wirklich brutal war und ich die Pausenzone auf dem Balkon reichlich ausnutzen musste.

Ansonsten wird das neu aufgenommene Python-Training auch eine Art Ersatz bzw. Fortsetzung meiner Entwicklertipp der Woche zu Python werden. Denn diese laufen so langsam aus. Vielleicht ist es aufgefallen, aber der Abstand zwischen dem letzten Entwicklertipp der Woche zum Thema Anagramm und dem aktuellen Entwicklertipp der Woche zum Modul trace und Coverage.py war länger wie eine Woche. Die Veröffentlichungsfrequenz wird quasi „runtergebremst“, bevor die  Entwicklertipps der Woche in ein „normales“ Videotraining mit einer fixen Anzahl an Filmen umgewandelt werden.

Hot record

Gestern habe ich in Eppstein die neuen Videoaufnahmen für LinkedIn Learning angefangen. Ich bin ganz früh mit dem Mopped hingefahren und als ich ins Amstertal runtergefahren bin, wurde es schlagartig mehrere Grad kälter. Das merkt man insbesondere auf dem Mopped sofort. Es war noch vor 8:00 Uhr und gerade zu frisch mit dem Fahrtwind. Aber das hat über den Tag nicht angehalten und selbst hier in Eppstein wurde es den Tag über brutal heiß. 2x ist mir am späten Nachmittag der Rechner ausgegangen und es könnte sein, dass er überhitzt war. Ich habe keine Daten verloren und der Rechner ist auch ziemlich direkt wieder da gewesen, aber die Temperaturen sind schon heftig. Wobei es hier noch halbwegs geht. In meinem Büro in Bodenheim unter dem Dach sollte es noch um mehrere Grade heißer sein und wegen Aufnahmen könnte ich da meinen kleinen Klima-Block auch nicht anmachen.

Anagramm – nicht Anna gram

In der übernächsten Woche stehen wieder Videoaufnahmen für LinkedIn Learning an, aber heute gibt es erst einmal wieder einen neuen Entwicklertipp der Woche zu Python. Es geht darum, was ein Anagramm ist und wie man mit Python dies überprüfen kann.

Was ein Anagramm ist, kann man einfach beschreiben. Keinesfalls steht es dafür, dass irgendeine Anna gram ist, sondern es ist eine Buchstabenfolge, die durch reine Umsortierung der einzelnen Buchstaben aus einer anderen Buchstabenfolge entsteht. So eine Umsortierung kann im Rahmen der Kryptografie interessant sein. Oder auch bei Vorgaben, dass ein neues Passwort nicht einfach ein Anagramm eines bisherigen Passwortes sein darf. Diese Anwendung greife ich möglicherweise auf und werde darauf vielleicht im Rahmen der oben schon angedeuteten kommenden neuen Videoaufnahmen für LinkedIn Learning zurückkommen. Mal sehen – da bin ich im Moment am Vorbereiten.

Auf das Dateisystem zugreifen – neu im Tutorial zu Python

Es gibt wieder einen neuen Entwicklertipp der Woche zu Python bei LinkedIn Learning. Es geht darum, wie man mit Python auf das Dateisystem des Rechners zugreifen kann, um dort Datei- oder Verzeichnis-Operationen durchzuführen. Die beiden Module pathlib und os.path sind für Sie die wahrscheinlich wichtigsten Einstiegsstellen.  Dabei beschreibt pathlib einen objektorientierter Ansatz, um auf das Dateisystem zuzugreifen, während os.path einen, sagen wir mal, traditionellen Weg bereitstellt. Sie haben viele ähnliche Funktionen oder deckungsgleiche Funktionalitäten und beide haben so ziemlich alles, was man so braucht, um auf dem Dateisystem zu arbeiten.

Terminalinhalt mit Python zur Laufzeit Plattformneutral leeren

Der neue Entwicklertipp der Woche zu Python ist bei LinkedIn Learning freigeschaltet. Es geht darum, wie man den Terminalinhalt zur Laufzeit leeren kann. Denn das ist nicht so ganz trivial bzw. einfach mit einer Python-Anweisung möglich. Denn wenn man in einem Terminal arbeitet, kennt Python keinen integrierten Befehl, um dieses Terminal dynamisch zu löschen, das heißt, direkt aus einem Skript heraus. Sie können selbstverständlich im Terminal einen Betriebssystembefehl wie cls unter Windows als clear unter Linux eingeben und damit wird das Terminal geleert. Aber das machen Sie aktiv im Terminal nach oder vor dem Ausführen des Skripts. Es gibt diese Befehle aber so nicht in Python.

Doch manchmal möchte man eben zur Laufzeit auch aus einem Skript das Terminal leeren und dann wieder oben mit einem frischen Terminal beginnen. Das kann man nachprogrammieren und die Basis ist das Modul os.system. Damit kann man aus Python einen Betriebssystembefehl aufrufen. Wenn man zudem vorher das Betriebssystem abfragt, kann man diesen dann auch in Abhängigkeit von dem Betriebssystem passend auswählen und das Skript Plattformneutral erstellen.

Tipp & Tour

In ein paar Minuten geht es auf einen kurzen Radurlaub mit meinem Sohn. Ein kleiner Nachschlag unserer Vierländertour rund um den Bodensee. Dieses Mal aber nur 4 Tage und weitgehend in der Heimatregion. Es soll von Marburg die Lahn und den Rhein entlang gehen. Ich hoffe, dass die Fahrradmitnahme mit dem Zug nach Marburg auch geht, denn mit der Bahn habe ich überwiegend schlechte Erfahrungen. Wir werden sehen. Vorher habe ich aber noch gecheckt, welcher  Entwicklertipp der Woche zu Python heute bei LinkedIn Learning freigeschaltet wurde. Es geht die Woche darum, wie man per os-Modul auf die Betriebssystemschnittstelle zugreifen kann.

Manche verstehen unter „Python“ wohl etwas anderes :-)

Bei LinkedIn Learning habe ich ja diverse Videotrainings zu Python und ergänzender Techniken bzw. Themen aufgenommen und auch einen regelmäßigen Entwicklertipp der Woche zu Python am Laufen. Dazu kommt neben häufigen Python-Schulungen noch ein Buch:

Programmierung in Python - Ein kompakter Einstieg für die Praxis - Steyer, Ralph
Programmierung in Python
Programmierung in Python – Ein kompakter Einstieg für die Praxis
  • Autor: Steyer, Ralph
  • 978-3-658-20705-2
  • Umfang in Druckseiten: 257
  • Verlag: Springer Fachmedien Wiesbaden GmbH
  • Erscheinungsjahr: 2018

Aber andere Leute verstehen „Python“ wohl etwas anders bzw. universeller. Ein Vermieter hat nach dem Auszug seiner Mieter in der Wohnung drei zurückgelassene Pythons gefunden. Stellen sich Fragen:

  1. Waren die Mieter Programmierer?
  2. Auf welche Programmiersprachen sind sie umgestiegen, dass die Pythons überflüssig waren?

Moduleinbindung absichern

Ich warte gerade auf meine „Gäste“ (Studenten) zur Teams-Sitzung der TH Bingen. Heute ist die letzte Fragestunde, bevor diese die Semesterarbeit abgeben sollen. Diese Fragestunde ist aber optional und vielleicht kommt auch niemand. Nachdem ich gestern mit dem ebike nach Wiesbaden zu meiner Schulung der Fachinformatiker gefahren bin, bin ich danach weiter nach Eppstein zum Training und habe hier übernachtet. Nach der Teams-Sitzung geht es dann wieder mit dem ebike zurück nach Bodenheim. Davor habe ich aber wie am Mittwoch üblich bei bei LinkedIn Learning geschaut, welcher Entwicklertipp der Woche zu Python heute freigeschaltet wurde. Thema ist, wie man die Moduleinbindung absichern kann. Denn wenn man in Python Module einbinden will, braucht man manchmal Informationen über die Module und muss auch ggf. reagieren, wenn eine Einbindung schiefgeht. Eventuell muss man dann andere Module einbinden oder von einem anderen Ort.

Der Bedingungsoperator in meinem Tutorial zu Python

Ab der Woche habe ich eine regelmäßige Schulungssession jeweils am Montag und Dienstag jeder Woche gestartet. Die geht über mehrere Wochen. Eine Präsenzschulung, was in den aktuellen Zeiten bemerkenswert ist. Aber in Wiesbaden und damit entfallen eine längere Anreise (ich plane sogar, hin und wieder mit dem ebike da hinzufahren) sowie eine externe Übernachtung. Die regelmäßigen Slots werden dann Mittwochs durch die wöchentlichen Veröffentlichung meiner Entwicklertipp der Woche zu Python ergänzt. Der heute bei LinkedIn Learning freigeschaltete Entwicklertipp hat den Bedingungsoperator zum Thema.

Wenn man einen Programmfluss aufgrund einer Bedingung steuern möchte, nutzt man in den meisten Programmiersprachen eine if-Anweisung oder eine if-else- bzw. elif-Anweisung oder so irgendwas in dieser Art oder  in anderen Sprachen wie Python gegebenenfalls auch switch-case oder so irgendwas.

Es gibt aber in fast allen Programmiersprachen einen sogenannten Bedingungsoperator. Man nennt ihn auch den tenären Operator, respektive auch den Konditionaloperator oder den triadischen Operator. Und so etwas gibt es auch in Python.

Vor der Hitze da – der neue Entwicklertipp

Das soll im Laufe der Woche immer heißer werden und darauf freue ich mich schon so richtig :-(. Denn mein Büro unter dem nicht-isolierten Dach wird dann vermutlich wieder die 40 Grad deutlich überschreiten – trotz einer kleinen, mobilen Klimaanlage. Aber zur potentiellen Abkühlung habe ich zumindest meinen „Pool“ schon mal vorbereitet.

Zumindest ist bei LinkedIn Learning der neueste Entwicklertipp der Woche zu Python heute schon vor der Hitze verfügbar. Thema ist die Anwendung der format-Funktion auf Strings in Python. Python stellt dazu diese mächtige und im Grunde auch recht einfach anzuwendende Funktion bzw. Methode bereit, um Variablen und deren Werte in einen String an einer bestimmten Stelle einzufügen und dabei die für die Ausgabe zu formatieren.

IO 2

Die kommenden Wochen und Monate stehen ungewöhnlich viele Schulungen auf meiner Agenda. Sogar einige Tage mit Vor-Ort-Terminen sind dabei, was in Zeiten von Corona bemerkenswert ist. Diese sind allerdings bei mir in der Gegend und ich brauche damit nicht zu reisen. Die entfernten Termine sind die nächsten Monate alle remote. Aber in der Woche ziehe ich noch neue Aufnahmen wegen der grundlegenden Überarbeitung eines meiner Videotraining bei LinkedIn Learning durch.

Damit habe ich gestern schon begonnen, jedoch unter erheblichen Schwierigkeiten! Diese betrafen nicht das Training oder die eigentliche Aufnahme, sondern SharePoint. Wieder einmal, denn meine Probleme damit sind irgendwie ein Running Gag. Ich war gestern schon sehr früh in meinem Büro in Eppstein angekommen und habe soweit alles für die Aufnahmen eingerichtet. Da wir bei LinkedIn Learning mittels Office 365 und besagtem SharePoint zusammenarbeiten, habe ich mich da angemeldet. In dem eigentlichen SharePoint-Bereich tauschen wir alle Dateien aus. Was für mich bedeutet, dass ich da meine Videos hochlade und der Proofer diese dann kontrolliert. Auch Folien und Quelltexte (wobei die mittlerweile auf Github landen und hier nur redundant geführt werden) werden von mir dahin geladen. Dazu gibt es in Excel 365 eine Indexdatei für die Aufnahme, an der wir gemeinsam im Team arbeiten.

Bis 9:00 Uhr war alles ok. Dann bin ich plötzlich aus SharePoint geflogen mit der Meldung, dass ich keine Rechte hätte, auf diesen Content zuzugreifen. Es hat bis 15:00 Uhr gedauert, bis ein Techniker meinen Zugang freibekommen hat. Ich hatte bis dahin so ziemlich alles probiert, um von meiner Seite den Zugang wieder zu bekommen, was mir eingefallen und möglich ist.

  • Panikflagge bei LiL gehisst
  • abgemeldet und neu angemeldet
  • PC neu gestartet
  • Rechner mit Bereinigungsprogrammen gesäubert
  • mehrere Browser ausprobiert und zum Teil auch erst nachinstalliert
  • 3 verschiedene E-Mail-Adressen/Accounts, die alle (angeblich) legitimiert sind ausprobiert
  • 2 verschiedene PCs mit Windows 10 und Windows 11 ausprobiert und die ganzen Sachen kombiniert
  • Selbst einen Zugriff über SmartPhone versucht

Immer das gleiche Resultat. Auf allen neuen/gesäuberten Rechnern/Systemen gab es jeweils beim ersten Versuch des Zugriffs auf SharePoint eine Fehlermeldung, dass SharePoint ein Problem hat. Beim 2. Zugriffsversuch ist die weg, aber dafür mein Account zu. Jeder Account. Noch verwirrender – bei anderen Mitgliedern der Gruppe gab es m.W. keine Probleme.

Ich hasse SharePoint und bin dieser ständigen Probleme wirklich leid. Zumindest konnte ich meine Aufnahmen halbwegs durchziehen und ab 15:00 Uhr dann auch zur Kontrolle einreichen bzw. die Indexdatei pflegen. Aber die endlosen nutzlosen Versuche, um Zugriff auf SharePoint zu bekommen, haben viel Zeit gekostet. Und im Gegensatz zu sonstigen technischen Problemen, bei denen ich immer etwas gelernt habe und damit für mich noch etwas Positives meist mitnehmen konnte, habe ich keinerlei neue Erkenntnisse aus der Aktion gezogen –  außer dass SharePoint ganz großer Mist ist. Solange es keine Probleme macht, ist die Sache ja ok, aber es gibt einfach zu oft Probleme. Selbst die Lösung nach vielen Stunden und ist durch einen Admin erfolgt, der auch diverse Zeit erfolglos rumprobiert hatte. Soweit ich das erkennen konnte, wurden alle meine Accounts vollkommen beseitigt und komplett neu eingerichtet.

Und da heute wieder Mittwoch ist, ist auch der neueste Entwicklertipp der Woche zu Python verfügbar, weshalb die Überschrift des Beitrags „IO“ beinhaltet – für Input-Output. Die „2“ deshalb, weil das vor zwei Wochen schon mal der Fall war, dass ich sowohl produziert habe als auch ein Videotraining veröffentlicht wurde. Thema des Tipps sind Enumerationen in Python. Ein sogenannter Enum ist ein Aufzählungstyp, den es schon sehr lange gibt. Schon vor der objektorientierten Programmierung hat man damit gearbeitet. Beispielsweise in C, was gerade das Thema meiner Überarbeitung ist, gibt es solche Typen. In Python gibt es zwei Strategien, wie man solche Aufzählungstypen nun umsetzt. Einerseits gibt es eine Built-in-Funktion enumerate() und es gibt aber auch eine Klasse Enum aus dem Modul enum.