RVM: Entendendo e instalando passo-a-passo no Linux

Hoje então vamos falar de RVM.
O RVM é a abreviação de Ruby Version Manager, basicamente o que ele faz é criar um ambiente virtual no qual você consiga ter mais de uma versão do Ruby e assim possa testar se sua aplicação continuará funcionando caso você passe a utilizar uma versão diferente do Ruby. Além disso o RVM permite que você crie gemsets que nada mais são do que lugares separados onde você tem o set de gems de um projeto/ambiente, ou seja, você pode ter diversos projetos e ter suas gems separadinhas podendo utilizar, por exemplo, rails 2 em um projeto legado e rails 3 na atualização deste mesmo projeto. Na figura abaixo dá pra ver como é o ambiente quando usamos o RVM:


Esquema RVM

Como dá para ver, você com o RVM instalado pode ter mais de uma versão do Ruby, no caso da figura o Ruby 1.9.3 e o JRuby, pode ter também mais de um gemset e eles serem diferentes entre si, um não vai afetar o outro, assim como a instalação de uma versão do Ruby não afeta a outra.
Agora vamos a um passo-a-passo da instalação do RVM.
No site oficial do RVM tem a linha de código usada para a instalação.

Instalação do RVM

Após a instalação é colocado um texto onde ele mesmo diz que é necessária colocar uma linha dentro do seu .bashrc para carregar o RVM em todas as suas sessões, no caso da instalação da minha máquina a linha foi:

source /home/anna/.rvm/scripts/rvm

Além desta linha eu adicionei esta linha aqui também, que facilita o uso do RVM para scripts e no terminal

PATH=$PATH:$HOME/.rvm/bin

Depois disso é só recarregar a sua sessão no terminal que o RVM já vai funcionar.

O uso do RVM é bem simples, para instalar uma versão do Ruby basta rodar o comando rvm install <versão_do_ruby> (esta operação pode demorar um pouquinho por conta da compilação do ruby). Abaixo segue uma figura da instalação do Ruby 1.9.3


Instalação do Ruby

OBS: Aqui você pode ter algum problema para instalação do Ruby, caso isso ocorra não se desespere, rode o comando rvm requirements e ele vai dizer tudo que é preciso instalar para que seu RVM rode redondinho (o legal deste comando é que ele diz exatamente a linha que é necessária rodar para instalar o pacote, se você está no Ubuntu ele vai indicar o apt-get, no ArchLinux o pacman, etc).


rvm requirements

Depois de instalada a versão para usar ela é só usar o comando rvm use <versao_do_ruby> e o mesmo comando para trocar de uma versão para outra.

Para criar um gemset nesta versão do Ruby é só usar o comando rvm gemset create <nome_do_gemset> e para usar este gemset o comando é rvm use @<nome_do_gemset>


comandos

Depois disto pode-se instalar a gem que for necessária para o seu projeto =)

Abaixo tem uma lista de comandos e o que eles fazem:

rvm use 1.9.3@teste => passa a utilizar a versão 1.9.3 e a gemset teste
rvm --default 1.9.3 => seta a versão default do rvm para a 1.9.3
rvm --create --rvmrc 1.9.3@teste

Este último comando merece uma explicação um pouquinho maior, com ele nós criamos um arquivo .rvmrc este arquivo contém a informação do Ruby e da gemset que são necessárias para o funcionamento de um projeto. Com ele, ao entrar na pasta do projeto automaticamente será utilizada a versão do Ruby e a gemset pré-selecionadas.

Escrevendo artigos e dissertações usando o Latex no ubuntu

Então, atualmente eu faço mestrado em Sistemas da Informação na UNIRIO e com isso eu tenho que entregar diversos trabalhos (artigos e/ou relatórios) que tem que ser formatados de acordo com a ABNT e putz, como é chato escrever as coisas e depois formatar tudo… Pra facilitar minha vida eu passei a usar o Latex (pronuncia-se Látequi), ele segue a filosofia de formate uma vez e não precisa formatar mais e em geral seus editores não são WYSIWYG (What You See Is What You Get) como o word ou libreoffice.
Bom deixa de blablablá e vemos ver como instalar o Latex e algumas ferramentas úteis no Ubuntu.

