Postado: August 25th, 2010 | Autor: rochacbruno | Arquivado em: Python | Sem comentários »
Em quase todo projeto Python, principalmente se for um projeto web, precisamos de envio de e-mails. Um dos problemas é a necessidade de um servidor SMTP para garantir este envio.
Podemos resolver este problema utilizando uma conta do Gmail! Simples:
import smtplib
fromaddr = 'seuemail@gmail.com'
toaddrs = 'destinatario@gmail.com'
msg = 'Mensagem enviada pelo Python utilizando Gmail'
#provide gmail user name and password
username = 'seu email'
password = 'sua senha'
# functions to send an email
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.ehlo()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
##
##
##
##Ref:
## end of http://code.activestate.com/recipes/577371/ }}}
## {{{ http://code.activestate.com/recipes/577371/ (r1)
#Sending an email through gmail using Python - Raghuram Reddy
Share
Postado: August 24th, 2010 | Autor: rochacbruno | Arquivado em: Python, web2py | Tags: Python, web2py | Sem comentários »
O web2pyBrasil http://www.web2pybrasil.com.br/ está sorteando uma vaga para o treinamento de desenvolvimento web com Python e web2py.

Treinamento Mão na Massa!
Concorra a uma vaga para o treinamento de desenvolvimento web com Python em SP.
Para participar da promoção é fácil:
Basta seguir o twitter @web2pybrasil e @treventos e tuitar a seguinte mensagem:
” Quero ganhar uma vaga para o treinamento de Python e web2py – http://migre.me/16VWO @treventos @web2pybrasil ”
ou “clique e retuite diretamente no twitter”
é importante que a URL http://migre.me/16VWO esteja em seu tweet
Boa Sorte!
Data do sorteio: Quinta Feira : 26 de agosto
O sorteio será feito através da ferramenta: http://sorteie.me
O contato de aviso com o ganhador(a) será através de direct message. Assim é importante que você seja um seguidor(a) da @web2pybrasil
O sortudo(a) ganhará:
- A inscrição para o evento
- Coffee Break (2)
- Certificado de Participação em papel especial
- Material Didático (apostila impressa, bloco de anotações e caneta)
- Oportunidade de conhecer profissionais do mercado com interesses similares ao seus, ou seja: ampliar sua rede de relacionamento.
- Pós-Evento: Download do material .pdf disponibilizado na apostila
- Oportunidade de dirimir dúvidas, pós evento, com o Especialista, via email, referente ao conteúdo apresentado.
Importante:
- O prêmio é intransferível
- É necessário que o contemplado seja seguidor do @web2pybrasil e @treventos no twitter
- A realização do treinamento está vinculada a um quórum mínimo de participantes, considerando que não haja este quórum, a pessoa que ganhar o sorteio será notificada sobre a nova data da realização da atividade com pelo menos 15 dias de antecedência para que possa se agendar.
Share
Postado: July 1st, 2010 | Autor: rochacbruno | Arquivado em: Desenvolvimento, Python | Tags: OCR, Python | 4 Comentários »
Durante este último mês, estive desenvolvendo uma solução GED utilizando a biblioteca de OCR Pytesser aliada à já conhecida e poderosa biblioteca de manipulação de imagens do Python, a PIL, que é utilizada em larga escala em soluções como Google Maps, Yahoo Maps e até mesmo no Youtube.
Originalmente inspirado por um post[0] da Bonsai Security, resolvi tentar a quebra de um captcha simples utilizando Pytesser e PIL.
CAPTCHA é um acrônimo da expressão “Completely Automated Public Turing test to tell Computers and Humans Apart” (teste de Turing público completamente automatizado para diferenciação entre computadores e humanos): um teste de desafio cognitivo, utilizado como ferramenta anti-spam, desenvolvido pioneiramente na universidade de Carnegie-Mellon. Como o teste é administrado por um computador, em contraste ao teste de Turing padrão que é administrado por um ser humano, este teste é na realidade corretamente descrito como um teste de Turing reverso.
O consenso geral diz que isso seria fácil, mas o problema é conseguir uma solução de quebra de captcha que qualquer um possa fazer download e rodar em seu computador. Então, o pessoal da Bonsai criou em alguns minutos um simples script Python, que eu testei com vários exemplos de imagens, e acabei utilizando o mesmo conceito para outras aplicações.
A grande sacada está em utilizar httplib ou urllib para fazer a chamada aos arquivos de imagem.
Antes de qualquer coisa, tenha em mente que isto é uma experiência didática; geralmente não encontramos captchas fracos por aí, e neste exemplo trabalharemos exclusivamente com este tipo de catpcha:

