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-ProjektWir 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:
- Lernen Sie von Fachleuten und sehen Sie, was ich in meiner Arbeit verbessern kann.
- Tauchen Sie ein in die Welt der neuen Lösungen für meine Plattform.
- Treffen Sie sich mit denselben Django-Nerds wie ich. Treten Sie sozusagen in eine Party ein.
- 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 ToleranzViele 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:
- Mit alten Modellen.
- Mit alten und neuen Modellen und der Möglichkeit des Online-Wechsels.
- 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 hatDie 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 SprintsIch 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.pyUnd 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 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.