Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6222174921 | ||
|
|
32cf27d87c | ||
|
|
cae460dfc9 | ||
|
|
fac7683e92 | ||
|
|
d9c8b0d250 | ||
|
|
800ed932bb | ||
|
|
7d2e943d6e | ||
|
|
7068ea3e56 | ||
|
|
98837f6840 | ||
|
|
2aa34f1421 | ||
|
|
51e862b287 | ||
|
|
3d1bff94f9 | ||
|
|
a7ad4c0f20 | ||
|
|
8974af49ab | ||
|
|
c8935845f6 | ||
|
|
11fd964c8c | ||
|
|
ff2d8c12c5 |
No files matched your search
@@ -0,0 +1,75 @@
|
|||||||
|
# Humanify Slide Command
|
||||||
|
|
||||||
|
Transformiere die angegebene Slide(s) in meinen persönlichen Lehr- und Erzählstil.
|
||||||
|
|
||||||
|
**Argument:** $ARGUMENTS (Slide-Nummer, Titel, oder Range wie "15-20")
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mein pädagogischer Stil (extrahiert aus Termin 1)
|
||||||
|
|
||||||
|
### 1. Konversationelle Speaker Notes auf Deutsch
|
||||||
|
- Direkte Zitate in Anführungszeichen: `"Ich schaue in viele fragende Gesichte..."`
|
||||||
|
- Natürliche, gesprochene Sprache - kein Vorlesungsdeutsch
|
||||||
|
- Persönliche Ansprache: "ihr", "euch", "wir"
|
||||||
|
|
||||||
|
### 2. Storytelling & Spannungsbogen
|
||||||
|
- Cliffhanger: `"am Ende der heutigen Veranstaltung werdet ihr mir genau sagen können..."`
|
||||||
|
- Übergänge zwischen Konzepten als Geschichte erzählen
|
||||||
|
- Neugier wecken bevor die Antwort kommt
|
||||||
|
|
||||||
|
### 3. Rhetorische Fragen & Interaktion
|
||||||
|
- `Frage: "Weiß jemand wieviele Zustände wir mit 8 Bit beschreiben können?"`
|
||||||
|
- `Fangfrage: "Wie hoch ist die Sample Rate von Vinyls?"` → Überraschende Antwort
|
||||||
|
- Einladungen: `"Wie würdet ihr vorgehen?"`
|
||||||
|
|
||||||
|
### 4. Literarische & kulturelle Referenzen
|
||||||
|
- `»256 Shades of Gray«` (mit deutschen Guillemets »...«)
|
||||||
|
- Metaphern: `"ganz literarisch"`, `"stellt euch vor ihr seid ArchäologInnen"`
|
||||||
|
- Popkulturelle Anknüpfungspunkte
|
||||||
|
|
||||||
|
### 5. Rätsel & Denkaufgaben
|
||||||
|
- Seerose-Rätsel für exponentielles Wachstum
|
||||||
|
- Aktivierung statt passives Zuhören
|
||||||
|
|
||||||
|
### 6. Etymologie & Historie
|
||||||
|
- Wortherkunft: `"von griech. hexa „sechs" und lat. decem „zehn""`
|
||||||
|
- Historische Anekdoten: `"Es gab durchaus einen »Machtkampf«..."`
|
||||||
|
- Personen hinter den Konzepten
|
||||||
|
|
||||||
|
### 7. Progressive Enthüllung
|
||||||
|
- Konzepte über mehrere Slides aufbauen (Das Byte: 3 Slides)
|
||||||
|
- Erst Frage, dann Antwort auf nächster Slide
|
||||||
|
- Spannung halten
|
||||||
|
|
||||||
|
### 8. Struktur der Speaker Notes
|
||||||
|
```markdown
|
||||||
|
<!--
|
||||||
|
"Gesprochener Text in Anführungszeichen"
|
||||||
|
|
||||||
|
Fakten und Hintergrundinfos als Stichpunkte:
|
||||||
|
- Punkt 1
|
||||||
|
- Punkt 2
|
||||||
|
|
||||||
|
Frage: "Interaktive Frage an Studierende?"
|
||||||
|
|
||||||
|
Überleitung: "Und damit kommen wir zu..."
|
||||||
|
-->
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
1. Lies die angegebene(n) Slide(s) aus den Dateien in `slides/`
|
||||||
|
2. Analysiere den aktuellen Inhalt und die Speaker Notes
|
||||||
|
3. Transformiere die Speaker Notes in meinen Stil:
|
||||||
|
- Füge gesprochene Zitate hinzu
|
||||||
|
- Baue rhetorische Fragen ein
|
||||||
|
- Ergänze Übergänge und Storytelling-Elemente
|
||||||
|
- Füge Etymologie oder historischen Kontext hinzu wo passend
|
||||||
|
- Nutze deutsche Guillemets »...« für Titel/Zitate
|
||||||
|
4. Behalte die Slide-Inhalte (Bullet Points, Code, Tabellen) weitgehend bei
|
||||||
|
5. Zeige mir die vorgeschlagenen Änderungen bevor du sie anwendest
|
||||||
|
|
||||||
|
**WICHTIG:** Nicht übertreiben! Authentisch bleiben, nicht jede Slide braucht alles.
|
||||||
@@ -63,3 +63,4 @@ Desktop.ini
|
|||||||
*.pdf
|
*.pdf
|
||||||
index.md.bak
|
index.md.bak
|
||||||
hdm-lehrauftrag-uebersicht.md
|
hdm-lehrauftrag-uebersicht.md
|
||||||
|
slides/assets-original/
|
||||||
@@ -5,6 +5,7 @@ This project builds a presentation deck for Marp based on Markdown files.
|
|||||||
## Agent Restrictions
|
## Agent Restrictions
|
||||||
- Agent NEVER runs commands on its own except changing files INSIDE THIS FOLDER, never any other then this
|
- Agent NEVER runs commands on its own except changing files INSIDE THIS FOLDER, never any other then this
|
||||||
- Agent NEVER runs build commands or any automated processes without explicit user request, as the user is working in dev mode
|
- Agent NEVER runs build commands or any automated processes without explicit user request, as the user is working in dev mode
|
||||||
|
- Agent NEVER runs deploy commands (make deploy, scp, etc.) without explicit user permission - always ask first
|
||||||
|
|
||||||
## Critical File Protection: index.md
|
## Critical File Protection: index.md
|
||||||
- `index.md` is the MAIN CONTENT FILE for the entire lecture series - treat with extreme care
|
- `index.md` is the MAIN CONTENT FILE for the entire lecture series - treat with extreme care
|
||||||
|
|||||||
@@ -1,21 +1,19 @@
|
|||||||
# Makefile for Marp Slides Project
|
# Makefile for Marp Slides Project
|
||||||
|
|
||||||
.PHONY: help build dev watch pdf html clean install deploy assemble
|
.PHONY: help build dev watch pdf html clean install deploy deploy-html copy-assets optimize-images
|
||||||
|
|
||||||
# Slide components
|
# Directories
|
||||||
SLIDES_DIR = slides
|
SLIDES_DIR = slides
|
||||||
BUILD_DIR = build
|
BUILD_DIR = build
|
||||||
HEADER = $(SLIDES_DIR)/_frontmatter.md
|
|
||||||
INTRO = $(SLIDES_DIR)/_intro.md
|
|
||||||
OUTRO = $(SLIDES_DIR)/_outro.md
|
|
||||||
|
|
||||||
# Termin files (date-topic naming convention)
|
# Termin files (date-topic naming convention) - each is self-contained
|
||||||
|
TERMIN_0 = 2025-12-19-termin-0-intro
|
||||||
TERMIN_1 = 2025-12-19-termin-1-grundlagen-text-audio
|
TERMIN_1 = 2025-12-19-termin-1-grundlagen-text-audio
|
||||||
TERMIN_2 = 2026-01-09-termin-2-bild-audio-video
|
TERMIN_2 = 2026-01-09-termin-2-bild-audio-video
|
||||||
TERMIN_3 = 2026-01-23-termin-3-speichermedien-schnittstellen
|
TERMIN_3 = 2026-01-23-termin-3-speichermedien-schnittstellen
|
||||||
TERMIN_4 = 2026-01-30-termin-4-distribution-apis-zukunft
|
TERMIN_4 = 2026-01-30-termin-4-distribution-apis-zukunft
|
||||||
TERMIN_5 = 2026-xx-xx-termin-5-vertiefung-offene-fragen
|
TERMIN_5 = 2026-xx-xx-termin-5-vertiefung-offene-fragen
|
||||||
TERMINS = $(TERMIN_1) $(TERMIN_2) $(TERMIN_3) $(TERMIN_4) $(TERMIN_5)
|
TERMINS = $(TERMIN_0) $(TERMIN_1) $(TERMIN_2) $(TERMIN_3) $(TERMIN_4) $(TERMIN_5)
|
||||||
|
|
||||||
# Default target
|
# Default target
|
||||||
help:
|
help:
|
||||||
@@ -29,28 +27,20 @@ help:
|
|||||||
@echo " make pdf - Export all slides to PDF"
|
@echo " make pdf - Export all slides to PDF"
|
||||||
@echo " make html - Export all slides to HTML"
|
@echo " make html - Export all slides to HTML"
|
||||||
@echo ""
|
@echo ""
|
||||||
|
@echo " Deploy:"
|
||||||
|
@echo " make deploy - Full build + deploy (HTML, PDF, assets)"
|
||||||
|
@echo " make deploy-html - HTML only deploy (faster)"
|
||||||
|
@echo ""
|
||||||
@echo " Other:"
|
@echo " Other:"
|
||||||
@echo " make assemble - Assemble all termin files in build/"
|
@echo " make optimize-images - Resize images to max 1920px"
|
||||||
@echo " make clean - Remove generated files"
|
@echo " make clean - Remove generated files"
|
||||||
@echo " make install - Install dependencies"
|
@echo " make install - Install dependencies"
|
||||||
@echo " make deploy - Deploy slides to server"
|
|
||||||
|
|
||||||
# Ensure build directory exists
|
# Ensure build directory exists
|
||||||
$(BUILD_DIR)/.exists:
|
$(BUILD_DIR)/.exists:
|
||||||
@mkdir -p $(BUILD_DIR)
|
@mkdir -p $(BUILD_DIR)
|
||||||
@touch $@
|
@touch $@
|
||||||
|
|
||||||
# Assemble all termin files
|
|
||||||
assemble: $(BUILD_DIR)/.exists
|
|
||||||
@echo "Assembling slides..."
|
|
||||||
@for f in $(TERMINS); do \
|
|
||||||
echo " $$f.md"; \
|
|
||||||
cat $(HEADER) $(INTRO) $(SLIDES_DIR)/$$f.md $(OUTRO) > $(BUILD_DIR)/$$f.md; \
|
|
||||||
done
|
|
||||||
@echo " all.md"
|
|
||||||
@cat $(HEADER) $(INTRO) $(foreach t,$(TERMINS),$(SLIDES_DIR)/$(t).md) $(OUTRO) > $(BUILD_DIR)/all.md
|
|
||||||
@cp -r $(SLIDES_DIR)/assets $(BUILD_DIR)/ 2>/dev/null || true
|
|
||||||
|
|
||||||
# Development server - serves slides/ directly with HMR
|
# Development server - serves slides/ directly with HMR
|
||||||
dev:
|
dev:
|
||||||
@echo "Starting dev server with HMR..."
|
@echo "Starting dev server with HMR..."
|
||||||
@@ -58,30 +48,43 @@ dev:
|
|||||||
PORT=1312 npx @marp-team/marp-cli --server $(SLIDES_DIR)/
|
PORT=1312 npx @marp-team/marp-cli --server $(SLIDES_DIR)/
|
||||||
|
|
||||||
# Watch for changes
|
# Watch for changes
|
||||||
watch: assemble
|
watch:
|
||||||
npx @marp-team/marp-cli --watch $(BUILD_DIR)/all.md
|
npx @marp-team/marp-cli --watch $(SLIDES_DIR)/
|
||||||
|
|
||||||
|
# Copy assets and materials to build directory
|
||||||
|
copy-assets: $(BUILD_DIR)/.exists
|
||||||
|
@echo "Copying assets..."
|
||||||
|
@cp -r $(SLIDES_DIR)/assets $(BUILD_DIR)/
|
||||||
|
@cp -r $(SLIDES_DIR)/materials $(BUILD_DIR)/ 2>/dev/null || true
|
||||||
|
|
||||||
# Build all slides (HTML + PDF)
|
# Build all slides (HTML + PDF)
|
||||||
build: assemble
|
build: copy-assets
|
||||||
@echo "Building all slides..."
|
@echo "Building all slides..."
|
||||||
@for f in $(TERMINS); do \
|
@for f in $(TERMINS); do \
|
||||||
echo "Building $$f..."; \
|
echo "Building $$f..."; \
|
||||||
npx @marp-team/marp-cli $(BUILD_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \
|
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \
|
||||||
npx @marp-team/marp-cli $(BUILD_DIR)/$$f.md --pdf --allow-local-files -o $(BUILD_DIR)/$$f.pdf; \
|
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md --pdf --allow-local-files -o $(BUILD_DIR)/$$f.pdf; \
|
||||||
done
|
done
|
||||||
@echo "Building all.md..."
|
@echo "Done! Output in $(BUILD_DIR)/"
|
||||||
npx @marp-team/marp-cli $(BUILD_DIR)/all.md -o $(BUILD_DIR)/all.html
|
|
||||||
npx @marp-team/marp-cli $(BUILD_DIR)/all.md --pdf --allow-local-files -o $(BUILD_DIR)/all.pdf
|
|
||||||
|
|
||||||
# Export to PDF (all slides combined)
|
# Export all slides to PDF
|
||||||
pdf: assemble
|
pdf: $(BUILD_DIR)/.exists
|
||||||
@echo "Exporting to PDF..."
|
@echo "Exporting to PDF..."
|
||||||
npx @marp-team/marp-cli $(BUILD_DIR)/all.md --pdf --allow-local-files -o $(BUILD_DIR)/all.pdf
|
@for f in $(TERMINS); do \
|
||||||
|
echo " $$f.pdf"; \
|
||||||
|
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md --pdf --allow-local-files -o $(BUILD_DIR)/$$f.pdf; \
|
||||||
|
done
|
||||||
|
@echo "Done! PDFs in $(BUILD_DIR)/"
|
||||||
|
|
||||||
# Export to HTML (all slides combined)
|
# Export all slides to HTML
|
||||||
html: assemble
|
html: copy-assets
|
||||||
@echo "Exporting to HTML..."
|
@echo "Exporting to HTML..."
|
||||||
npx @marp-team/marp-cli $(BUILD_DIR)/all.md -o $(BUILD_DIR)/all.html
|
@for f in $(TERMINS); do \
|
||||||
|
echo " $$f.html"; \
|
||||||
|
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \
|
||||||
|
done
|
||||||
|
@./scripts/generate-index.sh $(BUILD_DIR)
|
||||||
|
@echo "Done! HTML files in $(BUILD_DIR)/"
|
||||||
|
|
||||||
# Clean generated files
|
# Clean generated files
|
||||||
clean:
|
clean:
|
||||||
@@ -93,8 +96,30 @@ install:
|
|||||||
@echo "Installing dependencies..."
|
@echo "Installing dependencies..."
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
# Deploy slides
|
# Optimize images (resize to max 1920px, requires nix-shell -p imagemagick)
|
||||||
|
optimize-images:
|
||||||
|
@echo "Backing up originals to assets-original/..."
|
||||||
|
@mkdir -p $(SLIDES_DIR)/assets-original
|
||||||
|
@cp $(SLIDES_DIR)/assets/*.png $(SLIDES_DIR)/assets-original/ 2>/dev/null || true
|
||||||
|
@cp $(SLIDES_DIR)/assets/*.jpg $(SLIDES_DIR)/assets-original/ 2>/dev/null || true
|
||||||
|
@echo "Resizing images to max 1920px..."
|
||||||
|
@nix-shell -p imagemagick --run 'for img in $(SLIDES_DIR)/assets/*.png; do magick "$$img" -resize "1920x>" -quality 85 "$$img"; done'
|
||||||
|
@nix-shell -p imagemagick --run 'for img in $(SLIDES_DIR)/assets/*.jpg; do magick "$$img" -resize "1920x>" -quality 85 "$$img"; done'
|
||||||
|
@echo "Done! Originals backed up in assets-original/"
|
||||||
|
|
||||||
|
# Deploy slides (full build)
|
||||||
deploy: build
|
deploy: build
|
||||||
@echo "Deploying slides..."
|
@echo "Deploying slides..."
|
||||||
scp $(BUILD_DIR)/all.html tengo@tuttle.uberspace.de:/home/tengo/html/malta/index.html
|
@echo "Copying HTML files..."
|
||||||
scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/malta/
|
scp $(BUILD_DIR)/*.html tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/
|
||||||
|
@echo "Copying assets..."
|
||||||
|
scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/
|
||||||
|
@echo "Copying materials..."
|
||||||
|
scp -r $(BUILD_DIR)/materials/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/ 2>/dev/null || true
|
||||||
|
|
||||||
|
# Deploy HTML only (faster, no PDF rebuild)
|
||||||
|
deploy-html: html
|
||||||
|
@echo "Deploying HTML only..."
|
||||||
|
scp $(BUILD_DIR)/*.html tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/
|
||||||
|
scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/
|
||||||
|
scp -r $(BUILD_DIR)/materials/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/ 2>/dev/null || true
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Generate index.html for slide overview
|
||||||
|
|
||||||
|
BUILD_DIR="${1:-build}"
|
||||||
|
|
||||||
|
cat > "$BUILD_DIR/index.html" << 'HEADER'
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>223015b - Dateiformate, Schnittstellen, Speichermedien</title>
|
||||||
|
<style>
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 2rem;
|
||||||
|
background: #1a1a2e;
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
h1 { color: #fff; margin-bottom: 0.5rem; }
|
||||||
|
.subtitle { color: #888; margin-bottom: 2rem; }
|
||||||
|
.termin {
|
||||||
|
background: #16213e;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
transition: transform 0.2s, background 0.2s;
|
||||||
|
}
|
||||||
|
.termin:hover { background: #1f4068; transform: translateX(5px); }
|
||||||
|
.termin h2 { color: #fff; margin: 0 0 0.5rem 0; font-size: 1.2rem; }
|
||||||
|
.termin .date { color: #4ecca3; font-size: 0.9rem; }
|
||||||
|
.termin .topic { color: #aaa; font-size: 0.95rem; margin-left: 1rem; }
|
||||||
|
footer { margin-top: 2rem; color: #666; font-size: 0.85rem; text-align: center; }
|
||||||
|
footer a { color: #4ecca3; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>223015b</h1>
|
||||||
|
<p class="subtitle">Dateiformate, Schnittstellen, Speichermedien & Distributionswege<br>
|
||||||
|
HdM Stuttgart - WS 2025/26 - Michael Czechowski</p>
|
||||||
|
HEADER
|
||||||
|
|
||||||
|
# Generate links for each termin (sorted)
|
||||||
|
for html in $(ls "$BUILD_DIR"/2*.html 2>/dev/null | sort); do
|
||||||
|
filename=$(basename "$html")
|
||||||
|
|
||||||
|
# Extract components from filename
|
||||||
|
# Format: 2025-12-19-termin-1-grundlagen-text-audio.html
|
||||||
|
date=$(echo "$filename" | grep -oE '^[0-9]{4}-[0-9]{2}-[0-9]{2}')
|
||||||
|
termin_num=$(echo "$filename" | grep -oE 'termin-[0-9]+' | grep -oE '[0-9]+')
|
||||||
|
topic_raw=$(echo "$filename" | sed -E 's/^[0-9]{4}-[0-9]{2}-[0-9]{2}-termin-[0-9]+-//' | sed 's/\.html$//')
|
||||||
|
|
||||||
|
# Format topic: replace - with space, capitalize
|
||||||
|
topic=$(echo "$topic_raw" | sed 's/-/ /g' | sed 's/.*/\u&/')
|
||||||
|
|
||||||
|
# Format date
|
||||||
|
if [[ "$date" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
|
||||||
|
formatted_date=$(date -d "$date" "+%d.%m.%Y" 2>/dev/null || echo "$date")
|
||||||
|
else
|
||||||
|
formatted_date="TBA"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Handle termin number
|
||||||
|
if [[ "$termin_num" == "0" ]]; then
|
||||||
|
termin_label="Einfuhrung"
|
||||||
|
else
|
||||||
|
termin_label="Termin $termin_num"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >> "$BUILD_DIR/index.html" << LINK
|
||||||
|
<a href="$filename" class="termin">
|
||||||
|
<h2>$termin_label</h2>
|
||||||
|
<span class="date">$formatted_date</span>
|
||||||
|
<span class="topic">$topic</span>
|
||||||
|
</a>
|
||||||
|
LINK
|
||||||
|
done
|
||||||
|
|
||||||
|
cat >> "$BUILD_DIR/index.html" << 'FOOTER'
|
||||||
|
<footer>
|
||||||
|
<a href="https://git.librete.ch/hdm/223015b">Git Repository</a> -
|
||||||
|
<a href="mailto:mail@librete.ch">Kontakt</a>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
FOOTER
|
||||||
|
|
||||||
|
echo "Generated $BUILD_DIR/index.html"
|
||||||
@@ -9,11 +9,38 @@ title: Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
|||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--color-foreground: #1a1a2e;
|
||||||
|
--color-highlight: #5da9e9;
|
||||||
|
--color-dimmed: #4a4a6a;
|
||||||
|
}
|
||||||
|
section.invert {
|
||||||
|
--color-foreground: #fff;
|
||||||
|
}
|
||||||
section {
|
section {
|
||||||
font-size: 1.7rem;
|
font-size: 1.7rem;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--color-dimmed);
|
color: var(--color-highlight);
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #0f0f23;
|
||||||
|
color: #5da9e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #5da9e9;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background: #1a1a2e;
|
||||||
|
color: #5da9e9;
|
||||||
|
padding: 0.15em 0.4em;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--color-highlight);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -35,10 +62,14 @@ Hochschule der Medien Stuttgart
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
<!-- _class: lead -->
|
<!-- _class: lead -->
|
||||||
|
|
||||||
# Internettechnologien 1
|
# Willkommen!
|
||||||
## "Technische Grundlagen von IT-Projekten"
|
## Termin 1 – Einführung & Grundlagen
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -46,9 +77,12 @@ Hochschule der Medien Stuttgart
|
|||||||
|
|
||||||
**Michael Czechowski**
|
**Michael Czechowski**
|
||||||
|
|
||||||
- Softwareentwickler & IT-Berater
|
- Irgendwas mit IT, Cloud und AI
|
||||||
- Schwerpunkte: Cloud, AI, Web-Technologien, Systemarchitektur, Open Source
|
- Schwerpunkte:
|
||||||
- Hintergrund: Philosophie & Informatik
|
- Web-Technologien, Barriere-Armut, Systemarchitektur, Open Source
|
||||||
|
- Hintergrund:
|
||||||
|
- Philosophie (Uni Stuttgart) -> NO degree
|
||||||
|
- Wirtschafts-Informatik (Leibniz-FH) -> B.Sc.
|
||||||
- Kontakt: mail@librete.ch
|
- Kontakt: mail@librete.ch
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@@ -59,53 +93,77 @@ Fragen jederzeit willkommen
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# AMA (Ask my anything)
|
||||||
|
|
||||||
|
*Nur ein Vorschlag ...*
|
||||||
|
|
||||||
|
* Hast du alle Bände von AoT daheim?
|
||||||
|
* Hast du eine Studierenden-Kneipe mal geleitet?
|
||||||
|
* Hast du wirklich 17 Semester Philosophie ohne Abschluss studiert?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# Kurze Umfrage
|
# Kurze Umfrage
|
||||||
|
|
||||||
**Bitte Hand heben:**
|
**Bitte Hand heben:**
|
||||||
|
|
||||||
1. Wer hat schon mal ein Video komprimiert/konvertiert?
|
1) Wer hat schon mal ein Video komprimiert/konvertiert?
|
||||||
2. Wer hat schon mal eine Datei mit einem Hex-Editor geöffnet?
|
2) Wer kennte die 3-2-1 Regel?
|
||||||
3. Wer weiß, was der Unterschied zwischen JPEG und PNG ist?
|
3) Wer weiß, was der Unterschied zwischen JPEG und PNG ist?
|
||||||
4. Wer hat schon mal mit APIs gearbeitet?
|
4) Wer hat schon mal mit APIs gearbeitet?
|
||||||
5. Wer weiß, was UTF-8 bedeutet?
|
5) Wer weiß, was UTF-8 bedeutet?
|
||||||
6. **Wer hat schon mal HTML oder CSS gemacht?** (Hex-Farben wie `#FF0000`?)
|
6) Wer hat schon mal mit einem CLI gearbeitet?
|
||||||
|
6) **Wer hat schon mal etwas mit HTML oder CSS gemacht?** (Hex-Farben wie `#FF0000`?)
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Niveau der Gruppe einschätzen
|
Niveau der Gruppe einschätzen
|
||||||
Keine falschen Antworten
|
Keine falschen Antworten
|
||||||
Zeigt, wo wir starten
|
Zeigt, wo wir starten
|
||||||
HTML/CSS-Frage: Viele kennen Hex-Codes aus Webdesign
|
HTML/CSS-Frage: Viele kennen Hex-Codes aus Webdesign
|
||||||
|
API = Application Programming Interface
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Warum dieses Modul?
|
# Warum dieses Modul?
|
||||||
|
|
||||||
Die Digitalisierung verändert die Prozesse und Tätigkeiten in allen Branchen. Sie hat neue Geschäftsmodelle ermöglicht und auch unseren Alltag stark verändert.
|
**Digitale Medien sind überall** – aber was steckt dahinter?
|
||||||
|
|
||||||
Kaum ein Projekt in der Medienwelt kommt ohne digitale Technik aus:
|
* Warum ist ein JPEG kleiner als ein PNG?
|
||||||
- Als **Produkt** (z.B. Verkauf einer Webseite)
|
* Warum klingt MP3 anders als FLAC?
|
||||||
- Als **Kollaborationsplattform**
|
* Warum zeigt meine 1 TB Festplatte nur 931 GB?
|
||||||
- Als **Marketing- und Verkaufsplattform**
|
* Warum ist USB-C so verwirrend?
|
||||||
|
* Wie funktioniert eigentlich Streaming?
|
||||||
|
* **→ Die Technik dahinter verstehen!**
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Aus dem Modulhandbuch "Internettechnologien 1"
|
Praxisnahe Fragen aus dem Alltag
|
||||||
Digitalisierung betrifft alle Branchen
|
Nicht nur "was", sondern "warum"
|
||||||
Technik ist nicht optional, sondern zentral
|
Verständnis für technische Entscheidungen
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Das Ziel
|
# Das Ziel
|
||||||
|
|
||||||
**Technische Grundlagen verstehen**, um mit Entwicklungsteams, Kunden und Projektpartnern **auf Augenhöhe** zusammenarbeiten zu können.
|
**Technische Grundlagen verstehen**, um fundierte Entscheidungen treffen zu können.
|
||||||
|
|
||||||
Grundkenntnisse der Internettechnologien und der Prozesse der Software-Entwicklung sind **unabdingbar**, um ein gemeinsames Verständnis von Projektanforderungen und dem Projektvorgehen zu erreichen.
|
Als Digital- und Medienwirtschaftler:innen werdet ihr täglich mit technischen Fragen konfrontiert:
|
||||||
|
* Welches Format für welchen Zweck?
|
||||||
|
* Welche Schnittstelle für welches Gerät?
|
||||||
|
* Wie funktioniert die Distribution digitaler Inhalte?
|
||||||
|
* **→ Mitreden können – nicht (zwingend) programmieren!**
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Nicht: Ihr sollt Programmierer werden
|
Nicht: Ihr sollt Programmierer werden
|
||||||
Sondern: Ihr sollt mitreden können
|
Sondern: Ihr sollt technische Entscheidungen verstehen
|
||||||
"Auf Augenhöhe" = verstehen, was Entwickler:innen meinen
|
Praxisbezug: Medienproduktion, Marketing, Projektmanagement
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -114,11 +172,12 @@ Sondern: Ihr sollt mitreden können
|
|||||||
|
|
||||||
**In dieser Veranstaltung erwerbt ihr folgende Kompetenzen:**
|
**In dieser Veranstaltung erwerbt ihr folgende Kompetenzen:**
|
||||||
|
|
||||||
- Technische Konzepte des Internets verstehen (Netzwerke, Protokolle, Client/Server)
|
* Fundiertes Grundwissen über Daten und Informationen
|
||||||
- Dateiformate analysieren und verstehen
|
* Dateiformate analysieren und verstehen
|
||||||
- Grundlagen von Kompression (Audio, Bild, Video)
|
* Grundlagen von Kompression (Audio, Bild, Video)
|
||||||
- Speichermedien und Schnittstellen kennen
|
* Speichermedien unterscheiden
|
||||||
- APIs und Distributionswege verstehen
|
* Programmier-Schnittstellen kennenlernen
|
||||||
|
* APIs und Distributionswege verstehen
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Fokus auf Verständnis, nicht auf Programmierung
|
Fokus auf Verständnis, nicht auf Programmierung
|
||||||
@@ -148,3 +207,22 @@ Praktische Übungen jede Woche
|
|||||||
Medienwissenschaftler:innen, nicht Informatiker:innen
|
Medienwissenschaftler:innen, nicht Informatiker:innen
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Prüfungsleistung 18.02.
|
||||||
|
|
||||||
|
**Nach aktuellem Kenntnisstand:**
|
||||||
|
|
||||||
|
* 90 min (40% Grundlagen, 40% Dateiformate, 20% AV)
|
||||||
|
* Schriftliche Klausur
|
||||||
|
* Teils offene Fragen
|
||||||
|
* Vermutlich digital
|
||||||
|
* Kein Coding!
|
||||||
|
* **Prüfungsrelevant:** Alles in den Folien/im Skript
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Details können sich noch ändern
|
||||||
|
Keine Programmieraufgaben
|
||||||
|
Verständnisfragen, keine Auswendiglernerei
|
||||||
|
-->
|
||||||
|
|
||||||
@@ -9,11 +9,38 @@ title: Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
|||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--color-foreground: #1a1a2e;
|
||||||
|
--color-highlight: #5da9e9;
|
||||||
|
--color-dimmed: #4a4a6a;
|
||||||
|
}
|
||||||
|
section.invert {
|
||||||
|
--color-foreground: #fff;
|
||||||
|
}
|
||||||
section {
|
section {
|
||||||
font-size: 1.7rem;
|
font-size: 1.7rem;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--color-dimmed);
|
color: var(--color-highlight);
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #0f0f23;
|
||||||
|
color: #5da9e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #5da9e9;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background: #1a1a2e;
|
||||||
|
color: #5da9e9;
|
||||||
|
padding: 0.15em 0.4em;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--color-highlight);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -25,7 +52,7 @@ h2 {
|
|||||||
|
|
||||||
# Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
# Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
||||||
|
|
||||||
**223015c** · Modul "Technik 1" · 1. Semester
|
**223015b** · Modul "Technik 1" · 1. Semester
|
||||||
Digital- und Medienwirtschaft
|
Digital- und Medienwirtschaft
|
||||||
Hochschule der Medien Stuttgart
|
Hochschule der Medien Stuttgart
|
||||||
|
|
||||||
@@ -35,12 +62,15 @@ Hochschule der Medien Stuttgart
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
<!-- _class: lead -->
|
<!-- _class: lead -->
|
||||||
|
|
||||||
# Termin 1 – 19.12.2025
|
# Termin 1 – 19.12.2025
|
||||||
## Grundlagen, Text & Audio
|
## Grundlagen, Text & Audio
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||

|

|
||||||
@@ -53,13 +83,12 @@ Hochschule der Medien Stuttgart
|
|||||||
00 00 01 90 00 00 01 2C
|
00 00 01 90 00 00 01 2C
|
||||||
```
|
```
|
||||||
|
|
||||||
**Was ist das?**
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Hex-Dump ohne Erklärung auf Bildschirm werfen
|
|
||||||
Fragen in den Raum: "Was seht ihr?"
|
"Ich schaue in viele fragende Gesichte ..."
|
||||||
"Ist das Text? Ein Bild? Code?"
|
|
||||||
Überleitung: "Alles digital ist nur Zahlen. Heute lernen wir, sie zu lesen."
|
"Doch vertraut mir, am Ende der heutigen Veranstaltung werdet ihr mir genau sagen können was hier steht"
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -86,7 +115,11 @@ Demonstration: Glühbirne AN/AUS = 1 Bit
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
BIT = Binary Digit (Binärziffer) – 1948 von Claude Shannon geprägt
|
BIT = Binary Digit (Binärziffer) – 1948 von Claude Shannon geprägt
|
||||||
|
|
||||||
|
"Bit warum somit ein Neologismus, bis dato gab es das Wort in dieser Bedeutung überhaupt nicht"
|
||||||
|
|
||||||
Shannon war Mathematiker bei Bell Labs – begründete die Informationstheorie
|
Shannon war Mathematiker bei Bell Labs – begründete die Informationstheorie
|
||||||
|
|
||||||
Warum binär? Elektronische Schaltungen haben nur 2 Zustände: Strom/kein Strom
|
Warum binär? Elektronische Schaltungen haben nur 2 Zustände: Strom/kein Strom
|
||||||
Das ist physikalisch am stabilsten (weniger Fehler als 3 oder 10 Zustände)
|
Das ist physikalisch am stabilsten (weniger Fehler als 3 oder 10 Zustände)
|
||||||
Alles Digitale basiert auf dieser simplen Idee: AN oder AUS
|
Alles Digitale basiert auf dieser simplen Idee: AN oder AUS
|
||||||
@@ -97,24 +130,186 @@ Transistoren in modernen CPUs: Milliarden davon, schalten Milliarden Mal pro Sek
|
|||||||
|
|
||||||
# Das Byte
|
# Das Byte
|
||||||
|
|
||||||
**8 Bits = 1 Byte**
|
<!--
|
||||||
|
"Ein Bit allein macht nicht glücklich, die Welt ist nunmal nicht schwarz oder weiß"
|
||||||
|
|
||||||
|
"Und um noch weitere (nennen wir es Schattierungen, ganz literarisch) der Welt abbilden zu können, benötigen wir eine weiter Messgröße oder Einheit"
|
||||||
|
|
||||||
|
BYTE = Wortspiel aus "Bit" + "Bite" (Bissen) – ein "Bissen" Information
|
||||||
|
|
||||||
|
"Doch warum hat man nicht einfach »Bite« genommen?" Fangfrage -> Bit und Bite sind sich zu nahe ... Verwechslungsgefahr!
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Das Byte
|
||||||
|
|
||||||
|
**1 Byte = 8 Bits**
|
||||||
|
|
||||||
|
```
|
||||||
|
0 1 0 0 1 1 0 1
|
||||||
|
```
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
"Und das sieht dann so aus"
|
||||||
|
|
||||||
|
"Aber warum genau 8 Bits?" -> "Das versteht man leider erst so richtig wenn man sich das Ergebnis anschaut, wie viele Möglichkeiten hieraus entstehen"
|
||||||
|
|
||||||
|
"Menschen neigen dazu, exponentielles Wachstum zu unterschätzen"
|
||||||
|
|
||||||
|
Rätsel: "Wenn sich das Wachstum einer Seerose auf einem Teich jeden Tag verdoppelt · und nach *zehn Tagen* der ganze Teich bedeckt ist, wann ist er zur Hälfte zugewachsen?"
|
||||||
|
|
||||||
|
Frage: "Weiß jemand wieviele Zustände wir mit 8 Bit beschreiben können?"
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Das Byte
|
||||||
|
|
||||||
|
**1 Byte = 8 Bits**
|
||||||
|
|
||||||
```
|
```
|
||||||
0 1 0 0 1 1 0 1
|
0 1 0 0 1 1 0 1
|
||||||
```
|
```
|
||||||
|
|
||||||
**Wie viele Kombinationen?**
|
|
||||||
2⁸ = **256 Möglichkeiten** (0-255)
|
2⁸ = **256 Möglichkeiten** (0-255)
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
BYTE = Wortspiel aus "Bit" + "Bite" (Bissen) – ein "Bissen" Information
|
|
||||||
Warum genau 8 Bits?
|
Historie: "Es gab durchaus einen »Machtkampf« und es war überhaupt nicht klar welche Länge sich durchsetzen wird."
|
||||||
|
|
||||||
- 1964: IBM System/360 setzte diesen Standard (vorher: 6-Bit, 7-Bit Systeme)
|
- 1964: IBM System/360 setzte diesen Standard (vorher: 6-Bit, 7-Bit Systeme)
|
||||||
- ASCII (1963) brauchte 7 Bit für 128 Zeichen
|
- ASCII (1963) brauchte 7 Bit für 128 Zeichen
|
||||||
|
|
||||||
|
ASCII = American Standard Code for Information Interchange
|
||||||
|
|
||||||
|
Praktikabilität:
|
||||||
- 8 Bit = praktisch für Hardware (Zweierpotenz: 2³ = 8)
|
- 8 Bit = praktisch für Hardware (Zweierpotenz: 2³ = 8)
|
||||||
- 8 Bit = 2 Hexadezimalziffern (elegante Darstellung)
|
- 8 Bit = 2 Hexadezimalziffern (elegante Darstellung)
|
||||||
Eselsbrücke: 1 Byte = 1 Buchstabe (in ASCII/UTF-8 für einfache Zeichen)
|
|
||||||
|
1 Bit = 2 Zustände
|
||||||
|
2 Bit = 4 Zustände
|
||||||
|
3 Bit = 8 Zustände
|
||||||
|
4 Bit = 16 Zustände
|
||||||
|
5 Bit = 32 Zustände
|
||||||
|
6 Bit = 64 Zustände
|
||||||
|
7 Bit = 128 Zustände
|
||||||
|
8 Bit = 256 Zustände
|
||||||
|
|
||||||
Rechnung: 2×2×2×2×2×2×2×2 = 256 mögliche Kombinationen
|
Rechnung: 2×2×2×2×2×2×2×2 = 256 mögliche Kombinationen
|
||||||
|
|
||||||
|
von griech. hexa „sechs“ und lat. decem „zehn“
|
||||||
|
|
||||||
|
Eselsbrücke: 1 Byte = 1 Buchstabe/Symbol (in ASCII/UTF-8 für einfache Zeichen)
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Dateneinheiten
|
||||||
|
|
||||||
|
| Einheit | Bytes | Bits | Potenz |
|
||||||
|
|---------|-------|------|--------|
|
||||||
|
| **1 Byte** | 1 | 8 | 10⁰ |
|
||||||
|
| **1 Kilobyte (KB)** | 1.000 | 8.000 | 10³ |
|
||||||
|
| **1 Megabyte (MB)** | 1.000.000 | 8 Mio. | 10⁶ |
|
||||||
|
| **1 Gigabyte (GB)** | 1 Mrd. | 8 Mrd. | 10⁹ |
|
||||||
|
| **1 Terabyte (TB)** | 1 Bio. | 8 Bio. | 10¹² |
|
||||||
|
|
||||||
|
<!--
|
||||||
|
SI-Präfixe (Dezimal): 1 KB = 1.000 Bytes
|
||||||
|
Binär (IEC): 1 KiB = 1.024 Bytes (Kibibyte)
|
||||||
|
Windows zeigt oft binär, sagt aber "KB" → Verwirrung!
|
||||||
|
1 TB Festplatte = ~931 GiB nutzbar
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Dateneinheiten (Fortsetzung)
|
||||||
|
|
||||||
|
| Einheit | Bytes | Potenz | Beispiel |
|
||||||
|
|---------|-------|--------|----------|
|
||||||
|
| **1 Petabyte (PB)** | 10¹⁵ | 1.000 TB | Netflix-Gesamtarchiv |
|
||||||
|
| **1 Exabyte (EB)** | 10¹⁸ | 1.000 PB | Alle E-Mails weltweit/Tag |
|
||||||
|
| **1 Zettabyte (ZB)** | 10²¹ | 1.000 EB | Internet-Traffic 2016 |
|
||||||
|
| **1 Yottabyte (YB)** | 10²⁴ | 1.000 ZB | *Noch nie erreicht* |
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Peta = 10^15 (Billiarde)
|
||||||
|
Exa = 10^18 (Trillion)
|
||||||
|
Zetta = 10^21 (Trilliarde)
|
||||||
|
Yotta = 10^24 (Quadrillion)
|
||||||
|
|
||||||
|
Eselsbrücke: "Kilo Mega Giga Tera Peta Exa Zetta Yotta"
|
||||||
|
→ "Komm Mit Großem Tee, Peter Exte Zettelt Yachten"
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Datenwachstum der Menschheit
|
||||||
|
|
||||||
|
| Jahr | Datenmenge | Kontext |
|
||||||
|
|------|------------|---------|
|
||||||
|
| **100.000 v. Chr.** | 0 | Erste Menschen, nur Sprache |
|
||||||
|
| **3.000 v. Chr.** | ~wenige KB | Keilschrift, Hieroglyphen |
|
||||||
|
| **1450** | ~wenige GB | Gutenberg, Buchdruck |
|
||||||
|
| **1986** | **2,6 EB** | Analog (Bücher, Vinyl, Film) |
|
||||||
|
| **2007** | **295 EB** | Beginn digitale Dominanz |
|
||||||
|
| **2017** | **19 ZB** | Analog kaum gewachsen |
|
||||||
|
| **2025** | **181 ZB** | 90% unstrukturiert |
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Exponentielles Wachstum: Verdopplung alle 2 Jahre
|
||||||
|
1986: Letzte Ära mit analoger Dominanz
|
||||||
|
2007: Erste Jahr, in dem digital > analog
|
||||||
|
2025: 181 ZB = 181.000.000.000.000.000.000.000 Bytes
|
||||||
|
Analog blieb bei ~2,6 EB stehen (Bücher, Vinyl, Film)
|
||||||
|
Digital explodierte: IoT, Social Media, Cloud, Video
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 181 Zettabyte – Was bedeutet das?
|
||||||
|
|
||||||
|
**2025:** Welt erzeugt **181 ZB** pro Jahr
|
||||||
|
|
||||||
|
- **2,5 Quintillionen Bytes** täglich
|
||||||
|
- **29 Terabyte** pro Sekunde
|
||||||
|
- **90%** davon: unstrukturiert (Videos, Bilder, Audio)
|
||||||
|
- **70%** davon: von Nutzern generiert
|
||||||
|
|
||||||
|
**Zum Vergleich:**
|
||||||
|
- 1 ZB = 250 Milliarden DVDs
|
||||||
|
- 181 ZB = Jeder Mensch erzeugt ~23 TB/Jahr
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Quellen: IDC Global DataSphere Forecast, Statista 2025
|
||||||
|
IoT-Geräte allein: 73 ZB in 2025
|
||||||
|
Cloud-Speicher: 100 ZB (50% der Weltdaten)
|
||||||
|
Prognose 2028: 394 ZB
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# AI-generierte Inhalte 2025
|
||||||
|
|
||||||
|
**Wie viel Content ist heute synthetisch?**
|
||||||
|
|
||||||
|
| Bereich | AI-Anteil |
|
||||||
|
|---------|-----------|
|
||||||
|
| **Neue Webseiten** | ~74% enthalten AI-Content |
|
||||||
|
| **Web-Text gesamt** | ~30-40% AI-generiert |
|
||||||
|
| **Neue Artikel** | ~52% von AI geschrieben |
|
||||||
|
| **Social-Media-Bilder** | ~71% AI-generiert |
|
||||||
|
|
||||||
|
**Prognose 2026:** 90% des Online-Contents synthetisch
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Quellen: Ahrefs 2025, arXiv, Europol-Report
|
||||||
|
"Synthetic Media" = AI-generiert oder -manipuliert
|
||||||
|
Problem: Schwer zu messen, da Menschen + AI zusammenarbeiten
|
||||||
|
Model Collapse: AI trainiert auf AI-Output → Qualitätsverlust
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -122,9 +317,39 @@ Rechnung: 2×2×2×2×2×2×2×2 = 256 mögliche Kombinationen
|
|||||||
<!-- _header: '' -->
|
<!-- _header: '' -->
|
||||||
<!-- _footer: '' -->
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Vorgeschichte:
|
||||||
|
|
||||||
|
US-ASCII (1967) Code Chart
|
||||||
|
- 7 Bit = 128 Zeichen
|
||||||
|
- Erste 32: Steuerzeichen (nicht druckbar)
|
||||||
|
- Zeichen 32-126: Druckbar (Buchstaben, Ziffern, Satzzeichen)
|
||||||
|
- Keine Umlaute, kein ñ, kein é
|
||||||
|
- "American Standard" → Rest der Welt ausgeschlossen
|
||||||
|
|
||||||
|
"Ich möchte, dass ihr das mit mir jetzt gemeinsam lesen lernt; stellt euch vor ihr seid ArchäologInnen."
|
||||||
|
|
||||||
|
"Wie würdet ihr vorgehen?"
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|
»256 Shades of Gray«
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
|
»256 Shades of Gray«
|
||||||
|
|
||||||
256 Graustufen: 0 = Schwarz, 255 = Weiß
|
256 Graustufen: 0 = Schwarz, 255 = Weiß
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@@ -132,10 +357,12 @@ Rechnung: 2×2×2×2×2×2×2×2 = 256 mögliche Kombinationen
|
|||||||
|
|
||||||
# Was kann man mit 256 Zuständen machen?
|
# Was kann man mit 256 Zuständen machen?
|
||||||
|
|
||||||
- **256 Zeichen** (Buchstaben, Zahlen, Symbole)
|
* **256 Zeichen** (Buchstaben, Zahlen, Symbole)
|
||||||
- **256 Graustufen** (0 = Schwarz, 255 = Weiß)
|
* **256 Helligkeit bzw. Luminanz** (0 = Schwarz/Dunkel, 255 = Weiß/Hell)
|
||||||
- **256 Lautstärkestufen**
|
* **256 Lautstärkestufen**
|
||||||
- **Zahlen 0-255** (oder -128 bis +127)
|
* **Zahlen 0-255** (oder -128 bis +127)
|
||||||
|
|
||||||
|
* *Fällt Euch noch mehr ein?*
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
256 = die "magische Zahl" bei 8 Bit
|
256 = die "magische Zahl" bei 8 Bit
|
||||||
@@ -158,11 +385,29 @@ Das menschliche Auge kann etwa 10 Millionen Farben unterscheiden
|
|||||||

|

|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
RGB = Additive Farbmischung (Bildschirme)
|
Welche Farben für ein volles Spektrum bieten sich nach unserer gelernten Sparsamkeit hier am besten an?
|
||||||
|
|
||||||
|
1. CMYK bzw. in diesem Fall CMYW
|
||||||
|
2. RGB
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
<!--
|
||||||
|
RGB = Additive Farbmischung (Bildschirme)
|
||||||
|
|
||||||
|
Sog. RGB Tuple (geordnete endliche Liste)
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
# Farben: RGB-Modell
|
# Farben: RGB-Modell
|
||||||
|
|
||||||
**1 Pixel = 3 Bytes**
|
**1 Pixel = 3 Bytes**
|
||||||
@@ -176,6 +421,9 @@ RGB = Additive Farbmischung (Bildschirme)
|
|||||||
`00 00 00` = Schwarz | `FF FF FF` = Weiß
|
`00 00 00` = Schwarz | `FF FF FF` = Weiß
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
"Weiß jemand oder möchte jemand raten, wofür das "s" bei "sRGB" steht?"
|
||||||
|
|
||||||
|
sRGB = Standard RGB
|
||||||
CMYK = Subtraktive Farbmischung (Druck)
|
CMYK = Subtraktive Farbmischung (Druck)
|
||||||
Hex-Notation: FF = 255 in Dezimal
|
Hex-Notation: FF = 255 in Dezimal
|
||||||
CSS-Farben nutzen Hex: #FF0000 = Rot
|
CSS-Farben nutzen Hex: #FF0000 = Rot
|
||||||
@@ -185,6 +433,13 @@ background-color: #FF0000; = Rot
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# Das Problem: Sprachen
|
# Das Problem: Sprachen
|
||||||
|
|
||||||
**Die Welt hat mehr als 256 Zeichen!**
|
**Die Welt hat mehr als 256 Zeichen!**
|
||||||
@@ -208,32 +463,15 @@ Chaos: Verschiedene Standards für verschiedene Sprachen
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- _header: '' -->
|
|
||||||
<!-- _footer: '' -->
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
<!--
|
|
||||||
ASCII-Tabelle (1963)
|
|
||||||
7 Bit = 128 Zeichen
|
|
||||||
Erste 32: Steuerzeichen (nicht druckbar)
|
|
||||||
Zeichen 32-126: Druckbar (Buchstaben, Ziffern, Satzzeichen)
|
|
||||||
Keine Umlaute, kein ñ, kein é
|
|
||||||
"American Standard" → Rest der Welt ausgeschlossen
|
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Unicode: Ein Standard für alle
|
# Unicode: Ein Standard für alle
|
||||||
|
|
||||||
**Unicode (1991):**
|
**Unicode (1991):**
|
||||||
Jedes Schriftsystem der Welt
|
Jedes Schriftsystem der Welt
|
||||||
|
|
||||||
**>150.000 Zeichen:**
|
**>150.000 Zeichen:**
|
||||||
- Latein, Kyrillisch, Arabisch, Chinesisch, Japanisch...
|
* Latein, Kyrillisch, Arabisch, Chinesisch, Japanisch...
|
||||||
- Mathematische Symbole, Emoji, historische Schriften
|
* Mathematische Symbole, Emoji, historische Schriften
|
||||||
|
* **UTF-8:** Variable Länge (1-4 Bytes pro Zeichen)
|
||||||
**UTF-8:** Variable Länge (1-4 Bytes pro Zeichen)
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Unicode Consortium: Non-Profit seit 1991
|
Unicode Consortium: Non-Profit seit 1991
|
||||||
@@ -272,19 +510,6 @@ UTF-8-Kodierung: Variable Länge spart Speicher bei ASCII
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- _header: '' -->
|
|
||||||
<!-- _footer: '' -->
|
|
||||||
<!-- _backgroundColor: #000 -->
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
<!--
|
|
||||||
Hex-Binär-Umrechnungstabelle
|
|
||||||
Jede Hex-Ziffer = 4 Bits
|
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Hexadezimal: Lesbarkeit
|
# Hexadezimal: Lesbarkeit
|
||||||
|
|
||||||
**Binär ist unleserlich:**
|
**Binär ist unleserlich:**
|
||||||
@@ -296,7 +521,17 @@ Jede Hex-Ziffer = 4 Bits
|
|||||||
**Jede Hex-Ziffer = 4 Bits (ein "Nibble")**
|
**Jede Hex-Ziffer = 4 Bits (ein "Nibble")**
|
||||||
0-9, A-F (10=A, 11=B, ..., 15=F)
|
0-9, A-F (10=A, 11=B, ..., 15=F)
|
||||||
|
|
||||||
|
**ASCII Tabelle (0-127):**
|
||||||
|
[https://www.asciitable.com](https://www.asciitable.com)
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
|
"Gerne vorab auf den Link gehen"
|
||||||
|
|
||||||
|
WICHTIG: ASCII geht nur von 0-127!
|
||||||
|
- Werte 128-255 sind NICHT in der ASCII-Tabelle
|
||||||
|
- Das wird später bei Magic Numbers wichtig
|
||||||
|
|
||||||
Warum Hexadezimal statt Dezimal?
|
Warum Hexadezimal statt Dezimal?
|
||||||
- Binär ist zu lang: 01001101 (8 Zeichen für 1 Byte)
|
- Binär ist zu lang: 01001101 (8 Zeichen für 1 Byte)
|
||||||
- Dezimal passt nicht: 77 (unregelmäßig, manchmal 2, manchmal 3 Ziffern)
|
- Dezimal passt nicht: 77 (unregelmäßig, manchmal 2, manchmal 3 Ziffern)
|
||||||
@@ -312,39 +547,7 @@ Umrechnung üben:
|
|||||||
- 0xFF = 15×16 + 15 = 255 (Maximum für 1 Byte)
|
- 0xFF = 15×16 + 15 = 255 (Maximum für 1 Byte)
|
||||||
|
|
||||||
Hex-Editor = Standard-Tool für Dateianalyse und Reverse Engineering
|
Hex-Editor = Standard-Tool für Dateianalyse und Reverse Engineering
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Magic Numbers
|
|
||||||
|
|
||||||
**Dateityp-Identifikation durch erste Bytes**
|
|
||||||
|
|
||||||
| Format | Magic Number (Hex) | ASCII |
|
|
||||||
|--------|-------------------|-------|
|
|
||||||
| PNG | `89 50 4E 47 0D 0A 1A 0A` | `.PNG` |
|
|
||||||
| JPEG | `FF D8 FF` | `ÿØÿ` |
|
|
||||||
| PDF | `25 50 44 46` | `%PDF` |
|
|
||||||
| ZIP/DOCX/ODT | `50 4B 03 04` | `PK` |
|
|
||||||
|
|
||||||
**Achtung:** TXT, HTML, CSS haben **keine** Magic Number!
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Magic Number = Signatur/Fingerabdruck am Dateianfang
|
|
||||||
Wozu? Betriebssystem erkennt Dateityp unabhängig von Dateiendung
|
|
||||||
|
|
||||||
Geschichte: "PK" bei ZIP = Phil Katz (Erfinder von PKZip, 1989)
|
|
||||||
Fun Fact: DOCX, XLSX, PPTX, ODT = alles ZIP-Archive mit XML-Inhalt!
|
|
||||||
→ Einfach .zip anhängen und entpacken!
|
|
||||||
|
|
||||||
Dateien OHNE Magic Number: TXT, HTML, CSS, JSON, XML
|
|
||||||
→ Diese sind reiner Text, kein binäres Format
|
|
||||||
→ Werden anhand Inhalt/Endung erkannt
|
|
||||||
|
|
||||||
Sicherheits-Aspekt:
|
|
||||||
virus.exe → bild.jpg umbenennen täuscht nur Menschen
|
|
||||||
Windows vertraut der Endung, aber Tools wie "file" (Linux) lesen Magic Number
|
|
||||||
→ Nie Dateien von Fremden öffnen, nur weil sie harmlos aussehen!
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -353,11 +556,31 @@ Windows vertraut der Endung, aber Tools wie "file" (Linux) lesen Magic Number
|
|||||||
<!-- _footer: '' -->
|
<!-- _footer: '' -->
|
||||||
<!-- _backgroundColor: #000 -->
|
<!-- _backgroundColor: #000 -->
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
"Zurück zu Frage am Anfang: Was steht hier nun?"
|
||||||
|
|
||||||
|
"Versucht es kurz selbst zu entschlüsseln"
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
<!-- _backgroundColor: #000 -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Hex-Editor-Screenshot mit PNG-Datei
|
Hex-Editor-Screenshot mit PNG-Datei
|
||||||
Erste Bytes: 89 50 4E 47 = PNG-Signatur
|
Erste Bytes: 89 50 4E 47 = PNG-Signatur
|
||||||
|
- 89: non-printable character (signalisiert, dass wir hier außerhalb von ASCII sind)
|
||||||
|
- 50: P
|
||||||
|
- 4E: N
|
||||||
|
- 47: G
|
||||||
IHDR = Image Header (Breite, Höhe, Farbtiefe)
|
IHDR = Image Header (Breite, Höhe, Farbtiefe)
|
||||||
Zeigen, wie man Magic Number liest
|
Zeigen, wie man Magic Number liest
|
||||||
Tool: HxD (Windows), Hex Fiend (Mac), xxd (Linux)
|
Tool: HxD (Windows), Hex Fiend (Mac), xxd (Linux)
|
||||||
@@ -365,6 +588,52 @@ Tool: HxD (Windows), Hex Fiend (Mac), xxd (Linux)
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Magic Numbers
|
||||||
|
|
||||||
|
**Dateityp-Identifikation durch erste Bytes**
|
||||||
|
|
||||||
|
| Format | Magic Number (Hex) | Lesbar? |
|
||||||
|
|--------|-------------------|---------|
|
||||||
|
| PNG | `89 50 4E 47` | ✗ P N G |
|
||||||
|
| JPEG | `FF D8 FF` | ✗ ✗ ✗ |
|
||||||
|
| PDF | `25 50 44 46` | % P D F ✓ |
|
||||||
|
| ZIP | `50 4B 03 04` | P K ✗ ✗ |
|
||||||
|
|
||||||
|
**Wichtig:** ASCII = nur 0-127! Werte darüber (z.B. `89` = 137) sind **nicht druckbar** (non-printable). *Hex-Editoren zeigen dafür `.` oder `ÿ` als Platzhalter.*
|
||||||
|
|
||||||
|
<!--
|
||||||
|
"Warum findet ihr 89 nicht in der ASCII-Tabelle?"
|
||||||
|
|
||||||
|
KERNKONZEPT:
|
||||||
|
- 1 Byte = 256 Werte (0-255)
|
||||||
|
- ASCII deckt nur 0-127 ab (die "druckbaren" Zeichen)
|
||||||
|
- 128-255 = Binärdaten, Steuerzeichen, erweiterte Zeichen
|
||||||
|
|
||||||
|
WARUM nutzt PNG absichtlich 89 (= 137 dezimal)?
|
||||||
|
1. Markiert die Datei eindeutig als BINÄR, nicht Text
|
||||||
|
2. Erkennt kaputte Übertragungen (alte Systeme schnitten Bit 7 ab)
|
||||||
|
3. Verhindert versehentliches Öffnen als Textdatei
|
||||||
|
|
||||||
|
Geschichte: "PK" bei ZIP = Phil Katz (Erfinder von PKZip, 1989)
|
||||||
|
Fun Fact: DOCX, XLSX, PPTX, ODT = alles ZIP-Archive mit XML-Inhalt!
|
||||||
|
|
||||||
|
Dateien OHNE Magic Number: TXT, HTML, CSS, JSON, XML
|
||||||
|
→ Reiner Text, kein binäres Format
|
||||||
|
|
||||||
|
Sicherheits-Aspekt:
|
||||||
|
virus.exe → bild.jpg umbenennen täuscht nur Menschen
|
||||||
|
Windows vertraut der Endung, aber "file" (Linux) liest Magic Number
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# Hands-On: WTF Files
|
# Hands-On: WTF Files
|
||||||
|
|
||||||
**Aufgabe (30 Min):**
|
**Aufgabe (30 Min):**
|
||||||
@@ -456,6 +725,97 @@ Streaming? Unmöglich.
|
|||||||
<!-- _header: '' -->
|
<!-- _header: '' -->
|
||||||
<!-- _footer: '' -->
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
"Wenn CDs eine Sample Rate von 44kHz haben, was fällt dann hier auf?"
|
||||||
|
|
||||||
|
Fangfrage: "Wie hoch ist die Sample Rate von Vinyls?" -> *Vinyl has no sample rate. It's analog!*
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Was ist Sample Rate?
|
||||||
|
**Analog → Digital ≙ Kontinuierlich → Diskret**
|
||||||
|
```
|
||||||
|
Analog (Vinyl): Digital (CD):
|
||||||
|
~~~~~~~~~~~~~~~ • • • • • • • •
|
||||||
|
Kontinuierliche 44.100 Messpunkte
|
||||||
|
Wellenform pro Sekunde
|
||||||
|
```
|
||||||
|
**Nyquist-Theorem:**
|
||||||
|
|
||||||
|
> Um eine Frequenz zu rekonstruieren, braucht man mindestens **2× so viele Samples**.
|
||||||
|
44.100 Hz ÷ 2 = **22.050 Hz** max. darstellbare Frequenz
|
||||||
|
(Mensch hört: ~20 Hz bis ~20.000 Hz → passt!)
|
||||||
|
|
||||||
|
<!--
|
||||||
|
SAMPLE RATE = Wie oft "fotografieren" wir die Schallwelle?
|
||||||
|
Stellt euch vor: Schallwelle = fahrendes Auto
|
||||||
|
- Analog: Videokamera läuft durchgehend
|
||||||
|
- Digital: Fotokamera macht 44.100 Fotos pro Sekunde
|
||||||
|
|
||||||
|
VINYL hat KEINE Sample Rate:
|
||||||
|
- Rille ist physische Kopie der Welle
|
||||||
|
- "Unendliche Auflösung" in der Theorie
|
||||||
|
- ABER: Rauschen, Kratzer, Nadelmasse = eigene Limits
|
||||||
|
- Praktisch: ~20 Hz bis ~20 kHz, 60-70 dB Dynamik
|
||||||
|
|
||||||
|
WARUM genau 44.100 Hz?
|
||||||
|
- Nyquist: 2× höchste hörbare Frequenz nötig
|
||||||
|
- 20.000 Hz × 2 = 40.000 Hz Minimum
|
||||||
|
- 44.100 = etwas Puffer + passte zu Video-Equipment der 80er
|
||||||
|
|
||||||
|
DAS SPEKTROGRAMM zeigt es:
|
||||||
|
- Alles über ~22 kHz ist abgeschnitten
|
||||||
|
- Das ist kein Bug, das ist das Design!
|
||||||
|
- Vinyl hätte dort noch Obertöne (die wir eh nicht hören)
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Sample Rate vs. Bit Depth
|
||||||
|
|
||||||
|
**Zwei Dimensionen der Digitalisierung:**
|
||||||
|
|
||||||
|
| Dimension | Was bedeutet es? | CD-Qualität |
|
||||||
|
|-----------|------------------|-------------|
|
||||||
|
| **Sample Rate** | Messungen pro Sekunde (horizontal) | 44.100 Hz |
|
||||||
|
| **Bit Depth** | Genauigkeit pro Messung (vertikal) | 16 Bit |
|
||||||
|
|
||||||
|
**16 Bit = 2¹⁶ = 65.536 Lautstärkestufen**
|
||||||
|
(von absoluter Stille bis maximaler Lautstärke)
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Analogie: Digitalisierung = Raster über Schallwelle legen
|
||||||
|
|
||||||
|
HORIZONTAL (Sample Rate):
|
||||||
|
- Wie oft messen wir pro Sekunde?
|
||||||
|
- 44.100 Hz = 44.100 Messpunkte pro Sekunde
|
||||||
|
- Bestimmt, welche FREQUENZEN wir erfassen können
|
||||||
|
- Nyquist-Theorem: Sample Rate ≥ 2× höchste Frequenz
|
||||||
|
- 44.100 Hz → max. ~22.050 Hz (Mensch hört bis ~20.000 Hz)
|
||||||
|
|
||||||
|
VERTIKAL (Bit Depth):
|
||||||
|
- Wie genau messen wir jeden Punkt?
|
||||||
|
- 16 Bit = 65.536 mögliche Werte (-32.768 bis +32.767)
|
||||||
|
- Bestimmt den DYNAMIKUMFANG (leise bis laut)
|
||||||
|
- 16 Bit ≈ 96 dB Dynamik (Flüstern bis Rockkonzert)
|
||||||
|
- Mehr Bits = feinere Abstufungen = weniger Quantisierungsrauschen
|
||||||
|
|
||||||
|
KOMPRESSION nutzt beide Achsen:
|
||||||
|
- Sample Rate reduzieren = weniger Punkte horizontal (spart Daten, verliert hohe Frequenzen)
|
||||||
|
- Bit Depth reduzieren = gröbere Stufen vertikal (spart Daten, mehr Rauschen)
|
||||||
|
- MP3: Wirft unhörbare Frequenzen weg + quantisiert grober wo es nicht auffällt
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@@ -514,14 +874,9 @@ Schlecht für chaotische Daten (Fotos, Audio)
|
|||||||
**Kernidee:** Wirf weg, was der Mensch eh nicht wahrnimmt
|
**Kernidee:** Wirf weg, was der Mensch eh nicht wahrnimmt
|
||||||
|
|
||||||
**JPEG:** Schwächen des Auges
|
**JPEG:** Schwächen des Auges
|
||||||
- Helligkeit besser als Farbe wahrgenommen
|
* Helligkeit besser als Farbe wahrgenommen
|
||||||
- Große Flächen besser als feine Details
|
* Große Flächen besser als feine Details
|
||||||
|
* **→ Psychovisuell**
|
||||||
**MP3:** Schwächen des Ohrs
|
|
||||||
- Mittlere Frequenzen besser als hohe/tiefe
|
|
||||||
- Laute Töne "maskieren" leise Töne
|
|
||||||
|
|
||||||
→ **Psychoakustik / Psychovisuell**
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Auditory Masking: Lauter 1000 Hz-Ton → leise 950 Hz unhörbar
|
Auditory Masking: Lauter 1000 Hz-Ton → leise 950 Hz unhörbar
|
||||||
@@ -531,16 +886,38 @@ Kompression = Modell der menschlichen Wahrnehmung
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||

|
# Lossy: Der Trick
|
||||||
|
|
||||||
|
**Kernidee:** Wirf weg, was der Mensch eh nicht wahrnimmt
|
||||||
|
|
||||||
|
**JPEG:** Schwächen des Auges
|
||||||
|
- Helligkeit besser als Farbe wahrgenommen
|
||||||
|
- Große Flächen besser als feine Details
|
||||||
|
- **→ Psychovisuell**
|
||||||
|
|
||||||
|
**MP3:** Schwächen des Ohrs
|
||||||
|
* Mittlere Frequenzen besser als hohe/tiefe
|
||||||
|
* Laute Töne "maskieren" leise Töne
|
||||||
|
* **→ Psychoakustik**
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Auditory Masking: Lauter 1000 Hz-Ton → leise 950 Hz unhörbar
|
||||||
|
Visuelle Masking: Starker Kontrast überstrahlt Details
|
||||||
|
Kompression = Modell der menschlichen Wahrnehmung
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
# Karlheinz Brandenburg
|
# Karlheinz Brandenburg
|
||||||
|
|
||||||
**"Vater der MP3"**
|
**"Vater der MP3"**
|
||||||
|
|
||||||
- Diplom-Ingenieur, Universität Erlangen-Nürnberg
|
* Diplom-Ingenieur, Universität Erlangen-Nürnberg
|
||||||
- Fraunhofer IIS (Institut für Integrierte Schaltungen)
|
* Fraunhofer IIS (Institut für Integrierte Schaltungen)
|
||||||
- Forschung ab 1982, Patent 1988
|
* Forschung ab 1982, Patent 1988
|
||||||
- Hörte "Tom's Diner" über 10.000 Mal
|
* Hörte "Tom's Diner" über 10.000 Mal
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Fraunhofer IIS Erlangen
|
Fraunhofer IIS Erlangen
|
||||||
@@ -600,7 +977,7 @@ Brandenburg hörte den Song über 10.000 Mal
|
|||||||
- Suzanne Vegas Stimme ist "schwierig"
|
- Suzanne Vegas Stimme ist "schwierig"
|
||||||
- Klare, hohe Frequenzen → Stresstest
|
- Klare, hohe Frequenzen → Stresstest
|
||||||
|
|
||||||
*"If I could code Suzanne Vega's voice well, I could code anything."*
|
> If I could code Suzanne Vega's voice well, I could code anything.
|
||||||
— Karlheinz Brandenburg
|
— Karlheinz Brandenburg
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@@ -614,17 +991,19 @@ Perfektionismus: Jeder Hörtest musste bestehen
|
|||||||
|
|
||||||
# Wie funktioniert MP3?
|
# Wie funktioniert MP3?
|
||||||
|
|
||||||
**1. Frequenz-Analyse (FFT)**
|
Ein Zusammenspiel aus vielen Faktoren:
|
||||||
Audio → Frequenzspektrum
|
|
||||||
|
|
||||||
**2. Psychoakustisches Modell**
|
* **1. Frequenz-Analyse (FFT)**
|
||||||
Welche Töne hört Mensch nicht?
|
Audio → Frequenzspektrum
|
||||||
|
|
||||||
**3. Quantisierung**
|
* **2. Psychoakustisches Modell**
|
||||||
Unwichtige Frequenzen reduzieren
|
Welche Töne hört Mensch nicht?
|
||||||
|
|
||||||
**4. Huffman-Coding**
|
* **3. Quantisierung**
|
||||||
Lossless-Kompression der Restdaten
|
Unwichtige Frequenzen reduzieren
|
||||||
|
|
||||||
|
* **4. Huffman-Coding**
|
||||||
|
Lossless-Kompression der Restdaten
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
MP3-Kompression in 4 Schritten (vereinfacht):
|
MP3-Kompression in 4 Schritten (vereinfacht):
|
||||||
@@ -641,7 +1020,7 @@ MP3-Kompression in 4 Schritten (vereinfacht):
|
|||||||
3. Quantisierung (hier passiert der Datenverlust!)
|
3. Quantisierung (hier passiert der Datenverlust!)
|
||||||
- Unwichtige Frequenzen werden "grob" gespeichert
|
- Unwichtige Frequenzen werden "grob" gespeichert
|
||||||
- Wichtige Frequenzen bleiben genau
|
- Wichtige Frequenzen bleiben genau
|
||||||
- Wie JPEG: Details entfernen, wo es nicht auffällt
|
- Wie JPEG: Details entfernen, wo es nicht auffällt (Kontrast/Helligkeit bleibt)
|
||||||
|
|
||||||
4. Huffman-Coding (verlustfrei)
|
4. Huffman-Coding (verlustfrei)
|
||||||
- Häufige Muster = kurze Codes
|
- Häufige Muster = kurze Codes
|
||||||
@@ -794,12 +1173,13 @@ Vinyl-Revival: 2020er Gegenbewegung
|
|||||||
4. Höre Unterschiede (Kopfhörer!)
|
4. Höre Unterschiede (Kopfhörer!)
|
||||||
5. Vergleiche Dateigrößen
|
5. Vergleiche Dateigrößen
|
||||||
|
|
||||||
**Spektrogramm:** Track-Menü → Spektrogramm
|
**Spektrogramm:** Klick auf Track-Name → Spektrogramm
|
||||||
|
[https://manual.audacityteam.org/man/spectrogram_view.html](https://manual.audacityteam.org/man/spectrogram_view.html)
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Audacity: FOSS Audio-Editor (audacityteam.org)
|
Audacity: FOSS Audio-Editor (audacityteam.org)
|
||||||
Export: Datei → Exportieren → MP3 → Bitrate wählen
|
Export: Datei → Exportieren → MP3 → Bitrate wählen
|
||||||
Spektrogramm-Ansicht: Track-Name klicken → "Spektrogramm"
|
Spektrogramm-Ansicht: Auf Track-Name klicken (Dropdown öffnet sich) → "Spektrogramm" wählen
|
||||||
Hohe Frequenzen (oben im Bild) verschwinden bei niedriger Bitrate
|
Hohe Frequenzen (oben im Bild) verschwinden bei niedriger Bitrate
|
||||||
Alternative: Spek (spek.cc) – reiner Spektrogramm-Viewer
|
Alternative: Spek (spek.cc) – reiner Spektrogramm-Viewer
|
||||||
-->
|
-->
|
||||||
@@ -829,7 +1209,7 @@ Goldenes Ohr: Manche hören Unterschied, manche nicht
|
|||||||
# Fragen & Diskussion
|
# Fragen & Diskussion
|
||||||
|
|
||||||
**Kontakt:** mail@librete.ch
|
**Kontakt:** mail@librete.ch
|
||||||
**Folien:** Online verfügbar unter https://hdm.librete.ch
|
**Folien:** Online verfügbar unter https://librete.ch/hdm/223015b
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,38 @@ title: Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
|||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--color-foreground: #1a1a2e;
|
||||||
|
--color-highlight: #5da9e9;
|
||||||
|
--color-dimmed: #4a4a6a;
|
||||||
|
}
|
||||||
|
section.invert {
|
||||||
|
--color-foreground: #fff;
|
||||||
|
}
|
||||||
section {
|
section {
|
||||||
font-size: 1.7rem;
|
font-size: 1.7rem;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--color-dimmed);
|
color: var(--color-highlight);
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #0f0f23;
|
||||||
|
color: #5da9e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #5da9e9;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background: #1a1a2e;
|
||||||
|
color: #5da9e9;
|
||||||
|
padding: 0.15em 0.4em;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--color-highlight);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -818,7 +845,7 @@ Keine Abgabe, nur zum Ausprobieren
|
|||||||
# Fragen & Diskussion
|
# Fragen & Diskussion
|
||||||
|
|
||||||
**Kontakt:** mail@librete.ch
|
**Kontakt:** mail@librete.ch
|
||||||
**Folien:** Online verfügbar unter https://hdm.librete.ch
|
**Folien:** Online verfügbar unter https://librete.ch/hdm/223015b
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,38 @@ title: Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
|||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--color-foreground: #1a1a2e;
|
||||||
|
--color-highlight: #5da9e9;
|
||||||
|
--color-dimmed: #4a4a6a;
|
||||||
|
}
|
||||||
|
section.invert {
|
||||||
|
--color-foreground: #fff;
|
||||||
|
}
|
||||||
section {
|
section {
|
||||||
font-size: 1.7rem;
|
font-size: 1.7rem;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--color-dimmed);
|
color: var(--color-highlight);
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #0f0f23;
|
||||||
|
color: #5da9e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #5da9e9;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background: #1a1a2e;
|
||||||
|
color: #5da9e9;
|
||||||
|
padding: 0.15em 0.4em;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--color-highlight);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -1417,7 +1444,7 @@ Keine Abgabe, nur zum Ausprobieren
|
|||||||
# Fragen & Diskussion
|
# Fragen & Diskussion
|
||||||
|
|
||||||
**Kontakt:** mail@librete.ch
|
**Kontakt:** mail@librete.ch
|
||||||
**Folien:** Online verfügbar unter https://hdm.librete.ch
|
**Folien:** Online verfügbar unter https://librete.ch/hdm/223015b
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,38 @@ title: Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
|||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--color-foreground: #1a1a2e;
|
||||||
|
--color-highlight: #5da9e9;
|
||||||
|
--color-dimmed: #4a4a6a;
|
||||||
|
}
|
||||||
|
section.invert {
|
||||||
|
--color-foreground: #fff;
|
||||||
|
}
|
||||||
section {
|
section {
|
||||||
font-size: 1.7rem;
|
font-size: 1.7rem;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--color-dimmed);
|
color: var(--color-highlight);
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #0f0f23;
|
||||||
|
color: #5da9e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #5da9e9;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background: #1a1a2e;
|
||||||
|
color: #5da9e9;
|
||||||
|
padding: 0.15em 0.4em;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--color-highlight);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -1877,7 +1904,7 @@ Evaluation: Feedback ernst nehmen, Kurs verbessern
|
|||||||
# Fragen & Diskussion
|
# Fragen & Diskussion
|
||||||
|
|
||||||
**Kontakt:** mail@librete.ch
|
**Kontakt:** mail@librete.ch
|
||||||
**Folien:** Online verfügbar unter https://hdm.librete.ch
|
**Folien:** Online verfügbar unter https://librete.ch/hdm/223015b
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,38 @@ title: Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
|||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--color-foreground: #1a1a2e;
|
||||||
|
--color-highlight: #5da9e9;
|
||||||
|
--color-dimmed: #4a4a6a;
|
||||||
|
}
|
||||||
|
section.invert {
|
||||||
|
--color-foreground: #fff;
|
||||||
|
}
|
||||||
section {
|
section {
|
||||||
font-size: 1.7rem;
|
font-size: 1.7rem;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--color-dimmed);
|
color: var(--color-highlight);
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #0f0f23;
|
||||||
|
color: #5da9e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #5da9e9;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background: #1a1a2e;
|
||||||
|
color: #5da9e9;
|
||||||
|
padding: 0.15em 0.4em;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--color-highlight);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -65,7 +92,7 @@ Themen nach Interesse der Studierenden
|
|||||||
# Fragen & Diskussion
|
# Fragen & Diskussion
|
||||||
|
|
||||||
**Kontakt:** mail@librete.ch
|
**Kontakt:** mail@librete.ch
|
||||||
**Folien:** Online verfügbar unter https://hdm.librete.ch
|
**Folien:** Online verfügbar unter https://librete.ch/hdm/223015b
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 233 KiB |
|
Before Width: | Height: | Size: 6.6 MiB After Width: | Height: | Size: 2.6 MiB |
|
Before Width: | Height: | Size: 8.8 MiB After Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 5.2 MiB After Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 7.1 MiB After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 7.5 MiB After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 5.2 MiB After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 7.7 MiB After Width: | Height: | Size: 4.0 MiB |
|
Before Width: | Height: | Size: 5.7 MiB After Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 4.8 MiB After Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 6.4 MiB After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 175 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 7.3 MiB After Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 4.5 MiB After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 5.3 MiB After Width: | Height: | Size: 2.6 MiB |
|
Before Width: | Height: | Size: 5.3 MiB After Width: | Height: | Size: 2.5 MiB |
|
After Width: | Height: | Size: 525 KiB |
|
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 5.2 MiB After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 6.5 MiB After Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 8.0 MiB After Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 5.5 MiB After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 5.8 MiB After Width: | Height: | Size: 3.0 MiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 41 41" shape-rendering="crispEdges"><path fill="#ffffff" d="M0 0h41v41H0z"/><path stroke="#000000" d="M4 4.5h7m1 0h3m1 0h3m2 0h2m3 0h2m2 0h7M4 5.5h1m5 0h1m2 0h1m2 0h11m3 0h1m5 0h1M4 6.5h1m1 0h3m1 0h1m2 0h1m2 0h1m2 0h1m1 0h1m2 0h1m1 0h3m1 0h1m1 0h3m1 0h1M4 7.5h1m1 0h3m1 0h1m1 0h1m2 0h2m2 0h2m3 0h1m1 0h3m1 0h1m1 0h3m1 0h1M4 8.5h1m1 0h3m1 0h1m1 0h1m1 0h3m1 0h1m2 0h1m2 0h1m1 0h3m1 0h1m1 0h3m1 0h1M4 9.5h1m5 0h1m1 0h2m1 0h4m4 0h1m2 0h1m3 0h1m5 0h1M4 10.5h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7M12 11.5h2m2 0h2m3 0h7M4 12.5h1m3 0h1m1 0h4m3 0h2m2 0h13m2 0h1M6 13.5h1m1 0h2m1 0h2m3 0h1m1 0h1m2 0h2m4 0h1m1 0h1m3 0h4M7 14.5h2m1 0h2m1 0h2m2 0h5m3 0h1m1 0h1m1 0h2m2 0h1M5 15.5h1m6 0h1m1 0h4m1 0h4m3 0h1m2 0h1M6 16.5h1m2 0h4m1 0h2m1 0h1m2 0h3m2 0h1m7 0h1m2 0h1M4 17.5h1m1 0h1m4 0h1m1 0h2m3 0h2m1 0h1m2 0h1m1 0h3m3 0h1m1 0h1M8 18.5h3m1 0h5m1 0h1m1 0h1m1 0h2m1 0h1m3 0h2m1 0h1m2 0h1M4 19.5h1m2 0h2m3 0h4m1 0h1m3 0h2m1 0h2m3 0h2m2 0h1M5 20.5h3m2 0h1m1 0h2m3 0h2m1 0h1m1 0h4m4 0h1m1 0h4M4 21.5h2m1 0h3m4 0h3m1 0h1m1 0h1m6 0h1m1 0h1m3 0h4M8 22.5h4m1 0h1m2 0h1m1 0h1m3 0h1m1 0h1m2 0h1m3 0h1m1 0h1m1 0h1M4 23.5h2m1 0h1m1 0h1m2 0h1m1 0h3m3 0h1m1 0h4m4 0h2m4 0h1M5 24.5h3m2 0h2m3 0h2m1 0h1m1 0h1m1 0h1m6 0h2m2 0h1M4 25.5h3m4 0h1m1 0h1m3 0h1m1 0h1m4 0h9m1 0h2M6 26.5h1m1 0h1m1 0h1m2 0h1m1 0h1m1 0h5m1 0h1m3 0h1m1 0h2m2 0h1m1 0h1M7 27.5h2m2 0h2m1 0h1m1 0h3m1 0h2m1 0h4m6 0h4M4 28.5h3m2 0h7m3 0h1m2 0h11m3 0h1M12 29.5h1m2 0h1m1 0h1m6 0h1m3 0h1m3 0h1m1 0h1m1 0h1M4 30.5h7m1 0h3m1 0h1m1 0h2m2 0h1m5 0h1m1 0h1m1 0h2m2 0h1M4 31.5h1m5 0h1m3 0h1m2 0h1m3 0h2m3 0h1m1 0h1m3 0h1m2 0h1M4 32.5h1m1 0h3m1 0h1m1 0h1m1 0h1m4 0h4m5 0h6m1 0h2M4 33.5h1m1 0h3m1 0h1m2 0h3m3 0h1m1 0h1m1 0h2m1 0h3m1 0h3m1 0h1m1 0h1M4 34.5h1m1 0h3m1 0h1m2 0h1m1 0h1m1 0h1m1 0h3m4 0h3m1 0h4M4 35.5h1m5 0h1m8 0h1m5 0h1m2 0h1m1 0h1M4 36.5h7m1 0h5m1 0h1m1 0h1m3 0h3m3 0h1m2 0h2m1 0h1"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 45 45" shape-rendering="crispEdges"><path fill="#ffffff" d="M0 0h45v45H0z"/><path stroke="#000000" d="M4 4.5h7m1 0h1m1 0h1m1 0h1m2 0h1m2 0h1m3 0h5m3 0h7M4 5.5h1m5 0h1m1 0h1m3 0h4m1 0h1m2 0h1m4 0h1m1 0h2m1 0h1m5 0h1M4 6.5h1m1 0h3m1 0h1m2 0h4m3 0h1m1 0h1m1 0h3m2 0h1m1 0h2m1 0h1m1 0h3m1 0h1M4 7.5h1m1 0h3m1 0h1m1 0h4m3 0h1m2 0h1m2 0h2m2 0h3m2 0h1m1 0h3m1 0h1M4 8.5h1m1 0h3m1 0h1m7 0h1m2 0h2m1 0h4m2 0h2m2 0h1m1 0h3m1 0h1M4 9.5h1m5 0h1m5 0h2m2 0h1m2 0h1m1 0h2m7 0h1m5 0h1M4 10.5h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7M12 11.5h3m2 0h1m1 0h1m1 0h1m3 0h1m1 0h1m1 0h2m1 0h1M4 12.5h1m1 0h2m1 0h3m3 0h2m2 0h2m2 0h4m1 0h1m5 0h1m2 0h1m1 0h2M4 13.5h2m2 0h1m4 0h8m1 0h2m2 0h3m1 0h1m2 0h1m2 0h1m2 0h1M5 14.5h3m2 0h1m1 0h5m2 0h1m1 0h1m1 0h4m2 0h3m2 0h2m2 0h1M5 15.5h1m2 0h2m3 0h1m2 0h1m1 0h2m1 0h1m2 0h1m2 0h4m1 0h1m2 0h1M5 16.5h2m1 0h1m1 0h2m4 0h2m2 0h3m2 0h1m3 0h3m1 0h2m1 0h1m1 0h3M4 17.5h2m2 0h1m2 0h1m1 0h2m4 0h1m7 0h1m2 0h8m2 0h1M4 18.5h1m4 0h2m1 0h1m3 0h1m1 0h2m1 0h3m1 0h2m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1M5 19.5h2m1 0h1m4 0h1m2 0h4m1 0h5m1 0h1m2 0h7m2 0h2M4 20.5h1m1 0h3m1 0h2m3 0h4m1 0h4m1 0h1m2 0h1m1 0h1m1 0h2m1 0h1m1 0h4M6 21.5h4m1 0h2m4 0h1m2 0h1m9 0h11M4 22.5h1m2 0h2m1 0h1m1 0h1m2 0h1m3 0h2m1 0h1m5 0h1m2 0h1m4 0h2m1 0h2M5 23.5h2m1 0h2m3 0h1m2 0h1m1 0h1m2 0h1m1 0h4m3 0h3m2 0h2m1 0h2M4 24.5h4m2 0h2m6 0h1m3 0h1m1 0h1m2 0h1m5 0h1m1 0h3m2 0h1M4 25.5h1m6 0h1m2 0h2m1 0h1m1 0h1m5 0h4m3 0h1m4 0h1m1 0h1M6 26.5h1m1 0h1m1 0h1m3 0h1m1 0h1m4 0h1m1 0h1m2 0h4m2 0h4m3 0h2M4 27.5h2m2 0h2m1 0h2m4 0h1m1 0h2m1 0h2m1 0h2m1 0h1m5 0h1m1 0h3m1 0h1M6 28.5h1m1 0h3m5 0h2m1 0h1m2 0h1m1 0h1m2 0h1m1 0h1m1 0h2m2 0h1m2 0h1m1 0h1M5 29.5h3m4 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h3m1 0h1m2 0h1m1 0h1m2 0h1m2 0h1m1 0h2M5 30.5h3m2 0h4m1 0h1m3 0h5m2 0h1m3 0h1m1 0h1m2 0h1m1 0h1m1 0h1M4 31.5h1m1 0h1m1 0h1m9 0h1m1 0h2m2 0h2m4 0h1m5 0h2m1 0h1M6 32.5h1m3 0h2m2 0h9m1 0h1m4 0h1m2 0h6M12 33.5h3m1 0h2m1 0h1m1 0h1m1 0h1m2 0h3m3 0h1m3 0h1m1 0h3M4 34.5h7m1 0h2m1 0h3m2 0h2m1 0h1m2 0h1m1 0h2m2 0h1m1 0h1m1 0h1m1 0h1m1 0h1M4 35.5h1m5 0h1m1 0h4m2 0h1m1 0h1m3 0h5m1 0h3m3 0h1m2 0h2M4 36.5h1m1 0h3m1 0h1m3 0h1m1 0h2m1 0h1m2 0h1m1 0h1m1 0h1m1 0h1m3 0h6m2 0h1M4 37.5h1m1 0h3m1 0h1m1 0h5m2 0h1m1 0h3m1 0h10m1 0h1m2 0h2M4 38.5h1m1 0h3m1 0h1m1 0h3m2 0h2m1 0h3m3 0h1m3 0h1m3 0h1m1 0h1m1 0h2M4 39.5h1m5 0h1m4 0h2m1 0h1m1 0h3m1 0h2m1 0h1m1 0h1m1 0h1m1 0h1m1 0h2M4 40.5h7m1 0h1m1 0h4m1 0h1m2 0h1m2 0h1m2 0h4m1 0h1m2 0h1m2 0h2"/></svg>
|
||||||
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 5.3 MiB After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
Before Width: | Height: | Size: 5.2 MiB After Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 308 KiB After Width: | Height: | Size: 338 KiB |
|
Before Width: | Height: | Size: 5.5 MiB After Width: | Height: | Size: 2.5 MiB |