Transkript: Javascript Frontends

· Zurück zur Episode

Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.

Dominik

Ja, herzlich willkommen, liebe Hörer und Hörer.

Dominik

Willkommen beim Python Podcast in der 20.

Dominik

Episode heute.

Dominik

Wir sind wieder im Homeoffice, wie man es so macht, dieser Tage.

Dominik

Remote dabei.

Dominik

Ich hoffe, wir können uns gut verstehen.

Letzte Folge war etwas mehr.

Dominik

Da war quasi inhaltlich sehr toll.

Dominik

Wir haben uns vergessen, den Podcast zu erwähnen.

Jochen

Das war auch echt blöd.

Jochen

Genau, das ist der Podcast von Thomas heißt Pi Data Deep Dive.

Jochen

Und ja, sehr empfehlenswert.

Ja, genau.

Dominik

Kann man das schon hören.

Dominik

Was machen wir heute?

Jochen ist natürlich wieder da.

Dominik

Ich bin in meiner Hauptstentrale, Jochen im Wintergarten.

Jochen

Ja, willkommen, Dominik.

Jochen

Es ist jetzt so eine etwas ungewohnte Situation.

Jochen

Wir sind irgendwie beide remot und wir haben hier auch noch so ein Video dabei laufen, aber das ist irgendwie so ein bisschen eigenartig.

Dominik

Das ist nicht so richtig zum Anfassen.

Dominik

Normalerweise sitzt man in meinem Podcast ja immer bei sich gegenseitig auf der Couch.

Dominik

Und ich kenne das auch, wenn ich Podcasts höre, dass man immer bei den Menschen, die es machen, irgendwie mit dabei ist.

Dominik

Und das ist gerade so ein bisschen schwierig, aber nett.

Jochen

Natürlich nicht so richtig.

Dominik

Heute machen wir Frontend mit Python und oder wie man das verbindet mit Python.

Ja.

So zumindest der Plan.

Jochen

Weil da irgendwie wir beide halt so ein bisschen irgendwie mehr mit zu tun haben im Moment.

Dominik

Struggle.

Jochen

Ja, genau.

Jochen

Aber vielleicht, ich habe auch noch so, ich weiß nicht, du hattest da ganz viele Fragen da in diese Themenliste reingeschrieben.

Jochen

Und ich hatte mir dir auch mal, ich habe dann auch selber noch Sachen reingeschrieben, haha.

Jochen

Und zwar zum Beispiel könnte man auch so ein bisschen metamäßig über Podcasts und Audio-Hardware und so reden, weil der hat sich ja ausgetan.

Oh ja, oh ja.

Jochen

Ich meine, das ist natürlich jetzt irgendwie, alle Leute beschäftigen sich jetzt so ein bisschen mit, oh, man macht ganz viel mehr mit Video und Homeoffice und so.

Jochen

Und komisch wäre eigentlich ganz nett, wenn man mal Internet hätte und man hat es aber irgendwie keins und so.

Jochen

Und da ist das auch ein bisschen schwierig, jetzt so Audio-Hardware zu kriegen, weil das ist alles irgendwie ausverkauft.

Dominik

Ja, ich wollte auch sagen, wir wollten das tatsächlich schon, ja.

Dominik

Ja, sagt mal, wie ihr es Bescheid fandet jetzt hier mit dem Remote, mit dem Setup, wie sich das anhört im Vergleich zu sonst.

Dominik

Übrigens die Liste, die du da geschrieben hast, ja auch, ne?

Dominik

Also es gibt so ein paar Menschen, die mir dann eine Einkaufsliste schreiben, was ich alles so mitbringen soll.

Dominik

Und ich schreibe es auch völlig durcheinander.

Dominik

Also ich organisiere das so, dass ich den Supermarkt durchlaufe von Anfang bis zum Ende.

Dominik

Da muss ich nicht die Liste immer durchscrollen.

Jochen

Ja, ja, ja, es gibt auch offenbar unterschiedliche Strategien und ich wage nicht zu beurteilen, ob jetzt die eine sinnvoller ist als die andere.

Aber es geht ja nicht.

Es sind alle valide.

Jochen

Genau, aber das ist das Problem.

Dominik

Wir machen das sowieso immer, wir reden ja immer durcheinander und kommen dann wieder zurück zum eigentlichen Thema von daher.

Jochen

Wir kriegen das schon irgendwie alles hin, genau.

Jochen

Also zum Beispiel, was ich an neuer Audio-Hardware habe, ist, was ich schon immer mal ausprobieren wollte und jetzt habe ich halt irgendwie das dann auch mal besorgt, ist ein neues Headset.

Jochen

Normalerweise verwenden wir immer diese DT297 von Bayer Dynamic.

Jochen

Und die funktionieren auch super, also habe ich eigentlich nichts dran auszusetzen.

Jochen

Nur das Problem ist, also ich bin, ich bin so Brillenträger und habe große Ohren.

Jochen

Eine etwas ungünstige Kombination, die drücken mir, mir drücken die so ein bisschen auf die Ohren.

Jochen

Also auch unangenehm.

Dominik

Bei dir sieht man auch die Haare gar nicht, die sind auch länger geworden.

Dominik

Wir waren alle in diesen Zeiten jetzt alle nicht beim Friseur alle so Mathe und Bart.

Jochen

Wie heißt der bei Harry Potter so?

Jochen

Ich werde immer so ein bisschen nach und nach Hagrid ähnlicher.

Jochen

Vor allem die Statur, jetzt habe ich auch die anderen Attribute.

Dominik

Ja, tatsächlich.

Dominik

Also würde auch sagen, dass das der Charakter in Harry Potter, den du am nächsten kommst von der Optik, ja, ja.

Jochen

Und genau, ich brauche halt große Kopfhörer-Muscheln und das bei dem DT797 ist auch ein Bayer Dynamic-Headset und da ist das halt irgendwie so ein bisschen größer, das ist ein geschlossenes.

Dominik

Ich wollte ja gerade welche rein, aber der hat das leider kein Mikrofon.

Jochen

Ah, okay.

Das ist mein Studio Kopfhörer.

Jochen

Das kann man jetzt natürlich im Podcast nicht sehen.

Jochen

Aber genau, ja, das sind auch so Studio-Aphörer.

Jochen

Also das ist auch die Headset-Variante von einem, von dem DT790 Pro oder so, das ist auch eigentlich ein Studio-Kopfhörer.

Jochen

Und da ist halt noch so ein Mikrofon dran gebastelt und ein Kabel dran.

Jochen

Und ehrlich gesagt gefällt mir das, und das Problem, was ich auch habe, ist halt dadurch, dass das halt nicht so richtig auf die Ohren passt und dann liegt das halt auch auf der Brille so ein bisschen auf und dann quetscht mir das die Brille so ein bisschen.

Jochen

Und das ist jetzt tatsächlich mit dem hier deutlich besser.

Jochen

Also ich bin mal gespannt.

Jochen

Das Mikrofon sollte das gleiche sein, also da sollte es keinen großen Unterschied geben.

Dominik

Ja, okay, aber immerhin Komfort ist ja auch wichtig.

Genau.

Dominik

Wenn man jetzt so lange sitzt und die ganz langen Folgen immer aufnimmt, weil wir viel zu erzählen haben, dann sollte das auch beim Tragekomfort entsprechend, ja.

Jochen

Ja.

Jochen

Und dann hatten wir noch ein.

Du hast gebastelt.

Jochen

Du meinst diese mit dem HMC66, diese Bastelgeschichte?

Dominik

Also du hast irgendwas gebastelt, du hast was zusammengesteckt und hast dann so eine Klinke an so einen XLR-Kopfhörer dran gemacht und hast das Ganze in ein Handy reingesteckt.

Jochen

Ah, das genau, das ist total cool.

Jochen

Das ist, denkt man sich eigentlich diese ganzen Geschichten, das sollten nochmal inzwischen gelöste Probleme sein, ne, irgendwie Headsets für Computergeschichten, das gibt es doch alles schon lange.

Jochen

Aber es ist irgendwie gar nicht so.

Jochen

Also wenn man das so haben möchte, dass es ordentlich klingt, dann ist das immer noch eine ziemliche Bastelei, beziehungsweise da muss man halt viele Dinge einfach wissen.

Jochen

Und selbst wenn man sich damit so ein bisschen beschäftigt, reicht das nicht.

Jochen

Ich kann auch sein, dass ich jetzt total einen Unsinn alles erzähle, weil so ein totaler Experte für diesen ganzen Audiokram bin ich natürlich auch überhaupt gar nicht, aber so nach und nach bekommt man dann halt Dinge mit.

Jochen

Und eine sehr interessante Geschichte, die ich halt letztens gesehen habe, war, dass es gibt ein Headset, das so äh, das auch sehr gut klingt.

Jochen

Das ist das HMC66X Superlux, weiß nicht, was das für eine Firma ist, keine Ahnung.

Jochen

Das ist auch super billig.

Jochen

Und klingt trotzdem super, also eigentlich alles ganz toll, ist natürlich nicht so gut verarbeitet wie die Bayer Dynamik-Dinger.

Jochen

Aber eigentlich sehr empfehlenswert und verwenden auch ganz viele Leute.

Jochen

Und das hat so ein Problem.

Jochen

Also, was einem immer dazu gesagt wird, wenn Leute das benutzen, sagen sie so, ja, das ist total toll.

Jochen

Und eigentlich ideal, aber man muss so ein bisschen, es hat so ein paar Probleme, wie zum Beispiel normalerweise, also müsste man eigentlich mal ausholen, wo ist eigentlich der Unterschied zwischen dynamischen und Kondensatormikrofonen.

Jochen

Also nur mal so, um die Klammer aufzumachen, wir machen die gleich wieder zu.

Dominik

Ich wollte davon eine extra Folge hören.

Jochen

Ja, also die meisten, äh, die meisten kleinen Mikrofone sind tatsächlich Kondensatormikrofone, weil man sie deutlich kleiner bauen kann.

Jochen

Und der Unterschied ist eigentlich in der Bauart sozusagen dynamische Mikrofone sind so ein bisschen wie ein umgekehrter Lautsprecher.

Jochen

Die funktionieren auch, ohne dass man da irgendwie, ohne dass sie irgendwie selber aktiv sein müssen.

Jochen

Das heißt, man kriegt ein Signal raus, ohne dass das irgendwie selber irgendwas macht.

Jochen

Und das ist ganz praktisch.

Jochen

Und sie haben halt so als Charakteristik, sie sind unempfindlicher gegenüber Störgeräuschen.

Jochen

Und ja, so reagieren da einfach so ein bisschen gutmütiger oft.

Jochen

Sind aber auch nicht so, kriegen nicht so feine Unterschiede hin und lösen nicht so fein auf wie jetzt ein Kondensatormikrofon.

Jochen

Kondensatormikrofone sind so ein bisschen anders.

Jochen

Die sind nicht passiv, sondern da muss Strom dran sein, sonst funktionieren die gar nicht.

Jochen

Und da kommt dann halt aktiv ein Signal raus, das die dann halt erzeugen.

Jochen

Und das Problem dabei ist, dass wenn das, also man kann sie sehr klein bauen, das ist eigentlich schön, aber wenn sie sehr klein sind, dann je kleiner die sind, desto mehr muss man das Signal verstärken.

Jochen

Was dann natürlich auch wieder Rauschen reinbringt und so.

Jochen

Also es gibt auch sehr gute, sehr kleine Kondensatormikrofone, aber die werden dann halt sehr teuer, sehr schnell.

Jochen

Was man normalerweise macht, wenn man guten Klang haben möchte, ist halt, man nimmt dann halt Großmembran-Kondensatormikrofone, die halt dann schon mehr Signal, wo man halt weniger verstärken muss sozusagen.

Jochen

Das ist halt so das ist so das, was man in Studios verwendet für Sprachaufnahmen.

Jochen

Und so ein Ding habe ich auch umliegen, könnte man auch verwenden, aber man hat das normalerweise an so einem Arm und dann in so einer Spinne hängen und das ist so ein bisschen unhandlich, weil man irgendwie immer den gleichen Abstand einhalten muss dazu und so.

Dominik

Wenn du das nicht machst, dann steht das irgendwie vor dem Bildschirm und versperrt den ganzen Sichtvektor.

Jochen

Genau, also das ist alles so ein bisschen, hm.

Jochen

Daher mag ich das mit den Headsets eigentlich lieber.

Jochen

Aber die klingen halt dann vielleicht nicht ganz so gut, aber auch schon ziemlich klasse.

Dominik

Und jetzt kommt der Heck und wir sind übrigens beim Python-Podcast, die bei Jochen.

Ach ja.

Jochen

Naja, also der Witz ist eigentlich, also deswegen, warum ich das eigentlich erzähle, ist, man braucht, also die brauchen halt Strom, ja, sonst funktionieren die nicht.

Jochen

Und Standard für Stromversorgung, man nennt das dann irgendwie von Atomspeisung bei Kondensatornmikrofonen, ist halt irgendwie 48, 24, 48 Volt normalerweise, sag ich mal so.

Jochen

Es gibt aber auch 24 Volt und es gibt sogar 12 Volt.

Jochen

Und dieses HC66X, das klingt bei 48 Volt und 24 Volt, also funktioniert es zwar, aber es klingt schrecklich.

Jochen

Weshalb, da muss man immer aufpassen, da gibt so ein paar Reviews, unter denen, wenn man das irgendwo in einem Online-Shop sieht oder so, meistens oft ist dann so ein oder zwei dabei, die sagen: Das wird immer so gelobt, das klingt ganz scheußlich, ich verstehe das gar nicht.

Jochen

Wie kommen Leute auf die Idee, dass das gut ist?

Jochen

Das klingt doch ganz, ganz, klingt doch total elend.

Jochen

Und ich fürchte, der Grund dafür ist meistens, dass die Leute das dann halt irgendwie an einem Audio-Interface betreiben, das halt dann die falsche Phantomspannung hat, sozusagen.

Jochen

Und dann geht es halt nicht richtig.

Jochen

Womit das gut funktioniert, ist halt 12 Volt Phantomspannung.

Jochen

Und was man halt tun kann, ist entweder man lütet sich da so einen Widerstand rein, das ist halt so eine beliebte Lösung.

Dominik

Jetzt wird es interessant.

Jochen

Das ist aber für mich auch schon zu, das ist zu weit.

Jochen

Nee, mach ich halt nicht.

Jochen

Ich bin dann in den einfachen Weg gegangen und hab dann so eine, man kann da irgendwie so eine Box zwischen Mikrofoneingang von dem Audiointerface und das Headset schalten.

Jochen

Das kostet dann auch nochmal 20 Euro oder so, keine Ahnung.

Jochen

Und dann halt auf 12 Volt Phantomspannung das runterriegeln.

Jochen

Oder da kann man das dann auch in dieser Box kann man das irgendwie einstellen.

Jochen

Und ja, das habe ich dann halt benutzt und dachte mir da so, eigentlich, naja, selbst plus dieses Ding und plus den ganzen Kabelaufwand, ist es immer noch für den Preis eigentlich ziemlich unschlagbar.

Jochen

Und was ich aber, und ich dachte immer, bitte?

Wie teuer ist denn das?

Dominik

Ich gucke gerade.

Jochen

Das kostet 39 Euro oder so.

Jochen

Also es ist echt nicht teuer.

Jochen

Und ich dachte Albert immer diese Kondensatormikrofone, die brauchen halt immer einen XLR-Anschluss, ne, also dieses dreipolige Ding da.

Jochen

Und ja, das ist halt, du brauchst halt immer ein eigenes Audio-Interface eigentlich.

Dominik

Normalerweise hat man an seinem Computer nichts sofort oder als Standard-Anschluss sagen.

Dominik

Und dann hast du dir was gebaut, was richtig toll ist.

Nee, das habe ich auch gesehen.

Jochen

Das habe ich auch in diesem Sender Gate-Forum gesehen.

Jochen

Ich habe da nichts gebaut, ich habe es auch wieder nur gekauft.

Jochen

Man kann das bauen auch selber, wenn man das mag.

Jochen

Aber ich habe es nicht gebaut, ich habe es auch wieder nur gekauft.

Dominik

DD, kauft dir die Welt, wie die DD gefällt.

Jochen

Ja, es ist, also wenn mir das jetzt Spaß machen würde, das selber zu löten oder so, aber es macht keinen Spaß und ich kann es auch nicht adapten.

Dominik

Jedenfalls hast du das Ding auf eine Klinke adaptiert.

Dominik

Und jetzt kannst du das tolle Headset sogar in dein Telefon stecken.

Dominik

Genau.

Dominik

Und kannst mit dem coolen Headset Podcast aufnehmen über das Telefon.

Jochen

Genau, ich dachte immer, irgendwie an der Klinke gehen nur dynamische Mikrofone.

Jochen

Auch die meisten Mikrofone, die man über Klinke anschließt, sind dynamisch und die klingen halt nicht so gut.

Jochen

Und das stimmt aber gar nicht.

Jochen

Zum Beispiel ist es halt so, dass die meisten wirklich kleinen Mikrofone, also auch diese Dinge, die man sich so ans Hemd steckt oder so.

Jochen

