DjangoCon Europe 2019. Ist Ihr Pony tot?

Bild

Vom 9. bis 14. April fand in Kopenhagen die Konferenz DjangoCon Europe 2019 statt. Voller Hoffnung und Bestrebungen kam ich zu diesem Ereignis und ging in tiefem Aufruhr. In dem Artikel werde ich versuchen, meine Eindrücke von der Konferenz zu vermitteln und eine so scharfe Änderung der Einstellung gegenüber Django zu kommentieren.
Haftungsausschluss: Der Artikel enthält Intoleranz, kategorische Urteile und ungerechtfertigte Kritik.

Hallo allerseits, ich bin Maxim, ich lebe in Österreich, in Tirol. Ich bin Lehrer bei GeekBrains und Mitinhaber des WinePad-Projekts, Sammler und Verkäufer von technischen Daten zu alkoholischen Getränken. Dies sind normalerweise die Daten zu den Weinen.

Über das WinePad-Projekt
Wir haben die genaueste Datenbank in Europa. Dies liegt daran, dass alle Weine in der Datenbank von unseren Experten persönlich überprüft werden. Kurz zu unserer Arbeit: Schlag. Und manchmal passiert es hart: Bei 40 Approbationen pro Tag bin ich mir am nächsten Morgen nicht immer sicher, wie ich nach Hause gekommen bin. Oder ich kann mich nicht erinnern, wo das Auto geparkt ist.

Das Projekt startete 2012 mit Django 1.4 / Python 2.7 auf dem Server und mit Jquery auf dem Client + JsonRPC-Server. Jetzt hat die Anzahl der Technologien zugenommen. Jedenfalls sind wir buchstäblich auf Django gestoßen.

Ich bin 2015 dem Projekt beigetreten und habe den Stab von Tiroler Entwicklern übernommen. Von schlechter Qualität bewegten sich die Haare überall.

Die Geschichte der Tiroler Hirten, die sich scharf als Programmierer qualifiziert haben, werde ich hinter den Kulissen lassen. Wenn Sie ihre Lösungen sehen, werden Sie sicher plötzlich jeden töten wollen, der sich selbst als "Tiroler Programmierer" bezeichnet.

Im Februar 2019 wurde klar: Die Entwicklung des Projekts ist mit den aktuellen Technologien nicht möglich. Auf der Suche nach Antworten entschied ich mich für die DjangoCon 2019, die sehr pünktlich in Kopenhagen stattfand. Was ich von der Konferenz wollte:

  1. Lernen Sie von Fachleuten und sehen Sie, was ich in meiner Arbeit verbessern kann.
  2. Tauchen Sie ein in die Welt der neuen Lösungen für meine Plattform.
  3. Treffen Sie sich mit denselben Django-Nerds wie ich. Treten Sie sozusagen in eine Party ein.
  4. Verstehe, was mit Django los ist. Seit 2016 kommt regelmäßig der Gedanke, dass mir etwas fehlt. Ich kann einfach nicht verstehen, was.

Was kam aus all dem:



Tag Null


Am Dienstagnachmittag, vor Beginn der Konferenz, fand ein Django Girls-Treffen statt - dies ist die Initiative der DjangoFoundation, um Django in den weiblichen Massen bekannt zu machen. Ab 17 Uhr begann die Registrierung. 3-Zoll-Disketten fungierten als Abzeichen, jeder konnte alles, was er wollte, auf eine Diskette schreiben (ha ha), USB-Laufwerke waren vorhanden.

An allen Tagen der Konferenz gab es eine unbegrenzte Menge Craft Beer mit der Aufschrift „Pink Django-Pony“ von einer örtlichen kleinen Brauerei. Einerseits ist es cool, andererseits ... so lala Bier. Die Hallen waren mit rosa fliegenden Pferden aller Größen geschmückt.



Von der unauffälligen Symbolik und dem Gefühl der Beteiligung an der Gemeinschaft der Pferdehirten gab es einen besonderen, freudigen Nachgeschmack. Ich traf Russell Keith-Magee , den langjährigen Django-Entwickler. Alle, die zu dieser Konferenz kamen, sind auf ihre Softwarelösungen angewiesen.



Beim Kauf eines Tickets musste ich mich bereit erklären, die Regeln der Konferenz zu Offenheit, Toleranz, konstruktiver Kritik und Respekt für die sexuellen Vorlieben der Teilnehmer einzuhalten. Indem ich dem zustimmte, ahnte ich nicht, wozu dies führen könnte ...

