Showing posts with label Python. Show all posts
Showing posts with label Python. Show all posts

Wednesday, November 12, 2014

Presentación Python Herencia vs Composición (Luke soy tu padre) PyConES 2014

Estas son las diapositivas de la charla corta que di en la PyConES 2014 (Zaragoza) sobre Herencia vs Composición en Python:

Por si alguien se pregunta por qué no hice referencia al Liskov substitution principle  o por qué no di más ejemplos, tengo que decir que la charla duraba 10 minutos y la di a toda velocidad... Tanto que no se ni si me hice entender :-)

Cualquier feedback sobre el contenido de la charla o la forma de transmitir será muy bienvenida...

Articulos relacionados:

Friday, November 07, 2014

Taller Diseño modular dirigido por pruebas


Preparado por: Nestor SalcedaAlberto Perez (Apa)Jaime Gilyo mismo (eferro)
Basado en el taller creado por  Javier AceroGuillermo Pascual

Aprenderemos a crear una aplicación en la que el negocio sea el centro y que la arquitectura emerja del propio proceso de creación (por supuesto usando TDD).

Enunciado:

Vamos a desarrollar el equivalente Maño de twitter, llamado "Cós". Podéis ver el enunciado completo en: https://github.com/aleasoluciones/pycones2014

Restricciones

  • Haz lo más simple que pueda funcionar
  • Escribe el mejor código que puedas
  • No hagas más de lo que pide la funcionalidad
  • No introduzcas infraestructura si la funcionalidad no lo pide explícitamente
  • No dependas de librerías si la funcionalidad no lo pide explícitamente

Flujo

  • Evalúa el impacto de cada funcionalidad
  • Realiza los cambios que necesites para que la funcionalidad sea fácil de introducir
  • Introduce la funcionalidad

Forma de trabajo:

  • Trabajaremos en parejas, cada pareja con un portátil
  • Estaremos para ayudar/responder dudas cuatro personas
  • Haremos iteraciones

Requisitos:

  • Portátil python 2.7/3.x virtualenv pip
  • Conexión internet
Si quieres preparar el virtualenv usaremos las siguientes librerías:
  • expects
  • mamba
  • doublex (Puede no ser necesario)
  • librería http (Tornado, Flask, etc.)
  • librería para persistencia (Pickle, durus, redis, sqlite, mysql, etc.)

Ejemplos de soluciones:

(Si puedes no verlas hasta después, mejor)


Sabado 8 a las 16:00, Sala4




Wednesday, October 08, 2014

Taller y charlas seleccionadas para la PyConES 2014 Zaragoza



Ya se han seleccionado las charlas para la PyConES 2014 (Zaragoza). De las que habíamos presentado, finalmente han seleccionado las siguientes:


Podéis ver la descripción de todas las charlas en http://2014.es.pycon.org/talks

Para el caso del taller, el objetivo es poder crear una aplicación en la que el negocio sea el centro y que la arquitectura emerja del propio proceso de creación. Se trabajara en parejas y usaremos TDD para la creación. Por supuesto se requiere que los asistentes se lleven un portátil con un python + virtualenv instalado.


Nos vemos en Zaragoza !!!!



Wednesday, September 17, 2014

Votación Talleres / Charlas para la PyConEs 2014

Después de éxito de las charlas de la PyConES 2013, este año, para la PyConES 2014 (Zaragoza), el equipo de Alea Soluciones hemos echado la casa por la ventana y presentado gran cantidad de talleres/charlas.

Os pongo por aquí las propuestas por si queréis votarlas para que las acepten o por si queréis dar feedback sobre las mismas.

Muchas Gracias por vuestros votos !!!

En el panel de la pycon tenéis todas las charlas y talleres que se han presentado y que tienen pintaza :-)

Es posible que algunas de ellas, de forma directa o con modificaciones se presenten para la CAS 2014 (Barcelona) así que cualquier comentario, propuesta o mejora será muy bienvenida.


Thursday, November 28, 2013

Conferencia PyConES 2013



Este fin de semana (23-24 Noviembre) pasado se ha celebrado PyConES, la primera edición de la versión en España de la PyCon

Una conferencia dedica en exclusiva al lenguaje Python, con tres tracks en paralelo (básico, avanzado, ciencia). Sin lugar a dudas ha tenido un éxito brutal, las entradas se agotaron según salieron y la organización ha sido impecable.

