SlideShare une entreprise Scribd logo
1  sur  87
Télécharger pour lire hors ligne
Python gil
 IV Encontro GITEC - 2011


     Ramiro Batista da Luz



         26 Outubro 2011




Ramiro Batista da Luz   Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,
2011.
    Python Ágil - IV Encontro do GITEC - 2011




                    Ramiro Batista da Luz   Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,
2011.
    Python Ágil - IV Encontro do GITEC - 2011
    Ramiro Batista da Luz - ramiroluz@gmail.com




                    Ramiro Batista da Luz   Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,
2011.
    Python Ágil - IV Encontro do GITEC - 2011
    Ramiro Batista da Luz - ramiroluz@gmail.com
    Twitter: @ramiroluz




                    Ramiro Batista da Luz   Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,
2011.
    Python Ágil - IV Encontro do GITEC - 2011
    Ramiro Batista da Luz - ramiroluz@gmail.com
    Twitter: @ramiroluz
    http://www.slideshare.net/ramiroluz/
    pythonagilivengitec




                    Ramiro Batista da Luz   Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,
2011.
    Python Ágil - IV Encontro do GITEC - 2011
    Ramiro Batista da Luz - ramiroluz@gmail.com
    Twitter: @ramiroluz
    http://www.slideshare.net/ramiroluz/
    pythonagilivengitec
    Códigos exemplo:




                    Ramiro Batista da Luz   Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,
2011.
    Python Ágil - IV Encontro do GITEC - 2011
    Ramiro Batista da Luz - ramiroluz@gmail.com
    Twitter: @ramiroluz
    http://www.slideshare.net/ramiroluz/
    pythonagilivengitec
    Códigos exemplo:
        http://www.ramiroluz.eti.br/python-agil/




                    Ramiro Batista da Luz   Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,
2011.
    Python Ágil - IV Encontro do GITEC - 2011
    Ramiro Batista da Luz - ramiroluz@gmail.com
    Twitter: @ramiroluz
    http://www.slideshare.net/ramiroluz/
    pythonagilivengitec
    Códigos exemplo:
        http://www.ramiroluz.eti.br/python-agil/
        http://www.python.org.br/wiki/PythonAgil




                    Ramiro Batista da Luz   Python gil
A avestruz e o gato!

  Veloz X Ágil:




    Fonte: http://va.mu/JK27              Fonte: http://va.mu/JK3C




                  Ramiro Batista da Luz   Python gil
O que é agilidade?

      Capacidade de mudar de direção rapidamente.




                    Ramiro Batista da Luz   Python gil
O que é agilidade?

      Capacidade de mudar de direção rapidamente.
      Habilidade de adaptar-se a mudanças com eficiência.




                    Ramiro Batista da Luz   Python gil
O que é linguagem de programação?

     Sequencia de instruções “transformadas” em programas,
     software aplicativo, sistemas operacionais.




                   Ramiro Batista da Luz   Python gil
O que é linguagem de programação?

     Sequencia de instruções “transformadas” em programas,
     software aplicativo, sistemas operacionais.
     Algumas linguagens: C, C++, Visual Basic, Smalltalk, Haskell,
     Lua e Python.




                    Ramiro Batista da Luz   Python gil
O que é Python?

     Linguagem de programação dinâmica, orientada a objetos,
     simples e prática.




                   Ramiro Batista da Luz   Python gil
O que é Python?

     Linguagem de programação dinâmica, orientada a objetos,
     simples e prática.
     Usada para criar os sistemas do Interlegis.




                     Ramiro Batista da Luz   Python gil
O que é Python?

     Linguagem de programação dinâmica, orientada a objetos,
     simples e prática.
     Usada para criar os sistemas do Interlegis.
     Usada desde a infraestrutura de servidores até a web, passando
     por pesquisas científicas e desenvolvimento de jogos bem como
     linguagem de extenso.




                     Ramiro Batista da Luz   Python gil
O que são metodologias ágeis?

      Metodologia de desenvolvimento.




                    Ramiro Batista da Luz   Python gil
O que são metodologias ágeis?

      Metodologia de desenvolvimento.
      Alta participação do(s) cliente(s).




                       Ramiro Batista da Luz   Python gil
O que são metodologias ágeis?

      Metodologia de desenvolvimento.
      Alta participação do(s) cliente(s).
      Adaptação rápida à mudanças.




                       Ramiro Batista da Luz   Python gil
O que são metodologias ágeis?

      Metodologia de desenvolvimento.
      Alta participação do(s) cliente(s).
      Adaptação rápida à mudanças.
      Software funcionando entregue com grande frequência.




                       Ramiro Batista da Luz   Python gil
O que são metodologias ágeis?

      Metodologia de desenvolvimento.
      Alta participação do(s) cliente(s).
      Adaptação rápida à mudanças.
      Software funcionando entregue com grande frequência.
      Exemplos: Extreme Programming (XP), Scrum, Crystal, Lean,
      Feature Driven Development (FDD), Agile Unified Process (Agile
      UP or AUP), Dynamic Systems Development Method (DSDM).




                       Ramiro Batista da Luz   Python gil