Wir haben ja auch mal am Anfang damit angefangen, mit diesen Rode, ich weiß nicht, wie man das ausspricht, Lavalier, Lavalier, keine Ahnung, Mikrofon.

Jochen

Das sind auch üblicherweise Kondensatormikrofone und die kriegen ihre Phantomspeisung halt über die Klinke und da kommen halt so anderthalb Volt raus ungefähr.

Jochen

Und diese 1,5 Volt reichen halt für dieses HMC-Headset auch.

Jochen

Das funktioniert.

Jochen

Das heißt, man braucht eigentlich nur einen Klinke auf XLR-Adapter und dann halt nochmal ein Ding, was halt auch irgendwie dann das zusammenführt, weil man halt ja nochmal einen getrennten Kopfhörer hat.

Dominik

Wir stellen euch da eine ausführliche und detailische Liste in die Shownotes.

Jochen

Und aber der Witz ist halt, also was ich jetzt habe, ist halt, man steckt dieses Headset halt in diesen Adapter, aus dem Adapter kommt Klinke, dann steckt man irgendwie die Klinke, die Klinke steckt man dann halt in einen Klinke auf Lightning Adapter und dann steckt man diesen Adapter in halt ein Telefon zum Beispiel.

Jochen

Und es funktioniert tatsächlich.

Jochen

Und ich war letztens damit im Park unterwegs, das sieht so ein bisschen komisch aus, ne?

Dominik

Also ich wollte dich noch fragen, du hast gestern ja aufgenommen, hast einen kleinen Talk gehalten über Poetry beim Pi DDF.

Dominik

Da warst du im Park wirklich, weil ich habe noch reingeguckt bei YouTube.

Dominik

Oder hast du deinen Hintergrund geblendet?

Jochen

Nee, da habe ich den Hintergrund verändert, weil es mir so gerade so ein bisschen umgekehrt ist.

Dominik

Was machst du das mit OBS Studio?

Jochen

Was ist das denn?

Das kenne ich gar nicht.

Dominik

Das ist so eine Software, da kann man das ganz cool mitmachen.

Da kann man sagen.

Jochen

Das war der Zoom-Client und der macht das dann halt, da kann man das irgendwie ausstellen.

Ach, na dann, okay.

Jochen

Aber ich war tatsächlich mit dem Headset schon dann halt im Park und hab mit Leuten telefoniert und das Erste, was sie sagten, war so, oh, du klingst aber gut.

Dominik

Oh ja, na dann hat sich das vielleicht gelohnt.

Jochen

Und das ist natürlich irgendwie, ich hätte gar nicht mehr gesehen.

Dominik

Also ich telefoniere auch immer im Park mit meiner Freisprechknopf, der auf dem Display ist.

Dominik

Da steht dann Ton, laut, spreitwärts.

Jochen

Ja, aber das funktioniert nicht so richtig gut.

Jochen

Vor allen Dingen, wenn es windig ist, ist es halt blöd.

Jochen

Oder wenn ich gehe dann auch manchmal in der Gegend rum und dann zum Beispiel, wo Leute sich regelmäßig beschweren, ist, wenn ich über die Rheinbrücke gehe, weil da ist es windig und es fahren Autos vorbei.

Jochen

Und da verstehen meistens Leute dann nichts mehr und sagen so, oh, das klingt aber schlecht.

Jochen

Und naja, muss man gucken.

Jochen

Vielleicht, das nächste Mal prüfe ich das mit Headset, vielleicht geht das besser.

Jochen

Ja, okay.

Channels accepted.

Jochen

Bitte?

Dominik

Channels accepted.

Dominik

Und warum geht es über die Rheinbrücke?

Jochen

Ja, ich weiß nicht, ich gehe da spazieren.

Dominik

Achso.

Jochen

Ja, meistens zum.

Jochen

Zum Telefonieren.

Jochen

Ja, ja, ja, ja.

Jochen

Also meistens ist es halt so, wir sind halt im Hofgarten und dann kommt irgendwann die Ansage, ja, Steine ins Wasser werfen, dann müssen wir halt noch zum Rhein.

Jochen

Und dann gehen wir in die Rheinbrücke und dann unten zum Rhein und dann werfen wir Stein ins Wasser.

Dominik

Achso.

Dominik

Als nächstes werft ihr einen Stein für mich mit.

Jochen

Genau, also dieses Headset ist wirklich cool und was halt mit anderen wahrscheinlich gar nicht gehen würde, dass man das halt einfach so an ein Telefon anschließt oder so, das kann man damit machen.

Jochen

Und möglicherweise gibt es damit halt eine Möglichkeit, wenn man das jetzt noch irgendwie schaffen würde, irgendwie an Studiolink oder an Ultraschall bzw.

Jochen

Reaper das anzudocken, dann könnte man Leuten einfach sagen, hier nehmt diese Hardware, steckt das an euer Telefon, setzt euch irgendwo hin, wo es eine Sichtverbindung zwischen eurem WLAN-Access Point und eurem Telefon gibt und benutzt dieses Headset und dann hat man da eine ziemlich gute Audio-Verbindung.

Jochen

Und das wäre ja eigentlich schon.

Jochen

Achso, und ja, was auch praktisch ist, wenn man das Zoom H6, das ist auch so ein Audio-Interface, wo man vier Headsets dran stecken kann, wenn man das verwendet, das kann auch 12 Volt direkt Phantomspeiserung.

Jochen

Also an dem Ding klingen die HMC 660X auch direkt gut.

Jochen

Was natürlich auch sehr praktisch ist.

Jochen

Und das wollte ich eigentlich sagen.

Jochen

Das war mein erster Plan, das Ding einfach zu kaufen.

Jochen

Und dann habe ich festgestellt, es geht nicht, weil alle Leute Audio-Interfaces kaufen, gerade wegen Corona.

Dominik

Ich glaube, wir brauchen jetzt einen Webshop für so Audio-Podcast-Hardware.

Dominik

Denn der haben wir gerade großzügig beworben.

Vielleicht brauchen wir da vielen Dings oder so.

Jochen

Ja, Moment, Moment, Moment, ich bin noch nicht mit der.

Nein, okay.

Dominik

Wir machen aber gleich eine Chapter-Marker.

Dominik

Also Leute, ihr wisst ja, ihr könnt die Chaptermarks und die Sachen, die euch nicht so feucht sind, einfach überspringen und dann direkt aufs Frontend klicken.

Dominik

Wolltest du mal so als Hinweis machen?

Jochen

Ja, es gibt nämlich dann noch so ein bisschen mehr.

Jochen

Wir sind ja jetzt auch mit, das hatten wir letztes Mal auch gemacht, aber, oder benutzen wir ja immer, wenn wir Remote-Geschichten machen, Studio Link, und das Knackste und Knickste und so immer mal so ein bisschen.

Jochen

Und natürlich gibt es dann halt so gewisse Lösungen, dass man das dann halt lokal so Double-Ender-mäßig irgendwie auch nochmal aufnimmt und in die Spur hinterher irgendwie mitverwendet oder aber das ist alles schwierig und dann gerät das von der Zeit her irgendwie so aus Synchronisation alles nicht so schick.

Jochen

Und dann haben meistens erschließt man sich dann in der Lebman halt mit den Knacks an.

Jochen

Aber das klingt schon relativ furchtbar.

Jochen

Und jetzt haben wir halt hier eine Beta-Version von Studio Link und die knackst praktisch gar nicht.

Jochen

Jedenfalls.

Dominik

Ja, wir werden es hören.

Jochen

Wir werden es dann hören, aber nicht, dass ich das jetzt irgendwie bisher bemerkt hätte.

Jochen

Also für mich klingt das momentan alles sauber und machen wir schauen.

Jochen

Weil das ist natürlich das Problem.

Jochen

Also eigentlich ist es natürlich auch doof, dass wir hier WLAN haben, müsstest eigentlich ein Kabel legen, aber das ist halt alles irgendwie so.

Dominik

Nee, du hast kein Kabel.

Dominik

Ich habe ein Kabel gesehen.

Jochen

Also ich könnte, was ich vielleicht temporär machen könnte, ich kann einfach ein Kabel dann halt immer hier durch die Tür liegen.

Jochen

Aber das Problem ist ja der Wintergarten, der ist einfach sozusagen getrennt.

Jochen

Das ist eine Außenmauer dazwischen.

Jochen

Und ich weiß nicht, wie ich dieses Kabel durch die Außenmauer kriege.

Jochen

Das geht halt einfach irgendwie nicht.

Dominik

Bohrmaschine.

Jochen

Ja, gut.

Jochen

Ja, wo wir wieder beim Löten werden und so, das ist alles nicht so mein Problem.

Dominik

Also ich habe hier tatsächlich in die Etage ein LAN-Kabel gelegt.

Jochen

Okay.

Jochen

Ja, es gibt bestimmt irgendeine Lösung.

Jochen

Und wahrscheinlich sollte ich da auch mal was tun, weil WLAN ist auch echt tatsächlich nicht so geil, muss ich sagen.

Dominik

Also richtig mit in der Wand und Dose und so.

Jochen

Ja, das ist schon viel cooler.

Dominik

Ja, das war nicht Bohrmaschine, das war so ein Pressstemmhammer.

Dominik

Da musste man so die Wand aufruppeln und dann eine Diskabe rein und dann verspachteln und so.

Jochen

Klingt alles sehr schrecklich.

Was mal anfassen.

Jochen

Ja.

Jochen

Okay, lass mal überlegen.

Jochen

Habe ich da noch, äh, ist da noch irgendwas mit.

Dominik

Da steht noch Sencaster drin auf der.

Jochen

Achso, ja, das wäre halt auch noch eine andere Möglichkeit gewesen.

Jochen

Was das?

Jochen

Wie man das jetzt macht ohne Studio Link, aber weiß ich gar nicht, ob er.

Jochen

Also das ist halt, äh, also interessant finde ich es deswegen, weil es einen ganz anderen Ansatz verfolgt, ja, während wir.

Dominik

Ganz was, was ist das?

Jochen

Das ist sowas ähnliches wie Ultraschall, sozusagen.

Jochen

Also die Software, mit der wir das Ganze aufnehmen.

Dominik

Achso.

Jochen

Nur nicht, dass es halt eine Applikation ist, die nativ läuft, sondern das läuft alles im Browser.

Jochen

Und dass alle Leute connecten sich halt zu einem Server sozusagen und dann.

Dominik

Weil das ja so gut klappt mit dem Browser und Audio und Video, wie man ja jetzt ein GT und.

Jochen

Es gibt ja so ein paar komische Geschichten.

Jochen

Also, das zum Beispiel, das hat mich dann gewundert, als ich das dann mal ausprobiert habe, dass irgendwie alles geht dann da auf 44,1 Kilohertz und das ist ja sehr unüblich.

Jochen

Also normalerweise hast du ja immer Audio-Hardware, das ist immer alles auf 48 Kilohertz.

Jochen

Und das ist natürlich dann seltsam.

Jochen

Dann muss man dann halt irgendwie das irgendwie umsampeln und ich weiß nicht.

Jochen

Aber also Leute verwenden das und finden das gut.

Jochen

Und ich habe es jetzt tatsächlich noch nicht für einen Podcast, ich habe es jetzt mal ausprobiert, ich fand es auch super und ich finde die Idee halt total toll.

Jochen

Also eigentlich wäre es natürlich schon saucool, wenn man das alles im Browser machen könnte und nicht noch extra Software installieren müsste und das halt automatisch überall funktioniert.

Jochen

Aber gerade sowas wie, ich habe hier ja auch so ein Mischpool, das geht alles nicht, sondern es ist halt so, alle verbinden sich halt mit ihrem Ding halt irgendwo hin und dann werden dann auch mehrere Spuren aufgenommen, aber du hast halt nicht die Möglichkeit, das nochmal durch ein eigenes Mischpool zu schleifen oder so und dann da so regeln.

Dominik

Tragisch, tragisch, tragisch.

Jochen

Ja, natürlich, wer braucht das auch, ne?

Jochen

Es ist, ja, ja, ich verstehe schon.

Jochen

Es ist aber.

Jochen

Nehmen wir mal an, zum Beispiel eine Geschichte, für die man das schon braucht, ist halt, wenn man jetzt einen Livestream hätte.

Jochen

Ja, und dann hat man, macht man, hat man da so Dinge drin wie Audiokompression oder so, die man dann halt möglicherweise so hoch und runter regeln will und vielleicht noch irgendwie so eine, weiß ich nicht, eben so ein Soundboard und weißerte Teufel.

Jochen

Und das ist dann alles ziemlich, das geht dann alles nicht mehr so richtig, ne?

Jochen

Aber ja, naja, gut, okay.

Also ich weiß es nicht.

Dominik

Dann überlegen wir uns das nochmal.

Dominik

Was hältst du eigentlich davon, wenn wir diese Meta-Diskussion, diese Ausufernden an das Ende der Folgen stellen oder schneiden?

Dominik

Damit unsere Hörer, die sich auf das Frontend und Python freuen, nicht wie lange?

Dominik

20 Minuten oder.

Jochen

20 Minuten schon.

Weiß ich nicht.

Dominik

Ich habe nicht genau gestoppt.

Dominik

Nein, also ich mag das und ich finde das super, aber es ist halt off-Topic.

Dominik

Und schreibt uns doch mal an hallo at pythonpodcast.de, was ihr davon haltet, ob ihr gerne vorher so Sachen hört oder einfach sagt, nee, dann lieber vorher das Python-Thema und am Ende dann mache ich einfach aus.

Dominik

Oder ich höre das sehr gerne und bitte erstmal weiter die ganzen Metasachen.

Ja, gut.

Jochen

Sollte man vielleicht an den Schluss packen.

Jochen

Okay, alles klar.

Dominik

Jochen, welche von den Videokonferenz-Tools nimmst du eigentlich am liebsten?

Dominik

Also, wenn wir jetzt schon bei dem Thema sind.

Dominik

Das ist ja gerade ganz aktuell.

Jochen

Weiß ich nicht.

Jochen

Also, Zoom hat man jetzt tatsächlich von der Anwendung.

Jochen

Also man hört immer ganz schreckliche Geschichten davon.

Jochen

Ja, also man, genau, also was Security angeht und diese Geschichten ist, Zoom natürlich hat er eine ziemlich vernichtende Bilanz so bisher.

Jochen

Wenn man das bedient, ist es aber tatsächlich relativ nett.

Jochen

So fast am nettesten.

Dominik

Also ich habe Zoom mal auf einem Windows-Rechner angemacht und das hat mir direkt Dinge in die Registrie reingeschrieben und Rechte geklaut, die ich niemals erlaubt hatte, dass es hätte haben sollen.

Dominik

Und es hat auch vor allen Dingen nach Beenden der Applikation nicht alles so entfernt, wie man sich das vorstellt.

Dominik

Das fand ich ehrlich gesagt ein bisschen frech.

Dominik

Also was ich sehr cool finde und auch fand, ist Big Blue Button.

Jochen

Das habe ich tatsächlich selber noch nicht ausprobiert.

Dominik

Das finde ich tatsächlich bisher am schönsten.

Dominik

Das hat auch so verschiedene Räume.

Dominik

Das werden wir jetzt an Python Camp, das am Morgen stattfindet.

Dominik

Nee, morgen, übermorgen morgen.

Dominik

Ja, wahrscheinlich benutzen.

Dominik

Das ist sehr cool.

Dominik

Das ist auch Open Source, Foss.

Dominik

Ja, also falls ihr uns noch wollt, ich weiß nicht, wann wir die Folge wieder veröffentlicht bekommen.

Python Camp ist übermorgen.

Jochen

Das ist, genau, das ist übermorgen.

Dominik

Könnte knapp werden.

Jochen

Wir haben ja jetzt so ein bisschen Erfahrung schon, der paar DDF-Sprint war ja auch irgendwie virtuell.

Jochen

Das hat eigentlich ganz gut geklappt.

Jochen

Da haben wir Jitsi verwendet.

Jochen

Ja.

Jochen

Das war jetzt auch nicht so schlecht.

Dominik

Ja, Jitsi ist gut, wenn es mit bis zu 10, 15, 20 Leuten ist das ganz gut.

Dominik

Ja, also sehr gut sogar.

Jochen

Ja, also Zoom habe ich jetzt, haben wir jetzt bei dem letzten paar DDF-Treffen benutzt.

Jochen

Fand ich ehrlich gesagt sogar ein bisschen angenehmer.

Jochen

Aber so viel nimmt sich das alles nicht.

Jochen

Und dann ansonsten, was ich halt häufig benutze, ist halt Teams.

Jochen

Eher so, weil es halt, weil halt muss.

Nicht, weil man es sich.

Jochen

Das benutzt man immer nicht, benutzt man eigentlich fast nie, weil man es sich ausgesucht hat.

Jochen

Sondern das ist halt halt irgendwie dann so die.

Dominik

Ich dachte, das wäre bei Zoom so.

Jochen

Ja, ich glaube, die Idee dabei, das jetzt bei PyTDF zu verwenden, war auch, dass das halt ausprobieren, was für unterschiedliche Dinge, wie unterschiedlich funktionieren, auch im Hinblick auf die Europython, die er da da mitnimmt.

Dominik

Ja, Europython wird Zoom nehmen.

Dominik

Ja?

Dominik

Das ist schon fest, ja?

Jochen