Ya esperando la PyConES 2014 :-)

Este año, nos hemos liado la manta a la cabeza y el equipo en el que trabajo preparamos/presentamos dos charlas para la conferencia. Por el "retorno" que hemos tenido de la gente, parece que han aportado valor y que han suscitado algo de debate :-D

Aquí tenéis los enlaces de las presentaciones que usamos:


Las presentaciones las creamos entre todo el equipo de desarrollo @apa42 @pasku1 @nestorsalceda y yo mismo @eferro


Por otro lado, Alea Soluciones, la empresa en la que trabajamos, se porto de lujo y patrocino la conferencia. :-D

Actualización:
Con unos cuantos meses de retraso (superándome a mi mismo), dejo aquí los enlaces a los vídeos:

Posts Relacionados:

Wednesday, November 14, 2012

Introspección en Python mediante inspect

Mediante el módulo inspect podemos de una forma sencilla obtener todos los símbolos (funciones, variables, classes, etc) de un módulo. Para ello debemos usar la función inspect.getmembers que nos devuelve todos los símbolos del módulo.
Una vez de que disponemos del símbolo podemos usar las funciones ismodule, isfunction, ismethod y similares para clasificar el símbolo.

El siguiente ejemplo podemos ver cómo se obtienen todas las clases y todas las funciones de un módulo:

Ejemplo introspección con inspect

