28 setembro 2010

Minicurso Groovy & Grails

Olá!
Bem, ontem estive na Globalcode para ministrar um curso rápido de Groovy e Grails. A intenção foi apresentar os principais conceitos e alguns benefícios de se utilizar essas tecnologias para sua próxima aplicação que rodará na JVM. A interoperabilidade entre Java -> Groovy lhe permite usar as APIs que você já conhece, sem ter que se preocupar em migrar tudo.

O feedback foi super bacana! Pena que o tempo não foi suficiente para mostrar tudo!

Descrição do Minicurso:

O fato de existirem inúmeras linguagens que rodam na JVM já não é novidade nenhuma, principalmente com o sucesso de Scala e JRuby. Seguindo a linha das principais linguagens do mercado, Groovy apresenta-se como uma ótima alternativa para aqueles que querem tentar uma nova linguagem, mas ainda gostam na sintaxe Java. Ganhando popularidade nos últimos tempos, Groovy é uma linguagem dinâmica inspirada em Python, Ruby e Smalltalk que pode ampliar e muito a produtivade em seu dia-a-dia.

Quanto tempo você leva para fazer um site utilizando as principais ferramentas Java? Pois em Grails isso pode ser ainda mais rápido! Inspirado no framework Ruby on Rails, Grails tem ganhado popularidade entre as opções para desenvolvimento web devido ao seu alto grau de integração com a plataforma Java, e adicionando a isso conceitos como interceptors, tag libs, Groovy Servers Pages (GSP), além de uma grande variedade de plugins para facilitar ainda mais o desenvolvimento web.





18 julho 2010

Palestra Pycon Ireland 2010: Having fun with XMPP/jabber bots

Saudações!

Bem, ontem foi a minha apresentacao sobre xmpp e jabber no evento Pycon Ireland 2010.
Super bacana, varias pessoas na sala... e o feedback foi bom! Inclusive no segundo dia, Sprint day- alguns até estiveram testando o GTalkBot

Ainda essa semana integro o audio, mas ai estão os slides:




that's all...

06 julho 2010

GTalkBot - Jabber bot para GTalk network

Bem, no último post eu expliquei os conceitos mais básico para entender esse negócio de XMPP, xmppPy e jabber... pra facilitar a vida, eu criei uma API: GTalkBot, q esta disponivel no projeto botnet na minha conta do github:

http://github.com/victorhg/botnet


Faça o download do arquivo em:
gtalkbot.py@github

Como Utilizar


Usando python, basta vc extender a classe definir os methodos que serah expostos como comandos utilizando a notacao @botcommand. Segue um exemplo:


from gtalkbot import GTalkBot, botcommand

class MyBot(GTalkBot):

def __init__(self):
user = 'USER_ID@gmail.com'
pwd = 'passwd'
super(MyBot,self).__init__(user,pwd)

@botcommand
def hello(self, mess, args):
return "Hi! how can I help you?"



Para iniciar o bot basta executar o metodo run_server()


MyFirstGtalkBot().run_server()



Pronto! Agora, basta acessar seu bot pelo gtalk,pidgin, miranda e comecar a testar!


bom proveito!

O projeto está disponibilizado seguindo a WTF Public License... acho que entao vc ja sabe sobre o q pode fazer com o projeto...

12 junho 2010

Seu primeiro Jabber Bot em python

Saudações!

Então vamos lá, falar um pouco sobre o modelo Jabber, Xmpp e python. Resolvi escrever este tutorial, que tera 3 partes, para registrar meus estudos, e tb pq os exemplos que achei tentam sempre esconder a parte principal de criar um bot: handlers e acesso ao xmpp

Super rápida introdução a XMPP



Segundo os autores do protocolo, o XMPP é uma tecnologia aberta para comunicação em tempo real que permite a criação de vários tipos de aplicações, tais como instanting messaging, presença, chats multi-usuários, chamadas de voz e vídeo, colaboração, middleware, content syndication e qualquer transmissão de dados via XML. Talvez a definição mais curta possível seja: é um protocolo para a criação de middlewares orientado a mensagens. E canais de troca de mensagens existem em qualquer sistema distribuído, e acredite, XMPP pode ser usado em cada um deles, desde que, é claro, isso traga benefícios ao sistema ou ao desenvovimento



Para aprofundar um pouco mais o seu conhecimento, o Luis Cipriani (lccipriani), da Abril, escreveu uma introdução super bacana sobre o protocolo: Breve Introducao ao XMPP (vale a leitura, e da onde eu extrai o texto acima)

Para este primeiro exemplo, você nao precisa nem saber muito sobre o protocolo em si, já que as bibliotecas deixam tudo bastante transparente.

Jabber who?



Jabber é o nome de um dos mais famosos serviços de Mensagens instantâneas que existe. A coisa é tão grande, que "jabber" é praticamente um sinomimo de qualquer servico rodando em cima de XMPP (Google Talk, Live Journal Talk, Nimbuzz, Ovi são outros nodos famosos da rede).

