Transcript: PP03 - Weihnachtsfolge

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, diesmal in der Weihnachtsepisode.

Ja, was machen wir hier eigentlich? Wir sind diesmal bei Dominik unterm Dach.

Ja, ich bin der Dominik und dabei ist natürlich wieder Jochen. Hallo Jochen.

Ja, hallo, ich bin Jochen, genau. Und ja, das ist irgendwie eine sehr schöne, das sieht ein bisschen aus wie eine Raumschiffzentrale, ehrlich gesagt.

Das sind eine ganze Menge Monitore und Elektronikdinge. Ich bin da ein wenig neidisch, muss ich sagen.

Ja, das hört sich super an. Also ich bin auch immer neidisch auf deinen schönen Wintergarten, aber probieren wir es mal hier aus.

Mal gucken, wie der Ton ist und wie unsere Hörer den finden.

Ja, das wird auch interessant. Das ist einfach jetzt ein anderes System, mit dem wir das aufnehmen.

Und genau, wir nehmen wieder auf mit den beiden drahtlosen Mikrofonen.

Letztes Mal hatte ich halt irgendwie so ein Beyerdynamics-Headset verwendet.

Das war eigentlich ziemlich cool und das war auch vor allen Dingen schön, dass ich dann hören konnte, dass alles immer noch funktioniert und nicht irgendwie der Audio-Stream plötzlich weg ist.

Ja, aber es ist auch so ein bisschen, es isoliert einen.

Du meinst mit letztes Mal die Django-Folge, die noch gar nicht ausgestrahlt worden ist?

Ja doch, also wenn wir die jetzt ausstrahlen, dann ist die schon ausgestrahlt.

Ja? Also wir machen zuerst die Django-Folge und dann die Weihnachts-Folge?

Denke ich schon, ja.

Ja, das finde ich super, okay. Also sind wir sogar in der dritten Episode offiziell.

Ja, genau. Wobei das natürlich auch wieder darauf ankommt, wann man anfängt zu zählen oder wie man anfängt zu zählen.

Bei Null?

Ja, eigentlich sollte man ja bei Null anfangen, genau.

So, wir sind ja nicht bei Fortran hier.

So, bei Eins anfangen.

Bei Eins anfangen zu zählen ist ja im Grunde irgendwie falsch, so für mich als Computer-Affinim.

Also es gibt Mathematiker, die auch bei Eins anfangen zu zählen, aber das ist alles Unsinn.

Nee, dann muss man bei Null anfangen.

Ja, aber natürlich ist jetzt die Frage, wenn wir jetzt bei Null anfangen zu zählen, haben wir ja trotzdem drei Episoden drin.

Die Länge des Arrays wäre ja irgendwie...

Es ist immer noch drei, aber wir wären erst bei Nummer zwei.

Ja, okay.

Aber ich glaube...

Ja, darüber müssen wir uns nochmal drüber sprechen.

Ja, ich glaube, man kann in der Datenbank...

Es sind momentan tatsächlich die IDs der Datenbank.

Man kann in der Datenbank, die fängt auch mit Eins an und nicht mit Null.

Naja, ach, alles kaputt.

Alle tolle Sachen werden dann nur mal kaputt gemacht.

Ja, genau.

Kaputt ist direkt das nächste Stichwort, weil was machen wir heute?

Heute wollen wir tatsächlich ein bisschen darüber erzählen, was alles nicht so richtig funktioniert.

Vor allen Dingen, was der Jochen immer so im Web macht und was dann da nicht klappt.

So an Pandas mit Request-HTML, Paars mit seinem Respy.

Passt und muss weg.

Und mit dem Verstärker von Jochen.

Ja, da wollten wir am Ende ein bisschen euch über eigene Podcasts erzählen.

Was es so für interessante Dinge noch gibt.

Ja, und diesmal so ein bisschen durcheinander.

Ist ja die Weihnachtsfolge ein bisschen Chaos.

Genau, wir haben nicht wirklich was vorbereitet, sondern wir erzählen jetzt einfach mal so, was so passiert.

Was vielleicht auch ganz interessant sein kann.

Und ich denke, vielleicht ist es sogar am besten einfach mal so, ja, wie geht es uns eigentlich so?

Ja, wir erzählen Fragen, Anmerkungen, Kommentare, Lob, Hass, alles Mögliche.

Schreibt an...

Und die Links und zusätzlichen Infos findet ihr in den Shownotes.

Ja, Entschuldigung, ich wollte dich jetzt nicht unterbrechen.

Direkt los.

Was machen wir heute?

Wir haben uns nicht richtig vorbereitet.

Ja, wir machen quasi querbeet, alles Mögliche.

Genau.

Und ja, aber genau, wie geht es uns?

Wie geht es dir, Jochen?

Ja, besser.

Nachdem wir irgendwie letzten Monat bei einem Ausflug irgendwie in den Taunus...

Wir haben ja einen Hund in die rechte Hand gebissen.

Ich dachte immer so ein bisschen, bin ich eher so der Hundetyp statt Kapstentyp.

Aber das muss wohl auf Gegenseitigkeit beruhen.

Und wenn man von Hunden nicht so gemocht wird, dann...

War ja erst wenigstens ein süßer Hund.

Nee, nee.

Sogar ein hässlicher Kleiner.

Oder ein hässlicher Großartiger.

Ja, ja.

Schön.

Und das ist natürlich auch ein bisschen blöd, wenn man die Hand gebissen wird.

Das ist echt...

Muss das sein?

Und ähm...

Aber da sind jetzt die Verwenderer ab und das sieht alles super aus.

Ja, kann alles bewegen und deshalb...

Wie hast du in der Zeit die Maus gesteuert? Mit dem Fuß?

Nee, tatsächlich mit der gleichen Hand.

Ich habe keine Maus, ich habe ein Trackpad.

Ah, ein Trackpad.

Ja.

Das ist ja fast ganz oldschool.

Also kein Trackball, ein Pad.

Nein, ein Trackpad, genau.

Und die Idee dabei ist sozusagen, dass ich möchte, dass meine Desktop-Arbeitsumgebung

möglichst ähnlich ist wie meine Laptop-Arbeitsumgebung.

Und auf dem Laptop hat man ja meistens auch ein Trackpad.

Oder also in meinem Laptop habe ich ein Trackpad.

Oder man nimmt sich eine Maus mit, ja.

Ja.

Und dann ist es halt sozusagen wenig Umstieg.

Also das ist sozusagen die Idee, dass man da halt einen fließenden Übergang hat.

Dass man seine Routinen mitnehmen kann.

Genau.

Und ich habe auch die gleiche Tastatur, sozusagen die gleiche Bluetooth-Tastatur am Desktop

wie die Tastatur, die ich im Laptop habe.

Und das hat eigentlich immer ganz gut funktioniert.

Ich habe letztens umstellen müssen.

Weil, ah, ja, jetzt sind wir schon mal wieder bei der Idee.

Ja.

Weil blöderweise irgendwie die Tastatur an meinem Laptop nicht mehr so richtig geht,

was ein bekanntes Problem ist.

Ich habe so ein 2016er Gurken-Macbook.

Und da ist die Tastatur, die funktioniert halt dann irgendwann nicht mehr,

wenn der Krümel sich zwischen den Tasten und der Mechanik da irgendwie verhaken.

Oh, das ist natürlich nicht so cool.

Also guck mal hier, also dann sowas.

Ich kann jetzt Werbung machen.

Ich mache mir Werbung.

Ja, das geht.

Jetzt machen wir Werbung.

Ich habe eine Cherry-Tastatur mit so Caps.

Die macht man einfach hier abmachen.

Wow.

Und dann kann man die saubern.

Und das kann man ja mit einem Caps so machen.

Das ist ganz cool.

Das sieht auch super aus.

Also die leuchtet auch.

Und dann, genau, hat es verschiedenfarbige Tasten.

Und es sieht sehr robust aus alles.

Das ist echt gut.

Ich habe ganz lange so eine alte IBM.

In den Kreisen der Benutzer dieser Tastatur hieß das Ding auch Hackbrett.

Weil es halt ein sehr...

Kräftiges Geräusch macht bei der Benutzung.

Ja, das ist tatsächlich auch hier so.

Also die Cherry-Klicks, die sind tatsächlich relativ laut.

Also meine Frau beschwert sich, glaube ich, wenn ich direkt in ihr...

Genau, sowas habe ich ganz lange verwendet.

Also das ist halt...

Das hat eine Metallplatte unten drin.

Damit kann man wirklich Leute...

Also das kann man nicht nur als Waffe im virtuellen Umfeld verwenden,

sondern halt auch ganz...

So im Nahkampf bewährt sich das Ding auch.

Und es ist halt nur so...

Das kommt aus einer Zeit.

Die wurden Anfang der 80er irgendwie hergestellt.

Und da hat noch jemand von Hand...

Ich hatte mal ein bisschen Schwierigkeiten.

Ich konnte die nicht...

Oder ich habe versucht, die nicht zu waschen zu sehr,

weil die hatten hinten halt noch so einen Aufkleber drauf,

wo jemand von Hand unterschrieben hat,

dass die Qualitätskontrolle durch war und so.

Also tolles Teil.

Aber einmal...

Warum nicht einfach eine Hacke?

Mit Magneten irgendwie die Platte manipulieren.

Ja, das wäre natürlich eine Idee.

Aber das war dann doch irgendwann zu unpraktisch.

Also die Dinger sind auch riesengroß.

Und ja, also eigentlich mein Wunsch...

Sozusagen eine möglichst ähnliche Umgebung auf dem Desktop zu haben

wie auf dem Laptop hat dann dazu geführt,

dass ich da einfach nicht mehr die gleichen Geschichten benutze.

Aber bin ich jetzt auch von weg,

weil irgendwie funktioniert nicht mehr richtig

irgendwie meine Laptop-Tastatur.

Und ja, blöderweise kann ich jetzt auch mein Laptop

nicht einfach so wegheben.

Also der Service hat ja gesagt,

schicken Sie doch das Gerät bitte einfach mal ein.

Dann kommen es in etwa sechs bis acht Wochen wieder repariert zurück.

Also genau, ja, dummerweise ich, ja, ich benutze es jetzt aber

so für Sachen, mit denen ich mich einfach mal so eine Zeit lang aussetzen kann.

Es wäre schneller gegangen.

Also keine zwei Ersatzgeräte.

Ja, das war dann halt so meine Option.

Da dachte ich dann so, okay, wenn das jetzt irgendwie setzt,

aber selbst wenn das halt nur, es dauert nur sechs Arbeitstage oder sowas.

Aber auch das ist schon so, dass ich mir dann sage,

okay, da kann ich mir eigentlich auch ein Ersatzgerät kaufen,

weil, ja, das ist...

Und ich hatte auch vor allen Dingen eine Versicherung für den.

Ich habe also Apple Care für den Rechner, weil ich dachte, genau,

ich möchte eigentlich ja nicht, dass mir finanzieller Schaden dadurch entsteht,

wenn das Ding mal irgendwie kaputt geht oder so.

Habe dann feststellen müssen, es nützt alles nichts.

Ja, die sechs Tage kriege ich nicht weg.

Ich kriege auch kein Austauschgerät.

Super, das heißt, nächstes Mal kein Apple Care mehr.

Ja, also Leute, wir sind übrigens im Python-Podcast,

in der Weihnachtsfolge.

Wollte eigentlich noch einen Grillwein anbieten oder sowas.

Ja, genau, wir sollten uns einfach...

Das habe ich mir tatsächlich mal überlegt,

ob wir das nicht mal machen könnten und

vielleicht irgendwo in eine Bar setzen oder so.

Ja.

Und von da aus verkasten.

Find ich gut.

Weil, ja, man müsste halt blöder...

Also ich denke, man müsste die Leute

vorher fragen, weil Tonaufnahmen

in der Bar ist ja vielleicht jetzt nicht so...

Ja, ich glaube, man müsste einfach

die Leute vorher alle anderen rausschmeißen, damit die ganzen

Nebengeräusche nicht mehr da sind.

Ja, das wäre auch schwierig, aber es gibt so ein paar, wo man eventuell

nicht stört.

Also wenn man sich zum Beispiel in der Scarebar kann man sich

vorne draußen hinsetzen.

Da würde man jetzt nicht so stören und

auch keine anderen Gäste aufnehmen.

Ist ja schon klar, dass es gerade geschneit hat.

Also vorgestern.

Ja.

Wir machen ja noch ein paar Folgen.

Wir werden noch draußen.

Wir fallen noch draußen, fallen mir jede Menge tolle Orte ein.

Ja.

Ja, das müssen wir mal gucken.

Das stelle ich mir eigentlich auch ganz interessant vor.

Irgendwie

gucken, wie sich so die Qualität

irgendwie über die Zeit verändert, so mit zunehmend

krummeln Pegeln.

Ja, also sagen wir tatsächlich Bescheid.

Wenn ihr irgendwelche Anregungen, Anmerkungen

habt, wenn ihr zu euch kommen sollen oder sowas,

dann schreibt uns eine E-Mail.

Die E-Mail habe ich ja schon eben genannt.

Findet ihr auch in den Shownotes.

Ja, fangen wir doch an mit Python jetzt,

lieber Jochen.

Was funktioniert alles nicht?

Und du hast gesagt, was machst du die ganze Zeit?

Und mit Web irgendwelche Sachen und so.

Mit Web mache ich momentan viel.

Und tatsächlich ist es auch nicht so.

Es ist halt nur so ein bisschen Python.

Also das Backend ist alles Python.

Aber

ich mache

momentan auch viel auf der kleinen Seite.

Und da halt vor allen Dingen mit Java.

JavaScript.

Was eigentlich auch inzwischen ganz gut geht.

Das ist so.

Also ich habe immer mal wieder irgendwie bei

JavaScript reingeschaut, ob das jetzt irgendwie inzwischen

okay ist.

Und fand eigentlich immer furchtbar.

Aber so inzwischen

ist das eigentlich gar nicht

mehr so furchtbar schlimm. Also ich mache jetzt

einen

JavaScript Dialekt, der nennt sich TypeScript.

Und mit so einer IDE,

das ist zwar alles nicht so

snappy, schnell,

wie ich das eigentlich gerne hätte, aber

es ist eigentlich gut genug, dass man damit so

entwickeln kann, dass es tatsächlich

Spaß macht und man diese ganzen Hässlichkeiten

nicht so wirklich wahrnimmt.

Welche IDE ist das?

WebStorm.

Das ist quasi auch IntelliJ-basiert.

Aha, okay. Habe ich auch ja schon einige Male

gehört.

Das ist eigentlich tatsächlich ganz gut.

ja,

das macht eigentlich, man kann so richtig

auf der kleinen Seite quasi so

programmieren, wie man das halt auf der Server-Seite auch gewohnt ist.

Mit allem drum und dran.

Aber was, und

vor allen Dingen, also inzwischen sind ja auch die Browser so gut

geworden, also die können halt eine ganze Menge

und kann ja tolle Sachen machen und es ist alles

nicht mehr so super unterschiedlich, wie es früher mal war,

wo man dann halt irgendwie für jeden Browser

irgendwelche Ausnahmen machen musste.

Es gibt keinen Browser mehr, für den man Ausnahmen machen muss?

Ja, doch, leider schon.

Alle Browser

sind irgendwie benutzbar? Nein, es gibt

einen Browser, der sich standhaft

wehrt, irgendwie

benutzt werden zu können und das ist heutzutage

erstaunlicherweise

Safari.

Safari ist echt so...

Schon wieder Apple. Apple ist das neue Microsoft, oder?

Bisschen schon, ja. Also Safari

ist irgendwie so ein bisschen der neue Internet-Explorer.

Also ein Internet-Explorer gibt es ja jetzt

irgendwie nicht mehr so richtig.

Edge ist jetzt Chromium-Engine, oder?

Edge war eigentlich gar nicht so schlecht.

Edge hatte, glaube ich, eine eigene Engine.

Ich weiß nicht, ob sie die vom IE übernommen haben, aber

Edge war

quasi so ein Neustart.

Und soweit ich das gehört habe,

war das eigentlich ganz gut, war brauchbar.

Und so aus Nutzerperspektive

finde ich, ist es ja eigentlich toll, wenn es da Konkurrenz gibt

und unterschiedliche Rendering-Engines.

Ich würde mir wünschen, dass

sie alle die gleichen APIs implementieren

und dass sie kompatibel untereinander sind.

Aber wenn es unterschiedliche Implementationen

gibt, dann ist das eigentlich eine sehr gute Sache.

Und von da aus gesehen war das

eigentlich immer toll, dass es mit Edge halt da noch

eine dritte Geschichte neben halt

ja,

