Mostrando postagens com marcador web2py. Mostrar todas as postagens
Mostrando postagens com marcador web2py. Mostrar todas as postagens

terça-feira, 20 de julho de 2010

Eu vou ao FISL, e você?

Bah, ao final da tarde de hoje partirei para Porto Alegre/RS, pois amanhã começa a 11ª edição do FISL - Fórum Internacional de Software Livre. O evento se estenderá até sábado, formando a maior festa de software livre da América Latina! \o/

11° FISL - Fórum Internacional de Software Livre, de 21 a 24 de julho de 2010, em Porto Alegre/RS

A galera do Rio estará em peso lá, com muitas palestras! Tive 4 propostas aceitas e minha primeira palestra será amanhã às 9h. Veja a lista de minhas atividades:

Veja toda a grade do FISL11.

Além disso, tentarei organizar um Coding Dojo e um openspace sobre Arduino. Obviamente, levarei o Turiquinhas versão 2 (meu carrinho controlado por Wi-Fi, feito com Arduino). Também me encontrarei lá com o Jon "maddog" Hall, presidente da Linux International, para trocar ideias sobre hack and beer, Arduino e outras coisas mais.

Para quem não vai, resta acompanhar o evento pelo Twitter, assistir às palestras ao vivo pela TV Software Livre ou ouvir a Rádio Software Livre.

Acompanhe o FISL11 pelo Twitter Acompanhe o FISL11 pela TV Software Livre Acompanhe o FISL11 pela Rádio Software Livre

Você vai ao FISL11? Nos encontramos lá!

segunda-feira, 5 de julho de 2010

Artigo sobre web2py na revista TI Digital de julho

É com prazer que anuncio que um artigo meu sobre o web2py foi publicado na edição desse mês da revista TI Digital. A revista começou a circular a partir de quinta-feira passada (1º de julho) e possui meu artigo em três páginas.

Revista TI Digital de julho de 2010 com artigo de Álvaro Justen sobre web2py

Em toda edição da revista o pessoal da Arteccom disponibiliza alguns artigos da revista para download em seu site, e nesse mês o meu foi um deles! Veja a página da edição de julho da revista TI Digital para mais detalhes. Também recomendo a compra da mesma, que possui 75 páginas e vários artigos de pessoas importantes da área, abordando diversas outras tecnologias voltadas para Web; custa R$7,90 e você encontra nas melhores bancas. :-)

Quem ler o artigo até o final vai perceber que coloquei um bônus (gratuito! :-D) para que os leitores interessados aprendam melhor sobre o framework - e se você está bastante interessado e quer aprender ainda mais, veja meu artigo sobre o curso de web2py que ministrarei no Rio de Janeiro.

Espero que vocês gostem e que meu trabalho lhe seja útil! Eu já comprei a minha TI Digital de julho, e você? Leu? O que achou? Comente!

segunda-feira, 28 de junho de 2010

Curso de Python e web2py no Rio de Janeiro

Tempo Real Eventos Convidados pela Tempo Real Eventos, Bruno Cezar Rocha e eu ministraremos cursos sobre Python e web2py - eu ficarei responsável pelas turmas no Rio de Janeiro e ele pelas turmas em São Paulo.

A Linguagem - Python

Python - linguagem de promgração de altíssimo nível Python é uma linguagem de programação dinâmica de altíssimo nível, utilizada em larga escala por empresas como Google (que atualmente emprega o criador da linguagem), Dreamworks, Industrial Light & Magic, NASA, dentre muitas outras. No Brasil, é utilizada pela Locaweb, Globo.com, SERPRO, Interlegis (órgão vinculado ao Senado Federal), entre outras. Diversos softwares como GIMP, Inkscape e Blender utilizam Python para extensões e criação de plugins.

O Framework - web2py