Por que Python Ágil?

      Python é fácil para integrar(Bindings C).




                      Ramiro Batista da Luz   Python gil
Por que Python Ágil?

      Python é fácil para integrar(Bindings C).
      Possui muitas bibliotecas fáceis de aprender.




                      Ramiro Batista da Luz   Python gil
Por que Python Ágil?

      Python é fácil para integrar(Bindings C).
      Possui muitas bibliotecas fáceis de aprender.
      Flexível, se adapta ao ambiente(IronPython, Jython, PyPy).




                      Ramiro Batista da Luz   Python gil
Segurança

     Para mudar, para evoluir.




                     Ramiro Batista da Luz   Python gil
Segurança

     Para mudar, para evoluir.
     Confiabilidade(Testes de integração).




                     Ramiro Batista da Luz   Python gil
Segurança

     Para mudar, para evoluir.
     Confiabilidade(Testes de integração).
     Aceitação de funcionalidades(Testes funcionais).




                     Ramiro Batista da Luz   Python gil
A metodologia XGH - eXtreme Go Horse

     http://va.mu/BcW




                Ramiro Batista da Luz   Python gil
A metodologia XGH - eXtreme Go Horse

     http://va.mu/BcW
       1   Pensou, não é XGH.




                     Ramiro Batista da Luz   Python gil
A metodologia XGH - eXtreme Go Horse

     http://va.mu/BcW
       1   Pensou, não é XGH.
       2   Existem 3 formas de se resolver um problema, a correta, a errada
           e a XGH, que é igual à errada, só que mais rápida.




                      Ramiro Batista da Luz   Python gil
A metodologia XGH - eXtreme Go Horse

     http://va.mu/BcW
       1   Pensou, não é XGH.
       2   Existem 3 formas de se resolver um problema, a correta, a errada
           e a XGH, que é igual à errada, só que mais rápida.
       3   Quanto mais XGH você faz, mais vai precisar fazer.




                      Ramiro Batista da Luz   Python gil
A metodologia XGH - eXtreme Go Horse

     http://va.mu/BcW
       1   Pensou, não é XGH.
       2   Existem 3 formas de se resolver um problema, a correta, a errada
           e a XGH, que é igual à errada, só que mais rápida.
       3   Quanto mais XGH você faz, mais vai precisar fazer.
       4   XGH é totalmente reativo.




                      Ramiro Batista da Luz   Python gil
TDD - Test Driven Development

      http://va.mu/JjxN




                 Ramiro Batista da Luz   Python gil
TDD - Test Driven Development

      http://va.mu/JjxN
         Adicione um teste




                    Ramiro Batista da Luz   Python gil
TDD - Test Driven Development

      http://va.mu/JjxN
         Adicione um teste
         Execute todos os testes e veja se algum deles falha




                    Ramiro Batista da Luz   Python gil
TDD - Test Driven Development

      http://va.mu/JjxN
         Adicione um teste
         Execute todos os testes e veja se algum deles falha
         Escrever código




                    Ramiro Batista da Luz   Python gil
TDD - Test Driven Development

      http://va.mu/JjxN
         Adicione um teste
         Execute todos os testes e veja se algum deles falha
         Escrever código
         Execute os testes automatizados e veja-os executarem com
         sucesso




                    Ramiro Batista da Luz   Python gil
TDD - Test Driven Development

      http://va.mu/JjxN
         Adicione um teste
         Execute todos os testes e veja se algum deles falha
         Escrever código
         Execute os testes automatizados e veja-os executarem com
         sucesso
         Refatorar código




                    Ramiro Batista da Luz   Python gil
TDD - Test Driven Development

      http://va.mu/JjxN
         Adicione um teste
         Execute todos os testes e veja se algum deles falha
         Escrever código
         Execute os testes automatizados e veja-os executarem com
         sucesso
         Refatorar código
         Repita tudo




                    Ramiro Batista da Luz   Python gil
BDD - Behavior Driven Development

      http://va.mu/Jjxa




                 Ramiro Batista da Luz   Python gil
BDD - Behavior Driven Development

      http://va.mu/Jjxa
         Envolver as partes interessadas no processo através de
         Outside-in Development (Desenvolvimento de Fora pra Dentro)




                    Ramiro Batista da Luz   Python gil
BDD - Behavior Driven Development

      http://va.mu/Jjxa
         Envolver as partes interessadas no processo através de
         Outside-in Development (Desenvolvimento de Fora pra Dentro)
         Usar exemplos para descrever o comportamento de uma
         aplicação ou unidades de código




                    Ramiro Batista da Luz   Python gil
