PyConES 2014 
Experiencias de unos pythonistas 
ETSII Sevilla 18 Noviembre 2014
¿Quiénes somos? 
Sergio Soto Núñez 
@sototan 
https://github.com/ssoto Óscar Ramírez Jiménez 
github.com/tuxskar 
@tuxskar
¿Quiénes somos? 
www.wtelecom.es
PyCon & PyConES
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Clases en python: 
lo estás haciendo mal 
Recorrido sobre el buen uso de clases en Python y otras 
peculiaridades 
Víctor Terrón 
Instituto Astrofísica de Andalucia (IAA) 
http://www.iaa.es/~vterron/python-clases.pdf
Clases en python: 
lo estás haciendo mal 
Clases de nuevo estilo: todas heredan de Object. Por compatibilidad hacia 
atrás no lo hacen: 
class Perro(Object): 
def __init__(self, nombre, raza, peso, edad): 
self.nombre ... 
mi_mascota = Perro(‘Lassie’, ‘Collie’, 20, 7)
Clases en python: 
lo estás haciendo mal 
Clases de nuevo estilo: todas heredan de Object. 
Por compatibilidad hacia atrás no lo hacen explícitamente. 
class Perro(Object): 
def __init__(self, nombre, raza, peso, edad): 
self.nombre ... 
mi_mascota = Perro(‘Lassie’, ‘Collie’, 20, 7) 
type(mi_mascota) 
>>> __main__.Perro 
Si no heredara de object sería instance
Clases en python: 
lo estás haciendo mal 
super() 
Llamar al método de tu clase padre: 
perro = Perro( ‘Lassie’, … ) 
super( ).daddy_method( ) 
Se desaconseja hacer la llamada: 
super(Perro, self).daddy_method() 
Habría que cambiarlo en todos sitios si el nombre de tu clase cambia
Clases en python: 
lo estás haciendo mal 
Herencia múltiple 
class T1000(Cyborg, Ninja): 
def ataca(self, n): 
for _ in xrange(n): 
super(T1000, self).ataca()
Clases en python: 
lo estás haciendo mal 
Herencia múltiple 
class Humano(object): 
def ataca(self): 
print "Punetazo" 
class Cyborg(Humano): 
def ataca(self): 
print "Laser" 
class Ninja(Humano): 
def ataca(self): 
print "Shuriken" 
class T1000(Cyborg, Ninja): 
def ataca(self, n): 
for _ in xrange(n): 
super(T1000, 
self).ataca() 
---------------------------------------- 
- 
>> robot = T1000() 
>> robot.ataca(5) 
¿Qué pasará?
Clases en python: 
lo estás haciendo mal 
Herencia múltiple 
>> robot = T1000() 
>> robot.ataca(5) 
Láser 
Láser 
Láser 
Láser 
Láser 
Al llamar a super() dentro del método ataca buscará en sus 
ancestros al primero que implemente ataca en el mismo 
orden en el que se hereda. 
>> T1000.mro() 
[T1000, Cyborg, Ninja, Humano, object] 
What does “mro()” do in Python? 
http://stackoverflow.com/questions/2010692/wh 
at-does-mro-do-in-python
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Testing, testing everywhere 
Toni Robres Turón 
SlideShares - Testing, testing everywhere
Testing, testing everywhere 
Herramientas para developers y QAs que permitan realizar testing: 
● python Nose: framework de pruebas unitarias que usa unittest. Permite 
además ver la cobertura de las pruebas 
o python request: módulo par hacer peticiones muy útil para el testeo 
de APIs. Debería suplantar a urllib… 
o Selenium: framework testeo de web UI con soporte para Firefox, 
Chrome, IE, Safari y Opera. NO USAR SU IDE 
● lettuce: framework de BDD (Behavior Driven Development) en python
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
50 shades of docker 
Iván Pedrazas @ipedrazas 
Blog personal 
http://ivan.pedrazas.me/ 
Artículo de su charla 
Recetas 
https://github.com/ipedrazas/pycones-docker 
Docker despliegue de taiga.io 
https://github.com/ipedrazas/taiga-docker
50 shades of docker 
Dockers… WTF! Leer antes 
Son entornos virtuales linux (LXC) 
Alternativa a la virtualización común 
Usa cgroups, sistema de gestión del uso 
de recursos (cpu, memoria, etc) a grupos de procesos
50 shades of docker 
Virtualización VS Dockers… ¡FIGHT! 
● Recursos necesarios 
● Estabilidad y reproducibilidad 
● Gestión del entorno (libs upgrade) 
● Seguridad 
● Facilidad de uso
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Programación funcional con python 
Herramientas para usar python de manera 
funcional 
Ponente: Jesús Espino García (Kaleidos) 
https://speakerdeck.com/jespino/python-funcional
Programación funcional con python 
Programación funcional 
● Función de orden superior: misma entrada, misma salida 
● Ausencia de estados: el comportamiento depende sólo de las entradas 
● Funciones: SÓLO FUNCIONES 
Útil para: 
● Facilitar la paralelización 
● Tests unitarios 
● Reusabilidad y depuración del código
Programación funcional con python 
Python no es un lenguaje funcional 
sino multi-paradigma 
Soporta características funcionales 
básicas: 
● Evaluación perezosa 
● Aplicación parcial 
● Funciones lambda 
● Funciones de orden superior 
No soporta: 
● Estructuras inmutables eficientes 
● Pattern matching 
● TCO (tail call optimization) 
● Currificación 
● Composición de funciones
Programación funcional con python 
Jesús Espino 
https://speakerdeck.com/jespino 
fn.py 
Transparencias
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Python on a plane 
Mostrar contenido a los pasajeros de vuelos 
domésticos en europa usando sus dispositivos 
personales 
Ponente: David Arcos, Ingeniero en Immfly 
http://www.slideshare.net/DZPM/python-on-a-plane
Python on a plane, problemas 
1. En vuelo: 
○ Offline y un backend con muchos complementos 
2. Sincronizar la información del vuelo: 
○ Mantener copias consistentes y actualizadas 
3. Integración con terceros: 
○ Pagos, tiempo atmosférico, información, gestión de 
email
En vuelo 
Autenticación común 
● TokenAuthentication 
Apps: web, android, iOS 
● API rest usando django rest framework 
Dispositivos: laptops, smartphone, tablet 
● Generar thumbnails con diferentes tamaños, responsive 
Distintos lenguajes, aerolíneas, destinos, horarios, etc 
● API filtrando con muchísimos parámetros
En vuelo 
Autenticación común 
● TokenAuthentication 
Apps: web, android, iOS 
● API rest usando django rest framework 
Dispositivos: laptops, smartphone, tablet 
● Generar thumbnails con diferentes tamaños, responsive 
Distintos lenguajes, aerolíneas, destinos, horarios, etc 
● API filtrando con muchísimos parámetros
Aterrizando 
Sincronización y volcado de la info del vuelo 
● Volcar y actualizar información usando 3G 
● Se utiliza una VPN para la securizar las conexiones 
● El sistema de tierra (hangar) es pasivo y el avión 
cuando aterriza se actualiza de manera activa
Despegue 
Sincronizar aplicaciones de terceros (pagos por paypal, o 
email por ejemplo) 
Actualizar la información del siguiente vuelo (temperatura, 
mapas, dirección) 
Actualizar contenido multimedia (periódicos, películas, 
música, aplicaciones)
Resumen de herramientas 
Python: 
● Django 
● Django Rest Framework 
● django-uuidfield 
● django-redis 
● django-celery 
● django-extensions 
● django-imagekit 
Otros: 
● NGINX 
● gUnicorn 
● Supervisor 
● Fabric
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Concurrencia I/O en python 
Concurrencia en python 
● Threading 
● Twisted 
● Gevent 
● Asyncio 
Ponente: Aitor Guevara, fundador at 
ducksboard.com
Mejor en la misma presentación 
Hacemos peticiones a páginas webs y vemos 
resultados 
Transparencias
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Generators will free your mind 
Ejemplos de uso de corrutinas y funciones 
generadoras en python 
Ponente: James Powell, New York, PyGotham 
organizer 
link
Charlas 
Clases en python: lo estás haciendo mal 
Testing, testing everywhere 
50 shades of docker 
Programación funcional con python 
Python on a plane 
Concurrencia de I/O en Python 
Generators will free your mind 
Django Sample Data Helper
Django sample data helper 
Aplicación django para generar datos 
aleatorios para llenar BBDD de django 
Ponente: Jesus Espino, Kaleider 
https://speakerdeck.com/jespino/django-sample-data-helper
Django sample data helper 
Necesidad de generar datos de prueba 
Los fixtures no funcionan 
pip install django-sampledatahelper
Django sample data helper 
Fácil de configurar: 
En el archivo: settings.py 
INSTALLED_APPS += [‘sampledatahelper’] 
SAMPLEDATAHELPER_MODEL = { 
‘model’ : ‘myapp.MyModel’, ‘number’: 5 
}
pyconES 2014 
Más de 30 charlas 
8 talleres… 
Piratepad enlaces de 
transparencias
Preguntas
Python Sevilla 
Pedro Varo Herrero @pevahe91 
Ponente en las PyconEs13 y 14 
Data Analysis, Machine Learning and Data visualization 
CSIC: Cell Biology Depart. (Univ. Sevilla and Instituto de Biomedicina de Sevilla) 
python-sevilla (linkedin)
Gracias,