web2py - framework para desenvolvimento de aplicações Web em Python O web2py é um framework para desenvolvimento Web escrito em Python, software livre e gratuito, que tem como um de seus principais objetivos agilidade e facilidade no desenvolvimento de aplicações Web seguras, baseadas em banco de dados.
Ele possibilita ao desenvolvedor pensar apenas na aplicação que está desenvolvendo (sem demandar configurações de linguagem e ferramentas), fazendo com que o desenvolvedor foque no problema que precisa resolver, e não em problemas relacionados à linguagem ou a alguma ferramenta. 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.

O Curso - Mão na Massa

Tutorial Mão na Massa - Tempo Real Eventos 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, entre em contato comigo (alvaro [arroba] justen [ponto] eng [ponto] br).

O treinamento é dividido em dois módulos: Básico e Avançado. Para o módulo básico, é preciso ter conhecimento básico em HTML e lógica de programação (em qualquer linguagem) e para cursar o módulo avançado, é aconselhável que o interessado tenha participado do primeiro módulo, ou tenha conhecimentos equivalentes.

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.

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:

Gostou da ementa dos cursos? Gostaria de que mais algum assunto fosse adicionado? Tem interesse em algum dos cursos? Comente!

quarta-feira, 2 de junho de 2010

Porque eu adoro o sistema de views do web2py

Vindo de mim, um elogio ao web2py pode parecer tendencioso, já que sou um dos desenvolvedores do framework. Porém uma coisa que me fascinou, mesmo antes de me tornar desenvolvedor, foi a implementação da camada de apresentação (views, do modelo MVC).

No web2py a camada de apresentação é parecida com código PHP: você utiliza a linguagem que precisar para apresentação do conteúdo (HTML, CSS, XML, JavaScript ou qualquer outra que desejar) e pode embutir código Python no meio. A grande sacada - que trás muita simplicidade e flexibilidade ao desenvolvedor - é exatamente o fato de podemos embutir código Python. Com isso, ganhamos inúmeras vantagens:

  • Você não precisa aprender a utilizar uma linguagem de templates nova: é Python - mesma linguagem em que você programa seus models e controllers!
  • Como o código da view pode ser transformado em um módulo Python, a execução da view fica muito mais rápida, pois o web2py a traduz para código Python puro e então o compila para bytecode;
  • Você não fica limitado a uma linguagem restrita (como são as linguagens criadas para a camada de apresentação) - você pode utilizar todo o poder que Python lhe proporciona sempre!
  • Você pode criar qualquer formato de saída para sua camada de apresentação, o que significa que não necessariamente a saída da sua view precisa ser escrita em alguma linguagem de marcação (HTML, XML etc.). Você pode, por exemplo, ter uma view que gera um arquivo JPEG, um texto em RTF, um documento em PDF, um arquivo em CSV e por aí vai;
  • A camada de apresentação está desacoplada das outras camadas, o que significa que uma única view pode servir a vários controllers ou um único controller pode ter como apresentação várias views diferentes em ocasiões diferentes.

Eu poderia citar vários outros exemplos (inclusive da ótima integração da camada de apresentação com as outras camadas do framework), mas as outras dicas ficarão diluídas nos próximos artigos. Porém, não poderia deixar esse artigo sem código. Como todo bom programador, vamos ao que interessa:

Exemplo 1 - View gerando HTML

Digamos que possuímos um sistema de inscrição em eventos e precisamos listar uma tabela com o nome do participante inscrito e assinalar se ele pagou ou não a inscrição. Dessa forma, possuímos um model (por exemplo, models/db.py) parecido com:

db.define_table('participante',
    Field('nome', 'string', length=250),
    # inclua outros campos aqui
    Field('pagou', 'boolean'),
)

Então precisamos de um controller que seleciona os nomes dos inscritos e o estado do pagamento. Vamos chamar esse controller de controllers/usuarios.py:

def tabela_de_pagamentos():
    inscritos = db().select(db.participante.nome, db.participante.pagou,
                            orderby=db.participante.nome)
    return {'nome_e_pagamento': inscritos}

