Posts de July, 2010

[Emerson Macedo] Gerencie seu ambiente Ruby com RVM

Friday, July 16th, 2010

Introdução

Ruby 1.8, Ruby 1.9, Rails 2, Rails 3, cada projeto usando diversas gems. Como isolar esses ambientes para evitar conflitos?

Em Outubro de 2007, surgiu uma ferramenta chamada RVM, com o objetivo de criar ambientes isolados para desenvolver software em Ruby, permitindo que programadores pudessem usar várias versões de Ruby e Gems numa mesma máquina de forma limpa e sem conflitos. O projeto vem se tornando mais popular este ano, e de fato tem se mostrado muito útil. A lista dos autores pode ser conferida aqui.

Instalação

Para instalar o RVM, não é preciso muita coisa além de um ambiente POSIX (linux, bsd, etc). Eu instalei no meu Mac sem problemas. Eu acho que a única coisa que não vem por padrão que você precisa instalar é o git, que é usado para instalar/atualizar o RVM e instalar/atualizar as versões de Ruby.

Dito isso, abra o terminal e execute o seguinte comando:

$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

O procedimento não deve demorar mais que alguns minutos, dependendo da sua conexão. Em seguida, abra seu profile (.bash_profile, .profile, .bashrc, etc) e adicione as seguintes linhas:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source “$HOME/.rvm/scripts/rvm”
PS1=”\$(~/.rvm/bin/rvm-prompt) $PS1″

A segunda linha é para que a versão do Ruby que você estiver usando apareça no prompt, caso contrário você vai precisar ficar verificando a todo momento qual versão você está usando e isso pode ser bem chato.

Em seguida, carregue o rvm (da próxima vez que abrir o shell isso não será mais necessário):

$ source ~/.rvm/scripts/rvm

Pronto, o RVM está instalado e é hora de começar a arrumar nosso ambiente.

Instalando versões de Ruby

A partir do RVM, é possível instalar qualquer implementação Ruby. Por exemplo, podemos instalar o Ruby, Ruby Enterprise e o Jruby. Para uma lista completa acesse aqui.

Nesse tutorial, vamos instalar o ruby 1.8.7 . Execute o comando abaixo no terminal:

$ rvm install 1.8.7

1.8.7 é um atalho para o último patchlevel da verão 1.8.7 do Ruby. Em geral, isso funciona para todas as versões. A instalação demora um pouquinho, mas nada absurdo, portanto vá tomar um café e volte. Após o termino, “entre” no ambiente do Ruby instalado.

$ rvm –default 1.8.7

Nesse momento, você entrou no Ruby 1.8.7 e definiu essa VM como default no RVM.

Para voltar ao Ruby do systema (fora da RVM), basta ir no shell e digital:

$ rvm use system

Para listar as VMs instaladas (ou Rubies como preferem os criadores e como chamaresmo a partir de agora), basta digitar:

$ rvm list

Escolha a Rubie e use-a conforme o exemplo abaixo:

$ rvm use 1.8.7

Instalando as Gems

Uma das manias que a maioria dos Rubistas tem é instalar as gems usando sudo. Isso hoje em dia é considerado má prática. Ainda mais com RVM, já que a intenção é criar uma espécie de SANDBOX por usuário/aplicação, conforme veremos a seguir.

Primeiramente vamos ver as gems que estão instaladas na nova Rubie. O comando é o já conhecido gem list. Ao rodar esse comando na Rubie instalada pelo RVM, você pode ter a impressão que suas gems sumiram, mas na verdade isso é exatamente o esperado, pois cada Rubie tem seu ambiente totalmente isolado. Para ter uma idéia, rode o seguinte comando e veja o output:

$ rvm info

O output fornece toda a informação sobre o ambiente dessa Rubie que está sendo usada no momento. Observe bem a linha home: \n gem:. Nela você verá onde estão sendo instaladas as gems. Repare que ele cria uma estrutura de diretórios sugestiva para você manter suas gems bem isoladas. A estrutura é a seguinte:

~/.rvm/gems/{Rubie@Gemset}/

Todas as gems serão instaladas nesse diretório. Não estranhe o @Gemset, falaremos dele adiante.

