SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

A cultura da goiaba
A cultura da goiabaA cultura da goiaba
A cultura da goiabaLaura Salles
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAlvaro Viebrantz
 
Origem e importância econômica e classificação botânica do Feijão
Origem e importância econômica e classificação botânica do FeijãoOrigem e importância econômica e classificação botânica do Feijão
Origem e importância econômica e classificação botânica do FeijãoKiller Max
 
Teclas de atalho do eclipse
Teclas de atalho do eclipseTeclas de atalho do eclipse
Teclas de atalho do eclipseTalita Rodrigues
 
Ciclo da Agricultura de Precisão
Ciclo da Agricultura de PrecisãoCiclo da Agricultura de Precisão
Ciclo da Agricultura de Precisãofernandoazevedo1234
 
Fruticultura irrigada
Fruticultura irrigadaFruticultura irrigada
Fruticultura irrigadahelrijesus
 
CANA DE AÇÚCAR Plantio à Colheita
CANA DE AÇÚCAR Plantio à ColheitaCANA DE AÇÚCAR Plantio à Colheita
CANA DE AÇÚCAR Plantio à ColheitaGETA - UFG
 
DS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使うDS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使うSatoshi Togawa
 

Mais procurados (15)

A cultura da goiaba
A cultura da goiabaA cultura da goiaba
A cultura da goiaba
 
Cactos e Suculentas
Cactos e SuculentasCactos e Suculentas
Cactos e Suculentas
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
 
Cultura do coqueiro
Cultura do coqueiroCultura do coqueiro
Cultura do coqueiro
 
Origem e importância econômica e classificação botânica do Feijão
Origem e importância econômica e classificação botânica do FeijãoOrigem e importância econômica e classificação botânica do Feijão
Origem e importância econômica e classificação botânica do Feijão
 
Teclas de atalho do eclipse
Teclas de atalho do eclipseTeclas de atalho do eclipse
Teclas de atalho do eclipse
 
A cultura do_feij_o
A cultura do_feij_oA cultura do_feij_o
A cultura do_feij_o
 
Ciclo da Agricultura de Precisão
Ciclo da Agricultura de PrecisãoCiclo da Agricultura de Precisão
Ciclo da Agricultura de Precisão
 
Agronegocio -texto
Agronegocio  -textoAgronegocio  -texto
Agronegocio -texto
 
Fruticultura irrigada
Fruticultura irrigadaFruticultura irrigada
Fruticultura irrigada
 
CANA DE AÇÚCAR Plantio à Colheita
CANA DE AÇÚCAR Plantio à ColheitaCANA DE AÇÚCAR Plantio à Colheita
CANA DE AÇÚCAR Plantio à Colheita
 
Amor Do Campo
Amor Do CampoAmor Do Campo
Amor Do Campo
 
Soja
SojaSoja
Soja
 
DS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使うDS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使う
 
Plantio Direto de Amendoim
Plantio Direto de AmendoimPlantio Direto de Amendoim
Plantio Direto de Amendoim
 

Semelhante a 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
 
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
 
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
 
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
 

Semelhante a 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
 
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
 
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
 
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
 

Último

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (9)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

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

Notas do Editor

  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