Mariano Reingart: web2py Application Development Cookbook


Hemos escrito un libro de recetas para el desarrollo de aplicaciones con web2py, el cual fue publicado por Packt Publishing en Marzo y ya está disponible para la venta, tanto en formato e-book como impreso.

Hasta el 28 de mayo, entrá a la página y participá en la encuenta y ganá 5 libros gratuitos donados por Packt:

http://web2py.com/cookbook

En dicha página también está publicado el código fuente, erratas.

La página para comprarlo en Packt Publishing es:

http://link.packtpub.com/di3Bc5

También buscamos revisores, contactame si estás interesado.

Con el anticipo de las comisiones por ventas del libro hemos consituido un fondo para continuar fomentando el desarrollo de web2py, python y el software libre.
Visión General:
  • Lleva tus habilidades de web2py al próximo nivel al sumergirte en recetas deliciosas y útiles de este "libro de cocina"
  • Aprende web2py avanzado, desde el uso de formularios a creación de reportes PDF
  • Escrito por los desarrolladores del proyecto web2py con cantidad de ejemplos para un aprendizaje comprehensivo e interesante
Tabla de Contenidos:
Detalles del libro:
  • Idioma : Íngles
  • Impresión : 364 páginas
  • Publicación : Marzo de 2012
  • ISBN : 1849515468
  • ISBN 13 : 978-1-84951-546-7
  • Autores : Mariano Reingart, Bruno Cezar Rocha, Jonathan Lundell, Pablo Martin Mulone, Michele Comitini, Richard Gordon, Massimo Di Pierro
  • Temas y Tecnologías : All Books, Cookbooks, Open Source, Python


Felipe Lerena: JSConf

El sabado voy a estar dando una charla sobre "cosas raras de Javascript" en la jsconf Si les interesa dense una vuelta. Si no pueden ir voy a postear la charla en la seccion de charlas.

Felipe Lerena: colaboracion

Pasa algo curioso con la gente que quiere colaborar con el area de Labs de Mozilla hispano... Todo el mundo quiere hacer algo hasta que quiere hacer algo...

Me llega un correo por dia de alguien que dice querer colaborar y cuando le respondo las 3 pavadas que tiene que hacer no solo no las hace sino que nunca mas me responde ningun mail.

No es la primera vez que me pasa, me paso en otros proyectos de software libre. No entiendo a la gente...

¿Quieren ayudar o no?

Felipe Lerena: Jugando con B2G

Estos dias estuve jugando con B2G (Boot to Gecko) el sistema operativo que esta creando Mozilla para celulares basado en la web abierta y en estandares libres, muchos de los cuales ya existen y son populares.

Para probar el sistema es necesario tener un Samsung Galaxy SII, un Nexus one, o un Samsung Galaxy Nexus el cual uno tenga ganas (y valentia) para hacer andar.

Compilarlo es bastante complejo y requiere bajar 14 Gigas de codigo y tener 80 GB disponibles en total. Hay un sitio llamado B2G Builds que te facilita el tema de construir el sistema operativo, pero hay que buildear la interfaz, que es algo relativamente facil. De todos modos hay que tener hecho Este tutorial

Felipe Lerena: Empezando de nuevo

En 1997 empece un blog, antes de que la palabra blog siquiera existiera. Pasaron un monton de años, un monton de versiones. Pase por un monton de engines Lo ultimo que puse fue un Wordpress. Habia muchas cosas que no me gustaban. No solo sobre Wordpress, sino sobre mi blog, cada vez escribi menos y menos y sin darme cuenta durante un año no escribi nada. Un dia me atacaron el wordpress pro que no lo actualizaba y decidi poner un cartel en vez del blog que decia: "Aca habia un blog" esperando algun dia tener ganas y tiempo de hacer un blog.

En el interin desde esa fecha (hace 2 años ya) fui creando paginas estaticas para cada cosa que necesitaba hacer. Terminé con un caos de cosas...

Por suerte Roberto Alsina creó Nikola un framework que me va a permitir hacer un sitio un poco mas "custom"

Espero poder ordenar todo el lio de cosas que tengo y poder empezar a contar aca todas las cosas que estoy haciendo.

Gabriel Patiño: Consejos para actualizar Ubuntu

Soy usuario de Ubuntu desde la primer version, 4.10. Casi ocho años de Ubuntu en varias máquinas, pero en todas hubo una constante: se instala Ubuntu y se actualiza cada seis meses. Nada de reinstalar, actualización tras actualización.
Solo en un caso, en una de las versiones del año pasado, falló la actualización y fué por no seguir los pasos que siempre sigo, y paso a comentarles.

Limpieza previa

Antes que nada, no esta nada mal hacer una limpieza antes de actualizar. De esta forma mantenés tu instalación con el mínimo de paquetes necesarios para el uso que le des a tu máquina, y a la vez el proceso de actualización tarda menos.
Las herramientas que uso son synaptic y deborphan.

Synaptic

