WEBVTT

00:00:00.000 --> 00:00:03.420
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python Podcast Episode 39.

00:00:04.420 --> 00:00:06.200
Heute reden wir mit euch über FastAPI.

00:00:07.760 --> 00:00:08.480
Hi Jochen.

00:00:08.980 --> 00:00:10.720
Ja, hallo, herzlich willkommen Dominik.

00:00:11.020 --> 00:00:14.180
Wir sind mal wieder im schönen Wintergarten, es ist noch relativ dunkel draußen heute mal wieder.

00:00:14.500 --> 00:00:14.720
Ja.

00:00:15.440 --> 00:00:21.420
Ja, und sind schon ganz gespannt, was ihr uns für Feedback gebt an hallo-at-python-podcast.de.

00:00:22.140 --> 00:00:22.400
Genau.

00:00:23.720 --> 00:00:26.560
Ja, machen wir wie immer so ein bisschen zuerst News oder so.

00:00:26.560 --> 00:00:28.800
Heute haben wir auch keinen Gast irgendwie oder so.

00:00:28.800 --> 00:00:58.780
und die Programmiersprache Python.

00:00:58.800 --> 00:01:02.180
und da haben sich Leute schon viele Gedanken zu gemacht, was man damit machen könnte.

00:01:02.400 --> 00:01:03.320
Worum ging es in der App?

00:01:03.560 --> 00:01:05.720
Ja, um ein Log-File-Format.

00:01:06.480 --> 00:01:10.560
Das gibt es ja, also Log-Files zum Festnageln von...

00:01:10.560 --> 00:01:12.300
Also nicht Python-Log-Files.

00:01:12.300 --> 00:01:12.860
Ja, mit CK.

00:01:14.640 --> 00:01:17.380
Das gibt es ja in diversen...

00:01:17.380 --> 00:01:20.200
Also Poetry macht das, PIP-Tools macht das,

00:01:20.860 --> 00:01:24.920
aber es gibt keinen Standard dafür und deswegen ist das halt immer ein bisschen schwierig.

00:01:24.920 --> 00:01:25.520
und

00:01:25.520 --> 00:01:28.900
ja, da war halt die Idee, das mal so

00:01:28.900 --> 00:01:31.380
zu standardisieren, zumindest für Binary-Installationen,

00:01:31.400 --> 00:01:33.140
weil das geht eigentlich auch nur so

00:01:33.140 --> 00:01:34.840
richtig gut für Wheels, weil

00:01:34.840 --> 00:01:36.800
bei Source-Distributionen oder so ist halt unklar,

00:01:36.920 --> 00:01:38.460
was ist denn jetzt eigentlich der Hash da,

00:01:38.760 --> 00:01:40.800
worüber macht man den denn jetzt, also wobei

00:01:40.800 --> 00:01:42.820
bei Wheels ist es halt relativ einfach, genau,

00:01:42.920 --> 00:01:44.780
und das war der Pep dazu von

00:01:44.780 --> 00:01:47.080
Greg Ken, der sich jetzt auch seit einiger

00:01:47.080 --> 00:01:49.320
Zeit relativ intensiv da mit diesem ganzen Packaging-Thema

00:01:49.320 --> 00:01:51.140
beschäftigt hat und ja, das wäre

00:01:51.140 --> 00:01:53.220
halt eine schöne Gelegenheit gewesen, das mal zu standardisieren, aber

00:01:53.220 --> 00:01:55.180
wurde abgelehnt.

00:01:55.280 --> 00:01:55.980
Wer war nochmal bei Canon?

00:01:56.480 --> 00:01:59.200
Aus dem Steering Council und auch

00:01:59.200 --> 00:02:01.500
der macht glaube ich eigentlich

00:02:01.500 --> 00:02:02.580
ist der so der

00:02:02.580 --> 00:02:05.060
verantwortliche VS Code Python

00:02:05.060 --> 00:02:07.280
Integration bei Microsoft, aber

00:02:07.280 --> 00:02:09.000
der ist eine ganz bekannte

00:02:09.000 --> 00:02:10.920
Figur da in der Python

00:02:10.920 --> 00:02:13.160
Entwicklungsszene. Und weißt du auch noch, warum das

00:02:13.160 --> 00:02:15.240
abgelehnt worden ist? Ja, weil es

00:02:15.240 --> 00:02:17.260
eben keine Source-Distribution irgendwie

00:02:17.260 --> 00:02:19.240
mit umfasst und du kannst halt damit dann

00:02:19.240 --> 00:02:21.020
nur Sachen, wo es ein Wheel gibt,

00:02:21.020 --> 00:02:23.120
und dann ist halt irgendwie viele

00:02:23.120 --> 00:02:25.320
sagen, das bringt dann nicht so viel

00:02:25.320 --> 00:02:27.140
und ach ja,

00:02:27.400 --> 00:02:29.040
naja, mal schauen, vielleicht mal sehen, wie das

00:02:29.040 --> 00:02:31.160
da so weitergeht. Vielleicht denkt sich

00:02:31.160 --> 00:02:33.000
irgendjemand aus, wie man auch Source-Sachen

00:02:33.000 --> 00:02:33.820
hashen kann oder so?

00:02:34.900 --> 00:02:37.260
Ja, oder vielleicht gibt es da mal was ganz anderes, keine Ahnung.

00:02:37.400 --> 00:02:39.500
Mal abwarten, das ist Packaging-Problem.

00:02:39.600 --> 00:02:41.100
Man könnte ja den Source in einen Zip

00:02:41.100 --> 00:02:43.000
runterladen, den Zip hashen und dann

00:02:43.000 --> 00:02:43.460
entpacken.

00:02:45.060 --> 00:02:46.500
Naja, also

00:02:46.500 --> 00:02:47.720
ist es nicht so einfach.

00:02:48.560 --> 00:02:49.000
Ja,

00:02:49.000 --> 00:02:51.360
Nächste News

00:02:51.360 --> 00:02:53.520
Nächste, was sehr schön ist

00:02:53.520 --> 00:02:55.160
WebAssembly

00:02:55.160 --> 00:02:56.960
WebAssembly, C-Python, kompiliert

00:02:56.960 --> 00:02:57.740
komplett nach

00:02:57.740 --> 00:03:00.540
also das ist wirklich das richtige C-Python

00:03:00.540 --> 00:03:02.980
nicht irgendwie kompiliert nach WebAssembly

00:03:02.980 --> 00:03:04.820
und kann man im Browser ausführen

00:03:04.820 --> 00:03:06.820
also es gehen da natürlich noch viele Dinge noch nicht

00:03:06.820 --> 00:03:08.740
aber dass das überhaupt

00:03:08.740 --> 00:03:10.340
klappt, ist halt schon mal irgendwie

00:03:10.340 --> 00:03:11.720
sehr interessant und

00:03:11.720 --> 00:03:13.920
dann kann man tatsächlich

00:03:13.920 --> 00:03:16.660
Python schreiben, in C-Python kompilieren

00:03:16.660 --> 00:03:17.940
und dann einfach im Browser laufen

00:03:17.940 --> 00:03:19.180
der kompiliert mal nichts.

00:03:20.060 --> 00:03:21.820
C-Python ist der Interpreter von Python.

00:03:22.060 --> 00:03:23.700
Der ist nach WebAssembly, das heißt,

00:03:24.020 --> 00:03:26.120
der läuft dann sozusagen im Browser zum Beispiel

00:03:26.120 --> 00:03:28.200
oder auf irgendwas, was halt WebAssembly ausführen kann.

00:03:28.980 --> 00:03:30.340
Und dann kannst du da einfach

00:03:30.340 --> 00:03:32.300
Python hinschicken und dann kann das das ausführen.

00:03:32.820 --> 00:03:34.280
Das heißt, du schickst da quasi vom Server

00:03:34.280 --> 00:03:36.080
Python Source-Files

00:03:36.080 --> 00:03:38.180
an den Browserskunden und das wird dann...

00:03:38.180 --> 00:03:38.700
Ja, der könnte das ausführen.

00:03:40.660 --> 00:03:41.780
Ist natürlich so,

00:03:41.920 --> 00:03:43.980
die ganze Umgebung und so, das ist natürlich

00:03:43.980 --> 00:03:45.460
dann nicht so wirklich wie

00:03:45.460 --> 00:03:46.820
normalerweise.

00:03:46.820 --> 00:03:48.680
System, ja, du musst halt mit rechten

00:03:48.680 --> 00:03:50.260
Beschränkungen klarkommen, die es dann wahrscheinlich gibt.

00:03:50.440 --> 00:03:52.640
Ja, und noch diverse andere Geschichten, du kannst ja auch nicht irgendwelche Sachen

00:03:52.640 --> 00:03:54.580
installieren und so, aber, und irgendwie

00:03:54.580 --> 00:03:56.560
C-Extensions und so, das geht wahrscheinlich alles nicht, aber

00:03:56.560 --> 00:03:58.700
dass das überhaupt geklappt hat,

00:03:58.720 --> 00:04:00.200
ist schon mal...

00:04:00.200 --> 00:04:01.920
Es wird klar, was du halt endlich wegschmeißt.

00:04:02.600 --> 00:04:04.640
Nee, also das...

00:04:04.640 --> 00:04:06.480
Das aber,

00:04:06.660 --> 00:04:08.400
aber es ist halt auf jeden Fall ein Ding,

00:04:08.520 --> 00:04:09.600
was dazu führen kann, dass

00:04:09.600 --> 00:04:12.240
man da eventuell

00:04:12.240 --> 00:04:14.500
nicht in so ein Aussterbeproblem läuft,

00:04:14.500 --> 00:04:16.340
weil halt alles irgendwann im Browser ist und so.

00:04:16.340 --> 00:04:18.020
dann kann man da vielleicht auch sein oder so.

00:04:18.680 --> 00:04:20.680
Was ist so ein Use Case von so WebAssembly

00:04:20.680 --> 00:04:21.740
Zeugs?

00:04:22.360 --> 00:04:23.740
Ja, zum Beispiel eben

00:04:23.740 --> 00:04:26.300
im Browser halt laufen, aber auch

00:04:26.300 --> 00:04:28.400
eventuell in Zukunft irgendwann wird es halt

00:04:28.400 --> 00:04:30.100
vielleicht auch so sein, dass Telefone oder so

00:04:30.100 --> 00:04:31.620
das halt irgendwie nativ ausführen.

00:04:33.440 --> 00:04:34.120
Ich meine auch

00:04:34.120 --> 00:04:36.260
also unter

00:04:36.260 --> 00:04:37.880
iOS oder die iPhones, die haben ja

00:04:37.880 --> 00:04:40.180
da ist halt ganz viel optimierter

00:04:40.180 --> 00:04:41.940
Kram auch für JavaScript schon

00:04:41.940 --> 00:04:43.980
drin, aber auch für WebAssembly ist es halt

00:04:43.980 --> 00:04:45.660
ja

00:04:45.660 --> 00:04:47.860
also da sozusagen das so zu machen, dass man

00:04:47.860 --> 00:04:49.720
da den Kram halt auch irgendwie ausführen kann,

00:04:49.800 --> 00:04:51.720
das wäre eigentlich relativ einfach. Das heißt, der macht dann direkt

00:04:51.720 --> 00:04:53.720
dein Telefon mit die Datenanalyse live

00:04:53.720 --> 00:04:55.880
auf dem Gerät direkt oder sowas? Ja, aber man könnte sagen,

00:04:56.080 --> 00:04:57.740
also das kann halt auch WebAssembly

00:04:57.740 --> 00:04:59.720
ausführen. Also momentan zum Beispiel, wenn

00:04:59.720 --> 00:05:01.400
du für iOS entwickelst, geht halt nur

00:05:01.400 --> 00:05:03.700
C, C++,

00:05:04.120 --> 00:05:04.940
Objective-C,

00:05:05.920 --> 00:05:06.240
Swift.

00:05:08.140 --> 00:05:09.560
Es gibt zwar auch Pythonista

00:05:09.560 --> 00:05:11.620
und so, man kann schon Python da ausführen, das geht auch,

00:05:11.760 --> 00:05:13.860
aber das ist alles nicht so richtig offiziell

00:05:13.860 --> 00:05:15.180
erlaubt. Und

00:05:15.180 --> 00:05:18.020
ja, JavaScript geht halt auch

00:05:18.020 --> 00:05:19.320
und

00:05:19.320 --> 00:05:21.540
vielleicht ist halt irgendwie

00:05:21.540 --> 00:05:23.420
WebAssembly irgendwann mal so ein offizielles Target

00:05:23.420 --> 00:05:25.940
und dann könnte man auch Python

00:05:25.940 --> 00:05:27.500
da so wieder reinschummeln quasi.

00:05:27.580 --> 00:05:29.640
Und dann Apps für Telefone

00:05:29.640 --> 00:05:30.420
in Python schreiben.

00:05:30.640 --> 00:05:32.380
Was ja auch so ein anderes Problem ist,

00:05:32.500 --> 00:05:35.320
die beiden Hauptdinger, auf denen Python nicht da ist,

00:05:35.320 --> 00:05:37.580
ist halt Frontend-Web und halt

00:05:37.580 --> 00:05:39.660
mobile Geräte und das sind

00:05:39.660 --> 00:05:41.480
zwei Kategorien, die immens wichtig sind eigentlich.

00:05:42.180 --> 00:05:43.500
Und das macht so ein bisschen Angst,

00:05:43.500 --> 00:05:45.460
dass die Story für Python da nicht so gut ist.

00:05:45.480 --> 00:05:47.060
Aber gut, dass das in die richtige Richtung geht.

00:05:47.300 --> 00:05:47.660
Ja, genau.

00:05:49.120 --> 00:05:50.920
Christian Heim ist Hamburger

00:05:50.920 --> 00:05:51.840
Python User Group,

00:05:52.280 --> 00:05:55.520
hat da ganz viel gemacht und das freut mich

00:05:55.520 --> 00:05:56.100
sehr, dass das

00:05:56.100 --> 00:05:58.500
coole Sachen macht.

00:05:59.780 --> 00:06:01.220
Dann ist Black jetzt stable.

00:06:01.640 --> 00:06:02.340
Black ist stable.

00:06:04.500 --> 00:06:05.800
Ja, genau.

00:06:05.920 --> 00:06:06.340
Das ist toll.

00:06:07.600 --> 00:06:08.960
Manche Leute finden es auch schrecklich, aber

00:06:08.960 --> 00:06:10.480
ich finde es eigentlich eine gute Nachricht.

00:06:10.940 --> 00:06:12.180
Das heißt, man kann sich jetzt darauf verlassen,

00:06:12.180 --> 00:06:13.840
dass das erstmal eine Zeit lang alles so bleiben wird

00:06:13.840 --> 00:06:16.060
was auch mit dazu gekommen ist, ist Port für Python

00:06:16.060 --> 00:06:17.980
3.10 Syntax und so

00:06:17.980 --> 00:06:20.080
und ja, eine ganze lange Liste von

00:06:20.080 --> 00:06:21.980
Dingen, die da irgendwie... Und damit ist jetzt auch die

00:06:21.980 --> 00:06:24.340
DIP, die Django Enhancement

00:06:24.340 --> 00:06:25.020
Proposal

00:06:25.020 --> 00:06:28.540
Django Enhancement

00:06:28.540 --> 00:06:30.120
Proposal 8 sagt irgendwie

00:06:30.120 --> 00:06:31.660
lass doch mal Autofarmata benutzen

00:06:31.660 --> 00:06:34.080
aber erst wenn es stable ist und

00:06:34.080 --> 00:06:35.900
genau, weil Black Hat stable ist

00:06:35.900 --> 00:06:38.140
ist Django jetzt auch quasi mit

00:06:38.140 --> 00:06:39.740
Black formatiert und ja

00:06:39.740 --> 00:06:42.060
Ja, wir haben jetzt nochmal hier drauf

00:06:42.060 --> 00:07:06.060
und

00:07:06.060 --> 00:07:07.860
Ich weiß aber gar nicht genau. Also es ist nichts, was

00:07:07.860 --> 00:07:09.360
jetzt irgendwie rausstechen würde, warum man sagt,

00:07:09.500 --> 00:07:11.820
das ist ganz toll, aber kann man ja mal

00:07:11.820 --> 00:07:13.660
ausprobieren. Also die Information,

00:07:13.860 --> 00:07:16.240
es gibt jetzt eine neue Version, ist vielleicht daran am interessantesten.

00:07:18.180 --> 00:07:19.400
Ja, ansonsten

00:07:19.400 --> 00:07:20.540
genau zu der

00:07:20.540 --> 00:07:23.580
HTMX-Episode von letztem Mal. Es gab

00:07:23.580 --> 00:07:25.660
noch so ein Essay von, das habe ich dann gesehen, als ich

00:07:25.660 --> 00:07:27.640
gedacht habe, okay, kann man das nicht vielleicht irgendwie einfacher

00:07:27.640 --> 00:07:29.400
erklären mit diesem HTOS

00:07:29.400 --> 00:07:31.740
Ding, was ist das eigentlich

00:07:31.740 --> 00:07:33.740
und so. Und habe dann gesehen,

00:07:33.740 --> 00:07:35.180
es gibt ein Essay von dem

00:07:35.180 --> 00:07:37.440
Carson Gross

00:07:37.440 --> 00:07:39.220
dazu,

00:07:40.040 --> 00:07:40.720
wo er beschreibt,

00:07:41.220 --> 00:07:43.100
wie er sich das so gedacht hat und

00:07:43.100 --> 00:07:45.180
nimmt halt so ein Bankbeispiel und

00:07:45.180 --> 00:07:47.400
sagt halt, also wenn du eine JSON-API

00:07:47.400 --> 00:07:49.360
hast, dann muss, wenn du

00:07:49.360 --> 00:07:51.540
so eine JavaScript-Applikation

00:07:51.540 --> 00:07:52.320
hast, dann muss

00:07:52.320 --> 00:07:55.340
ja sozusagen

00:07:55.340 --> 00:07:57.200
die Applikation immer wissen, was

00:07:57.200 --> 00:07:59.180
zum Beispiel sowas bedeutet, wie du hast dein

00:07:59.180 --> 00:08:00.600
Konto überzogen und

00:08:00.600 --> 00:08:03.380
welche Aktionen du dann machen darfst und welche

00:08:03.380 --> 00:08:05.180
nicht, während wenn du halt HTML

00:08:05.180 --> 00:08:07.200
rüberschickst, dann können da ja zum Beispiel,

00:08:07.460 --> 00:08:09.260
ob du jetzt eine Überweisung machen kannst oder so, ist halt

00:08:09.260 --> 00:08:11.300
ein Link, dann kann der Link da halt entweder drin sein

00:08:11.300 --> 00:08:12.580
oder nicht. Und

00:08:12.580 --> 00:08:14.900
dein Browser muss halt nicht wissen,

00:08:15.820 --> 00:08:16.180
quasi...

00:08:16.180 --> 00:08:19.240
Dein Browser muss nicht wissen, dass du

00:08:19.240 --> 00:08:21.300
dein Konto überzogen hast, um...

00:08:21.820 --> 00:08:23.240
Der zeigt einfach nur Formulare an und

00:08:23.240 --> 00:08:25.220
das Formular zum Überweisen zeigt dir halt einfach nicht mehr an.

00:08:26.200 --> 00:08:27.420
Und sozusagen

00:08:27.420 --> 00:08:29.200
der State, dass der das dann nicht mehr

00:08:29.200 --> 00:08:31.260
anzeigt, ist halt im HTML und nicht in der Applikation.

00:08:31.740 --> 00:08:32.480
Während in der

00:08:32.480 --> 00:08:33.680
in einem JavaScript-Fall,

00:08:33.840 --> 00:08:36.700
kriegst du halt nur die Account-Daten von der Bank

00:08:36.700 --> 00:08:38.840
und musst dann halt in der Applikation überprüfen,

00:08:38.960 --> 00:08:40.880
okay, hat er sein Konto überzogen? Wenn ja,

00:08:40.980 --> 00:08:42.900
dann darf er nicht überweisen. Und das ist

00:08:42.900 --> 00:08:44.800
natürlich sozusagen einfach

00:08:44.800 --> 00:08:46.720
ein bisschen anders. Und vielleicht kann man sich das anhand dieser

00:08:46.720 --> 00:08:48.880
Geschichte, ich will verlinken, packen das in die Shownotes,

00:08:49.400 --> 00:08:50.760
also ich fand, daran kann man eigentlich ganz schön

00:08:50.760 --> 00:08:52.580
sehen, was da eigentlich so gemeint ist mit

00:08:52.580 --> 00:08:54.780
Hypermedia is the engine

00:08:54.780 --> 00:08:56.480
of application state.

00:08:56.880 --> 00:08:57.100
Okay.

00:08:58.540 --> 00:09:00.680
Was gab es noch? Ach ja, Wagtail. Wagtail, genau.

00:09:00.900 --> 00:09:01.260
Wagtail.

00:09:02.480 --> 00:09:03.960
Wagtail bekommt einen neuen Page-Editor

00:09:03.960 --> 00:09:05.520
und zwar von Google.

00:09:05.780 --> 00:09:07.800
Genau, von Google gesponsert.

00:09:07.940 --> 00:09:10.080
Weil Google relativ viel Wagtail wohl intern

00:09:10.080 --> 00:09:10.660
benutzt.

00:09:12.000 --> 00:09:14.060
Ja, und das ist natürlich schon nett. Also ist es

00:09:14.060 --> 00:09:16.000
nicht so wahnsinnig viel Geld, irgendwie, was ist das,

00:09:16.020 --> 00:09:18.120
150.000 Dollar oder so, die sie denen geben, aber

00:09:18.120 --> 00:09:20.080
ich meine, da kannst du halt schon, also kannst du schon

00:09:20.080 --> 00:09:21.060
ein bisschen was mit machen und

00:09:21.060 --> 00:09:24.040
ja, also freut mich auf jeden Fall auch, dass die Ergebnisse dann

00:09:24.040 --> 00:09:25.960
halt allen hinterher zugutekommen, das ist ja sehr

00:09:25.960 --> 00:09:26.260
schön.

00:09:27.880 --> 00:09:29.980
Genau, und ja, ich meine, ich benutze

00:09:29.980 --> 00:09:31.980
jetzt auch für meine Geschichten da

00:09:31.980 --> 00:09:35.720
Wagtail. Ich bin nicht immer so ganz super überzeugt, ob das die richtige Entscheidung ist, aber

00:09:35.720 --> 00:09:39.180
solche Nachrichten sind auch gute Nachrichten für mich.

00:09:41.000 --> 00:09:44.340
Apropos Open Source, weil das ja Open Source ist, da gab es doch irgendwie noch eine Meldung

00:09:44.340 --> 00:09:48.340
von uns. Ja, Oliver hat netterweise einen Kommentar

00:09:48.340 --> 00:09:52.320
zu der Open Source Episode hinterlassen und meinte, da kennt ihr eigentlich

00:09:52.320 --> 00:09:56.560
diesen Prototype Fund. Und nö, kannte ich zumindest überhaupt gar nicht.

00:09:57.120 --> 00:10:00.520
Ja, man sagte mir auch nichts. Und was ist das? Das ist irgendwie

00:10:00.520 --> 00:10:05.860
ein Fonds, der aufgelegt ist, das Bildungsministerium zahlt dann irgendwie.

00:10:07.040 --> 00:10:10.120
Das geht von 2016 bis 2024.

00:10:10.960 --> 00:10:13.900
25 Projekte und 16

00:10:13.900 --> 00:10:16.540
Förderungsrunden.

00:10:18.400 --> 00:10:22.460
Da sind wir natürlich jetzt mit 2022 so mittendrin. Oder am Ende eigentlich schon fast.

00:10:23.400 --> 00:10:24.980
Wenn er jetzt nur den Förderantrag schreiben will.

00:10:24.980 --> 00:10:27.240
Also das Problem ist wahrscheinlich immer, der Förderantrag ist relativ lang.

00:10:27.240 --> 00:10:29.400
aber ja, wie immer

00:10:29.400 --> 00:10:31.200
bei solchen Dingen, aber wie viel kriegt man?

00:10:31.420 --> 00:10:33.500
50k für 6 Monate? Ja, 47.500

00:10:33.500 --> 00:10:35.400
Euro für 6 Monate maximal

00:10:35.400 --> 00:10:36.640
also vielleicht auch weniger

00:10:36.640 --> 00:10:39.380
Jochen, das ist ja so, oh, für ein Team

00:10:39.380 --> 00:10:41.220
die helfen, ja

00:10:41.220 --> 00:10:43.340
Ne, ich habe mir überlegt

00:10:43.340 --> 00:10:45.240
also ich meine, tatsächlich mache ich ja eigentlich genau das

00:10:45.240 --> 00:10:47.060
da steht auch noch in diesem Ding drin, so für Freelancer

00:10:47.060 --> 00:10:48.940
vielleicht ganz interessant, da stelle ich mir so, oh ja, stimmt

00:10:48.940 --> 00:10:51.100
eigentlich mache ich genau sowas und

00:10:51.100 --> 00:10:53.520
eigentlich wäre das ja tatsächlich, vielleicht schreibe ich da einfach mal was hin

00:10:53.520 --> 00:10:54.780
aber andererseits

00:10:54.780 --> 00:10:56.280
ja, so

00:10:56.280 --> 00:10:58.940
finanziell ist das jetzt nicht so super attraktiv, ehrlich gesagt.

00:10:59.840 --> 00:11:00.860
Und für ein Team ist das natürlich

00:11:00.860 --> 00:11:01.700
ja, nee.

00:11:02.520 --> 00:11:04.340
Ja, der kann man.

00:11:04.740 --> 00:11:05.200
Ach ja.

00:11:06.200 --> 00:11:07.780
Tja, die Preise und so, öffentliche Hand.

00:11:08.920 --> 00:11:10.800
Aber prinzipiell sehr

00:11:10.800 --> 00:11:12.780
interessant und auch gut, dass das jemand macht, weil das ist

00:11:12.780 --> 00:11:14.340
eigentlich total wichtig

00:11:14.340 --> 00:11:16.040
und müsste man eigentlich noch mehr machen.

00:11:17.420 --> 00:11:19.000
Aber immerhin, das ist ja schon nicht so schlecht.

00:11:19.220 --> 00:11:21.020
Und vielleicht weiß ja jemand noch nicht, dass es das gibt.

00:11:21.020 --> 00:11:22.620
Ja, und wenn jemand zum Beispiel gerade nach dem Studium

00:11:22.620 --> 00:11:24.980
damit durchaus zu finden sein kann und dann damit was probieren kann

00:11:24.980 --> 00:11:26.420
und damit wird das auch schon mal super.

