Batch
                Escalando um
                 sistema sem
                  “fermento”


                                            @qmx
                                         @scalone
                                     1

terça-feira, 1 de junho de 2010
Batch?



                                    2

terça-feira, 1 de junho de 2010
pão?
                                   3

terça-feira, 1 de junho de 2010
lucro?
                                    4

terça-feira, 1 de junho de 2010
demanda
                                     5

terça-feira, 1 de junho de 2010
mais pão?
                                      6

terça-feira, 1 de junho de 2010
mais lucro?
                                       7

terça-feira, 1 de junho de 2010
mas....



                                     8

terça-feira, 1 de junho de 2010
isso escala?
                                       9

terça-feira, 1 de junho de 2010
NO
terça-feira, 1 de junho de 2010
11

terça-feira, 1 de junho de 2010
#comofaz?
                                      11

terça-feira, 1 de junho de 2010
padoca?
                                     12

terça-feira, 1 de junho de 2010
mais lucro?
                                       13

terça-feira, 1 de junho de 2010
e daí?



                                    14

terça-feira, 1 de junho de 2010
fazer software



                                        15

terça-feira, 1 de junho de 2010
é tão artesanal quanto



                                  16

terça-feira, 1 de junho de 2010
fazer pão



                                      17

terça-feira, 1 de junho de 2010
e daí?
                                    18

terça-feira, 1 de junho de 2010
portal do pão
                                        19

terça-feira, 1 de junho de 2010
ruby, obviamente



                                     20

terça-feira, 1 de junho de 2010
portal do pão




                                        21

terça-feira, 1 de junho de 2010
portal do pão

                    • fotos de pão caseiro




                                             21

terça-feira, 1 de junho de 2010
portal do pão

                    • fotos de pão caseiro
                    • produtos para fazer
                          pão




                                             21

terça-feira, 1 de junho de 2010
portal do pão

                    • fotos de pão caseiro
                    • produtos para fazer
                          pão

                    • receitas de pão




                                             21

terça-feira, 1 de junho de 2010
portal do pão

                    • fotos de pão caseiro
                    • produtos para fazer
                          pão

                    • receitas de pão
                    • comunidade




                                             21

terça-feira, 1 de junho de 2010
portal do pão

                    • fotos de pão caseiro
                    • produtos para fazer
                          pão

                    • receitas de pão
                    • comunidade
                    • pão opensource?


                                             21

terça-feira, 1 de junho de 2010
caiu na rede
                                       22

terça-feira, 1 de junho de 2010
acessos / m




                            volume de acessos
                                     23

terça-feira, 1 de junho de 2010
200


                                  150


                                  100


                                  50


                                   0
                                        10h   12h       14h       16h   18h

                                                    acessos / m




                            volume de acessos
                                                      23

terça-feira, 1 de junho de 2010
200


                                  150


                                  100


                                  50


                                   0
                                          1
                                        10h   12h       14h       16h   18h

                                                    acessos / m




                            volume de acessos
                                                      23

terça-feira, 1 de junho de 2010
200


                                  150


                                  100


                                  50


                                   0
                                          1     1
                                        10h   12h       14h       16h   18h

                                                    acessos / m




                            volume de acessos
                                                      23

terça-feira, 1 de junho de 2010
200


                                  150


                                  100


                                  50


                                   0                       10
                                          1     1
                                        10h   12h       14h       16h   18h

                                                    acessos / m




                            volume de acessos
                                                      23

terça-feira, 1 de junho de 2010
200
                                                                    200

                                  150


                                  100


                                  50


                                   0                       10
                                          1     1
                                        10h   12h       14h       16h     18h

                                                    acessos / m




                            volume de acessos
                                                      23

terça-feira, 1 de junho de 2010
200
                                                                    200

                                  150


                                  100


                                  50


                                   0                       10
                                          1     1                           0
                                        10h   12h       14h       16h     18h

                                                    acessos / m




                            volume de acessos
                                                      23

terça-feira, 1 de junho de 2010
R.I.P.
                                    24

terça-feira, 1 de junho de 2010
soluções!



                                      25

terça-feira, 1 de junho de 2010
problemas de banco?



                                  26

terça-feira, 1 de junho de 2010
problemas de banco?
                                  DBA.current_dba.kill!




                                           26

terça-feira, 1 de junho de 2010
problemas de banco?
                                  DBA.current_dba.kill!
                                    dba = DBA.new




                                           26

