quarta-feira, 29 de dezembro de 2010

A matemática financeira do FarmVille

O FarmVille, um dos jogos mais populares no Facebook, possui uma aplicação básica da matemática financeira. Em um jogo onde comercializa-se uma variedade de produtos com diferentes preços para compra e venda, para se obter o maior lucro ou ganhar dinheiro mais rápido é preciso comparar matematicamente os valores. Além do índice de experiência (XP) que também pode ser ponderado na escolha do item a ser produzido.

No FarmVille existem as moedas (Farm Coins) que ganhamos principalmente na venda da produção e as notas (Farm Cash) que ganhamos uma a cada mudança de nível. De todos os itens que estão disponíveis no mercado, uns só podem ser comprados com as moedas, outros só com as notas e alguns com ambas. Existe também o ganho de experiência (XP Gained) que provém do trabalho ou de algumas transações comerciais. Este serve para avançarmos nos níveis do jogo.

As notas servem para comprar itens especiais e são adquiridas em maior quantidade através da compra real por cartão de crédito. As moedas compram os itens básicos porém suficientes para nos divertirmos no jogo e são adquiridas gratuitamente aos montes nas colheitas. As moedas também podem ser adquiridas por cartão de crédito mas não é necessário, vamos discutir aqui somente o jogo gratuito.

Para realizar uma plantação é necessário arar a terra (Plow), plantar (Plant) as sementes (Seeds), esperar o crescimento (Grown) e então fazer a colheita (Harvest) e venda (Sell) do produto. Numa próxima produção todos estes passos se repetem.

Os itens são caracterizados por preço de compra, tempo para colheita, experiência adquirida e preço de venda. Diversas combinações dentre estas características são distribuídas para os produtos agrícolas e o jogo vai nos disponibilizando mais itens a medida que avançamos nos níveis.

Um abacaxi custa 95 moedas na compra da semente, ganha-se duas unidades de experiência no plantio, demora 2 dias para a colheita e na venda de sua produção ganha-se 242 moedas. Estes valores são para cada bloco de terra arada, desta forma para cada bloco plantado, considerando o gasto de 15 moedas para arar a terra, temos um lucro de 242 - 95 - 15 = 132 moedas. Como demora 48 horas o crescimento então ganhamos 132 / 48 = 2,75 moedas por hora. Em XP ganhamos uma unidade em arar a terra mais duas unidades pelo plantio, proporcionando neste período de 48 horas um ganho de 0,06 unidade de experiência por hora.

Já um tomate custa 100 moedas a semente, ganha-se 1 XP no plantio, demora 8 horas para a colheita e na venda ganha-se 173 moedas. O lucro será de apenas 173 - 100 - 15 = 58 moedas entretando ganharemos 58 / 8 = 7,25 moedas por hora graças a colheita mais rápida. Em XP ganha-se um por arar e mais um pelo plantio, proporcionando neste período de 8 horas um ganho de 0,25 XP por hora.

Para se obter um ganho acelerado de moedas é preciso analisar o lucro por hora pois alguns itens pagam bem mas demoram muito para produzir. Uma produção com ganho menor mas com uma maior rotatividade pode trazer um lucro maior no mesmo período de tempo. Durante uma produção de abacaxi ganha-se 132 moedas nestas 48 horas, mas em 48 horas podemos ter seis produções de tomates, totalizando 348 moedas nestas 48 horas.

Outro ponto a considerar é a preferência pelo ganho de moedas ou de experiência. Também cada item vai ser melhor para um ou para outro. Ganhar experiência é bom porque mais itens ficam disponíveis e quase sempre vem um item mais lucrativo.

Claro que ninguém vai querer ou poder ficar o tempo todo plantando e colhendo na frente do computador, assim escolha o melhor item de acordo com as horas que você tem disponíveis para jogar o FarmVille.

quinta-feira, 23 de dezembro de 2010

Manipulando o endereço MAC das interfaces de rede

