Compare commits

...
10 Commits
Author SHA1 Message Date
libretech 6222174921 add data units, global data growth and AI content statistics slides to termin 1 2025-12-25 14:08:00 +01:00
libretech 32cf27d87c add consistent dark theme styling across all slides
- add CSS variables for colors (foreground, highlight, dimmed)
- style code blocks with dark background and blue accent
- improve inline code appearance
- update link colors
- add deploy restriction to CLAUDE.md
2025-12-19 21:31:43 +01:00
libretech cae460dfc9 add index.html generator for slide overview 2025-12-19 16:45:59 +01:00
libretech fac7683e92 fix slides url: hdm.librete.ch → librete.ch/hdm/223015b 2025-12-19 15:20:16 +01:00
libretech d9c8b0d250 optimize images and add deploy-html target
- resize all images to max 1920px width (152MB → 66MB)
- add assets-original/ to gitignore for backups
- add make optimize-images target
- add make deploy-html for faster HTML-only deployment
2025-12-19 15:16:24 +01:00
libretech 800ed932bb add hex-dec lookup table and 8bit-P character images, update speaker notes 2025-12-19 15:03:55 +01:00
libretech 7d2e943d6e fix magic numbers slide: clarify ascii vs non-printable bytes, update lookup table link 2025-12-19 14:29:16 +01:00
libretech 7068ea3e56 update termin 0 and 1 slides 2025-12-19 14:05:34 +01:00
libretech 98837f6840 update termin 0 and 1, add qr codes 2025-12-18 23:25:45 +01:00
libretech 2aa34f1421 update termin 0 intro, add jung-naiv image 2025-12-18 23:11:14 +01:00
45 changed files with 497 additions and 69 deletions

No files matched your search

