Python en español

Python en español #16: Tertulia 2021-01-19


Listen Later

Polémica Frameworks, compilación al vuelo, compiladores y rendimiento Python, scraping web y la persistencia vuelve a la carga https://podcast.jcea.es/python/16

Participantes:

  • Jesús Cea, email: [email protected], twitter:

    @jcea, https://blog.jcea.es/,
    https://www.jcea.es/. Conectando desde Madrid.

  • Eduardo Castro, email:

    [email protected]. Conectando desde A
    Guarda.

  • Javier, conectando desde Madrid.

  • Víctor Ramírez, twitter: @virako,

    programador python y amante de vim, conectando desde Huelva.

  • Dani, conectando desde Málaga, invitado por Virako.

  • Javier, conectando desde Sevilla, también invitado por Virako.

  • Antonio, conectado desde Albacete.

  • Jorge Rúa, conectando desde Vigo.

    Audio editado por Pablo Gómez, twitter:

    @julebek.

    La música de la entrada y la salida es "Lightning Bugs", de Jason

    Shaw. Publicada en https://audionautix.com/ con licencia
    - Creative Commons Attribution 4.0 International
    License.

    • [01:17] Event sourcing y nieve.

      • Borrasca Filomena:
      • https://es.wikipedia.org/wiki/Borrasca_Filomena.
      • [03:52] Los comentarios legales habituales para poder grabar

        la tertulia.

      • [04:47] Presentaciones varias, dinámica y motivación de las

        tertulias.

      • [11:22] Los problemas logísticos de Jesús Cea con sus charlas.

      • [12:52] Debate: Frameworks y cómo condicionan el conocimiento

        del lenguaje y la forma de desarrollar código.

        Mucha tela que cortar.

        • [30:22] Conexión con el mundo asyncio.

        • [34:12] Digresión: ¿Cómo funciona la protección CSRF?

          https://es.wikipedia.org/wiki/Cross-site_request_forgery.

          • Diferencia semántica entre verbos HTTP: GET y POST

            https://en.wikipedia.org/wiki/POST_(HTTP).

          • Algunos recursos de seguridad web (no exhaustivo, la

            lista es infinita):

            • CSRF:

              https://es.wikipedia.org/wiki/Cross-site_request_forgery.

            • Cross-Origin Resource Sharing (CORS)

              https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS.

            • Content Security Policy Reference

              https://content-security-policy.com/.

            • La documentación de FastAPI

              https://fastapi.tiangolo.com/ tiene mucho de
              seguridad:

              • CORS (Cross-Origin Resource Sharing):

                https://fastapi.tiangolo.com/tutorial/cors/.

              • OAuth2 with Password (and hashing), Bearer with

                JWT tokens
                https://fastapi.tiangolo.com/tutorial/security/oauth2-jwt/.

              • About HTTPS

                https://fastapi.tiangolo.com/deployment/https/.

              • [39:52] Proyecto ItsNat

                https://en.wikipedia.org/wiki/ItsNat. Estado en el
                servidor y el cliente solo gestiona eventos y
                actualizaciones del DOM que le envía el servidor.

              • Se está moviendo otra vez la inteligencia del navegador al

                servidor.

              • [44:42] ¿Realmente es imprescindible usar Javascript si tu

                interfaz es el navegador?

                • Brython: https://brython.info/.

                • Pyjs (antiguo Pyjamas):

                  https://en.wikipedia.org/wiki/Pyjs.

                • Emscripten: https://emscripten.org/.

                • [48:57] ¡Compilación al vuelo!

                  • Versionado de diccionarios. PEP 509 Add a private version to

                    dict: https://www.python.org/dev/peps/pep-0509/.

                  • Compilación al vuelo: Pyjion:

                    https://pyjion.readthedocs.io/en/latest/index.html.

                  • Conflicto con la portabilidad del intérprete.

                  • numba: https://numba.pydata.org/.

                  • Hay pocos "core developers" y heredar código avanzado que

                    luego hay que mantener es un problema.

                  • LLVM: https://en.wikipedia.org/wiki/LLVM.

                  • [01:04:27] Los lenguajes de programación deben ser conservadores

                    porque no tienes ni idea de lo que están utilizando los
                    programadores.

                  • [01:05:32] Si la documentación se ha actualizado, más vale que

                    hayas actualizado tu código a "cómo se hacen ahora las cosas".

                  • [01:06:47] Tema recurrente: ¿Es mejor estar dentro o fuera de la

                    biblioteca estándar?

                    • Boost: https://www.boost.org/.
                    • [01:09:12] Compiladores de Python:

                      • Cython: https://cython.org/. Rendimiento y ofuscación.

                      • nuitka: https://nuitka.net/.

                      • numba: https://numba.pydata.org/.

                      • PyPy: https://www.pypy.org/.

                      • [01:10:42] Mejoras recientes en la implementación de Python:

                        • Issue 26647: ceval: use Wordcode, 16-bit bytecode:

                          https://bugs.python.org/issue26647.

                        • Issue 9203: Use computed gotos by default:

                          https://bugs.python.org/issue9203.

                        • [01:14:52] Psyco https://en.wikipedia.org/wiki/Psyco.

                        • [01:16:22] Etiquetado de tipos para ayudar a los JIT.

                          • Cython: https://cython.org/.

                          • MYPY: http://mypy-lang.org/.

                            • MYPYC:
                            • https://mypyc.readthedocs.io/en/latest/index.html.
                            • Especialización.

                            • [01:22:37] GHC (The Glasgow Haskell Compiler):

                              https://www.haskell.org/ghc/.

                            • [01:25:07] Memoria transaccional

                              https://en.wikipedia.org/wiki/Transactional_memory.

                              • Implementaciones en Python: Sistemas de persistencia como

                                Durus https://www.mems-exchange.org/software/DurusWorks/ o
                                ZODB http://www.zodb.org/.

                                • Mecanismos de resolución de conflictos.
                                • [01:34:32] Más sobre optimizaciones y guardas.

                                  • Mucha discusión sobre el GIL:

                                    https://en.wikipedia.org/wiki/Global_interpreter_lock.

                                  • La atomicidad de operaciones no está documentada en ningún

                                    sitio.

                                  • [01:42:02] Ejemplo de bytecode:

                                    >>> def rutina(n):
                                    ... n += 1
                                    ... n = n + 1
                                    ...
                                    >>> dis.dis(rutina)
                                    2 0 LOAD_FAST 0 (n)
                                    2 LOAD_CONST 1 (1)
                                    4 INPLACE_ADD
                                    6 STORE_FAST 0 (n)
                                    3 8 LOAD_FAST 0 (n)
                                    10 LOAD_CONST 1 (1)
                                    12 BINARY_ADD
                                    14 STORE_FAST 0 (n)
                                    16 LOAD_CONST 0 (None)
                                    18 RETURN_VALUE
                                  • [01:45:02] Cuando haces cosas muy avanzadas que usan cosas no

                                    definidas formalmente, mejor verificar las suposiciones.

                                  • [01:46:47] La ventaja de probar cosas en proyectos personales:

                                    • ¿Por qué Jesús Cea se ha hecho su propio scraper web?

                                      • "Maldades".

                                      • scrapy: https://scrapy.org/.

                                      • [01:49:22] Migración de versiones en sistemas de persistencia.

                                      • [02:05:07] Event sourcing.

                                        • Event sourcing:

                                          https://dev.to/barryosull/event-sourcing-what-it-is-and-why-its-awesome.

                                        • Logs de modificaciones.

                                        • [02:08:07] Ventajas de haber usado scrapy: https://scrapy.org/.

                                          • Concurrencia.

                                          • tarpit.

                                          • Problemas habituales:

                                            • Normalización de URLs.

                                            • Webs mal formadas.

                                            • [02:13:47] Módulos de scraping:

                                              • newspaper3k: https://pypi.org/project/newspaper3k/.
                                              • [02:15:02] Recapitulación.

                                                • Pyjion:

                                                  https://pyjion.readthedocs.io/en/latest/index.html.

                                                • MYPYC: https://mypyc.readthedocs.io/en/latest/index.html.

                                                • [02:16:02] Compilación de módulos de Python para MS Windows.

                                                  Generar un wheel.

                                                  • Aprovechar sistemas de integración continua que levantan
                                                  • máquinas virtuales.
                                                  • [02:22:21] Final.

                                                    ...more
                                                    View all episodesView all episodes
                                                    Download on the App Store

                                                    Python en españolBy Jesús Cea


                                                    More shows like Python en español

                                                    View all
                                                    Libros para Emprendedores by Luis Ramos

                                                    Libros para Emprendedores

                                                    1,115 Listeners