Primeiro são necessários alguns pacotes básicos do latex, pra instalar:

sudo apt-get install texlive texlive-latex-extra texlive-math-extra texlive-lang-portugues

Ai então você que precisa utilizar as famigeradas normas abnt instala o seguinte pacote tbm:

sudo apt-get install abntex

Como bom falador de português também é necessário instalar um pacote para autocorreção da grafia das palavras, eu utilizo o aspell que inclusive já está utilizando o último acordo ortográfico.:

sudo apt-get install aspell-pt-br

Para compilar um arquivo Latex na linha de comando é assim:

latex sample.tex

Ai serão gerados dois arquivos sample.aux e sample.log
Então para gerar o pdf utilize o seguinte comando:

pdflatex sample.tex

(É bom compilar antes de gerar o pdf para garantir que o pdf irá ser gerado corretamente)

Para utilizar o aspell para autocorreção diretamente na linha de comando é assim:

aspell lang pt_BR check sample.tex

Como eu gosto de utilizar um editor que tem tudo junto e eu posso converter e compilar automaticamente eu instalo o kile:

sudo apt-get install kile

Para aqueles que gostam do kile em português basta instalar o seguinte pacote:
sudo apt-get install kile-pt-br

Vale lembrar que existem outros editores de Latex como o próprio gedit eu uso o kile pq gosto dele (depois vou até fazer um post com mais dicas dele), você pode inclusive compilar diretamente o Latex dentro dele.

Como o kile é baseado no kde se vc quiser visualizar o pdf dentro dele é necessário instalar o okular.

sudo apt-get install okular

Uma última dica, se vc quer a formatação ABNT logo de cara pra escrever um artigo, logo no inicio do documento coloque as seguintes linhas:

documentclass[a4paper,10pt]{article}
usepackage[utf8x]{inputenc}
usepackage[T1]{fontenc}
usepackage[brazil]{babel}
usepackage[alf]{abntcite}
usepackage{cite}

Bom, por enquanto é só isso depois eu pretendo escrever mais dicas sobre utilização do Latex

Deploy de aplicação Django usando Apache (mod_wsgi)

Então você fez aquela aplicação bacanosa em Django e agora que fazer o deploy dela no apache pra deixar junto com todos as suas outras aplicações.

Bom aqui está um pequeno tutorial explicando como faz (os comandos estão para o Arch Linux, mas são facilmente adaptavéis para qualquer distro):

Instale o mod_wsgi na sua máquina:

pacman -Sy mod_wsgi

Após a instalação ele vai pedir para você carregar o módulo na configuração do apache. Portanto vá em httpd.conf e adicione a seguinte linha junto ao carregamento dos outros módulos:

LoadModule wsgi_module modules/mod_wsgi.so

OBS: Dependendo da distro a configuração de carregamento de módulos pode estar em um local diferente, o importante é verificar onde fica esse configuração e ativar o módulo nela.

Agora é necessário criar o arquivo wsgi dentro do seu projeto. O arquivo wsgi é basicamente um script python contendo as informações de onde são encontradas as configurações específicas do seu projeto django. Crie o arquivo wsgi dentro de uma pasta do seu projeto e coloque o seguinte conteúdo dentro dele:

import os, sys

sys.path.insert(0, os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), os.pardir, os.pardir)))
sys.path.insert(0, os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), os.pardir)))

from django.core.handlers.wsgi import WSGIHandler
os.environ["DJANGO_SETTINGS_MODULE"] = "gmapitest.settings"
application = WSGIHandler()

O comando os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), os.pardir, os.pardir)) está basicamente adicionadno ao seu path o diretório onde está o arquivo wsgi e o diretório da sua apliação.

Agora temos que fazer uma configuração dentro do apache para que o site fique disponível, para isso dentro do httpd.conf (ou sites-enabled no caso de outras distros) adicione as seguintes linhas:


