SlideShare uma empresa Scribd logo
Fun Driven
    Development com Ruby
                                      @tomas_stefano
                             https://github.com/tomas-stefano
                                  http://rubycasts.com.br/



sábado, 9 de julho de 2011
Objetivo


     - VOCÊ IRÁ APRENDER UMA COISA NOVA DE RUBY.
        OU VOCÊ IRÁ APRENDER UMA COISA NOVA.




sábado, 9 de julho de 2011
Era uma vez ...




            OBS.: Tirada de uma apresentação do
                         Ryan Davis
sábado, 9 de julho de 2011
Mesa de trabalho




sábado, 9 de julho de 2011
Lendo o Código




sábado, 9 de julho de 2011
Ninho de Rato




sábado, 9 de julho de 2011
Ficou nervoso ...




sábado, 9 de julho de 2011
Atirou em todo mundo




sábado, 9 de julho de 2011
Foi preso!




sábado, 9 de julho de 2011
SEGUNDA VERSÃO!



                               OU:
sábado, 9 de julho de 2011
Novo trabalho!




sábado, 9 de julho de 2011
Mesa de trabalho




sábado, 9 de julho de 2011
Lendo o Código




sábado, 9 de julho de 2011
Ninho de Rato




sábado, 9 de julho de 2011
Ficou nervoso ...




sábado, 9 de julho de 2011
Seus conhecimentos




sábado, 9 de julho de 2011
Resolveu o problema
                     (um por um)




sábado, 9 de julho de 2011
Mostrou quem
                               manda!




sábado, 9 de julho de 2011
Moral da história




sábado, 9 de julho de 2011
Pessoas vão te
                             incriminar se você
                                machucá-las!


sábado, 9 de julho de 2011
O código não! :)



sábado, 9 de julho de 2011
O que é código legado?
          Muitos dizem: “Todo código, que você não escreveu, é
          legado”.




sábado, 9 de julho de 2011
O que é código legado?
          Muitos dizem: “Todo código, que você não escreveu, é
          legado”.
          Outros dizem: “Todo código, que você não escreveu e
          não possui testes, é legado”.




sábado, 9 de julho de 2011
O que é código legado?
          Muitos dizem: “Todo código, que você não escreveu, é
          legado”.
          Outros dizem: “Todo código, que você não escreveu e
          não possui testes, é legado”.

         Outros pensaram: “Mas até o meu próprio código
         que eu escrevo, que “apenas funciona” vira um legado
         depois de algumas semanas ...”.


sábado, 9 de julho de 2011
Código Legado




sábado, 9 de julho de 2011
O começo é díficil!




sábado, 9 de julho de 2011
Lidando com a
                             Complexidade




sábado, 9 de julho de 2011
Alguma gem de Testes




sábado, 9 de julho de 2011
RSpec
                             chunky_bacon.should be_awesome




sábado, 9 de julho de 2011
Shoulda

                             chunky_bacon_should_be :awesome




sábado, 9 de julho de 2011
Test::Unit

                             assert_equal(:awesome, chunky_bacon)




sábado, 9 de julho de 2011
Fake Objects



sábado, 9 de julho de 2011
Mocha
                             bacon = stub(:awesome => true)
                             bacon.expects(:taste).returns('good')




sábado, 9 de julho de 2011
Flexmock
                bacon = flexmock(:awesome => true)
                bacon.should_receive(:taste).and_return('good')




sábado, 9 de julho de 2011
RSpec Mocks e Stubs
                bacon.stub!(:awesome).and_return(true)
                bacon.should_receive(:taste).and_return('good')




sábado, 9 de julho de 2011
RR
                             stub(bacon).awesome{true}
                             stub(bacon).taste{'good'}




sábado, 9 de julho de 2011
Métricas




sábado, 9 de julho de 2011
Flog

                     • 1 a 10: Parabéns!
                     • 11 a 20: Não tão ruim assim ...
                     • 21 a 40: Talvez precise refatorar
                     • 41 a 60: Escreva de novo
                     • 61 a 100: WTF are you trying to do?