Hier habe ich zuerst die Regel von Pacman kennengelernt: Wenn sich eine andere Person dem Gesprächskreis nähert, MÜSSEN die Teilnehmer des Gesprächs beiseite treten und Platz für einen neuen Gesprächspartner schaffen. Im Allgemeinen war es möglich, Chips (in beliebiger Menge) zu schlagen und zu essen, sich mit den ankommenden Spezialisten vertraut zu machen, an Gesprächen teilzunehmen und die Organisatoren zu ziehen.

Subjektivität und mangelnde Toleranz
Viele Teilnehmer trugen unordentliche Kleidung, zerrissene Schuhe, rochen seltsam und sahen schwimmend aus. Diese Vision hat sich in den folgenden Tagen nicht wesentlich geändert. Es war seltsam für mich zu sehen.

Abends bin ich durch Kopenhagen gelaufen.



Peter erinnerte sich ein wenig an eine schöne Stadt am Ufer des kalten Meeres. Sie übertreiben es mit Fahrrädern, aber man kann Fischrestaurants alles verzeihen. Das ist sehr lecker.

In den ersten drei Tagen der Konferenz wurden in der Halle Berichte für 500 Personen (377 Teilnehmer) abgegeben. Parallel dazu gab es Workshops in separaten Hallen . Die meisten Berichte werden auf Video aufgezeichnet. Sie können sie auf YouTube ansehen. Es gibt keine Sendungen von Workshops. Liste und Beschreibung der Berichte und Workshops hier . Alle Workshops waren ausnahmslos sehr schlecht vorbereitet, wie andere Teilnehmer feststellten.

In den Pausen wurde viel Essen und Kaffee angeboten. In dieser Hinsicht war die Konferenz gut vorbereitet. Sponsorstände, meistens HR, standen unauffällig in der Lobby. Ich war daran interessiert, mit den skandinavischen Headhuntern zu plaudern.

Erster Tag


Eröffnungsvortrag über die Situation mit DjangoProject


Kurz gesagt: Helfen Sie, wer als kann.



Workshop GraphQL


JSON für die Faulen. Das Leben wird nicht besser, wenn jeder eine andere Abfrage-Notation verwendet.

Das Leben ist glücklicher


Django REST Wrapper, schreiben Sie 4 statt 6 Codezeilen.

Workshop zum Wechsel zu einer neuen Version des Codes, ohne den Server anzuhalten


Die Geschichte einer zehnmonatigen Herzoperation mit einem Code von 100 Modellen. Das Projekt wurde dreimal erstellt:

  1. Mit alten Modellen.
  2. Mit alten und neuen Modellen und der Möglichkeit des Online-Wechsels.
  3. Ohne alte Modelle und Schalter.

Lang und teuer.

Aufgrund dieses Workshops habe ich drei Vorträge verpasst, zwei haben gut gesprochen, ich werde in den Notizen nachsehen:

  • 750.000 Pull-Pull-Anfrage.
  • Django Web-Security-Header.

Nach einer Pause mit dem nächsten Kaffeetank gab es einen Vortrag über DJANGO-ORM . Sprecher - Sigurd Ljodal. Dies ist der Entwickler des aktuellen ORM. Seine Aktivitäten können im Django-Repository angezeigt werden.



Der Bericht ist nützlich, aber er hat mich verärgert. Einerseits ist der neue ORM-Django sehr gereift. Sigurd hingegen verwendete in seinen Beispielen die undokumentierten Funktionen von queryset.query . In einem anschließenden Gespräch mit Sigurd fiel mir auf, dass er, wie die meisten Django-Entwickler, die queryset.query Methoden nicht wirklich kennt.

"Warum verwenden Sie sie in Beispielen!" Ich fragte. "Nun ... so ..." antwortete Sigurd.

Nach all den Berichten gab es Blitzgespräche. Fünf-Minuten-Berichte für diejenigen, die spontan sprechen wollten. "Blitz" war meistens interessant, aber fünf Minuten sind nicht genug. Der Zweck des Sprechers ist es, sich zu interessieren, und dann können die Leute fragen.

Ein paar Bierwagen und lange Gespräche nach den Blitzgesprächen ... Der erste Tag ist vorbei.

