SlideShare a Scribd company logo
1 of 40
globo   python e django
.com    na globo.com
Agenda
‣   Globo.com
‣   Antes e depois do Python
‣   Django
‣   Lições aprendidas
‣   Hands On
Apresentação
‣   Enrico Batista da Luz
‣   Formação
        ‣    Técnico em Informática ( ET - UFPR )

        ‣    Bacharel em Design Gráfico ( UFPR )

        ‣    Especialista em Gestão de TI ( UniFAE )

‣   Contatos
    ‣       @ricobl                      ‣   ricobl.wordpress.com

    ‣       rico.bl@gmail.com            ‣   github.com/ricobl
Apresentação
‣   experiência (>10 anos)
    ‣   agências, portais, software houses
    ‣   flash, perl, asp, php, js, html, css, python, xslt
Sobre a Globo.com
Globo.com
‣   11 anos
‣   Globo preza pela excelência
    ‣   dita tendências em tecnologia, design e conteúdo
    ‣   líder de audiência em vários segmentos
    ‣   na web
        ‣   45 milhões de acessos / dia     ‣   32 mil acessos / minuto

        ‣   1.8 milhões de acessos / hora   ‣   10 milhões de visitantes únicos / mês
Globo.com
‣   5 áreas de desenvolvimento + OGs
‣   metodologias ágeis
‣   20 times com
     ‣   1 scrum master             ‣   1 designer
     ‣   4 devs (server / client)   ‣   1 arquiteto
Globo.com hoje
Globo.com hoje
‣   desenvolvimento orientado a testes
‣   programação em pares
‣   integração contínua
‣   entregas contínuas
    ‣   por sprint (~ 10 dias)
    ‣   por trimestre
Produtos
‣   a maioria usa a plataforma de publicação
    ‣   g1: notícias, telejornais, ego, economia, etc.
    ‣   ge, novelas, bbb, home, entretenimento
    ‣   redeglobo, universal channel
    ‣   uso interno para portais de documentação e
        anúncio de releases
Tecnologias
‣   python / django / tornado
‣   ruby / rails / sinatra
‣   mysql / oracle / mongodb / memcached
‣   php / wordpress
‣   java
Plataformas
‣   publicação
‣   busca & semântica
‣   estatísticas
Plataforma de publicação
‣   Experiência de desenvolvimento
    ‣   o desenvolvedor é o nosso cliente
    ‣   usabilidade de código
    ‣   documentação, screencasts, tech talks
    ‣   evitar quebras, atualizações transparentes
    ‣   conviver com código legado
    ‣   refatorar, cobrir com testes
Busca & semântica
‣   busca global do portal
‣   soluções de busca entre portais
‣   integração com google
‣   otimização de SEO
‣   soluções com semântica
    ‣   conteúdos relacionados inteligentes
    ‣   rápida disponibilização de conteúdo
Estatísticas
‣   estatísticas em tempo real
‣   perfil de comportamento dos usuários
‣   tomada de decisão para os editores
    ‣   o que está “quente” no momento
Antes do Python
Java / vignette
‣   software proprietário
‣   bugs que não podiam ser arrumados
‣   interface seca, nada amigável
‣   falta de dinamismo no desenvolvimento
Arquitetura
‣   arquitetura orientada a serviços
    ‣   complexidade desnecessária
    ‣   lentidão
    ‣   tentativas com rails e com python
‣   problemas de implementação, não das linguagens
Mudança de paradigma
‣   de waterfall para agile
‣   scrum / kanban
‣   testes, integração contínua
‣   linguagens dinâmicas
‣   período sem entregas / timão
Python
Python
‣   nome inspirado na comédia Monty Python
‣   criado por Guido Van Rossum (hoje no Google)
‣   a linguagem que cabe na sua cabeça
‣   você “advinha” algo que funciona
‣   bibliotecas para tudo
‣   código fácil de aprender e naturalmente limpo
Quem usa Python?
‣   google: youtube, groups, gmail
‣   dropbox
‣   nasa
‣   reddit
‣   eve online
‣   ferramentas no Linux
‣   extensões para softwares gráficos e jogos
Exemplos de código
class Quadrado(object):         texto = "string"
    def __init__(self, lado):   numero = 1
        self.largura = lado     nulo = None
        self.altura = lado      booleano = True or False
                                lista = [1, 2, 3]