Com isso, nossa view será executada em um ambiente onde a variável nome_e_pagamento existe e seu conteúdo é o que foi retornado pelo controller acima. Vamos então criar uma view que gera HTML para o controller acima. Coloque no arquivo views/usuarios/tabela_de_pagamentos.html:

{{if len(nome_e_pagamento) == 0:}}
Não temos usuários cadastrados! :-(
{{else:}}
<table>
  <tr>
    <td> Nome </td>
    <td> Pagou? </td>
  </tr>
{{
for usuario in nome_e_pagamento:
    if usuario.pagou:
        pagou = 'Sim'
    else:
        pagou = 'Não'
    pass
}}
  <tr>
    <td> {{=usuario.nome}} </td>
    <td> {{=pagou}} </td>
  </tr>
{{pass
pass}}

Tudo o que está entre {{...}} será executado como código Python. Além disso, o web2py inclui algumas novas palavras-chave para ajudar no processo de criação de views, são elas:

  • {{=expressão_Python}}: executa expressão_Python e imprime o resultado no local;
  • {{extend 'arquivo.html'}}: utiliza a view arquivo.html como base para essa view;
  • {{include}}: indica onde outras views que utilizam essa como base serão adicionadas.

Pode parecer estranho acima o uso da keyword pass. Elas estão lá por conta de uma definição no sistema de apresentação do web2py: por conta de espaços na camada de apresentação fazerem diferença, seria complicado em todos os casos o programador manter a endentação correta do código.
Para resolver esse problema o web2py então gera um novo código baseado em nossa view, ignorando a endentação que utilizamos - ele auto-endenta o código quando encontra if, for etc. Para voltar um nível, como a endentação na view é ignorada, precisamos utilizar a palavra reservada do Python pass. Note que essa palavra reservada faz parte da linguagem e sua função é apenas "passar" (não executa comando algum) - nesse caso ela serve como um sinal para o web2py voltar um nível na endentação.
Note que como a endentação é feita automaticamente, eu não precisaria ter endentado o código entre {{...}}. Porém nesse caso a endentação não atrapalha o código de retorno da minha view e por motivos de organização deixei o código endentado.

Para o exemplo acima, se acessarmos a URL http://localhost:8000/welcome/usuarios/tabela_de_pagamentos (ou http://localhost:8000/welcome/usuarios/tabela_de_pagamentos.html) teríamos como retorno a view acima processada, como nos dois exemplos abaixo, sem e com dados inseridos na tabela:

View do web2py mostrando tabela de pagamentos vazia
View do web2py mostrando tabela de pagamentos cheia

Nota: utilizei/modifiquei a aplicação welcome (que já vem com o web2py) para fazer esses exemplos.

Exemplo 2 - View gerando CSV

Para os mesmos model e controller acima poderíamos ter uma view que gera um arquivo CSV com os dados, em vez de HTML. Vamos então criar o arquivo views/usuarios/tabela_de_pagamentos.csv:

{{
import cStringIO
csv = cStringIO.StringIO()
nome_e_pagamento.export_to_csv_file(csv)
response.write(csv.getvalue())
csv.close()
}}

Não vou entrar em detalhes do código acima, mas para quem estranhou a presença do objeto response fica a explicação: o web2py, para aumentar a produtividade do desenvolvedor, leva a sério o conceito Don't Repeat Yourself e, por isso, ele mesmo importa automaticamente os objetos de sua API que precisamos utilizar (nesse caso, o objeto response).

Feito o código acima, ao entrarmos em http://localhost:8000/welcome/usuarios/tabela_de_pagamentos.csv será feito o download de um arquivo CSV. Abrindo, teremos:

Arquivo CSV gerado pela view do web2py sendo visto no OpenOffice.org

Como disse acima, poderíamos utilizar outras extensões nas views e gerar quaisquer tipos de arquivos que quisermos com código Python. Em uma aplicação que desenvolvi há alguns meses precisei criar views que gerassem PDF (para relatórios sob demanda) e tudo funcionou perfeitamente.
Espero que os exemplos acima tenham explicitado o poder e flexibilidade que esse sistema de apresentação possui. Dúvidas? Entre na lista brasileira de usuários web2py e perguntem-me lá!

segunda-feira, 23 de novembro de 2009

PythOnCampus em Campos!

Nessa semana, dias 27 e 28 de novembro de 2009 - sexta e sábado - teremos mais uma PythOnCampus, dessa vez no IFF em Campos dos Goytacazes - é a PythOnCampus em Campos!

O pessoal do NSI/IFF está organizando o evento, que contará com palestras e minicursos sobre Python e tem como objetivo trazer o conhecimento e a experiência dos profissionais da área pra dentro da instituição, qualificando e preparando os alunos tanto para o mercado de trabalho como para a vida acadêmica. O Hugo Lopes Tavares me convidou para palestrar lá - e como eu gostei, palestrarei duas vezes! Uma sobre web2py e outra sobre Coding Dojo + Dojo Rio.

Teremos minicursos e palestras sobre a linguagem, Coding Dojo, frameworks para desenvolvimento ágil, software livre e outros assuntos - todo o conhecimento será compartilhado por profissionais da PythOnRio que estarão lá representando suas instituições: Canonical, Globo.com, IFF, Peta5, SERPRO, UENF, UFF, dentre outras. Confira a programação completa da PythOnCampus IFF.

A sessão de Coding Dojo e apresentação que farei do Dojo Rio acontecerá na sexta-feira (27) às 15h30min, já minha palestra/handson sobre web2py será no sábado (28) às 16h30min.

O que está esperando? Faça sua inscrição para a PythOnCampus em Campos! As vagas para o auditório e minicursos são limitadas. O preço para inscrição em minicursos é de 1 kilograma de arroz, feijão ou macarrão (fazer inscrição no site e levar ao NSI, sala 133, bloco A).

Banner PythOnCampus IFF
Confira também os folhetos com a programação: folheto 1 e folheto 2.

Se você é de Niterói ou do Rio e gostaria de participar, comente aqui no blog para marcarmos a ida - o pessoal deve sair daqui na quinta-feira (26) por volta das 19h.

Nos vemos lá! :-)