+1
View File
@@ -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/
+1
View File
@@ -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
+26 -3
View File
@@ -1,6 +1,6 @@
# Makefile for Marp Slides Project # Makefile for Marp Slides Project
.PHONY: help build dev watch pdf html clean install deploy copy-assets .PHONY: help build dev watch pdf html clean install deploy deploy-html copy-assets optimize-images
# Directories # Directories
SLIDES_DIR = slides SLIDES_DIR = slides
@@ -27,10 +27,14 @@ 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 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:
@@ -79,6 +83,7 @@ html: copy-assets
echo " $$f.html"; \ echo " $$f.html"; \
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \ npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \
done done
@./scripts/generate-index.sh $(BUILD_DIR)
@echo "Done! HTML files in $(BUILD_DIR)/" @echo "Done! HTML files in $(BUILD_DIR)/"
# Clean generated files # Clean generated files
@@ -91,7 +96,18 @@ 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..."
@echo "Copying HTML files..." @echo "Copying HTML files..."
@@ -100,3 +116,10 @@ deploy: build
scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/ scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/
@echo "Copying materials..." @echo "Copying materials..."
scp -r $(BUILD_DIR)/materials/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015b/ 2>/dev/null || true 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
+93
View File
@@ -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"
+64 -10
View File
@@ -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,6 +62,10 @@ Hochschule der Medien Stuttgart
--- ---
![bg fit](./assets/qrcode-0.svg)
---
<!-- _class: lead --> <!-- _class: lead -->
# Willkommen! # Willkommen!
@@ -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,22 +93,40 @@ Fragen jederzeit willkommen
--- ---
<!-- _footer: '' -->
![bg fit](./assets/jung-naiv.png)
---
# 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
--> -->
--- ---
@@ -106,7 +158,7 @@ Als Digital- und Medienwirtschaftler:innen werdet ihr täglich mit technischen F
* Welches Format für welchen Zweck? * Welches Format für welchen Zweck?
* Welche Schnittstelle für welches Gerät? * Welche Schnittstelle für welches Gerät?
* Wie funktioniert die Distribution digitaler Inhalte? * Wie funktioniert die Distribution digitaler Inhalte?
* **→ Mitreden können – nicht programmieren!** * **→ Mitreden können – nicht (zwingend) programmieren!**
<!-- <!--
Nicht: Ihr sollt Programmierer werden Nicht: Ihr sollt Programmierer werden
@@ -120,10 +172,11 @@ Praxisbezug: Medienproduktion, Marketing, Projektmanagement
**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
* Programmier-Schnittstellen kennenlernen
* APIs und Distributionswege verstehen * APIs und Distributionswege verstehen
<!-- <!--
@@ -156,10 +209,11 @@ Medienwissenschaftler:innen, nicht Informatiker:innen
--- ---
# Prüfungsleistung # Prüfungsleistung 18.02.
**Nach aktuellem Kenntnisstand:** **Nach aktuellem Kenntnisstand:**
* 90 min (40% Grundlagen, 40% Dateiformate, 20% AV)
* Schriftliche Klausur * Schriftliche Klausur
* Teils offene Fragen * Teils offene Fragen
* Vermutlich digital * Vermutlich digital
@@ -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,6 +62,10 @@ Hochschule der Medien Stuttgart
--- ---
![bg fit](./assets/qrcode-1.svg)
---
<!-- _class: lead --> <!-- _class: lead -->
# Termin 1 – 19.12.2025 # Termin 1 – 19.12.2025
@@ -176,6 +207,113 @@ 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
-->
---
<!-- _header: '' --> <!-- _header: '' -->
<!-- _footer: '' --> <!-- _footer: '' -->
@@ -184,7 +322,14 @@ Eselsbrücke: 1 Byte = 1 Buchstabe/Symbol (in ASCII/UTF-8 für einfache Zeichen)
<!-- <!--
Vorgeschichte:
US-ASCII (1967) Code Chart 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." "Ich möchte, dass ihr das mit mir jetzt gemeinsam lesen lernt; stellt euch vor ihr seid ArchäologInnen."
@@ -205,7 +350,6 @@ US-ASCII (1967) Code Chart
»256 Shades of Gray« »256 Shades of Gray«
256 Graustufen: 0 = Schwarz, 255 = Weiß 256 Graustufen: 0 = Schwarz, 255 = Weiß
--> -->
@@ -232,6 +376,7 @@ Jeder Kanal 0-255 → 256³ = 16.777.216 Farben ("True Color")
Das menschliche Auge kann etwa 10 Millionen Farben unterscheiden Das menschliche Auge kann etwa 10 Millionen Farben unterscheiden
→ 24 Bit reicht für fotorealistische Bilder → 24 Bit reicht für fotorealistische Bilder
--> -->
--- ---
<!-- _header: '' --> <!-- _header: '' -->
@@ -255,6 +400,8 @@ Welche Farben für ein volles Spektrum bieten sich nach unserer gelernten Sparsa
<!-- <!--
RGB = Additive Farbmischung (Bildschirme) RGB = Additive Farbmischung (Bildschirme)
Sog. RGB Tuple (geordnete endliche Liste)
--> -->
--- ---
@@ -286,6 +433,13 @@ background-color: #FF0000; = Rot
--- ---
<!-- _header: '' -->
<!-- _footer: '' -->
![bg fit](./assets/hex-dec-lookup-table.png)
---
# Das Problem: Sprachen # Das Problem: Sprachen
**Die Welt hat mehr als 256 Zeichen!** **Die Welt hat mehr als 256 Zeichen!**
@@ -309,22 +463,6 @@ Chaos: Verschiedene Standards für verschiedene Sprachen
--- ---
<!-- _header: '' -->
<!-- _footer: '' -->
![bg](./assets/ascii-table.png)
<!--
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):**
@@ -372,19 +510,6 @@ UTF-8-Kodierung: Variable Länge spart Speicher bei ASCII
--- ---
<!-- _header: '' -->
<!-- _footer: '' -->
<!-- _backgroundColor: #000 -->
![bg fit](./assets/hex-binary-table.png)
<!--
Hex-Binär-Umrechnungstabelle
Jede Hex-Ziffer = 4 Bits
-->
---
# Hexadezimal: Lesbarkeit # Hexadezimal: Lesbarkeit
**Binär ist unleserlich:** **Binär ist unleserlich:**
@@ -396,13 +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 Character Chart:** **ASCII Tabelle (0-127):**
[https://www.eso.org/~ndelmott/ascii.html](https://www.eso.org/~ndelmott/ascii.html) [https://www.asciitable.com](https://www.asciitable.com)
<!-- <!--
"Gerne vorab auf den Link gehen" "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)
@@ -448,6 +577,10 @@ Hex-Editor = Standard-Tool für Dateianalyse und Reverse Engineering
<!-- <!--
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)
@@ -455,35 +588,48 @@ Tool: HxD (Windows), Hex Fiend (Mac), xxd (Linux)
--- ---
<!-- _header: '' -->
<!-- _footer: '' -->
![bg fit](./assets/8bit-P-character.png)
---
# Magic Numbers # Magic Numbers
**Dateityp-Identifikation durch erste Bytes** **Dateityp-Identifikation durch erste Bytes**
| Format | Magic Number (Hex) | ASCII | | Format | Magic Number (Hex) | Lesbar? |
|--------|-------------------|-------| |--------|-------------------|---------|
| PNG | `89 50 4E 47 0D 0A 1A 0A` | `.PNG` | | PNG | `89 50 4E 47` | ✗ P N G |
| JPEG | `FF D8 FF` | `ÿØÿ` | | JPEG | `FF D8 FF` | ✗ ✗ ✗ |
| PDF | `25 50 44 46` | `%PDF` | | PDF | `25 50 44 46` | % P D F ✓ |
| ZIP/DOCX/ODT | `50 4B 03 04` | `PK` | | ZIP | `50 4B 03 04` | P K ✗ ✗ |
**Hinweis:** TXT, HTML, CSS haben **keine** Magic Number! **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.*
<!-- <!--
Magic Number = Signatur/Fingerabdruck am Dateianfang "Warum findet ihr 89 nicht in der ASCII-Tabelle?"
Wozu? Betriebssystem erkennt Dateityp unabhängig von Dateiendung
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) Geschichte: "PK" bei ZIP = Phil Katz (Erfinder von PKZip, 1989)
Fun Fact: DOCX, XLSX, PPTX, ODT = alles ZIP-Archive mit XML-Inhalt! 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 Dateien OHNE Magic Number: TXT, HTML, CSS, JSON, XML
→ Diese sind reiner Text, kein binäres Format → Reiner Text, kein binäres Format
→ Werden anhand Inhalt/Endung erkannt
Sicherheits-Aspekt: Sicherheits-Aspekt:
virus.exe → bild.jpg umbenennen täuscht nur Menschen virus.exe → bild.jpg umbenennen täuscht nur Menschen
Windows vertraut der Endung, aber Tools wie "file" (Linux) lesen Magic Number Windows vertraut der Endung, aber "file" (Linux) liest Magic Number
→ Nie Dateien von Fremden öffnen, nur weil sie harmlos aussehen!
--> -->
--- ---
@@ -1063,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
--- ---
+29 -2
View File
@@ -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
--- ---
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 KiB

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 MiB

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 MiB

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 MiB

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 MiB

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 KiB

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 MiB

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 MiB

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 MiB

After

Width:  |  Height:  |  Size: 3.0 MiB

+1
View File
@@ -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

+1
View File
@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 MiB

After

Width:  |  Height:  |  Size: 2.5 MiB