Del
9 al
14 de abril
, se celebró la Conferencia
DjangoCon Europe 2019 en Copenhague. Lleno de esperanza y aspiraciones, llegué a este evento y me fui en profunda agitación. En el artículo intentaré transmitir mis impresiones de la conferencia y comentar sobre un cambio tan brusco de actitud hacia Django.
Descargo de responsabilidad: el artículo contiene intolerancia, juicios categóricos y críticas injustificadas.
Hola a todos, soy Maxim, vivo en Austria, en el Tirol. Soy profesor en GeekBrains y copropietario del proyecto winePad, recopilador y vendedor de datos técnicos sobre bebidas alcohólicas. Esta suele ser la información sobre los vinos.
Sobre el proyecto winePadTenemos la base de datos más precisa de Europa. Esto se debe a que todos los vinos de la base de datos son verificados personalmente por nuestros expertos. Brevemente sobre nuestro trabajo: golpe. Y a veces sucede duro: cuando 40 aprobaciones al día, a la mañana siguiente, no siempre estoy seguro de cómo llegué a casa. Bueno, o no recuerdo dónde está estacionado el auto.
El proyecto comenzó en 2012 con Django 1.4 / Python 2.7 en el servidor y con Jquery en el cliente + servidor JsonRPC. Ahora el conjunto de tecnologías ha aumentado. De todos modos, literalmente nos encontramos con Django.
Me uní al proyecto en 2015, asumiendo el relevo de los desarrolladores tiroleses. De mala calidad el cabello se movía por todas partes.
La historia de los pastores tiroleses, fuertemente recalificados como programadores, los dejaré detrás de escena. Si ve sus soluciones, estoy seguro de que de repente querrá matar a todos los que se autodenominan "programadores tiroleses".Para febrero de 2019, quedó claro: el desarrollo del proyecto es imposible con el conjunto actual de tecnologías. En busca de respuestas, decidí ir a DjangoCon 2019, que se celebró en Copenhague muy a tiempo. Lo que quería de la conferencia:
- Aprenda de profesionales, vea lo que puedo mejorar en mi trabajo.
- Sumérgete en el mundo de las nuevas soluciones para mi plataforma.
- Salir con los mismos nerds de Django como yo. Entrar, por así decirlo, en una fiesta.
- Entiende lo que está mal con Django. Desde 2016, regularmente vienen pensamientos de que me falta algo. Simplemente no puedo entender qué.
Lo que salió de todo esto:

Día cero
El martes por la tarde, antes del comienzo de la conferencia, se celebró una reunión de Django Girls: esta es la iniciativa de DjangoFoundation para promover a Django entre las masas. A partir de las 5 p.m., comenzó el registro. Los disquetes de 3 pulgadas actuaban como insignias, cualquiera podía escribir todo lo que quisiera en un disquete (ja, ja), las unidades USB estaban presentes.
Todos los días de la conferencia, había una cantidad ilimitada de cerveza artesanal etiquetada como "Django-pony rosado", de una pequeña cervecería local. Por un lado, es genial, por el otro ... cerveza regular. Las salas estaban decoradas con caballos voladores rosados de todos los tamaños.

Desde un simbolismo discreto y un sentido de participación en la comunidad de pastores de caballos hubo un regusto especial y alegre. Conocí a
Russell Keith-Magee , el antiguo desarrollador de Django. Todos los que vinieron a esta conferencia dependen de sus soluciones de software.

Al comprar un boleto, tuve que aceptar cumplir con las
reglas de la conferencia sobre apertura, tolerancia, crítica constructiva y respeto por las preferencias sexuales de los participantes. Al aceptar esto, no sospeché a qué podría conducir esto ...
Aquí aprendí por primera vez sobre la regla de Pacman: si otra persona se acerca al círculo de conversación, los participantes en la conversación DEBEN hacerse a un lado y dejar espacio para un nuevo interlocutor. En general, era posible golpear y comer papas fritas (en cualquier cantidad), familiarizarse con los especialistas que llegaban, unirse a cualquier conversación y atraer a los organizadores.
Subjetividad y falta de tolerancia.Muchos participantes vestían ropas desordenadas, zapatos rotos, olían extraños y parecían nadar. Esta visión no ha cambiado mucho en los días siguientes. Fue extraño para mí verlo.
Por la noche caminé por Copenhague.

