Arquivo da categoria 'Ruby'

Monitorando sua internet 3G

Postado por Rafael Sierra em 2/08/2009

Em decorrência da minha mudança de imóvel por conta do meu (em breve) casamento fiquei sem internet. O prédio atual onde moro não tem suporte a cabeamento da Net/Virtua e a Telefônica foi, legalmente, proibida de vender novas assinaturas telefônicas, o que significa que eu não tinha até então internet em casa, e pra resolver isso a sempre sábia @pathiene sugeriu que utilizássemos uma internet 3G qualquer, e como eu já tinha feito um teste com o Claro 3G, que funcionou muito bem por eu estar em um lugar onde geralmente não se tem muita atenção das operadoras de celular, resolvi então ver qual seria a melhor opção, que dentre as disponíveis a OI/Velox se destacou.

O problema começa na assinatura do contrato, quando você lê no mesmo: "...até um limite de 10GB por mês..." caso eu ultrapasse o limite será cobrado R$0,10 por MB adicional, ou R$102,40 por GB adicional, e no caso da Claro com 1GB por mês tendo como punição ao abuso o corte da velocidade de 1Mbps para 128Kbps. Naturalmente, não existe de forma clara e abertamente disponível aos seus clientes (ao menos no caso da Oi, não posso confirmar quanto a outras operadoras) um link como o http://consumo.virtua.com.br que lhe disponibiliza um relatório diário com o seu consumo, bastando saber qual o mac address de seu dispositivo.

Pois bem, para resolver esse problema recorri, naturalmente, à programação e criei um script que para ser adicionado ao crontab que irá gerar um relatório constante do seu consumo. O script é feito em Ruby (ahh Rafael, pq Ruby e não Python/Java/C/PHP??, simples: porque eu quis) e pode ser baixado em http://blog.stiod.com/wp-content/uploads/2009/08/net_counter.rb .

O funcionamento do script é muito simples:
sdm@sdm:~$ ./net_counter.rb -h
Usage: net_counter.rb [OPTIONS]
Utilize este script para mensurar o consumo de sua rede
-i, --interface=val Interface que deve ser analizada. Padrão: ppp0
-f, --file=val Arquivo onde deve ser armazenado os dados.
Evite usar o mesmo arquivo para diferentes interfaces. Padrão: report_ppp0.txt
-h, --help Exibe esta mensagem.

Edite o seu crontab e adicione o comando nele, você pode customizar ele para gerar logs mensais, adicionando o comando net_counter.rb --file /qualquer/lugar/report_ppp0_`date +%m`.txt. Lembre-se apenas de dar permissão de execução no script (chmod +x) e de coloca-lo no PATH do seu crontab (/usr/bin/ costuma servir).

Para saber como esta o consumo da sua rede basta analizar o arquivo report_ppp0.txt ou seja lá qual for o nome que você escolher, o arquivo está disposto da seguinte forma:

  • Primeira linha: Trafego de download total (somatório desde a primeira execução para aquele arquivo)
  • Segunda linha: Trafego de upload total (idem)
  • Terceira linha: Trafego de download desde a última vez que você se conectou
  • Quarta linha: Trafego de upload desde a última vez que você se conectou

Em todos os casos o número sera em bytes, em um post futuro talvez eu faça o script que calcula em K, M ou GB.

Observações:

  • O script utiliza os dados do arquivo /proc/net/dev
  • A internet 3G da Claro e Oi funcionam muito bem em Praia Grande/SP, se você vier passar um feriado aqui, pode trazer seu notebook e modem tranquilamente :)
  • O modem oferecido pela Oi funcionou perfeitamente no Ubuntu 9.04 e foi extremamente simples e intuitiva sua configuração
  • Desculpem pelos 4 meses e 1 dia sem atualização no blog :S
  • Sim, o ultimo post foi de primeiro de abril

Gem para aplicação Rails na Locaweb?

Postado por Gabriel Verta em 6/03/2008

Estava com um projeto em Rails, onde precisava de um gem em uma hospedagem na Locaweb, no meu caso o FasterCSV. Como precisamos de permissões de administrador para instalação, devemos fazer a instalação da seguinte forma:

Instalação fastercsv:
[code]
$ mkdir /home/usuario/gems
$ gem install fastercsv --instal-dir=/home/usuario/gems/
[/code]
* Não podemos esquecer de mudar o usuario para o nome do seu usuário logado.

A diferença em relação ao padrão seria o --install-dir para salvarmos o gem em um diretório onde temos permissões de escrita.

Depois na aplicação editamos o config/environment.rb da seguinte forma:
[code]
...
ENV['GEM_PATH'] = '/home/usuario/gems/'
# Uncomment below to force Rails into production mode when
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'
...
[/code]

A variável de ambiente GEM_PATH configura onde o Ruby/Rails deve procurar os gems.

É wilson! xD

Acessando modelos de uma aplicação rails por um script.rb

Postado por Gabriel Verta em 4/10/2007

Um post rápido, para algo que é útil em vários dos nossos projetos desenvolvidos:
As vezes precisamos gerar scripts para tratar conteudos antes de mandar o conteudos extensos para "povoar" o banco de dados de nossas aplicações rails, e estes não fazem parte do aplicação em si, não tendo acesso direto as funções e modelos do projeto. As vezes este script tem até que rodar de tempos em tempos, no crontab ou qualquer coisa do tipo, sendo assim necessário utilizar funções uteis e modelos de nossa aplicação a partir de nosso script.
Para isso devemos fazer o seguinte:

script.rb
[ruby]
ENV['RAILS_ENV'] = 'production' # Environment setado (development, test, ou production)
require '/caminho/da/aplicacao/rails/config/environment'

posts = Post.find(:all)

[/ruby]

É isso... ;)

Av. Conselheiro Nébias, 368A, Cj. 413
Vila Mathias - Santos - SP
Telefone: (13) 3345-4580

© 2008 - 2009 Stiod. Todos os direitos reservados.