05.09.2021 - By Jesús Cea
Python aprieta, pero no ahoga https://podcast.jcea.es/python/15
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Víctor Ramírez, twitter: @virako,
programador python y amante de vim, conectando desde Huelva.
Miguel Sánchez, email:
[email protected], conectando desde
Canarias.
José Luis, conectando desde Madrid.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
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:37] Reducir dependencias en los proyectos.
Las listas de Numpy https://numpy.scipy.org/ no son como
las listas de Python.
statistics: https://docs.python.org/3/library/statistics.html
Hacer scraping web sin usar Scrapy https://scrapy.org/.
Beautiful Soup:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/.
[05:52] Usar librerías hace que no sepas cómo funcionan las
cosas.
¿Cuánto ocupa ese objeto en memoria?
Se oculta la complejidad, se trabaja a más alto nivel.
Ineficiencia.
[09:52] La "nube" te factura toda esa ineficiencia.
Ventajas de tener servidores dedicados.
¿Y los backups?
ZFS
https://es.wikipedia.org/wiki/ZFS_(sistema_de_archivos).
rsync: https://es.wikipedia.org/wiki/Rsync.
Contenedores Solaris:
https://en.wikipedia.org/wiki/Solaris_Containers.
Docker: https://es.wikipedia.org/wiki/Docker_(software).
Hipervisor: https://es.wikipedia.org/wiki/Hipervisor.
SmartOS: https://es.wikipedia.org/wiki/SmartOS.
Ansible: https://es.wikipedia.org/wiki/Ansible_(software).
Evitar las configuraciones manuales a toda costa.
[16:22] Delegar en la magia hace que no sepas cómo funcionan las
cosas, pero también te permite ocuparte de problemas de más alto
nivel.
Entender los pros y contras. Decisión informada.
[18:47] doctest
https://docs.python.org/3/library/doctest.html.
Una utilidad de los tests es enseñarte cómo usar un
proyecto. A veces la documentación formal es muy mala.
Tutoriales.
unittest: https://docs.python.org/3/library/unittest.html.
pytest: https://docs.pytest.org/en/6.2.x/.
[22:42] ZODB https://zodb.org/en/latest/.
[23:20] Jesús Cea se plantea mantener Durus
https://www.mems-exchange.org/software/DurusWorks/ por su
cuenta.
Problemas con la licencia.
Imposible ponerse en contacto con sus autores originales.
¿Hacer un fork hostil?
https://es.wikipedia.org/wiki/Bifurcaci%C3%B3n_(desarrollo_de_software).
[25:57] Problemas para conectar la persistencia tradicional con
el nuevo paradigma asíncrono.
[26:57] La persistencia tiene un sistema de almacenamiento
concreto configurable:
Por defecto, almacenamiento "cutre" en un fichero.
RelStorage: https://pypi.org/project/RelStorage/.
Jesús Cea: Berkeley DB Backend Storage Engine for DURUS:
https://www.jcea.es/programacion/durus-berkeleydbstorage.htm.
Berkeley DB:
https://es.wikipedia.org/wiki/Berkeley_DB.
Durabilidad regulable.
Group Committing.
[29:52] Más de lo que nunca quisiste saber sobre Group Committing.
[32:52] Persistencia y Durus.
Jesús Cea: Berkeley DB Backend Storage Engine for DURUS:
https://www.jcea.es/programacion/durus-berkeleydbstorage.htm.
Tal vez portarlo a ZODB https://zodb.org/en/latest/.
[34:52] Persistencia y versionado de objetos.
Versionado objeto por objeto. Se actualiza al ir cargando
objetos durante el funcionamiento normal.
Versión de la base de datos. Migración de todos los objetos
al arrancar el programa.
Rompe el encapsulamiento de objetos.
La migración es algo que no se explica nunca lo suficiente
en la documentación.
[47:52] La mayoría de los tutoriales son demasiado simples.
Tutorial de Python en español:
https://docs.python.org/es/3/tutorial/index.html.
Tutoriales progresivos.
La mayoría de las charlas son "introducción a ...". No
aportan mucho.
Las mejores charlas son los postmortem.
Pegas, pero desde un punto de vista constructivo y
realista.
Es más interesante conocer los puntos débiles.
[51:57] Un motivo para no tener temáticas cerradas en las
tertulias es que es difícil que los intereses de dos expertos se
solapen.
[55:42] El tema legal habitual sobre grabar los audios de las
tertulias.
[57:37] Python Madrid.
Kaleidos: https://kaleidos.net/.
Meetup Python Madrid:
https://www.meetup.com/python-madrid/.
Nostalgia de los "buenos tiempos".
Networking entre personas.
[01:09:52] super()
https://docs.python.org/3/library/functions.html#super.
[01:11:17] Operador Morsa.
PEP 572: https://www.python.org/dev/peps/pep-0572/.
Tema recurrente.
[01:13:42] La sintaxis de Python cada vez se complica más.
[01:15:57] Guido van Rossum sigue muy activo como "core
developer": https://es.wikipedia.org/wiki/Guido_van_Rossum.
[01:16:22] Funciones lambda.
Closures: https://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica).
[01:21:12] Función universal que se comporta de forma diferente
dependiendo de si se llama de forma síncrona o asíncrona.
What Color is Your Function?
https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/.
Go: https://golang.org/.
Corrutina: https://es.wikipedia.org/wiki/Corrutina.
CSP:
https://en.wikipedia.org/wiki/Communicating_sequential_processes.
La implementación actual en Python no es transparente,
"colorea" todo el programa.
[01:30:17] Stackless Python:
https://en.wikipedia.org/wiki/Stackless_Python.
Documentación:
https://github.com/stackless-dev/stackless/wiki.
¿Por qué no se integró en CPython? Portabilidad.
[01:37:07] Licencia del logotipo de Python.
Logotipo de Python Madrid: https://www.python-madrid.es/.
Condiciones de uso del logo de Python:
https://www.python.org/community/logos/.
[01:40:44] Repesca de temas de tertulias anteriores:
"Closures".
Respuestas "de nivel" en las listas de correo cuando la
pregunta es interesante.
Versionado de diccionarios.
Cacheo de "lookups" en la implementación actual de Python.
[01:46:12] Nuestra relación con PEP 8
https://www.python.org/dev/peps/pep-0008/.
Jesús Cea: Problemas por ser un dinosaurio y por programar
en varios lenguajes diferentes.
[01:47:12] Jesús Cea y código abierto:
Mercurial de Jesús Cea: http://hg.jcea.es/.
https://blog.jcea.es.
El código publicado no es bueno. Personal. Hago lo mínimo
para que funcione.
No hay test, por practicidad.
El código pagado no se puede enseñar.
Solo puede enseñar código el que tiene tiempo para programar
código abierto, por ejemplo, gente joven sin cargas
familiares.
Ideas interesantes, código regulero.
[01:52:02] Equilibrio entre practicidad y perfección.
Tener claros los "puntos de dolor".
Hacer lo mínimo imprescindible.
Máquinas limitadas como la Raspberry PI:
https://es.wikipedia.org/wiki/Raspberry_Pi.
Recibir notificaciones de cambios en el disco duro:
Watchman: https://github.com/facebook/watchman.
Entrega de valor constante e incremental.
[01:57:32] Los clientes son muy vagos y no quieren hacer los
deberes.
Metodologías ágiles.
El cliente nunca tiene tiempo para probar las entregas.
[02:01:32] Compartir archivos en la tertulia, para cositas
pequeñas. Algo pendiente para el futuro.
[02:03:32] El valor de leerse la documentación de Python como si
fuera un libro, de principio a fin.
Aparte de aprender en profundidad, el valor de colaborar
puliendo la documentación.
[02:05:42] Cambio de licencia de Python 1.x a Python 2.x.
Python 2.0 License:
https://www.python.org/download/releases/2.0/license/.
[02:06:37] Estudiar el código fuente de las propias librerías de
Python.
[02:07:02] El bug 35930 sigue coleando. Estado de la cuestión.
Issue35930: Raising an exception raised in a "future"
instance will create reference cycles
https://bugs.python.org/issue35930.
Temas de estilo.
[02:11:27] Despedida.
[02:13:10] Los riesgos de caerse con nieve en polvo.
[02:14:29] Final.