UP | HOME

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:

  1. Generiert ein SSH Schlüssel. Mit ssh-keygen -t ed25519 gefolgt von einem ssh-copy-id [benuzername]@faui0sr0.cs.fau.de, braucht man nie wieder sein CIP Passwort eingeben!
  2. 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. Notfalls chmod 644 ~/.ssh/config bei einem Bad 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.

Autor: Philip K.

Created: 20:24:26

Validate