terça-feira, 1 de junho de 2010
problemas de banco?
                                  DBA.current_dba.kill!
                                     dba = DBA.new
                                    dba.acts_as_jedi



                                           26

terça-feira, 1 de junho de 2010
problemas de infra?




                                  27

terça-feira, 1 de junho de 2010
problemas de infra?




                          torrar grana pra aliviar consciência
                                           27

terça-feira, 1 de junho de 2010
problemas no código?



                                  28

terça-feira, 1 de junho de 2010
NO
terça-feira, 1 de junho de 2010
architecture fail
                                          30

terça-feira, 1 de junho de 2010
caffeine fail
                                        31

terça-feira, 1 de junho de 2010
no desespero...
                                         32

terça-feira, 1 de junho de 2010
consultoria [A-Z]{3}
                                  33

terça-feira, 1 de junho de 2010
qual era o problema mesmo?


                                              34

terça-feira, 1 de junho de 2010
qual era o problema
                             mesmo?


                                  35

terça-feira, 1 de junho de 2010
investigando o problema
                                  36

terça-feira, 1 de junho de 2010
37

terça-feira, 1 de junho de 2010
upload de imagens?



                                  37

terça-feira, 1 de junho de 2010
imagemagick



                                       38

terça-feira, 1 de junho de 2010
o usuário precisa
                  mesmo ver a imagem
                       na hora?

                                  39

terça-feira, 1 de junho de 2010
NO
terça-feira, 1 de junho de 2010
DJ



                                  41

terça-feira, 1 de junho de 2010
DJ - Vantagens


                    • Excelente documentação e tutoriais
                    • Suporta prioridades
                    • Curva de aprendizado baixa
                    • Múltiplos Workers


                                        42

terça-feira, 1 de junho de 2010
DJ - Desvantagens




                                          43

terça-feira, 1 de junho de 2010
DJ - Desvantagens


                    • Depende de ActiveRecord, mas
                            suporta backend MongoMapper




                                          43

terça-feira, 1 de junho de 2010
DJ - Desvantagens


                    • Depende de ActiveRecord, mas
                            suporta backend MongoMapper
                    • Delayed Job usa UTC, cuidado




                                          43

terça-feira, 1 de junho de 2010
DJ - Desvantagens


                    • Depende de ActiveRecord, mas
                            suporta backend MongoMapper
                    • Delayed Job usa UTC, cuidado
                    • Engessado em tarefas rake


                                          43

terça-feira, 1 de junho de 2010
DJ - Detalhes


                    • sinatra-dj
                    • imcompatível com rails < 2.2
                    • usa daemon ou worker(s)


                                        44

terça-feira, 1 de junho de 2010
DJ
                                  45

terça-feira, 1 de junho de 2010
DJ
                                  46

terça-feira, 1 de junho de 2010
resolvendo o
                                    problema


                                       47

terça-feira, 1 de junho de 2010
delayed_paperclip!
                                  48

terça-feira, 1 de junho de 2010
delayed_paperclip
                                     49

terça-feira, 1 de junho de 2010
upload de vídeo?



                                         50

terça-feira, 1 de junho de 2010
o usuário precisa
                       esperar até o fim da
                           conversão?

                                  51

terça-feira, 1 de junho de 2010
NO
terça-feira, 1 de junho de 2010
BJ



                                  53

terça-feira, 1 de junho de 2010
BJ - Vantagens




                                        54

terça-feira, 1 de junho de 2010
BJ - Vantagens
                    • Simples e Robusta




                                        54

terça-feira, 1 de junho de 2010
BJ - Vantagens
                    • Simples e Robusta
                    • Instalação fácil




                                         54

terça-feira, 1 de junho de 2010
BJ - Vantagens
                    • Simples e Robusta
                    • Instalação fácil
                    • Curva de aprendizado baixa




                                         54

terça-feira, 1 de junho de 2010
BJ - Vantagens
                    • Simples e Robusta
                    • Instalação fácil
                    • Curva de aprendizado baixa
                    • Ambiente de execução no nível do SO
                            (syscall)




                                         54

terça-feira, 1 de junho de 2010
BJ - Vantagens
                    • Simples e Robusta
                    • Instalação fácil
                    • Curva de aprendizado baixa
                    • Ambiente de execução no nível do SO
                            (syscall)

                    • Suporta níveis de prioridade


                                         54