Synaptic es muy conocido por los ubunteros mas viejos ya que era la única interfaz gráfica para instalar o actualizar paquetes. Lo bueno es que tiene unos filtros por estado de los paquetes que ayudan mucho a la hora de limpiar.
Los filtros a revisar para una limpieza son 'Locales y obsoletos', 'Auto eliminables' y 'Instalados a mano'. Ahí podemos ir repasando que cosas realmente necesitamos, y al resto le ponemos 'Eliminar Completamente.
Si sugiere eliminar otros paquetes, dale que sí a menos que los paquetes empiezen con 'ubuntu-*' (ubuntu-desktop, ubuntu-standard, etc). Esos paquetes son los meta paquetes que definen todas las dependencias de la versión que tengas y son necesarios para actualizar correctamente a la nueva versión.
Es posible que después de ejecutar la limpieza, queden nuevos paquetes en estado de eliminables, así que hay que repetir la limpieza una o dos veces.

Deborphan

deborphan es una utlilidad de línea de comando que te lista los paquetes que no están siendo usados por ningún otro paquete. Es muy útil para eliminar librerías que ya no son usadas (ya que generalmente no sabemos para que es exactamente cada lib).
Generalmente lo ejecuto en dos pasos (como super usuario), aunque si sos valiente podes hacer solo el último (que elimina todos los paquetes que lista deborphan):

deborphan
deborphan | xargs apt-get remove --purge -y

En este caso también hay que repetir el proceso hasta que quede todo limpio.

Actualización

La actualización de Ubuntu es muy simple: abrís el update-manager, y le das al botoncito que aparece cuando hay una nueva release, y esperas, y esperas, y esperas (o mejor anda a hacer alguna otra cosa).
Un solo tema a tener en cuenta: si hay paquetes para actualizar en tu versión actual, actualizalos. No cuesta nada y si llega a haber algún cambio importante en el update manager, apt o alguno de sus amigos, es mejor tener la última versión para actualizar correctamente.

Volver a limpiar

Luego de actualizar y reiniciar, tomate unos minutos más y volvé a ejecutar los dos pasos de limpieza. Luego de las actualizaciones es común que algunos paquetes queden huerfanos, o ya no sean soportados oficialmente.
Si sabes que no los usas, eliminalos, así mantenés tu instalación limpia.



Ideas? Aportes?

Espero que estos concejos te sirvan para mantenter tu Ubuntu limpio y liviano cada seis meses.

Gabriel Patiño: Perrito con ruedas

Y salió el primer juguete de madera!

Esta vez un poco más prolijo que el primer juego de ingenio, y aunque quedan cosas por aprender y mejorar, quedó muy lindo y simpatico:


La próxima vez voy a sacar mas fotos desde el principio, pero acá va una descripción para los interesados.

El cuerpo y la cabeza los hice con un pedazo de la lenga que estuve cepillando. Esta vez aproveché el regalo de cumpleaños de la empresa y me compré una caladora, así que ahora se me simplificó mucho el tema de cortar la madera.

Para las orejas y cola usé una tabla de cedrillo, es una madera firme pero muy blanda para cortar y lijar así que fue muy fácil manejarla.

Las ruedas fueron un tema... Compre recortes de varias cosas en Maderera Córdoba, y entre ellos encontré un rodillo de viraró que me salió bastante caro, pero me imaginé que era ideal para las ruedas. La madera es muy linda, pero es durísima. Cuando la corte con la caladora no me dí cuenta, pero cuando quise hacer los agujeros para los ejes se me complicó bastante por no tener un taladro de banco.

Terminación

Después de lijar bastante (parece que la carpintería es por lo menos un 60% de lijado) pasé al terminado: tres manos de aceite de tung, y una lija fina (320) entre manos. Para que se seque bien hay que esperar 24 horas, así que esto llevó tiempo pero quedo muy lindo y es algo que se puede hacer a la noche durante la semana, mientras los chicos duermen.


Armado

Al momento de empezar el armado, me di cuenta de un detalle, sin un taladro de banco fue muy difícil hacer los agujeros de las orejas y ruedas en ángulo recto.


Las ruedas las arregle haciendo unas arandelas de madera con una varilla a la que le hice un agujero y después la corte en fetas. Las orejas me quedaron fuera de escuadra y las tuve que lijar para que no se traben con el cuerpo.


Para el cuello tenía una varilla muy gruesa así que improvisé un torno poniendo la varilla en el taladro y dandole con la lija. Funcionó bastanten bien. Me parece que la próxima vez, si encuentro la forma de sujetar bien el taladro, pruebo directamente con un formón para hacer mas rápido.


Perrito terminado

A Oli le encantó desde que se lo dí. Salimos a pasear y lo llevó por veredas rotas, subidas de cordones y hasta algunos escalones. Me sorprendió que todavía no se haya desarmado, parece que la cola de carptintero pega en serio.


Por ratos tambíen lo uso Juan, y el perrito también resistió, eso que el petiso es un poco más bruto... lo llevaba como un banderín para todos lados, ni le importaba que estaba de costado en vez de parado sobre las ruedas, asi que el perrito se ligo unos rayones, pero para eso son los juguetes.

