PyLestras do PugCE – REST com Python

Hoje na Fa7 o PugCE realizou o evento PyLestras, tivemos 3 palestras e a resolução de problema em um pequeno Dojo.

As palestras foram:

  • 09:00-09:20 – Conhecendo o PugCe (Italo Maia)
  • 09:30-10:20 – AppEngine (Filipe Fernandes)
  • 10:30-11:20 – Rest com Python (Eu \o)
  • 11:30-12:00 – DOJO

O problema proposto para Dojo foi implementar a sequência de Conway da seguinte forma:

# -*- coding: utf-8 -*-
import doctest

def next(prev):
    """
    >>> next(1)
    '11'
    >>> next(2)
    '12'
    >>> next(312311)
    '1311121321'
    >>> next(22)
    '22'
    """
    prev = str(prev)
    res = ''
    pa = prev[0]
    acc = 0
    for a in prev:
        if a == pa:
            acc += 1
        else:
            res += "%d%s" % (acc, pa)
            acc = 1
        pa = a
    res += '%d%s' % (acc, pa)
    return res

def conway(ini, lim):
    """
    >>> conway(1, 1)
    '1'
    >>> conway(1, 6)
    '1 11 21 1211 111221 312211'
    >>> conway(3, 4)
    '3 13 1113 3113'
    >>> conway(22, 5)
    '22 22 22 22 22'
    """
    res = str(ini)
    for i in range(lim - 1):
        prev = res.split()[-1]
        res += " %s" % next(prev)
    return res

if __name__ == "__main__":
    doctest.testmod(verbose=True)

Um segunda versão usando o módulo itertools do Python e geradores, mostra também como representar exceptions no doctest:

# -*- coding: utf-8 -*-
import doctest
from itertools import groupby

def conway_generator(ini, lim):
    """
    >>> a = conway_generator(1, 1)
    >>> a.next()
    '1'
    >>> a = conway_generator(2, 3)
    >>> a.next()
    '2'
    >>> a.next()
    '12'
    >>> a.next()
    '1112'
    >>> a.next()
    Traceback (most recent call last):
        ...
    StopIteration
    """
    res = str(ini)
    yield res
    for i in range(1, lim):
        res = ''.join(["%d%s" % (len(list(g)), k) for k, g in groupby(res)])
        yield res

def conway(ini, lim):
    """
    >>> conway(1, 1)
    '1'
    >>> conway(1, 6)
    '1 11 21 1211 111221 312211'
    >>> conway(3, 4)
    '3 13 1113 3113'
    >>> conway(22, 5)
    '22 22 22 22 22'
    """
    return ' '.join(conway_generator(ini,lim))

if __name__ == "__main__":
    doctest.testmod(verbose=True)

O problema não foi resolvido na hora do Dojo, mas serviu para mostrar algumas coisas interessante do Python 😀

Os slides da minha palestra seguem abaixo assim como o link para o código usado de exemplo:

source: github.com/fabiocerqueira/murl

livro citado em inglês e português

Anúncios

PythOnCeará – Primeiro evento do PugCE

No próximo sábado dia 14/11 será realizado na FA7(Faculdade 7 de Setembro) o primeiro evento dos programadores Python no Ceará. O evento será promovido pelo PugCE e contará com quatro palestras de diversos temas envolvendo Python, desde mercado, web, desktop e mobile.

Mais informações sobre o encontro:
local: FA7, em frente a Unifor, sala 35 – mapa
horário: das 13:00 às 17:30
dia: 14/11/09
Programação:
Quatro palestras de 50 minutos, com pausa para coffee break
Palestras:

  • “Por que python?!” – Nicholas Amorim
  • “Python para Web e Desktop” – Alec Nascimento
  • “Django tem ritmo!” – Italo Maia
  • “Sokoban com PyS60” – Fábio Cerqueira

Eu serei um dos palestrantes como vocês viram na grade acima e falarei de como foi o desenvolvimento do Sokoban para celular. Espero a presença de quem ler isso aqui \o/

Faça sua inscrição no evento aqui.

Novidade no Google App Engine

Ontem implementei um bot para o twitter usando o GAE(Google App Engine) que todo dia da semana tuita às 9:00 o cardápio do restaurante universitário da UECE, foi implementado em Python que até ontem era a única linguagem aceita pelo GAE e também porque é a linguagem atual que eu mais gosto de programar.

Foi anunciado no blog oficial do GAE que agora terá suporte à Java. Além de outras novidades que você pode conferir no post oficial.

Algo que precisei para implementar o bot e senti falta no GAE foi funcionalidade de Cron, que foi adicionado nesta última versão. Eu fiz o bot usando outros recursos, mas pretendo implementar usando as novas funções de Cron.

A movimentação com java já começou e colocaram para rodar PHP no GAE:
http://twitter.com/app_engine/status/1478653255

Não sabe o que é o GAE? Site oficial: http://code.google.com/appengine/

A idéia do bot foi do Pedro

O código fonte do Jaiku foi liberado

Jaiku é uma rede social de micro-blogging que foi lançado em 2006 por Jyri Engeström e adquirido pela Google em 2007. O Jaiku possui caracteristicas semelhantes ao twitter e quando o twitter baleiava o jaiku foi muitas vezes citado como substituto. Porém o passarinho azul não morreu e o Jaiku ainda teria um forte concorrente.

A Google então resolveu parar com desenvolvimento do Jaiku e resolveu disponibilizar o código fonte dele que agora é feito com o Google App Engine(Python) no Google Code Project.

Você pode ver o código do projeto em: JaikuEngine

E também foi disponibilizado o código do cliente Jaiku para celular que pode ser baixando em: Client Jaiku Mobile

meu jaiku: http://fabiocerqueira.jaiku.com

meu twitter: @fabiocerqueira