00:11:28.820 --> 00:11:30.920
Ja, dann, das war auch

00:11:30.920 --> 00:11:33.100
jetzt vor ganz kurzem

00:11:33.100 --> 00:11:35.160
HDB 1.0

00:11:35.160 --> 00:11:37.100
Release, ist vielleicht auch interessant.

00:11:38.860 --> 00:11:40.740
Ja, muss man eigentlich, ich weiß nicht, ob man da so

00:11:40.740 --> 00:11:42.540
in Detail drauf eingehen kann.

00:11:42.560 --> 00:11:44.540
Aber was ist denn eine HDB trotzdem?

00:11:44.920 --> 00:11:46.640
HDB ist ja

00:11:46.640 --> 00:11:48.780
quasi

00:11:48.780 --> 00:11:50.720
ein Versuch sozusagen

00:11:50.720 --> 00:11:53.060
diesen Object Relational

00:11:53.060 --> 00:11:54.360
Impedance

00:11:54.360 --> 00:11:55.340
Mismatch.

00:11:56.420 --> 00:11:58.340
Jetzt hast du was gesagt, das habe ich überhaupt nicht verstanden.

00:11:59.060 --> 00:11:59.980
Edge Relational

00:11:59.980 --> 00:12:01.920
in Object Relational.

00:12:02.880 --> 00:12:05.460
Also du hast ja immer das Problem

00:12:05.460 --> 00:12:06.800
in objektorientierten

00:12:06.800 --> 00:12:08.860
Sprachen, das mappt halt nicht so richtig gut

00:12:08.860 --> 00:12:10.640
auf relationale Datenbanken.

00:12:10.820 --> 00:12:12.440
Relationale Datenbanken ist halt so eine Idee

00:12:12.440 --> 00:12:14.540
aus Anfang der 70er

00:12:14.540 --> 00:12:16.800
und eigentlich eine ziemlich coole Idee,

00:12:16.960 --> 00:12:18.720
aber damals gab es objektorientierte Programmierungen

00:12:18.720 --> 00:12:19.560
und sowas gab es einfach nicht.

00:12:19.560 --> 00:12:22.180
und das ist aber irgendwie das

00:12:22.180 --> 00:12:23.920
dominante Programmierparadigma

00:12:23.920 --> 00:12:24.720
irgendwie geworden.

00:12:25.720 --> 00:12:28.020
Und jetzt haben wir halt immer das Problem, okay, man

00:12:28.020 --> 00:12:30.200
speichert die Daten halt in

00:12:30.200 --> 00:12:32.140
Relationen oder in einer relationalen

00:12:32.140 --> 00:12:33.500
Datenbank und man hat aber jetzt

00:12:33.500 --> 00:12:35.820
Objekte irgendwie in der

00:12:35.820 --> 00:12:38.020
Applikation und wie

00:12:38.020 --> 00:12:40.540
kriegt man das jetzt zusammen? Da gibt es im Grunde zwei wesentliche,

00:12:40.540 --> 00:12:42.140
also kann es auch hohe SQL-Szenen

00:12:42.140 --> 00:12:43.800
natürlich schreiben, aber es ist halt so ein bisschen

00:12:43.800 --> 00:12:44.400
unhandlich.

00:12:45.960 --> 00:12:47.400
Die meisten verwenden dann eben

00:12:47.400 --> 00:12:49.760
ORMs, also so Object Relational

00:12:49.760 --> 00:12:51.600
Mapper. Wie den von Django oder

00:12:51.600 --> 00:12:53.600
Peewee oder sowas. Genau, oder SQL

00:12:53.600 --> 00:12:55.420
Alchemies für Python, vielleicht der bekannteste.

00:12:56.260 --> 00:12:57.180
Und da gibt es zwei

00:12:57.180 --> 00:12:59.360
grundsätzlich unterschiedliche Patterns. Das eine ist

00:12:59.360 --> 00:13:01.660
Active Record Pattern, was halt Ruby on Rails

00:13:01.660 --> 00:13:03.560
verwendet. Django verwendet

00:13:03.560 --> 00:13:04.980
das auch. Oder halt

00:13:04.980 --> 00:13:07.700
Data Mapper Pattern, das verwendet SQL Alchemy.

00:13:08.540 --> 00:13:09.500
Die haben halt so ihre

00:13:09.500 --> 00:13:11.580
Trade-offs. Die haben halt Vorurteile und Nachteile.

00:13:11.840 --> 00:13:13.520
Es kommt, man kann jetzt nicht sagen, dass ein oder anderes

00:13:13.520 --> 00:13:15.640
besser. Jedenfalls,

00:13:15.640 --> 00:13:17.440
aber sowas muss man halt eigentlich

00:13:17.440 --> 00:13:19.400
oder die meisten Leute verwenden sowas heutzutage

00:13:19.400 --> 00:13:21.680
einfach deswegen, weil es halt das Leben einfach

00:13:21.680 --> 00:13:23.540
deutlich leichter macht, aber trotzdem hat man

00:13:23.540 --> 00:13:25.100
immer noch das Problem, dass viele Sachen

00:13:25.100 --> 00:13:27.640
nicht so richtig gut gehen und schwierig

00:13:27.640 --> 00:13:29.460
sind und man da halt

00:13:29.460 --> 00:13:31.040
ja, also man

00:13:31.040 --> 00:13:33.620
muss mit den Dingern auch teilweise so ein bisschen

00:13:33.620 --> 00:13:35.260
kämpfen und

00:13:35.260 --> 00:13:37.560
ja, die Idee bei HDB ist halt einfach

00:13:37.560 --> 00:13:39.440
zu sagen, warum denken wir das Ganze nicht einfach nochmal

00:13:39.440 --> 00:13:41.520
neu und machen das halt eher so, dass es

00:13:41.520 --> 00:13:43.660
zu dem, dass halt die Datenhaltung auch zu dem

00:13:43.660 --> 00:13:45.520
zu der Art, wie wir heutzutage programmieren

00:13:45.520 --> 00:13:47.180
besser passt. Und

00:13:47.180 --> 00:13:49.180
die Standardfälle, wo man halt in SQL

00:13:49.180 --> 00:13:51.280
komische Sachen schreiben muss oder die mit den

00:13:51.280 --> 00:13:53.380
normalen ORMs nicht so gut gehen, die machen

00:13:53.380 --> 00:13:54.800
wir halt so, dass es halt einfach geht.

00:13:55.380 --> 00:13:56.740
Und dass man auch,

00:13:57.220 --> 00:13:58.800
es ist halt immer so ein Fremdkörper.

00:13:59.460 --> 00:14:00.940
Selbst wenn man es mit einem ORM macht, es ist halt,

00:14:01.300 --> 00:14:03.480
es sieht immer komisch aus, es ist immer ein bisschen eigenartig.

00:14:04.140 --> 00:14:05.180
Es passt halt nicht so richtig.

00:14:05.740 --> 00:14:07.180
Und ja, genau,

00:14:07.240 --> 00:14:08.900
dafür haben sie sich eine neue Sprache überlegt. Da haben sie gesagt,

00:14:08.980 --> 00:14:11.180
das eigentliche Problem ist halt, warum die ORMs nicht so gut

00:14:11.180 --> 00:14:12.260
sein können, ist halt, dass sie,

00:14:12.900 --> 00:14:14.980
SQL als Compile-Target sozusagen

00:14:14.980 --> 00:14:17.220
ziemlich schwierig ist, weil halt SQL ist ja auch

00:14:17.220 --> 00:14:19.140
kompliziert. Das ist eigentlich auch dafür gemacht, dass

00:14:19.140 --> 00:14:21.180
Menschen das schreiben, was ja heute auch

00:14:21.180 --> 00:14:22.740
keiner mehr macht. Eigentlich war das mal gedacht für

00:14:22.740 --> 00:14:24.820
das Analysten und so Queries schreiben.

00:14:26.400 --> 00:14:27.280
Weiß ich nicht, ob das jemals

00:14:27.280 --> 00:14:29.120
passiert ist, aber heutzutage

00:14:29.120 --> 00:14:30.480
passiert das kaum, denke ich.

00:14:31.820 --> 00:14:33.260
Sondern es ist halt immer so,

00:14:33.440 --> 00:14:34.940
dass du verwendest halt ein ORM, der

00:14:34.940 --> 00:14:37.100
compiled dann zu SQL, also zu etwas, was eigentlich dafür

00:14:37.100 --> 00:14:39.100
gemacht ist, dass Menschen das schreiben. Das macht irgendwie alles

00:14:39.100 --> 00:14:41.120
keinen Sinn. Dann ist es halt auch so, SQL

00:14:41.120 --> 00:14:42.940
ist nicht so gut composable. Du kannst halt nicht

00:14:42.940 --> 00:14:45.360
irgendwie Schnipsel SQL rumreichen

00:14:45.360 --> 00:14:46.800
und die dann halt zusammensetzen oder

00:14:46.800 --> 00:14:48.360
es geht alles nicht so gut.

00:14:50.460 --> 00:14:51.100
Und genau,

00:14:51.240 --> 00:14:52.720
all diese Dinge sind halt bei Edge

00:14:52.720 --> 00:14:54.780
QL oder so, ist glaube ich dann die Sprache

00:14:54.780 --> 00:14:57.060
besser, sozusagen.

00:14:57.360 --> 00:14:58.600
Aber das weiß man nicht so genau.

00:14:58.760 --> 00:15:00.220
Das ist halt jetzt gerade eine neue Ankündigung.

00:15:00.400 --> 00:15:02.940
Wir entwickeln da schon seit ein paar Jahren dran, aber jetzt ist halt die

00:15:02.940 --> 00:15:05.420
erste 1.0-Version

00:15:05.420 --> 00:15:06.040
erschienen.

00:15:07.820 --> 00:15:08.140
Also,

00:15:08.460 --> 00:15:10.740
das hört sich auf jeden Fall interessant an, kann man sich ja mal angucken.

00:15:11.360 --> 00:15:12.240
Und es ist halt so eine Mischung,

00:15:12.240 --> 00:15:14.160
ist basiert, also das, was sie da gebaut haben, ist

00:15:14.160 --> 00:15:16.320
also die Sprache soll halt standardisiert

00:15:16.320 --> 00:15:17.520
werden, das ist eher so ein Standard.

00:15:18.360 --> 00:15:19.820
Es gibt aber auch eine konkrete Implementation,

00:15:20.160 --> 00:15:21.020
die basiert auf

00:15:21.020 --> 00:15:23.160
Postgres und

00:15:23.160 --> 00:15:25.740
quasi so ein bisschen Erweiterung Richtung

00:15:25.740 --> 00:15:28.220
Graphen, Datenbanken, weil das ist ja auch mal so ein Ding,

00:15:28.460 --> 00:15:30.040
das ist eigentlich gar nicht so klar, warum wir jetzt

00:15:30.040 --> 00:15:31.980
relativ lange Datenbanken gewonnen haben gegenüber den

00:15:31.980 --> 00:15:34.140
Graphen-Datenbanken und es gibt ja auch noch Graphen-Datenbanken

00:15:34.140 --> 00:15:36.080
Neo4j oder diverse andere

00:15:36.080 --> 00:15:37.160
D-Graph

00:15:37.160 --> 00:15:40.040
Zeugs und ja, eigentlich will man

00:15:40.040 --> 00:15:41.280
beides irgendwie haben und

00:15:41.280 --> 00:15:44.160
und in Postgres kann man das ja ganz gut auch abbilden

00:15:44.160 --> 00:15:46.880
und dann haben sie halt irgendwie so ein Layer über Postgres gelegt.

00:15:47.760 --> 00:15:49.840
Ah, wie heißt das? Ein Layer über Postgres? Klingt gerade spannend.

00:15:50.020 --> 00:15:52.400
Also das klingt auch so, als könnte man das mit FastAPI benutzen.

00:15:52.700 --> 00:15:58.700
Ja, die Leute, die das gemacht haben, das sind bekannte Leute,

00:15:58.840 --> 00:16:01.100
das ist nicht so, dass das irgendwie aus dem Nichts kommt,

00:16:01.300 --> 00:16:06.980
sondern der CEO von HDB ist dann auch eine Firma,

00:16:07.400 --> 00:16:09.320
das macht das Ganze wieder so ein bisschen, ich weiß nicht genau,

00:16:09.320 --> 00:16:11.180
die machen halt vor allen Dingen, die haben viel Consulting gemacht,

00:16:11.180 --> 00:16:12.720
und haben halt viele Probleme gesehen auch,

00:16:13.280 --> 00:16:15.080
die man halt

00:16:15.080 --> 00:16:15.960
normalerweise so hat.

00:16:18.100 --> 00:16:18.680
Ja, der

00:16:18.680 --> 00:16:20.840
Jure

00:16:20.840 --> 00:16:21.800
Selin

00:16:21.800 --> 00:16:24.760
der hat auch

00:16:24.760 --> 00:16:26.320
irgendwie an den

00:16:26.320 --> 00:16:28.680
Peps zu

00:16:28.680 --> 00:16:30.880
Async Await diese ganzen Geschichten,

00:16:30.960 --> 00:16:32.440
da hat er hauptsächlich dran mitgeschrieben.

00:16:33.160 --> 00:16:34.460
Also der ist halt auch einer der

00:16:34.460 --> 00:16:36.600
Verantwortlichen dafür, dass wir jetzt in

00:16:36.600 --> 00:16:38.920
Python irgendwie Keywords für

00:16:38.920 --> 00:16:40.440
Async Await, also

00:16:40.440 --> 00:16:42.280
Syntax-Unterstützung für diese ganzen

00:16:42.280 --> 00:16:43.120
ASIM-Geschichten haben.

00:16:44.380 --> 00:16:46.360
Und hat da auch ganz viele Dinge

00:16:46.360 --> 00:16:47.520
implementiert und

00:16:47.520 --> 00:16:49.880
Lukas Schlanger hat

00:16:49.880 --> 00:16:51.640
für HDB auch gearbeitet schon.

00:16:53.180 --> 00:16:54.500
Es ist alles typisiert, genau.

00:16:54.580 --> 00:16:56.420
Das ist auch sowas. Den letzten Namen hatte ich jetzt auch noch nicht gehört.

00:16:56.680 --> 00:16:57.960
Welchen? Lukas.

00:16:58.220 --> 00:17:00.100
Der Release-Manager von Python für

00:17:00.100 --> 00:17:01.620
3.8, 3.9, 3.10.

00:17:01.980 --> 00:17:04.240
Nee, nicht für 3.10, nicht Quatsch. Das ist Unsinn.

00:17:05.460 --> 00:17:06.260
Aber früher

00:17:06.260 --> 00:17:08.400
oder vielleicht noch sogar früher, ich weiß es gar nicht mehr genau.

00:17:09.240 --> 00:17:10.280
Und der

00:17:10.280 --> 00:17:12.560
auch ganz einer, der hat ganz viel

00:17:12.560 --> 00:17:14.760
zu Type Annotation Geschichten gemacht.

00:17:15.000 --> 00:17:15.900
Der hat Black geschrieben, genau.

00:17:18.400 --> 00:17:18.660
Naja,

00:17:18.820 --> 00:17:20.360
also auch sehr bekannte

00:17:20.360 --> 00:17:22.800
Typ da

00:17:22.800 --> 00:17:24.140
und ja,

00:17:24.620 --> 00:17:25.280
genau, der hatte

00:17:25.280 --> 00:17:28.560
und Async.io hat halt auch viel zu tun

00:17:28.560 --> 00:17:30.840
und die, das ist alles,

00:17:30.960 --> 00:17:32.060
die haben auch, genau, die haben auch

00:17:32.060 --> 00:17:34.800
Async.pg

00:17:34.800 --> 00:17:36.560
geschrieben. Das ist halt die schnellste

00:17:36.560 --> 00:17:38.500
Postgres-Artenanbindung sozusagen,

00:17:38.920 --> 00:17:39.680
die es so gibt.

00:17:40.280 --> 00:17:41.980
Ist auch ein ganz tolles Projekt.

00:17:43.600 --> 00:17:44.840
Dann haben sie

00:17:44.840 --> 00:17:46.460
UV-Loop geschrieben,

00:17:47.000 --> 00:17:47.860
also das Ding, was halt

00:17:47.860 --> 00:17:50.640
unter

00:17:50.640 --> 00:17:52.220
UV-Corn und so drunter liegt.

00:17:53.460 --> 00:17:54.240
Also eine schnelle

00:17:54.240 --> 00:17:56.200
Async-IO-Implementation,

00:17:56.580 --> 00:17:58.960
die in der Standardbibliothek ist ja sozusagen nur eine Referenz-Implementation,

00:17:59.320 --> 00:18:00.060
aber die ist halt nicht schnell.

00:18:00.940 --> 00:18:02.380
Und sie haben halt eine schnelle Version geschrieben,

00:18:02.680 --> 00:18:04.580
also ganz viel der Basis-Infrastruktur,

00:18:04.660 --> 00:18:06.260
die man so bekommt, da auch aus der Ecke schon.

00:18:07.320 --> 00:18:08.260
Insofern, das sind schon Leute,

00:18:08.380 --> 00:18:09.080
die wissen, was sie da tun.

00:18:09.080 --> 00:18:11.840
Dann darf man auch ein bisschen Werbung für seine Projektung machen

00:18:11.840 --> 00:18:13.840
Genau, wobei, ja, Firma ist natürlich

00:18:13.840 --> 00:18:15.820
Was uns jetzt zur Werbung bringt

00:18:15.820 --> 00:18:17.860
Moment, Moment, das ist noch nicht mit den News

00:18:17.860 --> 00:18:18.820
Das ist noch nicht mit den News durch

00:18:18.820 --> 00:18:22.080
Achso, was geheim ist, das ich noch gar nicht weiß

00:18:22.080 --> 00:18:23.960
Also

00:18:23.960 --> 00:18:26.000
einen Punkt noch, genau, ich habe wieder Podcasts

00:18:26.000 --> 00:18:27.700
gehört, Problemierbar hat jetzt auch was über

00:18:27.700 --> 00:18:29.560
letzte Episode, das war

00:18:29.560 --> 00:18:31.060
Laravel, PHP

00:18:31.060 --> 00:18:33.420
Livewire

00:18:33.420 --> 00:18:35.740
Das fand ich auch ganz interessant, weil immer so diese

00:18:35.740 --> 00:18:37.880
Verbindungen finde ich immer interessant, weil die vielleicht nicht so

00:18:37.880 --> 00:18:39.660
klar sind oder mir nicht so klar waren.

00:18:39.960 --> 00:18:41.260
Und wenn man das dann weiß, dann

00:18:41.260 --> 00:18:43.400
macht das halt das alles schon mal ein bisschen

00:18:43.400 --> 00:18:45.140
verständlicher. Nämlich

00:18:45.140 --> 00:18:48.320
Laravel

00:18:48.320 --> 00:18:49.820
Livewire ist auch tatsächlich

00:18:49.820 --> 00:18:51.200
inspiriert von Phoenix Liveview.

00:18:53.000 --> 00:18:54.000
Ist aber auch schon ein bisschen älter.

00:18:54.100 --> 00:18:55.780
Das ist von 2019. Ich hätte das jetzt gedacht, dass

00:18:55.780 --> 00:18:57.660
es jünger ist, aber es ist auch schon relativ lange quasi

00:18:57.660 --> 00:18:59.740
dabei, also bei diesem Trend, die Dinge jetzt

00:18:59.740 --> 00:19:01.180
wieder vom Server aus zu machen. Und

00:19:01.180 --> 00:19:03.700
der Autor von Livewire ist der gleiche wie der von

00:19:03.700 --> 00:19:04.980
Alpine.js. Das ist halt

00:19:04.980 --> 00:19:05.760
Caleb

00:19:05.760 --> 00:19:10.360
und

00:19:10.360 --> 00:19:13.020
Portio

00:19:13.020 --> 00:19:15.020
und

00:19:15.020 --> 00:19:17.600
genau, der hat AlphanJS gebaut und halt aber auch

00:19:17.600 --> 00:19:19.520
LiveWire und der wollte

00:19:19.520 --> 00:19:21.680
eigentlich ja sowas eben wie Phoenix LiveView

00:19:21.680 --> 00:19:22.880
bauen und dann

00:19:22.880 --> 00:19:24.800
war das Problem mit dem PHP

00:19:24.800 --> 00:19:27.800
naja, also so WebSockets

00:19:27.800 --> 00:19:29.940
also Phoenix LiveView macht das ja über WebSockets

00:19:29.940 --> 00:19:31.940
das geht halt mit PHP nicht so richtig

00:19:31.940 --> 00:19:33.680
weil du hast halt den asing-Teil

00:19:33.680 --> 00:19:35.400
in PHP nicht, also gibt's jetzt

00:19:35.400 --> 00:19:37.940
auch seit PHP 8.1,

00:19:38.060 --> 00:19:39.460
das ja auch vor ein paar Monaten rausgekommen ist,

00:19:40.080 --> 00:19:41.720
aber es gibt keine

00:19:41.720 --> 00:19:43.600
Infrastruktur so richtig dafür und die ganzen Router

00:19:43.600 --> 00:19:45.400
können das nicht und so. Das heißt,

00:19:45.940 --> 00:19:47.820
quasi eine Verbindung offen halten

00:19:47.820 --> 00:19:49.580
vom Server aus ist in PHP

00:19:49.580 --> 00:19:51.460
sehr, sehr schwierig. Das geht eigentlich gar nicht richtig.

00:19:51.800 --> 00:19:53.440
Und dann hat er halt angefangen nachzudenken,

00:19:53.540 --> 00:19:55.380
so okay, mit WebSocket,

00:19:55.500 --> 00:19:57.700
das wird irgendwie nicht funktionieren. Wie kann man das denn sonst

00:19:57.700 --> 00:19:58.940
machen? Und die machen das,

00:20:00.000 --> 00:20:01.020
der macht das auch alles über

00:20:01.020 --> 00:20:03.320
Ajax-Calls und Pollen

00:20:03.320 --> 00:20:04.420
und

00:20:04.420 --> 00:20:06.920
sie machen so ein bisschen komplizierte Dinge darüber,

00:20:07.080 --> 00:20:08.740
dass sie halt immer alles mit übertragen, wenn

00:20:08.740 --> 00:20:10.460
sobald irgendwie ein Ajax-Call gemacht wird.

00:20:11.240 --> 00:20:12.980
Also was ich daran cool finde, ist, dass das

00:20:12.980 --> 00:20:14.800
überhaupt geht und dass man den Websocket

00:20:14.800 --> 00:20:16.000
gar nicht so unbedingt braucht.

00:20:16.820 --> 00:20:18.660
Also das zeigt das auf jeden Fall irgendwie. Man kann halt

00:20:18.660 --> 00:20:20.800
sehr viel machen, ohne unbedingt einen Websocket

00:20:20.800 --> 00:20:22.640
haben zu müssen und das ist eigentlich auch sehr nett, weil

00:20:22.640 --> 00:20:24.120
tatsächlich

00:20:24.120 --> 00:20:26.780
Websocket wird es wahrscheinlich in Django

00:20:26.780 --> 00:20:28.380
ohne Django-Channels-Anstützung

00:20:28.380 --> 00:20:29.580
wahrscheinlich nie geben.

00:20:30.840 --> 00:20:32.900
Aber offenbar

00:20:32.900 --> 00:20:34.580
Man braucht es auch nicht unbedingt.

00:20:35.080 --> 00:20:36.880
Das ist interessant, da können wir vielleicht gleich nochmal drauf eingehen

00:20:36.880 --> 00:20:39.280
und sagen, warum oder was FastAPI

00:20:39.280 --> 00:20:41.420
Genau, aber mit FastAPI

00:20:41.420 --> 00:20:43.000
könnte man das wahrscheinlich sehr gut machen.

00:20:43.380 --> 00:20:43.740
Genau.

00:20:44.740 --> 00:20:46.280
Ja, das war es eigentlich.

00:20:46.520 --> 00:20:48.900
Ich glaube, das probiere ich

00:20:48.900 --> 00:20:51.180
nächstes Mal aus. Habe ich auf Twitter gesehen.

00:20:51.380 --> 00:20:52.820
Dachte ich, kann ich hier auch mal anbringen.

00:20:53.460 --> 00:20:54.260
Wenn jemand anders das auch

00:20:54.260 --> 00:20:56.300
Twitter-Thema

00:20:56.300 --> 00:20:58.020
irgendwie geschrieben.

00:20:59.800 --> 00:21:00.820
Jetzt war ich beim Zahnarzt

00:21:00.820 --> 00:21:01.500
und da hat er irgendwie

00:21:01.500 --> 00:21:05.480
wurde gerügt, beziehungsweise...

00:21:05.480 --> 00:21:06.080
Warte, warte, warte.

00:21:06.080 --> 00:21:07.980
Okay, nochmal.

00:21:08.980 --> 00:21:09.780
Nicht ich.

00:21:10.180 --> 00:21:11.700
Ich habe es auf Twitter gelesen.

00:21:13.100 --> 00:21:13.440
Ja gut.

00:21:14.440 --> 00:21:15.580
Da meinte jemand dann,

00:21:16.160 --> 00:21:18.180
manchmal fühlt man sich ja so ausgeliefert,

00:21:18.300 --> 00:21:19.660
wenn man so beim Zahnarzt sitzt.

00:21:19.860 --> 00:21:21.580
Dann kriegt man auch noch so harsche

00:21:21.580 --> 00:21:23.660
Ansagen wie

00:21:23.660 --> 00:21:26.240
Mund auf.

00:21:27.080 --> 00:21:27.900
Was ist das denn hier?

00:21:28.760 --> 00:21:30.000
Besitzen sie eigentlich Zahnseide?

00:21:30.000 --> 00:21:32.140
Warum nicht? Mach das doch mal bitte häufiger.

00:21:32.860 --> 00:21:33.980
Und der war dann so, ja,

00:21:34.120 --> 00:21:35.520
ich hab dann, also nachdem

00:21:35.520 --> 00:21:37.280
ich diese zahnweite Geschichte

00:21:37.280 --> 00:21:38.440
darauf

00:21:38.440 --> 00:21:41.740
so hingewiesen worden bin, hab ich dann gefragt, ja,

00:21:41.920 --> 00:21:43.900
wie sieht's eigentlich bei Ihnen aus? Machen Sie Backups?

00:21:45.860 --> 00:21:46.220
Und

00:21:46.220 --> 00:21:47.840
prüfen Sie die auch, ob Sie die

00:21:47.840 --> 00:21:49.340
ab und zu mal einspielen, ob das überhaupt geht.

