WEBVTT

00:00:00.540 --> 00:00:05.700
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, diesmal in der Weihnachtsepisode.

00:00:06.480 --> 00:00:09.880
Ja, was machen wir hier eigentlich? Wir sind diesmal bei Dominik unterm Dach.

00:00:10.340 --> 00:00:12.700
Ja, ich bin der Dominik und dabei ist natürlich wieder Jochen. Hallo Jochen.

00:00:12.720 --> 00:00:19.000
Ja, hallo, ich bin Jochen, genau. Und ja, das ist irgendwie eine sehr schöne...

00:00:20.200 --> 00:00:23.840
Das sieht ein bisschen aus wie eine Raumschiffzentrale, ehrlich gesagt.

00:00:24.080 --> 00:00:28.400
Eine ganze Menge Monitore und Elektronikdinge. Ich bin da ein wenig neidisch, muss ich sagen.

00:00:28.400 --> 00:00:30.000
Oh, das hört sich super an.

00:00:30.340 --> 00:00:32.020
Also ich bin auch immer neidisch auf deinen schönen Wintergarten.

00:00:32.260 --> 00:00:34.120
Aber probieren wir es mal hier aus.

00:00:34.640 --> 00:00:37.400
Mal gucken, wie der Ton ist und wie unsere Hörer den finden.

00:00:37.560 --> 00:00:38.160
Ja, das wird auch interessant.

00:00:38.280 --> 00:00:40.180
Das ist einfach jetzt ein anderes System, mit dem wir das aufnehmen.

00:00:41.340 --> 00:00:46.900
Und genau, wir nehmen wieder auf mit den beiden drahtlosen Mikrofonen.

00:00:47.460 --> 00:00:50.920
Letztes Mal hatte ich halt irgendwie so ein Beyerdynamics-Headset verwendet.

00:00:51.740 --> 00:00:54.260
Das war eigentlich ziemlich cool und das war auch vor allen Dingen schön,

00:00:54.320 --> 00:00:56.440
dass ich dann hören konnte, dass alles immer noch funktioniert

00:00:56.440 --> 00:00:58.220
und nicht irgendwie der Audio-Stream plötzlich weg ist.

00:00:59.240 --> 00:01:01.600
Aber es ist auch so ein bisschen, es isoliert einen.

00:01:02.020 --> 00:01:04.000
Du meinst mit letztes Mal die Django-Folge,

00:01:04.060 --> 00:01:05.280
die noch gar nicht ausgestrahlt worden ist?

00:01:05.620 --> 00:01:08.080
Ja doch, also wenn wir die jetzt ausstrahlen,

00:01:08.140 --> 00:01:09.080
dann ist die schon ausgestrahlt.

00:01:09.420 --> 00:01:11.620
Ja? Also wir machen zuerst die Django-Folge

00:01:11.620 --> 00:01:12.400
und dann die Weihnachtsfolge.

00:01:12.440 --> 00:01:13.000
Denke ich schon, ja.

00:01:13.060 --> 00:01:13.880
Ja, das finde ich super, okay.

00:01:14.620 --> 00:01:16.540
Also sind wir sogar in der dritten Episode offiziell.

00:01:17.740 --> 00:01:18.300
Ja, genau.

00:01:18.660 --> 00:01:20.120
Wobei es natürlich auch wieder darauf ankommt,

00:01:20.180 --> 00:01:22.460
wann man anfängt zu zählen oder wie man anfängt zu zählen.

00:01:22.860 --> 00:01:23.160
Bei Null?

00:01:23.500 --> 00:01:25.740
Ja, eigentlich sollte man ja bei Null anfangen, genau.

00:01:26.160 --> 00:01:27.340
So, wir sind ja nicht bei Fortran hier.

00:01:28.100 --> 00:01:29.940
so bei 1 anfangen zu zählen, ist ja im Grunde

00:01:29.940 --> 00:01:31.620
irgendwie falsch, so für mich

00:01:31.620 --> 00:01:33.160
als irgendwie computeraffin.

00:01:33.740 --> 00:01:35.880
Also es gibt Mathematiker, die auch bei 1 anfangen zu zählen,

00:01:35.960 --> 00:01:37.000
aber das ist alles Unsinn.

00:01:37.780 --> 00:01:39.760
Ja, aber natürlich

00:01:39.760 --> 00:01:41.660
ist jetzt die Frage, wenn wir jetzt bei 0

00:01:41.660 --> 00:01:43.560
anfangen zu zählen, haben wir ja trotzdem 3

00:01:43.560 --> 00:01:45.480
Episoden drin, denn die Länge des

00:01:45.480 --> 00:01:47.700
Arrays wäre ja irgendwie... Ist immer noch 3,

00:01:47.820 --> 00:01:49.280
aber wir wären erst bei Nummer 2.

00:01:50.240 --> 00:01:51.440
Ja, okay. Aber ich glaube...

00:01:51.440 --> 00:01:52.220
Da müssen wir uns nochmal drüber streiten.

00:01:54.580 --> 00:01:55.940
Ich glaube, man kann

00:01:55.940 --> 00:01:57.840
in der Datenbank, das sind momentan

00:01:57.840 --> 00:01:59.700
die tatsächlich, die ID ist der Datenbank, man kann in der

00:01:59.700 --> 00:02:01.900
ID, in der Datenbank, die fängt

00:02:01.900 --> 00:02:02.900
auch mit 1 an und nicht mit 0.

00:02:03.640 --> 00:02:05.860
Naja, ach, alles kaputt.

00:02:07.780 --> 00:02:08.100
Alle

00:02:08.100 --> 00:02:09.880
tolle Sachen werden dann nur mal kaputt

00:02:09.880 --> 00:02:11.320
gemacht. Ja, also genau,

00:02:11.500 --> 00:02:13.880
kaputt ist direkt das nächste Stichwort, weil was machen wir

00:02:13.880 --> 00:02:15.780
heute? Heute wollen wir tatsächlich

00:02:15.780 --> 00:02:17.700
ein bisschen darüber erzählen, was alles nicht so richtig

00:02:17.700 --> 00:02:19.840
funktioniert. Vor allem, was der Jochen immer

00:02:19.840 --> 00:02:21.600
so im Web macht und was dann da nicht klappt.

00:02:21.700 --> 00:02:23.500
So an Pandas mit Request HTML,

00:02:24.240 --> 00:02:25.940
Pars mit seinem Respy,

00:02:25.940 --> 00:02:27.720
der hat nämlich Hass und

00:02:27.720 --> 00:02:29.900
muss weg. Und mit dem Verstärker

00:02:29.900 --> 00:02:31.820
von Jochen. Ja, da wollten wir

00:02:31.820 --> 00:02:33.600
am Ende ein bisschen euch über

00:02:33.600 --> 00:02:35.720
eigene Podcasts erzählen, was es

00:02:35.720 --> 00:02:36.960
so für interessante Dinge noch gibt.

00:02:37.600 --> 00:02:39.600
Ja, und diesmal so ein bisschen durcheinander. Ist ja die Weihnachtsfolge

00:02:39.600 --> 00:02:41.660
ein bisschen Chaos. Genau, wir haben nicht wirklich

00:02:41.660 --> 00:02:43.720
was vorbereitet, sondern wir erzählen jetzt

00:02:43.720 --> 00:02:45.460
einfach mal so, was so passiert.

00:02:45.540 --> 00:02:46.880
Was vielleicht auch ganz interessant sein kann.

00:02:47.560 --> 00:02:49.500
Und ich denke, vielleicht ist es sogar am besten einfach mal so,

00:02:49.780 --> 00:02:51.040
ja, wie geht es uns eigentlich?

00:02:51.420 --> 00:02:53.560
Ja, erst mal für immer, wenn wir Fragen, Anmerkungen,

00:02:53.700 --> 00:02:55.680
Kommentare, Lob, Hass, alles mögliche

00:02:55.680 --> 00:02:56.660
haben, schreibt an

00:02:56.660 --> 00:02:59.280
hallo.python-podcast.de

00:02:59.280 --> 00:03:01.120
Und die Links und zusätzlichen Infos

00:03:01.120 --> 00:03:02.720
findet ihr in den Shownotes.

00:03:03.140 --> 00:03:04.720
Ja, Entschuldigung, ich wollte dich jetzt nicht unterbrechen.

00:03:04.800 --> 00:03:06.240
Direkt los. Was machen wir heute?

00:03:06.800 --> 00:03:07.940
Wir haben uns nicht richtig vorbereitet.

00:03:08.320 --> 00:03:10.880
Ja, wir machen immer so querbeet, alles mögliche.

00:03:11.120 --> 00:03:12.700
Genau. Und ja, aber

00:03:12.700 --> 00:03:14.520
genau, wie geht's uns?

00:03:14.640 --> 00:03:15.840
Wie geht's dir, Jochen?

00:03:16.640 --> 00:03:17.800
Ja, besser.

00:03:19.760 --> 00:03:20.440
Nachdem wir

00:03:20.440 --> 00:03:22.900
irgendwie letzten Monat

00:03:22.900 --> 00:03:25.040
bei einem

00:03:25.040 --> 00:03:26.900
Ausflug irgendwie in den Taunus

00:03:26.900 --> 00:03:29.260
einen Hund in die rechte Hand

00:03:29.260 --> 00:03:29.560
gebissen.

00:03:30.720 --> 00:03:32.460
Ich dachte immer so ein bisschen, bin ich eher so

00:03:32.460 --> 00:03:35.020
der Hundetyp statt Katzentyp, aber

00:03:35.020 --> 00:03:37.160
das muss wohl auf Gegenseitigkeit

00:03:37.160 --> 00:03:38.200
beruhen und wenn man

00:03:38.200 --> 00:03:40.800
von Hunden nicht so gemocht wird, dann

00:03:40.800 --> 00:03:42.200
war er erst wenigstens ein süßer Hund.

00:03:42.880 --> 00:03:43.760
Nee, nee.

00:03:44.200 --> 00:03:45.540
Sogar ein hässlicher Kleiner.

00:03:46.240 --> 00:03:47.440
Oder ein hässlicher Großer.

00:03:49.180 --> 00:03:50.400
Und das

00:03:50.400 --> 00:03:52.880
ist natürlich auch ein bisschen blöd, wenn man die Hand gebissen wird.

00:03:53.160 --> 00:03:54.940
Echt, muss das sein?

00:03:55.040 --> 00:03:58.320
aber da sind jetzt die Verminderer ab

00:03:58.320 --> 00:03:59.840
und das sieht alles super aus

00:03:59.840 --> 00:04:01.980
kann alles bewegen

00:04:01.980 --> 00:04:04.200
Wie hast du in der Zeit die Maus gesteuert? Mit dem Fuß?

00:04:05.220 --> 00:04:06.640
Ne, tatsächlich mit der gleichen Hand

00:04:06.640 --> 00:04:08.160
Ich habe keine Maus, ich habe ein Trackpad

00:04:08.160 --> 00:04:09.440
Ah, ein Trackpad

00:04:09.440 --> 00:04:12.420
Das ist ja fast ganz oldschool, also kein Trackball

00:04:12.420 --> 00:04:12.940
ein Pad

00:04:12.940 --> 00:04:16.400
Die Idee dabei ist

00:04:16.400 --> 00:04:17.300
sozusagen, dass ich

00:04:17.300 --> 00:04:19.940
möchte, dass meine

00:04:19.940 --> 00:04:22.160
Desktop-Arbeitsumgebung

00:04:22.160 --> 00:04:24.480
möglichst ähnlich ist wie meine Laptop-Arbeitsumgebung

00:04:24.480 --> 00:04:26.440
und da hat man ja, auf dem Laptop hat man ja meistens auch

00:04:26.440 --> 00:04:28.500
ein Trackpad oder also in meinem Laptop

00:04:28.500 --> 00:04:30.620
habe ich ein Trackpad. Oder man nimmt sich eine Maus

00:04:30.620 --> 00:04:30.980
mit, ja.

00:04:32.920 --> 00:04:34.440
Und dann ist es

00:04:34.440 --> 00:04:36.500
ist es halt sozusagen

00:04:36.500 --> 00:04:38.100
wenig Umstieg, also man

00:04:38.100 --> 00:04:40.400
das ist sozusagen die Idee,

00:04:40.540 --> 00:04:41.120
dass man da halt

00:04:41.120 --> 00:04:44.520
einen fließenden Übergang hat.

00:04:44.520 --> 00:04:46.160
Dass man seine Routinen mitnehmen kann. Genau.

00:04:46.400 --> 00:04:48.360
Ich habe auch die gleiche Tastatur, sozusagen die gleiche

00:04:48.360 --> 00:04:50.180
Bluetooth-Tastatur am Desktop,

00:04:50.320 --> 00:04:52.200
wie die Tastatur, die ich im Laptop habe.

00:04:52.700 --> 00:04:54.440
Und das war eigentlich immer, das hat eigentlich immer ganz gut

00:04:54.440 --> 00:04:55.980
funktioniert. Ich habe letztens umstellen müssen,

00:04:57.140 --> 00:04:57.920
weil, ah,

00:04:58.260 --> 00:04:59.900
jetzt sind wir schon mal wieder bei dem,

00:04:59.900 --> 00:05:00.920
wie die funktionieren.

00:05:02.540 --> 00:05:02.720
Ja.

00:05:03.400 --> 00:05:05.740
Weil blöderweise irgendwie die Tastatur

00:05:05.740 --> 00:05:07.480
an meinem Laptop nicht mehr so richtig geht, was

00:05:07.480 --> 00:05:09.480
ein bekanntes Problem ist. Ich habe so ein

00:05:09.480 --> 00:05:12.100
2016er Gurken-MacBook

00:05:12.100 --> 00:05:13.980
und da ist die

00:05:13.980 --> 00:05:15.820
Tastatur, die funktioniert halt dann irgendwann nicht mehr,

00:05:15.860 --> 00:05:16.760
wenn der Krümel sich zwischen

00:05:16.760 --> 00:05:19.800
den Tasten und der Mechanik da irgendwie

00:05:19.800 --> 00:05:21.740
verhaken. Oh, das ist natürlich nicht so cool. Also guck mal

00:05:21.740 --> 00:05:23.740
hier, also dann sowas, ich kann jetzt ein Werbung

00:05:23.740 --> 00:05:24.820
machen wir Werbung.

00:05:26.240 --> 00:05:27.960
Ich habe eine Cherry-Tastatur

00:05:27.960 --> 00:05:29.440
mit so Klicks, die kann man einfach hier

00:05:29.440 --> 00:05:31.600
abmachen und dann kann man die saubern.

00:05:31.760 --> 00:05:33.420
Und das kann man mit einem

00:05:33.420 --> 00:05:35.540
Caps so machen. Das ist ganz cool.

00:05:35.760 --> 00:05:37.700
Das sieht auch super aus. Also die leuchtet auch

00:05:37.700 --> 00:05:39.700
und dann, genau, hat

00:05:39.700 --> 00:05:41.620
verschiedenfarbige Tasten und es sieht sehr robust aus.

00:05:41.760 --> 00:05:43.600
Das ist echt gut. Ich habe ganz lange

00:05:43.600 --> 00:05:45.560
so eine alte IBM

00:05:45.560 --> 00:05:47.940
in

00:05:47.940 --> 00:05:50.880
den Kreisen

00:05:50.880 --> 00:05:53.440
der Benutzer dieser Tastatur.

00:05:53.620 --> 00:05:54.540
ist das Ding auch Hackbrett.

00:05:55.620 --> 00:05:57.940
Weil es halt ein sehr kräftiges

00:05:57.940 --> 00:05:59.400
Geräusch macht bei der Benutzung.

00:05:59.440 --> 00:06:01.380
Das ist tatsächlich auch hier so. Also die Cherry-Klicks, die sind

00:06:01.380 --> 00:06:03.620
tatsächlich relativ laut. Also meine Frau beschwert sich, glaube ich,

00:06:03.640 --> 00:06:05.460
wenn ich direkt neben ihr...

00:06:05.460 --> 00:06:07.560
Genau, sowas habe ich

00:06:07.560 --> 00:06:09.460
ganz lange verwendet. Also das ist halt,

00:06:09.520 --> 00:06:11.380
das hat eine Metallplatte unten drin, damit kann man wirklich

00:06:11.380 --> 00:06:12.240
Leute...

00:06:12.240 --> 00:06:14.100
kann man

00:06:14.100 --> 00:06:17.560
nicht nur als Waffe im virtuellen

00:06:17.560 --> 00:06:19.160
Umfeld verwenden, sondern halt auch ganz

00:06:19.160 --> 00:06:21.620
so im Nahkampf bewährt sich das Ding

00:06:21.620 --> 00:06:23.180
auch. Und es ist halt nur so

00:06:23.180 --> 00:06:38.900
Also das kommt aus einer Zeit, die wurden Anfang der 80er irgendwie hergestellt und da hat noch jemand von Hand, also ich hatte mal ein bisschen Schwierigkeiten, ich konnte die nicht oder ich habe versucht, die nicht zu waschen zu sehr, weil die hatte hinten halt noch so einen Aufkleber drauf, wo jemand von Hand unterschrieben hat, dass die Qualitätskontrolle durch war und so.

00:06:38.900 --> 00:06:42.720
Okay, also tolles Teil, aber einmal.

00:06:43.220 --> 00:06:44.100
Warum nicht einfach eine Hacke?

00:06:45.820 --> 00:06:49.540
Mit Magneten irgendwie die Platte manipulieren, ja, das wäre natürlich eine Idee.

00:06:50.400 --> 00:06:51.840
Aber das war dann doch irgendwann zu unpraktisch,

00:06:51.920 --> 00:06:53.420
also die Dinger sind auch riesengroß und

00:06:53.420 --> 00:06:55.800
ja, also eigentlich mein Wunsch

00:06:55.800 --> 00:06:57.240
sozusagen eine möglichst

00:06:57.240 --> 00:06:59.840
ähnliche Umgebung auf dem Desktop zu haben

00:06:59.840 --> 00:07:01.600
wie auf dem Laptop hat dann dazu geführt, dass ich da einfach

00:07:01.600 --> 00:07:03.800
die gleichen Geschichten benutze, aber

00:07:03.800 --> 00:07:05.380
bin ich jetzt auch von weg, weil

00:07:05.380 --> 00:07:07.200
irgendwie funktioniert nicht mehr richtig

00:07:07.200 --> 00:07:09.920
irgendwie meine Laptop-Tastatur

00:07:09.920 --> 00:07:11.460
und ja,

00:07:12.040 --> 00:07:12.740
blöderweise

00:07:12.740 --> 00:07:15.820
kann ich

00:07:15.820 --> 00:07:17.100
jetzt auch meinen Laptop nicht einfach so weggeben.

00:07:18.700 --> 00:07:18.960
Also

00:07:18.960 --> 00:07:20.660
Also der Service hat dir gesagt,

00:07:20.760 --> 00:07:22.900
schicken Sie doch das Gerät bitte einfach mal ein.

00:07:23.100 --> 00:07:24.900
Dann kommen es in etwa sechs bis acht Wochen

00:07:24.900 --> 00:07:26.140
wieder repariert zurück.

00:07:27.220 --> 00:07:28.860
Dummerweise, ich benutze es jetzt

00:07:28.860 --> 00:07:30.640
aber so für Sachen, mit denen ich mich einfach mal

00:07:30.640 --> 00:07:32.360
eine Zeit lang aussetzen kann.

00:07:34.020 --> 00:07:34.800
Es wäre schneller gegangen.

00:07:34.820 --> 00:07:35.580
Also keine zwei Ersatzgeräte.

00:07:36.100 --> 00:07:37.720
Ja, das war dann halt so meine Option.

00:07:38.100 --> 00:07:38.800
Da dachte ich dann so, okay,

00:07:38.960 --> 00:07:42.540
selbst wenn das halt nur sechs Arbeitstage

00:07:42.540 --> 00:07:44.600
oder sowas, aber auch das

00:07:44.600 --> 00:07:46.460
ist schon so, dass ich mir dann sage, okay, da kann ich mir eigentlich

00:07:46.460 --> 00:07:47.740
auch ein Ersatzgerät kaufen, weil

00:07:47.740 --> 00:07:51.240
ja, das ist

00:07:51.240 --> 00:07:53.080
und ich hatte auch vor allen Dingen eine Versicherung für den

00:07:53.080 --> 00:07:54.380
ich habe also AppleCare für den Rechner

00:07:54.380 --> 00:07:56.980
weil ich dachte, genau, ich möchte eigentlich ja nicht

00:07:56.980 --> 00:07:58.880
dass mir finanzieller Schaden dadurch entsteht, wenn das Ding mal

00:07:58.880 --> 00:07:59.780
irgendwie kaputt geht oder so

00:07:59.780 --> 00:08:02.640
hab dann feststellen müssen, nützt alles nichts

00:08:02.640 --> 00:08:04.700
ja, die sechs Tage kriege ich nicht weg

00:08:04.700 --> 00:08:05.760
ich kriege auch kein Austauschgerät

00:08:05.760 --> 00:08:08.780
super, das heißt, nächstes Mal kein AppleCare mehr

00:08:08.780 --> 00:08:10.960
ja, also Leute

00:08:10.960 --> 00:08:13.340
wir sind übrigens im Peißen-Podcast, in der Weihnachtsfolge

00:08:13.340 --> 00:08:14.900
wo wir

00:08:14.900 --> 00:08:16.620
heute eigentlich noch einen Grühwein anbieten oder sowas

00:08:16.620 --> 00:08:17.380
Ja, genau.

00:08:18.340 --> 00:08:20.840
Das habe ich mir tatsächlich mal überlegt,

00:08:20.900 --> 00:08:22.360
ob wir das nicht mal machen könnten und

00:08:22.360 --> 00:08:24.900
vielleicht irgendwo in eine Bar setzen

00:08:24.900 --> 00:08:25.360
oder so.

00:08:26.340 --> 00:08:27.540
Und von da aus verkasten.

00:08:29.300 --> 00:08:29.580
Weil

00:08:29.580 --> 00:08:32.000
man müsste halt blöder...

00:08:32.000 --> 00:08:34.440
Ich denke, man müsste die Leute vorher fragen,

00:08:34.620 --> 00:08:36.580
weil Tonaufnahmen in der Bar ist ja vielleicht

00:08:36.580 --> 00:08:37.120
jetzt nicht so.

00:08:37.920 --> 00:08:40.420
Ich glaube, man müsste einfach die Leute vorher

00:08:40.420 --> 00:08:42.620
alle anderen rausschmeißen, damit die ganzen Nebengeräusche nicht mehr da sind.

00:08:42.900 --> 00:08:44.740
Ja, das wäre auch schwierig. Aber es gibt so ein paar,

00:08:44.740 --> 00:08:45.900
wo man eventuell

00:08:45.900 --> 00:08:48.460
nicht stört. Also wenn man sich zum Beispiel

00:08:48.460 --> 00:08:50.540
in der Skla-Bar, kann man sich vorne draußen hinsetzen.

00:08:51.280 --> 00:08:52.820
Da würde man jetzt nicht so stören

00:08:52.820 --> 00:08:54.740
und auch keine anderen Gäste aufnehmen.

00:08:54.800 --> 00:08:56.500
Ist ja schon klar, dass es gerade geschneit hat, also

00:08:56.500 --> 00:08:58.020
vorgestern. Ja.

00:08:59.100 --> 00:09:00.160
Gerade wegen dem Draußen-Hinsetzen.

00:09:00.720 --> 00:09:01.860
Wir machen ja noch ein paar Folgen.

00:09:01.980 --> 00:09:04.740
Wir fallen noch draußen

00:09:04.740 --> 00:09:06.040
und fallen mir jede Menge tolle Orte ein.

00:09:06.580 --> 00:09:06.740
Ja.

00:09:08.420 --> 00:09:10.600
Ja, müssen wir mal gucken. Das stelle ich mir

00:09:10.600 --> 00:09:12.000
eigentlich auch ganz interessant vor.

00:09:12.840 --> 00:09:14.680
Irgendwie gucken, wie sich

00:09:14.680 --> 00:09:16.540
so die Qualität irgendwie über die

00:09:16.540 --> 00:09:18.100
Zeit verändert, somit zunehmend

00:09:18.100 --> 00:09:20.260
krummeln Pegel.

00:09:20.640 --> 00:09:22.460
Ja, also sagen wir tatsächlich Bescheid,

00:09:22.640 --> 00:09:24.500
wenn ihr irgendwelche Anregungen, Anmerkungen habt,

00:09:24.580 --> 00:09:26.020
wenn die jetzt zu euch kommen sollen oder sowas,

00:09:26.380 --> 00:09:28.540
schreibt uns eine E-Mail, die E-Mail habe ich ja schon eben genannt,

00:09:28.640 --> 00:09:29.720
findet ihr auch in den Shownotes.

00:09:30.400 --> 00:09:32.360
Ja, fangen wir doch an mit Python jetzt,

00:09:32.600 --> 00:09:34.560
lieber Jochen. Ja. Was funktioniert

00:09:34.560 --> 00:09:36.720
alles nicht? Und du hast gesagt, was machst

00:09:36.720 --> 00:09:38.460
du die ganze Zeit und mit Web

00:09:38.460 --> 00:09:40.100
irgendwelche Sachen und so.

00:09:40.100 --> 00:09:41.500
Mit Web-Kram mache ich momentan viel

00:09:41.500 --> 00:09:43.880
und tatsächlich ist es auch nicht so,

00:09:44.060 --> 00:09:46.080
es ist halt nur so ein bisschen Python. Also das

00:09:46.080 --> 00:09:46.960
Backend ist alles Python.

00:09:49.340 --> 00:09:49.780
Aber

00:09:49.780 --> 00:09:52.180
ich mache

00:09:52.180 --> 00:09:53.480
momentan auch viel auf der Client-Seite

00:09:53.480 --> 00:09:55.900
und da halt vor allen Dingen mit

00:09:55.900 --> 00:09:58.180
JavaScript, was eigentlich

00:09:58.180 --> 00:09:59.940
auch inzwischen ganz gut geht.

00:10:01.060 --> 00:10:02.160
Das ist so, also

00:10:02.160 --> 00:10:03.860
ich habe immer mal wieder irgendwie bei

00:10:03.860 --> 00:10:05.800
JavaScript reingeschaut, ob das jetzt irgendwie inzwischen

00:10:05.800 --> 00:10:07.860
okay ist und fand

00:10:07.860 --> 00:10:09.900
eigentlich immer furchtbar. Aber so

00:10:09.900 --> 00:10:10.240
inzwischen

00:10:10.240 --> 00:10:13.780
ist das eigentlich

00:10:13.780 --> 00:10:16.100
gar nicht mehr so furchtbar schlimm. Also ich mache jetzt

00:10:16.100 --> 00:10:17.860
einen

00:10:17.860 --> 00:10:19.880
JavaScript-Dialekt, der nennt sich TypeScript

00:10:19.880 --> 00:10:21.120
und mit so einer IDE,

00:10:21.760 --> 00:10:23.180
das ist zwar alles nicht so

00:10:23.180 --> 00:10:25.060
snappy, schnell,

00:10:25.500 --> 00:10:27.720
wie ich das eigentlich gern hätte,

00:10:27.840 --> 00:10:29.780
aber es ist eigentlich gut genug, dass man

00:10:29.780 --> 00:10:31.660
damit so entwickeln kann, dass

00:10:31.660 --> 00:10:33.720
es tatsächlich Spaß macht und man diese

00:10:33.720 --> 00:10:35.300
ganzen Hässlichkeiten nicht so wirklich wahrnimmt.

00:10:37.200 --> 00:10:37.640
Welche

00:10:37.640 --> 00:10:39.620
IDE ist das? WebStorm

00:10:39.620 --> 00:10:41.980
verwende ich das. Das ist quasi auch IntelliJ-basiert.

00:10:42.220 --> 00:10:43.540
Aha, okay, habe ich auch

00:10:43.540 --> 00:10:44.840
ja schon einige Male gehört, ja.

00:10:45.460 --> 00:10:47.560
Das ist eigentlich tatsächlich ganz gut.

00:10:49.220 --> 00:10:49.400
Und

00:10:49.400 --> 00:10:50.720
ja,

00:10:51.540 --> 00:10:53.100
das macht eigentlich,

00:10:53.280 --> 00:10:55.060
man kann so richtig auf

00:10:55.060 --> 00:10:56.940
Teilenseite quasi so programmieren, wie man das halt auf

00:10:56.940 --> 00:10:57.920
Serverseite auch gewohnt ist,

00:10:59.040 --> 00:11:00.960
mit allem drum und dran.

00:11:02.140 --> 00:11:02.700
Aber was,

00:11:03.360 --> 00:11:05.200
und vor allen Dingen, also inzwischen sind ja auch

00:11:05.200 --> 00:11:07.060
die Browser so gut geworden, also die können halt eine ganze

00:11:07.060 --> 00:11:08.740
Menge, man kann ja tolle Sachen machen

00:11:08.740 --> 00:11:11.020
und es ist alles nicht mehr so super unterschiedlich,

00:11:11.120 --> 00:11:12.980
wie es früher mal war, wo man dann halt irgendwie für jeden

00:11:12.980 --> 00:11:15.260
Browser irgendwelche Ausnahmen machen

00:11:15.260 --> 00:11:17.180
muss. Es gibt keinen Browser mehr, für den man Ausnahmen machen

00:11:17.180 --> 00:11:18.900
muss? Ja, doch, leider schon.

00:11:19.600 --> 00:11:20.360
Ah, sehr gut.

00:11:20.940 --> 00:11:22.360
Es gibt, ja,

00:11:22.640 --> 00:11:25.040
alle Browser sind irgendwie benutzbar. Nein,

00:11:25.200 --> 00:11:27.280
es gibt einen Browser, der sich standhaft

00:11:27.280 --> 00:11:28.300
wehrt, irgendwie

00:11:28.300 --> 00:11:31.460
benutzt werden zu können. Und das ist heutzutage

00:11:31.460 --> 00:11:33.460
erstaunlicherweise

00:11:33.460 --> 00:11:35.160
Safari.

00:11:35.420 --> 00:11:36.560
Safari ist echt so.

00:11:36.560 --> 00:11:38.740
Schon wieder Apple. Apple ist das neue Microsoft, oder?

00:11:39.040 --> 00:11:40.340
Ein bisschen schon, ja. Also

00:11:40.340 --> 00:11:42.380
Safari ist irgendwie so ein bisschen der neue

00:11:42.380 --> 00:11:44.700
Internet Explorer. Also den Internet Explorer

00:11:44.700 --> 00:11:45.860
gibt es ja jetzt irgendwie nicht mehr so richtig.

00:11:46.760 --> 00:11:48.340
Edge ist jetzt Chromium-Engine?

00:11:49.380 --> 00:11:50.740
Edge war eigentlich gar nicht

00:11:50.740 --> 00:11:52.520
so schlecht. Edge hatte, glaube ich, eine eigene Engine.

00:11:52.920 --> 00:11:54.680
Ich weiß nicht, ob sie die vom IE übernommen haben,

