Posts Tagged ‘exemplo’

Instalação do PostgreSQL

Postado em 09 nov 2009
Categoria(s) PostgreSQL

Instalação

Para instalar o PostgreSQL no Ubuntu digite o comando:

sudo apt-get install postgresql-common postgresql-8.3 postgresql-client-8.3

Mudando a senha do usuário postgres

sudo su postgres psql

No console do psql

ALTER USER postgres WITH PASSWORD 'postgres';
\q

Configurando o postgresql.conf

sudo vi /etc/postgresql/8.3/main/postgresql.conf

Localizar a linha:

listen_addresses = 'localhost'

e mudar para:

listen_addresses = '*'

remova o carácter de comentário (#) da linha.

A opção listen_addresses permite definir qual host pode se conectar no servidor, exemplo: localhost somente para conexões locais, * para qualquer host ou um ip específico como: 192.168.1.236.

Configurando pg_hba.conf

sudo vi /etc/postgresql/8.3/main/pg_hba.conf

Adicionar no fim do arquivo a linha:

host all all 192.168.1.0/24 md5

Essa configuração específica na ordem:

  • host: Define regras para o protocolo TCP/IP, essa opção pode ser host, local ou hostssl;
  • all: Define qual banco de dados que essa regra se aplica, se definindo all será para todos;
  • all: Define qual usuário tem permissão para usar essa regra, se definido all será para todos;
  • 192.168.1.0/24: Padrão CIDR, define qual faixa de ip’s podem ser conectar no servidor através do padrão CIDR;
  • md5: Método de autenticação, md5 padrão, trust para aceitar, reject para negar e mais algumas outras opções.

Reiniciar o PostgreSQL

sudo /etc/init.d/postgresql-8.3 restart

Usuários de banco de dados

Criar um novo usuário. Para pode criar um novo usuário é necessário estar logado com o usuário postgres.

sudo su postgres

Existem duas formas de criar e deletar um usuário, uma através do shell e outra através do cliente postgre.

Via Shell

createuser patrick

Via cliente postgres

psql
CREATE USER patrick;

As duas opções criam patrick como superusuário.

Exemplos:

Definindo password

CREATE USER patrick PASSWORD '123';

Definindo privilégios de superusuário, permissão para criar databases e roles:

CREATE USER patrick SUPERUSER INHERIT CREATEDB CREATEROLE;

Mais informações: http://pgdocptbr.sourceforge.net/pg80/sql-createuser.html.

Deletar usuário

Via Shell:

dropuser patrick

Via cliente postgres:

psql
DROP USER patrick;

Alterar usuário:

ALTER USER patrick PASSWORD ‘teste123′;

Mais detalhes: http://pgdocptbr.sourceforge.net/pg80/sql-alteruser.html.

  • Share/Bookmark

Ruby-Processing Exemplo de Modelo 3D com Drag e Carregamento de Material OBJ e MTL

Postado em 24 ago 2009
Categoria(s) PIBIC, Processing, Ruby, Ruby-Processing

O exemplo abaixo ilustra uma aplicação no modelo 3D com drag e carregamento de material OBJ e MTL, usando Ruby-Processing.
Para trabalhar com .OBJ esse exemplo usa a biblioteca: .OBJ loader for Processing, você pode encontrar mais informações em: http://code.google.com/p/saitoobjloader/.

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 e Carregamento de Material OBJ e MTL

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
class Example < Processing::App
  load_library :objloader
  import "saito.objloader"
 
  def setup
    size 800, 600, P3D
    @model = OBJModel.new(self, "m1.obj")
    @rot_x = 0
    @rot_y = 0
  end
 
  def draw
     background 51
     no_stroke
     lights
     smooth
 
     push_matrix
     translate width/2, height/2, 0
     rotate_x @rot_y
     rotate_y @rot_x
     scale 3
     @model.drawMode POLYGON
     @model.draw
     pop_matrix
  end
 
  def mouse_dragged
    @rot_x += (mouse_x - pmouse_x) * 0.01;
    @rot_y -= (mouse_y - pmouse_y) * 0.01;
  end
end
 
Example.new :title => "Example 3D With .OBJ Loader"

Esse exemplo importa um modelo 3D criado no 3D Studio Max, quando você clica e faz drag o modelo 3D se movimenta.

Executando

No terminal digite:

rp5 run example.rb

Resultado

ruby-processing-modelo-3d-drag-objloader

Você pode ver esse exemplo em execução no endereço: http://lab.patrickespake.com/ruby-processing-examples/example_3d_objloader/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_objloader.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby-Processing Exemplo de Modelo 3D com Animação

Postado em 23 ago 2009
Categoria(s) PIBIC, Processing, Ruby, Ruby-Processing

O exemplo abaixo ilustra uma aplicação no modelo 3D com animação, 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 Animação

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
78
79
80
81
class Teste3d2 < Processing::App
  attr_accessor :rotx, :roty, :tex, :bg, :rate
 
  def setup
    size 800, 600, P3D
    self.bg = load_image "candy_2.jpg"
    self.tex = load_image "smile.jpg"
    texture_mode NORMALIZED
    fill 255
    stroke(color(44, 48, 32))
    self.rotx = 0
    self.roty = 0
    self.rate = 0.05
  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
    position_update
  end
 
  private
 
  def position_update
    self.rotx += rate
    self.roty += rate
 
    puts "rotx: #{self.rotx}"
    puts "roty: #{self.roty}"
  end
 
  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
 
Teste3d2.new :title => "Teste 3D"

Esse exemplo gera um cubo em 3D com animação.

Executando

rp5 run teste_3d_2.rb

ruby-processing-modelo-3d-animacao

Você pode ver esse exemplo em execução no endereço: http://lab.patrickespake.com/ruby-processing-examples/example_3d_animation/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_animation.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby-Processing Exemplo de Modelo 3D com Drag

Postado em 23 ago 2009
Categoria(s) PIBIC, Processing, Ruby, Ruby-Processing

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.

  • Share/Bookmark

Ruby on Rails plugin tableless_model

Postado em 11 ago 2009
Categoria(s) Plugins, Ruby on Rails

tableless_model

Ruby on Rails model sem banco de dados, com todo o poder do ActiveRecord e validações.

A principal utilidade é usar em formulários que não precisam de banco de dados, mas precisam das validações do ActiveRecord, form_for e rotas RESTful. Por exemplo formulário de contato.

Instalação

./script/plugin install git://github.com/patrickespake/tableless_model.git

Geradores

Gerador tableless_model

Cria o esboço de um novo tableless model. Passe o nome do tableless model, em CamelCased ou under_scored, e uma lista de pares de atributos opcionais como argumentos.

Os atributos pares opcionais são column_name:sql_type como argumentos, especificando os atributos do tableless model.

Você não tem que pensar em cada atributos lá na frente, mas ajuda a esboçar um pouco para que você possa começar a trabalhar com o tableless model imediatamente.

Isto gera uma classe tableless model em app/models, um teste de unidade em test/unit e uma fixture em test/fixtures/singular_name.yml

Exemplos:

./script/generate tableless_model contact

Cria o tableless model Contact, test e fixture:

  • Model: app/models/contact.rb
  • Test: test/unit/contact_test.rb
  • Fixtures: test/fixtures/contacts.yml
./script/generate tableless_model invite name:string body:text email:string

Cria o tableless model Invite com a string name, text body e string email.

Gerador tableless_scaffold

Tableless scaffolds é composto por vários recursos, a partir do model, controller e views, juntamente com um conjunto completo de testes. O recurso está pronto para ser usado como um ponto de partida, sendo RESTful, orientado para o pedido.

Passe o nome do tableless model (na forma singular), em CamelCased ou under_scored, como primeiro argumento, e uma lista de pares de atributos opcionais.

Os pares de atributos opcionais são column_name:sql_type, especificando os atributos do modelo.

Você não tem que pensar em cada atributo lá na frente, mas ajuda esboçar um pouco para que você possa começar a trabalhar com os recursos imediatamente.

Por exemplo ‘tableless_scaffold contact name:string telephone:string firm:string email:string message:text’ dá-lhe um tableless model com cinco atributos, um controlador para lidar com a criação, formulário para criar os contatos e routas declaradas em config/routes.rb.

Se você quiser remover todos os arquivos gerados, execute:

script/destroy scaffold ModelName

Exemplos:

./script/generate tableless_scaffold invite
./script/generate tableless_scaffold contact name:string telephone:string firm:string email:string message:text

Tipos de colunas disponíveis nos tableless_models

1
2
3
4
5
6
7
class ModelName < TablelessModel
  column :column_name1, :column_type
  column :column_name2, :column_type
  column :column_name3, :column_type
  column :column_nameN, :column_type
  ...
end

Tipos de colunas (column_type) disponíveis:

  • :string
  • :text
  • :integer
  • :float
  • :decimal
  • :datetime
  • :timestamp
  • :time
  • :date
  • :binary
  • :boolean

Validações do ActiveRecord funcionam perfeitamente

1
2
3
4
5
6
7
8
9
10
11
class Contact < TablelessModel
  column :name, :string
  column :telephone, :string
  column :firm, :string
  column :email, :string
  column :message, :text
 
  validates_presence_of :name, :email, :message
  validates_format_of :email, :with => /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
  validates_length_of :message, :minimum => 3
end

Exemplo completo usando tableless_scaffold gerador

Criar o tableless scaffold

./script/generate tableless_scaffold contact name:string telephone:string firm:string email:string message:text

Adicionar as validações no model

Abra o arquivo app/models/contact.rb e adicione as validações:

1
2
3
4
5
6
7
8
9
10
11
12
class Contact < TablelessModel
  column :name, :string
  column :telephone, :string
  column :firm, :string
  column :email, :string
  column :message, :text
 
  # Validations
  validates_presence_of :name, :email, :message
  validates_format_of :email, :with => /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
  validates_length_of :message, :minimum => 3
end

Execute

./script/server

Abra o seu navegador em: http://localhost:3000/contacts/new

Exemplo completo usando tableless_model gerador

Criar tableless model

./script/generate tableless_model contact name:string telephone:string firm:string email:string message:text

Adicionar as validações no model

Abra o arquivo app/models/contact.rb e adicione as validações:

1
2
3
4
5
6
7
8
9
10
11
12
class Contact < TablelessModel
  column :name, :string
  column :telephone, :string
  column :firm, :string
  column :email, :string
  column :message, :text
 
  # Validations
  validates_presence_of :name, :email, :message
  validates_format_of :email, :with => /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
  validates_length_of :message, :minimum => 3
end

Criar o controlador

./script/generate controller contacts new create

Adicionar os códigos das actions:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class ContactController < ApplicationController
  def new
    @contact = Contact.new
  end
 
  def create
    @contact = Contact.new(params[:contact])
 
    if @contact.save # or @contact.valid?
      flash[:notice] = "Contact email sent successfully."
 
      # Send contact email
      #MyMailer.deliver_contact(@contact)
 
      redirect_to new_contact_path
    else
      render :action => "new"
    end
  end
end

Criar as routas para os contacts

Abra o arquivo config/routes.rb e adicione a linha:

1
2
3
4
ActionController::Routing::Routes.draw do |map|
  map.resources :contacts, :only => [:new, :create]
  ...
end

Criar o formulário de contato

Abra o arquivo app/views/contacts/new.html.erb e adicione o conteúdo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<% form_for(@contact) do |f| %>
  <%= f.error_messages %>
 
  <%= f.label :name %>
  <%= f.text_field :name %>
 
  <%= f.label :telephone %>
  <%= f.text_field :telephone %>
 
  <%= f.label :firm %>
  <%= f.text_field :firm %>
 
  <%= f.label :email %>
  <%= f.text_field :email %>
 
  <%= f.label :message %>
  <%= f.text_area :message %>
 
  <%= f.submit "Send" %>
<% end %>

Apague o arquivo app/views/contacts/create.html.erb.

Execute

./script/server

Abra o seu navegador em: http://localhost:3000/contacts/new

Documentação

http://lab.patrickespake.com/tableless_model

Código fonte

http://github.com/patrickespake/tableless_model

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark