Pol\xe9mica Frameworks, compilaci\xf3n al vuelo, compiladores y rendimiento Python, scraping web y la persistencia vuelve a la carga https://podcast.jcea.es/python/16\n
Participantes:
\nJes\xfas Cea, email: jcea@jcea.es, twitter:\n @jcea, https://blog.jcea.es/,\n https://www.jcea.es/. Conectando desde Madrid.
\nEduardo Castro, email:\n info@ecdesign.es. Conectando desde A\n Guarda.
\nJavier, conectando desde Madrid.
\nV\xedctor Ram\xedrez, twitter: @virako,\n programador python y amante de vim, conectando desde Huelva.
\nDani, conectando desde M\xe1laga, invitado por Virako.
\nJavier, conectando desde Sevilla, tambi\xe9n invitado por Virako.
\nAntonio, conectado desde Albacete.
\nJorge R\xfaa, conectando desde Vigo.
\nAudio editado por Pablo G\xf3mez, twitter:\n@julebek.
\nLa m\xfasica de la entrada y la salida es "Lightning Bugs", de Jason\nShaw. Publicada en https://audionautix.com/ con licencia\n- Creative Commons Attribution 4.0 International\nLicense.
\n[01:17] Event sourcing y nieve.
\n[03:52] Los comentarios legales habituales para poder grabar\n la tertulia.
\n[04:47] Presentaciones varias, din\xe1mica y motivaci\xf3n de las\n tertulias.
\n[11:22] Los problemas log\xedsticos de Jes\xfas Cea con sus charlas.
\n[12:52] Debate: Frameworks y c\xf3mo condicionan el conocimiento\n del lenguaje y la forma de desarrollar c\xf3digo.
\nMucha tela que cortar.
\n[30:22] Conexi\xf3n con el mundo asyncio.
\n[34:12] Digresi\xf3n: \xbfC\xf3mo funciona la protecci\xf3n CSRF?\n https://es.wikipedia.org/wiki/Cross-site_request_forgery.
\nDiferencia sem\xe1ntica entre verbos HTTP: GET y POST\n https://en.wikipedia.org/wiki/POST_(HTTP).
\nAlgunos recursos de seguridad web (no exhaustivo, la\n lista es infinita):
\nCSRF:\n https://es.wikipedia.org/wiki/Cross-site_request_forgery.
\nCross-Origin Resource Sharing (CORS)\n https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS.
\nContent Security Policy Reference\n https://content-security-policy.com/.
\nLa documentaci\xf3n de FastAPI\n https://fastapi.tiangolo.com/ tiene mucho de\n seguridad:
\nCORS (Cross-Origin Resource Sharing):\n https://fastapi.tiangolo.com/tutorial/cors/.
\nOAuth2 with Password (and hashing), Bearer with\n JWT tokens\n https://fastapi.tiangolo.com/tutorial/security/oauth2-jwt/.
\nAbout HTTPS\n https://fastapi.tiangolo.com/deployment/https/.
\n[39:52] Proyecto ItsNat\n https://en.wikipedia.org/wiki/ItsNat. Estado en el\n servidor y el cliente solo gestiona eventos y\n actualizaciones del DOM que le env\xeda el servidor.
\nSe est\xe1 moviendo otra vez la inteligencia del navegador al\n servidor.
\n[44:42] \xbfRealmente es imprescindible usar Javascript si tu\n interfaz es el navegador?
\nBrython: https://brython.info/.
\nPyjs (antiguo Pyjamas):\n https://en.wikipedia.org/wiki/Pyjs.
\nEmscripten: https://emscripten.org/.
\n[48:57] \xa1Compilaci\xf3n al vuelo!
\nVersionado de diccionarios. PEP 509 Add a private version to\n dict: https://www.python.org/dev/peps/pep-0509/.
\nCompilaci\xf3n al vuelo: Pyjion:\n https://pyjion.readthedocs.io/en/latest/index.html.
\nConflicto con la portabilidad del int\xe9rprete.
\nnumba: https://numba.pydata.org/.
\nHay pocos "core developers" y heredar c\xf3digo avanzado que\n luego hay que mantener es un problema.
\n[01:04:27] Los lenguajes de programaci\xf3n deben ser conservadores\n porque no tienes ni idea de lo que est\xe1n utilizando los\n programadores.
\n[01:05:32] Si la documentaci\xf3n se ha actualizado, m\xe1s vale que\n hayas actualizado tu c\xf3digo a "c\xf3mo se hacen ahora las cosas".
\n[01:06:47] Tema recurrente: \xbfEs mejor estar dentro o fuera de la\n biblioteca est\xe1ndar?
\n[01:09:12] Compiladores de Python:
\nCython: https://cython.org/. Rendimiento y ofuscaci\xf3n.
\nnuitka: https://nuitka.net/.
\nnumba: https://numba.pydata.org/.
\nPyPy: https://www.pypy.org/.
\n[01:10:42] Mejoras recientes en la implementaci\xf3n de Python:
\nIssue 26647: ceval: use Wordcode, 16-bit bytecode:\n https://bugs.python.org/issue26647.
\nIssue 9203: Use computed gotos by default:\n https://bugs.python.org/issue9203.
\n[01:14:52] Psyco https://en.wikipedia.org/wiki/Psyco.
\n[01:16:22] Etiquetado de tipos para ayudar a los JIT.
\nCython: https://cython.org/.
\nMYPY: http://mypy-lang.org/.
\nEspecializaci\xf3n.
\n[01:22:37] GHC (The Glasgow Haskell Compiler):\n https://www.haskell.org/ghc/.
\n[01:25:07] Memoria transaccional\n https://en.wikipedia.org/wiki/Transactional_memory.
\nImplementaciones en Python: Sistemas de persistencia como\n Durus https://www.mems-exchange.org/software/DurusWorks/ o\n ZODB http://www.zodb.org/.
\n[01:34:32] M\xe1s sobre optimizaciones y guardas.
\nMucha discusi\xf3n sobre el GIL:\n https://en.wikipedia.org/wiki/Global_interpreter_lock.
\nLa atomicidad de operaciones no est\xe1 documentada en ning\xfan\n sitio.
\n[01:42:02] Ejemplo de bytecode:
\n >>> def rutina(n):\n ... n += 1\n ... n = n + 1\n ... \n >>> dis.dis(rutina)\n 2 0 LOAD_FAST 0 (n)\n 2 LOAD_CONST 1 (1)\n 4 INPLACE_ADD\n 6 STORE_FAST 0 (n)\n\n 3 8 LOAD_FAST 0 (n)\n 10 LOAD_CONST 1 (1)\n 12 BINARY_ADD\n 14 STORE_FAST 0 (n)\n 16 LOAD_CONST 0 (None)\n 18 RETURN_VALUE\n
\n[01:45:02] Cuando haces cosas muy avanzadas que usan cosas no\n definidas formalmente, mejor verificar las suposiciones.
\n[01:46:47] La ventaja de probar cosas en proyectos personales:
\n\xbfPor qu\xe9 Jes\xfas Cea se ha hecho su propio scraper web?
\n"Maldades".
\nscrapy: https://scrapy.org/.
\n[01:49:22] Migraci\xf3n de versiones en sistemas de persistencia.
\n[02:05:07] Event sourcing.
\nEvent sourcing:\n https://dev.to/barryosull/event-sourcing-what-it-is-and-why-its-awesome.
\nLogs de modificaciones.
\n[02:08:07] Ventajas de haber usado scrapy: https://scrapy.org/.
\nConcurrencia.
\ntarpit.
\nProblemas habituales:
\nNormalizaci\xf3n de URLs.
\nWebs mal formadas.
\n[02:13:47] M\xf3dulos de scraping:
\n[02:15:02] Recapitulaci\xf3n.
\nPyjion:\n https://pyjion.readthedocs.io/en/latest/index.html.
\n[02:16:02] Compilaci\xf3n de m\xf3dulos de Python para MS Windows.\n Generar un wheel.
\n[02:22:21] Final.
\n