Vamos então instalar o Rails nessa Rubie. Não use sudo pelo amor de Deus :)

$ gem install Rails –no-ri –no-rdoc

Depois execute um gem list para ver seu ambiente instalado. Se quiser, execute rvm system e veja que suas gems no ruby do sistema provavelmente são totalmente diferentes.

Gemsets

Vamos falar agora do tal @Gemset que eu coloquei na estrutura. Gemsets é uma forma de criar uma SANDBOX mais “profunda”. Em um primeiro momento pode parecer desnecessário, mas se você pensar que pode ter mais de um projeto por Rubie e não quer que as gems deles se misturem nem gerem algum tipo de conflito, essa estrutura passa a fazer todo sentido.

Supunha que você tenha um projeto chamado blog. Para criar uma gemset (e entrar nele) para esse projeto basta executar o seguinte comando:

$ rvm gemset create blog && rvm gemset use blog

Feito isso você verá que no seu prompt (se você fez essa configuração de instalação) estará aparecendo da seguinte forma: rubie@gemset. Rode o comando gemlist e verá que novamente suas gems que foram instaladas na Rubie sumiram. Mais uma vez isso é esperado, pois acabamos de criar uma nova SANDBOX para esse projeto específico. Nesse momento, basta instalar suas gems nessa gemset que seu projeto terá um ambiente totalmente isolado.

Se você executar o rvm info, verá que a home das suas gems está com um path diferente do anterior, pois o rvm criou um diretório para a Ruby com a nova Gemset, deixando tudo muito bem organizado.

Existem algumas gems que todos os projetos podem precisar, como Rake e Capistrano. Não seria uma boa idéia instalar essas gems em cada gemset. O RVM nos dá uma ajuda nesse sentido, criando uma gemset global, permitindo compartilhar gems entre todas as gemsets de uma Rubie. Para instalar uma gem nessa gemset basta mudar para ela e installar, como já vimos anteriormente. Vamos a um exemplo:

$ rvm gemset use global
$ gem install capistrano capistrano-ext –no-ri –no-rdoc

Pronto, essas gems não precisam mais ser instaladas para cada projeto novo que você for rodar nessa Rubie.

Conclusão

O Ruby Version Manager é uma ferramenta muito interessante para gerênciar seu ambiente Ruby. Ter vários Rubies instalado se torna cada vez mais comum, pois os projetos antigos precisam ser mantidos e novos projetos surgem, usando Rubies mais novos. O uso dos gemsets para isolar as gems também faz toda a diferença, evitando diversas dores de cabeça e deixando o ambiente organizado e limpo. Vale a pena experimentar.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Tiago Peczenyj] Testando o wordpress 3.0

Wednesday, July 14th, 2010

Este blog volta a ativa, com muitas novidades, aguarde :)

[Tiago Peczenyj] Testando o wordpress 3.0

Wednesday, July 14th, 2010

Este blog volta a ativa, com muitas novidades, aguarde :)

[Rafael Biriba] VirtualBox: Criando e iniciando uma VM pelo terminal com o VBoxManage

Wednesday, July 14th, 2010

virtualbox-imageJá tem algum tempo que ando brincando com o VirtualBox e um dos objetivos era automatizar a criação de novas VMs.

Durante as pesquisas e testes, descobri que criar máquinas virtuais utilizando o VBoxManage* é bastante simples.

*VBoxManage: É uma interface do virtualbox por linha de comando (terminal), onde você pode controlar totalmente suas máquinas virtuais.

Dica: Leia a documentação para conhecer todas as funções disponíveis: http://www.virtualbox.org/manual/ch08.html

Então vamos começar… No exemplo a seguir vou criar uma vm para um CentOS 5.4: (Os comandos em negrito devem ser executados no terminal)

VBoxManage createvm -name “centos54″ –register
Cria uma vm com o nome ‘centos54′ e com configurações padrões

VBoxManage modifyvm “centos54″ –ostype RedHat –memory “128″ –acpi on –boot1 dvd –nic1 bridged –bridgeadapter1 wlan0
Altera o tipo da vm para RedHat (por causa do CentOS), altera a memória para 128 MB, configura o dvd para ser o primeiro boot, e habilita uma placa de rede em modo bridge apontando para minha interface de rede wireless wlan0 (em alguns casos talvez seja eth0). Você pode habilitar mais de uma interface de rede, basta passar as configurações das placas assim: –nic1 … –nic2 … -nic3 …