00:21:49.620 --> 00:22:01.782
W schon gut wenn man das macht Das war ja eine Geschichte hab ich auch irgendwo im Talk Mitleid Ja sch Muss ich mir merken muss ich auch mal versuchen anzubringen Ja habe ich mir auch fest vorgenommen

00:22:02.842 --> 00:22:03.902
Wenn dann die Frage kommt,

00:22:03.982 --> 00:22:04.982
machen sie eigentlich ihre Backups.

00:22:05.702 --> 00:22:06.742
Genau, ja.

00:22:06.942 --> 00:22:09.642
Ja, okay.

00:22:10.782 --> 00:22:12.202
Dann wollen wir jetzt wieder Werbung schalten.

00:22:12.362 --> 00:22:13.802
Also wir wollen nicht, aber wir müssen natürlich.

00:22:14.342 --> 00:22:14.462
Ja.

00:22:15.842 --> 00:22:17.842
Und wieder mit freundlicher Unterstützung heute von unserem

00:22:17.842 --> 00:22:19.082
Werbepartner NordVPN.

00:22:20.802 --> 00:22:21.962
Da gibt es was Neues.

00:22:22.202 --> 00:22:24.582
Ja, ein exklusiv Deal

00:22:24.582 --> 00:22:26.782
und ein Geschenk obendrauf zum NordVPN

00:22:26.782 --> 00:22:27.382
Geburtstag.

00:22:28.262 --> 00:22:29.722
Und dann könnt ihr auf den NordVPN

00:22:29.722 --> 00:22:32.502
Python Podcast gehen und

00:22:32.502 --> 00:22:33.382
euch den Deal da sichern.

00:22:34.982 --> 00:22:36.822
Und da gibt es auch so eine 30-Tage-

00:22:36.822 --> 00:22:37.702
Geld-zurück-Garantie.

00:22:38.042 --> 00:22:39.182
Hatten wir auch letztes Mal schon.

00:22:39.882 --> 00:22:42.022
Ja, genau. Ich weiß nicht.

00:22:42.342 --> 00:22:43.942
Benutzt du VPNs irgendwie?

00:22:44.562 --> 00:22:45.862
Relativ selten, aber ich glaube, zum

00:22:45.862 --> 00:22:48.222
Geoblocking umgehen ist das gar nicht so schlecht.

00:22:48.222 --> 00:22:49.682
Ja, wenn du Streaming haben möchtest,

00:22:49.682 --> 00:22:51.722
möchtest du irgendwie das Streaming-Programm von zu Hause gucken,

00:22:51.842 --> 00:22:52.902
wenn du im Urlaub bist oder so,

00:22:53.842 --> 00:22:55.662
ist das doch gar nicht so gut. Genau, also

00:22:55.662 --> 00:22:57.802
diese Google-Glocken-Geschichten

00:22:57.802 --> 00:22:58.762
oder halt auch eben,

00:22:59.562 --> 00:23:01.162
wenn man sicherstellen möchte, dass

00:23:01.162 --> 00:23:03.682
man genug Durchsatz hat und das irgendwie

00:23:03.682 --> 00:23:05.802
vom lokalen ISP vielleicht nicht unbedingt zu erwarten

00:23:05.802 --> 00:23:07.142
ist, dann

00:23:07.142 --> 00:23:09.762
kann das durchaus hilfreich

00:23:09.762 --> 00:23:11.482
sein. Ja, also

00:23:11.482 --> 00:23:13.122
genau, einfach da auf

00:23:13.122 --> 00:23:14.822
https.nordVPN.com

00:23:14.822 --> 00:23:17.722
slash python-podcast gehen und mal angucken, was da so von dir

00:23:17.722 --> 00:23:19.622
gibt. Genau, damit würdet ihr

00:23:19.622 --> 00:23:20.342
uns unterstützen.

00:23:22.282 --> 00:23:23.822
Dann machen wir

00:23:23.822 --> 00:23:25.842
weiter im Programm und gehen zu FastAPI.

00:23:26.142 --> 00:23:27.482
Ja, FastAPI, das Thema.

00:23:28.462 --> 00:23:29.782
Genau, das Thema unserer Folge.

00:23:30.742 --> 00:23:31.902
Was ist denn FastAPI

00:23:31.902 --> 00:23:33.742
überhaupt? Also es ist ein weiteres Webframework,

00:23:33.782 --> 00:23:34.782
ein neues Webframework

00:23:34.782 --> 00:23:37.482
und ersetzt, oder was heißt ersetzt,

00:23:37.582 --> 00:23:39.562
also ergänzt vielleicht so ein bisschen die Welt, die es in Python

00:23:39.562 --> 00:23:41.562
dazu gibt. Ja, das ist sehr

00:23:41.562 --> 00:23:43.582
interessant. Also genau, also eigentlich

00:23:43.582 --> 00:23:45.582
die meisten anderen Sachen sind ja sehr alt, also

00:23:45.582 --> 00:23:46.502
Flask ist sehr alt.

00:23:46.502 --> 00:23:48.042
Django ist sehr alt.

00:23:48.242 --> 00:23:50.322
Wenn ich das so richtig verstanden habe, ist

00:23:50.322 --> 00:23:52.302
FlaaS API quasi das neue FlaaS, ist das so das

00:23:52.302 --> 00:23:53.542
ein bisschen, was man da gemacht hat?

00:23:53.742 --> 00:23:56.162
Ja, also es kommt darauf an,

00:23:56.382 --> 00:23:57.962
aber auf jeden Fall ist es eher

00:23:57.962 --> 00:24:00.282
vergleichbar mit

00:24:00.282 --> 00:24:01.623
FlaaS quasi, was den

00:24:01.623 --> 00:24:04.162
grundsätzlichen Ansatz

00:24:04.162 --> 00:24:05.002
angeht, aber

00:24:05.002 --> 00:24:07.742
es ist halt auch irgendwie wieder so ein bisschen anders.

00:24:08.102 --> 00:24:10.042
Aber einfach historisch, man hatte so eine

00:24:10.042 --> 00:24:12.002
Explosion von unterschiedlichen

00:24:12.002 --> 00:24:14.242
Webframework-Projekten irgendwann

00:24:14.242 --> 00:24:15.962
halt um diesen Dreh, wo die alle entstanden sind,

00:24:15.962 --> 00:24:17.282
2004, 2005, 2006.

00:24:17.942 --> 00:24:19.202
Pyramid ist auch aus der Zeit, oder?

00:24:20.162 --> 00:24:21.082
Das weiß ich nicht.

00:24:21.182 --> 00:24:22.202
Kann sein, dass das auch später war.

00:24:22.562 --> 00:24:24.582
Ich weiß es nicht so genau bei Pyramid, aber

00:24:24.582 --> 00:24:27.562
viele Webframeworks

00:24:27.562 --> 00:24:28.602
kommen halt aus der Zeit.

00:24:29.623 --> 00:24:30.822
Oder da gab es halt ganz, ganz viele.

00:24:30.942 --> 00:24:33.302
Da gab es so eine Zeit, wo alle zwei Monate

00:24:33.302 --> 00:24:35.342
irgendwie was Neues rausgekommen ist.

00:24:35.642 --> 00:24:37.082
So wie jetzt bei JavaScript.

00:24:39.642 --> 00:24:41.042
Und ja,

00:24:41.262 --> 00:24:42.462
die meisten sind wieder verschwunden.

00:24:43.182 --> 00:24:44.602
Ich weiß nicht, was gab es damals?

00:24:44.602 --> 00:24:46.602
also Turbo Gears und ach was ist der Teufel

00:24:46.602 --> 00:24:48.682
Naja, das meiste ist halt alles wieder

00:24:48.682 --> 00:24:50.822
verschwunden und übrig

00:24:50.822 --> 00:24:52.662
geblieben sind im Grunde Flask und Django

00:24:52.662 --> 00:24:54.902
und die repräsentieren

00:24:54.902 --> 00:24:56.042
ja auch so irgendwie

00:24:56.042 --> 00:24:58.142
ja, gegensätzliche

00:24:58.142 --> 00:25:00.522
also die Enden von irgendwie so

00:25:00.522 --> 00:25:02.502
also entweder Batteries included oder halt irgendwie

00:25:02.502 --> 00:25:04.222
sehr wenig dabei, aber

00:25:04.222 --> 00:25:05.262
dafür sehr flexibel

00:25:05.262 --> 00:25:08.502
Ja, genau, also der Unterschied auch mit den UAMs

00:25:08.502 --> 00:25:10.082
hatten wir eben schon gesprochen, dass halt Django

00:25:10.082 --> 00:25:12.822
den UAM

00:25:12.822 --> 00:25:14.462
mitliefert und dass bei Flask meistens

00:25:14.462 --> 00:25:15.342
SQL-Archive nimmst.

00:25:15.902 --> 00:25:17.482
Ja, aber kannst halt auch irgendwas anderes nehmen.

00:25:18.902 --> 00:25:20.262
Hast da keine feste Bindung.

00:25:20.782 --> 00:25:22.102
Ja, aber irgendwie seit

00:25:22.102 --> 00:25:24.302
ein paar Jahren gibt es halt sowas Ähnliches

00:25:24.302 --> 00:25:25.602
wieder. Es gibt wieder viele neue

00:25:25.602 --> 00:25:26.682
Web-Frameworks.

00:25:28.302 --> 00:25:30.042
Was vor allen Dingen an der

00:25:30.042 --> 00:25:32.222
neuen Syntax bei Python ist,

00:25:32.282 --> 00:25:34.182
liegt halt an der Sprache, die sich geändert hat.

00:25:34.182 --> 00:25:35.842
Genau, an den Typefilms, die es dazu gekommen sind.

00:25:35.902 --> 00:25:37.422
Die Typefilms, der Async-IO.

00:25:38.682 --> 00:25:39.402
Genau, das ist Async.

00:25:39.402 --> 00:25:41.242
Und was unter FastAPI drunter liegt,

00:25:41.322 --> 00:25:42.282
ist ja Starlet.

00:25:43.362 --> 00:25:44.002
Starlet, genau.

00:25:44.002 --> 00:25:46.282
Vielleicht kann man das so ein bisschen in die ganze

00:25:46.282 --> 00:25:48.502
Historie so ein bisschen kurz erzählen.

00:25:48.782 --> 00:25:50.642
Also eben, wir sehen

00:25:50.642 --> 00:25:52.082
so Async-Webframeworks,

00:25:52.202 --> 00:25:54.262
jetzt wieder ganz viele, so Scenic, Falcon,

00:25:55.222 --> 00:25:55.902
FastAPI,

00:25:56.722 --> 00:25:57.102
Quad,

00:25:58.302 --> 00:26:00.022
also jetzt gibt es auch wieder ganz viele.

00:26:00.902 --> 00:26:02.762
Und der

00:26:02.762 --> 00:26:04.742
Autor von FastAPI

00:26:04.742 --> 00:26:06.782
hat sich auch viele angeguckt und hatte

00:26:06.782 --> 00:26:07.702
vorher...

00:26:07.702 --> 00:26:10.542
Ja, viele andere coole Sachen

00:26:10.542 --> 00:26:11.302
noch macht nebenbei.

00:26:11.302 --> 00:26:11.962
in dem Python API.

00:26:12.862 --> 00:26:14.362
Also Type-A ist auch sehr ähnlich.

00:26:14.662 --> 00:26:17.142
Es gibt auch SQL-Model, wenn man das irgendwie mit OEM machen möchte.

00:26:18.042 --> 00:26:19.123
Aber vielleicht erstmal nochmal,

00:26:19.442 --> 00:26:20.842
was du sagen möchtest. Genau, der hat

00:26:20.842 --> 00:26:22.702
viel Django gemacht oder

00:26:22.702 --> 00:26:24.922
mit anderen, der hat auch viele APIs gemacht

00:26:24.922 --> 00:26:27.302
und war auf der Suche

00:26:27.302 --> 00:26:29.062
nach einem Framework, das halt irgendwie

00:26:29.062 --> 00:26:29.942
bessere

00:26:29.942 --> 00:26:32.742
Entwickler-Experience irgendwie bietet.

00:26:32.982 --> 00:26:34.302
Also Django REST-Framework oder so.

00:26:35.762 --> 00:26:37.242
Er fand das jetzt nicht schlecht,

00:26:37.242 --> 00:26:38.762
er fand das schon gut. Also der hat sich halt auch

00:26:38.762 --> 00:26:40.422
also die Browsable

00:26:40.422 --> 00:26:42.302
API bei Django REST Framework.

00:26:42.422 --> 00:26:44.462
Es war halt auch eine wesentliche Inspiration für das, was er

00:26:44.462 --> 00:26:45.422
dann halt da gemacht hat.

00:26:47.002 --> 00:26:48.702
Und fand das schon gut,

00:26:49.022 --> 00:26:50.722
aber es war halt

00:26:50.722 --> 00:26:52.562
nicht alles dabei, was er gerne gehabt

00:26:52.562 --> 00:26:52.842
hätte.

00:26:54.602 --> 00:26:56.123
Ja, dann

00:26:56.123 --> 00:26:58.422
war aber ein Ding fast

00:26:58.422 --> 00:27:00.162
perfekt. Also er hat sich zum Beispiel

00:27:00.162 --> 00:27:01.462
Django REST Framework hat er sich viele Sachen

00:27:01.462 --> 00:27:04.422
gut gefasst, aber es war halt nicht. Dann hat er sich

00:27:04.422 --> 00:27:05.922
Marshmallow angeguckt, bei Flask

00:27:05.922 --> 00:27:08.482
fand er auch gut, diese ganzen Validierungsgeschichten.

00:27:08.762 --> 00:27:10.322
und Serialisierung von

00:27:10.322 --> 00:27:12.482
ganzen Objekt-Hierarchien und so, aber

00:27:12.482 --> 00:27:13.802
das ist halt

00:27:13.802 --> 00:27:16.123
auch noch nicht so

00:27:16.123 --> 00:27:18.602
hundertprozentig hat das Best getroffen, was er

00:27:18.602 --> 00:27:20.022
irgendwie haben wollte und

00:27:20.022 --> 00:27:22.623
es gab noch ein paar andere Sachen, die er sich auch angeguckt hat

00:27:22.623 --> 00:27:24.702
und

00:27:24.702 --> 00:27:26.642
dann

00:27:26.642 --> 00:27:27.882
hat er

00:27:27.882 --> 00:27:30.522
sich dann der Autor von

00:27:30.522 --> 00:27:32.682
Tom Christy ist ja auch

00:27:32.682 --> 00:27:34.522
so einer, der hat ganz, ganz viele Projekte gemacht

00:27:34.522 --> 00:27:36.123
und

00:27:36.382 --> 00:27:38.162
viele Dinge sind auch Basisinfrastruktur

00:27:38.162 --> 00:27:39.062
für ganz viele andere Sachen.

00:27:40.402 --> 00:27:42.302
Er hat Django Restorent Work irgendwann mal geschrieben,

00:27:42.922 --> 00:27:44.582
dann hat er irgendwann Django Restorent Work

00:27:44.582 --> 00:27:46.442
quasi abgegeben oder

00:27:46.442 --> 00:27:47.762
macht es, weil

00:27:47.762 --> 00:27:50.502
ehrlich gesagt ist es auch mehr oder weniger fertig, da ändert sich

00:27:50.502 --> 00:27:51.922
schon seit einigen Jahren nicht mehr viel.

00:27:53.602 --> 00:27:54.442
Und hat dann

00:27:54.442 --> 00:27:56.402
etwas gemacht, wollte aber schon

00:27:56.402 --> 00:27:58.123
APIs weitermachen und hat dann API Star

00:27:58.123 --> 00:27:59.962
mal ins Leben gerufen.

00:28:00.862 --> 00:28:02.242
Und die Idee dabei war halt auch

00:28:02.242 --> 00:28:04.062
so ein bisschen irgendwie

00:28:04.062 --> 00:28:06.623
das so zu machen, dass es halt von der Kommandozeile

00:28:06.623 --> 00:28:08.542
ausgeht, plus irgendwie im Web, dass

00:28:08.542 --> 00:28:10.462
es halt alles das gleiche Interface hat, mit Typen dran

00:28:10.462 --> 00:28:12.802
und nativ Async und all sowas.

00:28:13.782 --> 00:28:13.962
Und

00:28:13.962 --> 00:28:15.062
genau,

00:28:16.762 --> 00:28:18.422
Sebastian Ramirez meinte dann auch so,

00:28:18.482 --> 00:28:20.482
ja, das war eigentlich schon genau das, was ich gerne gehabt hätte.

00:28:20.902 --> 00:28:22.142
Und dann hat er aber

00:28:22.142 --> 00:28:24.623
Tom Christie irgendwie angefangen, Starlet zu entwickeln.

00:28:25.802 --> 00:28:26.002
Also

00:28:26.002 --> 00:28:28.062
auch ein Web-Framework, aber sehr

00:28:28.062 --> 00:28:30.402
Basis-Infrastruktur-mäßig, sehr

00:28:30.402 --> 00:28:32.402
auf Async fokussiert und gar nicht mehr unbedingt

00:28:32.402 --> 00:28:34.682
im API-Bereich. Und APSAR

00:28:34.682 --> 00:28:36.402
ist dann eher zu so einem Schema,

00:28:36.402 --> 00:28:37.682
Validierungstool geworden.

00:28:38.623 --> 00:28:40.342
Und das heißt, das Ding, was

00:28:40.342 --> 00:28:42.442
er am besten fand eigentlich oder am besten zu seinen

00:28:42.442 --> 00:28:44.602
Anforderungen passte, hat plötzlich

00:28:44.602 --> 00:28:46.362
den Fokus gewechselt und was anderes gemacht.

00:28:46.542 --> 00:28:48.482
Und dann dachte er so, oh Mist, jetzt gibt's

00:28:48.482 --> 00:28:49.582
nix mehr. Jetzt muss ich irgendwie,

00:28:49.982 --> 00:28:52.422
ich wollte es wirklich vermeiden, aber jetzt muss ich es vielleicht auch selber

00:28:52.422 --> 00:28:54.242
in einen Webfile schreiben. Und dann hat er das halt

00:28:54.242 --> 00:28:56.342
gemacht und dabei ist FastAPI

00:28:56.342 --> 00:28:58.422
rausgekommen. Und dabei hat er, glaube ich, relativ viel

00:28:58.422 --> 00:29:00.722
auch noch an Pydentic mit rumgewerkelt,

00:29:00.862 --> 00:29:02.562
wenn ich das so gesehen habe. Ja, genau. Pydentic

00:29:02.562 --> 00:29:04.502
ist halt eine der Geschichten,

00:29:04.602 --> 00:29:06.282
die sonst nirgendwo drin sind, die halt da

00:29:06.282 --> 00:29:08.542
mittlerweile sind. Genau, weil halt so Erweiterung

00:29:08.542 --> 00:29:10.142
von Data Class das halt, dass man so ein bisschen

00:29:10.142 --> 00:29:12.422
Typen und Modelle hat

00:29:12.422 --> 00:29:14.362
dann direkt mit Validierung und so. Aber darauf

00:29:14.362 --> 00:29:16.242
gehen wir gleich ein bisschen genauer ein, würde ich sagen.

00:29:16.782 --> 00:29:18.262
Also wir haben gesagt, das ist jetzt ASCII,

00:29:18.322 --> 00:29:20.002
hast du gesagt, das ist Async.

00:29:20.082 --> 00:29:22.822
SGI, ja. Was ist denn da eine ASCII-Applikation

00:29:22.822 --> 00:29:23.442
überhaupt nochmal?

00:29:26.182 --> 00:29:27.322
Die immer noch fragen.

00:29:28.422 --> 00:29:29.162
Ja, also

00:29:29.162 --> 00:29:32.222
ganz lange der Standard für die

00:29:32.222 --> 00:29:34.123
Kommunikation zwischen irgendwie dem

00:29:34.123 --> 00:29:37.022
Applikationsserver, der halt irgendwie

00:29:37.022 --> 00:29:39.022
tatsächlich Requests annimmt und dann irgendwie

00:29:39.022 --> 00:29:40.962
die Kommunikation mit dem Browser tatsächlich

00:29:40.962 --> 00:29:42.742
macht. Das macht man ja normalerweise nicht,

00:29:43.242 --> 00:29:44.762
wenn man irgendwie eine Applikation

00:29:44.762 --> 00:29:45.502
schreibt, sondern

00:29:45.502 --> 00:29:47.522
das nennt sich

00:29:47.522 --> 00:29:50.362
WSGI oder WSGI oder

00:29:50.362 --> 00:29:51.742
weiß ich nicht, wie man das am besten ausspricht,

00:29:51.862 --> 00:29:52.382
Microwisky.

00:29:52.623 --> 00:29:53.822
Nicht dasselbe wie

00:29:53.822 --> 00:29:55.602
What you see is what you get, Whisky.

00:29:58.123 --> 00:30:00.242
Das Ding,

00:30:01.102 --> 00:30:02.422
das ist auch super

00:30:02.422 --> 00:30:04.022
einfach. Also eigentlich ist alles total trivial.

00:30:04.382 --> 00:30:06.282
Aber das Gute, dass es halt ein Standard ist,

00:30:06.722 --> 00:30:08.222
das ist mehr oder weniger eine Funktion,

00:30:08.623 --> 00:30:10.382
die man halt implementieren muss. Und wenn man das

00:30:10.382 --> 00:30:13.002
tut, ist man halt ein WSGI-Server.

00:30:13.702 --> 00:30:14.442
Der Grund,

00:30:14.522 --> 00:30:16.302
warum man da jetzt nochmal irgendwas anderes brauchte,

00:30:16.662 --> 00:30:18.182
also der kriegt im Wesentlichen ein Request,

00:30:18.262 --> 00:30:20.042
kommt rein, Response geht raus. Das ist es eigentlich.

00:30:20.202 --> 00:30:22.242
Das ist mein klassischer HTTP-Kind.

00:30:23.422 --> 00:30:23.782
Ja.

00:30:24.482 --> 00:30:24.842
Genau.

00:30:24.842 --> 00:30:26.422
Aber genau.

00:30:27.022 --> 00:30:28.762
So, jetzt ist aber...

00:30:28.762 --> 00:30:30.623
Ja, Dinge haben sich geändert.

00:30:30.623 --> 00:30:32.643
und man will jetzt eventuell auch solche Dinge

00:30:32.643 --> 00:30:34.742
machen können wie Websockets oder halt

00:30:34.742 --> 00:30:36.722
man hat halt eventuell langlaufende Requests

00:30:36.722 --> 00:30:38.542
und

00:30:38.542 --> 00:30:42.802
Man möchte halt nicht nur

00:30:42.802 --> 00:30:44.782
einmal eine Response zurückgeben können,

00:30:44.922 --> 00:30:46.402
sondern vielleicht halt auch irgendwie

00:30:46.402 --> 00:30:48.802
wieder was zurückbekommen,

00:30:48.982 --> 00:30:50.522
dann wieder was rausreichen und

00:30:50.522 --> 00:30:52.402
mit Co-Routinen geht das ja super eigentlich.

00:30:53.362 --> 00:30:54.462
Und genau,

00:30:54.602 --> 00:30:56.602
dann gibt es, aber es gab kein

00:30:56.602 --> 00:30:58.662
Standard und dann hat irgendwann

00:30:58.662 --> 00:31:00.802
glaube ich, Andrew Godwin,

00:31:00.942 --> 00:31:03.042
auch bekannter Django-

00:31:03.042 --> 00:31:04.342
Entwickler, der hat

00:31:04.342 --> 00:31:06.143
das Migrations-Ding gebaut und so.

00:31:08.502 --> 00:31:08.902
Der

00:31:08.902 --> 00:31:10.962
hat dann irgendwann in diesen ASGI-

00:31:10.962 --> 00:31:11.582
Standard geschrieben,

00:31:12.522 --> 00:31:14.883
um halt das dann halt möglich zu

00:31:14.883 --> 00:31:16.482
machen, dass man da halt ein Standard hat für alle.

00:31:17.182 --> 00:31:18.462
Und da ist es im Grunde so,

00:31:18.542 --> 00:31:20.462
es ist auch wieder super minimal, aber

00:31:20.462 --> 00:31:22.542
man hat auch eine Funktion, die man implementieren muss

00:31:22.542 --> 00:31:24.522
und die kriegt im Grunde eine Receive- und Assistent-Funktion

00:31:24.522 --> 00:31:26.242
und halt, ich weiß gar nicht, muss ich nachgucken,

00:31:26.342 --> 00:31:26.582
Scope.

00:31:28.662 --> 00:31:29.682
Ja, aber

00:31:29.682 --> 00:31:32.482
da geht das halt. Da kannst du halt auch wieder Sachen

00:31:32.482 --> 00:31:33.922
nochmal empfangen und

00:31:33.922 --> 00:31:36.222
dann irgendwas machen und dann wieder was rausschicken und

00:31:36.222 --> 00:31:38.623
bist halt nicht in diesem Request-Response-Ding

00:31:38.623 --> 00:31:40.562
so drin.

00:31:41.582 --> 00:31:42.182
Ja, und

00:31:42.182 --> 00:31:43.082
genau.

00:31:44.522 --> 00:31:46.422
Ja, und FastAPI ist halt ein SGIS-Server.

00:31:46.822 --> 00:31:48.342
Und dann gibt es halt eine gute

00:31:48.342 --> 00:31:50.362
Implementation darunter. Das ist

00:31:50.362 --> 00:31:51.082
UV-Corn.

00:31:52.542 --> 00:31:53.662
UV-Loop, da hatten wir es schon.

00:31:54.242 --> 00:31:56.282
Also eigentlich ganz unten drunter ist LibUV.

00:31:56.802 --> 00:31:58.242
Das ist das Ding, was halt auch unter

00:31:58.242 --> 00:31:59.202
Node.js darunter liegt.

00:32:00.322 --> 00:32:01.462
Aber ich glaube, da haben wir auch schon

00:32:01.462 --> 00:32:02.702
eine Episode mal drüber gesprochen.

00:32:02.722 --> 00:32:05.742
Ja, vielleicht einmal doch mal kurz erklären, weil nicht alle Leute haben ja alle Episoden gehört.

00:32:05.942 --> 00:32:07.502
Das ist halt eine Bibliothek, die

00:32:07.502 --> 00:32:09.342
Backups trahiert, die dieses

00:32:09.342 --> 00:32:11.422
Betriebssystem, dieses Calls Backups trahiert,

00:32:11.522 --> 00:32:13.062
die man halt benutzen muss, um halt schnell

00:32:13.062 --> 00:32:15.562
I.O. zu machen.

00:32:16.322 --> 00:32:17.662
Genau. Und das ist halt unterschiedlich,

