Code Monkey home page Code Monkey logo

einrichtungarbeitsplatzinformatikstudium's Introduction

Einrichtung eines Arbeitsplatzes für das Informatik-Studium

Einrichtung eines Arbeitsplatzes für das Informatik-Studium

Den Anstoß für die Idee ein solches Tutorial zu erstellen, lieferte Felix Rieseberg.

Einleitung

Thematische Schwerpunkte

Im Rahmen des Tutorials entsteht ein Arbeitsplatz mit dem die typischerweise in 2020/2021 genutzten Entwicklungstechnologien und Werkzeuge genutzt werden können. Aus Sicht des Autors sind dies:

  • Paketverwaltungswerkzeuge
  • Git
  • Visual Studio Code
  • Bash und das Windows Subsystem for Linux
  • Wichtige Kommandozeilenwerkzeuge (curl, wget etc.)
  • Virtuelle Maschinen und Containervirtualisierung
  • VPN-Clients
  • Werkzeuge zum Datenaustausch mittels SFTP und SCP
  • SQL-Clients (geplant)

Der Fokus des Tutorials ist es, unter Windows 10 arbeitsfähig zu werden. Linux- und Mac-Nutzer*innen benötigen die Sektion zum Thema "Bash und das Windows Subsystem for Linux" nicht, da ihnen diese Funktionalität bereits über das Terminal zur Verfügung steht.

Ein Vorwort zur englischen Sprache

Eine langfristige Beschäftigung mit dem Feld der Informatik ohne (zumindest) der Fähigkeit, englische Texte lesen zu können, ist wenig sinnvoll. Auch wenn regelmäßig deutsche Fachliteratur erscheint, ist die primäre Publikationssprache Englisch. Der Vorteil der Publikationen in der Informatik ist jedoch, dass diese meistens formal sehr ähnlich aufgebaut sind, was deren Lesbarkeit erhöht.

Selbst wenn man keine wissenschaftliche Karriere anstrebt, ist zu bedenken, dass die Dokumentation fast jeder Open-Source-Software auf Englisch vorliegt. Außerdem sollten Sie auch zu Beginn Ihres Studiums bemerkt haben, dass eigentlich jeder Fachbegriff englisch ist.

Da dieses Tutorial Ihnen einen ersten Einstieg vermitteln soll, wurde es auf Deutsch verfasst. Regelmäßig werden jedoch englische Quelle verlinkt.

Paketverwaltungswerkzeuge

Unter Paketverwaltungswerkzeugen oder Package Managern versteht man Werkzeuge, welche die Installation, Konfiguration und Deinstallation von Software-Paketen vereinfacht und vereinheitlicht. Typischerweise integrieren Package Manager auch noch einen Mechanismus zur Auflösung von Softwareabhängigkeiten. Das heißt, das der Package Manager Abhängigkeiten von Programmbibliotheken erkennt und fehlende Programmpakte automatisiert nachinstalliert. Voraussetzung für die Verwendung eines Package Managers ist, dass ein Programm als Packet im vom Package Manager verstanden Format und in einem Repository vorliegt.Traditionell sind Package Manager auf Linux- oder BSD-basierten Betriebssystemen üblich.

Sie haben sich mittlerweile jedoch auch auf weiteren Plattformen durchgesetzt und erleichtern den Umgang, gerade mit Open-Source-Software, enorm, da auch komplexe Softwarepakete mit wenigen Befehlen installiert werden können.

Paketverwaltung unter Windows

Seit Windows 10 gibt es eine in Windows integrierte Paketverwaltung namens OneGet, für die aber bisher kaum Pakete existieren. Eine gut einsetzbare Lösung für Windows ist Chocolatey.

Nach der erfolgreichen Installation von Chocolatey lässt sich mittels Kommandozeile z.B. der bekannte Medienplayer VLC einrichten:

choco install vlc

Paketverwaltung unter MacOS

Unter MacOS existieren verschiedene Lösungen wie Fink, MacPorts oder Homebrew. Der Vorteil der letztgenannten Lösung liegt darin, dass sich Software auch ohne Administratorenrechte installieren lässt.

Die Installation von Git mittels Homebrew geschieht im Terminal wie folgt:

brew install git

Paketverwaltung unter Linux

Der konkrete Package Manager hängt von der verwendeten Linux-Distribution ab. In Debian-basierten Distributionen, wie z.B. Ubuntu, ist dies das Advanced Packaging Tool (APT).