quarta-feira, 14 de outubro de 2009

Onde encontrar documentação do web2py

Muita gente me pergunta sobre documentação do web2py e reclama que o manual "oficial" não é gratuito. A ideia desse post é listar as formas de se obter documentação atualizada sobre o framework. Então, seguem, da mais barata pra mais cara:

A segunda edição do manual ainda não está disponível no Wiley e na Amazon (essas duas só possuem a primeira edição, que não possui informações sobre as novas funcionalidades do framework). Acredito que estarão disponíveis daqui há algum tempo.

Existem também a lista de discussão de desenvolvedores do web2py, porém apenas pessoas convidadas (que contribuíram em algo com o projeto) podem entrar - de qualquer forma, ela é aberta para leitura - e o AlterEgo, o FAQ do web2py (o conteúdo dele será movido em breve para a wiki).

E então, conseguiu encontrar o que estava procurando sobre o web2py? Não? Por quê? Quando conseguir, não esqueça de adicionar uma entrada na wiki. ;-)

--
   Álvaro Justen
   Peta5

quarta-feira, 7 de outubro de 2009

Nova wiki do web2py

No último final de semana mexi em algumas linhas de código da aplicação web2py-wiki, como:

  • Trocada a forma de acesso às páginas (agora http://wiki.web2py.com/Page_name);
  • Algumas mudanças no leiaute;
  • Simplificação de alguns formulários;
  • Incluídas algumas views que não estavam lá;
  • Consertados alguns bugs.

Com a ajuda do Massimo Di Pierro - criador do web2py -, migramos a antiga wiki para essa nova aplicação para meu servidor, isso nos trará um pouco mais de flexibilidade pra atualizar quando surgirem versões novas.

Agora a wiki está no endereço http://wiki.web2py.com/ (em vez de http://www.web2py.com/wiki/).

Alguns planos futuros:

  • Mover as páginas do AlterEgo (atual FAQ do web2py) para a wiki e criar uma página FAQ na wiki, listando as perguntas mais frequentes;
  • Adicionar mais funcionalidades que outras wiki possuem e essa aplicação ainda não;
  • Melhorar a usabilidade;
  • Mover o projeto para o BitBucket.

Se você gostaria de contribuir com o desenvolvimento dessa aplicação ou utilizá-la em seu site, baixe o código-fonte no projeto web2py-wiki no Launchpad.

Se você tem ideias de novas funcionalidades, quer reportar bugs ou tratar qualquer outro assunto relacionado a essa aplicação, por favor entre em contato.

E agora cabe a nós, usuários do web2py, contribuir com o projeto de documentação do framework! Basta cada um enviar o que para a wiki do web2py. :-)

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

