Ruby gerando números randômicos em um range

Muito simples:

<%= rand(1..5) %>
Posted in Ruby at agosto 2nd, 2012. No Comments.

How do you downgrade Rubygems?

In the terminal:

sudo gem update --system 1.3.6

If you use RVM (Ruby Version Manager):

rvm install rubygems 1.3.6
Posted in Ruby at janeiro 19th, 2012. No Comments.

Desempenho Ruby: Windows vs Linux

Há 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:

  • Ruby 1.8.7;
  • Rails 2.3.5;
  • MongoDB
Posted in Linux, Ruby at maio 12th, 2010. 1 Comment.

Ruby-Processing Exemplo de Modelo 3D com Drag

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

ruby-processing-modelo-3d-drag

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: Recommend Me.

Posted in Ruby at agosto 23rd, 2009. No Comments.

Uma breve reflexão sobre o PHP, Ruby e os respectivos frameworks symfony e Ruby on Rails

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: Recommend Me.

Posted in PHP, Reflexões, Ruby, Ruby on Rails at dezembro 6th, 2008. No Comments.

Removendo \n de uma string lida do teclado em Ruby

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: Recommend Me.

Posted in Ruby at novembro 18th, 2008. No Comments.

Como receber dados do teclado no Ruby

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: Recommend Me.

Posted in Ruby at novembro 18th, 2008. 2 Comments.

which ruby

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: Recommend Me.

Posted in Ruby at novembro 16th, 2008. No Comments.

Ruby variáveis e constantes

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: Recommend Me.

Posted in Ruby at novembro 16th, 2008. No Comments.

Ruby verificando se um objeto é de uma determinada classe

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: Recommend Me.

Posted in Ruby at novembro 16th, 2008. No Comments.
 Assinar RSS Feed