SlideShare uma empresa Scribd logo
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
Apresentação
• Desenvolvedor web;
• Pythonista há 4 anos;
• matheussl no github;
• Python > Django > Web2py > Flask
segunda-feira, 24 de março de 14
Roteiro
• Python
• Frameworks web
• Fabric
• Estudo de caso
segunda-feira, 24 de março de 14
Pai o que?!
Pyton
Pynton
Phyton
phython
Pithon
Python
segunda-feira, 24 de março de 14
Pai o que?!
Pyton
Pynton
Phyton
phython
Pithon
Python
segunda-feira, 24 de março de 14
Por que Python?
• Linguagem simples e com resultados rápidos.
• Escalável
• Baterias incluídas.
segunda-feira, 24 de março de 14
Baterias incluídas?
import os
print os.path.getsize(__file__), 'bytes'
>>> 50 bytes
segunda-feira, 24 de março de 14
Baterias incluídas?
file = open(__file__)
print file.read()
file.close()
segunda-feira, 24 de março de 14
Só isso?
segunda-feira, 24 de março de 14
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
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
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
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
Quem usa Python?
segunda-feira, 24 de março de 14
segunda-feira, 24 de março de 14
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
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
Quero usar Python na web,
por onde começo?
segunda-feira, 24 de março de 14
Frameworks
• Flask
• Web2py
• Django
segunda-feira, 24 de março de 14
Flask
• Micro-famework;
• Poucas linhas de código;
• Surgiu de uma brincadeira;
segunda-feira, 24 de março de 14
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
Web2py
• Um pouco mais robusto;
• Interface web de desenvolvimento;
• Simples desde a instalação;
• DAL;
segunda-feira, 24 de março de 14
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
Sim, mas como ele pode
agilizar meus projetos?
segunda-feira, 24 de março de 14
Arquitetura
• Model-Template-View (MTV)
• Foco na regra de negócio
• O template é do designer
segunda-feira, 24 de março de 14
Arquitetura
• URL dispatcher, middlewares e handlers são
do framework!
segunda-feira, 24 de março de 14
Arquitetura de uma app
segunda-feira, 24 de março de 14
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
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
Models
• Agora conheceremos um pouco da mágica
do ORM do Django.
segunda-feira, 24 de março de 14
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
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
Views
• Já temos o model “Person”. Agora, como
exibir a lista de pessoas cadastradas?
segunda-feira, 24 de março de 14
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
Dá trabalho pra publicar?
segunda-feira, 24 de março de 14
$> fab production deploy
Só isso? Como?!
segunda-feira, 24 de março de 14
Fabric
Fabric é uma ferramenta que automatiza
tarefas em servidores remotos.
• Deploy;
• Upload/download;
• Qualquer tarefa;
segunda-feira, 24 de março de 14
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
segunda-feira, 24 de março de 14
MeuEstagio.com
segunda-feira, 24 de março de 14
Código sem burocracia!
segunda-feira, 24 de março de 14
Dúvidas?
segunda-feira, 24 de março de 14
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
Anúncio

Mais conteúdo relacionado

Mais procurados (20)

A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laA Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Bruno Rocha
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
Flávio Ribeiro
 
Capturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonCapturando dados com Python - UAI Python
Capturando dados com Python - UAI Python
Álvaro Justen
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
Pedro Valente
 
Libertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livresLibertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livres
Álvaro Justen
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com Python
Marinho Brandão
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
ricobl
 
Introdução a Programação com Python
Introdução a Programação com PythonIntrodução a Programação com Python
Introdução a Programação com Python
Álvaro Justen
 
Aprendi Python, e agora?
Aprendi Python, e agora?Aprendi Python, e agora?
Aprendi Python, e agora?
Julio Cesar Eiras Melanda
 
Canivete python
Canivete pythonCanivete python
Canivete python
Anderson Dantas
 
