Episode Description
Participantes:
-
Eduardo Castro, email: info@ecdesign.es. Conectando desde A Guarda.
-
Jesús Cea, email: jcea@jcea.es, 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.
-
Javier, conectando desde Madrid.
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:33] Cómo documentar en Python.
-
Google docs: https://docs.google.com.
-
Wikis en GitHub: https://docs.github.com/en/communities/documenting-your-project-with-wikis/about-wikis.
-
Ventajas de tener la documentación en el control de versiones del proyecto.
-
Ventajas de ir escribiendo la documentación mientras escribes el propio código: Realimentación.
-
Sphinx: https://www.sphinx-doc.org/en/master/.
-
sphinx.ext.autodoc: https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html.
-
plantuml: https://github.com/sphinx-contrib/plantuml.
-
-
Markdown: https://www.markdownguide.org/.
-
[03:48] La vieja guardia es escéptica con las novedades de la semana.
- No hay balas de plata.
-
La documentación guía el desarrollo.
-
Paralelismo con los tests.
-
[08:38] Open source y la vergüenza: tests y documentación.
-
-
[09:28] CPython Internals Book https://realpython.com/products/cpython-internals-book/.
-
[11:13] HPy https://hpyproject.org/. Nuevo API https://es.wikipedia.org/wiki/Api para programar extensiones C para Python, independizándote de la versión del intérprete y compatible con cosas como PyPy: https://www.pypy.org/.
-
[13:18] Internet Archive como biblioteca de libros modernos: https://archive.org/details/inlibrary.
-
Funciona como una biblioteca tradicional.
-
Préstamo de libros.
-
Están escaneando a toda velocidad: 2.5 millones de libros en el momento de escribir estas notas (mayo de 2021).
-
Internet Archive: https://archive.org/.
-
Wayback Machine: https://web.archive.org/.
-
Preservación de videojuegos, páginas en flash, discos de música...
-
-
[17:03] Web de Python en Internet Archive.
-
1997: https://web.archive.org/web/19970606181701/http://www.python.org/.
-
1998: https://web.archive.org/web/19981212032130/http://www.python.org/.
-
Un ejemplo de "batteries included": https://commons.wikimedia.org/wiki/File:Python_batteries_included.jpg.
-
-
[17:53] Jesús Cea echa de menos la internet distribuida.
-
[18:23] Pattern Matching en Python 3.10. PEP 622 -- Structural Pattern Matching https://www.python.org/dev/peps/pep-0622/.
-
¿"match" y "case" serán palabras reservadas?
-
PEP 617 -- New PEG parser for CPython https://www.python.org/dev/peps/pep-0617/.
-
Se repasa la funcionalidad un poco por encima.
-
-
[27:48] Logs fáciles de configurar y decorados con colorines:
-
Daiquiri: https://daiquiri.readthedocs.io/en/latest/.
-
Colorama: https://pypi.org/project/colorama/. Compatible con Windows.
-
-
[29:28] Truco:
Python -i
: Ejecuta un script y pasa a modo interactivo.Comentado hace unas semanas.
También se puede hacer desde el propio código con
code.InteractiveConsole(locals=globals()).interact()
.Jesús Cea se queja de que usando la invocación desde código no funciona la edición de líneas. Javier da la pista correcta: para que funcione, basta con hacer
import readline
antes de lanzar el modo interactivo. -
[30:48] Manhole: https://pypi.org/project/manhole/.
-
[31:53] Breakpoints condicionales https://docs.python.org/3/library/pdb.html#pdbcommand-condition.
-
breakpoint()
como función nativa: PEP 553 -- Built-in breakpoint() https://www.python.org/dev/peps/pep-0553/. -
import pdb; pdb.set_trace()
.
-
-
[33:28] Scraping a mano:
-
scrapy shell: https://docs.scrapy.org/en/latest/topics/shell.html.
-
Jesús Cea no echa de menos Scrapy https://docs.scrapy.org/en/latest/.
-
-
[36:03] Indexador y buscador de documentos: Whoosh https://whoosh.readthedocs.io/en/latest/intro.html.
-
Jesús necesitaba ignorar tildes, lo que impacta en la extracción del lexema.
-
El backend está documentado, para que te lo puedas currar tú si lo necesitas.
-
-
[38:23] ¿Cómo hacer copia de seguridad de un fichero de 600 gigabytes con pocos cambios internos?
-
[40:58] Eduardo Castro ha ganado un hackathon en Pontevedra.
-
Software para Django: https://www.djangoproject.com/.
-
[46:38] Experiencias agridulces con los hackathones https://en.wikipedia.org/wiki/Hackathon.
- Netflix Prize https://en.wikipedia.org/wiki/Netflix_Prize.
-
[50:38] Una URL puede no estar no disponible ya cuando escuchas el podcast:
- Podcast: Programar es una mierda: https://www.programaresunamierda.com/.
-
[52:28] Jamii https://jamii.es/.
-
-
[55:38] GraphQL https://es.wikipedia.org/wiki/GraphQL.
-
REST: https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional.
-
Permisos de usuario.
-
No hay cacheo.
-
Vulcain: https://github.com/dunglas/vulcain.
-
-
[01:02:53] HTTP/2 https://en.wikipedia.org/wiki/HTTP/2.
-
HTTP/2 Server Push: https://en.wikipedia.org/wiki/HTTP/2_Server_Push.
-
No se tiene que responder por orden. Multiplexación.
-
-
[01:08:53] La explosión de la complejidad innecesaria ocultada por bibliotecas:
-
[01:10:33] Complejidad creciente de la sintaxis de Python.
-
Volvemos a Structural Pattern Matching https://www.python.org/dev/peps/pep-0622/.
-
Complejidad de la sintaxis.
-
Un lenguaje pequeño y capaz reemplaza a lenguajes dinosaurio. Python reemplazó a otros lenguajes dinosaurio. Ahora Python es un dinosaurio. ¿Cuándo saldrá un lenguaje que reemplace a Python?
-
[01:12:13] Metaclases https://realpython.com/python-metaclasses/.
-
Closures: https://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica).
-
[01:15:08] Empiezan a aparecer sublenguajes, tribus, subculturas de Python.
-
Ciertos cambios de sintaxis pueden unificar subculturas: "la forma oficial de hacerlo".
-
El operador ternario de Python
v = VALOR1 if CONDICIÓN else VALOR2
: PEP 308 -- Conditional Expressions https://www.python.org/dev/peps/pep-0308/. -
List comprehension:
[f(i) for i in ITER if CONDICIÓN(i)]
: PEP 202 -- List Comprehensions https://www.python.org/dev/peps/pep-0202/.
-
-
[01:20:18] En los viejos tiempos, podías hacer barbaridades como
True = 0
. Esto funciona en Pythonn 2.7. Es algo que se cambió en Python 3.0: https://docs.python.org/3.0/whatsnew/3.0.html#changed-syntax. -
[01:21:53] Jesús Cea echa de menos que se eliminen cosas. Está obsesionado con el tamaño del lenguaje.
- ¿Qué eliminaríamos?
-
[01:25:23] El lenguaje C incluye solo lo mínimo imprescindible.
-
-
[01:26:48] Curiosidades: What the f*ck Python! https://github.com/satwikkansal/wtfpython:
>>> all([]) True >>> all([[]]) False >>> all([[[]]]) True
-
[01:28:03] Algunos avances en la investigación del bug descrito por Virako en las últimas semanas: Ejemplo de código: https://pastebin.com/vGM1sh8r.
-
Issue24676: Error in pickle using cProfile https://bugs.python.org/issue24676.
-
Issue9914: trace/profile conflict with the use of
sys.modules[__name__]
https://bugs.python.org/issue9914. -
Issue9325: Add an option to pdb/trace/profile to run library module as a script https://bugs.python.org/issue9325.
Requiere mejorar el módulo
runpy
https://docs.python.org/3/library/runpy.html.A nadie le ha dolido lo suficiente el bug como para solucionarlo. No es que sea realmente difícil. Tal vez sí.
-
-
[01:35:53] Nuitka https://nuitka.net/.
-
Ejecutables Python independientes de lo que tengas instalado en el sistema. Por ejemplo, para poder usar una versión de Python "moderna".
-
También funciona en MS Windows.
-
-
[01:39:43] Tertulia previa: Fuentes de caracteres con ligaduras.
-
Combinación de caracteres unicode.
-
Las banderas de los países, por ejemplo, son un código "bandera" seguido del código del país: https://en.wikipedia.org/wiki/Regional_indicator_symbol.
-
La bandera de Taiwan se ve distinta en China que en el resto del mundo: https://emojipedia.org/flag-taiwan/.
-
"Collation" https://en.wikipedia.org/wiki/Unicode_collation_algorithm, para ordenar y comparar correctamente caracteres unicode: PyICU: https://pypi.org/project/PyICU/.
-
-
[01:50:23] Cuando el Steering Council https://www.python.org/dev/peps/pep-0013/ vota un tema polémico, la decisión es final. Ya no se busca el consenso a toda costa.
-
[01:52:53] Despedida.
-
[01:53:55] Final.