00:11:54.820 --> 00:11:56.420
aber Edge war quasi so ein Neustart.

00:11:57.540 --> 00:11:57.660
Und

00:11:57.660 --> 00:12:00.760
soweit ich das gehört habe, war das eigentlich ganz gut, war brauchbar.

00:12:01.180 --> 00:12:02.440
Und so aus

00:12:02.440 --> 00:12:04.520
Nutzerperspektive finde ich, ist es ja eigentlich toll, wenn es

00:12:04.520 --> 00:12:05.800
da Konkurrenz gibt und unterschiedliche

00:12:05.800 --> 00:12:08.760
Rendering-Engines. Also ich würde

00:12:08.760 --> 00:12:10.460
mir wünschen, dass sie alle die gleichen

00:12:10.460 --> 00:12:12.100
APIs implementieren und dass sie kompatibel

00:12:12.100 --> 00:12:13.720
untereinander sind. Aber wenn es unterschiedliche

00:12:13.720 --> 00:12:16.140
Implementationen gibt, dann ist das eigentlich

00:12:16.140 --> 00:12:18.140
eine sehr gute Sache. Und von da

00:12:18.140 --> 00:12:20.100
aus gesehen war das eigentlich immer toll, dass es

00:12:20.100 --> 00:12:22.060
mit Edge halt da noch eine dritte

00:12:22.060 --> 00:12:23.020
Geschichte neben halt

00:12:23.020 --> 00:12:26.040
ja, wie heißt die

00:12:26.040 --> 00:12:26.260
von

00:12:26.260 --> 00:12:29.900
Chrome? Bing?

00:12:31.120 --> 00:12:32.020
Ist die Microsoft

00:12:32.020 --> 00:12:33.800
Zugmaschine? Nee, genau,

00:12:33.940 --> 00:12:34.500
nicht Bing.

00:12:36.100 --> 00:12:36.760
Wie heißt die?

00:12:38.240 --> 00:12:40.040
Blink. Blink heißt die.

00:12:40.460 --> 00:12:43.880
und das Ding von WebKit von Safari.

00:12:44.180 --> 00:12:45.660
Aber das ist eigentlich basiert auf dem gleichen Code.

00:12:45.760 --> 00:12:51.220
Das basiert auf KHDML aus dem KDE-Projekt ganz früher.

00:12:51.760 --> 00:12:58.280
Da kommt das her und dann hat Apple das quasi in WebKit eingebaut

00:12:58.280 --> 00:13:02.620
und dann war Chrome basierte ganz lange auf WebKit auch

00:13:02.620 --> 00:13:05.020
und dann haben sie WebKit irgendwie weggeforkt,

00:13:05.080 --> 00:13:06.600
weil ihnen die Entwicklung da nicht mehr schnell genug ging

00:13:06.600 --> 00:13:08.720
und haben da ihre eigene Engine draus gebaut

00:13:08.720 --> 00:13:09.940
und die heißt jetzt Blink irgendwie.

00:13:10.460 --> 00:13:11.540
glaube ich, ja.

00:13:12.360 --> 00:13:12.640
Und

00:13:12.640 --> 00:13:15.960
insofern war WebKit und

00:13:15.960 --> 00:13:17.280
Chrome, das war immer ziemlich ähnlich.

00:13:18.240 --> 00:13:19.600
Und dann gab es halt noch Firefox,

00:13:19.940 --> 00:13:22.000
hatte ja irgendwie eine eigene

00:13:22.000 --> 00:13:23.900
Engine noch. Und Opera hatte damals auch eine eigene

00:13:23.900 --> 00:13:25.900
Engine, oder war das wieder was Neues? Ja, doch.

00:13:26.060 --> 00:13:28.180
Ganz am Anfang, aber die sind relativ schnell

00:13:28.180 --> 00:13:30.060
auf irgendwas anderes umgestiegen. Ich weiß aber nicht mehr was.

00:13:30.800 --> 00:13:32.060
Ja, aber Opera spielt leider nicht mehr

00:13:32.060 --> 00:13:33.680
so eine große Rolle. Ja, ich glaube, vor drei Jahren sind sie auch

00:13:33.680 --> 00:13:35.460
auf Chromium umgestellt oder so. Ja, ja.

00:13:36.460 --> 00:13:38.040
Opera hat ein Feature, was andere

00:13:38.040 --> 00:13:40.040
Browser nicht haben. Und das führt dazu, dass

00:13:40.040 --> 00:13:41.980
Opera teilweise in so Ländern wie Indien

00:13:41.980 --> 00:13:44.040
oder teilweise auch

00:13:44.040 --> 00:13:46.020
Südostasien, manchen, also von Indien

00:13:46.020 --> 00:13:47.900
weiß ich es relativ sicher, gibt es

00:13:47.900 --> 00:13:50.500
irgendwie noch, 20%

00:13:50.500 --> 00:13:51.960
des Traffics geht über Opera

00:13:51.960 --> 00:13:53.140
und man fragt sich, hä, warum das denn?

00:13:53.820 --> 00:13:56.420
Und der Grund ist, dass die so einen

00:13:56.420 --> 00:13:59.380
ja quasi grafischen

00:13:59.380 --> 00:14:01.820
Browser betreiben, also man hat auf dem Handy halt

00:14:01.820 --> 00:14:03.860
sozusagen sieht man nur

00:14:03.860 --> 00:14:05.840
ein Bild, also es wird einem nur

00:14:05.840 --> 00:14:07.880
das gerenderte Bild geschickt, was man halt

00:14:07.880 --> 00:14:09.840
so runter komprimieren kann, dass das halt nur ganz wenig

00:14:09.840 --> 00:14:11.360
Traffic verbraucht, weil die da halt so komische

00:14:11.360 --> 00:14:13.820
Tarife haben. Und

00:14:13.820 --> 00:14:15.980
der eigentliche Browser läuft irgendwo bei der Firma

00:14:15.980 --> 00:14:17.860
Opera selber. Okay, das heißt,

00:14:17.940 --> 00:14:19.880
man kriegt jedes Mal nur ein Bild und wenn man irgendwas browsen muss,

00:14:20.000 --> 00:14:21.840
dann... Ja, wenn man irgendwo draufklickt, dann wird halt zurückgeschickt,

00:14:21.880 --> 00:14:23.840
dass man da draufgeklickt hat. Und das ist halt eine ganz interessante

00:14:23.840 --> 00:14:26.060
Geschichte. Das ist ziemlich seltsam,

00:14:26.180 --> 00:14:27.860
aber es scheint wohl dann halt auch mit

00:14:27.860 --> 00:14:29.560
ganz wenig Daten noch so halbwegs zu funktionieren.

00:14:29.640 --> 00:14:31.820
Deswegen gibt es da irgendwie noch so einen komischen

00:14:31.820 --> 00:14:33.740
Nischenmarkt für. Aber

00:14:33.740 --> 00:14:35.820
im Grunde spielt Opera keine wirkliche Rolle

00:14:35.820 --> 00:14:37.960
mehr. Und ja, Firefox

00:14:37.960 --> 00:14:39.020
hat ja jetzt auch umgestellt,

00:14:39.840 --> 00:14:42.540
auf Rust, auf eine neue Sprache

00:14:42.540 --> 00:14:44.280
und auch eine neue Render-Engine.

00:14:45.320 --> 00:14:46.120
Das ist übrigens auch, wenn man

00:14:46.120 --> 00:14:48.600
längere Zeit Firefox nicht ausprobiert hat,

00:14:48.660 --> 00:14:49.500
sollte man das vielleicht mal tun.

00:14:50.200 --> 00:14:51.740
Seit einem Jahr oder etwas mehr,

00:14:51.840 --> 00:14:52.660
weiß nicht genau,

00:14:54.860 --> 00:14:56.300
basiert das jetzt

00:14:56.300 --> 00:14:58.620
auf einer Rust-Engine

00:14:58.620 --> 00:15:00.460
und die ist

00:15:00.460 --> 00:15:02.160
schnell, schick, toll. Das ist irgendwie

00:15:02.160 --> 00:15:04.280
echt super und das Ding ist halt

00:15:04.280 --> 00:15:05.200
tatsächlich konkurrenzfähig.

00:15:06.780 --> 00:15:08.500
Und ja, so im letzten

00:15:08.500 --> 00:15:10.760
Jahr hatte man dann quasi so drei unterschiedliche

00:15:10.760 --> 00:15:12.940
Vendoring-Engines.

00:15:13.200 --> 00:15:14.680
Sozusagen halt die von Firefox, die von

00:15:14.680 --> 00:15:16.640
Chrome und

00:15:16.640 --> 00:15:18.560
die von Microsoft. Und

00:15:18.560 --> 00:15:20.520
inzwischen gibt es jetzt dann halt nur noch

00:15:20.520 --> 00:15:21.920
zwei.

00:15:22.680 --> 00:15:24.500
Und das ist natürlich echt wenig. Zwei ist

00:15:24.500 --> 00:15:26.580
schon fast nur noch eine. Zumal

00:15:26.580 --> 00:15:28.660
der Marktanteil von Firefox ja auch irgendwie

00:15:28.660 --> 00:15:30.460
so ein bisschen im Sinkflug begriffen ist, leider.

00:15:30.460 --> 00:15:30.880
Ja.

00:15:32.500 --> 00:15:34.060
Mit was brauchst du persönlich gerne?

00:15:36.280 --> 00:15:36.800
Tatsächlich

00:15:36.800 --> 00:15:41.900
Ich benutze Chrome, Safari und Firefox.

00:15:43.320 --> 00:15:44.480
Mit welchem Anteil?

00:15:44.660 --> 00:15:46.280
Also für private Surfen, für die Arbeit?

00:15:46.320 --> 00:15:47.940
Private Surfen, meistens Safari.

00:15:48.320 --> 00:15:51.460
Weil Safari hat halt so dieses Feature der Leseliste,

00:15:51.660 --> 00:15:52.700
das ich ganz praktisch finde.

00:15:52.980 --> 00:15:55.420
Weil das halt über alle Devices hinweg synchronisiert.

00:15:55.540 --> 00:15:59.480
Das heißt, wenn man sich eh im Apple-Universum

00:15:59.480 --> 00:16:00.940
sozusagen mit seinen Geräten aufhält.

00:16:01.620 --> 00:16:03.100
Ich glaube, bei Firefox kann man das auch machen,

00:16:03.100 --> 00:16:04.500
das synchronisieren und auch bei Chrome.

00:16:05.260 --> 00:16:08.160
Ja, bei Chrome ist es so ein bisschen evil an der Stelle,

00:16:08.880 --> 00:16:13.400
weil man halt nicht so richtig gefragt wird,

00:16:13.500 --> 00:16:14.860
ob man da jetzt mitmachen möchte oder nicht.

00:16:15.240 --> 00:16:16.920
Also mich hat es erwischt.

00:16:17.900 --> 00:16:19.980
Das habe ich letztens gehört, keine Ahnung,

00:16:20.260 --> 00:16:21.280
hat sich jemand darüber aufgeregt,

00:16:21.380 --> 00:16:25.500
dass Chrome da schon so böse, böse GUI-Geschichten macht,

00:16:25.560 --> 00:16:26.720
um die Leute dazu zu verleiten,

00:16:27.320 --> 00:16:29.600
irgendwie die Browser-History mit ihrem Profil

00:16:29.600 --> 00:16:31.320
sozusagen auf die Geräte zu übertragen.

00:16:32.400 --> 00:16:33.960
Was ich jetzt an sich noch nicht schlimm fände,

00:16:33.960 --> 00:16:36.080
wenn einfach nur das irgendwie übertragen

00:16:36.080 --> 00:16:38.100
würde, aber das wird halt auch bei Google gespeichert

00:16:38.100 --> 00:16:40.060
und Google kann das halt sehen, was da drin steht und das ist natürlich

00:16:40.060 --> 00:16:42.000
ich möchte eigentlich nicht wirklich meine

00:16:42.000 --> 00:16:44.060
Browser-History zu Google hochladen, also das

00:16:44.060 --> 00:16:46.120
Okay, ich glaube, man muss das halt

00:16:46.120 --> 00:16:47.480
einstellen in der Privatsphäre-Einstellung, ob das

00:16:47.480 --> 00:16:49.780
genau, aber da steht halt auch nirgendwo

00:16:49.780 --> 00:16:51.720
du lädst hier deine Browser-History zu

00:16:51.720 --> 00:16:53.420
Google hoch, sondern da steht

00:16:53.420 --> 00:16:55.200
da ist irgendwie sowas wie, das sind so

00:16:55.200 --> 00:16:57.980
Button-Tricks, ja, wo man dann irgendwie

00:16:57.980 --> 00:17:00.000
wenn man halt, da ist irgendwie

00:17:00.000 --> 00:17:01.780
so ein OK-Button, der sieht irgendwie harmlos aus

00:17:01.780 --> 00:17:03.340
und wenn man da drauf drückt, dann passiert das automatisch, ja

00:17:03.340 --> 00:17:06.060
Und nirgendwo steht irgendwie, du lädst jetzt deine Browser-Historie zu Google hoch.

00:17:06.480 --> 00:17:09.760
Und das ist schon sehr, sehr hinterfotzig.

00:17:09.760 --> 00:17:11.100
Da braucht es nicht den Search auf Google.

00:17:12.140 --> 00:17:15.180
Also ich finde, Google hat eigentlich bisher noch nichts Böses damit getan.

00:17:15.320 --> 00:17:17.680
Insofern hat es da auch mal so einen gewissen Vertrauensvorschuss.

00:17:17.680 --> 00:17:21.540
Aber so GUI-Manipulationen, die einen dazu verleiten, auf irgendwas raufzuklicken,

00:17:21.640 --> 00:17:24.400
auf das man eigentlich gar nicht draufklicken wollte, das ist schon sehr grenzwertig.

00:17:24.900 --> 00:17:27.520
Und damit hat Google jetzt, also das war jetzt nur eine Geschichte.

00:17:28.220 --> 00:17:33.060
Chrome hat dann noch eine andere Geschichte, wo sie das nochmal gemacht haben.

00:17:33.340 --> 00:17:36.520
sagen wir mal so, also ich meine, ich weiß jetzt nicht,

00:17:36.580 --> 00:17:37.800
aber es gibt halt diverse Leute

00:17:37.800 --> 00:17:40.340
im Netz, die jetzt sagen, jetzt ist es halt

00:17:40.340 --> 00:17:41.860
Chrome und Google ist so endgültig

00:17:41.860 --> 00:17:43.500
auf der dunklen Seite angekommen.

00:17:44.980 --> 00:17:46.380
So weit würde ich jetzt vielleicht nicht gehen, aber

00:17:46.380 --> 00:17:48.380
es ist schon so ein bisschen, also daher versuche ich

00:17:48.380 --> 00:17:49.740
auch möglichst Chrome nicht mehr

00:17:49.740 --> 00:17:52.180
zu verwenden, wenn ich irgendwie nicht muss.

00:17:52.880 --> 00:17:54.440
Es gibt Dinge, für die ich muss, also zum Beispiel

00:17:54.440 --> 00:17:56.400
zum Entwickeln ist Chrome tatsächlich

00:17:56.400 --> 00:17:58.480
irgendwie am praktischsten. Es gibt da

00:17:58.480 --> 00:18:00.700
für React und so,

00:18:00.780 --> 00:18:02.380
wenn man das baut, auch so

00:18:02.380 --> 00:18:05.060
Extensions, die einem dann helfen, das zu debuggen

00:18:05.060 --> 00:18:07.000
und so. Und das ist so praktisch,

00:18:07.100 --> 00:18:08.600
dass ich zum Entwickeln tatsächlich

00:18:08.600 --> 00:18:09.380
Chrome verwende.

00:18:10.700 --> 00:18:13.140
Ich verwende Chrome tatsächlich auch privat.

00:18:13.780 --> 00:18:14.920
Selten mal in Firefox, also

00:18:14.920 --> 00:18:16.860
eigentlich nur, um mal, weiß nicht, was anderes zu machen.

00:18:17.560 --> 00:18:18.760
Aber normalerweise eigentlich immer Chrome.

00:18:18.860 --> 00:18:20.800
Ich habe auch nicht so viele Bedenken

00:18:20.800 --> 00:18:22.720
mit dem Datenschutz. Also ich muss sagen, ich bin doof

00:18:22.720 --> 00:18:24.760
und vertraue denen ein bisschen.

00:18:25.620 --> 00:18:26.740
Und die wissen eh alles über mich.

00:18:27.300 --> 00:18:28.940
Auch egal, wenn die noch mehr über mich wissen.

00:18:30.120 --> 00:18:30.780
Vielleicht kriege ich dann

00:18:30.780 --> 00:18:32.720
irgendwelche Bonusgeschenke, man weiß ja immer nicht genau.

00:18:32.820 --> 00:18:34.200
Also ich hoffe ja immer noch, dass ich dann irgendwann mal

00:18:34.200 --> 00:18:35.620
so einen Sonderrabatt bekomme.

00:18:37.120 --> 00:18:38.440
Ja, vielleicht.

00:18:41.360 --> 00:18:42.200
Vielleicht wird alles gut.

00:18:42.580 --> 00:18:44.400
Irgendwann stehen irgendwelche Männer mit irgendwelchen Anzügen.

00:18:44.760 --> 00:18:46.000
Man weiß es aber nicht so genau.

00:18:47.620 --> 00:18:48.980
Wir sind ja in Amerika und nicht hier.

00:18:49.180 --> 00:18:51.060
Also das ist ja schon mal gar nicht so schlecht.

00:18:52.720 --> 00:18:53.920
Also, ja, klar.

00:18:54.080 --> 00:18:55.820
Ich benutze Chrome auch. Ich finde auch,

00:18:55.820 --> 00:18:57.820
das ist ein echt guter Browser und so, aber

00:18:58.540 --> 00:19:00.400
Safari wegen der

00:19:00.400 --> 00:19:01.920
Leseliste vor allen Dingen, weil ich dann halt

00:19:01.920 --> 00:19:03.980
sozusagen halt auf allen...

00:19:03.980 --> 00:19:06.500
Die haben nur gerade ihre Datenschutzeinstellungen gestellt

00:19:06.500 --> 00:19:08.500
in Europa, haben ihre Server geändert

00:19:08.500 --> 00:19:09.600
und ihre Rechtsform geändert.

00:19:10.080 --> 00:19:12.000
Die sitzen jetzt in Irland von der, weiß nicht,

00:19:12.040 --> 00:19:14.140
Google LLC auf irgendeine irische Limited

00:19:14.140 --> 00:19:16.340
oder sowas. Ich habe noch nicht

00:19:16.340 --> 00:19:17.920
da reingeguckt, vielleicht, weil die jetzt

00:19:17.920 --> 00:19:20.180
DSGVO-konform sind, müsste man jetzt eigentlich auch

00:19:20.180 --> 00:19:22.260
aus den ganzen Sachen gesondert opt-outen

00:19:22.260 --> 00:19:24.140
können und die Frage ist, ob sowas wie die Browser History

00:19:24.140 --> 00:19:26.200
einfach noch so übernommen wird, weil ansonsten...

00:19:26.200 --> 00:19:28.020
Das kann natürlich auch sein, dass das mit der

00:19:28.020 --> 00:19:30.340
DSGVO ja jetzt auch so ein bisschen

00:19:30.340 --> 00:19:31.660
erledigt hat. Sollen wir gleich nochmal nachgucken, obwohl

00:19:31.660 --> 00:19:34.180
eigentlich habe ich nicht so wirklich Lust, das nachzugucken.

00:19:34.260 --> 00:19:35.920
Also wenn euch das interessiert, könnt ihr das selber mal gucken

00:19:35.920 --> 00:19:38.040
und informiert uns doch gerne bitte in einer E-Mail, was

00:19:38.040 --> 00:19:40.000
ihr da rausgefunden habt. Ja, also

00:19:40.000 --> 00:19:42.240
ansonsten, Firefox versuche

00:19:42.240 --> 00:19:43.380
ich immer mal wieder zu verwenden,

00:19:43.680 --> 00:19:46.340
wenn, für so Casual-Browsing

00:19:46.340 --> 00:19:46.800
Geschichten

00:19:46.800 --> 00:19:50.140
und dafür ist das eigentlich, also

00:19:50.140 --> 00:19:52.380
so, ja, ist das

00:19:52.380 --> 00:19:53.600
Ding, das Ding ist schnell und

00:19:53.600 --> 00:19:56.260
Das hört sich toll an, wenn der Jochen sagt Casual-Browsing.

00:19:56.500 --> 00:19:57.800
Ja, wo ich halt jetzt nicht unbedingt

00:19:57.800 --> 00:19:59.640
sozusagen

00:19:59.640 --> 00:20:02.020
irgendwie ein Bookmarks-Grad mache oder so.

00:20:03.580 --> 00:20:04.340
Oder halt einfach

00:20:04.340 --> 00:20:05.780
so ein bisschen rumbrause.

00:20:06.460 --> 00:20:08.260
Und das Ding ist auch super. Sollte man

00:20:08.260 --> 00:20:10.120
auf jeden Fall nochmal ausprobieren, wenn man das längere Zeit nicht

00:20:10.120 --> 00:20:12.140
gemacht hat. Das kann einem schon überraschend

00:20:12.140 --> 00:20:16.060
gut vorkommen.

00:20:18.200 --> 00:20:19.940
Muss man aber auch so ein bisschen aufpassen.

00:20:20.040 --> 00:20:21.580
Die haben alle so ihre Haken und Ösen.

00:20:23.100 --> 00:20:23.880
Chrome ist

00:20:23.880 --> 00:20:25.960
privacy-mäßig ein bisschen schwierig.

00:20:26.840 --> 00:20:28.560
Safari ist irgendwie technisch leider,

00:20:28.640 --> 00:20:30.180
da kommen wir auch nochmal drauf

00:20:30.180 --> 00:20:32.780
zu sprechen, ist halt technisch so ein bisschen

00:20:32.780 --> 00:20:34.820
kaputt. Und Firefox

00:20:34.820 --> 00:20:36.540
hat halt jetzt auch so ein Ding eingebaut,

00:20:36.640 --> 00:20:37.920
so ein Privacy,

00:20:38.660 --> 00:20:40.660
jedenfalls nicht so super optimal. Also die verwenden

00:20:40.660 --> 00:20:41.440
jetzt statt

00:20:41.440 --> 00:20:44.140
normalen Nameservern

00:20:44.140 --> 00:20:46.120
gehen die

00:20:46.120 --> 00:20:48.300
DNS-Requests auch per HTTP

00:20:48.300 --> 00:20:49.820
irgendwie an eine von diesen,

00:20:50.520 --> 00:20:52.440
ich weiß gar nicht an wen, CloudFront

00:20:52.440 --> 00:20:54.500
oder weiß ich nicht, auf jeden Fall an einen von

00:20:54.500 --> 00:20:56.500
diesen CDN-Betreibern.

00:20:56.840 --> 00:20:59.180
was Vorteile hat.

00:20:59.320 --> 00:21:01.000
Also dein Provider sieht halt nicht mehr, wo du

00:21:01.000 --> 00:21:03.300
rumsurfst. Ich meine, bei HTTPS,

00:21:03.580 --> 00:21:05.020
was ja die meisten Seiten mittlerweile

00:21:05.020 --> 00:21:07.260
dann halt tatsächlich sind, sieht natürlich

00:21:07.260 --> 00:21:09.080
irgendwie dein Provider auch nicht mehr die Inhalte,

00:21:09.440 --> 00:21:10.880
aber sieht halt immer noch, zu welcher

00:21:10.880 --> 00:21:12.720
Domain quasi dein

00:21:12.720 --> 00:21:14.040
Request geht und

00:21:14.040 --> 00:21:16.760
das reicht ja dann oft schon, sozusagen als

00:21:16.760 --> 00:21:18.880
Information. Er sieht vor allen Dingen

00:21:18.880 --> 00:21:20.720
den

00:21:20.720 --> 00:21:21.960
Nameserver-Request, also

00:21:21.960 --> 00:21:23.200
den

00:21:23.200 --> 00:21:26.460
Request zur Namensauflösung, wenn

00:21:26.460 --> 00:21:29.420
Name-Server beim Provider steht,

00:21:29.500 --> 00:21:30.880
was bei den meisten Leuten so ist, weil das

00:21:30.880 --> 00:21:33.520
Default ist, kann man natürlich auch selber umstellen.

00:21:33.660 --> 00:21:34.400
Google zum Beispiel.

00:21:34.780 --> 00:21:36.620
Google, ja, 8.8.8.

00:21:37.200 --> 00:21:38.100
Google weiß dann alles.

00:21:38.460 --> 00:21:39.840
Google weiß dann noch mehr.

00:21:41.540 --> 00:21:43.500
Provider und Suchmaschine kombiniert.

00:21:43.960 --> 00:21:45.200
Google Home Assistant, alles

00:21:45.200 --> 00:21:46.960
integriert und dann mit dem Auto verknüpft.

00:21:47.540 --> 00:21:49.060
Toll, ich kann über die letzten Jahre

00:21:49.060 --> 00:21:51.000
mit dem Standort jeden Tag nachverfolgen, wo genau

00:21:51.000 --> 00:21:52.600
ich rumgelaufen bin. Das ist hervorragend.

00:21:53.020 --> 00:21:54.940
Ja, ich will gar nicht beschreiten, dass das

00:21:54.940 --> 00:21:57.020
durchaus praktisch sein kann. Genau, ich

00:21:57.020 --> 00:21:59.080
habe auch bei mir jetzt

00:21:59.080 --> 00:22:01.060
in meiner Fritzbox

00:22:01.060 --> 00:22:02.960
irgendwie als Nameserver eben nicht mehr

00:22:02.960 --> 00:22:04.220
den von Provider eingestellt, sondern

00:22:04.220 --> 00:22:08.660
1.1.1.1

00:22:08.660 --> 00:22:08.900
und

00:22:08.900 --> 00:22:11.140
1.1.1.0, weiß ich nicht genau.

00:22:11.820 --> 00:22:13.020
Vielleicht sollte man da auch unterschiedliche

00:22:13.020 --> 00:22:14.400
nehmen, vielleicht den einen von

00:22:14.400 --> 00:22:16.760
auch einem von diesen CDN-Dingern

00:22:16.760 --> 00:22:19.060
und dann vielleicht einen von Google

00:22:19.060 --> 00:22:21.000
oder irgendwie, das ist halt nicht, dass man

00:22:21.000 --> 00:22:23.260
die Daten so ein bisschen aufteilt. Also ein CDN-Ding

00:22:23.260 --> 00:22:24.940
Das ist ein Content-Delivery-Network.

00:22:25.060 --> 00:22:25.540
Genau, genau.

00:22:26.900 --> 00:22:27.620
Was macht das?

00:22:29.120 --> 00:22:38.140
Das sorgt dafür, dass, wenn du jetzt statische Dateien sehen möchtest,

00:22:38.180 --> 00:22:40.600
wie jetzt zum Beispiel ein Video oder halt auch Bilder.

00:22:41.160 --> 00:22:42.620
Und warum ist denn ein Video statisch?

00:22:42.960 --> 00:22:43.620
Weil es sich nicht verändert?

00:22:43.720 --> 00:22:47.220
Weil das Video ist das einmal aufgenommen worden ist und das als Datei auf dem Server liegt?

00:22:47.360 --> 00:22:49.160
Weil das halt eine Datei ist, die sich nicht mehr ändert.

00:22:49.380 --> 00:22:56.260
Und dynamisch ist es dann, wenn ich eine individuell angezeigte Web-Oberfläche habe, die mein Profil oder irgendwelche anderen Informationen beinhaltet.

00:22:56.660 --> 00:23:04.320
Genau, also ein Applikations-Server liefert halt irgendwas aus, was sozusagen auf dem Kontext der Session oder sonst irgendwie basiert.

00:23:04.860 --> 00:23:06.620
Und die sind übrigens auf dem Python geschrieben, Entschuldigung.

00:23:06.620 --> 00:23:17.660
Ja, genau, also eben, natürlich, also ich denke, dass die Infrastruktur, mit der man irgendwie so CDNs hochzieht,

00:23:17.740 --> 00:23:21.940
auch wahrscheinlich häufig in Python geschrieben sein wird. Aber die Server, die das ausliefern,

00:23:21.940 --> 00:23:26.560
sind halt ja nicht Python, sondern das ist dann halt irgendwas schnelles. Also so möglichst nah

00:23:26.560 --> 00:23:32.140
an der, am Metall, weil das darauf kommt, da kommt es dann halt wirklich drauf an,

00:23:32.140 --> 00:23:36.460
auf die letzten Millisekunden und so. Nah am Metall habe ich auch gerade zum ersten Mal

00:23:36.460 --> 00:23:42.220
gehört. Achso, ja nah an der CPU quasi, an den Leiterbahnen halt. Bei Python hat man ja immer

00:23:42.220 --> 00:23:43.580
noch eine viertel Maschine dazwischen und so.

00:23:44.960 --> 00:23:45.240
Und

00:23:45.240 --> 00:23:48.200
genau, also

00:23:48.200 --> 00:23:49.920
die Dinger sind eigentlich dafür da, dass wenn ich jetzt

00:23:49.920 --> 00:23:52.080
sozusagen eine Webseite

00:23:52.080 --> 00:23:53.560
habe, wo halt ganz viele

00:23:53.560 --> 00:23:55.960
Dinge drinstehen, wie

00:23:55.960 --> 00:23:57.940
ein Tag-Image und dann ein Source

00:23:57.940 --> 00:23:59.740
und dann ist das halt eine Referenz auf

00:23:59.740 --> 00:24:01.820
ein Bild oder

00:24:01.820 --> 00:24:04.240
auf ein Video, halt je nach Tag,

00:24:05.160 --> 00:24:06.140
dann kommt das halt

00:24:06.140 --> 00:24:08.140
nicht von dem Applikations-Server, sondern gibt es halt spezialisierte

00:24:08.140 --> 00:24:10.120
Dinger, die das halt ausliefern. Und wenn ich

00:24:10.120 --> 00:24:12.060
jetzt auf der anderen Seite der Welt jemanden habe,

00:24:12.140 --> 00:24:14.080
das angucken möchte, dann ist es halt irgendwie so ein bisschen

00:24:14.080 --> 00:24:16.040
sinnlos, dass einmal irgendwie durch

00:24:16.040 --> 00:24:18.380
drei unterschiedliche Unterseekabels

00:24:18.380 --> 00:24:20.040
quetschen, wenn das ein Video ist und

00:24:20.040 --> 00:24:21.280
das ist halt irgendwie ein Gigabyte groß.

00:24:23.180 --> 00:24:23.900
Sondern, und

00:24:23.900 --> 00:24:25.920
nehmen wir an, auf der anderen Seite der Welt wollen das

00:24:25.920 --> 00:24:28.120
plötzlich, weil es irgendwie in der

00:24:28.120 --> 00:24:30.000
Hongkonger Clubszene

00:24:30.000 --> 00:24:32.100
wird mein Ukulelen-Video

00:24:32.100 --> 00:24:33.920
plötzlich zu, geht viral.