VBoxManage createhd -filename “centos54.vdi” -size 6000 –remember
Cria o HD da nova vm com 6 GB de espaço

VBoxManage storagectl “centos54″ –name “IDE Controller” –add ide –controller PIIX4
Habilita o controlador IDE de disco na vm

VBoxManage storageattach “centos54″ –storagectl “IDE Controller” –port 0 –device 0 –type hdd –medium “centos54.vdi”
Adiciona o disco vdi da vm no controlador IDE e define o tipo com hard disk drive (hdd)

VBoxManage openmedium dvd /home/rafael/Desktop/CentOS-5.4-i386-bin-1of6.iso
Adiciona ao virtualbox (não na vm), o link para a imagem do disco

VBoxManage storageattach “centos54″ –storagectl “IDE Controller” –port 0 –device 1 –type dvd –medium /home/rafael/Desktop/CentOS-5.4-i386-bin-1of6.iso
Adiociona a imagem do disco para boot e instalação do sistema operacional na VM. Note que agora o device é definido como 1, pois o hd está no device 0.

Feito isso, agora estamos prontos para poder iniciar a VM:
nohup VBoxHeadless –startvm “centos54″ -p 3001
O vboxheadless responsável por iniciar a vm prende o processo ao terminal. Portanto se você fechar o terminal, o processo de start da vm morre. Para resolver isso, usamos o nohup que mantém o processo rodando mesmo que o terminal seja fechado. O vboxheadless inicia a vm e habilita o protocolo RDP (Remote Desktop Protocol) para que você possa acessar a vm. O parâmetro -p serve exatamente para definir a porta de acesso do RDP, e o endereço de acesso é 127.0.0.1 ou localhost.

Para desligar a VM:
VBoxManage controlvm “centos54″ poweroff

Para remover o DVD de boot da VM:
VBoxManage storageattach “centos54″ –storagectl “IDE Controller” –port 0 –device 1 –type dvd –medium noneforceunmount

Então é isso… Em breve vou mostrar como duplicar as vms e seus discos.
Dica: Leia a documentação para conhecer todas as funções disponíveis do VBoxManage:
http://www.virtualbox.org/manual/ch08.html


Leia também:

[Emerson Macedo] Computação Ubíqua e Dispositivos móveis

Tuesday, July 13th, 2010

Introdução

É fato que nos dias de hoje muitas tecnologias novas surgiram no cenário mundial. Temos sido inundados por celulares, smartphones, notebooks, netbooks e outros mais. Hoje em dia existe internet 3G nas principais grandes cidades do mundo. Internet WIFI já é algo comum faz tempo. Esses recursos estão começando a mudar nossas vidas de uma forma surpreendente. Mas será que essa idéia é nova? Quando será que começaram as pesquisas sobre essas tecnologias? Qual será o impacto futuro em nossas vidas? Acredito que estamos realmente num caminho onde a computação fará parte de quase todos os objetos que usamos no dia a dia.

Definição

Ubíquo não é uma palavra muito usada em nosso cotidiano. Portanto, vale a pena apresentarmos alguns significados para nos ajudar a aprofundar mais no assunto.

Ubíquo significa algo universal, ou seja, algo que todos entendem, conhecem. Ubíquo também pode ser interpretado como aquilo que esta presente em todos os lugares, ao mesmo tempo. É como onipresença. Essa segunda definição tem mais a ver com o conteúdo desse artigo.

História