BDD - Behavior Driven Development

      http://va.mu/Jjxa
         Envolver as partes interessadas no processo através de
         Outside-in Development (Desenvolvimento de Fora pra Dentro)
         Usar exemplos para descrever o comportamento de uma
         aplicação ou unidades de código
         Automatizar os exemplos para prover um feedback rápido e testes
         de regresso




                    Ramiro Batista da Luz   Python gil
BDD - Behavior Driven Development

      http://va.mu/Jjxa
         Envolver as partes interessadas no processo através de
         Outside-in Development (Desenvolvimento de Fora pra Dentro)
         Usar exemplos para descrever o comportamento de uma
         aplicação ou unidades de código
         Automatizar os exemplos para prover um feedback rápido e testes
         de regresso
         Usar deve (should em inglês) na hora de descrever o
         comportamento de software para ajudar esclarecer
         responsabilidades e permitir que funcionalidades do software
         sejam questionadas




                    Ramiro Batista da Luz   Python gil
BDD - Behavior Driven Development

      http://va.mu/Jjxa
         Envolver as partes interessadas no processo através de
         Outside-in Development (Desenvolvimento de Fora pra Dentro)
         Usar exemplos para descrever o comportamento de uma
         aplicação ou unidades de código
         Automatizar os exemplos para prover um feedback rápido e testes
         de regresso
         Usar deve (should em inglês) na hora de descrever o
         comportamento de software para ajudar esclarecer
         responsabilidades e permitir que funcionalidades do software
         sejam questionadas
         Usar dublês de teste (mocks, stubs, fakes, dummies, spies) para
         auxiliar na colaboração entre módulos e códigos que ainda no
         foram escritos




                    Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py




                    Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
           python-3-patterns-
           idioms/code/PythonDecorators/entry_exit_class.py
           http://va.mu/Jjxq
      Iterators: iteradores.py




                       Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6
      Generators: generators.py




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6
      Generators: generators.py
          http://va.mu/JjyJ




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6
      Generators: generators.py
          http://va.mu/JjyJ
      Compreensão de listas: compreensao_listas.py




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6
      Generators: generators.py
          http://va.mu/JjyJ
      Compreensão de listas: compreensao_listas.py
      Singleton:




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6
      Generators: generators.py
          http://va.mu/JjyJ
      Compreensão de listas: compreensao_listas.py
      Singleton:
          python-3-patterns-idioms/code/Singleton/SingletonPattern.py




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6
      Generators: generators.py
          http://va.mu/JjyJ
      Compreensão de listas: compreensao_listas.py
      Singleton:
          python-3-patterns-idioms/code/Singleton/SingletonPattern.py
      Factory:




                     Ramiro Batista da Luz   Python gil
Padrões de projeto(Design Pattern)

      Decorators: decoradores.py
          python-3-patterns-
          idioms/code/PythonDecorators/entry_exit_class.py
          http://va.mu/Jjxq
      Iterators: iteradores.py
            http://va.mu/Jjx6
      Generators: generators.py
          http://va.mu/JjyJ
      Compreensão de listas: compreensao_listas.py
      Singleton:
          python-3-patterns-idioms/code/Singleton/SingletonPattern.py
      Factory:
          python-3-patterns-
          idioms/code/Factory/shapefact1/ShapeFactory1.py



                     Ramiro Batista da Luz   Python gil
Ferramentas

     PyUnit: http://va.mu/oMf




                Ramiro Batista da Luz   Python gil
Ferramentas

     PyUnit: http://va.mu/oMf
     DocTest: http://va.mu/Jjyb




                Ramiro Batista da Luz   Python gil
Ferramentas

     PyUnit: http://va.mu/oMf
     DocTest: http://va.mu/Jjyb
     Nose+TDaemon:




                 Ramiro Batista da Luz   Python gil
Ferramentas

     PyUnit: http://va.mu/oMf
     DocTest: http://va.mu/Jjyb
     Nose+TDaemon:
         http://va.mu/Jjyh




                Ramiro Batista da Luz   Python gil
Integração Continua(Continuos Integration)

      GetWindmill: http://va.mu/Jjyy




                  Ramiro Batista da Luz   Python gil
Integração Continua(Continuos Integration)

      GetWindmill: http://va.mu/Jjyy
      Martin Fowler, continuos integration: http://va.mu/Jjy2




                    Ramiro Batista da Luz   Python gil
Integração Continua(Continuos Integration)

      GetWindmill: http://va.mu/Jjyy
      Martin Fowler, continuos integration: http://va.mu/Jjy2
      TeamCity: http://va.mu/JjzD




                    Ramiro Batista da Luz   Python gil
Integração Continua(Continuos Integration)

      GetWindmill: http://va.mu/Jjyy
      Martin Fowler, continuos integration: http://va.mu/Jjy2
      TeamCity: http://va.mu/JjzD
      Skink: http://va.mu/Jjzx




                    Ramiro Batista da Luz   Python gil
