Desbravando a web com python - Matheus Lima

632 visualizações

Publicada em

Desbravando a Web com Python. Palestra apresentada no RuPy Sergipe 2014.

Nessa palestra falei um pouco sobre Python e quais frameworks podem nos ajudar nesse desafio.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
632
No SlideShare
0
A partir de incorporações
0
Número de incorporações
9
Ações
Compartilhamentos
0
Downloads
25
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desbravando a web com python - Matheus Lima

  1. 1. Matheus Lima github.com/matheussl fb.com/matheeusLimaaa matheus.se@gmail.com Por onde começar? Desbravando a Web com Python segunda-feira, 24 de março de 14
  2. 2. Apresentação • Desenvolvedor web; • Pythonista há 4 anos; • matheussl no github; • Python > Django > Web2py > Flask segunda-feira, 24 de março de 14
  3. 3. Roteiro • Python • Frameworks web • Fabric • Estudo de caso segunda-feira, 24 de março de 14
  4. 4. Pai o que?! Pyton Pynton Phyton phython Pithon Python segunda-feira, 24 de março de 14
  5. 5. Pai o que?! Pyton Pynton Phyton phython Pithon Python segunda-feira, 24 de março de 14
  6. 6. Por que Python? • Linguagem simples e com resultados rápidos. • Escalável • Baterias incluídas. segunda-feira, 24 de março de 14
  7. 7. Baterias incluídas? import os print os.path.getsize(__file__), 'bytes' >>> 50 bytes segunda-feira, 24 de março de 14
  8. 8. Baterias incluídas? file = open(__file__) print file.read() file.close() segunda-feira, 24 de março de 14
  9. 9. Só isso? segunda-feira, 24 de março de 14
  10. 10. Indo um pouco além... import urllib import json from pprint import pprint url = 'https://graph.facebook.com/matheeusLimaaa' response = urllib.urlopen(url).read() data = json.loads(response) pprint(data) {u'first_name': u'Matheus', u'gender': u'male', u'id': u'100001639854566', u'last_name': u'Lima', u'link': u'http://www.facebook.com/MatheeusLimaaa', u'locale': u'en_US', u'name': u'Matheus Lima', u'username': u'MatheeusLimaaa'} segunda-feira, 24 de março de 14
  11. 11. Um pouco mais... import urllib2 import json # https://developers.facebook.com/tools/explorer graph = 'https://graph.facebook.com/search' token = 'CAACEdEose0cBACMVnp2DQs3NgZCy1GUS0U1JJvaiMAEr1aD4qmJF5DFL1rc5eYT4HQoU fo8UeScUZAdMUu2wNIKa2dAwY48ujEeEO792lmn7SLlmdr2YXZAdzPi5JRutETVRfIbDep ZAEU7XxEHFGPtt8n3AjdsnXQEdvsRDRtVtvJd74M9rAV6oDMuqYgu2N9qYo7lpUgZDZD' def search(text): url = '%s?q=%s&type=post&access_token=%s' % (graph, text, token) response = urllib2.urlopen(url).read() data = json.loads(response.decode('utf-8')) return data['data'] for result in search('RuPy Sergipe'): if 'message' in result: print '%s: %sn' % (result['from']['name'], result['message']) segunda-feira, 24 de março de 14
  12. 12. Resultado Breno Moura: Já fez sua inscrição no RuPy Sergipe? Inscreva-se pelo site oficial: http://rupysergipe.github.io/ site ou pelo eventick: http://eventick.com.br/rupy-sergipe segunda-feira, 24 de março de 14
  13. 13. E o que mais? • Packages • easy_install • pip • Frameworks • Django • Flask • Pyramid • Plone • Deploy • Fabric • Heroku • Webserver • GUnicorn segunda-feira, 24 de março de 14
  14. 14. Quem usa Python? segunda-feira, 24 de março de 14
  15. 15. segunda-feira, 24 de março de 14
  16. 16. O que falam? • “Python é uma das cinco mais importantes linguagens que todo programador deve conhecer” (Bjarne Stroustup, criador do C++) • “[...] nossa filosofia aqui é “Python sempre que pudermos, C++ se necessário”” (Alex Martelli, Líder Técnico, Sistemas de Produção, Google) segunda-feira, 24 de março de 14
  17. 17. O que falam? • “Python é rápido o suficiente para nosso site e nos permite produzir características de fácil manutenção em tempos recordes, com um mínimo de desenvolvedores.” (Cuond Do, Arquiteto de Software,Youtube.com) segunda-feira, 24 de março de 14
  18. 18. Quero usar Python na web, por onde começo? segunda-feira, 24 de março de 14
  19. 19. Frameworks • Flask • Web2py • Django segunda-feira, 24 de março de 14
  20. 20. Flask • Micro-famework; • Poucas linhas de código; • Surgiu de uma brincadeira; segunda-feira, 24 de março de 14
  21. 21. Hello Flask! from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() $ python hello.py * Running on http://127.0.0.1:5000/ segunda-feira, 24 de março de 14
  22. 22. Web2py • Um pouco mais robusto; • Interface web de desenvolvimento; • Simples desde a instalação; • DAL; segunda-feira, 24 de março de 14
  23. 23. Django Django é um framework web de alto nível. • Escrito em Python • Estimula o desenvolvimento rápido e limpo (DjangoProject.com) segunda-feira, 24 de março de 14
  24. 24. Sim, mas como ele pode agilizar meus projetos? segunda-feira, 24 de março de 14
  25. 25. Arquitetura • Model-Template-View (MTV) • Foco na regra de negócio • O template é do designer segunda-feira, 24 de março de 14
  26. 26. Arquitetura • URL dispatcher, middlewares e handlers são do framework! segunda-feira, 24 de março de 14
  27. 27. Arquitetura de uma app segunda-feira, 24 de março de 14
  28. 28. Models • Os models compreendem a camada de domínio da aplicação • Numa abordagem botton-up, os models são feitos primeiro. segunda-feira, 24 de março de 14
  29. 29. Models class Person(models.Model): name = models.CharField(max_length=100) cpf = models.CharField(max_length=11) photo = models.ImageField(uploads_to='person/photo') birth_date = models.DateField(null=True) active = models.BooleanField() segunda-feira, 24 de março de 14
  30. 30. Models • Agora conheceremos um pouco da mágica do ORM do Django. segunda-feira, 24 de março de 14
  31. 31. Models john = Person( name = 'John', cpf = '12345678900', birthday = date(year=1990, month=5, day=28), ) john.save() if john.is_birthday: print 'Congratulations!!' # activate john.activate() john.save() if john.active: print 'active user' else: print 'inactive user' segunda-feira, 24 de março de 14
  32. 32. Views • As views são responsáveis por selecionar os objetos que serão exibidos e executar algumas ações segunda-feira, 24 de março de 14
  33. 33. Views • Já temos o model “Person”. Agora, como exibir a lista de pessoas cadastradas? segunda-feira, 24 de março de 14
  34. 34. Views def person_list(request): persons = Person.objects.all() context = {'perons': persons} return render(request, 'person_list.html', context) segunda-feira, 24 de março de 14
  35. 35. Dá trabalho pra publicar? segunda-feira, 24 de março de 14
  36. 36. $> fab production deploy Só isso? Como?! segunda-feira, 24 de março de 14
  37. 37. Fabric Fabric é uma ferramenta que automatiza tarefas em servidores remotos. • Deploy; • Upload/download; • Qualquer tarefa; segunda-feira, 24 de março de 14
  38. 38. MeuEstagio.com • O site foi reescrito em Django; • Meu novo recorde: 2h • Recorde anterior: 4h (web2py) • Desafio do minicurso! segunda-feira, 24 de março de 14
  39. 39. segunda-feira, 24 de março de 14
  40. 40. MeuEstagio.com segunda-feira, 24 de março de 14
  41. 41. Código sem burocracia! segunda-feira, 24 de março de 14
  42. 42. Dúvidas? segunda-feira, 24 de março de 14
  43. 43. Matheus Lima github.com/matheussl fb.com/matheeusLimaaa matheus.se@gmail.com Por onde começar? Desbravando a Web com Python segunda-feira, 24 de março de 14

×