Un bonito pueblo a orillas del mar frío, Peter recordó un poco. Se exceden con las bicicletas, pero puedes perdonar todo por los restaurantes de pescado. Es muy sabroso
En los primeros tres días de la conferencia, se entregaron informes en el salón para 500 personas (había 377 participantes).
Paralelamente, hubo talleres en salas separadas . La mayoría de los informes están grabados en video, puedes verlos en
YouTube . No hay transmisiones de talleres. Lista y descripción de informes y talleres
aquí . TODOS los talleres, sin excepción, estaban muy mal preparados, como señalaron otros participantes.
Durante los descansos se ofreció mucha comida y café. En este sentido, la conferencia estuvo bien preparada. Patrocinador se encuentra, en su mayoría de recursos humanos, de pie discretamente en el vestíbulo. Estaba interesado en conversar con los cazadores de cabezas escandinavos.
Primer dia
Conferencia inaugural sobre la situación con DjangoProject
Brevemente: ayuda a quién que pueda.

Taller GraphQL
JSON para los perezosos. La vida no mejorará si todos comienzan a usar una notación de consulta diferente.
La vida es mas feliz
Django REST Wrapper, comienza a escribir 4 líneas de código en lugar de 6.
Taller sobre cómo pasar a una nueva versión del código sin detener el servidor
La historia de una operación
cardíaca de diez meses con un código de 100 modelos. El proyecto fue creado tres veces:
- Con modelos antiguos.
- Con modelos antiguos y nuevos y la posibilidad de cambio en línea.
- Sin modelos e interruptores antiguos.
Largo y costoso.
Debido a este taller, me perdí tres conferencias, dos hablaron bien, miraré en las notas:
- 750,000 solicitud de pull pull.
- Django web-security-headers.
Después de un descanso con el próximo tanque de café hubo una conferencia sobre
DJANGO-ORM . Ponente - Sigurd Ljodal. Este es el desarrollador del ORM actual, sus actividades se pueden ver en el repositorio de Django.

El informe es útil, pero me molestó. Por un lado, el nuevo ORM-Django ha madurado mucho. Sigurd, por otro lado, utilizó las características no documentadas de
queryset.query
en sus ejemplos. En una conversación posterior con Sigurd, me sorprendió que él, como la mayoría de los desarrolladores de Django, realmente no conozca los métodos
queryset.query
.
"¿Por qué los estás usando en ejemplos?" Pregunté "Bueno ... así ..." respondió Sigurd.Después de todos los informes, hubo conversaciones de relámpagos. Informes de cinco minutos para aquellos que espontáneamente querían hablar. "Rayo" fue sobre todo interesante, pero cinco minutos no es suficiente. El propósito del orador es interesar, y luego la gente puede preguntar.
Unos cuantos camiones de cerveza y largas conversaciones después de las conversaciones sobre los rayos ... El primer día ha terminado.
Segundo dia
Taller: Bootstrap Django
No funcionó.
Reconocimiento de imágenes, aprendizaje automático con Django
Sin capacitación, el uso de recursos externos, jambas en reconocimiento, imágenes divertidas en los ejemplos. Nada más que diversión.
Taller de reconocimiento de imagen
Todo funcionó, y se encontró una foto entre otros 10. Pero la velocidad del trabajo tachó todo. 20 segundos para prepararse, 30-40 segundos para buscar. Pensé: una búsqueda única en nuestro proyecto de fotos tomará años. Y tenemos decenas de miles de solicitudes por día. La solución propuesta no me conviene.
Prueba de cambio visual
Los trabajadores frontales pueden ser útiles.
SQL-Alchemy vs Django-ORM
Ponente Gleb de DjangoStars. Estoy de acuerdo con la idea, pero aún implementaría algunas cosas a través de los métodos DJANGO-ORM. Lo principal que vi es donde es posible aplicar la alquimia en mi proyecto.

Taller: ruta completa de solicitud / respuesta a través de la tubería de alimentos Django
Fue útil para actualizar el conocimiento. Desarrollador de Django, recuerde: todo lo que debe hacer es configurar una aplicación WSGI.
Entonces tuve la idea de hablar sobre el "rayo". Hice una presentación y salté algunos informes.
Divine Project Documentation Report
Del jefe del equipo de documentación de RedHat.