00:32:17.702 --> 00:32:19.042
je nachdem, was man verwendet. Unter Windows

00:32:19.042 --> 00:32:21.762
TCP Completion Ports oder was auch immer

00:32:21.762 --> 00:32:22.643
man da verwendet, keine Ahnung.

00:32:23.662 --> 00:32:25.162
Unter FreeBSD ist es halt

00:32:25.162 --> 00:32:25.662
KQ.

00:32:28.242 --> 00:32:28.722
und

00:32:28.722 --> 00:32:30.623
übrigens ist es halt

00:32:30.623 --> 00:32:32.282
E-Poll und das Ding

00:32:32.282 --> 00:32:34.822
bietet halt ein Standardinterface

00:32:34.822 --> 00:32:35.522
für all diese Dinge,

00:32:36.202 --> 00:32:38.342
SelectPoll, ich weiß nicht, was da noch alles drin ist

00:32:38.342 --> 00:32:40.802
und das kann man halt benutzen

00:32:40.802 --> 00:32:42.623
und da muss man sich nicht drum kümmern, auf welchem Betriebssystem

00:32:42.623 --> 00:32:43.222
man läuft und so.

00:32:44.102 --> 00:32:45.883
Und genau, das

00:32:45.883 --> 00:32:48.582
und Node.js hat

00:32:48.582 --> 00:32:49.022
das halt

00:32:49.022 --> 00:32:52.562
relativ, hat diese

00:32:52.562 --> 00:32:54.282
Entwicklung da getrieben, weil die haben das halt

00:32:54.282 --> 00:32:56.442
dann stark verwendet

00:32:56.442 --> 00:32:57.702
und

00:32:57.702 --> 00:32:59.482
ja, mit den

00:32:59.482 --> 00:33:01.982
AsyncIO

00:33:01.982 --> 00:33:03.762
Primitiv Keyword-Geschichten

00:33:03.762 --> 00:33:05.862
in Python bot es sich dann halt ja auch

00:33:05.862 --> 00:33:07.042
an, da irgendwie sowas zu

00:33:07.042 --> 00:33:09.842
verwenden und da gab es halt die schnelle Event-Loop

00:33:09.842 --> 00:33:11.722
Implementation mit UV-Loop von den

00:33:11.722 --> 00:33:12.962
Leuten, die jetzt HTML gemacht haben

00:33:12.962 --> 00:33:15.962
und auf UV-Loop drauf

00:33:15.962 --> 00:33:17.202
sitzt halt UV-Corn,

00:33:17.842 --> 00:33:19.782
also quasi so wie G-Unicorn

00:33:19.782 --> 00:33:21.542
halt als Applikations-Server, der dann halt

00:33:21.542 --> 00:33:23.522
Web-Geschichten macht und dann halt UV-Loop

00:33:23.522 --> 00:33:25.383
nutzt, um halt schnell I.O. machen zu können

00:33:25.383 --> 00:33:27.482
und das ist auch wieder ein Projekt von

00:33:27.482 --> 00:33:27.902
Tom Christie.

00:33:28.502 --> 00:33:30.502
Okay, ja, der weißt du, die Katze mit dem Schwanz.

00:33:30.982 --> 00:33:33.422
Genau, und da drüber

00:33:33.422 --> 00:33:35.123
gibt es halt dann nochmal so ein minimales

00:33:35.123 --> 00:33:37.222
Web-Framework, was halt dann

00:33:37.222 --> 00:33:39.222
nochmal die ganzen Routing,

00:33:39.602 --> 00:33:41.282
Request-Response-Geschichten abstrahiert und das ist

00:33:41.282 --> 00:33:42.062
halt dann Starlet.

00:33:43.902 --> 00:33:45.542
Ja, und FastAPI

00:33:45.542 --> 00:33:46.182
benutzt Starlet.

00:33:47.302 --> 00:33:48.702
Und, ja,

00:33:49.362 --> 00:33:51.222
genau, aber

00:33:51.222 --> 00:33:52.782
die Idee ist im Grunde viele Sachen zu kombinieren,

00:33:52.902 --> 00:33:55.682
Pydentics kombinieren mit Typ-Annotationen,

00:33:55.802 --> 00:33:57.143
mit

00:33:57.143 --> 00:33:58.582
mit einer Dependency Injection

00:33:58.582 --> 00:34:01.162
Geschichte für

00:34:01.162 --> 00:34:02.462
Parameter und sowas.

00:34:03.462 --> 00:34:03.662
Und

00:34:03.662 --> 00:34:06.582
halt Stalette als

00:34:06.582 --> 00:34:08.343
quasi schnell,

00:34:09.222 --> 00:34:10.762
für das schnell unten drunter.

00:34:11.462 --> 00:34:12.242
Und ASVI.

00:34:13.022 --> 00:34:14.863
Und ja, das

00:34:14.863 --> 00:34:16.843
ist eigentlich eine ziemlich coole Kombination

00:34:16.843 --> 00:34:18.462
irgendwie. Man kann jetzt sagen, na gut,

00:34:19.222 --> 00:34:20.902
ich habe mir jetzt den Fast-API-Source-Code

00:34:20.902 --> 00:34:22.022
auch so ein bisschen angeguckt mal.

00:34:23.022 --> 00:34:24.843
Also ganz oft sieht man schon

00:34:24.843 --> 00:34:26.843
so irgendwie, naja, er importiert

00:34:26.843 --> 00:34:28.082
halt Sachen von Starlet und das war's.

00:34:28.522 --> 00:34:30.703
Das ganze WebSocket-Modul in

00:34:30.703 --> 00:34:32.782
FastAPI ist halt irgendwie vom Starlet-Import-WebSocket

00:34:32.782 --> 00:34:34.782
fertig. Ja gut, also abstrahiert halt

00:34:34.782 --> 00:34:36.762
und dann abgibt es vielleicht an ein, zwei Stellen

00:34:36.762 --> 00:34:38.323
und wird halt gut integriert.

00:34:38.722 --> 00:34:40.482
Genau. Das, was man da haben möchte, ja. Und es ist halt,

00:34:40.602 --> 00:34:42.582
die Dokumentation ist halt schön geschrieben und so. Er hat das dann

00:34:42.582 --> 00:34:44.703
irgendwann mal in Reddit, auf irgendeinem

00:34:44.703 --> 00:34:47.082
Reddit-Group oder so angekündigt,

00:34:47.222 --> 00:34:48.462
irgendwie FastAPI

00:34:48.462 --> 00:34:50.623
und die Reaktionen waren da so ein bisschen geteilt.

00:34:51.922 --> 00:34:52.883
Also ich finde das

00:34:52.883 --> 00:34:54.363
super, was er gemacht hat, aber

00:34:54.363 --> 00:34:56.683
auf Reddit wurde dann halt irgendwie

00:34:56.683 --> 00:35:26.663
und Python.

00:35:26.683 --> 00:35:56.663
und Python.

00:35:56.683 --> 00:35:57.123
und

00:35:57.123 --> 00:36:00.203
im Grunde

00:36:00.203 --> 00:36:01.982
ist es eine wirklich

00:36:01.982 --> 00:36:04.242
schicke Geschichte und überhaupt

00:36:04.242 --> 00:36:05.922
ich würde mal sagen, also was daran halt neu ist,

00:36:05.922 --> 00:36:08.102
es gibt es erst seit

00:36:08.102 --> 00:36:09.782
2019 und das ist jetzt schon

00:36:09.782 --> 00:36:12.143
weiß ich nicht, sehr

00:36:12.143 --> 00:36:14.183
sehr verbreitet, keine Ahnung wie verbreitet, aber in den

00:36:14.183 --> 00:36:15.922
entsprechenden Umfragen ist es halt irgendwie

00:36:15.922 --> 00:36:18.262
nicht mehr viel

00:36:18.262 --> 00:36:19.183
hinter Django und F.L.A.S.K.

00:36:19.442 --> 00:36:21.442
sondern wie viele Leute verwenden das

00:36:21.442 --> 00:36:23.462
und das

00:36:23.462 --> 00:36:25.322
ist, ich glaube, einer der Gründe, warum

00:36:25.322 --> 00:36:26.582
dass so ist es einmal, dass es halt

00:36:26.582 --> 00:36:29.183
viele Dinge, also wo bei anderen Geschichten

00:36:29.183 --> 00:36:30.942
was gefehlt hat, sind halt da mit drin

00:36:30.942 --> 00:36:33.062
und dann auch

00:36:33.062 --> 00:36:33.462
dass

00:36:33.462 --> 00:36:35.262
dass

00:36:35.262 --> 00:36:39.362
diese Developer Experience Geschichte da so betont

00:36:39.362 --> 00:36:41.262
wird, das ist auch etwas, was man jetzt in letzter Zeit

00:36:41.262 --> 00:36:43.042
immer mehr sieht, was ich von früher

00:36:43.042 --> 00:36:44.082
kenne ich das so nicht

00:36:44.082 --> 00:36:46.562
Da musst du doch alles von Hand und selber

00:36:46.562 --> 00:36:47.942
schön und hässlich

00:36:47.942 --> 00:36:51.022
Wenn es kryptisch ist und schwer zu installieren

00:36:51.022 --> 00:36:51.762
das war so ein bisschen

00:36:51.762 --> 00:36:53.822
Deswegen macht man das

00:36:53.822 --> 00:36:57.143
Ja genau, da musst du ja erstmal beweisen, dass du manns genug bist

00:36:57.143 --> 00:36:59.822
und hier das Schwert aus dem Stein ziehen

00:36:59.822 --> 00:37:00.482
bevor du irgendwie

00:37:00.482 --> 00:37:03.482
so und dass man das den Entwicklern

00:37:03.482 --> 00:37:05.562
einfach macht und dass die da

00:37:05.562 --> 00:37:06.602
irgendwie einfach mit Google spielen

00:37:06.602 --> 00:37:09.422
Ja das ist irgendwie so ein Ansatz

00:37:09.422 --> 00:37:11.962
also früher wäre das Leuten

00:37:11.962 --> 00:37:13.022
fremdartig vorgekommen

00:37:13.022 --> 00:37:15.663
aber heute ist das irgendwie

00:37:15.663 --> 00:37:17.163
heute, ja, Zeiten haben sich geändert

00:37:17.163 --> 00:37:19.582
Ja so will man das wahrscheinlich auch machen, weil man keine Lust hat

00:37:19.582 --> 00:37:20.663
die ganze Zeit nur im Keller rumzusitzen

00:37:20.663 --> 00:37:23.802
Gut ist, wenn die Leute aus dem Business noch erwarten

00:37:23.802 --> 00:37:25.022
und das hat genauso lange gedauert wie früher.

00:37:26.502 --> 00:37:27.123
Ja, ja, ja, gut.

00:37:27.522 --> 00:37:29.822
Ich meine, es ist halt die Frage, ob einem das wirklich wahnsinnig viel hilft.

00:37:30.482 --> 00:37:31.782
Ja, ich würde schon sagen.

00:37:32.302 --> 00:37:32.442
Ja.

00:37:34.883 --> 00:37:36.203
Aber es ist auf jeden Fall

00:37:36.203 --> 00:37:37.962
irgendwie eine neue Geschichte und ich

00:37:37.962 --> 00:37:39.683
finde das ja auch im Prinzip gut, dass man da so,

00:37:39.842 --> 00:37:41.562
dass das halt irgendwie alles ein bisschen angenehmer wird

00:37:41.562 --> 00:37:43.203
und nicht so stochlich ist.

00:37:43.883 --> 00:37:44.123
Okay.

00:37:44.123 --> 00:37:46.262
Ja, vielleicht müssen wir

00:37:46.262 --> 00:37:47.902
mal kurz darüber reden, wie der das macht. Also zum Beispiel

00:37:47.902 --> 00:37:50.082
über Type Annotations geht halt da ganz viel an den Kunden

00:37:50.082 --> 00:37:52.102
dran. Parameter kannst du übergeben

00:37:52.102 --> 00:37:53.942
und kannst direkt sagen, okay,

00:37:54.842 --> 00:37:56.022
das Query enthält jetzt ein

00:37:56.022 --> 00:37:57.602
Integer oder sowas.

00:37:57.883 --> 00:37:59.982
Ja, also eine Geschichte, das hatte mich am Anfang

00:37:59.982 --> 00:38:00.982
auch so ein bisschen verwirrt.

00:38:01.482 --> 00:38:03.883
Die Query würde ich jetzt so

00:38:03.883 --> 00:38:05.962
intuitiv sagen, ich weiß aber nicht, ob es richtig ist,

00:38:06.082 --> 00:38:06.302
keine Ahnung.

00:38:08.302 --> 00:38:09.883
Das hatte mich am Anfang, da wurde ich dann nach der, also

00:38:09.883 --> 00:38:11.942
klar, also man schreibt jetzt, also man

00:38:11.942 --> 00:38:13.942
hat auch immer, also die Dinger, die man halt

00:38:13.942 --> 00:38:16.143
in FastAP schreibt, sozusagen

00:38:16.143 --> 00:38:17.842
die Endpunkte,

00:38:18.163 --> 00:38:19.362
was man sagen möchte,

00:38:19.762 --> 00:38:22.002
sind halt Funktionen und die Funktionen haben halt Parameter

00:38:22.002 --> 00:38:24.022
und dann geht da was rein, also kommt ein Request

00:38:24.022 --> 00:38:26.362
mehr oder weniger rein und es geht eine Response raus.

00:38:27.222 --> 00:38:28.383
Man sagt jetzt nicht unbedingt Request,

00:38:28.522 --> 00:38:29.683
beziehungsweise

00:38:29.683 --> 00:38:32.143
bei Django wäre es halt so, da kommt ein Request rein,

00:38:32.203 --> 00:38:33.542
geht eine Response raus und dann

00:38:33.542 --> 00:38:36.102
popelt man sich sozusagen aus dem Request die ganzen

00:38:36.102 --> 00:38:37.922
Sachen halt raus, die man so braucht.

00:38:38.183 --> 00:38:40.102
Also es gibt dann Request.get oder

00:38:40.102 --> 00:38:42.022
Request.nation oder

00:38:42.022 --> 00:38:44.203
ja, man nimmt halt den Body

00:38:44.203 --> 00:38:45.822
und dann gut, wenn man jetzt sowas wie

00:38:45.822 --> 00:38:48.302
REST Framework oder Formulare

00:38:48.302 --> 00:38:49.623
nimmt, dann natürlich eine ganze Menge ab.

00:38:49.982 --> 00:38:51.342
Oder Class-Based Views oder sowas, ja.

00:38:51.342 --> 00:38:52.883
Ja, aber prinzipiell

00:38:52.883 --> 00:38:55.002
muss man sich den, ist der Teil,

00:38:55.742 --> 00:38:57.203
man poolt sich den Kram

00:38:57.203 --> 00:38:58.183
da selber halt raus so.

00:38:59.462 --> 00:39:01.143
Und das ist bei FastAPI halt nicht so.

00:39:01.643 --> 00:39:03.203
FastAPI passiert halt sehr viel

00:39:03.203 --> 00:39:04.462
von dieser Magie direkt,

00:39:05.062 --> 00:39:06.802
wenn du die Type-Animation richtig

00:39:06.802 --> 00:39:07.643
dran schreibst.

00:39:08.322 --> 00:39:11.163
Man schreibt halt Type-Animation in die Parameter und dann

00:39:11.163 --> 00:39:13.062
kommen die Daten

00:39:13.062 --> 00:39:15.042
irgendwie magisch da rein.

00:39:15.082 --> 00:39:16.862
Ja, also wenn man besonders gut wird, wenn man da

00:39:16.862 --> 00:39:18.723
Pydentic-Modelle verwendet als

00:39:18.723 --> 00:39:21.102
Parameter

00:39:21.102 --> 00:39:23.223
Annotation, weil dann wird halt die

00:39:23.223 --> 00:39:24.942
Validierung von den Objekten, die da beispielsweise

00:39:24.942 --> 00:39:27.282
als JSON reinkommen oder so, direkt

00:39:27.282 --> 00:39:29.322
mit Pydentic durchgeführt und das ist

00:39:29.322 --> 00:39:31.302
sehr cool, weil halt die ganzen Validierungen dabei sind,

00:39:31.342 --> 00:39:32.802
die kann man an den Pydentic reinschreiben,

00:39:33.183 --> 00:39:35.123
die passiert halt automatisch, die

00:39:35.123 --> 00:39:37.062
Type-Konvertierung passiert automatisch, du hast

00:39:37.062 --> 00:39:38.762
in den Objekten direkt die richtige

00:39:38.762 --> 00:39:41.123
Datenstruktur vorliegen, du kannst

00:39:41.123 --> 00:39:43.123
auch das mit, weiß nicht, sogar mit Daytimes

00:39:43.123 --> 00:39:45.143
machen, deinen eigenen Parser dafür in dieses Pydentic

00:39:45.143 --> 00:39:46.982
Modell integrieren, wie du das haben willst und

00:39:46.982 --> 00:39:49.143
kriegst direkt die nutzbaren Python-Objekte

00:39:49.143 --> 00:39:50.643
da raus, die du brauchst.

00:39:51.102 --> 00:39:53.022
Das ist schon sehr, sehr nett.

00:40:21.102 --> 00:40:22.002
Parametern waren.

00:40:23.203 --> 00:40:24.723
Und ja,

00:40:24.962 --> 00:40:26.962
das funktioniert eigentlich auch immer irgendwie ganz gut.

00:40:27.502 --> 00:40:28.102
Das ist echt super, ja.

00:40:28.942 --> 00:40:30.882
Also was man dann, also vielleicht an der Stelle

00:40:30.882 --> 00:40:32.922
nochmal ganz kurz, würde ich gerne eingehen

00:40:32.922 --> 00:40:34.922
auf SQL-Model, weil

00:40:34.922 --> 00:40:36.683
man diese Pydentic-Modelle, die man dann halt

00:40:36.683 --> 00:40:39.062
netterweise geschrieben hat, mit SQL-Model,

00:40:39.223 --> 00:40:40.862
das ist auch ein Projekt von Sebastian Remires,

00:40:41.262 --> 00:40:43.082
ist noch relativ am Anfang, also noch nicht so ganz

00:40:43.082 --> 00:40:45.082
produktionsreif, da waren noch

00:40:45.082 --> 00:40:46.362
so ein paar Breaking Changes drin, aber

00:40:46.362 --> 00:40:49.342
dann kann man einfach diese Pydentic-Models

00:40:49.342 --> 00:40:50.623
direkt in der Datenbank speichern.

00:40:51.102 --> 00:40:52.683
und der nimmt das dann direkt und zum Beispiel

00:40:52.683 --> 00:40:54.342
mit dem SICO-Icemi drunter

00:40:54.342 --> 00:40:56.623
wird das halt direkt in die Datenbank geschrieben, die man da

00:40:56.623 --> 00:40:58.683
angeschlossen hat, was halt auch sehr angenehm ist, weil man

00:40:58.683 --> 00:41:00.602
halt diese Duplikation von der ganzen

00:41:00.602 --> 00:41:02.703
Logik nicht mehr hat, sondern halt einfach wie

00:41:02.703 --> 00:41:04.422
bei, wenn man das vielleicht von Dango gewohnt ist so ein bisschen,

00:41:04.902 --> 00:41:06.643
nur so Modelle schreibt und hat

00:41:06.643 --> 00:41:08.802
dann direkt seine Datenbank-Anastation und die Validierung

00:41:08.802 --> 00:41:10.663
damit drin. Ja, und

00:41:10.663 --> 00:41:12.302
das ist halt quasi das Gleiche für

00:41:12.302 --> 00:41:14.703
Datenbank, man schreibt halt

00:41:14.703 --> 00:41:16.163
was das ist quasi einmal

00:41:16.163 --> 00:41:18.663
hin und dann gilt das halt für

00:41:19.302 --> 00:41:20.982
Datenbank, also es wird

00:41:20.982 --> 00:41:23.402
einen Datenbankschema daraus generiert, also es wird halt auch das Schema

00:41:23.402 --> 00:41:25.223
für die API daraus generiert

00:41:25.223 --> 00:41:26.703
und das ist halt in beiden Fällen gleich.

00:41:26.982 --> 00:41:29.382
Das ist natürlich schon nett, also man kann sich da vielleicht schon

00:41:29.382 --> 00:41:30.942
eine ganze Menge Schreibarbeit sparen.

00:41:31.102 --> 00:41:33.442
Genau, man kann auch dann tatsächlich, das ist auch in FastAPI

00:41:33.442 --> 00:41:35.262
mit drin, sich direkt das Schema daraus

00:41:35.262 --> 00:41:36.703
rendern lassen, also

00:41:36.703 --> 00:41:37.942
als OpenIP

00:41:37.942 --> 00:41:39.942
kompatibles

00:41:39.942 --> 00:41:43.362
JSON oder so, das ist direkt mit drin, muss man eigentlich

00:41:43.362 --> 00:41:44.842
eine Funktion aufrufen, dann ist das da.

00:41:45.302 --> 00:41:47.242
Auch sehr schick und ich mache

00:41:47.242 --> 00:41:49.382
dabei, also mit SQL-Achimed, die Migration

00:41:49.382 --> 00:41:51.562
ist immer mit Alembic, damit ich so ein bisschen

00:41:51.562 --> 00:41:53.602
so eine Art Tango-mäßiges Migration-System

00:41:53.602 --> 00:41:55.542
habe. Das heißt, kannst du dann sowas machen

00:41:55.542 --> 00:41:57.022
wie Migrate schreiben oder so.

00:41:57.322 --> 00:41:59.062
Das funktioniert ein bisschen anders. Da sind halt

00:41:59.062 --> 00:42:01.502
andere Formen von

00:42:01.502 --> 00:42:03.542
Migrationen dran, aber die schreibt man eigentlich nur an eine Datei an.

00:42:03.562 --> 00:42:05.562
Da kann man relativ viel anpassen und der macht dann auch relativ

00:42:05.562 --> 00:42:07.723
automatisch das Vor- und Zurückspulen.

00:42:08.902 --> 00:42:09.782
Das finde ich ganz schick.

00:42:11.123 --> 00:42:11.502
Ja, aber

00:42:11.502 --> 00:42:13.123
gut, das ist aber dann irgendwie,

00:42:13.282 --> 00:42:15.362
um diese Sachen muss man sich dann halt selber so ein bisschen kümmern.

00:42:15.442 --> 00:42:17.482
Ja, genau. Das ist halt das, was FASAPI nicht mitliefert

00:42:17.482 --> 00:42:19.163
im Vergleich zu Tango oder sowas, aber das

00:42:19.163 --> 00:42:21.402
geht eigentlich auch ganz gut, wenn man es dann reinbaut.

00:42:21.663 --> 00:42:23.382
Ja, also was den Unterschied angeht,

00:42:23.542 --> 00:42:25.362
also wir haben ja schon

00:42:25.362 --> 00:42:27.462
gesagt, irgendwie ist es so ähnlich wie Flask,

00:42:27.602 --> 00:42:29.562
aber ich würde sagen, der Hauptunterschied

00:42:29.562 --> 00:42:31.282
ist eben, dass bei Flask

00:42:31.282 --> 00:42:33.242
man kriegt die Werte

00:42:33.242 --> 00:42:34.442
ja relativ roh

00:42:34.442 --> 00:42:37.163
und man hat eben nicht, weißt du,

00:42:37.163 --> 00:42:38.723
wenn man jetzt in FastAPI

00:42:38.723 --> 00:42:41.143
das schon annotiert hat mit, das ist ein Integer oder so,

00:42:41.183 --> 00:42:41.962
dann kriegt man halt ein Integer.

00:42:42.342 --> 00:42:43.982
In Flask ist das halt nicht so.

00:42:45.163 --> 00:42:46.822
Das ist halt der, genau,

00:42:46.902 --> 00:42:49.082
diese Pidentik-Geschichten, das könnte man

00:42:49.082 --> 00:42:50.902
in Flask vielleicht auch so machen, aber das muss man halt selber machen,

00:42:50.982 --> 00:42:51.623
das ist halt nicht integriert.

00:42:52.902 --> 00:42:54.762
Ja, das ist, und

00:42:54.762 --> 00:42:57.242
vielleicht auch noch etwas, was halt

00:42:57.242 --> 00:42:59.062
interessant ist, wenn man

00:42:59.062 --> 00:43:01.123
gerade so Data Science-Geschichten macht, oder halt

00:43:01.123 --> 00:43:02.802
Dinge, die so ein bisschen anders sind als

00:43:02.802 --> 00:43:05.022
in Django, hast du halt irgendwie

00:43:05.022 --> 00:43:06.982
eine relationelle Datenbank da drunter, weil der ORM

00:43:06.982 --> 00:43:08.922
ist halt so, wenn man den ORM nicht verwenden möchte,

00:43:09.203 --> 00:43:10.922
dann macht es eigentlich gar nicht so viel Sinn, Django

00:43:10.922 --> 00:43:12.542
zu verwenden, weil das ist halt der Hauptteil von Django.

00:43:13.442 --> 00:43:13.742
Und

00:43:13.742 --> 00:43:16.962
wenn man jetzt irgendwie eine MongoDB

00:43:16.962 --> 00:43:18.862
verwenden will, oder so, oder irgendeine

00:43:18.862 --> 00:43:22.762
andere NoSQL-Geschichte, dann ist das halt mit Django eher so. Das geht auch,

00:43:22.902 --> 00:43:26.643
aber muss man halt... Das ist so ein bisschen pain. Das geht nicht über die Modelle.

00:43:26.742 --> 00:43:30.042
So ein modularer Teil. Also wenn man jetzt das mit SQL-Model zum Beispiel verändert hat,

00:43:30.042 --> 00:43:34.022
genau diese Revision, die man halt hat, die kann man ja vor und

00:43:34.022 --> 00:43:37.782
zurück spulen und da kann man sicher alles Mögliche reinhängen.

00:43:38.082 --> 00:43:41.703
Naja, NoSQL hat man auch nicht. Ja, Moment, aber was cool ist, du kannst

00:43:41.703 --> 00:43:46.042
aus diesen Pydentic-Modellen, die du halt hast, kannst du auch erzeugen aus einer

00:43:46.042 --> 00:43:56.845
OpenAPI die du halt hast wenn du eine OpenAPI hast oder sowas Ach so kannst du dir direkt die Pydentik bauen Ach okay Und so hast du dann halt dann die Sachen direkt die du dann auch in eine Datenbank wegschreiben willst

00:43:57.045 --> 00:43:58.785
Also, das ist halt auch schon

00:43:58.785 --> 00:43:59.405
sehr, sehr nett.

