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

Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumSandy Maciel
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaAdriano Teixeira de Souza
 
Aula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaAula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaSilvia Dotta
 
Como verificar os níveis de tinta da impressora epson
Como verificar os níveis de tinta da impressora epsonComo verificar os níveis de tinta da impressora epson
Como verificar os níveis de tinta da impressora epsonkishinkurayami
 
Best Practices with MURAL
Best Practices with MURALBest Practices with MURAL
Best Practices with MURALMURAL
 
Prova informatica - nivel c
Prova  informatica - nivel cProva  informatica - nivel c
Prova informatica - nivel cLucianoLLC
 
Designing for User Experience (UX) with Atlassian Tools
Designing for User Experience (UX) with Atlassian ToolsDesigning for User Experience (UX) with Atlassian Tools
Designing for User Experience (UX) with Atlassian ToolsAtlassian
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioMarcos Antônio de Souza Silva
 
Aula 01 excel 01
Aula 01 excel 01Aula 01 excel 01
Aula 01 excel 01Denise A.
 
Sessão de formação sobre Microsoft 365 - SharePoint | Onedrive | Teams
Sessão de formação sobre Microsoft 365 - SharePoint | Onedrive | TeamsSessão de formação sobre Microsoft 365 - SharePoint | Onedrive | Teams
Sessão de formação sobre Microsoft 365 - SharePoint | Onedrive | TeamsAgrupamento de Escolas da Batalha
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareRobson Silva Espig
 
ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...
ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...
ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...Eliney Sabino
 
Os principios do game design
Os principios do game designOs principios do game design
Os principios do game designAryel Bargas
 
Aula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema BinárioAula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema BinárioSuzana Viana Mota
 
Apostila Microsoft Office Excel 2016
Apostila Microsoft Office Excel 2016Apostila Microsoft Office Excel 2016
Apostila Microsoft Office Excel 2016Cibele Kanegae
 
Curso Microsoft Excel Specialist
Curso Microsoft Excel Specialist Curso Microsoft Excel Specialist
Curso Microsoft Excel Specialist Vasco Marques
 
Site responsivo vantagens e desvantagens
Site responsivo vantagens e desvantagensSite responsivo vantagens e desvantagens
Site responsivo vantagens e desvantagensMarconi Pacheco
 

Tendances (20)

Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memória
 
Aula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaAula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-Máquina
 
Como verificar os níveis de tinta da impressora epson
Como verificar os níveis de tinta da impressora epsonComo verificar os níveis de tinta da impressora epson
Como verificar os níveis de tinta da impressora epson
 
Best Practices with MURAL
Best Practices with MURALBest Practices with MURAL
Best Practices with MURAL
 
Prova informatica - nivel c
Prova  informatica - nivel cProva  informatica - nivel c
Prova informatica - nivel c
 
Designing for User Experience (UX) with Atlassian Tools
Designing for User Experience (UX) with Atlassian ToolsDesigning for User Experience (UX) with Atlassian Tools
Designing for User Experience (UX) with Atlassian Tools
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprio
 
Aula 01 excel 01
Aula 01 excel 01Aula 01 excel 01
Aula 01 excel 01
 
Programação ev3
Programação ev3Programação ev3
Programação ev3
 
Um pouco sobre sql
Um pouco sobre sqlUm pouco sobre sql
Um pouco sobre sql
 
Sessão de formação sobre Microsoft 365 - SharePoint | Onedrive | Teams
Sessão de formação sobre Microsoft 365 - SharePoint | Onedrive | TeamsSessão de formação sobre Microsoft 365 - SharePoint | Onedrive | Teams
Sessão de formação sobre Microsoft 365 - SharePoint | Onedrive | Teams
 
Modelo de von neumann
Modelo de von neumannModelo de von neumann
Modelo de von neumann
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de Software
 
ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...
ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...
ABORDAGEM DE JOGOS DIGITAIS: ANÁLISE E INVERSÃO DA MECÂNICA NO JOGO ALEX KIDD...
 
Os principios do game design
Os principios do game designOs principios do game design
Os principios do game design
 
Aula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema BinárioAula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema Binário
 
Apostila Microsoft Office Excel 2016
Apostila Microsoft Office Excel 2016Apostila Microsoft Office Excel 2016
Apostila Microsoft Office Excel 2016
 
Curso Microsoft Excel Specialist
Curso Microsoft Excel Specialist Curso Microsoft Excel Specialist
Curso Microsoft Excel Specialist
 
Site responsivo vantagens e desvantagens
Site responsivo vantagens e desvantagensSite responsivo vantagens e desvantagens
Site responsivo vantagens e desvantagens
 

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

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
 

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