Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

import_goodreads (plugin para Nikola)

Ayer creé un nuevo plugin para Nikola como parte de mi esfuerzo por centralizar en este nuevo blog estático, distintos contenidos creados a lo largo de los años en distintas plataformas web.

Hoy, luego de algunos ajustes, lo mergiamos.

https://plugins.getnikola.com/#import_goodreads

Este es el README:

README.md

This plugin import Goodreads read books from Goodreads RSS to an existing site.

It:

  • uses the date the user ends to read the book as post date
  • includes user review
  • includes user rating
  • includes a link to the original review
  • uses author name, book title and "Goodreads review" as tags
  • writes output by default in posts/

To Do:

  • include book cover (dowloading the image)
  • add parameters to customize tags and content generated

Estaría bueno que no tenga código repetido con otros plugins: sí.

Estaría bueno que tenga más parámetros: sí.

¡Pero para ser la versión 0.1 está bastante bien!

El resultado en este blog se puede ver en el tag Goodreads review.


Video de mi charla Ruby para programadores Python

Hoy encontré que los organizadores de PyConAr 2014 habían subido el video de mi charla Ruby para programadores Python. Se que subir todos los videos de una conferencia lleva tiempo y es mucho trabajo. Muchas gracias!

https://www.youtube.com/watch?v=NdvTsh_eYe8


Aprendiendo Ruby: desde Python

Hace un mes y medio estoy estudiando y trabajando con el lenguaje de programación Ruby. Después de unos cuatro años con Python y luego más de tres con PHP/JS, el cambio se sintió como una ráfaga de aire fresco y en esa ráfaga reconocí aromas del pasado.

El primer día que use Ruby, leí este artículo:

https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-python/

Es bastante incompleto.

Ruby es muy parecido a Python. Pero hay muchos detalles que te pueden morder. Mientras iba estudiando, fui haciendo una lista de los que me mordían. Esa lista se convirtió en mi primer charla de Ruby.

El jueves 7 de agostó se llevó a cabo la tercera meetup del año de RubyLit (el grupo de usuarios de Ruby local). En esta presenté una charla titulada Aprendiendo Ruby: desde Python. Las slides de la presentación fueron generadas en base a un notebook IPython usando el kernel IRuby y me permitieron mostrar código vivo dentro de cada slide.

Este es el notebook que usé el día de la charla: http://nbviewer.ipython.org/github/jjconti/aprendiendo-ruby/blob/rubylit_meetup/RubyDesdePython.ipynb

Y esta la versión actualizada con los comentarios que surgieron durante la charla y que voy mejorando con el tiempo: http://nbviewer.ipython.org/github/jjconti/aprendiendo-ruby/blob/master/RubyDesdePython.ipynb


Razones para ir a PyConAr 2011

PyConAr es la conferencia de Python en habla hispana más grande del mundo y la edición 2011 se va a llevar a cabo en Junín, Buenos Aires, el próximo viernes y sábado. Vas?

Para convencerse a ir, además de mirar en el sitio oficial el listado de charlas (que incluye 5 speakers internacionales) y el mapa donde se ve de todos los lugares que vamos, no dejes de pasar por el blog oficial de la organización: en especial los posts en los que cada verso del Zen de Python.

En este detalle se refleja todo lo que han trabajado para organizar este evento. No dudo que va a estar muy bueno.


Charla: Entendiendo Decoradores en Python [actualizada]

La primer vez que di esta charla fue en el PyDay de Rafala en 2010. De las charlas que tengo en la gatera, es la que más me gusta de momento. Está bien armada y es muy útil para quienes empiezan con Python. Por eso cuando me invitaron a dar una charla en el PyDay de Córdoba, no dude en presentarla.

Dejo on line la versión actualizada (y sus fuentes) ya que los estuve buscando antes de dar la charla y me costó encontrarlos en mi computadora. Subiéndolas a Internet aumento su disponibilidad.

Esta charla también fue dada en PyCon Argentina 2010.


Python: guardar imagenes en una base de datos Sqlite

Hace un par de días Walter de Nicaragua me consultaba:

Estoy trabajando en una aplicacion para niños en las xo´s , estoy usando sqlite3 para guardar la informacion, y tambien necesito guardar fotos dentro de la base de datos.

Como la fotos seran tomadas con la camara de las propias XO's, asumo no son tan grande en resolucion y tamaño.

Tambien, estuve revizando la lista de correo, pero no hay nada concreto, y a decir verdad recomiendan que guarde una referencia de la imagen en la base de datos, y luego haga una consulta, para recuperarla, pero tambien he visto que tiene sus pro y sus contras.

Esta es la respuesta. Primero necesitamos una tabla con un campo de tipo BLOB donde guardar la imagen:

>>> import sqlite3

>>> conn = sqlite3.connect('/tmp/example')

>>> c = conn.cursor()

>>> c.execute('''create table imagenes (imagen BLOB);''')

Abro una imagen que tengo en disco, mismo directorio que donde ejecute