00:44:01.105 --> 00:44:02.745
Klar, man muss sich dann halt trotzdem, wenn man das

00:44:02.745 --> 00:44:04.565
jetzt nicht relativ ablegen will, dann irgendwie eine andere

00:44:04.565 --> 00:44:05.785
Integration nehmen.

00:44:06.685 --> 00:44:08.485
Ja, aber sowas geht halt prinzipiell. Während das

00:44:08.485 --> 00:44:10.705
mit XAML eigentlich nicht wirklich geht, kannst du

00:44:10.705 --> 00:44:12.625
halt in FastAPI, ob du jetzt irgendwie eine

00:44:12.625 --> 00:44:14.505
Relationalen Datenbank verwendest oder halt irgendwas

00:44:14.505 --> 00:44:15.565
oder MongoDB oder so.

00:44:16.305 --> 00:44:18.085
Das geht beides. Und zwar

00:44:18.085 --> 00:44:20.065
ist es nicht so, dass man das irgendwie,

00:44:20.425 --> 00:44:22.465
dass man dann gegen das Framework arbeitet,

00:44:22.565 --> 00:44:24.065
wenn man jetzt irgendwie NoSQL verwendet mit

00:44:24.065 --> 00:44:26.425
FASAPI. Ja, das finde ich sehr, sehr

00:44:26.425 --> 00:44:26.845
schick.

00:44:28.565 --> 00:44:28.885
Genau.

00:44:29.565 --> 00:44:30.565
FASAPI selber benutzt

00:44:30.565 --> 00:44:32.625
MakeDocs, MKDocs. Das ist auch sehr schick.

00:44:32.865 --> 00:44:34.045
Ja, weißt du, von wem das ist?

00:44:34.585 --> 00:44:34.925
Nein.

00:44:36.065 --> 00:44:38.805
Warte mal. Ich müsste jetzt einen von

00:44:38.805 --> 00:44:40.165
den Namen sagen, die wir jetzt gerade eben schon erwähnt haben.

00:44:40.185 --> 00:44:41.045
Von Christie ist auch.

00:44:41.145 --> 00:44:44.085
Ja, okay.

00:44:44.085 --> 00:44:45.625
tatsächlich. Ja, das ist echt erstaunlich.

00:44:46.165 --> 00:44:46.985
Ja, genau.

00:44:49.045 --> 00:44:50.185
Ja, auch ganz schick. Also ich habe

00:44:50.185 --> 00:44:52.125
dazu ein kleines Skeleton tatsächlich mal geschrieben, so für

00:44:52.125 --> 00:44:54.005
die kleinen Anfangssachen. Da ist so ein bisschen viel

00:44:54.005 --> 00:44:55.825
vielleicht schon drin, ein bisschen rumgespielt.

00:44:56.145 --> 00:44:57.965
Können wir vielleicht mal verlinken. Vielleicht mag ja jemand

00:44:57.965 --> 00:44:59.985
den direkt benutzen, wenn er es will. Also

00:44:59.985 --> 00:45:02.405
ist das nichts Tolles, aber ein bisschen

00:45:02.405 --> 00:45:04.165
aus. Ich habe damit noch nicht so viel

00:45:04.165 --> 00:45:06.065
gemacht. Ich habe mir aber vorgenommen, dass

00:45:06.065 --> 00:45:07.745
ich das mal tun muss, weil

00:45:07.745 --> 00:45:09.625
Ich habe so ein bisschen Dango versucht zu enthinken.

00:45:09.865 --> 00:45:11.425
Das ist vielleicht nicht immer ganz so cool, aber

00:45:11.425 --> 00:45:13.585
Typer ist da auch dabei. Also so Commands.

00:45:13.585 --> 00:45:14.625
mäßig.

00:45:15.125 --> 00:45:17.705
Was könnte man denn noch so alles erzählen über FastAPI?

00:45:17.825 --> 00:45:19.365
Ja, also vielleicht nochmal so ein bisschen, wie das funktioniert

00:45:19.365 --> 00:45:21.585
mit den Datentypen und den dependency-injected

00:45:21.585 --> 00:45:22.485
Systemen. Man kann ja auch

00:45:22.485 --> 00:45:25.425
damit sowas machen wie Permissions oder

00:45:25.425 --> 00:45:27.505
sowas. Wie du sagen kannst, bestimmte

00:45:27.505 --> 00:45:29.645
Dinge müssen enthalten sein, wie Authentifizierung

00:45:29.645 --> 00:45:31.445
oder so. Ja, also diese

00:45:31.445 --> 00:45:33.245
Magie, dass halt

00:45:33.245 --> 00:45:35.405
irgendwie man einfach nur die

00:45:35.405 --> 00:45:37.445
Annotationen hinschreibt und dann die Werte so

00:45:37.445 --> 00:45:38.445
richtig bekommt.

00:45:39.405 --> 00:45:40.385
Depends on auth.

00:45:41.305 --> 00:45:43.185
Nein, ich wollte nur gerade, das sind halt

00:45:43.185 --> 00:45:44.945
das funktioniert über diese

00:45:44.945 --> 00:45:46.485
Path Operations geschehen

00:45:46.485 --> 00:45:48.625
und das ist halt auch irgendwie

00:45:48.625 --> 00:45:51.325
über Dependency Injection wird das halt

00:45:51.325 --> 00:45:53.445
gemacht. Und du kannst aber auch das selber definieren,

00:45:53.525 --> 00:45:55.125
genau, da musst du halt nur irgendwie, schreibst halt

00:45:55.125 --> 00:45:57.025
Depends und dann übergibst du halt ein Callable

00:45:57.025 --> 00:45:58.445
und das kriegst du dann halt den ganzen Kram.

00:45:58.445 --> 00:46:00.685
Dann kannst du halt Code wiederverwenden,

00:46:00.825 --> 00:46:02.465
der halt irgendwie, weiß ich nicht, irgendwas

00:46:02.465 --> 00:46:04.505
eben ein OAuth-Token irgendwie

00:46:04.505 --> 00:46:05.865
validiert oder so.

00:46:07.485 --> 00:46:08.505
Oder halt irgendwas anderes macht.

00:46:09.345 --> 00:46:10.305
An der Stelle...

00:46:10.305 --> 00:46:11.545
Datenbankverbindung anreicht oder so.

00:46:11.545 --> 00:46:13.405
Was ist denn ein Dependency?

00:46:14.365 --> 00:46:15.925
Oh je, das ist auch so ein Ding.

00:46:16.185 --> 00:46:18.085
Genau, in der letzten Episode hat da schon jemand gesagt,

00:46:18.185 --> 00:46:21.085
ich weiß nicht, ob man das erklären kann.

00:46:21.685 --> 00:46:24.645
Das ist halt auch so ein etwas schwieriges Konzept.

00:46:24.965 --> 00:46:26.125
Also im Grunde...

00:46:26.125 --> 00:46:28.125
Ist das ein Pattern? Kann man das so sagen?

00:46:28.305 --> 00:46:30.945
Ja, das ist irgendwie ein Design-Pattern, kann man sagen.

00:46:31.105 --> 00:46:35.065
Also wie man ein Objekt in eine Klasse reingibt, ohne dass man das jetzt mal neu definiert?

00:46:35.065 --> 00:46:37.385
Nee, es ist eher so, dass du das halt umdrehst.

00:46:37.385 --> 00:46:39.465
sozusagen, also Dependency

00:46:39.465 --> 00:46:41.445
Injection ist ein bisschen

00:46:41.445 --> 00:46:42.965
sozusagen das Ding, wie man

00:46:42.965 --> 00:46:45.645
Dependency Inversion implementiert.

00:46:45.765 --> 00:46:47.685
Also du willst halt nicht, also was du halt

00:46:47.685 --> 00:46:49.145
nicht machen möchtest vielleicht ist

00:46:49.145 --> 00:46:51.665
in deiner Funktion, die

00:46:51.665 --> 00:46:53.865
halt irgendwie Request-Response

00:46:53.865 --> 00:46:55.625
macht, irgendwie ein Datenbank-Ding

00:46:55.625 --> 00:46:57.685
importieren. Und da ist

00:46:57.685 --> 00:46:58.225
er folgendes.

00:46:58.845 --> 00:47:01.405
Du hängst da mal rein quasi.

00:47:01.725 --> 00:47:03.705
Genau. Und dann, was passiert jetzt eigentlich,

00:47:03.805 --> 00:47:05.785
wenn du testest? Okay, das heißt, du musst dich mit reingeben,

00:47:05.785 --> 00:47:07.625
und er ist dann alles abstrahiert in diesem Ding.

00:47:07.625 --> 00:47:09.585
Genau. Und jetzt willst du das aber auch

00:47:09.585 --> 00:47:11.405
nicht explizit irgendwie da rein,

00:47:11.945 --> 00:47:13.565
weil du rufst ja gar nicht, du bist ja gar nicht

00:47:13.565 --> 00:47:14.885
derjenige, der das aufruft,

00:47:15.225 --> 00:47:17.545
deine Funktion, die halt irgendwie

00:47:17.545 --> 00:47:19.045
Request-Response macht,

00:47:19.265 --> 00:47:20.985
sondern das wird ja irgendwie aufgerufen. Das heißt,

00:47:22.465 --> 00:47:23.525
du übergibst es nicht wirklich, sondern

00:47:23.525 --> 00:47:25.385
du injectest es. Es wird halt irgendwie automatisch

00:47:25.385 --> 00:47:27.445
depends on database access oder sowas.

00:47:27.525 --> 00:47:29.445
Genau. Und damit sagst du halt eigentlich,

00:47:29.605 --> 00:47:31.505
dass du das gerne injectest hättest,

00:47:31.505 --> 00:47:32.365
sozusagen an der Stelle.

00:47:32.985 --> 00:47:34.945
Und dann kannst du das halt

00:47:34.945 --> 00:47:36.985
in Tests halt auch ändern. In Tests kannst du dann

00:47:36.985 --> 00:47:37.365
einfach sagen,

00:47:37.445 --> 00:47:40.605
in der Applikation, in der

00:47:40.605 --> 00:47:42.965
Fast API, also dem Hauptapplikationsobjekt

00:47:42.965 --> 00:47:44.125
kann man irgendwie sagen,

00:47:44.485 --> 00:47:45.665
Dependency Override.

00:47:47.325 --> 00:47:48.805
Und dann kannst du halt definieren,

00:47:48.925 --> 00:47:50.085
was da injectet werden soll.

00:47:50.245 --> 00:47:52.425
Und sagst halt, Depends on Database bedeutet jetzt,

00:47:52.545 --> 00:47:54.745
gib mir einfach ein anderes Objekt

00:47:54.745 --> 00:47:56.625
oder eine Testdatenbank. Genau, dann kannst du halt

00:47:56.625 --> 00:47:58.365
die Testdatenbank reinreißen oder du reißt halt

00:47:58.365 --> 00:48:00.285
irgendein Memory-Repository rein.

00:48:01.725 --> 00:48:02.625
Genau, und

00:48:02.625 --> 00:48:04.905
ja, das ist halt sozusagen eine Methode,

00:48:04.945 --> 00:48:06.845
um diese Sachen

00:48:06.845 --> 00:48:08.205
halt voneinander so zu entkoppeln.

00:48:08.625 --> 00:48:10.765
Also eingekoppelt

00:48:10.765 --> 00:48:12.705
wäre es halt, wenn du von irgendwas erbst oder wenn du

00:48:12.705 --> 00:48:14.245
halt irgendwie das importierst oder so,

00:48:15.005 --> 00:48:16.765
dann hängst du halt direkt davon ab und wenn

00:48:16.765 --> 00:48:18.625
du es halt so indirekt reingereift bekommst,

00:48:18.745 --> 00:48:21.085
dann bist du halt so ein bisschen losgelöst.

00:48:23.025 --> 00:48:24.825
Ja. Und das ist halt auch in Flask

00:48:24.825 --> 00:48:26.705
alles ein bisschen schwieriger, das ist halt

00:48:26.705 --> 00:48:28.805
schon elegant gemacht. Wobei, ehrlich gesagt,

00:48:28.965 --> 00:48:30.785
also ich habe mir kurz den Code

00:48:30.785 --> 00:48:31.285
angeguckt,

00:48:32.665 --> 00:48:33.705
also das Konzept

00:48:33.705 --> 00:48:35.445
ist relativ elegant, aber die Implementation

00:48:35.445 --> 00:48:37.165
ist ein bisschen...

00:48:37.165 --> 00:48:39.565
Also da gibt es halt in FASA

00:48:39.565 --> 00:48:40.765
wie all diese Dependencies

00:48:40.765 --> 00:48:43.025
Modul Package und dann

00:48:43.025 --> 00:48:45.405
der Hauptinhalt der Implementation liegt in

00:48:45.405 --> 00:48:46.805
Utils.py und das

00:48:46.805 --> 00:48:50.865
ist auch schon schwer zu lesen.

00:48:52.325 --> 00:48:52.805
Ja.

00:48:53.465 --> 00:48:55.205
Aber es funktioniert auch.

00:48:55.305 --> 00:48:56.525
Also ich finde das, du hast schon recht,

00:48:56.625 --> 00:48:59.285
ich habe es eben mit Def-Friendly oder sowas, also ich finde das

00:48:59.285 --> 00:49:01.585
sehr angenehm. Ja, es ist genau, es ist halt darauf optimiert,

00:49:02.085 --> 00:49:03.145
dass man...

00:49:03.145 --> 00:49:05.125
und kann schnellere Ergebnisse erzeugen. Wenn du irgendwie Jason

00:49:05.125 --> 00:49:07.085
rauspowern willst und hast nicht so viel

00:49:07.085 --> 00:49:09.285
Aufgaben, dann kannst du vielleicht erst schnell Erfolge

00:49:09.285 --> 00:49:10.765
damit erzielen, finde ich. Ja, absolut.

00:49:10.985 --> 00:49:12.825
Es ist halt darauf optimiert, dass du als

00:49:12.825 --> 00:49:14.925
Entwickler, der das benutzt, um irgendein Ziel zu erreichen,

00:49:15.025 --> 00:49:16.345
dass du da gut zum Ziel kommst.

00:49:17.305 --> 00:49:18.945
Und ja, diese

00:49:18.945 --> 00:49:20.725
anderen Dinge, also das ist schon das ganze drinnen,

00:49:20.805 --> 00:49:22.465
wenn du zum Beispiel Starlet Source gut anguckst,

00:49:22.765 --> 00:49:24.825
also die Sachen, die Tom Christie so macht, die sind halt

00:49:24.825 --> 00:49:27.005
alle super poliert innen

00:49:27.005 --> 00:49:28.805
drin, ja. So ein bisschen wie bei

00:49:28.805 --> 00:49:30.925
Apple, wenn man Apple-Geräte aufschraubt, die sind auch innen

00:49:30.925 --> 00:49:32.885
hübsch. Also da sind auch innen die

00:49:32.885 --> 00:50:02.865
und Jochen unterhalten sich über die Programmiersprache Python

00:50:02.885 --> 00:50:03.805
oder irgendwie Dinge von der Decke.

00:50:04.925 --> 00:50:06.945
Also ich habe zum Beispiel in meinem Computer, wenn ich den aufschraube,

00:50:07.025 --> 00:50:08.385
da habe ich auch so ein paar LEDs reingebaut.

00:50:09.665 --> 00:50:10.945
Ja, genau, ist halt auch

00:50:10.945 --> 00:50:11.925
so ein bisschen Typfrage.

00:50:12.965 --> 00:50:14.505
Sind auch nötig, braucht man halt nicht.

00:50:17.125 --> 00:50:19.165
Ob man das jetzt hässlich findet oder hübsch ist.

00:50:19.165 --> 00:50:21.285
Ja, also wichtig ist halt, dass die Luftzufuhr

00:50:21.285 --> 00:50:23.445
vernünftig ist, dass es schön kühl ist und dass es schnell ist.

00:50:25.825 --> 00:50:27.245
Ja, genau.

00:50:27.405 --> 00:50:28.945
Aber auf der anderen Seite wiederum

00:50:28.945 --> 00:50:31.085
zum Beispiel, also auch das

00:50:31.085 --> 00:50:33.025
auch da wiederum, es ist halt unterschiedlich.

00:50:33.265 --> 00:50:35.225
Auch der Source Code hat kaum Kommentare

00:50:35.225 --> 00:50:35.505
oder so.

00:50:38.045 --> 00:50:39.225
Docstrings gibt es fast

00:50:39.225 --> 00:50:41.105
gar nicht. Ich habe vielleicht zwei, drei Stellen gefunden, wo welche

00:50:41.105 --> 00:50:42.885
drin sind und Kommentare gibt es eigentlich auch nicht.

00:50:44.305 --> 00:50:45.085
Das bin ich auch schon ein paar Mal

00:50:45.085 --> 00:50:46.745
drüber gestolpert, ich muss mal gucken. Aber dafür

00:50:46.745 --> 00:50:49.105
sind halt die Type Annotations

00:50:49.105 --> 00:50:50.985
so aussagekräftig schon

00:50:50.985 --> 00:50:52.145
oft.

00:50:52.625 --> 00:50:54.625
Ja, aber auch da, das ist halt so ein bisschen

00:50:54.625 --> 00:50:57.025
ja, sie sind aussagekräftig und ja,

00:50:57.165 --> 00:50:58.945
wenn du das im Editor mit, der das unterstützt,

00:50:58.945 --> 00:51:00.365
benutzt, dann ist das halt

00:51:00.365 --> 00:51:02.885
dann ist das für dich halt total cool

00:51:02.885 --> 00:51:04.805
ehrlich gesagt, aber den Code einfacher

00:51:04.805 --> 00:51:06.005
zu lesen macht das jetzt nicht.

00:51:06.085 --> 00:51:08.785
Ich muss auch sagen, den Code selber, wenn ich da reinguckt habe

00:51:08.785 --> 00:51:10.485
muss ich ein bisschen suchen, was macht der denn jetzt.

00:51:10.485 --> 00:51:12.225
Ja, dann geht das alles über

00:51:12.225 --> 00:51:14.805
Keyword-Only

00:51:14.805 --> 00:51:16.005
Argumente

00:51:16.005 --> 00:51:17.845
was ja auch irgendwie

00:51:17.845 --> 00:51:20.545
also es ist klar, dass das halt für jemanden

00:51:20.545 --> 00:51:22.425
der eine IDE benutzt, vielleicht besser so ist

00:51:22.425 --> 00:51:24.545
wenn er halt Funktionen aufruft oder Dinge

00:51:24.545 --> 00:51:26.245
die halt Keyword-Only sind

00:51:26.245 --> 00:51:28.345
also das heißt, alle Funktionen und Metaphone fangen an

00:51:28.345 --> 00:51:30.385
mit irgendwas Stern,

00:51:30.505 --> 00:51:32.465
Komma irgendwie. Aber für jemanden,

00:51:32.545 --> 00:51:32.725
der so

00:51:32.725 --> 00:51:36.225
von früher hätte man gesagt, oh mein Gott,

00:51:36.285 --> 00:51:37.505
was ist das denn? Das ist ja schrecklich hässlich.

00:51:38.245 --> 00:51:39.985
Warum nicht einfach hinschreiben?

00:51:41.245 --> 00:51:41.645
Aber

00:51:41.645 --> 00:51:44.165
es ist halt so ein bisschen

00:51:44.165 --> 00:51:46.145
du verbietest ja mit diesem Stern

00:51:46.145 --> 00:51:48.045
erstmal, dass es irgendwelche Argumente gibt, außer den

00:51:48.045 --> 00:51:50.225
Keyword-Dingern. Auf der anderen Seite ist es

00:51:50.225 --> 00:51:52.305
natürlich so, wenn ein IDE dann halt

00:51:52.305 --> 00:51:54.285
anbieten kann, was du alles auswählen kannst

00:51:54.285 --> 00:51:56.145
an Dingen, die du da reingibst, ist es natürlich für dich

00:51:56.145 --> 00:51:58.225
irgendwie angenehmer. Also sozusagen deine

00:51:58.225 --> 00:52:06.545
Entwickler Experience, wenn du das in der IDE verwendest, ist halt besser, aber wenn du das jetzt in den Source Code liest, ist es eher so ein bisschen ikidigit.

00:52:06.905 --> 00:52:07.765
Ja, so sag ich mal.

00:52:08.445 --> 00:52:08.845
Ikidigit.

00:52:10.205 --> 00:52:13.445
Ja, vielleicht wird man damit schnell arbeiten.

00:52:13.445 --> 00:52:20.905
Ja, also ich meine, heutzutage benutzen die Leute halt alle Idees und gucken halt darüber, was der Code denn macht.

00:52:20.905 --> 00:52:22.865
und so. Wenn du dann halt

00:52:22.865 --> 00:52:24.325
aber mit einem VI da sitzt und

00:52:24.325 --> 00:52:26.025
den Source Code liest, dann denkst du dir so,

00:52:26.565 --> 00:52:28.865
was ist das denn? Ich verstehe diese modernen Zeiten nicht mehr.

00:52:29.745 --> 00:52:29.905
Ja.

00:52:31.345 --> 00:52:32.485
Hängt es. Aber

00:52:32.485 --> 00:52:34.625
ja. Der VI kann das ja wahrscheinlich

00:52:34.625 --> 00:52:36.325
jetzt auch mit Autocompletion auf den Quarks und so.

00:52:37.325 --> 00:52:38.685
Kann man auch alles machen,

00:52:38.845 --> 00:52:40.765
wenn man da die entsprechenden Plugins richtig konfiguriert

00:52:40.765 --> 00:52:42.405
hat, was ein paar Monate

00:52:42.405 --> 00:52:42.985
passen wird.

00:52:44.125 --> 00:52:46.705
Ich habe immer zu wenig Zeit, an das neben der Arbeit noch hinzukommen.

00:52:48.185 --> 00:52:48.845
Naja, also

00:52:48.845 --> 00:52:49.805
ich finde es interessant.

00:52:49.805 --> 00:52:51.305
Also es ist auf jeden Fall

00:52:51.305 --> 00:52:52.745
ein bisschen was anderes.

00:52:55.125 --> 00:52:56.045
Ich mag es sehr gerne.

00:52:56.185 --> 00:52:57.185
Zum Benutzen und zum Anfassen,

00:52:57.285 --> 00:52:59.825
das gibt einem so ein bisschen Speed auf der Straße.

00:53:00.245 --> 00:53:01.445
Ja, das auf jeden Fall.

00:53:01.585 --> 00:53:02.845
Also ich meine, Pydentic ist auch sowas.

00:53:04.525 --> 00:53:06.245
Das hilft einem enorm.

00:53:06.365 --> 00:53:07.385
Ich finde auch, ehrlich gesagt,

00:53:07.485 --> 00:53:08.745
immer wenn ich jetzt so

00:53:08.745 --> 00:53:11.945
Altklassen im alten Style

00:53:11.945 --> 00:53:13.605
verwende, oder ich meine, ich habe auch

00:53:13.605 --> 00:53:14.925
schon häufiger mal irgendwie

00:53:14.925 --> 00:53:16.365
Atteris verwendet.

00:53:16.365 --> 00:53:17.745
Das war ein normaler Episode.

00:53:18.385 --> 00:53:19.585
Oder Dataclasses.

00:53:19.805 --> 00:53:21.745
und das macht schon

00:53:21.745 --> 00:53:23.665
einfach angenehmer, das so hinzuschreiben.

00:53:23.845 --> 00:53:25.265
Dass halt die Sachen

00:53:25.265 --> 00:53:27.985
als Attribute direkt

00:53:27.985 --> 00:53:29.305
in die Klasse reinschreibst und nicht

00:53:29.305 --> 00:53:31.945
in Init und dann das nochmal

00:53:31.945 --> 00:53:34.025
setzt. Das ist halt immer so ein bisschen umständlich.

00:53:35.045 --> 00:53:36.085
Jaja, das ist also ein bisschen

00:53:36.085 --> 00:53:37.865
wie

00:53:37.865 --> 00:53:39.705
die neue Variante von dem Tubel.

00:53:40.605 --> 00:53:41.285
Auf der anderen Seite

00:53:41.285 --> 00:53:43.625
muss man, ich habe jetzt nochmal geguckt,

00:53:43.845 --> 00:53:45.565
weil es gab jetzt bei DDF,

00:53:46.225 --> 00:53:47.145
da war ich,

00:53:47.145 --> 00:53:48.285
warst du da?

00:53:48.285 --> 00:53:49.985
Ich konnte nicht, da hatte jemand Geburtstag.

00:53:50.045 --> 00:53:50.405
Ach ja, richtig.

00:53:53.405 --> 00:53:54.645
Genau, ich habe mir das Video

00:53:54.645 --> 00:53:56.085
so teilweise angeguckt,

00:53:56.565 --> 00:53:57.505
weil mich interessiert hat,

00:53:57.825 --> 00:54:00.465
weil Klaus gesprochen hat

00:54:00.465 --> 00:54:02.625
über wie schnell

00:54:02.625 --> 00:54:04.425
ist eigentlich Data Class im Vergleich zu einem alten...

00:54:04.425 --> 00:54:06.465
Genau, er hat herausgefunden, dass Palentik ein bisschen langsamer ist

00:54:06.465 --> 00:54:08.385
bei der Umformung von vielen Transaktionen.

00:54:08.505 --> 00:54:08.745
Kann das sein?

00:54:08.845 --> 00:54:10.045
Nee, der hatte Palentik gar nicht.

00:54:10.145 --> 00:54:13.945
Ich hatte mal so ein Video gepostet, wo das verglichen wurde.

00:54:14.825 --> 00:54:16.105
Und ja,

00:54:16.105 --> 00:54:17.905
also tatsächlich Data Class

00:54:17.905 --> 00:54:19.945
auch ein bisschen langsamer. Die waren früher

00:54:19.945 --> 00:54:21.985
viel, viel langsamer, sind inzwischen gar nicht mehr

00:54:21.985 --> 00:54:22.765
so schrecklich viel langsamer.

00:54:23.725 --> 00:54:25.785
Ein bisschen langsamer sind sie aber. Und bei

00:54:25.785 --> 00:54:27.885
Pydentic habe ich es jetzt selber nochmal nachgeguckt, weil mich das

00:54:27.885 --> 00:54:29.845
interessiert hat, weil ich dachte so, okay, wie schlimm ist

00:54:29.845 --> 00:54:30.405
es denn eigentlich?

00:54:31.625 --> 00:54:33.345
Gut, ich habe das jetzt in meinem

00:54:33.345 --> 00:54:35.605
kleine Objekt genommen,

00:54:36.105 --> 00:54:38.125
wo nicht viel Validierung drauf ist,