Der Webserver nginx lässt sich damit vergleichbar einfach installieren.

apt-get install nginx

Installation von Git

Das Arbeiten ohne eine Versionskontrolle ist möglich, aber sinnlos (frei nach Loriot). Aktuell ist Git das wohl am weitesten verbreitete Kommandozeilentool aus diesem Bereich. Sie werden es auch benötigen, um Beispielcode oder Programme von GitHub oder GitLab herunterzuladen bzw. um Repositories zu clonen.

Windows

Die Installationsdateien für Windows können Sie hier herunterladen.

Alternativ können Sie chocolatey nutzen:

choco install git

MacOS

Wenn Sie Xcode bereits installiert haben, verfügen Sie über eine lauffähige Git-Installation.

Alternativ bietet sich die Installation mittels Homebrew an:

brew install git

Linux

Unter einem Debian-basierten Linux installieren Sie Git wie folgt:

apt-get install git

Weiterführende Dokumentation

Git-GUI-Clients

Die Git-Website listet aktuelle GUI-Clients für Git auf, wenn Sie die Kommandozeile scheuen.

Sollten Sie Visual Studio Code installieren, benötigen Sie prinzipiell keine separate Git-GUI-Installation, da der Editor alles direkt unterstützt. Git per GUI steht dann aber nur dort zur Verfügung.

Installation von Visual Studio Code

Microsofts Visual Studio Code (VS Code) ist ein mächtiger Quellcode-Editor, der sich durch eine Vielzahl an Plugins an die eigenen Bedürfnisse, wie z.B. die verwendete Programmiersprache, anpassen lässt. VS Code ist zum Download für Windows, Linux und MacOS verfügbar.

Markdown-Preview Ctrl/Cmd+K V

Sinnvolle Plugins

VS Code ist bereits in seiner Grundinstallation recht mächtig und unterstützt den Umgang mit Markdown oder Git.

Der Marketplace stellt den ersten Anlaufpunkt für die Suche nach Plugins dar.

to do

Relevante Einstiegspunkte in die Dokumentation von VS Code

Bash und das Windows Subsystem for Linux

Ein großer Teil von Open Source Software wird unter Linux entwickelt und betrieben, von daher ist es sehr wahrscheinlich, dass Sie (mindestens) einmal in Ihrem Studium mit Linux konfrontiert werden. Um eine Linux-Distribution zusätzlich zu Windows in Betrieb zu nehmen, haben Sie im Wesentlichen drei Möglichkeiten:

  1. Dual-Boot-Installation, d.h. sie entscheiden zum Bootzeitpunkt, in welches Betriebssystem Sie booten wollen
  2. Nutzung der Windows Subystem for Windows, Cygwin o.ä.
  3. Betrieb von Linux in einer virtuellen Maschine (siehe unten)

Windows Subsystem for Linux

Seit Windows 10 besteht die Möglichkeit, Linux-Distributionen wie Ubuntu direkt nutzbar zu installieren. Hierfür ist es nötig, das Windows Subsystem for Linux (WSL) zu installieren, was Microsoft gut dokumentiert.

Nach der Auswahl einer Linux-Distribution aus dem Microsoft Store, erhalten Sie eine weitestgehend komplette Linux-Umgebung, welche Sie ohne Reboot nutzen können.

Cygwin

Vor Windows 10 war Cygwin die einzige Möglichkeit das "Linux feeling - on Windows" (Eigenaussage Cygwin) zu erleben. Cygwin bundelt eine Vielzahl an GNU- und Open-Source-Tools, u.a. die Bash.

Cmder

Bei Cmder handelt es sich um einen Console Emulator der nach Aussage des Autors aus reiner Frustration über die Abwesenheits eines solchen Tools unter Windows entstand. In der Vollversion enthält Cmder sowohl Git als auch eine Vielzahl an häufig genutzten Linux-Befehlen.

In Kombination mit dem WSL (siehe oben), welches Sie direkt aus Cmder mittels dem Befehl bash starten können, erhalten Sie ein leistungsfähiges Terminal wie man es aus Linux oder MacOS kennt.

SSH-Clients

Wenn Sie sich nur mit einem Linux-Server (oder einer virtuellen Maschine) per SSH (siehe unten) verbinden möchten, bietet sich unter Windows die Nutzung von Putty (Open Source) oder MobaXTerm, wobei letzteres eine etwas zeitgemäßere Benutzerschnittstelle bietet und in einer kostenfreien Version erhältlich ist.