wie heißt die von

von Chrome?

Bing?

Ist die Microsoft-Suchmaschine?

Nee, genau, nicht Bing.

Oh, wie heißt die?

Blink.

Blink heißt die, ja.

Und das Ding von WebKit

von Safari. Aber das ist eigentlich basiert

auf dem gleichen Code. Das basiert auf

K-HTML

aus dem KDE-Projekt.

Ganz früher. Da kommt das her und

Oh, wieder was zu lernen.

Ja, und dann hat Apple das

quasi in WebKit eingebaut und dann

war Chrome basierte ganz lange auf

WebKit. Auch.

Und dann haben sie WebKit irgendwie weggeforgt,

weil ihnen die Entwicklung da nicht mehr schnell genug ging

und haben da ihre eigene Engine draus geborgen.

Die heißt jetzt Blink irgendwie.

Glaube ich. Ja. Und

insofern war

WebKit und Chrome, das war immer

ziemlich ähnlich. Und dann gab es

halt noch Firefox. Hatte ja irgendwie

eine eigene Engine noch.

Und Opera hatte damals auch eine eigene Engine, oder war das?

Äh, ja doch. Ganz am Anfang.

Aber wir sind relativ schnell auf irgendwas anderes

umgestiegen. Ich weiß aber nicht mehr was.

Ja, aber Opera spielt leider nicht mehr so eine große Rolle.

Ja, vor drei Jahren haben sie auch mal auf Chromium umgestellt.

Ja, ja.

Opera hat ein Feature, was andere Browser nicht haben.

Und das führt dazu, dass Opera teilweise

in so Ländern wie Indien

oder teilweise auch Südostasien

manchen, also von Indien weiß ich es relativ

sicher, gibt es irgendwie noch

20 Prozent des

Traffics geht über Opera. Und man fragt sich,

hä, warum das denn? Und der Grund ist,

dass die so einen

ähm, ja quasi

grafischen Browser betreiben.

Also man hat auf dem Handy halt

sozusagen, sieht man nur ein Bild.

Also es wird einem nur das gerenderte

Bild geschickt, was man halt so runterkomprimieren

kann, dass das halt nur ganz wenig Traffic verbraucht,

weil die da halt so komische Tarife haben.

Und der eigentliche

Browser läuft irgendwo bei der Firma Opera selber.

Okay, das heißt, man kriegt jedes Mal

nur ein Bild und wenn man irgendwas browsen muss, dann...

Ja, wenn man irgendwo draufklickt, dann wird halt zugeschickt, dass man da draufgeklickt hat.

Und das ist halt eine ganz interessante Geschichte.

Äh, das ist ziemlich seltsam,

aber es scheint wohl dann halt auch mit ganz

wenig Daten noch so halbwegs zu funktionieren.

Deswegen gibt es da irgendwie noch so einen komischen

Nischenmarkt für. Aber im Grunde

spielt Opera keine wirkliche Rolle mehr.

Und, ähm, ja, Firefox

hat ja jetzt auch umgestellt, ähm,

sozusagen auf Rust, äh,

auf eine neue Sprache und auch eine neue Rendering Engine.

Äh, die, das ist übrigens auch,

wenn man das längere Zeit nicht, wenn man längere Zeit Firefox

nicht ausprobiert hat, sollte man das vielleicht mal tun.

So seit einem Jahr oder etwas mehr.

Weiß nicht genau.

Ähm, gibt's da, äh, basiert das jetzt auf einer, äh,

Rust, äh, Engine.

Äh, und die ist schnell,

schick, toll. Das ist irgendwie echt super.

Und auch sehr, also das Ding ist halt tatsächlich konkurrenzfähig.

Und, ähm,

ja, so im letzten Jahr hatte man dann

quasi so drei unterschiedliche, äh,

Rendering Engines.

Sozusagen halt die von Firefox, die von, äh,

Chrome und, und, und, und die von

Microsoft. Und inzwischen

gibt's jetzt dann halt nur noch, ähm,

zwei. Ja, und das ist natürlich echt wenig.

Zwei ist schon fast nur noch eine.

Zumal der Marktanteil von, von Firefox

ja auch irgendwie so ein bisschen im Sinkflug

begriffen ist leider. Ja.

Äh. Mit was brauchst du persönlich

gerne? Ähm,

tatsächlich benutze ich, äh,

benutze ich Chrome, äh,

Safari und Firefox.

Ähm. Mit welchem

Anteil so? Also für private Surfen, für die

Arbeit? Private Surfen, meistens Safari.

Weil da, Safari hat halt

so dieses Feature der, der Leseliste, das, das ich

ganz praktisch finde. Mhm. Weil das halt über alle die

Devices hinweg synchronisiert. Das heißt, wenn man

sich eh im Apple, äh,

äh, Universum sozusagen

mit seinen Geräten aufhält, äh, oder. Ich glaub,

bei Firefox kann man das auch machen, das synchronisieren. Und auch

bei Chrome. Ja, bei, bei

Chrome ist so, Chrome ist so ein bisschen evil an der

Stelle. Weil, ähm,

man halt

nicht so richtig gefragt wird, ob man da jetzt

mitmachen möchte oder nicht. Wenn man da selber, also ich war,

mich hat's erwischt, ja, also, äh,

das hab ich letztens, hab ich das gehört? Keine Ahnung.

Hat sich jemand darüber aufgeregt, dass Chrome da

schon so, äh, böse,

böse, böse GUI-Geschichten macht, um die Leute

dazu zu verleiten, äh, irgendwie

die Browser-History mit ihrem Profil, äh,

sozusagen auf die Geräte zu übertragen.

Was ich jetzt an sich noch nicht schlimm fände,

wenn, wenn einfach nur das irgendwie

übertragen würde, aber das wird halt auch bei Google

gespeichert. Und Google kann das halt sehen, was da drinsteht.

Und das ist natürlich, ich möchte eigentlich nicht wirklich

meine Browser-History zu Google hochladen.

Also das. Okay, ich glaub, man muss

das halt einstellen in Privatsphäre-Einstellung, ob das, äh,

überhaupt ist. Genau, aber da steht halt auch nirgendwo,

du lädst hier deine, deine Browser-History

zu Google hoch, sondern da steht, äh,

da ist irgendwie sowas wie, das sind so,

so Button-Tricks, ja, wo man dann

irgendwie, wenn man, wenn man halt, äh,

da ist irgendwie so ein Okay-Button, der sieht irgendwie harmlos aus

und wenn man da drauf drückt, dann passiert das automatisch, ja.

Und nirgendwo steht irgendwie, du lädst jetzt deine Browser-History

zu Google hoch. Und das ist schon sehr, sehr,

äh, äh,

hinterforschtig. Das passt nicht der Church auf Google.

Also ich finde, Google hat

eigentlich bisher noch nichts Böses damit getan. Insofern

hat das da auch mal so einen gewissen Vertrauensvorschuss,

aber so GUI-Manipulationen,

die einen dazu verleiten, auf irgendwas drauf zu

klicken, auf das man eigentlich gar nicht draufklicken wollte, das ist schon

sehr grenzwertig. Und damit hat Google

jetzt ein, äh, also das war jetzt nur eine Geschichte.

Wir haben, Chrome hat dann noch eine andere Geschichte,

äh, wo man dann,

wo sie das nochmal gemacht haben und,

ähm, sagen wir mal so,

also ich meine, ich weiß jetzt nicht, aber es gibt jetzt diverse

Leute, äh, im Netz, die jetzt so sagen,

so, jetzt ist halt Chrome und Google so

endgültig an der Google-Seite angekommen.

Äh, so weiter würde ich

jetzt vielleicht nicht gehen, aber es ist schon so ein bisschen,

also daher versuche ich auch möglichst Chrome

nicht mehr, äh, zu verwenden,

wenn ich irgendwie nicht muss.

Es gibt Dinge, für die ich muss, also zum Beispiel zum Entwickeln,

ähm, ist Chrome tatsächlich irgendwie

ein praktischsten, es gibt da für,

äh, React und so, wenn man das baut,

äh, auch so Extensions,

die einem dann helfen, das zu debuggen und so,

und das ist so praktisch, dass ich das,

dass ich zum Entwickeln tatsächlich Chrome verwende.

Ähm, ansonsten...

Also ich verwende Chrome tatsächlich auch privat.

Selten mal in Firefox, also eigentlich nur,

um mal, weiß nicht, was anderes zu machen,

aber normalerweise eigentlich immer Chrome. Ich hab

auch nicht so viele Bedenken mit den Daten,

äh,

also ich muss sagen, äh, ich bin doof und, äh,

vertraue denen ein bisschen

und die wissen eh alles über mich.

Auch egal, wenn die noch mehr über mich wissen.

Vielleicht kriege ich dann irgendwelche

Bonusgeschenke, man weiß ja immer nicht genau, also ich hoffe ja immer,

dass ich dann irgendwann mal so einen Sonderrabatt

bekomme, wahrscheinlich, äh.

Ja, ja, vielleicht, äh.

Ja, bitte.

Vielleicht wird alles gut. Irgendwann stehen

irgendwelche Männer mit irgendwelchen Anzügen vor der Schule,

dass man weiß, dass man das so genau...

Ja, aber das ist in Amerika und nicht hier, also

das ist ja schon mal gar nicht so schlecht.

Hahaha. Also,

ja, klar. Also, nee, ich benutze

Chrome auch. Ich finde auch, das ist ein echt guter Browser

und so, aber, ähm,

ja, das war völlig wegen der Leseliste, vor allen Dingen,

weil ich dann halt, äh, sozusagen

halt auf allen... Hört mir ein, die haben nur gerade ihre

Datenschutzeinstellungen gestellt in

Europa, haben ihre Server geändert und ihre Rechtsform

geändert. Die sitzen jetzt in Irland

von der, weiß nicht, Google LLC auf

irgendeine irische Limited oder sowas.

Ähm, ich hab noch nicht da reingeguckt, vielleicht, äh,

weil die jetzt DSGVO-konform sind,

müsste man jetzt eigentlich auch aus den ganzen Sachen,

gesondert, opt-outen können und die Frage ist, ob

sowas wie die Browser-History einfach noch so übernommen wird, weil

ansonsten... Das kann natürlich auch sein,

dass das mit der DSGVO ja

jetzt auch so...

Obwohl, ähm, eigentlich hab ich

nicht so wirklich Lust, das nachzuholen. Also, wenn euch das interessiert,

dann selber mal gucken und informiert uns doch gerne

bitte in einer E-Mail, was da rausgefunden wird.

Ja. Also, ansonsten

Firefox versuche ich immer mal wieder zu verwenden,

ähm, wenn,

für so Casual-Browsing-Geschichten,

ähm, und, ähm,

dafür ist das eigentlich, also, so,

ja,

ähm, ist das Ding, das Ding ist schnell

und, ähm... Das hört sich toll an, wenn die Jochen

sagt Casual-Browsing. Ja, wo ich halt jetzt

nicht unbedingt, äh,

sozusagen irgendwie ein Bookmarks-Grad

mache oder so, ja, also,

weil ich halt einfach so ein bisschen rum

brause. Äh, und das Ding

ist auch super, sollte man auf jeden Fall noch mal ausprobieren,

wenn man das halt längere Zeit nicht gemacht hat. Das kann

einem schon überraschende, äh,

äh, es kann einem überraschend

gut vorkommen dann.

Ähm, muss man auch

aber auch so ein bisschen aufpassen. Also, die haben alle so ihre

Haken und Ösen, ne, so, äh,

äh, Chrome ist so Privacy-mäßig

ein bisschen schwierig, äh,

Safari ist irgendwie technisch leider,

da kommen wir nachher auch noch mal drauf,

äh, zu sprechen, ist halt technisch so ein bisschen

kaputt. Und Firefox

hat halt jetzt auch so ein Ding eingebaut,

so ein Privacy,

jedenfalls nicht so super optimal. Also, die verwenden

jetzt statt, ähm,

normalen Nameservern,

äh, gehen die, äh,

DNS-Requests auch per HTTP

irgendwie an eine von diesen,

ich weiß gar nicht an wen, CloudFront

oder weiß ich nicht, auf jeden Fall einer von

diesen CDN-Betreibern,

äh, was

Vorteile hat. Also, dein Provider sieht halt nicht mehr,

äh, wo du rumsorgst. Also, ich meine,

verharrte TPS, äh, was ja die meisten

Seiten mittlerweile dann halt tatsächlich sind,

sieht natürlich, äh, irgendwie dein Provider auch

nicht mehr die Inhalte, aber sieht halt immer noch,

zu welcher, äh, zu welcher Domain quasi

dein Request geht und, ähm,

da, das reicht ja dann oft schon, äh,

sozusagen als Information, äh, äh,

sieht vor allen Dingen, äh, sieht vor allen Dingen,

halt den, den Nameserver-Request, also

den, den, äh,

äh, Request zur Namensauflösung, wenn

dein Nameserver

beim Provider steht, was bei den meisten Leuten

so ist, weil das ja der Default ist,

kann man natürlich auch selber umstellen.

Google zum Beispiel. Google, ja, äh,

8.8.8.8. Google weiß dann alles.

Google weiß dann noch mehr, ja,

weil man so viel wie Provider und

Suchmaschine kombiniert, ja.

Google Home Assistant, alles integriert und dann mit dem

Auto verknüpft und so. Toll, ich kann

über die letzten Jahre mit dem Standort jeden Tag

verfolgen, wo genau ich rumgelaufen bin, das ist ja vorrangig.

Ja, ja, also ich will gar nicht

beschreiben, dass das durchaus praktisch sein kann.

Äh, genau, ich hab auch, äh, äh,

bei mir jetzt, äh, in meiner

Fritzbox, äh, irgendwie als Nameserver

eben nicht mehr den vom Provider eingestellt, sondern

äh, 1.1.1.1

und 1.1.1.0.

Äh, weiß ich nicht genau. Äh, vielleicht sollte man

da auch unterschiedliche nehmen, vielleicht den einen

von, von, äh, auch einen von diesen

CDN-Dingern und dann vielleicht einen von, äh,

von Google oder irgendwie, das ist halt

halt nicht, dass man die Daten so ein bisschen aufteilt.

Das ist ein CDN-Ding, das ist ein Content

Delivery Network. Ja, genau, genau.

Und, ähm. Was macht das?

Äh, das sorgt, äh,

dafür, dass

wenn du jetzt statische

Dateien, äh, irgendwie,

äh, äh, sehen möchtest,

wie jetzt zum Beispiel ein Video oder halt

auch Bilder. Und warum ist denn ein Video

statisch? Weil es sich nicht verändert, weil das das Video

ist, das einmal aufgenommen worden ist. Genau.

Und das als Datei auf dem Server liegt. Weil das halt eine Datei

ist, die sich nicht mehr ändert. Und dynamisch

ist es dann, wenn ich ein individuell

angezeigte Web-Oberfläche habe, die

mein Profil oder irgendwelche anderen Informationen beinhaltet.

Genau. Also, ein Applikations-

Server liefert halt irgendwas aus, was, äh,

sozusagen auf dem

Kontext der Session oder sonst irgendwie basiert.

Also zum Beispiel auch so was. Und die sind übrigens auf den

Python geschrieben, entschuldige mich.

Ja, genau. Also,

eben, natürlich. Also, ich denke, dass

die Infrastruktur, mit der man, äh,

irgendwie, äh, so CDNs hochzieht, halt auch

wahrscheinlich häufig in Python geschrieben sein

wird. Aber die Server, die das ausliefern,

sind halt eher nicht Python, sondern das ist dann halt

irgendwas Schnelles. Äh, also, so

möglichst nah an der, äh,

am, am, am Metall, weil

das darauf kommt, da kommt's dann halt wirklich

drauf an, auf, äh, die letzten Millisekunden und

so, weil... Nah am Metall, hab ich auch

zum ersten Mal gehört, ja. Ach so, ja, nah an, an,

an, an, ja, an der CPU quasi, an den

Leiterwaren halt, ne? Ah, okay, okay, ja.

Bei Python hat man ja immer noch eine virtuelle Maschine dazwischen und so.

Und, ähm,

äh, genau.

Also, die Dinge sind eigentlich dafür da, dass, wenn ich jetzt

äh, sozusagen, eine Webseite

habe, wo halt ganz viele, äh,

äh, Dinge drinstehen, wie

Tag-Image und dann Source

und dann ist das halt eine Referenz auf

eine, auf eine, auf ein Bild oder

auf ein Video, halt je nach, je nach

Tag, dann kommt

das halt nicht von dem Applikations-Server, sondern gibt's halt

spezialisierte Dinger, die das halt ausliefern. Und

wenn ich jetzt auf der anderen Seite der Welt, äh, jemanden