DocumentRoot /path/to/app/myapp/
Order allow,deny
Allow from all

WSGIScriptAlias / /path/to/wsgi/file/django.wsgi
Order allow,deny
Allow from all

Após essas configurações reinicie o Apache e a aplicação django deve estar funcionando ;) Caso isso não aconteça verifique o permissionamento de alguns diretórios e arquivos como por exemplo:


chmod o+rx /path/to/app/
chmod o+r /path/to/wsgi/file/hello.wsgi

Prontinho já deve estar funcionando bonitinho no seu apache sua aplicação Django ;D

Meu ambiente de desenvolvimento em 7 itens

Então me deram a sugestão de eu falar do meu ambiente de desenvolvimento em 7 itens. A parada interessante de eu falar sobre isso é que assim, eu não sou desenvolvedora, na verdade faço mestrado em redes e a minha área é um misto entre desenvolver e entender de redes (algo que lá fora estão chamando de devops). Mas então vamos lá:

Eu basicamente uso dois sistemas operacionais: linux (arch) e macOS vou falar o que eu uso em cada um deles

Terminal

O terminal é uma das coisas mais importantes pra mim, basicamente quando estou trabalhando uso muito o ssh e diversos comandos típicos de terminal.
No Mac eu uso o iterm2 e no Linux eu uso o terminator ambos possuem recursos que me agradam e muito como poder dividir o terminal em diversos outros, além de nomear janelas, navegar por elas sem usar o mouse, alertas etc

Editor

Editores são coisas que facilitam e muito quando estou criando algum script, no Mac eu uso o TextMate e o MacVim e no Linux eu uso o vim e o Gedit. Cabe ressaltar que tanto o MacVim, quanto o vim e o Gedit eu instalo diversos plugins/extensões pra poder me auxiliar (num próximo post eu posso falar desses plugins/extensões). Eu gosto muito de poder ter facilidades e ainda assim ter uma interface bem espartana pra trabalhar

Controle de versão

Poucos sabem disso, mas o primeiro versionador que eu usei foi o Micro$oft $ource $afe e ele era horrível, depois disso já usei o svn (com tortoise e tal), cvs entre outros. Hoje em dia sou adepta fiel do git, uso o github pra hospedagem dos meus projetos que são livres (tenho até que dar uma atualizada) e uso o codeplane pros projetos em que eu ainda não posso divulgar o código.

Browsers

Parece meio inútil eu dizer que uso o browser se eu trabalho basicamente com redes, mas volta e meia tenho que fazer alguma interfacezinha mesmo que besta para o usuário final poder monitorar a rede (entre outros detalhes), em geral tanto no Mac quanto no Linux eu uso o Firefox e o Chrome. Apenas o banco do brasil me faz usar o Safari no Mac (não sei pq motivo ele não funciona no firefox).
Tanto no FF qto no Chrome eu uso o plugins do firebug pra dar aquela ajuda na debugada do javascript.

Ferramentas de pesquisa

Então eu não uso somente o oráculo do Google nas minhas pesquisas acho que ele é bom, mas as vezes parece que a pesquisa dele fica meio viciada. Nesses momentos eu utilizo o Duck Duck Go que é um buscador que foi apresentado a mim pelo Diogo e que eu gostei e muito da forma como funciona, na verdade alguns atalhos de teclado deveriam ser implementados pelo Google tb.

Organizador de tarefas

Eu por enquanto estou me dividindo entre usar o Workflowy e o Todoist ambos são utilizados no browser e podem ser visualizados pelo celular, mas nenhum dos dois me atende completamente e eu estou pensando seriamente em construir o meu.

Música

Simplismente não consigo trabalhar sem ouvir música, no Mac utilizo o tradicional iTunes e no Linux o Amarok. Quando quero ouvir algo que não tenho disponível uso o YouTube mesmo.

Bom acho que é isso deu pra dar uma noção do que eu uso basicamente.

That’s all folks!