Wichtige Kommandozeilenwerkzeuge

Der Heise-Verlag stellt eine Übersicht über die 20 wichtigsten Linux-Kommandos bereit. Neben diesen Basisbefehlen, gibt es noch weitere Programme, die Sie höchst wahrscheinlich in der Kommandozeile nutzen werden, wenn Sie mit Web-basierten Softwaresystemen, z.B. mittels REST-APIs, kommunizieren müssen.

man

Mittels man <befehl> können Sie zu vielen Befehlen, die Sie noch nie gehört haben im Terminal Hilfe erhalten. In der Hilfsseite scrollen Sie mithilfe der Cursortasten, zum Beenden tippen sie q.

ssh

ssh ist der SSH-Client, den Sie nutzen, um sich mit Servern oder sonstigen entfernten Rechner verbinden werden.

curl

Das Werkzeug curl dient dem Abruf von URLs. So können Sie beispielsweise Webseiten von einem Webserver ohne die Nutzung eines Browsers abrufen. Im REST-Umfeld können Sie so aber auch einfach Anfragen an Server stellen und Antworten empfangen, was das folgende Beispiel für eine Anfrage an einen Elasticsearch-Server illustriert:

curl -X GET "localhost:9200/bank/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} },
  "sort": [
    { "account_number": "asc" }
  ]
}
'

Die entsprechende Antwort wird auf der Kommandozeile ausgegeben.

wget

Zum Herunterladen beliebiger Dateien aus dem Internet, kann wget genutzt werden. Außerdem ist wget dafür geeignet, Spiegelungen aller Dateien auf einem Webserver zu erstellen, um diese offline nutzen zu können.

vim

Häufig werden Sie auf einem Rechner, mit dem Sie sich per SSH verbunden haben, Änderungen an Textdateien vornehmen wollen. Auf eigentlich jedem Linux-Server steht dazu der Textedior vim zur Verfügung. Der Editor ist ohne Zweifel sehr leistungsfähig, kann auf jüngere Computernutzer*innen jedoch abschreckend wirken. Wenn Sie den Editor öffnen und nicht wieder beenden können: drücken sie zweimal ESC und geben Sie dann :q! ein.

Um die komplexen Funktionen kennenzulernen, bietet sich das Studium dieses Tutoriums an.

nano

Der Texteditor nano verbreitet sich immer mehr auf Linux-Servern und glänzt durch seine einfache Bedienung, da am unteren Ende des Bildschirms die wichtigsten Befehle eingeblendet werden. Hiermit gelingt es Ihnen relativ einfach und fast wie von einer GUI gewohnt, Texte zu editieren.

Virtuelle Maschinen und Containervirtualisierung

Virtuelle Maschinen

Es gibt viele kommerzielle Anbieter von Virtualisierungslösungen, für die meisten Einsatzzwecke in Ihrem Studium wird jedoch die Lösung VirtualBox ausreichen. VirtualBox ist für alle Betriebssysteme verfügbar.

Mithilfe einer Virtualisierungssoftware können Sie verschiedene Betriebsysteme unter einem Host-Betriebssystem (z.B. Windows oder Linux) in einer virtuellen Maschine (VM) betreiben. Das ist insofern ein Vorteil, dass Sie auf Ihrem Rechner auch weitere Betriebssysteme zu Testzwecken betreiben können und diese jederzeit in einen vorigen Zustand zurücksetzen können, da VMs zumeist auch Snapshot-Funktionen bieten, welche den Zustand einer VM zu einem bestimmten Zeitpunkt sichern.

Containervirtualisierung

Eine leichtgewichtigere Alternative zum Einsatz von virtuellen Maschinen stellt die Containervirtualisierung dar. Bei der Containervirtualisierung werden bestimmte Ressourcen des Betriebssystems, wie z.B. das Dateisystem oder Peripheriegeräte, vor ausgeführten Programmen verborgen. Im Gegensatz zur VM ist es jedoch nicht möglich, das Betriebssystem zu virtualisieren, d.h. Container und Host-Betriebssystem bleiben gleich. Aus der Sicht der Softwareentwicklung sind Container praktisch, da sie es ermöglichen, auf einem Rechner Anwendungen zu betreiben, die isoliert voneinander, beispielsweise verschiedene Versionsstände von Programmbibliotheken nutzen. Dies wird durch die Isolierung des Dateisystems möglich.

