Python e Django na Globo.com

  • 8,259 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
8,259
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
125
Comments
0
Likes
13

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 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
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 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. Sobre a Globo.com
  • 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. Globo.com hoje
  • 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. Antes do Python
  • 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. Python
  • 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ódigoclass 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$ pythonPython 2.6.1 (r261:67515, Aug 2 2010, 20:10:18)[GCC 4.2.1 (Apple Inc. build 5646)] on darwinType "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__.pyfrom 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. Django
  • 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)
  • 34. Lições aprendidas
  • 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. Hands On
  • 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çãoNew python executable in env/bin/pythonInstalling 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 djangoInstalling 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 755Successfully installed djangoCleaning 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