Salté para agradecerle al orador después. Ella explicó claramente por qué debería dejar de fumar y comenzar a documentar mi proyecto. En el momento de gratitud, toqué su antebrazo. ¡Qué comenzó aquí! Este es un zorro polar. Pensé que me iban a encarcelar. Todo cuesta una penalización verbal por comportamiento inapropiado en relación con otro participante en la conferencia.
Pentapesting con ZAP
La aplicación probará todos los métodos conocidos para descifrar el sitio especificado.

Inmediatamente quise intentar hackear mi proyecto.
Los relámpagos fueron más útiles que el primer día.
Alexander (DjangoStars) habló sobre la configuración de opciones de almacenamiento

Historia de envoltura para campos modelo
Vrapper monitorea el tipo de valor de retorno.
Informe sobre la instalación de talones en lugar de mostrar datos privados del cliente
Útil en la etapa de desarrollo, prueba y registro. En la era de la ley universal de protección de datos, vale la pena considerarlo. Por desgracia, el autor no respondió por qué reinventó el decorador
@sensitive_variables
. Parece que simplemente no leyó la documentación.
Informe sobre el uso de variables con un alcance dentro de un solo hilo
He estado usando esta solución por mucho tiempo. Solo puedo decir que el uso de variables globales en Django se debe a la falta de habilidades y falta de conocimiento de la arquitectura.
Después de dos días de la conferencia, estaba molesto: un par de informes útiles en tres días. Muy poco sobre Django, mucho sobre soluciones extrañas e innecesarias. WTF ??? E incluso Copenhague no me tranquilizó.

El agua en los canales está limpia. Se ve que en la parte inferior. ¿Ves algo allí también? Brillante tercer día
Este día pagó todo sufrimiento, disipó dudas y trajo aún más tristeza. Mi consejo es estudiar todo lo que encuentres sobre los informes del tercer día. Rara vez se encuentra una inyección de conocimiento tan genial.
Informe de asesinato victoriano
La niña contó con los dedos el motivo de la ley sobre la protección de los datos del usuario. Entendí la razón subyacente de la aparición de dicha ley. El problema con la protección de datos, así como el problema con el aislamiento eléctrico, pueden matar accidentalmente a alguien.
Usando GeoDjango con ejemplos
Del autor de la documentación de GeoDjango. Belleza

Lo tengo planeado en el proyecto. Ahora sé cómo implementar esto.
Elastic Group Architect sobre productos de software de la compañía
Esto incluye la búsqueda elástica.

Me gustó el ejemplo de cómo incrustar un gráfico de la actividad del usuario en el panel de administración de Django.
Ciclo completo de creación de su propio campo modelo

Me gustó: tengo varios de mis campos, pero me perdí mucho en el proceso de crearlos.
Sistema de complementos de Django
El complemento se enciende y apaga sobre la marcha, verificando la inclusión a través de ... señales. Solución demasiado exótica para usar. Una vez que un paseo en la salsa "vea cómo más puede".
Luego tuve un discurso sobre Elasticsearch y fui al taller. Luego me perdí dos informes y perdí el tiempo.
Pero lo que sucedió después se puede volver a contar muchas veces en colores. Cada vez llega una comprensión más profunda de la esencia de lo que se escucha.
Rediseñando su proyecto Django
Tarde o temprano, los desarrolladores se encuentran con una recomendación: Modelos gordos, Vistas delgadas, Plantillas estúpidas (plantillas estúpidas, vistas delgadas, modelos gruesos).

Lo
ObjectManager
por mi cuenta: seleccionando objetos solo en
ObjectManager
métodos
ObjectManager
y en los métodos
QuerySet
generados por
ObjectManager
.
Pocas personas han dejado esta redistribución de código. El informe contenía ejemplos de la eliminación máxima de dependencias y la abstracción completa de la lógica empresarial.

Esta es una sólida lección para los seguidores del estilo canónico de separación de códigos. Resistencia a los cambios. Independencia de la decisión ... Todo eso debe estar en un producto de calidad. Al final del informe, se proporcionó literatura que ayudará a realizar esto.

Súper servicial
Luego hubo discursos y el cierre de la parte oficial de DjangoCon.
Y luego hubo un informe que respondió a todas mis preguntas y confirmó mis sentimientos.
Esquema de rediseño de Django
Ponente: Tom Christie, creador del
marco Django REST . En las diapositivas, Tom dijo y mostró en los ejemplos de código por qué Django (y, como resultado, DRF) ya no tiene oportunidades de desarrollo. Sí, puede corregir errores, sí puede agregar parpadeos o mejorar ORM. La forma general de Django aún permanece sin cambios.