habe, der das angucken möchte, dann ist es halt irgendwie so

ein bisschen sinnlos, dass einmal irgendwie

durch, äh, durch drei unterschiedliche

Untersieg-Kabel scratchen, irgendwie, wenn das ein Video

ist und das ist halt irgendwie ein Gigabyte groß,

ähm, sondern,

und, nehmen wir an, auf der anderen Seite der Welt

wollen das plötzlich, weil es irgendwie in, in,

in der Hongkonger

Club-Szene wird mein, äh, mein, mein

Ukulelen-Video plötzlich zu, äh, geht, geht

viral und, äh,

Welche Plattform? Auf YouTube vielleicht?

Nee, hab da nix.

Äh.

Ja, sehr schön, sehr schön. Genau, aber

nehmen wir an, das wird jetzt, in Hongkong wird das jetzt superpopulär,

ne, und dann, äh, wollen das irgendwie

10.000 Leute angucken. Kennst du das eigentlich, Tim?

Äh, nee.

Wegen der Ukulele, Entschuldigung, keiner Exkurs.

Ach, ist das diese britische, diese britische,

das ist schon ein bisschen her, ne?

Ist das ein bisschen Comedian-Musiker, ja, ja, ja, ja, doch, doch, doch,

dann hab ich's schon mal, mir war grad nicht klar,

ich konnte das nicht verknüpfen, aber ja, ja,

doch, hab ich, glaub ich, auch schon mal gesehen, ja,

aber noch nicht so wirklich, äh. Ja, ist großartig, ja.

Ja, okay, muss ich mal reingucken. Ähm,

genau, und wenn ich jetzt hier halt mein, mein,

mein, äh, mein Webserver irgendwo

nehme, meiner steht tatsächlich bei

Hetzner in Nürnberg, ja,

und jetzt halt die ganzen,

die ganzen Bits da von Nürnberg nach Hongkong

irgendwie durch alle möglichen, äh,

Kabel sich kretschen müssen, ist ja eigentlich irgendwie

Quatsch. Und dafür nur ein Content-Delivery-Network?

der an einem Kontinent steht

und da ist es ein großes Rechenfarm.

Genau, und die haben halt in allen Punkten, wo es irgendwie

eine Nachfrage gibt, halt entsprechend Rechenzentren stehen

und dann gehen die Bits

von dem Video halt nur einmal

von Nürnberg bis zu dem lokalen

Rechenzentrum in Hongkong und werden dann von da aus

verteilt. Und das ist natürlich

ein deutlich breiter Zentrum und irgendwie sinnvoll.

Nur für dynamischen Content nicht?

Ja, da geht es halt nicht,

weil die können halt dynamisch,

muss dann halt die Stelle, die halt

den State-Helm ist halt gefragt werden.

Gut, schön.

Wer oder was ist das jetzt?

Das ist auch so ein Hoster,

ein relativ günstiger Hoster,

wo man so Server irgendwie in einem Rack

mieten kann und dann da,

wo halt unter anderem halt auch zum Beispiel

python-podcast.de

läuft.

Oh, so eine Seite gibt es, das ist ja toll.

Ja, ja, ja.

Und

genau, also

die haben halt die Infrastruktur, um

jetzt Dateien quasi global

irgendwie lokal auszubilden.

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.

Und

ja, deswegen sind die halt sehr schnell,

wenn man jetzt zum Beispiel, ich weiß nicht,

1.1.1.1

oder so, dass ich jetzt bei mir,

das Ding, was ich jetzt bei mir eingestellt habe, da habe ich

sieben Millisekunden Latenz hin

bei mir

zu Hause, so publik ist

DSL. Und das ist fast

Wien lang. Und das ist aber trotzdem, also ich meine,

sieben Millisekunden ist schon echt schnell.

Und ich glaube, der

DNS-Server

von meinem Provider antwortet

so mit 40 Millisekunden

Latenz oder so.

Also alles unter 20 schon fast lokal.

Ja, und

das sind dann halt, weil die

Namen müssen ja erst aufgelöst werden, bevor überhaupt

ein Request zum Applikationsserver gemacht werden kann.

Bevor überhaupt irgendwas zurückkommt, hat man halt diese

Latenzen immer drin. Und das

addiert sich dann halt auf. Und wenn man jetzt

da schon mal 30 Millisekunden Latenz

fahren kann, bei jedem Request, der

irgendwie gemacht wird, oder nicht bei jedem, manchmal wird es

auch gecached, sind die Antworten, aber

dann hat das durchaus merkbare

Auswirkungen. Und deswegen habe ich das mal

umgestellt. Geht es eigentlich viel schneller, wenn man direkt

die IP eingibt?

Das geht halt nicht unbedingt.

Weil?

Ja, der

die Domain oft auch benutzt wird,

um rauszubekommen,

an welchen Applikationsserver das fehlen soll.

Also nehmen wir zum Beispiel mal

meine private Webseite, liegt auf dem

gleichen Server

wie pythonpodcast.de.

Das heißt, wenn ich die

IP habe, ich kann jetzt ein HTTP-Request

zu dieser IP hinschicken,

dann weiß das aber nicht so richtig,

für wen ist mir das jetzt gedacht? Ist das für python-podcast.de

gedacht, oder ist das für

wer-ist-das-server.de gedacht?

Und was hat das Request dann? 404?

403?

Wenn das nicht eindeutig ist, dann

kommt dann halt ein 404 wahrscheinlich

zurück.

Dann funktioniert das nicht.

Insofern muss halt

die Domain im Host-Header mitgeschickt werden.

Aber wenn man das

mit dem Browser macht, dann passiert jetzt der erste

Namens-Auflösungs-Request.

Der könnte ja lokal routen, kann der das?

Also irgendwelche Anfragen musst du dann

versehen mit der IP und einem

Namen?

Ja, also man kann solche Requests natürlich auch

zusammenbauen, aber meistens verwendet man ja Browser

und dann passiert das halt alles automatisch.

Und da braucht man die Domains dann halt schon.

Weil in meinem statischen Web-Server

der halt sozusagen der Reverse-Proxy

von den Applikations-Servern ist, gibt es dann halt einfach

eine Tabelle. Da steht halt so, alles was irgendwie mit

Python-Podcast.de anfängt,

geht halt an den

lokalen Applikations-Server,

der auf dem Port läuft.

Und alles was halt auf die Domain geht,

geht halt an den.

Okay, also du machst halt tatsächlich relativ viel

im Web. Das haben wir jetzt glaube ich auch

gehört, auch mit den Browsern haben wir jetzt glaube ich schon ein kleines Thema

ein bisschen gehabt, was wir vorher noch nicht angekündigt

hatten. Aber hey, wir haben eigentlich ein bisschen was

über die Browser erzählt. Ja, ja, so was.

Ja, also wir wollen ja erzählen, was alles nicht so funktioniert.

Also da hatten wir ja auch kurz den Safari erwähnt.

Ja, du hast auch gesagt,

was machst du so eigentlich die ganze Zeit?

Du hast irgendwas erzählt, du hast ein bisschen mit Audio gemacht

im Browser und so.

Ja, letzte Woche.

Eigentlich mache ich

so Data Science

Machine Learning-Geschichten,

aber halt in letzter Zeit auch häufiger

Frontend-Sachen im Web, weil

man muss halt auch Dinge, wenn man

Machine Learning machen will, zuerst

muss man Daten sammeln und die annotieren und so.

Und

früher haben das

irgendwie immer andere Leute gemacht,

Annotationsfronten eins gebaut und so, aber das war nie

so wirklich toll und

inzwischen

habe ich ein Projekt,

wo ich es auch mit selber mache und eigentlich bin ich ganz glücklich

drüber, weil jetzt kann ich das halt mal so bauen, wie

ich das gerne hätte und das ist eigentlich

ganz praktisch und nebenbei lerne ich

halt auch mal diesen ganzen Web-Quatsch.

Ja, Quatsch.

Deswegen, das ist alles

Quatsch.

Quatsch und ja, gut geht alles nicht.

Genau, aber so schlimm ist es auch nicht.

Es ist schon eigentlich ganz gut.

Es ist wirklich viel besser als früher

und insofern würde ich sagen, ist es auch momentan ein ganz

interessanter Zeitpunkt, um damit anzufangen, weil

es geht halt schon eine ganze Menge.

Aber immer ab und zu stößt man halt dann noch schon

so auf so schmerzhafte Details

wie zum Beispiel, letzte Woche habe ich

Audio gemacht und

da war, also Safari

ist halt so ein bisschen der neue EE, weil der hängt halt

in der Entwicklung hinterher und

da gibt es dann so unterschiedliche APIs, die Browser implementieren

können, zum Beispiel so die Media Capture API,

wo man halt einfach vom

Browser halt sowas bekommt, wie

Video oder Bild

Daten, also das kennt man

vielleicht, wenn man, ja,

also eigentlich kennt man das eher so, dass man

auf dem Smartphone dann so einen Dialog

bekommt, so möchtest du ein Foto oder Video

aufnehmen oder halt

quasi eins aus deiner Mediathek

auswählen oder so. Ah, du meinst, wenn ich auf Time klicke,

hat mich kurz abgehängt, wenn ich was mache,

was ich machen möchte? Wenn du auf einer Webseite bist

und du möchtest jetzt beispielsweise, du musst da halt

irgendwie ein Profilbild hochladen oder so,

dann gibt es meistens so einen Button oder sowas,

wo man draufdrückt und dann wird man halt gefragt,

irgendwie so Fotovideo aufnehmen

oder irgendwie ein bestehendes Foto benutzen

oder so.

Genau, und

das ist eigentlich so ein File

Input, so ein Input-Element,

was man halt da verwendet, also ein

Input-Type-File und da gibt es auch einen Standard

für, wie man da ranschreiben kann, okay, ich hätte

gern jetzt aber nur ein Foto oder

nur Audio

und zwar in dem und dem Codec und so. Das geht

eigentlich alles. Ja.

Und die Browser können das auch.

Oh, da geht's ab.

Ich glaube, das ist die Waschmaschine.

Ja, ich glaube,

auch vorhin wird das hinterher alles rausfiltern.

Na gut. Bin ja sehr zuversichtlich, mal gucken.

Bei dem Schleudergang, du warst da hinten.

Ja,

genau.

Also eigentlich wäre das ideal, wenn man

einfach irgendwo ein Element hinmachen würde,

Input-Element-Type-File

und dann halt sagt man auch, was man da gerne hätte

und dann wird der User halt gefragt, okay,

dann nimm doch halt mal diese App

zum Audio aufnehmen oder die

Fotografie-App auf deinem Telefon

und mach damit irgendwas, denn dann wird

das, was man aufgenommen hat, in der lokalen Mediathek

und quasi auch

im Browser

und im JavaScript, sodass man damit irgendwas machen kann.

Das wäre voll gut.

Das funktioniert auch in den neuesten Chromes, glaube ich,

aber das funktioniert nicht

mit dem Safari und das funktioniert auch nicht

Also es wäre halt das, was man gerne hätte,

aber das funktioniert halt mit dem Safari nicht und damit ist

iOS komplett raus und damit kann man es eigentlich nicht mehr verwenden,

weil geht halt nicht.

Genau.

Meinst du, die patchen das

oder sind die da zu

anders strategisch

aufgestellt?

Ich meine, das gibt es ja schon lange und so und andere haben

das auch schon lange implementiert und da sie das

schon seit quasi Jahren nicht gemacht haben, ist halt

warum sollten sie es jetzt tun?

Weiß ich auch nicht.

Also es könnte sein, dass es auch kommt, man weiß es halt nicht.

Aber ja, also das wäre am schönsten.

Und dann, wenn das nicht geht, gut, es gibt halt

die die Media Recorder API.

Die ist auch ziemlich schick.

Das ist halt ein bisschen mehr Aufwand.

Da muss man halt von der JavaScript-Seite aus halt hat man dann so ein Media Recorder-Objekt

irgendwie an ein Window dranhängen und das kann man benutzen, um halt irgendwie Audio

aufzunehmen oder Video aufzunehmen oder so.

Man kriegt halt nicht einfach eine Datei, was halt die Arbeit irgendwie enorm vereinfachen muss.

Sondern man kriegt halt dann ja irgendwie so ein ja Blob, so ein Binary-Objekt, das man

dann auch quasi irgendwie wieder an den Server schicken kann und so, aber so ein bisschen

ätzender.

Kannst leider nicht nachmachen mit dem Blob.

Ja, und das ist eigentlich auch nicht, das ist eigentlich, das ist auch alles easy.

Da dachte ich so, oh gut, dann könnte man ja das nehmen.

Aber das können auch tatsächlich alle Browser, bis auf.

Ja, das ist echt, echt schwierig.

Wobei man sagen muss, auch die anderen, die Formate sind halt alle total unterschiedlich.

Und das unterstützen das zwar, aber im Chrome kriegt man dann halt, ja, diese, die nehmen dieses WebM-Container-Format und schreiben da Opus-Codec rein.

Opus was?

Opus ist der Codec.

Opus ist halt einer, ja, ist halt quasi gerade für Text oder Sprache, für Sprachaufnahmen ist das eigentlich ziemlich gut.

Komprimiert schön runter.

Und man kann das halt immer noch gut verstehen.

Und ja, Firefox nimmt dann halt ein anderes Container, nimmt dann halt diesen, diesen Aquavis-Container.

Und aber ich glaube, sie packen da, sie packen da auch, auch Opus rein als Codec.

Ja, wobei jetzt natürlich Safari irgendwie würde jetzt wahrscheinlich nicht Opus nehmen.

So, die nehmen ja keinen von, die unterstützen ja keinen freien Codec, sondern müsste das dann irgendwie MP4 sein oder so.

So was.

Hurra.

Und das ist halt alles, was das halt auch wieder schwierig macht, weil dann muss man halt auf dem Server das alles nochmal ineinander umcodieren,

weil man möchte ja auch den Browsern dann das Format schicken, was sie halt irgendwie problemlos wieder ausgeben können und so.

Und ja, für den Firefox ist das dann, dem schickt man dann halt auch wieder ein Opus-Codec im Ogg-Container.

Und das war super, danke.

Ja, war was zu trinken.

Dankeschön.

Das ist einfach so nebenbei.

Entschuldigung, wir haben euch ja auch nicht stehen lassen.

Ja, Entschuldigung, du wolltest gerade in den Container.

Genau, genau, genau.

Und dem Chrome wird man halt irgendwie dann WebM und auch Opus schicken.

Naja, wie auch immer.

Also Safari kann halt diese blöde Media-Recorder-API nicht.

Das lässt sich dann überbrücken, indem man halt ein Polyfill halt verwendet, was dann die Media-Catcher-API benutzt, um irgendwie diesen Media-Recorder zu emulieren.

aber so richtig schön ist das alles nicht, weil dann kann man nur noch

Waff. Ich habe mir gerade einen Fleck

auf die Hose geschüttelt. Oh nein.

Entschuldigung.

Oh, vielen Dank. Ja, bitteschön.

Prost.

Das ist ein Spittbrunnen-Rotwein.

Das ist so spät der Stunde.

Ja, auch mal hier auf die Weihnachtsfolge.

Ist ja sowieso alles ein bisschen chaotisch heute,

deswegen. Ja.

Oh.

Das war lecker. Na gut.

Wow.

Mjam, mjam.

Ja, also.

Klasse.

Wir waren gerade stehen geblieben.

Ja, ja, ja.

Also, genau.

Und

ja, also man kann das dann immer,

das Problem ist, wenn man jetzt

sozusagen diese API, die nicht implementiert ist,

im Browser selber in JavaScript

nachbaut,

damit man das halt

in Safari genauso machen kann wie in den anderen Browsern,

dann hat man halt das Problem,

dass man die rohe Aufnahme

dann halt kriegt in diesem

Binär-Blob,

mit einem Daten-Blob, den man halt

unkomprimiert,

unkomprimiert als Waff-File.

Jetzt kann man natürlich anfangen,

in JavaScript das irgendwie nach

P4 oder nach Opus zu kodieren.

Das kann man irgendwie machen. Es gibt Leute, die das tun.

Ich weiß nicht, ob das so eine gute Idee ist.

Ähm,

was ich dann mache, ist, ich schicke dann halt das Waff-File

zum Server und der kodiert das dann halt um

in die unterschiedlichen Formate und Container-Typen.

Aber ist halt dann einfach

mehr, braucht natürlich deutlich mehr Bandbreite,

wenn man das halt unkomprimiert

an den Server schickt.

Safari, die gehen halt davon aus, sie haben alle genug Bandbreite.

Ist ja auch Apple, ne?

Naja, und so richtig