Em 1991, Mark Weiser escreveu um artigo chamado “O Computador do Século 21 (The Computer for the 21st Century). Weiser era cientista chefe do Centro de Pesquisa Xerox PARC. Nesse artigo, ele definiu o termo Computação Ubíqua, que define um contexto onde a presença computacional em algum objeto é totalmente transparente para quem usa e em alguns cenários totalmente invisível. Weiser também exemplifica a escrita, que foi provavelmente a primeira tecnologia de informação e que se tornou Ubíqua em países industrializados. Ele usa esse exemplo para definir que as tecnologias que são mais profundas são as aquelas que “desaparecem”. Por desaparecer, acho que Weiser quis dizer que a tecnologia fica tão arraigada no nosso dia a dia tornando seu uso automático, deixando de ser aquele algo novo e surpreendente. Vislumbrando como seria a computação do nosso século, Weiser também fala sobre redes gigabits, armazenamento de terabytes e sobre Tabs e Pads, que seriam os palms, smartphones, Kindles e iPads que temos hoje. Quase no fim do artigo, ele conta uma estória ilustrativa de uma pessoa vivendo nesse mundo todo conectado e apresenta diversos protótipos feitos por ele e sua equipe de alguns desses equipamentos e tecnologias.

No que diz respeito a tecnologias, lembro-me bem que Java era uma dessas que originalmente foi criada para ser usada em dispositivos embarcados, especialmente na informatização da casa, mas era algo muito avançado para época. Isso surgiu no mesmo ano em que Weiser escreveu seu artigo. No fim das contas a linguagem Java tomou outro rumo, muito bem sucedido por sinal.

Contexto atual e futuro

É impossível negar que a computação Ubíqua tem afetado nosso dia a dia. Hoje temos Hotspots WIFI em diversos lugares. A internet 3G está presente nos celulares modernos, possibilitando infinitas formas de comunicação. Serviços de Voz sobre IP tornaram possível usarmos ferramentas como Skype, que permite obter um número de um País e utilizar em qualquer lugar do mundo. Cada vez mais fazem parte do nosso dia a dia tecnologias como as de automóveis com computador de bordo, iPhones, iPads, totem para compra de ingressos no cinema, totem para check-in de voos, e outros mais.

Outra tecnologia que está acelerando o processo da computação Ubíqua é o Cloud Computing. Há alguns anos, milhares de pessoas tem suas contas de email online em serviços como gmail, yahoo mail e similares, de forma a não precisarem mais de um cliente de email como ferramenta obrigatória em seus computadores. Essa modalidade é conhecida como SaaS (Software as a Service). Outra modalidade é o IaaS (Infrastructure as a Service), onde existe uma infraestrutura transparente para quem contrata servidores, podendo adicionar mais recursos computacionais ao invés de mais um computador ou hardware físico. Mais recentemente surgiram também plataformas para desenvolvimento de software totalmente na web como o Google App Engine, Heroku e outros. Esse é o modelo PaaS (Platform as a Service).

Hoje em dia fala-se muito também em casas inteligentes, um conceito onde toda a casa está interligada e conectada, permitindo que luzes acendam com comando de voz, geladeiras enviem pedidos de compras ao supermercado quando estiverem perto de esvaziar, cafeteiras saberem o horário do seu café da manhã e prepararem o café sem você precisar fazer nada, e por ai vai. Esse conceito está ligado a Computação Pervasiva, que é uma espécie de subárea da Computação Ubíqua. Quem assistiu o filme “O Demolidor” (1993), com os atores Silvestre Stalone e Welsey Snipes, lembra que esses conceitos estão presentes no filme. Embora atualmente existam algumas iniciativas de empresas nesse ramo de Computação Pervasiva, essa tecnologia ainda está bem distante de uma adoção em massa.

Falando de futuro, é bem verdade que ainda não chegamos no nível onde Weiser aponta em seu artigo, mas afinal, ainda estamos no início do século, tendo passado apenas uma década. Uma das frases ditas por ele nesse artigo que chamou muito a atenção sobre esse futuro foi: “Não precisamos de nenhuma revolução na inteligência artificial, apenas incorporar a computação no cotidiano”.

Conclusão

O Caminho para Computação Ubíqua tem avançado muito nos últimos anos. As pesquisas e previsões de Mark Weiser tem se concretizado, quase que como uma profecia. Como profissionais de TI, nos resta estar atentos as oportunidades de negócio que essas tecnologias tem a nos oferecer e tirar proveito disso.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Victor Pantoja] Vaga de Desenvolvedor Globo.com

Monday, July 12th, 2010

Desenvolvedor @ Time Beta – Globo.com
=====================================

Estamos procurando um bom desenvolvedor com o seguinte perfil:

