Thilo Billerbeck B.Sc.
Master Informatik Student TU Darmstadt
@avocadoom@chaos.social
@thilobillerbeck
@thilobillerbeck
@avocadoom:avocadoom.de
Die Fertiglösungen
Die Eigenbauten
EInmal im System kann ein Angreifer die ganze Seite übernehmen
Wartung und Sicherheitsupdates
Feature Breaking und Portierung
Plugin Hölle
Dieser Zustand verschlimmert sich in der Regel mit dem Alter der Seite
Webserver und Runtime
Datenbank
Grosse Last führt zu Unerreichbarkeit der Seite
Nein, natürlich nicht, aber sie lösen einige Probleme.
tl:dr; Webseiten ohne das klassische CMS Backend bzw. serverseitige Generierung
tl:dr; Tooling, das basierend auf Templates und Daten statische Seiten generiert
|-impressum.md |-unterstuetzen.md |-hackspace.md |-freifunk.md |-c-radar.md |-wizardsofdos.md |-posts | |-2018-02-01-aktivitätsbericht-2017.md | |-2015-12-27-32C3.md | |-2018-10-14-hacktoberfest.md | |-2020-06-06-are-you-still-there.md ... |-kontakt.md |-termine.html
|-impressum.md |-unterstuetzen.md |-hackspace.md |-freifunk.md |-c-radar.md |-wizardsofdos.md |-posts | |-2018-02-01-aktivitätsbericht-2017.md | |-2015-12-27-32C3.md | |-2018-10-14-hacktoberfest.md | |-2020-06-06-are-you-still-there.md ... |-kontakt.md |-termine.html
--- layout: page title: Freifunk menu: left: weight: 4 hero: heroes/freifunk.jpg --- [**Freifunk Darmstadt**](https://darmstadt.freifunk.net/)baut ein freies und dezentrales WLAN-Netzwerk über Darmstadt auf und bietet darüber anonymen Internetzugang an. Mittels handelsüblicher WLAN-Accesspoints kann jeder einen Teil seiner Internet-Bandbreite oder eine tolle Location beitragen. Wenn du dich schon immer gefragt hast, warum es hier kein öffentliches WLAN gibt, dann ist Freifunk dein Projekt!
--- layout: page title: Freifunk menu: left: weight: 4 hero: heroes/freifunk.jpg --- [**Freifunk Darmstadt**](https://darmstadt.freifunk.net/)baut ein freies und dezentrales WLAN-Netzwerk über Darmstadt auf und bietet darüber anonymen Internetzugang an. Mittels handelsüblicher WLAN-Accesspoints kann jeder einen Teil seiner Internet-Bandbreite oder eine tolle Location beitragen. Wenn du dich schon immer gefragt hast, warum es hier kein öffentliches WLAN gibt, dann ist Freifunk dein Projekt!
Header: Metadaten, CSS, JS, Icons, …
Main: Content und Struktur, …
Footer: JS, Links, Copyright, …
Beispiel Hugo Auszug single.html:
{{ define "main" }} <div> <h1>{{ .Title }}</h1> </div> <main>{{ .Content }}</main> {{ end }}
{{ define "main" }} <div> <h1>{{ .Title }}</h1> </div> <main>{{ .Content }}</main> {{ end }}
Beispiel Hugo baseof.html:
<!DOCTYPE html> <html lang="{{ .Site.LanguageCode }}" dir="{{ .Site.Language.LanguageDirection | default "ltr" }}"> {{- partial "head.html" . -}} <body> {{- partial "header.html" . -}} {{- block "main" . }}{{- end }} {{- partial "footer.html" . -}} {{- partial "scripts.html" . -}} </body> </html>
<!DOCTYPE html> <html lang="{{ .Site.LanguageCode }}" dir="{{ .Site.Language.LanguageDirection | default "ltr" }}"> {{- partial "head.html" . -}} <body> {{- partial "header.html" . -}} {{- block "main" . }}{{- end }} {{- partial "footer.html" . -}} {{- partial "scripts.html" . -}} </body> </html>
Beispiel Hugo Auszug head.html:
<head> ... <title> {{ if not .Page.IsHome }} {{ .Page.Title }} | {{ end }}{{ .Site.Title }} </title> <meta name="description" content="{{ .Site.Params.description }}" /> ... {{ $styles := resources.Get "scss/main.scss" | toCSS | minify | fingerprint "sha512" }} <link rel="stylesheet" media="screen" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}" media="screen" /> ... </head>
<head> ... <title> {{ if not .Page.IsHome }} {{ .Page.Title }} | {{ end }}{{ .Site.Title }} </title> <meta name="description" content="{{ .Site.Params.description }}" /> ... {{ $styles := resources.Get "scss/main.scss" | toCSS | minify | fingerprint "sha512" }} <link rel="stylesheet" media="screen" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}" media="screen" /> ... </head>
Wartung und Sicherheitsupdates
Feature Breaking und Portierung
Plugin Hölle
Webserver und Runtime
Datenbank
Problem: Wir haben jetzt unsere Seite, aber wir brauchen dynamische Inhalte, wollen dabei aber schnell und durchsuchbar Content für alle liefern.
Lösung: Wir hängen uns in bestimmte Elemente der Seite nach dem Laden ein und füllen sie mit unseren interaktiven Inhalte. --> Hydration
Partial Hydration: Nur einzelne Teile einer Seite werden hydriert, und damit separiert
Lazy Hydration: Partial aber mit Entscheidung wann etwas hydriert wird
@thilobillerbeck
@thilobillerbeck
@avocadoom:avocadoom.de