dolle ist das irgendwie nicht.

Ja, und dann, genau.

Wenn man es dann beim Server hat, dann kann man das zwar

in alle Formate umkodieren, ist aber auch

manchmal, manchmal hat man dann so komische Effekte.

Ich benutze da, ähm, na, FFM-Pack als Library.

Die kann das irgendwie alles

ineinander konvertieren. Und manchmal, bei manchen,

wenn man von dem einen Format, also man nimmt irgendwas in Firefox auf,

spielt es dann in Safari ab oder so.

Ich weiß es nicht mehr genau, wie es war, ne?

Sondern plötzlich ist dann irgendwie alles nur halb so schnell oder so.

Und dann muss man dann in den Flex

von FFM-Pack aufrufen, den man gemacht hat,

irgendwie so lange drehen, bis es wieder stimmt.

Und das ist halt alles ziemlich, also es ist nicht so,

dass es alles so out of the box funktioniert,

sondern man hat da teilweise sehr überraschende Ergebnisse noch.

Und, ähm,

was halt auch total doof ist,

ist halt, äh,

mit diesem Problem habe ich mich

mehr als einen halben Tag rumgeschlagen,

bis ich überhaupt rausgekriegt habe, was da das Problem ist.

Ähm, das war auch wieder

Safari. Safari!

Das ist schon der dritte

Pain von Safari, na, von einer Woche.

Also wenn man das abspielt, dann denkt man sich,

okay, ich kann mit Safari leider kein Audio aufnehmen.

Okay, gut, naja, egal.

Wie ist das für ein Teil?

Sorry.

Schießen, husten.

Das ist ja irgendwie, als hättest du eben noch eine gewisse Zigarre geraucht.

Aber, äh, na,

mhm.

Und das geht mal wieder weg hier.

Ähm, naja, äh, genau.

Aber abspielen sollte es das ja können.

Man kann das ja auch irgendwie in Format kodieren,

dass es halt Safari, äh,

abspielen können müsste, wie zum Beispiel, äh,

MP4, ja, äh,

ist ja sozusagen das, äh,

äh, Hausformat.

Äh, und dann geht das aber irgendwie nicht.

Dann fragt man sich, hä, warum geht denn das nicht?

Und, ähm,

das Einzige, was geht, ist irgendwie

MP3.

Äh, aber, äh,

da geht das auch nur so, dass man das einmal

abspielen kann und dann nicht mehr.

Und dann steht in dem, in dem Audio

Teil, äh, den man halt

auf der Webseite sieht, steht da irgendwie so was Komisches wie

Live-Übertragung.

Und dann hab ich mich zuerst gefragt, so, was zur Hölle ist das denn?

Und, ähm, ja,

es ist, es ist halt so, dass, äh,

ähm, Safari erwartet,

wenn, wenn man jetzt Audio abspielen

möchte, das heißt, man hat einen Audio-Tag,

so ähnlich wie ein Image-Tag, bloß halt mit,

mit, mit Audiodaten drin, dann kann man halt die

unterschiedlichen Formate und Codecs halt auflisten,

was man da so alles hat, und der Browser kann dann entscheiden,

was er abspielen möchte.

Und, ähm, bei allem außer MP3

äh, schickt, ähm,

Safari halt irgendwie so ein Byte-Range-Request

an den Server.

Das muss der Server dann können, er muss dann irgendwie mit einem

206 antworten, statt einem 200er.

Den benutzt Safari aber nicht.

Er schickt den halt irgendwie dahin und

schmeißt das Ergebnis weg, aber wenn

irgendwie kein 206 zurückkommt, dann

es geht einfach gar nichts, spielt ja gar nichts ab.

Ja? Also,

es funktioniert einfach nicht.

So, äh, der Entwicklungs-Server, auf dem ich entwickle,

der kann sowas halt nicht, der kann keine Byte-Range-Requests,

der kann überhaupt keine statischen Dateien eigentlich so richtig,

das ist ein Python-Entwicklungs-Server,

das ist ja nicht gedacht. Also, ähm,

antwortet der halt auf diesen Byte-Range-Request,

glaub ich, ich weiß gar nicht, womit der dann antwortet,

äh, aber irgendwie im normalen 200,

glaub ich, und da sagt

Safari so, nö, dann halt nicht. Aber es gibt auch keine

Fehler, es gibt eine ganz komische

Fehlermeldung in der Konsole,

äh, ich hab das jetzt leider wieder vergessen,

was, aber irgendwie,

überhaupt nichts damit zu tun hat, was eigentlich passiert.

Ja, und, ähm,

also kann auch sein, dass das dann im Produktivbetrieb alles dann

funktioniert, auch mit anderen Sachen, aber

man kann dann halt auch schon nicht mehr so richtig testen,

irgendwie. Und

MP3 funktioniert deswegen, weil MP3

halt ein Format ist ohne Container,

äh, was halt auch diverse Nachteile

hat, wie zum Beispiel, man kann halt nicht

irgendwo hinspringen in der MP3-Datei,

äh, es gibt kein,

kein separate Zeit oder sowas,

wo man sagen kann, äh, also man

hat halt nicht,

irgendwie ein Header-Teil, äh,

in der Datei, wo drinsteht, also dieses, diese,

dieses, dieser Sound-Schnitzel ist so und so lang,

und, äh, wenn du halt zu

der Zeit, äh, zu diesem Zeitpunkt willst,

dann musst du dieses, diesen Byte irgendwie

abspielen oder so. Deswegen ist das

natürlich total sinnvoll, diese Byte-Range-Equests zu haben,

weil dann kannst du halt in einem Player,

äh, äh, sagen, okay, ich spring

jetzt irgendwie zu dieser Kapitelmarke,

oder ich spring halt irgendwo in die Mitte,

und es muss nicht alles runtergeladen werden,

sondern es wird nur das runtergeladen,

was tatsächlich abgespielt wird. Also eigentlich schon sehr schick,

und MP3 kann das halt nicht.

MP3 musst du halt immer komplett

abspielen, quasi, oder komplett runterladen, wenn du es

abspielen willst. Das macht der Safari dann auch.

Ja, also er sagt dann halt sozusagen, okay,

Byte-Range-Equests gehen mit MP3 dann halt nicht,

und, äh, das kann ich alles eh nicht machen.

Ähm, daher mach ich

da was anderes und tu so, als wäre das eine

Live-Übertragung und spiel das dann halt irgendwie ab.

Was dann aber dazu führt, dass

der Browser lädt alles runter, aber man kann es halt nur ein einziges

Mal abspielen, und dann werden halt

irgendwie so die Audio-Controls dunkel,

und das war's.

Und das ist halt also, wie so,

oh nein, äh, was, äh,

äh.

Ja, es gibt da, es gibt da einen sehr lustigen,

äh, Apple verwendet

für all diese Sachen so ein Radar, äh,

heißt das Ding, so ein Bug-Tracker.

Ich kenne auch Radare, aber das war was anderes.

Zu diesem Problem, das hab ich dann irgendwie so nach ein bisschen suchen,

seh, ich hatte, das Problem war rauszufinden,

was ist, was soll, was passiert hier eigentlich?

Äh, äh, als ich das rausgefunden

hatte, war es dann relativ leicht,

dann auch den entsprechenden, die entsprechenden

Geschichten im Web zu finden. Kann man sich,

mal raussuchen, wenn man so danach sucht, irgendwie Safari-Audio,

äh, Byte-Range, äh, Radar,

dann findet man da auch den, den

entsprechenden Bug bei Apple, und da haben

so Leute lustige Sachen reingeschrieben.

Ähm. Safari

Byte-Range Radar.

Mhm. Ja.

Und, ähm,

ja.

Naja, auf jeden Fall, das ist alles

nicht so toll. Ich hoffe mal, dass es dann im Produktivbetrieb irgendwie

alles geht. Ähm,

und ich einfach MP4 abspielen kann im Safari,

aber momentan spiele ich dann halt MP3 und

lebe damit, dass man es nur einmal abspielen kann und dann nicht wieder.

Okay, gut.

Äh, ja. Ja, ja.

Also, das ist alles noch nicht so, es ist nicht so,

nicht so ein total smoothes, äh,

smoothes Experience,

sondern es ist mehr so,

man fragt sich ab und zu so,

oh, das darf doch nicht wahr sein.

Ähm, ja, dann, dann, äh,

auch schön, äh, wenn man Audio

aufnehmen möchte, also bei Fotos und so geht das ja eigentlich

alles auch im Testbetrieb ganz gut,

Audio nicht so sehr.

Da hat man dann zum Beispiel das Problem,

wenn man jetzt, und das, äh, ich,

da die, die Geschichten, äh, die ich da

gerade brauche, sind halt vor allen Dingen für mobile,

mobile Endgeräte gedacht.

Ähm, ist ja auch eigentlich schön, da hat man dann die ganzen Sensoren

dabei, da hat man Mikrofone dabei und so,

das, das funktioniert ja auch alles, kann, sollte man eigentlich auch Audio

aufnehmen können.

So, wenn man, äh, Fotos

macht und so, funktioniert das auch alles, kann man halt einen Test-Server

im lokalen Netz haben, äh,

auf dem das läuft, also ich hab da so meinen Python-Entwicklungs-Server

und, ähm,

dann kann ich da Fotos hochladen und so, gar kein Problem,

aber wenn man jetzt sagt, okay, schalt mal das

Mikrofon ein, mach eine Audioaufnahme,

dann sagt einem der Browser halt so,

mh, nee,

das ist eine unsafe origin,

weil das ist nicht HTTPS,

mhm,

und deswegen, nee,

keine Audioaufnahme.

Kann man das irgendwie vorher umwandeln oder sowas, dass das

über einen sicheren Kanal schickt, oder?

Ja, der Browser sagt einfach, das macht er nicht.

Hm, also,

wartet, jetzt fahr ich jetzt nur oder machen das diesmal alle nicht?

Das machen tatsächlich alle nicht. Ach, damn.

Ich meine, ja, okay, vielleicht ist Audio irgendwie super viel privat

als Film oder

Foto, ich weiß es nicht.

Äh, ja, ich meine, ich kann mir schon vorstellen,

woran es liegt, ja, ich meine, das Problem ist halt da tatsächlich, dass jemand

möglicherweise irgendwie ein Telefon,

äh, irgendwie ein Meeting auf den Meeting-Tisch

schlägt oder so und dann irgendwie Sachen mitschneidet und man

nicht möchte, dass es,

ehrlich gesagt, ich weiß nicht, kann man ja auch so machen, man kann es ja einfach

irgendwie aufnehmen und später irgendwo hinschicken.

Keine Ahnung, auf jeden Fall,

äh,

das wird ja auch funktionieren. Ja, oder man hat dann eben

einen HTTPS-fähigen

Server, an dem man das schickt, dann geht das ja alles auch,

aber wenn es halt

nicht HTTPS-fähig ist,

ein lokaler Entwicklungs-Server geht halt nicht.

Und den kann ich ja auch nicht so leicht irgendwie HTTPS-fähig machen,

das geht ja einfach nicht. Also,

dem kann ich natürlich ein Zertifikat verpassen und ich kann halt

irgendwie so ein

Reverse-HTTPS-Proxy

davor schalten, das geht ja alles.

Ein Reverse-HTTP-Proxy,

was macht der? Der halt sozusagen

das HTTPS terminiert, also

HTTPS mit dem Telefon spricht und dann die Requests

weiterleitet an meinen Entwicklungs-Server, das ging ja.

Okay, okay. Das Problem ist nur, ja,

mit einem validen Zertifikat geht das alles nicht so richtig.

ja, ohne valides Zertifikat ist

natürlich auch wieder nichts. Also, es ist einfach

doof. Oder wir müssen nochmal vielleicht

kurz erklären, was valide und was invalidere Karten sind,

aber vielleicht in Short, kriegen wir das irgendwie in the Box?

Ja, also man,

ja, dieser ganze Teil von HTTPS ist auch so ein bisschen

kaputt, aber, also,

wir sind ja heute bei der Chaos-Weihnachts-Folge,

liebe Leute, im Python-Podcast,

wollte ich nur einmal erklären.

Es ist halt so, dass ich im Grunde ja der,

also man braucht eigentlich

drei Dinge damit, was sicher ist. Also, wenn ich jetzt zum Beispiel

mal das Beispiel nehme, Online-Banking,

und ich mache

jetzt Online-Banking auf einer Webseite,

dann müssen drei Sachen garantiert

sein, damit das wirklich sich sozusagen sicher ist.

Und das ist halt...

Dein Computer ist nicht infiltriert,

die Verbindung ist nicht infiltriert, und der

C-Computer ist nicht infiltriert. Ja, aber

es gibt noch mehr Dinge. Noch mehr, mehr Teil.

Drei Dinge, aber ich würde das jetzt

eher auf so eine abstrakte

Ebene heben wollen.

Und zwar,

brauchst du halt irgendwie

Authentifizierung.

Ja, also...

Ich bin der richtige Nutzer, der da auch rein darf.

Ich bin der richtige Nutzer, der da rein darf. Das macht man halt per

Username und Passwort möglicherweise, oder Banken

nennen das irgendwie PIN, machen komische Beschränkungen,

aber im Grunde

zeigt man damit der Bank, dass man derjenige ist,

für den man sich ausgibt.

Zumindest, dass ich derjenige bin,

der die Benutzer an dem Passwort

kennt, von dem her, dass ich mich ausgebe.

Dann umgekehrt muss das aber auch

gelten. Also, auch die Bank muss sich mir gegenüber

ausweisen, weil

ich möchte ja natürlich schon wissen,

dass ich sozusagen mit der richtigen,

mit der Bank rede

und nicht mit irgendjemandem, der zwischen mir und der Bank sitzt,

dann meine Überweisung nimmt,

da irgendwie die IBAN auf seine ändert

und dann halt die Überweisung mit der richtigen Bank macht.

Tata! Das wäre irgendwie schlecht.

Das heißt, die Bank muss sich auch mir gegenüber

ausweisen und das macht sie üblicherweise

mit einem Zertifikat.

Und das ist halt sozusagen,

wenn dann

im Browser ist dann,

also wenn das nicht funktioniert hat, dann gibt es

so einen Polizisten mit so einem Knüppel, der da auftaucht

und dann irgendwie so eine Browserwarnung

oder man sieht manchmal so ein geschlossenes

Symbol oder irgendwas Grünes oder irgendwie, wenn das

besonders viel Geld bezahlt

hat für den

Certification Authority.

Aber im Grunde, also wenn es keine

Warnung gibt, dann war das okay.

Diese ganze Struktur, wie das geprüft wird,

welche Zertifikate okay sind und welche nicht,

das ist auch alles

nicht so toll. Aber inzwischen

das geht auch alles. Man muss dafür auch

kein Geld mehr bezahlen. Deswegen ist das auch für private

Anwender und so eigentlich ganz gut.

Da gibt es mit Let's Encrypt eine freie

Certification Authority,

bei der man sich Zertifikate besorgen kann

für, wenn man jetzt eine Webseite betreibt,

halt öffentliche Webseiten.

Und das passiert alles automatisch. Man kann zum Beispiel

einen Web-Server nehmen namens Caddy

und wenn der halt auch der...

Ein Python-Server?

Nee, der ist in Go geschrieben, aber...

Ach, das müsste.

Ja, der

macht sozusagen so ein Challenge-Response-Verfahren,

mit Let's Encrypt, mit dieser Certification Authority,

holt sich dann die

entsprechenden Zertifikate. Das funktioniert alles automatisch, man muss sich

um nichts mehr kümmern und das klappt einfach so.

Das ist ein sehr viel besserer Zustand

als früher, wo man das alles von Hand machen musste und

mit Passphrases

rumhantieren und OpenSSL-Kommandos

und keine Ahnung, war alles ziemlich furchtbar.

Aber also, die Aufgabe von

einem Zertifikat ist einfach nur, sozusagen

sicherzustellen für den Benutzer

im Browser, dass da angezeigt wird, dass er mit der

richtigen Institution redet.

Also, das ist halt authentisch.

Authentifizierung. Zweite Geschichte

ist halt

Autorisierung. Man muss halt zusehen, dass

man das, was man machen möchte, auch wirklich machen darf.

Also, dass halt

keine Ahnung, ich als Benutzer

von meinem Bankkonto überweisen darf.

Du hast die Rechte, das durchzuführen,

was du möchtest. Genau, aber

ich sollte jetzt nicht irgendwie

keine Ahnung,

von anderen Leuten sozusagen

Konten irgendwas überweisen dürfen.

Oder so. Und das wäre halt Autorisierung.

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?

Hast du die Privilegien, das zu tun, was du tun darfst?

