Archive for the ‘Tutorial’ Category

dom
fev 21st

Manipulando dados pelo shell do MongoDB ...

Assim como o MySql o MongoDB tem um shell para manipular dados diretamente na base, seguem os comandos (CRUD) básicos para inserir, buscar, atualizar e apagar documentos.

Para inicializar o shell:

/opt/mongo/bin/./mongo

Se tiver algum problema com este comando então faça isto:

cd /opt/mongo/bin/
./mongo

As linhas abaixo serão exibidas:

MongoDB shell version: 1.3.3-
url: test
connecting to: test
type "help" for help
>

Os comandos iniciais são:

show dbs Mostra todas as bases de dados
use dbname Aponta a váriavel “db” para a base digite no lugar de dbname
show collections Exibi as coleções da base em uso. As collections “equivalem” as tables nos bancos relacionais.
db.collection_name.insert(object) Cria um documento
db.collection_name.find() Exibi os documentos da coleção
db.collection_name.update(criteria_object_or_pair_key_value) Atualiza um documento com o critério ou chave par/valor definido
db.collection_name.remove(criteria_object_or_pair_key_value) Remove um ou mais documentos com o critério ou chave par/valor definido

Vamos à prática para exemplificar os comandos acima. Abaixo estamos verificando as bases existentes, definindo que usaremos a base “local”, confirmando que estamos na base correta e mostrando as coleções que neste caso ainda não existem.

> show dbs
admin
local
>use local
switched to db local
> db
local
>show collections
false

Agora vamos criar uma coleção de documentos chamada “minha_colecao” e inserir alguns dados.

>db.minha_colecao.insert({ nome: "Mauricio", fone: "12345678",  idade: 10 })
ObjectId("4b808e9a6eff")

Quando exibimos as coleções novamente temos “minha_colecao” e “system.indexes” sendo a última criada automaticamente.

>show collections
minha_colecao
system.indexes

Podemos verificar nossos documentos criados e inserir outros.

>db.minha_colecao.find()
{ "_id" : ObjectId("4b808e9a6eff"), "nome" : "Mauricio", "fone" : "5678", "idade" : 10 }
>db.minha_colecao.insert({ nome: "Monet", fone: "000",  idade: 100 })
ObjectId("4b912e9a6ef4")
>db.minha_colecao.find()
{ "_id" : ObjectId("4b808e9a6eff"), "nome" : "Mauricio", "fone" : "5678", "idade" : 10 }
{ "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 }

Para atualizar os documentos podemos após o hash passar o parâmetro “true” que força uma inserção caso o critério utilizado não seja encontrado.

>db.minha_colecao.update({nome: "Mauricio"}, {nome: "Amorim", fone: "000"}, true)
>db.minha_colecao.find()
{ "_id" : ObjectId("4b808e9a6eff"), "nome" : "Amorim", "fone" : "000", "idade" : 10 }
{ "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 }
>db.minha_colecao.update({nome:"Inexistente"},{nome:"Insere novo", fone:"2355"}, true)
>db.minha_colecao.find()
{ "_id" : ObjectId("4b808e9a6eff"), "nome" : "Amorim", "fone" : "000", "idade" : 10 }
{ "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 }
{ "_id" : ObjectId("4b987e9a6e10"), "nome" : "Insere novo", "fone" : "2355"}

Por último vamos remover todos os documentos seguindo um determinado critério, neste caso o “fone” igual a “000″. Cuidado! Se o parâmetro com um critério não for informado todos os documentos da coleção serão removidos.

>db.minha_colecao.remove({fone: "000"})
>db.minha_colecao.find()
{ "_id" : ObjectId("4b987e9a6eff"), "nome" : "Insere um novo", "fone" : "2355"}

As funções utilizadas acima também podem receber um objeto como parâmetro e seu funcionamento será idêntico.

> xyz = { nome: "Monet", fone: "111", profissao: "artista" }
>db.minha_colecao.insert(xyz)
ObjectId("18b12e9a6ef4")
>db.minha_colecao.find()
{"_id": ObjectId("18b12e9a6ef4"), "nome":"Monet", "fone" : "111", "profissao" : "artista" }

Estes são comandos básicos de manipulação de dados, mais informações podem ser encontradas nas referências abaixo. Recomendo os screencasts do Joon You que são bem práticos.

Referências:
MongoDB DBA Operations
MongoDB Advanced Queries
Screencast – Introduction MongoDB with Joon You
The interactive shell by Kyle

dom
ago 30th

Configurando um ambiente com Ruby e Ruby on Rail ...

Continuando a configuração de um ambiente para iniciar um projeto em Rails, vamos configurar o Ruby, o Ruby on Rails e algumas gems. Primeiramente por uma questão de compatibilidade vamos preparar a configurações para instalar o Ruby 1.8.6. Por padrão o Ubuntu 9.04 Jaunty Jackalope vem configurado para instalação da verão 1.8.7 do Ruby, para alterar precisamos alterar alguns arquivos. Verifique se já existe alguma versão instalada e remova.

ruby -v
sudo apt-get remove ruby

Depois faça as seguintes alterações no arquivo sources.list

sudo gedit  /etc/apt/sources.list

e cole o texto abaixo no final da página

Após crie o arquivo “preferences”

sudo gedit  /etc/apt/preferences

e cole o texto abaixo

Agora as configurações estarão apontando para o repositório que carregará a versão 1.8.6 do Ruby, então podemos instalar os pacotes…

sudo apt-get update
sudo aptitude install ruby rdoc irb  ruby1.8-dev
sudo aptitude install libyaml-ruby libzlib-ruby ri libopenssl-ruby

…e conferir a versão.

ubuntu@ubuntu:~$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]

Instalando RubyGems

Execute os comandos abaixo no terminal para baixar o pacote, criar um alias para caminho e instalar a RubyGems.

cd ~
mkdir gems && cd gems
wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz
tar xf rubygems-1.3.2.tgz
cd rubygems-1.3.2/
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system

Agora podemos instalar o Rails e o MySql

sudo gem install rails
sudo gem install mongrel
sudo apt-get install mysql-server libmysqlclient15-dev
sudo gem install mysql

Para verificar o que foi instalado e as versões, podemos utilizar os comandos abaixo.

gem environment
gem list

Referências:
- http://panthersoftware.com/articles/view/6/ruby-on-rails-development-on-ubuntu-9-04-jaunty-using-ruby-1-8-6

sáb
abr 11th

Ruby in Steel, brincando com Ruby e Rails no Vis ...

Para quem ainda está em dúvida se Ruby é legal ou porque ele é legal, e se é mais fácil desenvolver com Rails para Web ou não,  aqui estão algumas dicas para fazer algumas “brincadeiras” nas horas de folga. Garanto que estas brincadeiras vão virar um vício em pouco tempo.
Ruby é uma linguagem apaixonante, mesmo para Read full story »