00:24:34.180 --> 00:24:35.160
Du hast ein Ukulelen-Video?

00:24:35.980 --> 00:24:37.440
Welcher Plattform? Auf YouTube vielleicht?

00:24:38.700 --> 00:24:39.320
Nee, hab da nix.

00:24:41.640 --> 00:24:42.420
Ja, sehr schön.

00:24:42.940 --> 00:24:45.600
Genau, aber in Hongkong wird das jetzt super populär.

00:24:45.820 --> 00:24:48.600
Und dann wollen das irgendwie 10.000 Leute angucken.

00:24:48.940 --> 00:24:49.520
Kennst du Tiny Tim?

00:24:50.180 --> 00:24:50.580
Nee.

00:24:50.580 --> 00:24:52.120
Muss ich dir später mal vorstellen, wegen der Ukulele.

00:24:52.260 --> 00:24:53.100
Entschuldigung, keiner Ex-Bus.

00:24:53.700 --> 00:24:54.680
Ach, ist das diese britische?

00:24:55.540 --> 00:24:56.640
Das ist schon ein bisschen her, ne?

00:24:56.840 --> 00:24:58.060
Ist das ein bisschen Comedian, Musiker?

00:24:58.160 --> 00:24:59.660
Ja, ja, ja, doch, doch, dann habe ich es schon mal.

00:24:59.840 --> 00:25:01.360
Mir war gerade nicht klar.

00:25:01.540 --> 00:25:02.780
Ich konnte das nicht verknüpfen.

00:25:03.260 --> 00:25:04.960
Aber ja, ja, doch, habe ich, glaube ich, auch schon mal gesehen.

00:25:05.320 --> 00:25:06.200
Aber noch nicht so wirklich.

00:25:06.500 --> 00:25:07.380
Ja, ist großartig, ja.

00:25:07.520 --> 00:25:08.560
Ja, okay, muss ich mal reingucken.

00:25:09.660 --> 00:25:10.780
Genau, und wenn ich jetzt hier halt

00:25:10.780 --> 00:25:13.420
meinen Webserver irgendwo

00:25:13.420 --> 00:25:15.560
nehme, meiner steht tatsächlich bei Hetzner

00:25:15.560 --> 00:25:17.620
in Nürnberg, ja, und jetzt halt

00:25:17.620 --> 00:25:19.640
die ganzen Bits da

00:25:19.640 --> 00:25:21.440
von Nürnberg nach Hongkong irgendwie durch

00:25:21.440 --> 00:25:23.580
alle möglichen Kabel sich quetschen

00:25:23.580 --> 00:25:25.100
müssen, ist ja eigentlich irgendwie Quatsch.

00:25:25.120 --> 00:25:27.940
Und dafür gibt es ein Content Delivery Network, was auf

00:25:27.940 --> 00:25:29.870
der, weiß nicht, an einem Kontinent steht

00:25:29.870 --> 00:25:31.830
und da ist ein großes Rechenfarm. Genau, die haben halt

00:25:31.830 --> 00:25:33.390
in allen Punkten, wo es irgendwie

00:25:33.390 --> 00:25:35.930
Nachfrage gibt, halt entsprechend Rechenzentren stehen

00:25:35.930 --> 00:25:37.870
und dann geht halt das, gehen die

00:25:37.870 --> 00:25:39.470
Bits von dem Video halt nur einmal

00:25:39.470 --> 00:25:41.970
von Nürnberg bis zu dem lokalen

00:25:41.970 --> 00:25:43.830
Rechenzentrum in Hongkong und werden dann von da

00:25:43.830 --> 00:25:45.470
aus verteilt, ja. Und das ist natürlich

00:25:45.470 --> 00:25:47.870
deutlich effizienter und irgendwie

00:25:47.870 --> 00:25:49.670
sinnvoll. Nur für dynamischen Content nicht?

00:25:50.390 --> 00:25:51.570
Ja, da geht's halt nicht,

00:25:51.710 --> 00:25:53.410
weil die können halt dynamisch,

00:25:53.710 --> 00:25:55.370
muss dann halt die Stelle, die halt

00:25:55.370 --> 00:25:57.310
den State-Helm ist halt gefragt.

00:25:57.930 --> 00:26:14.010
Das ist auch so ein Hoster, das ist ein relativ günstiger Hoster, wo man so Server irgendwie in einem Rack mieten kann, wo halt unter anderem halt auch zum Beispiel python-podcast.de läuft.

00:26:15.150 --> 00:26:16.470
Oh, so eine Seite gibt es, das ist ja toll.

00:26:16.470 --> 00:26:35.950
Ja, genau. Also die haben halt die Infrastruktur, um jetzt Dateien quasi global, irgendwie lokal auszuliefern und nicht, also ihre eigene Verteilungsinfrastruktur sozusagen. Und das ist halt naheliegend auch DNS darüber zu machen, weil da hat man im Grunde das gleiche Problem.

00:26:38.090 --> 00:26:40.090
ja, deswegen sind die halt sehr schnell,

00:26:40.230 --> 00:26:41.990
wenn man, jetzt zum Beispiel, ich weiß nicht,

00:26:42.050 --> 00:26:43.810
1.1.1

00:26:43.810 --> 00:26:45.970
oder so, dass ich jetzt bei mir,

00:26:46.070 --> 00:26:47.750
das Ding, was ich jetzt bei mir eingestellt habe, da habe ich

00:26:47.750 --> 00:26:50.270
7 Millisekunden Latenz hin

00:26:50.270 --> 00:26:52.450
bei mir

00:26:52.450 --> 00:26:54.090
zu Hause, so ein publiques

00:26:54.090 --> 00:26:55.710
DSL. Und das ist...

00:26:55.710 --> 00:26:57.930
Und das ist aber trotzdem, also ich meine,

00:26:57.990 --> 00:26:59.990
7 Millisekunden ist schon echt schnell

00:26:59.990 --> 00:27:02.770
und ich glaube, der

00:27:02.770 --> 00:27:04.590
DNS-Server

00:27:04.590 --> 00:27:06.350
von meinem Provider antwortet so mit

00:27:06.350 --> 00:27:08.970
40 Millisekunden Latenz oder so.

00:27:08.970 --> 00:27:10.870
Ja, ich wollte gerade sagen, also alles unter 20 schon fast

00:27:10.870 --> 00:27:12.250
lokal irgendwie.

00:27:12.690 --> 00:27:14.650
Ja, aber das sind dann halt, weil

00:27:14.650 --> 00:27:17.030
die Namen müssen ja erst aufgelöst werden,

00:27:17.130 --> 00:27:18.910
bevor überhaupt ein Request zum Applikationsverfahren

00:27:18.910 --> 00:27:21.130
gemacht werden kann. Bevor überhaupt irgendwas zurückkommt,

00:27:21.210 --> 00:27:22.330
hat man halt diese Latenzen immer drin.

00:27:22.970 --> 00:27:24.750
Und das addiert sich dann halt auf.

00:27:24.910 --> 00:27:26.670
Und wenn man jetzt da schon mal

00:27:26.670 --> 00:27:28.330
30 Millisekunden Latenz sparen kann,

00:27:28.930 --> 00:27:30.350
bei jedem Request, der irgendwie gemacht wird,

00:27:30.350 --> 00:27:32.210
oder nicht bei jedem, manchmal wird es auch gecached,

00:27:32.830 --> 00:27:33.650
wenn die Antworten nicht sind, aber

00:27:33.650 --> 00:27:35.950
dann hat das durchaus merkbare

00:27:35.950 --> 00:27:37.870
Auswirkungen und deswegen habe ich das mal

00:27:37.870 --> 00:27:39.870
umgestellt. Geht es eigentlich viel schneller, wenn man direkt die

00:27:39.870 --> 00:27:40.410
IP eingibt?

00:27:41.670 --> 00:27:43.670
Das geht halt nicht unbedingt.

00:27:44.770 --> 00:27:45.510
Ah, das geht nicht.

00:27:45.610 --> 00:27:46.090
Ja,

00:27:46.850 --> 00:27:49.890
die Domain oft auch benutzt wird,

00:27:50.550 --> 00:27:52.110
um rauszubekommen,

00:27:52.230 --> 00:27:53.630
an welchen Applikationsserver das gehen soll.

00:27:54.230 --> 00:27:55.370
Also nehmen wir zum Beispiel mal

00:27:55.370 --> 00:27:57.710
meine private Webseite liegt auf

00:27:57.710 --> 00:27:59.650
dem gleichen Server

00:27:59.650 --> 00:28:01.490
wie pythonpodcast.de

00:28:01.490 --> 00:28:04.130
das heißt, wenn ich die IP habe

00:28:04.130 --> 00:28:06.310
ich kann jetzt ein HTTP-Request zu dieser IP

00:28:06.310 --> 00:28:08.330
hinschicken, aber dann weiß das

00:28:08.330 --> 00:28:10.490
aber nicht so richtig, für wen ist denn das jetzt gedacht

00:28:10.490 --> 00:28:12.130
ist das für python-podcast.de gedacht

00:28:12.130 --> 00:28:12.850
oder ist das für

00:28:12.850 --> 00:28:16.010
was sagt das Request dann

00:28:16.010 --> 00:28:18.310
404, 403

00:28:18.310 --> 00:28:20.390
ja, wenn das

00:28:20.390 --> 00:28:21.510
nicht eindeutig ist, dann

00:28:21.510 --> 00:28:23.850
kommt dann halt ein 404 wahrscheinlich zurück

00:28:23.850 --> 00:28:26.350
und ja, dann

00:28:26.350 --> 00:28:28.250
funktioniert das nicht, aber insofern muss halt

00:28:28.250 --> 00:28:30.290
die Domain im Host

00:28:30.290 --> 00:28:31.690
halt dann mitgeschickt werden und

00:28:31.690 --> 00:28:33.610
ja,

00:28:34.170 --> 00:28:36.150
aber wenn man das jetzt mit dem Browser macht,

00:28:36.230 --> 00:28:37.810
dann passiert halt zuerst ein Namens

00:28:37.810 --> 00:28:40.190
Auflösungsrequest und dann... Oder der könnte ja

00:28:40.190 --> 00:28:42.130
lokal routen, kann der das? Also irgendwelche Anfragen

00:28:42.130 --> 00:28:44.130
dann, also musst du dann versehen mit

00:28:44.130 --> 00:28:45.370
der IP und einem

00:28:45.370 --> 00:28:48.190
Namen? Ja, ja, also man

00:28:48.190 --> 00:28:50.050
kann solche Requests natürlich auch zusammenbauen,

00:28:50.150 --> 00:28:52.130
aber meistens verwendet man ja Browser und dann passiert

00:28:52.130 --> 00:28:54.130
das halt alles automatisch und da braucht man

00:28:54.130 --> 00:28:55.750
die Domains dann halt schon, weil

00:28:55.750 --> 00:28:58.050
in meinem statischen Web-Server, der halt

00:28:58.050 --> 00:29:00.130
sozusagen der Reverse-Proxy von den Applikations-Servern

00:29:00.130 --> 00:29:02.050
ist, gibt es dann halt einfach eine Tabelle, sondern es steht halt

00:29:02.050 --> 00:29:03.810
so, alles, was irgendwie mit

00:29:03.810 --> 00:29:06.090
Python-Podcast.de anfängt, geht halt

00:29:06.090 --> 00:29:08.110
an den lokalen

00:29:08.110 --> 00:29:10.090
Applikationsserver, der auf dem Port

00:29:10.090 --> 00:29:11.930
läuft. Und alles, was halt

00:29:11.930 --> 00:29:14.010
auf die Domänen geht, geht halt an

00:29:14.010 --> 00:29:16.090
denen und so. Okay, also

00:29:16.090 --> 00:29:17.970
du machst halt tatsächlich relativ viel im Web, das haben wir

00:29:17.970 --> 00:29:20.150
jetzt, glaube ich, auch gehört, auch mit den Browsern

00:29:20.150 --> 00:29:21.930
haben wir jetzt, glaube ich, schon ein kleines Thema, ein bisschen

00:29:21.930 --> 00:29:23.910
gehabt, was wir vorher noch nicht angekündigt hatten, aber

00:29:23.910 --> 00:29:25.950
hey, wir haben eigentlich ein bisschen was über die Browser erzählt.

00:29:26.030 --> 00:29:26.930
Ja, ja, sowas.

00:29:27.430 --> 00:29:29.830
Wir wurden erzählt, was alles nicht so funktioniert, also da

00:29:29.830 --> 00:29:31.170
hatten wir ja auch kurz den Safari erwähnt.

00:29:32.330 --> 00:29:33.810
Ja, du hast auch gesagt, was machst du

00:29:33.810 --> 00:29:35.710
so eigentlich die ganze Zeit und was hast du irgendwas erzählt?

00:29:35.790 --> 00:29:37.910
Du hast ein Video mit Audio gemacht im Browser und so.

00:29:38.750 --> 00:29:39.790
Ja, letzte

00:29:39.790 --> 00:29:41.470
Woche. Ja. Eigentlich

00:29:41.470 --> 00:29:42.910
mache ich

00:29:42.910 --> 00:29:45.890
so Data Science, Machine Learning

00:29:45.890 --> 00:29:47.830
Geschichten, aber halt in letzter

00:29:47.830 --> 00:29:49.650
Zeit auch häufiger Frontend

00:29:49.650 --> 00:29:51.810
Sachen im Web, weil man muss halt

00:29:51.810 --> 00:29:53.310
auch Dinge, wenn man

00:29:53.310 --> 00:29:55.630
Machine Learning machen will, zuerst muss man Daten

00:29:55.630 --> 00:29:56.770
sammeln und die annotieren und so.

00:29:58.010 --> 00:29:58.190
Und

00:29:58.190 --> 00:30:01.570
früher haben das irgendwie immer andere

00:30:01.570 --> 00:30:03.550
Leute gemacht, Annotationsfront 1 gebaut

00:30:03.550 --> 00:30:05.390
und so, aber das war nie so wirklich

00:30:05.390 --> 00:30:07.310
toll und inzwischen

00:30:07.310 --> 00:30:10.770
ja,

00:30:10.990 --> 00:30:13.550
arbeite ich da gerade an einem Projekt, wo ich das halt auch

00:30:13.550 --> 00:30:15.510
mit selber mache und eigentlich bin ich ganz glücklich drüber, weil

00:30:15.510 --> 00:30:17.470
jetzt kann ich das halt mal so bauen, wie ich das gerne

00:30:17.470 --> 00:30:19.610
hätte und das ist eigentlich ganz praktisch

00:30:19.610 --> 00:30:21.690
und nebenbei lerne ich halt auch mal diesen ganzen

00:30:21.690 --> 00:30:23.670
Web-Quatsch

00:30:23.670 --> 00:30:25.290
Ja, hab ich gehört.

00:30:25.670 --> 00:30:27.610
Deswegen, Leute, das ist alles Quatsch und

00:30:27.610 --> 00:30:28.650
Ja, gut geht alles nicht.

00:30:29.070 --> 00:30:31.070
Genau, aber so schlimm ist es auch nicht.

00:30:31.790 --> 00:30:32.990
Es ist schon eigentlich ganz gut.

00:30:33.070 --> 00:30:34.150
Es ist wirklich viel besser als früher.

00:30:35.190 --> 00:30:35.950
Und insofern würde ich sagen,

00:30:35.990 --> 00:30:37.710
ist es auch momentan ein ganz interessanter Zeitpunkt,

00:30:37.730 --> 00:30:38.430
um damit anzufangen,

00:30:38.490 --> 00:30:39.630
weil es geht halt schon eine ganze Menge.

00:30:40.710 --> 00:30:42.870
Aber immer ab und zu stößt man halt dann noch schon

00:30:42.870 --> 00:30:44.950
auf so schmerzhafte Details,

00:30:45.110 --> 00:30:45.630
wie zum Beispiel,

00:30:45.990 --> 00:30:47.310
letzte Woche habe ich Audio gemacht,

00:30:48.710 --> 00:30:51.630
und da war,

00:30:52.170 --> 00:30:53.990
also Safari ist halt so ein bisschen der neue IE,

00:30:54.110 --> 00:30:55.570
weil er hängt halt in der Entwicklung hinterher.

00:30:56.190 --> 00:30:57.930
Und da gibt es dann so unterschiedliche

00:30:57.930 --> 00:30:59.590
APIs, die Browser implementieren können. Zum Beispiel

00:30:59.590 --> 00:31:01.830
die MediaCatcher-API, wo

00:31:01.830 --> 00:31:03.530
man halt einfach vom Browser

00:31:03.530 --> 00:31:05.670
halt sowas bekommt wie Video

00:31:05.670 --> 00:31:07.690
oder Bilddaten.

00:31:07.930 --> 00:31:09.290
Also das kennt man vielleicht, wenn man

00:31:09.290 --> 00:31:11.870
ja, also eigentlich kennt man das

00:31:11.870 --> 00:31:14.130
eher so, dass man auf dem Smartphone

00:31:14.130 --> 00:31:15.950
dann so einen Dialog bekommt. So, möchtest

00:31:15.950 --> 00:31:17.950
du ein Foto oder Video aufnehmen oder halt

00:31:17.950 --> 00:31:21.850
quasi eins

00:31:21.850 --> 00:31:23.790
aus deiner Mediathek auswählen oder so?

00:31:23.850 --> 00:31:26.050
Du meinst, wenn ich auf Time klicke? Ich hatte mich kurz abgehängt.

00:31:26.130 --> 00:31:27.150
wenn ich was machen möchte?

00:31:27.510 --> 00:31:29.430
Wenn du auf einer Webseite bist und du möchtest jetzt

00:31:29.430 --> 00:31:32.090
beispielsweise, du musst da halt irgendwie ein Profilbild hochladen

00:31:32.090 --> 00:31:33.830
oder so. Dann gibt es meistens

00:31:33.830 --> 00:31:35.310
einen Button oder sowas, wo man drauf drückt.

00:31:35.730 --> 00:31:37.770
Und dann wird man halt gefragt, irgendwie so Fotovideo

00:31:37.770 --> 00:31:39.550
aufnehmen oder irgendwie

00:31:39.550 --> 00:31:41.290
ein bestehendes Foto benutzen oder so.

00:31:42.950 --> 00:31:43.710
Genau. Und

00:31:43.710 --> 00:31:45.830
das ist eigentlich

00:31:45.830 --> 00:31:47.270
so ein File-Input,

00:31:47.490 --> 00:31:49.770
so ein Input-Element, was man halt da verwendet.

00:31:50.290 --> 00:31:51.450
Also ein Input-Type-File.

00:31:51.910 --> 00:31:53.850
Und da gibt es auch einen Standard für, wie man da ranschreiben kann.

00:31:53.970 --> 00:31:55.330
Okay, ich hätte gern jetzt aber

00:31:55.330 --> 00:31:57.090
nur ein Foto oder nur

00:31:57.090 --> 00:31:59.730
Audio, und zwar in dem und dem

00:31:59.730 --> 00:32:01.370
Codec und so. Das geht eigentlich alles.

00:32:01.870 --> 00:32:03.630
Ja. Und die

00:32:03.630 --> 00:32:04.930
Browser können das auch.

00:32:06.290 --> 00:32:06.870
Oh, da geht's ab.

00:32:08.530 --> 00:32:09.550
Ich glaube, das ist die

00:32:09.550 --> 00:32:10.510
Waschmaschine. Waschmaschine.

00:32:11.130 --> 00:32:13.670
Ich glaube, Aufonik wird das

00:32:13.670 --> 00:32:15.330
hinterher alles rausfiltern. Na gut.

00:32:15.330 --> 00:32:16.350
Ich bin da sehr zuversichtlich. Mal gucken.

00:32:16.770 --> 00:32:17.610
Bei dem Schleudergang.

00:32:20.170 --> 00:32:21.350
Ja, genau.

00:32:22.650 --> 00:32:22.910
Und

00:32:22.910 --> 00:32:24.970
eigentlich wäre das ideal, wenn man einfach

00:32:24.970 --> 00:32:26.450
irgendwo ein Element hinmachen würde,

00:32:26.550 --> 00:32:28.790
Input-Element-Type-File

00:32:28.790 --> 00:32:30.470
und dann halt sagt man auch, was man da gerne hätte

00:32:30.470 --> 00:32:32.670
und dann wird der User halt gefragt, okay,

00:32:32.850 --> 00:32:34.710
dann nimm doch halt mal diese App

00:32:34.710 --> 00:32:35.910
zum Audio aufnehmen oder

00:32:35.910 --> 00:32:38.790
die Fotografie-App auf deinem Telefon

00:32:38.790 --> 00:32:40.770
mach damit irgendwas, dann landet das,

00:32:40.850 --> 00:32:42.650
was man aufgenommen hat, in der lokalen Mediathek

00:32:42.650 --> 00:32:44.230
und quasi auch

00:32:44.230 --> 00:32:46.630
im Browser

00:32:46.630 --> 00:32:48.870
und im JavaScript, sodass man damit irgendwas machen kann.

00:32:49.350 --> 00:32:50.030
Das wäre voll gut.

00:32:51.090 --> 00:32:53.030
Das funktioniert auch in den neuesten Chromes, glaube ich,

00:32:53.250 --> 00:32:54.670
aber das funktioniert nicht,

00:32:54.850 --> 00:32:56.510
mit dem Safari und das funktioniert auch nicht.

00:32:56.850 --> 00:32:58.090
Also es wäre halt das, was man dann hätte,

00:32:58.550 --> 00:33:00.630
aber das funktioniert halt mit dem Safari nicht und damit ist iOS

00:33:00.630 --> 00:33:02.710
komplett raus und damit kann man es eigentlich nicht mehr verwenden,

00:33:02.850 --> 00:33:03.810
weil geht halt nicht.

00:33:06.210 --> 00:33:06.610
Genau.

00:33:07.710 --> 00:33:08.730
Meinst du, die patchen das oder

00:33:08.730 --> 00:33:09.550
sind die da zu

00:33:09.550 --> 00:33:12.930
anders strategisch aufgestellt?

00:33:12.970 --> 00:33:14.470
Ja, das hätten sie, ich meine,

00:33:14.750 --> 00:33:16.770
das gibt es ja schon lange und so und andere haben das auch schon

00:33:16.770 --> 00:33:18.810
lange implementiert und da sie das schon seit

00:33:18.810 --> 00:33:20.470
quasi Jahren nicht gemacht haben, ist halt,

00:33:20.950 --> 00:33:21.950
warum sollten sie es jetzt tun?

00:33:23.030 --> 00:33:24.730
Weiß ich auch nicht. Also es könnte

00:33:24.730 --> 00:33:26.130
sein, dass es auch kommt, man weiß es halt nicht.

00:33:27.030 --> 00:33:28.670
Aber ja, also das

00:33:28.670 --> 00:33:30.490
wäre am schönsten. Und dann,

00:33:30.850 --> 00:33:32.550
wenn das nicht geht, gut, es gibt halt die

00:33:32.550 --> 00:33:34.550
Media

00:33:34.550 --> 00:33:35.490
Recorder API.

00:33:36.690 --> 00:33:38.370
Die ist auch ziemlich schick.

00:33:39.810 --> 00:33:40.690
Das ist halt ein bisschen

00:33:40.690 --> 00:33:42.550
mehr Aufwand, da muss man halt von JavaScript-Seite

00:33:42.550 --> 00:33:44.630
aus halt, hat man dann so ein

00:33:44.630 --> 00:33:46.270
Media Recorder-Objekt irgendwie

00:33:46.270 --> 00:33:48.870
an ein Window dranhängen. Das kann man benutzen,

00:33:48.870 --> 00:33:51.050
um halt irgendwie Audio aufzunehmen oder Video aufzunehmen

00:33:51.050 --> 00:33:52.930
oder so. Man kriegt halt

00:33:52.930 --> 00:33:54.470
nicht einfach eine Datei, was halt

00:33:54.470 --> 00:33:56.910
die Arbeit irgendwie enorm vereinfachen würde,

00:33:57.050 --> 00:33:58.690
sondern man kriegt halt dann

00:33:58.690 --> 00:34:01.170
irgendwie so ein

00:34:01.170 --> 00:34:03.050
Blob,

00:34:03.250 --> 00:34:04.790
so ein Binary-Objekt,

00:34:04.930 --> 00:34:06.810
was man dann auch quasi irgendwie wieder an den

00:34:06.810 --> 00:34:08.570
Server schicken kann und so, aber so ein bisschen

00:34:08.570 --> 00:34:10.330
ätzender. Ich muss gerade versuchen,

00:34:10.590 --> 00:34:12.870
ich kann es leider nicht nachmachen mit dem Blob.

00:34:13.510 --> 00:34:13.690
Ja.

00:34:15.490 --> 00:34:15.890
Und

00:34:15.890 --> 00:34:17.610
das ist eigentlich auch

00:34:17.610 --> 00:34:20.430
alles easy.

00:34:20.990 --> 00:34:22.270
Ach, so gut, dann könnte man ja das nehmen.

00:34:22.610 --> 00:34:24.630
Und das können auch tatsächlich alle

00:34:24.630 --> 00:34:26.850
Browser, bis auf Safari.

00:34:27.110 --> 00:34:28.130
Der implementiert das wieder nicht.

00:34:29.550 --> 00:34:30.830
Also Safari ist gerade so ein bisschen

00:34:30.830 --> 00:34:31.870
Pain, habe ich gehört.

00:34:32.070 --> 00:34:34.230
Ja, das ist echt schwierig.

00:34:35.630 --> 00:34:36.650
Wobei man sagen muss,

00:34:36.730 --> 00:34:38.850
auch die anderen, die Formate sind halt

00:34:38.850 --> 00:34:40.870
alle total unterschiedlich. Also die unterstützen

00:34:40.870 --> 00:34:41.990
das zwar, aber

00:34:41.990 --> 00:34:44.910
in Chrome kriegt man

00:34:44.910 --> 00:34:45.430
dann halt

00:34:45.430 --> 00:34:48.910
ja, die nehmen dieses

00:34:48.910 --> 00:34:51.610
WebM-Container-Format

00:34:51.610 --> 00:34:53.710
und schreiben da Opus-Codec rein.

00:34:54.350 --> 00:34:55.690
Opus was? Opus ist der

00:34:55.690 --> 00:34:57.590
Codec. Opus ist halt einer,

00:34:58.150 --> 00:34:59.330
ja, ist halt quasi gerade für

00:34:59.330 --> 00:35:01.690
Text oder Sprache,

00:35:03.030 --> 00:35:03.310
für

00:35:03.310 --> 00:35:05.450
Sprachaufnahmen ist das eigentlich ziemlich gut,

00:35:05.610 --> 00:35:07.230
komprimiert schön

00:35:07.230 --> 00:35:09.950
runter

00:35:09.950 --> 00:35:11.890
und man kann

00:35:11.890 --> 00:35:12.750
das halt immer noch gut verstehen.

00:35:15.030 --> 00:35:15.470
Und

00:35:15.470 --> 00:35:17.810
ja, Firefox nimmt dann halt

00:35:17.810 --> 00:35:19.370
einen anderen Container, nimmt dann halt diesen

00:35:19.370 --> 00:35:20.650
Ock-Worbis-Container

00:35:20.650 --> 00:35:24.590
Aber ich glaube, sie packen da

00:35:24.590 --> 00:35:26.330
sie packen da auch

00:35:26.330 --> 00:35:28.550
Opus rein als Codec.

00:35:29.790 --> 00:35:30.650
Ja, wobei

00:35:30.650 --> 00:35:32.050
jetzt natürlich Safari irgendwie

00:35:32.050 --> 00:35:34.670
würde jetzt wahrscheinlich nicht Opus

00:35:34.670 --> 00:35:36.910
nehmen, die unterstützen

00:35:36.910 --> 00:35:38.550
ja keinen freien Codec, sondern

00:35:38.550 --> 00:35:40.630
müsste das dann irgendwie MP4 sein oder sowas.

00:35:41.530 --> 00:35:41.850
Hurra!

00:35:42.310 --> 00:35:44.510
Und was das halt auch wieder schwierig macht,

00:35:44.610 --> 00:35:46.410
weil da muss man halt auf dem Server das alles nochmal ineinander

00:35:46.410 --> 00:35:48.490
umcodieren, weil man möchte ja auch den Browsern dann das

00:35:48.490 --> 00:35:50.410
Format schicken, was sie halt irgendwie

00:35:50.410 --> 00:35:52.890
problemlos wieder ausgeben können und so.

00:35:54.170 --> 00:35:55.210
Und ja,

00:35:55.290 --> 00:35:56.970
für den Firefox ist das dann, dem schickt man

00:35:56.970 --> 00:35:58.570
dann halt auch wieder ein Opus

00:35:58.570 --> 00:36:00.070
Codec im

00:36:00.070 --> 00:36:01.410
Ock-Container.

00:36:03.470 --> 00:36:04.370
Das war super, danke.

00:36:05.450 --> 00:36:06.170
Was zu trinken.

00:36:09.170 --> 00:36:10.810
Das ist einfach so nebenbei. Entschuldigung, wir haben euch

00:36:10.810 --> 00:36:11.510
stehen lassen.

00:36:13.850 --> 00:36:15.210
Ja, Entschuldigung, wo war es gerade mit den Containern?

00:36:15.210 --> 00:36:16.310
Genau, genau, genau. Und

00:36:16.310 --> 00:36:17.670
dem

00:36:17.670 --> 00:36:21.090
krumm wird man halt

00:36:21.090 --> 00:36:23.370
irgendwie dann WebM und

00:36:23.370 --> 00:36:26.850
auch Opus schicken.

00:36:27.070 --> 00:36:28.430
Naja, wie auch immer. Also

00:36:28.430 --> 00:36:31.090
Safari kann halt diese blöde

00:36:31.090 --> 00:36:32.030
Media-Rekorder-AP nicht.

00:36:32.870 --> 00:36:34.970
Das lässt sich dann überbrücken, indem man halt

00:36:34.970 --> 00:36:36.830
ein Polyfill halt verwendet, was dann

00:36:36.830 --> 00:36:38.990
die Media-Catcher-AP benutzt, um irgendwie

00:36:38.990 --> 00:36:40.390
diesen Media-Rekorder zu emulieren.

00:36:40.950 --> 00:36:42.930
Aber so richtig schön ist das alles nicht, weil dann kann man

00:36:42.930 --> 00:36:45.170
nur noch... Was? Ich hab mir gerade einen Fleck

00:36:45.170 --> 00:36:46.810
auf die Hose geschüttet. Oh nein!

00:36:47.670 --> 00:36:48.590
Entschuldigung.

00:36:51.050 --> 00:36:52.090
Oh, vielen Dank.

00:36:52.210 --> 00:36:52.730
Ja, bitteschön.

00:36:53.390 --> 00:36:53.910
Prost.

00:36:54.110 --> 00:36:54.510
Was ist denn das?

00:36:55.130 --> 00:36:56.690
Das ist ein Spätbrunner Brotfein.

00:36:59.910 --> 00:37:03.270
Zur später Stunde nochmal hier auf die Weihnachtsfolge.