00:54:38.225 --> 00:54:39.045
aber ich dachte, gut,

00:54:39.825 --> 00:54:41.525
ehrlich gesagt kann es dann ja nicht mehr besser werden für

00:54:41.525 --> 00:54:43.825
Pydentic, sondern es wird eher schlimmer,

00:54:44.005 --> 00:54:45.965
aber da war der Unterschied schon relativ

00:54:45.965 --> 00:54:47.965
riesig. Also da ist es

00:54:47.965 --> 00:54:48.605
halt so beim

00:54:48.605 --> 00:54:50.365
Deserialisieren,

00:54:51.945 --> 00:54:53.485
also quasi du hast

00:54:53.485 --> 00:54:55.905
sowas wie JSON oder Dict. Ich habe immer Dict genommen, nicht JSON,

00:54:56.025 --> 00:54:57.885
weil ich wollte jetzt nicht die JSON-Library

00:54:57.885 --> 00:54:59.705
branchmarken, sondern einfach nur von Dict

00:54:59.705 --> 00:55:01.005
zu irgendwie Objekt.

00:55:02.145 --> 00:55:03.785
Es ist so, dass Pydentic ist halt

00:55:03.785 --> 00:55:04.745
irgendwie so achtmal langsamer.

00:55:05.305 --> 00:55:07.405
Und beim

00:55:07.405 --> 00:55:09.765
Serialisieren, also von

00:55:09.765 --> 00:55:11.765
Objekt-Technologie zu

00:55:11.765 --> 00:55:13.725
Dict, ist es

00:55:13.725 --> 00:55:15.145
halt sogar irgendwie 20 mal langsamer.

00:55:15.965 --> 00:55:17.565
und das ist natürlich schon, also es kommt drauf an.

00:55:18.165 --> 00:55:19.305
Bei wann wird das dann relevant?

00:55:19.765 --> 00:55:20.545
Genau, das ist halt die Frage.

00:55:21.945 --> 00:55:23.585
Das ist halt, also ich meine,

00:55:24.105 --> 00:55:25.225
irgendwie Serialisieren von

00:55:25.225 --> 00:55:27.465
100 Objekten, ich weiß

00:55:27.465 --> 00:55:29.505
jetzt gar nicht mehr genau, bis ich jetzt nachgucke,

00:55:29.765 --> 00:55:30.545
aber es war halt irgendwie so,

00:55:31.805 --> 00:55:33.505
für einzelne Objekte so ein paar hundert

00:55:33.505 --> 00:55:34.145
Nanosekunden.

00:55:36.045 --> 00:55:37.185
Bei Nativ

00:55:37.185 --> 00:55:39.685
und Pydentic ist halt dann so, geht in den

00:55:39.685 --> 00:55:41.665
Mikrosekundenbereich, also was ich nicht koste,

00:55:41.665 --> 00:55:43.345
dann halt irgendwie 4-5 Mikrosekunden.

00:55:44.625 --> 00:55:45.725
Das ist alles relativ

00:55:45.725 --> 00:56:15.705
und Jochen unterhalten sich über die Programmiersprache Python

00:56:15.725 --> 00:56:45.705
und Jochen unterhalten sich über die Programmiersprache Python

00:56:45.725 --> 00:56:47.625
kostet halt auch ganz schön. Wobei, ich

00:56:47.625 --> 00:56:49.605
weiß es nicht genau. Vielleicht habe ich es auch noch irgendwie falsch bedient.

00:56:49.885 --> 00:56:51.705
Das kann auch sein. Und

00:56:51.705 --> 00:56:53.205
vielleicht gibt es da auch noch irgendwie

00:56:53.205 --> 00:56:55.845
Geschichten, wie man das schneller machen kann,

00:56:55.905 --> 00:56:57.725
dass man halt irgendwie noch was...

00:56:58.425 --> 00:56:59.625
Ich weiß es nicht. Vielleicht hat das noch

00:56:59.625 --> 00:57:01.365
irgendwelche Dinge, wo man das

00:57:01.365 --> 00:57:03.265
modellieren kann, wo dann irgendwas zu Zeiten

00:57:03.265 --> 00:57:05.385
kompiliert wird oder wo es Zeiten zu zählen...

00:57:05.385 --> 00:57:06.285
Ich weiß es nicht genau.

00:57:07.925 --> 00:57:09.665
Aber, also, wenn man

00:57:09.665 --> 00:57:12.145
das

00:57:12.145 --> 00:57:13.665
verwendet, sollte man sich vielleicht schon klar sein, dass es

00:57:13.665 --> 00:57:15.205
unter Umständen ein gutes Stückchen langsamer ist,

00:57:15.205 --> 00:57:17.145
als die alte Art ist zu machen.

00:57:18.425 --> 00:57:19.625
Aber es ist auch viel komfortabler.

00:57:20.265 --> 00:57:21.465
Die meisten haben ja auch keine Last

00:57:21.465 --> 00:57:22.485
und haben auch nicht viele Objekte.

00:57:22.625 --> 00:57:23.785
Insofern ist alles viel besser.

00:57:25.085 --> 00:57:26.985
Ja, ich habe gestern noch wieder jemanden gehabt,

00:57:27.105 --> 00:57:27.785
der kein Python konnte.

00:57:28.185 --> 00:57:29.645
Ja, ich habe gehört, dass es voll langsam war,

00:57:29.645 --> 00:57:30.705
weil es die erste Erklärung gibt.

00:57:31.045 --> 00:57:32.585
Ja, das hören immer viele.

00:57:32.805 --> 00:57:35.565
Aber es ist halt die Frage, was das denn bedeutet

00:57:35.565 --> 00:57:36.925
und in welcher Hinsicht langsam.

00:57:37.265 --> 00:57:40.525
Das muss man dann halt ein bisschen auseinander dividieren.

00:57:41.605 --> 00:57:43.865
Und meine Ansicht dazu ist ja so,

00:57:43.865 --> 00:57:48.665
Wenn du mir genau sagen kannst, was du haben willst, dann kann ich dir sagen, wie du es hinkriegst.

00:57:49.485 --> 00:57:51.205
Und dann kannst du so schnell sein, wie du sein willst.

00:57:51.385 --> 00:57:55.025
Also ich kann mir nicht vorstellen, dass du mit irgendwas anderem sehr viel schneller bist.

00:57:56.185 --> 00:58:00.105
Ja, aber das ist halt wahrscheinlich der Punkt, dass die Leute gar nicht den Andenksfall genau verstehen.

00:58:00.305 --> 00:58:02.325
Und warum Python dann da vielleicht langsamer ist, wenn man es falsch macht.

00:58:02.505 --> 00:58:05.825
Wenn du keine Ahnung hast und irgendwas machst, dann kann es sein, dass es hinterher langsamer ist.

00:58:06.205 --> 00:58:06.745
Ja, genau.

00:58:07.445 --> 00:58:08.625
Das stimmt halt auch für alles andere.

00:58:08.625 --> 00:58:09.225
Ja, so insofern.

00:58:09.925 --> 00:58:10.085
Ja.

00:58:13.865 --> 00:58:14.545
Genau.

00:58:16.425 --> 00:58:17.745
Ja, also schöne Sachen,

00:58:17.905 --> 00:58:19.425
also um tatsächlich, wenn du irgendwie einfach sagst,

00:58:19.565 --> 00:58:21.705
du willst einen Dick draus geben,

00:58:21.785 --> 00:58:23.625
ist das direkt JSON und so, also FASAP ist schon

00:58:23.625 --> 00:58:25.785
irgendwie eine schöne Sache für sowas, ich mag das.

00:58:26.105 --> 00:58:27.605
Ja, genau.

00:58:28.525 --> 00:58:29.365
Ah, vielleicht

00:58:29.365 --> 00:58:31.185
die ganze Async-Geschichte.

00:58:32.725 --> 00:58:33.585
Genau, normalerweise

00:58:33.585 --> 00:58:35.565
sind halt, oder was heißt normalerweise,

00:58:35.645 --> 00:58:37.625
aber üblicherweise hast

00:58:37.625 --> 00:58:38.745
du ja dann, also wenn

00:58:38.745 --> 00:58:41.285
machst du ja dann Async, definierst du dann

00:58:41.285 --> 00:58:43.585
Funktionen als Async und so, dann kann das alles schön

00:58:43.865 --> 00:58:48.945
sozusagen zumindest IOMäßig parallel gemacht werden.

00:58:49.345 --> 00:58:51.445
Jetzt hätte ich mal eine Frage. Ich habe eine ganz fiese, gemeine Frage.

00:58:52.205 --> 00:58:52.365
Okay.

00:58:53.725 --> 00:58:54.965
Was macht eigentlich...

00:58:54.965 --> 00:58:57.565
Du kannst aber auch in FastAPI ja

00:58:57.565 --> 00:59:00.765
Normalfunktionen so definieren.

00:59:01.005 --> 00:59:03.405
Oder wenn du auf die Datenbank zugreifst, dann ist das ja auch synchron alles.

00:59:03.645 --> 00:59:03.845
Mhm.

00:59:04.505 --> 00:59:06.025
Und dann kannst du ja eigentlich nicht mehr Async,

00:59:06.345 --> 00:59:08.305
deine Funktionen Async definieren und Await sagen,

00:59:08.305 --> 00:59:09.525
sondern du musst das halt so aufrufen.

00:59:10.025 --> 00:59:11.225
Und das funktioniert ja auch einfach so.

00:59:13.145 --> 00:59:13.365
Mhm.

00:59:13.865 --> 00:59:17.825
und wie macht, oder was, warum geht das eigentlich?

00:59:17.965 --> 00:59:24.785
Oder wie macht FastAPI das eigentlich, dass wenn du jetzt ganz viele,

00:59:24.945 --> 00:59:27.385
sagen wir mal so, es kommen ganz viele Requests parallel rein,

00:59:28.025 --> 00:59:29.985
sozusagen, und jetzt hast du da diese Funktionen, die synchron sind,

00:59:30.045 --> 00:59:31.465
die sind ja nicht als iSync irgendwas definiert,

00:59:32.365 --> 00:59:35.645
und die blockieren also, die blockieren ja alles andere.

00:59:35.925 --> 00:59:38.305
Wie kann es denn sein, dass FastAPI dann trotzdem nicht viel langsamer wird?

00:59:38.685 --> 00:59:39.885
Was es tatsächlich nicht wird.

00:59:42.605 --> 00:59:43.245
Gute Frage.

00:59:43.865 --> 00:59:45.665
mit der Session. Ich weiß nicht, wie das

00:59:45.665 --> 00:59:46.925
regelmäßig für die Dortmunder geht.

00:59:46.925 --> 00:59:48.385
Ja, da dachte ich auch so,

00:59:48.685 --> 00:59:50.645
als ich das gesehen hatte,

00:59:51.065 --> 00:59:52.865
dass FastAPI, dass man

00:59:52.865 --> 00:59:55.065
beides verwenden kann und es auch irgendwie magisch funktioniert

00:59:55.065 --> 00:59:56.945
und auch nicht schlechter wird von der Performance

00:59:56.945 --> 00:59:58.865
her, wenn man das irgendwie synchron definiert.

00:59:59.265 --> 01:00:00.365
Hä, wie macht denn der das?

01:00:00.585 --> 01:00:02.285
Da musste ich an der FastAPI-Dokumentation ein bisschen

01:00:02.285 --> 01:00:04.025
kramen, bis ich das gefunden habe.

01:00:04.425 --> 01:00:05.845
Und über zwei, dreimal,

01:00:06.565 --> 01:00:08.585
es gibt irgendwie Concurrency, Parallelism

01:00:08.585 --> 01:00:10.345
gibt es einen Teil in der Doku

01:00:10.345 --> 01:00:12.565
und dann kommt so die erste Warnung jetzt ab,

01:00:12.565 --> 01:00:42.545
und Jochen unterhalten sich über die Programmiersprache Python

01:00:42.565 --> 01:00:43.525
man das richtig macht und

01:00:43.525 --> 01:00:46.505
FastAPI importiert dann das RedPool aus Salad,

01:00:46.705 --> 01:00:48.065
dann funktioniert das auch schnell.

01:00:49.745 --> 01:00:50.525
Aber wenn man

01:00:50.525 --> 01:00:52.225
halt sozusagen wirklich Ressourcen

01:00:52.225 --> 01:00:54.345
schonend das machen will, dann

01:00:54.345 --> 01:00:56.145
macht es schon Sinn, da async-Geschichten

01:00:56.145 --> 01:00:57.825
Funktionen zu verwenden.

01:00:57.985 --> 01:00:58.725
Dann ist es halt direkt

01:00:58.725 --> 01:01:02.585
nochmal ein Stückchen eleganter.

01:01:03.205 --> 01:01:03.525
Noch schicker.

01:01:04.525 --> 01:01:06.045
Und dann sind halt Core-Routinen und Nichts-Weiß-Sets

01:01:06.045 --> 01:01:07.705
schon immer noch ein bisschen mehr Overhead.

01:01:09.165 --> 01:01:10.485
Was auch gut geht,

01:01:10.745 --> 01:01:12.005
das hat man ja sonst immer auch

01:01:12.005 --> 01:01:12.805
irgendwie

01:01:12.805 --> 01:01:15.885
sind so Geschichten

01:01:15.885 --> 01:01:18.225
Background-Tasks. Oh ja, Background-Tasks.

01:01:18.765 --> 01:01:19.785
Ist ja relativ easy, ne?

01:01:20.025 --> 01:01:22.145
Ja. Kannst einfach so eine Queue haben

01:01:22.145 --> 01:01:23.985
und dann geht rein und sagst du, was ist das?

01:01:24.125 --> 01:01:26.105
Dekorator? Oder ein Dependency

01:01:26.105 --> 01:01:27.385
du reingibst, Background-Tasks, und dann

01:01:27.385 --> 01:01:29.705
hängst du was rein und das läuft dann einfach?

01:01:29.805 --> 01:01:31.185
Du musst da am Anfang einmal initiieren, oder?

01:01:31.465 --> 01:01:33.725
Nee, nee, nee. Du sagst, das hier ist

01:01:33.725 --> 01:01:35.665
ein Background-Task und dann

01:01:35.665 --> 01:01:37.485
waitest du dann. Ah ja, okay.

01:01:37.485 --> 01:01:39.605
Also es kann eine beliebige Async-Funktion sein und

01:01:39.605 --> 01:01:41.885
genau.

01:01:42.005 --> 01:01:49.845
Ich weiß es jetzt aber nicht mehr genau, aber im Grunde ist es auch schon eine Funktion, die installiert drin ist

01:01:49.845 --> 01:01:51.165
und damit kannst du halt so Dinge

01:01:51.165 --> 01:01:54.045
aber die müssen halt, ich glaube die müssen

01:01:54.045 --> 01:01:56.005
dann aber auch, kann die auch synchron sein?

01:01:56.085 --> 01:01:56.725
Das weiß ich jetzt gar nicht.

01:01:57.125 --> 01:01:58.865
Ich glaube es geht sogar synchron, aber ich bin auch nicht.

01:01:58.865 --> 01:02:01.905
Kann auch sein, ja, ich meine es gibt ja diesen Thread-Project, da kannst du auch mal einen Thread machen.

01:02:02.645 --> 01:02:04.105
Aber für viele einfache Fälle,

01:02:04.205 --> 01:02:05.785
also das Problem ist natürlich, wenn du da jetzt irgendwas

01:02:05.785 --> 01:02:07.505
sehr CPU-intensives drin machst,

01:02:07.645 --> 01:02:08.925
das geht natürlich eigentlich da nicht.

01:02:08.925 --> 01:02:11.445
aber wenn du darin nur irgendwas machst, wo du auf

01:02:11.445 --> 01:02:13.445
I.O. wartest, also du machst eigentlich nicht wirklich was, sondern

01:02:13.445 --> 01:02:13.985
du wartest nur,

01:02:14.605 --> 01:02:17.485
dann ist das natürlich sehr bequem, dass du

01:02:17.485 --> 01:02:19.545
das halt direkt integriert hast und nicht wie

01:02:19.545 --> 01:02:21.485
also was man in Django und so macht, dann nimmt man halt so

01:02:21.485 --> 01:02:23.605
Salary oder sowas oder irgendeine andere Task-Queue

01:02:23.605 --> 01:02:25.565
und dann startet man halt, schmeißt man das

01:02:25.565 --> 01:02:27.505
irgendwas mal in die Queue, dann gibt es irgendwie andere

01:02:27.505 --> 01:02:29.225
Dinge, die holen sich das aus der Queue dann wieder raus.

01:02:29.325 --> 01:02:31.245
Ja und dann in die Queue schmeißt man es halt erstmal weg, realisiert

01:02:31.245 --> 01:02:33.505
irgendwie ein String-Format

01:02:33.505 --> 01:02:34.185
und das überhä.

01:02:35.085 --> 01:02:37.645
Ja gut, also es gibt halt Dinge, für die geht es nicht anders,

01:02:37.645 --> 01:02:39.605
geht das auch mit First-Paper, ging jetzt nicht. Also wenn du

01:02:39.605 --> 01:02:41.345
einen Berechnungsjob machst, dann

01:02:41.345 --> 01:02:43.805
das kannst du halt nicht in deinem Web-Server-Prozess machen,

01:02:43.905 --> 01:02:45.945
weil wenn du das machst, dann machst du halt sonst nichts mehr.

01:02:46.025 --> 01:02:47.745
Dann kannst du nicht mehr auf Requests antworten, was

01:02:47.745 --> 01:02:49.825
natürlich... Ja, und irgendwie muss man es ja dann realisieren,

01:02:49.925 --> 01:02:51.745
damit es irgendwie abgespeichert werden kann zwischendurch, aber...

01:02:52.985 --> 01:02:53.905
Genau, genau.

01:02:54.005 --> 01:02:55.705
Und wenn du es in einem anderen Prozess machen willst, dann musst du

01:02:55.705 --> 01:02:57.865
irgendwie das realisieren und dann irgendwo anders

01:02:57.865 --> 01:02:58.245
aufrufen.

01:03:00.225 --> 01:03:01.565
Insofern, es gibt halt

01:03:01.565 --> 01:03:03.745
diverse Fälle, in denen kommst du nicht drum rum, aber

01:03:03.745 --> 01:03:05.785
für viele kleinere Sachen, du willst eine E-Mail wegschicken

01:03:05.785 --> 01:03:07.565
oder du willst halt einfach nur

01:03:07.565 --> 01:03:11.045
Kurze Berechnung.

01:03:12.385 --> 01:03:13.445
Berechnung ist nicht so gut, aber

01:03:13.445 --> 01:03:15.645
du machst halt irgendwas, du machst eine andere API ab

01:03:15.645 --> 01:03:17.665
oder du schickst irgendwas irgendwo hin oder so,

01:03:17.765 --> 01:03:19.685
dann ist egal, dann kannst du das halt

01:03:19.685 --> 01:03:21.685
machen. Und das dürften die allermeisten

01:03:21.685 --> 01:03:22.565
Fälle sein eigentlich.

01:03:24.085 --> 01:03:25.485
Also das ist halt auch integriert.

01:03:27.105 --> 01:03:27.745
Dann, was

01:03:27.745 --> 01:03:29.505
auch integriert ist, ist halt statisch false,

01:03:29.565 --> 01:03:30.745
auch wieder aus Twilight, aber

01:03:30.745 --> 01:03:33.645
genau, den Code habe ich mal

01:03:33.645 --> 01:03:34.725
geklaut für diese Django

01:03:34.725 --> 01:03:36.925
Async-File-Response-Geschichten.

01:03:37.565 --> 01:03:39.965
und

01:03:39.965 --> 01:03:41.685
ja, das ist, du kannst halt

01:03:41.685 --> 01:03:43.165
dadurch, dass das halt so

01:03:43.165 --> 01:03:44.805
effizient geht mit

01:03:44.805 --> 01:03:47.585
libuv, uvloop, uvcon

01:03:47.585 --> 01:03:49.805
kannst du halt auch Filesorven, was du

01:03:49.805 --> 01:03:51.665
normalerweise in einem Applikationsserver nie machen würdest,

01:03:51.865 --> 01:03:53.825
aber dadurch, dass jetzt halt nichts

01:03:53.825 --> 01:03:55.805
mehr kostet, irgendwie eine Verbindung auf, also

01:03:55.805 --> 01:03:56.765
weil das Problem bei

01:03:56.765 --> 01:03:59.845
Filesorving ist halt, das sind halt Requests, die lange

01:03:59.845 --> 01:04:01.645
laufen. Also normalerweise macht das von außen an der

01:04:01.645 --> 01:04:03.845
Webserver, also keine Ahnung, der Nginx oder

01:04:03.845 --> 01:04:05.925
ein Apache oder sonst irgendwas

01:04:05.925 --> 01:04:07.645
oder dein CDN.

01:04:08.665 --> 01:04:09.145
Weil

01:04:09.145 --> 01:04:12.245
wenn ein Applikationsserver

01:04:12.245 --> 01:04:13.585
lange Zeit

01:04:13.585 --> 01:04:16.185
im Request ausliefert, dann ist der halt belegt

01:04:16.185 --> 01:04:18.285
und kann sonst nichts mehr machen. Und du hast normalerweise

01:04:18.285 --> 01:04:20.145
immer nur so ein paar. Und wenn dann halt

01:04:20.145 --> 01:04:21.585
mehrere Leute irgendwie Files runterladen,

01:04:22.145 --> 01:04:22.585
dann ist

01:04:22.585 --> 01:04:25.485
deine Webseite halt nicht mehr erreichbar.

01:04:25.865 --> 01:04:27.965
Das ist halt schlecht. Daher normalerweise

01:04:27.965 --> 01:04:30.065
statisch Files ausliefern machst du halt von woanders.

01:04:30.985 --> 01:04:32.205
Aber wenn du jetzt irgendwie

01:04:32.205 --> 01:04:33.705
das effizient

01:04:33.705 --> 01:04:35.545
IO machen kannst, dann

01:04:35.545 --> 01:04:36.865
macht das ja nichts.

01:04:37.165 --> 01:04:39.605
Dann kann das halt auch dein Applikationsserver machen

01:04:39.605 --> 01:04:41.885
und deswegen statisch verhaltsausliefern kannst du

01:04:41.885 --> 01:04:44.265
einfach so vom Applikationsserver

01:04:44.265 --> 01:04:45.045
aus, was natürlich

01:04:45.045 --> 01:04:47.845
total cool ist, weil du kannst nämlich

01:04:47.845 --> 01:04:49.805
dann auch die ganzen anderen Sachen machen, die halt man so

01:04:49.805 --> 01:04:52.025
vielleicht auch

01:04:52.025 --> 01:04:53.865
braucht, die sonst halt sehr schwierig sind, wie sowas

01:04:53.865 --> 01:04:55.785
wie Authentifizierung und

01:04:55.785 --> 01:04:57.845
Autorisierung und so. Das ist halt,

01:04:57.965 --> 01:05:00.125
wenn das ein anderer Server macht als dein Applikationsserver,

01:05:01.685 --> 01:05:02.205
eher ätzend

01:05:02.205 --> 01:05:03.665
und so geht das halt

01:05:03.665 --> 01:05:04.765
relativ einfach.

01:05:05.545 --> 01:05:07.765
mit den Dekoratoren, die halt die Routen

01:05:07.765 --> 01:05:09.485
verbinden, dass du halt so Router hast, so ein bisschen wie

01:05:09.485 --> 01:05:10.725
du es in Flask kennst.

01:05:11.525 --> 01:05:13.565
Ja, aber auch tatsächlich ein bisschen, es gibt

01:05:13.565 --> 01:05:15.765
sogar dann, ich glaube, das gibt es in Flask

01:05:15.765 --> 01:05:17.865
nicht, aber wahrscheinlich erzähle ich jetzt Unsinn, ich habe keine Ahnung von Flask,

01:05:17.985 --> 01:05:19.325
aber dass du das

01:05:19.325 --> 01:05:21.305
aufbilden kannst in unterschiedliche,

01:05:21.525 --> 01:05:22.605
dass du sagen kannst, hier ab die,

01:05:23.225 --> 01:05:25.345
unter diesem Pfad,

01:05:25.545 --> 01:05:27.645
dafür ist dieser Router zuständig. Genau, du kannst halt die Router

01:05:27.645 --> 01:05:29.325
unter dir, der kann da auch unterschiedliche Regeln dann

01:05:29.325 --> 01:05:31.485
versetzen oder Authentifizierung für einen Router verlangen

01:05:31.485 --> 01:05:33.685
oder sowas alles. Du kannst die Responses

01:05:33.685 --> 01:05:35.205
dafür definieren, die du halt haben willst,

01:05:35.205 --> 01:05:36.945
für den Router, die da rausgegeben werden und sowas.

01:05:37.105 --> 01:05:38.725
Das dient voll vieler Kurzen.

01:05:39.225 --> 01:05:39.465
Ja, das ist...

01:05:39.465 --> 01:05:52.488
Damit kannst du eigentlich deine ganze Applikation halt irgendwie h aufteilen Genau ja Und etwas was es in Flask gibt was es in FastAPI nicht gibt ist so ein Plug Also ich meine das ist halt die Frage wie teilst du Sachen auf In Django w man das

01:05:52.488 --> 01:05:54.448
mit Django-Apps vielleicht machen, in Flask hast du

01:05:54.448 --> 01:05:56.287
halt diese Plugins und

01:05:56.287 --> 01:05:58.208
in FastAPI hast du wieder noch.

01:05:59.208 --> 01:06:00.688
Aber du hast halt einmal die Möglichkeit

01:06:00.688 --> 01:06:02.468
über die Router das aufzuteilen und dann noch

01:06:02.468 --> 01:06:04.787
die andere Möglichkeit ist halt, über Dependency-Injection

01:06:04.787 --> 01:06:05.168
das zu machen.

01:06:05.908 --> 01:06:08.388
Ja, man kriegt ja schon irgendwie so eine hübsche Applikationsstruktur

01:06:08.388 --> 01:06:09.028
dann damit hin.

01:06:09.028 --> 01:06:09.388
Ja.

01:06:11.928 --> 01:06:12.988
Also ich finde das

01:06:12.988 --> 01:06:15.028
ganz nett, also vielleicht darzustellen nochmal zu Typer,

01:06:15.208 --> 01:06:17.008
also das ist auch ein Projekt von Sebastian Ramirez von

01:06:17.008 --> 01:06:18.888
Tianjulu, dass das so ähnlich macht,

01:06:18.908 --> 01:06:20.807
das setzt auf Click auf und macht halt auch mit