sábado, 9 de julho de 2011
Flog

                     • 1 a 10: Parabéns!
                     • 11 a 20: Não tão ruim assim ...
                     • 21 a 40: Talvez precise refatorar
                     • 41 a 60: Escreva de novo
                     • 61 a 100: WTF are you trying to do?

sábado, 9 de julho de 2011
Flog

                     • 1 a 10: Parabéns!
                     • 11 a 20: Não tão ruim assim ...
                     • 21 a 40: Talvez precise refatorar
                     • 41 a 60: Escreva de novo
                     • 61 a 100: WTF are you trying to do?

sábado, 9 de julho de 2011
Flog

                     • 1 a 10: Parabéns!
                     • 11 a 20: Não tão ruim assim ...
                     • 21 a 40: Talvez precise refatorar
                     • 41 a 60: Escreva de novo
                     • 61 a 100: WTF are you trying to do?

sábado, 9 de julho de 2011
Flog

                     • 1 a 10: Parabéns!
                     • 11 a 20: Não tão ruim assim ...
                     • 21 a 40: Talvez precise refatorar
                     • 41 a 60: Escreva de novo
                     • 61 a 100: o.O - WTF are you trying to do?

sábado, 9 de julho de 2011
Flog




sábado, 9 de julho de 2011
Flay




sábado, 9 de julho de 2011
SimpleCov
                             Cobertura de Código:

                              require 'simplecov'
                              SimpleCov.start




sábado, 9 de julho de 2011
Simplecov




sábado, 9 de julho de 2011
Simplecov




sábado, 9 de julho de 2011
Roodi
                             Problemas de design no seu código




sábado, 9 de julho de 2011
Repita Comigo


                     • “Medir e analisar meu código, serve para
                             conhecer o meu próprio código.” Brian
                             Liles (TAFT - Test all the F* time)




sábado, 9 de julho de 2011
Testes de Aceitação
                                          Steak




sábado, 9 de julho de 2011
Cucumber
                             Funcionalidade: Relatorio Completo
                              Sendo cliente
                              Quero o Relatório Completo com os dados dos meus clientes
                              Para uma Analise de crédito de uma ou várias empresas

                              Cenário: Identificação da Empresa Filial
                               Dado que estou consultando um CNPJ de uma empresa "filial"
                               Quando eu aperto "Consultar em uma Página"
                               Então deverá trazer os dados da "matriz" vindos da receita federal
                               E deverá trazer os dados da "filial" vindos da receita federal




sábado, 9 de julho de 2011
Steak
                             feature "Articles", %q{
                               In order to have an awesome blog
                              As an author
                               I want to create and manage articles
                             } do

                              scenario "Article index" do
                               Article.create!(:title => 'One')
                               Article.create!(:title => 'Two')
                               visit article_index
                               page.should have_content('One')
                               page.should have_content('Two')
                              end
                             end


sábado, 9 de julho de 2011
Benchmark

    class Integer
      def simple_prime?
       (2..Math.sqrt(self).floor).all? {|i| (self % i).nonzero? }
      end
    end




sábado, 9 de julho de 2011
Benchmark
                             require "benchmark"
                             Benchmark.benchmark do |bench|
                              bench.report("Simple Prime") do
                                (2..10_000).each { |i| i.simple_prime? }
                              end
                              bench.report('Stdlib') do
                                (2..10_000).each { |i| i.prime? }
                              end
                             end




sábado, 9 de julho de 2011
Benchmark
             CPU Time SysCpu   User+Sys ElapsedTime
Simple Prime 0.130000 0.000000 0.130000 ( 0.133931)
Stdlib       0.230000 0.000000 0.230000 ( 0.230975)




sábado, 9 de julho de 2011
Profiler
                             require 'profile'
                             (2..10_000).each { |i| i.simple_prime? }




