diff --git a/20241002/dbs-20241002.pdf b/20241002/dbs-20241002.pdf index 0c3f053e5da8895e4fec9fe3bef9ce5b00ef31c2..c25274b166a51f19081d8bbee394d3c53164ad51 100644 Binary files a/20241002/dbs-20241002.pdf and b/20241002/dbs-20241002.pdf differ diff --git a/20241002/dbs-20241002.tex b/20241002/dbs-20241002.tex index ed335591b237aa86135e48a98b9f355a69a4cb15..a91eb0335b474c1cade47819fad1e354beacaf01 100644 --- a/20241002/dbs-20241002.tex +++ b/20241002/dbs-20241002.tex @@ -679,6 +679,8 @@ \end{frame} +\iffalse + \begin{frame} \showsubsection @@ -943,8 +945,6 @@ \end{frame} -\iffalse - \begin{frame}[fragile] \showsubsection diff --git a/20241009/A_Day_in_the_Life_of_a_Wartime_Housewife-_Everyday_Life_in_London,_England,_1941_D2379.jpg b/20241009/A_Day_in_the_Life_of_a_Wartime_Housewife-_Everyday_Life_in_London,_England,_1941_D2379.jpg new file mode 100644 index 0000000000000000000000000000000000000000..540b94e4b65755cf24f22df226f82efcfb7c9476 Binary files /dev/null and b/20241009/A_Day_in_the_Life_of_a_Wartime_Housewife-_Everyday_Life_in_London,_England,_1941_D2379.jpg differ diff --git a/20241009/Computergebouw_van_KLM_voor_automatische_boekingsmethode_Corda_in_Amstelveen._,_Bestanddeelnr_923-3365.jpg b/20241009/Computergebouw_van_KLM_voor_automatische_boekingsmethode_Corda_in_Amstelveen._,_Bestanddeelnr_923-3365.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf66824c62be86cd93903ac8ef7ec6dfaf4631fe Binary files /dev/null and b/20241009/Computergebouw_van_KLM_voor_automatische_boekingsmethode_Corda_in_Amstelveen._,_Bestanddeelnr_923-3365.jpg differ diff --git a/20241009/Ken_Thompson_(sitting)_and_Dennis_Ritchie_at_PDP-11_(2876612463).jpg b/20241009/Ken_Thompson_(sitting)_and_Dennis_Ritchie_at_PDP-11_(2876612463).jpg new file mode 100644 index 0000000000000000000000000000000000000000..b06b4129ed61c8308656ad7939dbb59f75b978be Binary files /dev/null and b/20241009/Ken_Thompson_(sitting)_and_Dennis_Ritchie_at_PDP-11_(2876612463).jpg differ diff --git a/20241009/Shopping_online_with_bank_card.jpg b/20241009/Shopping_online_with_bank_card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b31f47b7abcfba6001cdd8e3771c8785aa9f2882 Binary files /dev/null and b/20241009/Shopping_online_with_bank_card.jpg differ diff --git a/20241009/Zeichen_123.pdf b/20241009/Zeichen_123.pdf new file mode 120000 index 0000000000000000000000000000000000000000..fdbc897227df059cfda790a16555e6e417682116 --- /dev/null +++ b/20241009/Zeichen_123.pdf @@ -0,0 +1 @@ +../common/Zeichen_123.pdf \ No newline at end of file diff --git a/20241009/cd-sammlung.csv b/20241009/cd-sammlung.csv new file mode 100644 index 0000000000000000000000000000000000000000..6887463b736544942b13d56470ddca9d67e276cb --- /dev/null +++ b/20241009/cd-sammlung.csv @@ -0,0 +1,6 @@ +"CD_ID";"Albumtitel";"Interpret";"Gründungsjahr";"Erscheinungsjahr";"Track";"Titel" +4711;"Not That Kind";"Anastacia";1999;2000;1;"Not That Kind" +4711;"Not That Kind";"Anastacia";1999;2000;2;"I'm Outta Love" +4711;"Not That Kind";"Anastacia";1999;2000;3;"Cowboys & Kisses" +4712;"Wish You Were Here";"Pink Floyd";1965;1975;1;"Shine On You Crazy Diamond" +4713;"Freak of Nature";"Anastacia";1999;2001;1;"Paid my Dues" diff --git a/20241009/cd-sammlung.txt b/20241009/cd-sammlung.txt new file mode 100644 index 0000000000000000000000000000000000000000..64616be1c35345950c191739a3a2c1b355a83c34 --- /dev/null +++ b/20241009/cd-sammlung.txt @@ -0,0 +1,6 @@ +CD_ID Albumtitel Interpret Gründungsjahr Erscheinungsjahr Track Titel +4711 Not That Kind Anastacia 1999 2000 1 Not That Kind +4711 Not That Kind Anastacia 1999 2000 2 I'm Outta Love +4711 Not That Kind Anastacia 1999 2000 3 Cowboys & Kisses +4712 Wish You Were Here Pink Floyd 1965 1975 1 Shine On You Crazy Diamond +4713 Freak of Nature Anastacia 1999 2001 1 Paid my Dues diff --git a/20241009/computer-arbeitsplaetze-lores.jpg b/20241009/computer-arbeitsplaetze-lores.jpg new file mode 100644 index 0000000000000000000000000000000000000000..acc7176d9a820d639bd7eabc8c117925ae182dcb Binary files /dev/null and b/20241009/computer-arbeitsplaetze-lores.jpg differ diff --git a/20241009/computer-arbeitsplaetze.jpg b/20241009/computer-arbeitsplaetze.jpg new file mode 120000 index 0000000000000000000000000000000000000000..7900ffd4dbb790e6135035d2fb1088e743ab52f6 --- /dev/null +++ b/20241009/computer-arbeitsplaetze.jpg @@ -0,0 +1 @@ +Computergebouw_van_KLM_voor_automatische_boekingsmethode_Corda_in_Amstelveen._,_Bestanddeelnr_923-3365.jpg \ No newline at end of file diff --git a/20241009/dbms-ohne-computer.jpg b/20241009/dbms-ohne-computer.jpg new file mode 120000 index 0000000000000000000000000000000000000000..e7cc236c7e146500d960f15a709f62938e54b9b9 --- /dev/null +++ b/20241009/dbms-ohne-computer.jpg @@ -0,0 +1 @@ +A_Day_in_the_Life_of_a_Wartime_Housewife-_Everyday_Life_in_London,_England,_1941_D2379.jpg \ No newline at end of file diff --git a/20241009/dbs-20241009.pdf b/20241009/dbs-20241009.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9a353dc71784d26ffa5fde75a3ebf08d0680b06e Binary files /dev/null and b/20241009/dbs-20241009.pdf differ diff --git a/20241009/dbs-20241009.tex b/20241009/dbs-20241009.tex new file mode 100644 index 0000000000000000000000000000000000000000..31b04b689bab22259f1db357307fcf7ff39bad1c --- /dev/null +++ b/20241009/dbs-20241009.tex @@ -0,0 +1,1256 @@ +% dbs-20241009.pdf - Lecture Slides on Databases and Information Security +% Copyright (C) 2023, 2024 Peter Gerwinski +% +% This document is free software: you can redistribute it and/or +% modify it either under the terms of the Creative Commons +% Attribution-ShareAlike 3.0 License, or under the terms of the +% GNU General Public License as published by the Free Software +% Foundation, either version 3 of the License, or (at your option) +% any later version. +% +% This document is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this document. If not, see <http://www.gnu.org/licenses/>. +% +% You should have received a copy of the Creative Commons +% Attribution-ShareAlike 3.0 Unported License along with this +% document. If not, see <http://creativecommons.org/licenses/>. + +% README: Unix-Kommandozeile: Dateiverwaltung, … + +\documentclass[10pt,t]{beamer} + +\usepackage{pgslides} +\usepackage{tikz} + +\newcommand{\vfilll}{\vspace{0pt plus 1filll}} + +\newcommand{\underconstruction}{% + \begin{picture}(0,0) + \put(11,1.2){\makebox(0,0)[b]{\includegraphics[width=1.5cm]{Zeichen_123.pdf}}} + \put(11,0.9){\makebox(0,0)[t]{\shortstack{Änderungen\\vorbehalten}}} + \end{picture}} + +\title{Datenbanken und Datensicherheit} +\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski} +\date{9.\ Oktober 2024} + +\begin{document} + +\maketitleframe + +\nosectionnonumber{Vorab: Online-Werkzeuge} + +\begin{frame} + + \shownosectionnonumber + \begin{itemize} + \item + Diese Veranstaltung findet \textbf{in Präsenz} statt.\\ + Wir versuchen aber, auch eine Online-Teilnahme zu ermöglichen. + \medskip + \item + \textbf{Mumble}: Seminarraum 2\\ + Fragen: Mikrofon einschalten oder über den Chat\\ + Umfragen: über den Chat -- \textbf{auch während der Präsenz-Veranstaltung} + \smallskip + \item + \textbf{VNC}: Kanal 6, Passwort: \lstinline[style=cmd]{testcvh}\\ + Eigenen Bildschirm freigeben: VNC-Software oder Web-Interface \emph{yesVNC}\\ + Eigenes Kamerabild übertragen: Web-Interface \emph{CVH-Camera} + \smallskip + \item + Allgemeine Informationen: + \url{https://www.cvh-server.de/online-werkzeuge/} + \smallskip + \item + Notfall-Schnellzugang: \url{https://www.cvh-server.de/virtuelle-raeume/}\\ + Seminarraum 2, VNC-Passwort: \lstinline[style=cmd]{testcvh} +% \smallskip +% \item +% Bei Problemen: bitte notieren:\\ +% Art des Problems, genaue Uhrzeit, eigener Internet-Zugang + \bigskip + \item + \textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/dbs} + \end{itemize} + +\end{frame} + +\section{Einführung} +\subsection{Was sind Datenbanken?} + +\begin{frame} + + \showsubsectionnonumber + + Datenbank = Datenbestand + System, um darauf zuzugreifen + + \bigskip + + Anforderungen an Datenbank \href{https://de.wikipedia.org/wiki/Datenbank}{[Wikipedia]}:\\ + \begin{minipage}[t]{0.27\textwidth} + \begin{itemize} + \item effizient + \item widerspruchsfrei + \item dauerhaft + \end{itemize} + \end{minipage}\quad + \begin{minipage}[t]{0.65\textwidth} + \begin{itemize} +% \pause + \arrowitem Sortierung, Zugriffsalgorithmen +% \pause + \arrowitem automatische Konsistenzprüfungen +% \pause + \arrowitem Backup, Ausfallsicherheit + \end{itemize} + \end{minipage} + +\end{frame} + +\subsubsection{Datenbank ohne Computer} + +\begin{frame} + + \showsubsectionnonumber + + \strut\hfill + \begin{picture}(0,0) + \put(0,-0.5){\makebox(0,2)[tr]{\includegraphics[width=0.41\textwidth]{dbms-ohne-computer.jpg}}} + \put(0,-7.0){\makebox(0,0)[tr]{% + \begin{minipage}{\textwidth} + \begin{flushright} + \scriptsize + Bildquelle: + \href{https://commons.wikimedia.org/wiki/File:A_Day_in_the_Life_of_a_Wartime_Housewife-_Everyday_Life_in_London,_England,_1941_D2379.jpg}% + {\nolinkurl{https://commons.wikimedia.org/wiki/File:A_Day_in_the_Life_of_a_}\\ + \nolinkurl{Wartime_Housewife-_Everyday_Life_in_London,_England,_1941_D2379.jpg}} + \par + \end{flushright} + \end{minipage}}} + \end{picture}\\[-2.4ex] + + \showsubsubsectionnonumber + + \begin{itemize} +% \pause + \item + menschliche Anwesenheit erforderlich +% \pause + \item + sorgfältig geordnet + für effizienten Zugriff\\ + \textarrow\ sorgfältiger Umgang erforderlich,\\ + \phantom{\textarrow\ }um Ordnung zu erhalten +% \pause + \item + Jeweils 1 Person kann\\ + an 1 Papier arbeiten.\\ + \textarrow\ Hardware-Unterstützung\\ + \phantom{\textarrow\ }für Konsistenz +% (Unabhängiges Arbeiten an verschiedenen Dateien ist möglich; die Hardware +% verhindert jedoch gleichzeitigen Schreibzugriff auf dieselben Daten.) +% \pause + \item + Kopien sehr aufwendig\\ + \textarrow\ sorgfältige Archivierung erforderlich + \end{itemize} + +\end{frame} + +\subsubsection{Zentraler Computer} + +\begin{frame} + + \showsubsectionnonumber + + \strut\hfill + \begin{picture}(0,0) + \put(0,-0.5){\makebox(0,2)[tr]{\includegraphics[width=0.56\textwidth]{zentraler-computer-lores.jpg}}} + \put(0,-7.0){\makebox(0,0)[tr]{% + \begin{minipage}{\textwidth} + \begin{flushright} + \scriptsize + Bildquelle: + \href{https://commons.wikimedia.org/wiki/File:Ken_Thompson_(sitting)_and_Dennis_Ritchie_at_PDP-11_(2876612463).jpg}% + {\nolinkurl{https://commons.wikimedia.org/wiki/File:Ken_Thompson_(sitting)_}\\ + \nolinkurl{and_Dennis_Ritchie_at_PDP-11_(2876612463).jpg}} + \par + \end{flushright} + \end{minipage}}} + \end{picture}\\[-2.4ex] + + \showsubsubsectionnonumber + + \begin{itemize} +% \pause + \item + menschliche Anwesenheit\\ + erforderlich +% \pause + \item + sorgfältig geordnet für\\ + effizienten Zugriff\\ + \textarrow\ Computer kann helfen,\\ + \phantom{\textarrow\ }Ordnung zu erhalten +% \pause + \item + Jeweils 1 Person kann\\ + am Computer arbeiten.\\ + \textarrow\ Hardware-Unterstützung für Konsistenz +% \pause + \item + Backups möglich + \end{itemize} + +\end{frame} + +\subsubsection{Zentraler Computer,\\Zugriff von Arbeitsplätzen aus} + +\begin{frame} + + \showsubsectionnonumber + + \strut\hfill + \begin{picture}(0,0) + \put(0,-0.5){\makebox(0,2)[tr]{\includegraphics[width=0.56\textwidth]{computer-arbeitsplaetze-lores.jpg}}} + \put(0,-7.0){\makebox(0,0)[tr]{% + \begin{minipage}{\textwidth} + \begin{flushright} + \scriptsize + Bildquelle: + \href{https://commons.wikimedia.org/wiki/File:Computergebouw_van_KLM_voor_automatische_boekingsmethode_Corda_in_Amstelveen._,_Bestanddeelnr_923-3365.jpg}% + {\nolinkurl{https://commons.wikimedia.org/wiki/File:Computergebouw_van_KLM_voor_automatische_}\\ + \nolinkurl{boekingsmethode_Corda_in_Amstelveen._,_Bestanddeelnr_923-3365.jpg}}% + \par + \end{flushright} + \end{minipage}}} + \end{picture}\\[-2.4ex] + + \showsubsubsectionnonumber + + \begin{itemize} +% \pause + \item + Arbeiten auf\\ + Entfernung möglich +% \pause + \item + sorgfältig geordnet für\\ + effizienten Zugriff\\ + \textarrow\ Computer kann helfen,\\ + \phantom{\textarrow\ }Ordnung zu erhalten +% \pause + \item + Mehrere Personen können unbemerkt\\ + gleichzeitig an denselben Daten arbeiten.\\ + \textarrow\ Computer muß helfen, Konsistenz zu erhalten +% \pause + \item + Backups möglich + \end{itemize} + +\end{frame} + +\subsubsection{Zentraler Computer,\\öffentlicher Zugriff} + +\begin{frame} + + \showsubsectionnonumber + + \strut\hfill + \begin{picture}(0,0) + \put(0,-0.5){\makebox(0,2)[tr]{\includegraphics[width=0.56\textwidth]{online-shop-lores.jpg}}} + \put(0,-7.0){\makebox(0,0)[tr]{% + \begin{minipage}{\textwidth} + \begin{flushright} + \scriptsize + Bildquelle: + \url{https://commons.wikimedia.org/wiki/File:Shopping_online_with_bank_card.jpg} + \par + \end{flushright} + \end{minipage}}} + \end{picture}\\[-2.5ex] + + \showsubsubsectionnonumber + + \begin{itemize} +% \pause + \item + Selbstbedienung auf\\ + Entfernung möglich +% \pause + \item + sorgfältig geordnet für\\ + effizienten Zugriff\\ + \textarrow\ Computer muß\\ + \phantom{\textarrow\ }selbständig Ordnung erhalten +% \pause + \item + Mehrere Personen können unbemerkt\\ + gleichzeitig an denselben Daten arbeiten.\\ + \textarrow\ Computer muß selbständig Konsistenz erhalten +% \pause + \item + Backups möglich +% \pause + \medskip + \item + Bessere Zugriffsmöglichkeiten \textarrow\ Datensicherheit wird Herausforderung + \end{itemize} + +\end{frame} + +\subsection{Was ist Datensicherheit?} + +\begin{frame} + + \showsubsectionnonumber + + \begin{minipage}[t]{0.24\textwidth} + \begin{itemize} + \item[] \strut + \item Vertraulichkeit + \item Integrität + \item Verfügbarkeit + \end{itemize} + \end{minipage}% +% \pause + \begin{minipage}[t]{0.25\textwidth} + \begin{itemize} + \item[] (CIA) + \item[] (confidentiality) + \item[] (integrity) + \item[] (availability) + \end{itemize} + \end{minipage}\quad + \begin{minipage}[t]{0.45\textwidth} + \begin{itemize} + \item[] \strut +% \pause + \arrowitem Verschlüsselung +% \pause + \arrowitem Konsistenzprüfungen +% \pause + \arrowitem Backups, Ausfallsicherheit + \end{itemize} + \end{minipage} + +% \pause + \bigskip + + \begin{itemize} + \item + Identifizierbarkeit\\ + (Authentizität, Nichtabstreitbarkeit, Zurechenbarkeit)\\ + \textarrow\ Passwörter, Signaturen\\[\smallskipamount] +% \pause + bzw. + \item + Anonymität\\ + (plausible Abstreitbarkeit, Nichtzurechenbarkeit)\\ + \textarrow\ Pseudonymisierung, Anonymisierung\\[\smallskipamount] + \end{itemize} + +\end{frame} + +\subsection{In dieser Lehrveranstaltung} + +\begin{frame} + + \showsubsectionnonumber + + \begin{itemize} + \item + Kurzeinführung: Unix-Shell + \item + Kurzeinführung: TCP/IP + \item + relationale Datenbank-Management-Systeme (DBMS) + \item + SQL-Programmierung + \item + sonstige Datenbank-Management-Systeme + \bigskip + \item + Kurzeinführung: Kryptographie + \item + Kryptographie in der Praxis:\\ + Passwörter, Verschlüsselung, Signaturen,\\ + Schlüssel-Infrastrukturen + \item + Netzwerksicherheit + \item + Sicherheit von Web-Anwendungen + \item + Datenschutz + \end{itemize} + +% \pause + \vfilll + \underconstruction + +\end{frame} + +\begin{frame} + + \showsubsectionnonumber + + \textbf{3 Praktikumsversuche} + \begin{enumerate}\addtocounter{enumi}{-1} + \visible<2->{\item + Praxiserfahrung mit Unix und TCP/IP} + \item + Selbstbau eines einfachen DBMS +% \item +% Sicherheitsprüfung ("`Hacking"') eines Online-Shops + \item + Selbstbau einer prototypischen, sicheren Datenbankanwendung + \item + E-Mail-Verschlüsselung +% \visible<2->{\item[\boldmath$\infty\kern-1.18em\infty\kern-1.18em\infty$.] +% Selbstbau einer praxistauglichen, sicheren Datenbankanwendung} + \end{enumerate} + \visible<2->{Keine festen Abgabetermine, sondern:\\ + Angebot zum betreuten Arbeiten im DV-Pool,\\ + Vorzeigen (Testieren) der Ergebnisse} + + \bigskip + + \textbf{Prüfungsleistung:} Klausur + + \vfilll + \underconstruction + +\end{frame} + +\nosectionnonumber{\inserttitle} + +\begin{frame} + + \shownosectionnonumber + + \begin{itemize} + \item[\textbf{1}] \textbf{Einführung} + \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/dbs}}}% + \begin{itemize} + \color{medgreen} + \item[1.1] Was sind Datenbanken? + \item[1.2] Was ist Datensicherheit? + \item[1.3] In dieser Lehrveranstaltung + \end{itemize} + \item[\textbf{2}] \textbf{Kurzeinführung Unix} + \begin{itemize} + \item[2.1] \color{red}Grundkonzepte + \item[2.2] Die Kommandozeile: Grundlagen + \item[2.3] Dateisysteme + \item[2.4] Ein- und Ausgabeströme + \item[2.5] Pipes + \item[2.6] Verzweigungen und Schleifen +% \item[\dots] + \end{itemize} + \color{gray} + \item[\textbf{3}] \textbf{Kurzeinführung TCP/IP} + \vspace*{-\smallskipamount} + \item[\textbf{\dots}] + \end{itemize} + + \vfilll + \underconstruction + +\end{frame} + +\section{Kurzeinführung Unix} + +\subsection{Grundkonzepte} + +\begin{frame} + + \begin{minipage}[b]{6.5cm} + \showsection + \vspace{-\medskipamount} + \showsubsection + \end{minipage} + + \begin{description} + \addtolength{\leftskip}{-1cm} + \item[1965] + Vorgänger: Multics (Multiplexed Information and Computing Service)\\ + "`überladen"' + \item[1970] + Unix: Einfachheit als Grundkonzept + \item[1972] + Umstellung auf neu entwickelte Programmiersprache C + \item[1975] + AT\&T: Unix inkl.\ Quelltext für Universitäten + \item[1977] + Berkeley Software Distribution (BSD) + \item[1983] + GNU-Projekt + \item[1987] + Minix + \item[1991] + Linux + \item[1993] + FreeBSD, NetBSD + \item[1994] + OpenBSD + \item[2000] + Darwin (Mac OS X, BSD-basiert) + \item[2008] + Android (Linux-basiert) + \end{description} + +\end{frame} + +\begin{frame}[fragile] + + \begin{minipage}[b]{6.5cm} + \showsection + \vspace{-\medskipamount} + \showsubsection + + Unix und C: Einfachheit als Grundkonzept +% \vspace{-\bigskipamount} + \begin{itemize} + \item + Vermeiden von Ausnahmen + \item[\color{lightgray}$\bullet$] + \color{lightgray}Baukastensystem + \end{itemize} + \end{minipage}\hspace*{0.5cm}% + \begin{minipage}[b]{5cm} + \small + C: Hauptprogramm\\ + = "`normale"' Funktion + + \medskip + + \begin{lstlisting}[gobble=6] + int main (int argc, char **argv) + { + printf ("Hello, world!\n"); + return 0; + } + \end{lstlisting} + \vspace{-\bigskipamount} + \end{minipage} + + \bigskip + \bigskip + + Unix: übergeordnetes Verzeichnis = "`normales"' Verzeichnis + + \medskip + + \begin{lstlisting}[style=terminal] + cassini/home/peter/foo> ¡ls -la¿ + insgesamt 24 + drwxr-xr-x 2 peter peter 4096 Okt 6 13:30 . + drwxr-xr-x 172 peter peter 20480 Okt 6 13:30 .. + cassini/home/peter/foo> ¡cd ..¿ + cassini/home/peter> + \end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \begin{minipage}[b]{6.5cm} + \showsection + \vspace{-\medskipamount} + \showsubsection + + Unix und C: Einfachheit als Grundkonzept +% \vspace{-\bigskipamount} + \begin{itemize} + \item + Vermeiden von Ausnahmen + \item + Baukastensystem + \end{itemize} + \end{minipage}% + \begin{minipage}[b]{5.5cm} + \small + C: Bibliotheken + + \smallskip + + z.\,B.: \lstinline{printf()} = "`normale"' Funktion\\ + aus eine Bibliothek (\file{libc}) + \end{minipage} + + \bigskip + \bigskip + + Unix: Programme arbeiten zusammen + + \medskip + + \begingroup\small + + \begin{lstlisting}[style=terminal] + cassini/home/peter/bo> ¡find . -name "*klausur*.tex" \ + | xargs grep -l "PBM-Datei"¿ + ./2014ws/ainf/20150130.0/ainf-klausur-20150130.tex + ./2016ws/hp/20170920.0/klausur.tex + ./2016ws/hp/20170206.0/klausur.tex + ./2011ws/rarch/20120322.0/rarch-klausur-20120322.tex + ./2012ws/klausuren-gerwinski/rarch-klausur-20120322.tex + ./2013ws/ainf/20140918.0/ainf-klausur-20140918.tex + ./2017ws/hp/20180213.k1/klausur.tex + ./2017ws/hp/20180205/klausur.tex + ./2015ws/ainf/20160913/ainf-klausur-20160913.tex + \end{lstlisting} + + \endgroup + +\end{frame} + +\subsection{Die Kommandozeile: Grundlagen} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + Programm aufrufen: Namen eingeben, z.\,B.: \lstinline[style=cmd]{ls} + \item + Optionen: \lstinline[style=cmd]{ls -l} + \item + Lange Optionen (GNU-Konvention): \lstinline[style=cmd]{ls --help} + \medskip + \item + Text schreiben: \lstinline[style=cmd]{echo "Hello, world!"} + \item + (String-)Variable setzen: \lstinline[style=cmd]{FOO=bar} + \item + Variable einlesen: \lstinline[style=cmd]{read FOO} + \item + Variable abrufen: \lstinline[style=cmd]{echo $FOO} + \item + Aus Sicherheitsgründen: \lstinline[style=cmd]{echo "$FOO"} + \end{itemize} + +% \pause + \begin{lstlisting}[style=terminal] + cassini/home/peter/bo> ¡FOO=ls¿ + cassini/home/peter/bo> ¡echo "$FOO"¿ + ls + cassini/home/peter/bo> ¡$FOO¿ + 2011ws 2012ws 2013ws doc misc projekte + 2012ss 2013ss briefe material orga + cassini/home/peter/bo> + \end{lstlisting} + +\end{frame} + +\begin{frame} + + \showsubsection + + \begin{itemize} + \item + Befehl zurückholen: Pfeiltasten $\uparrow$, $\downarrow$ + \item + Befehl bearbeiten: Pfeiltasten $\leftarrow$, $\rightarrow$ usw. + \item + Befehl vervollständigen: TAB + \item + Befehl rückwärts suchen: Ctrl+R + \item + Bildschirm löschen: Ctrl+L + \item + Befehl abbrechen: Ctrl+C + \bigskip +% \pause + \item + Hilfe-Option: \lstinline[style=cmd]{ls --help} + \item + Unix-Handbuch -- \emph{manual\/}: \lstinline[style=cmd]{man ls}\\ + (Beenden mit \lstinline[style=cmd]{q}) + \end{itemize} + +\end{frame} + +\nosectionnonumber{\inserttitle} + +\begin{frame} + + \shownosectionnonumber + + \begin{itemize} + \item[\textbf{1}] \textbf{Einführung} + \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/dbs}}}% + \begin{itemize} + \color{medgreen} + \item[1.1] Was sind Datenbanken? + \item[1.2] Was ist Datensicherheit? + \item[1.3] In dieser Lehrveranstaltung + \end{itemize} + \item[\textbf{2}] \textbf{Kurzeinführung Unix} + \begin{itemize} + \color{medgreen} + \item[2.1] Grundkonzepte + \color{orange} + \item[2.2] Die Kommandozeile: Grundlagen + \color{red} + \item[2.3] Dateisysteme + \item[2.4] Ein- und Ausgabeströme + \item[2.5] Pipes + \item[2.6] Verzweigungen und Schleifen + \end{itemize} + \color{gray} + \item[\textbf{3}] \textbf{Kurzeinführung TCP/IP} + \vspace*{-\smallskipamount} + \item[\textbf{\dots}] + \end{itemize} + + \vfilll + \underconstruction + +\end{frame} + +\begin{frame} + + \showsubsection + + \begin{itemize} + \item + Verzeichnisse für Programme: \lstinline[style=cmd]{echo $PATH} + \item + Programm in explizitem Verzeichnis aufrufen: \lstinline[style=cmd]{/bin/ls -l} + \item + Programm im aktuellen Verzeichnis aufrufen: \lstinline[style=cmd]{./hello} + \bigskip + + \addtolength{\leftskip}{1cm} + \item[MS-DOS:] + Ausführbare Programme werden gefunden,\\ + wenn sie im \lstinline[style=terminal]{PATH} stehen\\ + \emph{oder\/} sich im aktuellen Verzeichnis befinden. + \smallskip + \item[Unix:] + Ausführbare Programme werden gefunden,\\ + wenn sie im \lstinline[style=terminal]{PATH} stehen. + + \smallskip + \textarrow\ Vermeiden von Ausnahmen + +% \pause + \smallskip + Das aktuelle Verzeichnis (\lstinline[style=terminal]{.}) + \emph{kann\/} im \lstinline[style=terminal]{PATH} stehen,\\ + muß dies aber nicht\only<2>{ --\\ + und sollte es aus Sicherheitsgründen auch nicht}. + + \end{itemize} + +\end{frame} + +\subsection{Dateisysteme} + +\begin{frame} + + \showsubsection + + \begin{itemize} + \item + Dateien listen: \lstinline[style=cmd]{ls}\\ + langes Listenformat: \lstinline[style=cmd]{ls -l}\\ + rückwärts nach Zeit sortiert: \lstinline[style=cmd]{ls -lrt} + \item + Datei ausgeben: \lstinline[style=cmd]{cat hello.c} + \item + Datei anzeigen: \lstinline[style=cmd]{less hello.c} + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + Arbeitsverzeichnis anzeigen: \lstinline[style=cmd]{pwd}\\ + \item + Arbeitsverzeichnis wechseln: \lstinline[style=cmd]{cd script}\\ + (\emph{kein\/} Programm, sondern Shell-Befehl) + \item + übergeordnetes Verzeichnis: \lstinline[style=cmd]{cd ..} + \item + eigenes \newterm{Home-\/}Verzeichnis: \lstinline[style=cmd]{cd} + \item + Wurzelverzeichnis: \lstinline[style=cmd]{cd /} + \item + wieder zurück: \lstinline[style=cmd]{cd -} + \end{itemize} + +% \pause + \begin{lstlisting}[style=terminal] + cassini/home/peter/bo/2013ss/net/script> ¡cd /usr/bin¿ + cassini/usr/bin> ¡cd ../lib¿ + cassini/usr/lib> ¡cd¿ + cassini/home/peter> + \end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + Dateien kopieren (\emph{copy\/}): \lstinline[style=cmd]{cp} + \item + Dateien verschieben/umbenennen (\emph{move\/}): \lstinline[style=cmd]{mv} + \item + Dateien löschen (\emph{remove\/}): \lstinline[style=cmd]{rm} + \end{itemize} + + \begin{lstlisting}[style=terminal,xleftmargin=-3pt] + cassini/home/peter> ¡cp -p foo/test.txt¿ + cp: missing destination file operand after `foo/test.txt' + Try `cp --help' for more information. + cassini/home/peter> ¡cp -p foo/test.txt .¿ + cassini/home/peter> ¡mv test.txt bla.txt¿ + cassini/home/peter> ¡cat bla.txt¿ + Dies ist ein Test. + cassini/home/peter> ¡rm bla.txt¿ + cassini/home/peter> + \end{lstlisting} + + \medskip + + Aktuelles Verzeichnis: \lstinline[style=cmd]{.} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + \newterm{Zugriffsrechte} + \end{itemize} + + \begingroup +% \small + \begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt] + cassini/home/peter/bo/2019ws/es/20191009> ¡ls -l¿ + ... + -rw-r--r-- 1 peter peter 24523 Okt 8 21:47 es-20191009.tex + \end{lstlisting} + \endgroup + \begin{onlyenv}<2> + \begin{picture}(0,1) + \color{red} + \put(0.3,0){\tikz{\draw[-latex,red](0,0)--(0,1); + \draw[-latex,red](0,0)--(2.5,1);}} + \put(0,-0.1){\makebox(0,0)[tl]{Benutzer (u -- \emph{user\/}) darf lesen und schreiben}} + \end{picture} + \end{onlyenv} + \begin{onlyenv}<3> + \begin{picture}(0,1) + \color{red} + \put(0.84,0){\tikz{\draw[-latex,red](0,0)--(0,1); + \draw[-latex,red](0,0)--(3.2,1);}} + \put(0,-0.1){\makebox(0,0)[tl]{Gruppe (g -- \emph{group\/}) darf lesen}} + \end{picture} + \end{onlyenv} + \begin{onlyenv}<4> + \begin{picture}(0,1) + \color{red} + \put(1.47,0){\tikz{\draw[-latex,red](0,0)--(0,1);}} + \put(0,-0.1){\makebox(0,0)[tl]{alle anderen (o -- \emph{other\/}) dürfen lesen}} + \end{picture} + \end{onlyenv} + + \medskip + \pause[5] + \begin{itemize} + \item + Zugriffsrechte ändern:\\ + \lstinline[style=cmd]{chmod o-r es-20191009.tex} -- Lesezugriff entziehen\\ + \lstinline[style=cmd]{chmod g+w es-20191009.tex} -- Schreibzugriff gewähren\\ + \lstinline[style=cmd]{chmod 640 es-20191009.tex} -- + auf \lstinline[style=terminal]{-}% + \lstinline[style=terminal]{rw-}% + \lstinline[style=terminal]{r--}% + \lstinline[style=terminal]{---} setzen + \end{itemize} + \pause + \begin{picture}(0,0) + \color{red} + \put(7.22,0.55){\makebox(0,0)[tl]{% + \small + \begin{math}% + \underbrace{\rule{0.7em}{0pt}}_{\textstyle 6}% + \underbrace{\rule{0.7em}{0pt}}_{\textstyle 4}% + \underbrace{\rule{0.7em}{0pt}}_{\textstyle 0} + \end{math}}} + \end{picture} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + \newterm{ausführbare\/} Dateien + \end{itemize} + + \begingroup +% \small + \begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt] + cassini/home/peter/bo/2019ws/es/20191002> ¡cat test2.txt¿ + ls -l + cassini/home/peter/bo/2019ws/es/20191002> ¡chmod +x test2.txt¿ + cassini/home/peter/bo/2019ws/es/20191002> ¡ls -l test2.txt¿ + -rwxr-xr-x 1 peter peter 6 Okt 2 13:43 test2.txt + cassini/home/peter/bo/2019ws/es/20191002> ¡./test2.txt¿ + insgesamt 4828 + lrwxrwxrwx 1 peter peter 18 Apr 13 2016 csa2.jpg -> ../common/csa2.jpg + -rw-r--r-- 1 peter peter 4619138 Okt 8 21:28 es-20191002.pdf + ... + \end{lstlisting} + \endgroup + +% \pause + \begin{itemize} + \item + ausführbare Textdateien: \newterm{Skripte} + +% \pause + \smallskip + hier: ausführbare Textdatei mit Shell-Befehlen\\ + (ohne spezielle Kennung): Shell-Skript + + \pause + \smallskip + Kennung: 1.\ Zeile enthält \lstinline[style=terminal]{#!} und den Interpreter,\\ + z.\,B.\ \lstinline[style=terminal]{#!/bin/bash}\\ + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + Datenträger in Verzeichnis \newterm{einhängen\/}: \lstinline[style=cmd]{mount} + \end{itemize} + + \begin{lstlisting}[style=terminal] + cassini/home/peter> ¡ls /media/usb1/¿ + cassini/home/peter> ¡mount /media/usb1¿ + cassini/home/peter> ¡ls /media/usb1/¿ + es-20191002.pdf hello.c hexapode KIS-Bericht.pdf + cassini/home/peter> ¡umount /media/usb1¿ + cassini/home/peter> ¡ls /media/usb1/¿ + cassini/home/peter> + \end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + \newterm{Symbolische Verknüpfungen -- symbolic links} + + \smallskip + + Verweis auf die eigentliche Datei\\ + \textarrow\ Wenn man die Datei löscht, zeigt der Link ins Leere. + + \smallskip + + Verknüpfung anlegen: \lstinline[style=cmd]{ln -s datei link}\\ + (Richtung: wie bei \lstinline[style=cmd]{cp}) + + \smallskip + + Beispiel: \lstinline[style=cmd]{ln -s ../common/GNU-GPL-3 gpl.txt} + \pause + \medskip + \item + \newterm{Harte Verknüpfungen -- hard links} + + \smallskip + + Dieselben Daten auf dem Datenträger\\ + sind unter mehreren Namen verfügbar.\\ + \textarrow\ Wenn man einen löscht, sind die Daten noch da. + + \smallskip + + \begingroup + \begin{lstlisting}[style=terminal,gobble=10,xleftmargin=-3pt] + cassini/home/peter/bo/2019ws/es/20191002> ¡ls -l¿ + ... + -rw-r--r-- 1 peter peter 1202 Okt 2 13:35 shell-06.txt + drwxr-xr-x 2 peter peter 4096 Okt 2 13:16 test + \end{lstlisting} + \endgroup + \begin{picture}(0,0.5) + \color{red} + \put(2.31,0){\tikz{\draw[-latex,red](0,0)--(0,0.5);}} + \put(0,-0.1){\makebox(0,0)[tl]{Anzahl der ("`harten"') Links + auf diese Datei / dieses Verzeichnis}} + \end{picture} + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + \lstinline[style=cmd]{grep}: Dateien durchsuchen + \end{itemize} + \begin{lstlisting}[style=terminal,xleftmargin=-3pt] + cassini/home/peter/bo/2019ws/es/20191002> ¡grep gcc *.txt¿ + shell-03.txt: cassini/...> gcc -Wall -O hello.c -o hello + \end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + \lstinline[style=cmd]{find}: Dateien anhand ihrer Eigenschaften suchen + \end{itemize} + +% \small + \begin{lstlisting}[style=terminal] + $ ¡find . -name "*.txt"¿ + ./shell-06.txt + ./shell-03.txt + ./shell-05.txt + ./test.txt + ./test/test.txt + ... + $ ¡find . -name "*.txt" -perm /u+x¿ + ./test2.txt + $ ¡find . -name "*.txt" -perm /u+x -exec ls -l {} \;¿ + -rwxr-xr-x 1 peter peter 6 Okt 2 13:43 ./test2.txt + \end{lstlisting} + +\end{frame} + +\subsection{Ein- und Ausgabeströme} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + Standard-Ausgabe in Datei umleiten + \end{itemize} + \begin{lstlisting}[style=terminal] + $ ¡echo "Dies ist ein Test." > test.txt¿ + $ ¡cat test.txt¿ + Dies ist ein Test. + \end{lstlisting} + + \pause + \smallskip + + \begin{itemize} + \item + Standard-Ausgabe an Datei anhängen + \end{itemize} + \begin{lstlisting}[style=terminal] + $ ¡echo "Dies ist noch ein Test." >> test.txt¿ + $ ¡cat test.txt¿ + Dies ist ein Test. + Dies ist noch ein Test. + \end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + Fehler-Ausgabe in Datei umleiten + \end{itemize} + \begin{lstlisting}[style=terminal] + $ ¡cat gibtsnicht.txt > fehler.txt¿ + cat: gibtsnicht.txt: No such file or directory + $ ¡cat fehler.txt¿ + $ ¡cat gibtsnicht.txt 2> fehler.txt¿ + $ ¡cat fehler.txt¿ + cat: gibtsnicht.txt: No such file or directory + \end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + Standard-Eingabe aus Datei lesen + \end{itemize} + \begin{lstlisting}[style=terminal] + $ ¡bc¿ + bc 1.06.95 + Copyright [...] 2006 Free Software Foundation, Inc. + This is free software with ABSOLUTELY NO WARRANTY. + For details type `warranty'. + ¡2 + 2¿ + 4 + $ ¡echo "2 + 2" > test.bc¿ + $ ¡bc < test.bc¿ + 4 + \end{lstlisting} + +\end{frame} + +\subsection{Pipes} + +\begin{frame}[fragile] + + \showsubsection + + Standard-Ausgabe von Programm A\\ + wird zu Standard-Eingabe von Programm B + + \smallskip + + \begin{lstlisting}[style=terminal] + $ ¡echo "2 + 2" | bc¿ + 4 + \end{lstlisting} + + \smallskip + + \textarrow\ sehr mächtiger "`Baukasten"' + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + \lstinline[style=cmd]{sed}: \emph{stream editor}\\ + Suchen und Ersetzen (und noch viel mehr) + \end{itemize} + \begin{lstlisting}[style=terminal] + $ ¡echo "Schlimmer geht nimmer." | sed -e 's/nim/im/g'¿ + Schlimmer geht immer. + \end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + \begin{itemize} + \item + \lstinline[style=cmd]{grep}: Standard-Eingabe durchsuchen + \end{itemize} + \begin{lstlisting}[style=terminal] + $ ¡ls | grep slides¿ + pgslides.sty + $ ¡ls *.pdf | grep -v logo¿ + es-20191002.pdf + Zeichen_123.pdf + $ ¡ls -l $(ls *.pdf | grep -v logo)¿ + -rw-r--r-- 1 ... 4619138 Okt 8 21:28 es-20191002.pdf + lrwxrwxrwx 1 ... 25 Okt 3 2016 Zeichen_123.pdf -> ... + \end{lstlisting} + +\end{frame} + +\subsection{Verzweigungen und Schleifen} + +\begin{frame}[fragile] + + \showsubsection + + \begin{lstlisting}[style=terminal] + $ ¡if grep Blubb test.txt; then echo "gefunden"; \ + else echo "nicht gefunden"; fi¿ + nicht gefunden + $ ¡for x in foo bar baz; do echo $x; done¿ + foo + bar + baz + \end{lstlisting} + +\end{frame} + +\nosectionnonumber{\inserttitle} + +\begin{frame} + + \shownosectionnonumber + + \begin{itemize} + \item[\textbf{1}] \textbf{Einführung} + \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/dbs}}}% + \begin{itemize} + \color{medgreen} + \item[1.1] Was sind Datenbanken? + \item[1.2] Was ist Datensicherheit? + \item[1.3] In dieser Lehrveranstaltung + \end{itemize} + \item[\textbf{2}] \textbf{Kurzeinführung Unix} + \begin{itemize} + \color{medgreen} + \item[2.1] Grundkonzepte + \color{orange} + \item[2.2] Die Kommandozeile: Grundlagen + \color{red} + \item[2.3] Dateisysteme + \item[2.4] Ein- und Ausgabeströme + \item[2.5] Pipes + \item[2.6] Verzweigungen und Schleifen +% \item[\dots] + \end{itemize} + \color{gray} + \item[\textbf{3}] \textbf{Kurzeinführung TCP/IP} + \vspace*{-\smallskipamount} + \item[\textbf{\dots}] + \end{itemize} + + \vfilll + \underconstruction + +\end{frame} + +\iffalse + +\fi + +\end{document} diff --git a/20241009/dbs-uebung-20241009.pdf b/20241009/dbs-uebung-20241009.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f959c045086463febee46c297d352af0f54f12db Binary files /dev/null and b/20241009/dbs-uebung-20241009.pdf differ diff --git a/20241009/dbs-uebung-20241009.tex b/20241009/dbs-uebung-20241009.tex new file mode 100644 index 0000000000000000000000000000000000000000..bb6ebdfcffe2e423f7d37304d3ada661676ebe46 --- /dev/null +++ b/20241009/dbs-uebung-20241009.tex @@ -0,0 +1,101 @@ +% dbs-uebung-20231005.pdf - Exercises on Databases and Information Security +% Copyright (C) 2024 Peter Gerwinski +% +% This document is free software: you can redistribute it and/or +% modify it either under the terms of the Creative Commons +% Attribution-ShareAlike 3.0 License, or under the terms of the +% GNU General Public License as published by the Free Software +% Foundation, either version 3 of the License, or (at your option) +% any later version. +% +% This document is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this document. If not, see <http://www.gnu.org/licenses/>. +% +% You should have received a copy of the Creative Commons +% Attribution-ShareAlike 3.0 Unported License along with this +% document. If not, see <http://creativecommons.org/licenses/>. + +% README: 1: Dateien umbenennen, Tabellen bearbeiten + +\documentclass[a4paper]{article} + +\usepackage{pgscript} + +\thispagestyle{empty} + +\begin{document} + + \thispagestyle{empty} + + \section*{Datenbanken und Datensicherheit\\ + Übungsaufgaben 1 -- 9.\ Oktober 2024} + + \exercise{Dateien umbenennen} + + In einem Verzeichnis befinden sich die folgenden Dateien: + \begin{lstlisting}[style=terminal] + $ ¡ls dbs-20241002.*¿ + dbs-20241002.aux dbs-20241002.out dbs-20241002.tex + dbs-20241002.log dbs-20241002.pdf dbs-20241002.toc + dbs-20241002.nav dbs-20241002.snm dbs-20241002.vrb + \end{lstlisting} + Beschreiben Sie einen Weg, diese Dateien auf möglichst effiziente und möglichst wenig + fehleranfällige Weise folgendermaßen umzubenennen: + \begin{lstlisting}[style=terminal] + $ ¡ls dbs-20241009.*¿ + dbs-20241009.aux dbs-20241009.out dbs-20241009.tex + dbs-20241009.log dbs-20241009.pdf dbs-20241009.toc + dbs-20241009.nav dbs-20241009.snm dbs-20241009.vrb + \end{lstlisting} + Hinweis:\quad\lstinline[style=cmd]{man mmv} + + \exercise{Tabellen bearbeiten} + + Die Datei \gitfile{dbs}{2024ws/20241008}{cd-sammlung.txt} + enthält die folgende Tabelle in Textform: + \begin{lstlisting}[style=terminal,basicstyle=\footnotesize\ttfamily\color{darkgreen}] + CD_ID Albumtitel Interpret Gründungsjahr Erscheinungsjahr Track Titel + 4711 Not That Kind Anastacia 1999 2000 1 Not That Kind + 4711 Not That Kind Anastacia 1999 2000 2 I'm Outta Love + 4711 Not That Kind Anastacia 1999 2000 3 Cowboys & Kisses + 4712 Wish You Were Here Pink Floyd 1965 1975 1 Shine On You Crazy Diamond + 4713 Freak of Nature Anastacia 1999 2001 1 Paid my Dues + \end{lstlisting} + + Die Datei \gitfile{dbs}{2024ws/20241008}{cd-sammlung.csv} + enthält dieselbe Tabelle als CSV-Datei, + wie man sie z.\,B.\ auch mit Tabellenkalkulationsprogrammen bearbeiten kann: + \begin{lstlisting}[style=terminal,basicstyle=\footnotesize\ttfamily\color{darkgreen}] + "CD_ID";"Albumtitel";"Interpret";"Gründungsjahr";"Erscheinungsjahr";"Track";"Titel" + 4711;"Not That Kind";"Anastacia";1999;2000;1;"Not That Kind" + 4711;"Not That Kind";"Anastacia";1999;2000;2;"I'm Outta Love" + 4711;"Not That Kind";"Anastacia";1999;2000;3;"Cowboys & Kisses" + 4712;"Wish You Were Here";"Pink Floyd";1965;1975;1;"Shine On You Crazy Diamond" + 4713;"Freak of Nature";"Anastacia";1999;2001;1;"Paid my Dues" + \end{lstlisting} + + Extrahieren Sie aus (a) \gitfile{dbs}{2024ws/20241008}{cd-sammlung.txt} + und aus (b) \gitfile{dbs}{2024ws/20241008}{cd-sammlung.csv} + jeweils die dritte Spalte ("`Interpret"'). + Bei (b) darf das Ergebnis die Anführungszeichen noch enthalten. + + Hinweise: + \begin{itemize} + \item + Wenn Sie in dieser PDF-Datei die o.\,a.\ Dateinamen anklicken, können Sie + die entsprechende Datei von \url{https://gitlab.cvh-server.de/pgerwinski/dbs} + herunterladen. + \item + \lstinline[style=cmd]{man cut} + \end{itemize} + + \begin{flushright} + \textit{Viel Erfolg!} + \end{flushright} + +\end{document} diff --git a/20241009/logo-hochschule-bochum-cvh-text-v2.pdf b/20241009/logo-hochschule-bochum-cvh-text-v2.pdf new file mode 120000 index 0000000000000000000000000000000000000000..4aa99b8f81061aca6dcaf43eed2d9efef40555f8 --- /dev/null +++ b/20241009/logo-hochschule-bochum-cvh-text-v2.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum-cvh-text-v2.pdf \ No newline at end of file diff --git a/20241009/logo-hochschule-bochum.pdf b/20241009/logo-hochschule-bochum.pdf new file mode 120000 index 0000000000000000000000000000000000000000..b6b9491e370e499c9276918182cdb82cb311bcd1 --- /dev/null +++ b/20241009/logo-hochschule-bochum.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum.pdf \ No newline at end of file diff --git a/20241009/online-shop-lores.jpg b/20241009/online-shop-lores.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67cb26bf2d67ffcc2241ec348794f463646da993 Binary files /dev/null and b/20241009/online-shop-lores.jpg differ diff --git a/20241009/online-shop.jpg b/20241009/online-shop.jpg new file mode 120000 index 0000000000000000000000000000000000000000..4c636276842c9a66b60474e2aadc27803cf5e678 --- /dev/null +++ b/20241009/online-shop.jpg @@ -0,0 +1 @@ +Shopping_online_with_bank_card.jpg \ No newline at end of file diff --git a/20241009/pgscript.sty b/20241009/pgscript.sty new file mode 120000 index 0000000000000000000000000000000000000000..95c888478c99ea7fda0fd11ccf669ae91be7178b --- /dev/null +++ b/20241009/pgscript.sty @@ -0,0 +1 @@ +../common/pgscript.sty \ No newline at end of file diff --git a/20241009/pgslides.sty b/20241009/pgslides.sty new file mode 120000 index 0000000000000000000000000000000000000000..5be1416f4216f076aa268901f52a15d775e43f64 --- /dev/null +++ b/20241009/pgslides.sty @@ -0,0 +1 @@ +../common/pgslides.sty \ No newline at end of file diff --git a/20241009/zentraler-computer-lores.jpg b/20241009/zentraler-computer-lores.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6314ec19d132b2d4020fa2ce83127741eb9dd73b Binary files /dev/null and b/20241009/zentraler-computer-lores.jpg differ diff --git a/20241009/zentraler-computer.jpg b/20241009/zentraler-computer.jpg new file mode 120000 index 0000000000000000000000000000000000000000..dbbe30e51e57e46f8906a33f51bbe1fec3683cfc --- /dev/null +++ b/20241009/zentraler-computer.jpg @@ -0,0 +1 @@ +Ken_Thompson_(sitting)_and_Dennis_Ritchie_at_PDP-11_(2876612463).jpg \ No newline at end of file diff --git a/README.md b/README.md index f5d155ac40907e428a12a5f31f5a377405e7fdb9..8fe27b954da766592a5c53264c7624ec54c7bf86 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,13 @@ Für Details siehe [common/README](https://gitlab.cvh-server.de/pgerwinski/dbs/r Vortragsfolien und Beispiele: ----------------------------- * [02.10.2024: Einführung, Unix-Kommandozeile](https://gitlab.cvh-server.de/pgerwinski/dbs/raw/2024ws/20241002/dbs-20241002.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/dbs/tree/2024ws/20241002/) + * [09.10.2024: Unix-Kommandozeile: Dateiverwaltung, …](https://gitlab.cvh-server.de/pgerwinski/dbs/raw/2024ws/20241009/dbs-20241009.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/dbs/tree/2024ws/20241009/) * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/dbs/raw/2024ws/dbs-slides-2024ws.pdf) +Übungsaufgaben: +--------------- + * [09.10.2024: 1: Dateien umbenennen, Tabellen bearbeiten](https://gitlab.cvh-server.de/pgerwinski/dbs/raw/2024ws/20241009/dbs-uebung-20241009.pdf) + Praktikumsunterlagen: --------------------- * [Versuch 0: Erstkontakt mit der Unix-Shell](https://gitlab.cvh-server.de/pgerwinski/dbs/raw/2024ws/20241002/dbs-2024ws-p0.pdf) diff --git a/dbs-slides-2024ws.pdf b/dbs-slides-2024ws.pdf index 6b0c6c5a99491a3490564c18b9d6c162bbfd8f94..1fff026bb2e96d923e4a329b62036d1440f48795 100644 Binary files a/dbs-slides-2024ws.pdf and b/dbs-slides-2024ws.pdf differ diff --git a/dbs-slides-2024ws.tex b/dbs-slides-2024ws.tex index 17f7e397c87adac56c5b67f4372bbeb897228757..14abb93f32887e74304ca0cb8505e4c072bbc935 100644 --- a/dbs-slides-2024ws.tex +++ b/dbs-slides-2024ws.tex @@ -12,4 +12,6 @@ \includepdf[pages=2-]{common/dbs-slides-title-2024ws.pdf} \pdfbookmark[1]{02.10.2024: Einführung, Unix-Kommandozeile}{20241002} \includepdf[pages=-]{20241002/dbs-20241002.pdf} + \pdfbookmark[1]{09.10.2024: Unix-Kommandozeile: Dateiverwaltung, …}{20241009} + \includepdf[pages=-]{20241009/dbs-20241009.pdf} \end{document} diff --git a/update b/update index 0994656ea5de14cd7ad0ddb8f1e218166ec2d17d..82304000c4a8e8ba34e9639f8341b1cb8fef49a5 100755 --- a/update +++ b/update @@ -140,7 +140,7 @@ cat >> $readme << EOF * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/$course/raw/$sem/$course-slides-$sem.pdf) EOF -#collect "Übungsaufgaben:" tex pdf $date_mask/$course-uebung-$date_mask.tex || echo "(keine)" >> $readme +collect "Übungsaufgaben:" tex pdf $date_mask/$course-uebung-$date_mask.tex || echo "(keine)" >> $readme #collect "Musterlösungen:" tex pdf $date_mask/$course-musterloesung-$date_mask.tex || echo "(keine)" >> $readme #collect "Tafelbilder:" txt png $date_mask/*.txt || echo "(keine)" >> $readme #collect "Notizen:" txt txt $date_mask/dbs-*.txt || echo "(keine)" >> $readme