el intérprete de Python, la cargo en memoria y la guardo en la base.

>>> imgdata = open('tomyNarnia.jpg', 'r').read()

>>> len(imgdata)

1613949

>>> buff = sqlite3.Binary(imgdata)

>>> c.execute('insert into imagenes values(?);', (buff,))

>>> conn.commit()

>>> conn.close()

Luego podemos cerrar el intérprete. Con sqlite3 importado, recuperamos

la imagen.

>>> conn = sqlite3.connect('/tmp/example')

>>> c = conn.cursor()

>>> a = c.execute('select imagen from imagenes')

>>> img = a.fetchone()

>>> len(img)

1

>>> img

(<read-write buffer ptr 0x1c75d60, size 1613949 at 0x1c75d20>,)

El resultado es una tupla, pero como seleccionamos un solo campo de la

tabla, hay un solo elemento.

>>> img = img[0]

>>> len(img)

1613949

Finalmente lo escribimos en una imagen.

>>> f = open('newimage.jpg', 'w')

>>> f.write(img)

>>> f.close()


Unicode en el código fuente

Hoy Pedro preguntó en Twitter "Que lenguajes de programación permiten a día de hoy soporte full unicode para codear?". Algunos contestaron que Java o C#. No los conozco, pero creo que no. Creo que respondieron que el lenguaje puede trabajar con strings unicode, lo cual es bastante común hoy en día. Mi respuesta fue: Python 3. Con Python 3 podemos tener caracteres unicode en el código fuente, en el nombre de las variables por ejemplo:

>>> á = 1

>>> print(á)

1

>>> 大家好 = range(10)

>>> for ä in 大家好:

... print(ä)

...

0

1

2

3

4

5

6

7

8

9

>>> año = 2027

>>> año += 1

>>> print(año)

2028


Video de la charla Entendiendo decoradores en Python

Orfi se tomó el trabajo de editar una filmación de mi charla en el PyDay de Rafaela con mis slides para armar este video. Muchas gracias!

entendiendo decoradores from Orfx Sch on Vimeo.

Al final, durante las preguntas, escribo algo de código Python en la terminal. Lo siguiente es una reproducción:

>>> def f(a, b):

...     print a, b

...

>>> f(1, 2)

1 2

>>> def f(*a, **kw):

...     print a

...     print kw

...

>>> f(1)

(1,)

{}

>>> f(1, parametro=2)

(1,)

{'parametro': 2}

>>> def f(p1, *a, **kw):

...     print kw['param']

...

>>> f()

Traceback (most recent call last):

  File "", line 1, in

TypeError: f() takes at least 1 argument (0 given)

>>> f(1, 2, 3, param=0)

0

>>> def deco(f):

...     def _deco(*a, **kw):

...             if kw.get('p'):

...                     return f(*a, **kw)

...             else:

...                     print "No ejecuto."

...     return _deco

...

>>> @deco

... def saludo(*a, **kw):

...     print "hola"

...

>>> saludo()

No ejecuto.

>>> saludo(p=0)

No ejecuto.

>>> saludo(p=1)

hola


Charla: Desarrollando aplicaciones de red con Twisted

Hoy di en Junín una charla introductoria Twisted.

Cuando los organizadores me contactaron hace un para de meses para invitarme a venir, me preguntaron sobre qué podía hablar. Mi primera idea era una charla titulada algo así como Python para diversión, trabajo y estudio. Mandé un guión con los temas que incluiría, en en el track trabajo mensioné Twisted, el framework que venía usando hacía un tiempo ya. La respuesta que recibí fue.

"Dale, date una charla de Twisted"

:)

Si bien venía usándolo hacía casi dos años, mi forma de aprenderlo no fue la más pedagógica, sino que fue la forma dura. Empecé a desarrollar y fui conociendo lo puntudo de sus aristas a medida que iba necesitando agregar nuevas funcionalidades.

Preparar la charla mi vino muy bien para organizar lo que sabía y aprender algunas que había venido evitando. Hoy di la charla en Junín y creo que salió bastante bien.

Introducción a Twisted, un framework escrito en Python que permite

crear aplicaciones de red (clientes y servidores) asincrónicas.

Veremos sus conceptos principales y ejemplos que permitirán al

auditorio volver a su casa con las herramientas básicas para empezar a programar utilizándolo.

Dejo el material de la charla:

Slides

Ejemplos

Y una propaganda que fue mi última slide. PyAr, el grupo de usuarios de Python de Argentina está dando charlas abiertas (de 2hs c/u) en La Tribu todos los sábados. El próximo sábado tenemos justamenet una clase de Twisted!

http://python.org.ar/pyar/CharlasAbiertas2010#Twisted

Sábado 13 de Noviembre - Charlas Abiertas de Python en La Tribu (Lambaré 873, Capital Federal)

Twisted

Vamos a ver porque el modelo de twisted es necesario, como se programa en modo asyncronico usando deferreds y conocer el api de red de twisted para hacer servicios.

Disertante: Lucio Torre

13 a 15 horas