Integração Continua(Continuos Integration)

      GetWindmill: http://va.mu/Jjyy
      Martin Fowler, continuos integration: http://va.mu/Jjy2
      TeamCity: http://va.mu/JjzD
      Skink: http://va.mu/Jjzx
      Jenkins(Hudson): http://jenkins-ci.org/




                    Ramiro Batista da Luz   Python gil
Demonstração

     Testes Unitários: testes_unitarios.py




                     Ramiro Batista da Luz   Python gil
Demonstração

     Testes Unitários: testes_unitarios.py
     Testes e Documentação(DocTests): doctests.py




                     Ramiro Batista da Luz   Python gil
Demonstração

     Testes Unitários: testes_unitarios.py
     Testes e Documentação(DocTests): doctests.py
     Testes com Django:




                     Ramiro Batista da Luz   Python gil
Demonstração

     Testes Unitários: testes_unitarios.py
     Testes e Documentação(DocTests): doctests.py
     Testes com Django:
          Django sem desculpas: http://va.mu/Jj0L




                     Ramiro Batista da Luz   Python gil
Conclusão

     Mais referências:




                    Ramiro Batista da Luz   Python gil
Conclusão

     Mais referências:
         Osvaldo Santana, TDD com Python: http://va.mu/Jj0f




                    Ramiro Batista da Luz   Python gil
Conclusão

     Mais referências:
         Osvaldo Santana, TDD com Python: http://va.mu/Jj0f
         Rodrigo Alves Vieira, http://va.mu/Jj0s




                    Ramiro Batista da Luz   Python gil
Conclusão

     Mais referências:
         Osvaldo Santana, TDD com Python: http://va.mu/Jj0f
         Rodrigo Alves Vieira, http://va.mu/Jj0s
         Plone app testing: http://va.mu/Jj04




                    Ramiro Batista da Luz   Python gil
Conclusão

     Mais referências:
         Osvaldo Santana, TDD com Python: http://va.mu/Jj0f
         Rodrigo Alves Vieira, http://va.mu/Jj0s
         Plone app testing: http://va.mu/Jj04
         Exemplos de testes com web2py: http://va.mu/Jj1F




                    Ramiro Batista da Luz   Python gil
Conclusão

     Mais referências:
         Osvaldo Santana, TDD com Python: http://va.mu/Jj0f
         Rodrigo Alves Vieira, http://va.mu/Jj0s
         Plone app testing: http://va.mu/Jj04
         Exemplos de testes com web2py: http://va.mu/Jj1F
         Test unitário com web2py: http://va.mu/Jj1T




                    Ramiro Batista da Luz   Python gil
Conclusão

     Mais referências:
         Osvaldo Santana, TDD com Python: http://va.mu/Jj0f
         Rodrigo Alves Vieira, http://va.mu/Jj0s
         Plone app testing: http://va.mu/Jj04
         Exemplos de testes com web2py: http://va.mu/Jj1F
         Test unitário com web2py: http://va.mu/Jj1T
         Test unitário com pylons: http://va.mu/Jj1p




                    Ramiro Batista da Luz   Python gil
Agradecimentos

     Bruce Eckel




                   Ramiro Batista da Luz   Python gil
Agradecimentos

     Bruce Eckel
     Adriano Petrich




                       Ramiro Batista da Luz   Python gil
Agradecimentos

     Bruce Eckel
     Adriano Petrich
     Rodrigo Bernardo Pimentel




                       Ramiro Batista da Luz   Python gil
Agradecimentos

     Bruce Eckel
     Adriano Petrich
     Rodrigo Bernardo Pimentel
     Davi Lima




                       Ramiro Batista da Luz   Python gil
Agradecimentos

     Bruce Eckel
     Adriano Petrich
     Rodrigo Bernardo Pimentel
     Davi Lima
     Angelo Marcondes, Júnior(Ishida), Jean Ferri e comunidade
     Interlegis




                       Ramiro Batista da Luz   Python gil
Contato e perguntas

      e-mail e gtalk: ramiroluz@gmail.com




                     Ramiro Batista da Luz   Python gil
Contato e perguntas

      e-mail e gtalk: ramiroluz@gmail.com
      twitter: @ramiroluz




                      Ramiro Batista da Luz   Python gil
Encerramento

     http://www.python.org.br




               Ramiro Batista da Luz   Python gil
Encerramento

     http://www.python.org.br
     http://associacao.python.org.br




               Ramiro Batista da Luz   Python gil
Encerramento

     http://www.python.org.br
     http://associacao.python.org.br
     http://groups.google.com/group/grupy-pr




               Ramiro Batista da Luz   Python gil

Contenu connexe

Similaire à Python Ágil - IV Encontro do GITEC

Sabores do desenvolvimento web com Python
Sabores do desenvolvimento web com PythonSabores do desenvolvimento web com Python
Sabores do desenvolvimento web com PythonRamiro Luz
 
