quarta-feira, 26 de agosto de 2009

Dicas web2py: lendo e enviando tweets

Esse é o primeiro artigo de uma série que pretendo postar aqui no blog. Nessa "série" Dicas web2py serão postados artigos simples e rápidos para ajudarem desenvolvedores que utilizam o web2py como framework para desenvolvimento Web. Em um futuro não muito distante também estarão aqui pequenos tutoriais para quem ainda está iniciando. :-)

Se você usa o framework para desenvolvimento Web web2py, com pouquíssimas linhas você consegue enviar e receber tweets de maneira bem fácil. Resolvi postar essa dica aqui depois de corrigir alguns bugs no código que foi publicado no AlterEgo (um local onde armazenamos receitas de bolo para o web2py).

Seguindo a dica no AlterEgo dá pra ver que utilizando o simplejson fica fácil! Como o web2py web2py já possui o simplejson por padrão então não precisamos de mais nada!
Segue o código:

#Enviando tweets
def post_tweet(username, password, message):
    from urllib import urlencode
    from base64 import b64encode
    from urllib2 import Request, urlopen
    import gluon.contrib.simplejson as sj
    args= urlencode([('status', message)])
    headers = {}
    headers['Authorization'] = 'Basic ' + b64encode(username + ':' + password)
    request = Request('http://twitter.com/statuses/update.json', args, headers)
    return sj.loads(urlopen(request).read())


#Lendo tweets
def get_tweets(user):
    from gluon.tools import fetch
    import gluon.contrib.simplejson as sj
    page = fetch('http://twitter.com/%s?format=json' % user)
    return sj.loads(page)['#timeline']

Para usar:

#Enviando um tweet:
post_tweet('meu_usuario', 'minha_senha', 'Olá, Twitter! Estou no @web2py...')

#Recebendo tweets do usuário 'web2py':
meus_tweets = get_tweets('web2py')

Depois disso é só retornar meus_tweets na função de seu controller e utilizar na view como quiser. Bem simples, né? O código acessa a API do Twitter através da urllib2 e usa o simplejson para transformar uma string JSON em um dicionário Python.
No caso da função post_tweet temos um dicionário como retorno, que possui dados sobre o tweet enviado (id, data/hora, usuário etc.), já a função get_tweets retorna uma string com os tweets já em HTML.

O código acima já é utilizado no web2py: a interface administrativa (aplicação admin) mostra os últimos tweets do @web2py (procure pela função twitter no controller default.py).

--
   Álvaro Justen
   Peta5 - Telecomunicações e Software Livre

segunda-feira, 24 de agosto de 2009

Cliente MSN com webcam para GNU/Linux

emesene 1.5 awesome: esse é o título do site http://www.emesene.org/ que faz a chamada para a versão 1.5 do software emesene (lançada na quinta-feira passada) - também é o codenome da versão 1.5 desse software.
O emesene é um mensageiro instanâneo (IM: instant messenger) que se conecta à rede do Windows Live (Windows Live Network[TM]) - falando popularmente: "é um programa pra entrar no MSN". É escrito em Python, é software livre e um dos objetivos do projeto é ser parecido (e conter o máximo de funcionalidades compatíveis) com o cliente original da Microsoft.

Dentre as novas funcionalidades, o anúncio original destaca:

  • Suporte a webcam (enviar e receber) com um configurador
  • Nova lista de plugins (cores no MSN Plus, verificação de email etc.)
  • Suporte a conexão via HTTP e proxy
  • Sistema de mensagens offline melhorado
  • Usabilidade melhorada
  • Suporte a novas línguas

Curioso(a)? Veja screen shots!

Não satisfeito em ver screen shots? Faça o download do emesene 1.5!
O site disponibiliza pacotes para vários sistemas operacionais, como: Archlinux, Debian, Ubuntu, Fedora, Mandriva e Windows. Como em qualquer software livre, também temos a opção de baixar o código-fonte. Nota: atualmente apenas as opções Debian, Mandriva e código-fonte possuem a versão 1.5.
Como já existe pacote pronto para a Debian sid (unstable), basta baixar e instalar (como root, execute: dpkg -i nome-do-pacote.deb).
Para o suporte a webcam funcionar precisei instalar a libmimic do repositório experimental do Debian.

Dica: acompanhe o blog do projeto. Apesar de o blog deles não possuir link para RSS podemos acessá-lo em: Feed RSS do blog do emesene.

Gostou? Sinta-se à vontade para colaborar! Assim como os desenvolvedores desse software (e de milhares de outros livres) você pode colaborar para melhorá-lo. Não sabe como? Pedindo novas funcionalidades, traduzindo, reportando falhas/bugs, criando temas, ajudando outros usuários, divulgando etc. O que está esperando? :-)

Vale ressaltar que o Windows Live Network[TM] não é um protocolo "aberto" como, por exemplo, é o Jabber/XMPP (que o Google Talk usa!).
Por falar em Google Talk, li por aí que o Pidgin 2.6.1 possui suporte a áudio e vídeo no protocolo do Google Talk. Ainda não testei, mas fica aí a dica: Aprenda a instalar o Pidgin 2.6.1 em distribuições baseadas em Debian.

--
   Álvaro Justen
   Peta5 - Telecomunicações e Software Livre

domingo, 23 de agosto de 2009

Novo domínio e feed RSS

Depois de conversar com o Rodolfo Carvalho (da PythOnRio, do Dojo-Rio) resolvi migrar (assim como ele) meu blog para meu domínio pessoal - que estava parado há um tempo.