Achso, das ist schon fest, okay.

Dominik

Die haben sich auf Zoom geeinigt, ja.

Jochen

Ja, naja.

Dominik

Also Jitsi hat es sich geschafft wegen dem Bug in Firefox, das tatsächlich halt noch nicht behoben ist und weil es vor allen Dingen sich nicht so gut skalieren lässt.

Dominik

BigBoo-Platten ist rausgeflogen, weil das mehrere Server bräuchte dann oder viele, die vom einen Richtungsaufwand her ein bisschen höher sind.

Dominik

Ja.

Dominik

Da blieb er nicht mehr so viel übrig.

Jochen

Ja, keine Ahnung.

Jochen

Also für mich ist das diese Frage einfach auch noch nicht geklärt.

Das ist halt.

Dominik

Der Chat von Europe geht übrigens über Discord.

Dominik

Ach, okay.

Dominik

Weil er gesperrt werden soll, weil der geflutet worden war, zwischendurch mal von ein paar bösen Buben.

Jochen

Sowas, sowas.

Jochen

Naja, also wie gesagt, also Teams funktioniert auch so halbwegs okay, aber ist ansonsten irgendwie nicht so meine favorisierte Software für diesen Kram.

Jochen

Was ich höre, was super sein soll, ist Miet.

Jochen

Also die Google-Geschichte.

Jochen

Habe ich aber selber auch noch nicht probiert.

Jochen

Hangouts kenne ich.

Habe ich vorher immer gemacht.

Ist dasselbe.

Dominik

Haben sie umgestellt aufs Miet?

Dominik

Also Hangouts haben sie geschossen.

Dominik

Das geht jetzt nur noch bei Miet und das ist eigentlich ganz gut.

Dominik

Also ich benutze auch öfter mal Wareby.

Jochen

Ja, Wearbuy finde ich auch gut.

Dominik

Ja, und das ist auch tatsächlich von der Qualität her in Ordnung, aber das ist halt, ab vier Leuten muss so Premium-Account bezahlen und deswegen.

Jochen

Ja, und ansonsten nicht, weil gut, es gibt noch Skype und sowas, aber das ist alles, das verwendet eigentlich auch fast niemand mehr.

Dominik

Ich würde gerade sagen, nimmt das noch jemand.

Dominik

Aber man kann glaube ich sogar Videokonferenz einen Stack machen, habe ich dessen gehört.

Jochen

Oh, aber was ich, ah nein, nein, eine Sache, die ich super finde tatsächlich, das benutze ich privat eigentlich.

Jochen

Ich habe noch nicht erlebt, dass das jemand irgendwie in so einem Berufskontext verwendet hat, aber privat.

WhatsApp-Video.

Jochen

Naja, gut, das hat also okay, das sind halt.

Sorry, könnten wir sagen.

Jochen

Nee, das habe ich tatsächlich, glaube ich, noch nie gesehen.

Jochen

Aber FaceTime, Apple.

Jochen

Und das funktioniert auch sehr, sehr gut.

Jochen

Also gerade in Situationen, wo man halt mit mehreren Leuten dann halt um so ein Gerät rumsitzt, ist das eigentlich ziemlich klasse, weil das dann halt auch so, es hat auch so nette Effekte, dass dann die Leute, die reden, werden dann halt größer und angezeigt und solche Sachen.

Jochen

Und das ist halt, äh, der Client auf den auf iOS-Geräten ist halt super.

Jochen

Also ich glaube, es gibt ja auch keine anderen, es gibt ja nur die.

Dominik

Ja, wir wissen ja mittlerweile, dass du diese Firma mit dem Apfel da ganz gerne magst.

Jochen

Ja, tatsächlich.

Jochen

Also das funktioniert einfach ziemlich gut.

Jochen

Ja.

Jochen

Kann man aber auch eben höchstens dann verwenden, wenn Leute eben zumindest irgendein iOS-Gerät haben oder irgendwie Apple Hardware, ja.

Jochen

Also insofern.

Dominik

Also das passiert übrigens, liebe Hörerinnen und Hörer, wenn zwei Backender sich über Frontend unterhalten in einer Folge.

Jochen

Dann reden wir über Videokonferenzsysteme.

Dominik

Ich wollte tatsächlich sagen, das Modul aus der Standardbibliothek, was wir noch vorstellen wollten, das wird Unitest Smog sein.

Dominik

Machen wir tatsächlich diesmal am Ende.

Dominik

Und fangen jetzt tatsächlich an, ein bisschen über das Thema Frontend zu reden, oder?

Ja.

Jochen

Alles klar, können wir gerne machen.

Dominik

Ja, News?

Dominik

Noch, na komm, News.

Jochen

War noch die News.

Jochen

Okay, warte.

Dominik

News Python jetzt.

Dominik

Also jetzt geht's los, Leute, ihr dürft jetzt einschalten.

Jochen

Ja, was hatten wir denn da so?

Dominik

Aufgeschrieben mit Language Creators Conversation.

Jochen

Das war das.

Dominik

Achso, das war das Panel mit Guido und dem Typen von Rust und äh,

nee, nicht Rust.

Jochen

Ja.

Jochen

Larry Wall von Pearl.

Jochen

Dann James Gosling von Java und André Halsberg, der hat Tubo Pascal in den 80ern mal entwickelt.

Auf Delphi und sowas.

Dominik

Ohne Galaxy Farbe.

Jochen

Ja, ja, der ist, da hat er so, oh ja, da müsste ja jetzt jemand mit so einem Rückstock und so einem Uraltag greisen.

Jochen

Das ist ja auch noch gar nicht so alt.

Jochen

Und der hat jetzt auch irgendwie war da eine der treibenden oder vielleicht die treibenden Kraft hinter TypeScript.

Jochen

Also ganz interessant.

Jochen

Ja, und ich weiß gar nicht, in welchem Rahmen diese Veranstaltung da gelaufen ist.

Jochen

Ich habe es halt eh dann als Podcast quasi gehört.

Jochen

Die Audioqualität ist leider ziemlich schrecklich.

Jochen

Also ich benutze dann immer in meinem Podcast-Player so ein Sight-Load-Ding.

Jochen

Das heißt, ich sage in meinem Browser auf dem Telefon, Sidelot an meinen Podcast-Player und dann leert es das Video runter, schmeißt das Video weg und das Audio geht dann halt als Podcast-Episode in meinen Player rein.

Jochen

Das heißt, ich habe das Video nicht gesehen, aber das Audio gehört.

Jochen

Und das ist natürlich ein bisschen, ja, das ist oft, auch bei vielen Talks ist das Audio oft relativ schlecht, sodass entweder muss ich dann die Lautstärke sehr hochdrehen oder man versteht halt nicht mehr.

Dominik

Wir wissen ja, du bist ein bisschen picky, was das angeht.

Jochen

Ja, gut, kann sein, aber das ist halt auch, das ist halt der Fluch, wenn man sich damit beschäftigt, dass man das dann plötzlich hört, wenn es nicht gut ist.

Jochen

Naja, aber das wirklich schrecke, das war teilweise kaum zu verstehen, weil so viele, fiese Nebengeräusche dabei waren.

Jochen

Aber inhaltlich sehr interessant.

Jochen

Also ich meine das natürlich auch total toll, dass man da mal irgendwie halt so zumindest vier der wichtigsten Entwickler von Programmiersprachen, die halt halt das, was wir hier so tun, also einen großen Teil von dem, was Leute so machen, halt wesentlich geprägt haben, halt dann die einen und fahren mal alle zusammensitzen und dann halt darüber reden, wie sie das so sehen, was so diverse Dinge angeht.

Jochen

Und das war, das war schon sehr interessant.

Jochen

Und ja, kann ich nur empfehlen, sich das mal anzuhören.

Jochen

Ist toll, ja.

Dominik

Habe ich noch nicht geschafft tatsächlich reinzuhören.

Jochen

Ja, also ich weiß nicht, ob es da irgendwas gibt, was man da.

Jochen

Naja, muss man sich einfach mal anhören.

Jochen

Also das fand ich als Geschichte, die jetzt gerade passiert ist, die man sich mal angucken kann, irgendwie sehr nett.

Jochen

Ansonsten, weiß ich nicht, was gab es noch alles für News-Geschichten.

Dominik

Django 1.1 ist End of Life.

Jochen

End of Life, ja.

Jochen

Das ist auch, dass das irgendwann passieren wird, ist klar, weil jetzt ist tatsächlich die letzte Python 2 unterstützende Django-Version weg.

Jochen

Das heißt, Python <unk> ist wirklich auch bei Django so endgültig raus.

Jochen

Das heißt ja, also wenn man da noch irgendwie auf so einer Longtime-Support-Version gesessen hat, dann ist jetzt auch mal Zeit, da irgendwie was dran zu machen.

Jochen

Eine andere Geschichte war noch, dass ich verwende meistens PyTest statt dem Unitest-Modul für, also und Unitest-Mock für Mogs, aber für die normalen Tests, also als eher Py-Test, weil ich das angenehmer finde.

Jochen

Also weil bei Unitest gibt es so ein paar, also bei dem Unit-Test-Case-Klasse zum Beispiel aus dem Unitest-Modul verwendet, so ein paar Dinge, die ich so ein bisschen komisch finde, wie halt diese Camel-Case-Notation, das kommt halt alles auch so ein bisschen.

Jochen

Ich glaube, das ist halt auch irgendwie sehr inspiriert von JUnit.

Jochen

Und das ist halt, das ist halt so ein bisschen komisch, das hinzuschreiben.

Jochen

Ich meine, man gewöhnt sich zwar auch dran, aber es ist irgendwie.

Jochen

Und Pytest hat halt eine sehr schicke Art, wie man, wie man Fixtures halt definieren kann.

Jochen

Das heißt, wie man sozusagen die temporäre Testdaten, die man sich dafür generiert, um halt einen Test ausführen zu können, wie man die halt.

Dominik

So baut, dass sie für die Fixtures passen und nicht für die reale Welt.

Jochen

Ja, genau.

Jochen

Und die kann man auch schön verschachteln und aufeinander abhängen lassen und so.

Jochen

Und das funktioniert eigentlich ganz.

Jochen

Es ist halt, ist halt nett und man, und dass man halt irgendwie direkt Assert verwendet und nicht irgendwie Methoden, die man dann aufwendet.

Ja, also jetzt, weil man da halt bei diesen Methoden sieht man nie so direkt, was passiert bei dem Assort, ist halt klar, dass da nicht noch irgendwie versteckt was schief gehen kann, weil da ist nichts mehr.

Jochen

Das ist halt.

Jochen

Und ja, also insofern Pi-Test mag ich mag ich durchaus lieber.

Jochen

Aber das Projekt hat halt irgendwie so auch ein bisschen eine unruhige Gefahr.

Jochen

Es gibt da gab irgendwie vier Maintainer und jetzt sind drei davon weg.

Oh.

Jochen

Ja.

Dominik

Das ist viel.

Ja.

Das sind 75%.

Jochen

Das sieht nicht so gut aus, ja.

Jochen

Und keine Ahnung.

Wird das geforgt?

Jochen

Ja, keine Ahnung.

Dominik

Vielleicht gibt es dann irgendwas anderes.

Jochen

Vielleicht, aber das ist halt natürlich, für mich ist es halt blöd, weil jetzt, oder ich meine, für alle ist es ja insgesamt halt blöd, weil jetzt muss man sich natürlich überlegen, okay, hm, was macht man denn jetzt?

Jochen

Naja, ich hoffe mal, dass sich das alles irgendwie zum Guten wendet, aber das ist natürlich so ein Problem generell, ne, bei Open Source Geschichten.

Jochen

Wie stellt man das eigentlich sicher, dass so ein Projekt nicht irgendwie plötzlich kaputt geht an irgendwas?

Dominik

Ja, manche einige Sachen sind ein bisschen nervig.

Dominik

Ich habe ja Pi Env, ne?

Dominik

Auch sehr lieb gewonnen eigentlich.

Dominik

Auch von dir hast du den schönen Tipp gegeben und das habe ich dann auch auf Windows zum Laufen gebracht tatsächlich.

Dominik

Das ist aber sehr schrottig in Visual Basic implementiert.

Dominik

Diese Windows-Variante und war nicht so super maintained.

Dominik

Ich habe es jetzt aber hinbekommen, indem ich mir einzelne unbeantwortete Pull-Requests gezogen habe, die Funktionalität so wiederherzustellen, dass man damit einigermaßen arbeiten kann.

Dominik

Aber ja, sowas ist ja ein bisschen ein Gefrickel.

Jochen

Ja.

Dominik

Ja, aber ich würde sagen, News hast du noch einen?

Hast du noch was?

Jochen

Lass mal schauen.

Dominik

Also außer dass es jetzt alles online ist, was wir schon wissen.

Jochen

Ja, ansonsten, ich habe hier noch einen Punkt aufgeschrieben, weil was halt auch vielleicht für andere interessant ist, halt so, es gab ein paar Artikel zu Django-Architektur.

Jochen

Ich weiß nicht, ob wir das fast aufmachen wollten.

Jochen

Lassen wir das auch einmal zu.

Dominik

Du meinst für heute, du machst das nicht mehr.

Jochen

Ja, weil wir jetzt eh schon.

Dominik

Fährt Models und so weiter.

Jochen

Genau, genau, genau.

Jochen

Das wäre sozusagen Service Layer und dieser ganze Kram.

Dominik

Ja, also wir wollten auch unbedingt dringend drüber reden.

Dominik

Also was war eigentlich, wann ist eigentlich das Django Metup Cologne?

Jochen

Das war schon.

Jochen

Das war jetzt, glaube ich, am Dienstag.

Dominik

Oh, dann habe ich es verpasst.

Jochen

Ja.

Du auch?

Jochen

Ich auch, aber ich konnte Dienstag halt nicht.

Dominik

Ja, ich auch nicht.

Ja.

Dominik

Ja, so ist das.

Jochen

Naja, ich würde sagen, das verschieben wir auf irgendeine Django.

Jochen

Django Folge.

Jochen

Django reden.

Dominik

Wir reden jetzt übrigens über Django-Backend und JavaScript Frontend.

Ja.

Ja.

Jochen

Genau.

Und beim Thema angekommen, Leute, unglaublich.

Super, dass ihr noch da seid.

Jochen

Manchmal dauert das halt so ein bisschen, da muss man sich auch die Zeit nehmen und da auch mal irgendwie.

Dominik

Möchtest du jetzt unseren Hörern vorschreiben, wie sie unseren Podcast hören sollen?

Jochen

Nee, dann kommt Kapitelmarken und da kann man sich das dann naja so sagen.

Dominik

Also Leute, Kapitelmarken gehen so, ihr klickt so lange auf Weiter, bis ihr das hören wollt, was ihr hören wollt.

Dominik

Oder auf zurück, um es immer noch mal zu hören, was euch besonders interessiert habt.

Dominik

Ihr könnt sogar bei bestimmten Podcast-Clients das auf Dauerschleife setzen.

Dominik

Und zum Einschlafen benutzen.

Genau.

Jochen

So.

Jochen

Ja, also wie kamen wir eigentlich auf diese Frontend-Geschichte?

Jochen

Wie sind wir eigentlich auf den Hund gekommen sozusagen?

Jochen

Oder was ist dein Problem?

Dominik

Ja, also wir entwickeln ja relativ viele Webtoys und auch Dango natürlich oder Flask, aber hauptsächlich Dango.

Dominik

Und das muss man ja, wenn man nicht die Dango-eigene Template-Engine benutzen möchte, was man natürlich machen kann für so grundsätzliche HTML-Dinge mit TSS und ein bisschen Bootstrap vielleicht, funktioniert das ja wunderbar.

Dominik

Aber wenn man so ein bisschen ein größeres Projekt machen will, dann ist es halt häufig so, dass man Dango mit einem Frontend benutzen möchte, einem Framework.

Dominik

Da ist dann Vue drin oder React oder Angular.

Dominik

Und Dango wird auch noch ohne Kopf, also Headless, benutzt und dann per APIs angesprochen.

Dominik

Und da gibt es immer so ein paar Falltrücke, wie man das implementiert und was da überhaupt alles dazugehört und worüber redet man da überhaupt, was heißt denn der ganze Quatsch?

Dominik

Und diese ganze JavaScript-Welt ist ja gerade für Python-Entwickler.

Dominik

Erstmal so ein bisschen ein Buch mit sieben Siegeln.

Dominik

Also ja, es gibt einige Backends, die sagen, oh, Frontend, aber wenn man da so ein bisschen drin ist, merkt man so, oh, das ist gar nicht so einfach, wie man früher vielleicht dachte, sondern das ist tatsächlich ein ganz schöner Stack da.

Dominik

Und da muss man auch ganz schon was können, ist ganz schon was wert, wenn man ein guter Frontendler ist.

Dominik

Und wenn man irgendwann mal diese Fullsteck richtung möchte, dann muss man das mit Sicherheit auch mal zumindest so gesehen haben, dass man weiß, was man da tun könnte.

Dominik

Und vor allen Dingen muss man das Frontend ja auch irgendwann mit seinem Backend wieder zusammenschnüren können.

Dominik

