Artwork

Contenido proporcionado por Jesús Cea and Pablo Lobariñas. Todo el contenido del podcast, incluidos episodios, gráficos y descripciones de podcast, lo carga y proporciona directamente Jesús Cea and Pablo Lobariñas o su socio de plataforma de podcast. Si cree que alguien está utilizando su trabajo protegido por derechos de autor sin su permiso, puede seguir el proceso descrito aquí https://es.player.fm/legal.
Player FM : aplicación de podcast
¡Desconecta con la aplicación Player FM !

Podcast Z #2: Animalario con lenguajes dinámicos

34:58
 
Compartir
 

Fetch error

Hmmm there seems to be a problem fetching this series right now. Last successful fetch was on February 26, 2024 22:59 (2M ago)

What now? This series will be checked again in the next day. If you believe it should be working, please verify the publisher's feed link below is valid and includes actual episode links. You can contact support to request the feed be immediately fetched.

Manage episode 207895421 series 2332298
Contenido proporcionado por Jesús Cea and Pablo Lobariñas. Todo el contenido del podcast, incluidos episodios, gráficos y descripciones de podcast, lo carga y proporciona directamente Jesús Cea and Pablo Lobariñas o su socio de plataforma de podcast. Si cree que alguien está utilizando su trabajo protegido por derechos de autor sin su permiso, puede seguir el proceso descrito aquí https://es.player.fm/legal.
Monkey Patching, Duck Typing e Inyección de Dependencias. https://podcast.jcea.es/podcastz/2

Notas:

  • 00:50: Se utiliza un caso real para explicar estas técnicas con más facilidad.

  • 01:50: La librería estándar para el envío de correo electrónico en Python, la SMTPlib, se nos queda pequeña (para este proyecto en concreto).

  • 02:01: ¡Sí!, ¡por supuesto que usamos Python!.

  • 02:12: Pero estas técnicas son aplicables también a otros lenguajes dinámicos.

  • 02:48: Los motivos por los que la SMTPlib se me quedaba pequeña: Quiero "timeouts" dinámicos, quiero limitar el número de conexiones simultaneas por servidor de correo, y quiero controlar la IP de origen de la conexión saliente.

  • 05:52: ¿Por qué no modificamos el código directamente o utilizamos los mecanismos de herencia normales?. Por mantenimiento de código y porque lo que queremos modificar no es fácilmente accesible por herencia porque está muy "profundo" en la clase original.

  • 09:04: Por fin entramos en materia. Empezamos con Monkey Patching. Modificación de código, clases y objetos en memoria.

  • 12:44: ¿Cuándo es preferible utilizar Monkey Patching en vez de mecanismos más habituales?.

  • 13:30: Otro ejemplo de Monkey Patching: Los "hot fixes" tradicionales de ZOPE.

  • 16:29: Por supuesto, esta técnica es compleja y delicada, y tiene sus riesgos.

  • 18:17: Pasamos a hablar de Duck Typing. Polimorfismo sin herencia. Frase del día: "Es un pato a efectos prácticos". O su corolario posterior: "Si parece un pato, es un pato. Aunque no lo sea" :-).

  • 20:25: En lenguajes estáticos como Java, se utiliza el concepto de "interfaces abstractos", verificados en tiempo de compilación. Con Python no se realiza ninguna comprobación, y la compatibilidad de tipos se decide en tiempo de ejecución, cuando se invocan métodos concretos con parámetros concretos.

  • 22:19: Los interfaces abstractos te permite definir dos objetos como compatibles, aunque no hereden de las mismas clases.

  • 22:28: Un ejemplo de interfaces es la abstracción de ficheros en Python (o, por ejemplo, en la filosofía UNIX de que todo es un fichero).

  • 22:54: El Duck Typing también tiene sus problemas.

  • 25:09: Hay dos escuelas de pensamiento en casi todo, dicotomías por doquier.

  • 26:00: Una forma de estar tranquilos es tener una buena batería de test.

  • 26:45: Hablamos ahora de inyección de dependencias. Recapitulamos y, ahora, todo encaja.

  • 28:41: Desvinculamos la dependencia implícita interna que tiene una librería, y la hacemos explícita y manipulable.

  • 29:00: La inyección de dependencias te facilita mucho la vida a la hora de probar el código.

  • 30:40: Bueno, en realidad el programa de ejemplo que he usado para ilustrar la descripción de estas técnicas no funciona como se ha descrito :-). Se emplea también Monkey Patching, pero de forma diferente y más estable ante actualizaciones python. Lo detallé en mi web en 2007.

  • 31:40: Fé de erratas.
  continue reading