- As letras não são rotacionadas
- As letras possuem a mesma largura
- As imagens são do mesmo tamanho
- Letras e imagens não sofrem deformações
- O plano de fundo é o mesmo para toda a imagem
Agora, vamos entender o código que quebra este captcha:
from PIL import Image
#Imagem a ser quebrada, neste ponto você poderia usar urlib, httplib ou curl para carregar esta imagem.
img = Image.open('input.gif')
#convertemos para o padrão RGB
img = img.convert("RGBA")
#damos bind da imagem para a variável pixdata
pixdata = img.load()
# Limpando a sujeira do background, se a cor for != black, então transformamos em branco.
for y in xrange(img.size[1]):
for x in xrange(img.size[0]):
if pixdata[x, y] != (0, 0, 0, 255):
pixdata[x, y] = (255, 255, 255, 255)
#Salvamos a nova imagem com fundo branco
img.save("input-black.gif", "GIF")
# Aumentamos as dimensões da imagem (requerido pelo OCR)
im_orig = Image.open('input-black.gif')
big = im_orig.resize((116, 56), Image.NEAREST)
#Salvamos a imagem com tamanho maior
ext = ".tif"
big.save("input-NEAREST" + ext)
# Yeah! Fazemos OCR da imagem usando o Pytesser
from pytesser import *
image = Image.open('input-NEAREST.tif')
#simplesmente imprimimos a imagem em formato de string OCRizado
print image_to_string(image)
resultado:
python ocrcaptcha.py
>>> e4ya
>>> jxt9
Esta implementação simples quebra 90% de qualquer captcha que utilize este modelo.
Aconselho fortemente aos programadores Pythonistas (ou não) que fiquem de olho no Pytesser, uma biblioteca excelente para OCR, com a qual tenho tido muito sucesso ultimamente!
[0] Bonsai
Aconselho a leitura deste post -> http://under-linux.org/blogs/magnun/brincando-com-python-e-pil-392/
{{ Abraço }}’s
Share
Postado: June 22nd, 2010 | Autor: rochacbruno | Arquivado em: Desenvolvimento, Linux, Python, WebDev, web2py | Tags: pythn, treinamento, web2py | 9 Comentários »

Convidados pela Tempo Real Eventos, empresa que atua há mais de 5 anos oferecendo treinamentos, congressos, seminários, workshops e tutoriais Mão na Massa, já tendo atendido cerca de 15 mil profissionais, o Álvaro Justen e eu ministraremos o treinamento Mão na Massa – Desenvolvimento Web Ágil com Python e web2py – eu serei responsável pelas turmas de São Paulo e ele pelas turmas do Rio de Janeiro.
A Linguagem:

Python é uma linguagem de programação dinâmica de altíssimo nível, utilizada em larga escala por empresas como Google, Dreamworks e Industrial Light & Magic. No Brasil, é utilizada pela Locaweb, Globo.com, SERPRO, Interlegis (órgão vinculado ao Senado Federal), entre outros. Diversos softwares como GIMP, Inkscape e Blender3D utilizam a linguagem Python para extensões e criação de plugins.
O Framework:

