SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

広告がうざい
広告がうざい広告がうざい
広告がうざい
Gen Ito
 
Sexualidade e castidade
Sexualidade e castidadeSexualidade e castidade
Sexualidade e castidade
RCCPBJovem
 
ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>
ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>
ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>
Satoru Itabashi
 
기업가정신3.1(90분용)
기업가정신3.1(90분용)기업가정신3.1(90분용)
기업가정신3.1(90분용)
Soojin Shin
 

Tendances (20)

広告がうざい
広告がうざい広告がうざい
広告がうざい
 
【FOSS4G 2016 Hokkaido】Cesiumマニアックス
【FOSS4G 2016 Hokkaido】Cesiumマニアックス【FOSS4G 2016 Hokkaido】Cesiumマニアックス
【FOSS4G 2016 Hokkaido】Cesiumマニアックス
 
Apresentação Grupo Jovem
Apresentação Grupo JovemApresentação Grupo Jovem
Apresentação Grupo Jovem
 
Mídias Sociais na Igreja - Universidade do Discípulo
Mídias Sociais na Igreja - Universidade do DiscípuloMídias Sociais na Igreja - Universidade do Discípulo
Mídias Sociais na Igreja - Universidade do Discípulo
 
WPF MVVM Review
WPF MVVM ReviewWPF MVVM Review
WPF MVVM Review
 
本格的に始めるzsh
本格的に始めるzsh本格的に始めるzsh
本格的に始めるzsh
 
Cloud Computing - Computação em Nuvem
Cloud Computing - Computação em NuvemCloud Computing - Computação em Nuvem
Cloud Computing - Computação em Nuvem
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
 
Sistemas de Informações - Aula 07: Sistemas de Processamento de Transações (SPT)
Sistemas de Informações - Aula 07: Sistemas de Processamento de Transações (SPT)Sistemas de Informações - Aula 07: Sistemas de Processamento de Transações (SPT)
Sistemas de Informações - Aula 07: Sistemas de Processamento de Transações (SPT)
 
Sexualidade e castidade
Sexualidade e castidadeSexualidade e castidade
Sexualidade e castidade
 
Empreendedorismo modulo 3
Empreendedorismo   modulo 3Empreendedorismo   modulo 3
Empreendedorismo modulo 3
 
コミュニケーション戦略を前提にしたOutlookやTeams活用
コミュニケーション戦略を前提にしたOutlookやTeams活用コミュニケーション戦略を前提にしたOutlookやTeams活用
コミュニケーション戦略を前提にしたOutlookやTeams活用
 
Folhas angiospermas
Folhas angiospermasFolhas angiospermas
Folhas angiospermas
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
 
ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>
ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>
ピクト図解® 式 「ビジネスモデル構築力養成研修」 オリジナルテキスト<サンプル版>
 
いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンいまさら学ぶMVVMパターン
いまさら学ぶMVVMパターン
 
Gestão do conhecimento
Gestão do conhecimentoGestão do conhecimento
Gestão do conhecimento
 
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
 
qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所
 
기업가정신3.1(90분용)
기업가정신3.1(90분용)기업가정신3.1(90분용)
기업가정신3.1(90분용)
 

Similaire à Python e Django na Globo.com

Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
Dorneles Treméa
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
Átila Bezerra
 
Desenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certoDesenvolvimento ágil do jeito certo
Desenvolvimento ágil do jeito certo
Marcos Petry
 

Similaire à 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
 

Dernier

Dernier (9)

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

Notes de l'éditeur

  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