Da gab es ein schönes Beispiel

mal bei der

CeBIT. Also, die CeBIT, oh, die gibt es ja auch nicht mehr.

in den 90ern war die Hochzeit der CeBIT eine Computermesse

es war eine Computermesse

in Hannover gibt es ein schönes YouTube-Video

von Nixdorf, glaube ich, selbst

der zu Beginn der CeBIT gesagt hat

ich verstehe das gar nicht, was soll denn das, warum hat man das

die Hannover Messe und die CeBIT auseinandergelegt, das ist doch eigentlich das gleiche

ich kapiere das alles nicht, und das ist auch interessant

vielleicht so ein Nixdorf ist dann ja irgendwie, glaube ich, auch für der CeBIT tatsächlich an einem Herzinfarkt gestorben

und jetzt sagen alle so, ja okay, stimmt, warum haben wir das

eigentlich mal auseinandergelegt, jetzt legen wir es wieder zusammen, also ist das alles

noch so gekommen, wie es hätte von Anfang an vielleicht sein sollen

naja, ich glaube, die CeBIT hat einfach

nicht mehr funktioniert

da war es so, dass

jedenfalls habe ich das irgendwie mal gehört, ich habe keine Ahnung, ob das stimmt

das IBM hatte da einen Stand mit so großen Maschinen, so Mainframes

Z-Series, und

da haben sie halt sozusagen

einen Teil vergessen, also sie haben halt die Autorisierung überprüft, also da kamen halt irgendwie dann so

Tieflader, so Sattelschlepper an, und haben halt die ganze Hardware eingepackt

das waren irgendwie Leute, also auf den LKWs stand IBM drauf, die Leute, die reinkamen

das waren alles so IBM

äh

äh

die IBM-Arbeitsuniform ausgestattete Leute

die hatten irgendwie die richtigen Formulare dabei

und so, das hat alles gepasst

ähm, haben dann den Kram mitgenommen

und ähm

ja, dann war er halt weg, und dann

irgendwann kamen nochmal die IBM-Abbau-Leute

die sich dann gewundert haben, dass nichts mehr zum Abbauen war

ja, ja

ja, immer die richtigen Anträge, immer die richtige

das Problem da ist halt so, Autorisierung war richtig

also sie haben halt das schon überprüft

also es waren schon die Leute, die den Job hätten gemacht

was sie machen sollen

sie haben halt nur nicht authentifiziert

das ist der Köpenick-Hack

ja

ja, man ist autorisiert, aber nicht

aber nicht authentifiziert

aber man muss dann wirklich beides haben

also wenn eins davon fehlt, ist es halt schlecht

und dann gibt es noch ein drittes, was auch sein muss

Integrität

ja, egal

äh, ja, genau

äh, genau

Integrität ist auch wichtig

weil ansonsten kann jemand das manipulieren

also, sozusagen

in die Mitte setzen und winken, oder

ja, also dafür hat man halt Verschlüsselungen

und dafür hat man halt, äh, auch

sind auch die Zertifikate zuständig, damit man

sozusagen weiß, dass man auch tatsächlich mit den Leuten redet

die das vorgeben, äh, zu sein

sagen, wenn man Integrität nicht hat

dann funktioniert das auch alles nicht

ja, es ist ja, äh, also wenn man jetzt nicht in einem Raum sitzt

und sich gegenseitig angucken kann

ist Integrität natürlich ein schwieriges Thema

weil, ich kann mir vorstellen, ähm

jemand kann immer so tun, als wäre er irgendjemand

und wenn er sich dann authentifizieren kann

und, äh, autorisiert wirkt

mhm

dann, ähm, kriegt er die Befugnis

und gilt auch irgendwie als Integer

also, viele Leute machen vielleicht den Fehler

dass sie Integrität abhängig machen

von Authentifizierung und Autorisierung

genau, das war, ähm, äh, das ist nochmal

eine getrennte Geschichte

und, ähm, ja, wenn man diese drei Sachen

so ganz abstrakt irgendwie auf die Reihe kriegt

dann ist es halt okay

und, ähm, ja

wenn nicht, dann halt irgendwie nicht

und, ähm, dafür sind halt Zertifikate da

und im lokalen Netz ist es aber blöd

da geht halt das ganze letzten Kripp-Zeugs halt nicht

weil man dieses, äh, Web-Challenge-Response-Ding nicht machen kann

Müsste ich selber schreiben

äh, ne, also man kann auch

natürlich kann man sich selber ein Zertifikat erstellen

aber das Problem ist halt, dass man dann nicht

äh, sozusagen

äh, also offizielle Zertifikate

sozusagen, die im Browser akzeptiert sind

halt mit einem

Root-Zertifikat unterschrieben

einer entsprechenden Certification Authority

Was ist ein Root-Zertifikat?

Ja, das ist halt das, was im Browser hinterlegt ist

sozusagen

womit der Browser überprüfen kann

ob die Signatur, die eine Certification Authority

ein Zertifikat, äh, äh, äh

mit dem sie ein Zertifikat unterschrieben hat

ob die stimmt, ob die von der richtigen

Certification Authority kommt

Also das, äh, das Root liegt dann wo auf dem Server?

Das Root-Zertifikat, äh, ist im Browser

Die sind im Browser vorinstalliert

Das heißt, die müssen bei den Browsern tatsächlich vorhanden sein

und jeder Browser bekommt sein eigenes Zertifikat?

Ne, Browser haben eine Liste von, äh, von

von Root-Zertifikaten, denen sie sozusagen vertrauen

Ah

Und das sind halt einmal sowas wie VeriSign

und da gibt's so diverse, äh, Firmen, die das halt irgendwie machen

äh, Telekom ist auch dabei

aber halt eben auch viele Provider

äh, teilweise ziemlich seltsame Organisationen

äh, es gab da auch Leute, die versucht haben, das da reinzuschmuggeln

teilweise erfolgreich

äh, äh, ich glaub da, äh

der, äh

ähm

einer, das war super, der, vor allen Dingen ist man halt

ich glaub, ein Provider ist irgendwie pleite gegangen

hatte halt so ein Root-Zertifikat in den Browsern drin

was natürlich ne, so, und dann, äh, hat versucht jemand den, äh

und dann haben irgendwelche anderen Institutionen diesen

pleite gegangen, einen Provider aufgekauft

und dann lustige Sachen damit gemacht

einer hat versucht in diesen, in die Browser reinzukommen

auch sehr lustig, das war, das war ne, ne Spaßaktion

aber ich glaub, der hat sich, äh, genannt

äh, äh, irgendwie Honest Ali

oder irgendwas, Gebrauchswarenhändler

und wollte halt auch sein Zertifikat in den Browsern haben

und, äh, das war

oder Honest Ahmed

ich weiß nicht mehr genau, es war, also, super lustig

ähm, ja, äh

in den Browsern sind teilweise komische Root-Zertifikate

drin

ähm

ähm, aber, äh, das, also

ja, das Problem ist halt, wie kriegt man

sagen wir, der Browser muss halt irgendwo

seinen, äh, seinen Vertrauen

bootstrappen, und normalerweise passiert das ja eben so, dass

die Sachen schon dabei sind, also wenn man einen Browser installiert

sind die Dinger halt auch schon drin, und das heißt

wenn, äh, äh, ein Browser

ein unterschriebenes Zertifikat sieht, dann weiß er halt

kann er anhand der Liste der

vertrauenswürdigen Root-Zertifikate überprüfen, ob

das jetzt eine, äh, äh

äh, Root-CR unterschrieben hat, die er kennt

oder nicht. Also bootstrappen heißt alles selber einstellen?

Kannst das auch alles selber

einstellen, aber das sind so... Aber das heißt bootstrappen?

äh, bootstrappen heißt

dass man, man braucht halt irgendwie

äh, sozusagen, man muss

äh, äh, die Unterschrift, die man jetzt unter

einem Zertifikat, äh, äh, sieht

ja, zurückführen auf irgendwas, das man kennt

äh, sozusagen, also...

Wie ist das denn, wenn man ja

unterschrieben hat, dass die dann komische Ausgründe jetzt irgendwie auch...

Und, und klar, also man könnte jetzt natürlich

ein Zertifikat haben, das unterschrieben

ist von der einen, und dann nochmal eine ganze Kette von

von Unterschriften, aber die Frage ist halt

irgendwie muss man letztendlich

äh, äh, äh

ja, eine haben, der man schon vertraut

und die Art, wie man halt

zu dieser sicheren, zu diesem sicheren

Vertrauen kommt, ist das halt schon einfach mit dem Browser mit ausgeliefert

wird.

Was natürlich, ja, das muss man halt dann auch

sicher sein, dass man den richtigen Browser bekommen hat,

aber...

Und dafür kann man ja eine Hashsumme prüfen, bei dem Runterladen

von der Seite. Ja, genau.

Ähm, ja.

Äh, genau.

Ja, alles nicht so einfach, alles nicht so einfach wird, also, ähm, ich möchte

jetzt aber an der Stelle gleich kurz diese ganze Browser-Sache

so ein bisschen abkürzen, weil wir sind ja immer noch

im Python-Podcast, und ich glaube, wir haben noch nicht so viel über Python

heute geredet. Ja, das ist richtig. Ähm,

ja, also, äh, Audi und Browser haben ja irgendwie, äh,

versucht zu erklären, und ein bisschen, was für Probleme der

Safari die ganze Zeit macht, und, äh, was da alles nicht so

funktioniert. Ähm, es sind aber noch einige andere

Sachen, die haben nicht funktioniert, die, ähm, auch mit Python zu tun hatten.

Ja. Ähm, wobei,

na, vielleicht zuerst mal, äh, noch eine Sache, die,

die dann tatsächlich funktioniert hat, also der, der,

der Server-Teil quasi in, das ist dann

auch tatsächlich Python. Ja.

Django, ähm, das hat eigentlich

alles ziemlich, ziemlich gut funktioniert.

Ihr habt die letzte Folge von nicht gehört. Mhm.

Und, ähm, ja, da, was ich da mache,

äh, ist, äh, ähm,

äh, ein Protokoll

nennt sich, äh, GraphQL, das ist

eine Geschichte, die hat Facebook irgendwann mal veröffentlicht.

Das ist tatsächlich ziemlich

nett. Also, das ist halt sozusagen eine Alternative zu,

vielleicht erkennt man das, äh, wie so

REST-basierte, äh, äh,

äh, APIs. Also,

zum Reden über JSON

Files, oder?

Ähm, ja, also, quasi,

wenn man nicht ne, ne Webseite haben möchte,

die man dem User präsentiert, wo halt,

äh, die gelandet werden soll von dem Browser,

sondern, wenn man jetzt irgendwie welche,

irgendwelche Daten haben möchte von einer API,

also, äh, heutzutage hat man

oft einfach ne, ne Web-Applikation,

die, äh, im Browser

läuft, äh, die einem angezeigt

wird, und von, von,

vom Server selber kommen eigentlich nur noch so

JSON-Daten. Ähm,

und, ähm,

die Art, wie man die vom Server holt, ist halt, man,

man, äh, spricht halt

irgendeinem Protokoll mit dem Server, ähm,

immer noch sehr beliebt,

und, äh, ich, es ist halt, äh,

äh, REST

an der Stelle, ähm,

das ist halt so, ähm,

ja, wofür steht REST eigentlich?

Das ist ein Rahmen, um

JSON irgendwie zu verstehen, oder?

Ne, das hat gar nicht, gar nicht unbedingt was mit JSON zu tun,

das kann halt auch ein anderes Format sein, äh,

das ist, ähm,

äh,

äh, Representational State

Transfer natürlich. Ja. Ja, ja, klar.

Ähm, also, man kann das auch,

äh, man kann auch REST, äh, äh,

äh, Protokoll, oder, ähm,

eine REST-API haben, wo man dann XML zurückbekommt,

oder halt irgendwas anderes,

äh, äh, so, äh,

irgendwie,

hm, na, wie heißt das, so eine Art

ähm, binäres JSON-Message-Pack,

oder, äh, äh, äh,

wie der JSON-Formate, äh,

äh, JSON wird meistens verwendet, aber

ist nicht unbedingt nötig, also,

zum Beispiel bei, wenn man jetzt Django REST-Framework als, äh,

äh, Modul

oder Third-Party-Django-App verwendet,

die, äh, den REST-API

teilen macht, dann kann man

hinten an die Request einfach Fragezeichen-Format

gleich irgendwas dranhängen, wie zum Beispiel

JSON oder XML, und dann kriegt man halt XML statt

JSON zurück. Ähm,

also das ist, äh,

das ist eigentlich unabhängig von dem Format, das entscheidende

bei REST ist eigentlich, dass man

die HTTP-Werben benutzt,

äh, um mit dem Server zu kommunizieren.

Also, dass man, wenn man jetzt, äh,

äh, Dinge haben möchte,

also eine Liste von Sachen haben möchte,

äh, und das auf dem Server

an dem State des Servers nichts ändert, dann verwenden

wir halt ein GET-Request. Wenn man

Requests macht, die an dem State irgendwas verändern,

dann muss man halt POST oder PUT

oder PATCH-Requests verwenden,

ähm, und

wenn man irgendwas löschen möchte, dann sendet man halt

einen DELETE-Request.

Ja, die meisten Leute kennen ja wahrscheinlich nur GET und

POST, ja, aber es gibt halt dann noch

eine Menge andere Dinge. Und, ähm,

ja, äh,

äh,

äh, die, diese Sachen benutzt man im Grunde,

um, um halt mit dem, mit dem Server zu kommunizieren,

und man benutzt halt auch die

HTTP-Status-Codes, ja, das heißt,

man, äh, wenn, wenn

einer nicht authentifiziert ist, kriegt man 401 zurück,

wenn man nicht autorisiert ist, kriegt man 403 zurück,

äh, wenn man in den

T-Kanal ist, kriegt man 407 zurück, äh,

äh,

das gibt, glaub ich, oder 409,

15, ich weiß es nicht genau, es ist halt irgendwie

eine Fehlermeldung, heißt es eigentlich T-POD. Es gibt manchmal

so, ähm,

ja, ja,

402 fällt mir noch ein, ja.

Ja, den kenn ich gar nicht, was, was macht 402?

Payment Required. Ah, ja, genau.

Also es gibt da diverse, äh,

Wurde nie benutzt, aber, ähm, ich hab ein T-Shirt, hab ich mir jetzt draufgeschrieben.

Das ist eine gute Idee.

Ja, ähm,

ja,

und das ist im Grunde, äh, das ist im Grunde

Rest, das ist auch eine sehr schöne Sache,

äh, ein bisschen ein Nachteil bei Rest ist

halt, dass, ähm,

man manchmal so das Problem kriegt,

wenn man jetzt so genestete

Daten, also Datenstrukturen, die so ineinander

verschachtelt sind, abfragen möchte, äh,

dass, dass es dann manchmal

etwas schwierig wird und man oft dann halt mehrere

Requests braucht, ähm,

und, also wenn man

jetzt, weil, weil oft

so diese Resta-APIs direkt auf Tabellen mappen,

die halt irgendwie in der Datenbank sind,

äh, das macht das Ganze manchmal so ein bisschen

schwierig und dann kann es dazu führen, dass man halt sehr viele

Requests rausschicken muss zum Beispiel.

Da muss man sich immer die, die Deep Links dann besorgen

für den neuen Request, damit dann die Tabelle vollständig wird,

die man selber haben will.

Ja, oder man hat halt in der Tabelle jetzt nur eine ID,

eine Referenz auf eine andere Tabelle drinstehen sozusagen,

man möchte aber eigentlich die gesamten Daten haben,

und dann, dann muss man sich erst alle IDs

holen, dann schickt man die IDs wieder zum Server und holt

die neuen Objekte, was dann ein bisschen doof ist.

Man kann das auch so machen, dass es halt, ähm,

ähm, dass man direkt

die Daten bekommt, die man haben möchte,

aber dann muss man auf dem Server, äh, das halt auch

so hinbauen, dass das so geht.

Mhm. Und vor allen Dingen

ist es halt unveränderlich, man kriegt halt immer

das gleiche Ergebnis, unabhängig davon,

ob man jetzt das braucht oder nicht. Man kann das jetzt,

zum Beispiel, wenn man jetzt in den Server reinbaut, okay, du kriegst

jetzt nicht nur irgendwie

die Liste der IDs, sondern du kriegst halt direkt dann

schon genestet da drin die

Datenstruktur, die du eigentlich haben möchtest.

Nehmen wir an, du hältst gerne eine Liste

der, äh, der, der

von, ähm, aller

Alben, die du hast, und, ähm,

jetzt hast du aber nicht nur die Track IDs da drin, sondern