O primeiro Bot



Bem, usando python, a coisa é super tranquila. Você vai precisar instalar uma implementação qqer do protocolo. Vamos usar o XMPPPy, cujo foco é ser uma fonte simples de criar scripts em cima do protocolo xmpp. O site oficial possui varios exemplos de bots e scripts para interagir com um serviço xmpp.


$> easy_install xmpp

Info sobre setuptools: python.org


Vou usar utilizar o GTalk como servidor XMPP, pra facilitar a vida.


import xmpp

jid = xmpp.protocol.JID('LOGIN_DO_BOT@gmail.com')
pwd = 'senha'
server = "talk.google.com"
port = 5222

conn = xmpp.Client(jid.getDomain(),debug=[])

conn.connect([server, port])

conn.auth(jid.getNode(), pwd)

conn.send(xmpp.protocol.Message("SEU_EMAIL@gmail.com", "hello world"))

conn.disconnect()



Importante saber que você vai precisar estar com o usuario BOT adicionado em sua lista de contatos (nos proximos posts vou mostrar como trabalhar com autorizacao de chat entre usuários).

As primeiras linhas do código sao apenas configuracoes basicas: servidor, porta, criacao de um objeto JID utilizando o email e senha para se autenticar no serviço.

Logo após, basta se conectar ao servidor, criando uma instancia de xmpp.Client e passando o token de authenticacao. Para criar uma mensagem, basta instanciar a classe xmpp.protocol.Message com os parametros destino e mensagem

Executando o codigo acima, vc deve recebeu uma mensagem "Hello World" no seu gtalk!

Yay... legal, mas ainda nao é um bot, já que o código nao interage com o usuário. Para que isso aconteça, vamos adicionar um pouco de amor no código acima. Para tal, precisamos:

  • Após conectar, avisar as pessoas na lista de contatos do bot de que ele está online

  • Definir um metodo de callback para quando as messagens chegarem

  • Manter o processo rodando aguardando mensagens



E aqui está o resultado final:


import xmpp

jid = xmpp.protocol.JID('pycon.bot@gmail.com')
pwd = 'pycon123'
server = "talk.google.com"
port = 5222

conn = xmpp.Client(jid.getDomain(),debug=[])
conn.connect([server, port])
conn.auth(jid.getNode(), pwd)



#avisando contatos de disponibilidade
conn.sendInitPresence()


def callback_message(conn, mess):
message_body = mess.getBody()
if not message_body:
return
reply_message = "You typed: "+message_body
conn.send(xmpp.protocol.Message(mess.getFrom(), reply_message))

conn.RegisterHandler( 'message', callback_message)

#main loop
def idle_proc( ):
"""This function will be called in the main loop."""
pass

while True:
try:
conn.Process(1)
idle_proc()
except KeyboardInterrupt:
print 'bot stopped by user request. shutting down.'
conn.disconnect()
break
except xmpp.protocol.InternalServerError:
print "Server error at Google, trying again"





Bem, ai esta. O código acima vai receber uma mensagem pelo gtalk e retornar a mesma mensagem para o usuário.

Espero que seja útil.

Os códigos deste post estao em: http://github.com/victorhg/botnet/tree/master/botnet/blog


cheers...
agora é hora de Guinness aqui na irlanda... fui!

23 maio 2010

Submissao para PyConf Ireland

Saudações!!

Segue abaixo a descrição da palestra que enviei esta semana para a PyCon Ireland.

Mesmo que nao seja aceita (fingers crossed), vou tentar escrever por aki o que tenho feito com bots,


Title: Having fun with Xmpp Bots

Type: Tutorial / Presentation

Abstract:
"The Extensible Messaging and Presence Protocol (XMPP), is a set of
xml technologies for presence and real-time created by the Jabber
community in 1999" (from http://xmpp.org/)
Imagine the possibility of creating a real time channel, capable of
notifying and interact, using a simple instant messaging application.
Integrating such tool on your application could bring real value to
you and customers.
The main focus of this presentation is to show an easy way to create
and use computer bots through the python language, suggesting useful
applications, and bring together some advanced considerations about
security and natural language processing.

Learn how to create a bot using jabberBot (5minutes tutorial):
- basics
- testing
- live example

How to make it useful?
- Real time notification system
- Integration with Yahoo, Exchange APIs
- System administration

Getting serious
- Alternative libraries
- Language Processing

Topics:
* JabberBot, Google App Engine, Xmppy, Twisted
* XMPP
* System Admin

Suggested length:
30 minutes

Level:
Beginner



Como acompanhar?

Já iniciei o projeto no Github (http://github.com/victorhg/botnet), e a intenção é seguir evoluindo o botnet até a apresentação,junto com outros exemplos usando google app engine e twisted...

stay tuned...