Ruby gerando números randômicos em um range
Muito simples:
<%= rand(1..5) %>
Knowledge evolves when it is shared!
Muito simples:
<%= rand(1..5) %>
In the terminal:
sudo gem update --system 1.3.6
If you use RVM (Ruby Version Manager):
rvm install rubygems 1.3.6Há um tempo atrás eu configurei todo o meu ambiente para desenvolver no Windows, com o objetivo de conseguir testar a aplicação em todos os browsers.
Infelizmente o Ruby no Windows é muito mais lento que no Linux, chega ao ponto de ser inviável o uso do ambiente Windows. O que é uma pena, como linguagem de programação deveria ter desempenho parecido independente do sistema operacional.
Eu comecei a perceber essa lentidão no carregamento do environment.
Todo esse problema de environment lento era única e exclusivamente pela baixo desempenho do Ruby no Windows.
O Julio Monteiro sugeriu eu fazer o seguinte teste no prompt/terminal:
date ruby script/console exit date
No Windows o environment demorou: 3 minutos e 50 segundos para subir.
No Linux o environment demorou: 13 segundos para subir.
É uma diferença de desempenho absurda entre o Windows e o Linux.
Levando em conta o teste com a mesma aplicação usando:
O exemplo abaixo ilustra uma aplicação no modelo 3D com drag, usando Ruby-Processing.
Para esse exemplo funcionar você deve possuir o Ruby-Processing instalado, caso não possua siga os passos: http://blog.patrickespake.com/2009/08/23/ruby-processing.
Exemplo Modelo 3D com Drag
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | class Teste3d < Processing::App attr_accessor :rotx, :roty, :tex, :bg def setup size 800, 600, P3D self.bg = load_image "candy.jpg" self.tex = load_image "smile.jpg" texture_mode NORMALIZED fill 255 stroke(color(44, 48, 32)) self.rotx = PI/4 self.roty = PI/4 end def draw background self.bg no_stroke translate width/2.0, height/2.0, -100 rotate_x self.rotx rotate_y self.roty scale 90 texture_cube self.tex end def mouse_dragged rate = 0.01 self.rotx += (pmouse_y - mouse_y) * rate self.roty += (mouse_x - pmouse_x) * rate end private def texture_cube(tex) begin_shape QUADS texture tex # +Z "front" face vertex(-1, -1, 1, 0, 0) vertex( 1, -1, 1, 1, 0) vertex( 1, 1, 1, 1, 1) vertex(-1, 1, 1, 0, 1) # -Z "back" face vertex( 1, -1, -1, 0, 0) vertex(-1, -1, -1, 1, 0) vertex(-1, 1, -1, 1, 1) vertex( 1, 1, -1, 0, 1) # +Y "bottom" face vertex(-1, 1, 1, 0, 0) vertex( 1, 1, 1, 1, 0) vertex( 1, 1, -1, 1, 1) vertex(-1, 1, -1, 0, 1) # -Y "top" face vertex(-1, -1, -1, 0, 0) vertex( 1, -1, -1, 1, 0) vertex( 1, -1, 1, 1, 1) vertex(-1, -1, 1, 0, 1) # +X "right" face vertex( 1, -1, 1, 0, 0) vertex( 1, -1, -1, 1, 0) vertex( 1, 1, -1, 1, 1) vertex( 1, 1, 1, 0, 1) # -X "left" face vertex(-1, -1, -1, 0, 0) vertex(-1, -1, 1, 1, 0) vertex(-1, 1, 1, 1, 1) vertex(-1, 1, -1, 0, 1) end_shape end end Teste3d.new :title => "Teste 3D" |
Esse exemplo gera um cubo em 3D, quando você clica e faz drag o cubo se movimenta.
Executando
No terminal digite:
rp5 run teste_3d.rb
Resultado

