diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 67616b25df978c43c94bf3aa1ca031546fe3b400..2381ad92d66c37d6f928f35e069e80a694e14e91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,7 +12,7 @@ build: - make - mkdir -p publish/$SEMESTER - cp .htaccess publish/$SEMESTER/.htaccess - - cp aufgabensammlung/aufgabe_wwwcip.html publish/$SEMESTER/aufgabe_wwwcip.html + - tar czf publish/$SEMESTER/aufgabe_wwwcip.tar.gz aufgabensammlung/wwwcip - cp cheatsheet/cheatsheet.tex publish/$SEMESTER/cheatsheet.tex - cp cheatsheet/cheatsheet.tex publish/$SEMESTER/tippen_oder_tabben.tex - cp cheatsheet/cheatsheet.pdf publish/$SEMESTER/cheatsheet.pdf diff --git a/aufgabensammlung/aufgabe_wwwcip.html b/aufgabensammlung/aufgabe_wwwcip.html deleted file mode 100644 index a2c0572edbc197e5264ce017a6726410ec16c2dc..0000000000000000000000000000000000000000 --- a/aufgabensammlung/aufgabe_wwwcip.html +++ /dev/null @@ -1,16 +0,0 @@ -<html> - <head> - <title>Homepage von $LOGIN</title> - </head> - <body> - <h1>$LOGIN</h1> - <p>Hallo,</p> - <p> - ich studiere seit $JAHR $STUDIENFACH an der - <a href="https://www.fau.de">Friedrich-Alexander-Universität Erlangen-Nürnberg</a> und bin derzeit im 1. Semester - </p> - <p>Dieses Schmuckstück einer Webseite ist Rahmen - des <a href="http://fsi.cs.fau.de/linuxkurs">Vorbereitungskurses</a> - der <a href="http://fsi.cs.fau.de">FSI Informatik</a> entstanden.</p> - </body> -</html> diff --git a/aufgabensammlung/wwwcip/.htaccess b/aufgabensammlung/wwwcip/.htaccess new file mode 100644 index 0000000000000000000000000000000000000000..cf74e375ec4af1740cb06b8447908232d6cf5d76 --- /dev/null +++ b/aufgabensammlung/wwwcip/.htaccess @@ -0,0 +1,6 @@ +IndexOptions +FoldersFirst +ScanHTMLTitles +FancyIndexing +IconsAreLinks +HeaderName header.html +ReadmeName readme.html +IndexIgnore header.html readme.html + +AddDefaultCharset UTF-8 diff --git a/aufgabensammlung/wwwcip/cip.gif b/aufgabensammlung/wwwcip/cip.gif new file mode 100644 index 0000000000000000000000000000000000000000..edbe6d84934298acac12e89e4dabd1255abb679b Binary files /dev/null and b/aufgabensammlung/wwwcip/cip.gif differ diff --git a/aufgabensammlung/wwwcip/index.html b/aufgabensammlung/wwwcip/index.html new file mode 100644 index 0000000000000000000000000000000000000000..eda4a369224553040ef7d24d6bd5fcdb4b1c9bdc --- /dev/null +++ b/aufgabensammlung/wwwcip/index.html @@ -0,0 +1,52 @@ +<!-- Siehe https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics --> + +<!DOCTYPE html> +<html lang="de"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <link rel="stylesheet" href="style.css" /> + <title>Homepage von $NAME</title> + </head> + <body> + <header> + <h1>Homepage von $NAME</h1> + </header> + + <p> + Das hier ist + die <abbr title="Computer-Investitions-Programm">CIP</abbr>-Seite + von $NAME (IdM Kennung: $USER). Dieses Webseite wurde erstmals + im des <a href="http://fsi.cs.fau.de/linuxkurs">Linuxkurs</a> + der <a href="http://fsi.cs.fau.de">FSI Informatik</a> erstellt, + am $TODAY. + </p> + + <h2>Inhalt</h2> + + <p> + <a href="./pub/">Hier</a> kannst du meine öffentlichen Dateien + welche mit der Uni zu tun haben finden (Veröffentlichen von + Vorlesungsnotizen, Seiten für Tutorien, Sammeln von Links, + usw.). Auf meine <q>versteckten</q> Dateien zuzugreifen, + brauchst du einen <a href="./nonpub/s3cr3t.html">Dateinamen</a>. + </p> + + <h2>Kommilitonen</h2> + + <p> + Hier eine Liste von CIP-Seiten meiner Kommilitonen: + </p> + <ul> + <li><a href="/~be15piel">Max Musterman</a></li> + <li><a href="/~kl15chee">Lieschen Müller</a></li> + <li><a href="/~se45hell">Hein Janmaat</a></li> + </ul> + + <hr/> + + <footer> + <a href="https://wwwcip.cs.fau.de/"><img src="cip.gif" alt="CIP Now!" /></a> + </footer> + </body> +</html> diff --git a/aufgabensammlung/wwwcip/nonpub/s3cr3t.html b/aufgabensammlung/wwwcip/nonpub/s3cr3t.html new file mode 100644 index 0000000000000000000000000000000000000000..de6701015f9e75ae3559639d0873c414475b9716 --- /dev/null +++ b/aufgabensammlung/wwwcip/nonpub/s3cr3t.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html lang="de"> +<head> +<meta charset="utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1" /> +<link rel="stylesheet" href="../style.css" /> +<title>Geheime Seite!</title> +<h1>Geheime Seite!</h1> + +<p> +Auf diese Seite kommt man nur, wenn man den Dateinamen weiß! Der +Zugriff auf das Verzeichnis ist <q><a href=".">Forbidden</a></q>. Der +Trick hier ist, dass das <code>nonpub</code> Verzeichnis die +richtigen <a href="https://de.wikipedia.org/wiki/Unix-Dateirechte">Dateirechte</a> +Vergeben wurden. In Oktalnotation, bzw. Binär: +</p> + +<pre> ___________ Benutzerrechte (was du kannst) + / _______ Gruppenrechte (angegeben durch den Gruppenbesitz) + | / ___ Rechte für alle sonstigen Benutzer + | | / + | | | + v v v +(701)₈ = (111 000 001)₂ + ^^^ ^^^ ^^^ + ||| ||| ||| + ||| ||| ||\___ Alle können Dateien beim Namen in dem Verzeichnis Anfragen + ||| ||| |\____ Alle dürfen nicht Anfragen welche Dateien im Verzeichnis liegen + ||| ||| \_____ Alle dürfen nicht schreibend auf Dateien Zugreifen + ||| ||\_______ Die Gruppe darf keine Dateien Abfragen + ||| |\________ Die Gruppe darf keine Dateien Lesen + ||| \_________ Die Gruppe darf keine Dateien Schreiben + ||\___________ Du kannst alle Dateien im Verzeichnis aufzählen + |\____________ Du kannst alle Dateien lesen + \_____________ Du kannst alle Dateien schreiben +</pre> + +<p> +Der Besitzer dieses Verzeichnisses kann hier also Dateien hochladen, +welche nicht <em>unbedingt</em> öffentlich sein sollten +(bspw. Seminararbeiten, Bachelor und Master-Arbeiten welche man zum +Probelesen hochgeladen hat). +</p> diff --git a/aufgabensammlung/wwwcip/pub/fib.py b/aufgabensammlung/wwwcip/pub/fib.py new file mode 100644 index 0000000000000000000000000000000000000000..6185612166e3f0a602abd6306a83c3e9f8274d70 --- /dev/null +++ b/aufgabensammlung/wwwcip/pub/fib.py @@ -0,0 +1,52 @@ +# Ein paar Fibonacci Funktionen in Python + + +def fib_rec(n): + assert n > 0 + if n == 1 or n == 2: + return 1 + return fib_rec(n-1) + fib_rec(n-2) + + +def fib_tail_rec(n): + assert n > 0 + def helper(n, acc, prev): + if n < 1: + return acc + return helper(n-1, prev + acc, acc) + return helper(n, 0, 1) + + +def fib_iter(n): + assert n > 0 + steps = [1,1] + [0] * (n-2) + for i in range(2,n): + steps[i] = steps[i-1] + steps[i-2] + return steps[n-1] + + +import numpy as np +def fib_matrix(n): + assert n > 0 + return np.linalg.matrix_power(np.matrix([[1,1],[1,0]]), n-1)[0,0] + + +if __name__ == '__main__': + # https://en.wikipedia.org/wiki/Fibonacci_sequence#Definition + expected = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] + + def test(fn): + assert all(n == fn(i+1) for (i, n) in enumerate(expected)) + + try: + fn(-1) + assert False, "Definiert für negative Werte" + except AssertionError: + pass + + test(fib_rec) + test(fib_tail_rec) + test(fib_iter) + test(fib_matrix) + + print(f"Passt alles für n < {len(expected)}!") diff --git a/aufgabensammlung/wwwcip/pub/quotes b/aufgabensammlung/wwwcip/pub/quotes new file mode 100644 index 0000000000000000000000000000000000000000..fc7d927f7a78f9b600db6038bc3b03e3a7b05a0d --- /dev/null +++ b/aufgabensammlung/wwwcip/pub/quotes @@ -0,0 +1,15 @@ +Computer Science is no more about computers than astronomy is about +telescopes. + + -- Edsger W. Dijkstra +% +A language that doesn't affect the way you think about programming is +not worth knowing. + + -- Alan J. Perlis +% +Everyone knows that debugging is twice as hard as writing a program in +the first place. So if you are as clever as you can be when you write +it, how will you ever debug it? + + -- Brian W. Kernighan diff --git a/aufgabensammlung/wwwcip/setup.sh b/aufgabensammlung/wwwcip/setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..019690292abcd72870d9d5f773e40d76aa822ab9 --- /dev/null +++ b/aufgabensammlung/wwwcip/setup.sh @@ -0,0 +1,50 @@ +#!/bin/sh +set -e + +# Plausibilitätskontrolle: Mache nichts wenn ~/.www existiert +if [ -e ~/.www ] +then + echo "Es scheint bereits ein .www Verzeichnis zu existieren..." 1>&2 + setfacl -m u:www:rx ~ ~/.www + exit 1 +fi + +# Erstelle das Verzeichnis und mache es dem Webserver sichtbar +mkdir ~/.www/ +setfacl -m u:www:rx ~ ~/.www + +# Ersetze "Variablen" in index.html +NAME=$(getent passwd "$USER" | awk -F: '{ sub(/,.*/, ""); print $5 }') +TODAY=$(date +"%F") +sed -i "s!\$NAME!$NAME!;s!\$USER!$USER!;s!\$TODAY!$TODAY!" index.html + +# Kopiere die restlichen Dateien aus dem Template in ~/.www/ +find . -maxdepth 1 \ + -not -name '.' -not -name '..' \ + -not -name "$(basename "$0")" \ + -print0 | \ + tee ~/out | xargs -0 -I {} cp -r {} ~/.www/ +chmod 701 ~/.www/nonpub/ + +# Wir enden damit, ein paar Hinweise anzuzeigen +cat <<EOF +Deine Seite wurde erstellt, und kann unter + + https://wwwcip.cs.fau.de/~$USER/ + +eingesehen werden! + +Es wurde eine Beispielseite erstellt, welche man noch weiter anpassen +kann. Für weitere Informationen zum CIP und dem WWW allgemein siehe: + +- https://wwwcip.cs.fau.de/documentation/services.de.html +- https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/ +- https://cyber.dabamos.de/mirrors/htmleinf/ +- https://httpd.apache.org/docs/2.4/howto/htaccess.html + __________________________________________________________________ +/ \\ +| KOMMERZIELLE NUTZUNG IN JEGLICHER HINSICHT, Z.B. WERBUNG FÜR DIE | +| EIGENE FIRMA, ANPRIESEN VON KOMMERZIELLER SOFTWARE USW. IST | +| UNTERSAGT! | +\__________________________________________________________________/ +EOF diff --git a/aufgabensammlung/wwwcip/style.css b/aufgabensammlung/wwwcip/style.css new file mode 100644 index 0000000000000000000000000000000000000000..1250da01b0edffe4466f0a97239f5cda40128093 --- /dev/null +++ b/aufgabensammlung/wwwcip/style.css @@ -0,0 +1,22 @@ +/* Siehe https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics */ + +body { /* Zentriere die Seite und lass ein wenig Platz */ + max-width: 80%; + margin: 0.5em auto; +} + +h1:first-of-type { /* Setze die Überschrift mittig */ + text-align: center; +} + +footer { /* Die Fußzeile soll rechtsbündig sein */ + text-align: right; +} + +/* For mobile devices: */ +@media (max-width: 60em) { + body { /* Spare Platz auf kleinen Bildschirm */ + max-width: unset; + margin: 0.5em; + } +}