Por que python? fisl 14 - 2013
Por que python?   fisl 14 - 2013Por que python?   fisl 14 - 2013
Por que python? fisl 14 - 2013Marco Mendes
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quandoGustavo Carvalho
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
O que Python pode fazer e você não sabe
O que Python pode fazer e você não sabeO que Python pode fazer e você não sabe
O que Python pode fazer e você não sabeEric Hideki
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010Luiz Aldabalde
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoBernardo Fontes
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
O canivete suiço de Python
O canivete suiço de PythonO canivete suiço de Python
O canivete suiço de PythonVitor Casadei
 
Por que escolher Python?
Por que escolher Python?Por que escolher Python?
Por que escolher Python?Igor Leroy
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Rudá Moura
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/DjangoÁtila Bezerra
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoOsvaldo Santana Neto
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Jerônimo Medina Madruga
 
MNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana MotaMNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana Motalucianacmota
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyRelsi Maron
 
Plone: O CMS da moda? - Consegi 2013
Plone: O CMS da moda? - Consegi 2013Plone: O CMS da moda? - Consegi 2013
Plone: O CMS da moda? - Consegi 2013Tania Andrea
 

Similaire à Python Ágil - IV Encontro do GITEC (20)

Sabores do desenvolvimento web com Python
Sabores do desenvolvimento web com PythonSabores do desenvolvimento web com Python
Sabores do desenvolvimento web com Python
 
Por que python? fisl 14 - 2013
Por que python?   fisl 14 - 2013Por que python?   fisl 14 - 2013
Por que python? fisl 14 - 2013
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quando
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
O que Python pode fazer e você não sabe
O que Python pode fazer e você não sabeO que Python pode fazer e você não sabe
O que Python pode fazer e você não sabe
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazo
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
O canivete suiço de Python
O canivete suiço de PythonO canivete suiço de Python
O canivete suiço de Python
 
Por que escolher Python?
Por que escolher Python?Por que escolher Python?
Por que escolher Python?
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até Pensamento
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011
 
MNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana MotaMNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana Mota
 
Desenvolvimento web com python e web2py
Desenvolvimento web com python e web2pyDesenvolvimento web com python e web2py
Desenvolvimento web com python e web2py
 
My first app django
My first app djangoMy first app django
My first app django
 
Plone: O CMS da moda? - Consegi 2013
Plone: O CMS da moda? - Consegi 2013Plone: O CMS da moda? - Consegi 2013
Plone: O CMS da moda? - Consegi 2013
 
Programação Python na Iot
Programação Python na IotProgramação Python na Iot
Programação Python na Iot
 

Plus de Ramiro Luz

Institutional Website - the longest project of my life
Institutional Website - the longest project of my lifeInstitutional Website - the longest project of my life
Institutional Website - the longest project of my lifeRamiro Luz
 
Plone Portal, cultural and economic challenges in public organizations
Plone Portal, cultural and economic challenges in public organizationsPlone Portal, cultural and economic challenges in public organizations
Plone Portal, cultural and economic challenges in public organizationsRamiro Luz
 
Portal Modelo - Plone for Parliaments
Portal Modelo - Plone for ParliamentsPortal Modelo - Plone for Parliaments
Portal Modelo - Plone for ParliamentsRamiro Luz
 
Para que serve o Python
Para que serve o PythonPara que serve o Python
Para que serve o PythonRamiro Luz
 
Minerando dados com Python
Minerando dados com PythonMinerando dados com Python
Minerando dados com PythonRamiro Luz
 
Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.Ramiro Luz
 
Workshop de introdução ao python - TADS 2015
Workshop de introdução ao python - TADS 2015Workshop de introdução ao python - TADS 2015
Workshop de introdução ao python - TADS 2015Ramiro Luz
 
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.Ramiro Luz
 
Não se repita - Django Generic Views - FLISOL Curitiba 2015
Não se repita - Django Generic Views - FLISOL Curitiba 2015Não se repita - Django Generic Views - FLISOL Curitiba 2015
Não se repita - Django Generic Views - FLISOL Curitiba 2015Ramiro Luz
 
Criando testes com Plone
Criando testes com PloneCriando testes com Plone
Criando testes com PloneRamiro Luz
 
Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014Ramiro Luz
 
Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?Ramiro Luz
 
Python 3, patterns and indioms
Python 3, patterns and indiomsPython 3, patterns and indioms
Python 3, patterns and indiomsRamiro Luz
 
Dojo de Programação
Dojo de ProgramaçãoDojo de Programação
Dojo de ProgramaçãoRamiro Luz
 
Teaching TDD, the Coding Dojo Style
Teaching TDD, the Coding Dojo StyleTeaching TDD, the Coding Dojo Style
Teaching TDD, the Coding Dojo StyleRamiro Luz
 
Usando Dojos de Programação para o Ensino de TDD
Usando Dojos de Programação para o Ensino de TDDUsando Dojos de Programação para o Ensino de TDD
Usando Dojos de Programação para o Ensino de TDDRamiro Luz
 
Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...
Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...
Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...Ramiro Luz
 