Das heißt, man muss zumindest ja dann die Schuhe zubinden und das irgendwo auf den Server packen, dass das dann auch beim Kunden oder bei einem selber auf dem Server irgendwie rennt und nicht wieder auseinanderfällt.

Dominik

Und wie man das alles macht, das wäre doch eigentlich mal ganz interessant, so ein bisschen zu besprechen.

Jochen

Ja, genau.

Jochen

Ja, ich bei mir ist es so vor allen Dingen, dass ich, ja, ich meine, genau, mir schon immer mal View angucken wollte und jetzt kam dann irgendwie so ein Ding vorbei.

Jochen

Ob ich nicht, äh, ich habe mich dann in diversen View-Meetup-Gruppen irgendwie so angemeldet, aber da ist dann irgendwie nichts passiert.

Dominik

Die Anmeldung ist immer das Wichtigste, ich habe auch so eine Metup-Gruppe.

Dominik

Da melde ich mir ganz viele Leute an, die kommen aber nie.

Dominik

Also 50 Leute ist die für bezahlte Leute die Grenze, die man erreichen darf an Anmeldungen, bevor es noch teurer wird.

Dominik

Und ja, ich habe halt wirklich 50 Leute in der Gruppe drin, das hört sich immer wieder auf.

Dominik

Also wir machen Computerspiele Unsinn.

Dominik

Und es sind drei Leute immer da.

Drei.

Jochen

Ja, genau, also das passierte nicht, sondern gab es irgendwann so den irgendwie diese Gruppe ist nicht mehr mehr intent.

Jochen

Möchtest du das nicht übernehmen?

Jochen

Dann habe ich dann einfach irgendwie, ohne darüber nachzudenken, einfach auf, ja, warum nicht geklickt.

Jochen

Und jetzt muss ich mal überlegen, was ich damit mache, aber ich wollte ja sowieso View lernen.

Jochen

Also das wäre auch noch so eine Idee, dass man das eventuell, das wäre einfach eine virtuelle View, Django, weiß ich nicht, Gruppe draus machen, wo man dann halt vielleicht mal so ein bisschen interaktiver versuchen könnte rauszukriegen, wie man das Ganze so benutzt.

Jochen

Und ja, müssen wir mal überlegen, aber das wäre halt auf jeden Fall eine Möglichkeit.

Jochen

Und aber View ist sowieso, also aus diversen Gründen, das, was ich mir jetzt mal halt im nächsten Jahr angucken.

Dominik

Was denn hauptsächlich?

Dominik

Also ich finde das so, diese Komponenten finde ich sehr intuitiv schön.

Jochen

Ja, das hast du aber geschmeidig.

Jochen

Das hast du eigentlich inzwischen.

Jochen

Also das ist keine.

Dominik

Also ich muss gestehen, ich habe mir Angular nur so ein bisschen angeguckt und React habe ich noch gar nicht gesehen.

Dominik

Aber ich finde das mit Vue die Komponenten hervorragend.

Dominik

Was das Wort macht, was das denn so ein Frontend-Framework oder

Jochen

ja, ja, genau.

Dominik

Aber gerade für uns Python-Entwickler ist erstmal so ein bisschen Overhead.

Dominik

Man installiert sich dann über NPM oder wie auch immer, also Note.js, was man da macht, dann das Paket von Vue und startet dann mit VueCreate ein Projekt und es werden erstmal 20.000 Pakete aus dem Repositorium gezogen und als Module da irgendwie gepackt.

Jochen

Tja.

Jochen

Ja, das ist halt, das ist so ein bisschen JavaScript, ne?

Jochen

Das gibt es halt keine Standardbibliothek und dann muss halt irgendwie alles Anabhängigkeiten bis ganz runtergeholt werden, was man irgendwie brauchen könnte.

Jochen

Und das ist alles unterstützt

eine Moment.

Das ist schon

Jochen

naja, so ist es halt.

Jochen

Da kann man jetzt auch nichts mehr dran machen.

Jochen

Aber also die Unterschiede, ich glaube, also die drei großen, so wie eben View, React, Angular, oder ich würde eher sagen, React ist das größte Ding zurzeit wahrscheinlich.

Jochen

Angular und dann Vue oder wie auch immer, ist ja auch egal, die kann man alle benutzen, die sind alle gut und so wahnsinnig groß sind die Unterschiede ja jetzt gar nicht.

Jochen

Es ist nur so, dass für mich ist View deswegen interessanter, weil halt es nicht irgendwie sozusagen das Spiel, dass das Projekt irgendwie von einer Firma ist, sondern es ist halt sozusagen unter den dreien das einzige Open Source Projekt in dem Sinne.

Jochen

Weil ich meine, klar, natürlich ist auch Angular und React ist irgendwie Open Source in dem Sinne, dass das halt das sehr code verfügbar ist.

Jochen

Aber wenn ich jetzt da irgendwas dran erlernen möchte oder möchte, dass sich das mehr in eine Richtung entwickelt, die nützlicher für mich ist und nicht so sehr für Facebook, dann kriege ich meine Pull-Requester ja doch nicht durch, weil die bei Facebook da drauf sitzt und oder bei Angular sitzt halt Google drauf und die entwickeln das halt.

Jochen

Das heißt, ja, das ist halt vor allen Dingen an die Bedürfnisse von denen angepasst und da sehe ich bei Vue zumindest die Chance, dass das halt so ist, weil ich glaube nämlich tatsächlich, dass die Anforderungen von Firmen wie Facebook oder Google halt unter Umständen ein bisschen anders sein könnten als das, was halt so man braucht, wenn man jetzt halt aus einem kleineren Rahmen irgendwie Dinge hochzieht.

Dominik

Ja, nicht leckern knotzen, Jochen.

Ja.

Jochen

Genau, warum nicht das nächste, genau, einfach Google-Konkurrenz.

Jochen

Ja, also es ist daher denke ich, Sview so für unabhängige Leute irgendwie schon das interessantere Projekt.

Jochen

Aber keine Ahnung, kann auch vollkommen falsch sein, wer weiß.

Jochen

Jedenfalls, wenn man sich, wenn man es halt eh mehr oder weniger egal ist, dann kann man ja vielleicht das mal verwenden.

Jochen

Und React und Angular habe ich auch schon so ein bisschen mit Dingen gemacht und React hat mir tatsächlich ziemlich gut gefallen.

Jochen

Angular nicht so richtig, ehrlich gesagt.

Dominik

Und warum?

Dominik

Und was ist das aber und was macht man da?

Dominik

Also vielleicht erklärst du nochmal so einen ganz Anfänger, was das denn überhaupt ist und wie man das so macht.

Jochen

Also ja, was der Witz daran ist eigentlich, also ich, ja, das ist die Frage, wo man ansetzt.

Jochen

Man könnte natürlich sagen, naja, zunächst einmal gibt es halt nur so Standardweb mit irgendwie HTML, CSS und JavaScript eigentlich mehr oder weniger nur so als unterstützt halt irgendwie bestimmte visuelle Geschichten oder so und dann irgendwann kam halt mit, da hat der Internet Explorer halt diese XHTP-Request-Geschichte mit eingeführt und damit wurde es dann halt interessant.

Jochen

Das Ganze lief dann so in Richtung, das lief dann halt unter dem Stichwort Web 2.0, weil jetzt halt Webseiten ohne eine komplette Seite neu rendern zu müssen, halt Dinge auf der Seite ändern konnten.

Jochen

Und dann hat man da irgendwie so ein bisschen dann die Browser-APIs waren alle unterschiedlich.

Jochen

Dann gab es halt eine Bibliothek, die halt dann irgendwie die unterschiedlichen Browser-APIs halt unter einer gemeinsamen API halt angesteuert hat.

Jochen

Und das war dann jQuery, das war sozusagen die Standard-API, die man dann verwendet hat.

Jochen

Und könnte man dann fragen, okay, jQuery, super, dann ist doch alles perfekt, alles Tutti, warum verwendet man das nicht heute immer noch?

Jochen

Und da ist die Antwort im Grunde, naja, also das wurde halt immer komplexer und irgendwann kriegst du halt, wenn die Applikationen, also ich würde sagen, tatsächlich für kleinere Geschichten kann man das auch immer noch so machen.

Jochen

Eigentlich ist es gar kein Problem.

Jochen

Also eine Geschichte, die halt dann irgendwann schwierig wird, ist halt, dass wenn man jetzt ganz viel State halten muss, ne, also wenn man jetzt eine Seite hat, auf der viele komplexe Sachen passieren, dann ist halt die Frage, wie merkt man sich jetzt eigentlich, was man alles tun muss, wenn jetzt jemand per Drag <unk> Drop irgendwas irgendwo hinzieht oder so.

Jochen

Wo gehen überall die Counter rauf und runter?

Jochen

Wenn irgendein Event passiert, geht da noch eine Notifikation an, dieses, das wird dann halt, wenn die Applikation sehr komplex wird oder die Webseite sehr komplex wird, dann wird das halt irgendwann sehr, sehr unübersichtlich, wenn man das halt mit jQuery macht.

Dominik

Also State nochmal für unsere Ganzanfänger ist, der Zustand, den ein Benutzer irgendwie gereicht hat, den er irgendwann wiedersehen will.

Jochen

Nee, State ist halt sozusagen der Zustand der Seite.

Jochen

Also den musst du ja selber handeln.

Jochen

Also wenn du nur HTTP machst, quasi, dann ist der immer am Server.

Da ist es einfacher.

Dominik

Ja, weil Request Response.

Jochen

Genau.

Jochen

Aber wenn du jetzt sozusagen nicht nur das machst, sondern du machst halt auch noch irgendwie X HTTP-Requests.

Jochen

Das heißt, du schickst irgendwas zum Server, merkst du halt so, musst dir halt dann irgendwie merken, ich habe das jetzt schon da gespeichert oder musst sie halt merken, ich habe es halt noch nicht gespeichert.

Jochen

Also das ist schon beim Server, das noch nicht, aber trotzdem hast du ja vielleicht schon irgendeine Aktion gemacht.

Jochen

So diesen, diesen Schutzfehler,

Dominik

Serververbindung abgebrochen.

Jochen

Ja, diesen State musst du jetzt irgendwie verwalten.

Jochen

Und den verwaltest du dann halt nicht mehr nur auf den Server, sondern halt auch auf dem Client.

Jochen

Und das geht dann halt irgendwann nicht mehr so richtig gut mit jQuery, weil das ist ja auch dann, du hast das ganze Zeug ja irgendwie dann in so JavaScript-Files, du hast nicht so richtig Module oder so.

Jochen

Geht alles nicht so.

Jochen

Also du kannst natürlich schon unterschiedliche Files haben, aber also es ist halt irgendwie, mit jQuery wird das halt irgendwie nichts ab einem gewissen Komplexitätslevel.

Jochen

Und im Grunde diese ganzen Frameworks sind halt alle dafür gebaut, um dieses mit diesem Problem umzugehen, sag ich mal.

Jochen

Jetzt als jemand, der eigentlich, ehrlich gesagt, keine Ahnung von diesem ganzen Kram hat, ne?

Jochen

Aber so aus meiner Perspektive von außen ist es so grob, dass wie.

Dominik

Du hast jetzt Absicht ein bisschen geflüstert.

Jochen

Ja, es ist schon so, eigentlich, ehrlich gesagt, es ist so ein bisschen außerhalb von dem, was ich normalerweise mache.

Jochen

Daher, keine Ahnung.

Jochen

Vielleicht rede ich auch großen Unsinn gerade.

Aber prüf das, schlag das nach und schreib es nicht in die Kommentare.

Jochen

Genau.

Jochen

Während jetzt man in jQuery zum Beispiel den DOM, also sozusagen die Baumrepräsentation der Webseite im Browser direkt manipuliert, dann macht man das halt in React View, wie auch immer, üblicherweise nicht direkt, sondern in einer Shadow-Dom oder keine Ahnung.

Der Schatten-Dom.

Jochen

Ja, das macht man, da gibt es immer Leute, die sagen, so war es so viel schneller, also direkte Dom-Manipulation ist halt viel schneller als irgendwie so einen virtuellen Dom irgendwie.

Jochen

Aber was einem das halt erlaubt, ist, dass man das halt trennen kann, also den State in dem Gerenderten von dem, was man halt, wo man die Manipulationen macht.

Jochen

Und das ist halt unter Umständen sehr wertvoll.

Jochen

Also ich würde sagen, dass...

Dominik

Kann man noch ein Beispiel dafür nennen, was passiert jetzt, wenn man jetzt einen Schatten, Dom, ein Dokument Operation Model, also irgendwie das, was da hintersteckt, hinter der ganzen gebauten.

Jochen

Die Idee ist so ein bisschen, dass du halt die Manipulationen da in deinem Schattendings da machst und dann nur guckst, du diffst es halt nur noch dann sozusagen gegen das, was du und dann machst du halt, erzeugst du den, oder machst die eigentlichen Dom-Manipulationen halt dann aus dem Div zwischen dem, was du eigentlich in seinem virtuellen Dom zu dem realen, sozusagen.

Jochen

Aber du manipulierst den realen nicht tatsächlich.

Jochen

Also du könntest ja auch, sozusagen, du kannst ja auch deine ganzen Daten im echten Dom halten.

Jochen

Könntest du ja.

Jochen

Du kannst ja das in Attribute von irgendwelchen Elementen reinschreiben oder so.

Jochen

Aber das ist halt nicht so schön.

Jochen

Weil dann.

Dominik

Da baue ich lieber ein Schatzendommen.

Verstehe.

Jochen

Ja, also keine Ahnung.

Jochen

Also es ist, ja, ich bin da auch nicht der Beste, um das zu erklären, glaube ich.

Jochen

Jedenfalls, heutzutage kann man für das, was man früher mit JackRary gemacht hat, auch einfach irgendwie React oder View oder so verwenden.

Jochen

Das geht natürlich alles.

Jochen

Aber man kann damit natürlich auch noch mehr machen.

Jochen

Das ist zum Beispiel eine Geschichte, die halt in letzter Zeit sehr populär geworden ist, wobei ich auch mal sagen würde, man muss ein bisschen vorsichtig sein, dass man da nicht zu sehr in diese Hypefalle tappt, weil das hat halt auch, also die Trade-offs sind nicht so ohne.

Jochen

Also das ist, das sind halt so Single-Page-Apps, dass du sozusagen alle

Dominik

Komponenten direkt mit ausbeliefert sind.

Jochen

JavaScript hast und nicht mehr, also praktisch gar keine Requests mehr machst, die halt da zu einem Reload der Seite führen.

Dominik

Sondern immer nur noch über die API, also deswegen Dango Headless und Rest, Single Page Application und ja, asynchrone Fragen an den Server über das JavaScript.

Jochen

Man kann das, also früher hat man das dann hatte man da immer noch so ein gewisses Problem, dass man das dann halt unter einer URL hatte und dass die Zurück- und Vor-Buttons irgendwie nicht richtig funktioniert haben, aber es gibt da, ich weiß jetzt gar nicht, wie die heißt, die API, es gibt eine Browser-History, sonst was API.

Jochen

Und die ist mittlerweile auch stabil in allen Browsern drin.

Jochen

Und das heißt, man kann auch ordentliche URL-URLs haben, ordentliches URL-Routing und Back und nach vorne Buttons und so, das funktioniert alles und man auf Links klickt, dann, ne, das klappt alles inzwischen super.

Jochen

Man muss dann nicht mit irgendwelchen komischen Hash-Tag irgendwie Anchor-Tag-Dingern irgendwie rumspielen.

Jochen

Wobei das, glaube ich, View auch in der Default-Konfiguration noch so macht, das muss man dann halt irgendwie dann umstellen.

Jochen

Also das sieht dann aus wie eine Webseite und fühlt sich so an wie eine ganz normale Webseite, aber in Wirklichkeit ist es so, das wird nie wirklich neu geladen, sondern die wird immer nur umgebaut, basierend auf dem, was die, was JavaScript, was die JavaScript hat.

Dominik

Also die ganze Arbeit macht der Client direkt vor Ort.

Jochen

Genau, da wird es halt auch sozusagen gerendert, ja.

Jochen

Was halt viel schneller ist, weil so ein kompletter Page-Reload, wenn das halt kompliziert ist, also wenn ich und allein es reicht eigentlich schon, wenn das irgendwie Bootstrap mit allem möglichen Kram drin ist, dann ist das so fett, dass halt, wenn man auf einer bei einer vom Server gerendeten Seite halt irgendwo auf den Link klickt und das dann neu rendert, dann merkt man das eigentlich immer.

Jochen

Weil, auch wenn der Request selber schnell ist.

Jochen

So oft ist es so, dass tatsächlich irgendwie alles, auch inklusive Assets, halt innerhalb von, weiß ich nicht, 200 Millisekunden zurückgekommen ist.

Jochen

Und dann denkt man sich so, ja, das ist so schnell, dass man es eigentlich fast nicht merken sollte.

Jochen

Und trotzdem bemerkt man das und der Grund, warum man es trotzdem bemerkt, ist halt, dass das Rendern vom DOM halt nicht so schnell.

Das dauert halt.

Jochen

Und selbst wenn da nichts mit einem Netzwerk passiert, ist es so, dass allein, dass der Browser das alles neu aufbauen muss, das dauert halt und das merkt man und das ist halt nicht so flüssig wie eine native App, die jetzt halt irgendwie auf dem Rechner läuft und die nicht, ja, also die nicht komplett neu gerendet werden muss.