sábado, 9 de julho de 2011
Benchmark e Profiler
           class Integer
             def fast_prime?
              return true if self.equal?(2)
              return false if self.even?
              3.step(Math.sqrt(self).floor, 2).all? { |i| (self % i).nonzero? }
             end
           end
                         CPU Time SysCpu          User+Sys ElapsedTime
           Simple Prime 0.130000 0.000000         0.130000 ( 0.133931)
           Fast Prime   0.070000 0.000000         0.070000 ( 0.079083)
           Stdlib       0.230000 0.000000         0.230000 ( 0.230975)

sábado, 9 de julho de 2011
Benchmark e Profiler
                        require 'profile'
                        (2..10_000).each { |i| i.fast_prime? }




sábado, 9 de julho de 2011
Extendendo Ruby com C

                      1) Ruby Inline
                      2) Normal




sábado, 9 de julho de 2011
Ruby Inline
                             class Factorial
                               inline do |builder|
                                 builder.c "
                                 long factorial_c(int max) {
                                   int i=max, result=1;
                                   while (i >= 2) { result *= i--; }
                                   return result;
                                 }"
                               end
                             end

sábado, 9 de julho de 2011
Extensão Nativa

                             #ext/extconf.rb
                             require 'mkmf'
                             dir_config('hello_world')
                             create_makefile('hello_world')




sábado, 9 de julho de 2011
Extensão Nativa
                     /* hello_world.c */
                     #include <ruby.h>
                     VALUE hello_world(VALUE self){
                     	

 return rb_str_new2("Hello World!");
                     }
                     VALUE class_Hello;
                     void Init_hello_world(){
                     	

 class_Hello = rb_define_class("HelloWorld", rb_cObject);
                     	

 rb_define_method(class_Hello, "hello_world", hello_world, 0);
                     }

                      # In Ruby
                      hello = HelloWorld.new
                      hello.hello_world # => “Hello World!”

sábado, 9 de julho de 2011
Automatizando
                             InfinityTest (To Infinity and beyond)




sábado, 9 de julho de 2011
InfinityTest
                             $ infinity_test --rspec




sábado, 9 de julho de 2011
InfinityTest
                             $ infinity_test --rspec




sábado, 9 de julho de 2011
InfinityTest
                             $ infinity_test --rspec




sábado, 9 de julho de 2011
Ruby!




sábado, 9 de julho de 2011
“Não Entendi nada!!”




sábado, 9 de julho de 2011
RubyCasts




sábado, 9 de julho de 2011
Pra acabar



sábado, 9 de julho de 2011
Você precisa se
                       importar pelo código.


sábado, 9 de julho de 2011
Ame-o



sábado, 9 de julho de 2011
Ou o odeie



sábado, 9 de julho de 2011
Se você amar seu
                                  código:


sábado, 9 de julho de 2011
Cuide!



sábado, 9 de julho de 2011
Faça o crescer



sábado, 9 de julho de 2011
Se você o odiar:



sábado, 9 de julho de 2011
Reescreva-o no seu
                             tempo devido e da
                               forma correta.


sábado, 9 de julho de 2011
Seja apaixonado pelo
                        que está trabalhando.


sábado, 9 de julho de 2011
Caso contrário você
                  está morto por dentro.


sábado, 9 de julho de 2011
Assim como seu
                                 código.


sábado, 9 de julho de 2011
Mas não esqueça antes
                          de tudo:


sábado, 9 de julho de 2011
Se divirta!




sábado, 9 de julho de 2011
Obrigado! ;)




                                      @tomas_stefano
                             https://github.com/tomas-stefano
                                  http://rubycasts.com.br/

sábado, 9 de julho de 2011

Mais conteúdo relacionado

PDF
Oficina Ruby on Rails Fatec
PDF
Desenvolvimento orientado à introspecção
PDF
Infinity test and RVM
KEY
Machinist-caching
PDF
Relational Algebra
PPTX
Exames de Laboratório
PDF
Cucumber and BDD
PDF
A diferença das linguagens da JVM na prática. Um projeto de bolsa de valores ...
Oficina Ruby on Rails Fatec
Desenvolvimento orientado à introspecção
Infinity test and RVM
Machinist-caching
Relational Algebra
Exames de Laboratório
Cucumber and BDD
A diferença das linguagens da JVM na prática. Um projeto de bolsa de valores ...

