Skip to content
Snippets Groups Projects
Commit c5e0a41c authored by Philip Kaluđerčić's avatar Philip Kaluđerčić :u7121:
Browse files

feat: Extend the wwwcip assignment

parent cd86d359
No related branches found
No related tags found
1 merge request!2feat: Extend the wwwcip assignment
......@@ -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
......
<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&auml;t Erlangen-N&uuml;rnberg</a> und bin derzeit im 1. Semester
</p>
<p>Dieses Schmuckst&uuml;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>
IndexOptions +FoldersFirst +ScanHTMLTitles +FancyIndexing +IconsAreLinks
HeaderName header.html
ReadmeName readme.html
IndexIgnore header.html readme.html
AddDefaultCharset UTF-8
aufgabensammlung/wwwcip/cip.gif

1.61 KiB

<!-- 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>
<!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>
# 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)}!")
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
#!/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
/* 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;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment