De .Net a Python

De .Net a Python

De .NET a Python. ¿Dónde están mis cosas?
Hace unos meses di un giro de 180º y, tras más de 8 años trabajando con .NET, he saltado a un stack muy diferente, con Python como centro del cambio. En mi día a día utilizaba multitud de herramientas a todos los niveles: patrones de diseño, librerías, frameworks, SDKs, servicios de Azure y, por supuesto, Visual Studio. Hoy, mi caja de herramientas es bien diferente, empezando con python, pip, tornado y Pycharm, entre otros. Al principio todo bien. Hago mis ejercicios de HackerRank, voy aprendiendo las diferentes estructuras de datos, convenciones, buenas prácticas, algunas librerías, etc. Pero llega el día en el que quiero hacer mi primer proyecto web desde cero. Y en ese momento me pregunto ¿Dónde están mis cosas? Me refiero a todas esas piezas a diferentes niveles, que usaba a diario y que, en un primer momento, no tengo claro cuál es su equivalente en Python o si acaso tienen sentido dentro de este stack. ¿Hay algún IDE que me facilite la vida para desarrollarlo? ¿Cómo hago debug? ¿Hay alguna herramienta de profiling? Y más allá del entorno, ¿qué capas se suelen utilizar y cómo las separo? ¿Cómo implemento la inversión de control? ¿Cuál es el equivalente de un patrón repositorio genérico? ¿Por qué necesito los entornos virtuales? ¿Qué me aporta la herencia múltiple? Y las comprehensions, ¿puedo hacer todo lo que hacía con Linq? En esta charla trataremos de enlazar los dos mundos, analizaremos pros y contras e intentaremos responder a algunas de las preguntas anteriores.

9f32683b7afead377e50ddfef133716d?s=128

jorge jardines

November 23, 2018
Tweet

Transcript

  1. Python ¿Dónde están mis cosas? De .NET a

  2. ¿Quiénes somos? Gonzalo Rubio .NET: 8 años Python: meses... LinkedIn:

    http://www.linkedin.com/in/gonzalo-rubio-torrente Twitter: @GonzaloRubio1 Jorge Jardines .NET: 7 años Python: 8 años LinkedIn: https://www.linkedin.com/in/jorgejardines Twitter: @gardenunez
  3. Agenda Un pocode historia Show me the code! Conclusiones Q&A

  4. Disclaimer

  5. Un poco de historia Lanzadoen2002 Propósito general en Windows Framework

    mutilenguaje • Framework Class Library • Common LanguageRuntime C#: Anders Hejlsberg Orientado a objetos Fuertemente tipado y estático Lanzado en 1991, Guido van Rossum Propósito general Multiplataforma Opensource Interpretado Orientado a objetos Fuertemente tipado y dinámico
  6. Haters APIs

  7. Empecemos por el principio IDEs y editores

  8. Persistencia Presentación Django Sé dónde escribir… ¿y ahora qué? MVC

    DI Gestión de errores Autenticación Contratos API y validaciones Lógica de negocio Servicios Lógica de negocio Implementación Repositorios Modelos DTOs sin persistencia específica Mapeos DB y migraciones Template Serializers (Contratos Modelo y validaciones) View Lógica de negocio Contratos (verbos) Model Modelos de BD (con mapeos) Migraciones Gestión de errores Autenticación Contratos (URLs)
  9. Persistencia Presentación Django Sé dónde escribir… ¿y ahora qué? MVC

    Contratos API y validaciones Lógica de negocio Servicios Implementación Modelos Template Serializers (Contratos Modelo y validaciones) View Contratos (verbos) Model Contratos (URLs)
  10. Persistencia Presentación Django Sé dónde escribir… ¿y ahora qué? MVC

    DI Contratos API y validaciones Lógica de negocio Servicios Implementación Modelos Template Serializers (Contratos Modelo y validaciones) View Contratos (verbos) Model Contratos (URLs)
  11. Persistencia Presentación Django Sé dónde escribir… ¿y ahora qué? MVC

    DI Gestión de errores Autenticación Contratos API y validaciones Lógica de negocio Servicios Implementación Modelos Template Serializers (Contratos Modelo y validaciones) View Contratos (verbos) Model Gestión de errores Autenticación Contratos (URLs)
  12. Persistencia Presentación Django Sé dónde escribir… ¿y ahora qué? MVC

    DI Gestión de errores Autenticación Contratos API y validaciones Lógica de negocio Servicios Lógica de negocio Implementación Modelos Template Serializers (Contratos Modelo y validaciones) View Lógica de negocio Contratos (verbos) Model Gestión de errores Autenticación Contratos (URLs)
  13. Persistencia Presentación Django Sé dónde escribir… ¿y ahora qué? MVC

    DI Gestión de errores Autenticación Contratos API y validaciones Lógica de negocio Servicios Lógica de negocio Implementación Repositorios Modelos DTOs sin persistencia específica Mapeos DB y migraciones Template Serializers (Contratos Modelo y validaciones) View Lógica de negocio Contratos (verbos) Model Modelos de BD (con mapeos) Migraciones Gestión de errores Autenticación Contratos (URLs)
  14. ¿Qué se ha quedado fuera? Debugging Profiling Despliegue CI CD

    Asyncawait Herencia Multiple
  15. Conclusiones No hay uno mejor que otro La clave: buenos

    principios de desarrollo De estático a dinámico y viceversa…
  16. Recursos

  17. Recursos Código + Presentación: https://github.com/PseudoGoN/commitconf2018

  18. ¡Muchas gracias! ¿Preguntas?

  19. Fuentes Imagen PPTs: https://www.deviantart.com/oblivionhunter1/art/The-Scavenger-and-The- Monster-in-the-mask-586156309