00:37:03.730 --> 00:37:05.630
Ist ja sowieso alles ein bisschen chaotisch heute, deswegen.

00:37:06.410 --> 00:37:06.570
Ja.

00:37:08.350 --> 00:37:10.650
Das war lecker.

00:37:11.270 --> 00:37:11.590
Na gut.

00:37:15.450 --> 00:37:15.970
Wow.

00:37:17.370 --> 00:37:20.030
Ja, also

00:37:20.030 --> 00:37:21.110
klasse.

00:37:24.010 --> 00:37:25.070
Wir waren gerade stehen geblieben.

00:37:25.170 --> 00:37:25.890
Ja, ja, ja, bei Safari.

00:37:27.250 --> 00:37:28.110
Also, genau.

00:37:30.410 --> 00:37:30.770
Und

00:37:30.770 --> 00:37:32.770
ja, also man kann das dann immer,

00:37:32.890 --> 00:37:34.370
das Problem ist, wenn man jetzt

00:37:34.370 --> 00:37:36.750
sozusagen diese API, die nicht implementiert ist,

00:37:36.750 --> 00:37:38.390
im Browser selber in JavaScript

00:37:38.390 --> 00:37:40.650
nachbaut, damit man das

00:37:40.650 --> 00:37:42.790
halt in Safari genauso machen kann

00:37:42.790 --> 00:37:43.590
wie in den anderen Browsern,

00:37:44.870 --> 00:37:46.510
dann hat man halt das Problem,

00:37:46.830 --> 00:37:48.530
dass man die rohe Aufnahme

00:37:48.530 --> 00:37:49.730
dann halt kriegt in diesem

00:37:49.730 --> 00:37:51.790
Binär-Blob,

00:37:52.150 --> 00:37:54.150
Daten-Blob, den man halt

00:37:54.150 --> 00:37:57.490
unkomprimiert als

00:37:57.490 --> 00:37:58.430
WAV-File.

00:37:59.150 --> 00:38:00.290
Jetzt kann man natürlich anfangen, in

00:38:00.290 --> 00:38:01.850
JavaScript das irgendwie nach

00:38:01.850 --> 00:38:04.290
MP4 oder nach Opus zu kodieren. Das kann man

00:38:04.290 --> 00:38:06.410
irgendwie machen. Es gibt Leute, die das tun. Ich weiß nicht,

00:38:06.450 --> 00:38:07.330
ob das so eine gute Idee ist.

00:38:09.450 --> 00:38:10.430
Was ich dann mache,

00:38:10.530 --> 00:38:12.110
ist, ich schicke dann halt das WAV-File zum Server

00:38:12.110 --> 00:38:13.950
und der kodiert das dann halt um in die

00:38:13.950 --> 00:38:15.670
unterschiedlichen Formate und Container-Typen.

00:38:16.830 --> 00:38:18.510
Aber es ist halt dann einfach mehr, man braucht dann

00:38:18.510 --> 00:38:20.990
deutlich mehr Bandbreite, wenn man das halt unkomprimiert

00:38:20.990 --> 00:38:22.230
an den Server schickt.

00:38:22.490 --> 00:38:24.570
Safari, die gehen halt davon aus, die haben alle genug

00:38:24.570 --> 00:38:25.870
Bandbreite, ist ja auch Apple, ne?

00:38:27.430 --> 00:38:28.870
Naja, und so richtig

00:38:28.870 --> 00:38:30.350
so richtig dolle ist das

00:38:30.350 --> 00:38:32.670
irgendwie nicht. Ja, und dann

00:38:32.670 --> 00:38:34.730
genau, wenn man es dann beim Server hat

00:38:34.730 --> 00:38:35.830
und dann kann man das zwar in alle Formate

00:38:35.830 --> 00:38:38.630
umkodieren, ist aber auch manchmal, manchmal hat man dann so komische

00:38:38.630 --> 00:38:40.710
Effekte, ich benutze da eine FFM-Pack

00:38:40.710 --> 00:38:42.530
als Library, die kann das

00:38:42.530 --> 00:38:44.190
irgendwie alles ineinander konvertieren und manchmal

00:38:44.190 --> 00:38:46.670
bei manchen, wenn man von dem einen Format, also man nimmt irgendwas

00:38:46.670 --> 00:38:47.890
in Firefox auf, spielt es dann

00:38:47.890 --> 00:38:50.690
Safari ab oder so. Ich weiß es nicht mehr genau, wie es war,

00:38:50.790 --> 00:38:52.670
sondern plötzlich ist dann irgendwie alles nur halb so schnell

00:38:52.670 --> 00:38:54.490
oder so. Und dann muss man dann

00:38:54.490 --> 00:38:56.470
den Flex von FF Eggpack aufrufen, den man

00:38:56.470 --> 00:38:58.210
gemacht hat, irgendwie so lange drehen, bis das wieder stimmt.

00:38:58.350 --> 00:39:00.410
Und das ist halt alles ziemlich... Also es ist nicht so,

00:39:00.790 --> 00:39:02.370
dass es alles so out of the box funktioniert,

00:39:02.530 --> 00:39:04.710
sondern man hat da teilweise sehr überraschende Ergebnisse

00:39:04.710 --> 00:39:06.330
noch. Und

00:39:06.330 --> 00:39:08.490
was halt auch total doof ist,

00:39:08.550 --> 00:39:10.570
ist halt, habe ich mich dann halt

00:39:10.570 --> 00:39:12.470
mit diesem Problem habe ich mich mehr

00:39:12.470 --> 00:39:14.470
als einen halben Tag rumgeschlagen, bis ich überhaupt

00:39:14.470 --> 00:39:16.030
rausgekriegt habe, was da das Problem ist.

00:39:16.670 --> 00:39:18.870
Ähm, das war auch wieder Safari.

00:39:19.330 --> 00:39:19.730
Safari!

00:39:21.210 --> 00:39:24.190
Das ist schon der dritte Pain von Safari innerhalb von einer Woche.

00:39:24.690 --> 00:39:26.270
Also wenn man das abspielt, dann denkt man sich,

00:39:26.350 --> 00:39:28.290
okay, ich kann mit dem Safari leider kein Audio aufnehmen.

00:39:28.430 --> 00:39:29.570
Okay, gut, naja, egal.

00:39:31.690 --> 00:39:32.270
Wie ist so ein Teil?

00:39:33.610 --> 00:39:35.570
Sorry, ich hab irgendwie so einen fiesen Husten.

00:39:35.710 --> 00:39:37.830
Ich weiß nicht, als hättest du eben noch eine gewisse Zigarre geraucht.

00:39:38.310 --> 00:39:38.710
Ja.

00:39:41.090 --> 00:39:42.250
Und das geht mal wieder weg hier.

00:39:43.750 --> 00:39:46.630
Naja, genau, aber abspielen sollte es das ja können.

00:39:46.970 --> 00:39:48.670
Man kann das ja auch irgendwie in Format kodieren,

00:39:48.790 --> 00:39:51.730
dass es halt Safari abspielen können müsste,

00:39:51.850 --> 00:39:58.650
wie zum Beispiel MP4, ja, ist ja sozusagen das Hausformat.

00:39:59.770 --> 00:40:01.430
Und dann geht das aber irgendwie nicht.

00:40:01.550 --> 00:40:02.730
Man fragt sich, hä, warum geht denn das nicht?

00:40:04.010 --> 00:40:07.470
Und das Einzige, was geht, ist irgendwie MP3.

00:40:08.630 --> 00:40:10.570
Aber da geht das auch nur so,

00:40:10.910 --> 00:40:13.050
dass man das einmal abspielen kann und dann nicht mehr.

00:40:13.050 --> 00:40:18.290
Und dann steht in dem Audio-Teil, den man halt auf der Webseite sieht,

00:40:18.390 --> 00:40:20.290
steht da irgendwie sowas komisches wie Live-Übertragung.

00:40:21.710 --> 00:40:23.810
Da habe ich mich zuerst gefragt, so was zur Hölle ist das denn?

00:40:24.730 --> 00:40:31.910
Und ja, es ist halt so, dass Safari erwartet, wenn man jetzt Audio abspielen möchte,

00:40:32.030 --> 00:40:34.770
das heißt, man hat einen Audio-Tag, so ähnlich wie ein Image-Tag,

00:40:34.870 --> 00:40:36.530
bloß halt mit Audiodaten drin,

00:40:36.830 --> 00:40:39.230
dann kann man halt die unterschiedlichen Formate und Codecs halt auflisten,

00:40:39.690 --> 00:40:40.490
was man da so alles hat.

00:40:40.490 --> 00:40:42.190
Und der Browser kann dann entscheiden, was er abspielen möchte.

00:40:43.050 --> 00:40:49.990
Und bei allem außer MP3 schickt Safari halt irgendwie so ein Byte-Range-Request an den Server.

00:40:51.210 --> 00:40:52.210
Das muss der Server dann können.

00:40:52.490 --> 00:40:55.050
Er muss dann irgendwie mit einem 206 antworten statt einem 200er.

00:40:56.890 --> 00:40:58.690
Den benutzt Safari aber nicht.

00:40:59.250 --> 00:41:02.350
Er schickt den halt irgendwie dahin und schmeißt das Ergebnis weg.

00:41:02.750 --> 00:41:07.330
Aber wenn irgendwie kein 206 zurückkommt, dann geht einfach gar nichts, spielt ja gar nichts ab.

00:41:08.690 --> 00:41:10.650
Also es funktioniert einfach nicht.

00:41:11.650 --> 00:41:13.630
der Entwicklungs-Server, auf dem ich entwickle, der kann

00:41:13.630 --> 00:41:15.470
sowas halt nicht. Der kann keine Wide-Range-Requests,

00:41:15.550 --> 00:41:17.090
der kann überhaupt keine statischen Dateien eigentlich so richtig.

00:41:17.190 --> 00:41:18.290
Das ist ein Python-Entwicklungs-Server,

00:41:18.630 --> 00:41:20.950
dafür ist der nicht gedacht. Also

00:41:20.950 --> 00:41:23.610
antwortet der halt auf diesen Wide-Range-Request,

00:41:23.710 --> 00:41:25.190
glaube ich, ich weiß gar nicht, womit der dann antwortet,

00:41:25.770 --> 00:41:27.750
aber irgendwie im normalen 200, glaube ich.

00:41:28.490 --> 00:41:29.770
Und da sagt Fari so,

00:41:29.870 --> 00:41:31.470
nö, dann halt nicht. Aber es gibt auch keine Fehler,

00:41:31.550 --> 00:41:33.750
es gibt eine ganz komische Fehlermeldung

00:41:33.750 --> 00:41:34.410
in der Konsole.

00:41:35.410 --> 00:41:37.710
Ich habe das jetzt leider wieder vergessen, was aber irgendwie überhaupt nichts

00:41:37.710 --> 00:41:38.810
damit zu tun hat, was eigentlich passiert.

00:41:39.790 --> 00:41:40.530
Quad denied.

00:41:41.650 --> 00:41:46.290
Ja, und es kann auch sein, dass das dann im Produktivbetrieb alles dann funktioniert, auch mit anderen Sachen.

00:41:46.990 --> 00:41:49.590
Aber man kann dann halt auch schon nicht mehr so richtig testen irgendwie.

00:41:50.810 --> 00:41:57.590
Und MP3 funktioniert deswegen, weil MP3 halt ein Format ist ohne Container, was halt auch diverse Nachteile hat.

00:41:57.590 --> 00:42:01.470
Wie zum Beispiel, man kann halt nicht irgendwo hinspringen in der MP3-Datei.

00:42:02.110 --> 00:42:10.010
Es gibt keine separate Zeit oder sowas, wo man sagen kann, also man hat halt nicht irgendwie ein Header-Teil in der Datei, wo drinsteht,

00:42:10.090 --> 00:42:13.150
also dieser Zaun-Schnipsel ist so und so lang

00:42:13.150 --> 00:42:17.070
und wenn du zu diesem Zeitpunkt willst,

00:42:17.210 --> 00:42:19.970
dann musst du diesen Byte irgendwie abspielen oder so.

00:42:20.690 --> 00:42:21.830
Deswegen ist das natürlich total sinnvoll,

00:42:21.890 --> 00:42:23.170
diese Byte-Range-Requests zu haben,

00:42:23.250 --> 00:42:26.350
weil dann kannst du halt in einem Player sagen,

00:42:26.590 --> 00:42:28.970
okay, ich springe jetzt irgendwie zu dieser Kapitelmarke

00:42:28.970 --> 00:42:30.710
oder ich springe halt irgendwo in die Mitte

00:42:30.710 --> 00:42:32.950
und es muss nicht alles runtergeladen werden,

00:42:32.950 --> 00:42:35.250
sondern es wird nur das runtergeladen,

00:42:35.330 --> 00:42:36.350
was tatsächlich abgespielt wird.

00:42:36.450 --> 00:42:37.370
Also eigentlich schon sehr schick.

00:42:38.030 --> 00:42:39.150
Und MP3 kann das halt nicht.

00:42:40.090 --> 00:42:41.870
MP3 musst du halt immer komplett abspielen

00:42:41.870 --> 00:42:43.870
quasi oder komplett runterladen, wenn du es abspielen willst.

00:42:44.530 --> 00:42:45.550
Das macht der Safari dann auch.

00:42:46.190 --> 00:42:47.330
Also er sagt dann halt sozusagen, okay,

00:42:47.630 --> 00:42:49.490
ByteRange-Requests gehen mit MP3 dann halt nicht

00:42:49.490 --> 00:42:51.430
und das kann ich alles eh nicht machen.

00:42:52.890 --> 00:42:54.030
Daher mache ich da was anderes

00:42:54.030 --> 00:42:55.990
und tue so, als wäre das eine Live-Übertragung

00:42:55.990 --> 00:42:57.010
und spiele das dann halt irgendwie ab.

00:42:57.530 --> 00:42:59.990
Was dann aber dazu führt, dass der Browser

00:42:59.990 --> 00:43:01.570
lädt alles runter, aber man kann es halt nur ein einziges Mal

00:43:01.570 --> 00:43:03.870
abspielen und dann werden halt irgendwie so die

00:43:03.870 --> 00:43:06.330
Audio-Controls dunkel und das war's.

00:43:07.790 --> 00:43:08.810
Das ist halt also

00:43:08.810 --> 00:43:10.290
mir so, oh nein,

00:43:10.490 --> 00:43:11.010
was?

00:43:12.710 --> 00:43:14.930
Safari, wenn Dicke das hört, it's a pain in the ass.

00:43:15.490 --> 00:43:16.710
Ja, es gibt da einen sehr lustigen,

00:43:17.150 --> 00:43:18.690
Apple verwendet für all diese Sachen so ein

00:43:18.690 --> 00:43:20.350
Radar, heißt das Ding,

00:43:20.510 --> 00:43:21.470
Bug Tracker.

00:43:22.410 --> 00:43:24.670
Zu diesen Problemen, das habe ich dann irgendwie

00:43:24.670 --> 00:43:26.570
so nach ein bisschen suchen, ich hatte, das

00:43:26.570 --> 00:43:28.530
Problem war rauszufinden, was ist, was

00:43:28.530 --> 00:43:29.710
passiert hier eigentlich?

00:43:30.790 --> 00:43:32.030
Als ich das rausgefunden hatte,

00:43:32.690 --> 00:43:34.710
war es dann relativ leicht, dann auch den entsprechenden

00:43:34.710 --> 00:43:36.730
die entsprechenden Geschichten im Web

00:43:36.730 --> 00:43:38.490
zu finden, kann man sich immer raussuchen, wenn man so danach sucht,

00:43:38.570 --> 00:43:41.450
Safari-Audio-Bite-Range-Radar.

00:43:42.190 --> 00:43:43.010
Dann findet man da auch

00:43:43.010 --> 00:43:44.510
den entsprechenden Bug bei Apple.

00:43:44.830 --> 00:43:46.510
Und da haben so Leute lustige Sachen reingeschrieben.

00:43:48.110 --> 00:43:48.550
Safari

00:43:48.550 --> 00:43:51.410
Bite-Range-Radar.

00:43:52.550 --> 00:43:52.950
Ja.

00:43:54.810 --> 00:43:55.250
Und

00:43:55.250 --> 00:43:57.250
ja.

00:43:58.190 --> 00:43:59.310
Naja, auf jeden Fall, das ist alles

00:43:59.310 --> 00:44:01.030
nicht so toll. Ich hoffe mal, dass es dann im Produktivbetrieb

00:44:01.030 --> 00:44:01.690
irgendwie alles geht.

00:44:03.390 --> 00:44:05.430
Und ich einfach MP4 abspielen kann im Safari.

00:44:05.670 --> 00:44:07.090
Aber momentan spiele ich dann halt MP3

00:44:07.090 --> 00:44:08.650
und lebt damit, dass man es nur einmal abspielen kann

00:44:08.650 --> 00:44:09.310
und dann nicht wieder.

00:44:12.230 --> 00:44:14.650
Also das ist alles noch nicht so,

00:44:14.690 --> 00:44:16.530
es ist nicht so ein total

00:44:16.530 --> 00:44:17.250
smoothes

00:44:17.250 --> 00:44:20.350
Experience, sondern das ist mehr so,

00:44:21.050 --> 00:44:22.790
man fragt sich ab und zu so,

00:44:23.270 --> 00:44:24.550
das darf doch nicht wahr sein.

00:44:26.350 --> 00:44:26.710
Ja, dann

00:44:26.710 --> 00:44:28.410
auch schön,

00:44:28.730 --> 00:44:30.710
wenn man Audio aufnehmen möchte, also bei Fotos

00:44:30.710 --> 00:44:32.610
und so geht das ja eigentlich alles auch im Testbetrieb

00:44:32.610 --> 00:44:34.530
ganz gut, Audio nicht so sehr.

00:44:35.790 --> 00:44:36.570
Da hat man dann zum Beispiel

00:44:36.570 --> 00:44:37.770
das Problem, wenn man jetzt

00:44:37.770 --> 00:44:39.710
und da die

00:44:39.710 --> 00:44:41.950
Geschichten, die ich da gerade brauche, sind halt

00:44:41.950 --> 00:44:43.810
vor allen Dingen für mobile Endgeräte

00:44:43.810 --> 00:44:45.850
gedacht. Ist ja auch

00:44:45.850 --> 00:44:47.630
eigentlich schön, da hat man dann die ganzen Sensoren dabei,

00:44:47.790 --> 00:44:49.890
da hat man Mikrofone dabei und so. Das funktioniert

00:44:49.890 --> 00:44:51.790
ja auch alles. Sollte man eigentlich auch Audio aufnehmen können.

00:44:53.210 --> 00:44:53.890
So, wenn man

00:44:53.890 --> 00:44:55.670
Fotos macht und so,

00:44:55.730 --> 00:44:57.990
funktioniert das auch alles. Kann man halt einen Testserver im lokalen

00:44:57.990 --> 00:44:59.910
Netz haben, auf dem das läuft.

00:44:59.990 --> 00:45:01.670
Also ich habe da so meinen Python-Entwicklungsserver

00:45:01.670 --> 00:45:03.730
und dann

00:45:03.730 --> 00:45:05.450
kann ich da Fotos hochladen und so, gar kein Problem.

00:45:05.670 --> 00:45:07.750
Aber wenn man jetzt sagt, okay, schalt mal das Mikrofon ein

00:45:07.750 --> 00:45:08.550
und mach eine Audioaufnahme,

00:45:09.730 --> 00:45:11.490
dann sagt einem der Browser halt so,

00:45:12.150 --> 00:45:13.850
nee, das ist eine

00:45:13.850 --> 00:45:14.890
unsafe Origin,

00:45:15.650 --> 00:45:16.990
weil das ist nicht HTTPS.

00:45:19.090 --> 00:45:20.050
Und deswegen

00:45:20.050 --> 00:45:22.230
nee, keine Audioaufnahme.

00:45:22.930 --> 00:45:23.690
Kann man das irgendwie vorher

00:45:23.690 --> 00:45:25.270
umwandeln oder sowas, dass der es über

00:45:25.270 --> 00:45:26.750
einen sicheren Kanal schickt?

00:45:27.530 --> 00:45:29.090
Ja, der Browser sagt einfach, das macht er nicht.

00:45:30.570 --> 00:45:31.710
Also der Safari jetzt nur

00:45:31.710 --> 00:45:33.530
und dann machen das diesmal alle. Das machen tatsächlich alle nicht.

00:45:34.570 --> 00:45:35.450
Ich meine, ja, okay,

00:45:35.610 --> 00:45:37.650
Vielleicht ist Audio irgendwie super viel privater als

00:45:37.650 --> 00:45:39.070
Film oder

00:45:39.070 --> 00:45:40.790
Foto. Ich weiß es nicht.

00:45:42.090 --> 00:45:43.570
Ich kann mir schon vorstellen, woran es liegt.

00:45:43.710 --> 00:45:45.210
Ich meine, das Problem ist halt tatsächlich, dass jemand

00:45:45.210 --> 00:45:47.090
möglicherweise irgendwie ein Telefon

00:45:47.090 --> 00:45:49.590
auf den Meeting-Tisch legt

00:45:49.590 --> 00:45:51.230
oder so und dann irgendwie Sachen mitschneidet und man

00:45:51.230 --> 00:45:52.770
nicht möchte, dass es...

00:45:52.770 --> 00:45:55.290
Ehrlich gesagt, ich weiß nicht. Kann man ja auch so machen. Man kann es ja einfach

00:45:55.290 --> 00:45:56.590
irgendwie aufnehmen und später irgendwo hinschicken.

00:45:57.710 --> 00:45:59.250
Keine Ahnung. Auf jeden Fall.

00:45:59.650 --> 00:46:01.530
Ja, dann mach einen Livestream irgendwo hin. Das wird ja auch funktionieren.

00:46:01.650 --> 00:46:03.450
Ja, oder man hat dann eben einen HTTPS

00:46:03.450 --> 00:46:04.830
irgendwie fähigen

00:46:04.830 --> 00:46:07.210
Server, an den man das schickt, dann geht das ja alles auch.

00:46:08.050 --> 00:46:09.190
Aber wenn es

00:46:09.190 --> 00:46:10.890
halt nicht HTTPS-fähig ist,

00:46:11.030 --> 00:46:12.370
ein lokaler Entwicklungsserver geht halt nicht.

00:46:12.970 --> 00:46:15.010
Und den kann ich ja auch nicht so leicht HTTPS-fähig machen.

00:46:15.110 --> 00:46:15.770
Das geht ja einfach nicht.

00:46:16.830 --> 00:46:18.890
Dem kann ich natürlich ein Zertifikat verpassen und ich kann

00:46:18.890 --> 00:46:20.790
halt irgendwie so ein

00:46:20.790 --> 00:46:23.250
Reverse-HTTPS-Proxy

00:46:23.250 --> 00:46:24.370
davor schalten. Das geht ja alles.

00:46:24.390 --> 00:46:27.050
Ein Reverse-HTTP-Proxy,

00:46:27.050 --> 00:46:29.030
was macht der? Der halt sozusagen

00:46:29.030 --> 00:46:30.970
das HTTPS terminiert, also

00:46:30.970 --> 00:46:33.150
HTTPS mit dem Telefon spricht und dann die Requests

00:46:33.150 --> 00:46:35.050
weiterleitet an meinen Entwicklungsserver. Das ging ja.

00:46:35.470 --> 00:46:37.230
Das Problem ist nur, mit einem

00:46:37.230 --> 00:46:39.090
validen Zertifikat geht das alles nicht so richtig.

00:46:39.530 --> 00:46:43.070
ja, ohne valides Zertifikat ist

00:46:43.070 --> 00:46:45.290
natürlich auch wieder nichts. Also es ist einfach

00:46:45.290 --> 00:46:47.150
doof. Wir müssen nochmal vielleicht

00:46:47.150 --> 00:46:48.930
kurz erklären, was valide und was invalidere Karten sind.

00:46:49.010 --> 00:46:51.110
Aber vielleicht in Short, kriegen wir es irgendwie in the Box?

00:46:51.830 --> 00:46:52.630
Ja, also man

00:46:52.630 --> 00:46:55.190
ja, dieser ganze Teil von Hattipass ist auch so ein bisschen

00:46:55.190 --> 00:46:56.490
kaputt, aber also

00:46:56.490 --> 00:46:59.530
Wir sind ja heute bei der Chaos-Weihnachts-Folge,

00:46:59.610 --> 00:47:01.350
liebe Leute. Im Python-Podcast

00:47:01.350 --> 00:47:02.390
wollte ich nur einmal kurz reden.

00:47:02.670 --> 00:47:04.410
Es ist halt so, dass ich im Grunde

00:47:04.410 --> 00:47:06.350
ja der, also

00:47:06.350 --> 00:47:08.190
man braucht eigentlich drei Dinge damit, was sicher ist.

00:47:08.310 --> 00:47:10.510
Also wenn ich jetzt zum Beispiel mal das Beispiel nehme, Online-Banking

00:47:10.510 --> 00:47:12.490
und

00:47:12.490 --> 00:47:14.450
ich mache jetzt Online-Banking auf einer Webseite,

00:47:14.890 --> 00:47:16.350
dann müssen drei Sachen

00:47:16.350 --> 00:47:18.030
garantiert sein, damit das wirklich sich

00:47:18.030 --> 00:47:20.310
sozusagen sicher ist. Und das ist

00:47:20.310 --> 00:47:22.450
halt... Dein Computer ist nicht infiltriert,

00:47:22.870 --> 00:47:24.310
die Verbindung ist nicht infiltriert

00:47:24.310 --> 00:47:25.790
und der C-Computer ist nicht infiltriert.

00:47:26.370 --> 00:47:27.990
Ja, aber es gibt noch mehr Dinge. Noch mehr.

00:47:28.110 --> 00:47:30.210
Mehr als drei. Drei Dinge,

00:47:30.310 --> 00:47:31.670
aber ich würde das jetzt eher auf so eine abstrakte

00:47:31.670 --> 00:47:33.370
es auf der abstrakten Ebene

00:47:33.370 --> 00:47:34.390
heben wollen.

00:47:35.470 --> 00:47:37.510
Und zwar brauchst du

00:47:37.510 --> 00:47:38.170
halt irgendwie

00:47:38.170 --> 00:47:40.270
Authentifizierung.

00:47:42.990 --> 00:47:43.650
Ich bin der

00:47:43.650 --> 00:47:44.830
richtige Nutzer, der da auch rein darf.

00:47:44.850 --> 00:47:47.730
Ich bin der richtige Nutzer, der da rein darf. Das macht man halt per Username und Passwort

00:47:47.730 --> 00:47:49.590
üblicherweise. Oder Banken nennen das irgendwie PIN.

00:47:50.010 --> 00:47:51.270
Machen komische Beschränkungen, aber

00:47:51.270 --> 00:47:53.490
im Grunde zeigt man damit

00:47:53.490 --> 00:47:54.750
der Bank, dass man derjenige ist,

00:47:55.270 --> 00:47:56.130
für den man sich ausgibt.

00:47:57.970 --> 00:47:59.090
Zumindest, dass ich derjenige bin,

00:47:59.090 --> 00:48:01.190
der die Benutzer an dem Passwort kennt,

00:48:01.250 --> 00:48:02.410
von demjenigen, als den ich mich ausgebe.

00:48:02.770 --> 00:48:05.270
Ja, dann umgekehrt muss das aber auch gelten.

00:48:05.530 --> 00:48:07.510
Also auch die Bank muss sich mir gegenüber ausweisen,

00:48:08.210 --> 00:48:10.950
weil ich möchte ja natürlich schon wissen,

00:48:10.950 --> 00:48:14.770
dass ich sozusagen mit der Bank rede

00:48:14.770 --> 00:48:17.030
und nicht mit irgendjemandem, der zwischen mir und der Bank sitzt,

00:48:17.490 --> 00:48:20.570
dann meine Überweisung nimmt, da irgendwie die IBAN auf seine ändert

00:48:20.570 --> 00:48:22.810
und dann halt die Überweisung mit der richtigen Bank macht.

00:48:22.810 --> 00:48:23.070
Tata!

00:48:23.510 --> 00:48:24.590
Das wäre irgendwie schlecht.

00:48:25.050 --> 00:48:27.830
Das heißt, die Bank muss sich auch mir gegenüber ausweisen

00:48:27.830 --> 00:48:29.470
und das macht sie üblicherweise mit einem Zertifikat.

00:48:30.770 --> 00:48:38.090
Und das ist halt sozusagen, wenn das nicht funktioniert hat,

00:48:38.230 --> 00:48:40.630
dann gibt es so einen Polizisten mit so einem Knüppel, der da auftaucht

00:48:40.630 --> 00:48:42.150
und dann irgendwie so eine Browserwarnung.

00:48:42.970 --> 00:48:45.850
Oder man sieht manchmal so ein geschlossenes Symbol oder irgendwas Grünes,

00:48:45.850 --> 00:48:51.510
wenn das besonders viel Geld bezahlt hat für die Certification Authority.

00:48:52.910 --> 00:48:55.690
Aber im Grunde, wenn es keine Warnung gibt, dann war das okay.

00:48:56.610 --> 00:49:00.410
Diese ganze Struktur, wie das geprüft wird, welche Zertifikate okay sind und welche nicht,

00:49:00.470 --> 00:49:03.830
Das ist auch alles nicht so toll.

00:49:04.230 --> 00:49:05.550
Aber inzwischen, das geht auch alles.

00:49:05.550 --> 00:49:07.470
Man muss dafür auch kein Geld mehr bezahlen.

00:49:07.550 --> 00:49:10.810
Deswegen ist es auch für private Anwender und so eigentlich ganz gut.

00:49:10.890 --> 00:49:13.790
Da gibt es mit Let's Encrypt eine freie Certification Authority,

00:49:14.770 --> 00:49:16.790
bei der man sich Zertifikate besorgen kann,

00:49:17.110 --> 00:49:19.950
für wenn man jetzt eine Webseite betreibt, halt öffentliche Webseiten.

00:49:21.070 --> 00:49:22.250
Und das passiert alles automatisch.

00:49:22.330 --> 00:49:24.150
Man kann zum Beispiel einen Webserver nehmen namens Caddy.

00:49:24.950 --> 00:49:26.470
Und wenn der halt auf der...

00:49:26.470 --> 00:49:27.710
Ein Python-Server?

00:49:28.230 --> 00:49:31.090
Nee, der ist in Go geschrieben, aber...

00:49:31.090 --> 00:49:36.650
Ja, der macht sozusagen so ein Challenge-Response-Verfahren

00:49:36.650 --> 00:49:38.670
mit Let's Encrypt, mit dieser Certification Authority,

00:49:39.510 --> 00:49:41.170
holt sich dann die entsprechenden Zertifikate.

00:49:41.250 --> 00:49:43.150
Das funktioniert alles automatisch, man muss sich um nichts mehr kümmern

00:49:43.150 --> 00:49:44.190
und das klappt einfach so.

00:49:44.530 --> 00:49:46.870
Das ist ein sehr viel besserer Zustand als früher,

00:49:47.050 --> 00:49:48.190
wo man das alles von Hand machen musste

