Ich habe zwar früh mit dem Programmieren angefangen und kann auf eine über 40 jährige Historie zurückblicken, bin aber nie über die rudimentären Grundlagen hinausgekommen. Die Liste der „erlernten” Programmiersprachen ist lang und soll zeigen, dass ein bißchen Knowhow bei mir schon vorhanden sein sollte:
- Programmierbarer Taschenrechner (TI58/59)
- Basic (Kaufhaus Spass mit „goto 10”, Apple II, Pet 2000, Commodore 64)
- Turbo Pascal (Schneider Joyce, MS/DOS)
- ELAN (Programmiermethodik I+II an der TU Berlin)
- LISP (Einführungskurs)
- Aegis Shell Scripte für ein Projektteam (Apollo Domain Workstation)
- HyperTalk (Apple Hypercard)
- AppleScript
- ABAP (Grundkonzepte)
- bash/tsh/zsh Scripte (Mac, Linux)
- Python
- Apple Shortcuts
Ich würde mich aufgrund meiner Herangehensweise als Stack Overflow-Programmierer bezeichnen. Ich weiß zwar in etwa was und wie ich ein Problem lösen möchte, aber mir fehlen einzelne Bausteine wie die grundlegende Syntax einer Programmiersprache oder eines Linux-Befehls (Parameterübergabe, Schleifensyntax, Stringbehandlung etc.), alles Dinge, bei denen ich über eine Google-Suche meist auf Stack Overflow oder ähnlichen Seiten lande und ich dann die angebotenen (Teil-)Lösungen an mein Problem anpasse und kombiniere. Am Ende kommt dann meist etwas Lauffähiges heraus, das auch mein Problem auch löst.
Da ich meine Lösungen meist nicht kommentiere oder dokumentiere, muss ich bei jeder ähnlichen Problem den ganzen Prozess erneut durchlaufen. Warum habe ich das so und nicht anders gemacht, welche Quellen habe ich benutzt? Das gilt für Programmierprobleme, aber auch für die Einrichtung von Tools wie z.B. Paperless auf meinem Synology NAS oder ioBroker, Influx DB, Grafana zum Monitoren meiner Heizung auf dem Raspberry.
Seit Weihnachten 2021 habe ich meine Herangehensweise an die modernen Zeiten angepasst und beginne anstatt zu googeln ChatGPT zu fragen, welches mir die Web-Inhalte aufbereitet und leichter zugänglich macht. Das klappt erstaunlicherweise sehr gut, da meine Probleme meist klein sind oder ich sie gut in Teilprobleme zerlegen kann, die dann einzeln abgearbeitet werden können. Das ich am Ende wieder von Stack Overflow/GitHub und anderen klassischen Quellen profitiere ist mir schon klar. Das der Lerneffekt vielleicht noch kleiner ist als beim Copy and Paste Programmieren auch. Das am Ende mit diesen KI-Systemen auch ein riesige selbstreferenzierende Monster entstehen ebenso. Aber im Moment ist es spannend zu eruieren was mit der kostenlosen ChatGPT 3.5 Variante schon alles möglich ist, wo es bei Problemen helfen kann.
Ein kleines Beispiel:
Ich habe ein Problem mit meinem Mesh Orbi Router, der als Access Point hinter meiner Fritz!Box eingesetzt wird. Die angemeldeten Geräte verlieren von Zeit zu Zeit die Verbindung zum Internet. Um etwas genauer zu verstehen, was da vor sich geht, interessiert mich wann der AP Probleme macht, ob er sich wieder fängt und wenn ja, wie lange so eine Phase dauert. Um das zu dokumentieren wollte ich einen cron-Eintrag auf einem Raspberry im Netz anlegen, der alle x‑Minuten den Router anpingt und bei einem erfolglosen Ping einen Zeitstamp in eine log-Datei schreibt.
Nachdem ich ChatGPT gesagt habe, das ChatGPT ein Linux Programmierer sei und Shell-Scripte für Cron schreibt, habe ich die folgende Aufgabe eingegeben:
„you want to ping another computer every minute with excactly one ping. If that ping failed you want to write this with a time stamp into a log file. How will that line look like for crontab”
(in meinem schlechten Englisch und mit allen Rechtschreibfehlern)
Antwort:
* * * * * ping -c 1 -W 1 <IP_address> > /dev/null || echo "$(date) - Ping failed" >> /path/to/logfile.log
Aber nicht nur das, sondern es gab auch eine Erklärung dazu:
Here’s what each part of the cron job line does:
* * * * *
: This represents the cron schedule. It means the job will run every minute.ping -c 1 -W 1 <IP_address>
: This is the command to ping the specified IP address. The-c 1
flag sets the number of pings to 1, and the-W 1
flag sets the timeout for each ping to 1 second.>/dev/null
: This part redirects the output of theping
command to/dev/null
, discarding the normal output.||
: This is the logical OR operator, which means the next command will run only if the preceding command fails (returns a non-zero exit status).echo "$(date) - Ping failed" >> /path/to/logfile.log
: If the ping fails, this command will append a line to the specified log file (/path/to/logfile.log
) with a timestamp (generated bydate
) and the message „Ping failed”. You should replace/path/to/logfile.log
with the actual path to your log file.Make sure to replace
<IP_address>
with the IP address of the computer you want to ping. Also, ensure that the user running the cron job has permission to write to the specified log file.Save the crontab file after adding this line, and the cron daemon will execute the ping command every minute and log the results if it fails.
Dies ist ein einfaches Beispiel, aber es zeigt, wozu ChatGPT in der Lage ist: Es hilft Leuten wie mir, die im Großen und Ganzen wissen, was sie brauchen, um ein Problem zu lösen. ChatGPT sammelt die richtigen Dinge zusammen, korrigiert die Lösungen und kann sogar die Vorgehensweise erklären. Ich muss aber die Lösung immer noch selbst beurteilen.
Nun bin ich im Bilde, wann es passiert und wie lange diese Ausfälle dauern. Warum sie geschehen, weiß ich allerdings noch nicht. Hinweise gerne in die Kommentare. Wer genaueres über dieses kleine Projekt wissen will kann hier klicken.
Schreibe einen Kommentar