Apresentação resumo de artigo Limiting Factor of TDD adoption
Apresentação resumo de artigo Limiting Factor of TDD adoptionApresentação resumo de artigo Limiting Factor of TDD adoption
Apresentação resumo de artigo Limiting Factor of TDD adoptionRamiro Luz
 
Testes de Unidade para C++
Testes de Unidade para C++Testes de Unidade para C++
Testes de Unidade para C++Ramiro Luz
 

Plus de Ramiro Luz (20)

Institutional Website - the longest project of my life
Institutional Website - the longest project of my lifeInstitutional Website - the longest project of my life
Institutional Website - the longest project of my life
 
Plone Portal, cultural and economic challenges in public organizations
Plone Portal, cultural and economic challenges in public organizationsPlone Portal, cultural and economic challenges in public organizations
Plone Portal, cultural and economic challenges in public organizations
 
Portal Modelo - Plone for Parliaments
Portal Modelo - Plone for ParliamentsPortal Modelo - Plone for Parliaments
Portal Modelo - Plone for Parliaments
 
Para que serve o Python
Para que serve o PythonPara que serve o Python
Para que serve o Python
 
Minerando dados com Python
Minerando dados com PythonMinerando dados com Python
Minerando dados com Python
 
Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.
 
Workshop de introdução ao python - TADS 2015
Workshop de introdução ao python - TADS 2015Workshop de introdução ao python - TADS 2015
Workshop de introdução ao python - TADS 2015
 
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.
 
Não se repita - Django Generic Views - FLISOL Curitiba 2015
Não se repita - Django Generic Views - FLISOL Curitiba 2015Não se repita - Django Generic Views - FLISOL Curitiba 2015
Não se repita - Django Generic Views - FLISOL Curitiba 2015
 
Criando testes com Plone
Criando testes com PloneCriando testes com Plone
Criando testes com Plone
 
Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014
 
Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?
 
Python 3, patterns and indioms
Python 3, patterns and indiomsPython 3, patterns and indioms
Python 3, patterns and indioms
 
Dojo de Programação
Dojo de ProgramaçãoDojo de Programação
Dojo de Programação
 
Teaching TDD, the Coding Dojo Style
Teaching TDD, the Coding Dojo StyleTeaching TDD, the Coding Dojo Style
Teaching TDD, the Coding Dojo Style
 
Usando Dojos de Programação para o Ensino de TDD
Usando Dojos de Programação para o Ensino de TDDUsando Dojos de Programação para o Ensino de TDD
Usando Dojos de Programação para o Ensino de TDD
 
Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...
Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...
Usando Dojos de Programação para o Ensino e Disseminação de Práticas Ágeis: r...
 
Apresentação resumo de artigo Limiting Factor of TDD adoption
Apresentação resumo de artigo Limiting Factor of TDD adoptionApresentação resumo de artigo Limiting Factor of TDD adoption
Apresentação resumo de artigo Limiting Factor of TDD adoption
 
Testes de Unidade para C++
Testes de Unidade para C++Testes de Unidade para C++
Testes de Unidade para C++
 
Map reduce
Map reduceMap reduce
Map reduce
 