Jochen

Und wenn man das jetzt in JavaScript sozusagen hat, die Applikation, und dann sich sozusagen für eine neue Seite immer nur neue Daten geholt werden von einer API und man kann dann ja auch so, also wenn man zum Beispiel eine Liste hat, wo man irgendwie so durchpaginiert oder so, dann kann man sich ja auch für die nächsten drei, vier Seiten die Daten schon mal geholt haben.

Jochen

Und dann drückt man auf den Knopf und dann wird halt nur der, wird halt nicht das komplette Template außenrum alles nochmal neu gerendert, sondern dann wird halt nur der Inhalt der Tabelle, die man halt da sieht, irgendwie vielleicht ausgetauscht.

Jochen

Und das ist dann halt sehr schnell und das geht dann halt, das sind halt so wenige, ich weiß nicht wie viele Millisekunden, aber so unterhalb der Wahrnehmungsschnelle.

Jochen

Man drückt da drauf und es ist sofort.

Jochen

Es hat sich sofort geändert.

Jochen

Instant.

Jochen

Und das ist natürlich sehr nett.

Jochen

Das ist halt etwas, was man mit vom auf einer Serverseite gerinnerten Webseiten nicht hinkriegen kann eigentlich.

Jochen

Es fühlt sich halt viel mehr an wie eine native App.

Jochen

Und das ist natürlich schon schön.

Jochen

Und gerade für kompliziertere Geschichten ist das natürlich schon sehr nett.

Jochen

Also die sich halt mehr so wie klassische Applikationen auf dem Desktop anfühlen sollen.

Jochen

Und ja, das ist natürlich alles schön.

Jochen

Warum macht man nicht alles so?

Jochen

Man kann die Dinger auch dann irgendwie quasi direkt auf Mobilgeräte und so deployen.

Jochen

Und so ein bisschen, so diese Progressive-Web-App-Geschichte, sie sehen dann halt auch so ein bisschen aus wie normale Apps, wie so native Apps auf Telefonen und so.

Jochen

Warum macht man nicht alles so?

Jochen

Es hat halt auch diverse böse Nachteile.

Jochen

Ein böser Nachteil ist halt SEO, Google-Suchergebnissen, eine Single-Page-App, das funktioniert halt einfach nicht so gut.

Jochen

Was auch nicht so schön ist, ist halt, dass der erste Request unter Umständen sehr, sehr langsam ist, weil da halt irgendwie tatsächlich vielleicht megabyte JavaScript und anderer Kram irgendwie geladen werden muss.

Jochen

Und ja,

Dominik

das hört sich so im Mittel gut an für Menschen.

Jochen

Genau, das ist halt

Jochen

wahrscheinlich, es kommt halt darauf an, was man für ein Problem hat.

Jochen

Für manche Probleme ist halt irgendwie eine klassische serverseitig gerenderte Geschichte das Allerbeste.

Jochen

Für manche andere Sachen ist halt irgendwie eine Single Page-App besser.

Jochen

Aber dass das überhaupt so geht und dass man das machen kann, ist eine relativ neue Geschichte.

Jochen

Und das, ja, das ist auch etwas, was man halt mit diesen Frameworks halt gut machen kann.

Jochen

Was halt, was man jetzt mit jQuery nicht machen könnte, ne?

Jochen

Wobei, ja, doch, so, naja, vielleicht geht es da sogar, ich weiß es nicht genau, aber es macht halt, ich weiß nicht, ob es irgendjemand macht.

Jochen

Könnte man vielleicht sogar auch, aber es ist, naja, vielleicht keine so gute Idee.

Jochen

Ja, die Unterschiede.

Jochen

Also so React, es gab ja früher nochmal sehr große Unterschiede.

Jochen

Also tatsächlich die ersten JavaScript-Frameworks, die halt dieses Problem insgesamt angenommen haben, die waren sehr unterschiedliche Ansätze.

Jochen

Da gab es halt irgendwie dieses Angular 1 halt, ne?

Jochen

Das war eins der ersten, also war vorher React auch da, dann gab es irgendwie Ember und so.

Jochen

Und dann aber React hatte irgendwie alles so ein bisschen geändert.

Jochen

Das war halt so das erste, was einen sehr neuen Ansatz hatte.

Jochen

So diese, diese, ja, wie soll man das beschreiben, eigentlich so einen eher einen funktionalen Ansatz, dass man halt sozusagen den, den, die, die Visualisierung der Seite erzeugt, irgendwie, indem man ein State hat und da einfach dann Funktionen drauf ausführt, die das dann halt hinrendern.

Jochen

Und dass man halt nicht sozusagen irgendwelche Templates hat, so HTML, man kennt das ja von Django vielleicht oder sonst wie von einer serverseitig gerenderten Geschichte, wo man wo halt dann irgendwie Sachen ersetzt werden.

Jochen

So, man hat halt irgendwie HTML oder so mit Platzhaltern für, da kommen jetzt dynamische Sachen rein.

Jochen

Sondern in React ist es eher umgekehrt.

Jochen

Du hast halt zwar etwas, das so ein bisschen aussieht nach HTML und Template, aber das ist es gar nicht in Wirklichkeit, sondern in Wirklichkeit ist es einfach nur eine Funktion.

Jochen

Und diese Funktion rendert halt, rendert sich selbst raus zu HTML.

Jochen

Oder zu irgendwas, was halt irgendwie im DOM angezeigt werden kann.

Jochen

Und dieser Ansatz hat sich dann durchgesetzt.

Jochen

Das machen jetzt inzwischen alle anderen auch so.

Jochen

Und ja, tatsächlich, also ich fand React jetzt auch schon wieder ein bisschen her.

Jochen

Inzwischen, ich habe nie mit Hooks irgendwie was gemacht.

Jochen

Also man muss eigentlich viel zu viel erklären.

Jochen

Das ist so, man kann sagen, also React hat mir eigentlich ganz gut gefallen.

Jochen

Es ist eigentlich gar nicht groß, ist auch eher so eine kleine Geschichte, aber es gibt natürlich ein riesen Ökosystem drumherum.

Jochen

Und ja, Angular fand ich ehrlich gesagt, es ist deutlich fetter.

Jochen

Und mit gewissen Sachen bin ich nie so richtig.

Jochen

Also man muss relativ viel Boilerplate außenrum schreiben und es passieren komische Sachen manchmal.

Jochen

Aber ich meine, da kann man auch verwenden.

Jochen

Also Angular, also letztendlich nimmt sich das alles nicht viel, es ist halt auch so ähnlich.

Jochen

Und jetzt, View ist, glaube ich, auch so ähnlich.

Jochen

Das ist auch kein großer Unterschied.

Ja.

Jochen

Außer jetzt diese URL-Routing-Geschichte, die bei View noch so ein bisschen komisch ist, aber naja.

Jochen

Tja, ansonsten weiß ich nicht, was das wäre denn noch so interessant.

Jochen

Ja, ehrlich gesagt, keine Ahnung.

Dominik

Wenn du keine so eine Use-Story hast, wo halt wir genau wissen, hey, in dem Case ist jetzt Angular total super und da ein Mekt und da lieber, sondern die sind alle austauschbar.

Dominik

Das heißt, wir können mit Python tatsächlich jedes der Frontends nehmen.

Dominik

Die Frage ist aber, wie man das implementiert, weil wenn du jetzt versuchst jetzt in der Django-App einfach so ein JavaScript-Framework einzubauen, dann wirst du vor einige Probleme kommen, weil du halt diese dynamische Entwicklung gar nicht richtig machen kannst.

Dominik

Oder die Features der ganzen Frameworks gar nicht richtig machen.

Jochen

Nee, du musst halt irgendwie mit dem Backend kommunizieren.

Jochen

Also dieses Problem hast du natürlich weiterhin, dass du irgendwie ja irgendwo die Daten dann tatsächlich in der Datenbank halten willst und du musst halt irgendwie die da reinkriegen und die da auch wieder rauskriegen und so.

Jochen

Und gut, vom Server kommt jetzt dann nicht mehr HTML, sondern da kommt dann halt eher irgendwie JSON oder ja, so eigentlich immer JSON, aber gibt es halt auch unterschiedliche APs, die beiden Hauptgeschmacksrichtungen, die es da gibt, sind halt REST oder eben GraphQL.

Jochen

Etwas neuere Geschichte.

Jochen

Nimmt sich aber letztlich auch gar nicht so wahnsinnig viel fürchte ich.

Jochen

Ich habe jetzt auch, ich habe angefangen mit REST und dann das lange gemacht und dann ist halt dann GraphQL, fand ich dann ganz gut und bin jetzt wieder inzwischen wieder bei REST.

Jochen

Es gibt Leute, die machen dann auch irgendwie, die sagen, naja, gut, also GraphQL zum Lesen ganz gut, zum Schreiben vielleicht nicht so und schreiben dann über Rest und lesen über GraphQL.

Jochen

Naja, also aber letztlich ist es ja auch egal.

Jochen

Auf jeden Fall, der Trend geht so ein bisschen.

Dominik

Dann heißt er nur noch das bereitstellende API übrig und das ganze Frontend-Rendering verwechselst.

Dominik

Async Django so?

Jochen

Async Django ist jetzt eine andere Geschichte.

Oder wie man.

Dominik

Ja, warum ist das eine andere Geschichte?

Dominik

Dann habe ich wieder Unsinn erzählt.

Jochen

Nee, also Async heißt ja eigentlich nur, dass du nicht also das Protokoll zwischen Applikationsserver und dem Web-Server außenrum ist jetzt halt ein anderes und es geht nicht nur, es geht nicht nur Request-Response, sondern du kannst halt auch, du kannst halt in beide, dieses ASGI, du kannst halt in beide Richtungen.

Jochen

Du kannst halt auch vom Server Sachen einen kleinen schicken, das ist halt schon mal ein großer Unterschied.

Jochen

Genau.

Jochen

Und es ist halt auch so, dass du fürs IAO-Multiplexen das nicht nur über Threads und Prozesse machen kannst, sondern du kannst es halt auch über ein Event-Group machen.

Jochen

Und so, also wie Node.js auch.

Jochen

Das ist halt so der große, aber das ist, das wirkt sich jetzt auf was man, auf API oder nicht API, das wirkt sich alles darauf gar nicht aus.

Jochen

Also das geht beides.

Dominik

Ja, okay, das heißt ja trotzdem, ich mache dann halt meine API und ob die Async ist oder nicht, macht ja gar keinen großen Unterschied mehr, weil.

Jochen

Naja doch, also es gibt natürlich schon einen gewissen Unterschied, was halt mit Django sonst nicht so richtig gehen würde, ist halt, dass du vom Server Benachrichtigung bekommen kannst.

Jochen

Das geht halt nicht so richtig.

Jochen

Also ich meine, du kannst natürlich emulieren, du kannst halt irgendwie alle 100 Millisekunden nachfragen, gibt es jetzt irgendwas Neues oder so, dann kannst du es halt wahrscheinlich so ein bisschen, aber du kannst halt nicht eine stehende, also wenn du zum Beispiel einen Chat, wenn du sowas wie Slack nachimplementieren wolltest, das geht nicht so richtig gut mit Django ohne Async.

Jochen

Weil, wie soll das gehen?

Jochen

Also wenn jetzt jemand was schreibt und das, die Webseite soll dir, will dir das anzeigen, wie macht sie das?

Dominik

Ja, die Webseite fragt die ganze Zeit nachher, was ist denn ein Channel?

Dominik

Was ist in einem Channel?

Dominik

Was ist mit dem Channel?

Was ist in der Channel?

Jochen

Aber das ist natürlich generiert einen Riesenhaufen Requests, die für alle völlig unnötig sind.

Dominik

Aber es funktioniert.

Jochen

Ja, aber das ist ja, also das ist ja, das ist ja super hässlich.

Jochen

Also das ist ein, kann man natürlich, aber ich meine, stell dir vor, dein Rechner steht zu Hause und ist halt.

Dominik

Datenautobahn, ich verstoffte Leitungen auf der Datenautobahn sind das schon.

Jochen

Das ist gar nicht, das ist gar nicht so das Problem.

Jochen

Das ist halt eher so, du machst die ganze Zeit Requests völlig.

Jochen

Also wenn du nicht zu Hause bist und dein Rechner läuft und der macht alle 100 Millisekunden so einen Request, dann macht der halt, keine Ahnung, 10 pro Sekunde und das heißt am Tag 86.400 mal 10, also fast eine Million Requests und die sind alle leer.

Jochen

Also.

Dominik

Ja, ich sag ja, Stau auf der Datenautobahn.

Jochen

Also ich glaube, das ist noch so fast das geringste Problem, dass da Daten übertragen werden, aber der Server muss ja dann jedes Mal irgendwie die Datenbank fragen und keine Ahnung.

Jochen

Ja, also genau, es ist so ein bisschen, während wenn halt.

Jochen

Und das ist halt, wenn es jetzt anders gehen würde, mit Asyn geht das halt dann halt, dass der Server, dir halt sagt, so hier ist jetzt, zeig mal diese Nachricht an, die hat dir jemand geschickt, dann passiert halt gar kein Request und wird überhaupt nichts hin und her geschickt, bis zu dem Zeitpunkt, wo das halt passiert.

Jochen

Und das ist natürlich schon deutlich effizienter.

Jochen

Und eben es skaliert halt nicht.

Jochen

Wenn du jetzt mit zehn Leuten ist es egal, wenn du in einem Channel bist, aber wenn du jetzt eben sowas wie Slack betreibst mit hunderttausenden Leuten oder Millionen, dann bringen dich natürlich diese ganzen Requests irgendwann um.

Jochen

Und ja, da brauchst du irgendwas, was halt irgendwie dir ermöglicht, vom Server aus auch dem Client irgendwas zu sagen.

Jochen

Also das ist diese Asyn-Geschichte.

Jochen

Aber das ist mit, ob jetzt APIs oder nicht APIs oder so, das ist alles.

Jochen

Und eine API kann natürlich auch Async sein.

Jochen

Du kannst natürlich dich, äh, also aber das geht eine API oder nicht API, das geht beides.

Dominik

Mit was redet man denn mit der Django-API?

Dominik

Macht man dann an Axios, irgendwie so ein JavaScript-Framework oder nimmt man da einfach normale Unternehmen.

Jochen

Also für GraphQL gibt es halt Relay oder Apollo.

Jochen

Für REST gibt es dieses Axios oder weiß ich nicht, es gibt ja unterschiedliche Geschichten, die man dafür verwenden kann.

Dominik

Man könnte ganz normale Ajax-Requests machen, oder?

Jochen

Ja, klar, also das ist genau.

Jochen

Ist es ja auch mal.

Jochen

Du kannst auch einfach, du könntest, du müsstest nicht Rest machen.

Jochen

Du kannst eben, genau, du kannst natürlich in Django könntest du einfach einen JSON einfach einem X HTTP-Request oder Ajax-View machst du halt einfach, irgendwie gibt es eine JSON-Response zurück, fertig, geht auch.

Jochen

Aber natürlich bietet es sich schon an, das irgendwie halt so halbwegs standardisiert zu machen, weil das natürlich auch diverse Vorteile bringt und man halt auch Sachen so machen sollte, wie man die üblicherweise so tut.

Dominik

Das musst du jetzt zweimal begründen.

Dominik

Einmal erstmal, warum man überhaupt Sachen so machen sollte, wie man die üblicherweise tut.

Dominik

Man kann es ja einfach so machen, wenn man Lust

Jochen

drauf hat.

Jochen

Ja, aber das ist auch etwas, was ich halt immer wieder sehe.

Jochen

Also die meisten Leute denken immer, wenn sie oder denken, oder das ist etwas, was ich oft sehe, dass Leute sich überlegen, wie sie denn jetzt irgendwie Kommunikation zwischen irgendwie einer Webseite oder einem Client und irgendwie ihrem Backend machen.

Jochen

Und überlegen sich da irgendwas und denken, das ist total kompliziert und das ist total, sie haben irgendwie so ein Hightech-Problem, was sie irgendwie lösen müssen, und überlegen sich dann da irgendwie selber ganz viele Sachen.

Jochen

Und das ist, ich, also ich hab noch, also, das müssen wir mal überlegen, ob ich das jemals gesehen habe, dass das tatsächlich der Fall war.

Jochen

Ich glaube nicht.

Jochen

Ich glaube, das war tatsächlich dann nie so.

Jochen

Sondern es ist immer so, dass eigentlich ist das alles immer das Gleiche.

Jochen

Das ist alles irgendwie, du hast immer, es ist immer Crat.

Jochen

Ja, es ist immer so, also Create-Tech.

Dominik

Create, Retrieve, Update und Delete.

Genau.

Jochen

Und du hast immer Listen von Dingen und immer dann Create auf der Liste und immer dann eine Detailansicht, auf die du dann weitergeleitet wirst, oder halt wieder auf die Liste zurück.

Jochen

Und das ist halt alles immer gleich.

Jochen

Und ob das jetzt dann, und das kennt man ja auch von Applikationen so, ne?

Jochen

Ob das jetzt Facebook ist, ob das Twitter ist, die funktionieren alle ganz genauso.