halt auch Interpret und, äh,

Dauer oder sowas. Ja, der Vorteil, den

das natürlich hat, wenn man die nicht direkt alle mitcheckt, ist,

dass natürlich die Datenmenge, die man bekommt, nicht so riesengroß ist.

Ja, aber jetzt, nehmen wir an, du hast einen kleinen, zwei

Ansichten. Eine, äh,

zeigt halt nur, welche Alben es gibt,

und eine zeigt halt auch die Interpreten

und die Dauer, jetzt nehmen wir an,

an.

Ja, jetzt kannst du, da hast du mehrere

Möglichkeiten, das zu lösen. Du kannst jetzt zwei unterschiedliche

API Endpoints, also Endpunkte,

anfragen, so, wo du halt einmal das ohne die Tracks

kriegst und einmal mit. Dann hast du aber das

blöde, da hast du zwei Endpunkte, musst halt zweimal irgendwie

den Endpunkt implementieren.

Du kannst so machen, du schickst halt immer alle Daten,

das heißt, Alben inklusive Tracks,

aber dann schickst du einmal zu viel Daten,

wenn du die Tracks gar nicht anzeigen möchtest.

Oder, äh,

du schickst halt nur die Liste

der Alben mit den IDs für die Tracks,

und dann musst du halt einen zweiten Request machen,

um die, äh, Tracks zu bekommen,

oder die Metadaten für die Tracks.

Ähm,

und dann hast du das Problem, dann überträgst du

zwar nicht zu viel Daten, aber dann hast du halt

Latenzen, die sich

aufaddieren, weil du immer noch mal

einen Roundtrip hast pro, äh,

Voralbum. Ja, oder

Du kannst auch vielleicht alle Gleiste nicht kriegen

oder so, aber du hast auf jeden Fall noch mal einen, und es kann halt

dann auch viel komplizierter werden, wenn du jetzt noch mehr

verschaffelte Geschichten hast. Und GraphQL kann das.

Und GraphQL löst dieses

Problem. Ja, tatsächlich ziemlich

elegant, und, ähm, da

kann man halt sozusagen auf der kleinen Seite bestimmen,

was man gerne hätte. Man schreibt halt, ja,

und das ist halt der große Unterschied im Grunde,

äh, bei normalen REST-Apps, äh,

BI's, äh,

kriegst du halt immer das Gleiche, ja. Du kannst halt

in den Request nicht reinschreiben, was du gerne hättest,

sondern du kriegst halt das, was der

Server vorsieht, was du halt auf

diesem Endpunkt halt bekommst an Daten.

Und bei GraphQL kannst du in die Query

reinschreiben, ich hätte gerne diese Spalten, und

ich hätte gerne, das soll jetzt genestet sein, und dann

noch diese Relation mitverfolgen,

und dann da die Spalten aus der Tabelle und so.

Macht natürlich die Query ein bisschen länger

und komplexer. Macht die Query komplexer, und, ähm,

ja, ist natürlich auch auf der

Serverseite so ein bisschen schwieriger, weil man muss dann auch

passen, dass man nicht sich da so

durch die ganze Datenbank hangeln kann, wenn man da jetzt irgendwie

die ganzen Relationen auflöst.

Ähm, aber

es ist halt tatsächlich auch oft sehr praktisch.

Und, ähm,

ja, was man halt auch, also das ist halt ein, äh,

das Projekt hat, äh,

das Protokoll hat Facebook irgendwann mal, glaube ich,

intern entwickelt, und dann sind sie irgendwann, dann haben sie

es zum öffentlichen Standard gemacht,

äh, weil sie halt das Problem haben mit ihrer App,

dass sie ganz viele Abfragen machen,

und, ähm, dann halt

die gleichen Daten an unterschiedlichen Stellen brauchen, aber

dann hat man halt nicht genau die gleichen Daten, und

das ist halt alles, irgendwann haben sie gesagt, so mit

dem Rest kommen wir hier nicht weiter, und dann haben sie sich was Eigenes überlegt,

was sozusagen ihre, äh,

Probleme da adressiert,

und, ähm, ja, GraphQL kann auch andere

coole Sachen, da kann man halt solche Sachen machen wie,

äh, man kann diverse

Statements, äh, Queries zusammenfassen,

ja, man nimmt halt,

das heißt, man macht so zum Beispiel solche Sachen wie,

alle 10 Millisekunden sendet man halt

irgendwie eine Query raus,

ja, das heißt, man sendet nicht jedes Mal, wenn eine Query gestellt wird,

im Client, äh, irgendwie eine Anfrage raus, sondern

man sammelt alle Queries, dann packt man die

in eine große Query,

und, äh, die man dann rausschickt,

und kriegt dann die Antwort, und dann kann man halt dafür sorgen, dass, äh,

zum Beispiel nur, äh,

in bestimmten Intervallen irgendwie Sachen in den Server geschickt

werden, ja, was halt dann die Anzahl der Requests auf den Server

reduziert und so, also da sind einige

sehr, sehr nette Optimierungen drin,

und, ähm, für

Django gibt es, äh, eine Bibliothek,

die nennt sich Graphene,

äh, die man da verwenden kann,

und das ist, das ist tatsächlich ziemlich,

ziemlich nett, ähm,

äh, und dann hat man sozusagen

GraphQL, äh,

Protokoll-Unterstützung, äh, auf,

auf Django-Seite, und, ähm,

da gibt es noch ein sehr schönes Frontend,

das man da auch verwenden kann, das nennt sich GraphiQL,

GraphiQL, ja,

ähm, das ist sozusagen so ein

grafischer Browser für, und dann kann man dann halt, das macht

auch, äh, so, ähm,

äh,

TabCompletion auf den Queries

und so,

äh, EQL, halt, äh,

mit Q,

äh, ja, naja, egal, genau,

ähm, es ist halt dieses, dieses,

dieses Frontend, ähm,

und, ähm, genau,

ich hab eigentlich so die letzten Jahre meistens

REST gemacht, aber, ähm,

äh, und GraphQL

mach ich jetzt noch nicht so lange, aber ich,

ich muss sagen, es ist doch sehr, sehr nett.

Was teilweise so ein bisschen ätzend ist,

ja, also es macht es halt alles komplizierter, wenn's mehr,

es ist halt mächtiger oft, und das

macht es halt auch kompliziert, was auch

komisch ist für jemanden, der aus dem REST,

äh, äh, aus der REST-Welt kommt,

sozusagen, ist auch, dass HTTP-Werben

keine große Rolle mehr spielen,

das heißt, äh, man schickt immer Posts

an den Server, und man bekommt

eigentlich fast immer 200 zurück, und dann,

das war am Anfang immer so beim Debuggen, wenn irgendwas

nicht funktioniert hat, dann guck ich, guck ich so in den

Network-Tab auf dem, im Browser,

und dann halt so, kommt 200 vom, vom, vom

Server zurück, und ich denk mir, da kommen ja auch 200 zurück,

warum ist denn das ein Fehler? Dann so, ja,

okay, muss man die Antwort

erst aufmachen, dann steht da drin so, ja,

also hier ist dann 200, und da,

hier ist der Body deiner Response, und da steht da drin, ja,

jetzt ist halt viel da passiert, ja, also, wenn man aufs REST

kommt, dann rechnet man nicht damit, weil da ist halt ein Fehler,

es ist halt schon was anderes, es ist halt nicht 200,

ähm, ja,

aber, wenn man sich dann dran

mal so ein bisschen gewöhnt hat, dann, äh, ist das

auch nicht mehr so schlimm,

und da gibt's auch tolle, äh,

Debug-Geschichten für den Browser,

wo man das dann halt auch wieder ordentlich sehen kann,

äh, da muss man sich allerdings dann

als Browser-Extension, äh, installieren, also zum Beispiel

für, ich verwende als Client Apollo,

der Apollo-Client, und

da gibt's dann so eine Extension für, für

Chrom, ähm,

der, es gibt einen Client,

der, der, von, von, von Facebook selber,

Relay-Client,

der ist, äh,

ja, den hab ich nicht ausprobiert, der ist relativ

vollständig, soll sehr mächtig sein,

aber, äh, es halt auch gilt

auch als nicht so ganz einfach zu bedienen, und ich

fand, ehrlich gesagt, Apollo schon ziemlich schwer zu bedienen.

Also, wenn der Jochen es sagt, dann

kriege ich den Finger auf den Tisch. Nein, nein, nein,

das Ding ist eigentlich gar nicht schlecht, es kann wirklich coole Sachen, aber,

das ist schon so,

äh, so wirklich,

also, es kann, kann auch daran liegen, dass ich halt mit

JavaScript noch nicht so richtig super viel Erfahrung hab,

aber die API davon fand ich schon

teilweise, boah, so...

Schandwürdig. Nö, das ist

einfach, einfach schwierig, aber was halt auch damit

zusammenhängt, dass es 'ne komplexe Geschichte ist.

Also, es gecached halt auch ganz viel

intern, und wenn man jetzt, äh,

irgendwie, zum Beispiel, wenn der User irgendwie einen neuen,

äh, neue Entität von

irgendwas erzeugt, dann muss man ja dafür

sorgen, dass der Cache geupdatet wird, jetzt kann man einfach

dieses Query nochmal ausführen, aber dann hat man ja

Latenz im, im Frontend, das will man auch nicht,

und dann kann man, äh, quasi

dem Cache sagen, also hier, äh,

ich bin mal optimistisch,

das ist das Ergebnis, was wahrscheinlich

demnächst vom Server zurückkommt,

zeigt das dem User doch schon mal an,

und, äh, oder man kann den Cache direkt

manipulieren, und dann

wird das halt automatisch ersetzt, wenn dann die richtige

Antwort vom Server kommt, und so, und so,

und aber dann, wenn dann irgendwie 'ne Fehlermeldung passiert,

dann muss die ja natürlich auch wieder hochbubbeln, und,

also, pff, ja...

Nee, ihr müsst nicht bubbeln.

Ihr müsst halt dann auch dem User wieder angezeigt werden, irgendwie.

Ja, ja, ja.

Das ist alles so ein bisschen...

Aber, aber, aber nee, es ist schon,

ist schon nett, und, ähm, ich glaube, wenn ich jetzt irgendwie

nochmal die Wahl hätte, wenn ich bei einem neuen Projekt

ob ich da jetzt REST nehme, oder, oder, ähm,

GraphQL, würde ich

wahrscheinlich tatsächlich zu GraphQL trainieren.

Weil das halt doch einige sehr nette

Vorteile hat. Und, ähm,

ja, also insofern,

äh, das ist, das ist halt, äh,

vielleicht ganz interessant

zu wissen, dass man nicht unbedingt auf, auf Node,

Node.js Server umsteigen muss, wenn man

GraphQL machen will, sondern dass das mit Django und

Graphene halt auch eigentlich ziemlich gut geht.

Okay. Ja. Werden wir unbedingt

in den Shownotes erwähnen? Ich würde sagen, jetzt haben wir ja

so ein bisschen dieses Server-Thema weg, vielleicht kommen wir jetzt noch ein bisschen

weiter, wieder in die Python-Welt zurück.

Schlagen wir so einen kleinen Bogen, ähm,

was alles nicht so funktioniert. Wir hatten am Anfang erwähnt:

Pandas, Requests, REST-B mit

Hass. Ja. Was ist am

nächsten, ähm...

Ähm, ja, die, die, die,

die Pandas-Geschichte ist eigentlich auch ganz, ganz, äh,

äh, interessant.

Ist ja eine superpopuläre, äh,

Bibliothek und, ähm... Die kenne nur ich.

Ja. Ja. Äh,

ne, ist, äh, ist halt quasi so ein bisschen

Excel für, äh... Für Python.

Für, für, für Python, so für Programmierer.

Ähm,

und, ähm, ja, ist auch alles,

alles sehr nett und so, aber, äh,

da hat, äh, man, man

stößt halt irgendwann dann auch irgendwie an die Grenzen

und, äh, hatte ich halt auch schon

irgendwie Ärger mit. Ich hab

irgendwie, das ist jetzt auch schon ein bisschen

was her, aber, ähm,

viel, äh, mit, mit,

äh, mit Pandas gemacht und vor allen Dingen

viel mit Pandas und Hadoop, äh, irgendwie

Sachen, Datenstrukturen aus

Hadoop irgendwie in Pandas, äh, verwenden

wollen und, ähm,

äh, ja, tatsächlich,

ähm,

waren da nicht alle Dinge nur, äh, die Schuld

von Hadoop.

Was man ja denken könnte, ja.

Ja, ja, was auch, also, ich, also,

Hadoop ist schon

auch speziell und, ähm,

da gibt's, gibt's viele Geschichten, die da nicht

so gut funktionieren, aber, aber eben bei Pandas

gibt's auch Probleme, äh, und

da auch, ähm, das ist auch schon

ganz alt, da hat, äh, der, der

Gründer dieses, des Pandas-Projektes,

äh, Wes McKinney, hat irgendwann mal, äh,

einen Vortrag, glaub ich, gehalten, wo er, äh,

geschrieben hat: "Ten, ten things

I hate about Pandas" und das hat

er jetzt nochmal aktualisiert, ähm,

ähm,

das ist jetzt aber auch schon über ein Jahr her, in einem

Blogartikel, wo er, äh,

äh, den er, den er, den er,

den er, glaub ich, betitelt hat mit, äh, "Ten things

I hate about Pandas", äh, und, und

äh, das ist so, äh, so, äh,

ähm, was halt so ein bisschen diesem ganzen Kram

abhilfen, schaffen soll,

und, ähm,

ja, also, Pandas kann so diverse

grundlegende Geschichten nicht, also wie zum Beispiel

so ein Problem ist halt, äh, oder

sagen wir mal so, das ist sogar eher ein Problem

von NumPy, was unten drunter liegt,

so Null-Werte

gehen halt nur wirklich schön mit

Float.

So, wenn's Integer-Spalten hat

und hat dann Null-Werte drin...

Aber NumPy kann auch NUN. Oder NUN, also fehlende

Werte irgendwie, also

nicht definierte

Werte, sozusagen, dann hat man da ein Problem,

wenn man das nicht, äh, äh,

quasi, das gibt's halt nicht.

Und das ist ja so ein bisschen schlecht, weil es gibt die ja schon.

Kann man sich

überlegen, wie man das irgendwie kondiert? Schreibt man da

vielleicht -1 rein oder so?

Aber wenn -1 irgendwas bedeutet, dann ist das

halt doof, unter Umständen. Oder

man kann sich eine beliebige andere Zahl ausdenken,

ja, die man dann da reinschreibt, aber man

kann halt eben nicht Namen reinschreiben. Das geht halt nicht.

Aber

gibt's da nicht dieses, äh, NUN, also dieses, ähm,

ich meinte dieses NumPy-NUN?

Ja, das geht nur bei Float.

Das geht nur bei Float? Ja. Okay.

Und, ja, das ist halt so ein bisschen

doof.

Ähm,

ja, dann, äh...

Das geht nur bei Float? Ja.

Muss ja mal kurz in das NumPy-Kapitel

reinschauen. Ich will grad nämlich so ein, äh,

so ein NumPy-Buch liegen.

Ja, aber bitte erzähl weiter, warum das doof ist.

Ja, also, vor allen Dingen, wenn man jetzt

zum Beispiel in Hadoop, äh, irgendwie

Daten hat, ähm,

die

das können, und wo man halt, äh, irgendwie

so, ähm,

äh, Datenformate hat, die das halt unterstützen,

dann hat man halt fehlende, äh, fehlende

Werte irgendwie, und möchte das jetzt in

Dataframe pumpen, dann kriegt

man halt Probleme, wenn das halt nicht funktioniert.

Und dann, ähm,

das ist halt auch alles so ein bisschen, bisschen

schwierig. Ähm, man kann zwar,

und dann, also, es gibt halt dieses, äh,

Apache Error-Projekt, das ist halt vielleicht auch ganz interessant,

ähm,

ähm,

wo es darum geht, quasi diese,

ein einheitliches, äh,

einen einheitlichen Datencontainer zu haben, den man halt

dann von unterschiedlichen Sprachen aus benutzen kann, also auch

von R oder, äh, von, von

C++, äh, oder halt eben auch von Java

aus, ähm,

und das geht halt mit

NumPy so nicht, und, ähm,

ja, also, insofern hat man da,

wenn man heutzutage Pandas verwendet, noch

eine ganze Menge Probleme, aber... Apache Error.

Mhm.

Arrow ist halt sozusagen das Projekt, das das

diese Geschichten, äh,

mittelfristig mal so alle

irgendwie in den Griff kriegen soll,

und damit könnten dann so wirklich coole Sachen

gehen, wie du hast halt die Daten, äh,