01:06:20.807 --> 01:06:22.367
Type Annotation so eine Kommandozeilen

01:06:22.367 --> 01:06:24.827
Geschichte, die so ein bisschen ähnlich funktioniert wie

01:06:24.827 --> 01:06:27.008
FastAPI. Ja. Und das

01:06:27.008 --> 01:06:28.888
in der Kombination ist halt irgendwie sehr, sehr nett, weil man

01:06:28.888 --> 01:06:30.208
halt irgendwie damit dann

01:06:30.208 --> 01:06:32.508
seine Applikation steuern kann und

01:06:32.508 --> 01:06:34.428
Ja, gefällt mir auch sehr gut.

01:06:35.748 --> 01:06:36.468
Ja, verwende ich

01:06:36.468 --> 01:06:37.867
auch schon ein paar Mal verwendet.

01:06:37.867 --> 01:07:01.228
Das ist irgendwie so sehr charmant, falls ihr das kennt, das macht irgendwie Spaß damit zu arbeiten. Das ist diese Developer Experience, mit der ich halt mag, irgendwie so modern zu arbeiten mit den ganzen modernen Tools. Da bin ich auch, also ich muss das nicht schwierig haben. Das ist irgendwie nervig. Also ja, man kann durch den Berg boxen und dann, ja, I'm the Hero, ich habe das Schwert rausgezogen. Ja, ich kann mit meiner Zeit Besseres anfangen.

01:07:01.228 --> 01:07:03.508
Ja, naja

01:07:03.508 --> 01:07:07.567
Ich meine, die anderen Sachen haben ja auch

01:07:07.567 --> 01:07:08.708
so ein bisschen was für sich

01:07:08.708 --> 01:07:10.448
Du meinst jetzt einen charmanten

01:07:10.448 --> 01:07:15.488
Tatsächlich bist du dann halt eben nicht auf eine Idee angewiesen

01:07:15.488 --> 01:07:15.847
zum Beispiel

01:07:15.847 --> 01:07:19.268
und du kannst halt schöner allgemeiner

01:07:19.268 --> 01:07:21.627
Ja, aber ich weiß nicht, ob das jetzt ein Feature

01:07:21.627 --> 01:07:23.728
oder ein Feed ist, dass ich nicht auf eine Idee

01:07:23.728 --> 01:07:25.388
angewiesen sein muss, also come on

01:07:25.388 --> 01:07:26.508
Ja

01:07:26.508 --> 01:07:31.388
Ja, inzwischen bin ich da ja nicht mehr so, aber

01:07:31.388 --> 01:07:34.847
Wenn du mit meinem VI gestrandet auf meinem Telefon sitzt, okay, maybe

01:07:34.847 --> 01:07:42.488
Nein, aber ich meine, vor ein paar Jahren hätte ich dann auch gesagt, so, Idee ist das, alles Quatsch, auch keiner, VI, ja

01:07:42.488 --> 01:07:48.028
Aber inzwischen, ich meine, ich habe ja einfach mir dann vorgenommen, okay, bevor ich dann irgendwie mal so

01:07:48.028 --> 01:07:48.908
So Rente

01:07:48.908 --> 01:07:54.888
So Rente, muss ich das mal ausprobiert haben und habe dann jetzt mehr Peitschamen gemacht, mehr VS Code und muss sagen, ach ja, ist eigentlich schon ganz okay

01:07:56.508 --> 01:07:58.448
Ich probiere es ja gerade den anderen Weg herum.

01:07:58.527 --> 01:08:00.008
Ich versuche gerade ein bisschen wie Eis zu lernen nochmal.

01:08:00.587 --> 01:08:02.307
Aber ja, das heißt halt, die

01:08:02.307 --> 01:08:04.228
Konfiguration ist ein bisschen pain, aber wenn man einmal

01:08:04.228 --> 01:08:06.208
durchgestiegen ist, dann geht es ein bisschen. Aber ich sage mal,

01:08:06.248 --> 01:08:08.148
das Produktivitätslevel ist schon ganz nett

01:08:08.148 --> 01:08:10.388
für bestimmte TAS, aber für bestimmte TAS halt einfach

01:08:10.388 --> 01:08:10.827
auch nicht.

01:08:11.567 --> 01:08:13.508
Ja, also genau.

01:08:14.768 --> 01:08:16.527
Es gibt Gründe, warum es so ist,

01:08:16.527 --> 01:08:17.808
wie es ist und das ist auch eigentlich gut.

01:08:18.748 --> 01:08:20.328
Aber ach, naja,

01:08:20.447 --> 01:08:21.127
vielleicht rumhert die...

01:08:21.127 --> 01:08:24.487
Ich glaube, wenn man neu anfängt,

01:08:24.487 --> 01:08:26.467
dann macht man das vielleicht

01:08:26.467 --> 01:08:27.067
einfach gar nicht.

01:08:29.788 --> 01:08:30.587
Die ganzen

01:08:30.587 --> 01:08:32.348
was haben wir denn?

01:08:33.507 --> 01:08:34.547
Achso, Flask auch

01:08:34.547 --> 01:08:35.848
irgendwie gibt

01:08:35.848 --> 01:08:38.808
jedenfalls die alte, also Flask

01:08:38.808 --> 01:08:40.907
2.0 ist ja auch noch nicht so lange her.

01:08:41.708 --> 01:08:42.947
Das kann auch SGI,

01:08:43.208 --> 01:08:44.808
aber Flask war sehr stark

01:08:44.808 --> 01:08:46.107
an WSGI

01:08:46.107 --> 01:08:48.688
dran gebunden und deswegen

01:08:48.688 --> 01:08:49.527
ist eigentlich

01:08:49.527 --> 01:08:52.768
Flask unter

01:08:52.768 --> 01:08:54.547
2, das wird mit SGI nie funktionieren.

01:08:54.547 --> 01:08:55.808
Das ist immer fest.

01:08:55.808 --> 01:08:57.688
auch. Deswegen nimmt man ja neue Software.

01:08:57.927 --> 01:08:59.848
Genau, also insofern, das ist halt so was,

01:08:59.888 --> 01:09:01.688
wenn man jetzt irgendwie was mit WebSockets machen

01:09:01.688 --> 01:09:02.388
wollen würde.

01:09:03.087 --> 01:09:05.007
Ich glaube, WebSockets hat man auch noch nicht so richtig.

01:09:05.788 --> 01:09:07.587
Dann ist Flask, also jedenfalls

01:09:07.587 --> 01:09:09.268
das alte Flask, nicht unbedingt, ich glaube,

01:09:09.667 --> 01:09:11.127
Flask 2.0 geht vielleicht und

01:09:11.127 --> 01:09:13.248
Quad geht halt auch.

01:09:13.447 --> 01:09:15.788
Vielleicht ist Quad in Flask 2.0

01:09:15.788 --> 01:09:16.967
aufgegangen, ich weiß es gar nicht mehr so genau.

01:09:18.447 --> 01:09:18.808
Aber

01:09:18.808 --> 01:09:20.907
das alte geht auf jeden Fall nicht so richtig.

01:09:22.607 --> 01:09:23.768
Genau, FastAPI,

01:09:23.967 --> 01:09:25.388
kein Problem, geht einfach so.

01:09:25.808 --> 01:09:27.888
und das ist natürlich auch nett, weil für manche Sachen

01:09:27.888 --> 01:09:28.808
braucht man das ja vielleicht schon.

01:09:30.047 --> 01:09:31.987
Wobei ich da inzwischen so ein bisschen,

01:09:32.268 --> 01:09:33.927
ich habe das ja auch benutzt und habe

01:09:33.927 --> 01:09:34.667
extra,

01:09:35.407 --> 01:09:37.268
gut, wenn man FastAPI

01:09:37.268 --> 01:09:39.067
machen möchte, dann kann man natürlich auch

01:09:39.067 --> 01:09:41.388
mit allen

01:09:41.388 --> 01:09:42.688
Pfeifen und

01:09:42.688 --> 01:09:45.587
Whistles und Websocket

01:09:45.587 --> 01:09:46.107
und so machen,

01:09:47.208 --> 01:09:49.627
dachte ich dann und habe das dann halt auch mal

01:09:49.627 --> 01:09:50.047
benutzt.

01:09:51.487 --> 01:09:53.808
Du hast auch ein Tutorial dafür gemacht auf YouTube, glaube ich,

01:09:53.808 --> 01:09:55.728
wo das ein bisschen gezeigt wird, FastAPI

01:09:55.728 --> 01:09:56.447
Habe ich das mal gemacht?

01:09:57.288 --> 01:09:59.268
Zumindest das Topic, was du dann wirklich gemacht hast.

01:09:59.268 --> 01:10:01.447
Ich glaube, das ist einfach nur gestreamt.

01:10:02.447 --> 01:10:03.708
Das Einzige, wo ich

01:10:03.708 --> 01:10:05.708
mir mal was geplant habe, war

01:10:05.708 --> 01:10:07.447
zu NaiveBase implementieren.

01:10:07.547 --> 01:10:09.567
Da habe ich vorher überlegt, was ich dann implementieren will eigentlich.

01:10:10.188 --> 01:10:11.547
Die ganzen anderen Streams sind alle

01:10:11.547 --> 01:10:13.587
einfach nur so, ja, alle furchtbar.

01:10:14.047 --> 01:10:15.148
So kann man es auch umschreiben.

01:10:15.547 --> 01:10:17.328
Oder es ist einfach nur so, ich setze mich hin und programmiere irgendwas.

01:10:17.587 --> 01:10:19.507
Und das ist natürlich manchmal spannend, häufig

01:10:19.507 --> 01:10:21.388
total langweilig. Aber

01:10:21.388 --> 01:10:23.148
für mich, der Vorteil dabei ist, wenig

01:10:23.148 --> 01:10:24.828
Verbreitungsaufwand.

01:10:24.828 --> 01:10:27.527
Man kann das sehen, also wenn ihr Jochen mal sehen wollt, dann könnt ihr mal reingucken.

01:10:28.067 --> 01:10:29.087
Ja, vielleicht

01:10:29.087 --> 01:10:30.328
sollte ich aber ein bisschen mehr

01:10:30.328 --> 01:10:33.228
besser produzierte Geschichten machen, das ist

01:10:33.228 --> 01:10:35.248
vielleicht gar nicht so blöd. Ich habe ja sowieso nicht so

01:10:35.248 --> 01:10:36.527
viel Zeit mehr, irgendwie Streams zu machen.

01:10:36.527 --> 01:10:39.228
Wir haben gehört, du sollst einen Didaktik-Code machen, Jochen, haben wir eine Empfehlung

01:10:39.228 --> 01:10:41.228
bekommen. Ja, genau,

01:10:41.668 --> 01:10:42.947
die ganzen R's und Ö's.

01:10:43.368 --> 01:10:44.188
Ja, das ist schlimm.

01:10:44.668 --> 01:10:47.208
Ich wäre eher für Didaktik, also ich finde die R's ein bisschen zu schlimm.

01:10:48.648 --> 01:10:49.547
Ja, gut.

01:10:50.308 --> 01:10:51.067
Eigentlich am besten alles

01:10:51.067 --> 01:10:53.127
austauschen, Didaktik, Rhetorik,

01:10:54.308 --> 01:10:54.748
das Gesicht.

01:10:54.828 --> 01:10:56.967
Ja, ich verstehe schon

01:10:56.967 --> 01:10:58.587
Ja, ein bisschen schminke ich hier und da

01:10:58.587 --> 01:11:01.208
Ja, also

01:11:01.208 --> 01:11:03.328
jetzt, ich komme sowieso nicht mehr so häufig

01:11:03.328 --> 01:11:05.268
zum Streamen daher oder habe das auch noch nicht geschafft

01:11:05.268 --> 01:11:07.228
irgendwie ein Schedule hinzukriegen, wo der irgendwie

01:11:07.228 --> 01:11:09.228
funktioniert, daher vielleicht

01:11:09.228 --> 01:11:11.047
mache ich das einfach so, dann habe ich ja in der Zeit, wo ich

01:11:11.047 --> 01:11:13.208
bereite ich vielleicht was vor und dann mache

01:11:13.208 --> 01:11:15.188
ich das halt irgendwie mal ein bisschen besser vorbereitet und dann halt

01:11:15.188 --> 01:11:17.067
seltener. Einmal die Woche reicht vielleicht

01:11:17.067 --> 01:11:19.168
Einmal die Woche oder alle zwei Wochen oder sowas und dann halt

01:11:19.168 --> 01:11:21.427
dafür aber vielleicht irgendein Thema ein bisschen fokussierter

01:11:21.427 --> 01:11:23.168
und ja

01:11:23.168 --> 01:11:25.188
Der kann es auf die Gäste einladen, wie mich.

01:11:25.587 --> 01:11:26.027
Ja, gerne.

01:11:27.348 --> 01:11:29.328
Aber everyday bin ich raus, wenn du da

01:11:29.328 --> 01:11:31.527
anfängst, deine Tests neu zu schreiben

01:11:31.527 --> 01:11:32.927
oder irgendwelche Pakete nachzunstallieren.

01:11:34.527 --> 01:11:34.927
Ja.

01:11:35.927 --> 01:11:37.087
Ist ja auch mal nett zu sehen.

01:11:37.808 --> 01:11:39.308
Wir haben jetzt davon 100 Folgen

01:11:39.308 --> 01:11:41.888
oder was archiviert auf unserer Podcast-YouTube-Seite.

01:11:42.587 --> 01:11:42.788
Ja.

01:11:43.127 --> 01:11:43.868
Das war schon einiges.

01:11:44.188 --> 01:11:44.967
Ja, schon einiges.

01:11:44.967 --> 01:11:45.587
Ja, klar.

01:11:47.768 --> 01:11:48.208
Genau.

01:11:50.907 --> 01:11:51.748
Was hatte ich noch?

01:11:51.987 --> 01:11:52.907
Ach genau, WebSockets.

01:11:52.907 --> 01:11:55.268
Dafür hatte ich Websocket so ein bisschen verwendet

01:11:55.268 --> 01:11:55.567
und

01:11:55.567 --> 01:11:59.188
ich dachte so, okay, wenn man das

01:11:59.188 --> 01:12:01.467
verwenden kann, das wäre voll cool, dann machen wir das einfach so

01:12:01.467 --> 01:12:03.328
und inzwischen

01:12:03.328 --> 01:12:04.648
Das geht tatsächlich ganz gut mit CastApp, gell?

01:12:04.648 --> 01:12:06.668
Das geht auch sehr gut, ja, also wenn man so einen Anwendungsteil

01:12:06.668 --> 01:12:08.688
dafür hat. Aber in diesem Websocket

01:12:08.688 --> 01:12:10.688
ist das prinzipiell auf die Nerven gegangen, habe ich gemerkt.

01:12:10.987 --> 01:12:12.527
Nee, prinzipiell, also es war

01:12:12.527 --> 01:12:14.527
schwieriger, als ich jetzt gedacht hätte. Ich bin da

01:12:14.527 --> 01:12:16.268
auf viele Dinge gestoßen, wo ich

01:12:16.268 --> 01:12:18.487
schon das Gefühl habe, so, weia,

01:12:18.627 --> 01:12:20.208
das ist gar nicht so einfach und

01:12:20.208 --> 01:12:22.607
also fängt halt schon, also und zwar

01:12:22.607 --> 01:12:24.688
nicht nur auf der Serverseite, muss man halt aufpassen.

01:12:24.808 --> 01:12:26.808
Wenn man da halt irgendwie was verwendet, was halt nicht gut

01:12:26.808 --> 01:12:28.668
damit klarkommt, dass man halt

01:12:28.668 --> 01:12:29.967
immer eine Verbindung offen halten muss,

01:12:30.168 --> 01:12:32.427
dann ist es halt schlecht.

01:12:32.828 --> 01:12:34.148
Also wenn man halt irgendwie so

01:12:34.148 --> 01:12:35.208
sich darüber keine Gedanken macht,

01:12:35.348 --> 01:12:38.348
und benutzt halt einfach WebSockers einfach so,

01:12:39.007 --> 01:12:39.308
dann

01:12:39.308 --> 01:12:42.728
kriegt man Probleme. Mit FastDTA geht

01:12:42.728 --> 01:12:44.527
das, aber naja. Und dann ist halt die Frage,

01:12:44.607 --> 01:12:45.708
wie gut kann man das so verwenden?

01:12:46.487 --> 01:12:48.907
Das geht mit FastDTA auch ganz gut.

01:12:50.248 --> 01:12:50.567
Und

01:12:50.567 --> 01:12:52.648
und dann ist aber noch die Client-Seite, das ist auch schwierig.

01:12:52.808 --> 01:12:54.728
Das ist halt nicht so richtig einfach, weil was passiert zum Beispiel,

01:12:54.907 --> 01:12:57.927
wenn jetzt die Server-Seite sich neu startet?

01:12:59.567 --> 01:13:00.748
Du musst eine neue Verbindung bekommen.

01:13:01.328 --> 01:13:03.467
Ja, du musst halt retryen, weil ansonsten, wenn du einfach nichts machst,

01:13:03.607 --> 01:13:04.427
dann ist die Verbindung halt weg.

01:13:04.688 --> 01:13:05.728
Oh, weg, tot.

01:13:06.148 --> 01:13:07.888
Genau, du kriegst einfach keine Apps mehr.

01:13:08.027 --> 01:13:09.268
Aus die Maus, danke, nein, das war's, tschüss.

01:13:09.848 --> 01:13:11.148
Ja, das heißt, du musst reconnecten.

01:13:11.547 --> 01:13:14.027
So, jetzt seht ihr das erste Reconnect vielleicht nicht,

01:13:14.107 --> 01:13:15.848
dann, okay, vielleicht noch ein zweites.

01:13:15.947 --> 01:13:18.487
Dann gibt es halt unterschiedliche Sachen, die auftreten können.

01:13:18.487 --> 01:13:19.748
Auf die musst du irgendwie reagieren.

01:13:19.748 --> 01:13:21.407
dann und dann

01:13:21.407 --> 01:13:22.107
dann

01:13:22.107 --> 01:13:23.368
ja

01:13:23.368 --> 01:13:27.467
auch auf der Serverseite auch wieder so ein Problem

01:13:27.467 --> 01:13:28.447
du musst halt dann die Sachen

01:13:28.447 --> 01:13:31.487
du weißt ja nicht unter Umständen wo du dann landest

01:13:31.487 --> 01:13:33.027
also entweder du hast nur einen einzigen Prozess

01:13:33.027 --> 01:13:34.168
das ist aber vielleicht dann noch ein bisschen wenig

01:13:34.168 --> 01:13:37.507
oder du musst halt dafür sorgen, dass die alle gleich sind

01:13:37.507 --> 01:13:39.268
irgendwie in gewisser Weise, dass du auf alle

01:13:39.268 --> 01:13:41.547
connecten kannst und es immer das gleiche dann passiert

01:13:41.547 --> 01:13:43.348
ach ja

01:13:43.348 --> 01:13:44.728
aber so wirklich

01:13:44.728 --> 01:13:47.368
also was dann wirklich

01:13:47.368 --> 01:13:49.268
so ein bisschen so Softwarearchitekturproblem wird

01:13:49.268 --> 01:13:50.127
ist halt sowas wie

01:13:50.127 --> 01:13:55.368
du kriegst jetzt die unterschiedlichen Informationen

01:13:55.368 --> 01:13:57.447
rein, halt einmal über den Websocket, kriegst du halt irgendwelche Events,

01:13:57.527 --> 01:13:59.388
dass irgendwas passiert ist, du holst

01:13:59.388 --> 01:14:01.407
aber auch manchmal Sachen. Und manchmal sind das ja die gleichen

01:14:01.407 --> 01:14:03.228
Informationen. Nur im einen Fall holst du sie halt

01:14:03.228 --> 01:14:05.407
über so eine HTTP-JSON-API

01:14:05.407 --> 01:14:07.427
und im anderen Fall kriegst du es halt über den Websocket

01:14:07.427 --> 01:14:09.388
rein. Und jetzt musst du das halt irgendwie so

01:14:09.388 --> 01:14:11.208
chronisieren und darfst halt nicht Sachen doppelt zählen

01:14:11.208 --> 01:14:13.368
oder so. Und dann musst du das halt

01:14:13.368 --> 01:14:15.388
irgendwie abstrahieren, dass du in dem

01:14:15.388 --> 01:14:17.208
Teil,

01:14:17.208 --> 01:14:18.907
wo du halt deine Wahrheit

01:14:18.907 --> 01:14:21.428
über den Application State halt hältst,

01:14:21.467 --> 01:14:23.368
zum Beispiel in Vue, in so einem

01:14:23.368 --> 01:14:24.607
Pinia-Store oder sowas,

01:14:25.587 --> 01:14:26.987
musst du halt so

01:14:26.987 --> 01:14:29.467
Web-Apps installieren, dass es dir an der Stelle egal sein kann,

01:14:29.607 --> 01:14:31.547
ob das jetzt über einen Web-Socket kam oder woanders her oder so

01:14:31.547 --> 01:14:32.627
und dann musst du halt anfangen so,

01:14:32.987 --> 01:14:35.007
musst du halt schon ein Software-Stick vor machen, so ein Frontend.

01:14:35.208 --> 01:14:35.587
Frontend!

01:14:36.728 --> 01:14:37.348
Oh nein!

01:14:37.547 --> 01:14:38.328
Wer macht denn das?

01:14:39.228 --> 01:14:41.587
Backend schon nicht so richtig hin und wer macht das denn sauber?

01:14:41.907 --> 01:14:43.467
Pinia war ein guter Sighted, das ist nämlich

01:14:43.467 --> 01:14:45.607
für einen Superstore, ich finde den auch sehr viel

01:14:45.607 --> 01:14:47.007
angenehmer zu schreiben als Vue-X,

01:14:47.007 --> 01:14:49.047
die man für VJS nehmen kann, ja.

01:14:49.527 --> 01:14:51.467
Ja, gefällt mir auch sehr gut, aber

01:14:51.467 --> 01:14:53.368
tatsächlich irgendwie

01:14:53.368 --> 01:14:55.228
manchmal habe ich auch so Dinge, wo ich denke, oh okay,

01:14:55.328 --> 01:14:57.308
der Zustand ist jetzt aber nicht, warum steht denn da

01:14:57.308 --> 01:14:59.208
irgendwas übrig geblieben und da ist irgendwas inkonsistent,

01:14:59.288 --> 01:15:01.547
wie ist das denn passiert? Das kann ja jetzt eigentlich gar nicht sein.

01:15:02.107 --> 01:15:03.527
Es ist schon so ein bisschen

01:15:03.527 --> 01:15:05.507
hakelig und man muss

01:15:05.507 --> 01:15:07.288
darüber nachdenken und es ist alles nicht mehr so einfach.

01:15:07.888 --> 01:15:09.487
Also das ist, hätte ich jetzt

01:15:09.487 --> 01:15:10.947
gar nicht so erwartet, dass das so

01:15:10.947 --> 01:15:12.728
kompliziert auch ist irgendwie.

01:15:13.248 --> 01:15:15.248
Aber es ist halt tatsächlich...

01:15:15.248 --> 01:15:17.708
Ich habe ehrlich gesagt aufs Date immer noch nicht so genau verstanden.

01:15:17.928 --> 01:15:19.587
Also es ist irgendwas, irgendeine Wahrheit hat

01:15:19.587 --> 01:15:21.728
irgendwer in der Hand und der hat den Ball nicht in die

01:15:21.728 --> 01:15:23.527
richtige Stelle geschmissen und die Frage ist, wer

01:15:23.527 --> 01:15:25.467
sammelt denn alle Bälle ein, um hinterher die wieder

01:15:25.467 --> 01:15:27.547
weiter zu verteilen. Also irgendwie so. Das ist so ein bisschen doof.

01:15:28.967 --> 01:15:29.987
Ja, es ist halt

01:15:29.987 --> 01:15:31.228
das, woraus quasi dann

01:15:31.228 --> 01:15:33.708
das, was du von der Applikation siehst,

01:15:33.788 --> 01:15:35.248
gerendert wird. Und wenn sich das ändern sollte,

01:15:35.328 --> 01:15:36.888
Ja, das Ding ist, was du sagst.

01:15:36.967 --> 01:15:39.188
Wer weiß das denn überhaupt? Manche Leute

01:15:39.188 --> 01:15:40.288
erinnern ja irgendwas, obwohl es gar nicht stimmt.

01:15:41.768 --> 01:15:43.168
Was auch nicht immer falsch sein muss,

01:15:43.268 --> 01:15:44.967
vielleicht. Vielleicht muss man auch manchmal

01:15:44.967 --> 01:15:46.587
da gucken, was ist denn wichtiger?

01:15:47.027 --> 01:15:48.888
Dass man lange wartet, bis man weiß, was wahr ist?

01:15:49.168 --> 01:15:50.688
Nö, man kann ja auch einfach dann so tun, als

01:15:50.688 --> 01:15:51.947
man das schon weiß. Genau, ja, ja, ja.

01:15:52.268 --> 01:15:54.748
Und das stimmt ja vielleicht oft auch. Vielleicht ja manchmal auch nicht.

01:15:54.808 --> 01:15:56.308
Und was macht man denn dann? Und so, und ja.

01:15:56.768 --> 01:15:58.047
Ja, aber es wird halt schnell

01:15:58.047 --> 01:16:00.648
kompliziert. Und

01:16:00.648 --> 01:16:02.248
genau, also das fand ich schon

01:16:02.248 --> 01:16:04.648
ja so ein bisschen, also hätte ich jetzt

01:16:04.648 --> 01:16:06.587
nicht so erwartet, dass es so schlimm ist. Und dann

01:16:06.587 --> 01:16:08.428
eine andere Geschichte, die halt auch dann

01:16:08.428 --> 01:16:10.708
irgendwann, ich hätte

01:16:10.708 --> 01:16:12.748
nicht erwartet, dass es so leicht ist

01:16:12.748 --> 01:16:14.607
irgendwie Polling zu

01:16:14.607 --> 01:16:16.268
verwenden. Also jetzt mit

01:16:16.268 --> 01:16:17.907
HTMLX zum Beispiel

01:16:17.907 --> 01:16:20.328
ist es halt super easy

01:16:20.328 --> 01:16:22.348
irgendwie, weil, also was ich

01:16:22.348 --> 01:16:24.288
früher halt so gesagt hatte, so oh Pollen, oh mein Gott,

01:16:24.467 --> 01:16:26.348
also einmal, das macht viel Last auf dem Server, weil du pollst ja die ganze

01:16:26.348 --> 01:16:28.447
Zeit, ne, wenn jetzt viele Leute auf deiner Seite sind,