- HTML avançado, incluindo tópicos como HTML5, canvas, vídeo e desenvolvimento web para iPhone/iPad
- Javascript avançado (saber só jQuery, sem entender a linguagem não vale)
- Experiência em desenvolvimento web/server side
- Entendimento básico de infra-estrutura. Protocolos, redes e funcionamento de um
sistema de computadores.
- Flash/ActionScript3 é um baita bônus.
- Paixão por produtos, mais do que tecnologias, técnicas e código.
- Saiba trabalhar em conjunto com outras disciplinas do projeto (Designer, UX, clientes)
buscando o sucesso do produto.

Os produtos desenvolvidos pelo time beta atualmente utilizam Ruby on Rails 3, MongoDB, Solr, entre outras
tecnologias. Dito isso, ressaltamos que é mais importante que o candidato tenha um perfil auto-didata e
inovador do que ser especialista nessas tecnologias.

Se você se encaixa em pelo menos 70% desse perfil e têm garra para aprender
envie um email para beta@corp.globo.com com:

- Pequena apresentação
- Endereço do LinkedIn (preferência) ou currículo em PDF
- Endereço do github
- Últimos 3 livros que leu (técnicos e não técnicos)

A Globo.com oferece contratação apenas por CLT, com salário de mercado e plano de benefícios. Estamos
localizados na Barra da Tijuca, Rio de Janeiro. Damos suporte à pessoas de outros estados que queiram
mudar para o Rio.

[Enrico Batista] jQuery.dominator – Criação de elementos usando seletores

Friday, July 9th, 2010

Sempre achei um pouco chato criar elementos no DOM usando Javascript, não gosto da idéia de escrever HTML no meio de script e o uso de templates também não me agrada muito. Então tive a idéia de criar elementos usando seletores CSS e assim nasceu o jquery.dominator, um plugin para jQuery. O código com testes […]

[Enrico Batista] jQuery.dominator – Criação de elementos usando seletores

Friday, July 9th, 2010

Sempre achei um pouco chato criar elementos no DOM usando Javascript, não gosto da idéia de escrever HTML no meio de script e o uso de templates também não me agrada muito. Então tive a idéia de criar elementos usando seletores CSS e assim nasceu o jquery.dominator, um plugin para jQuery. O código com testes [...]

[Rafael Biriba] TV Globo abre vaga para Assistente Administrativo em seu programa de Jovem Aprendiz - Julho/2010

Friday, July 9th, 2010
www.redeglobo.com.br/bancodetalentos

www.redeglobo.com.br/bancodetalentos

 

A TV Globo está abrindo oportunidades para Jovens Aprendizes. Indique jovens para fazer parte da história de sucesso da maior TV do Brasil!

Objetivos do Programa

Oferecer ao jovem uma introdução ao mercado de trabalho, possibilitando o aprendizado e a prática profissional. A principal preocupação da Globo é desenvolver cidadãos, encontrando novos talentos para formação de mão de obra futura qualificada.

Pré requisitos

· Ter entre 15 e 21 anos, com ensino fundamental completo.

· Certificado de Reservista (jovens em idade de Serviço Militar).

Inscrições

Período: 07/07/2010 à 13/07/2010
Comparecer no SENAI Benfica – Praça Natividade Saldanha nº 19 - Rio de Janeiro
Curso de Assistente Administrativo
Data da Prova: 16/07
/2010
Duração do Projeto: 1 ano e 8 meses
Mais informações: 2587-4844 (SENAI)

www.redeglobo.com.br/bancodetalentos


Leia também:

[Igor Macaubas] Artigo: Falhe cedo, aprenda rápido

Monday, July 5th, 2010

Recentemente, precisei escrever um artigo acadêmico sobre o uso de métodos ágeis, com foco em empreendedorismo e aprendizado. A experiência foi ótima, principalmente porque precisei revisitar vários temas que há tempos não estudava – e também aproveitei para ler um artigo célebre, do nosso amigo Edsger Dijkstra – “The Humble Programmer” (se você ainda não leu, recomendo – o artigo é muito bom!).

Fiquei feliz com o resultado, e resolvi divulga-lo aqui no blog, liberando o mesmo sob a licença creative commons.

Sem mais delongas, estou disponibilizando o trabalho aqui.