Durch seine nutzerfreundlichen Tools hat Docker der Containervirtualisierung zum Durchbruch auf weiter Front verholfen. Viele Open-Source-Werkzeuge werden auch als Docker-Image angeboten. Die notwendige Laufzeitumgebung und Konfigurationswerkzeuge für Docker können für alle Betriebssysteme heruntergeladen werden.

VPN-Clients

Virtual-Private-Network-Clients dienen dazu, dass Sie sich von Ihrem Privatgerät aus z.B. mit dem Netzwerk Ihrer Hochschule verbinden können. Dadurch kommen Sie in die Lage, Server zu erreichen, die nur im Hochschulnetz erreichbar sind. Ein weiterer Anwendungsfall ist der Zugriff auf Ressourcen Ihrer Bibliothek, die auch meistens nur im Hochschulnetz zur Verfügung stehen, da die Verlage keinen freien Zugriff zulassen. Durch die Verbindung mittels VPN wirkt es jedoch als ob Sie aus dem Hochschulnetz auf beispielsweise ein eBook zugreifen.

Welchen VPN-Client Sie nutzen können, hängt von Ihrer Hochschule ab. Folgen diesen jedoch dem OpenVPN-Standard, können Sie aus einigen Alternativen wählen. Details dazu erhalten Sie durch das Rechenzentrum Ihrer Hochschule.

Die Wikipedia bietet einen Überblick über VPN-Clients.

Datenaustausch mittels SFTP und SCP

Zum Datenaustausch mit entfernten Servern (oder virtuellen Maschinen) kommen häufig zwei Protokolle zum Einsatz: SFTP oder SCP.

  • Für SFTP bietet sich Filezilla an, welches für Linux, MacOS und Windows erhältlich ist.
  • Zur Verwendung von (u.a.) SCP hat sich unter Windows WinSCP durchgesetzt.
  • Vergleichbare Funktionalität unter MacOS und Windows bietet Cyberduck. Hierbei ist allerdings zu beachten, dass für eine SCP-Verbindung SFTP als Verbindungstyp gewählt werden muss.

SQL-Clients (geplant)

einrichtungarbeitsplatzinformatikstudium's People

Contributors

elektrobohemian avatar

Watchers

 avatar  avatar

einrichtungarbeitsplatzinformatikstudium's Issues

Zugriff auf HWR-Computer?

An der FU konnte ich ein Programm namens Putty um auf das Computernetzwerk der FU zuzgreifen. Ich konnte dann von zuhause aus Dateien an der FU bearbeiten. Git hat da sehr geholfen, da das die einzige möglichkeit des Datentransfers (Zuhause-FU) war.

Kann man damit auch auf Computer der HWR zugreifen?

Niklas Morban

Anregung/Vorschlag

Die Einleitung war verständnisvoll aber für eine bessere Übersicht würde ich bei jeden Abschnitt des Thema ein Video hinzufügen damit man irgendwie eine Idee hat wie das ganze funktioniert und wozu man das ganze anwendet. Für mich persönlich wäre ich nicht in der Lage komplett das ganze anzuwenden mit paar Videos vielleicht schon.

Princilla Amoyaw-Anim

Anregungen

Das Tutorial ist etwas schwierig formuliert, jedoch nach mehrmaligen Durchlesen verständlich. Ein paar Bilder könnten zum Verständnis des Tutorials hilfreich sein. Ansonsten habe ich keine Anregungen.

Anregung

Nach der Einleitung beginnt sofort der Punkt "Paketverwaltungswerkzeuge". Für eine bessere Übersichtlichkeit würde ich den einzelnen Elementen noch Gliederungspunkte geben, bzw. mehr Absätze für eine klare Trennung.

Linda Hoffmann

für mich echt kompliziert

Ich glaube, selbst nach dem Text wäre ich nicht in der Lage das ganze umzusetzen. Leicht erklärt aber ohne Visualisierung schwer anzuwenden.

Gutes Tutorial

Meiner Einschätzung nach ein gutes Tutorial für eine Ersteinrichtung.

MS Code ist ein sehr nützliches Tool für unseren Studiengang, da hier mit verschiedensten Programmiersprachen in einem Tool gearbeitet werden kann. Ähnlich Eclipse ??
Eine Einführung in das Tool (je nachdem wie es die Zeit zulässt) ist evtl. eine gute Sache.