00:49:48.190 --> 00:49:52.430
und mit Passphrases rumhantieren und OpenSSL-Kommandos

00:49:52.430 --> 00:49:54.150
und keine Ahnung, war alles ziemlich furchtbar.

00:49:55.150 --> 00:49:57.830
Aber die Aufgabe von einem Zertifikat ist einfach nur,

00:49:58.030 --> 00:50:00.850
sozusagen sicherzustellen für den Benutzer im Browser,

00:50:01.230 --> 00:50:03.490
dass da angezeigt wird, dass er mit der richtigen Institution redet.

00:50:04.670 --> 00:50:07.010
Also das ist halt Authentifizierung.

00:50:07.630 --> 00:50:10.950
Zweite Geschichte ist halt Autorisierung.

00:50:11.190 --> 00:50:13.430
Man muss halt zusehen, dass man das, was man machen möchte,

00:50:13.490 --> 00:50:14.290
auch wirklich machen darf.

00:50:14.950 --> 00:50:18.430
Also dass halt, keine Ahnung, ich als Benutzer

00:50:18.430 --> 00:50:22.610
von meinem Bankkonto Dinge überweisen darf.

00:50:23.190 --> 00:50:25.330
Du hast die Rechte, das durchzuführen, was du möchtest.

00:50:25.470 --> 00:50:36.810
Genau, aber es sollte jetzt nicht irgendwie, keine Ahnung, von anderen Leuten sozusagen Konten irgendwas überweisen dürfen oder so.

00:50:37.430 --> 00:50:38.650
Und das wäre halt Autorisierung.

00:50:38.770 --> 00:50:46.190
Ich wäre zwar authentifiziert in dem Sinne, dass die Bank wüsste, wer ich bin, aber sie muss halt auch überprüfen, bin ich jetzt autorisiert von irgendeinem anderen Konto was zu tun?

00:50:46.190 --> 00:50:48.690
Hast du die Privilegien, das zu tun, was du tun darfst?

00:50:48.790 --> 00:50:52.670
Da gab es ein schönes Beispiel mal bei der CeBIT.

00:50:53.130 --> 00:50:54.550
Also die CeBIT, oh, die gibt es ja auch nicht mehr.

00:50:55.470 --> 00:50:55.870
Ja, natürlich.

00:50:55.870 --> 00:50:56.670
das auch irgendwie zugelassen.

00:50:57.190 --> 00:50:59.270
In den 90ern war

00:50:59.270 --> 00:51:01.970
die Hochzeit der CeBIT

00:51:01.970 --> 00:51:03.750
und da...

00:51:03.750 --> 00:51:04.910
Es war eine Computermesse.

00:51:05.570 --> 00:51:07.170
In Hannover, genau,

00:51:07.990 --> 00:51:09.610
gibt es ein schönes YouTube-Video

00:51:09.610 --> 00:51:12.570
von Nixdorf,

00:51:12.650 --> 00:51:13.510
glaube ich, selbst,

00:51:14.870 --> 00:51:17.810
der irgendwie zu Beginn der CeBIT

00:51:17.810 --> 00:51:19.430
gesagt hat, ich verstehe das gar nicht.

00:51:20.030 --> 00:51:21.150
Was soll denn das? Warum hat man das

00:51:21.150 --> 00:51:23.590
die Hannover Messe und die CeBIT auseinander

00:51:23.590 --> 00:51:25.810
gelegt? Das ist doch eigentlich das Gleiche.

00:51:25.870 --> 00:51:26.890
ich kapiere das alles nicht

00:51:26.890 --> 00:51:29.030
und das ist auch interessant

00:51:29.030 --> 00:51:31.790
vielleicht so ein Nixdorf ist dann ja irgendwie glaube ich

00:51:31.790 --> 00:51:33.670
auf der Zebe tatsächlich an einem Herzinfarkt gestorben

00:51:33.670 --> 00:51:35.890
und jetzt sagen

00:51:35.890 --> 00:51:37.790
alle so, ja okay stimmt, warum haben wir das eigentlich mal

00:51:37.790 --> 00:51:39.450
auseinandergelegt, jetzt legen wir es wieder zusammen

00:51:39.450 --> 00:51:41.870
also ist das alles noch so

00:51:41.870 --> 00:51:43.850
gekommen, wie es hätte von Anfang an vielleicht sein sollen

00:51:43.850 --> 00:51:45.170
naja

00:51:45.170 --> 00:51:47.410
nee, ich glaube die Zebe hat es einfach

00:51:47.410 --> 00:51:48.770
das

00:51:48.770 --> 00:51:51.590
hat halt nicht mehr funktioniert

00:51:51.590 --> 00:51:53.670
und genau

00:51:53.670 --> 00:51:55.310
da war es so, dass

00:51:55.310 --> 00:51:57.670
jedenfalls habe ich das irgendwie mal gehört, ich habe keine Ahnung,

00:51:57.770 --> 00:51:59.630
ob das stimmt, das IBM

00:51:59.630 --> 00:52:01.770
hatte da einen Stand mit so großen Maschinen,

00:52:01.890 --> 00:52:02.450
so Mainframes,

00:52:03.750 --> 00:52:04.470
Z-Series

00:52:04.470 --> 00:52:06.150
und

00:52:06.150 --> 00:52:08.110
da

00:52:08.110 --> 00:52:11.690
haben sie halt sozusagen einen Teil

00:52:11.690 --> 00:52:13.830
vergessen, also sie haben halt die Autorisierung überprüft,

00:52:14.310 --> 00:52:15.850
also da kamen halt irgendwie dann so Tieflader,

00:52:15.930 --> 00:52:17.630
so Sattelschlepper an und

00:52:17.630 --> 00:52:19.450
haben halt die ganze Hardware eingepackt,

00:52:19.450 --> 00:52:21.410
das waren irgendwie Leute, die mit dem, also auf den

00:52:21.410 --> 00:52:23.410
LKWs stand IBM drauf, die Leute, die reinkamen,

00:52:23.490 --> 00:52:24.550
das waren alles so IBM

00:52:24.550 --> 00:52:28.590
Arbeitsuniform

00:52:28.590 --> 00:52:30.450
ausgestattete Leute, die hatten

00:52:30.450 --> 00:52:31.950
irgendwie die richtigen Formulare dabei und so,

00:52:32.030 --> 00:52:33.350
das hat alles gepasst,

00:52:34.550 --> 00:52:35.990
haben dann den Kram mitgenommen

00:52:35.990 --> 00:52:36.990
und

00:52:36.990 --> 00:52:40.430
dann war er halt weg und dann irgendwann kam noch mal

00:52:40.430 --> 00:52:42.210
die WM-Abbau-Leute,

00:52:43.330 --> 00:52:44.530
die sich dann gewundert haben,

00:52:44.610 --> 00:52:45.450
dass nichts mehr zum Abbauen war.

00:52:46.070 --> 00:52:48.290
Ja, immer die richtigen Anträge,

00:52:48.410 --> 00:52:49.530
immer die richtige Uniform.

00:52:49.530 --> 00:52:52.070
Das Problem da ist halt so, Autorisierung war richtig,

00:52:52.250 --> 00:52:54.230
also sie haben halt das schon überflutet, also es waren schon

00:52:54.230 --> 00:52:56.010
das waren die Leute, die den Job hätten machen sollen.

00:52:56.530 --> 00:52:57.890
Das ist ja nur nicht authentifiziert.

00:52:58.310 --> 00:52:59.310
Das ist der Köpenick-Hack.

00:53:00.470 --> 00:53:02.030
Man ist autorisiert, aber nicht

00:53:02.030 --> 00:53:04.110
authentifiziert.

00:53:04.410 --> 00:53:06.270
Aber man muss wirklich beides haben. Also wenn eins davon

00:53:06.270 --> 00:53:08.230
fehlt, ist es halt schlecht. Und dann gibt es noch ein drittes,

00:53:08.270 --> 00:53:09.330
was auch sein muss, Integrität.

00:53:11.970 --> 00:53:12.470
Integrität ist

00:53:12.470 --> 00:53:14.350
auch wichtig, weil ansonsten kann jemand

00:53:14.350 --> 00:53:15.090
das manipulieren.

00:53:15.850 --> 00:53:17.310
Kann in die Mitte setzen und winken.

00:53:18.330 --> 00:53:20.390
Dafür hat man halt Verschlüsselungen und dafür hat man halt

00:53:20.390 --> 00:53:22.310
auch, sind auch die Zertifikate

00:53:22.310 --> 00:53:24.130
zuständig, damit man sozusagen weiß,

00:53:24.230 --> 00:53:26.150
dass man auch tatsächlich mit den Leuten redet, die das

00:53:26.150 --> 00:53:28.030
vorgeben zu sein.

00:53:28.650 --> 00:53:29.990
Wenn man Integrität nicht hat,

00:53:30.210 --> 00:53:32.050
dann funktioniert das auch alles nicht.

00:53:32.550 --> 00:53:34.290
Also wenn man jetzt nicht in einem Raum sitzt

00:53:34.290 --> 00:53:36.250
und sich gegenseitig angucken kann, ist Integrität natürlich

00:53:36.250 --> 00:53:38.130
ein schwieriges Thema, weil ich kann mir vorstellen,

00:53:38.890 --> 00:53:40.230
jemand kann immer so tun, als wäre er irgendjemand

00:53:40.230 --> 00:53:42.230
und wenn er sich dann authentifizieren kann

00:53:42.230 --> 00:53:43.850
und autorisiert wirkt,

00:53:44.410 --> 00:53:46.210
dann kriegt

00:53:46.210 --> 00:53:48.130
er die Befugnis und gilt auch irgendwie

00:53:48.130 --> 00:53:50.110
als Integer. Also viele Leute machen vielleicht

00:53:50.110 --> 00:53:52.130
den Fehler, dass sie Integrität abhängig

00:53:52.130 --> 00:53:53.890
machen von Authentifizierung und Autorisierung.

00:53:54.170 --> 00:53:56.470
Das ist nochmal eine getrennte Geschichte.

00:53:57.170 --> 00:53:58.690
Und ja, wenn man diese

00:53:58.690 --> 00:54:00.610
drei Sachen so ganz abstrakt irgendwie

00:54:00.610 --> 00:54:02.750
auf die Reihe kriegt, dann ist es halt okay.

00:54:03.150 --> 00:54:03.990
Und ja,

00:54:04.810 --> 00:54:06.090
wenn nicht, dann halt irgendwie nicht.

00:54:06.370 --> 00:54:08.770
Und dafür sind halt Zertifikate da.

00:54:08.870 --> 00:54:10.550
Und im lokalen Netz ist es aber blöd. Da geht halt das

00:54:10.550 --> 00:54:12.170
ganze letzten Kripp-Zeugs halt nicht,

00:54:12.570 --> 00:54:14.570
weil man dieses Web-Challenge-Response-Ring nicht

00:54:14.570 --> 00:54:16.630
machen kann. Müsstest du die selber

00:54:16.630 --> 00:54:16.890
schreiben?

00:54:18.070 --> 00:54:20.490
Natürlich kann man sich selber ein Zertifikat erstellen,

00:54:20.490 --> 00:54:22.450
aber das Problem ist halt, dass man dann

00:54:22.450 --> 00:54:23.730
nicht sozusagen

00:54:23.730 --> 00:54:29.170
offizielle Zertifikate, die im Browser akzeptiert

00:54:29.170 --> 00:54:32.910
sind, mit einem Root-Zertifikat unterschrieben, einer

00:54:32.910 --> 00:54:36.070
entsprechenden Certification Authority. Was ist ein Root-Zertifikat?

00:54:36.690 --> 00:54:39.770
Das ist halt das, was im Browser hinterlegt ist,

00:54:40.430 --> 00:54:44.690
womit der Browser überprüfen kann, ob die Signatur, die eine

00:54:44.690 --> 00:54:49.330
Certification Authority, mit dem sie ein Zertifikat

00:54:49.330 --> 00:54:52.710
unterschrieben hat, ob die stimmt, ob die von der richtigen Certification Authority kommt.

00:54:52.970 --> 00:54:55.290
Also das Root liegt dann wo auf dem Server?

00:54:56.170 --> 00:54:58.910
Das Root-Zertifikat ist im Browser.

00:54:59.530 --> 00:55:00.690
Die sind im Browser vorinstalliert.

00:55:01.290 --> 00:55:03.470
Das heißt, die müssen bei den Browsern tatsächlich vorhanden sein

00:55:03.470 --> 00:55:05.110
und jeder Browser bekommt sein eigenes Zertifikat?

00:55:05.390 --> 00:55:08.290
Nee, Browser haben eine Liste von Root-Zertifikaten,

00:55:08.390 --> 00:55:09.250
denen sie sozusagen vertrauen.

00:55:10.470 --> 00:55:12.650
Und das sind halt einmal sowas wie VeriSign

00:55:12.650 --> 00:55:15.770
und da gibt es diverse Firmen, die das halt irgendwie machen.

00:55:16.870 --> 00:55:19.330
Telekom ist auch dabei, aber halt eben auch viele Provider,

00:55:20.010 --> 00:55:21.850
teilweise ziemlich seltsame Organisationen.

00:55:22.410 --> 00:55:24.750
Es gab da auch Leute, die versucht haben, sich da reinzuschmuggeln, teilweise erfolgreich.

00:55:25.890 --> 00:55:32.150
Ich glaube, das war super.

00:55:32.430 --> 00:55:34.970
Vor allen Dingen ist ein Provider irgendwie pleite gegangen,

00:55:35.430 --> 00:55:37.290
hatte halt so ein Root-Zertifikat in den Browsern drin.

00:55:38.430 --> 00:55:43.270
Und dann haben irgendwelche anderen Institutionen diesen Plattier gegangen,

00:55:43.330 --> 00:55:45.190
einen Provider aufgekauft und dann lustige Sachen damit gemacht.

00:55:45.570 --> 00:55:48.010
Einer hat versucht, in die Browser reinzukommen, auch sehr lustig.

00:55:48.110 --> 00:55:51.170
Das war eine Spaßaktion, aber ich glaube, der hat sich genannt,

00:55:52.410 --> 00:55:53.410
irgendwie Honest Ali,

00:55:53.890 --> 00:55:56.190
war ein Gebrauchtwagenhändler und wollte halt auch

00:55:56.190 --> 00:55:57.550
sein Zertifikat in den Browsern haben.

00:55:59.130 --> 00:56:02.230
Oder Honest Ahmed, ich weiß nicht mehr genau.

00:56:02.350 --> 00:56:03.790
Es war super lustig.

00:56:04.750 --> 00:56:06.070
Ja, in den Browsern

00:56:06.070 --> 00:56:07.910
sind teilweise komische Root-Zertifikate drin.

00:56:11.610 --> 00:56:12.130
Aber

00:56:12.130 --> 00:56:14.310
das Problem

00:56:14.310 --> 00:56:15.090
ist halt, wie kriegt man,

00:56:16.090 --> 00:56:17.490
der Browser muss halt irgendwo

00:56:17.490 --> 00:56:19.910
sein Vertrauen bootstrappen.

00:56:19.910 --> 00:56:21.370
Und normalerweise passiert das eben so, dass

00:56:21.370 --> 00:56:23.610
die Sachen schon dabei sind. Also wenn man einen Browser installiert,

00:56:23.690 --> 00:56:25.150
sind die Dinger halt auch schon drin. Das heißt,

00:56:25.810 --> 00:56:27.470
wenn ein Browser

00:56:27.470 --> 00:56:29.450
ein unterschriebenes Zertifikat sieht, dann weiß er

00:56:29.450 --> 00:56:30.930
halt, kann er anhand der Liste der

00:56:30.930 --> 00:56:33.150
vertrauenswürdigen Root-Zertifikate überprüfen,

00:56:33.350 --> 00:56:34.190
ob das jetzt eine

00:56:34.190 --> 00:56:37.430
Root-CR unterschrieben hat, die er

00:56:37.430 --> 00:56:39.190
kennt oder nicht. Also Bootstrap heißt alles selber

00:56:39.190 --> 00:56:41.450
einstellen. Kannst du das auch alles selber

00:56:41.450 --> 00:56:43.330
einstellen, aber das sind so... Aber das heißt Bootstrap.

00:56:44.750 --> 00:56:45.330
Bootstrap heißt,

00:56:45.970 --> 00:56:47.310
dass man, man braucht halt irgendwie

00:56:47.310 --> 00:56:48.630
sozusagen, man muss

00:56:48.630 --> 00:56:51.350
die Unterschrift, die man jetzt

00:56:51.350 --> 00:56:53.370
unter einem Zertifikat sieht,

00:56:53.510 --> 00:56:55.050
ja, zurückführen auf irgendwas, was man kennt.

00:56:56.830 --> 00:56:58.430
Sozusagen, also...

00:56:58.430 --> 00:56:59.370
Ist das ja auch die, mit der

00:56:59.370 --> 00:57:01.350
Unterschriebenheit passiert, der komische Ausgrund ist irgendwie auch.

00:57:01.350 --> 00:57:03.410
Und klar, also man könnte jetzt natürlich

00:57:03.410 --> 00:57:05.190
ein Zertifikat haben, das

00:57:05.190 --> 00:57:07.190
unterschrieben ist von der einen und dann nochmal eine ganze Kette

00:57:07.190 --> 00:57:09.230
von Unterschriften, aber die Frage

00:57:09.230 --> 00:57:11.210
ist halt, irgendwie muss man

00:57:11.210 --> 00:57:11.990
letztendlich

00:57:11.990 --> 00:57:15.310
ja, eine haben, der man schon

00:57:15.310 --> 00:57:17.290
vertraut und die Art, wie man

00:57:17.290 --> 00:57:19.450
halt zu diesem sicheren

00:57:19.450 --> 00:57:21.130
Vertrauen kommt, ist das halt schon einfach mit dem Browser

00:57:21.130 --> 00:57:22.290
mit ausgeliefert wird.

00:57:23.370 --> 00:57:25.250
Was natürlich, ja, das muss man halt

00:57:25.250 --> 00:57:27.210
dann auch sicher sein, dass man den richtigen Browser bekommen hat.

00:57:28.110 --> 00:57:28.710
Aber...

00:57:28.710 --> 00:57:31.390
Dafür kann man ja eine Hash-Summe prüfen bei dem Runterladen

00:57:31.390 --> 00:57:32.790
von der Seite. Ja, genau.

00:57:34.310 --> 00:57:34.990
Ähm, ja.

00:57:36.150 --> 00:57:37.230
Äh, genau.

00:57:37.230 --> 00:57:38.070
Ja, alles nicht so einfach.

00:57:38.790 --> 00:57:41.110
Ich möchte jetzt aber an der Stelle gleich kurz diese ganze

00:57:41.110 --> 00:57:43.110
Browser-Sache so ein bisschen abkürzen, weil wir sind ja

00:57:43.110 --> 00:57:45.010
immer noch im Python-Podcast und ich glaube, wir haben noch nicht so viel

00:57:45.010 --> 00:57:46.730
über Python heute geredet. Ja, das ist richtig.

00:57:47.710 --> 00:57:49.150
Ja, also Audi und Browser haben wir

00:57:49.150 --> 00:57:51.010
irgendwie versucht zu erklären und ein bisschen, was wir

00:57:51.010 --> 00:57:53.030
Probleme der Safari die ganze Zeit macht und was da

00:57:53.030 --> 00:57:55.090
alles nicht so funktioniert. Es sind aber noch

00:57:55.090 --> 00:57:56.950
einige andere Sachen, die haben nicht funktioniert, die auch mit Python

00:57:56.950 --> 00:57:58.330
zu tun hatten. Ja.

00:57:59.370 --> 00:58:01.070
Wobei, naja, vielleicht zuerst mal noch

00:58:01.070 --> 00:58:02.610
eine Sache, die dann tatsächlich funktioniert hat. Also

00:58:02.610 --> 00:58:04.750
der Server-Teil quasi,

00:58:05.030 --> 00:58:06.830
das ist dann auch tatsächlich Python. Ja.

00:58:07.530 --> 00:58:07.850
Django,

00:58:08.130 --> 00:58:10.970
das hat eigentlich alles ziemlich gut funktioniert.

00:58:11.390 --> 00:58:12.610
Ihr habt die letzte Folge von nicht gehört.

00:58:13.290 --> 00:58:14.970
Und ja, was

00:58:14.970 --> 00:58:16.570
ich da mache, ist

00:58:16.570 --> 00:58:18.910
ein

00:58:18.910 --> 00:58:20.950
Protokoll nennt sich GraphQL.

00:58:21.110 --> 00:58:23.270
Das ist eine Geschichte, die hat Facebook irgendwann mal veröffentlicht.

00:58:24.310 --> 00:58:24.990
Das ist tatsächlich

00:58:24.990 --> 00:58:27.230
ziemlich nett. Also das ist halt sozusagen eine Alternative

00:58:27.230 --> 00:58:28.790
zu, vielleicht kennt man das,

00:58:28.990 --> 00:58:29.990
wie so REST-basierte

00:58:29.990 --> 00:58:32.470
APIs.

00:58:33.110 --> 00:58:34.910
Also zum Reden über JSON

00:58:34.910 --> 00:58:36.350
Files, oder?

00:58:37.750 --> 00:58:38.490
Ja, also

00:58:38.490 --> 00:58:40.830
quasi, wenn man nicht eine Webseite

00:58:40.830 --> 00:58:42.950
haben möchte, die man dem User präsentiert,

00:58:43.090 --> 00:58:44.890
wo halt die gerendert werden soll

00:58:44.890 --> 00:58:46.710
von dem Browser, sondern wenn man jetzt

00:58:46.710 --> 00:58:48.490
irgendwelche Daten haben möchte

00:58:48.490 --> 00:58:52.510
von einer API. Also heutzutage hat man oft einfach eine

00:58:52.510 --> 00:58:55.650
Web-Applikation, die im Browser läuft,

00:58:56.690 --> 00:59:00.390
die einem angezeigt wird und vom Server selber kommen

00:59:00.390 --> 00:59:01.830
eigentlich nur noch so JSON-Daten.

00:59:03.930 --> 00:59:07.510
Und die Art, wie man die vom Server holt, ist halt, man

00:59:07.510 --> 00:59:10.390
spricht halt irgendein Protokoll mit dem Server.

00:59:12.050 --> 00:59:13.790
Immer noch sehr beliebt und

00:59:13.790 --> 00:59:18.070
REST an der Stelle.

00:59:19.610 --> 00:59:20.130
Das ist halt so,

00:59:22.050 --> 00:59:23.490
ja, wofür steht REST eigentlich?

00:59:23.950 --> 00:59:25.330
Ist ein Rahmen, um

00:59:25.330 --> 00:59:27.030
JSON irgendwie zu verstehen?

00:59:27.310 --> 00:59:29.170
Nee, das hat gar nicht unbedingt was mit JSON zu tun.

00:59:29.250 --> 00:59:30.530
Das kann halt auch ein anderes Format sein.

00:59:31.330 --> 00:59:31.790
Das ist

00:59:31.790 --> 00:59:38.290
Representational State Transfer

00:59:38.290 --> 00:59:38.630
natürlich.

00:59:38.630 --> 00:59:39.350
Ja, ja, klar.

00:59:40.390 --> 00:59:42.290
Also man kann auch REST

00:59:42.290 --> 00:59:44.430
Protokoll

00:59:44.430 --> 00:59:46.650
oder eine REST-API haben, wo man

00:59:46.650 --> 00:59:48.250
dann XML zurückbekommt oder halt

00:59:48.250 --> 00:59:49.090
irgendwas anderes.

00:59:49.750 --> 00:59:52.150
Oder so irgendwie

00:59:52.150 --> 00:59:54.950
wie heißt das?

00:59:55.090 --> 00:59:56.490
So eine Art binäres

00:59:56.490 --> 00:59:58.110
JSON-Message-Pack oder

00:59:58.110 --> 01:00:00.590
wie der JSON-Formate.

01:00:01.530 --> 01:00:02.610
JSON wird meistens

01:00:02.610 --> 01:00:04.590
verwendet, aber ist nicht unbedingt nötig.

01:00:04.830 --> 01:00:06.210
Also zum Beispiel, wenn man jetzt

01:00:06.210 --> 01:00:07.390
Django REST-Framework als

01:00:07.390 --> 01:00:09.650
Modul oder

01:00:09.650 --> 01:00:11.690
Third-Party-Django-App verwendet,

01:00:12.190 --> 01:00:14.210
die den REST-API-Teil macht,

01:00:14.350 --> 01:00:16.130
dann kann man hinten an die

01:00:16.130 --> 01:00:17.890
Requests einfach Fragezeichen, Format gleich,

01:00:18.010 --> 01:00:20.070
irgendwas dranhängen, wie zum Beispiel JSON oder XML

01:00:20.070 --> 01:00:21.730
und dann kriegt man halt XML statt JSON zurück.

01:00:24.270 --> 01:00:25.910
Also das ist eigentlich

01:00:25.910 --> 01:00:28.030
unabhängig von dem Format. Das Entscheidende bei REST

01:00:28.030 --> 01:00:30.450
ist eigentlich, dass man die HTTP-Werben

01:00:30.450 --> 01:00:32.110
benutzt, um mit dem

01:00:32.110 --> 01:00:34.050
Server zu kommunizieren. Also dass man,

01:00:34.850 --> 01:00:35.370
wenn man jetzt

01:00:35.370 --> 01:00:37.370
Dinge haben möchte,

01:00:38.050 --> 01:00:39.410
also eine Liste von Sachen haben möchte

01:00:39.410 --> 01:00:41.710
und das auf dem Server an dem

01:00:41.710 --> 01:00:43.630
State des Servers nichts ändert, dann verwenden wir halt

01:00:43.630 --> 01:00:45.410
ein Get-Request. Wenn man

01:00:45.410 --> 01:00:47.390
Requests macht, die an dem State irgendwas verändern,

01:00:47.510 --> 01:00:49.310
dann muss man halt Post oder Put

01:00:49.310 --> 01:00:51.430
oder Patch-Requests verwenden.

01:00:53.190 --> 01:00:53.910
Und wenn man

01:00:53.910 --> 01:00:55.470
irgendwas löschen möchte, dann sendet man halt ein

01:00:55.470 --> 01:00:57.730
Delete-Request. Ja, die meisten Leute

01:00:57.730 --> 01:00:59.570
kennen ja wahrscheinlich nur Get und Post.

01:01:00.090 --> 01:01:01.510
Ja, aber es gibt halt dann noch eine Menge

01:01:01.510 --> 01:01:03.190
andere Dinge. Und

01:01:03.190 --> 01:01:04.830
ja,

01:01:05.210 --> 01:01:09.330
diese Sachen benutzt man im Grunde,

01:01:09.630 --> 01:01:11.590
um halt mit dem Server zu kommunizieren

01:01:11.590 --> 01:01:14.730
und man benutzt halt auch die HTTP-Status-Codes.

01:01:15.070 --> 01:01:18.470
Das heißt, wenn einer nicht authentifiziert ist,

01:01:18.510 --> 01:01:19.470
kriegt man 401 zurück.

01:01:19.610 --> 01:01:21.450
Wenn man nicht autorisiert ist, kriegt man 403 zurück.

01:01:22.510 --> 01:01:24.890
Wenn man eine T-Kanne ist, kriegt man 407 zurück.

01:01:26.610 --> 01:01:30.830
Das gibt, glaube ich, oder 409, 15, ich weiß es nicht genau.

01:01:31.130 --> 01:01:32.010
Das ist halt irgendwie eine Fehlermeldung,

01:01:32.110 --> 01:01:32.790
heißt eine T-Port.

01:01:33.090 --> 01:01:35.050
Es gibt manchmal so...

01:01:35.050 --> 01:01:36.490
Ich kenne nur andere Schöne, nicht nur das Jahr.

01:01:37.610 --> 01:01:38.690
402 kennt mir noch einen, ja.

01:01:39.230 --> 01:01:39.950
Ja, den kenne ich gar nicht.

01:01:40.070 --> 01:01:40.810
Was macht 402?

01:01:41.230 --> 01:01:42.090
Payment Required.

01:01:42.350 --> 01:01:43.470
Ah, ja, genau.

01:01:43.850 --> 01:01:44.910
Also es gibt da diverse...

01:01:44.910 --> 01:01:46.590
Wurde nie benutzt, aber ich habe ein T-Shirt,

01:01:46.630 --> 01:01:47.390
da habe ich mir das draufgeschrieben.

01:01:49.050 --> 01:01:49.810
Das ist eine gute Idee.

01:01:50.630 --> 01:01:55.690
Ja, und das ist im Grunde Rest.

01:01:55.950 --> 01:01:57.110
Das ist auch eine sehr schöne Sache.

01:01:58.090 --> 01:01:59.750
Ein bisschen ein Nachteil bei Rest ist halt,

01:01:59.750 --> 01:02:03.910
dass man manchmal so das Problem kriegt,

01:02:04.010 --> 01:02:05.690
wenn man jetzt so genestete Daten,

01:02:05.890 --> 01:02:07.710
also Datenstrukturen, die so ineinander verschachtelt sind,

01:02:07.790 --> 01:02:08.430
abfragen möchte.

01:02:09.870 --> 01:02:11.390
dass es dann manchmal

01:02:11.390 --> 01:02:13.250
etwas schwierig wird und man oft dann halt mehrere

01:02:13.250 --> 01:02:14.010
Requests braucht.

01:02:16.850 --> 01:02:17.430
Und also wenn man

01:02:17.430 --> 01:02:19.350
jetzt, weil oft

01:02:19.350 --> 01:02:21.210
so diese Resta-APs direkt auf Tabellen

01:02:21.210 --> 01:02:22.730
mappen, die halt irgendwie in der Datenbank sind,

01:02:23.850 --> 01:02:25.270
das macht das Ganze manchmal so ein bisschen

01:02:25.270 --> 01:02:27.310
schwierig und dann kann es dazu führen, dass man halt sehr viele

01:02:27.310 --> 01:02:28.590
Requests rausschicken muss zum Beispiel.

01:02:28.790 --> 01:02:31.290
Da muss man sich immer die Deep Links dann besorgen für den

01:02:31.290 --> 01:02:33.270
neuen Request, damit dann die Tabelle vollständig wird,

01:02:33.270 --> 01:02:35.170
die man selber haben will. Ja, oder man hat halt

01:02:35.170 --> 01:02:37.210
in der Tabelle jetzt nur eine ID, eine

01:02:37.210 --> 01:02:39.070
Referenz auf eine andere Tabelle drinstehen sozusagen.

01:02:39.570 --> 01:02:40.970
Man möchte aber eigentlich die gesamten Daten

01:02:40.970 --> 01:02:42.750
haben, dann muss man sich erst

01:02:42.750 --> 01:02:44.950
alle IDs holen, dann schickt man die IDs wieder zum Server

01:02:44.950 --> 01:02:47.170
und holt die neuen Objekte, was halt ein bisschen doof ist.

01:02:47.710 --> 01:02:48.790
Man kann das auch so machen,

01:02:48.910 --> 01:02:49.430
dass es halt,