quadrado = Quadrado(lado=2)     dicionario = {'chave': 'valor'}

def soma(a, b=1):               soma(1)
    return a + b                soma(1, 2)
                                soma(a=1, b=2)
soma = lambda a, b=1: a + b     soma(b=1, a=2)

                                impares = [n for n in lista if n % 2]
Intepretador interativo
$ python

Python 2.6.1 (r261:67515, Aug 2 2010,    20:10:18)
[GCC 4.2.1 (Apple Inc. build 5646)] on   darwin
Type "help", "copyright", "credits" or   "license" for more information.
>>> lista = [1, 2, 3]
>>> impares = [n for n in lista if n %   2]
>>> pares = [n for n in lista if n % 2   == 0]
>>> impares
[1, 3]
>>> pares
[2]
>>>
Estrutura de arquivos
‣   quadrado.py                          ‣   quadrado/__init__.py
from quadrado import Quadrado



‣   quadrilateros/              from quadrilateros.quadrado import Quadrado
                                from quadrilateros.losango import Losango
    ‣   __init__.py
    ‣   quadrado.py
    ‣   losango.py
Ecossistema Python
‣   grande comunidade ativa
‣   fanáticos
‣   testam menos do que deveriam
‣   python foundation, gsoc
‣   associação Python Brasil
    ‣   http://www.pythonbrasil.org.br/

    ‣   Python Brasil 7 em SP (29/9 a 1º/10)
Pacotes Python
‣   python package index (+ de 16 mil pacotes)
    ‣   http://pypi.python.org/pypi

‣   pip (pip installs packages)
$ pip install django
$ pip install git+git://github.com/ricobl/django-quicktag.git
$ pip install -r requirements.txt
Django
Django
‣   djangoproject.com
‣   não é um CMS, é um framework
‣   nome inspirado em um guitarrista de jazz
‣   pattern MVC (ou model - view - template)
‣   DRY: tarefas rotineiras de forma simples
    ‣   banco, rotas, http, forms, templates, testes, usuários, login, L10N, I18N, cache

    ‣   rss, sitemaps, comentários, cruds (admin)
Quem usa Django?
‣   globo.com              ‣   nytimes.com
‣   parana-online.com.br   ‣   addons.mozilla.org
‣   misterape.com          ‣   disqus (comentários)
‣   bandab.pron.com.br     ‣   convore (fórum)
Caminho de um request
                                                 browser



                                                 webserver



                            request middleware             response middleware
     exception middleware




                              url dispatcher



                             view middleware



                                  view
Ecossistema Django
‣   grande comunidade: google groups, irc
        ‣   http://www.djangobrasil.org/

‣   no Brasil
    ‣   muitos vindos do PHP
    ‣   muitos conhecem Django antes do Python
        ‣   (ou antes do HTML / JS)
Apps reutilizáveis
‣   aplicações reutilizáveis
    ‣   registration, facebook, cms, e-commerce, comentários, blogs, busca, file managers

‣   djangopackages.com
‣   github.com/search?q=django
‣   pypi.python.org/pypi (buscar django)
Lições aprendidas
Lições aprendidas
‣   mais gente não entrega mais rápido ou melhor
‣   não espere que a ferramenta faça tudo
‣   o django ajuda mas não é perfeito:
    1. procure um módulo que ajude (avalie opções)
    2. desenvolva a sua solução
    3. ignore o Django, sobrescreva o comportamento
Lições aprendidas
‣   testes não são perda de tempo
‣   dão segurança para experimentar e velocidade
‣   teste o que é importante para o negócio
    ‣   testar demais toma tempo e dificulta manutenção
Hands On
Instalação
$   sudo apt-get install git
$   git clone git://github.com/ricobl/django-handson.git
$   cd django-handson
$   ./install.sh
Pós-instalação
New python executable in env/bin/python
Installing setuptools............done.
Installing pip...............done.
Downloading/unpacking django==1.3
  Downloading Django-1.3.tar.gz (6.5Mb): 6.5Mb downloaded
  Running setup.py egg_info for package django
Installing collected packages: django
  Running setup.py install for django
    changing mode of build/scripts-2.6/django-admin.py from 644 to 755
    changing mode of /Users/enrico.luz/projects/django-handson/env/bin/django-