Jochen

Oder ob das dein Mail-Client ist, der funktioniert auch so.

Jochen

Oder es ist eigentlich immer, es geht immer so in die Richtung.

Jochen

Und die Leute, oder viel, man, mir ist es ja am Anfang auch so gegangen, also wenn man das nicht ein paar Mal gesehen hat, dann fällt einem das halt nicht auf, dass das immer so ist.

Jochen

Sondern denkt man sich so, ich muss das halt irgendwie alles selber erfinden, aber das muss man eigentlich nicht.

Jochen

Und das ist auch keine gute Idee.

Jochen

Weil tatsächlich dieses Crud-Ding, also dafür gibt es halt dann Abstraktionen, die sich bewährt haben und das funktioniert dann gut, wenn man das genauso macht.

Jochen

Und wenn man das halt anders macht, dann hat man halt Schmerzen.

Auha!

Jochen

Ja.

Ja, also

Dominik

mit El Fußschießen oder Stolpern fallen, reintreten, große Fehler durch die Ohren sammeln oder mymph.

Jochen

Ja, ja.

Jochen

Ja.

Jochen

Aber ja.

Jochen

Was halt auch noch interessant ist, wenn man jetzt eine API abfragt, ist halt so, wie macht man dann eigentlich das Statement, man hat jetzt, also was die bösen Trade-offs angeht, nicht nur, dass das halt irgendwie fett ist, also wenn man so eine Single-Page-App baut, ist es halt deutlich fetter, der erste Request ist deutlich größer.

Jochen

Es ist halt brittle, ich weiß gar nicht, wie man das am besten übersetzt.

Jochen

Es ist halt so, es ist viel instabiler, als man jetzt einfach nur ein schnelles HTML und CSS verwenden würde.

Jochen

Weil halt dieses ganze JavaScript funktionieren muss.

Jochen

Es ist halt irgendwie, wenn du auf einem Telefon bist, irgendwie das schlechte CPU hat, ist es nicht so gut, wenn das auch einer schlechten Leitung ist, nicht so gut.

Jochen

Also diverse üble Nachteile.

Jochen

Ein weiterer übler Nachteil ist, dass du jetzt State-Handling halt nicht nur auf einer Seite hast.

Jochen

Früher, also wenn das serverseitig gerendert wird, hast du das halt nur auf dem Server.

Jochen

Und da hast du halt dein, weiß ich nicht, Framework, das dafür gebaut ist, mit diesem Problem umzugehen, halt, weiß ich nicht, eben auch so, wenn man das so, also alles all-in-one-Lösung, wäre dann halt sowas wie Ruby und Rails oder halt eben Django.

Jochen

Aber dieses Problem hast du dann halt nur da und sonst eigentlich nicht mehr.

Jochen

Und wenn du bei so einer Single Page-App, hast du dieses Problem an der Stelle dann halt auch nochmal.

Jochen

Das heißt, du hast halt zweimal das Problem, dass du irgendwie mit Logik umgehen können musst.

Dominik

Zweimal Logik umgehen heißt doppelter Anteil an Fehlern.

Jochen

Ja.

Jochen

Und auch doppelte Menge an Code.

Jochen

Doppelte Menge an Code, bei dem irgendwas schief gehen kann, ja, genau.

Dominik

Und ein exponentiell Wachstum, das heißt eine vielfache Menge an Bugs.

Jochen

Exponentiell weiß ich nicht, aber ja, es ist auf jeden Fall.

Dominik

Je nachdem, wer das denn weggejochen ist.

Ja, das ist ja.

Dominik

Ich gucke jetzt niemanden an.

Dominik

Nee, ich habe ja Gott sei Dank kein Spiel.

Jochen

Ja, aber das ist natürlich ein Problem und das ist halt viel aufwendiger und das ist alles viel schwieriger.

Jochen

Und natürlich, und die Menge an unterschiedlichen komischen Technologien und so, der Stack wird halt immer größer und das macht es halt auch alles viel schwerer.

Jochen

Also das ist schon deutlich komplizierter als so eine einfache Webseite.

Jochen

Und ja, das ist halt, aber auf der anderen Seite kann man damit auch coole Sachen hinkriegen, die man sonst nicht hinkriegt.

Jochen

Insofern muss man sich halt überlegen, ob sich das für einen lohnt oder nicht.

Jochen

Aber wenn man das jetzt macht, dann hat man eben genau dieses Problem.

Jochen

Da kommt jetzt halt irgendwie mit dem State von zum Beispiel einer API, den man jetzt irgendwie in der Applikation verwalten können muss und ja.

Jochen

Oder sagen wir so, der State ändert sich, wenn halt zum Beispiel ein API-Request zurückkommt.

Jochen

Also man fragt jetzt, man hat halt irgendwie so eine Applikation, die eine Liste von irgendwelchen Dingen, wie auch immer, die aussehen, anzeigt und macht jetzt einen Request ans Backend und kriegt jetzt zurück, okay, diese 100 Dinger gibt es.

Jochen

So, diese 100 Dinger ändern jetzt den State der Client-Applikation.

Jochen

Und wie macht man das jetzt ordentlich?

Jochen

Und dann braucht man halt da auch irgendwie sowas wie irgendeinen Platz, wo der State gehalten wird.

Jochen

Bei Django oder Real Wales wäre das halt jetzt die Datenbank.

Jochen

Hat man jetzt auf der Client-Seite nicht so, aber dann kann man halt auch sowas wie so ein Redux-Store zum Beispiel haben, wo das halt, wo man dann halt den State hält und geordnete Methoden hat, wie man darauf zugreift, wie auch unterschiedliche Teile der Applikation auch darauf zugreifen und wie die halt irgendwie Änderungen daran auslösen.

Jochen

Und ja, da gibt es dann auch nettes Zusatztooling, dass man halt dann irgendwie auch da durchsteppen kann.

Jochen

Man kann also man kann sich halt angucken, was, wie sieht die State aus bei davor, danach, man kann auch die Applikation, wenn man das rumgeschafft ist, man kann die in jeden Zustand wieder zurückbringen.

Jochen

Dadurch, das ist halt sowas, also React zum Beispiel ist relativ funktional, das ist eigentlich sehr nett.

Jochen

Also da nie, da immer nur die Seite gerendert wird aus dem Zustand, wenn du weißt, wie sich der Zustand immer geändert hat und immer gespeichert hast, kannst du die Seite in jeden Zustand wieder zurückversetzen.

Jochen

Die nennen das irgendwie der Time-Travel-Debugging zum Beispiel.

Jochen

Du kannst halt, wenn du jetzt zum Beispiel, da gibt es so eine Browser-Extension, die halt den State irgendwie die ganze Zeit speichert und das mit Redux checkt und da kannst du halt, wenn du ein bisschen auf der Seite rumgesurft bist, die Seite auch wieder in jeden Zustand zurückversetzen.

Jochen

Du kannst einfach sagen, okay, nimm diesen State und dann sagt man React einfach nur so, okay, ins Render halt die Seite und dann kommt genau die Seite raus zu dem Zustand.

Jochen

Und das ist natürlich schon sehr nett.

Jochen

Also dass du halt, ja, dass der Zustand nirgendwo irgendwie, dass da nicht irgendwie noch irgendwelche Daten, die gebraucht werden, in irgendwelchen Dom-Elementen drin rumhängen oder so, sondern die Dom-Elemente werden rein aus blöden Funktionen, die halt State nehmen und Elemente ausgeben, rausgerendert, sodass halt quasi immer klar ist, was passiert.

Jochen

Das ist natürlich schon.

Dominik

Also eine Liste von States hast du dann, um tatsächlich zu speichern, wo du gerade bist oder warst oder sowas.

Jochen

Ja, du hast halt den.

Jochen

Der State ist halt das, was definiert, wie deine Seite aussieht.

Ja, okay.

Jochen

Und der State ändert sich halt auch.

Jochen

Es gibt halt Aktionen, die, bei Redux ist es halt so, du hast halt Actions, die halt den State verändern.

Jochen

Und wenn du jetzt aber den State vor und nach jeder Action immer speicherst, dann kannst du einfach sagen, okay, hier ist der State, liebes React, rendere alles mal so, dass es wieder wie eine Seite aussieht und dann ist die Seite genau in dem Zustand.

Dominik

Also, um jetzt nochmal klarzustellen, also ein State ist dann ein Gesamtstatus der gesamten Seite und nicht der einzelnen Komponenten.

Jochen

Nee, genau, der Gesamtseite.

Jochen

Die Komponenten kriegen halt nur einen Teil des States, der sie interessiert zu sehen.

Jochen

Die können dann zum Beispiel sagen, okay, ich hätte jetzt gern alles an State unterhalb von.

Jochen

State ist halt sowieso ein Baum und man ist üblicherweise immer nur an so einem Teil davon interessiert.

Jochen

Und den kriegen die halt als Argument dran.

Dominik

Wenn du als einen Div-Container zum Beispiel aussuchst, an den du jetzt haben willst.

Jochen

Das ist nicht der gleiche Baum wie der von der Webseite.

Jochen

Das ist nicht das gleiche, nee.

Jochen

Der State ist eine andere Geschichte.

Dominik

Dann musst du mir jetzt nochmal genau erklären, habe ich das noch nicht genau verstanden.

Jochen

Im Grunde einfach nur so ein Baum von Daten irgendwie.

Dominik

Was ist denn ein Baum von Daten?

Dominik

Ein Graph.

Nee, kein Graph.

Dominik

Nein, kein Graph.

Jochen

Da können beliebige Dinge darin sein.

Jochen

Also insofern, aber, ach ja, ich weiß nicht, musste.

Jochen

Es ist halt irgendwie alles, was letztlich wie ein Python im Dikt.

Jochen

So, kann man sich das vielleicht vorstellen.

Dominik

Ja, okay.

Jochen

So verschachtelt es dickt halt.

Dominik

Wie so ein JSON-Or-Struktur mit irgendwas.

Jochen

Ja, ja, exakt.

Jochen

Und du kannst halt als Komponente kriegst du das halt irgendwie einen Teil davon irgendwie reingereicht, ja.

Jochen

Und diesen Kram benutzt du halt, um halt letztlich eine Komponente ist in React nichts anderes als eine Funktion, die aufgerufen wird mit bestimmten Daten und die spuckt dann halt irgendwas Gerendertes aus.

Jochen

Fertig.

Das war's.

Jochen

Aber die hält keinen eigenen State.

Jochen

Die kann nicht, ja.

Jochen

Das ist halt sehr schön, weil solange sich nichts an den Eingaben für diese Funktion ändert, ändert sich auch nichts an der Ausgabe.

Jochen

Nur wenn sich da irgendwas ändert, muss das neu gerendert werden.

Jochen

Und da du immer weißt, sozusagen, an welchen Stellen sich am State was geändert hat, weißt du halt auch, welche Teile du neu rendern musst und welche nicht.

Jochen

Das ist halt schon nett.

Jochen

Aber naja, also sondern so, das ist halt auch alles viel zu kompliziert für so eine Seite, die irgendwas Kleines macht, also brauchst du das alles eigentlich nicht.

Jochen

Und es gibt natürlich auch Komponenten, die nur ihren eigenen State, also wenn du jetzt ein Formular hast, das irgendwie so ein bisschen Fehlerbehandlung machst, das muss jetzt nicht irgendwie da unbedingt angebunden sein an den Komplettsstate der Seite, weil das interessiert sowieso.

Jochen

Wenn es keine andere Komponente interessiert, dann ist es ja sinnlos, das in so ein allgemeines Ding zu schreiben.

Dominik

Auch noch so eine spannende Frage, wenn du jetzt so ein Formular hast, was ja normalerweise jetzt in Python über so ein Django Form validiert werden würde, unter anderem ja mit den Feedbacks zu Nutzer und so.

Dominik

Wie macht man das denn dann einfach in so einem JavaScript-Frame?

Dominik

Damit müsste alles wieder neu implementieren.

Jochen

Du musst es halt einmal auf Cleanseite machen, du musst es einmal wieder auf Serverseite machen, weil auf Serverseite musst du es natürlich immer noch machen.

Dominik

Auf Serverseite bekomme ich dann ja aber dann wieder nur meine API, mein Rest oder was auch immer.

Und muss es trotzdem machen.

Dominik

Wenn man dann irgendwelche Error-Feedbacks nicht geben kann und wo dann irgendeine Message drinsteht und das ist ja dann so ein Dreifach hässlich.

Dominik

Also da baue ich ja einmal die Formklasse, pipe die da rein, mache dann ein, zwei Widget-Einstellungen und das läuft das Ding.

Dominik

Und inklusive Feedbacks und.

Jochen

Aber es ist halt so, also ich meine, da gibt es keinem.

Jochen

Kommen wir halt nicht drum rum.

Jochen

Du verwendest halt bei einer API dann nicht irgendwie eine Formklasse, sondern halt einen Serializer, der ist halt so ähnlich wie eine Form.

Jochen

Aber klar, du musst halt auch das wieder wieder validieren und dann halt eventuell Fehler zurückgeben und das auf der kleinen Seite halt nochmal.

Dominik

Was macht denn ein Serializer anders als eine Form?

Jochen

Ich würde sagen, es ist relativ ähnlich, aber es ist serialisiert und Dinge nach sozusagen dickt und von irgendwie dickt nach Objekt nach Dict und von Dict wieder zu Objekt.

Jochen

Das ist halt das, was Serializer machen.

Jochen

Und Formulare machen das auch.

Jochen

Mehr oder aber die Formulare, äh, das wir überlegen.

Jochen

Keine Ahnung.

Jochen

Naja, das ist halt so ein bisschen anders, ne?

Jochen

Das ist halt nicht immer.

Jochen

Also bei den Serializern, die können natürlich auch nach XML oder so, aber eigentlich ist immer JSON.

Ja.

Jochen

Und ja, es ist tatsächlich sehr ähnlich, was sie machen.

Dominik

Also die Validierung ist, glaube ich, vielleicht so ein bisschen anders.

Jochen

Sehr ähnlich.

Jochen

Also.

Jochen

Also ich kann sein, dass man mit Serializern noch ein bisschen mehr machen kann, aber naja, das ist aber so, das ist halt, ja.

Jochen

Ist aber auch, das sind halt Feinheiten, ne?

Jochen

Das ist halt nicht mehr so.

Jochen

Also im Grunde, aber du hast halt sowas wie Formularvalidierung, hast du an der API natürlich auch machen.

Jochen

Und das musst du auf dem Client halt auch machen.

Jochen

Das heißt, du musst halt doppelt machen.

Jochen

Es gibt natürlich unter Umständen, wenn du jetzt rein in JavaScript bleibst, die Möglichkeit, dass halt, dass du das nur einmal hinschreibst.

Jochen

Und den Code dann sowohl auf dem Server wie auf dem Client verwendet, aber ja, weiß ich gar nicht, ob das jetzt so reibungslos ist, also man hört immer, dass es geht, aber ob das wirklich so reibungslos geht, weiß ich nicht.

Ja.

Jochen

Und du hast dann ja die ganzen anderen Probleme.

Jochen

Du hast dann musst das ja auch noch immer irgendwie in der Datenbank wieder speichern.

Jochen

Das ist quasi nochmal das gleiche Problem.

Jochen

Du musst ja auch da irgendwie das wieder in eine Tabellenform seralisieren und derealisieren.

Jochen

Da hast du nochmal ein ORM dazwischen.

Jochen

Also, und ja, es ist alles nicht so ganz einfach.

Jochen

Ja, aber

Dominik

das wird sich auf jeden Fall sein, dass wenn man das sowieso zweimal machen muss, dann musste man ja fast schon zwei unterschiedliche Projekte nehmen.

Dominik

Wenn ich ja so eine API habe in Django zum Beispiel, dann muss ich die beiden ja gar nicht miteinander reden lassen, wenn ich nicht will.

Dominik

Also die muss ich ja nun nicht mal im selben Repo halten, weil die voneinander gar nichts wissen brauchen und nichts miteinander zu tun haben, weil die eine Seite ja auch unabhängig von der anderen Seite getestet werden muss.

Jochen

Nee, ja, also das kommt halt drauf an, auf der Anwendungsfall.

Jochen

Also würde ich sagen, kann man so oder so machen, je nachdem unter welchen Bedingungen ist es halt das eine oder das andere sinnvoller.

Jochen

Also kann man nicht so sagen, dass man das jetzt so machen sollte und das ist dann immer richtig für alle Sachen, sondern es ist halt hängt davon ab.

Jochen

Also kann man.

Jochen

Also sowieso so.

Jochen

Es gibt ja Leute, die mögen das eher, wenn Sachen in vielen unterschiedlichen Projekten sind.

Jochen

Andere Leute mögen es lieber, wenn alles in einem ist.

Jochen

Hat es halt auch beide so Vor- und Nachteile.

Jochen

Es ist halt kann man nicht sagen, dass das eine besser ist als das andere.

Jochen

Also jedenfalls nicht, dass ich wüsste.

Dominik

Wann würdest du das zusammen machen?

Dominik

Wann getrennt?

Jochen

Ich glaube, ich bin eher die.

Jochen

Ich bin eher in dem Lager, ein großes Repository.

Jochen

Also ich tendiere eher zu einem Repository als zu vielen kleinen.