01:02:50.930 --> 01:02:53.030
dass man direkt die Daten bekommt, die man haben möchte,

01:02:53.390 --> 01:02:54.390
aber dann muss man auf dem Server

01:02:54.390 --> 01:02:56.670
das halt auch so hinbauen,

01:02:56.670 --> 01:02:57.250
dass das so geht.

01:02:58.730 --> 01:03:00.590
Und vor allen Dingen ist es halt unveränderlich.

01:03:00.690 --> 01:03:02.350
Man kriegt halt immer das gleiche Ergebnis,

01:03:02.790 --> 01:03:04.390
unabhängig davon, ob man jetzt das braucht oder nicht.

01:03:04.650 --> 01:03:06.470
Man kann das jetzt zum Beispiel, wenn man jetzt in den Server

01:03:06.470 --> 01:03:07.990
reinbaut, okay, du kriegst jetzt nicht nur

01:03:07.990 --> 01:03:10.270
irgendwie die Liste der IDs,

01:03:10.510 --> 01:03:11.710
sondern du kriegst halt direkt dann schon

01:03:11.710 --> 01:03:14.410
genestet da drin die Datenstruktur, die du eigentlich

01:03:14.410 --> 01:03:16.490
haben möchtest. Also nehmen wir an, du hättest gerne

01:03:16.490 --> 01:03:17.810
eine Liste der

01:03:17.810 --> 01:03:20.170
der, der von

01:03:20.170 --> 01:03:22.250
aller Alben, die du hast

01:03:22.250 --> 01:03:24.390
und jetzt hast du aber nicht nur

01:03:24.390 --> 01:03:25.950
die Track-IDs da drin, sondern halt auch

01:03:25.950 --> 01:03:28.570
Interpret und Dauer oder sowas.

01:03:28.690 --> 01:03:30.310
Ja, der Vorteil, den das natürlich hat, wenn man die

01:03:30.310 --> 01:03:32.290
nicht direkt alle mitschickt, ist, dass natürlich die Datenmenge,

01:03:32.290 --> 01:03:34.250
die man bekommt, nicht so riesengroß ist. Ja, aber jetzt nehmen wir an,

01:03:34.270 --> 01:03:35.350
du hast einen kleinen zwei

01:03:35.350 --> 01:03:37.170
Ansichten. Eine

01:03:37.170 --> 01:03:39.330
zeigt halt nur, welche Alben es gibt

01:03:39.330 --> 01:03:41.390
und eine zeigt halt auch die Interpreten

01:03:41.390 --> 01:03:43.350
und die Dauer, jetzt nehmen wir an,

01:03:43.830 --> 01:03:44.250
an.

01:03:46.070 --> 01:03:47.570
Jetzt kannst du, da hast du mehrere

01:03:47.570 --> 01:03:49.550
Möglichkeiten, das zu lösen. Du kannst jetzt zwei unterschiedliche

01:03:49.550 --> 01:03:51.670
API-Endpoints, also Endpunkte, anfragen,

01:03:51.950 --> 01:03:53.590
wo du halt einmal das ohne die Tracks kriegst

01:03:53.590 --> 01:03:55.570
und einmal mit. Dann hast du aber das Blöde,

01:03:55.630 --> 01:03:57.390
da hast du zwei Endpunkte. Du musst halt zweimal irgendwie

01:03:57.390 --> 01:03:58.650
den Endpunkt implementieren.

01:03:59.290 --> 01:04:01.310
Du kannst es so machen, du schickst halt immer alle Daten,

01:04:01.430 --> 01:04:03.350
das heißt Alben inklusive Tracks,

01:04:03.870 --> 01:04:05.230
aber dann schickst du einmal zu viel Daten.

01:04:05.350 --> 01:04:07.070
wenn du die Tracks gar nicht anzeigen möchtest.

01:04:08.130 --> 01:04:08.510
Oder

01:04:08.510 --> 01:04:11.390
du schickst halt nur die Liste

01:04:11.390 --> 01:04:13.470
der Alben mit den IDs für die Tracks

01:04:13.470 --> 01:04:15.530
und dann musst du halt einen zweiten Request machen,

01:04:15.790 --> 01:04:17.490
um die Tracks zu bekommen

01:04:17.490 --> 01:04:18.690
oder die Metadaten für die Tracks.

01:04:21.170 --> 01:04:21.650
Und

01:04:21.650 --> 01:04:23.430
dann hast du das Problem, dann überträgst du

01:04:23.430 --> 01:04:25.510
zwar nicht zu viel Daten, aber dann hast du halt

01:04:25.510 --> 01:04:27.210
Latenzen, die sich

01:04:27.210 --> 01:04:29.470
aufaddieren, weil du immer noch mal

01:04:29.470 --> 01:04:30.890
einen Roundtrip hast pro

01:04:30.890 --> 01:04:32.170
Album.

01:04:33.230 --> 01:04:34.990
interpretiert, ja. Du kannst auch vielleicht alle

01:04:34.990 --> 01:04:36.710
Geister, die kriegen oder so, aber du hast auf jeden Fall nochmal einen.

01:04:36.910 --> 01:04:38.930
Und es kann halt dann auch viel komplizierter werden, wenn du jetzt noch

01:04:38.930 --> 01:04:41.050
mehr verschachtelte Geschichten hast. Und GraphQL kann

01:04:41.050 --> 01:04:43.010
das. Und GraphQL löst

01:04:43.010 --> 01:04:44.670
dieses Problem. Ja, tatsächlich

01:04:44.670 --> 01:04:46.650
ziemlich elegant. Und

01:04:46.650 --> 01:04:48.990
da kann man halt sozusagen auf der kleinen

01:04:48.990 --> 01:04:50.790
Seite bestimmen, was man gerne hätte. Man schreibt halt,

01:04:51.270 --> 01:04:53.330
ja, das ist halt der große Unterschied im Grunde.

01:04:53.490 --> 01:04:54.810
Bei normalen Rest

01:04:54.810 --> 01:04:55.710
APIs

01:04:55.710 --> 01:04:58.170
kriegst du halt immer das Gleiche.

01:04:58.850 --> 01:05:01.070
Du kannst halt in den Request nicht reinschreiben, was du gerne

01:05:01.070 --> 01:05:03.010
hättest, sondern du kriegst halt

01:05:03.010 --> 01:05:04.550
das, was der Server vorsieht, was du

01:05:04.550 --> 01:05:06.750
auf diesem Endpunkt halt bekommst an Daten

01:05:06.750 --> 01:05:08.990
und bei GraphQL kannst du in die

01:05:08.990 --> 01:05:10.870
Query reinschreiben, ich hätte gerne diese Spalten

01:05:10.870 --> 01:05:13.070
und ich hätte gerne, das soll jetzt genestet sein

01:05:13.070 --> 01:05:15.270
und dann noch diese Relation mitverfolgen

01:05:15.270 --> 01:05:16.910
und dann da die Spalten aus der

01:05:16.910 --> 01:05:18.830
Tabelle und so. Macht natürlich die Query

01:05:18.830 --> 01:05:21.050
ein bisschen länger und komplexer. Macht die Query komplexer

01:05:21.050 --> 01:05:23.030
und ja, ist natürlich

01:05:23.030 --> 01:05:24.810
auch auf der Serverseite so ein bisschen schwieriger,

01:05:24.850 --> 01:05:26.730
weil man muss so aufpassen, dass man nicht

01:05:26.730 --> 01:05:28.710
sich da so durch die ganze Datenbank hangeln kann,

01:05:28.790 --> 01:05:30.890
wenn man da jetzt irgendwie die ganzen Relationen auflöst.

01:05:33.010 --> 01:05:35.730
Aber es ist halt tatsächlich auch oft sehr praktisch.

01:05:36.650 --> 01:05:40.510
Und ja, was man halt auch, also das ist halt ein, das Projekt hat,

01:05:41.070 --> 01:05:44.110
das Protokoll hat Facebook irgendwann mal, glaube ich, intern entwickelt.

01:05:44.250 --> 01:05:47.250
Und dann sind sie irgendwann, dann haben sie das zum öffentlichen Standard gemacht,

01:05:47.890 --> 01:05:50.630
weil sie halt das Problem haben mit ihrer App, dass sie ganz viele Abfragen machen

01:05:50.630 --> 01:05:55.150
und dann halt die gleichen Daten an unterschiedlichen Stellen brauchen,

01:05:55.250 --> 01:05:56.650
aber dann halt nicht genau die gleichen Daten.

01:05:57.130 --> 01:06:00.150
Und das ist halt alles, irgendwann haben sie gemerkt, so mit dem Rest kommen die hier nicht weiter.

01:06:00.150 --> 01:06:04.770
und haben sich ja was eigenes überlegt, was sozusagen ihre Probleme da adressiert.

01:06:05.810 --> 01:06:07.870
Und ja, GraphQL kann auch andere coole Sachen.

01:06:07.950 --> 01:06:13.670
Da kann man halt solche Sachen machen wie, man kann diverse Statements, Queries zusammenfassen.

01:06:15.530 --> 01:06:20.330
Das heißt, man macht zum Beispiel solche Sachen wie, alle 10 Millisekunden sendet man halt irgendwie eine Querie raus.

01:06:21.410 --> 01:06:25.270
Das heißt, man sendet nicht jedes Mal, wenn eine Querie gestellt wird, im Client irgendwie eine Anfrage raus,

01:06:25.270 --> 01:06:28.270
sondern man sammelt alle Queries, dann packt man die in eine große Querie

01:06:28.270 --> 01:06:31.370
und die man dann rausschickt

01:06:31.370 --> 01:06:33.290
und kriegt dann die Antwort und dann kann man halt dafür sorgen, dass

01:06:33.290 --> 01:06:35.130
zum Beispiel nur

01:06:35.130 --> 01:06:37.170
in bestimmten Intervallen irgendwie Sachen in den Server

01:06:37.170 --> 01:06:39.090
geschickt werden, was halt dann die Anzahl der Requests

01:06:39.090 --> 01:06:41.210
auf dem Server reduziert und so. Also da sind

01:06:41.210 --> 01:06:43.150
einige sehr nette Optimierungen drin

01:06:43.150 --> 01:06:44.050
und

01:06:44.050 --> 01:06:46.410
für Django gibt es

01:06:46.410 --> 01:06:48.750
eine Bibliothek, die nennt sich Graphene,

01:06:49.830 --> 01:06:51.170
die man da verwenden

01:06:51.170 --> 01:06:53.250
kann und das ist tatsächlich

01:06:53.250 --> 01:06:54.270
ziemlich nett

01:06:54.270 --> 01:06:57.090
und dann hat man

01:06:57.090 --> 01:06:58.630
sozusagen GraphQL

01:06:58.630 --> 01:07:00.410
Protokoll-Unterstützung

01:07:00.410 --> 01:07:03.170
auf Django-Seite und

01:07:03.170 --> 01:07:05.370
da gibt es noch ein sehr schönes Frontend,

01:07:05.470 --> 01:07:06.990
das man da auch verwenden kann, das nennt sich

01:07:06.990 --> 01:07:07.490
Graphical.

01:07:10.230 --> 01:07:11.050
Das ist sozusagen

01:07:11.050 --> 01:07:12.930
so ein grafischer Browser für, dann kann man dann halt,

01:07:13.110 --> 01:07:14.330
das macht er auch so

01:07:14.330 --> 01:07:19.010
TabCompletion auf den

01:07:19.010 --> 01:07:19.770
Queries und so

01:07:19.770 --> 01:07:22.890
EQL

01:07:22.890 --> 01:07:24.310
mit Q

01:07:24.310 --> 01:07:26.890
naja, egal, genau.

01:07:27.090 --> 01:07:30.210
es ist halt dieses Frontend.

01:07:32.470 --> 01:07:33.990
Und genau, ich habe eigentlich

01:07:33.990 --> 01:07:36.210
so die letzten Jahre meistens Rest gemacht,

01:07:36.210 --> 01:07:36.490
aber

01:07:36.490 --> 01:07:40.250
und GraphQL mache ich jetzt noch nicht

01:07:40.250 --> 01:07:42.350
so lange, aber ich muss sagen, es ist

01:07:42.350 --> 01:07:44.470
doch sehr, sehr nett. Was teilweise

01:07:44.470 --> 01:07:46.230
so ein bisschen ätzend ist, ja, es macht

01:07:46.230 --> 01:07:48.190
es halt alles komplizierter, es ist halt mächtiger

01:07:48.190 --> 01:07:50.110
oft und das macht es halt auch

01:07:50.110 --> 01:07:51.990
kompliziert, was auch komisch ist,

01:07:52.070 --> 01:07:53.110
für jemanden, der aus dem Rest,

01:07:54.010 --> 01:07:55.950
aus der Restwelt kommt, sozusagen,

01:07:56.170 --> 01:07:58.730
ist auch, dass HTTP-Werben keine große Rolle mehr spielen.

01:07:59.370 --> 01:08:01.910
Das heißt, man schickt immer Posts an den Server

01:08:01.910 --> 01:08:04.570
und man bekommt eigentlich fast immer 200 zurück.

01:08:05.090 --> 01:08:06.810
Und das war am Anfang immer so beim Debuggen.

01:08:06.890 --> 01:08:07.850
Wenn irgendwas nicht funktioniert hat,

01:08:07.950 --> 01:08:10.810
dann gucke ich so in den Network-Tab im Browser

01:08:10.810 --> 01:08:13.990
und dann halt so, kommt 200 vom Server zurück.

01:08:14.050 --> 01:08:15.170
Und ich denke mir, da kommt noch ein 200 zurück.

01:08:15.590 --> 01:08:16.570
Warum ist denn das ein Fehler?

01:08:16.970 --> 01:08:19.770
Dann so, ja, okay, man muss die Antwort erst aufmachen.

01:08:19.770 --> 01:08:22.810
Dann steht da drin so, ja, also hier ist dein 200

01:08:22.810 --> 01:08:24.410
und hier ist der Body deiner Response.

01:08:24.510 --> 01:08:26.290
da steht halt drin, ja, jetzt ist ein Fehler passiert.

01:08:26.510 --> 01:08:28.470
Wenn man aufs Rest kommt, dann rechnet man nicht damit,

01:08:28.570 --> 01:08:29.250
weil da ist halt ein Fehler.

01:08:30.030 --> 01:08:31.430
Das ist halt schon was anderes, das ist halt nicht 200.

01:08:33.190 --> 01:08:34.090
Ja, aber

01:08:34.090 --> 01:08:36.350
wenn man sich dann dran mal so ein bisschen gewöhnt hat,

01:08:36.450 --> 01:08:38.110
dann ist das auch nicht mehr so schlimm.

01:08:39.730 --> 01:08:40.530
Und da gibt es auch

01:08:40.530 --> 01:08:42.910
tolle Debug-Geschichten

01:08:42.910 --> 01:08:44.350
für den Browser, wo man das dann halt auch wieder

01:08:44.350 --> 01:08:45.310
ordentlich sehen kann.

01:08:46.310 --> 01:08:48.270
Da muss man sich allerdings dann als Browser-Extension

01:08:48.270 --> 01:08:50.310
installieren. Also zum Beispiel für, ich verwende

01:08:50.310 --> 01:08:52.270
als Client Apollo, der Apollo-Client.

01:08:53.270 --> 01:08:54.210
Und da gibt es dann so eine

01:08:54.210 --> 01:08:55.690
Extension für Chrome.

01:08:58.350 --> 01:08:58.930
Es gibt

01:08:58.930 --> 01:09:00.410
einen Client von

01:09:00.410 --> 01:09:02.410
Facebook selber, Relay-Client.

01:09:03.430 --> 01:09:03.850
Der ist

01:09:03.850 --> 01:09:06.670
ja, den habe ich nicht ausprobiert.

01:09:07.030 --> 01:09:08.530
Der ist relativ vollständig, soll sehr mächtig

01:09:08.530 --> 01:09:09.890
sein, aber

01:09:09.890 --> 01:09:12.390
es gilt auch als nicht so ganz

01:09:12.390 --> 01:09:14.430
einfach zu bedienen. Und ich fand ehrlich gesagt Apollo

01:09:14.430 --> 01:09:15.470
schon ziemlich schwer zu bedienen.

01:09:15.910 --> 01:09:18.250
Wenn der Jochen das sagt, dann lege ich mir den Finger auf.

01:09:18.410 --> 01:09:20.290
Nein, nein, das Ding ist eigentlich gar nicht

01:09:20.290 --> 01:09:21.510
schlecht. Es kann wirklich coole Sachen, aber

01:09:21.510 --> 01:09:23.330
das ist schon so

01:09:23.330 --> 01:09:26.770
wirklich, also es kann auch daran

01:09:26.770 --> 01:09:28.310
liegen, dass ich halt mit JavaScript noch nicht so richtig

01:09:28.310 --> 01:09:30.530
super viel Erfahrung habe, aber die

01:09:30.530 --> 01:09:31.950
API davon fand ich schon teilweise

01:09:31.950 --> 01:09:34.310
boah, so. Schon wirk.

01:09:34.830 --> 01:09:36.470
Nö, das ist einfach schwierig,

01:09:36.750 --> 01:09:38.810
aber was halt auch damit zusammenhängt, dass es eine komplexe

01:09:38.810 --> 01:09:40.290
Geschichte ist. Also es

01:09:40.290 --> 01:09:42.490
cached halt auch ganz viel intern und

01:09:42.490 --> 01:09:44.570
wenn man jetzt irgendwie zum Beispiel, wenn der User

01:09:44.570 --> 01:09:46.710
irgendwie eine neue

01:09:46.710 --> 01:09:48.830
Entität von irgendwas erzeugt,

01:09:48.830 --> 01:09:50.670
dann muss man ja dafür sorgen, dass der Cache geupdatet wird,

01:09:50.770 --> 01:09:52.490
jetzt kann man einfach dieses Query nochmal ausführen

01:09:52.930 --> 01:09:54.490
Und dann hat man ja Latenz im Frontend,

01:09:54.530 --> 01:09:56.330
das will man auch nicht. Und dann kann man

01:09:56.330 --> 01:09:58.290
quasi dem Cache sagen,

01:09:58.430 --> 01:10:00.490
also hier, ich bin mal

01:10:00.490 --> 01:10:02.110
optimistisch, das ist das Ergebnis,

01:10:02.690 --> 01:10:04.450
was wahrscheinlich demnächst vom Server zurückkommt.

01:10:05.330 --> 01:10:06.490
Ich zeige das dem User doch schon mal an.

01:10:08.290 --> 01:10:08.890
Oder man kann

01:10:08.890 --> 01:10:10.090
den Cache direkt manipulieren

01:10:10.090 --> 01:10:12.570
und dann wird das halt automatisch ersetzt,

01:10:12.570 --> 01:10:14.390
wenn dann die richtige Antwort vom Server kommt

01:10:14.390 --> 01:10:16.530
und so. Aber wenn dann irgendwie

01:10:16.530 --> 01:10:18.550
eine Fehlermeldung passiert, dann muss die ja natürlich auch wieder hochbabbeln.

01:10:19.750 --> 01:10:19.930
Also,

01:10:20.430 --> 01:10:22.210
ja. Nee, ihr müsst die babbeln.

01:10:22.490 --> 01:10:23.250
dem muss ja dann auch

01:10:23.250 --> 01:10:24.210
der User wieder angezeigt werden.

01:10:27.690 --> 01:10:29.290
Das ist alles so ein bisschen...

01:10:29.290 --> 01:10:31.630
Aber nee, es ist schon

01:10:31.630 --> 01:10:33.150
nett. Und ich glaube, wenn ich jetzt

01:10:33.150 --> 01:10:35.150
nochmal die Wahl hätte, wenn ich bei einem neuen

01:10:35.150 --> 01:10:37.350
Projekt, ob ich da jetzt Rest nehme oder

01:10:37.350 --> 01:10:39.290
GraphQL, würde

01:10:39.290 --> 01:10:41.110
ich wahrscheinlich tatsächlich zu GraphQL trainieren.

01:10:41.970 --> 01:10:43.130
Weil das halt doch einige

01:10:43.130 --> 01:10:44.010
sehr nette Vorteile hat.

01:10:45.330 --> 01:10:47.050
Und ja, also

01:10:47.050 --> 01:10:49.250
insofern, das ist

01:10:49.250 --> 01:10:51.170
halt vielleicht ganz

01:10:51.170 --> 01:10:52.570
interessant zu wissen, dass man nicht unbedingt auf

01:10:52.570 --> 01:10:55.150
Node.js-Server umsteigen muss,

01:10:55.190 --> 01:10:57.190
wenn man GraphQL machen will, sondern dass das mit Django

01:10:57.190 --> 01:10:59.110
und Graphene halt auch eigentlich ziemlich gut geht.

01:10:59.430 --> 01:11:00.510
Okay. Ja.

01:11:00.850 --> 01:11:02.030
Werden wir unbedingt in den Show-Notes erwähnen.

01:11:02.630 --> 01:11:04.570
Ich würde sagen, jetzt haben wir ja so ein bisschen das Server-Thema weg.

01:11:04.670 --> 01:11:07.130
Vielleicht kommen wir jetzt noch ein bisschen weiter, wieder in die Python-Welt

01:11:07.130 --> 01:11:08.870
zurück, schlagen uns auf einen Bogen,

01:11:09.190 --> 01:11:10.970
was alles nicht so funktioniert. Wir hatten am Anfang

01:11:10.970 --> 01:11:12.690
erwähnt, Pandas-Requests,

01:11:12.850 --> 01:11:13.670
Respy mit Hass.

01:11:14.750 --> 01:11:15.570
Was ist am nächsten?

01:11:18.470 --> 01:11:18.830
Ja,

01:11:18.950 --> 01:11:20.990
die Pandas-Geschichte ist eigentlich auch ganz

01:11:20.990 --> 01:11:23.070
Das ist ganz interessant.

01:11:23.790 --> 01:11:24.790
Das ist ja eine superpopuläre

01:11:24.790 --> 01:11:26.010
Bibliothek.

01:11:26.550 --> 01:11:27.150
Die kenne nur ich.

01:11:29.350 --> 01:11:31.170
Es ist halt quasi

01:11:31.170 --> 01:11:32.290
so ein bisschen Excel für

01:11:32.290 --> 01:11:35.470
Python, für Programmierer.

01:11:37.790 --> 01:11:39.190
Und ja, ist auch alles

01:11:39.190 --> 01:11:40.690
sehr nett und so, aber

01:11:40.690 --> 01:11:43.630
man stößt

01:11:43.630 --> 01:11:45.170
halt irgendwann auch irgendwie an die Grenzen

01:11:45.170 --> 01:11:46.970
und da hatte ich halt auch schon

01:11:46.970 --> 01:11:48.710
irgendwie Ärger mit.

01:11:49.090 --> 01:11:50.950
ich habe irgendwie, das ist jetzt

01:11:50.950 --> 01:11:52.030
auch schon ein bisschen was her, aber

01:11:52.030 --> 01:11:53.830
viel

01:11:53.830 --> 01:11:56.910
mit Pandas gemacht

01:11:56.910 --> 01:11:58.730
und vor allen Dingen viel mit Pandas und Hadoop

01:11:58.730 --> 01:12:00.590
irgendwie Sachen,

01:12:00.810 --> 01:12:02.550
Datenstrukturen aus Hadoop irgendwie in Pandas

01:12:02.550 --> 01:12:04.730
verwenden wollen und

01:12:04.730 --> 01:12:06.750
ja,

01:12:06.890 --> 01:12:07.230
tatsächlich

01:12:07.230 --> 01:12:10.570
waren da nicht alle Dinge nur

01:12:10.570 --> 01:12:12.150
die Schuld von Hadoop.

01:12:13.890 --> 01:12:15.330
Was man ja denken könnte, ja.

01:12:15.330 --> 01:12:16.610
Ja, was auch, also

01:12:16.610 --> 01:12:19.290
Hadoop ist schon

01:12:19.290 --> 01:12:20.810
auch speziell und

01:12:20.810 --> 01:12:23.630
da gibt es viele Geschichten, die da nicht so gut

01:12:23.630 --> 01:12:25.570
funktionieren, aber eben bei Pandas gibt es

01:12:25.570 --> 01:12:27.370
auch Probleme und

01:12:27.370 --> 01:12:29.570
das ist auch schon ganz

01:12:29.570 --> 01:12:30.770
alt, der

01:12:30.770 --> 01:12:33.410
Gründer des Pandas-Projektes

01:12:33.410 --> 01:12:34.770
Wes McKinney hat irgendwann mal

01:12:34.770 --> 01:12:36.510
einen Vortrag, glaube ich, gehalten

01:12:36.510 --> 01:12:39.690
10 Things I Hate

01:12:39.690 --> 01:12:41.470
About Pandas und das hat er

01:12:41.470 --> 01:12:43.130
jetzt nochmal aktualisiert

01:12:43.130 --> 01:12:46.950
das ist jetzt aber auch schon über ein Jahr her,

01:12:47.150 --> 01:12:48.450
in einem Blogartikel,

01:12:49.190 --> 01:12:51.830
den er, glaube ich,

01:12:51.830 --> 01:12:54.210
betitelt hat mit 10 Things I Hate About Pandas

01:12:54.210 --> 01:12:55.910
und das Apache Arrow

01:12:55.910 --> 01:12:56.290
Projekt,

01:12:57.170 --> 01:12:59.570
was halt so ein bisschen diesem ganzen Kram Abhilfen

01:12:59.570 --> 01:13:00.330
schaffen soll.

01:13:01.730 --> 01:13:05.370
ja, also Pandas kann so diverse

01:13:05.370 --> 01:13:07.390
grundlegende Geschichten nicht. Also wie zum Beispiel

01:13:07.390 --> 01:13:09.410
so ein Problem ist halt, oder

01:13:09.410 --> 01:13:11.050
sagen wir mal so, das ist sogar eher ein Problem

01:13:11.050 --> 01:13:13.330
von NumPy, was unten drunter liegt.

01:13:13.950 --> 01:13:15.350
So Null-Werte

01:13:15.350 --> 01:13:17.410
gehen halt nur wirklich schön mit

01:13:17.410 --> 01:13:17.730
Float.

01:13:19.050 --> 01:13:21.010
Wenn man jetzt Integer-Spalten hat

01:13:21.010 --> 01:13:22.570
und hat dann Null-Werte drin.

01:13:23.110 --> 01:13:23.970
Aber NumPy kann auch Nullen.

01:13:24.390 --> 01:13:26.270
Also fehlende Werte irgendwie.

01:13:27.310 --> 01:13:29.270
Also nicht definierte

01:13:29.270 --> 01:13:31.130
Werte sozusagen. Dann hat man

01:13:31.130 --> 01:13:32.110
ein Problem, wenn man das nicht

01:13:32.110 --> 01:13:35.330
quasi... Das gibt's halt

01:13:35.330 --> 01:13:35.530
nicht.

01:13:37.350 --> 01:13:39.510
Und das ist ja so ein bisschen schlecht, weil es gibt die ja schon.

01:13:41.050 --> 01:13:42.190
Kann man sich überlegen, wie man das irgendwie

01:13:42.190 --> 01:13:44.250
kondiert. Schreibt man da vielleicht minus 1 rein

01:13:44.250 --> 01:13:46.470
oder so. Aber wenn minus 1

01:13:46.470 --> 01:13:48.650
irgendwas bedeutet, dann ist das halt doof unter Umständen.

01:13:48.790 --> 01:13:50.250
Oder man kann sich eine beliebige

01:13:50.250 --> 01:13:52.530
andere Zahl ausdenken, die man dann da reinschreibt.

01:13:53.070 --> 01:13:54.170
Aber man kann halt eben nicht none

01:13:54.170 --> 01:13:55.290
reinschreiben. Das geht halt nicht.

01:13:57.110 --> 01:13:58.110
Aber gibt es da nicht dieses

01:13:58.110 --> 01:13:59.990
none, also dieses, ich meine dieses

01:13:59.990 --> 01:14:02.170
numpy none? Ja, das geht nur bei float.

01:14:02.750 --> 01:14:03.810
Das geht nur bei float? Ja.

01:14:04.030 --> 01:14:05.990
Okay. Und ja,

01:14:06.170 --> 01:14:08.050
das ist halt so ein bisschen doof.

01:14:11.050 --> 01:14:13.330
Ja, dann...

01:14:13.330 --> 01:14:14.030
Das geht nur bei Float?

01:14:14.390 --> 01:14:14.590
Ja.

01:14:17.690 --> 01:14:19.790
Ich muss einfach kurz in das Nampai-Kapitel reinschauen.

01:14:20.470 --> 01:14:22.270
Ich will gerade nämlich so ein Nampai-Buch liegen.

01:14:23.070 --> 01:14:24.770
Ja, aber bitte erzähl weiter, warum das doof ist.

01:14:25.750 --> 01:14:29.990
Ja, also vor allen Dingen, wenn man jetzt zum Beispiel in Hadoop irgendwie Daten hat,

01:14:31.030 --> 01:14:39.310
die das können und wo man halt irgendwie Datenformate hat, die das halt unterstützen,

01:14:39.310 --> 01:14:41.190
und dann hat man halt fehlende

01:14:41.190 --> 01:14:43.230
Werte irgendwie und möchte das jetzt

01:14:43.230 --> 01:14:45.230
in den Dataframe pumpen, dann

01:14:45.230 --> 01:14:47.370
kriegt man halt Probleme, wenn das halt nicht funktioniert.

01:14:48.290 --> 01:14:48.790
Und dann

01:14:48.790 --> 01:14:50.630
ist das halt auch alles so ein bisschen

01:14:50.630 --> 01:14:51.790
schwierig.

01:14:53.330 --> 01:14:54.990
Es gibt halt dieses

01:14:54.990 --> 01:14:57.410
Apache Arrow-Projekt, das ist halt vielleicht auch ganz interessant,

01:14:58.850 --> 01:15:02.310
wo es darum geht, quasi diese

01:15:02.310 --> 01:15:04.310
ein einheitlichen

01:15:04.310 --> 01:15:07.030
Datencontainer zu haben,

01:15:07.030 --> 01:15:09.050
den man halt dann von unterschiedlichen Sprachen aus benutzen kann,

01:15:09.150 --> 01:15:13.870
also auch von R oder von C++ oder halt eben auch von Java aus.

01:15:15.950 --> 01:15:18.110
Und das geht halt mit NumPy so nicht.

01:15:18.590 --> 01:15:23.130
Und ja, also insofern hat man da, wenn man heutzutage Pandas verwendet,

01:15:23.190 --> 01:15:24.210
noch eine ganze Menge Probleme.

01:15:24.610 --> 01:15:25.350
Apache Arrow.

01:15:27.070 --> 01:15:28.770
Arrow ist halt sozusagen das Projekt,

01:15:28.770 --> 01:15:34.650
das diese Geschichten mittelfristig mal so alle irgendwie in den Griff kriegen soll.

01:15:35.710 --> 01:15:37.550
Und damit könnten dann so wirklich coole Sachen gehen,

01:15:37.630 --> 01:15:38.470
du hast halt die Daten