admin.py to 755
Successfully installed django
Cleaning up...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 1 object(s) from 1 fixture(s)

...
Obrigado!

                            ;)
‣   @ricobl             ‣   ricobl.wordpress.com

‣   rico.bl@gmail.com   ‣   github.com/ricobl

More Related Content

What's hot

Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane FidelixCris Fidelix
 
Inteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – IntroduçãoInteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – IntroduçãoLeonardo Goliatt
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)Gustavo Zimmermann
 
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet TracerCriando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet TracerEdenilton Michael
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 
Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeraçãoDaniel Moura
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Historia das redes de computadores
Historia das redes de computadoresHistoria das redes de computadores
Historia das redes de computadoresAlessandro Fazenda
 
Diagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDiagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDjonathas Cardoso
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01Franklin Matos Correia
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Usabilidade aula-01 Introdução
Usabilidade aula-01 IntroduçãoUsabilidade aula-01 Introdução
Usabilidade aula-01 IntroduçãoAlan Vasconcelos
 

What's hot (20)

Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
 
Inteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – IntroduçãoInteligência Computacional Unidade 01 – Introdução
Inteligência Computacional Unidade 01 – Introdução
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Aula 9 banco de dados
Aula 9   banco de dadosAula 9   banco de dados
Aula 9 banco de dados
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet TracerCriando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
Criando rede WLAN e SERVIDOR DNS E HTTP no Packet Tracer
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Aula gerenciamento de arquivos e pastas
Aula   gerenciamento de arquivos e pastasAula   gerenciamento de arquivos e pastas
Aula gerenciamento de arquivos e pastas
 
Elicitação e Análise
Elicitação e AnáliseElicitação e Análise
Elicitação e Análise
 
Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeração
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Historia das redes de computadores
Historia das redes de computadoresHistoria das redes de computadores
Historia das redes de computadores
 
Diagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDiagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados I
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Usabilidade aula-01 Introdução
Usabilidade aula-01 IntroduçãoUsabilidade aula-01 Introdução
Usabilidade aula-01 Introdução
 

Similar to Python e Django na Globo.com

Big data e globo.com - Uma visão sobre a cultura de dados
Big data e globo.com - Uma visão sobre a cultura de dadosBig data e globo.com - Uma visão sobre a cultura de dados
Big data e globo.com - Uma visão sobre a cultura de dadosRenan Moreira de Oliveira
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web ServicesDorneles Treméa
 
BeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOpsBeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOps4LinuxCursos
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestVictor Hugo Bilouro
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonGrupo de Testes Carioca
 
Zabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensourceZabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensourceFilipe Paternot
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/DjangoÁtila Bezerra
 
Desenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoDesenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoIgor Sobreira
 
José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...
José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...
José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...ParaLivre
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
Desenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certoDesenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certoMarcos Petry
 

Similar to Python e Django na Globo.com (20)

Big data e globo.com - Uma visão sobre a cultura de dados
Big data e globo.com - Uma visão sobre a cultura de dadosBig data e globo.com - Uma visão sobre a cultura de dados
Big data e globo.com - Uma visão sobre a cultura de dados
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
BeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOpsBeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOps
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression Test
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Zabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensourceZabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensource
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Web open source
Web open sourceWeb open source
Web open source
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
 
Big data e a globo.com - 2017
Big data e a globo.com - 2017Big data e a globo.com - 2017
Big data e a globo.com - 2017
 
Desenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoDesenvolvimento web ágil com Django
Desenvolvimento web ágil com Django
 
José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...
José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...
José Roberto: Por que o profissional de Tecnologia da Informação deve conhece...
 
Python-Fenalivre-Imed
Python-Fenalivre-ImedPython-Fenalivre-Imed
Python-Fenalivre-Imed
 
Com vocês, Django!
Com vocês, Django!Com vocês, Django!
Com vocês, Django!
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
Python e Golang - Parte 1
Python e Golang - Parte 1Python e Golang - Parte 1
Python e Golang - Parte 1
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Desenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certoDesenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certo
 