Jochen

Aber naja, ich meine, der Vorteil ist halt, bei kleinen Repositories wäre es halt, dass du zum Beispiel auch Sachen rausgeben kannst.

Jochen

Du könntest halt zum Beispiel Pakete draus bauen.

Jochen

Und das halt irgendwie zum Beispiel, wenn du jetzt ein großes Repository hast, kannst du halt nicht so leicht sagen, so, oder den Kram machen wir jetzt mal Open Source.

Geht ja nicht so gut.

Jochen

Wenn das schon ein Repository ist, dann ist das viel leichter.

Jochen

Wenn es jetzt ein Teil ist, der nicht dann den Kern, von dem du was, was du tust, irgendwie betrifft oder so.

Jochen

So war es zum Beispiel.

Jochen

Ich weiß es nicht so genau.

Jochen

Aber ja.

Jochen

Wenn du einen Repository hast, wird es natürlich einfacher, das Ganze zu verwalten.

Jochen

Ich meine, du musst halt nicht, äh, ja, hast du halt eben nicht das Problem, dass du dann vielleicht noch irgendwie die Sachen, die sowieso alle eigentlich mit zu deiner Software gehören, nochmal alle zusätzlich als Pakete installieren musst, was halt vielleicht nicht so nicht so toll ist.

Dominik

Also, ja.

Dominik

Okay, aber Front-end und Backend vielleicht dann wenigstens so ein bisschen drin.

Dominik

Würde ich nicht machen.

Jochen

Also ich würde es nicht machen.

Jochen

Aber Englalter ist Geschmackssache.

Jochen

Es gibt Leute, die machen das.

Jochen

Ja.

Jochen

Also ja, Nachteil ist halt, wenn du das so machst, dann wie kriegst du die ordentlich dazu zusammenzuarbeiten?

Jochen

Wie machst du dann End-to-End-Tests?

Jochen

Ist halt schwierig.

Ja.

Jochen

Also, aber kann man tun?

Jochen

Also es gibt ja dann, und Hauptstand, wenn du eine größere Applikation hast, dann auch so, dann ist das halt nach Teams unterschiedlich.

Jochen

Dann gibt es halt vielleicht ein Team, das nur Frontend macht oder Teams, die nur Frontend machen und Teams, die nur Backend machen.

Jochen

Und ja, dann willst du es vielleicht doch irgendwie auftrennen.

Dominik

Also nett ist das natürlich tatsächlich, wenn man das auch einfach austauschen kann.

Dominik

Wenn man jetzt beispielsweise jetzt ein Frontend in Vue gebaut hat und man möchte aber noch eine Elektron-Applikation dazu basteln oder so, dann muss man das Backend ja nicht mehr anfassen, sondern nur den Frontend-Ordner wegschmeißen oder das Reput antauschen oder so.

Jochen

Oh, das verstehe ich nicht.

Jochen

Was möchtest du machen?

Dominik

Also ich habe jetzt mein Django Headless, ja.

Dominik

Da hast du die API und die ganze Logik und die ganzen Modelle und die ganzen Daten, man kennt links alle für mich erledigt.

Dominik

Und ich möchte einmal eine Web-Applikation haben mit Vue beispielsweise und einmal eine Native Desktop-Applikation beispielsweise mit Elektronen.

Jochen

Ich würde jetzt sagen, das sind zwei unterschiedliche Verzeichnisse fertig.

Okay.

Jochen

Warum muss das ein anderes Repo sein?

Wenn es die gleiche Applikation ist.

Jochen

Was ist denn jetzt, wenn du testen möchtest?

Jochen

Die Daten für die Tests, hast du die dann doppelt in beiden Repositories?

Jochen

Was ist, wenn du die änderst?

Jochen

Wie sorgst du dafür, dass jetzt die Testdaten synchron bleiben?

Jochen

Sodass halt auch die Tests aussagekräftig bleiben und so.

Jochen

Es ist halt irgendwie schwierig, wenn das zwei Repositories sind.

Jochen

Dann wird das halt.

Jochen

Also, ich sag mal, also sag mal so, es kann sein, dass das nötig wird, wenn man sehr stark skaliert oder so, aber ich meine, es wird auch sehr viel umständlicher, ne?

Jochen

Es ist halt dann halt komplizierter.

Und die Frage.

Dominik

Was wird umständlicher?

Bitte?

Dominik

Was wird umständlicher und das ist nicht mehr?

Jochen

Also allein sowas wie, wie testest du denn dann?

Jochen

Wie testest du deine Desktop-Applikation und deine View-Applikation?

Dominik

Test gibt es auch gar nicht.

Test gibt es auch gar nicht.

Jochen

Ja, aber.

Jochen

Jetzt hast du das in unterschiedlichen Repositories.

Jochen

Du hast jetzt deine Fixtures, die irgendwie Testdaten sind, mit denen du da deine Tests machst.

Jochen

Jetzt änderst du, jetzt hast du festgestellt, oh, ich habe hier einen Test-Case, der ganz wichtig ist, den mache ich jetzt bei meiner View-Geschichte dazu.

Jochen

Wird das jetzt bei, wie wird das, wie sorgt deine Desktop-App dafür, dass das auch getestet wird?

Jochen

Wie kommt dieser Testcast da rein?

Dominik

Ja, ich meine, du machst doch sowieso eigene Tests für die Desktop und für View oder ist das?

Jochen

Ja, aber wenn du jetzt festgestellt hast, oh, dieses Ding muss ich unbedingt testen, das wirst du doch vielleicht in dem anderen Ding auch getestet haben.

Dominik

Und wie würdest du das machen, wenn die beide gleichzeitig im selben Reposition überall?

Jochen

Wenn du deine Testdaten beide gleich.

Ja, ja.

Jochen

Oder eben, ich meine, sowas wie, du musst ja vielleicht, um entweder Tests machen zu können, halt so ein Dummy-Backend hochziehen, wenn das Schema da irgendwo steht.

Jochen

Wie sorgst du dafür, dass das synchron bleibt?

Jochen

Also.

Jochen

Ja, und dann kann man natürlich anfangen, das mit irgendwie Git Sub-Modules zu machen oder weiß der Teufel und dann, also, aber das ist alles.

Jochen

Ja, also sag mal so, ich kann mir vorstellen, dass es Vorteile hatte, es in mehreren Repositories zu haben, aber es wird halt auch komplizierter.

Jochen

Und die Frage ist, ob man es ja macht oder nicht.

Jochen

Hängt halt davon ab, ob die ja diese, ob diese Komplizit gerechtfertigt ist.

Jochen

Die Vorteile so groß sind, dass die zusätzliche Komplexität halt irgendwie nicht so schlimm ist, demgegenüber.

Dominik

Ja.

Dominik

Dockerisiert das Ganze und go, oder?

Jochen

Nee, das würde ich auch nicht sagen, dass man das unbedingt machen muss.

Jochen

Es halt hängt halt auch davon ab, was man.

Jochen

Also ich meine, wenn man jetzt alleine entwickelt, dann braucht man Docker nicht.

Jochen

Das brauchst du ja nur dann, wenn du mehrere Leute hast, die unterschiedliche Entwicklungsumgebungen haben.

Jochen

Dann ist halt Docker irgendwie sinnvoll, aber wenn für Sachen, wo ich alleine dran entwickle, habe, benutze ich keinen Docker.

Ja.

Jochen

Außer ich deploy es halt irgendwie da.

Jochen

Zum Deployen benutze ich schon Docker, aber.

Dominik

Ja, ist halt die Frage, ne?

Dominik

Also wann das halt so ein Macht und wann nicht.

Dominik

Deploying ist doch noch so eine Sache, ja?

Dominik

Also, weil wie deploy ich denn überhaupt so ein Frontend?

Dominik

Also ich habe ja jetzt tatsächlich irgendwie dann diese ganzen Systeme, die Live-Development-Server haben.

Dominik

Also in JavaScript-Fehter gibt es irgendwie jetzt MPM oder JAN und Node oder Jan, warum benutze ich das eine oder das andere mal hin und her?

Dominik

Also ich habe jetzt letztes Mal Jarn benutzt, weil es so ein bisschen ähnlich von Poetry ist.

Jochen

Ja, also Jarntag.

Jochen

Das ist ja ein bisschen neuer, irgendwie war mal schneller, weil es halt Sachen gecached hat und so.

Jochen

Aber ich glaube, es macht heute keinen großen Unterschied.

Jochen

Nimmt sich nicht viel.

Dominik

Dann installiere ich halt dann da irgendwie meine Projekte und dann kann ich halt irgendwie die bauen und dann oder surfen direkt und gesehen alle Änderungen, das ist ja super.

Dominik

Aber wenn ich jetzt in meinen Dango zum Beispiel einbauen möchte, dann muss ich die alle packen.

Dominik

Und mit da ganz, ganz übel jetzt in letzter Zeit so ein bisschen rumgefimmelt mit Webpack und der Konfiguration davon, bis es dann irgendwie mit gehashten JavaScript-Files und so in den Static-Ordnern landete, die ich das gerne wollte.

Dominik

Und dann ist halt auch die Frage, wenn man das dann in Production ziehen will, wo deployt man das Ganze dann eigentlich hin, liegt das dann einfach auf dem Server rum, irgendwo lokal und wird dann als File ausgeliefert mit Tango Codex Static oder was ist das?

Dominik

Und dann gibt es irgendwelche Tools-Write-Neues, habe ich gesehen.

Dominik

Und ich habe wie gesagt diesen Webhack-Loda genommen, dass er automatisch weiß, welche Files denn das sind.

Und das ist schon eine

Dominik

nochmal so eine Wissenschaft.

Jochen

Ja, ja, ja.

Jochen

Das ist halt leider, ich wünsche mir auch, das wäre irgendwie anders, aber es ist leider alles nicht so einfach.

Jochen

Und ich habe mich auch lange nicht damit beschäftigt, mit diesem ganzen Deployment-Kram und wie setzt man so komplette Systeme auf.

Jochen

Aber ich fürchte, letztlich kommt man da nicht so richtig drumherum.

Jochen

Und es ist halt, es ist schlimm.

Jochen

Es wird dann irgendwann besser.

Jochen

Zuerst denkt man sich so, das kann doch alles, das ist man sehe kein Land und das wird irgendwie alles nicht besser, aber irgendwann geht es dann doch.

Jochen

Und zu diesem ganzen, also ich macht man das mit den Assets und so, das ist ein Problem.

Jochen

Es gab da letzte PyCon, also ungefähr fast ein Jahr her.

Jochen

2019, einen Vortrag von Jacob Captain Moss, also einem der Klammer-Gründer.

Jochen

Und der Talk hatte den Titel Acids in Django Without Losing Your Hair.

Jochen

Oh, dann denken wir sich so, das habe ich mir auch gedacht.

Jochen

Dann habe ich mir, das ist so super endlich, erklärt mir das jemand, wie man das richtig macht, ohne dass es so kompliziert wird.

Jochen

Und dann sagte er dann halt so an den ersten Sätze, die da sagten, so, ja, der Titel ist so ein bisschen Bait <unk> Switch.

Jochen

Also tatsächlich, ich habe mir das, ich habe das auch nie so, also ich fand das auch mal kompliziert und dachte mir, ach, dann halte ich mal einen Vortrag drüber.

Jochen

Und dann muss ich es halt lernen und dann habe ich auch einen Grund, das zu tun und mir das alles nochmal genau anzugucken.

Jochen

Und jetzt habe ich das halt gemacht.

Jochen

Und ich hatte den Titel aber vorher schon hingeschrieben.

Jochen

Und ich muss aber sagen, nachdem ich das jetzt alles gemacht habe, ist es leider nicht einfach.

Man kann nichts machen.

Jochen

Insofern, ja, leider verloren.

Jochen

Aber ich erzähle euch jetzt immer trotzdem, was ich alles rausgefunden habe.

Jochen

Und ja, es ist leider nicht einfach.

Jochen

Und das ist, also eine Geschichte bei Django ist zum Beispiel blöd, dass das halt Static heißt, das ist halt so komisch, ne?

Jochen

Weil es halt damals gab es noch keinen etablierten Begriff dafür.

Jochen

Heute würde man das eher als Assets nennen.

Jochen

Aber.

Dominik

Unbedingt, man kann ja Static-Files dir ident of Assets setzen, Dango?

Jochen

Ja, kann man schon, aber das Problem ist, die Konfigurationspameter, die heißen ja immer noch so, das heißt dann immer noch Static Root und Static weißer Teufel irgendwie, ja, das wird man halt nicht so leicht los, ne?

Dominik

Man kann aber immerhin da in den Config-Kindern sagen, Asset root gleich, Static Root gleich.

Jochen

Das kann man natürlich machen, aber na.

Ja, herzlich.

Dominik

Ja, okay, also okay, wir haben jetzt Assets, die liegen jetzt irgendwo, okay?

Jochen

Genau, also tatsächlich gibt es in Django einmal die Geschichte, dass der also man, es gibt so eine Indirektion, die so ein bisschen komisch ist.

Jochen

Es ist nicht so intuitiv.

Jochen

Wenn man zum Beispiel, das wird auch oft aufgerufen, wenn man jetzt deployt zum Beispiel oder halt auch gibt es so ein Ding, das nennt sich Collect-Static ein Kommando und Management-Kommando.

Management-Mand.

Was das macht, ist, es kopiert halt alle, ich glaube, wenn man das

Static-File zu hol das.

Dominik

Genau, also die einzelnen Apps, die man da irgendwie, kann man einzelne Static Files hinlegen, einzelne Assets und die sammelt es alle ein, wenn das irgendwie die eingestellte ist richtig und speist das dann alles in die Ordner Static-Files rein, wo man es abrufen kann fürs Deployment.

Jochen

Ja, nee, es macht sogar auch noch mehr.

Jochen

Es deployt das Ganze, also du kann man so einstellen, dass es zum Beispiel den Kram auch direkt nach S3 packt und so.

Jochen

Also wo ist das hin kopiert?

Jochen

Das ist halt konfigurierbar.

Und es wird

Dominik

auch modifiziert, also zusammengefasst und so.

Dominik

Ist da auch Byte Noir schon mit beteiligt?

Dominik

Was ist das überhaupt?

Dominik

Ja, nein.

Jochen

Nein, ganz andere Geschichte.

Jochen

Also diese Static-Files-Geschichte in Django ist halt, also diese Indirektion gibt es halt deswegen, weil Third-Party-Apps ihre eigenen Geschichten mitbringen.

Jochen

Ansonsten könnte man sich ja sagen, warum surft man nicht einfach das Static Directory?

Jochen

Das ist ja, dann hat man es doch schon.

Jochen

Ist auch schon fertig.

Jochen

Aber ist leider nicht so, sondern man muss halt diese ganzen, muss auch die Static Assets, die Assets von allen Apps, die man verwendet, einsammeln.

Jochen

Daher geht das halt nicht so leicht, sondern das muss halt alles eingesammelt werden.

Jochen

Und dann gibt es ja auch eventuell Sachen.

Jochen

Ich könnte ja auch sagen, okay, also meine Assets liegen halt nicht in einem Verzeichnis, sondern die liegen halt irgendwo eben in einem S3-Bucket oder auf Django, irgendwas, was Django Storage das Anbindung hat, also auch auf einem FTP-Server oder sowas.

Jochen

Könnte auch sein.

Jochen

Also, genau, das Collect-Setic holt halt Dinge irgendwo her und schreibt sie irgendwo hin.

Dominik

Ich kann Django mit einem FTP-Server verknüpfen.

Jochen

Kann man es.

Jochen

Ich weiß nicht, ob das eine empfehlenswerte Geschichte ist.

Jochen

Ich möchte ja nicht.

Dominik

Gut über alte Zeiten hier.

Jochen

Und ja, das ist halt blöd und das wird man auch nicht so richtig los.

Jochen

Und ja, das ist nur der eine Aspekt daran, ne?

Jochen

Das ist halt dieser, was passiert mit den Assets, wie kommen die jetzt eigentlich dahin, wo sie gesurft werden?

Jochen

Und jetzt kann man das natürlich entweder so machen, dass man sich, dass man das im Entwicklungsumgebungsfall halt einfach dann vom Django Entwicklungsserver ausliefern lässt und dann halt damit lebt, dass das irgendwie anders ist als im Produktionssystem, weil im Produktionssystem surft das natürlich nicht Django, sondern da liegt das halt irgendwie auf S3 oder halt irgendwie in irgendeinem CDN oder halt irgendwie h

Jochen

inter irgendeinem Nginx oder was auch immer.

Jochen

Und wenn das jetzt anders ist als in der Entwicklungsversion, dann kann es natürlich sein, dass dann Bugs passieren, weil man das halt in der Entwicklungsgeschichte nicht gesehen hat, dass das so nicht funktioniert.

Jochen

Was man dann aber machen kann, ist, dass man sozusagen die gleiche Infrastruktur benutzt wie beim Produktions-Bi-Proktionsdeployment auch.

Jochen

Und dann, was auch in dem Vortrag dann halt gesagt wurde, ist halt, was man tun kann, ist man Prefix das dann halt irgendwie mit, damit man halt nicht Produktionsassets überschreibt oder so, sondern Prefix das halt dann mit Entwicklungsversionen oder sowas.