01:16:28.567 --> 01:16:30.388
dann pollen die die ganze Zeit, super,

01:16:30.607 --> 01:16:32.407
super toll, irgendwie habe ich irgendwie

01:16:32.407 --> 01:16:33.507
viel mehr Requests, als ich eigentlich

01:16:33.507 --> 01:16:35.168
bräuchte und so.

01:16:37.007 --> 01:16:38.228
Da muss ich dafür sicherstellen,

01:16:38.248 --> 01:16:40.467
muss ich irgendwie sicherstellen, dass das JavaScript auch irgendwann aufhört

01:16:40.467 --> 01:16:40.928
zu pollen.

01:16:41.928 --> 01:16:43.388
Du hast ja auch schon darüber gesprochen,

01:16:43.388 --> 01:16:45.007
abholen, also will man überhaupt nicht machen.

01:16:45.127 --> 01:16:47.148
Genau, aber habe ich jetzt inzwischen

01:16:47.148 --> 01:16:48.868
dann doch, glaube ich, meine Meinung geändert, weil

01:16:48.868 --> 01:16:51.067
wenn man das halt so einfach hinschreiben kann wie

01:16:51.067 --> 01:16:52.788
in HTMLX, wo man schreibt halt every

01:16:52.788 --> 01:16:55.168
two seconds oder so, schreibt man

01:16:55.168 --> 01:16:57.127
ein Attribut, das war's. Mehr macht man

01:16:57.127 --> 01:16:58.848
gar nicht. Und auf der Serverseite

01:16:58.848 --> 01:17:01.127
schickt man halt, also man kontrolliert es

01:17:01.127 --> 01:17:03.248
von der Serverseite aus und nicht von der JavaScript-Seite aus

01:17:03.248 --> 01:17:05.228
und von der Serverseite aus schickt man halt

01:17:05.228 --> 01:17:07.428
so einen Statuscode 286

01:17:07.428 --> 01:17:09.087
zurück, so irgendwie, ich weiß nicht,

01:17:09.107 --> 01:17:10.768
der heißt irgendwie auch sowas wie Top-Polling oder sowas

01:17:10.768 --> 01:17:13.047
und dann hört es einfach auf.

01:17:13.047 --> 01:17:14.967
und in dem Startpoint steht dann, wie lange, glaube ich,

01:17:15.007 --> 01:17:17.007
sogar, ne? Ja, kann man alles irgendwie

01:17:17.007 --> 01:17:18.748
setzen, aber man kann halt auch... Ja, derweil

01:17:18.748 --> 01:17:20.728
ich glaube, wenn du einen bestimmten Code machst,

01:17:20.808 --> 01:17:22.728
also ich glaube 4.19 kann das auch sein,

01:17:22.828 --> 01:17:24.268
dass man dann sagt, hey, hör auf jetzt,

01:17:24.627 --> 01:17:26.648
wie lange, sonst wirst du gebannt oder so.

01:17:26.907 --> 01:17:28.907
4, wie hieß das, der Client hat irgendwas falsch gemacht,

01:17:28.947 --> 01:17:30.907
ich weiß es nicht so genau, keine Ahnung, aber ja, man kann

01:17:30.907 --> 01:17:32.507
da auf jeden Fall viel machen und

01:17:32.507 --> 01:17:34.928
man kann sogar das halt einfach so machen,

01:17:34.987 --> 01:17:36.808
dass man das Element, was halt poilt

01:17:36.808 --> 01:17:39.067
oder so einfach austauscht im AutoHTML

01:17:39.067 --> 01:17:40.928
und dann kann man einfach

01:17:40.928 --> 01:17:42.888
das Poll-Ding wegnehmen. Also 9. ist ja

01:17:42.888 --> 01:17:46.627
Authentication Timeout. Und sobald jemand auf irgendwas anderes draufdrückt, kann man out of band

01:17:46.627 --> 01:17:50.627
aber das Polling ja wieder aktivieren und so. Das heißt, also eigentlich für ganz

01:17:50.627 --> 01:17:54.447
viele Fälle, wo man halt mal eine Zeit lang irgendwie so Live-Updates oder so braucht auf einer Seite,

01:17:54.907 --> 01:17:58.308
kann man das mit Polling relativ schmerzfrei machen.

01:17:59.027 --> 01:18:01.828
Und das war mir vorher nicht so klar. Da hätte ich gedacht, oh Mann, das ist ja alles ganz furchtbar.

01:18:02.268 --> 01:18:06.627
Und da würde ich jetzt sagen, eben aus der HTMX-Erfahrung heraus, würde ich sagen,

01:18:06.708 --> 01:18:10.467
also das ist gar nicht so schlimm. Das geht eigentlich relativ gut. Und der Riesenvorteil ist halt,

01:18:10.467 --> 01:18:22.607
das ist komplett stateless, es funktioniert mit ganzem Standardkram, den man halt so verwendet, braucht nicht irgendwie SGI oder Django Channels oder sonst irgendwas, es funktioniert mit dem ganz normalen.

01:18:22.607 --> 01:18:23.587
Also doch einfach Pollen machen.

01:18:24.407 --> 01:18:26.788
Ja, und dann, ja.

01:18:27.148 --> 01:18:28.428
Vielleicht doch lifer, als man denkt.

01:18:28.868 --> 01:18:33.648
Also da ist jetzt nur die Frage halt, wenn man viele Clients hat, die einen pollen wollen, ist das vielleicht dann doch doof.

01:18:33.648 --> 01:18:35.788
Ja, aber man hat das ja unter Kontrolle

01:18:35.788 --> 01:18:37.987
Wenn du sagst, okay, das ist mir jetzt zu viel

01:18:37.987 --> 01:18:39.828
dann sagst du halt, okay, dann polygale ich nicht jede Sekunde

01:18:39.828 --> 01:18:42.127
sondern alle zwei Sekunden hast du schon die Last um die Hälfte gesenkt

01:18:42.127 --> 01:18:43.688
Ja gut, aber wenn trotzdem

01:18:43.688 --> 01:18:45.928
eine Million Leute alle zwei Sekunden fragen

01:18:45.928 --> 01:18:47.308
ist vielleicht doof, weil es so viele auf einmal sind

01:18:47.308 --> 01:18:49.868
Du kannst ja dann irgendwann einen Mehrserver kaufen und kannst dir dann überlegen, was du machst

01:18:49.868 --> 01:18:51.487
Ja, okay, genau, aber das ist halt dann

01:18:51.487 --> 01:18:53.527
man weiß dann an welcher

01:18:53.527 --> 01:18:56.308
Linie des Problems, an welcher Achse man sich dann abarbeiten kann

01:18:56.308 --> 01:18:56.888
Ja

01:18:56.888 --> 01:18:59.248
Also das war schon so ein bisschen

01:18:59.248 --> 01:19:01.748
Wenn ich mit dem Wissen von jetzt würde ich das nicht nochmal

01:19:01.748 --> 01:19:02.487
mit wegsocken

01:19:02.487 --> 01:19:04.967
Aber jetzt habe ich es halt schon gemacht.

01:19:05.067 --> 01:19:06.688
Ja, weil ihr könnt ja sehen, wie Jochen es versucht hat.

01:19:06.768 --> 01:19:07.868
Das ist ja auch manchmal ganz amüsant.

01:19:09.407 --> 01:19:10.868
Dann hast du hoffentlich noch einen Pick.

01:19:11.547 --> 01:19:12.607
Ah, Picks. Dann machen wir jetzt Picks.

01:19:12.848 --> 01:19:13.007
Ja, gut.

01:19:14.708 --> 01:19:17.348
Ja, also mein Pick für diesmal wäre

01:19:17.348 --> 01:19:18.987
Honcho.

01:19:20.047 --> 01:19:21.168
Honcho, ist das eine Insel?

01:19:23.248 --> 01:19:24.487
Nee, das ist...

01:19:24.487 --> 01:19:25.027
Hauptinsel.

01:19:26.828 --> 01:19:29.107
Ich weiß gar nicht, wo der Name herkommt, ehrlich gesagt.

01:19:29.107 --> 01:19:30.388
Jetzt grübel ich da gerade.

01:19:30.388 --> 01:19:35.228
Nee, das ist, es gibt in Ruby, in der Ruby-Welt gibt es ein Ding, das nennt sich Formen.

01:19:35.987 --> 01:19:36.168
Aha.

01:19:36.368 --> 01:19:40.607
Ist da relativ populär und Honshu ist das auf der Python, ist eine Python-Nachimplementation

01:19:40.607 --> 01:19:50.127
davon und das benutzt man, um ein Proc-File zu lesen und dann Dinge, die darin stehen,

01:19:50.168 --> 01:19:51.127
zu starten und zu stoppen.

01:19:52.407 --> 01:19:55.987
Also quasi, wenn man jetzt sowas, man kennt das vielleicht mit Docker-Compose, Docker-Compose

01:19:55.987 --> 01:19:58.567
minus f irgendeine Config, YAML-Config

01:19:58.567 --> 01:20:00.507
up und down und so, dann passiert auch

01:20:00.507 --> 01:20:02.428
sowas, dann werden alle die Dinger hochgefahren oder die runtergefahren

01:20:02.428 --> 01:20:04.527
oder so. Also alle Docker-Container in der Composer-Granche

01:20:04.527 --> 01:20:06.208
in YAML. Genau, jetzt möchte man aber vielleicht zum Beispiel

01:20:06.208 --> 01:20:07.308
mal irgendwie

01:20:07.308 --> 01:20:10.127
so wie ich Docker ganz

01:20:10.127 --> 01:20:11.107
so, ja,

01:20:12.507 --> 01:20:13.688
ich drücke mich das jetzt aus,

01:20:14.027 --> 01:20:16.007
wenn man es nicht so gut findet,

01:20:16.228 --> 01:20:17.688
nicht so gut, eher so mittel findet,

01:20:18.308 --> 01:20:20.428
dann, und das nicht verwenden möchte,

01:20:20.648 --> 01:20:22.288
und dann sagt jemand, ja, ich habe ja schon diese Funktion

01:20:22.288 --> 01:20:24.228
gerne, dass ich halt mein komplettes System,

01:20:24.228 --> 01:20:26.368
sich zu entwickeln, so brauche ich einmal hochfahren und einmal runterfahren

01:20:26.368 --> 01:20:28.407
kann und so. Dann kann man das

01:20:28.407 --> 01:20:30.087
halt in so ein Proc-File reinschreiben,

01:20:30.268 --> 01:20:31.947
was man alles dafür hochfahren muss und runterfahren muss

01:20:31.947 --> 01:20:34.248
und dann nimmt man Honshu und sagt Honshu start

01:20:34.248 --> 01:20:36.268
und dann passiert halt quasi genau das gleiche wie mit Docker-Corpus

01:20:36.268 --> 01:20:38.027
ab. Okay, cool. Und

01:20:38.027 --> 01:20:40.308
ja, nur dass es halt nicht Docker ist, sondern

01:20:40.308 --> 01:20:42.148
dass dann einfach ganz normale Prozesse gestartet werden

01:20:42.148 --> 01:20:44.127
und Proc-File hat halt auch den Format

01:20:44.127 --> 01:20:46.407
diverse Hosts, da können das direkt lesen, Heroku kann das direkt lesen

01:20:46.407 --> 01:20:47.288
und so.

01:20:48.388 --> 01:20:50.228
Und dann kann man sich so eine Konfiguration bauen und dann werden

01:20:50.228 --> 01:20:51.467
auf dem Rechner Sachen hoch und runter gefahren.

01:20:52.047 --> 01:20:54.168
Ich meine, der Nachteil ist natürlich, es ist nicht isoliert, der Vorteil ist

01:20:54.168 --> 01:20:55.127
natürlich ist nicht isoliert.

01:20:55.708 --> 01:20:58.168
Ja, zum Beispiel

01:20:58.168 --> 01:20:59.668
ein Pattern, was ich halt in letzter Zeit,

01:20:59.928 --> 01:21:01.407
wenn ich meine Sachen mache, tatsächlich

01:21:01.407 --> 01:21:03.127
viele Dinge, die ich halt so

01:21:03.127 --> 01:21:05.987
bezahlt tue,

01:21:06.087 --> 01:21:07.828
da ist es eigentlich seit Jahren

01:21:07.828 --> 01:21:08.848
immer Docker.

01:21:10.708 --> 01:21:11.728
Ist es besser geworden?

01:21:11.967 --> 01:21:14.087
Davor war es mal eine Zeit lang Vagrant

01:21:14.087 --> 01:21:16.087
und Virtualbox

01:21:16.087 --> 01:21:18.027
und so, das war noch schrecklicher als Docker.

01:21:19.308 --> 01:21:19.987
Aber Docker

01:21:19.987 --> 01:21:20.748
ist auch ziemlich schlimm.

01:21:21.947 --> 01:21:23.888
Ist jetzt auch bezahlt übrigens, für Corporates

01:21:23.888 --> 01:21:24.788
muss man erst abstehen lassen.

01:21:25.788 --> 01:21:28.208
Wobei die Grenzen, wo das dann viele nicht runterfallen.

01:21:28.228 --> 01:21:29.627
Nur große Corporates müssen das eigentlich machen.

01:21:29.627 --> 01:21:31.547
Ja, und wenn du so groß bist, dass du da runterfallst, dann

01:21:31.547 --> 01:21:33.487
genauer dann.

01:21:33.788 --> 01:21:35.708
Wenn die Leute halt nicht freiwillig für Open Source dann

01:21:35.708 --> 01:21:37.947
bereitstellen, dann ist das vielleicht schon ganz gut, dass sie dazu gezogen werden

01:21:37.947 --> 01:21:39.248
über ein Modell, aber ja.

01:21:39.848 --> 01:21:41.788
Ja, aber genau, aber tatsächlich

01:21:41.788 --> 01:21:42.907
würde ich jetzt mal so sagen, also

01:21:42.907 --> 01:21:45.487
es geht schon viel Zeit dabei drauf,

01:21:45.947 --> 01:21:46.808
also bei mir jetzt, also

01:21:46.808 --> 01:21:49.428
dass ich irgendwie Dinge, also

01:21:49.428 --> 01:21:51.007
morgens, wenn ich mich dran setze,

01:21:51.007 --> 01:21:52.607
dann so, irgendwie

01:21:52.607 --> 01:22:22.587
und Jochen unterhalten sich über die Programmiersprache Python

01:22:22.607 --> 01:22:24.648
und anstatt dass auch noch die Idee kommt, wenn es mal komplett

01:22:24.648 --> 01:22:25.907
rebuildet ist, das wieder von vorne an.

01:22:26.228 --> 01:22:28.388
Und wenn man daran debuggen will, es geht schon,

01:22:28.527 --> 01:22:30.248
es ist aber alles irgendwie und alles ist langsam

01:22:30.248 --> 01:22:32.708
und in einzelnen Testern ist halt alles lahm,

01:22:32.848 --> 01:22:33.987
es fühlt sich alles so an.

01:22:35.228 --> 01:22:36.708
Es braucht relativ viele Ressourcen.

01:22:37.567 --> 01:22:38.527
Ja, genau. Ich bin

01:22:38.527 --> 01:22:39.708
vielleicht besonders gestraft, weil ich halt

01:22:39.708 --> 01:22:42.607
auf einer Mac-Plattform bin und da ist es halt

01:22:42.607 --> 01:22:44.248
besonders langsam, aber

01:22:44.248 --> 01:22:46.627
es ist wirklich

01:22:46.627 --> 01:22:47.228
aufwendig.

01:22:49.087 --> 01:22:50.388
Es kostet wirklich Zeit,

01:22:50.388 --> 01:22:52.007
irgendwie das halt zu verwenden.

01:22:52.607 --> 01:22:54.127
und es macht alles ein bisschen schwieriger

01:22:54.127 --> 01:22:55.968
und für meine eigenen Sachen mache ich das,

01:22:56.127 --> 01:22:57.768
also da habe ich jetzt den Vergleich, da mache ich das halt nicht so.

01:22:58.468 --> 01:22:59.907
Ein Pattern, das ich da halt verwende, ist eben,

01:23:00.268 --> 01:23:02.208
ich verwende halt sowas, oder ich habe halt auch ganz lange

01:23:02.208 --> 01:23:04.047
nicht Honcho verwendet, aber verwende jetzt dann halt

01:23:04.047 --> 01:23:05.808
vielleicht Honcho und den einzigen,

01:23:05.907 --> 01:23:08.127
den Applikationsverlauf, das Ding, an dem ich gerade entwickle,

01:23:08.748 --> 01:23:10.047
das starte ich dann halt in der IDE

01:23:10.047 --> 01:23:12.027
mit dem Debugger zum Beispiel und kann halt

01:23:12.027 --> 01:23:14.148
dann schön drin debuggen. Ich kann, wenn ich

01:23:14.148 --> 01:23:16.348
auf den Test ausführen klicke, dann ist das halt sofort

01:23:16.348 --> 01:23:17.987
sofort ausgeführt, ja,

01:23:18.047 --> 01:23:19.888
und ich muss halt nicht erstmal 10 Sekunden warten, bis das

01:23:19.888 --> 01:23:21.828
irgendwie sich irgendwie in Docker reingetunnelt hat

01:23:21.828 --> 01:23:22.987
und dann da irgendwie...

01:23:22.987 --> 01:23:25.487
Wenn du erstmal alles wieder bauen musst.

01:23:26.487 --> 01:23:27.648
Und das

01:23:27.648 --> 01:23:29.507
funktioniert tatsächlich ziemlich gut. Es war eine sehr

01:23:29.507 --> 01:23:30.567
angenehme Erfahrung, aber

01:23:30.567 --> 01:23:33.367
ja, weiß auch nicht. Aber die Leute,

01:23:33.788 --> 01:23:35.668
also in Firmen ist es wohl

01:23:35.668 --> 01:23:37.567
offensichtlich inzwischen irgendwie verpflichtend,

01:23:37.627 --> 01:23:38.248
Docker zu nehmen.

01:23:39.188 --> 01:23:40.288
Klingt gut, also Hontu.

01:23:41.867 --> 01:23:43.248
Ich wollte...

01:23:43.248 --> 01:23:44.688
Danke an Claudio für den Tipp.

01:23:45.148 --> 01:23:47.607
Ah ja, also ich

01:23:47.607 --> 01:23:49.487
wollte ein Dango-Projekt

01:23:49.487 --> 01:23:51.248
picken. Und zwar

01:23:51.248 --> 01:23:52.288
HealthChecks heißt das.

01:23:53.708 --> 01:23:54.507
Das ist sehr cool.

01:23:54.828 --> 01:23:57.388
Da kann man selber hosten, einfach HealthChecks und da

01:23:57.388 --> 01:23:58.907
irgendwie seine Applikationen reinpacken.

01:23:59.168 --> 01:24:00.668
Es ist natürlich ganz wichtig, dass der HealthCheck

01:24:00.668 --> 01:24:03.348
Server auf dem gleichen Server läuft

01:24:03.348 --> 01:24:03.748
wie der Rest.

01:24:05.808 --> 01:24:07.708
Ja, ich weiß es nicht.

01:24:07.748 --> 01:24:08.047
Wann wird es?

01:24:08.928 --> 01:24:13.507
Das ist ja in Dago selber drin.

01:24:13.947 --> 01:24:15.047
Ja, genau. Es ist ein Dago-Projekt,

01:24:15.087 --> 01:24:17.428
Dago-4-Projekt, wo man halt relativ nett

01:24:17.428 --> 01:24:19.288
einfach seinen Server,

01:24:19.288 --> 01:24:21.067
die man so überwachen will, rein monitoren kann.

01:24:21.587 --> 01:24:23.348
Ganz nettes, kleines Frontend

01:24:23.348 --> 01:24:25.047
altes, relativ modern gebaut

01:24:25.047 --> 01:24:27.007
und Tynopost-Python

01:24:27.007 --> 01:24:28.148
3.8 glaube ich und

01:24:28.148 --> 01:24:30.027
hochfahren,

01:24:31.027 --> 01:24:33.367
Frontend benutzen, wie man das halt von anderen Tools

01:24:33.367 --> 01:24:35.127
kennt, aber es ist help-hosted und light-white

01:24:35.127 --> 01:24:36.947
und schick. Ja, cool, cool, cool.

01:24:37.688 --> 01:24:39.148
Muss ich mir mal angucken, was das genau macht.

01:24:39.388 --> 01:24:41.228
Ich dachte, das wäre jetzt in dem Ding, was man innerhalb

01:24:41.228 --> 01:24:43.168
von Django hat, wo man dann von außen fragen kann, ob

01:24:43.168 --> 01:24:44.968
da noch alles okay ist. Also einfach so ein

01:24:44.968 --> 01:24:47.067
normales Health-Check-Ding, dass du halt einfach

01:24:47.067 --> 01:24:49.047
guckst, sind die Server, die du halt haben willst, sind die noch da oder

01:24:49.047 --> 01:24:51.507
nicht und was macht das hinterher. Okay, also eher so ein Monitoring-Tool.

01:24:51.587 --> 01:24:52.067
Ja, ja, genau.

01:24:52.547 --> 01:24:53.527
Mal angucken, weiß ich nicht.

01:24:56.728 --> 01:24:56.968
Ja.

01:24:56.968 --> 01:24:58.308
Ja, dann

01:24:58.308 --> 01:25:00.748
sind wir eigentlich, ne?

01:25:01.547 --> 01:25:02.127
Ja, sind wir durch.

01:25:02.947 --> 01:25:04.228
Vielen Dank, dass ihr wieder eingeschaltet habt.

01:25:04.668 --> 01:25:06.268
Bleibt uns gewogen, trotz Erwärmung.

01:25:06.947 --> 01:25:08.148
Hört uns überall, wo ihr uns hören wollt.

01:25:08.907 --> 01:25:11.348
Sagt Bescheid, was euch stört, an hallo.at, pythonpodcast.de.

01:25:11.607 --> 01:25:13.007
Ja, oder wenn es euch nicht stört und gut

01:25:13.007 --> 01:25:14.388
gefällt, dann könnt ihr auch gerne irgendwie

01:25:14.388 --> 01:25:17.067
meine Bewertungen hinterlassen bei iTunes oder

01:25:17.067 --> 01:25:18.788
irgendwie Spotify geht es jetzt auch über unsere Bewertungen.

01:25:19.047 --> 01:25:43.047
und

01:25:43.047 --> 01:25:47.248
geben. Letztes Jahr waren wir über 100 Tage, glaube ich, in Top 20 Tech-Podcasts.

01:25:47.348 --> 01:25:47.728
Kann das sein?

01:25:48.688 --> 01:25:50.428
Top 50, glaube ich eher.

01:25:50.547 --> 01:25:51.407
Top 20, weiß ich nicht.

01:25:51.487 --> 01:25:53.367
21 oder so.

01:25:54.728 --> 01:25:56.188
Ja, aber relativ lang.

01:25:56.308 --> 01:25:57.348
Und jetzt, also dieses Jahr, ich weiß nicht,

01:25:57.428 --> 01:25:59.367
dieses Jahr eigentlich

01:25:59.367 --> 01:26:00.848
schon die ganze Zeit.

01:26:03.388 --> 01:26:03.748
Ja,

01:26:03.867 --> 01:26:05.527
vielleicht gibt es gar nicht mehr als 50.

01:26:05.728 --> 01:26:06.067
Ich weiß es nicht.

01:26:06.367 --> 01:26:09.567
Auf Spotify sind es quasi jetzt gerade so

01:26:09.567 --> 01:26:11.487
3000 Subscriber.

01:26:12.007 --> 01:26:12.947
Ja, und wie viele sind wir

01:26:12.947 --> 01:26:36.947
und

01:26:36.947 --> 01:26:38.308
Ist ja völlig verprünt, okay.

01:26:38.788 --> 01:26:41.107
Nein, hast du das mitgekriegt, diese Joe Rogan-Geschichte?

01:26:41.547 --> 01:26:44.367
Diese unsägliche Mail, die der Spotify-CEO geschrieben hat?

01:26:44.668 --> 01:26:48.268
Die Mail habe ich nicht gelesen, ich habe nur gehört, dass es irgendeinen Stress gibt mit Joe Rogan, den ich nicht höre.

01:26:48.648 --> 01:26:54.007
Und ich dachte mir so, aha, okay, der hat irgendwelchen Scheiß erzählt und ist ein Idiot und einige Leute verlassen das hier in der Plattform.

01:26:54.127 --> 01:26:55.288
Ich bin ein bisschen aufgeregt, blablabla.

01:26:56.228 --> 01:26:58.768
Weißt du was, ich bin einer der wenigen Leute, die überhaupt kein Spotify haben.

01:26:59.348 --> 01:27:00.148
Ach so, okay.

01:27:00.288 --> 01:27:01.848
Ich weiß auch nicht, warum unser Podcast da läuft.

01:27:02.007 --> 01:27:03.748
Ich glaube, jemand hatte die Idee, dass das unbedingt da laufen muss.

01:27:03.907 --> 01:27:05.527
Mir ist das Ding völlig egal.

01:27:05.527 --> 01:27:07.527
Ja, ich höre meine Musik tatsächlich auf anderen Quellen.

01:27:07.728 --> 01:27:09.527
Also auf Vinyl, falls du genau wissen willst.

01:27:10.087 --> 01:27:11.228
Aber, ja.

01:27:12.148 --> 01:27:13.188
Ich war da, ja,

01:27:13.388 --> 01:27:15.228
aha, der feine Herr

01:27:15.228 --> 01:27:15.867
auf Vinyl.

01:27:17.188 --> 01:27:19.587
Ich mag das halt, wenn Python-Code gut aussieht,

01:27:19.688 --> 01:27:21.468
aber okay, andere Leute hören halt Sachen

01:27:21.468 --> 01:27:23.388
auf Vinyl. Ja, also ich habe aber so

01:27:23.388 --> 01:27:25.648
ein modernes System, damit kann ich mir auch jede digitale

01:27:25.648 --> 01:27:27.367
Flak auf mein

01:27:27.367 --> 01:27:28.607
Vinyl schmeißen, wenn ich das muss.

01:27:29.087 --> 01:27:31.468
Dann kann ich sogar mit dem Flak

01:27:31.468 --> 01:27:33.208
umscratchen. Das muss ich demnächst mit einer

01:27:33.208 --> 01:27:34.348
Tonspur von dir aufrufen.

01:27:35.527 --> 01:27:37.928
auf der Webseite.

01:27:39.288 --> 01:27:40.168
Zeit ist gewogen.

01:27:40.507 --> 01:27:41.527
Vielleicht wieder rein. Bis dann.

01:27:42.067 --> 01:27:42.308
Tschüss.