01:15:38.470 --> 01:15:41.430
tatsächlich nur einmal, also das ist auch sowas

01:15:41.430 --> 01:15:42.830
zum Beispiel, was in Pandas eigentlich nicht geht.

01:15:43.290 --> 01:15:44.410
Du kannst halt nicht so

01:15:44.410 --> 01:15:46.290
Daten

01:15:46.290 --> 01:15:49.350
memory mapped in einem DataFrame haben.

01:15:50.290 --> 01:15:51.430
Also nehmen wir an, du hast halt Daten, die sind

01:15:51.430 --> 01:15:52.330
zu groß für deinen Hauptspeicher.

01:15:55.310 --> 01:15:55.630
Jetzt

01:15:55.630 --> 01:15:57.670
möchtest du dir möglicherweise

01:15:57.670 --> 01:15:59.310
teilweise immer nur so in den Hauptspeicher mappen,

01:15:59.410 --> 01:16:00.310
dann darauf irgendwas machen

01:16:00.310 --> 01:16:03.070
und dann irgendwas anderes in den Hauptspeicher mappen.

01:16:04.010 --> 01:16:05.370
Aber du kannst halt nicht ein komplettes

01:16:05.370 --> 01:16:07.510
Pfeil, weil es einfach zu groß ist oder so in den Hauptspeicher lesen

01:16:07.510 --> 01:16:09.170
Wenn mein Hauptreich jetzt nicht groß genug ist,

01:16:09.210 --> 01:16:09.890
dann geht das denn heute.

01:16:10.230 --> 01:16:11.590
Ja, doch, da gibt es das tatsächlich.

01:16:12.730 --> 01:16:13.610
Oder es ist halt so,

01:16:14.850 --> 01:16:19.190
es gibt auch andere Gründe,

01:16:19.370 --> 01:16:20.610
weswegen man das jetzt nicht unbedingt

01:16:20.610 --> 01:16:22.070
in den Hauptspeicher laden möchte.

01:16:23.450 --> 01:16:23.810
Ja.

01:16:23.810 --> 01:16:26.230
Trink noch einen Schluck.

01:16:26.390 --> 01:16:26.750
Oh ja.

01:16:28.970 --> 01:16:31.170
Aber so kann man sich das

01:16:31.170 --> 01:16:32.730
vielleicht ganz gut vorstellen, dass das halt

01:16:32.730 --> 01:16:35.030
ein Problem ist. Und das kann man mit

01:16:35.030 --> 01:16:35.790
Pandas auch nicht machen.

01:16:37.170 --> 01:16:38.490
Und also

01:16:38.490 --> 01:16:40.910
in Zukunft, was so richtig schön wäre,

01:16:41.090 --> 01:16:43.390
ist halt,

01:16:43.870 --> 01:16:44.230
du hast

01:16:44.230 --> 01:16:47.210
jetzt nehmen wir an die Daten,

01:16:47.210 --> 01:16:48.970
die in so einem Hadoop

01:16:48.970 --> 01:16:51.410
Pocket-File

01:16:51.410 --> 01:16:53.410
irgendwie liegen.

01:16:53.810 --> 01:16:54.310
sozusagen

01:16:54.310 --> 01:16:57.790
in einem Container

01:16:57.790 --> 01:16:59.570
drin, den du halt von allen Sprachen aus

01:16:59.570 --> 01:17:01.530
ansprechen kannst. Dann kannst du halt irgendwie mit

01:17:01.530 --> 01:17:03.650
A deine Analysen drüber fahren

01:17:03.650 --> 01:17:05.030
und halt mit

01:17:05.030 --> 01:17:07.170
Python und Pandas,

01:17:07.330 --> 01:17:09.710
beziehungsweise halt irgendwelchen

01:17:09.710 --> 01:17:11.510
Machine Learning Bibliotheken

01:17:11.510 --> 01:17:13.510
kannst du es aber auch

01:17:13.510 --> 01:17:14.730
irgendwie von Java aus

01:17:14.730 --> 01:17:17.410
ansprechen oder so. Und du musst

01:17:17.410 --> 01:17:19.590
dieses Ding nur einmal im Hauptsprecher halten und nicht

01:17:19.590 --> 01:17:20.790
für jede Sprache neu.

01:17:21.270 --> 01:17:23.450
Weil das ist halt das, was man momentan macht. Man liest es halt dann

01:17:23.450 --> 01:17:25.050
Pandas irgendwie in den DataFrame ein,

01:17:25.830 --> 01:17:27.370
transformiert dann auch irgendwelche Geschichten, weil

01:17:27.370 --> 01:17:28.590
halt solche Dinge wie

01:17:28.590 --> 01:17:31.370
None für

01:17:31.370 --> 01:17:33.370
Integer gibt es halt nicht. Und dann machst du

01:17:33.370 --> 01:17:34.810
das halt in jeder Sprache nochmal. Das heißt, du

01:17:34.810 --> 01:17:37.310
hast den Speicheraufwand für jede Sprache,

01:17:37.370 --> 01:17:39.050
die du dann benutzt, weil du das in den Hauptspeicher laden musst.

01:17:39.790 --> 01:17:41.190
Und die Repräsentationen sind dann auch noch

01:17:41.190 --> 01:17:41.990
leicht unterschiedlich,

01:17:42.410 --> 01:17:44.970
weil halt bestimmte Sachen nicht gehen.

01:17:45.530 --> 01:17:47.390
Und dann kommen halt bei Analysen irgendwie unterschiedliche

01:17:47.390 --> 01:17:49.230
Sachen raus und das ist alles schrecklich.

01:17:49.570 --> 01:17:51.450
Und dann sagen Leute sowas wie, ja, halten kann das halt nicht

01:17:51.450 --> 01:17:52.190
oder keine Ahnung.

01:17:53.450 --> 01:17:56.650
R ist halt irgendwie doof

01:17:56.650 --> 01:17:58.490
oder Java hat es wieder verlockt.

01:17:58.830 --> 01:18:00.330
Aber eigentlich, genau,

01:18:00.410 --> 01:18:02.210
wenn man jetzt eine gemeinsame Infrastruktur

01:18:02.210 --> 01:18:04.110
darunter hätte, die sich darum kümmert,

01:18:04.190 --> 01:18:06.230
dann wäre das alles deutlich einfacher.

01:18:07.230 --> 01:18:08.410
Und das soll

01:18:08.410 --> 01:18:09.490
Apache Arrow mal werden.

01:18:09.610 --> 01:18:10.410
Das ist jetzt schon eine ganze Zeit,

01:18:10.470 --> 01:18:14.150
ich habe das halt im Zuge meiner

01:18:14.150 --> 01:18:16.790
Hadoop-Geschichten

01:18:16.790 --> 01:18:17.890
halt auch mal kennengelernt,

01:18:17.890 --> 01:18:19.690
weil ich hatte halt das Problem, also mein Hauptproblem war,

01:18:19.790 --> 01:18:21.930
dass ich Daten nicht schnell aus dem Cluster rausgekriegt habe.

01:18:23.130 --> 01:18:29.030
Und da mit Apache Arrow konnte ich halt diese HDFS-Files halt direkt lesen.

01:18:29.230 --> 01:18:34.090
Und das war, ich weiß nicht, na gut, da musste man auch noch Bibliotheken verwenden, die das dann halt konnten.

01:18:34.090 --> 01:18:40.510
Aber ich kriegte das halt irgendwie in eine Arrow-Datenstruktur und daraus dann wieder in DataFrame.

01:18:40.610 --> 01:18:41.290
Und dann ging es halbwegs.

01:18:43.270 --> 01:18:45.250
Aber da wird aktiv dran entwickelt.

01:18:45.470 --> 01:18:48.990
Ich glaube, das ist auch mittlerweile so Wes McKinney's Hauptprojekt, denke ich mal.

01:18:49.810 --> 01:18:51.890
Und das wird

01:18:51.890 --> 01:18:53.450
eine super interessante Geschichte in der Zukunft.

01:18:54.810 --> 01:18:55.910
Ja, und das soll

01:18:55.910 --> 01:18:57.930
halt sozusagen einige der Hauptschmerzen,

01:18:58.030 --> 01:18:59.450
die man mit Pandas so heutzutage hat,

01:18:59.810 --> 01:19:00.870
irgendwie in den Griff kriegen.

01:19:02.130 --> 01:19:03.710
Ja, das

01:19:03.710 --> 01:19:04.910
ist vielleicht ganz interessant,

01:19:05.530 --> 01:19:06.490
sich das mal anzugucken.

01:19:07.390 --> 01:19:10.290
Okay, Apache Arrow als Lösung für Pandas-Probleme.

01:19:10.910 --> 01:19:11.930
Ja, gehen wir vielleicht zum nächsten

01:19:11.930 --> 01:19:12.150
Punkt.

01:19:13.050 --> 01:19:15.590
Ja, genau, so Web-Parsing.

01:19:15.750 --> 01:19:17.690
Also vielleicht, da sollen wir auch mal irgendwann eine komplette

01:19:17.690 --> 01:19:19.730
Episode zu machen oder so.

01:19:19.730 --> 01:19:23.350
aber es ist ja so ein Problem, was man immer wieder hat,

01:19:23.830 --> 01:19:25.770
dass man irgendwelche Seiten scrappen möchte oder so.

01:19:27.910 --> 01:19:29.190
Wie machst du das so generell?

01:19:29.550 --> 01:19:30.970
Nimmst du eine wundervolle Suppe?

01:19:32.250 --> 01:19:33.030
Beautiful Soup.

01:19:34.250 --> 01:19:37.670
Ja, das kommt auch immer noch mal vor,

01:19:37.750 --> 01:19:38.890
dass man das für irgendwas verwendet.

01:19:40.070 --> 01:19:41.810
Aber nee, meistens benutze ich jetzt tatsächlich

01:19:41.810 --> 01:19:44.310
eine Bibliothek namens Requests.html.

01:19:45.550 --> 01:19:48.670
Das ist von dem gleichen Autor wie auch Requests.

01:19:49.730 --> 01:19:51.610
Also die Standard-Bibliothek.

01:19:51.910 --> 01:19:52.790
Nee, ist nicht Standard.

01:19:53.150 --> 01:19:54.610
Also nein, Request ist die Standard.

01:19:55.130 --> 01:19:56.150
Ja, genau.

01:19:56.970 --> 01:19:57.750
Kenneth Wrights.

01:19:59.370 --> 01:19:59.810
Und

01:19:59.810 --> 01:20:01.990
das

01:20:01.990 --> 01:20:05.510
Ding macht halt

01:20:05.510 --> 01:20:07.250
über Requests

01:20:07.250 --> 01:20:08.650
selbst hinausgehend ein paar Sachen,

01:20:09.510 --> 01:20:11.370
die ganz interessant sind und die man vor allen Dingen

01:20:11.370 --> 01:20:12.590
halt dann braucht, wenn man irgendwie so

01:20:12.590 --> 01:20:13.930
Seiten scrapt.

01:20:14.670 --> 01:20:16.210
Jetzt habe ich das einfach schon ein bisschen leerer gemacht.

01:20:16.210 --> 01:20:17.150
Ja, das war super.

01:20:17.410 --> 01:20:31.250
gesehen. Die Flasche war so dunkel. Zum Wohl. Prost. Toll. Ja, und zwar hat man halt mal so

01:20:31.250 --> 01:20:35.770
Probleme wie, naja, man möchte jetzt irgendwelche Dinge aus dieser Seite, die man irgendwie geladen

01:20:35.770 --> 01:20:43.030
hat, rausselektieren. Man möchte irgendwie, naja, manchmal sind die Seiten dann so ein bisschen

01:20:43.030 --> 01:20:45.950
unterschiedlich oder dann geht das nicht so gut. Mit Beautiful Soup kann man da ein bisschen was

01:20:45.950 --> 01:20:47.650
bauen. Das Problem ist halt,

01:20:49.270 --> 01:20:50.030
dass sobald das nicht mehr

01:20:50.030 --> 01:20:51.850
so die Seiten nicht

01:20:51.850 --> 01:20:53.790
komplett gleich sind, dann wird das mit Beautiful Soup

01:20:53.790 --> 01:20:55.230
auch schon irgendwie so ein bisschen schwierig.

01:20:57.650 --> 01:20:59.750
dann muss man jeweils ein eigenes Skript

01:20:59.750 --> 01:21:01.710
schreiben für jede einzelne Seite. Ja, kann man natürlich machen

01:21:01.710 --> 01:21:03.730
für jede einzelne Seite oder für, machen wir einfach

01:21:03.730 --> 01:21:04.690
Faltunterscheidungen oder so.

01:21:06.310 --> 01:21:07.810
Es gibt eine saukoole Geschichte,

01:21:08.910 --> 01:21:09.610
das ist

01:21:09.610 --> 01:21:10.290
tatsächlich auch ein

01:21:10.290 --> 01:21:13.550
Packmodul, das

01:21:13.550 --> 01:21:15.030
wirklich cool ist, nennt sich Path.

01:21:15.870 --> 01:21:19.750
Und das kann man auch noch für andere Sachen verwenden,

01:21:19.850 --> 01:21:23.530
aber in diesem Web-Scraping-Umfeld kann man es für eine Geschichte verwenden.

01:21:23.850 --> 01:21:25.930
Das hatte ich früher als Idee auch schon immer mal.

01:21:27.190 --> 01:21:29.810
Also wenn man sich vorstellt, wie eine Webseite generiert wird,

01:21:29.810 --> 01:21:38.510
dann hat man ja irgendwie so ein Template und dann eine Datenbank.

01:21:38.750 --> 01:21:41.310
Und dann wird dieses Template ausgefüllt, meistens mit Werten aus der Datenbank.

01:21:43.550 --> 01:21:44.990
Und selbst wenn man jetzt

01:21:44.990 --> 01:21:46.610
Seiten hat, die so ein bisschen unterschiedlich sind,

01:21:46.790 --> 01:21:48.710
dann ist das doch meistens irgendwie dasselbe

01:21:48.710 --> 01:21:49.210
Template.

01:21:51.070 --> 01:21:51.510
Und

01:21:51.510 --> 01:21:54.570
ja, jetzt

01:21:54.570 --> 01:21:55.910
dachte ich früher immer schon so,

01:21:55.910 --> 01:21:57.870
und dann habe ich dann auch gemerkt, das haben Leute

01:21:57.870 --> 01:21:59.730
schon implementiert, Leute haben sich überlegt, okay, wenn ich jetzt mehrere

01:21:59.730 --> 01:22:01.710
Seiten habe, dann kann ich doch vielleicht, kann ich das

01:22:01.710 --> 01:22:03.690
Template daraus extrahieren, kann ich es sozusagen

01:22:03.690 --> 01:22:04.830
im umgekehrten Prozess machen.

01:22:05.610 --> 01:22:07.730
Wenn ich das Template habe, dann möchte ich einfach nur alle

01:22:07.730 --> 01:22:09.670
Werte haben, sozusagen, die aus der Datenbank kommen,

01:22:09.730 --> 01:22:11.030
wenn ich die Datenbank wieder zurückbekomme.

01:22:12.390 --> 01:22:12.670
Und

01:22:12.670 --> 01:22:15.250
da gab es

01:22:15.250 --> 01:22:17.030
einige, da gab es auch auf dem ursprünglichen

01:22:17.030 --> 01:22:18.650
Auto von Django

01:22:18.650 --> 01:22:20.490
irgendwie eine Bibliothek zu,

01:22:21.370 --> 01:22:22.930
die aber schon lange nicht mehr gepflegt wird,

01:22:24.650 --> 01:22:25.350
die sozusagen

01:22:25.350 --> 01:22:26.970
automatisch rausfinden soll, was das Template ist

01:22:26.970 --> 01:22:27.170
und so.

01:22:29.990 --> 01:22:30.770
Und diese

01:22:30.770 --> 01:22:32.890
Path-Bibliothek ist aber jetzt eigentlich, das ist

01:22:32.890 --> 01:22:34.630
sau cool, da schreibt man im Grunde

01:22:34.630 --> 01:22:36.050
sozusagen sein Template irgendwie rein.

01:22:36.770 --> 01:22:38.550
Man kann auch damit relativ leicht rausfinden, wie

01:22:38.550 --> 01:22:39.730
das Template denn eigentlich aussieht.

01:22:40.810 --> 01:22:45.990
Und dann gibt einem das sozusagen die Werte wieder zurück, sozusagen.

01:22:47.770 --> 01:22:52.510
Und das muss man sich mal, also kann man sich mal angucken, wie das genau funktioniert.

01:22:53.290 --> 01:22:59.810
In dem Request.html-Paket gibt es dann so ein Search-Kommando, wo man das dann halt verwenden kann.

01:23:01.890 --> 01:23:09.710
Und das löst dieses Problem zum großen Teil, Sachen aus einer Seite rauszuparsen, irgendwie.

01:23:10.810 --> 01:23:29.130
Ja, und dann kann es halt, das ist ein Teil, man möchte halt irgendwie sozusagen da irgendwelche Werte aus einer Seite rauslesen und eine andere Geschichte, die man halt auch immer wieder hat, ist, wenn jetzt da JavaScript drin steht, dann möchte man eigentlich eine gerenderte Version der Seite sehen.

01:23:29.130 --> 01:23:48.990
Man möchte halt nicht das HTML sehen, weil oft kriegt man dann halt nur so Grundgerüst an HTML, irgendwie einen Haufen JavaScript und JSON-Daten und dann weiß man aber nicht, was man damit irgendwie machen soll, weil man eigentlich die Daten haben möchte, die dann hinterher, wenn der Browser das rennt, in der Tabelle angezeigt werden oder so, weil die Tabelle ist dann nirgendwo mehr.

01:23:50.990 --> 01:23:56.750
Und dafür gibt es bei Requests.html auch so eine relativ schöne Geschichte,

01:23:56.890 --> 01:23:59.550
nämlich, also das ist noch so ein bisschen hakelig manchmal,

01:23:59.870 --> 01:24:02.050
aber da ist so ein Headless-Browser mit drin.

01:24:02.430 --> 01:24:03.710
Also gab es auch früher alles schon.

01:24:03.830 --> 01:24:08.450
Es gibt irgendwie, na, wie heißt das Ding?

01:24:08.850 --> 01:24:12.310
Diese Java Selenium als Interface.

01:24:12.490 --> 01:24:14.870
Es gibt PhantomJS.

01:24:15.110 --> 01:24:16.930
Es gibt ja diverse Geschichten, die man benutzen kann,

01:24:16.930 --> 01:24:19.690
die halt alle so eine leicht andere API haben und so.

01:24:19.830 --> 01:24:20.810
Das ist immer ein bisschen schwierig.

01:24:20.990 --> 01:24:28.990
Chromium hat eine ganz schöne API die man benutzen kann, aber es ist alles irgendwie, naja, nicht so doll.

01:24:28.990 --> 01:24:36.990
Für JavaScript gab es eine Bibliothek namens Puppeteer und dafür gibt es eine Python Adaption namens Pipeeteer

01:24:36.990 --> 01:24:42.990
und das ist eingebaut in Request-HTML und das ist halt alles relativ schön verbastelt, sodass man davon nichts mitkriegt.

01:24:42.990 --> 01:24:46.990
Also was das Ding dann tatsächlich tut, man sagt so, führ doch mal JavaScript auf dieser Seite aus und rendere mir das

01:24:46.990 --> 01:24:48.990
das und man kann halt über eine API sagen,

01:24:50.070 --> 01:24:50.990
gib mir einfach ein Bild

01:24:50.990 --> 01:24:53.010
dieser Seite oder man kann sagen, gib mir

01:24:53.010 --> 01:24:54.830
irgendwie den gerenderten DOM dieser Seite

01:24:54.830 --> 01:24:57.050
oder gib, hier ist ein Stück Schnipsel-JavaScript,

01:24:57.570 --> 01:24:58.790
führe das mal im Kontext dieser Seite

01:24:58.790 --> 01:25:00.230
aus

01:25:00.230 --> 01:25:02.770
und dann, was

01:25:02.770 --> 01:25:04.830
Requests.html macht, ist, es lädt halt ein Chromium

01:25:04.830 --> 01:25:06.770
runter und es bastelt

01:25:06.770 --> 01:25:08.330
das alles so zusammen, dass es irgendwie funktioniert

01:25:08.330 --> 01:25:10.790
und es rendert halt dann

01:25:10.790 --> 01:25:12.650
die Seite und gibt einem das Ergebnis zurück und das Ganze

01:25:12.650 --> 01:25:14.290
sogar mit einer asynchronen

01:25:14.290 --> 01:25:16.110
API, sodass man das halt alles so

01:25:16.110 --> 01:25:18.670
ein SNGIO-Umfeld

01:25:18.670 --> 01:25:19.250
verwenden kann.

01:25:20.190 --> 01:25:22.090
Und man hat mit diesem ganzen Stress, den man

01:25:22.090 --> 01:25:24.150
normalerweise dann so hat, hat man nicht mehr viel zu tun,

01:25:24.270 --> 01:25:25.030
was sehr nett ist.

01:25:26.510 --> 01:25:28.290
Und das funktioniert tatsächlich sehr gut.

01:25:28.690 --> 01:25:30.230
Also früher habe ich, ich habe mich damit

01:25:30.230 --> 01:25:31.650
so oft mit irgendwelchen Kramen

01:25:31.650 --> 01:25:33.050
rumgeschlagen.

01:25:35.150 --> 01:25:35.910
Teilweise muss man dann

01:25:35.910 --> 01:25:38.090
ein Webkit kompilieren und

01:25:38.090 --> 01:25:38.350
dann

01:25:38.350 --> 01:25:42.090
gab es da diverse Geschichten. Es gab noch Splash

01:25:42.090 --> 01:25:44.110
früher mal. Es gibt eine ganze

01:25:44.110 --> 01:25:48.470
die Leute, die auch Scrapey bauen.

01:25:49.050 --> 01:25:52.450
Da gibt es eine Firma dahinter, die haben da diverse Services, die sie anbieten.

01:25:55.590 --> 01:25:57.010
Da kann man auch irgendwie

01:25:57.010 --> 01:26:00.670
Scraper irgendwie erstellen. Ich glaube, ein Tool heißt Porter,

01:26:01.370 --> 01:26:03.570
wo man dann auch sagen kann, was auf einer Seite wo ist und so.

01:26:05.550 --> 01:26:08.730
Die haben auch so einen Proxy namens Splash, wo man dann halt quasi über so einen Proxy

01:26:08.730 --> 01:26:12.570
einen Headless-Browser hat, mit dem man dann irgendwas machen kann. Da kann man dann auch irgendwie

01:26:12.570 --> 01:26:14.430
JavaScript in der Seite injizieren oder irgendwelche Sachen

01:26:14.430 --> 01:26:16.370
rausparsen. Aber das war alles immer

01:26:16.370 --> 01:26:18.650
ziemlich ätzend. Kannst du noch mal ganz kurz

01:26:18.650 --> 01:26:20.630
erklären, was Scrappy denn genau macht im Vergleich?

01:26:20.970 --> 01:26:21.930
Ja, Scrappy ist

01:26:21.930 --> 01:26:24.830
im Grunde so eine

01:26:24.830 --> 01:26:26.430
Komplettlösung mehr oder weniger.

01:26:26.690 --> 01:26:28.450
Da kommt es dann auch noch mehr auf

01:26:28.450 --> 01:26:30.430
den Crawling-Teil im Sinne von

01:26:30.430 --> 01:26:32.510
ich habe hier ganz viele

01:26:32.510 --> 01:26:34.590
URLs, die ich abfragen möchte und dann

01:26:34.590 --> 01:26:35.530
muss man daraus irgendwie

01:26:35.530 --> 01:26:38.050
durchgehen, muss halt irgendwie

01:26:38.050 --> 01:26:40.150
mehrere Prozesse haben, die halt da

01:26:40.150 --> 01:26:42.070
irgendwie

01:26:42.070 --> 01:26:44.290
die die Seiten holen und so, dafür ist das halt

01:26:44.290 --> 01:26:46.290
eher gedacht, halt, dass man

01:26:46.290 --> 01:26:47.890
quasi wirklich eine komplette

01:26:47.890 --> 01:26:50.190
Seite halt irgendwie mal so da drüber

01:26:50.190 --> 01:26:51.930
läuft, über alle Unterseiten, die es da so gibt.

01:26:55.650 --> 01:26:55.970
Ja,

01:26:56.270 --> 01:26:58.190
da ist aber nicht so viel, also wenn es

01:26:58.190 --> 01:27:00.190
darum geht, da Informationen aus einer Seite zu holen, das muss

01:27:00.190 --> 01:27:02.150
man dann alles mehr oder weniger selber schreiben

01:27:02.150 --> 01:27:04.210
und dann, das kann man dann per Beautiful Soup

01:27:04.210 --> 01:27:05.650
tun oder LXML irgendwie,

01:27:06.670 --> 01:27:08.230
also das ist auch sowas bei RequestHTML,

01:27:08.410 --> 01:27:10.230
das ist der Standardweg,

01:27:10.290 --> 01:27:11.870
wie man da Elemente selektiert oder so,

01:27:11.970 --> 01:27:13.590
ist über CSS-Selektoren.

01:27:13.730 --> 01:27:16.170
Das ist auch sehr angenehm, weil das macht man ja im Browser normalerweise auch so.

01:27:16.710 --> 01:27:18.530
Auch im JavaScript-Bereich.

01:27:20.910 --> 01:27:22.130
Ja, und

01:27:22.130 --> 01:27:23.970
Scrapey gibt

01:27:23.970 --> 01:27:25.630
eine ganze Menge Infrastruktur,

01:27:26.330 --> 01:27:28.090
wenn man jetzt so einen Scraper bauen möchte.

01:27:29.470 --> 01:27:29.830
Aber

01:27:29.830 --> 01:27:32.250
vom Inhalt her hilft einem das gar nicht so viel.

01:27:32.310 --> 01:27:33.970
Wenn man jetzt eine konkrete Seite hat und da irgendwelche Sachen

01:27:33.970 --> 01:27:35.070
rausziehen möchte, dann

01:27:35.070 --> 01:27:37.330
hilft einem Scrapey da nicht.

01:27:37.710 --> 01:27:39.430
Wenn man jetzt rausgefunden hat, wie man das tut,

01:27:39.670 --> 01:27:41.870
Möchte das jetzt skalieren auf, keine Ahnung,

01:27:41.950 --> 01:27:43.890
100.000 Seiten und möchte das mit 5 Prozessen

01:27:43.890 --> 01:27:45.610
auf irgendeinem Server irgendwie, dann

01:27:45.610 --> 01:27:47.270
ist Scrappy auch wieder eine sinnvolle Geschichte.

01:27:48.690 --> 01:27:50.030
Ja, und

01:27:50.030 --> 01:27:51.830
es gibt halt irgendwie eine Firma, die ganz eine Menge

01:27:51.830 --> 01:27:53.770
Services um diesen Kram herum baut.

01:27:55.370 --> 01:27:56.090
Ja, habe ich jetzt

01:27:56.090 --> 01:27:57.370
auch wieder vergessen, aber sagen wir mal so.

01:27:58.050 --> 01:27:59.910
Ich habe schon für diverse

01:27:59.910 --> 01:28:01.970
Firmen Sachen gemacht oder auch schon für Firmen

01:28:01.970 --> 01:28:03.810
gearbeitet, die halt auch damit immer wieder Probleme hatten.

01:28:05.830 --> 01:28:06.150
Scrapping

01:28:06.150 --> 01:28:07.930
ist halt so ein Ding, was immer wieder auftaucht, was man

01:28:07.930 --> 01:28:09.510
immer mal wieder machen muss.

01:28:09.670 --> 01:28:17.670
Und request.html ist tatsächlich so die angenehmste Lösung für dieses Problem,

01:28:17.670 --> 01:28:19.670
das mir bisher über den Weg gelaufen ist.

01:28:19.670 --> 01:28:22.670
Deswegen wollte ich das mal erwähnen, dass es das gibt und dass es halt nett ist.

01:28:22.670 --> 01:28:26.670
Und genau, wenn man halt das Problem hat, das Template zu extrahieren,

01:28:26.670 --> 01:28:28.670
aus solchen Seiten Sachen rauszuparsen,

01:28:28.670 --> 01:28:32.670
dann sollte man sich diese Parse- und Search-Funktion in request.html mal angucken,

01:28:32.670 --> 01:28:34.670
weil das ist echt sehr nett.

01:28:34.670 --> 01:28:38.670
Ja, genau, das war es im Grunde schon.

01:28:38.670 --> 01:28:39.730
Ja, dann würde ich sagen,

01:28:39.810 --> 01:28:41.050
kam mir ein Request mit Pass.

01:28:43.050 --> 01:28:43.970
Nächstes Thema war

01:28:43.970 --> 01:28:45.050
der Hass mit dem Raspberry.

01:28:45.430 --> 01:28:47.850
Was ist da passiert? Ist was kaputt gegangen?

01:28:48.590 --> 01:28:49.690
Chaos vor Weihnachten.

01:28:51.350 --> 01:28:53.730
Ja, genau, das ist irgendwie schade.

01:28:54.290 --> 01:28:55.930
Das Grundproblem war

01:28:55.930 --> 01:28:58.010
irgendwie, das habe ich auch schon

01:28:58.010 --> 01:29:00.030
seit über einem Jahr

01:29:00.030 --> 01:29:01.490
habe ich das Problem, dass

01:29:01.490 --> 01:29:03.430
ab und zu das Vectoring auf meinem

01:29:03.430 --> 01:29:04.830
DSL-Anschluss ausfällt.

01:29:05.950 --> 01:29:07.790
Aha, das liegt an dem DSL-Anbieter?

01:29:08.670 --> 01:29:27.090
Ich weiß ehrlich gesagt nicht so genau, woran das liegt, aber ich sehe halt, dass es passiert. Ich habe so eine Fritzbox, da kann man dann sehen, quasi da steht dann irgendwie, G-Vektor ist irgendwie aus oder so, da kann man irgendwie nachgucken, was das bedeutet und dann so, ja, das Vectoring ist aus.

01:29:27.090 --> 01:29:29.130
Kurz für unsere unwissenden Hörer, was ist Vectoring?

01:29:29.590 --> 01:29:31.530
Ach Gott, Vectoring, das ist so ein Kuppel.

01:29:32.110 --> 01:29:33.310
Wir haben ja in Deutschland

01:29:33.310 --> 01:29:34.350
diese

01:29:34.350 --> 01:29:37.470
unvergleichliche Klingeldrahtkupfer

01:29:37.470 --> 01:29:38.250
irgendwie

01:29:38.250 --> 01:29:40.330
Telefoninfrastruktur.

01:29:41.510 --> 01:29:43.050
Vielleicht nicht mehr so ganz zeitgemäß ist,

01:29:43.170 --> 01:29:45.090
aber liebevoll auch ins 21.

01:29:45.270 --> 01:29:46.770
Jahrhundert irgendwie gerettet wurde.

01:29:48.030 --> 01:29:48.990
Weil, ja,

01:29:51.970 --> 01:29:53.010
dass es natürlich für die Telekom