Python Ágil - IV Encontro do GITEC

  • 1. Python gil IV Encontro GITEC - 2011 Ramiro Batista da Luz 26 Outubro 2011 Ramiro Batista da Luz Python gil
  • 2. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz Python gil
  • 3. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Ramiro Batista da Luz Python gil
  • 4. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz Ramiro Batista da Luz Python gil
  • 5. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Ramiro Batista da Luz Python gil
  • 6. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Códigos exemplo: Ramiro Batista da Luz Python gil
  • 7. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Códigos exemplo: http://www.ramiroluz.eti.br/python-agil/ Ramiro Batista da Luz Python gil
  • 8. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Códigos exemplo: http://www.ramiroluz.eti.br/python-agil/ http://www.python.org.br/wiki/PythonAgil Ramiro Batista da Luz Python gil
  • 9. A avestruz e o gato! Veloz X Ágil: Fonte: http://va.mu/JK27 Fonte: http://va.mu/JK3C Ramiro Batista da Luz Python gil
  • 10. O que é agilidade? Capacidade de mudar de direção rapidamente. Ramiro Batista da Luz Python gil
  • 11. O que é agilidade? Capacidade de mudar de direção rapidamente. Habilidade de adaptar-se a mudanças com eficiência. Ramiro Batista da Luz Python gil
  • 12. O que é linguagem de programação? Sequencia de instruções “transformadas” em programas, software aplicativo, sistemas operacionais. Ramiro Batista da Luz Python gil
  • 13. O que é linguagem de programação? Sequencia de instruções “transformadas” em programas, software aplicativo, sistemas operacionais. Algumas linguagens: C, C++, Visual Basic, Smalltalk, Haskell, Lua e Python. Ramiro Batista da Luz Python gil
  • 14. O que é Python? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Ramiro Batista da Luz Python gil
  • 15. O que é Python? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Usada para criar os sistemas do Interlegis. Ramiro Batista da Luz Python gil
  • 16. O que é Python? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Usada para criar os sistemas do Interlegis. Usada desde a infraestrutura de servidores até a web, passando por pesquisas científicas e desenvolvimento de jogos bem como linguagem de extenso. Ramiro Batista da Luz Python gil
  • 17. O que são metodologias ágeis? Metodologia de desenvolvimento. Ramiro Batista da Luz Python gil
  • 18. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Ramiro Batista da Luz Python gil
  • 19. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Adaptação rápida à mudanças. Ramiro Batista da Luz Python gil
  • 20. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Adaptação rápida à mudanças. Software funcionando entregue com grande frequência. Ramiro Batista da Luz Python gil
  • 21. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Adaptação rápida à mudanças. Software funcionando entregue com grande frequência. Exemplos: Extreme Programming (XP), Scrum, Crystal, Lean, Feature Driven Development (FDD), Agile Unified Process (Agile UP or AUP), Dynamic Systems Development Method (DSDM). Ramiro Batista da Luz Python gil
  • 22. Por que Python Ágil? Python é fácil para integrar(Bindings C). Ramiro Batista da Luz Python gil
  • 23. Por que Python Ágil? Python é fácil para integrar(Bindings C). Possui muitas bibliotecas fáceis de aprender. Ramiro Batista da Luz Python gil
  • 24. Por que Python Ágil? Python é fácil para integrar(Bindings C). Possui muitas bibliotecas fáceis de aprender. Flexível, se adapta ao ambiente(IronPython, Jython, PyPy). Ramiro Batista da Luz Python gil
  • 25. Segurança Para mudar, para evoluir. Ramiro Batista da Luz Python gil
  • 26. Segurança Para mudar, para evoluir. Confiabilidade(Testes de integração). Ramiro Batista da Luz Python gil
  • 27. Segurança Para mudar, para evoluir. Confiabilidade(Testes de integração). Aceitação de funcionalidades(Testes funcionais). Ramiro Batista da Luz Python gil
  • 28. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW Ramiro Batista da Luz Python gil
  • 29. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 1 Pensou, não é XGH. Ramiro Batista da Luz Python gil
  • 30. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 1 Pensou, não é XGH. 2 Existem 3 formas de se resolver um problema, a correta, a errada e a XGH, que é igual à errada, só que mais rápida. Ramiro Batista da Luz Python gil
  • 31. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 1 Pensou, não é XGH. 2 Existem 3 formas de se resolver um problema, a correta, a errada e a XGH, que é igual à errada, só que mais rápida. 3 Quanto mais XGH você faz, mais vai precisar fazer. Ramiro Batista da Luz Python gil
  • 32. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 1 Pensou, não é XGH. 2 Existem 3 formas de se resolver um problema, a correta, a errada e a XGH, que é igual à errada, só que mais rápida. 3 Quanto mais XGH você faz, mais vai precisar fazer. 4 XGH é totalmente reativo. Ramiro Batista da Luz Python gil
  • 33. TDD - Test Driven Development http://va.mu/JjxN Ramiro Batista da Luz Python gil
  • 34. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Ramiro Batista da Luz Python gil
  • 35. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Ramiro Batista da Luz Python gil
  • 36. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Ramiro Batista da Luz Python gil
  • 37. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Execute os testes automatizados e veja-os executarem com sucesso Ramiro Batista da Luz Python gil
  • 38. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Execute os testes automatizados e veja-os executarem com sucesso Refatorar código Ramiro Batista da Luz Python gil
  • 39. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Execute os testes automatizados e veja-os executarem com sucesso Refatorar código Repita tudo Ramiro Batista da Luz Python gil
  • 40. BDD - Behavior Driven Development http://va.mu/Jjxa Ramiro Batista da Luz Python gil
  • 41. BDD - Behavior Driven Development http://va.mu/Jjxa Envolver as partes interessadas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro) Ramiro Batista da Luz Python gil
  • 42. BDD - Behavior Driven Development http://va.mu/Jjxa Envolver as partes interessadas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro) Usar exemplos para descrever o comportamento de uma aplicação ou unidades de código Ramiro Batista da Luz Python gil
  • 43. BDD - Behavior Driven Development http://va.mu/Jjxa Envolver as partes interessadas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro) Usar exemplos para descrever o comportamento de uma aplicação ou unidades de código Automatizar os exemplos para prover um feedback rápido e testes de regresso Ramiro Batista da Luz Python gil
  • 44. BDD - Behavior Driven Development http://va.mu/Jjxa Envolver as partes interessadas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro) Usar exemplos para descrever o comportamento de uma aplicação ou unidades de código Automatizar os exemplos para prover um feedback rápido e testes de regresso Usar deve (should em inglês) na hora de descrever o comportamento de software para ajudar esclarecer responsabilidades e permitir que funcionalidades do software sejam questionadas Ramiro Batista da Luz Python gil
  • 45. BDD - Behavior Driven Development http://va.mu/Jjxa Envolver as partes interessadas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro) Usar exemplos para descrever o comportamento de uma aplicação ou unidades de código Automatizar os exemplos para prover um feedback rápido e testes de regresso Usar deve (should em inglês) na hora de descrever o comportamento de software para ajudar esclarecer responsabilidades e permitir que funcionalidades do software sejam questionadas Usar dublês de teste (mocks, stubs, fakes, dummies, spies) para auxiliar na colaboração entre módulos e códigos que ainda no foram escritos Ramiro Batista da Luz Python gil
  • 46. Padrões de projeto(Design Pattern) Decorators: decoradores.py Ramiro Batista da Luz Python gil
  • 47. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py Ramiro Batista da Luz Python gil
  • 48. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Ramiro Batista da Luz Python gil
  • 49. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py Ramiro Batista da Luz Python gil
  • 50. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Ramiro Batista da Luz Python gil
  • 51. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py Ramiro Batista da Luz Python gil
  • 52. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Ramiro Batista da Luz Python gil
  • 53. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Ramiro Batista da Luz Python gil
  • 54. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Singleton: Ramiro Batista da Luz Python gil
  • 55. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Singleton: python-3-patterns-idioms/code/Singleton/SingletonPattern.py Ramiro Batista da Luz Python gil
  • 56. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Singleton: python-3-patterns-idioms/code/Singleton/SingletonPattern.py Factory: Ramiro Batista da Luz Python gil
  • 57. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Singleton: python-3-patterns-idioms/code/Singleton/SingletonPattern.py Factory: python-3-patterns- idioms/code/Factory/shapefact1/ShapeFactory1.py Ramiro Batista da Luz Python gil
  • 58. Ferramentas PyUnit: http://va.mu/oMf Ramiro Batista da Luz Python gil
  • 59. Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Ramiro Batista da Luz Python gil
  • 60. Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Nose+TDaemon: Ramiro Batista da Luz Python gil
  • 61. Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Nose+TDaemon: http://va.mu/Jjyh Ramiro Batista da Luz Python gil
  • 62. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Ramiro Batista da Luz Python gil
  • 63. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 Ramiro Batista da Luz Python gil
  • 64. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 TeamCity: http://va.mu/JjzD Ramiro Batista da Luz Python gil
  • 65. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 TeamCity: http://va.mu/JjzD Skink: http://va.mu/Jjzx Ramiro Batista da Luz Python gil
  • 66. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 TeamCity: http://va.mu/JjzD Skink: http://va.mu/Jjzx Jenkins(Hudson): http://jenkins-ci.org/ Ramiro Batista da Luz Python gil
  • 67. Demonstração Testes Unitários: testes_unitarios.py Ramiro Batista da Luz Python gil
  • 68. Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Ramiro Batista da Luz Python gil
  • 69. Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Testes com Django: Ramiro Batista da Luz Python gil
  • 70. Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Testes com Django: Django sem desculpas: http://va.mu/Jj0L Ramiro Batista da Luz Python gil
  • 71. Conclusão Mais referências: Ramiro Batista da Luz Python gil
  • 72. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Ramiro Batista da Luz Python gil
  • 73. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Ramiro Batista da Luz Python gil
  • 74. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Ramiro Batista da Luz Python gil
  • 75. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Exemplos de testes com web2py: http://va.mu/Jj1F Ramiro Batista da Luz Python gil
  • 76. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Exemplos de testes com web2py: http://va.mu/Jj1F Test unitário com web2py: http://va.mu/Jj1T Ramiro Batista da Luz Python gil
  • 77. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Exemplos de testes com web2py: http://va.mu/Jj1F Test unitário com web2py: http://va.mu/Jj1T Test unitário com pylons: http://va.mu/Jj1p Ramiro Batista da Luz Python gil
  • 78. Agradecimentos Bruce Eckel Ramiro Batista da Luz Python gil
  • 79. Agradecimentos Bruce Eckel Adriano Petrich Ramiro Batista da Luz Python gil
  • 80. Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Ramiro Batista da Luz Python gil
  • 81. Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Davi Lima Ramiro Batista da Luz Python gil
  • 82. Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Davi Lima Angelo Marcondes, Júnior(Ishida), Jean Ferri e comunidade Interlegis Ramiro Batista da Luz Python gil
  • 83. Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com Ramiro Batista da Luz Python gil
  • 84. Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com twitter: @ramiroluz Ramiro Batista da Luz Python gil
  • 85. Encerramento http://www.python.org.br Ramiro Batista da Luz Python gil
  • 86. Encerramento http://www.python.org.br http://associacao.python.org.br Ramiro Batista da Luz Python gil
  • 87. Encerramento http://www.python.org.br http://associacao.python.org.br http://groups.google.com/group/grupy-pr Ramiro Batista da Luz Python gil