Cuando Tom dijo: "No creo en absoluto que sea posible construir un sistema rápido altamente cargado en Python", la gente se quedó en silencio.

Tom luego mostró ejemplos de código sobre cómo resolver problemas de asincronía en proyectos de Django y qué problemas seguirían.

Para el ORM asíncrono, se mencionaron Ariadne y el controlador DB asíncrono inacabado. Para plantillas Jinja y rehacer código de plantilla.

El informe esbozó claramente que para crear un marco listo para las tecnologías modernas de Django, debe volver a escribir todo lo que está en Django. Y preferiblemente en otro idioma. Estaba claro que Django estaba en un callejón sin salida, hermoso, cómodo y anticuado por 10 años.
Le agradezco mucho a Tom que no me dejó y me mostró opciones sobre dónde desarrollarme.La opción es cómo cortar aún más Django, si aún no está listo para lanzar este caballo muerto. Bibliotecas, cómo integrar, cómo probar. Starlet, SQLAlchemy, Jinja-templates, etc., vea las diapositivas para más detalles.
Opción de qué hacer a continuación para aquellos que quieran bajar. No hay solución "como en Django". Hubo una revisión de los análogos existentes, la velocidad, la complejidad, las perspectivas. Ya probé el GO mencionado, casi me gustó.
En los relámpagos, me aventuré a hacer un llamado para reducir aún más a Django. Solo después del discurso de Tom Christie, la llamada sonó completamente poco convincente.

Los siguientes dos días consistieron en
sprints . Los que se quedaron trabajaron con Django: abrieron mensajes de error y los corrigieron.

Después de una edición exitosa, puedes correr y golpear un gong en toda la sala. La frecuencia de los auges fue cada 5-7 minutos.
Por diversión, lo que pasa en los sprintsMiré una de las ediciones aprobadas: corregir el error al convertir un número en una cadena. (
# 30363 - No use notación exponencial para decimales pequeños ) archivo
django / utils / numberformat.pyY me sentí muy triste:
- La edición contiene un error de tipo de retorno.
- Se han agregado dos recursiones innecesarias al código.
- El autor no parece entender cómo funciona
Decimal
. - Las pruebas no verifican todos los casos límite y el tipo de datos devuelto.
Reescribí el código y fui a aprobar la edición anterior, y dije: ¡tienes un error aquí! Y eligió la estrategia incorrecta: a los programadores realmente no les gusta cuando alguien habla de sus errores, especialmente de los verificados y aprobados.
Sería mejor mostrar un informe de error. Por supuesto, me respondieron que esto debería ser así. Nadie está involucrado en la verificación de tipos en Python y, en general, Python es un lenguaje sin una mecanografía estricta. Y por lo tanto, muchacho, vas al bosque, hay muchas cosas sin ti. No esperaba una actitud tan analfabeta para la edición de código, e inmunidad para indicar un error.
A partir de aquí surge un problema más, por qué Django es lo que es: a menudo las personas corrigen errores que no entienden el algoritmo o la idea. Es por eso que aparecen nuevos errores, métodos de curva como
QuerySet.as_manager
,
QuerySet.as_manager
no
GROUP_BY
en la solicitud con
base_sort=True
(no se
base_sort=True
, puede solucionarlo), o soluciones ilógicas, como formets e inlines en
AdminModelForm
.
Además de los sprints, hubo un par de talleres, me gustó la repetición sobre ZAP. Logramos gruñir el sitio, y se encontraron agujeros de seguridad.
Y en Copenhague, mientras tanto, hacía frío y sol. Salí de casa pensando. Quería ver nuevas funciones en Django ... pero las encontré en otro lugar. Quería transmitir que había una solución rápida y correcta ... y fallé (te informaré sobre el error). Quería ingresar al mundo profesional ... pero algo estaba mal, me lo imaginaba. El conocimiento trae tristeza. Lo principal es que sé a dónde ir después.

PD: La decisión sobre mi proyecto se toma mientras winePad permanece en Django.
PPS Estoy abierto a discutir tanto la conferencia como Django. Pregunte si no está claro.
PPPS Desde el 20 de junio de 2019 en GeekBrains, mi curso de Django comienza en el
Departamento de Desarrollo de Python, definitivamente mencionaré los puntos importantes que aprendí en la conferencia.