0:00:00.000,0:00:24.496
rc3-nowhere Vorspannmusik
0:00:24.496,0:00:30.361
Herald: Herzlich willkommen auf der Chaos[br]West stage. Der nächste Talk heißt "make it
0:00:30.361,0:00:35.860
static" und es wird darum gehen, warum man[br]vielleicht nicht ein fancy CMS hernehmen
0:00:35.860,0:00:40.050
sollte, dass eine Menge Abhängigkeiten[br]hat. Und wir wissen ja nicht erst seit
0:00:40.050,0:00:46.042
Log4Shell, dass die auch unerwartet große[br]Probleme machen können. Der Talk wird von
0:00:46.042,0:00:51.760
einem Studenten an der TU Darmstadt, der[br]Avocado heißt, gehalten. Ein herzliches
0:00:51.760,0:00:54.400
Willkommen und ich freue mich schon sehr[br]auf deinen Talk.
0:00:54.400,0:00:59.150
Avocadoom: Hi, ja, vielen Dank erst mal[br]für die nette Begrüßung. Du hast es schon
0:00:59.150,0:01:01.542
angesprochen. Das wird auch so ein[br]bisschen das Thema werden.
0:01:01.542,0:01:04.790
Sicherheitslücken in CMS und wie man das[br]vielleicht mit statischen Seiten umgehen
0:01:04.790,0:01:08.930
kann. Erst einmal herzlich willkommen zu[br]meinem Talk make it static. Ich habe noch
0:01:08.930,0:01:12.210
kurz eine Slide eingebaut in der ihr einen[br]QR-code habt den ich euch ganz kurz mal
0:01:12.210,0:01:14.860
abscannen lasse, wenn ihr den abscannen[br]wollt, da seht ihr die Slides auch noch
0:01:14.860,0:01:17.632
mal, falls ihr was nachlesen wollt, oder[br]nicht ganz hinterherkommt oder zum
0:01:17.632,0:01:23.342
Beispiel euch die vergrößern wollt. So,[br]jetzt zu mir. Ich bin Avocadoom. Ich
0:01:23.342,0:01:28.310
studiere aktuell an der TU Darmstadt bzw.[br]Thilo Billerbeck ist mein richtiger Name
0:01:28.310,0:01:33.250
und genau, ihr findet mich auf[br]verschiedenen Social-Media-Kanälen. Ich
0:01:33.250,0:01:36.056
mache auch nebenbei tatsächlich[br]Webentwicklung und Webdesign. So ein
0:01:36.056,0:01:40.000
bisschen. Deswegen stecke ich in diesem[br]Thema ein bisschen tiefer drin. Und ja,
0:01:40.000,0:01:42.990
ich freue mich jetzt auf jeden Fall schon,[br]euch das Thema ein bisschen präsentieren
0:01:42.990,0:01:49.250
zu können. Aktuelle Situation ist erstmal[br]so ein bisschen der Einstieg, den ich euch
0:01:49.250,0:01:52.200
geben möchte und aktuelle Situation[br]beschreibt es schon ganz gut, weil aktuell
0:01:52.200,0:01:55.890
haben wir ja eine Sicherheitslücke, die[br]schon relativ krass und bekannt ist und
0:01:55.890,0:01:58.509
ich möchte euch erstmal so ein bisschen[br]sagen, warum vielleicht static sites eine
0:01:58.509,0:02:03.700
coole Idee sind. Da habe ich so ein[br]bisschen im Internet etwas rausgesucht.
0:02:03.700,0:02:07.140
Das sind Artikel die tatsächlich vor[br]Log4Shell noch erschienen sind. Als ich
0:02:07.140,0:02:10.600
diese Präsentation angefangen habe zu[br]erstellen, gab es diese Lücke noch gar
0:02:10.600,0:02:16.459
nicht. Und ihr seht jetzt so ein bisschen,[br]die Artikel kommen von Heise oder t3n. Es
0:02:16.459,0:02:20.280
geht hier zum Beispiel um Drupal oder[br]WordPress oder irgendein Plugin. Und in
0:02:20.280,0:02:23.950
der Regel sind das irgendwie immer[br]Sicherheitslücken, die dann irgendwann
0:02:23.950,0:02:30.012
erkannt werden oder entdeckt werden und wo[br]dann zu einem schnellen Update aufgerufen
0:02:30.012,0:02:34.610
wird. Und die Sache ist dann immer so ein[br]bisschen, dass man halt auch schnell
0:02:34.610,0:02:38.720
agieren muss. Und viele setzen sich halt[br]so ein WordPress oder Drupal so dahin und
0:02:38.720,0:02:41.750
richten es einmal ein und pflegen das dann[br]nicht. Und das kann dann halt super
0:02:41.750,0:02:46.140
schnell mal anfällig für irgendwelche[br]Sicherheitslücken werden. Und da ist halt
0:02:46.140,0:02:52.210
eigentlich immer schnelles Handeln[br]gefragt. Zu dem ganzen Backend Sachen so
0:02:52.210,0:02:57.480
ein bisschen bei Content Management[br]Systemen gibt es ja generell immer so zwei
0:02:57.480,0:03:01.743
verschiedene Lösungen oder Arten, wie man[br]das angehen kann. Es gibt ja die fertig
0:03:01.743,0:03:06.200
Lösungen, die bekannten WordPress, Joomla,[br]Drupal oder auch modernere Systeme und die
0:03:06.200,0:03:10.140
brauchen halt in der Regel immer[br]regelmäßig Pflege und Updates, um
0:03:10.140,0:03:15.290
vernünftig funktionieren zu können, keine[br]Sicherheitslücken zu bieten. Und auch drum
0:03:15.290,0:03:20.620
herum muss immer um alles gesorgt sein.[br]Sie benötigen ein sauberes und sicheres
0:03:20.620,0:03:26.569
Setup und das betrifft vor allen Dingen[br]nicht nur das System an sich, sondern vor
0:03:26.569,0:03:30.560
allen Dingen auch alle Systeme drumherum,[br]zum Beispiel Datenbanken oder Server an
0:03:30.560,0:03:35.902
sich. Na, wenn euer System sicher ist und[br]dann auf einmal jemand durch eine
0:03:35.902,0:03:39.170
Datenbank Lücke bei euch reinkommt, dann[br]ist euch halt auch nicht geholfen oder
0:03:39.170,0:03:42.815
Rootzugriff auf euren Server bekommt, dann[br]habt ihr halt auch irgendwie ins Gras
0:03:42.815,0:03:48.500
gebissen. Da gibt es noch so ein bisschen[br]so eine andere Gattung von Systemen, die
0:03:48.500,0:03:51.766
einem immer wieder begegnen. Das sind die[br]sogenannten Eigenbauten. Die haben noch
0:03:51.766,0:03:54.980
mal ein bisschen mehr Pfeffer als die[br]Fertiglösung bei manchen Dingen, wenn man
0:03:54.980,0:03:59.830
sich da nicht ordentlich drum kümmert. Die[br]haben halt auch die ähnlichen Probleme wie
0:03:59.830,0:04:05.319
die Fertiglösungen, das ist ganz klar.[br]Aber vor allen Dingen haben sie auch noch
0:04:05.319,0:04:08.830
den Nachteil, dass man halt ganz viele[br]Dinge, die von den CMS berücksichtigt
0:04:08.830,0:04:13.170
wurden mit bedenken muss, zum Beispiel[br]SQL-Injection oder Cross Site Scripting
0:04:13.170,0:04:16.389
und Ähnliches. Und wenn man sich das halt[br]nicht alles mit anschaut, dann kann einem
0:04:16.389,0:04:19.209
das auch ganz schnell um die Ohren[br]fliegen. Und darum muss man sich halt die
0:04:19.209,0:04:22.840
Frage stellen: braucht man das wirklich?[br]Weil wenn man einmal in das System
0:04:22.840,0:04:25.657
gelangt, über welche Stelle auch immer,[br]hat man meistens relativ schnell Vollzugriff
0:04:25.657,0:04:29.888
und wenn man Vollzugriff hat,[br]dann sieht es eher schwierig aus. Gerade
0:04:29.888,0:04:35.479
wenn man eine größere Seite ist, kann das[br]sehr unangenehm werden. Ein weiterer
0:04:35.479,0:04:39.199
Punkt, den man bei einem Content[br]Management System so ein bisschen beachten
0:04:39.199,0:04:42.590
muss, ist der Wartungsaufwand. Ich hatte[br]es gerade eben schon angesprochen die
0:04:42.590,0:04:46.159
Dinger müssen regelmäßig und teilweise[br]auch sehr akut gepflegt werden. Man muss
0:04:46.159,0:04:52.100
dafür Zeit aufwenden, sie müssen relativ[br]schnell und regelmäßig gepflegt werden und
0:04:52.100,0:04:55.290
auch das Hostsystem drumherum braucht[br]regelmäßig Pflege und Updates, weil wenn
0:04:55.290,0:04:58.490
das out of date ist, dann geht es halt[br]auch nicht. Viele Systeme können das
0:04:58.490,0:05:03.786
inzwischen automatisch übrigens. Aber auch[br]da gibt es zum Beispiel Major Updates, die
0:05:03.786,0:05:07.110
meistens manuell eingespielt werden müssen[br]oder Plugins Updates, die auch gerne mal
0:05:07.110,0:05:12.370
manuelles Einspielen erfordern. Außerdem[br]kann es sein, dass euch zwischendurch mal
0:05:12.370,0:05:16.134
die Features brechen, bei WordPress zum[br]Beispiel oder so im Theming oder Plugin
0:05:16.134,0:05:20.393
Bereich. Das heißt, wenn größere Versionen[br]von WordPress oder Co ausrollen und die
0:05:20.393,0:05:24.835
halt geupdatet werden müssen, weil[br]Sicherheitsupdates benötigt werden, dann
0:05:24.835,0:05:28.430
müsst ihr halt auch entsprechend wieder[br]Zeitaufwand da reinstecken, das alles zu
0:05:28.430,0:05:31.450
portieren und entsprechend anzupassen.[br]Weil ansonsten habt ihr irgendwie nicht
0:05:31.450,0:05:34.150
eine schöne Seite da liegen, sondern nach[br]dem nächsten Major Update auf einmal
0:05:34.150,0:05:42.020
irgendwas, was mehr aussieht wie bekannte[br]Blog Seiten aus dem Internet. Und genau
0:05:42.020,0:05:46.837
außerdem müsst ihr immer da einen großen[br]Invest reinstecken. Und dann gibt es noch
0:05:46.837,0:05:51.150
etwas, was ich als Plugin-Hölle bezeichnen[br]würde. Das kennt man übrigens auch [bei]
0:05:51.150,0:05:54.740
WordPress. Der Begriff fällt heute leider[br]relativ häufig. Es tut mir leid, aber
0:05:54.740,0:05:57.889
gerade da sieht man das sehr häufig, dass[br]da halt super viele Plugins reingesteckt
0:05:57.889,0:06:01.440
werden. Und das klingt erst mal ganz cool.[br]Ich hole mir irgendwie mein System, dann
0:06:01.440,0:06:05.355
hole ich mir lauter Features da rein, pack[br]das alles so in eine Kiste und dann läuft
0:06:05.355,0:06:08.630
es, das Problem ist bloß. Je mehr Plugins[br]man eigentlich da rein packt, desto
0:06:08.630,0:06:12.646
schlimmer wird es eigentlich und desto[br]mehr Abhängigkeiten erzeugt man. Und wenn
0:06:12.646,0:06:16.389
das nächste große Update kommt, kann halt[br]irgendwas kaputt gehen. Und dieser Zustand
0:06:16.389,0:06:20.219
ihr sehts auch unten. Der nimmt halt in[br]der Regel mit dem Alter der Seite zu und
0:06:20.219,0:06:23.730
irgendwann habt ihr mal irgendwas, was zum[br]Beispiel nicht maintained wird oder nicht
0:06:23.730,0:06:27.449
ordentlich mit dem neuen Update[br]funktioniert. Und dann habt ihr plötzlich
0:06:27.449,0:06:32.710
eine Seite, die aussieht wie was auch[br]immer oder einfach komplett offline ist.
0:06:32.710,0:06:37.860
Noch eine weitere Sache, die einem halt[br]auffallen kann sind Skalierungsprobleme.
0:06:37.860,0:06:41.889
Das trifft jetzt kleinere Seiten, die[br]Blogs und Co eher weniger. Aber wenn ihr
0:06:41.889,0:06:46.360
zum Beispiel einen Talk über Kopierer[br]haltet und auf einmal plötzlich die halbe
0:06:46.360,0:06:49.400
Weltkugel auf eurem Blog habt, dann wollt[br]ihr vielleicht gucken, dass das auch
0:06:49.400,0:06:54.240
ordentlich skaliert. So Systeme skalieren[br]meistens an sich sehr gut und auch die
0:06:54.240,0:06:57.540
Webserver an sich, die skalieren halt[br]ordentlich. Aber wenn ihr zum Beispiel
0:06:57.540,0:07:00.930
eine Seite mit einem relativ komplexen[br]Aufbau habt oder halt eine große Datenbank
0:07:00.930,0:07:05.960
dahinter mit Content, viele Queries, also[br]Datenbankaufrufe, die bei einer Seite
0:07:05.960,0:07:10.230
durchgeführt werden müssen, dann kann es[br]euch halt super schnell passieren, dass
0:07:10.230,0:07:14.320
die Last auf dem Server halt auch[br]ordentlich hoch wird und der nächste Punkt
0:07:14.320,0:07:18.449
der noch dabei ist, ist halt eine[br]Datenbank, die skaliert halt auch meistens
0:07:18.449,0:07:21.710
relativ gut mit. Aber wenn ihr anfangt[br]irgendwie die Seite zu expandieren auf
0:07:21.710,0:07:24.680
mehrere Server oder so, dann seid ihr[br]irgendwann auch relativ schnell an dem
0:07:24.680,0:07:29.430
Punkt, wo ihr merkt, dass das gar nicht so[br]einfach ist. Und was ein Problem ist, ist
0:07:29.430,0:07:34.379
halt, wenn so eine große Last auftritt,[br]dann ist halt erst mal die ganze Seite
0:07:34.379,0:07:37.580
offline und das ist halt auch nicht so[br]cool, weil dann seid ihr gar nicht mehr
0:07:37.580,0:07:41.870
erreichbar und nicht nur schlecht, sondern[br]wirklich komplett gar nicht mehr. Und
0:07:41.870,0:07:45.888
jetzt kommt natürlich der große Moment[br]Magic Fairy Dust Static Sites to the
0:07:45.888,0:07:51.045
rescue oder vielleicht auch nicht, weil[br]vielleicht lösen sie jetzt auch nicht alle
0:07:51.045,0:07:55.419
eure Probleme, aber vielleicht einige. Und[br]dazu kommen wir jetzt ein bisschen.
0:07:55.419,0:08:00.240
Erstmal natürlich so ein bisschen der[br]Punkt an sich: Was sind denn überhaupt
0:08:00.240,0:08:06.380
statische Seiten? So eine statische Seite[br]ist im Prinzip, wie der Name schon sagt,
0:08:06.380,0:08:09.642
eine Seite, die halt nicht irgendwie[br]dynamisch generiert wird. Das heißt, da
0:08:09.642,0:08:12.789
ist kein Content Management System im[br]Hintergrund, was das Ding zusammenbaut
0:08:12.789,0:08:19.290
oder ähnliches, sondern die Seite wird "as[br]is" an den Client ausgeliefert. So eine
0:08:19.290,0:08:25.669
Seite besteht dabei meistens aus HTML. Das[br]kennt ihr mit Sicherheit das ist einfach
0:08:25.669,0:08:29.444
Hypertext Markup Language, also wie eure[br]Seite aufgebaut ist. CSS - Cascading Style
0:08:29.444,0:08:35.193
Sheets. Also wie genau eure Seite am Ende[br]aussehen soll. Wie sie sich verhalten
0:08:35.193,0:08:39.789
soll, wenn bestimmte Dinge gehovert werden[br]und so. Und dann gibt es natürlich noch
0:08:39.789,0:08:42.750
JavaScript und Co. Habe ich jetzt das mal[br]genannt, weil es auch heutzutage so was
0:08:42.750,0:08:46.959
Web Assembly gibt. Und das sind[br]Komponenten, die dafür sorgen, dass eurer
0:08:46.959,0:08:51.630
Seite Leben eingehaucht wird und dass sie[br]dynamisch wird. Das habe ich jetzt auch
0:08:51.630,0:08:56.749
bewusst ein bisschen gehighlighted, weil[br]es tatsächlich so ist, dass das bei
0:08:56.749,0:09:00.339
statischen Seiten euer einziger Anker sein[br]wird, wie ihr Dynamik in eure Seite
0:09:00.339,0:09:04.040
reinbringt. Das heißt, ihr macht das nicht[br]mehr serverseitig, sondern ihr macht es
0:09:04.040,0:09:10.220
clientseitig über JavaScript und nutzt[br]Scripts, um halt dort die nötigen
0:09:10.220,0:09:13.999
Komponenten reinzuziehen und so[br]entsprechend das Ganze ein bisschen
0:09:13.999,0:09:20.539
lebhafter zu machen. Um so eine statische[br]Seite zu bauen, habt ihr sogenannte Static
0:09:20.539,0:09:27.410
Site Generators. Das ist im Prinzip euer[br]Toolbelt euer Werkzeuggürtel, um halt
0:09:27.410,0:09:32.260
entsprechend solche Seiten aufzubauen. Und[br]die verschmelzen im Prinzip Templates und
0:09:32.260,0:09:40.470
also Vorlagen und Inhalte zu einem[br]Gesamtkonstrukt. Das Ganze läuft auch
0:09:40.470,0:09:46.695
meistens so, dass Inhalte und das Template[br]an sich relativ strikt getrennt sind. Das
0:09:46.695,0:09:50.639
heißt, ihr schreibt das nicht irgendwie in[br]HTML Code rein, sondern ihr schreibt eure
0:09:50.639,0:09:55.420
Inhalte in einem relativ einfachen Format[br]oder in einem strukturierten Format auf,
0:09:55.420,0:09:59.790
schreibt dann auf der anderen Seite, wie[br]das Ganze aufgebaut sein soll und am Ende
0:09:59.790,0:10:05.149
verschmilzt das Ganze im Prinzip zu einem[br]Gesamtkonglomerat und wird so zu eurer
0:10:05.149,0:10:11.389
statischen Seite. Das heißt aber auch,[br]dass diese Seiten entsprechend schon beim
0:10:11.389,0:10:17.449
Deployment, also wenn ihr die Seite auf[br]den Server schiebt, generiert und
0:10:17.449,0:10:20.629
fertiggestellt werden. Das heißt, sobald[br]die Seite auf dem Server ist, muss die im
0:10:20.629,0:10:22.740
Prinzip gar nicht mehr zusammengebaut[br]werden, sondern einfach nur ausgeliefert
0:10:22.740,0:10:27.720
wie eben schon gesagt. Außerdem gibt es da[br]noch ein paar weitere Punkte, nämlich
0:10:27.720,0:10:33.935
werden Metadaten generiert. Wenn ihr[br]diese statischen Seiten generiert, das
0:10:33.935,0:10:36.100
heißt ihr habt auch entsprechend[br]Zusatzinformationen, die euch der
0:10:36.100,0:10:40.477
Generator automatisch zur Verfügung[br]stellt, wie zum Beispiel Autoren, die
0:10:40.477,0:10:44.439
Textlänge kann man mit Sicherheit auch bei[br]einigen rausziehen. Das Datum, wann das
0:10:44.439,0:10:47.571
ganze erstellt wurde. Irgendwelche Git[br]Informationen. Das sind alles
0:10:47.571,0:10:50.129
Informationen, die euch dann helfen,[br]entsprechend den ganzen Content ein
0:10:50.129,0:10:54.069
bisschen richer zu machen und ihn auch[br]besser, strukturierbar, auffindbar und
0:10:54.069,0:11:00.359
suchbarer zu machen. Und genau das ist[br]auch noch ganz wichtig. Außerdem gibt es
0:11:00.359,0:11:04.919
zusätzliche Features, die auch noch beim[br]static site generator dabei sind, nämlich
0:11:04.919,0:11:12.739
sowas wie das Anlegen und Rendering von[br]JavaScript oder CSS. Das heißt, dass eure
0:11:12.739,0:11:17.519
Stylesheets entsprechend schon minifiziert[br]werden und sowas, was ihr vielleicht auch
0:11:17.519,0:11:22.525
von Webentwicklung an sich kennt, falls[br]ihr da schon mal was gemacht habt. Hash
0:11:22.525,0:11:26.680
Generierung zur Verifizierung, dass die[br]Dateien richtig übertragen wurden, z.B.
0:11:26.680,0:11:30.120
die CSS-Dateien. Dazu komme ich später[br]noch mal. Oder die Bildverarbeitung, um
0:11:30.120,0:11:33.170
dafür zu sorgen, dass die Bilder[br]entsprechend relativ klein sind, die ihr in
0:11:33.170,0:11:37.779
eurer Seite einbaut. Also alles[br]Convenience Tools, die ihr quasi nutzen
0:11:37.779,0:11:42.230
könnt, um in eurer Seite ein entsprechend[br]vernünftiges Erlebnis bieten zu können.
0:11:42.230,0:11:47.160
Jetzt denkt ihr euch mit Sicherheit, das[br]nutzt doch keiner so, das klingt doch
0:11:47.160,0:11:50.658
total kompliziert und das will ich doch[br]überhaupt nicht haben. Und da habe ich
0:11:50.658,0:11:54.119
euch mal ein paar Beispiele mitgebracht.[br]Zum Beispiel seht ihr da oben links
0:11:54.119,0:11:59.079
nationalgeographic.co.uk Das ist[br]tatsächlich ein relativ bekanntes und
0:11:59.079,0:12:02.629
populäres Beispiel. Die haben gatsby als[br]Static Site Generator eingesetzt, dazu
0:12:02.629,0:12:06.959
komme ich auch gleich nochmal. Und ja, da[br]würde man im ersten Moment gar nicht davon
0:12:06.959,0:12:09.790
ausgehen, dass die Seite statisch[br]generiert ist. Ist sie aber komplett und
0:12:09.790,0:12:15.720
das macht sie entsprechend auch für hohe[br]Lasten relativ gut nutzbar und sorgt auch
0:12:15.720,0:12:18.839
dafür, dass die Seite, hohe Anfragen[br]entsprechend gut verarbeiten kann, und
0:12:18.839,0:12:22.130
auch schnell beim Nutzer ist. Da habe ich[br]noch ein paar Seiten aus dem Entwickler
0:12:22.130,0:12:27.371
Bereich mitgebracht, oben rechts seht ihr[br]das Ionic Framework für mobile Apps. Unten
0:12:27.371,0:12:32.189
links, das kann vielleicht auch einige[br]schon. Das ist die 1Password Hilfe für so
0:12:32.189,0:12:36.509
Dokumenten- Dokumentation eignet sich das[br]tatsächlich perfekt, sowas statisch zu
0:12:36.509,0:12:40.459
generieren, weil das ändert sich nicht so[br]oft. Und unten rechts auch relativ
0:12:40.459,0:12:45.620
unbekannt. Nein, Let's Encrypt natürlich[br]auch komplett statisch generiert auch da
0:12:45.620,0:12:49.110
hat die Seite große Nachfragen und[br]profitiert natürlich davon, wenn sowas
0:12:49.110,0:12:55.699
entsprechend schon fertig generiert ist.[br]Es gibt so ein paar Static Site Generators
0:12:55.699,0:13:00.139
die ich hier mal aufgelistet habe. Das[br]sind übrigens, habe noch nicht erwähnt,
0:13:00.139,0:13:03.913
alles in der Regel Command Line Programme,[br]das heißt ihr habt kein User Interface,
0:13:03.913,0:13:07.012
sondern - also -, kein GUI, kein Graphical[br]User Interface, sondern macht das alles
0:13:07.012,0:13:10.529
über die Kommandozeile. Darauf komme ich[br]aber auch gleich noch mal zu sprechen. Ihr
0:13:10.529,0:13:16.429
habt oben links Hugo, das ist ein Static[br]Site Generator, der mit GO funktioniert
0:13:16.429,0:13:20.790
und als Binary ausgeliefert wird und[br]relativ schnell und einfach funktioniert
0:13:20.790,0:13:25.559
und für die meisten Use Cases ausreicht.[br]Daneben Jekyll. Das ist mehr so der
0:13:25.559,0:13:28.974
Platzhirsch, den es eigentlich schon seit[br]Ewigkeiten gibt. Ist in Ruby geschrieben,
0:13:28.974,0:13:32.440
hat Pluginsupport wird glaube ich von[br]GitHub immer noch für statische Seiten
0:13:32.440,0:13:37.293
empfohlen und bietet euch ein bisschen[br]mehr Flexibilität als Hugo, hat aber den
0:13:37.293,0:13:40.399
Nachteil, dass es zum Beispiel auch[br]relativ viel Ruby mit sich schleppt, und
0:13:40.399,0:13:44.540
man sich mit der Ruby Toolchain mal[br]auseinandersetzen sollte. Für Leute, die
0:13:44.540,0:13:48.420
schon mal mit JavaScript gearbeitet haben,[br]gibt es hier zum Beispiel ganz oben rechts
0:13:48.420,0:13:55.180
auch Eleventy, wie gesagt JavaScript als[br]Backendsprache und arbeitet ähnlich wie
0:13:55.180,0:13:58.921
Hugo und wird auch gerne mal in andere[br]Toolchains mit integriert. Unten links
0:13:58.921,0:14:01.860
seht ihr Gatsby das ist ein Static Site[br]Generator der ein bisschen mehr macht als
0:14:01.860,0:14:05.878
die anderen. Der arbeitet mit React und[br]kann entsprechend auch Seiten generieren,
0:14:05.878,0:14:12.632
die ein bisschen mehr interaktiver sind[br]und die ohne viel Aufwand quasi auch dafür
0:14:12.632,0:14:16.269
sorgen, dass bestimmte fortgeschrittene[br]Techniken, die ich euch später noch mal
0:14:16.269,0:14:21.040
zeigen werde, auch direkt mit eingebaut[br]werden können und macht eure Seite noch
0:14:21.040,0:14:24.920
dynamischer und sorgt dafür, dass sie noch[br]weniger unterscheidbar von klassischen CMS
0:14:24.920,0:14:30.699
Seiten ist. Ganz unten rechts habe ich[br]euch noch Astro mal eingefügt. Das ist ein
0:14:30.699,0:14:34.639
relativ neues Tool, wenn ihr zum Beispiel[br]schon mit React oder Vue oder Svelte, das
0:14:34.639,0:14:38.427
sind alles Frontend Frameworks, gearbeitet[br]habt, ist das vielleicht was für euch. Da
0:14:38.427,0:14:41.809
könnte ihr nämlich genau diesen Code[br]schreiben von diesen entsprechenden
0:14:41.809,0:14:45.299
Frameworks und dann wird euch das komplett[br]statisch ohne JavaScript raus gerendert.
0:14:45.299,0:14:49.910
Das heißt, da müsst ihr nichts neu lernen,[br]sondern einfach easy anfangen eure
0:14:49.910,0:14:54.811
statische Seite zu bauen. Genau. Ich[br]trinke mal ganz kurz was und dann erzähle
0:14:54.811,0:15:00.395
ich euch mal ein bisschen, wie das ganze[br]überhaupt funktioniert. Und zwar klingt
0:15:00.395,0:15:01.929
das alles erst mal ein bisschen[br]überfordernd Ich habe euch jetzt
0:15:01.929,0:15:06.660
wahnsinnig viel über Sicherheitslücken und[br]über die Gründe für Static Site Generators
0:15:06.660,0:15:09.199
erzählt, aber ihr denkt euch[br]wahrscheinlich wovon rede ich da
0:15:09.199,0:15:13.899
überhaupt? Dafür habe ich mir ein Beispiel[br]mitgenommen von meinem Home Hackspace,
0:15:13.899,0:15:17.511
weil wir arbeiten tatsächlich mit Static[br]Site Generators, dass ist
0:15:17.511,0:15:22.329
darmstadt.ccc.de. Das wird bisher mit[br]Jekyll gebaut. Das habe ich neulich auf
0:15:22.329,0:15:26.759
Hugo portiert und in den folgenden Folien[br]seht ihr auch so ein bisschen Code daraus,
0:15:26.759,0:15:30.360
deswegen wollte ich euch mal kurz sagen,[br]dass das daher kommt und wir sind damit
0:15:30.360,0:15:35.109
auch sehr zufrieden. Und ich erzähle euch[br]auch so ein bisschen warum. Wenn ihr so
0:15:35.109,0:15:38.480
einen Static Site Generator erst mal euch[br]rausgesucht und installiert habt, dann
0:15:38.480,0:15:41.070
habt ihr meistens so einen[br]Initialisierungsbefehl irgendwann
0:15:41.070,0:15:47.578
eingegeben ins Terminal und dann liegt vor[br]euch eine riesen Ordnerstruktur. Diese
0:15:47.578,0:15:49.779
riesige Ordnerstruktur ist erst mal[br]vielleicht ein bisschen überfordernd,
0:15:49.779,0:15:53.149
gerade wenn man von Content Management[br]Systemen kommt und dann plötzlich damit
0:15:53.149,0:15:57.369
Dateien zu tun hat. Dann kann es einen ein[br]bisschen erschlagen. Ich kann euch das
0:15:57.369,0:16:01.949
aber mal ein bisschen runterbrechen und[br]vereinfachen. Wir haben hier im Prinzip
0:16:01.949,0:16:06.359
vier wichtige Bestandteile in jedem Static[br]Site Generator. Die heißen meistens ein
0:16:06.359,0:16:09.530
bisschen unterschiedlich, sind aber[br]relativ ähnlich zueinander. Wir haben
0:16:09.530,0:16:15.434
einmal die Inhalte und Daten. Das ist[br]quasi das, wo entsprechend dann das Herz
0:16:15.434,0:16:22.109
eurer Seite besteht, so mit Blog-Posts,[br]Seiten. Aber auch strukturierte oder semi-
0:16:22.109,0:16:27.062
strukturierte Daten könnt ihr entsprechend[br]da einpflegen. Und ihr habt da zum
0:16:27.062,0:16:32.109
Beispiel so Formate vorliegen wie[br]Markdown, YAML, JSON, TOML und so weiter.
0:16:32.109,0:16:37.290
Also verschiedene Formattypen. Dann habt[br]ihr Templates und/oder Themes. Das sind
0:16:37.290,0:16:40.922
sozusagen die Blöcke eurer statischen[br]Seite, die vorgeben, wie sie später
0:16:40.922,0:16:44.800
gerendert werden soll. Wenn euer Static[br]Site Generator die Seite zusammenbaut,
0:16:44.800,0:16:48.050
dann nimmt er sich den Content, guckt, wo[br]kommt das ins Template rein und baut das
0:16:48.050,0:16:51.720
alles entsprechend zusammen. Das heißt,[br]dass auch eine gewisse Uniformität erzeugt
0:16:51.720,0:16:55.309
wird. Und diese Templates und Themes habt[br]ihr im Prinzip an bestimmten Stellen in
0:16:55.309,0:17:00.410
diesem Static Site Generator liegen,[br]schreibt sie dort und strukturiert und
0:17:00.410,0:17:04.841
teilt sie auch dort auf. Außerdem habt ihr[br]Konfiguration. Das ist ganz klar. Alles
0:17:04.841,0:17:06.959
was ihr ins Netz stellt, muss auch[br]irgendwo konfiguriert werden und
0:17:06.959,0:17:10.819
entsprechend mit Metadaten versehen[br]werden. Das macht ihr meistens dort. In so
0:17:10.819,0:17:14.192
Konfigurationsdateien stellt ihr zum einen[br]meistens ein, wie so'n Static Site
0:17:14.192,0:17:18.260
Generator arbeiten soll aber auch zum[br]Beispiel Metadaten, euer Seitenname, eine
0:17:18.260,0:17:23.412
Beschreibung für SEO oder so kommt dann[br]meistens auch mit rein und Plugins oder
0:17:23.412,0:17:26.760
ähnliches werden dann meistens auch mit[br]rein konfiguriert, wenn euer Static Site
0:17:26.760,0:17:31.786
Generator das überhaupt unterstützt. Jetzt[br]habt ihr ganz viel Struktur und Text. Eine
0:17:31.786,0:17:37.072
Sache fehlt natürlich noch: Die statischen[br]Assets, wie zum Beispiel Styles, Fonts,
0:17:37.072,0:17:42.442
Bilder und Skripte. Also alles das, was[br]sozusagen dafür sorgt, dass das Ganze auf
0:17:42.442,0:17:46.531
einem Bildschirm ein bisschen mehr Form[br]und Farbe annimmt und auch ein bisschen
0:17:46.531,0:17:52.194
mehr Dynamik. Das ist quasi auch noch eine[br]Sache, die dort mit drinsteckt. Ich habe
0:17:52.194,0:17:56.340
von einem Beispiel gesprochen. Wir haben[br]ja die Darmstadt CCC Seite auf Hugo
0:17:56.340,0:18:01.080
umgebaut. Ist aktuell noch nicht deployed,[br]aber hier seht ihr schon mal ein bisschen
0:18:01.080,0:18:05.190
als Beispiel die Ordnerstruktur von Hugo.[br]Wenn ihr so'n hugo new site-Befehl
0:18:05.190,0:18:08.438
ausführt, dann habt ihr die[br]Konfigurationsdatei ganz oben. Das ist die
0:18:08.438,0:18:14.310
config.toml. Da definiert wie gesagt die[br]entsprechenden Werte für die Seite schon
0:18:14.310,0:18:18.390
drin. Dann habt ihr content. Das ist das[br]für semi- und unstrukturierten Inhalt der
0:18:18.390,0:18:22.486
Seite, zum Beispiel Blogposts. Also semi-[br]und unstrukturiert heißt im Prinzip
0:18:22.486,0:18:25.270
Markdown und Text einfach so als[br]unstrukturiert und semistrukturiert
0:18:25.270,0:18:28.993
könntet ihr auch zum Beispiel HTML-Seiten[br]und so drin schreiben, wenn ihr das
0:18:28.993,0:18:32.740
entsprechend braucht. Wenn ihr zum[br]Beispiel irgendwelche Datenbanken habt,
0:18:32.740,0:18:36.230
Listen oder ähnliches, die sich relativ[br]ähnlich sehen, habt ihr zum Beispiel den
0:18:36.230,0:18:40.750
data-Ordner. Da kommen dann, so YAML-,[br]TOML- und JSON-Dateien rein, die wirklich
0:18:40.750,0:18:44.310
einfach formatierte, strukturierte Inhalte[br]haben, die ihr zum Beispiel auch als
0:18:44.310,0:18:48.780
Listen in den Templates rendern könnt.[br]Statische Assets ist relativ schnell
0:18:48.780,0:18:55.848
erklärt, kommen in static rein. Themes[br]sind komplette Pakete, die ein bestimmtes
0:18:55.848,0:19:01.760
Thema enthalten, inklusive Layout und[br]Styles und Ähnlichem. Und unten habt ihr
0:19:01.760,0:19:06.100
Layouts. Layouts sind ein bisschen[br]spezifischer als Themes. Darauf komme ich
0:19:06.100,0:19:11.290
auch gleich noch mal zu sprechen. Das ist[br]im Prinzip der Teil, wo ihr bestimmt, wie
0:19:11.290,0:19:15.221
spezifische Inhalte auf eurer Seite auch[br]unabhängig vom Theme gerendert werden
0:19:15.221,0:19:18.685
sollen. Das klingt ein bisschen[br]verwirrend. Ich erkläre euch aber gleich
0:19:18.685,0:19:22.603
mal, wo da der Unterschied genau besteht.
0:19:22.603,0:19:25.966
Inhalte. Wenn ihr anfangt, so eine
0:19:25.966,0:19:28.865
statische Seite zu bauen, dann ist das[br]erste, was euch in den Sinn kommt,
0:19:28.865,0:19:32.336
natürlich, dass ihr irgendwo Inhalte[br]reinpacken wollt. Und wie gesagt, kommt
0:19:32.336,0:19:37.690
das bei Hugo zum Beispiel in diesem[br]Content Directory. Und dort habt ihr hier
0:19:37.690,0:19:42.350
zum Beispiel wie auf der linken Seite zu[br]sehen verschiedene Markdown Dateien bei
0:19:42.350,0:19:46.510
darmstadt.ccc.de zum Beispiel. Wir haben[br]das Impressum und so, einen Ordner mit
0:19:46.510,0:19:50.653
Posts, mit Blogposts und dort strukturiert[br]ihr euch den ganzen Inhalt rein. In diesem
0:19:50.653,0:19:56.240
Fall kommen die Inhalte bei uns halt aus[br]Dateien und sie sind halt strukturiert
0:19:56.240,0:20:00.500
oder semistrukturiert und ihr habt[br]verschiedene Formatmöglichkeiten, die ihr
0:20:00.500,0:20:03.360
wählen könnt. Das heißt, wenn ihr nicht[br]Markdown schreiben wollt, könnt ihr auch
0:20:03.360,0:20:08.484
HTML schreiben oder eine andere Form von[br]Markup Sprache, die euch vielleicht ein
0:20:08.484,0:20:15.132
bisschen gelegener ist. Wenn ihr mal so[br]eine Markdown Datei aufmacht, dann fällt
0:20:15.132,0:20:19.550
euch auf, dass da nicht nur Markdown[br]drinsteht, wie hier zum Beispiel ab Zeile
0:20:19.550,0:20:24.754
10, wo es hier um Freifunk geht, sondern[br]da gibt es auch was oben drüber. Das ist
0:20:24.754,0:20:29.900
bei Static Site Generators relativ häufig[br]so. Ihr habt nämlich hier entsprechend ein
0:20:29.900,0:20:33.949
paar Metadaten oder wie es bei Static Site[br]Generators häufig genannt wird, front
0:20:33.949,0:20:39.410
matter. Dieses front matter sorgt dafür,[br]dass Static Site Generator weiß, worum es
0:20:39.410,0:20:42.140
eigentlich in dem Inhalt überhaupt geht[br]und vor allen Dingen auch, wo er genau hin
0:20:42.140,0:20:46.530
soll. In diesem Fall haben wir hier zum[br]Beispiel ein Layout, was festgelegt wird,
0:20:46.530,0:20:50.750
ist hier das page Layout. Wir haben den[br]Titel der Seite. Das ist zum Beispiel, wie
0:20:50.750,0:20:54.010
gesagt, es geht hier um Freifunk, Freifunk[br]und was hier unten ganz cool ist, das ist
0:20:54.010,0:20:57.180
ein bisschen spezifischer für den Static[br]Site Generator: Wir legen hier eine
0:20:57.180,0:21:01.298
Menüposition fest für den entsprechenden[br]Inhalt. Das heißt, ihr geht nicht
0:21:01.298,0:21:04.950
irgendwie, wie im Wordpress, zur Seite,[br]schreibt die, geht ins Menü und zieht das
0:21:04.950,0:21:08.900
dann ins Menü rein, sondern ihr schreibt[br]direkt in den Inhalt rein. So, hier, pack
0:21:08.900,0:21:12.271
das mal bitte da hin und das macht ihr[br]alles schön von einem Ort raus und der
0:21:12.271,0:21:17.350
Static Site Generator übernimmt dann den[br]Rest. Die letzte Variable ist etwas, was
0:21:17.352,0:21:21.733
zum Beispiel auch templatespezifisch oder[br]themespezifisch ist. Wird bei uns zum
0:21:21.733,0:21:26.180
Beispiel verwendet. Hier für das[br]entsprechende Bild in der jeweiligen Seite
0:21:26.180,0:21:30.600
ist hier die Hero-Variable. Die gibt es so[br]im Static Site Generator eigentlich nicht,
0:21:30.600,0:21:34.270
wurde von mir sozusagen hinzugefügt. Und[br]genau sowas könnt ihr auch machen, wenn
0:21:34.270,0:21:40.308
ihr zum Beispiel spezielle Bedürfnisse für[br]Variablen in euren Templates habt. Wenn
0:21:40.308,0:21:45.820
ihr irgendwie mit Markdown und so nicht[br]klarkommt, habt ihr auch andere Optionen,
0:21:45.820,0:21:48.796
z. B. CSV, JSON, YAML und TOML, ich habe[br]es eben schon gesagt, strukturierte
0:21:48.796,0:21:52.210
Inhalte. Das ist zum Beispiel gut für[br]große Datensätze. Wenn ihr zum Beispiel
0:21:52.210,0:21:56.770
ein Team in einer Firma habt, dann wollt[br]ihr das vielleicht nicht alles so in HTML
0:21:56.770,0:22:01.050
manuell runter hacken und euch irgendwann[br]denken, ja, doof, und irgendwo habt ihr
0:22:01.050,0:22:03.952
vielleicht mal einen Formatierungsfehler[br]drin, dann sieht alles aus wie Grütze. Und
0:22:03.952,0:22:06.790
das macht dann eigentlich auch im Prinzip[br]keinen Spaß, weil da macht ihr dann im
0:22:06.790,0:22:10.481
Prinzip das Layouting über die Templates[br]und müsst euch da keine Sorgen machen. Ihr
0:22:10.481,0:22:13.290
schreibt einmal das Layout und ein Static[br]Site Generator macht dann halt keine
0:22:13.290,0:22:17.720
Fehler und bindet euch eure coole[br]Datenbank schön in die Seite rein und dann
0:22:17.720,0:22:22.310
ist die da vernünftig zu sehen. Außerdem[br]vermeidet das wie gesagt Inkonsistenz.
0:22:22.310,0:22:26.860
Wenn ihr jetzt zum Beispiel, worauf ich[br]auch später noch mal zu sprechen komme,
0:22:26.860,0:22:30.850
ein Content Management System habt oder[br]ähnliches, wo ihr Daten rausziehen wollt
0:22:30.850,0:22:34.653
oder eine andere Applikation, dann geht[br]das bei den meisten Static Site Generators
0:22:34.653,0:22:38.980
auch. Dann geht ihr, sucht euch ne[br]entsprechende API raus. REST ist da
0:22:38.980,0:22:42.580
eigentlich der Standard. Viele können auch[br]einen neueren Standard, der sich GraphQL
0:22:42.580,0:22:47.610
nennt, wo ihr festlegen könnt, was genau[br]ihr an Inhalten überhaupt abgerufen haben
0:22:47.610,0:22:53.060
wollt. Und diese Daten werden dann zur[br]Renderingzeit quasi von der API abgerufen
0:22:53.060,0:22:59.159
und in eure statische Seite integriert.[br]Genau, in jedem Content Management System,
0:22:59.159,0:23:01.159
normalen Content Management[br]System, gibt es auch, zum Beispiel headless
0:23:01.159,0:23:04.900
CMS, da komme ich auch noch mal gleich[br]darauf zurück und auch da geht das
0:23:04.900,0:23:08.120
Layouting dann wieder über das Template.[br]Das heißt, ihr zieht euch nur die ganzen
0:23:08.120,0:23:12.461
Daten raus und packt sie in dieses[br]Template rein und vermeidet auch da
0:23:12.461,0:23:18.400
entsprechende Inkonsistenzen. Jetzt habe[br]ich viel über Thema Themes und Templates
0:23:18.400,0:23:23.680
geredet. An dieser Stelle sollte ich[br]vielleicht mal ganz kurz erzählen, was das
0:23:23.680,0:23:28.270
überhaupt ist und wie sich das voneinander[br]unterscheidet, weil das klingt ja schon
0:23:28.270,0:23:33.110
relativ ähnlich. So ein Theme ist, wie[br]gesagt, so ein Gesamtpaket. Wenn ihr jetzt
0:23:33.110,0:23:37.360
kein eigenes Theme in Hugo schreibt, dann[br]ladet ihr euch das irgendwo runter, bei
0:23:37.360,0:23:41.510
GitHub zum Beispiel oder so und da ist[br]dann alles drin, da sind Templates drin,
0:23:41.510,0:23:47.690
da sind entsprechend Styles drin, Skripte[br]und so weiter, Fonts. Das heißt, ihr
0:23:47.690,0:23:50.920
installiert das einmal, startet im Prinzip[br]einen Static Site Generator und seid
0:23:50.920,0:23:54.580
gewaschen, gekämmt und die Seite sieht[br]schön aus. So ein Theme stellt das
0:23:54.580,0:23:59.490
Grundgerüst der Seite entsprechend und[br]auch die meisten Basistemplates. Das heißt
0:23:59.490,0:24:03.300
hier, wie ihr das zum Beispiel links seht,[br]haben wir hier so ein Basistemplate mal
0:24:03.300,0:24:07.410
grafisch abgebildet. Wir haben hier eine[br]Kopfzeile, einen Hauptbereich und einen
0:24:07.410,0:24:10.971
Footer und so beginnen meistens die[br]Templates auch in Hugo. Das ihr ein
0:24:10.971,0:24:16.210
base-of Template habt. Und ab da werden[br]sozusagen die Layouts ineinander immer
0:24:16.210,0:24:22.370
weiter verschachtelt und so setzt sich[br]dann eure Seite zusammen. Eine typische
0:24:22.370,0:24:26.480
Aufteilung, habe ich wie gesagt schon[br]erwähnt, besteht ja meist aus diesen drei
0:24:26.480,0:24:30.120
Blöcken. Ihr habt ein Headertemplate, wo[br]eure ganzen Metadaten das CSS, das
0:24:30.120,0:24:35.220
JavaScript und so reinkommt. Ihr habt den[br]Main-Bereich, wo euer Inhalt dann meistens
0:24:35.220,0:24:38.170
reinkommt, wo auch entsprechend die[br]einzelnen Inhaltstemplates meistens
0:24:38.170,0:24:43.280
eingefügt werden. Und ein vierter Bereich[br]wo euer ganzer JavaScript-Kram und so
0:24:43.280,0:24:47.193
reinkommt, wo ihr vielleicht eure[br]Copyright Notice reinpackt und so. Das ist
0:24:47.193,0:24:50.221
meistens die Grundstruktur und dort kann[br]es halt auch sein, dass die Templates sich
0:24:50.221,0:24:54.660
dann noch weiter verschachteln. Was ist[br]denn so ein mysteriöses Template
0:24:54.660,0:24:59.240
überhaupt? So ein Template ist im Prinzip,[br]es sieht, wenn ihr das jetzt mal auf der
0:24:59.240,0:25:03.642
linken Seite seht, fast aus wie eine HTML-[br]Seite. Das ist es aber nicht ganz. Es ist
0:25:03.642,0:25:07.703
im Prinzip, wie schon der Name verrät,[br]eine Vorlage. Und diese Vorlage sagen dem
0:25:07.703,0:25:12.370
Static Site Generator, was er mit eurem[br]Content machen soll. Hier zum Beispiel
0:25:12.370,0:25:18.890
habe ich mal so schematisch auf der linken[br]Seite ein bisschen skizziert, wie das
0:25:18.890,0:25:22.930
aussehen könnte. Wenn ihr zum Beispiel ein[br]Blogpost rendern wollt, ihr extended hier
0:25:22.930,0:25:26.730
meinetwegen euer Basis Template. Extend[br]heißt im Prinzip, ihr sagt eurem Static
0:25:26.730,0:25:30.990
Site Generator: Wenn du den Blogpost[br]renderst, dann nutz als Basis bitte das
0:25:30.990,0:25:36.230
Template 42, also pack den Rest ins[br]Template 42, damit Template 42 den ganzen
0:25:36.230,0:25:43.070
Rest der Seite enthält. Und ich habe zum[br]Beispiel die article Tags wurden über
0:25:43.070,0:25:46.050
einen Artikel und so entsprechend[br]eingefügt, das ist jetzt ganz normales
0:25:46.050,0:25:48.756
HTML, ist nicht so wichtig und ihr habt[br]hier zwei Variablen, zum Beispiel
0:25:48.756,0:25:55.730
Titelvariable hier in Header 1 und unten[br]in dem Div Element mit "rC3-is-awesome"
0:25:55.730,0:25:59.590
eure Inhaltsvariable, d.h. da wird der[br]Content vom Blogpost entsprechend rein
0:25:59.590,0:26:05.480
gerendert. Und ihr könnt dort nicht nur[br]meistens Textvariablen einbinden, sondern
0:26:05.480,0:26:10.090
dort werden auch eure Assets und Ähnliches[br]eingebunden. Das heißt, alles wie sich die
0:26:10.090,0:26:14.880
Seite am Ende zusammensetzt, regelt ihr in[br]der Regel über die Templates. Ich habe
0:26:14.880,0:26:20.252
euch da mal so ein Beispiel mitgebracht.[br]Ihr seht das hier ganz gut oben. Das ist
0:26:20.252,0:26:24.231
ein Auszug aus einer Single HTML in Hugo.[br]Das sieht ähnlich aus wie mein
0:26:24.231,0:26:28.145
schematisches Beispiel eben. Ihr extended[br]hier das Template "main", habt dann hier
0:26:28.145,0:26:32.881
Titelvariable, zum Beispiel im Header 1[br]und hier die Contentvariable in main. Und
0:26:32.881,0:26:36.090
was Hugo da macht, es ersetzt hier den[br]Titel halt durch den Titel eures
0:26:36.090,0:26:40.090
Blogposts, den Content durch den Inhalt[br]und packt das Ganze in euer Main Template,
0:26:40.090,0:26:45.850
also in das Restgerüst eurer Seite. Ich[br]habe auch gesagt, Hugo fängt meistens mit
0:26:45.850,0:26:50.574
so einem Bassistemplate an, das seht ihr[br]hier unten. Wenn ihr schon HTML
0:26:50.574,0:26:53.460
geschrieben habt, kommt euch das[br]vielleicht bekannt vor. Das ist so ein
0:26:53.460,0:26:57.141
klassisches Grundgerüst und ihr seht auch[br]schon, hier fängt es z.B. an, dass wir die
0:26:57.141,0:27:01.210
lang, also die language der Seite hier[br]schon mit einer Variable festlegen, die
0:27:01.210,0:27:06.080
zum Beispiel in diesem Fall bei Hugo[br]global ist. Wir fügen hier schon direkt
0:27:06.080,0:27:10.779
ein Template ein, das ist das head[br]Template, also das, was im HTML dieses
0:27:10.779,0:27:14.400
head-Element ist, das kommt da mit rein[br]und der Rest kommt hier in den Body rein.
0:27:14.400,0:27:17.106
Ist auch nicht so wichtig. Ihr müsst noch[br]nicht alles verstehen. Nur im Prinzip
0:27:17.106,0:27:19.730
müsst ihr euch vorstellen, alles was in[br]diesen geschweiften Doppelklammern drin
0:27:19.730,0:27:24.670
ist, sind quasi Bausteine, die der Static[br]Site Generator zur Bauzeit quasi einzeln
0:27:24.670,0:27:29.990
in die Seite rein setzt und daraus[br]entsteht dann das Gesamtkonstrukt. Ich
0:27:29.990,0:27:33.608
habe von der head.html gesprochen, so[br]sieht die ja auch im Prinzip aus bzw. ein
0:27:33.608,0:27:36.750
Auszug davon. Ich habe das eingefügt, weil[br]ich euch zwei Dinge mal zeigen wollte,
0:27:36.750,0:27:40.826
nämlich könnt ihr auch ein bisschen[br]advancederes Zeug damit machen. Ihr könnt
0:27:40.826,0:27:44.117
z.B. Conditionals auch schreiben. Meistens[br]haben diese Static Site Generators eine
0:27:44.117,0:27:49.370
Template Language an Bord, die euch viel[br]Dynamik erlaubt und entsprechend euch auch
0:27:49.370,0:27:53.697
die Möglichkeit bietet, auf viele Sachen[br]sehr dynamisch zu reagieren. Zum Beispiel
0:27:53.697,0:27:57.409
sagen wir hier, wenn die Seite nicht die[br]Homeseite ist, dann hängt bitte den
0:27:57.409,0:28:02.681
Seitentitel hinten dran. Oder wir fügen[br]die Description der Seite entsprechend ein
0:28:02.681,0:28:05.890
und hier unten, was ganz cool ist. Ich[br]habe schon gesagt, so ein Template bietet
0:28:05.890,0:28:09.750
euch ein bisschen mehr Möglichkeit, als[br]nur Textvariablen einzubinden. Ihr habt
0:28:09.750,0:28:13.710
hier unten die Möglichkeit, zum Beispiel[br]Ressourcen zu laden. Zum Beispiel haben
0:28:13.710,0:28:19.510
wir eine SASS-File, eine SCSS-File, das[br]ist ein Superset von CSS, was sozusagen
0:28:19.510,0:28:23.360
kompiliert werden muss, damit es dann[br]eingefügt werden kann. Und das macht unser
0:28:23.360,0:28:27.260
Static Site Generator hier mit diesen[br]Befehlen automatisch mit toCSS macht es
0:28:27.260,0:28:32.160
das quasi zu CSS und macht es dann auch[br]gleich minifiziert und fingerprinted das.
0:28:32.160,0:28:35.160
Fingerprinting heißt, einfach für alle die[br]das nicht kennen, dass man quasi so eine
0:28:35.160,0:28:39.300
Prüfsumme generiert. Und dann, wenn wir[br]das alles hier einmal gemacht haben, durch
0:28:39.300,0:28:43.559
so eine Pipeline durchlaufen lassen haben,[br]können wir es hier direkt einfügen und
0:28:43.559,0:28:48.500
haben quasi einen relativ coolen Style-[br]Tag. der auch relativ viel Sicherheit und
0:28:48.500,0:28:51.791
Absicherung, bietet, dass irgendwas schief[br]laufen kann. Und das alles macht ihr hier
0:28:51.791,0:28:55.750
im Template und das ist halt in vielen[br]Content Management System deutlich
0:28:55.750,0:29:01.120
komplizierter und oft auch manchmal nur[br]mit Plugins zu lösen. Kurz umrissen, damit
0:29:01.120,0:29:04.241
ich es nicht ausgelassen habe. Ich habe[br]das meiste ja eigentlich schon erzählt.
0:29:04.241,0:29:07.980
Statische Assets kommen in den eigenen[br]Ordner und neben diesen ganzen CSS- und
0:29:07.980,0:29:11.140
JavaScript-Kram sind es Bilder und[br]Schriftarten, die da auch gerne
0:29:11.140,0:29:16.620
auftauchen. Die könnt ihr meistens dann[br]über absolute Pfade in eure Seite
0:29:16.620,0:29:21.320
einbinden und die meisten Static Site[br]Generators bieten euch auch Preprocessing.
0:29:21.320,0:29:25.860
Ich habe es hier mit CSS gezeigt. Es geht[br]auch mit Bildern und macht auch meistens
0:29:25.860,0:29:27.860
mit Bildern viel Sinn. Das heißt, ihr[br]müsst nicht irgendwie euer
0:29:27.860,0:29:31.800
Bilderminifizierungs-Tool aufrufen und da[br]eure Bilder einzeln reinschieben, sondern
0:29:31.800,0:29:34.830
ihr schiebt eure Bilder einfach cool in[br]den Content-Ordner rein, sagt dem Static
0:29:34.830,0:29:39.570
Site Generator einmal bau das bitte. Und[br]dann fallen am Ende für das Web optimierte
0:29:39.570,0:29:45.280
Bilder raus, die entsprechend schon eine[br]angenehme Größe haben. Wenn ihr jetzt
0:29:45.280,0:29:48.990
diesen ganzen Prozess einmal durchlaufen[br]habt, ihr euch sicher seid okay, jetzt
0:29:48.990,0:29:52.091
möchte ich das schon mal online stellen,[br]dann kommt ihr irgendwann an den Punkt, wo
0:29:52.091,0:29:56.780
ihr das auf den Server hochladen wollt. Es[br]ist im Gegensatz zu Content Management
0:29:56.780,0:30:01.800
Systemen hier super simpel und relativ[br]easy, weil ihr müsst einfach nur ein paar
0:30:01.800,0:30:05.060
Dateien hochladen. Ihr sagt einem Static[br]Site Generator meistens, dass er das
0:30:05.060,0:30:08.940
irgendwie bauen soll mit einem Build-[br]Command. Und wenn ich diesen Build-Command
0:30:08.940,0:30:13.641
ausgeführt habt, dann kommt da ein Haufen[br]statischer Dateien raus. Die schiebt ihr
0:30:13.641,0:30:16.498
dann meistens in ein sogenanntes Content[br]Delivery Network oder auf einen
0:30:16.498,0:30:20.880
statischen, also auf einen normalen[br]Webserver. Das ist beides das gleiche,
0:30:20.880,0:30:24.280
außer dass ein Content Delivery Network[br]halt, meistens auf viele Nodes verteilt
0:30:24.280,0:30:29.540
sind. Stichwort Skalierung. Und die Last[br]ist halt gering, weil es auch keine
0:30:29.540,0:30:32.750
Runtime gibt. Das heißt egal wo ihr das[br]hinschiebt, die Webserver haben damit
0:30:32.750,0:30:37.800
meistens nichts zu tun, weil die müssen im[br]Prinzip einfach nur die Seite auf die User
0:30:37.800,0:30:41.720
werfen, wenn die Seite aufgerufen wird.[br]Das ist halt ein super einfacher Prozess.
0:30:41.720,0:30:45.471
Viele Anbieter von so Content Delivery[br]Networks haben auch die Möglichkeit, eine
0:30:45.471,0:30:48.660
sogenannte Continuous Integration und[br]Continuous Delivery anzubieten. Das heißt,
0:30:48.660,0:30:52.470
da müsst ihr euch nicht mal ums Bauen[br]kümmern, da verknüpft ihr einfach das Git-
0:30:52.470,0:30:56.280
Repository und dann, wenn ihr was pusht,[br]dann kommt es automatisch sozusagen zum
0:30:56.280,0:30:59.650
Anbieter, wird zusammengebaut und deployt.[br]Das heißt es ist für euch super einfach,
0:30:59.650,0:31:04.130
ihr macht eine Änderung, pusht die einfach[br]und dann wird der Rest vom entsprechenden
0:31:04.130,0:31:07.250
Anbieter übernommen. Oder ihr baut euch[br]selbst eine CI oder eine Continuous
0:31:07.250,0:31:10.635
Delivery. Das geht natürlich auch. Das[br]wird dann entsprechend über Webhooks
0:31:10.635,0:31:17.864
getriggert. Kommen wir noch kurz zum[br]Vergleich. Es ist schon ein bisschen her,
0:31:17.864,0:31:21.220
aber ihr erinnert euch vielleicht noch an[br]den Anfang. Ich habe so ein paar Punkte
0:31:21.220,0:31:24.860
gemacht und die möchte ich mal ein[br]bisschen dem Static Site Generator
0:31:24.860,0:31:30.010
gegenüberstellen. Zum ersten waren es[br]Sicherheitsupdates. Ihr habt natürlich
0:31:30.010,0:31:32.850
hier kein Zugriff aufs Backend. Das heißt,[br]es wird natürlich erst mal schwierig, das
0:31:32.850,0:31:35.690
Content Management System, was hier[br]entsprechend nicht vorhanden ist,
0:31:35.690,0:31:39.880
natürlich anzugreifen. Das heißt, ihr[br]müsstet euch an den Webserver oder
0:31:39.880,0:31:43.400
ähnliches machen, um überhaupt Zugriff zu[br]bekommen. Und wenn die Seite einmal online
0:31:43.400,0:31:47.010
ist, dann braucht die auch erst mal keine[br]Sicherheitsupdates. Außer vielleicht, wenn
0:31:47.010,0:31:51.356
mal Frontend-Updates, wenn irgendwelche[br]bestimmten Standards auslaufen. Wenn ihr
0:31:51.356,0:31:54.300
eure Seite mit HTML 1.0 geschrieben habt,[br]dann wird die vielleicht irgendwann nicht
0:31:54.300,0:31:58.750
mehr dargestellt oder wenn ihr die für den[br]Internet Explorer optimiert habt. Das
0:31:58.750,0:32:02.850
Backend benötigt natürlich Wartung, auch[br]die Hosting Hardware und Software benötigt
0:32:02.850,0:32:05.390
Wartung. Das ist natürlich[br]selbstverständlich, aber es ist halt schon
0:32:05.390,0:32:10.370
deutlich geringerer Aufwand. Die Features[br]können überhaupt nicht wirklich kaputt
0:32:10.370,0:32:13.441
gehen, weil die Inhalte meistens über[br]Standards kommen, das heißt HTML ist
0:32:13.441,0:32:17.498
standardisiert, CSS ist standardisiert und[br]auch JavaScript ist standardisiert. Das
0:32:17.498,0:32:19.852
veraltet irgendwann, aber bis das[br]veraltet, habt ihr wahrscheinlich eure
0:32:19.852,0:32:24.890
Seite schon mal umgebaut und die[br]Portierung auf ein anderes System oder
0:32:24.890,0:32:28.120
auch von einem entsprechenden Content[br]Management System ist halt super einfach
0:32:28.120,0:32:32.230
weil diese Standards halt existieren. Die[br]Plugin-Hölle, die gibt es eigentlich so
0:32:32.230,0:32:40.230
nicht mehr wirklich. Es gibt Static Site[br]Generators, die halt entsprechend Plugins
0:32:40.230,0:32:44.351
euch bieten, aber die machen euch erst mal[br]keine Probleme, wenn die outdated sind und
0:32:44.351,0:32:48.600
ihr habt relativ viel Zeit auch[br]entsprechend dort eine eigene Lösung zu
0:32:48.600,0:32:52.630
implementieren oder auf eine andere Lösung[br]zu wechseln, weil diese Plugins halt nicht
0:32:52.630,0:32:55.794
irgendwo online liegen, sondern die sind[br]halt bei euch lokal und bauen nur die
0:32:55.794,0:32:59.880
Seite. Und wenn da mal was kaputt geht[br]oder outdated ist, dann ist das nicht
0:32:59.880,0:33:03.750
direkt für Nutzer sichtbar. Genau. Ich[br]habe eben schon kurz von Skalierung
0:33:03.750,0:33:07.351
gesprochen. Das ist halt bei Static Sites[br]super einfach, natürlich auch nicht
0:33:07.351,0:33:12.710
unendlich erweiterbar. Wenn so ein[br]Webserver irgendwie eine riesen
0:33:12.710,0:33:15.684
Menschenmasse abkriegt, dann geht der[br]irgendwann auch mal in die Knie. Aber dass
0:33:15.684,0:33:19.934
das passiert ist halt wesentlich später.[br]Auch cool ist halt, dass ihr im Content
0:33:19.934,0:33:23.980
Delivery Network die Seite verteilen könnt[br]auf verschiedene Nodes und euch so
0:33:23.980,0:33:29.730
entsprechend ein bisschen[br]Skalierungsaufwand ersparen könnt. Das
0:33:29.730,0:33:33.110
Ausrollen ist außerdem sehr einfach. Das[br]heißt, wenn ihr eine Änderung haben wollt,
0:33:33.110,0:33:36.350
dann müsst ihr nicht anfangen, irgendwie[br]Datenbanken zu migrieren, die PHP-Version
0:33:36.350,0:33:40.040
zu updaten, irgendwelche Plugins zu[br]enabeln, sondern ihr schiebt einfach die
0:33:40.040,0:33:43.780
Dateien auf den Server und es läuft. Eine[br]Datenbank gibt es natürlich in diesem Fall
0:33:43.780,0:33:46.940
dann auch entsprechend nicht. Die muss[br]nicht mit skalieren. Das einzige was es
0:33:46.940,0:33:50.420
geben kann, ich habe es vorhin gesagt,[br]wenn ihr z.B. eine API verwendet und ihr
0:33:50.420,0:33:53.690
wollt zum Beispiel auch die API nicht nur[br]vom Static Site Generator direkt beim
0:33:53.690,0:33:59.440
Rendering aufrufen lassen. Dazu komme ich[br]nämlich gleich, sondern auch über über
0:33:59.440,0:34:03.740
JavaScript z.B. wenn jemand die Seite[br]aufruft, dann muss diese API entsprechend
0:34:03.740,0:34:08.142
auch mit Skalieren und auch entsprechend[br]abgesichert sein. Aber das ist dann ein
0:34:08.142,0:34:11.500
Problem, mit dem man sich dann[br]beschäftigen muss. Und es gibt auch da ein
0:34:11.500,0:34:17.270
paar Vorteile, weswegen man trotzdem einen[br]Static Site Generator verwenden möchte.
0:34:17.270,0:34:20.300
Kommen wir jetzt mal noch ein bisschen zu[br]advancteren Themen. Ich habe gerade eben
0:34:20.300,0:34:23.599
schon gesagt, wie ist das denn, wenn ihr[br]eine API abrufen wollt? Wenn ihr zum
0:34:23.599,0:34:28.510
Beispiel eine statische Seite generiert,[br]aber trotzdem vielleicht Änderungen
0:34:28.510,0:34:32.290
schnell sichtbar haben wollt? Weil das[br]kann häufiger schon mal sein. Da gibt es
0:34:32.290,0:34:37.849
einen Prozess, der sozusagen sich darum[br]kümmert, dass wenn ihr eine Seite aufruft,
0:34:37.849,0:34:40.989
dass sie dann entsprechend mit Inhalt[br]gefüllt wird, dass sie sozusagen mit
0:34:40.989,0:34:44.879
JavaScript Wasser übergossen wird und dann[br]anfängt, auf einmal neue Inhalte
0:34:44.879,0:34:49.057
nachzuladen. Dieser Prozess nennt sich[br]Hydration. Da gibt es zwei verschiedene
0:34:49.057,0:34:53.970
Techniken, da gibt es einmal das partial[br]hydration. Das heißt, bestimmte Inhalte
0:34:53.970,0:34:58.663
der Seite werden einfach nur sozusagen mit[br]Dynamik versehen, mit JavaScript. Das
0:34:58.663,0:35:01.712
heißt, ihr seht es auch unten in der[br]Grafik: Die Seite läd, dann wird die Seite
0:35:01.712,0:35:04.976
aufgerufen, dann hat die ein bisschen[br]Inhalt, der ist hier halt noch orange und
0:35:04.976,0:35:07.819
dann kommt die Hydration in diesem[br]orangenen Bereich und hängt sich da rein,
0:35:07.819,0:35:11.389
sozusagen mit JavaScript und lädt[br]vielleicht Inhalte nach. Und auf einmal
0:35:11.389,0:35:14.050
sind da plötzlich drei Blogposts, weil[br]vielleicht der Rendering Prozess noch
0:35:14.050,0:35:18.300
nicht hinterher gekommen ist, weil die den[br]halt gerade just veröffentlicht ist. Oder
0:35:18.300,0:35:23.319
ihr habt eine ganz hitzige Kommentarspalte[br]und viel zu rendern, das lohnt sich jetzt
0:35:23.319,0:35:27.114
einfach mal gerade nicht. Ihr könnt es[br]auch mit lazy Hydration machen. Das hat
0:35:27.114,0:35:32.099
sogar noch den Vorteil, dass ihr[br]entsprechende Inhalte nur hydrated, wenn
0:35:32.099,0:35:35.130
sie überhaupt in den Sichtbereich kommen.[br]Das ist, wenn ihr viel Hydration nutzen
0:35:35.130,0:35:38.839
wollt, sinnvoll, weil ihr dann nicht[br]anfangt, dem Client irgendwie mit ganz
0:35:38.839,0:35:43.411
viel JavaScript um die Ohren zu werfen.[br]So, wir kommen auch langsam Richtung Ende,
0:35:43.411,0:35:48.695
keine Sorge. Wir haben hier noch die[br]deferred Static Site Generation. Das ist
0:35:48.695,0:35:55.011
ein cooler Mittelweg, wenn ihr zum[br]Beispiel sagen wollt: Okay, ich hätte gern
0:35:55.011,0:35:57.739
trotzdem noch den Server und ich hätte[br]gerne schnelles Rendering und es soll
0:35:57.739,0:36:02.190
alles schnell bereitgestellt werden. Ist[br]das hier ein cooler Weg. Ihr habt einen
0:36:02.190,0:36:05.690
Server im Hintergrund, der quasi wie ein[br]CMS läuft. Hier ist es zum Beispiel unten
0:36:05.690,0:36:08.766
in der Grafik von Gatsby, und ich sehe,[br]die Quelle ist abgeschnitten. Das sollte
0:36:08.766,0:36:12.609
vielleicht mal fixen danach ist auch egal.[br]Ich habe jetzt gesagt von gatsby.org ist
0:36:12.609,0:36:18.165
das gerade und dieser Server, der läuft im[br]Hintergrund und liefert die Seite aus. Und
0:36:18.165,0:36:20.764
jedes Mal, wenn diese Seite ausgeliefert[br]wird und es gab eine Inhalts-Änderung,
0:36:20.764,0:36:24.579
dann wird ein Abbild automatisch[br]generiert. Das wird im Cache abgelegt und
0:36:24.579,0:36:27.866
wenn die nächste Person kommt, kriegt die[br]nur den Cache zurück geworfen. Das heißt
0:36:27.866,0:36:33.349
im Prinzip habt ihr immer ein Abbild, was[br]sozusagen inkrementell mitgeneriert wird
0:36:33.349,0:36:36.627
und es fühlt sich an wie eine statische[br]Seite, skaliert auch ähnlich. Aber ihr
0:36:36.627,0:36:38.749
habt eben immer noch die Dynamik des[br]Servers hinten dran und könnt schnell auf
0:36:38.749,0:36:43.710
Änderungen reagieren. Wenn ihr sagt, okay,[br]ich will mein Content Management System
0:36:43.710,0:36:48.930
nicht komplett aufgeben, dann gibt es auch[br]so coole hybride Ansätze und auch Plugins
0:36:48.930,0:36:52.440
für viele Content Management Systeme. Seid[br]gewarnt, ihr nehmt natürlich die vielen
0:36:52.440,0:36:55.809
Nachteile des Backend-Servers dann mit[br]euch. Aber wenn ihr sagt, ihr wollt nur
0:36:55.809,0:36:58.599
skalieren und Sicherheitsupdates sind für[br]euch kein Problem, ist das vielleicht für
0:36:58.599,0:37:05.720
euch ein Ansatz. Ihr habt auch dort die[br]Möglichkeit, entsprechend dafür zu sorgen,
0:37:05.720,0:37:11.590
dass auch die Leute weiterhin die Seite[br]pflegen können. Mir fällt auch auf, dass
0:37:11.590,0:37:15.930
da eine Slide irgendwie fehlt mit dem mit[br]dem Workflowwechsel, deswegen baue ich das
0:37:15.930,0:37:19.859
hier schnell ein. Die Leute können halt[br]weiterhin sozusagen über eure Seite
0:37:19.859,0:37:23.854
entsprechend den Content pflegen für eure[br]Redakteure. Wenn ihr ein größeres Team
0:37:23.854,0:37:29.210
habt, ändert sich nichts. Und so habt ihr[br]weiterhin alles im Griff und habt trotzdem
0:37:29.210,0:37:32.640
die Möglichkeit, die Dinge statisch zu[br]skalieren und teilweise bieten auch die
0:37:32.640,0:37:35.180
Content Management Systeme die[br]Möglichkeit, das in ein Content Delivery
0:37:35.180,0:37:38.880
Network zu schieben. Das heißt noch nicht[br]mal euer Server hat eine wirkliche Last
0:37:38.880,0:37:42.834
und der Server, auf dem die Seite liegt,[br]ist kein Angriffsvektor für euer Content
0:37:42.834,0:37:47.489
Management System. Kurz als Ergänzung,[br]weil das vorhin gefehlt hat aus
0:37:47.489,0:37:52.708
irgendeinem Grund: Wenn ihr ein Content[br]Management System habt, bietet es meistens
0:37:52.708,0:37:57.589
auch eine API um dort Inhalte abzurufen.[br]Das heißt, wenn ihr entsprechend WordPress
0:37:57.589,0:38:00.770
oder ähnliches habt, hat es meistens eine[br]Rest API und ihr könnt auch die natürlich
0:38:00.770,0:38:06.009
mit dem Static Site Generator anzapfen, um[br]entsprechend Inhalte abzurufen und sie
0:38:06.009,0:38:09.759
dann rein zu generieren. Das heißt, es ist[br]für euren Workflow eigentlich ganz cool,
0:38:09.759,0:38:12.420
weil ihr da nicht viel ändern müsst. Also[br]für eure Redakteure oder ähnliches ändert
0:38:12.420,0:38:15.319
sich nichts, sondern es generiert sich[br]einfach eine Seite hintendran mit und das
0:38:15.319,0:38:20.170
Editing Frontend bleibt quasi gleich. NEOS[br]ist übrigens auch ein bekanntes Beispiel.
0:38:20.170,0:38:24.559
Ist ein bisschen anders. Das generiert[br]komplett statische Seiten, ist aber auch
0:38:24.559,0:38:28.230
TYPO3 ähnlich. Das heißt für kleinere[br]Installationen vielleicht nicht so ganz
0:38:28.230,0:38:33.660
geeignet. So, das war jetzt viel Inhalt.[br]Kommen wir zum Fazit. Sind Static Site
0:38:33.660,0:38:39.089
Generators die Lösung für alles? Ist das[br]irgendwie das, was man einfach die Magie,
0:38:39.089,0:38:42.059
die man über alles drüber gießen kann und[br]dann funktioniert alles? Nein, das sind
0:38:42.059,0:38:44.579
sie eigentlich nicht. Ich will ja auch[br]nicht Content Management Systeme
0:38:44.579,0:38:49.089
runtermachen, aber sie sind eine coole[br]Möglichkeit, um euch hohe Flexibilität zu
0:38:49.089,0:38:52.089
bieten, um euch hohe Skalierbarkeit zu[br]bieten und euch zum Beispiel auch die
0:38:52.089,0:38:56.753
Wartung zu nehmen. Wenn ihr sagt, ihr baut[br]ein kleines Blog zum Beispiel, da habt ihr
0:38:56.753,0:39:00.160
ja keine große Instanz von WordPress,[br]sondern ihr schreibt euer Blog, ihr postet
0:39:00.160,0:39:03.842
den Eintrag, dann geht er online und dann[br]müsst ihr euch da keinen Kopf drum machen.
0:39:03.842,0:39:08.630
Der liegt irgendwo. Und wenn ihr[br]Aufmerksamkeit mit eurem Inhalt generiert,
0:39:08.630,0:39:15.290
dann ist das für euch kein Problem, weil[br]der Blog skaliert dann ordentlich mit. Und
0:39:15.290,0:39:17.743
ihr habt auch hohe[br]Aufrufgeschwindigkeiten. Was ich übrigens
0:39:17.743,0:39:21.289
vorhin noch nicht erwähnt habe, was auch[br]sehr cool ist, ist, dass ihr natürlich
0:39:21.289,0:39:24.109
sofort mit dem Inhalt da seid. Das heißt,[br]ihr müsst es nicht dynamisch nach
0:39:24.109,0:39:27.702
generieren. Und wenn ihr zum Beispiel[br]jemanden oder eine Suchmaschine habt, die
0:39:27.702,0:39:30.935
Inhalte in der Seite sucht, dann sind die[br]Inhalte auch sofort da. Oder zum Beispiel
0:39:30.935,0:39:34.669
eine Person mit Screenreader. Dann hat sie[br]auch sofort ein statisches Abbild der
0:39:34.669,0:39:37.580
Seite, wo nichts irgendwie noch komisch[br]mit Magie nachgeneriert wird und die
0:39:37.580,0:39:42.319
Person kann die Seite auch sehr schnell[br]und ordentlich durchsuchen. In diesem
0:39:42.319,0:39:47.150
Sinne vielen Dank fürs Zuschauen oder[br]Zuhören oder wie auch immer und ich bin es
0:39:47.150,0:39:49.869
auf jeden Fall mal gespannt auf eure[br]Fragen und hoffe, ich habe euch nicht
0:39:49.869,0:39:54.109
allzu sehr mit dem ganzen Inhalt[br]erschlagen. Und ja, cool.
0:39:54.109,0:39:59.940
Herald: Ja, danke für diesen super[br]Vortrag. Wenn ihr jetzt noch Fragen habt,
0:39:59.940,0:40:05.690
könnt ihr die gerne auf Twitter und[br]Mastodon stellen unter dem Hashtag
0:40:05.690,0:40:13.945
#rC3cwtv, also rC3 Chaos West TV. Unser[br]Signal Angel wird sie dann mir schicken,
0:40:13.945,0:40:18.859
damit ich sie stellen kann. Gleich am[br]Anfang ist die Frage gestellt worden,
0:40:18.859,0:40:23.529
können auch Videos eingebettet werden?[br]Vielleicht kann man noch darstellen, was
0:40:23.529,0:40:28.669
mit Static Sites geht und was nicht?[br]Avocadoom: Du schneidest bei mir manchmal
0:40:28.669,0:40:30.999
mit dem Audio ein bisschen ab, aber ich[br]glaube, ich habe das meiste von der Frage
0:40:30.999,0:40:37.159
tatsächlich verstanden. Die Videos können[br]tatsächlich eingebettet werden. Ich glaube
0:40:37.159,0:40:40.524
Tooling, um Videos zu optimieren, gibt es[br]meistens nicht. Aber natürlich habt ihr
0:40:40.524,0:40:43.890
die Möglichkeit, wie bei allen anderen[br]statischen Assets auch, dass ihr einfach
0:40:43.890,0:40:47.319
die Videos auf dem Webserver mit[br]hochladet. Meistens in diese Static
0:40:47.319,0:40:51.880
Directory sozusagen, wenn euch das lieb[br]ist und sie da entsprechend einbettet und
0:40:51.880,0:40:57.809
dann dort sozusagen mit Video Elementen im[br]HTML oder mit einem Video Player Library
0:40:57.809,0:41:01.930
in JavaScript entsprechend diese Dinge[br]einbettet. Es gibt natürlich auch die
0:41:01.930,0:41:04.569
Möglichkeit, dass ihr anfangt irgendwie[br]YouTube oder Vimeo oder was auch immer mit
0:41:04.569,0:41:08.439
der API anzuzapfen und so entsprechend[br]Videos einbettet. Also da sind euch die
0:41:08.439,0:41:13.009
Möglichkeiten relativ offen. Ihr müsst nur[br]ein bisschen darauf gefasst sein, dass
0:41:13.009,0:41:16.729
natürlich Videos eine hohe Last für den[br]Webserver bieten. Das heißt, da fließen
0:41:16.729,0:41:22.029
relativ viele Daten, aber in der Regel ist[br]es auch kein großes Problem.
0:41:22.029,0:41:26.329
Herald: Danke! Könntest du noch ein[br]Beispiel bringen, was man nicht mit einer
0:41:26.329,0:41:31.380
statischen Seite realisieren kann.[br]Avocadoom: Nicht mit einer statischen
0:41:31.380,0:41:36.249
Seite realisieren? Im Prinzip kann man[br]sehr viel mit einer statischen Seite
0:41:36.249,0:41:40.144
realisieren. Was man natürlich nicht[br]realisieren sollte oder könnte ist
0:41:40.144,0:41:44.396
natürlich, sind Seiten mit sehr viel[br]dynamischen Inhalt, sage ich mal so. Also
0:41:44.396,0:41:47.079
wenn ihr zum Beispiel jetzt anfangt, ich[br]habe es vorhin mit der hitzigen
0:41:47.079,0:41:50.483
Kommentarspalte gesagt, wenn ihr jetzt[br]irgendwas habt, wo ihr viele Kommentare
0:41:50.483,0:41:55.299
drin habt und ihr wollt da nicht viel mit[br]JavaScript oder so arbeiten, sondern das
0:41:55.299,0:41:58.700
relativ statisch lassen, dann werdet ihr[br]schnell auf das Problem stoßen, dass
0:41:58.700,0:42:02.029
nicht, wenn jemand alle 10 Sekunden[br]kommentiert, dass ihr dann anfangen könnt,
0:42:02.029,0:42:06.989
die Seite neu zu rendern, weil das queued[br]dann ewig ab und irgendwann zieht eure
0:42:06.989,0:42:09.759
Seite nur noch so hinterher mit dem[br]Rendering oder das Rendering wird dauernd
0:42:09.759,0:42:14.119
abgebrochen. Das heißt, wenn ihr sehr,[br]sehr, sehr viele dynamische Inhalte habt,
0:42:14.119,0:42:17.196
dann könnte es tatsächlich irgendwann ein[br]Problem werden, das zu realisieren. Aber
0:42:17.196,0:42:20.059
ansonsten kann man eigentlich relativ viel[br]mit statischen Seiten realisieren.
0:42:20.059,0:42:25.269
Herald: Dann noch eine Frage zur[br]Geschwindigkeit. Es kommt dann öfter vor,
0:42:25.269,0:42:30.564
dass man Kilobytes an Frameworkcode[br]preloaden muss, bevor die Seite überhaupt
0:42:30.564,0:42:35.210
reagiert. Gibt es da Tipps, wie man die[br]Ladezeit bei static sites gering hält?
0:42:35.210,0:42:38.587
Avocadoom: Da gibt es tatsächlich Tipps,[br]also wenn man zum Beispiel mit einem
0:42:38.587,0:42:42.310
JavaScript Static Site Generator arbeitet,[br]wie Gatsby oder so, gibt es dort die
0:42:42.310,0:42:46.989
Möglichkeiten, dass man, wenn man dort ein[br]Framework wie React einbindet, das sie
0:42:46.989,0:42:51.049
sogenannte Tree shaking mit sich bringen.[br]Das heißt im Prinzip, dass sie sozusagen
0:42:51.049,0:42:55.217
an dem Dependency-Baum, den man aufbaut,[br]um es mal bildlich zu beschreiben,
0:42:55.217,0:42:57.880
schütteln, d.h. sie schütteln da so lange[br]dran, bis nur noch das Notwendigste
0:42:57.880,0:43:02.440
dranhängt und werfen den Rest des[br]Frameworkcodes weg. Das heißt, ihr habt am
0:43:02.440,0:43:07.628
Ende ein gebündeltes JavaScript, was quasi[br]relativ minimal ist. Natürlich ist es
0:43:07.628,0:43:10.891
trotzdem immer noch ein bisschen[br]Frameworkcode. Viele bieten auch
0:43:10.891,0:43:15.300
sogenanntes Code Splitting an, das heißt[br]im Prinzip, dass ihr nur den für die Seite
0:43:15.300,0:43:19.220
notwendigen Code ladet. Und wenn ihr eine[br]neue Seite ladet, dann ladet ihr den
0:43:19.220,0:43:23.109
restlichen notwendigen Code. Das kann man[br]auch manuell machen. Ich habe es ja von
0:43:23.109,0:43:27.849
darmstadt.ccc.de genannt gehabt. Da haben[br]wir es tatsächlich so gemacht, dass wir
0:43:27.849,0:43:31.780
den Kalender mit JavaScript realisiert[br]haben, weil wir dort iCal parsen und das
0:43:31.780,0:43:35.754
ist auch relativ dynamisch. Und dort ist[br]es tatsächlich so, dass wir diesen Code
0:43:35.754,0:43:39.575
nur laden, wenn die entsprechende Seite[br]aufgerufen wird mit einer entsprechenden
0:43:39.575,0:43:42.846
Templatevariable, die dann sozusagen auf[br]wahr gesetzt wird. Und dann wird dieses
0:43:42.846,0:43:46.607
JavaScript eingebunden. Das heißt im[br]Prinzip die Dinge, die man dann da
0:43:46.631,0:43:49.690
mitnehmen kann, ist zum einen halt es[br]manuell aufzuteilen, nicht einfach nur die
0:43:49.690,0:43:55.010
Binaries irgendwie aus den Release Renders[br]oder aus den Release Builds quasi einfach
0:43:55.010,0:43:57.900
in den Header einzubinden, sondern Bundler[br]zu verwenden, auch wenn es ein bisschen
0:43:57.900,0:44:03.069
schmerzhaft ist oder halt auch einfach das[br]Ganze manuell aufzuteilen.
0:44:03.069,0:44:06.920
Herald: Danke! Dann noch eine Frage, was[br]du von verschiedenen Frameworks...
0:44:06.920,0:44:11.710
Avocadoom: Du bist gerade super leise,[br]kannst du gerade mal gucken ob du...
0:44:11.710,0:44:14.770
Herald: Geht es besser?[br]Avocadoom: Ähh ja, naja, es geht.
0:44:14.770,0:44:19.500
Herald: Okay, was ist deine Meinung zu[br]headless CMS für static site generator?
0:44:19.500,0:44:25.069
Avocadoom: Tatsächlich eine sehr gute.[br]Headless CMS ist tatsächlich was, wo ich
0:44:25.069,0:44:29.859
auch in gewisser Weise die Zukunft sehe[br]und viele etablierte CMS Lösungen arbeiten
0:44:29.859,0:44:33.139
natürlich auch auf diesen Punkt hin, dass[br]sie zum headless CMS werden können oder
0:44:33.139,0:44:37.960
zumindest zum teilweise headless CMS. Wenn[br]ihr nur 'ne static site habt, ist es
0:44:37.960,0:44:42.229
natürlich erst mal nur so die halbe Miete,[br]aber da ist es halt auch schon ganz cool.
0:44:42.229,0:44:46.059
Aber was halt vor allem der Vorteil ist,[br]wenn ihr anfangt, die Inhalte noch auf
0:44:46.059,0:44:49.738
weitere Endgeräte zu bringen. Das heißt[br]zum Beispiel, wenn ihr jetzt eine
0:44:49.738,0:44:52.920
Newsseite seid und ihr baut euch jetzt[br]eine mobile App, dann müsst ihr nicht noch
0:44:52.920,0:44:57.476
eine API dafür schreiben, sondern die API[br]liegt halt einfach schon da. Und das
0:44:57.476,0:45:02.230
bietet euch natürlich viele Vorteile. Das[br]heißt, wenn ihr verschiedene Zielgeräte
0:45:02.230,0:45:04.960
damit ansprechen wollt, habt ihr halt[br]sofort eine API und die API ist halt auch
0:45:04.960,0:45:08.839
unsere einzige source of truth. Das heißt,[br]die könnt ihr pflegen, da könnt ihr dafür
0:45:08.839,0:45:13.066
sorgen, dass sie ordentlich läuft und habt[br]so die Möglichkeit halt auch das
0:45:13.066,0:45:16.399
entsprechend in andere Services mit[br]einzubinden. Oder auch, weiß ich nicht,
0:45:16.399,0:45:19.799
ein Sprachassistentenskill, was weiß ich.[br]Es läuft halt alles auf die selbe source
0:45:19.799,0:45:24.499
hinaus und ich finde das sehr gut. Das ist[br]eine sehr gute Lösung. Auf jeden Fall.
0:45:24.499,0:45:28.880
Herald: Cool. Was ist deine Einschätzung[br]zu Graph?
0:45:28.880,0:45:31.869
Avocadoom: Du bist wieder super leise,[br]sorry.
0:45:31.869,0:45:36.399
Herald: Was ist deine Einschätzung zu[br]Graph, du hast es ja vorher einmal kurz
0:45:36.399,0:45:40.220
erwähnt.[br]Avocadoom: Meine Meinung zu, jetzt warst
0:45:40.220,0:45:43.366
du wieder laut noch mal..[br]Herald: Was ist deine Einschätzung zu
0:45:43.366,0:45:47.289
Graph?[br]Avocadoom: Zu Graph? Meine Einschätzung zu
0:45:47.289,0:45:52.720
Graph ist tatsächlich auch eine relativ[br]gute. Graph arbeitet ja an sich nicht
0:45:52.720,0:45:56.239
unbedingt direkt mit static site[br]generation, sondern cached das ganze, ja,
0:45:56.239,0:46:00.849
in so Blöcken quasi, also im Prinzip[br]werden keine Seiten raus gerendert,
0:46:00.849,0:46:05.770
sondern die Seite speichert sich oder das[br]CMS speichert sich quasi so Blöcke der
0:46:05.770,0:46:09.604
Seite ab und fügt die am Ende nochmal kurz[br]mit PHP zusammen. Es gibt aber auch die
0:46:09.604,0:46:13.882
Möglichkeit, das statisch zu machen, aber[br]so oder so ist es ganz sinnvoll. Graph
0:46:13.882,0:46:17.119
legt damit ja so ein bisschen so eine[br]Mitte, weil es ja aus diesem Bereich der
0:46:17.119,0:46:20.070
flat file Content Management Systeme[br]bekommt. Das heißt, für alle, die das
0:46:20.070,0:46:23.640
nicht kennen. Das sind Content Management[br]Systeme, die über das Dateisystem arbeiten
0:46:23.640,0:46:28.039
und nicht über eine Datenbank. Und ja, es[br]ist auf jeden Fall ein cooler Mittelweg.
0:46:28.039,0:46:32.960
Es ist halt trotzdem ein System, was[br]Sicherheitsrisiken bieten kann und wo man
0:46:32.960,0:46:36.109
natürlich immer ein Backend mit schleppt.[br]Aber es bietet halt auch hohe Flexibilität
0:46:36.109,0:46:39.509
und Performance halt gerade dadurch, weil[br]es mit diesem Cachingmechanismus arbeitet
0:46:39.509,0:46:45.235
oder über ein Plugin sogar mit static site[br]rendering. Und ja, es ist auch eine sehr
0:46:45.235,0:46:48.232
positive Meinung, die ich dazu habe und es[br]auf jeden Fall ein cooler Einstieg, wenn
0:46:48.232,0:46:52.499
man mal so ein bisschen in diese Richtung[br]gehen will von: Wie sieht das alles aus,
0:46:52.499,0:46:57.060
wenn ich was sozusagen einfach statisch[br]mache und nicht so krass hoch dynamisch
0:46:57.060,0:47:00.150
und vor allem wenn ich mal eine große[br]Datenbank wegwerfen will.
0:47:00.150,0:47:05.270
Herald: Die nächste Frage wär: Ist aus[br]deiner Sicht PHP noch zeitgemäß?
0:47:05.270,0:47:10.940
Avocadoom: Ja, PHP ist zeitgemäß.[br]Tatsächlich weiß ich, dass viele PHP total
0:47:10.940,0:47:17.072
abhaten, aber ich finde der PHP-Entwickler[br]oder der PHP-Schöpfer, ich weiß seinen
0:47:17.072,0:47:20.640
Namen gerade nicht. Ich habe mal einen[br]Talk von dem gesehen, vor einem Jahr
0:47:20.646,0:47:24.030
glaube ich ungefähr. Und er gibt sich halt[br]große Mühe bzw. sein Team gibt sich große
0:47:24.030,0:47:30.412
Mühe, dass die Sprache immer moderner[br]wird, immer aktueller. Klar ist es nicht
0:47:30.412,0:47:35.077
die schönste Sprache, mit Sicherheit, aber[br]PHP ist halt immer noch in seiner
0:47:35.077,0:47:40.680
Möglichkeit, dass man es einfach relativ[br]easy in HTML z.B. einbauen kann oder
0:47:40.680,0:47:45.450
dadurch, dass es fast auf jedem Webserver[br]läuft, eigentlich fast ungeschlagen. Und
0:47:45.450,0:47:49.569
ja, ich weiß, es ist wirklich von der[br]reinen Theorieperspektive mit Sicherheit
0:47:49.569,0:47:54.140
nicht die schönste Sprache, aber es ist[br]definitiv immer noch zeitgemäß.
0:47:54.140,0:48:09.928
Herald: So, im Chat, wie IRC, der... Okay,[br]geht besser?
0:48:09.928,0:48:14.413
Avocadoom: Von wem jetzt, von mir schon?[br]Ah, okay, das erklärt auch, warum er immer
0:48:14.413,0:48:20.151
wieder leise ist. Aber ja, gerade[br]übrigens, ich überbrück' das mal ein
0:48:20.151,0:48:23.687
bisschen, gerade mit dieser ganzen[br]Geschichte, mit PHP 7 und PHP 8 sind ja
0:48:23.687,0:48:27.079
viele Änderungen reingekommen, die der[br]Sprache einen ordentlich modernen Anstrich
0:48:27.079,0:48:32.240
verleihen. Und es gibt auch immer wieder[br]neue Frameworks und Ansätze, die PHP-
0:48:32.240,0:48:38.480
Entwicklung immer leichter machen und[br]immer moderner. Und ich denke schon, dass
0:48:38.480,0:48:44.002
das auch Zukunft hat.[br]Herald: So, ich hoffe, man hört mich?
0:48:44.002,0:48:46.532
Avocadoom: Ja, man hört dich.[br]Herald: Wie sieht es mit der
0:48:46.532,0:48:50.529
Kompatibilität für Smartphones bei[br]statischen Seiten aus?
0:48:50.529,0:48:54.099
Avocadoom: Da ändert sich eigentlich[br]nichts, also es ändert sich ja quasi nur
0:48:54.099,0:48:59.680
was wie die Seite ausliefert. Aber wie die[br]Seite dargestellt wird, ist quasi ja für
0:48:59.680,0:49:05.329
euer Smartphone das gleiche. Das heißt[br]nur, wie die Seite quasi vorher
0:49:05.329,0:49:09.533
zusammengebaut wird und so, das ist quasi[br]das wichtige, was sich ändert. Aber wie
0:49:09.533,0:49:13.047
die Seite dann dargestellt wird also mit[br]JavaScript und CSS und so. Das bleibt ja
0:49:13.047,0:49:18.119
das gleiche. Wenn ihr jetzt noch ein[br]Content Management System habt, wo ihr so
0:49:18.119,0:49:21.973
eine spezielle mobile Seite habt, was man[br]in der Regel heute nicht mehr haben
0:49:21.973,0:49:25.910
sollte, weil man das inzwischen gut mit[br]CSS und Co lösen kann, dann habt ihr
0:49:25.910,0:49:29.130
vielleicht ein Problem, dass ihr zwei[br]Seiten bauen müsst, aber ansonsten ist
0:49:29.130,0:49:34.660
eigentlich die Kompatibilität mit[br]Smartphones ziemlich super und die meisten
0:49:34.660,0:49:38.660
Smartphones können auch, also da können[br]die eigentlich alle auch JavaScript
0:49:38.660,0:49:41.940
vollständig ausführen, die haben ja mit[br]Safari oder Chrome oder was auch immer
0:49:41.940,0:49:46.720
eine vollständige JavaScript-Engine mit[br]drinnen, also die Kompatibilität ist
0:49:46.720,0:49:49.880
eigentlich komplett gegeben und viele[br]Newsportale und so arbeiten ja schon mit
0:49:49.880,0:49:54.509
diesen Techniken, das heißt dass ist[br]eigentlich auch schon etabliert und
0:49:54.509,0:50:00.278
getestet, dass das läuft.[br]Herald: Noch eine Frage, so einem Chat wie
0:50:00.278,0:50:05.038
der IRC. Wäre es da eine gute Idee, eine[br]statische Seite daraus zu machen, wenn der
0:50:05.038,0:50:09.039
Chat dass einzige ist, was man machen[br]will? Weil so wie ich das verstehe, wäre
0:50:09.039,0:50:12.539
es dafür ja eher mehr Last für den Server,[br]oder?
0:50:12.539,0:50:17.275
Avocadoom: Ja, das ist wie gesagt das[br]gleiche Beispiel mit der Kommentarspalte.
0:50:17.275,0:50:20.200
Wenn ihr dynamischen Inhalte wie ein Chat[br]habt, dann wollte ihr die nicht immer
0:50:20.200,0:50:25.725
statisch rendern, weil die ändern sich ja[br]ständig. Also das sind ja Inhalte, die
0:50:25.725,0:50:29.504
immer immer wieder sozusagen entsprechend[br]sich ändern. Das heißt, was ihr da machen
0:50:29.504,0:50:34.478
könnt, wäre zum Beispiel ihr baut so eine[br]Frontend Anwendung und macht es nur mit
0:50:34.478,0:50:37.300
JavaScript und zieht euch das darüber.[br]Aber das ist nicht das, was ich unter
0:50:37.300,0:50:40.739
einer statischen Seite sozusagen verstehe,[br]weil eine statische Seite ist für mich
0:50:40.739,0:50:44.831
was, wo der Inhalt quasi schon generiert[br]ist und in HTML vorliegt, wenn ihr die
0:50:44.831,0:50:48.450
Seite aufruft. Also da gibt es eigentlich[br]nur die zwei Wege: Entweder man macht das
0:50:48.450,0:50:52.719
komplett über eine Backend Anwendung oder[br]man macht es komplett im Frontend, aber
0:50:52.719,0:50:57.660
man kann halt sozusagen also das halt[br]vorher auszuliefern in gegossenes HTML,
0:50:57.660,0:51:02.109
was sozusagen Accessibility Tools oder[br]eine Suchmaschine lesen können, dass ist
0:51:02.109,0:51:05.763
eigentlich eher unvorteilhaft, weil dann[br]müsste man alle paar Sekunden die Seite
0:51:05.763,0:51:10.440
neu rendern und das ist ja viel zu viel[br]Last.
0:51:10.440,0:51:15.492
Herald: Ja, braucht man dann für eine[br]statische Seite mehr Leistung beim Client?
0:51:15.492,0:51:20.787
Avocadoom: Nein, in der Regel eigentlich[br]nicht. Also viele Seiten setzen
0:51:20.787,0:51:23.959
heutzutage, also das Einzige was halt viel[br]Leistung braucht ist JavaScript. Aber
0:51:23.959,0:51:29.989
viele Seiten setzen ja heutzutage schon[br]auf JavaScript, auch wenn sie vom
0:51:29.989,0:51:33.140
Conten tManagement System kommen. Und das[br]JavaScript, was zum Beispiel verwendet
0:51:33.140,0:51:37.849
wird, um Hydration zu betreiben, ist nicht[br]unbedingt etwas, was die Leistung zieht.
0:51:37.849,0:51:41.929
Also der Leistungsunterschiede ist[br]eigentlich quasi gleich Null. Und wenn du
0:51:41.929,0:51:44.609
zum Beispiel komplett auf JavaScript[br]verzichtet, dann habt ihr sogar noch einen
0:51:44.609,0:51:49.330
Leistungsboost eigentlich in der Regel.[br]Außer ihr schreibt jetzt komplett
0:51:49.330,0:51:52.003
verrücktes CSS, aber das ist dann auch[br]wieder eine Sache die euch auch mit
0:51:52.003,0:51:54.369
Content Management Systemen passieren[br]kann. Also eigentlich ist der
0:51:54.369,0:51:59.749
Leistungsunterschiede der gleiche bzw.[br]vielleicht habt ihr sogar mehr Leistung
0:51:59.749,0:52:04.029
wenn in eine statische Seite baut. Je[br]nachdem wie viel JavaScript ihr sozusagen
0:52:04.029,0:52:08.009
in eure Seite einfügt. Wenn ihr da jetzt[br]natürlich das große 3D Rendering, ich zieh
0:52:08.009,0:52:11.050
mir ständig Content rein JavaScript baut,[br]dann hat sie natürlich mehr
0:52:11.050,0:52:13.759
Leistungsverbrauch, aber das ist nicht[br]zwingend ein Problem einer statischen
0:52:13.759,0:52:17.296
Seite.[br]Herald: Du hast ja zum Ende von deinem
0:52:17.296,0:52:20.940
Vortrag noch Barrierefreiheit[br]angesprochen. Muss man da auf irgendwas
0:52:20.940,0:52:25.969
achten, dass es dann für Screenreader und[br]so gut lesbar ist?
0:52:25.969,0:52:30.411
Avocadoom: Also was ich mir dabei gedacht[br]habe, ist im Prinzip, dass so ein
0:52:30.411,0:52:34.440
Screenreader natürlich einfach glaube ich[br]besser damit klarkommt, wenn er schon
0:52:34.440,0:52:40.077
vorher das ganze HTML vorliegen hat. Was[br]ich halt prinzipiell beachten würde, das
0:52:40.077,0:52:45.230
einfach die generellen Accessability-[br]Guidelines zu beachten sind, von der W3C
0:52:45.230,0:52:49.029
und ähnlichen, das ist sowieso immer klar.[br]Das sollte man auch generell, wenn man
0:52:49.029,0:52:53.031
eine Seite mit was auch immer baut machen.[br]Aber was ich sehr gut finde ist halt, dass
0:52:53.031,0:52:57.069
wenn man zum Beispiel jetzt kein[br]JavaScript enabed hat, weil man damit
0:52:57.069,0:53:02.630
vielleicht nicht klarkommt, wenn man[br]Accessability Tools hat und nur die Seite
0:53:02.630,0:53:05.869
statisch rausgerendert sehen möchte, ohne[br]irgendwelche Hydration oder ähnliches,
0:53:05.869,0:53:10.769
dann kann man halt mit den Accessability[br]Tools quasi relativ easy darüber gehen.
0:53:10.769,0:53:13.359
Und beachten muss man dabei eigentlich[br]nichts Spezielles. Ich sehe es einfach nur
0:53:13.359,0:53:20.170
als Vorteil, wenn das HTML quasi direkt[br]vorliegt und so ein Tool sich nicht darum
0:53:20.170,0:53:23.607
kümmern muss, dass irgendwo noch was[br]dynamisch hinzugefügt wird, sondern
0:53:23.607,0:53:26.900
Screenreader direkt anfangen kann, das[br]einmal von oben nach unten abzuarbeiten.
0:53:26.900,0:53:29.920
Also beachten muss man dabei nichts. Ich[br]habe das mehr erwähnt, weil ich das
0:53:29.920,0:53:35.450
einfach sehr sinnvoll finde, dass man[br]damit mehr Leute sozusagen auch targeten
0:53:35.450,0:53:40.259
kann und dass man dafür sorgen kann, dass[br]man nicht darauf achten muss, dass die
0:53:40.259,0:53:44.280
jetzt vielleicht irgendein Tool verwenden,[br]was mit ich "füge hier mal mit Dynamik
0:53:44.280,0:53:47.420
ganz viel Spaß hinzu" irgendwie nicht klar[br]kommen kann.
0:53:47.420,0:53:52.369
Herald: Ah ja, cool. Welches Backend[br]würdest du für Nutzer empfehlen, die kein
0:53:52.369,0:53:57.490
Markdown schreiben wollen?[br]Avocadoom: Hmmm, das kommt drauf an, was
0:53:57.490,0:54:05.275
man machen will. Wenn man einen Blog hat[br]würde ich tatsächlich entweder auf ein
0:54:05.275,0:54:11.809
Blog Service setzen, also so was wie[br]Medium oderso und mich da an der an die
0:54:11.809,0:54:18.269
API anschließen, weil das einfach relativ[br]gute editing experience bietet oder auch
0:54:18.269,0:54:21.410
an anderen Hosting Service oder z.B. auch[br]einfach ein klassisches Content Management
0:54:21.410,0:54:25.829
System wie WordPress oder ähnliches[br]verwenden. Es gibt tatsächlich auch so
0:54:25.829,0:54:31.010
Frontends für einige Static Site[br]Generators, die euch das sozusagen
0:54:31.010,0:54:36.920
ermöglichen, dass man dann so einen Editor[br]davor hat, der dann Markdown am Ende
0:54:36.920,0:54:40.769
hinten raus rendert, aber die haben[br]meistens den Nachteil, dass die oft auf
0:54:40.769,0:54:44.819
dem Client laufen und dann bei euch[br]laufen, auf dem Desktop quasi, und dass
0:54:44.819,0:54:47.769
man dann trotzdem sich immer noch darum[br]kümmern muss, dass das dann irgendwo in
0:54:47.769,0:54:52.849
git gepusht wird und ähnliches und dann[br]irgendwo hoch kommt. Und daher würde ich
0:54:52.849,0:54:58.650
eher sagen Notfalls, wenn man zum Beispiel[br]mit Wordpress schon mal gearbeitet hat
0:54:58.650,0:55:03.170
oder mit einem ähnlichen System gucken ob[br]das erst mal eine Rest-API anbietet und
0:55:03.170,0:55:09.569
sich darüber versuchen mit dem Static Site[br]Generator zu verständigen.
0:55:09.569,0:55:16.259
Herald: Es kommt noch viel: "Danke für[br]deinen coolen Talk" rein.
0:55:16.259,0:55:20.202
Avocadoom: Gerne. Ich hoffe euch hat es[br]Spaß gemacht.
0:55:20.202,0:55:26.190
Herald: Genau. Vielleicht noch eine letzte[br]Verständnisfrage. Der Nutzer fragt / oder
0:55:26.190,0:55:31.430
die Nutzerin: Ich verstehe jetzt noch[br]nicht zu 100 Prozent was genau man mit
0:55:31.430,0:55:35.421
statischen Sites verhindern will? Ist es,[br]dass der Client nicht direkt mit dem
0:55:35.421,0:55:39.959
Server interagiert oder dass es keine User[br]Eingaben gibt, die an einen Server
0:55:39.965,0:55:44.719
weitergegeben werden?[br]Avocadoom: Beides will man nicht unbedingt
0:55:44.719,0:55:49.818
verhindern. Was man vor allem verhindern[br]will ist, dass man sich, dass man zum
0:55:49.818,0:55:54.400
Beispiel ein System auf dem Server liegen[br]hat, wie zum Beispiel ein, also wenn ihr
0:55:54.400,0:55:57.029
ein klassisches Content Management System[br]habt, ich erkläre es mal so, so ein
0:55:57.029,0:56:01.440
WordPress oder so, oder ein Joomla oder[br]ein Drupal oder was auch immer dann
0:56:01.440,0:56:06.684
generiert euch das beim Aufruf der Seite[br]das HTML, was dann an den Client
0:56:06.684,0:56:12.299
ausgeliefert wird. Dass heißt das System,[br]wenn so ein Client das aufruft, dann
0:56:12.299,0:56:15.880
interagiert das System damit. Oder habt[br]ihr zum Beispiel eine Suche drin und so
0:56:15.880,0:56:19.059
eine Suche die sucht natürlich in der[br]Datenbank. Das heißt, wenn ihr diese Suche
0:56:19.059,0:56:22.980
entsprechend manipulieren würdet und es[br]wäre jetzt bekannt, dass in eurem Content
0:56:22.980,0:56:27.565
Management System eine SQL-Injection[br]möglich wäre, dann können Sie so rüber ins
0:56:27.565,0:56:31.116
System kommen. Das heißt, wenn das System[br]nicht vernünftig wartet und ihr dieses
0:56:31.116,0:56:36.390
SQL-Injection Problem Update nicht[br]installiert, dann ist diese Lücke
0:56:36.390,0:56:40.819
sozusagen da, dann stehen da sozusagen die[br]Tore offen. Das heißt, das ist zum
0:56:40.819,0:56:44.739
Beispiel der Punkt, dass ihr da sagen[br]könnt diese statische Seite bietet einfach
0:56:44.739,0:56:49.799
kein direktes Einfallstor in euer System,[br]weil sie quasi keine direkte Interaktion
0:56:49.799,0:56:54.150
mit dem Backend ermöglicht. Das bietet[br]halt auch den zweiten Vorteil, dass ihr
0:56:54.150,0:56:59.021
Performance habt, weil ihr quasi nicht bei[br]jedem Aufruf anfangt, die Seite neu zu
0:56:59.021,0:57:04.229
generieren, sondern ihr habt einfach die[br]fertig generierte Seite und liefert sie
0:57:04.229,0:57:08.069
nur noch an das Endgerät aus. Das heißt[br]ihr interagiert immer noch mit einer Art
0:57:08.069,0:57:10.719
Server, aber ihr interagiert nicht mit dem[br]Content Management System und habt nicht
0:57:10.719,0:57:14.829
die Möglichkeit, dass sie zum Beispiel in[br]eurer Datenbank einfallen. Und das sind
0:57:14.829,0:57:17.922
eigentlich die zwei hauptsächlichen[br]Gründe, weswegen man Static Site
0:57:17.922,0:57:21.759
Generation vorziehen möchte. Außerdem hat[br]es halt den großen Vorteil, dass dadurch,
0:57:21.759,0:57:33.440
dass alles vorgerendert ist, dass diese[br]entsprechende Last, also diese
0:57:33.440,0:57:39.101
Performance, ich habe es ja schon erwähnt,[br]dass quasi einfach das passiert, ihr
0:57:39.101,0:57:42.020
schiebt die Seite einfach einmal hoch und[br]dann ist sie da und dann wird sie
0:57:42.020,0:57:45.130
abgerufen und ihr müsst nicht gucken, dass[br]irgendwo was kaputt gehen kann.
0:57:45.130,0:57:51.009
Herald: Ja, danke für das Beantworten der[br]Fragen und auch für diesen super coolen
0:57:51.009,0:57:53.629
Vortrag hier bei Chaos West.
0:57:53.629,0:57:58.319
rc3-nowhere Abspannmusik
0:57:58.319,0:58:17.000
Untertitel erstellt von c3subtitles.de[br]im Jahr 2021. Mach mit und hilf uns!