Você pode ver esse exemplo em execução no endereço: http://lab.patrickespake.com/ruby-processing-examples/example_3d_drag/run/. Você precisa ter paciência para visualizar o modelo rodando, ele demora um certo tempo para carregar no browser.
Código fonte completo: http://github.com/patrickespake/ruby-processing-examples/tree/c80a080dd1e27a562b252fa01bc1030d924a9f47/example_3d_drag.
Se você gostou desse texto e acha que ajudou você, me recomende:
.
Eu trabalho com o framework PHP symfony, mas faço frees em Ruby on Rails. A diferença de tecnologia é imensa, ainda mais quando se leva em conta a produtividade, padronização e resultados.
O PHP ainda tem uma longa evolução a ser feita, a sua orientação a objetos tem vários problemas de design, e nem todos os padrões foram implementados ainda. O framework symfony por usa vez está em um momento de definição de padrão, existe muitos bugs sérios e algumas tecnologias empregadas em sua estrutura agregam burocracia demais para um framework focado em desenvolvimento ágil.
Eu ficou com o Ruby on Rails, estudo a fundo a sua estrutura e até agora só fiquei feliz com tudo que vi.
Se você gostou desse texto e acha que ajudou você, me recomende:
.
No artigo anterior eu expliquei como ler um valor do teclado: http://patrickespake.wordpress.com/2008/11/18/como-receber-dados-do-teclado-no-ruby/.
Esse programa tem um problema, se você tentar concatenar uma string depois da variável linguagem a string vai ficar em uma nova linha.
Isso aconteceu porque quando você digitou o valor no teclado pressionou a tecla “enter” desta forma foi adicionado um \n no final da string.
Existe um método de string chamado chomp, esse método remove o \n (caracter de nova linha).
Então vamos arrumar o nosso programa.
1 2 3 4 5 | puts "Qual a sua linguagem de programação favorita?" linguagem = gets linguagem = linguagem.chomp puts "Sua linguagem favorita é: " + linguagem + "." |
Executando você terá o resultado:
1 2 3 4 | patrick@espake:~/projetos/algoritmos$ ruby gets.rb Qual a sua linguagem de programação favorita? Ruby Sua linguagem favorita é: Ruby. |
Perceba que o caracter “.” no final não foi quebrado para uma nova linha, tudo isso graças ao método chomp.
Se você quiser pode chamar o método chomp no gets, funciona também.
1 | linguagem = gets.chomp |
Se você gostou desse texto e acha que ajudou você, me recomende:
.
Ruby é uma linguagem de programação fantástica e tudo na sua sintaxe foi pensando com muita inteligência e praticidade.
Vou explicar como obter valores do teclado, no final você vai dar risada com a simplicidade.
Crie um arquivo chamado gets.rb e adicione o seguinte conteúdo:
1 2 3 4 | puts "Qual a sua linguagem de programação favorita?" linguagem = gets puts "Sua linguagem favorita é: " + linguagem |
Agora execute:
1 | ruby gets.rb |
Você terá o seguinte resultado:
1 2 3 4 | patrick@espake:~/projetos/algoritmos$ ruby gets.rb Qual a sua linguagem de programação favorita? Ruby Sua linguagem favorita é: Ruby |
Como funciona?
Simples! O comando:
1 | linguagem = gets |
lê o teclado e joga o valor para a variável linguagem. Pronto!
Por isso que eu adoro o Ruby, simples, rápido e inteligênte. ;-)
Se você gostou desse texto e acha que ajudou você, me recomende:
.
O comando which ruby mostra em qual diretório o Ruby está instalado.
No meu caso ele retorna o seguinte:
1 2 | patrick@espake:~/projetos/algoritmos$ which ruby /usr/local/bin/ruby |
Se você gostou desse texto e acha que ajudou você, me recomende:
.
Em Ruby as variáveis sempre começam com letra minúscula e as constantes começam com letras maiúsculas.
Definindo uma variável:
1 | nome = "Patrick Espake" |
Definindo uma constante:
1 | Chave = "a34fdkc090a" |
Se você tentar alterar o valor de uma constante o Ruby irá dar um warning (“warning: already initialized constant Chave”).
Mesmo dando o warning o Ruby irá permitir a alteração do valor da constante.
Se você gostou desse texto e acha que ajudou você, me recomende:
.
No Ruby existe o método is_a para testar se um objeto é de uma determinada classe. No Ruby tudo é objeto.
Digamos que você queira descobrir se um número é da classe Integer, Float ou String. Você pode testar isso da seguinte forma abra o irb no terminal:
1 2 3 4 5 6 | irb(main):001:0> 15.is_a?(Integer) => true irb(main):002:0> 15.is_a?(Float) => false irb(main):003:0> 15.is_a?(String) => false |
O método is_a retorna true ou false.
Se você gostou desse texto e acha que ajudou você, me recomende:
.