10 episodios

Artwork
iconCompartir
 

Fetch error

Hmmm there seems to be a problem fetching this series right now. Last successful fetch was on February 26, 2024 22:59 (2M ago)

What now? This series will be checked again in the next day. If you believe it should be working, please verify the publisher's feed link below is valid and includes actual episode links. You can contact support to request the feed be immediately fetched.

Manage episode 207895421 series 2332298
Contenido proporcionado por Jesús Cea and Pablo Lobariñas. Todo el contenido del podcast, incluidos episodios, gráficos y descripciones de podcast, lo carga y proporciona directamente Jesús Cea and Pablo Lobariñas o su socio de plataforma de podcast. Si cree que alguien está utilizando su trabajo protegido por derechos de autor sin su permiso, puede seguir el proceso descrito aquí https://es.player.fm/legal.
Monkey Patching, Duck Typing e Inyección de Dependencias. https://podcast.jcea.es/podcastz/2

Notas:

  • 00:50: Se utiliza un caso real para explicar estas técnicas con más facilidad.

  • 01:50: La librería estándar para el envío de correo electrónico en Python, la SMTPlib, se nos queda pequeña (para este proyecto en concreto).

  • 02:01: ¡Sí!, ¡por supuesto que usamos Python!.

  • 02:12: Pero estas técnicas son aplicables también a otros lenguajes dinámicos.

  • 02:48: Los motivos por los que la SMTPlib se me quedaba pequeña: Quiero "timeouts" dinámicos, quiero limitar el número de conexiones simultaneas por servidor de correo, y quiero controlar la IP de origen de la conexión saliente.

  • 05:52: ¿Por qué no modificamos el código directamente o utilizamos los mecanismos de herencia normales?. Por mantenimiento de código y porque lo que queremos modificar no es fácilmente accesible por herencia porque está muy "profundo" en la clase original.

  • 09:04: Por fin entramos en materia. Empezamos con Monkey Patching. Modificación de código, clases y objetos en memoria.

  • 12:44: ¿Cuándo es preferible utilizar Monkey Patching en vez de mecanismos más habituales?.

  • 13:30: Otro ejemplo de Monkey Patching: Los "hot fixes" tradicionales de ZOPE.

  • 16:29: Por supuesto, esta técnica es compleja y delicada, y tiene sus riesgos.

  • 18:17: Pasamos a hablar de Duck Typing. Polimorfismo sin herencia. Frase del día: "Es un pato a efectos prácticos". O su corolario posterior: "Si parece un pato, es un pato. Aunque no lo sea" :-).

  • 20:25: En lenguajes estáticos como Java, se utiliza el concepto de "interfaces abstractos", verificados en tiempo de compilación. Con Python no se realiza ninguna comprobación, y la compatibilidad de tipos se decide en tiempo de ejecución, cuando se invocan métodos concretos con parámetros concretos.

  • 22:19: Los interfaces abstractos te permite definir dos objetos como compatibles, aunque no hereden de las mismas clases.

  • 22:28: Un ejemplo de interfaces es la abstracción de ficheros en Python (o, por ejemplo, en la filosofía UNIX de que todo es un fichero).

  • 22:54: El Duck Typing también tiene sus problemas.

  • 25:09: Hay dos escuelas de pensamiento en casi todo, dicotomías por doquier.

  • 26:00: Una forma de estar tranquilos es tener una buena batería de test.

  • 26:45: Hablamos ahora de inyección de dependencias. Recapitulamos y, ahora, todo encaja.

  • 28:41: Desvinculamos la dependencia implícita interna que tiene una librería, y la hacemos explícita y manipulable.

  • 29:00: La inyección de dependencias te facilita mucho la vida a la hora de probar el código.

  • 30:40: Bueno, en realidad el programa de ejemplo que he usado para ilustrar la descripción de estas técnicas no funciona como se ha descrito :-). Se emplea también Monkey Patching, pero de forma diferente y más estable ante actualizaciones python. Lo detallé en mi web en 2007.

  • 31:40: Fé de erratas.
  continue reading

10 episodios

Todos los episodios

×
 
Loading …

Bienvenido a Player FM!

Player FM está escaneando la web en busca de podcasts de alta calidad para que los disfrutes en este momento. Es la mejor aplicación de podcast y funciona en Android, iPhone y la web. Regístrate para sincronizar suscripciones a través de dispositivos.

 

Guia de referencia rapida