Uma maneira simples de alterar, no sistema Linux, o endereço MAC de uma placa ethernet é com o utilitário MAC Changer (http://www.alobbs.com/macchanger/).

Mesmo não sendo uma alteração permanente, como seria se fosse definido nos arquivos "/etc/sysconfig/network-scripts/ifcfg-ethX", "/etc/network/interfaces" etc. (dependendo da distro), este utilitário serve quando o sistema usa o NetworkManager para gerenciar as conexões pois este gerenciador não segue as configurações definidas nestes arquivos.

Para alterar permanentemente poderíamos então adicionar uma chamada para execução deste utilitário em algum script de inicialização do sistema.

Um exemplo de linha de comando, para definir um endereço, é apresentado a seguir:

# macchanger -m 01:23:45:67:89:AB eth0

Lembrando que este tipo de alteração é apenas na camada de software da interface de rede. Nada é alterado fisicamente no circuito da placa, portanto o endereço original continua gravado. O "permanente" é porque o sistema configura automaticamente durante sua inicialização.

O MAC Changer tem algumas qualidades como escolher aleatoriamente um endereço para a interface, escolher mantendo a identificação do fabricante ou do tipo de placa, escolher um endereço de outro fabricante. São recursos que podem servir para um administrador com algum propósito específico.

As principais distros disponibilizam em seus repositórios o pacote deste utilitário, assim sua instalação torna-se bem simples.

sexta-feira, 10 de dezembro de 2010

Quer ouvir o Linux?

Isso mesmo, o site Linux Radio (www.linux.fm) transmite na forma sonora o código fonte do Linux. A cada carregamento da página deste site, é selecionando aleatoriamente um arquivo do kernel para ser falado com uma voz sintetizada.

Não vejo a utilidade disto mas quem sabe seja útil pra alguma coisa. Esta estação de rádio é dedicada ao maior cientista de todos os tempos: Dr. Sheldon Cooper, do seriado The Big Bang Theory. Isto eu concordo! :)

quinta-feira, 9 de dezembro de 2010

Monitorando o tráfego através de uma canalização

O Pipe Viewer (pv) é uma ferramenta de terminal para monitorar o progresso do tráfego de dados através de uma canalização entre dois processos. Ao ser inserido na linha de comando, o pv pode mostrar uma indicação visual do quanto já foi transferido, tempo decorrido, taxa de transferência, barra de progressão, porcentagem e tempo estimado para término.

Por exemplo, em um cenário onde um comando faz a cópia de um dispositivo de armazenamento para um arquivo imagem, como mostrado a seguir:

# dd if=/dev/sdb of=arquivo.dd

Com o pv podemos monitorar o tráfego de dados acrescentando-o na linha de comando do dd, que agora está duplicado:

# dd if=/dev/sdb | pv -b -t -r -p -e -s 1041760256 | dd of=arquivo.dd

Ou simplesmente, já que as opções ficam ativas por padrão:

# dd if=/dev/sdb | pv -s 1041760256 | dd of=arquivo.dd

O tamanho total do dispositivo de armazenamento pode ser obtido pelo comando "fdisk -l". O exemplo a seguir contém todos os comandos em uma única linha:

# dd if=/dev/sdb | pv -s `fdisk -l /dev/sdb | head -2 | tail -1 | awk '{print $5}'` | dd of=arquivo.dd

O Pipe Viewer pode ser utilizado em canalização com qualquer comando. Veja um uso da ferramenta pv com o gzip, por exemplo, se quisermos compactar o nosso arquivo imagem podemos monitorar o progresso:

# pv arquivo.dd | gzip > arquivo.dd.gz

Mais um exemplo para uso com o netcat, monitorando a transmissão do arquivo:

# cat arquivo.dd | pv -s 1041760256 | nc -w 1 192.168.1.133 3000

Muitas ferramentas de linha de comando no sistema Linux não mostram a progressão, desta forma a ferramenta pv torna-se um bom complemento. Para mais informações, a página do Pipe Viewer está neste endereço: http://www.ivarch.com/programs/pv.shtml