Zweiter Tag


Workshop: Bootstrap Django


Es hat nicht geklappt.

Bilderkennung, maschinelles Lernen mit Django


Keine Schulung, Verwendung externer Ressourcen, Pfosten in Anerkennung, lustige Bilder in den Beispielen. Nichts als Spaß.

Bilderkennungs-Workshop


Alles hat funktioniert und ein Bild davon wurde unter 10 anderen gefunden. Aber die Geschwindigkeit der Arbeit hat alles durchgestrichen. 20 Sekunden für die Vorbereitung, 30-40 Sekunden für die Suche. Ich dachte: Eine einmalige Suche in unserem Projekt nach Bildern wird Jahre dauern. Und wir haben täglich Zehntausende solcher Anfragen. Die vorgeschlagene Lösung passt nicht zu mir.

Testen visueller Änderungen


Front-End-Mitarbeiter können hilfreich sein.

SQL-Alchemie gegen Django-ORM


Sprecher Gleb von DjangoStars. Ich stimme der Idee zu, würde aber dennoch einige Dinge mit DJANGO-ORM-Methoden implementieren. Die Hauptsache, die ich gesehen habe, wo es möglich ist, Alchemie in meinem Projekt anzuwenden.



Workshop: vollständiger Anforderungs- / Antwortpfad durch die Django-Lebensmittelpipeline


Es war nützlich, das Wissen aufzufrischen. Django-Entwickler, denken Sie daran: Sie müssen lediglich eine WSGI-Anwendung konfigurieren.

Dann kam mir die Idee, über den „Blitz“ zu sprechen. Ich machte eine Präsentation und übersprang einige Berichte.

Divine Project Documentation Report


Vom Leiter des RedHat-Dokumentationsteams.



Ich sprang auf, um dem Sprecher danach zu danken. Sie erklärte mir klar, warum ich aufhören und anfangen sollte, mein Projekt zu dokumentieren. Im Moment der Dankbarkeit berührte ich ihren Unterarm. Was hat hier angefangen !!! Dies ist ein Polarfuchs. Ich dachte, sie würden mich ins Gefängnis bringen. Alles kostet eine mündliche Strafe für unangemessenes Verhalten gegenüber einem anderen Konferenzteilnehmer.

Pentapesting mit ZAP


Die Anwendung versucht alle ihr bekannten Methoden, um die angegebene Site zu knacken.



Ich wollte sofort versuchen, mein Projekt zu hacken.

Blitz war nützlicher als am ersten Tag.

Alexander (DjangoStars) sprach über die Einstellungen der Speicheroptionen




Wrapper Story für Modellfelder


Vrapper überwacht den Rückgabetyp des Werts.

Bericht über die Installation von Stubs, anstatt private Clientdaten anzuzeigen


Nützlich in der Phase der Entwicklung, des Testens und der Protokollierung. Im Zeitalter des universellen Datenschutzgesetzes ist dies eine Überlegung wert. @sensitive_variables antwortete der Autor nicht, warum er den Dekorator @sensitive_variables neu @sensitive_variables . Es scheint, dass er die Dokumentation einfach nicht gelesen hat.

Bericht über die Verwendung von Variablen mit einem Gültigkeitsbereich innerhalb eines einzelnen Threads


Ich benutze diese Lösung schon lange. Ich kann nur sagen, dass die Verwendung globaler Variablen in Django auf mangelnde Fähigkeiten und mangelnde Architekturkenntnisse zurückzuführen ist.

Nach zwei Tagen der Konferenz war ich verärgert: ein paar nützliche Berichte in drei Tagen. Sehr wenig über Django, sehr viel über fremde und unnötige Lösungen. WTF ??? Und selbst Kopenhagen hat mich nicht beruhigt.



Das Wasser in den Kanälen ist sauber. Es ist das unten zu sehen. Sehen Sie dort auch etwas?


Genialer dritter Tag


Dieser Tag zahlte alles Leid aus, zerstreute Zweifel und brachte noch mehr Traurigkeit. Mein Rat ist, alles zu studieren, was Sie über die Berichte des dritten Tages finden. Eine so coole Wissensinjektion findet man selten.

Viktorianischer Mordbericht


Das Mädchen erklärte an den Fingern den Grund für das Gesetz zum Schutz von Benutzerdaten. Ich habe den Grund für das Erscheinen eines solchen Gesetzes verstanden. Das Problem mit dem Datenschutz sowie das Problem mit der elektrischen Isolierung können versehentlich jemanden töten.