Juan casi arranca la colita a los tirones, y se despegó del cuerpo, pero de alguna forma quedo enganchada y no se salió. Ahora juegan a moverle la cola como si fuera la antena de un viejo televisor, espero que no la pierdan o voy a tener que hacer una nueva.

Lecciones aprendidas

  • Es difícil hacer agujeros en ángulo recto.
  • Aunque para las ruedas quedo bien porque el perro se mueve de forma muy graciosa.
  • Revisar la escuadra antes que seque el pegamento (si decía cola no quedaba muy bien :))
  • Salir de las figuras geométricas y hacer cosas más curvas.

Ramiro Algozino: Generando Certificados / Diplomas con Python + rst2pdf

Resulta que este 28 de Abril es la FLISoL 2012 y junto a otros integrantes de SanLuiX (el grupo de usuarios de software libre de San Luis) vamos a estar en la sede de Villa Mercedes de la Universidad Católica de Cuyo colaborando con la comunidad y llevando adelante el festival :-). A que viene todo esto se preguntarán; viene a que para emitir certificados de asistencia a la FLISoL nos surgió la necesidad de contar con algún método para generar los certificados masivamente usando software libre, y aquí es donde entra en juego Python y rst2pdf.

Después de pensar un rato, terminé con la siguiente estructura de archivos:

  • filsol (directorio)
    • asistentes.csv
    • certificado.rst
    • escudo.png
    • generar_certificados.py
    • pdf (directorio)

Veamos uno por uno:

asistentes.csv

Es un archivo .csv con la información personal de los asistentes; para las pruebas que hice usé el siguiente contenido de ejemplo:

dni1,apellido1,nombre1
dni2,apellido2,nombre2
etc...

certificado.rst

Es la estrucutra del certificado a imprimir, con los campos a reemplazar enumerados entre {}. Usemos por ejemplo el siguiente:

===========
FLISOL 2012
===========

.. image:: escudo.png
 :scale: 70

----------------------------
Universidad Católica de Cuyo
----------------------------

Por la presente se deja constancia que **{1} {2}**, *D.N.I. {0}* ha participado del evento FLISol 2012 en calidad de asistente. Realizado en la sede Villa Mercedes de la Universidad Católica de Cuyo el día 28 de abril de 2012.

escudo.pg

Como su nombre lo indica, es el escudo de la universidad, podría ser el logo de la FLISol o cualquier imagen que quisieran. Vale aclarar que este archivo no es obligatorio y depende de lo que hayan hecho en su archivo rst como maqueta del certificado.

generar_certificados.py

Este es el script de Python que genera todos los certificados a partir del listado en csv de asistentes. El código creo que se explica por sí mismo, se los dejo a continuación:

#!/usr/bin/env python
#-*- encoding: utf-8 -*-

from csv import reader
import subprocess

print 'Abriendo listado...',
# Esto se puede poner feo...
listado = reader(open('asistentes.csv','r'))
total = len(list(listado))
listado = reader(open('asistentes.csv','r'))
print 'listo.'

print 'Abriendo certificado...',
certificado = open('certificado.rst').read()
print 'listo.'

print listado
print 'Encontrados', total, 'asistentes:'
for nro, asistente in enumerate(listado):
    dni = asistente[0]
    apellido = asistente[1]
    nombre = asistente[2]
    certificado_final = certificado.format(dni,apellido,nombre)

    print 'Generando certificado para', apellido.upper(), nombre + '...',

    p = subprocess.Popen(['rst2pdf',
                        '-s',
                        'freetype-serif,a4-landscape,twelvepoint',
                        '-o',
                        './pdf/' + dni + '-' + apellido + '-' + nombre + '.pdf'
                        ],
                        stdin=subprocess.PIPE
                        )
    p.stdin.write(certificado_final)
    p.communicate()
    print 'listo', str(nro+1), 'de', str(total) +'.'

Seguramente se puede mejorar (mucho) el código, pero como prueba de concepto resultó ser más que suficiente :-D. El script genera un pdf en la carpeta (adivinen…) pdf a partir del archivo rst por cada asistente, reemplazando el nombre y DNI que corresponde. Para ello utiliza el ejecutable de rst2pdf, seguramente se podría hacer llamando a la librería, pero la verdad no me puse a investigar cómo hacerlo.

Uso una PIPE de subprocess para alimentar a rst2pdf con el rst modificado con los datos del asistente directamente y no tener así que guardar un archivo rst distinto a disco por cada persona.

Creo que quedó bastante bien, en un puñado de líneas y nos vino al pelo! Cuando lo probemos bien les cuento cómo se portó.


Gabriel Patiño: Maestro Japonés haciendo un mueble a mano

No me canso de ver esta serie de videos de un maestro carpintero japonés haciendo un mueble a mano.
No entiendo una goma de japonés, y esto está más allá de cualquier cosa que se me pueda ocurrir hacer con madera, pero un montón para aprender de solo verlo.
Es más, cuando alguien trabaja de esta forma, creo que da gusto verlo aunque no te guste la carpintería.

Toda la serie dura media hora, lo mismo que un capítulo de los Simpsons que viste 1 millón de veces.


Ver el resto de los videos después del link...