tatsächlich nur einmal, also das ist auch so was

zum Beispiel, was in Pandas eigentlich nicht geht,

du kannst halt nicht so, ähm,

Daten

"memory mapped" in einem DataFrame haben,

also, nehmen wir an, du hast halt Daten, die sind

zu groß für deinen Hauptspeicher. Mhm.

Ähm, ähm,

jetzt, äh, möchtest du dir möglicherweise

teilweise immer nur so in den Hauptspeicher mappen,

dann darauf irgendwas machen,

und dann irgendwas anderes in den Hauptspeicher mappen.

Aber du kannst halt nicht ein komplettes

Pfeil, weil es einfach zu groß ist, oder so in den Hauptspeicher lesen.

Wie, ist denn mein Hauptspeicher jetzt nicht groß genug?

Wie geht das denn heutzutage? Ja, ja, doch, gibt es tatsächlich,

also, ja, oder ist es halt

so, ist es, ja, äh,

ja, oder vielleicht will man

das, äh, es gibt auch andere Gründe,

weswegen man das jetzt nicht unbedingt in den Hauptspeicher

laden möchte.

trinken noch einen Schluck

oh ja

aber

so kann man sich das vielleicht ganz gut vorstellen

dass das halt ein Problem ist

und das kann man mit Pandas auch nicht machen

und

also in Zukunft was so richtig

schön wäre

ist halt

du hast

jetzt nehmen wir an die Daten die in so einem

Hadoop

Pocket File irgendwie

liegen

sozusagen

in einem Container drin

den du halt von allen Sprachen aus ansprechen kannst

und kannst dann halt irgendwie mit A

deine Analysen drüber fahren

und halt mit

Python und Pandas

beziehungsweise halt

irgendwelchen Machine Learning Bibliotheken

kannst das aber auch

irgendwie von Java aus

ansprechen oder so

und du musst dieses Ding nur einmal im Hauptsprecher halten

und nicht für jede Sprache neu

weil das ist halt das was man momentan macht

man liest es

halt dann in Pandas irgendwie in den DataFrame ein

transformiert dann auch irgendwelche Geschichten

weil halt irgendwie solche Dinge wie

NAN

für Integer gibt es halt nicht

und dann machst du das halt in jeder Sprache nochmal

das heißt du hast den Speicheraufwand

für jede Sprache die du dann benutzt

weil du das in den Hauptspeicher laden musst

und die Repräsentationen sind dann auch noch leicht unterschiedlich

weil halt bestimmte Sachen nicht gehen

und dann kommen halt bei Analysen

irgendwie unterschiedliche Sachen raus

und das ist alles schrecklich

und dann sagen Leute sowas wie ja abhalten kann das halt nicht

oder keine Ahnung

AR ist halt irgendwie doof

oder Java hat es wieder verbockt

aber eigentlich

genau wenn man jetzt eine gemeinsame Infrastruktur

darunter hätte die sich darum kümmert

dann wäre das alles deutlich einfacher

und das soll

Apache Arrow mal werden

das ist jetzt schon eine ganze Zeit

ich habe das halt im Zuge meiner

Hadoop

Geschichten halt auch mal kennengelernt

weil ich hatte halt das Problem also mein Hauptproblem war

dass ich Daten nicht schnell aus dem Cluster rausgekriegt habe

und das ist halt so

und da mit Apache Arrow konnte ich halt diese HDFS-Files

halt direkt lesen

und das war

na gut

da musste man auch noch Bibliotheken verwenden

die das dann halt konnten

aber ich kriegte das halt irgendwie

in eine Arrow-Datenstruktur

und daraus dann wieder in DataFrame

und dann ging es halt weg

aber da wird aktiv dran entwickelt

ich weiß es gab das auch mittlerweile

so Westmark-Königs Hauptprojekt denke ich mal

und das wird eine super interessante Geschichte

in der Zeit

in der Zukunft

ja und das soll halt sozusagen

einige der Hauptschmerzen

die man mit Pandas so heutzutage hat

irgendwie in den Griff kriegen

ja

das ist vielleicht ganz interessant

sich das mal anzugucken

okay Apache Arrow als Lösung für Pandas-Probleme

ja gehen wir vielleicht zum nächsten Punkt

Web-Parsing

ja genau so Web-Parsing

also vielleicht da sollen wir auch mal

eine komplette Episode zu machen

oder so

aber ist ja so ein Problem

was man immer wieder hat

dass man irgendwelche Seiten

Scrapen möchte oder so

und

wie machst du das so generell?

nimmst du eine wundervolle Suppe oder?

Beautiful Soup

ja

also das kommt auch immer nochmal vor

dass man das für irgendwas verwendet

aber ne meistens benutze ich jetzt tatsächlich

eine Bibliothek namens Requests HTML

ist von dem gleichen Autor

wie auch Requests

also die Standard-Bibliothek

ne ist nicht

ist nicht Standard

also nein, Requests ist die Standard

ja ja genau

Kenneth Wright

und

das

das Ding macht halt

über Requests selbst hinausgehend

ein paar Sachen

die ganz interessant sind

und die man vor allen Dingen halt dann braucht

wenn man irgendwie so Seiten scrapt

jetzt habe ich das einfach schon ein bisschen leerer gemacht

ja das war super

die Flasche war so dunkel

zum Wohl

mhm

ja dann Prost

Prost, vielen Dank

mhm

ach, toll

ja

und zwar hat man halt mal so Probleme wie

naja man möchte jetzt irgendwelche Dinge aus dieser Seite

die man irgendwie geladen hat

rausselektieren

man möchte irgendwie

naja manchmal sind die Seiten dann so ein bisschen unterschiedlich

oder dann geht das nicht so gut

mit Beautiful Soup kann man da ein bisschen was bauen

das Problem ist halt

dass sobald das nicht mehr so

äh sie sind nicht komplett gleichgültig

äh sie sind nicht komplett gleichgültig

äh sie sind nicht komplett gleichgültig

äh sie sind nicht komplett gleichgültig

dann wird das mit Beautiful Soup auch schon

irgendwie so ein bisschen schwierig

ähm

und ähm

dann muss man lieber das eigene Skript schreiben

für jede einzelne Seite

kann man natürlich machen

für jede einzelne Seite

oder für

machen wir einfach Faltunterscheidungen oder so

ähm

es gibt eine saukoole Geschichte

ähm

das ist tatsächlich auch ein

Bibio

äh

ein ähm

Pipe-Modul

das wirklich cool ist

nennt sich Path

und ähm

das kann man auch noch für andere Sachen verwenden

aber in diesem Web-Scraping-Umfeld

kann man es auch so

für ne Geschichte verwenden

das hatte ich früher als Idee auch schon immer mal

äh

so

wenn man sich vorstellt

wie ne Webseite generiert wird

dann hat man ja

irgendwie so ein

ein Template

und ähm

äh

dann

ne Datenbank

und dann wird dieses Template ausgefüllt

meistens mit Werten aus der Datenbank irgendwie

mhm

und

selbst wenn man jetzt Seiten hat

die so ein bisschen unterschiedlich sind

dann ist das doch meistens irgendwie

dasselbe Template

irgendwie

mhm

und ähm

ja jetzt war

dachte ich früher immer schon so

dann hab ich dann auch gemerkt

das haben Leute schon implementiert

Leute haben sich überlegt

okay wenn ich jetzt mehrere Seiten habe

dann kann ich doch vielleicht

kann ich das Template daraus extrahieren

kann ich es sozusagen

im umgekehrten Prozess machen

und wenn ich das Template habe

dann ich möchte einfach nur

alle Werte haben

sozusagen

die aus der Datenbank kommen

wenn ich die Datenbank wieder zurückbekomme

und ähm

äh

da gab es einige

da gab es auch auf dem

ursprünglichen Auto von

von Jango

irgendwie eine Bibliothek zu

die aber schon lange nicht mehr gibt

oder gepflegt wird

ähm

äh

die sozusagen automatisch rausfinden soll

was das Template ist und so

ähm

und äh

diese Path-Bibliothek

ist aber jetzt eigentlich

das ist auch cool

da schreibt man im Grunde

sozusagen sein Template irgendwie rein

ähm

man kann auch damit relativ leicht rausfinden

wie das Template dann eigentlich aussieht

und dann gibt einem das sozusagen

die Werte

wieder zurück

sozusagen

und äh

das äh

muss man sich mal

also kann man sich mal angucken

wie das genau funktioniert

ähm

das äh

in dem Request.html-Paket ist

äh

gibt es dann so ein

ein Search-Kommando

wo man das dann halt verwenden kann

ähm

und ähm

das löst dieses

dieses Problem zum großen Teil

ähm

Sachen aus einer Seite raus zu parsen

irgendwie

ähm

ja

und ähm

dann kann es halt

äh

kann das

das ist ein Teil

man möchte halt irgendwie

äh

sozusagen da irgendwelche Werte

aus einer Seite rauslesen

ähm

und eine andere Geschichte

die man halt auch immer wieder hat

ist

wenn jetzt da Javascript drinsteht

dann möchte man eigentlich

eine gerenderte Version

der Seite sehen

man möchte halt nicht

das HTML sehen

weil oft hat man

dann 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

äh

weil man eigentlich die Daten

haben möchte

die dann hinterher

wenn der Browser das rendert

in der Tabelle angezeigt werden

oder so

weil die Tabelle ist dann irgendwo mehr

ähm

und dafür

äh

äh

gibt's bei RequestHTML

auch so eine

äh

relativ schöne

schöne Geschichte

nämlich

also das ist noch so ein bisschen

hacklich manchmal

aber

äh

da ist so ein Headless-Browser mit drin

also

gab's auch früher alles schon

es gibt äh

irgendwie

ähm

na wie heißt das Ding

äh

diese Java Selenium

äh

als Interface

es gibt

PhantomJS

es gibt ja diverse Geschichten

die man benutzen kann

die halt alle so eine

leicht andere API haben

und so

das ist immer ein bisschen schwierig

äh

Chromium hat eine ganz schöne API

die man benutzen kann

aber es ist alles irgendwie

äh

na

nicht so dolle

es gibt für JavaScript

gab's eine Bibliothek

äh

Bibliothek namens Puppeteer

äh

und dafür gibt's eine Python-Adaption

namens Puppeteer

und das ist eingebaut

in RequestHTML

und das ist halt alles

relativ schön verbastelt

so dass man davon nichts mitkriegt

also was das Ding dann tatsächlich tut

man sagt so

führ doch mal

JavaScript auf dieser Seite aus

und rendere mir das

und dann kann man

man kann halt über eine API sagen

gib mir einfach ein Bild

dieser Seite

oder

man kann sagen

gib mir irgendwie

den gerenderten DOM dieser Seite

oder gib

hier ist ein Stück

schnipsel JavaScript

führ das mal im Kontext

dieser Seite auf

äh

aus

und ähm

dann was RequestHTML macht

ist

es lädt halt ein Chromium runter

und äh

es bastelt das alles so zusammen

dass es irgendwie funktioniert

und äh

es rendert halt dann die Seite

und gibt dann das Ergebnis zurück

und das Ganze sogar

mit einer asynchronen

äh

API

so dass man das halt alles

so in

äh

S-I-O-Umfeld verwenden kann

und man

man hat mit diesem ganzen Stress

den man normalerweise dann so hat

hat man nicht mehr viel zu tun

was sehr nett ist

ähm

und das funktioniert tatsächlich sehr gut

also früher hab ich

ich hab damit so oft

mit irgendwelchen Kram

äh

rumgeschlagen

äh

ich hab

teilweise muss man dann

Webkit kompilieren

und dann

äh

gab's da diverse Geschichten

es gab noch Splash

früher mal

es gibt eine ganze

äh

ein ganzes

diese

die Leute die auch Scrapey bauen

da gibt's eine Firma dahinter

die haben da diverse Service

die sie anbieten

ähm

da gibt's noch

da kann man auch irgendwie

Scraper irgendwie erstellen

ich glaub ein Tool heißt Porter

wo man dann auch sagen kann

was auf einer Seite wo ist

und so

und ähm

die haben auch so ein Proxy

namens Splash

wo man dann halt quasi

über so ein Proxy

einen Headless Browser hat

mit dem man dann

irgendwas Dinge machen kann

da kann man dann auch irgendwie

JavaScript in der Seite

injizieren

oder irgendwelche Sachen

rausparsen

aber das war alles

immer ziemlich

ziemlich ätzend

kannst du nochmal ganz kurz erklären

was Scrapey denn genau macht

zum Vergleich

ja Scrapey

Scrapey ist

äh

auch

es ist im Grunde so eine

naja

Komplettlösung

mehr oder weniger

also da

kommt's dann auch noch mehr

auf den

auf den Crawling-Teil

im Sinne von

äh

ich hab hier ganz viele URLs

die ich abfragen möchte

und dann muss man daraus

irgendwie

muss man die halt durchgehen

muss halt irgendwie

mehrere Prozesse haben

die halt da

äh

irgendwie die

die Seiten holen

und so

dafür ist das halt

eher gedacht

äh

halt

dass man quasi

wirklich eine komplette

Seite halt

irgendwie mal so

da drüber läuft

über alle Seiten

Unterseiten

die es da so gibt

ähm

ja

äh

da ist aber nicht so viel

also wenn

wenn's darum geht

da Informationen

aus einer Seite zu holen

das muss man dann alles

mehr oder weniger

selber schreiben

und dann

äh

das kann man dann

per Beautiful-Zug tun

oder LXML irgendwie

also das ist auch sowas

bei Request-HTML

das ÖÖ

der der

Standardweg

wie man da Elemente

selektiert oder so

ist über äh

CSS-Selektoren

das ist auch sehr angenehm

weil das macht man ja

im Browser normalerweise auch so

mhm

auch im JavaScript-Bereich

mhm

ja

äh

und ähm

Scrapey

äh

gibt eine ganze Menge

Infrastruktur

äh

wenn man jetzt so einen

Scraper bauen möchte

äh

aber

vom Inhalt her

hilft einem das gar nicht so viel

wenn man jetzt eine konkrete Seite hat

oder irgendwie Sachen rausziehen möchte

dann

hilft einem Scrapey da nicht

ja

wenn man jetzt rausgefunden hat

wie man das tut

und möchte das jetzt skalieren

auf äh

keine Ahnung

100.000 Seiten

und möchte das mit 5 Prozessen

auf irgendeinem Server irgendwie

dann ist Scrapey auch wieder

eine sinnvolle Geschichte

ja

äh

und es gibt halt

äh

irgendwie eine Firma

die ganz eine Menge Services

um diesen Kram herum baut

ähm

ja

hab ich jetzt auch wieder vergessen

aber

sagen wir mal so

also es gibt

wir haben

ich hab schon für diverse

Firmen Sachen gemacht

oder auch schon für Firmen gearbeitet

die halt auch damit

immer wieder Probleme hatten

äh

äh

Scraping ist halt so ein Ding

was immer wieder auftaucht

was man immer mal

immer mal wieder machen muss

und ähm

Requests.html

ist tatsächlich so die

angenehmste

äh

Lösung

für dieses Problem

das mir

die mir bisher über den Weg gelaufen ist

deswegen wollte ich das mal

erwähnen

dass es das gibt

und dass es halt nett ist

und genau

wenn man halt

das Problem hat

das Template zu extrahieren

aus äh

aus solchen Seiten

und da Sachen rauszuparsen

dann ist es halt

sollte man sich die Pars

und Zeugfunktionen

und Requests.html

einmal angucken

weil das ist echt sehr nett

ja

okay

äh

genau das war's

das war's im Grunde schon

ja dann würde ich sagen

kam ja Request hatte mit Pars

ja

kurz

ähm

nächstes Thema war

der Hass mit dem Resvy

äh

was ist da passiert

ist was kaputt gegangen

ja ja

Chaos vor Weihnachten

ich meine

äh

ja

genau

das ist irgendwie schade

ich hätte

oh

das Grundproblem war irgendwie

das ähm

das hab ich auch schon seit

seit über einem Jahr

äh

hab ich das Problem

dass ab und zu

das Factoring

auf meinem

DSL-Anschluss ausfällt

aha

das liegt dann im DSL-Anbieter

äh

ich weiß ehrlich gesagt

nicht so genau woran das liegt

aber

ähm

äh

ja ich seh halt

dass es passiert

ich hab so eine

Fritzbox

da kann man dann sehen

ähm

ähm

quasi da

da steht dann irgendwie

äh

G-Vector ist irgendwie aus

oder so

ne

da kann man irgendwie nachgucken

was das bedeutet

und dann so

ja das Factoring

ist irgendwie aus

was für so unwissenden Hörer

was ist Factoring