Verwenden von GeoDjango mit Beispielen


Vom Autor der GeoDjango-Dokumentation. Schönheit



Ich habe es im Projekt geplant. Jetzt weiß ich, wie ich das umsetzen kann.

Elastic Group Architect über Unternehmenssoftwareprodukte


Dies beinhaltet Elasticsearch.



Mir hat das Beispiel gefallen, wie ein Diagramm der Benutzeraktivität in das Django-Administrationsfenster eingebettet wird.

Vollständiger Zyklus zum Erstellen Ihres eigenen Modellfelds




Mir hat es gefallen: Ich habe einige meiner Felder, aber ich habe viel bei der Erstellung vermisst.

Django Plugin System


Das Plugin wird im laufenden Betrieb ein- und ausgeschaltet und überprüft, ob es durch ... Signale aufgenommen wurde. Zu exotische Lösung. Einmal eine Fahrt in der Sauce "sehen, wie Sie sonst können."

Dann hielt ich eine Rede über Elasticsearch und ging in die Werkstatt. Dann habe ich zwei Berichte verpasst und Zeit verloren.

Aber was danach geschah, kann viele Male in Farben nacherzählt werden. Jedes Mal kommt ein tieferes Verständnis der Essenz dessen, was gehört wird.

Neugestaltung Ihres Django-Projekts


Früher oder später stoßen Entwickler auf eine Empfehlung: Fette Modelle, dünne Ansichten, dumme Vorlagen (dumme Vorlagen, dünne Ansichten, dicke Modelle).



Ich werde es selbst ObjectManager : Objekte nur in den ObjectManager Methoden und in den vom QuerySet generierten QuerySet Methoden QuerySet .

Nur wenige Menschen haben diese Umverteilung des Codes verlassen. Der Bericht enthielt Beispiele für die maximale Beseitigung von Abhängigkeiten und die vollständige Abstraktion der Geschäftslogik.



Dies ist eine solide Lektion für Anhänger des kanonischen Stils der Codetrennung. Widerstand gegen Veränderungen. Unabhängigkeit der Entscheidung ... All das sollte in einem Qualitätsprodukt sein. Am Ende des Berichts wurde Literatur bereitgestellt, die dazu beitragen wird, dies zu realisieren.



Super hilfreich.

Dann gab es Reden und den Abschluss des offiziellen Teils der DjangoCon.

Und dann gab es einen Bericht, der alle meine Fragen beantwortete und meine Gefühle bestätigte.

Django Redesign Outline


Sprecher - Tom Christie, Schöpfer des Django REST-Frameworks . In den Folien erklärte und zeigte Tom in den Codebeispielen, warum Django (und damit DRF) keine Entwicklungsmöglichkeiten mehr hat. Ja, Sie können Fehler beheben, ja, Sie können Flimmern hinzufügen oder ORM verbessern. Die allgemeine Form von Django bleibt unverändert.



Als Tom sagte: "Ich glaube überhaupt nicht, dass es möglich ist, ein hoch geladenes schnelles System in Python aufzubauen", verstummten die Leute.



Anschließend zeigte Tom Codebeispiele zur Lösung von Asynchronitätsproblemen in Django-Projekten und zu den folgenden Problemen.



Für das asynchrone ORM wurden Ariadne und der unvollendete asynchrone DB-Treiber erwähnt. Für Jinja-Vorlagen und das Wiederherstellen von Vorlagencode.



In dem Bericht wurde klar umrissen, dass Sie alles, was sich in Django befindet, neu schreiben müssen, um ein Framework für moderne Technologien von Django zu erstellen. Und vorzugsweise in einer anderen Sprache. Es war klar, dass Django sich in einer Sackgasse befand, schön, komfortabel und um 10 Jahre veraltet war.

Ich bin Tom sehr dankbar, dass er mich nicht verlassen hat und Optionen für die Entwicklung aufgezeigt hat
Die Option ist, wie Sie Django weiter schneiden können, wenn Sie noch nicht bereit sind, dieses tote Pferd zu werfen. Bibliotheken, wie man integriert, wie man testet. Starlet, SQLAlchemy, Jinja-Vorlagen usw. finden Sie auf den Folien für weitere Details.