Agora meu blog deverá ser acessado diretamente de http://blog.justen.eng.br/ (o endereço no blogger.com ainda funciona, mas redireciona para o novo).
O feed RSS deverá ser acessado pelo endereço http://blog.justen.eng.br/rss.xml - mesma coisa vale para o endereço do feed antigo! Aproveite e Turicas' blog: feed RSS assine meu feed RSS.

Acabei fazendo também algumas pequenas alterações no template do blog, como aumentar a área dos posts - este provavelmente será bastante alterado em breve.

Esses foram os primeiros passos para o meu novo blog, que não será mais baseado no blogger.com, terá um visual mais simples e não tem data pra ficar pronto. ;-)

--
   Álvaro Justen
   Peta5 - Telecomunicações e Software Livre

segunda-feira, 17 de agosto de 2009

PythonBrasil[5] - você vai?

Para quem ainda não conhece, a Conferência Python Brasil ou simplesmente Python Brasil (antiga PyConBrasil) é o evento nacional que reune a comunidade de programadores Python, organizado anualmente pela Associação Python Brasil. Nesse ano de 2009 estamos na 5ª edição: é a PythonBrasil[5].

Para quem não conhece, Python é uma linguagem de programação dinâmica de altíssimo nível (Very High Level Language), utilizada em larga escala por empresas e instituições como Google, NASA, Locaweb, Globo.com, SERPRO, Peta5, dentre outras.

A PythonBrasil acontece desde 2005 e já foi realizada em Campinas, Brasília, Joinville e Rio de Janeiro, contando com participantes de todo o Brasil e mundo: além de participantes, temos palestrantes e convidados de renome nacional e internacional (esse ano com personalidades do framework de desenvolvimento Web Django e Google, por exemplo). Esse ano a festa dos programadores Python tupiniquins acontecerá de 10 a 12 de setembro em Caxias do Sul. O período para submissão de propostas já se esgotou e o resultado de quem falará ao público já saiu - por falar nisso, esse ano a PythonBrasil bateu o recorde de envio de trabalhos!

Submeti uma "palestra" (que foi aceita! \o/) sobre web2py - entre aspas porque pretendo simplesmente mostrar exemplos e desenvolver pequenas aplicações - nada de slides! Leia o resumo da minha submissão: Handson web2py: desenvolvimento Web ágil. Para os interessados em web2py, nos vemos lá!

Para quem ainda não fez a inscrição, não perca tempo: inscreva-se para a PythonBrasil[5] (e pague menos até o dia 21 de agosto). O pessoal da PythOnRio estará em peso lá. E você, vai?

PythonBrasil[5]

sexta-feira, 14 de agosto de 2009

Dia Debian em Piraí

Para quem não conhece, o Dia Debian (ou Dia-D para os mais íntimos) é um evento anual que acontece em várias cidades do mundo e tem como objetivo comemorar o aniversário do Debian, que completará 16 anos no próximo domingo (16 de agosto).

Esse ano, usuários do Debian do estado do Rio de Janeiro (eu estou nesse grupo :-) comemorarão o aniversário dessa fantástica distribuição GNU/Linux na cidade de Piraí. Contaremos com a presença de Debian Developer e palestrantes de outros estados. O evento acontecerá amanhã (sábado, 15 de agosto) das 9h30min às 18h30min.

No site do grupo de usuários de software livre do Sul Fluminense existe uma pré-inscrição: se você pretende participar, faça a pré-inscrição para ajudar a organização do evento a mensurar o público. Também estão disponíveis a grade de apresentações do Dia-D 2009 em Piraí e o cartaz de divulgação do Dia-D 2009 em Piraí.

Ministrarei um workshop sobre programação em Python e web2py: Como desenvolver aplicações Web ágeis, que começará às 14h30min e terá duração de 2h.

Espero vocês lá! ;-)

--
   Álvaro Justen
   Peta5 - Telecomunicações e Software Livre

quarta-feira, 5 de agosto de 2009

web2py hack day

Há certo tempo utilizo o framework de desenvolvimento Web web2py aqui na Peta5 - inclusive participo do desenvolvimento do mesmo, submetendo patches com correção de bugs e novas funcionalidades.

O web2py é um framework escrito em Python que, apesar de simples, é bastante poderoso e proporciona desenvolvimento bastante ágil de aplicações Web.

Depois de conversar um pouco com o pessoal do Dojo Rio e da PythOnRio vi que o pessoal tinha interesse em aprender mais sobre o framework, por isso resolvi fazer um encontro informal sobre. A ideia é que troquemos experiências sobre web2py, o comparemos com outras soluções para, por exemplo, outros usuários terem base melhor de decisão sobre qual framework utilizar, além de contribuir com ideias para seu melhoramento.

Estou chamando o evento de web2py hack day e ele acontecerá na próxima sexta-feira, dia 07 de agosto, às 18h30min no laboratório da Peta5, em Niterói/RJ.

Nosso laboratório fica dentro da Universidade Federal Fluminense, no campus Praia Vermelha - para quem não conhece, é bem fácil chegar, saindo da Ponte Rio-Niterói: veja no Google Maps como chegar ao laboratório da Peta5. Chegando ao campus basta ir em direção ao bloco E ("prédio velho"), se dirigir ao quarto andar e procurar a sala 406A, que fica bem ao final do corredor.

Aos interessados: por favor confirmem a vinda (via comentário no blog, via email na thread do encontro na lista PythOnRio etc.)!

   --
   Álvaro Justen
   Peta5 - Telecomunicações e Software Livre