bibliotheks-und-archivinfor.../01_technische-grundlagen.md

280 lines
12 KiB
Markdown
Raw Normal View History

2020-03-09 23:20:05 +01:00
# Technische Grundlagen
2020-09-14 23:16:48 +02:00
* Schaubild zu Lehrinhalten (10 Minuten)
* Einrichtung der Arbeitsumgebung (Linux) (20 Minuten)
* Grundlagen der Unix Shell (45 Minuten)
* Versionskontrolle mit git (45 Minuten)
* Blog mit GitHub Pages (15 Minuten)
2020-10-13 15:37:00 +02:00
## Schaubild zu Lehrinhalten
2020-09-14 23:16:48 +02:00
![Schaubild zu Lehrinhalten](images/01_schaubild.png)
erstellt mit [mermaid](https://mermaidjs.github.io/mermaid-live-editor/)
Note:
* In diesem Schaubild sind links die Lokalsysteme (Bibliothekssytem Koha, Archivinformationssystem ArchivesSpace, Repository-Software DSpace) aufgeführt. Diese bieten jeweils eine OAI-Schnittstelle an.
* Mit einer speziellen Software (hier: metha) werden die Metadaten im jeweils spezifischen Format eingesammelt. Über einen XSLT Crosswalk werden die Daten dann einheitlich in MARC21-XML überführt.
* Abschließend werden die MARC21-XML-Daten in die Discovery-Lösung VuFind eingespielt.
* Wir lernen die Systeme, Schnittstellen, Tools und Formate Schritt für Schritt kennen. Am Ende des Kurses sollten Sie das Schaubild dann in eigenen Worten erklären können.
2020-10-13 15:37:00 +02:00
## Einrichtung der Arbeitsumgebung (Linux)
2020-09-14 23:16:48 +02:00
2020-10-13 15:37:00 +02:00
### Arbeitsumgebung
2020-09-14 23:16:48 +02:00
* Jede/r erhält eine virtuelle Maschine der FH Graubünden mit Ubuntu Linux.
* Sie haben volle Administrationsrechte.
* Dozenten haben zur Unterstützung und Fehlerbehebung ebenfalls Zugriff darauf.
2020-10-13 15:37:00 +02:00
### Linux
2020-09-14 23:16:48 +02:00
* Die meisten Webserver laufen auf Linux.
* Wir verwenden [Ubuntu](https://ubuntu.com) in der Version 20.04 LTS.
* Ubuntu basiert wiederum auf [Debian](https://www.debian.org). Die ganze Familiengeschichte: [GNU/Linux Distributions Timeline](https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg)
Note:
- Normalerweise werden Linux-Server aus Sicherheitsgründen ohne grafische Oberfläche administriert, also nur über die Kommandozeile.
2020-10-13 15:37:00 +02:00
### Zugriff auf die virtuelle Maschine
2020-09-14 23:16:48 +02:00
1. Per VPN mit dem Netzwerk der FHGR verbinden
2. <https://horizon.fh-htwchur.ch> aufrufen
3. Zugriff auf die virtuelle Maschine (Ubuntu) entweder direkt über den Browser (HTML5) oder über eine Zusatzsoftware (Horizon Client)
Sie können sich an allen drei Punkten (VPN, Horizon und Ubuntu) mit Ihrem persönlichen FHGR-Konto anmelden.
Note:
- Bei Eingabe des Passworts ggf. mit Copy & Paste arbeiten, um Probleme mit dem Tastaturlayout zu umgehen.
- Copy & Paste funktioniert besser mit der Zusatzsoftware.
2020-10-13 15:37:00 +02:00
### Übung: Verbindung testen
2020-09-14 23:16:48 +02:00
Bitte verbinden Sie sich jetzt mit der virtuellen Maschine. Nach dem Login sollte es etwa so aussehen:
![Screenshot des Ubuntu-Desktops](images/01_ubuntu.png)
2020-10-13 15:37:00 +02:00
### Grundeinstellungen
2020-09-14 23:16:48 +02:00
1. Favoriten
* Unten links Anwendungsmenü öffnen
* Programm suchen (`Terminal` und `Text Editor`)
* Rechtsklick auf Icon und `Add to Favorites` wählen
2. Startseite im Firefox Browser
* Die [Übersichtsseite des gemeinsamen Dokuments](https://pad.gwdg.de/Tf-htntTR8COelT3Wgodzg?both#) aufrufen
* Icon vor der URL (Schloss) per Drag & Drop auf Home-Button ziehen
Note:
- Teilnehmer\*innen mit Mac? Dann im Applikationsmenü "Region & Language" und dort das Keyboard Layout "German (Switzerland, Macintosh)" ergänzen und auswählen
2020-10-13 15:37:00 +02:00
### Programme installieren
2020-09-14 23:16:48 +02:00
1. Programmverzeichnis aktualisieren
```shell
sudo apt update
```
2. Programme installieren
```shell
sudo apt install git curl
```
Note:
- Darauf folgt eine Passwortabfrage (nochmal das gleiche).
- Änderungen werden ausführlich angezeigt, diese müssen dann nochmal mit `Y` bestätigt werden.
- Die Paketverwaltung unter Linux ist vergleichbar mit einem App-Store von Apple oder Google.
2020-10-13 15:37:00 +02:00
## Grundlagen der Unix Shell
2020-09-14 23:16:48 +02:00
* Wird benötigt zur Administration von Servern
* Ist aber auch zur Automatisierung von kleineren Aufgaben beliebt (Shell-Scripte)
Note:
- Die Unix Shell werden wir im Kurs öfter für Installation und Konfiguration der Software verwenden. Daher beginnen wir hier mit einer Wiederholung der wichtigsten Kommandos, damit uns das später leichter fällt.
- Es gibt verschiedene Varianten der Shell. Ubuntu verwendet Bash.
2020-10-13 15:37:00 +02:00
### Download der Materialien
2020-09-14 23:16:48 +02:00
1. In das Home-Verzeichnis wechseln
```shell
cd
```
2. Archiv shell-lesson.zip von Library Carpentry herunterladen
```shell
wget https://librarycarpentry.org/lc-shell/data/shell-lesson.zip
```
3. Archiv in den Ordner shell-lesson entpacken und Archiv löschen
```shell
unzip shell-lesson.zip -d shell-lesson
rm shell-lesson.zip
```
2020-10-13 15:37:00 +02:00
### Übungen
2020-09-14 23:16:48 +02:00
Aufgaben:
1. Bearbeiten Sie das zweite Kapitel [Navigating the filesystem](https://librarycarpentry.org/lc-shell/02-navigating-the-filesystem/index.html) der Library Carpentry Lesson zur Unix Shell
2. Bearbeiten Sie das dritte Kapitel [Working with files and directories](https://librarycarpentry.org/lc-shell/03-working-with-files-and-folders/index.html) der Library Carpentry Lesson zur Unix Shell
2020-10-13 15:37:00 +02:00
### Tipps zur Unix Shell
2020-09-14 23:16:48 +02:00
* Nutzen Sie immer die Tab-Taste für die Autovervollständigung.
* Seien Sie faul, verwenden Sie Ihre persönliche Befehlshistorie (Pfeiltaste nach oben / Suche in der Historie mit `STRG`+`R`).
* Wichtig ist die Unterscheidung zwischen Programm (`ls`) und Parametern (`-l`).
* Nutzen Sie Spickzettel für die wichtigsten Kommandos wie z.B. [Library Carpentry Reference](https://librarycarpentry.org/lc-shell/reference.html) oder [Cheatsheet für Shell-Scripte](https://devhints.io/bash).
Note:
- Alle Programme in der Unix Shell sind ähnlich aufgebaut. Wenn Sie das Grundprinzip mit der Unterscheidung von Programm und Parametern verinnerlicht haben, dann hilft Ihnen auch die integrierte Hilfe (`--help`) weiter.
2020-10-13 15:37:00 +02:00
### Redirects und Pipes
2020-09-14 23:16:48 +02:00
![Library Carpentry Illustration Redirects and Pipes](images/01_redirects-and-pipes.png)
Note:
1. Bei einer normalen Eingabe landet das Ergebnis im Terminal. `wc` steht für "word count" und liefert mit dem Parameter `-l` die Anzahl der Zeilen. Die Angabe `*.tsv` bedeutet alle Dateien mit der Dateiendung "tsv".
2. Stattdessen kann das Ergebnis aber auch in eine Datei umgelenkt werden mit der spitzen Klammer `>`
3. Das Ergebnis eines Programms kann mit "Pipes" (`|`) direkt weiterverarbeitet werden. Welche Ausgabe erwarten Sie?
2020-10-13 15:37:00 +02:00
## Versionskontrolle mit git
2020-09-14 23:16:48 +02:00
2020-10-08 19:14:19 +02:00
* Aus Zeitgründen schauen wir uns nur Grundfunktionen von `git` an.
* Wenn Sie im Anschluss selbst üben möchten, bietet Library Carpentry dazu [ausführliche Lehrmaterialien](<https://librarycarpentry.org/lc-git/>)
Note:
- Durch die Plattform GitHub, auf der Informatiker\*innen Ihren Quellcode ablegen, ist das Versionskontrollsystem Git sehr populär geworden. Es ist nicht nur für die Entwicklung von Software, sondern generell für die Zusammenarbeit in Projekten extrem hilfreich.
2020-10-13 15:37:00 +02:00
### Wozu Git?
2020-10-08 19:14:19 +02:00
* Git ist eine Software zur Versionskontrolle
* Ermöglicht die Arbeit an Textdateien auf mehreren Computern und/oder mit mehreren Personen zu synchronisieren.
* Jede Änderung wird nachvollziehbar.
* Funktioniert mit allen Textdateien, also geeignet für Code, Plain Text oder auch Tabellen (CSV).
Note:
* Git wurde entwickelt für die gemeinsame Software-Entwicklung; heute gibt es weitere Anwendungsfälle (z.B. Texte, Präsentationen oder Forschungsdaten).
2020-10-13 15:37:00 +02:00
### Unterschied Git und GitHub
2020-10-08 19:14:19 +02:00
* Git kann zunächst auch lokal auf einem Computer verwendet werden.
* Wenn ein Git Repository im Netz bereitgestellt werden soll, braucht es eine Installation von Git auf einem Webserver.
* Das kann man selber machen oder eine Plattform nutzen. Die bekannteste ist [GitHub](https://www.github.com).
Note:
- GitHub ist ein 2007 gegründetes Unternehmen, das 2018 aufgekauft wurde. Die meisten Dienstleistungen sind kostenfrei, aber das muss nicht unbedingt so bleiben. Es ist so erfolgreich, dass praktisch jedes Open-Source-Projekt dort seinen Code ablegt.
- Alternativen zu GitHub sind unter anderem [GitLab](https://gitlab.com), [BitBucket](https://bitbucket.org) oder auch das Urgestein [SourceForge](https://sourceforge.net).
- Viele Bibliotheken nutzen GitHub oder GitLab. Es gibt eine gemeinschaftlich gepflegte Liste [BibsOnGitHub](https://github.com/axel-klinger/BibsOnGitHub), auf der [Listen von Bibliotheken](https://axel-klinger.github.io/BibsOnGitHub/libraries.html) und [deren Repositorien](https://axel-klinger.github.io/BibsOnGitHub/repositories.html) eingesehen werden können.
2020-10-13 15:37:00 +02:00
### GitHub vs. GitLab
2020-10-08 19:14:19 +02:00
* Open Source Software findet sich auf beiden Plattformen.
* Nur GitLab (in der Community Edition) ist selbst Open Source. Hier ist der Quellcode von GitLab: <https://gitlab.com/gitlab-org/gitlab>
2020-10-13 15:37:00 +02:00
### Übung: Link zum Lerntagebuch ergänzen
2020-10-08 19:14:19 +02:00
* Als Beispiel nutzen wir das [GitHub Repository dieses Kurses](https://github.com/felixlohmeier/bibliotheks-und-archivinformatik), in dem die Lehrmaterialien liegen.
* Sie ergänzen darin den Link zu Ihrem Lerntagebuch.
* So gehen wir vor:
1. Kopie des Repositories erstellen ("Fork")
2. Dateien aus Ihrem Fork herunterladen ("clone")
3. Link zu Ihrem Lerntagebuch in `README.md` einfügen
4. Die Änderung mit einer Notiz hochladen ("commit")
5. Übernahme der Änderung anfragen ("Pull request")
2020-10-13 15:37:00 +02:00
#### Schritt 1: Kopie des Repositories erstellen
2020-10-08 19:14:19 +02:00
* Bei GitHub einloggen
* Repository aufrufen: https://github.com/felixlohmeier/bibliotheks-und-archivinformatik
* Oben rechts auf Button "Fork" klicken
2020-10-13 15:37:00 +02:00
#### Schritt 2: Dateien herunterladen
2020-10-08 19:14:19 +02:00
Um die Dateien aus Ihrem Fork herunterzuladen ("klonen") geben Sie den folgenden Befehl ins Terminal ein.
Ersetzen Sie dabei `...` durch den Link zu Ihrem Fork.
```shell
git clone ...
```
2020-10-13 15:37:00 +02:00
#### Schritt 3: Änderung lokal durchführen
2020-10-08 19:14:19 +02:00
1. Datei `README.md` in Texteditor öffnen und Link zu Ihrem Lerntagebuch in Abschnitt "Lerntagebücher" einfügen.
2. Lassen Sie sich von `git` die Änderungen anzeigen:
```shell
git diff
```
3. Lassen Sie sich von `git` die geänderten Dateien anzeigen:
```shell
git status
```
2020-10-13 15:37:00 +02:00
#### Schritt 4: Änderung hochladen
2020-10-08 19:14:19 +02:00
1. Datei zum Päckchen hinzufügen
```shell
git add README.md
```
2. Absender eintragen (mit Ihren Daten ersetzen)
```shell
git config user.email "mail@felixlohmeier.de"
git config user.name "Felix Lohmeier"
```
3. Packzettel beilegen und Päckchen schließen
```shell
git commit -m "Link zu meinem Lerntagebuch"
```
4. Päckchen abschicken
```shell
git push
```
2020-10-13 15:37:00 +02:00
#### Schritt 5: Pull Request erstellen
2020-10-08 19:14:19 +02:00
* Mit wenigen Sekunden Verzögerung sollte Ihre Änderung nun auch bei GitHub angekommen sein.
* Öffnen Sie Ihren Fork bei GitHub.
* Klicken Sie auf den Link "Pull request". Dann erscheint ein Vergleich. Klicken Sie dort auf den Button "Create pull request".
* Vervollständigen Sie das Formular und klicken Sie auf den Button "Create pull request".
2020-10-13 15:37:00 +02:00
#### Ergebnis auf GitHub
2020-10-08 19:14:19 +02:00
Sie finden Ihren Pull Request im ursprünglichen Repository bei GitHub im Tab "Pull requests":
<https://github.com/felixlohmeier/bibliotheks-und-archivinformatik/pulls>
2020-09-14 23:16:48 +02:00
2020-10-13 15:37:00 +02:00
## Blog mit GitHub Pages
2020-09-14 23:16:48 +02:00
* Mit GitHub Pages lassen sich statische Webseiten direkt aus den Dateien im GitHub Repository generieren und auf Servern von GitHub kostenfrei veröffentlichen.
* GitHub verwendet dazu den (hauseigenen) Static-Site-Generator [Jekyll](https://help.github.com/en/github/working-with-github-pages/about-github-pages-and-jekyll).
* Die Software nimmt Markdown- und HTML-Dateien und generiert daraus eine komplette Webseite.
* Die Darstellung (Themes) lässt sich über eine Konfigurationsdatei einstellen.
2020-10-13 15:37:00 +02:00
## Aufgabe: Lerntagebuch
2020-09-14 23:16:48 +02:00
Bis zum nächsten Termin:
1. Lerntagebuch einrichten
* Vorlage für ein Lerntagebuch mit GitHub Pages: <https://github.com/felixlohmeier/lerntagebuch>
* Link bitte auf der Übersichtsseite der gemeinsamen Dokumente ergänzen: <https://pad.gwdg.de/Tf-htntTR8COelT3Wgodzg>
2. Einführungsartikel (wo bin ich gestartet?)
3. Beitrag zu dieser Lehreinheit "Technische Grundlagen"