Web2py é um framework para desenvolvimento Web escrito em Python, software livre e gratuíto, que tem como um de seus principais objetivos a agilidade no desenvolvimento de aplicações Web seguras, baseadas em banco de dados.
Possibilitando que o desenvolvedor pense apenas na aplicação que está desenvolvendo (sem demandar configurações de linguagem e ferramentas), o web2py possui integração com mais de 10 sistemas de banco de dados, e vários subssistemas, como: criação automática de formulários com validação, autenticação e autorização, gerador de códigos AJAX para melhor interação do usuário com a aplicação, upload seguro de arquivos, integração com vários padrões Web (XML, RSS etc.), dentre outros.
Esse treinamento visa introduzir os alunos ao desenvolvimento Web com Python utilizando o web2py como ferramenta, mostrando todas as vantagens de se utilizar um framework.
O treinamento:
Os treinamentos acontecerão no estilo “tutorial mão na massa”, onde cada aluno tem um computador para testar e treinar o que está sendo ensinado; o objetivo desses treinamentos é capacitação no desenvolvimento de aplicações Web utilizando Python e web2py a desenvolvedores que procuram uma ferramenta para desenvolvimento ágil, dinâmico, seguro e fácil de utilizar. O curso acontecerá em um sábado (assim que fecharmos a turma ou no máximo em 45 dias), o dia todo: de 9 às 17h. Caso exista interesse em treinamento in company em São Paulo, entre em contato comigo (rochacbruno[arroba] gmail [ponto] com), e para o Rio de Janeiro (alvaro [arroba] justen [ponto] eng [ponto] br).
O treinamento é dividido em dois módulos, Básico e Avançado, e o público alvo são os desenvolvedores web, programadores e webdesigners que procuram uma ferramenta para desenvolvimento ágil, dinâmico, seguro e fácil de utilizar.
Para o módulo básico, é preciso ter conhecimento básico em HTML e lógica de programação (em qualquer linguagem).
Já para cursar o módulo avançado, é aconselhável que o interessado tenha participado do primeiro módulo, ou tenha conhecimentos equivalentes, além de possuir conhecimento básico da linguagem Python.
Os treinamentos possuirão apostila própria e durante eles será desenvolvida uma aplicação Web completa e funcional. Serão abordados vários temas com relação a desenvolvimento Web como MVC, sessões, autenticação e autorização, internacionalização, deploy, Google App Engine, dentre outros. Além disso, tudo será baseado em software livre: os computadores do laboratório terão Ubuntu 10.04.

Módulo 1 – Básico
1. Conceitos
Conceitos básicos da linguagem Python
O padrão MVC
Introdução ao web2py
Objetivos da aplicação que será desenvolvida
Preparação do ambiente
2. Trabalhando com banco de dados (Model)
A camada de acesso à base de dados (DAL)
Modelagem do banco de dados
Consulta e alteração dos registros
Upload de arquivos e imagens
Validação básica
3. Programando as Ações (Controller)
Mapeamento de URLS padrão
Passagem de parâmetros
Acesso à camada de base de dados
Comunicação com a camada de apresentação (View)
Redirecionamento de URL
Autenticação básica
Criação automatizada de formulários com CRUD
4. Apresentando a aplicação (View)
Marcação de template
Programando Python diretamente na View
HTML helpers
Exibição de imagens e download de arquivos
Links e URLs dinâmicas
Formulários com validação automatizada
JavaScript, jQuery e AJAX básicos
5. Distribuindo e publicando a aplicação
Requisitos do servidor Web
Dicas para hospedagem
Importação e exportação de pacotes em formato w2p.

Módulo 2 - Avançado
1. Conceito
Objetivos da aplicação que será desenvolvida
Preparação do ambiente
Utilização do terminal (shell)
2. Trabalhando com banco de dados (Model)
Consultas avançadas
Métodos avançados da DAL
Exportação e importação de registros
Tabelas auto referenciadas
Herança entre tabelas
Execução direta de comandos SQL
Acesso a bancos de dados MySQL e PostGreSQL
Utilizando a DAL no Google App Engine
Cache de consultas
3. Programando as Ações (Controller)
Importação de módulos externos
Gerenciamento de sessões e cookies
Autenticação avançada (grupos e permissões)
Autenticação com serviços externos (CAS, OpenID, Google)
Trabalhando com emails
Personalização de formulários automáticos
Internacionalização/tradução
WebServices
4. Apresentando a aplicação (View)
Tipos de retorno (HTML, XML, JSON, RSS e outros)
Criação de views genéricas
Criação de templates para envio de e-mails
Criação de um feed RSS
5. Plugins
Estrutura e organização de um plugin
Exemplos
6. Distribuindo e publicando a aplicação
Hospedagem no Google App Engine
Configuração da aplicação no Apache
O valor da inscrição em cada módulo é R$249,00 e, juntamente com o treinamento, cada aluno terá direito a:
- Coffee Break (2)
- Certificado de Participação em papel especial
- Material Didático (apostila impressa, bloco de anotações e caneta)
Para mais informações e inscrições visite o site da Tempo Real Eventos:
- Rio de Janeiro:
Endereço: Av. Pres. Vargas, 463, 3º andar – Centro.
- São Paulo:
Endereço: Região da Avenida Paulista, ou perto do metrô.
Gostou da ementa dos cursos? Gostaria de que mais algum assunto fosse adicionado? Tem interesse em algum dos cursos? Comente!
Share