domingo, 20 de setembro de 2009

Palestra sobre web2py no SERPRO-RJ

Eu já tinha comentado aqui no blog que iria em vários eventos em setembro. Fui, palestrei em alguns e acabei de enviar pro Videolog.tv o vídeo de minha palestra sobre web2py no Fórum de Tecnologia em Software Livre do SERPRO-RJ - o evento aconteceu de 15 a 17 de setembro, e minha palestra foi no dia 16.

A palestra é voltada ao público iniciante: quem ainda não utiliza framework para desenvolvimento Web (usando Python) e quem ainda não conhece o web2py.

O vídeo está disponível para download: download em OGV da palestra sobre web2py, por Álvaro Justen - Turicas.

Visualize também o vídeo no Videolog.tv:

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

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

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

sexta-feira, 3 de julho de 2009

Palestra sobre web2py no FISL 10

Na semana passada estive, juntamente com a equipe da Peta5 e da PythOnRio, no 10o Fórum Internacional de Software Livre - FISL 10.

O evento foi bem legal, contando até com a presença do Presidente da República Luís Inácio Lula da Silva.

No FISL, junstamente com Douglas Soares de Andrade, palestrei sobre o framework para desenvolvimento Web web2py, que é desenvolvido em Python (claro! ;-).

Usamos web2py na Peta5 há algum tempo para desenvolvimento de nossas soluções em Telefonia IP e Redes em malha sem fio, que são gerenciáveis via Web e há algum tempo sou desenvolvedor do web2py, inclusive estamos contratando um desenvolvedor Web para desenvolver com web2py.

Acabei falando também nas palestras-relâmpago da Associção Python Brasil sobre o web2py - em 5 minutos! As palestras-relâmpago foram bastante dinâmicas e divertidas.

As palestras do 10o Fórum Internacional de Software Livre - FISL 10 foram transmitidas ao vivo pela TV Software Livre, porém ainda não estão disponíveis para download. Por enquanto, vocês podem baixar os slides da palestra sobre web2py.

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

sexta-feira, 26 de junho de 2009

FISL10.0: Palestra web2py

Palestrarei, juntamente com o Douglas Soares, no FISL 10.0 - Fórum Internacional de Software Livre, por intermédio da Associação Python Brasil, sobre o web2py.

A palestra acontecerá amanhã, sábado, às 9h (acordem cedo! ;-) na sala 41C.

Para quem não conhece, o web2py é um framework para desenvolvimento Web criado por Massimo di Pierro, desenvolvido na linguagem de programação Python.

Para quem quiser saber mais, esteja amanhã na palestra! :-)

Atenção: a palestra, anteriormente possuía horário às 16h (na mesma sala) - esse é o horário que foi impresso na programação, porém precisou ser alterada. Para os que querem conferir a programação mais recente do evento, visitem a página de programação do FISL.

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