MS Azure für verschiedenste Windows Versionen als ISO für VirtualBox etc. unter Linux ist vllt. eine Erwähnung wert.
Hab z.B. die Erfahrung gemacht, dass die aufgenommenen Vorlesungen unseres Rechtsdozenten in Libre Office nicht funktionieren und somit MS Office installiert werden musste. Eine Windows VM unter Linux wäre hier Klasse.
Bei der ersten Anmeldung möchte Microsoft allerdings die Telefonnummer zur Verifizierung des Accounts per SMS (für all diejenigen blöd, welche die persönliche Rufnummer nicht bei MS hinterlegen möchten:/, Online SMS Trash Service funktioniert leider nicht)

Die Virtualisierung unter Windows kenne ich persönlich eher weniger. Nach meiner Einschätzung (kann mich auch irren) ist der erste Berührungspunkt mit dem Thema meist VirtualBox. Auch hier gibt es verschiedenste Möglichkeiten von Einstellungen in der VM. Grundlagen, also Vor und Nachteile einer Virtualisierung könnte ebenso spannend für weitere Vorlesungen bzw. Infos sein.

Erstellen eines USB-Live Systems um die User-Erfahrung mit Linux unkompliziert darstellen zu können.

Möglichkeiten Programmiersprachen zu erlernen. Evtl. gibt es hier Tools zur Unterstützung? Vielleicht besteht auch die Möglichkeit aus Ihren Erfahrungen einige Tipps und Tricks in ableiten zu können.

Keine weitere Anregung

Keine weitere Anregung, abgesehen von schon Erwähntem wie z.B. Bilder.

Johannes Koch

Anregung/Vorschlag

Keine Anregungen bzw. ein paar Bilder würden das ganz schön untermalen.

Überschriften

Die Überschriften könnten etwas mehr herausstechen, auf den ersten Blick könnte Verwirrung entstehen.
Ansonsten ist das Tutorial einfach zu verstehen. #

XAMPP oder MAMP

XAMPP bzw. MAMP als ein Programme, das es vereinfachen einen lokalen Testserver zu installieren, einzurichten und zu verwalten.

Fragen Bash/Windows Subsystem Linux

Fragen:
-Wie genau funktioniert eine Dual-Boot-Installation? (siehe 1.Möglichkeit)
-Kurze Erklärung zu den Begriffen: Boot, booten, Bootzeitpunkt ...

Vorschlag zur Darstellung (Bash/Windows Subsystem):
-Vielleicht könnte man die 3 aufgelisteten Möglichkeiten noch klarer darstellen, in dem man zu den folgenden Erläuterungen noch die jeweilige Zahl (1.,2. oder 3.) in die Unterüberschrift packt.

Keine weitere Anregung

Keine weitere Anregung, abgesehen von schon Erwähntem wie z.B. Bilder.

Johannes Koch

Anregung

Meiner Meinung nach gefielen mir die Texte recht gut. Die Texte sind gut strukturiert aber ich hätte mir ein Paar Bilder zur Veranschaulichung gewünscht.

Anregung: SQL-Client

Als SQL-Client könnte ich HeidiSQL empfehlen. Dies benutze ich hin und wieder, da dort die Anbindung an diverse SQL-Server möglich ist. Das GUI könnte anfangs jedoch etwas überfordernd wirken.
Scheint aktuell nur für Windows zu exisiteren.

Keine Anregung

Keine weitere Anregung, abgesehen von schon Erwähntem wie z.B. Bilder.

Johannes Koch

Anregung

Der Text ist gut strukturiert. Trotzdem fällt es mir schwer ohne Visualisierung es umzusetzen.

ohne Visualisierung ist es schwieriger

Nach dem Lesen des Textes war es für mich etwas schwieriger zu verstehen, da Deutsch nicht meine Muttersprache ist und mir viele spezifische Wörter noch unbekannt sind. Mit der Visualisierung von Text wäre die Arbeit einfacher. Dies erleichtert es, sich auf jeden Schritt zu konzentrieren, und es wird klarer, wie alles richtig eingerichtet wird.

relativ schwierig

Die Texte sind gut strukturiert, jedoch schwer ohne Visualisierung umzusetzen.

Frage

Was sind Repositories?

Meinung

Die Auflistung und die Beschreibung der Programme finde ich verständlich. Es wird für uns bestimmt noch einiges klarer, wenn man die Programme selbst genutzt/getestet hat.

Volkan Zeyben

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.