Wewebconf
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Wewebconf

on

  • 419 views

 

Statistics

Views

Total Views
419
Views on SlideShare
419
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Wewebconf Presentation Transcript

  • 1. Web in the Cloud with RubyTuesday, October 23, 12
  • 2. Rafael Macedo @macedorafael github.com/rafaelmacedoTuesday, October 23, 12
  • 3. Ruby é... uma linguagem dinâmica, interpretada, e open source com foco em simplicidade e produtividade. Possui uma sintaxe elegante que é natural de ler e fácil de escrever. http://ruby-lang.org/enTuesday, October 23, 12
  • 4. Ruby é... “Eu queria uma linguagem que fosse mais poderosa que o Perl e mais orientada a objetos do que o Python.” Yukihiro “Matz” MatsumotoTuesday, October 23, 12
  • 5. python smalltalk lisp eiffel perlTuesday, October 23, 12
  • 6. Como aprender???Tuesday, October 23, 12
  • 7. http://www.ruby-lang.org/enTuesday, October 23, 12
  • 8. http://www.ruby-doc.orgTuesday, October 23, 12
  • 9. http://www.rubydoc.infoTuesday, October 23, 12
  • 10. http://api.rubyonrails.orgTuesday, October 23, 12
  • 11. http://guides.rubyonrails.orgTuesday, October 23, 12
  • 12. http://stackoverflow.com/search?q=ruby+rubyonrailsTuesday, October 23, 12
  • 13. http://git-scm.com http://try.github.com http://github.comTuesday, October 23, 12
  • 14. http://git-scm.com http://try.github.com http://github.comTuesday, October 23, 12
  • 15. http://google.comTuesday, October 23, 12
  • 16. FTW!!!! http://google.comTuesday, October 23, 12
  • 17. Por que Ruby???Tuesday, October 23, 12
  • 18. ~ 1 milhão de desenvolvedores 4M até 2013 (Gartner)Tuesday, October 23, 12
  • 19. Tuesday, October 23, 12
  • 20. Tuesday, October 23, 12
  • 21. Documentação • 112 bibliotecas 100% documentadas • Comunidade ativa • Diversos tutoriais e em diversos níveis • Bibliotecas em ruby são empacotadas e distribuidas como gemsTuesday, October 23, 12
  • 22. RubygemsTuesday, October 23, 12
  • 23. Rubygems + 40K gemsTuesday, October 23, 12
  • 24. Rubygems + 40K gems 62.837 usersTuesday, October 23, 12
  • 25. GithubTuesday, October 23, 12
  • 26. Sintaxe elegante e limpa 1 def say_good_morning(name) 2 return "Good morning " + name + "!!!" • 3 end 4 dasdasdasd 5 puts say_good_morning("folks") 6 >> Good morning folks!!!Tuesday, October 23, 12
  • 27. Sintaxe elegante e limpa 1 def say_good_morning(name) 2 return "Good morning " + name + "!!!" • 3 end 4 dasdasdasd 5 puts say_good_morning("folks") 6 >> Good morning folks!!! opcionaisTuesday, October 23, 12
  • 28. Sintaxe elegante e limpa 1 def say_good_morning(name) 2 return "Good morning " + name + "!!!" • 3 end 4 dasdasdasd 5 puts say_good_morning "folks" 6 >> Good morning folks!!!Tuesday, October 23, 12
  • 29. Sintaxe elegante e limpa retorno automático 1 def say_good_morning(name) 2 return "Good morning " + name + "!!!" • 3 end 4 dasdasdasd 5 puts say_good_morning "folks" 6 >> Good morning folks!!!Tuesday, October 23, 12
  • 30. Sintaxe elegante e limpa 1 def say_good_morning(name) 2 "Good morning " + name + "!!!" • 3 end 4 dasdasdasd 5 puts say_good_morning "folks" 6 >> Good morning folks!!!Tuesday, October 23, 12
  • 31. Sintaxe elegante e limpa interpolação 1 def say_good_morning(name) 2 "Good morning " + name + "!!!" • 3 end 4 dasdasdasd 5 puts say_good_morning "folks" 6 >> Good morning folks!!!Tuesday, October 23, 12
  • 32. Sintaxe elegante e limpa 1 def say_good_morning(name) 2 "Good morning #{name}!!!" • 3 end 4 dasdasdasd 5 puts say_good_morning "folks" 6 >> Good morning folks!!!Tuesday, October 23, 12
  • 33. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 7 true.class 8 >> TrueClass 9 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 34. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 7 true.class 8 >> TrueClass 9 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 35. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 7 true.class 8 >> TrueClass 9 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 36. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 7 true.class 8 >> TrueClass 9 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 37. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 7 true.class 8 >> TrueClass 9 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 38. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 tudo é um objeto 7 true.class 8 >> TrueClass 9 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 39. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 sim, eu disse tudo!!! 7 true.class 8 >> TrueClass 9 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 40. Orientada a objetos 1 "some dummy text".class 2 >> String 3 4 1.class 5 >> Fixnum 6 sim, eu disse tudo!!! 7 true.class 8 >> TrueClass 1 String.class 9 2 >> Class 10 nil.class 11 >> NilClassTuesday, October 23, 12
  • 41. Orientada a objetos 1 puts 1 + 1 2 >> 2Tuesday, October 23, 12
  • 42. Orientada a objetos 1 puts 1 + 1 2 >> 2 3 4 puts 1.+(1) 5 >> 2Tuesday, October 23, 12
  • 43. Orientada a objetos 1 [1, 2, 3, 4, 5].averageTuesday, October 23, 12
  • 44. Orientada a objetos 1 [1, 2, 3, 4, 5].average 2 >> NoMethodError: undefined method `average for [1, 2, 3, 4, 5]:ArrayTuesday, October 23, 12
  • 45. Orientada a objetos 1 [1, 2, 3, 4, 5].average 2 >> NoMethodError: undefined method `average for [1, 2, 3, 4, 5]:Array e agora???????Tuesday, October 23, 12
  • 46. Orientada a objetos 1 class Array 2 def average 3 inject(0.0) do |sum, var| 4 sum + var 5 end / self.size 6 end 7 end 8 9 [1, 2, 3, 4, 5].average 10 >> 3.0Tuesday, October 23, 12
  • 47. Orientada a objetos 1 class Array 2 def average 3 inject(0.0) do |sum, var| 4 sum + var 5 6 open classes WINS!!!! end / self.size end 7 end 8 9 [1, 2, 3, 4, 5].average 10 >> 3.0Tuesday, October 23, 12
  • 48. “Se anda como um pato e fala como um pato, isso é um pato!”Tuesday, October 23, 12
  • 49. Desenvolvedores Ruby estão mais acostumados em definir objetos pelo que eles podem fazer, do que por seu tipo. Esta técnica é chamada de duck typing.Tuesday, October 23, 12
  • 50. Duck Typing 1 class Logger 2 def initialize(io) 3 @io = io 4 end 5 6 def log(message) 7 @io << "#{Time.now} - #{message}n" 8 end 9 endTuesday, October 23, 12
  • 51. Duck Typing 1 array_logger = Logger.new([]) 2 array_logger.log("Hello World") 3 4 string_logger = Logger.new("") 5 string_logger.log("Hello World")Tuesday, October 23, 12
  • 52. Duck Typing 1 array_logger = Logger.new([]) 2 array_logger.log("Hello World") 3 4 Protocolo= > Interface string_logger Logger.new("") 5 string_logger.log("Hello World")Tuesday, October 23, 12
  • 53. InstalaçãoTuesday, October 23, 12
  • 54. Instalando (Mac OS & Linux) http://rvm.ioTuesday, October 23, 12
  • 55. Instalando (Mac OS & Linux) $ curl -L https://get.rvm.io | bash -s stable $ source ~/.rvm/scripts/rvm $ type rvm | head -n 1 rvm is a function http://rvm.ioTuesday, October 23, 12
  • 56. Instalando (Mac OS & Linux) $ echo [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" > ~/.bash_profile http://rvm.ioTuesday, October 23, 12
  • 57. Instalando (Mac OS & Linux) $ rvm list known http://rvm.ioTuesday, October 23, 12
  • 58. Tuesday, October 23, 12
  • 59. Instalando (Mac OS & Linux) $ rvm install ruby-1.9.3 $ rvm use ruby-1.9.3 http://rvm.ioTuesday, October 23, 12
  • 60. Instalando (Mac OS & Linux) $ rvm list http://rvm.ioTuesday, October 23, 12
  • 61. Tuesday, October 23, 12
  • 62. Instalando (Windows) http://rubyinstaller.org/downloadsTuesday, October 23, 12
  • 63. “Hello World”Tuesday, October 23, 12
  • 64. C 1 #include <stdio.h> 2 3 int main(void){ 4 printf("Hello Worldn"); 5 return 1; 6 }Tuesday, October 23, 12
  • 65. Java 1 class HelloWorldApp { 2 public static void main(String[] args) { 3 System.out.println("Hello World"); 4 } 5 }Tuesday, October 23, 12
  • 66. Ruby 1 puts "Hello World"Tuesday, October 23, 12
  • 67. Rodando códigos rubyTuesday, October 23, 12
  • 68. via irb IRB = Interactive RuBy Shell REPL (Read Eval Print Loop)Tuesday, October 23, 12
  • 69. via irbTuesday, October 23, 12
  • 70. Tuesday, October 23, 12
  • 71. via programas Ruby $ ruby hello_world.rb Hello WorldTuesday, October 23, 12
  • 72. Ruby BasicsTuesday, October 23, 12
  • 73. ComentáriosTuesday, October 23, 12
  • 74. Comentários 1 # comentar uma linha simples 2 3 =begin 4 para um bloco de códigos 5 [1, 2, 3].each do |number| 6 puts number * 2 7 end 8 =endTuesday, October 23, 12
  • 75. VariáveisTuesday, October 23, 12
  • 76. Variáveis 1 age = 1 # local 2 3 @name = rafael # global 4 5 @@count = 1 # class 6 7 PATH = ~/ # constantTuesday, October 23, 12
  • 77. StringsTuesday, October 23, 12
  • 78. Strings 1 single_quote = this is a string with single quote 2 3 double_quote = "this is a string with double quote" 4 5 escaped_string = im a escaped stringTuesday, October 23, 12
  • 79. Strings (interpolação) 1 puts "20 + 20 = #{20 + 20}" 2 >> 20 + 20 = 40Tuesday, October 23, 12
  • 80. SymbolsTuesday, October 23, 12
  • 81. Symbols 1 def walk(direction) 2 case direction 3 when 1 then move_north 4 when 2 then move_east 5 when 3 then move_south 6 when 4 then move_west 7 else "Unknown direction" 8 endTuesday, October 23, 12
  • 82. Symbols 1 def walk(direction) 2 case direction 3 when :north then move_north 4 when :east then move_east 5 when :south then move_south 6 when :west then move_west 7 else "Unknown direction" 8 endTuesday, October 23, 12
  • 83. Symbols 1 def walk(direction) 2 case direction 3 when :north then move_north 4 when :east then move_east 5 when :south then move_south 6 when :west then move_west 7 else "Unknown direction" 8 endTuesday, October 23, 12
  • 84. NumbersTuesday, October 23, 12
  • 85. Numbers 1 number = 15 2 3 number_with_delimeter = 1_000_000 4 5 float = 1.5Tuesday, October 23, 12
  • 86. Numbers (conversão automática entre tipos) a = 1 b = 5.5 a.class b.class >> Fixnum >> FloatTuesday, October 23, 12
  • 87. Numbers (conversão automática entre tipos) a = 1 b = 5.5 a.class b.class >> Fixnum >> Float c = a + b >> 6.5Tuesday, October 23, 12
  • 88. Numbers (conversão automática entre tipos) a = 1 b = 5.5 a.class b.class >> Fixnum >> Float c = a + b >> 6.5 c.class >> FloatTuesday, October 23, 12
  • 89. ArraysTuesday, October 23, 12
  • 90. Arrays 1 items = [1, "two", :three, [4, 5, 6]] 2 3 items << 7 4 5 items[12] = a 6 7 puts items[0] 8 >> 1Tuesday, October 23, 12
  • 91. Arrays 1 puts items.inspect 2 >> [1, "two", :three, [4, 5, 6], 7, nil, nil, nil, nil, nil, nil, nil, "..."]Tuesday, October 23, 12
  • 92. Arrays [ 1 year_months = %w seg ter qua qui sex sab dom] 2 >> ["seg", "ter", "qua", "qui", "sex", "sab", “dom"]Tuesday, October 23, 12
  • 93. Arrays ( 1 year_months = %w seg ter qua qui sex sab dom) 2 >> ["seg", "ter", "qua", "qui", "sex", "sab", “dom"]Tuesday, October 23, 12
  • 94. Arrays 1 items = Array.new(5) { |i| 2 ** i } 2 >> [1, 2, 4, 8, 16]Tuesday, October 23, 12
  • 95. HashesTuesday, October 23, 12
  • 96. Hashes 1 market_list = {:rice => 1, "vegetables" => [ :spinach => 1, :broccoli => 2]} 2 3 market_list = {rice: 1, vegetables: [ spinach: 1, broccoli: 2 ]} 4 5 market_list[:rice] 6 7 market_list[:coca] = 2Tuesday, October 23, 12
  • 97. RangesTuesday, October 23, 12
  • 98. Ranges 1 (1..10).to_a 2 >> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 3 4 (1...10).to_a 5 >> [1, 2, 3, 4, 5, 6, 7, 8, 9] 6 7 ("a".."z").to_a 8 >> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]Tuesday, October 23, 12
  • 99. Ranges 1 string = "1a".."2g" 2 string.cover "2a" 3 >> true 4 5 string.cover "2h" 6 >> falseTuesday, October 23, 12
  • 100. Expressões RegularesTuesday, October 23, 12
  • 101. Expressões regulares 1 regexp = /(a-z)+/ 2 3 regexp = %r((a-z)+)Tuesday, October 23, 12
  • 102. Expressões regulares 1 regexp = /(a-z)+/ 2 3 regexp = %r((a-z)+) Metacaracteres devem ser escapados ( ) [ ] { } . ? + *Tuesday, October 23, 12
  • 103. Expressões regularesTuesday, October 23, 12
  • 104. Estruturas condicionaisTuesday, October 23, 12
  • 105. Estruturas condicionais (if/elsif/else) 1 if expression 2 # do something 3 elsif expression2 4 # do something else 5 elsif expressionN 6 # do something else 7 else 8 # do something else 9 endTuesday, October 23, 12
  • 106. Estruturas condicionais (if/elsif/else) 1 if !expression 2 # do something 3 endTuesday, October 23, 12
  • 107. Estruturas condicionais (if/elsif/else) 1 if !expression 2 # do something 3 endTuesday, October 23, 12
  • 108. Estruturas condicionais (if/elsif/else) 1 if !expression 2 # do something 3 end 4 5 unless expression 6 # do something 7 endTuesday, October 23, 12
  • 109. Estruturas condicionais (if/elsif/else) 1 count == 1 ? singular : pluralTuesday, October 23, 12
  • 110. Estruturas condicionais (case) 1 case 2 when x == 1 then "one" 3 when x == 2 then "two" 4 when x == 3 then "three" 5 else"other"Tuesday, October 23, 12
  • 111. Estruturas condicionais (case) 1 case number 2 when 0..10 3 "Between 0 and 10" 4 when 11..20 5 "Between 11 and 20" 6 else 7 "Youre outside my limits" 8 endTuesday, October 23, 12
  • 112. Estruturas condicionais (case) 1 case text 2 when /brubyb/ 3 "You passed a lowercased Ruby" 4 when /bRubyb/ 5 "You passed a capitalized Ruby" 6 when /bRUBYb/ 7 "You passed an uppercased Ruby" 8 else 9 "WAT? NO RUBY?" 10 endTuesday, October 23, 12
  • 113. IteradoresTuesday, October 23, 12
  • 114. Iteradores Objetos das class Hash, Array e Range são iteráveis 1 1.upto(3) do |number| 2 puts number 3 end 4 5 [1, 2, 3].map { |number| number * 2 } 6 >> [2, 4, 6] 7 8 (1..10).reject { |number| number.odd? } 9 >> [2, 4, 6, 8, 10]Tuesday, October 23, 12
  • 115. MétodosTuesday, October 23, 12
  • 116. Métodos 1 def greet(name) 2 puts "Hello #{name}" 3 end 4 5 greet "Rafael"Tuesday, October 23, 12
  • 117. Métodos (argumento padrão) 1 def greet(name="there") 2 puts "Hello #{name}" 3 end 4 5 greetTuesday, October 23, 12
  • 118. Métodos (escopo) 1 x, y = 2, 1 2 3 def cube(x) 4 y = x**3 5 return y 6 end 7 8 puts cube(x) 9 >> 8 10 11 puts y 12 >> 1Tuesday, October 23, 12
  • 119. Métodos (retorno automático) 1 x, y = 2, 1 2 3 def cube(x) 4 x**3 5 end 6 7 puts cube(x) 8 >> 8 9 10 puts y 11 >> 1Tuesday, October 23, 12
  • 120. ClassesTuesday, October 23, 12
  • 121. Classes 1 class Person 2 end 3 4 p = Person.newTuesday, October 23, 12
  • 122. Classes (métodos de instância) 1 class Person 2 def introduce 3 puts "Hello" 4 end 5 end 6 7 p = Person.new 8 p.introduce 9 >> HelloTuesday, October 23, 12
  • 123. Classes (construtor) 1 class Person 2 def initialize(name) 3 @name = name # variavel de instância 4 end 5 6 def introduce 7 puts "Hello my name is #{@name}" 8 end 9 end 1 p = Person.new(rafael) 2 p.introduce 3 >> Hello my name is rafaelTuesday, October 23, 12
  • 124. Classes (métodos de classe) 1 class Animal 2 def self.species 3 ["alligator", "bat", ..., "bear"] 4 end 5 end 6 7 puts Animal.speciesTuesday, October 23, 12
  • 125. Classes (getters e setters) 1 class Person 2 def name=(name) 3 @name = name 4 end 5 6 def name 7 @name 8 end 9 end 10 11 p = Person.new(rafael) 12 p.name = macedo 13 puts p.name 14 >> macedoTuesday, October 23, 12
  • 126. Classes (getters e setters) 1 class Person 2 attr_accessor :name 3 end 4 5 p = Person.new(rafael) 6 p.name = macedo 7 puts p.name 8 >> macedoTuesday, October 23, 12
  • 127. Classes (getters) 1 class Person 2 attr_reader :name 3 end 4 5 p = Person.new(rafael) 6 p.name = macedo 7 NoMethodError: undefined method `name= 8 puts p.name 8 >> macedoTuesday, October 23, 12
  • 128. Classes (setters) 1 class Person 2 attr_reader :name 3 end 4 5 p = Person.new(rafael) 6 p.name = macedo 7 puts p.name 8 NoMethodError: undefined method `nameTuesday, October 23, 12
  • 129. Classes (inheritance) 1 class Studend < Person 2 attr_accessor :register 3 end 4 5 s = Studend.new(rafael) 6 s.register = 13286 7 s.name = macedoTuesday, October 23, 12
  • 130. Classes (modules) 1 module Swimmer 2 def swim 3 puts Im swimming! 4 end 5 endTuesday, October 23, 12
  • 131. Classes (modules) 1 class Person 2 include Swimmer 3 end 4 5 Person.new.swim 6 >> Im swimming!Tuesday, October 23, 12
  • 132. Quem usa?Tuesday, October 23, 12
  • 133. Tuesday, October 23, 12
  • 134. Tuesday, October 23, 12
  • 135. Tuesday, October 23, 12
  • 136. Tuesday, October 23, 12
  • 137. Tuesday, October 23, 12
  • 138. Tuesday, October 23, 12
  • 139. Tuesday, October 23, 12
  • 140. Tuesday, October 23, 12
  • 141. Tuesday, October 23, 12
  • 142. Tuesday, October 23, 12
  • 143. O que posso fazer?Tuesday, October 23, 12
  • 144. Aplicações de voz • Interactive voice response systems (IVRs) • Call Center Automation • Data Gathering • Voice 2.0 http://adhearsion.comTuesday, October 23, 12
  • 145. Aplicações linha de comandoTuesday, October 23, 12
  • 146. Games https://github.com/qwertyreddy/rubysteinTuesday, October 23, 12
  • 147. Aplicações desktopTuesday, October 23, 12
  • 148. Desktop ApplicationsTuesday, October 23, 12
  • 149. Web ApplicationsTuesday, October 23, 12
  • 150. Web ApplicationsTuesday, October 23, 12
  • 151. Web ApplicationsTuesday, October 23, 12
  • 152. Web ApplicationsTuesday, October 23, 12
  • 153. Web ApplicationsTuesday, October 23, 12
  • 154. Rails is... Ruby on Rails® is an open-source web framework that’s optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration http://rubyonrails.orgTuesday, October 23, 12
  • 155. Rails is... Ruby on Rails is intended to emphasize Convention over Configuration (CoC)Tuesday, October 23, 12
  • 156. Rails is... Ruby on Rails is intended to emphasize Convention over Configuration (CoC) Rapid development principle of Dont Repeat Yourself (DRY)Tuesday, October 23, 12
  • 157. Rails is... Ruby on Rails is intended to emphasize Convention over Configuration (CoC) Rapid development principle of Dont Repeat Yourself (DRY) Fat models, skinny controllersTuesday, October 23, 12
  • 158. Rails is... Ruby on Rails is intended to emphasize Convention over Configuration (CoC) Rapid development principle of Dont Repeat Yourself (DRY) Fat models, skinny controllersTuesday, October 23, 12
  • 159. $ gem install rails $ rails new my-app -d mysqlTuesday, October 23, 12
  • 160. Tuesday, October 23, 12
  • 161. Routes Controller View ModelTuesday, October 23, 12
  • 162. Routes Controller View ModelTuesday, October 23, 12
  • 163. Routes Controller View ModelTuesday, October 23, 12
  • 164. Routes Controller View ModelTuesday, October 23, 12
  • 165. Routes Controller View ModelTuesday, October 23, 12
  • 166. Routes Controller View ModelTuesday, October 23, 12
  • 167. Routes Controller View ModelTuesday, October 23, 12
  • 168. Routes Controller View ModelTuesday, October 23, 12
  • 169. Tuesday, October 23, 12
  • 170. Tuesday, October 23, 12
  • 171. Tuesday, October 23, 12
  • 172. Tuesday, October 23, 12
  • 173. Tuesday, October 23, 12
  • 174. bundle installTuesday, October 23, 12
  • 175. Tuesday, October 23, 12
  • 176. rake -TTuesday, October 23, 12
  • 177. Tuesday, October 23, 12
  • 178. Tuesday, October 23, 12
  • 179. Tuesday, October 23, 12
  • 180. Tuesday, October 23, 12
  • 181. rake db:createTuesday, October 23, 12
  • 182. Tuesday, October 23, 12
  • 183. rails generateTuesday, October 23, 12
  • 184. Tuesday, October 23, 12
  • 185. Tuesday, October 23, 12
  • 186. Tuesday, October 23, 12
  • 187. Tuesday, October 23, 12
  • 188. rake routesTuesday, October 23, 12
  • 189. Tuesday, October 23, 12
  • 190. Tuesday, October 23, 12
  • 191. rake db:migrateTuesday, October 23, 12
  • 192. Tuesday, October 23, 12
  • 193. rails sTuesday, October 23, 12
  • 194. rails sTuesday, October 23, 12
  • 195. Tuesday, October 23, 12
  • 196. Tuesday, October 23, 12
  • 197. Tuesday, October 23, 12
  • 198. WIN!!!!Tuesday, October 23, 12
  • 199. ...Tuesday, October 23, 12
  • 200. Ajuda adicionalTuesday, October 23, 12
  • 201. http://try.github.comTuesday, October 23, 12
  • 202. http://caelum.com.brTuesday, October 23, 12
  • 203. http://railscasts.comTuesday, October 23, 12
  • 204. http://howtocode.com.brTuesday, October 23, 12
  • 205. 10 dicas para o sucessoTuesday, October 23, 12
  • 206. 1. Faça apenas uma tarefa por vezTuesday, October 23, 12
  • 207. 2. Conheça o problemaTuesday, October 23, 12
  • 208. 3. Aprenda a ouvirTuesday, October 23, 12
  • 209. 4. Faça perguntasTuesday, October 23, 12
  • 210. 6. Aceite mudançasTuesday, October 23, 12
  • 211. 7. Admita seus errosTuesday, October 23, 12
  • 212. 8. Mantenha as coisas simplesTuesday, October 23, 12
  • 213. 9. Mantenha calmaTuesday, October 23, 12
  • 214. 10. SorriaTuesday, October 23, 12
  • 215. 10. SorriaTuesday, October 23, 12
  • 216. Tuesday, October 23, 12
  • 217. OBRIGADO!!! https://speakerdeck.com/u/rafaelmacedoTuesday, October 23, 12