terça-feira, 1 de junho de 2010
BJ - Vantagens
                    • Simples e Robusta
                    • Instalação fácil
                    • Curva de aprendizado baixa
                    • Ambiente de execução no nível do SO
                            (syscall)

                    • Suporta níveis de prioridade
                    • Roda no windows, acredite!
                                         54

terça-feira, 1 de junho de 2010
BJ - Desvantagens




                                          55

terça-feira, 1 de junho de 2010
BJ - Desvantagens


                    • Execução serial




                                          55

terça-feira, 1 de junho de 2010
BJ - Desvantagens


                    • Execução serial
                    • Dependente de ActiveRecord




                                          55

terça-feira, 1 de junho de 2010
BJ - Desvantagens


                    • Execução serial
                    • Dependente de ActiveRecord
                    • Documentação, que documentação?


                                          55

terça-feira, 1 de junho de 2010
BJ
                                  56

terça-feira, 1 de junho de 2010
resolvendo o
                                    problema


                                       57

terça-feira, 1 de junho de 2010
BJ
                                  58

terça-feira, 1 de junho de 2010
fácil, não?



                                       59

terça-feira, 1 de junho de 2010
aquele relatório
                                      insano
                                      #medo

                                         60

terça-feira, 1 de junho de 2010
precisa ser “online”?



                                  61

terça-feira, 1 de junho de 2010
NO
terça-feira, 1 de junho de 2010
resque
                 dj on steroids




                                   63

terça-feira, 1 de junho de 2010
resque


                    • persistente
                    • interface de administração
                    • rápido!!!


                                      64

terça-feira, 1 de junho de 2010
resque-web
                                      65

terça-feira, 1 de junho de 2010
let’s batch!



                                       66

terça-feira, 1 de junho de 2010
e daí?



                                    67

terça-feira, 1 de junho de 2010
feedback

                    • ajax
                    • email
                    • impedir de agendar diversas vezes a
                            mesma tarefa
                    • comet / websockets

                                           68

terça-feira, 1 de junho de 2010
monitoramento
                                    porque, afinal, ...




                                            69

terça-feira, 1 de junho de 2010
...se não cuidar...
                                           70

terça-feira, 1 de junho de 2010
...já viu né...
                                         71

terça-feira, 1 de junho de 2010
Monitoramento


                    • Monit
                    • God
                    • Munin


                                        72

terça-feira, 1 de junho de 2010
cases



                    • AutoSEG
                    • github



                                    73

terça-feira, 1 de junho de 2010
obrigado!
                             @qmx => http://qmx.me
                      @scalone => http://twitter.com/scalone




                                        74

terça-feira, 1 de junho de 2010
Fotos

                                                                                      Thanks creative commons!
                      http://www.flickr.com/photos/akshaydavis/186598700/sizes/o/
                      http://www.flickr.com/photos/snidely7/4374153874/sizes/o/
                      http://www.flickr.com/photos/clocky/2660785933/sizes/o/
                      http://hrblogatresearchvoice.files.wordpress.com/2009/05/borat1.jpg
                      http://www.flickr.com/photos/wheatfields/3673314570/sizes/o/
                      http://www.flickr.com/photos/daffyduke/2872752836/sizes/o/in/
                      set-72157607388359306/
                      http://www.flickr.com/photos/daffyduke/2872753092/sizes/o/in/
                      set-72157607388359306/
                      http://www.flickr.com/photos/daffyduke/2871921629/sizes/l/in/
                      set-72157607388359306/
                      http://www.flickr.com/photos/daffyduke/2872749786/sizes/o/in/
                      set-72157607388359306/
                      http://www.flickr.com/photos/kevinkemmerer/2998086908/sizes/l/
                      http://www.flickr.com/photos/bibliona/538164298/sizes/o/in/
                      photostream/
                      http://www.flickr.com/photos/jonmarulanda/3736708170/sizes/o/
                      http://www.flickr.com/photos/dirgon/446839052/sizes/o/
                      http://www.flickr.com/photos/miemo/210258035/sizes/l/
                      http://www.flickr.com/photos/m4tik/47714548/sizes/o/
                      http://www.flickr.com/photos/muehlinghaus/235334412/sizes/l/
                      http://www.flickr.com/photos/abusx/2181644630/sizes/l/
                      http://www.flickr.com/photos/arthur-caranta/2925352521/sizes/l/
                      http://www.flickr.com/photos/paulobrandao/2670585467/sizes/o/




                                                                                           75