Option, was als nächstes für diejenigen zu tun ist, die runter wollen. Es gibt keine Lösung "wie in Django". Es gab eine Überprüfung der vorhandenen Analoga, Geschwindigkeit, Komplexität, Perspektiven. Ich habe das erwähnte GO bereits ausprobiert, es hat mir fast gefallen.

Bei Blitzen wagte ich es, einen Anruf zu tätigen, um Django weiter zu schneiden. Erst nach der Rede von Tom Christie klang der Anruf völlig nicht überzeugend.



Die nächsten zwei Tage bestanden aus Sprints . Diejenigen, die blieben, arbeiteten mit Django: Sie öffneten Fehlermeldungen und korrigierten sie.



Nach einer erfolgreichen Bearbeitung können Sie hochlaufen und einen Gong in die gesamte Halle schlagen. Die Häufigkeit der Ausleger betrug alle 5-7 Minuten.

Zum Spaß, was passiert bei Sprints
Ich habe mir eine der genehmigten Änderungen angesehen: Behebung des Fehlers beim Konvertieren einer Zahl in eine Zeichenfolge. ( # 30363 - Verwenden Sie keine Exponentialschreibweise für kleine Dezimalstellen. ) Datei django / utils / numberformat.py
Und ich war sehr traurig:
  • Die Bearbeitung enthält einen Rückgabetypfehler.
  • Dem Code wurden zwei unnötige Rekursionen hinzugefügt.
  • Der Autor scheint nicht zu verstehen, wie Decimal funktioniert.
  • Tests überprüfen nicht alle Grenzfälle und den zurückgegebenen Datentyp.

Ich habe den Code umgeschrieben und die vorherige Bearbeitung genehmigt und gesagt: Sie haben hier einen Fehler! Und er hat die falsche Strategie gewählt: Programmierer mögen es nicht wirklich, wenn jemand über ihre Fehler spricht, insbesondere über überprüfte und genehmigte.

Es wäre besser, einen Fehlerbericht anzuzeigen. Natürlich antworteten sie mir, dass dies so sein sollte. Niemand ist an der Typprüfung in Python beteiligt, und im Allgemeinen ist Python eine Sprache ohne strikte Typisierung. Und deshalb, Junge, gehst du in den Wald, es gibt viele Dinge ohne dich. Ich hatte keine solche Analphabetenhaltung bei der Codebearbeitung und keine Immunität gegenüber der Anzeige eines Fehlers erwartet.

Von hier aus ergibt sich ein weiteres Problem, warum Django das ist, was es ist: Oft korrigieren Leute Fehler, die den Algorithmus oder die Idee nicht verstehen. Aus diesem Grund treten neue Fehler auf, Kurvenmethoden wie QuerySet.as_manager , nicht GROUP_BY in der Anforderung mit base_sort=True (nicht überprüft, kann behoben werden) oder unlogische Lösungen wie bei Formets und Inlines in AdminModelForm .

Neben Sprints gab es ein paar Workshops, mir gefiel die Wiederholung über ZAP. Wir haben es geschafft, die Seite zu grunzen, und Sicherheitslücken wurden gefunden.

Und in Kopenhagen war es inzwischen kalt und sonnig.


Ich besuchte Christiania, ging durch die Kanäle und sah die kleine Meerjungfrau an.







Ich verließ mein Zuhause in Gedanken. Ich wollte neue Funktionen in Django sehen ... aber ich habe sie woanders gefunden. Ich wollte vermitteln, dass es eine schnelle und korrekte Lösung gibt ... und bin gescheitert (ich werde Sie über den Fehler informieren). Ich wollte in die Berufswelt eintreten ... aber etwas stimmte nicht, ich stellte es mir vor. Wissen bringt Trauer. Die Hauptsache ist, dass ich weiß, wohin ich als nächstes gehen soll.



PS Die Entscheidung über mein Projekt wird getroffen, während winePad auf Django bleibt.
PPS Ich bin offen für Diskussionen über die Konferenz und Django. Fragen Sie, ob es nicht klar ist.
PPPS Ab dem 20. Juni 2019 bei GeekBrains beginnt mein Django-Kurs in der Python-Entwicklungsabteilung. Ich werde auf jeden Fall die wichtigen Punkte erwähnen, die ich auf der Konferenz kennengelernt habe.

Source: https://habr.com/ru/post/de448700/


All Articles