Einrichten einer Arbeitsumgebung
SP ist eine hervorragende Gelegenheit mit verschiedenen Arbeitsweisen und Werkzeugen zu experimentieren, welche kritisch für Informatik und Informatik-nahe Fächer sind. Das Beherrschen seiner Arbeitsumgebung ist eine Investition welche sich immer lohnt.
1 Hillfreiche .bashrc
Die .bashrc
Datei befindet sich im „Home“ Verzeichniss jedes Nutzers,
und enthält Befehle welche ausgeführt werden, bevor die standard Shell
(namens Bash) gestartet wird. Da
die Shell ein zentraler Bestandteil von SP ist, ist es zum Vorteil jedes
Studenten in der Lage zu sein, diese seinen/ihren Bedürfnissen
anzupassen.
export EDITOR=vi # oder besser export SPDIR=/proj/i4sp1/ export PATH=$SPDIR/bin:$PATH stty -ixon >/dev/null 2>&1 || true alias gdb="gdb -q"
Was hiermit verändert wird:
- Der Editor Vi wird als standard Editor ausgewählt. Damit wird vermieden, dass man immer nach einem Editor gefragt wird, wenn man einen Text bearbeiten muss (bspw. SVN commits). Eine Übersicht ausgewählter Editoren im CIP wird weiter unten gegeben.
- Die SP Programme (
submit
,get-deadline
, …) können aufgerufen werden, ohne den absoluten Pfad/proj/i4sp1/bin
angeben zu müssen. - Oft werden SP’ler überrascht, wenn ihr Terminal plötzlich stillsteht,
und nicht mehr auf Eingaben reagiert. Dieses Verhalten ist eine
historische Eigenartigkeit, was aktiviert wird durch das drücken der
Tastenkombination „Ctrl-S“, und entsperrt mittels „Ctrl-Q“. Mit dem
stty
Befehl wird dieses ganz deaktiviert. - Das Starten der GDB Debuggers übergibt immer automatisch eine
-q
Option, womit die Ausgabe von Dokumentations- und Urheberrechts-Hinweise unterdrückt wird. Allgemein könnt ihr neue oder kürzere Befehle definieren mit dem alias Befehl, und dieses ist nur ein Beispiel.
2 SSH
WICHTIG: Aufgrund der Corona-Situation, wird es für (fast?) alle notwendig sein mit SSH zu arbeiten. Abgaben sind nur über das CIP System möglich.
2.1 SSH Clients
Je nach Platform muss man anders mit SSH arbeiten. Hier ein paar Möglichkeiten:
- Auf Windows kann Putty benutzt werden, wofür keine weitere
Software notwendig ist. Ihr bekommt hiermit zunächst nur eine
Konsole, daher empfiehlt sich das, falls ihr euch entweder auf
diese Arbeitsweise einschränken wollt oder könnt. Es ist möglich
„X11-Forwarding“ einzurichten, um graphische Programme lokal zu
benutzen. Mit
pscp
können Dateien zwischen eurem und dem CIP System kopiert werden. - Mittels des Windows Subsystem for Linux, können Windows Nutzer eine Linux-Artige Umgebung benutzen, ohne gesonderte virtuelle Maschine. Meines Wissens nach, sollte dieses alles Enthalten was man für SP bracht, daher gilt der nächste Punkt:
- Unixoide Systeme (Linux, macOS, *BSD) sollten entweder bereits ein SSH
Client installiert haben. Falls nicht, kann eines einfach installiert
werden (Pakete für Debian/Ubuntu:
openssh-client
, Fedora/RedHat:openssh-clients
) - Mittels X-Forwarding können graphische Anwendungen über das Netzwerk benutzt werden, was aber öfters langsam sein kann. Als alternative kann Xpra benutzt werden. Eine Anleitung im FSI-Forum erklärt wie. Vergesst nicht die „ab12cdef“ durch euren Namen zu ersetzen.
2.2 SSH Config (OpenSSH Client)
Wer sich einfach und schnell an das CIP system binden will, kann dieses mit SSH machen. Zwei Tricks helfen einem dabei dieses einfacher und schneller zu machen:
- Generiert ein SSH Schlüssel. Mit
ssh-keygen -t ed25519
gefolgt von einemssh-copy-id [benuzername]@faui0sr0.cs.fau.de
, braucht man nie wieder sein CIP Passwort eingeben! Um sich nicht jedes mal
faui0sr0.cs.fau.de
merken zu müssen, fügt das folgende in~/.ssh/config
:Host uni # main remote server HostName faui0sr0.cs.fau.de User [benutzername]
Jetzt braucht ihr nur noch
ssh uni
eingeben, wenn ihr euch an den Rechner verbinden wollt. Notfallschmod 644 ~/.ssh/config
bei einemBad Owner
Fehler eingeben.
3 Texteditoren
In SP herrscht Editor-Freiheit, d.h. es wird für keine Aufgabe angenommen das ihr eine Spezifische Arbeitsumgebung oder Werkzeug verwendet (Ausnahme: SVN). Dieses heißt nicht, dass der Texteditor irrelevant ist — im Gegenteil seinen Editor zu beherrschen ist eine unvergleichbar hilfreiche Fähigkeit.
Hier zu finden ist also eine Übersicht verschiedener Editor/familien/ (bzw. Kategorie), und deren Mitglieder die im CIP zu finden sind:
- Graphische Editor
- Für viele am einfachsten und intuitiv zu bedienen. Fast jede Desktop-Umgebung hat ihren eigenen. Populäre Beispiele sind Gedit (für GNOME), KWrite (für KDE/Plasma) oder Mousepad (für XFCE). Von dieses würde ich Gedit empfehlen.
- Konsolen Editor
Es ist möglich innerhalb eine Konsole eine nicht-Zeilenorientierte Benutzeroberfläche zu benutzen (genannt TUI). Dieses wird gerne für Texteditoren benutzt, und ist zunächst weder besser noch schlechter als ihre graphischen Analoge. Über SSH, sind diese meist die einzige praktikabel Option.
Abgesehen von den nächsten beiden Familien, welche strenge genommen auch zu dieser Familie zählen, wäre GNU nano. Dieses, wie fast alle Texteditoren dieser Art werden in der Shell gestartet wie folgt:
$ nano meine-datei
Andere Beispiele im CIP wären JOE, e3 oder JED, wobei diese aber nicht all zu empfehlenswert sind.
Für Esoteriker gibt es immer ed, den standard editor.
- vi-Familie
Auf Unix-Systemen ist seit über 40 Jahren Familie der vi (ausgesprochen „Wie-Ei“) bekannt und populär. Die kennzeichnende Eigenschaft ist die des Modalen Arbeitens: Verschiedene Modi interpretieren Tastendrücke anders, und ermöglichen somit effizientes bearbeiten von Textdokumenten. Die zwei Hauptmodi sind der „Insert Mode“, wo man wie gewöhnt schreibt, und der „Normal Mode“ in dem Tastenkombination als Bearbeitungsbefehle interpretiert werden (eg. wenn man
dd
eingibt, wird eine Zeile gelöscht,ct$
löscht bis zur Ende der Zeile und erwartet eine neue Eingabe,2T(hmq%x`qx
die zweite Klammer-stufe löscht.) Eine Übersicht der Befehle ist hier zu finden.Die populärste Implementierung ist Vim, sowie dessen Fork Neovim (nicht zu verwechseln mit dem klassischem nvi). Im CIP ist auch Vis installiert, welches verwandt mit dieser Familie von Texteditoren ist. Allgemein empfiehlt es sich eine Grund-Kompetenz mit vi anzueignen, da diese fast auf jedem System zu finden ist, oder wenn man eine schlechte Netzwerkverbindung hat.
- „Emacsen“
Mit einer ebenso langen Tradition wie vi, sind verschiedene „Emacsen“, primär GNU Emacs auch auf allen Plattformen zu finden. Im Gegensatz zu vi haben diese jedoch meist mehr eingebaute Funktionalitäten, und in nicht-Ersatz Emacs Varianten extrem erweiterbar. Da dieses auch meine bevorzugte Arbeitsumgebung ist, habe ich eine kleine Emacs Konfiguration geschrieben (mit Einstiegs-Anleitung), welche für Anfänger geeignet sein sollte und ein paar CIP-spezifische Erweiterungen hat. Bei Fragen oder allgemeinem Interesse kann ich gerne helfen!
Obwohl es zahlreiche Clone und Variation gibt, empfiehlt sich meist immer die kanonische GNU Variante zu benutzen, wenn es möglich ist.
- IDEs
- Wer aus der Welt von Java gewöhnt ist an Automatische Vervollständigung von Symbolen, schnelle Diagnostikern und Quelltextnagivation könnte enttäuscht werden von der bisherigen Aufzählung (obwohl dieses nicht sein muss: Viele der bisher aufgezählten Programme können all dieses auch!). Dieses muss jedoch nicht sein — auch für C (bzw. meist C++) Entwickelung gibt es eine große Auswahl. Wer KDE/Plasma schon nutzt, könnte Kate interessant finden. Sowohl IntelliJ hat eine C Variante (diese ist jedoch Kostenpflichtig), und Eclipse kann um C-Funktionalitäten erweitert werden. Über das Module System (Abschnitt „Wie kann bekomme ich eine Liste der installierten Softwarepakete?“) können auch Atom oder VSCode (bzw. die sauberere VSCodium Variante) installiert werden.