Esta técnica se usa por ejemplo en el boscli-oss-core para una vez cargado un módulo de forma dinámica identificar todas las funciones cuyo nombre cumple un formato concreto (https://github.com/eferro/boscli-oss-core/blob/master/src/boscli/boscli.py#L515).


Tuesday, November 06, 2012

Ejemplo uso importlib carga dinámica de módulos por nombre

En muchas ocasiones es bastante útil poder cargar módulos o acceder a símbolos usando como entrada una cadena. Esto permite cargar de forma dinámica código, por ejemplo si estamos desarrollando un sistema de plugins.

En versiones de python anteriores a la 2.7 se solía usar  la función __import__, pero a partir de la 2.7, tenemos disponible el módulo importlib que recubre la función  __import__ dándonos un api algo más elegante.

Podemos ver un ejemplo de uso en el siguiente snippet de código: https://gist.github.com/3928018

Importer Class (importlib wrapper)

Tests for importer module

Espero que este pequeño ejemplo de código le puesa ser útil a alguien...

Monday, August 06, 2012

Instalación de stack python independiente...

Tal como comente en el post sobre uso de paquetes deb de python no oficiales en la mayor parte de los casos, para el desarrollo de aplicaciones de servidor, lo normal es disponer de una stack python independiente del de sistema, por ello, lo normal es descargar y compilar python y utilidades básicas para gestionar paquetes y entornos virtuales.

En este ejemplo, vamos a instalar la última versión de Python 2.7 en el directorio /opt/py2.7

Python 2.7.3 for old gnu/linux systems (test debian/ubuntu)

Una vez que hemos realizado la instalación y verificado que el interprete python funciona correctamente, podemos pasar a instalar las setuptools, pip y el virtualenv.

setuptools, pip and virtualenv installation

En este punto ya disponemos del interprete de python y de las herramientas mínimas para poder crear entornos python, instalar paquetes, etc...
Este proceso permite usar un stack python moderno en servidores que dispongan de una versión obsoleta de sistema operativo.
Aun en el caso de que nuestro servidor disponga de una versión moderna de python, es bastante conveniente disponer de nuestra propia versión controlada del interprete y de las herramientas separada de la que viene con el sistema operativo...

Wednesday, August 01, 2012

Paquetes Python no oficiales para Ubuntu

En cada versión de ubuntu suele existir un par de versiones de Python soportadas de forma oficial, normalmente una de la rama 2.x y otra de la rama 3.x. En algunas ocasiones puede ser conveniente disponer de paquetes para otras versiones de Python para poder hacer pruebas de aplicaciones, depurar paquetes deb o para poder generar paquetes que puedan ser usados en varias distribuciones de forma simultanea. Para estos casos nos puede venir muy bien el respositorio de launchopad https://launchpad.net/~fkrull/+archive/deadsnakes Este repositorio contiene gran cantidad de paquetes de Python con distintas versiones capaces de convivir con los paquetes de Python oficialmente soportados en esa versión de ubuntu.... Para poder acceder a esos paquetes, lo primero es añadir ese repositorio a nuestros sources, por ejemplo ejecutando:

sudo add-apt-repository ppa:fkrull/deadsnakes
Una vez hecho esto, podemos por ejemplo instalarnos un Python 2.5 en una Ubuntu lucid 10.04, con los siguientes comandos:

sudo apt-get update
sudo apt-get install python2.5
Este repositorio contiene paquetes Python desde la versión 2.4 hasta la 3.2 para distribuciones ubuntu desde Lucid 10.04 hasta precise 12.04 Recomiendo el uso de este repositorio para el caso de que tengamos que trabajar con los paquetes Python oficiales por algún motivo, o si estamos trabajando con paquetes deb de programas hechos con Python y necesitemos probarlos en varias distribuciones o hacer las primeras pruebas de cómo funcionarían con otras distribuciones o cuando queremos hacer un backport de un paquete que nos de problemas por la versión de python. Por supuesto, si tenemos una aplicación de servidor, lo más normal es usar nuestro propio stack para el deploy usando virtualenv y no usar ninguna de las versiones de python y de paquetes de python del sistema.

Monday, April 18, 2011

Charla Empaquetamiento Deb aplicaciones Python (grupo Python Madrid)

Para la última reunión del grupo Python Madrid, prepare una pequeña charla sobre cómo empaquetar en formato deb módulos python o aplicaciones realizadas en python.

Si alguno de los que no pudo ir y está interesado en el tema, puede echar un vistazo a la presentación que prepare:


Se dispone de un resumen de la reunión, donde se pueden encontrar enlaces de temas interesantes que salieron en la reunión.

Además de la charla que di yo, Kiko, presento una charla muy interesante sobre cómo se usa python en entornos científicos. La presentación está disponible en python cientfico introducción a numpy y matplotlib

Wednesday, April 13, 2011

Jueves 14 reunión/charlas grupo de Python Madrid

Para los que pueda interesar, este Jueves 14 reunión del grupo de Python Madrid (anteriormente Python Esp Centro)

Contenido/Charlas:
  • Kiko: Herramientas para la Ciencia en Python: Numpy y Matplotlib
  • Eduardo Ferro (es decir yo mismo): Creando paquetes .deb para aplicaciones/librerías Python
  • En reserva Jesus Cea: Mercurial

Lugar:
Oficinas de Alea Soluciones
Avenida Albufera 321,
5ª planta Oficina 1
Metro: Sierra de Guadalupe (L1)
Cercanías: Vallecas

Fecha y Hora: Jueves 14 Abril a las 19:30

Por supuesto, después existe la posibilidad de quedarse a tomar algo...
¿Os animáis?...

Tuesday, March 08, 2011

Este Jueves 10 reunión Grupo de Python Esp Centro

Para los que pueda interesar, en el grupo de python-esp-centro se va ha realizar una nueva charla este próximo jueves.

Para el que quiera asistir, que tome nota:
* Cuando: 10 de marzo del 2011 a las 19:30 horas
* Donde: Oficinas de O2C en la calle de Orellana 1, 1ºD (cerca de la parada de metro de Alonso Martínez)
* Charla sobre encodings por Javier
* Charla sobre fabric por Jesús Espino

Además por si se queda corta, hay alguna charla en reserva...
Por supuesto, después existe la posibilidad de quedarse a tomar algo...
Os animáis...

Friday, February 11, 2011

Reunión Grupo de Python Esp Centro

Hace un rato he vuelto de una reunión informal del grupo python-esp-centro.
Ha estado muy interesante...

La intención es ir moviendo un grupo con reuniones periodicas por Madrid y centrado en temas relacionados con el lenguaje de programación python.

Como es un tema que me interesa bastante, ahí que me he apuntado... A ver si ahora comenzamos a mover las cosas en la lista y se consigue coger cierta frecuencia de reuniones.

Por mi parte, intentaré poner por aquí las reuniones que se realicen y los temas tratados...

Y si ha alguno le interesa el tema, pues que se apunte a la lista de correo y que se venga a las reuniones. Seguro que conseguimos montar un buen grupo.