Semelhante a Fun driven development com Ruby (7)

PDF
Refactoring: Comece agora! (ou como não perder o sono ao olhar o código amanha)
PDF
Desafios ria-classe-mundial
PDF
Teste seu código! não seja imaturo e nem bundão.
PDF
Codigo legado fisl
PDF
RVM and Infinity Test
PDF
TDC 2011 - E no sétimo dia ele escreveu testes
PDF
Além do java
Refactoring: Comece agora! (ou como não perder o sono ao olhar o código amanha)
Desafios ria-classe-mundial
Teste seu código! não seja imaturo e nem bundão.
Codigo legado fisl
RVM and Infinity Test
TDC 2011 - E no sétimo dia ele escreveu testes
Além do java
Anúncio

Último (16)

PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Processos na gestão de transportes, TM100 Col18
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Arquitetura de computadores - Memórias Secundárias
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Anúncio

Fun driven development com Ruby

  • 1. Fun Driven Development com Ruby @tomas_stefano https://github.com/tomas-stefano http://rubycasts.com.br/ sábado, 9 de julho de 2011
  • 2. Objetivo - VOCÊ IRÁ APRENDER UMA COISA NOVA DE RUBY. OU VOCÊ IRÁ APRENDER UMA COISA NOVA. sábado, 9 de julho de 2011
  • 3. Era uma vez ... OBS.: Tirada de uma apresentação do Ryan Davis sábado, 9 de julho de 2011
  • 4. Mesa de trabalho sábado, 9 de julho de 2011
  • 5. Lendo o Código sábado, 9 de julho de 2011
  • 6. Ninho de Rato sábado, 9 de julho de 2011
  • 7. Ficou nervoso ... sábado, 9 de julho de 2011
  • 8. Atirou em todo mundo sábado, 9 de julho de 2011
  • 9. Foi preso! sábado, 9 de julho de 2011
  • 10. SEGUNDA VERSÃO! OU: sábado, 9 de julho de 2011
  • 11. Novo trabalho! sábado, 9 de julho de 2011
  • 12. Mesa de trabalho sábado, 9 de julho de 2011
  • 13. Lendo o Código sábado, 9 de julho de 2011
  • 14. Ninho de Rato sábado, 9 de julho de 2011
  • 15. Ficou nervoso ... sábado, 9 de julho de 2011
  • 16. Seus conhecimentos sábado, 9 de julho de 2011
  • 17. Resolveu o problema (um por um) sábado, 9 de julho de 2011
  • 18. Mostrou quem manda! sábado, 9 de julho de 2011
  • 19. Moral da história sábado, 9 de julho de 2011
  • 20. Pessoas vão te incriminar se você machucá-las! sábado, 9 de julho de 2011
  • 21. O código não! :) sábado, 9 de julho de 2011
  • 22. O que é código legado? Muitos dizem: “Todo código, que você não escreveu, é legado”. sábado, 9 de julho de 2011
  • 23. O que é código legado? Muitos dizem: “Todo código, que você não escreveu, é legado”. Outros dizem: “Todo código, que você não escreveu e não possui testes, é legado”. sábado, 9 de julho de 2011
  • 24. O que é código legado? Muitos dizem: “Todo código, que você não escreveu, é legado”. Outros dizem: “Todo código, que você não escreveu e não possui testes, é legado”. Outros pensaram: “Mas até o meu próprio código que eu escrevo, que “apenas funciona” vira um legado depois de algumas semanas ...”. sábado, 9 de julho de 2011
  • 25. Código Legado sábado, 9 de julho de 2011
  • 26. O começo é díficil! sábado, 9 de julho de 2011
  • 27. Lidando com a Complexidade sábado, 9 de julho de 2011
  • 28. Alguma gem de Testes sábado, 9 de julho de 2011
  • 29. RSpec chunky_bacon.should be_awesome sábado, 9 de julho de 2011
  • 30. Shoulda chunky_bacon_should_be :awesome sábado, 9 de julho de 2011
  • 31. Test::Unit assert_equal(:awesome, chunky_bacon) sábado, 9 de julho de 2011
  • 32. Fake Objects sábado, 9 de julho de 2011
  • 33. Mocha bacon = stub(:awesome => true) bacon.expects(:taste).returns('good') sábado, 9 de julho de 2011
  • 34. Flexmock bacon = flexmock(:awesome => true) bacon.should_receive(:taste).and_return('good') sábado, 9 de julho de 2011
  • 35. RSpec Mocks e Stubs bacon.stub!(:awesome).and_return(true) bacon.should_receive(:taste).and_return('good') sábado, 9 de julho de 2011
  • 36. RR stub(bacon).awesome{true} stub(bacon).taste{'good'} sábado, 9 de julho de 2011
  • 37. Métricas sábado, 9 de julho de 2011
  • 38. Flog • 1 a 10: Parabéns! • 11 a 20: Não tão ruim assim ... • 21 a 40: Talvez precise refatorar • 41 a 60: Escreva de novo • 61 a 100: WTF are you trying to do? sábado, 9 de julho de 2011
  • 39. Flog • 1 a 10: Parabéns! • 11 a 20: Não tão ruim assim ... • 21 a 40: Talvez precise refatorar • 41 a 60: Escreva de novo • 61 a 100: WTF are you trying to do? sábado, 9 de julho de 2011
  • 40. Flog • 1 a 10: Parabéns! • 11 a 20: Não tão ruim assim ... • 21 a 40: Talvez precise refatorar • 41 a 60: Escreva de novo • 61 a 100: WTF are you trying to do? sábado, 9 de julho de 2011
  • 41. Flog • 1 a 10: Parabéns! • 11 a 20: Não tão ruim assim ... • 21 a 40: Talvez precise refatorar • 41 a 60: Escreva de novo • 61 a 100: WTF are you trying to do? sábado, 9 de julho de 2011
  • 42. Flog • 1 a 10: Parabéns! • 11 a 20: Não tão ruim assim ... • 21 a 40: Talvez precise refatorar • 41 a 60: Escreva de novo • 61 a 100: o.O - WTF are you trying to do? sábado, 9 de julho de 2011
  • 43. Flog sábado, 9 de julho de 2011
  • 44. Flay sábado, 9 de julho de 2011
  • 45. SimpleCov Cobertura de Código: require 'simplecov' SimpleCov.start sábado, 9 de julho de 2011
  • 46. Simplecov sábado, 9 de julho de 2011
  • 47. Simplecov sábado, 9 de julho de 2011
  • 48. Roodi Problemas de design no seu código sábado, 9 de julho de 2011
  • 49. Repita Comigo • “Medir e analisar meu código, serve para conhecer o meu próprio código.” Brian Liles (TAFT - Test all the F* time) sábado, 9 de julho de 2011
  • 50. Testes de Aceitação Steak sábado, 9 de julho de 2011
  • 51. Cucumber Funcionalidade: Relatorio Completo Sendo cliente Quero o Relatório Completo com os dados dos meus clientes Para uma Analise de crédito de uma ou várias empresas Cenário: Identificação da Empresa Filial Dado que estou consultando um CNPJ de uma empresa "filial" Quando eu aperto "Consultar em uma Página" Então deverá trazer os dados da "matriz" vindos da receita federal E deverá trazer os dados da "filial" vindos da receita federal sábado, 9 de julho de 2011
  • 52. Steak feature "Articles", %q{ In order to have an awesome blog As an author I want to create and manage articles } do scenario "Article index" do Article.create!(:title => 'One') Article.create!(:title => 'Two') visit article_index page.should have_content('One') page.should have_content('Two') end end sábado, 9 de julho de 2011
  • 53. Benchmark class Integer def simple_prime? (2..Math.sqrt(self).floor).all? {|i| (self % i).nonzero? } end end sábado, 9 de julho de 2011
  • 54. Benchmark require "benchmark" Benchmark.benchmark do |bench| bench.report("Simple Prime") do (2..10_000).each { |i| i.simple_prime? } end bench.report('Stdlib') do (2..10_000).each { |i| i.prime? } end end sábado, 9 de julho de 2011
  • 55. Benchmark CPU Time SysCpu User+Sys ElapsedTime Simple Prime 0.130000 0.000000 0.130000 ( 0.133931) Stdlib 0.230000 0.000000 0.230000 ( 0.230975) sábado, 9 de julho de 2011
  • 56. Profiler require 'profile' (2..10_000).each { |i| i.simple_prime? } sábado, 9 de julho de 2011
  • 57. Benchmark e Profiler class Integer def fast_prime? return true if self.equal?(2) return false if self.even? 3.step(Math.sqrt(self).floor, 2).all? { |i| (self % i).nonzero? } end end CPU Time SysCpu User+Sys ElapsedTime Simple Prime 0.130000 0.000000 0.130000 ( 0.133931) Fast Prime 0.070000 0.000000 0.070000 ( 0.079083) Stdlib 0.230000 0.000000 0.230000 ( 0.230975) sábado, 9 de julho de 2011
  • 58. Benchmark e Profiler require 'profile' (2..10_000).each { |i| i.fast_prime? } sábado, 9 de julho de 2011
  • 59. Extendendo Ruby com C 1) Ruby Inline 2) Normal sábado, 9 de julho de 2011
  • 60. Ruby Inline class Factorial inline do |builder| builder.c " long factorial_c(int max) { int i=max, result=1; while (i >= 2) { result *= i--; } return result; }" end end sábado, 9 de julho de 2011
  • 61. Extensão Nativa #ext/extconf.rb require 'mkmf' dir_config('hello_world') create_makefile('hello_world') sábado, 9 de julho de 2011
  • 62. Extensão Nativa /* hello_world.c */ #include <ruby.h> VALUE hello_world(VALUE self){ return rb_str_new2("Hello World!"); } VALUE class_Hello; void Init_hello_world(){ class_Hello = rb_define_class("HelloWorld", rb_cObject); rb_define_method(class_Hello, "hello_world", hello_world, 0); } # In Ruby hello = HelloWorld.new hello.hello_world # => “Hello World!” sábado, 9 de julho de 2011
  • 63. Automatizando InfinityTest (To Infinity and beyond) sábado, 9 de julho de 2011
  • 64. InfinityTest $ infinity_test --rspec sábado, 9 de julho de 2011
  • 65. InfinityTest $ infinity_test --rspec sábado, 9 de julho de 2011
  • 66. InfinityTest $ infinity_test --rspec sábado, 9 de julho de 2011
  • 67. Ruby! sábado, 9 de julho de 2011
  • 69. RubyCasts sábado, 9 de julho de 2011
  • 70. Pra acabar sábado, 9 de julho de 2011
  • 71. Você precisa se importar pelo código. sábado, 9 de julho de 2011
  • 72. Ame-o sábado, 9 de julho de 2011
  • 73. Ou o odeie sábado, 9 de julho de 2011
  • 74. Se você amar seu código: sábado, 9 de julho de 2011
  • 75. Cuide! sábado, 9 de julho de 2011
  • 76. Faça o crescer sábado, 9 de julho de 2011
  • 77. Se você o odiar: sábado, 9 de julho de 2011
  • 78. Reescreva-o no seu tempo devido e da forma correta. sábado, 9 de julho de 2011
  • 79. Seja apaixonado pelo que está trabalhando. sábado, 9 de julho de 2011
  • 80. Caso contrário você está morto por dentro. sábado, 9 de julho de 2011
  • 81. Assim como seu código. sábado, 9 de julho de 2011
  • 82. Mas não esqueça antes de tudo: sábado, 9 de julho de 2011
  • 83. Se divirta! sábado, 9 de julho de 2011
  • 84. Obrigado! ;) @tomas_stefano https://github.com/tomas-stefano http://rubycasts.com.br/ sábado, 9 de julho de 2011