01:29:53.010 --> 01:29:53.890
irgendwie angenehmer ist,

01:29:54.730 --> 01:29:56.810
Gewinn zu machen mit Dingen,

01:29:56.970 --> 01:29:58.930
die der Bund mal investiert hat, mit Geld, das der Bund mal

01:29:58.930 --> 01:30:00.810
investiert hat und dann mit der Endversorgung weiter Geld zu verdienen.

01:30:00.830 --> 01:30:02.450
Eine Kupferleitung und nicht irgendwelche neuen Glasfaser.

01:30:02.690 --> 01:30:04.550
Wenn man da selber was investiert, wäre das nicht so.

01:30:04.730 --> 01:30:06.810
Naja, auf jeden Fall, das Problem ist,

01:30:07.610 --> 01:30:08.830
dass bei Kupfer

01:30:08.830 --> 01:30:10.510
ist halt irgendwie relativ schnell Schluss,

01:30:10.610 --> 01:30:11.850
so mit das aktuelle DSL.

01:30:13.310 --> 01:30:14.930
DSL-Technik zieht da schon so alles,

01:30:15.230 --> 01:30:16.830
was man so an

01:30:16.830 --> 01:30:18.770
Tricks machen kann, um da mehr Daten drüber zu kriegen,

01:30:19.290 --> 01:30:20.210
wird halt gemacht.

01:30:20.650 --> 01:30:22.950
Also alles Kabel, was man da in die Erde verlegt hat,

01:30:22.950 --> 01:30:23.730
ist quasi voll.

01:30:24.150 --> 01:30:25.870
Ja, also da geht einfach nicht mehr drüber.

01:30:26.010 --> 01:30:28.970
Dass man einfach an den physikalischen Grenzen, was man da machen kann.

01:30:30.330 --> 01:30:40.390
Und naja, das Einzige, was dann halt noch blieb, ist sozusagen sich Frequenzen irgendwie mit anderen zu teilen, so ein bisschen.

01:30:40.730 --> 01:30:42.890
Solange die nicht benutzt werden, benutzt man die halt dann mit.

01:30:44.110 --> 01:30:54.210
Was dann aber dazu führt, dass man auf der Seite, wo man einen Anschluss hat, das muss halt alles aus einer Hand kommen.

01:30:54.330 --> 01:30:55.570
Wenn jetzt sozusagen

01:30:55.570 --> 01:30:58.310
man zwei unterschiedliche Provider hat,

01:30:59.470 --> 01:31:00.550
ja, also man hat

01:31:00.550 --> 01:31:02.510
immer, das Telefonkabel

01:31:02.510 --> 01:31:04.450
geht so von dieser TAE-Dose, die man an der Wand

01:31:04.450 --> 01:31:06.850
hat, geht halt zu irgendeinem

01:31:06.850 --> 01:31:08.370
Gerät von dem Provider

01:31:08.370 --> 01:31:10.750
sozusagen in so einem...

01:31:10.750 --> 01:31:12.470
Zum HVT oder zum

01:31:12.470 --> 01:31:14.010
Hausanschluss und dann zum HVT.

01:31:15.150 --> 01:31:16.190
Ich weiß gar nicht, wie man das nennt.

01:31:16.250 --> 01:31:17.830
Das ist halt irgendwie so ein grauer Kasten auf der Straße.

01:31:18.030 --> 01:31:20.130
Wenn die brummen und da Lüfter drin sind,

01:31:20.190 --> 01:31:22.450
dann ist das gut. Dann ist das wahrscheinlich irgendwie so schnelleres DSL,

01:31:22.530 --> 01:31:23.330
als wenn das nicht brummt.

01:31:24.330 --> 01:31:26.590
Da ist irgendwie so eine Art Switch oder weißer Teufel

01:31:26.590 --> 01:31:28.610
irgendwie sowas drin, wo halt

01:31:28.610 --> 01:31:30.730
das Telefon-Dings da ankommt.

01:31:31.470 --> 01:31:31.710
Und

01:31:31.710 --> 01:31:34.390
wenn man jetzt Vectoring macht, dann

01:31:34.390 --> 01:31:35.850
bedeutet das halt sozusagen, wenn

01:31:35.850 --> 01:31:38.470
auf der anderen Leitung sozusagen niemand

01:31:38.470 --> 01:31:40.290
gerade irgendwie Daten überträgt,

01:31:41.110 --> 01:31:41.330
dann

01:31:41.330 --> 01:31:44.530
gehe ich in einen Modus, den ich eigentlich normalerweise

01:31:44.530 --> 01:31:46.410
nicht nehmen darf, weil ich

01:31:46.410 --> 01:31:48.290
ansonsten quasi dem

01:31:48.290 --> 01:31:49.570
in die Daten reinfunke.

01:31:50.030 --> 01:31:51.830
Also wenn beide das machen würden, würde das schief gehen.

01:31:52.430 --> 01:31:53.650
Das heißt, man muss sich irgendwie absprechen.

01:31:53.990 --> 01:31:55.990
ist halt sagen, okay, solange niemand anders irgendwie Daten sendet,

01:31:56.050 --> 01:31:57.650
kann ich das halt machen, dann wird es halt schneller.

01:31:59.270 --> 01:32:03.190
Und ja, so kriege ich dann halt über diese Kupferleitung

01:32:03.190 --> 01:32:04.450
dann doch noch wieder mal ein bisschen mehr rüber.

01:32:05.490 --> 01:32:07.310
Das Problem ist halt dann aber,

01:32:07.310 --> 01:32:10.770
dass quasi ich nicht mehr sozusagen ein Endgerät

01:32:10.770 --> 01:32:14.970
von unterschiedlichen Providern haben kann,

01:32:15.050 --> 01:32:16.670
sondern da das ja koordiniert werden muss,

01:32:16.790 --> 01:32:18.410
dass ich das sozusagen nur machen kann,

01:32:18.770 --> 01:32:21.710
wenn ich alle Leitungen unter einer Kontrolle habe,

01:32:22.250 --> 01:32:25.230
Bedeutet, die Hardware muss aus einer Hand kommen

01:32:25.230 --> 01:32:26.690
und es muss eine Stelle geben, die das kontrolliert.

01:32:27.070 --> 01:32:28.390
Das ist üblicherweise die Telekom.

01:32:29.730 --> 01:32:32.310
Und das heißt, ich habe meinen Vertrag bei O2,

01:32:32.590 --> 01:32:36.910
aber mein Anschluss läuft über die Telekom-Hardware,

01:32:37.450 --> 01:32:39.050
weil sich das ja mit allen anderen Anschlüssen

01:32:39.050 --> 01:32:40.090
irgendwie koordinieren muss jetzt.

01:32:42.090 --> 01:32:44.010
Ja, alles ein bisschen furchtbar.

01:32:44.570 --> 01:32:45.510
Ich meine, es stört mich auch nicht weiter.

01:32:45.610 --> 01:32:46.630
Es funktioniert halt irgendwie.

01:32:46.750 --> 01:32:47.550
Es ist auch tatsächlich schneller.

01:32:47.690 --> 01:32:48.410
Insofern ist alles gut.

01:32:48.410 --> 01:32:50.330
Aber bei mir war es halt so,

01:32:50.390 --> 01:32:52.370
das fiel halt so alle paar Wochen aus

01:32:52.370 --> 01:32:54.230
und war dann halt weg und fiel dann halt nicht

01:32:54.230 --> 01:32:56.150
zurück auf VDSL, was so

01:32:56.150 --> 01:32:57.870
50 MBit down, 10 MBit up ist,

01:32:58.210 --> 01:33:00.330
sondern auf 16 MBit

01:33:00.330 --> 01:33:02.330
oder 14 MBit down

01:33:02.330 --> 01:33:03.950
und 768 KBit up.

01:33:04.110 --> 01:33:05.710
Also auf 2002 oder so.

01:33:06.230 --> 01:33:08.170
Ja, was für mich jetzt echt blöd ist,

01:33:08.270 --> 01:33:10.210
weil ich das ja, das brauche

01:33:10.210 --> 01:33:12.150
ja, ich brauche ja die

01:33:12.150 --> 01:33:13.570
Bits, ich brauche ja die Bandbreite.

01:33:14.550 --> 01:33:16.170
Precious Bandbreite brauche ich doch

01:33:16.170 --> 01:33:18.230
eigentlich. Ich mache da ja auch Backups

01:33:18.230 --> 01:33:20.130
drüber und so. Ja, Liter, Liter, ja.

01:33:20.390 --> 01:33:21.710
Nee, nee, das ist alles

01:33:21.710 --> 01:33:24.050
seriöse

01:33:24.050 --> 01:33:26.010
Datenverarbeitung.

01:33:27.430 --> 01:33:27.810
Und

01:33:27.810 --> 01:33:29.830
ja,

01:33:30.130 --> 01:33:31.830
das ist für mich total nervig. Und dann rufe ich

01:33:31.830 --> 01:33:33.730
dann halt immer an und wenn die sagen, okay,

01:33:33.810 --> 01:33:35.630
sie haben ein Ticket aufgemacht bei der Telekom,

01:33:35.730 --> 01:33:37.630
dann geht da irgendwie so ein Diagnoserequest raus,

01:33:38.990 --> 01:33:39.770
der halt

01:33:39.770 --> 01:33:41.390
meinen Port irgendwie da resetet.

01:33:42.250 --> 01:33:42.810
Und dann geht's wieder.

01:33:43.590 --> 01:33:45.230
Kannst du nicht automatisieren, diesen Port?

01:33:45.250 --> 01:33:47.650
Genau, das habe ich mir auch schon überlegt, ob man das nicht irgendwie automatisieren kann.

01:33:48.410 --> 01:33:49.750
Manchmal ist es voll gut, dann rufe ich

01:33:49.750 --> 01:33:51.090
da an und fünf Minuten später geht wieder alles.

01:33:51.950 --> 01:33:53.530
Und manchmal machen sie irgendwie dieses Ticket nicht

01:33:53.530 --> 01:33:55.530
oder sagen nur, dass sie es tun, tun es aber nicht

01:33:55.530 --> 01:33:57.730
oder weiß ich nicht. Und dann kann es

01:33:57.730 --> 01:33:59.370
auch mal sein, dass ich eine Woche schlechtes Internet habe.

01:33:59.490 --> 01:34:00.290
Und das ist halt echt kacke.

01:34:01.810 --> 01:34:03.630
Aber das ist halt durch so viele

01:34:03.630 --> 01:34:05.090
Iterationen gelaufen mittlerweile, dass

01:34:05.090 --> 01:34:07.690
ich hatte da auch schon irgendwie zwei Stunden lang Gespräch

01:34:07.690 --> 01:34:09.570
mit irgendwie einem Techniker, die konnten

01:34:09.570 --> 01:34:11.830
das dann auch ausmessen, irgendwie meine lokalen

01:34:11.830 --> 01:34:13.410
Leitungen, wie das denn mit denen aussieht.

01:34:14.830 --> 01:34:15.750
Haben rausgefunden

01:34:15.750 --> 01:34:17.630
irgendwo, dass ich eine Reflektion in irgendeinem

01:34:17.630 --> 01:34:19.490
Kabel bei mir habe. Dann habe ich das Kabel

01:34:19.490 --> 01:34:21.610
ausgetauscht. Satt-TV, Satt-TV,

01:34:21.730 --> 01:34:23.550
ich sag's dir, irgendjemand, der rennt da über dir,

01:34:23.610 --> 01:34:25.450
der guckt Satt-TV gerne und die

01:34:25.450 --> 01:34:26.630
strahlen in dein Vectoring oder so.

01:34:26.950 --> 01:34:29.390
Ich weiß es nicht, auf jeden Fall, das fand ich schon beeindruckend,

01:34:29.470 --> 01:34:30.490
da hat sich jemand auch wirklich Zeit genommen,

01:34:30.610 --> 01:34:33.530
das hat leider das Problem nicht gelöst,

01:34:33.610 --> 01:34:35.670
das Vectoring ist noch später wieder ausgefallen.

01:34:36.970 --> 01:34:37.530
Und inzwischen

01:34:37.530 --> 01:34:39.310
ist es soweit, es war auch ein Telekom-Techniker da

01:34:39.310 --> 01:34:41.430
und das war auch alle sehr nett und der war

01:34:41.430 --> 01:34:43.030
dann auch im Keller, hat sich das alles mal angeguckt

01:34:43.030 --> 01:34:44.850
und dann bei uns in der Wohnung auch und so

01:34:44.850 --> 01:34:46.410
und

01:34:46.410 --> 01:34:48.930
ja, der meinte dann so,

01:34:49.050 --> 01:34:50.830
ja, ich weiß nicht, es geht irgendwie nicht so richtig gut

01:34:50.830 --> 01:34:52.770
oder manchmal passiert halt, geht's halt schief.

01:34:53.570 --> 01:34:54.870
Weißt du, wie die bei kurzer Exkurs,

01:34:54.910 --> 01:34:56.310
wie die bei mir den Upload gefixt haben?

01:34:57.090 --> 01:34:58.930
Die haben in der Tiefgarage an dem Kabel

01:34:58.930 --> 01:35:00.570
einen Limiter entdeckt, den sie wieder ausbauen mussten.

01:35:00.930 --> 01:35:01.470
Oh Gott.

01:35:02.750 --> 01:35:04.590
Nein, toll, da können die eine stundenlange Geschichte erzählen

01:35:04.590 --> 01:35:05.810
über Kabel und Netze und ja.

01:35:06.350 --> 01:35:08.330
Ja, das wäre vielleicht auch mal, genau.

01:35:08.590 --> 01:35:09.210
Ja, warum eigentlich nicht?

01:35:09.950 --> 01:35:12.670
Und, naja, jedenfalls

01:35:12.670 --> 01:35:14.670
hieß es dann, okay, wir haben sie einfach mal

01:35:14.670 --> 01:35:15.270
so auf ein anderes

01:35:15.270 --> 01:35:18.470
Kabelpaar umgeswitcht. Mal gucken,

01:35:18.630 --> 01:35:20.390
Und wenn es dann geht, dann ist ja gut.

01:35:21.850 --> 01:35:23.590
Aber im Verlauf dieser ganzen Prozedur

01:35:23.590 --> 01:35:25.190
musste ich halt alle meine Geräte irgendwie ausstecken

01:35:25.190 --> 01:35:27.610
und alles neu starten und irgendwie diverse Dinge.

01:35:29.110 --> 01:35:32.250
Wir sind jetzt übrigens vom Raspberry Pi auf Vectoring gekommen.

01:35:32.270 --> 01:35:33.210
Ach so, Mist. Ja, richtig.

01:35:33.210 --> 01:35:38.950
Ja, aber das Problem dabei ist halt,

01:35:39.050 --> 01:35:41.870
dass sich bei dieser Aktion halt der Raspberry Pi rebooted hat.

01:35:42.890 --> 01:35:45.310
Und ich hinterher festgestellt habe,

01:35:45.390 --> 01:35:46.450
nachdem das Ding wieder hochgefahren ist,

01:35:47.330 --> 01:35:48.650
dass ich mich nicht mehr drauf einloggen konnte.

01:35:49.510 --> 01:35:51.230
Ja, mein Passwort war ja gestern.

01:35:51.310 --> 01:35:53.190
Nein, nein, ja, das kann ich

01:35:53.190 --> 01:35:54.710
alles, aber ich kann halt nicht mehr,

01:35:54.810 --> 01:35:56.570
der SH-Demon ist da irgendwie nicht hochgefahren,

01:35:56.690 --> 01:35:58.570
ich kann das Ding noch anpingen, aber ich komme nicht mehr drauf.

01:35:59.610 --> 01:36:01.130
Blöd. Und dann habe ich halt

01:36:01.130 --> 01:36:02.830
irgendwie gemerkt, so, verdammt,

01:36:02.910 --> 01:36:04.830
ich habe auch keinen Monitor mehr, den ich da anschließen kann.

01:36:05.550 --> 01:36:06.450
Weil die habe ich inzwischen alle

01:36:06.450 --> 01:36:07.650
verschenkt oder

01:36:07.650 --> 01:36:10.190
irgendwie verschrottet.

01:36:10.910 --> 01:36:12.190
Bring den mal mit, dann können wir dich nicht mehr anschließen.

01:36:12.330 --> 01:36:14.190
Naja, das können wir mal probieren.

01:36:14.890 --> 01:36:16.810
Und jetzt weiß ich nicht so richtig, wie ich das Ding wieder

01:36:16.810 --> 01:36:17.410
ins Laufen kriege.

01:36:18.590 --> 01:36:19.910
Ich habe da noch diverse...

01:36:19.910 --> 01:36:22.010
Mein Freifunkruder hat es auch erwischt.

01:36:23.150 --> 01:36:24.650
Seit dieser Aktion läuft der

01:36:24.650 --> 01:36:25.350
irgendwie nicht mehr richtig.

01:36:26.350 --> 01:36:27.990
Überhaupt. Also in diesem Schrank, in dem man ganze

01:36:27.990 --> 01:36:30.290
Elektronik-Bastelkram sich befindet,

01:36:30.530 --> 01:36:31.970
ist der Wurm drin.

01:36:32.110 --> 01:36:33.410
Das Weihnachtschaos ist ausgebrochen.

01:36:34.210 --> 01:36:36.550
Das ist halt echt blöd.

01:36:36.710 --> 01:36:38.310
Jetzt habe ich keine Temperaturdaten mehr.

01:36:38.790 --> 01:36:40.590
Meine Heimatomatisierung

01:36:40.590 --> 01:36:43.130
funktioniert nur noch so rudimentär.

01:36:43.790 --> 01:36:45.230
Das lief ja alles über Home Assistant.

01:36:46.590 --> 01:36:48.210
Aber du kannst jetzt schon noch die...

01:36:48.210 --> 01:36:49.350
Ich kann schon Lichter ein- und auswählen.

01:36:49.370 --> 01:36:51.150
Wasser, Licht, Suche, funktioniert noch?

01:36:51.370 --> 01:36:51.570
Ja.

01:36:51.950 --> 01:36:52.170
Okay.

01:36:52.650 --> 01:36:56.690
Ja, aber ich muss dafür diese Philips U-App benutzen.

01:36:56.830 --> 01:36:57.070
Oh.

01:36:57.290 --> 01:36:57.930
Wie so ein Tier.

01:37:00.010 --> 01:37:01.570
Du kommst auch noch in deine Wohnung rein zum Beispiel.

01:37:01.570 --> 01:37:02.990
Ja, das geht alles, ja.

01:37:03.710 --> 01:37:04.970
Ja, aber man weiß ja immer nicht genau,

01:37:05.090 --> 01:37:06.330
also wo das dann immer gesteuert wird,

01:37:06.370 --> 01:37:08.290
wenn das dann so einem Gerät zentral...

01:37:08.290 --> 01:37:08.790
Ja.

01:37:09.850 --> 01:37:12.230
Ja, Raumautomatisierung mit Raspberry Pi ist ausgefallen,

01:37:12.230 --> 01:37:14.190
weil tatsächlich dein Vectoring nicht funktionierte

01:37:14.190 --> 01:37:15.490
und deswegen die Geräte neu gestartet wurden

01:37:15.490 --> 01:37:17.770
und du nicht mehr PSS haken kannst, weil

01:37:17.770 --> 01:37:19.850
du kein Monitor mehr hast und so nicht mehr auf das

01:37:19.850 --> 01:37:21.970
System zugreifst. Ja. Okay, ja.

01:37:22.290 --> 01:37:23.830
Ja. Schlimm, ne? Ja,

01:37:23.910 --> 01:37:24.970
katastrophal. Ja.

01:37:25.770 --> 01:37:27.770
Also ein kleines Externs-Display, ja, mal

01:37:27.770 --> 01:37:29.730
mitbringen oder so. Ja, also ich kriege dieses

01:37:29.730 --> 01:37:31.850
Problem wahrscheinlich schon irgendwie in den Griff. Ich muss halt bloß...

01:37:31.850 --> 01:37:33.750
Also halt irgendwie so... Wie viel Zeit der Jochen für seine

01:37:33.750 --> 01:37:35.630
Home-Automatisierung hat, wenn er seit einem Jahr sich nicht mehr darum

01:37:35.630 --> 01:37:37.410
gekümmert hat, dass der Wespi bootet. Ja.

01:37:37.410 --> 01:37:38.230
Das hat ja funktioniert. Ja.

01:37:39.310 --> 01:37:41.270
Ja, und dann ist auch nochmal der

01:37:41.270 --> 01:37:43.310
Verstärker, das ist auch so in der Ecke,

01:37:43.450 --> 01:37:45.510
der ist super laut, der lüftet

01:37:45.510 --> 01:37:47.390
immer so rum und zwar nicht ein bisschen, sondern der ist

01:37:47.390 --> 01:37:49.430
so richtig fies laut, da muss ich mir auch noch irgendwas einfallen

01:37:49.430 --> 01:37:51.450
lassen. Vielleicht kann ich das

01:37:51.450 --> 01:37:51.770
ja auch

01:37:51.770 --> 01:37:53.730
mit dieser ganzen

01:37:53.730 --> 01:37:56.990
Automatisierungsgeschichte so ein bisschen

01:37:56.990 --> 01:37:58.530
mehr

01:37:58.530 --> 01:38:01.510
besser

01:38:01.510 --> 01:38:03.330
Ich weiß noch nicht genau,

01:38:03.910 --> 01:38:04.370
wie man das

01:38:04.370 --> 01:38:07.610
Da gibt es ja dann halt einige Optionen,

01:38:07.610 --> 01:38:09.130
die man irgendwie nehmen könnte. Ich könnte zum Beispiel

01:38:09.130 --> 01:38:13.770
mehrere Raspberry-Piles

01:38:13.770 --> 01:38:15.870
nehmen und da irgendwie Boxen dran hängen.

01:38:16.290 --> 01:38:17.590
Weil ich hätte ja zum Beispiel auch sowas gerne,

01:38:17.810 --> 01:38:19.810
wie, dass die Musik in unterschiedlichen Räumen

01:38:19.810 --> 01:38:21.570
irgendwie

01:38:21.570 --> 01:38:23.190
die gleiche Musik

01:38:23.190 --> 01:38:24.830
abgespielt werden könnte zum Beispiel.

01:38:26.230 --> 01:38:27.530
Theoretisch jetzt auch könnte,

01:38:27.710 --> 01:38:29.850
aber einmal brummt der Verstärker so, dass ich ihn nicht mehr benutze.

01:38:30.670 --> 01:38:31.530
Und dann müsste ich halt Kabel

01:38:31.530 --> 01:38:33.170
durch die ganze Wohnung ziehen, was ich eigentlich auch nicht will.

01:38:34.550 --> 01:38:35.810
Und ich glaube, das kann man

01:38:35.810 --> 01:38:37.290
mit Raspberry-Piles auch hinkriegen.

01:38:37.510 --> 01:38:38.870
Oder man nimmt halt irgendwie eine kommerzielle Lösung,

01:38:38.970 --> 01:38:40.970
man könnte auch diese Apple HomePods oder so

01:38:40.970 --> 01:38:41.690
verwenden, aber

01:38:41.690 --> 01:38:44.710
das ist schon ein bisschen teuer,

01:38:44.930 --> 01:38:46.710
dass man das irgendwie in jeden Raum stellen kann.

01:38:46.950 --> 01:38:48.810
Du hast, glaube ich, das Protokoll umgestellt,

01:38:48.890 --> 01:38:50.310
also nicht per Bluetooth, sondern per

01:38:50.310 --> 01:38:52.890
Funk. Und zwar

01:38:52.890 --> 01:38:54.870
hast du die alten terrestrischen Frequenzen genommen,

01:38:54.970 --> 01:38:56.090
die man jetzt abgeschaltet hat.

01:38:56.890 --> 01:38:58.370
Das war das für die

01:38:58.370 --> 01:38:59.670
Temperatursensoren, ja.

01:39:00.690 --> 01:39:02.830
Aber so für Audio würde ich halt wahrscheinlich ganz normal

01:39:02.830 --> 01:39:03.770
das WLAN nehmen, nur

01:39:03.770 --> 01:39:05.070
ja,

01:39:06.290 --> 01:39:08.230
das könnte man

01:39:08.230 --> 01:39:09.910
wahrscheinlich auch irgendwie so ein Python-Projekt draus machen.

01:39:10.270 --> 01:39:11.970
Also die Frage ist, gibt es Boxen, die das können,

01:39:12.050 --> 01:39:12.670
WLAN vernünftig?

01:39:13.970 --> 01:39:15.830
Nee, nicht so richtig.

01:39:15.990 --> 01:39:18.110
Außer diese Fertiggeschichten von Apple

01:39:18.110 --> 01:39:18.710
oder

01:39:18.710 --> 01:39:22.430
es gibt halt noch so eine Spezial-Propietär-Lösung

01:39:22.430 --> 01:39:24.230
von Sonos. Waren die nicht mal pleite?

01:39:24.810 --> 01:39:26.410
Sonos? Nö, ich glaube, denen geht es ganz gut.

01:39:26.950 --> 01:39:27.670
Dann habe ich mich verguckt.

01:39:28.250 --> 01:39:30.050
Aber ja, also

01:39:30.050 --> 01:39:32.050
man hat da auch so einen blöden Login-Effekt

01:39:32.050 --> 01:39:32.550
bei Sonos.

01:39:33.890 --> 01:39:34.870
Ein Login?

01:39:35.410 --> 01:39:37.110
Ach, du bist wieder auf das System gebunden.

01:39:37.370 --> 01:39:37.790
Ja, genau.

01:39:42.010 --> 01:39:43.290
Nö, die gibt's noch.

01:39:43.830 --> 01:39:44.370
Die gibt's noch.

01:39:48.630 --> 01:39:49.070
Oh.

01:39:49.890 --> 01:39:50.230
Na?

01:39:50.470 --> 01:39:51.630
Das 14.09., okay.

01:39:53.670 --> 01:39:53.990
Naja.

01:39:55.990 --> 01:39:56.710
Naja, gut.

01:39:56.870 --> 01:39:58.010
Ein bisschen eingebrochen.

01:39:59.670 --> 01:40:00.110
Ja.

01:40:01.010 --> 01:40:02.990
Aber im Grunde könnte man da auch mal

01:40:02.990 --> 01:40:04.990
so ein bisschen was, weil man kann ja

01:40:04.990 --> 01:40:09.390
von dem Raspberry Pi auch irgendwie den könnte man sozusagen als Endpunkt

01:40:09.490 --> 01:40:13.590
für WLAN verwenden und dann halt das Audio über ganz normalen Verstärker

01:40:13.690 --> 01:40:19.290
und dann eine Box oder halt eine Aktivbox wiedergeben. Ja, das wäre halt noch

01:40:19.390 --> 01:40:21.290
so eine Idee. Ich muss da, ich muss noch mal irgendwas machen. Ich muss auch

01:40:21.390 --> 01:40:23.790
diesen Verstärker loswerden. Ja, wir müssen mal so ein Display für dich

01:40:23.890 --> 01:40:26.190
organisieren, dann irgendwie mal Monitor hinschleppen und das kriegen wir jetzt

01:40:26.290 --> 01:40:32.090
alles schon wieder zum Laufen. Ja, ja, ja. Heute haben wir gar nicht so viel

01:40:32.190 --> 01:40:34.310
über Python geredet tatsächlich, so ein kleines bisschen

01:40:34.310 --> 01:40:35.970
Exkurs mäßig, was man mit Pandas macht.

01:40:36.290 --> 01:40:38.210
Sehr viel über Web, sehr viel Chaos. Ich hoffe, ihr seht uns

01:40:38.210 --> 01:40:40.050
das heute nach, obwohl wir der Python-Podcast sind.

01:40:41.210 --> 01:40:42.170
Wenn ihr keine Lust habt, dann hört

01:40:42.170 --> 01:40:43.930
einfach nicht zu. Ja, ich glaube, das ist ja zu spät.

01:40:44.070 --> 01:40:45.070
Wir sind ja schon am Ende der Sendung.

01:40:46.670 --> 01:40:48.010
Ja, schreibt uns doch, was ihr

01:40:48.010 --> 01:40:49.970
davon gehalten habt, ob ihr mehr von solchen Folgen

01:40:49.970 --> 01:40:51.830
auch haben möchtet, also ob ihr viel mehr über Python

01:40:51.830 --> 01:40:53.530
milchen möchtet, wie immer an

01:40:53.530 --> 01:40:54.550
Python-Podcast.de.

01:40:56.290 --> 01:40:58.010
Ich hoffe, ihr hattet Spaß auch mit Pandas,

01:40:58.010 --> 01:40:59.350
mit Request.html, mit dem

01:40:59.350 --> 01:41:02.090
kleinen Einflug über den Recipe und mit ganz viel

01:41:02.090 --> 01:41:04.090
Browser und Rust und

01:41:04.090 --> 01:41:06.070
Safari ByteRange

01:41:06.070 --> 01:41:08.130
Radar und was

01:41:08.130 --> 01:41:08.990
man alles so machen kann.

01:41:09.970 --> 01:41:11.750
Wie man Manface Cloud auch von der CeBIT.

01:41:12.370 --> 01:41:12.550
Ja.

01:41:14.090 --> 01:41:16.050
Ja, GrafQL mit Django haben wir noch, glaube ich,

01:41:16.050 --> 01:41:17.410
erwähnt heute. Ja.

01:41:17.770 --> 01:41:20.210
Wir würden uns freuen, wenn ihr das nächste Mal auf jeden Fall wieder zuhört.

01:41:20.970 --> 01:41:22.270
Genau. Und dann, denke ich,

01:41:22.310 --> 01:41:24.050
melden wir uns wieder im nächsten

01:41:24.050 --> 01:41:26.130
Jahr und mit der nächsten

01:41:26.130 --> 01:41:27.810
Folge. In die Weihnachtspause, wobei

01:41:27.810 --> 01:41:29.930
jetzt ja eigentlich zum Hören gar nicht Pause ist, sondern

01:41:29.930 --> 01:41:32.030
nur vom... Ja, vielleicht

01:41:32.030 --> 01:41:33.850
Der ist ja auch erst zwischen den Jahren.

01:41:35.190 --> 01:41:36.450
Dafür ist die Folge eigentlich auch gedacht.

01:41:36.790 --> 01:41:37.770
Na, genau.

01:41:37.990 --> 01:41:38.750
Was zu hören hat auch.

01:41:39.910 --> 01:41:42.230
Ja, uns hat es wieder Spaß gemacht.

01:41:42.350 --> 01:41:42.850
Ich hoffe, euch auch.

01:41:43.430 --> 01:41:44.550
Und dann bis zum nächsten Mal.

01:41:44.970 --> 01:41:45.790
Bis zum nächsten Mal.

01:41:45.910 --> 01:41:48.330
Kommt gut rein, kommt gut raus, kommt gut wo auch immer hin,

01:41:48.350 --> 01:41:48.630
ihr wollt.

01:41:49.630 --> 01:41:49.950
Tschüss.

01:41:50.190 --> 01:41:50.510
Tschüss.