terça-feira, 1 de junho de 2010

batch - escalando um sistema sem fermento

  • 1.
    Batch Escalando um sistema sem “fermento” @qmx @scalone 1 terça-feira, 1 de junho de 2010
  • 2.
    Batch? 2 terça-feira, 1 de junho de 2010
  • 3.
    pão? 3 terça-feira, 1 de junho de 2010
  • 4.
    lucro? 4 terça-feira, 1 de junho de 2010
  • 5.
    demanda 5 terça-feira, 1 de junho de 2010
  • 6.
    mais pão? 6 terça-feira, 1 de junho de 2010
  • 7.
    mais lucro? 7 terça-feira, 1 de junho de 2010
  • 8.
    mas.... 8 terça-feira, 1 de junho de 2010
  • 9.
    isso escala? 9 terça-feira, 1 de junho de 2010
  • 10.
    NO terça-feira, 1 dejunho de 2010
  • 11.
    11 terça-feira, 1 dejunho de 2010
  • 12.
    #comofaz? 11 terça-feira, 1 de junho de 2010
  • 13.
    padoca? 12 terça-feira, 1 de junho de 2010
  • 14.
    mais lucro? 13 terça-feira, 1 de junho de 2010
  • 15.
    e daí? 14 terça-feira, 1 de junho de 2010
  • 16.
    fazer software 15 terça-feira, 1 de junho de 2010
  • 17.
    é tão artesanalquanto 16 terça-feira, 1 de junho de 2010
  • 18.
    fazer pão 17 terça-feira, 1 de junho de 2010
  • 19.
    e daí? 18 terça-feira, 1 de junho de 2010
  • 20.
    portal do pão 19 terça-feira, 1 de junho de 2010
  • 21.
    ruby, obviamente 20 terça-feira, 1 de junho de 2010
  • 22.
    portal do pão 21 terça-feira, 1 de junho de 2010
  • 23.
    portal do pão • fotos de pão caseiro 21 terça-feira, 1 de junho de 2010
  • 24.
    portal do pão • fotos de pão caseiro • produtos para fazer pão 21 terça-feira, 1 de junho de 2010
  • 25.
    portal do pão • fotos de pão caseiro • produtos para fazer pão • receitas de pão 21 terça-feira, 1 de junho de 2010
  • 26.
    portal do pão • fotos de pão caseiro • produtos para fazer pão • receitas de pão • comunidade 21 terça-feira, 1 de junho de 2010
  • 27.
    portal do pão • fotos de pão caseiro • produtos para fazer pão • receitas de pão • comunidade • pão opensource? 21 terça-feira, 1 de junho de 2010
  • 28.
    caiu na rede 22 terça-feira, 1 de junho de 2010
  • 29.
    acessos / m volume de acessos 23 terça-feira, 1 de junho de 2010
  • 30.
    200 150 100 50 0 10h 12h 14h 16h 18h acessos / m volume de acessos 23 terça-feira, 1 de junho de 2010
  • 31.
    200 150 100 50 0 1 10h 12h 14h 16h 18h acessos / m volume de acessos 23 terça-feira, 1 de junho de 2010
  • 32.
    200 150 100 50 0 1 1 10h 12h 14h 16h 18h acessos / m volume de acessos 23 terça-feira, 1 de junho de 2010
  • 33.
    200 150 100 50 0 10 1 1 10h 12h 14h 16h 18h acessos / m volume de acessos 23 terça-feira, 1 de junho de 2010
  • 34.
    200 200 150 100 50 0 10 1 1 10h 12h 14h 16h 18h acessos / m volume de acessos 23 terça-feira, 1 de junho de 2010
  • 35.
    200 200 150 100 50 0 10 1 1 0 10h 12h 14h 16h 18h acessos / m volume de acessos 23 terça-feira, 1 de junho de 2010
  • 36.
    R.I.P. 24 terça-feira, 1 de junho de 2010
  • 37.
    soluções! 25 terça-feira, 1 de junho de 2010
  • 38.
    problemas de banco? 26 terça-feira, 1 de junho de 2010
  • 39.
    problemas de banco? DBA.current_dba.kill! 26 terça-feira, 1 de junho de 2010
  • 40.
    problemas de banco? DBA.current_dba.kill! dba = DBA.new 26 terça-feira, 1 de junho de 2010
  • 41.
    problemas de banco? DBA.current_dba.kill! dba = DBA.new dba.acts_as_jedi 26 terça-feira, 1 de junho de 2010
  • 42.
    problemas de infra? 27 terça-feira, 1 de junho de 2010
  • 43.
    problemas de infra? torrar grana pra aliviar consciência 27 terça-feira, 1 de junho de 2010
  • 44.
    problemas no código? 28 terça-feira, 1 de junho de 2010
  • 45.
    NO terça-feira, 1 dejunho de 2010
  • 46.
    architecture fail 30 terça-feira, 1 de junho de 2010
  • 47.
    caffeine fail 31 terça-feira, 1 de junho de 2010
  • 48.
    no desespero... 32 terça-feira, 1 de junho de 2010
  • 49.
    consultoria [A-Z]{3} 33 terça-feira, 1 de junho de 2010
  • 50.
    qual era oproblema mesmo? 34 terça-feira, 1 de junho de 2010
  • 51.
    qual era oproblema mesmo? 35 terça-feira, 1 de junho de 2010
  • 52.
    investigando o problema 36 terça-feira, 1 de junho de 2010
  • 53.
    37 terça-feira, 1 dejunho de 2010
  • 54.
    upload de imagens? 37 terça-feira, 1 de junho de 2010
  • 55.
    imagemagick 38 terça-feira, 1 de junho de 2010
  • 56.
    o usuário precisa mesmo ver a imagem na hora? 39 terça-feira, 1 de junho de 2010
  • 57.
    NO terça-feira, 1 dejunho de 2010
  • 58.
    DJ 41 terça-feira, 1 de junho de 2010
  • 59.
    DJ - Vantagens • Excelente documentação e tutoriais • Suporta prioridades • Curva de aprendizado baixa • Múltiplos Workers 42 terça-feira, 1 de junho de 2010
  • 60.
    DJ - Desvantagens 43 terça-feira, 1 de junho de 2010
  • 61.
    DJ - Desvantagens • Depende de ActiveRecord, mas suporta backend MongoMapper 43 terça-feira, 1 de junho de 2010
  • 62.
    DJ - Desvantagens • Depende de ActiveRecord, mas suporta backend MongoMapper • Delayed Job usa UTC, cuidado 43 terça-feira, 1 de junho de 2010
  • 63.
    DJ - Desvantagens • Depende de ActiveRecord, mas suporta backend MongoMapper • Delayed Job usa UTC, cuidado • Engessado em tarefas rake 43 terça-feira, 1 de junho de 2010
  • 64.
    DJ - Detalhes • sinatra-dj • imcompatível com rails < 2.2 • usa daemon ou worker(s) 44 terça-feira, 1 de junho de 2010
  • 65.
    DJ 45 terça-feira, 1 de junho de 2010
  • 66.
    DJ 46 terça-feira, 1 de junho de 2010
  • 67.
    resolvendo o problema 47 terça-feira, 1 de junho de 2010
  • 68.
    delayed_paperclip! 48 terça-feira, 1 de junho de 2010
  • 69.
    delayed_paperclip 49 terça-feira, 1 de junho de 2010
  • 70.
    upload de vídeo? 50 terça-feira, 1 de junho de 2010
  • 71.
    o usuário precisa esperar até o fim da conversão? 51 terça-feira, 1 de junho de 2010
  • 72.
    NO terça-feira, 1 dejunho de 2010
  • 73.
    BJ 53 terça-feira, 1 de junho de 2010
  • 74.
    BJ - Vantagens 54 terça-feira, 1 de junho de 2010
  • 75.
    BJ - Vantagens • Simples e Robusta 54 terça-feira, 1 de junho de 2010
  • 76.
    BJ - Vantagens • Simples e Robusta • Instalação fácil 54 terça-feira, 1 de junho de 2010
  • 77.
    BJ - Vantagens • Simples e Robusta • Instalação fácil • Curva de aprendizado baixa 54 terça-feira, 1 de junho de 2010
  • 78.
    BJ - Vantagens • Simples e Robusta • Instalação fácil • Curva de aprendizado baixa • Ambiente de execução no nível do SO (syscall) 54 terça-feira, 1 de junho de 2010
  • 79.
    BJ - Vantagens • Simples e Robusta • Instalação fácil • Curva de aprendizado baixa • Ambiente de execução no nível do SO (syscall) • Suporta níveis de prioridade 54 terça-feira, 1 de junho de 2010
  • 80.
    BJ - Vantagens • Simples e Robusta • Instalação fácil • Curva de aprendizado baixa • Ambiente de execução no nível do SO (syscall) • Suporta níveis de prioridade • Roda no windows, acredite! 54 terça-feira, 1 de junho de 2010
  • 81.
    BJ - Desvantagens 55 terça-feira, 1 de junho de 2010
  • 82.
    BJ - Desvantagens • Execução serial 55 terça-feira, 1 de junho de 2010
  • 83.
    BJ - Desvantagens • Execução serial • Dependente de ActiveRecord 55 terça-feira, 1 de junho de 2010
  • 84.
    BJ - Desvantagens • Execução serial • Dependente de ActiveRecord • Documentação, que documentação? 55 terça-feira, 1 de junho de 2010
  • 85.
    BJ 56 terça-feira, 1 de junho de 2010
  • 86.
    resolvendo o problema 57 terça-feira, 1 de junho de 2010
  • 87.
    BJ 58 terça-feira, 1 de junho de 2010
  • 88.
    fácil, não? 59 terça-feira, 1 de junho de 2010
  • 89.
    aquele relatório insano #medo 60 terça-feira, 1 de junho de 2010
  • 90.
    precisa ser “online”? 61 terça-feira, 1 de junho de 2010
  • 91.
    NO terça-feira, 1 dejunho de 2010
  • 92.
    resque dj on steroids 63 terça-feira, 1 de junho de 2010
  • 93.
    resque • persistente • interface de administração • rápido!!! 64 terça-feira, 1 de junho de 2010
  • 94.
    resque-web 65 terça-feira, 1 de junho de 2010
  • 95.
    let’s batch! 66 terça-feira, 1 de junho de 2010
  • 96.
    e daí? 67 terça-feira, 1 de junho de 2010
  • 97.
    feedback • ajax • email • impedir de agendar diversas vezes a mesma tarefa • comet / websockets 68 terça-feira, 1 de junho de 2010
  • 98.
    monitoramento porque, afinal, ... 69 terça-feira, 1 de junho de 2010
  • 99.
    ...se não cuidar... 70 terça-feira, 1 de junho de 2010
  • 100.
    ...já viu né... 71 terça-feira, 1 de junho de 2010
  • 101.
    Monitoramento • Monit • God • Munin 72 terça-feira, 1 de junho de 2010
  • 102.
    cases • AutoSEG • github 73 terça-feira, 1 de junho de 2010
  • 103.
    obrigado! @qmx => http://qmx.me @scalone => http://twitter.com/scalone 74 terça-feira, 1 de junho de 2010
  • 104.
    Fotos Thanks creative commons! http://www.flickr.com/photos/akshaydavis/186598700/sizes/o/ http://www.flickr.com/photos/snidely7/4374153874/sizes/o/ http://www.flickr.com/photos/clocky/2660785933/sizes/o/ http://hrblogatresearchvoice.files.wordpress.com/2009/05/borat1.jpg http://www.flickr.com/photos/wheatfields/3673314570/sizes/o/ http://www.flickr.com/photos/daffyduke/2872752836/sizes/o/in/ set-72157607388359306/ http://www.flickr.com/photos/daffyduke/2872753092/sizes/o/in/ set-72157607388359306/ http://www.flickr.com/photos/daffyduke/2871921629/sizes/l/in/ set-72157607388359306/ http://www.flickr.com/photos/daffyduke/2872749786/sizes/o/in/ set-72157607388359306/ http://www.flickr.com/photos/kevinkemmerer/2998086908/sizes/l/ http://www.flickr.com/photos/bibliona/538164298/sizes/o/in/ photostream/ http://www.flickr.com/photos/jonmarulanda/3736708170/sizes/o/ http://www.flickr.com/photos/dirgon/446839052/sizes/o/ http://www.flickr.com/photos/miemo/210258035/sizes/l/ http://www.flickr.com/photos/m4tik/47714548/sizes/o/ http://www.flickr.com/photos/muehlinghaus/235334412/sizes/l/ http://www.flickr.com/photos/abusx/2181644630/sizes/l/ http://www.flickr.com/photos/arthur-caranta/2925352521/sizes/l/ http://www.flickr.com/photos/paulobrandao/2670585467/sizes/o/ 75 terça-feira, 1 de junho de 2010