[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro Justen[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro Justen
Álvaro Justen
 
PUG-SE Institucional
PUG-SE InstitucionalPUG-SE Institucional
PUG-SE Institucional
Rodrigo Amaral
 
Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11
Dorneles Treméa
 
Software Livre versus Open Source
Software Livre versus Open SourceSoftware Livre versus Open Source
Software Livre versus Open Source
Álvaro Justen
 
Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?
Igor Macaubas
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
Douglas Soares de Andrade
 
Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4
Dorneles Treméa
 
Tdd com-python
Tdd com-pythonTdd com-python
Tdd com-python
Bernardo Heynemann
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
FATEC São José dos Campos
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
Marcel Caraciolo
 
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laA Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Bruno Rocha
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
Flávio Ribeiro
 
Capturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonCapturando dados com Python - UAI Python
Capturando dados com Python - UAI Python
Álvaro Justen
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
Pedro Valente
 
Libertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livresLibertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livres
Álvaro Justen
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com Python
Marinho Brandão
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
ricobl
 
Introdução a Programação com Python
Introdução a Programação com PythonIntrodução a Programação com Python
Introdução a Programação com Python
Álvaro Justen
 
[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro Justen[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro Justen
Álvaro Justen
 
Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11
Dorneles Treméa
 
Software Livre versus Open Source
Software Livre versus Open SourceSoftware Livre versus Open Source
Software Livre versus Open Source
Álvaro Justen
 
Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?
Igor Macaubas
 
Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4
Dorneles Treméa
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
Marcel Caraciolo
 

Semelhante a Desbravando a web com python - Matheus Lima (20)

SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
Paulo Cesar Ortins Brito
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
Átila Bezerra
 
Minicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdf
Minicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdfMinicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdf
Minicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdf
edvonaldosantos
 
Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]
Marco Mendes
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
thomasdacosta
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
Marcel Caraciolo
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”
pt_programar
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
Wildtech
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Jerônimo Medina Madruga
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
Mario Guedes
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
profjotamarcosduarte
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
Luciano Ramalho
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo Plone
Fabiano Weimar
 
Apresentacao artigo final
Apresentacao artigo finalApresentacao artigo final
Apresentacao artigo final
Thiago Barros, PSM
 
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Thiago Barros, PSM
 
Apresentação do grupo PHPMS
Apresentação do grupo PHPMSApresentação do grupo PHPMS
Apresentação do grupo PHPMS
Bruno Fernandes "PorKaria"
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
thomasdacosta
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e Memcache
Andre Golvea
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine Learning
Marcelo Oliveira
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
thomasdacosta
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
Átila Bezerra
 
Minicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdf
Minicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdfMinicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdf
Minicurso_AprenziagemDeMaquina_scikit_learn_aula0.pdf
edvonaldosantos
 
Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]
Marco Mendes
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
thomasdacosta
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
Marcel Caraciolo
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”
pt_programar
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
Wildtech
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Jerônimo Medina Madruga
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
Mario Guedes
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
profjotamarcosduarte
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
Luciano Ramalho
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo Plone
Fabiano Weimar
 
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Thiago Barros, PSM
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
thomasdacosta
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e Memcache
Andre Golvea
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine Learning
Marcelo Oliveira
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
thomasdacosta
 
Anúncio

Último (16)

Aula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptxAula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptx
ArturGuia1
 
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptxAC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
Susana Cascais
 
Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...
portodesantacruz80
 
AutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamentalAutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamental
DayaneSoares55
 
Venha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptxVenha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptx
Renato de Oliveira
 
03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML
ssuser426fcf
 
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptxVenha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Renato de Oliveira
 
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptxVenha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Renato de Oliveira
 
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdfA-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
MarioAthayde
 
Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____
IEFP
 
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptxVenha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Renato de Oliveira
 
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptxVenha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Renato de Oliveira
 
Slide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdfSlide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdf
FtGames1
 
Ficha 5.docx____________________________
Ficha 5.docx____________________________Ficha 5.docx____________________________
Ficha 5.docx____________________________
IEFP
 
Introdução a Informática basica conceitos basicos .pptx
Introdução  a Informática basica conceitos basicos .pptxIntrodução  a Informática basica conceitos basicos .pptx
Introdução a Informática basica conceitos basicos .pptx
OrlandoCanchipande1
 
Tabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em DashboardTabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em Dashboard
Hugo Dourado Graçano
 
Aula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptxAula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptx
ArturGuia1
 
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptxAC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
Susana Cascais
 
Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...
portodesantacruz80
 
AutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamentalAutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamental
DayaneSoares55
 
Venha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptxVenha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptx
Renato de Oliveira
 
03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML
ssuser426fcf
 
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptxVenha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Renato de Oliveira
 
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptxVenha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Renato de Oliveira
 
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdfA-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
MarioAthayde
 
Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____
IEFP
 
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptxVenha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Renato de Oliveira
 
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptxVenha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Renato de Oliveira
 
Slide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdfSlide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdf
FtGames1
 
Ficha 5.docx____________________________
Ficha 5.docx____________________________Ficha 5.docx____________________________
Ficha 5.docx____________________________
IEFP
 
Introdução a Informática basica conceitos basicos .pptx
Introdução  a Informática basica conceitos basicos .pptxIntrodução  a Informática basica conceitos basicos .pptx
Introdução a Informática basica conceitos basicos .pptx
OrlandoCanchipande1
 
Tabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em DashboardTabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em Dashboard
Hugo Dourado Graçano
 
Anúncio

Desbravando a web com python - Matheus Lima

  • 1. Matheus Lima github.com/matheussl fb.com/matheeusLimaaa [email protected] Por onde começar? Desbravando a Web com Python segunda-feira, 24 de março de 14
  • 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. Roteiro • Python • Frameworks web • Fabric • Estudo de caso segunda-feira, 24 de março de 14
  • 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. Baterias incluídas? import os print os.path.getsize(__file__), 'bytes' >>> 50 bytes segunda-feira, 24 de março de 14
  • 8. Baterias incluídas? file = open(__file__) print file.read() file.close() segunda-feira, 24 de março de 14
  • 9. Só isso? segunda-feira, 24 de março de 14
  • 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. 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. 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. 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. Quem usa Python? segunda-feira, 24 de março de 14
  • 15. segunda-feira, 24 de março de 14
  • 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. 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. Quero usar Python na web, por onde começo? segunda-feira, 24 de março de 14
  • 19. Frameworks • Flask • Web2py • Django segunda-feira, 24 de março de 14
  • 20. Flask • Micro-famework; • Poucas linhas de código; • Surgiu de uma brincadeira; segunda-feira, 24 de março de 14
  • 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. Web2py • Um pouco mais robusto; • Interface web de desenvolvimento; • Simples desde a instalação; • DAL; segunda-feira, 24 de março de 14
  • 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. Sim, mas como ele pode agilizar meus projetos? segunda-feira, 24 de março de 14
  • 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. Arquitetura • URL dispatcher, middlewares e handlers são do framework! segunda-feira, 24 de março de 14
  • 27. Arquitetura de uma app segunda-feira, 24 de março de 14
  • 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. 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. Models • Agora conheceremos um pouco da mágica do ORM do Django. segunda-feira, 24 de março de 14
  • 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. 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. Views • Já temos o model “Person”. Agora, como exibir a lista de pessoas cadastradas? segunda-feira, 24 de março de 14
  • 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. Dá trabalho pra publicar? segunda-feira, 24 de março de 14
  • 36. $> fab production deploy Só isso? Como?! segunda-feira, 24 de março de 14
  • 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. 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. segunda-feira, 24 de março de 14
  • 43. Matheus Lima github.com/matheussl fb.com/matheeusLimaaa [email protected] Por onde começar? Desbravando a Web com Python segunda-feira, 24 de março de 14