Pycon es 17 noviembre 2014

  • 1.
    PyConES 2014 Experienciasde unos pythonistas ETSII Sevilla 18 Noviembre 2014
  • 2.
    ¿Quiénes somos? SergioSoto Núñez @sototan https://github.com/ssoto Óscar Ramírez Jiménez github.com/tuxskar @tuxskar
  • 3.
  • 4.
  • 5.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 6.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 7.
    Clases en python: lo estás haciendo mal Recorrido sobre el buen uso de clases en Python y otras peculiaridades Víctor Terrón Instituto Astrofísica de Andalucia (IAA) http://www.iaa.es/~vterron/python-clases.pdf
  • 8.
    Clases en python: lo estás haciendo mal Clases de nuevo estilo: todas heredan de Object. Por compatibilidad hacia atrás no lo hacen: class Perro(Object): def __init__(self, nombre, raza, peso, edad): self.nombre ... mi_mascota = Perro(‘Lassie’, ‘Collie’, 20, 7)
  • 9.
    Clases en python: lo estás haciendo mal Clases de nuevo estilo: todas heredan de Object. Por compatibilidad hacia atrás no lo hacen explícitamente. class Perro(Object): def __init__(self, nombre, raza, peso, edad): self.nombre ... mi_mascota = Perro(‘Lassie’, ‘Collie’, 20, 7) type(mi_mascota) >>> __main__.Perro Si no heredara de object sería instance
  • 10.
    Clases en python: lo estás haciendo mal super() Llamar al método de tu clase padre: perro = Perro( ‘Lassie’, … ) super( ).daddy_method( ) Se desaconseja hacer la llamada: super(Perro, self).daddy_method() Habría que cambiarlo en todos sitios si el nombre de tu clase cambia
  • 11.
    Clases en python: lo estás haciendo mal Herencia múltiple class T1000(Cyborg, Ninja): def ataca(self, n): for _ in xrange(n): super(T1000, self).ataca()
  • 12.
    Clases en python: lo estás haciendo mal Herencia múltiple class Humano(object): def ataca(self): print "Punetazo" class Cyborg(Humano): def ataca(self): print "Laser" class Ninja(Humano): def ataca(self): print "Shuriken" class T1000(Cyborg, Ninja): def ataca(self, n): for _ in xrange(n): super(T1000, self).ataca() ---------------------------------------- - >> robot = T1000() >> robot.ataca(5) ¿Qué pasará?
  • 13.
    Clases en python: lo estás haciendo mal Herencia múltiple >> robot = T1000() >> robot.ataca(5) Láser Láser Láser Láser Láser Al llamar a super() dentro del método ataca buscará en sus ancestros al primero que implemente ataca en el mismo orden en el que se hereda. >> T1000.mro() [T1000, Cyborg, Ninja, Humano, object] What does “mro()” do in Python? http://stackoverflow.com/questions/2010692/wh at-does-mro-do-in-python
  • 14.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 15.
    Testing, testing everywhere Toni Robres Turón SlideShares - Testing, testing everywhere
  • 16.
    Testing, testing everywhere Herramientas para developers y QAs que permitan realizar testing: ● python Nose: framework de pruebas unitarias que usa unittest. Permite además ver la cobertura de las pruebas o python request: módulo par hacer peticiones muy útil para el testeo de APIs. Debería suplantar a urllib… o Selenium: framework testeo de web UI con soporte para Firefox, Chrome, IE, Safari y Opera. NO USAR SU IDE ● lettuce: framework de BDD (Behavior Driven Development) en python
  • 17.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 18.
    50 shades ofdocker Iván Pedrazas @ipedrazas Blog personal http://ivan.pedrazas.me/ Artículo de su charla Recetas https://github.com/ipedrazas/pycones-docker Docker despliegue de taiga.io https://github.com/ipedrazas/taiga-docker
  • 19.
    50 shades ofdocker Dockers… WTF! Leer antes Son entornos virtuales linux (LXC) Alternativa a la virtualización común Usa cgroups, sistema de gestión del uso de recursos (cpu, memoria, etc) a grupos de procesos
  • 20.
    50 shades ofdocker Virtualización VS Dockers… ¡FIGHT! ● Recursos necesarios ● Estabilidad y reproducibilidad ● Gestión del entorno (libs upgrade) ● Seguridad ● Facilidad de uso
  • 21.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 22.
    Programación funcional conpython Herramientas para usar python de manera funcional Ponente: Jesús Espino García (Kaleidos) https://speakerdeck.com/jespino/python-funcional
  • 23.
    Programación funcional conpython Programación funcional ● Función de orden superior: misma entrada, misma salida ● Ausencia de estados: el comportamiento depende sólo de las entradas ● Funciones: SÓLO FUNCIONES Útil para: ● Facilitar la paralelización ● Tests unitarios ● Reusabilidad y depuración del código
  • 24.
    Programación funcional conpython Python no es un lenguaje funcional sino multi-paradigma Soporta características funcionales básicas: ● Evaluación perezosa ● Aplicación parcial ● Funciones lambda ● Funciones de orden superior No soporta: ● Estructuras inmutables eficientes ● Pattern matching ● TCO (tail call optimization) ● Currificación ● Composición de funciones
  • 25.
    Programación funcional conpython Jesús Espino https://speakerdeck.com/jespino fn.py Transparencias
  • 26.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 27.
    Python on aplane Mostrar contenido a los pasajeros de vuelos domésticos en europa usando sus dispositivos personales Ponente: David Arcos, Ingeniero en Immfly http://www.slideshare.net/DZPM/python-on-a-plane
  • 28.
    Python on aplane, problemas 1. En vuelo: ○ Offline y un backend con muchos complementos 2. Sincronizar la información del vuelo: ○ Mantener copias consistentes y actualizadas 3. Integración con terceros: ○ Pagos, tiempo atmosférico, información, gestión de email
  • 29.
    En vuelo Autenticacióncomún ● TokenAuthentication Apps: web, android, iOS ● API rest usando django rest framework Dispositivos: laptops, smartphone, tablet ● Generar thumbnails con diferentes tamaños, responsive Distintos lenguajes, aerolíneas, destinos, horarios, etc ● API filtrando con muchísimos parámetros
  • 30.
    En vuelo Autenticacióncomún ● TokenAuthentication Apps: web, android, iOS ● API rest usando django rest framework Dispositivos: laptops, smartphone, tablet ● Generar thumbnails con diferentes tamaños, responsive Distintos lenguajes, aerolíneas, destinos, horarios, etc ● API filtrando con muchísimos parámetros
  • 31.
    Aterrizando Sincronización yvolcado de la info del vuelo ● Volcar y actualizar información usando 3G ● Se utiliza una VPN para la securizar las conexiones ● El sistema de tierra (hangar) es pasivo y el avión cuando aterriza se actualiza de manera activa
  • 32.
    Despegue Sincronizar aplicacionesde terceros (pagos por paypal, o email por ejemplo) Actualizar la información del siguiente vuelo (temperatura, mapas, dirección) Actualizar contenido multimedia (periódicos, películas, música, aplicaciones)
  • 33.
    Resumen de herramientas Python: ● Django ● Django Rest Framework ● django-uuidfield ● django-redis ● django-celery ● django-extensions ● django-imagekit Otros: ● NGINX ● gUnicorn ● Supervisor ● Fabric
  • 34.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 35.
    Concurrencia I/O enpython Concurrencia en python ● Threading ● Twisted ● Gevent ● Asyncio Ponente: Aitor Guevara, fundador at ducksboard.com
  • 36.
    Mejor en lamisma presentación Hacemos peticiones a páginas webs y vemos resultados Transparencias
  • 37.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 38.
    Generators will freeyour mind Ejemplos de uso de corrutinas y funciones generadoras en python Ponente: James Powell, New York, PyGotham organizer link
  • 39.
    Charlas Clases enpython: lo estás haciendo mal Testing, testing everywhere 50 shades of docker Programación funcional con python Python on a plane Concurrencia de I/O en Python Generators will free your mind Django Sample Data Helper
  • 40.
    Django sample datahelper Aplicación django para generar datos aleatorios para llenar BBDD de django Ponente: Jesus Espino, Kaleider https://speakerdeck.com/jespino/django-sample-data-helper
  • 41.
    Django sample datahelper Necesidad de generar datos de prueba Los fixtures no funcionan pip install django-sampledatahelper
  • 42.
    Django sample datahelper Fácil de configurar: En el archivo: settings.py INSTALLED_APPS += [‘sampledatahelper’] SAMPLEDATAHELPER_MODEL = { ‘model’ : ‘myapp.MyModel’, ‘number’: 5 }
  • 43.
    pyconES 2014 Másde 30 charlas 8 talleres… Piratepad enlaces de transparencias
  • 44.
  • 45.
    Python Sevilla PedroVaro Herrero @pevahe91 Ponente en las PyconEs13 y 14 Data Analysis, Machine Learning and Data visualization CSIC: Cell Biology Depart. (Univ. Sevilla and Instituto de Biomedicina de Sevilla) python-sevilla (linkedin)
  • 46.