Python e Django na Globo.com

  • 1. globo python e django .com na globo.com
  • 2. Agenda ‣ Globo.com ‣ Antes e depois do Python ‣ Django ‣ Lições aprendidas ‣ Hands On
  • 3. Apresentação ‣ Enrico Batista da Luz ‣ Formação ‣ Técnico em Informática ( ET - UFPR ) ‣ Bacharel em Design Gráfico ( UFPR ) ‣ Especialista em Gestão de TI ( UniFAE ) ‣ Contatos ‣ @ricobl ‣ ricobl.wordpress.com ‣ rico.bl@gmail.com ‣ github.com/ricobl
  • 4. Apresentação ‣ experiência (>10 anos) ‣ agências, portais, software houses ‣ flash, perl, asp, php, js, html, css, python, xslt
  • 6. Globo.com ‣ 11 anos ‣ Globo preza pela excelência ‣ dita tendências em tecnologia, design e conteúdo ‣ líder de audiência em vários segmentos ‣ na web ‣ 45 milhões de acessos / dia ‣ 32 mil acessos / minuto ‣ 1.8 milhões de acessos / hora ‣ 10 milhões de visitantes únicos / mês
  • 7. Globo.com ‣ 5 áreas de desenvolvimento + OGs ‣ metodologias ágeis ‣ 20 times com ‣ 1 scrum master ‣ 1 designer ‣ 4 devs (server / client) ‣ 1 arquiteto
  • 9. Globo.com hoje ‣ desenvolvimento orientado a testes ‣ programação em pares ‣ integração contínua ‣ entregas contínuas ‣ por sprint (~ 10 dias) ‣ por trimestre
  • 10. Produtos ‣ a maioria usa a plataforma de publicação ‣ g1: notícias, telejornais, ego, economia, etc. ‣ ge, novelas, bbb, home, entretenimento ‣ redeglobo, universal channel ‣ uso interno para portais de documentação e anúncio de releases
  • 11. Tecnologias ‣ python / django / tornado ‣ ruby / rails / sinatra ‣ mysql / oracle / mongodb / memcached ‣ php / wordpress ‣ java
  • 12. Plataformas ‣ publicação ‣ busca & semântica ‣ estatísticas
  • 13. Plataforma de publicação ‣ Experiência de desenvolvimento ‣ o desenvolvedor é o nosso cliente ‣ usabilidade de código ‣ documentação, screencasts, tech talks ‣ evitar quebras, atualizações transparentes ‣ conviver com código legado ‣ refatorar, cobrir com testes
  • 14. Busca & semântica ‣ busca global do portal ‣ soluções de busca entre portais ‣ integração com google ‣ otimização de SEO ‣ soluções com semântica ‣ conteúdos relacionados inteligentes ‣ rápida disponibilização de conteúdo
  • 15. Estatísticas ‣ estatísticas em tempo real ‣ perfil de comportamento dos usuários ‣ tomada de decisão para os editores ‣ o que está “quente” no momento
  • 17. Java / vignette ‣ software proprietário ‣ bugs que não podiam ser arrumados ‣ interface seca, nada amigável ‣ falta de dinamismo no desenvolvimento
  • 18. Arquitetura ‣ arquitetura orientada a serviços ‣ complexidade desnecessária ‣ lentidão ‣ tentativas com rails e com python ‣ problemas de implementação, não das linguagens
  • 19. Mudança de paradigma ‣ de waterfall para agile ‣ scrum / kanban ‣ testes, integração contínua ‣ linguagens dinâmicas ‣ período sem entregas / timão
  • 21. Python ‣ nome inspirado na comédia Monty Python ‣ criado por Guido Van Rossum (hoje no Google) ‣ a linguagem que cabe na sua cabeça ‣ você “advinha” algo que funciona ‣ bibliotecas para tudo ‣ código fácil de aprender e naturalmente limpo
  • 22. Quem usa Python? ‣ google: youtube, groups, gmail ‣ dropbox ‣ nasa ‣ reddit ‣ eve online ‣ ferramentas no Linux ‣ extensões para softwares gráficos e jogos
  • 23. Exemplos de código class Quadrado(object): texto = "string" def __init__(self, lado): numero = 1 self.largura = lado nulo = None self.altura = lado booleano = True or False lista = [1, 2, 3] quadrado = Quadrado(lado=2) dicionario = {'chave': 'valor'} def soma(a, b=1): soma(1) return a + b soma(1, 2) soma(a=1, b=2) soma = lambda a, b=1: a + b soma(b=1, a=2) impares = [n for n in lista if n % 2]
  • 24. Intepretador interativo $ python Python 2.6.1 (r261:67515, Aug 2 2010, 20:10:18) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> lista = [1, 2, 3] >>> impares = [n for n in lista if n % 2] >>> pares = [n for n in lista if n % 2 == 0] >>> impares [1, 3] >>> pares [2] >>>
  • 25. Estrutura de arquivos ‣ quadrado.py ‣ quadrado/__init__.py from quadrado import Quadrado ‣ quadrilateros/ from quadrilateros.quadrado import Quadrado from quadrilateros.losango import Losango ‣ __init__.py ‣ quadrado.py ‣ losango.py
  • 26. Ecossistema Python ‣ grande comunidade ativa ‣ fanáticos ‣ testam menos do que deveriam ‣ python foundation, gsoc ‣ associação Python Brasil ‣ http://www.pythonbrasil.org.br/ ‣ Python Brasil 7 em SP (29/9 a 1º/10)
  • 27. Pacotes Python ‣ python package index (+ de 16 mil pacotes) ‣ http://pypi.python.org/pypi ‣ pip (pip installs packages) $ pip install django $ pip install git+git://github.com/ricobl/django-quicktag.git $ pip install -r requirements.txt
  • 29. Django ‣ djangoproject.com ‣ não é um CMS, é um framework ‣ nome inspirado em um guitarrista de jazz ‣ pattern MVC (ou model - view - template) ‣ DRY: tarefas rotineiras de forma simples ‣ banco, rotas, http, forms, templates, testes, usuários, login, L10N, I18N, cache ‣ rss, sitemaps, comentários, cruds (admin)
  • 30. Quem usa Django? ‣ globo.com ‣ nytimes.com ‣ parana-online.com.br ‣ addons.mozilla.org ‣ misterape.com ‣ disqus (comentários) ‣ bandab.pron.com.br ‣ convore (fórum)
  • 31. Caminho de um request browser webserver request middleware response middleware exception middleware url dispatcher view middleware view
  • 32. Ecossistema Django ‣ grande comunidade: google groups, irc ‣ http://www.djangobrasil.org/ ‣ no Brasil ‣ muitos vindos do PHP ‣ muitos conhecem Django antes do Python ‣ (ou antes do HTML / JS)
  • 33. Apps reutilizáveis ‣ aplicações reutilizáveis ‣ registration, facebook, cms, e-commerce, comentários, blogs, busca, file managers ‣ djangopackages.com ‣ github.com/search?q=django ‣ pypi.python.org/pypi (buscar django)
  • 35. Lições aprendidas ‣ mais gente não entrega mais rápido ou melhor ‣ não espere que a ferramenta faça tudo ‣ o django ajuda mas não é perfeito: 1. procure um módulo que ajude (avalie opções) 2. desenvolva a sua solução 3. ignore o Django, sobrescreva o comportamento
  • 36. Lições aprendidas ‣ testes não são perda de tempo ‣ dão segurança para experimentar e velocidade ‣ teste o que é importante para o negócio ‣ testar demais toma tempo e dificulta manutenção
  • 38. Instalação $ sudo apt-get install git $ git clone git://github.com/ricobl/django-handson.git $ cd django-handson $ ./install.sh
  • 39. Pós-instalação New python executable in env/bin/python Installing setuptools............done. Installing pip...............done. Downloading/unpacking django==1.3 Downloading Django-1.3.tar.gz (6.5Mb): 6.5Mb downloaded Running setup.py egg_info for package django Installing collected packages: django Running setup.py install for django changing mode of build/scripts-2.6/django-admin.py from 644 to 755 changing mode of /Users/enrico.luz/projects/django-handson/env/bin/django- admin.py to 755 Successfully installed django Cleaning up... Creating tables ... Installing custom SQL ... Installing indexes ... Installed 1 object(s) from 1 fixture(s) ...
  • 40. Obrigado! ;) ‣ @ricobl ‣ ricobl.wordpress.com ‣ rico.bl@gmail.com ‣ github.com/ricobl

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. request: sessão, autenticação, csrf, resposta em cache, profiling\nviews: banco, forms, templates\nresponse: pós-processamento, compressão, cache\nexception: log, rollback\n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n