ach Gott

Factoring

das ist so ein

so ein Kuppel

äh

also wir haben ja

in Deutschland diese

äh

unvergleichliche

klingelnde Drahtkupfer

äh

irgendwie

Telefoninfrastruktur

äh

vielleicht nicht mehr so

ganz zeitgemäß ist

aber äh

liebevoll

äh

auch ins 21. Jahrhundert

äh

irgendwie gerettet wurde

weil äh

ja

äh

das ist natürlich

für die Telekom

irgendwie angenehmer ist

äh

äh

Gewinn zu machen

mit äh

Dingen die der Bund mal investiert hat

mit Geld das der Bund mal investiert hat

und dann mit der Entlastung

weiter Geld zu verdienen

und wenn

wenn man selber was

ja nicht so

naja

auf jeden Fall

ähm

das Problem ist

ähm

dass bei Kupfer

ist halt irgendwie

relativ schnell Schluss

so mit das aktuelle DSL

DSL Technik

zieht da schon so

alles was an

was man so an Tricks

machen kann

um da mehr Daten

drüber zu kriegen

wird halt gemacht

äh

also alles Kabel

was man da in die Erde

verlegt hat

ist quasi voll

ja also da

da geht einfach nicht mehr drüber

da ist man halt einfach

an den physikalischen Grenzen

was man da machen kann

und ähm

naja da

das einzige

was dann halt noch blieb

ist sozusagen

sich

äh

äh

Frequenzen irgendwie

mit anderen zu teilen

so ein bisschen

so lange die nicht benutzt werden

benutzt man die halt dann mit

was dann aber dazu führt

dass man

auf der

äh

äh

auf der Seite

wo man

wo man einen Anschluss hat

das muss halt

alles aus einer Hand kommen

ja wenn jetzt

äh

sozusagen

äh

man zwei unterschiedliche Provider hat

ja an einem

also man hat immer

das Telefonkabel geht so

von der

dieser TAE-Dose

die man an der Wand hat

geht halt zu irgendeinem

Gerät

von dem Provider

äh

sozusagen

in einem

in so einem

zum HVT

oder zum

zum Hausanschluss

und dann zum HVT

ja

ich weiß gar nicht

wie man das nennt

das ist halt irgendwie

so ein grauer Kasten

auf der Straße

so wenn die

wenn die brummen

und da Lüfter drin sind

dann ist das

dann ist das gut

dann ist das wahrscheinlich

irgendwie so schnelleres DSL

als wenn man das nicht brummt

da ist irgendwie so eine Art

Switch oder weißer Teufel

irgendwie

irgendwo sowas drin

wo halt

das Telefon-Dings

da ankommt

und ähm

wenn man jetzt

Vectoring macht

dann bedeutet das halt

sozusagen

wenn

auf der anderen Leitung

sozusagen niemand

niemand gerade

irgendwie Daten überträgt

dann

gehe ich in einen Modus

den ich eigentlich

normalerweise nicht

nicht nehmen darf

weil das

weil ich ansonsten

quasi dem

in die Daten reinfunke

sozusagen

also

wenn beide das machen würden

würde das schief gehen

das heißt

man muss sich irgendwie absprechen

ist halt sagen

ok

solange niemand anders

irgendwie Daten sendet

kann ich das halt machen

dann wird es halt schneller

und

ja

so kriege ich dann halt

über diese Kupferleitung

dann doch noch wieder mal

ein bisschen mehr rüber

das Problem ist halt

dann aber

dass quasi

ich nicht mehr

sozusagen

ein Endgerät

von unterschiedlichen

ähm

Providern haben kann

sondern

da das ja koordiniert werden muss

also ich gleich

sozusagen das nur machen kann

wenn ich alle

äh

alle Leitungen unter einer Kontrolle habe

bedeutet das

ich

muss halt

die Hardware muss aus einer Hand kommen

und es muss eine Stelle geben

die das kontrolliert

das ist üblicherweise die Telekom

und

das heißt

also ich finde

ich habe halt meinen Vertrag bei O2

aber

äh

sozusagen mein Anschluss

läuft über die

Telekom Hardware

weil

sich das ja mit allen anderen Anschlüssen

irgendwie koordinieren muss

jetzt

so

ja

alles ein bisschen furchtbar

ich meine

es schlägt mich auch nicht weiter

es funktioniert halt irgendwie

es ist auch tatsächlich schneller

also insofern ist alles gut

aber

äh

bei mir war es halt so

das fällt halt so

fiel halt so alle paar Wochen aus

war dann halt weg

und fiel dann halt nicht zurück auf

VDSL

was so 50 MBit Down

10 MBit Up ist

sondern auf

16 MBit

äh

oder 14 MBit Down

und 768 MBit Up

oder so

auf 2002

oder so

ja was

was für mich jetzt echt blöd ist

weil äh

ich

das brauche ja

ich brauche ja

ich brauche ja die Bits

ich brauche ja die Wandbreite

Precious

Wandbreite

brauche ich doch eigentlich

äh

ich mache da ja auch Backups drüber

und so

ja

Lita

Lita

ja

ja

ne ne

das ist alles

das ist alles

seriöse

Datenverarbeitung

ähm

und ähm

ja

das ist für mich total nervig

und dann rufe ich dann halt immer an

und dann

wenn die sagen

ok sie haben ein Ticket aufgemacht

bei der Telekom

dann geht da irgendwie

so ein Diagnoserequest raus

äh

der halt

meinen Port irgendwie da resetet

und dann geht es wieder

kannst du nicht automatisieren

diesen Port

genau

das habe ich mir auch schon überlegt

ob man das nicht irgendwie automatisieren kann

oder so

das ist

manchmal ist es voll gut

dann rufe ich da an

und 5 Minuten später

geht wieder alles

und manchmal machen sie irgendwie

dieses Ticket nicht

oder sagen nur

dass sie es tun

tun es aber nicht

oder weiß ich nicht

und dann kann es auch mal sein

dass ich eine Woche

schlechtes Internet habe

und das ist halt echt

und ähm

ja

äh

aber das ist halt

durch so viele Iterationen

gelaufen mittlerweile

dass äh

ich hatte da auch schon

irgendwie 2 Stunden lang

Gespräch mit irgendwie

einem Techniker

die konnten das dann auch ausmessen

irgendwie meine

meine lokalen Leitungen

wie das denn mit denen aussieht

haben rausgefunden

irgendwo

dass ich eine Reflexion

in irgendeinem Kabel

bei mir habe

dann habe ich das Kabel ausgetauscht

SattTV

SattTV

ich sag es dir

irgendjemand

der rennt da über dir

der guckt SattTV gerne

und die strahlen in dein Vectoring

oder so

ich weiß es nicht

auf jeden Fall

das fand ich schon beeindruckend

da hat sich jemand

auch wirklich Zeit genommen

das hat

das hat leider das Problem

nicht gelöst

das Vectoring ist noch später

wieder ausgefallen

und inzwischen ist es so weit

dass es war auch

ein Telekom Techniker da

und das war auch alle sehr nett

und der war dann auch im Keller

hat sich das alles mal angeguckt

und dann

bei uns in der Wohnung auch

und so

und ähm

ja

der hat dann

meinte dann so

ja ich weiß nicht

es geht irgendwie

nicht so richtig gut

oder manchmal passiert halt

geht es halt schief

weißt du wie die bei

kurzer Exkurs

wie die bei mir

den Upload gefixt haben

die haben in der Tiefverrage

an dem Kabel

einen Limiter entdeckt

den sie wieder ausbauen mussten

oh Gott

nein toll

also wir konnten ja

stundenlang Geschichte erzählen

über Kabel und Netze

und ja

ja

das wäre vielleicht auch mal

genau

ja warum eigentlich nicht

und ähm

naja

jedenfalls hieß es dann

so okay

wir haben

wir haben sie einfach mal

so auf ein anderes

Kabelpaar umgeswitcht

mal gucken

wenn es

wenn es dann geht

dann ist ja

dann ist es auch gut

so

aber im Verlauf

dieser ganzen Prozedur

musste ich halt

alle meine Geräte

irgendwie ausstecken

und alles neu starten

und irgendwie

diverse Dinge

ja und ähm

wir sind jetzt übrigens

vom Raspberry Pi

auf Vectoring gekommen

ach so Mist

ja richtig

wir waren ja eigentlich

bei dem Raspberry Pi

ja aber das ist

das Problem dabei ist halt

dass sich bei dieser Aktion

halt der Raspberry Pi

gemutet hat

und

ja ich hinterher

festgestellt habe

nachdem das Ding

wieder hochgefahren ist

dass ich mich nicht

mehr drauf einloggen konnte

ja da war dann

ja

mein Passwort vergisst

dann ist natürlich

ja das kann ich alles

aber ich kann halt nicht mehr

SH Demon ist da irgendwie

nicht hochgefahren

ich kann das Ding noch anpingen

aber ich komme nicht mehr drauf

blöd

und dann habe ich halt

irgendwie gemerkt

so

verdammt

ich habe auch keinen Monitor mehr

den ich da anschließen kann

weil die habe ich inzwischen

alle verschenkt

oder

irgendwie

verschrottet

bring ihn mal mit

dann können wir hier anschließen

naja

das können wir mal probieren

und jetzt weiß ich nicht so richtig

wie ich das Ding

wieder ans Laufen kriege

und ja

ich habe da noch

diverse

ein

ein

mein Freifunkruder

hat es auch erwischt

das ist auch irgendwie

seit dieser Aktion

läuft der irgendwie

nicht mehr richtig

überhaupt

also in diesem Schrank

in dem man ganze Elektronik

Bastelkram

sich befindet

das ist irgendwie

das ist da oben drin

das Weihnachtschaos

das ist ausgebrochen

oh

ein Jahr

ja

also das ist halt echt blöd

weil jetzt habe ich keine

Temperaturdaten mehr

ich habe irgendwie

meine Heimautomatisierung

funktioniert nur noch so

rudimentär

quasi

weil das lief ja alles

über Home Assistant

aber du kannst ja schon noch

die also

ich kann schon Lichter

einstellen

Wasser, Licht

Suche

funktioniert noch

ja

okay

ja aber ich muss dafür

diese Philips

EU App benutzen

oh

wie so ein Tier

du kommst auch noch

in deine Wohnung rein

zum Beispiel

das geht alles

ja

man weiß ja immer nicht genau

also wo das dann

immer gesteuert wird

wenn das dann so

ein Gerät zentral

ja

ja

der Raumautomatisierung

mit Raspberry Pi

ist ausgefallen

weil tatsächlich

dein Vectoring

nicht funktionierte

und deswegen

die Geräte neu gestartet

wurden

und du nicht mehr

PSS-Hacken

denken kannst

weil du kein Monitoring

mehr hast

und so

nicht mehr auf

das System zugreifst

ja

okay

ja

schlimm ne

ja

katastrophal

ja

also ein kleines

Externs-Display

ja

mal mitbringen

oder so

ja

also ich kriege

dieses Problem

wahrscheinlich schon

irgendwie in den Griff

ich muss halt bloß

also halt irgendwie so

wie viel Zeit

der Joffen

für seine

Home-Automatisierung

hat

wenn er seit einem Jahr

sich nicht mehr

darum gekümmert hat

dass der Wespi bootet

ja

der funktioniert

ja

ja

ja

und dann ist auch

nochmal der Verstärker

ist irgendwie

das ist auch so

in der Ecke

der ist super laut

der ist

der lüftet immer so rum

und zwar nicht ein bisschen

sondern der ist so richtig

fies laut

da muss ich auch

mir noch irgendwas

einfallen lassen

vielleicht kann ich das

ja auch

mit dieser ganzen

Home-Automatisierungsgeschichte

so ein bisschen

mehr

äh

äh

besser

ich weiß noch nicht genau

wie man das

also da gibt es halt

dann halt

einige Optionen

die man irgendwie

nehmen könnte

ich könnte zum Beispiel

ähm

mehrere Raspberry Pis

nehmen

und da irgendwie

Boxen dranhängen

weil ich hätte ja zum Beispiel

auch sowas gerne wie

dass die Musik

in unterschiedlichen Räumen

irgendwie

die gleiche Musik

abgespielt werden könnte

zum Beispiel

ja

also ich

theoretisch

jetzt auch könnte

aber einmal

brummt der Verstärker so

dass ich ihn nicht mehr benutze

und dann müsste ich halt

Kabel durch die ganze Wohnung ziehen

was ich eigentlich auch nicht will

ja

und ich glaube

das kann man mit Raspberry Pis

auch hinkriegen

oder man nimmt halt irgendwie

eine kommerzielle Lösung

man könnte auch

diese Apple HomePods

oder so verwenden

aber

mhm

das ist schon ein bisschen teuer

dass man das irgendwie

in jeden Fall

umstellen könnte

du hast glaube ich

das Protokoll umgestellt

also nicht per Bluetooth

sondern per

Funk

ja

und zwar hast du die alten

terrestrischen Frequenzen genommen

die man jetzt abgeschaltet hat

wenn ich mich recht erinnere

das ist für die

Temperatursensoren

ja

ja ja

mhm

aber so für Audio

würde ich halt wahrscheinlich

ganz normales WLAN nehmen

nur

ja

müsste man auch mal

also

könnte man wahrscheinlich auch

irgendwie so ein Python Projekt

draus machen

also ich meine

jetzt gibt es Boxen

die das können

WLAN vernünftig

ähm

ne

nicht so richtig

also außer

außer diese Fertiggeschichten

von von Apple

oder äh

äh

Sonos

es gibt halt noch so eine

Spezialprojektörlösung von Sonos

äh

waren die nicht mal pleite?

Sonos?

ich glaube den gibt es ganz gut

dann habe ich mich verguckt

aber ähm

ja

also man hat da auch so einen blöden

Login-Effekt bei Sonos

und ähm

ein ein Log

Login?

Login?

ach

also du bist wieder auf das System gebunden

ja genau

nö die gibt

die gibt es noch

die gibt es noch

mhm

oh

na

Mann

das ist der 10.9.

ok

na ja

na ja

na ja

gut

ein bisschen eingebrochen

ja

aber im Grunde

könnte man da auch mal

so ein bisschen was

weil man kann ja

von dem Raspberry Pi

auch irgendwie

den könnte man sozusagen

als Endpunkt

für WLAN

irgendwie verwenden

und dann halt

das Audio

über einen ganz normalen Verstärker

und dann eine Box

oder halt eine Aktivbox

irgendwie

ne

ja

ja

wiedergeben

ja

das wäre halt noch so eine Idee

ich muss da

ich muss da mal irgendwas machen

ich muss auf diesen Verstärker loswerden

ich weiß nicht

ja

wir müssen mal

so ein Display für dich organisieren

dann irgendwie mal

einen Monitor hinschleppen

und dann kriegen wir das alles

schon wieder zu laufen

ja

ja

ja

heute haben wir gar nicht so viel

über Python geredet tatsächlich

so ein kleines bisschen Exkurs mäßig

was machen wir zum Pandas machen

sehr viel über Web

sehr viel Chaos

ich hoffe ihr seht uns das heute nach

obwohl wir der Python Podcast sind

ja

wenn ihr keine Lust habt

dann hört einfach nicht zu

ja ich glaube das ist ja zu spät

wir sind ja schon am Ende der Sendung

zu spät

also dem

ja

ich hoffe es ist doch was ihr

davon gehalten habt

ob ihr mehr von solchen Folgen

auch haben möchtet

also ob ihr viel mehr

über Python milchen möchtet

wie immer an

hello.pythonpodcast.de

ich hoffe ihr hattet Spaß

auch mit Pandas

mit Request.html

mit dem

kleinen Einflug über den Recipe

und mit ganz viel Browser

und Rust

und ja

Safari Byte Range Radar

und

was man alles so machen kann

wie mein Mainface Cloud

auch von der Cebit

ja

ja

ja

GrafQL mit Django

haben wir noch

glaube ich erwähnt heute

ja

wir würden uns freuen

wenn ihr das nächste Mal

auf jeden Fall wieder zuhört

genau

und dann denke ich

melden wir uns wieder

im nächsten Jahr

und

mit der nächsten Folge

in die Weihnachtspause

wobei jetzt ja eigentlich

zum Hören gar nicht Pause ist

sondern nur

ja vielleicht sollte es ja auch

erst zwischen den Jahren

oder

schon

dafür ist die Folge

eigentlich auch gedacht

na genau

was zu hören hat auch

ja

ja

uns hat es wieder Spaß gemacht

euch auch

und dann

bis zum nächsten Mal

bis zum nächsten Mal

kommt gut rein

kommt gut raus

kommt gut wo auch immer hin

ihr wollt

tschüss

tschüss