Jochen

Mit Developer davor oder so und naja.

Jochen

Aber und hätte dann halt sozusagen die gleiche Umgebung, Entwicklungssystem und Produktionssystem.

Jochen

Habe ich bisher noch nicht so gemacht, aber dachte ich mir so, oh ja, okay, stimmt, so kann man das vielleicht machen, dann hat man auf jeden Fall dieses Problem nicht mehr.

Ja.

Jochen

Aber es ist natürlich auch irgendwie doof, dass man dann immer, wenn sich irgendwas geändert hat, dann das dann plötzlich, dass man dann Collect-Setic aufrufen muss und so.

Dominik

Ja, irgendwie kleine zwei Pixel geändert und dann einmal bitte schön nach S3 abpen und so.

Ja, genau.

Jochen

Es ist natürlich auch wieder so, aber es gibt halt keine tolle Lösung dafür irgendwie.

Jochen

Das ist immer ein bisschen doof, egal wie man es macht.

Jochen

Dann, genau, das, was halt White Noise macht, ist im Grunde nur eine andere Art.

Jochen

Also tatsächlich ist es wahrscheinlich das, was man jetzt machen sollte, wenn man statische Files ausliefert.

Jochen

Früher ging das so gar nicht, aber mittlerweile mit White Noise kann halt der Applikationsserver statische Files ausliefern.

Jochen

Das ist halt so dann ein Teil von dem, was White Noise macht.

Jochen

Der andere Teil ist, die Cache Header richtig setzen.

Jochen

Was man dann tun kann, ist, man liefert irgendwie die Assets aus über den Applikationsserver und packt dann halt ein CDN davor, dem man einfach nur sagt, also da kommen die Files eigentlich her, also wenn du irgendeine URL unter der Domain kriegst, dann frag eigentlich mal den Server danach und dahinter liegt dann halt der Applikationsserver.

Jochen

Und Cache ist halt.

Jochen

Und die Cache-Header, die Cache-Control-Header, die werden alle richtig gesetzt von White Noise.

Jochen

Und damit hast du halt ein System, das gut funktioniert.

Jochen

Und Whitenus kannst du halt sowohl in deiner Entwicklungsumgebung verwenden, wie auch in deiner Produktionsumgebung.

Jochen

Also eigentlich ganz, ganz cool.

Jochen

Wo ich ein Problem, wo ich nicht weiß, wie dieses Problem löst.

Jochen

Das ist und das sind halt immer so Dinge, so Authentifizierung, ne?

Jochen

Wie macht man das?

Jochen

Was ist, wenn ich jetzt?

Jochen

Es gibt ja noch die Unterscheidung zwischen Static-Files und halt Assets, wie sowas wie CSS, irgendwelche Icons, irgendwelche JavaScript-Geschichten oder so, die sich im Grunde ja auch nicht wirklich ändern, die auch nicht dynamisch sind, wo auch Nutzer irgendwie nichts mitmachen können und halt sowas wie, das ist in der Djungle Welt heißt es dann Media, wo zum Beispiel User-Uploaded hochgeladene Geschichten drin landen.

Jochen

Und jetzt ist es halt auch so, manche von den Sachen willst du halt nur Leuten, die sich irgendwie authentifiziert haben, zugänglich machen.

Jochen

Und das ist halt auch so, wie macht man das eigentlich richtig?

Jochen

Ich habe ehrlich gesagt keine Ahnung, wie mir das mit White Noise richtig geht, weil wenn das jetzt irgendwie ein CDN draußen cached, was ist, wenn da jetzt ein Request von jemand anders kommt?

Jochen

Keine Ahnung.

Jochen

Also so wie ich das kenne, was man machen kann, ist, dass du halt irgendwie einen Web-Server hast, davor, der das halt ausliefern kann, theoretisch, also irgendwie in Nginx oder so.

Jochen

Und der, da geht halt einen Request rein nach jetzt irgendeinem Bild oder nach irgendeiner Datei.

Jochen

Und der Applikationsserver schickt dann halt bloß zurück, okay, der Request ist autorisiert oder nicht, oder das ist halt.

Jochen

Und dann nimmt der Nginx das und ersetzt diese Response halt durch die File-Response.

Jochen

Weil er ja auf die Files zugreifen kann.

Jochen

Sowas kann man halt machen.

Jochen

Es ist halt auch alles ganz schön, ganz schön übel.

Jochen

Wie man das jetzt mit White Noise hinkriegt, ich habe keine Ahnung.

Jochen

Also das sind alles Dinge, die sind nicht so richtig einfach.

Jochen

Ja, aber tatsächlich für so städtische Assets ist wohl der Weg zur Zeit White Noise zum Ausliefern und dann halt, wenn man skalieren muss, halt einen CDN davor haben.

Dominik

Und vorher, wenn man den JavaScript-Frontend dann quasi gebaut hat, wird das mit Webpack so ein Bundle gepackt und einen Chunk-Vendor ist, das ist nochmal nicht ausgeliefert.

Jochen

Das ist nochmal ein anderes Problem im Grunde.

Jochen

Also das ist das Problem, dass man halt, wenn man jetzt irgendwie eine JavaScript-Applikation im weitesten Sinne irgendwie entwickelt, dass man dann halt das in einen Bundle zusammen kompiliert haben möchte und halt auch vielleicht transpiliert, weil man schreibt halt ESNEX oder man schreibt halt TypeScript oder sonst irgendwas, was die Browser nicht verstehen.

Jochen

Und dann muss das halt irgendwie nach ESX oder XS.

Dominik

Warum verstehen denn die Browser kein ESX?

Jochen

Also ESX verstehen sie, aber ESNEX zum Beispiel nicht.

Aha.

Jochen

Ja.

Jochen

Und halt TypeScript wahrscheinlich auch nicht.

Jochen

Oder CoffeeScript oder was auch immer man da verwenden möchte.

Dominik

Weil die das nicht verstehen, dann muss man denen halt sagen, dass das transpiliert wird mit was wie Babel oder was kannst du irgendwie.

Dominik

Irgendwelche Transformatoren, das Transpiler und.

Jochen

Das ist die eine Geschichte, dann ist es auch so, dass es halt unter Umständen günstiger ist, wenn es halt alles in einem Ding ist und minifiziert und nicht in vielen unterschiedlichen, sodass der Browser nicht so viele Requests machen muss.

Und ist heutzutage auch nicht mehr

Dominik

so passt.

Dominik

Den ganzen neuen Code, wie er schreibt, und was ist gerade nicht alle, die SCSS, SASS oder die ganzen Frontend-Sachen, die man da bauen kann.

Jochen

Ist jetzt als letztens

Dominik

das sind Webpack dann und baut daraus dann minifizierte, also auch ohne alle Leerzeichen, damit sie schneller geladen werden können, Pakete, schraubt die zusammen zu verschiedenen Chunk-Vendors, wie sich das nennt, und liefert das mit allen diesen 20.000 Notpaketen, die unbedingt notwendig sind für die ganze Anwendung, insgesamt als Files aus drin.

Dominik

Ja, also mit Hashes und.

Jochen

Genau, genau.

Jochen

Webpack ist im Grunde das Ding, was halt ein Riesenhaufen, also dass es seine Applikation irgendwie nimmt und dann spuckt es halt so ein paar Bundles aus, die dann halt tatsächlich benutzt werden.

Dominik

Das wäre das dann, was man in die Static-Files reinpacken kann.

Jochen

Genau, genau.

Jochen

Aber.

Dominik

Ja, gar nicht, ganz, also wo ich jetzt schon ein paar Mal nochmal drüber gefallen bin, ist, man könnte diese Files dann ja einfach deployen und dann in Django einfach ganz normal laden, indem man halt die Namen dann so reinpackt.

Dominik

Aber bei jedem Bild ist natürlich die Hashes anders und das heißt, du wirst das jedes Mal, wenn du das Frontend irgendwas änderst, dann das komplett neu bauen und das dann in Dango wieder anpassen und das willst du eigentlich nicht machen, aber dafür gibt es dann irgendwie so eine Säule.

Jochen

Genau, deswegen schreibt ja auch die Pfade für die Static-Files und so, da schreibt man ja auch nicht direkt die Pfade rein, sondern dafür hat man ja auch das Static Tablet-Hag.

Jochen

Sodass halt egal, wenn ich jetzt meine Storage-Engine, wenn ich jetzt von S3 auf Compute-Engine umsteige oder auf sonst irgendwas Minio oder dann muss ich halt nicht überall meine URLs ändern, sondern dann macht das Static-Tag das automatisch.

Dominik

Ja, aber eventuell dann doch, weil ja nämlich der Bild von Webpack, ähm dir andere Hashes und deswegen auch andere Namen für die einzelnen Files gibt.

Dominik

Und dann müsstest du dir Dateinamen halt ändern und das ist halt blöd und da braucht man eine Wiederlösung.

Jochen

Genau, du brauchst halt so eine ähnliche Lösung dann halt jetzt für deine Bundles und da gibt es dann irgendwas Jung Webpack-Loader oder so und dann da sagt man dann irgendwie Render Bundle und genau dann.

Dominik

Dann funktioniert das auf jeden Fall dann, wenn man die gebildet hat.

Dominik

Ja, ich bin jetzt gerade noch dabei rauszufinden, wie das zum Beispiel mit Wue so funktioniert, dass dann der Development-Server nicht kaputt geht.

Dominik

Ja.

Dominik

Aber äh, ja.

Jochen

Ja, ja, aber es ist ganz schön kompliziert.

Jochen

Und ich meine, es gibt ja auch dann, tatsächlich muss man sagen, Webpack ist halt wahrscheinlich das, was man verwenden muss.

Jochen

Gibt es keinen, nicht so wirklich einen Weg drumherum.

Jochen

Es gibt auch noch Django Kompressor und so.

Jochen

Also wenn man jetzt nur CSS und vielleicht ein ganz kleines bisschen JavaScript, aber nee, dann geht das auch alles damit gut.

Jochen

Aber wenn man jetzt irgendwie kompliziertere Sachen macht, dann kommt man halt um Webpack eigentlich nicht rum.

Jochen

Auch die ganzen anderen Tools, die es da so gibt, die sind alle nicht vergleichbar mit dem, was Webpack so kann.

Dominik

Der Kompressor ist auch irgendwie kaputt gegangen, als ich ihn angefasst habe.

Das lag natürlich nur an mir.

Dominik

Wahrscheinlich einen falschen Gang reingehauen getrieben und

gemacht, wie es immer so ist.

Jochen

Die Sachen, die es kann, ist es super, aber das Problem ist halt, ja, es ist.

Dominik

Es gibt ja noch das Kompressor-Tool-Kit.

Jochen

Ja, also es ist irgendwie nicht, tatsächlich läuft es momentan auf Webpack hinaus.

Jochen

Es gibt noch ein anderes Ding, das nennt sich Parcel.

Jochen

Das könnte sein, dass das irgendwann mal Webpack ablöst, aber momentan ist es halt noch Webpack.

Jochen

Und ja.

Jochen

Man muss das halt irgendwie alles integriert kriegen, ja.

Jochen

Das ist ja.

Dominik

Das ist so eine Geschichte.

Dominik

Das ist ganz schön hakelig, wenn man da mal so ein bisschen guckt.

Dominik

Das ist ja nicht nur Pixel-Grumgeschubse, wenn man mal so ehrlich ist.

Dominik

Es gibt so gute Witze.

Dominik

Ich habe letztens wieder einen ganz tollen gesehen, wo jemand ganz gemütlich frühstückt.

Dominik

Müsst die Schale und jetzt ganz gemütlich seine Kornflex.

Dominik

Dann gibt es jemanden, der stellt Milch hin.

Dominik

Das ist ein Roboter, der nimmt die Milchkanne und schüttelt das dann so vor ihm so in die Schüssel rein und guckt dabei die Hälfte der Milch so weg.

Dominik

Das ist also Frontend Nutzer-Experience und Backend der Armt, der dann die Milch.

Dominik

In die Schüssel gießen muss, ja.

Jochen

Taja.

Dominik

Ja, haben wir noch was auf der Liste oder haben wir euch jetzt alles erzählt über das Frontend, was ihr heute wissen wolltet?

Jochen

Ja, das weiß ich nicht, ob das irgendjemand wissen wollte.

Also mit allen Dingen, die wir immer tun.

Jochen

Aber im Grunde, ja, was halt interessant wäre, ist, ob da jemand Lust drauf hätte, mal irgendwie so eine View-Lerngruppe vielleicht mitzumachen.

Dominik

Ich bin ja schon mal freiwillig dabei und melde mich.

Das ist schon mal

Jochen

super, dann eigentlich sind wir dann ja schon komplett.

Jochen

Aber genau, halt auch mit viel, viel Python und vielleicht auch Django oder man kann auch mal irgendwas anderes nehmen.

Jochen

Man könnte auch mal, ich meine, ich hätte auch mal Lust, irgendwie Fast API zum Beispiel auszuprobieren.

Jochen

So Starlet unten drunter und so.

Jochen

Da gibt es ja auch ganz, ganz nette Geschichten mittlerweile.

Jochen

Aber halt View im Frontend genau, dann können wir da, dann schreibe ich das vielleicht mal irgendwie auf und schicke das mal in diese Gruppe.

Jochen

Das ist ein View-Cologne, glaube ich, irgendwie.

Jochen

Die könnte man ja dann vielleicht einfach zur virtuellen View machen.

Dominik

Da müssen wir auch nicht da wieder hinfahren.

Jochen

Ja.

Jochen

Und vielleicht kann man es ja dann auch irgendwie wieder in die physische Realität verlegen, wenn es dann mal wieder möglich sein sollte.

Jochen

Dieser ganze Spuk jemand so weit ist.

Ja, ist ja ganz witzig.

Dominik

Gerade genau die Sachen, mit denen man sich den ganzen um den Dom kümmert und den Dom, die sind alle da unten in Köln.

Dominik

Ja, äh, sorry.

Dominik

Keine Ahnung.

Jochen

Kann man bestimmt auch noch irgendeinen jede Menge Wortwitze drauf.

Jochen

Irgendwie.

Dominik

Ja, ich glaube auch.

Jochen

Verbrochen zu werden.

Dominik

Ja, wir haben es schon wieder spät.

Jochen

Ja, es ist echt genau.

Jochen

Ja, eigentlich, was haben wir denn auf der Liste?

Jochen

TypeScript könnte man noch machen, aber ich meine eigentlich, nee, ich glaube, ich würde auch das Unitest Smog vielleicht tatsächlich irgendwie einfach mal erstmal weglassen wieder.

Dominik

Jetzt haben sich alle darauf gefreut, Jochen.

Jochen

Ja, aber ich würde auch sowas heißen, wir müssen in letzter Zeit voraufstehen.

Dominik

Gerade für dich.

Jochen

Schrecklich, schrecklich.

Dominik

Ja, ich kann das verstehen.

Dominik

Ja, also hört uns auf jeden Fall, egal wo ihr seid, bleibt uns gewogen und morgens mittags, abends Nacht wieder eingewandert.

Ja, nicht, ne?

Dominik

Nicht konkret.

Dominik

Wir haben nicht, also wir haben gesagt, dass es zwei Tage vor dem Python Barcamp ist.

Dominik

Wir haben gesagt, dass letztes Jahr 2019 ein, zwei interessante Sachen gewesen sind.

Dominik

Also das kann man zurückrechnen, wer möchte, ist es der 23.

Dominik

April 2020.

Ja.

Jochen

Und genau, demnächst mehr Frontend, Backend-Integration hier.

Dominik

Noch mehr.

Jochen

Aber wir haben ja noch ein paar andere Sachen.

Jochen

Also vielleicht müssen wir uns ein bisschen erhöhen.

Ja, ja.

Dominik

Wir haben noch einige ganz spannende Sachen.

Dominik

Wir brauchen Gäste.

Dominik

Wir hatten noch immer noch keine Frau hier bei uns zu Gast, was daran lag ja.

Dominik

Ja, wir hätten gerne eine mal da, die etwas erzählen kann über Python.

Dominik

Ich hatte mal ein paar gefragt, aber die haben sich alle nicht überreden lassen.

Dominik

Ja, vielleicht ändern wir das mal zu einer Jubiläumsfolge oder sowas, aber ihr kennt das ja wahrscheinlich.

Dominik

In der Entwicklergemeinde ist es leider die Quote nicht ganz so super, wie wir das gerne hätten.

Oh, naja.

Dominik

Ja, aber das kommen wir noch hin.

Dominik

Also in Data Science, ja, ich glaube auch während demnächst müssen wir uns ja mal ein bisschen darauf fokussieren.

Dominik

Vielleicht liegt es auch einfach an uns und wir sind zu verschoben.

Jochen

Ja, das kann auch gut sein.

Jochen

Ja, aber ansonsten, ja.

Jochen

Alles klar.

Dominik

Ja, genau.

Dominik

Vielen Dank, dass ihr eingeschaltet habt.

Dominik

Macht euch noch einen schönen Abend, Tag, morgen.

Dominik

Ich auch.

Dominik

Bleibt weiterhin gesund und hoffentlich bald mal wieder in live auf einem der schönen Events hier in der Ecke.

Alles klar.

Tschüss.

Jochen

Ciao.