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

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
  • 5.
  • 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
  • 8.
  • 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
  • 16.
  • 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
  • 20.
  • 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 classQuadrado(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 Python2.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
  • 28.
  • 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 umrequest 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)
  • 34.
  • 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
  • 37.
  • 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 executablein 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